diff --git a/README.md b/README.md
index 81b6e60d..17f22ff7 100644
--- a/README.md
+++ b/README.md
@@ -40,7 +40,7 @@ Add this dependency to your project's POM:
one.talon
talon-one-client
- 15.0.0
+ 16.0.0
compile
```
@@ -50,7 +50,7 @@ Add this dependency to your project's POM:
Add this dependency to your project's build file:
```groovy
-compile "one.talon:talon-one-client:15.0.0"
+compile "one.talon:talon-one-client:16.0.0"
```
### Others
@@ -212,6 +212,7 @@ Class | Method | HTTP request | Description
*IntegrationApi* | [**getCustomerAchievements**](docs/IntegrationApi.md#getCustomerAchievements) | **GET** /v1/customer_profiles/{integrationId}/achievements | List customer's available achievements
*IntegrationApi* | [**getCustomerInventory**](docs/IntegrationApi.md#getCustomerInventory) | **GET** /v1/customer_profiles/{integrationId}/inventory | List customer data
*IntegrationApi* | [**getCustomerSession**](docs/IntegrationApi.md#getCustomerSession) | **GET** /v2/customer_sessions/{customerSessionId} | Get customer session
+*IntegrationApi* | [**getEventV3**](docs/IntegrationApi.md#getEventV3) | **GET** /v3/events/{integrationId} | Get advanced event
*IntegrationApi* | [**getLoyaltyBalances**](docs/IntegrationApi.md#getLoyaltyBalances) | **GET** /v1/loyalty_programs/{loyaltyProgramId}/profile/{integrationId}/balances | Get customer's loyalty balances
*IntegrationApi* | [**getLoyaltyCardBalances**](docs/IntegrationApi.md#getLoyaltyCardBalances) | **GET** /v1/loyalty_programs/{loyaltyProgramId}/cards/{loyaltyCardId}/balances | Get card's point balances
*IntegrationApi* | [**getLoyaltyCardPoints**](docs/IntegrationApi.md#getLoyaltyCardPoints) | **GET** /v1/loyalty_programs/{loyaltyProgramId}/cards/{loyaltyCardId}/points | List card's unused loyalty points
@@ -220,12 +221,16 @@ Class | Method | HTTP request | Description
*IntegrationApi* | [**getLoyaltyProgramProfileTransactions**](docs/IntegrationApi.md#getLoyaltyProgramProfileTransactions) | **GET** /v1/loyalty_programs/{loyaltyProgramId}/profile/{integrationId}/transactions | List customer's loyalty transactions
*IntegrationApi* | [**getReservedCustomers**](docs/IntegrationApi.md#getReservedCustomers) | **GET** /v1/coupon_reservations/customerprofiles/{couponValue} | List customers that have this coupon reserved
*IntegrationApi* | [**integrationGetAllCampaigns**](docs/IntegrationApi.md#integrationGetAllCampaigns) | **GET** /v1/integration/campaigns | List all running campaigns
+*IntegrationApi* | [**integrationRewardsCatalog**](docs/IntegrationApi.md#integrationRewardsCatalog) | **GET** /v1/rewards/catalog | List rewards in the catalog
+*IntegrationApi* | [**joinLoyaltyProgram**](docs/IntegrationApi.md#joinLoyaltyProgram) | **POST** /v1/loyalty_programs/{loyaltyProgramId}/profile/{integrationId}/join | Join customer profile to loyalty program
*IntegrationApi* | [**linkLoyaltyCardToProfile**](docs/IntegrationApi.md#linkLoyaltyCardToProfile) | **POST** /v2/loyalty_programs/{loyaltyProgramId}/cards/{loyaltyCardId}/link_profile | Link customer profile to card
*IntegrationApi* | [**reopenCustomerSession**](docs/IntegrationApi.md#reopenCustomerSession) | **PUT** /v2/customer_sessions/{customerSessionId}/reopen | Reopen customer session
*IntegrationApi* | [**returnCartItems**](docs/IntegrationApi.md#returnCartItems) | **POST** /v2/customer_sessions/{customerSessionId}/returns | Return cart items
*IntegrationApi* | [**syncCatalog**](docs/IntegrationApi.md#syncCatalog) | **PUT** /v1/catalogs/{catalogId}/sync | Sync cart item catalog
*IntegrationApi* | [**trackEventV2**](docs/IntegrationApi.md#trackEventV2) | **POST** /v2/events | Track event
+*IntegrationApi* | [**trackEventV3**](docs/IntegrationApi.md#trackEventV3) | **POST** /v3/events | Track advanced event
*IntegrationApi* | [**unlinkLoyaltyCardFromProfile**](docs/IntegrationApi.md#unlinkLoyaltyCardFromProfile) | **POST** /v2/loyalty_programs/{loyaltyProgramId}/cards/{loyaltyCardId}/unlink_profile | Unlink customer profile from a loyalty card
+*IntegrationApi* | [**unlockReward**](docs/IntegrationApi.md#unlockReward) | **POST** /v1/rewards/{rewardId}/unlock | Unlock a reward
*IntegrationApi* | [**updateAudienceCustomersAttributes**](docs/IntegrationApi.md#updateAudienceCustomersAttributes) | **PUT** /v2/audience_customers/{audienceId}/attributes | Update profile attributes for all customers in audience
*IntegrationApi* | [**updateAudienceV2**](docs/IntegrationApi.md#updateAudienceV2) | **PUT** /v2/audiences/{audienceId} | Update audience name
*IntegrationApi* | [**updateCustomerProfileAudiences**](docs/IntegrationApi.md#updateCustomerProfileAudiences) | **POST** /v2/customer_audiences | Update multiple customer profiles' audiences
@@ -238,6 +243,7 @@ Class | Method | HTTP request | Description
*ManagementApi* | [**copyCampaignToApplications**](docs/ManagementApi.md#copyCampaignToApplications) | **POST** /v1/applications/{applicationId}/campaigns/{campaignId}/copy | Copy the campaign into the specified Application
*ManagementApi* | [**createAccountCollection**](docs/ManagementApi.md#createAccountCollection) | **POST** /v1/collections | Create account-level collection
*ManagementApi* | [**createAchievement**](docs/ManagementApi.md#createAchievement) | **POST** /v1/applications/{applicationId}/campaigns/{campaignId}/achievements | Create achievement
+*ManagementApi* | [**createAchievementV2**](docs/ManagementApi.md#createAchievementV2) | **POST** /v2/achievements | Create achievement
*ManagementApi* | [**createAdditionalCost**](docs/ManagementApi.md#createAdditionalCost) | **POST** /v1/additional_costs | Create additional cost
*ManagementApi* | [**createAttribute**](docs/ManagementApi.md#createAttribute) | **POST** /v1/attributes | Create custom attribute
*ManagementApi* | [**createBatchLoyaltyCards**](docs/ManagementApi.md#createBatchLoyaltyCards) | **POST** /v1/loyalty_programs/{loyaltyProgramId}/cards/batch | Create loyalty cards
@@ -251,12 +257,14 @@ Class | Method | HTTP request | Description
*ManagementApi* | [**createInviteEmail**](docs/ManagementApi.md#createInviteEmail) | **POST** /v1/invite_emails | Resend invitation email
*ManagementApi* | [**createInviteV2**](docs/ManagementApi.md#createInviteV2) | **POST** /v2/invites | Invite user
*ManagementApi* | [**createPasswordRecoveryEmail**](docs/ManagementApi.md#createPasswordRecoveryEmail) | **POST** /v1/password_recovery_emails | Request a password reset
+*ManagementApi* | [**createRulesetV2**](docs/ManagementApi.md#createRulesetV2) | **POST** /v2/applications/{applicationId}/campaigns/{campaignId}/rulesets | Create ruleset (V2)
*ManagementApi* | [**createSession**](docs/ManagementApi.md#createSession) | **POST** /v1/sessions | Create session
*ManagementApi* | [**createStore**](docs/ManagementApi.md#createStore) | **POST** /v1/applications/{applicationId}/stores | Create store
*ManagementApi* | [**deactivateUserByEmail**](docs/ManagementApi.md#deactivateUserByEmail) | **POST** /v1/users/deactivate | Disable user by email address
*ManagementApi* | [**deductLoyaltyCardPoints**](docs/ManagementApi.md#deductLoyaltyCardPoints) | **PUT** /v1/loyalty_programs/{loyaltyProgramId}/cards/{loyaltyCardId}/deduct_points | Deduct points from card
*ManagementApi* | [**deleteAccountCollection**](docs/ManagementApi.md#deleteAccountCollection) | **DELETE** /v1/collections/{collectionId} | Delete account-level collection
*ManagementApi* | [**deleteAchievement**](docs/ManagementApi.md#deleteAchievement) | **DELETE** /v1/applications/{applicationId}/campaigns/{campaignId}/achievements/{achievementId} | Delete achievement
+*ManagementApi* | [**deleteAchievementV2**](docs/ManagementApi.md#deleteAchievementV2) | **DELETE** /v2/achievements/{achievementId} | Delete achievement
*ManagementApi* | [**deleteCampaign**](docs/ManagementApi.md#deleteCampaign) | **DELETE** /v1/applications/{applicationId}/campaigns/{campaignId} | Delete campaign
*ManagementApi* | [**deleteCampaignStoreBudgets**](docs/ManagementApi.md#deleteCampaignStoreBudgets) | **DELETE** /v1/applications/{applicationId}/campaigns/{campaignId}/stores/budgets | Delete campaign store budgets
*ManagementApi* | [**deleteCollection**](docs/ManagementApi.md#deleteCollection) | **DELETE** /v1/applications/{applicationId}/campaigns/{campaignId}/collections/{collectionId} | Delete campaign-level collection
@@ -269,7 +277,9 @@ Class | Method | HTTP request | Description
*ManagementApi* | [**deleteUserByEmail**](docs/ManagementApi.md#deleteUserByEmail) | **POST** /v1/users/delete | Delete user by email address
*ManagementApi* | [**destroySession**](docs/ManagementApi.md#destroySession) | **DELETE** /v1/sessions | Destroy session
*ManagementApi* | [**disconnectCampaignStores**](docs/ManagementApi.md#disconnectCampaignStores) | **DELETE** /v1/applications/{applicationId}/campaigns/{campaignId}/stores | Disconnect stores
+*ManagementApi* | [**excludePriceHistory**](docs/ManagementApi.md#excludePriceHistory) | **POST** /v1/applications/{applicationId}/price_history/exclusions | Exclude price records from price history
*ManagementApi* | [**exportAccountCollectionItems**](docs/ManagementApi.md#exportAccountCollectionItems) | **GET** /v1/collections/{collectionId}/export | Export account-level collection's items
+*ManagementApi* | [**exportAchievementV2**](docs/ManagementApi.md#exportAchievementV2) | **GET** /v2/achievements/{achievementId}/export | Export achievement customer data
*ManagementApi* | [**exportAchievements**](docs/ManagementApi.md#exportAchievements) | **GET** /v1/applications/{applicationId}/campaigns/{campaignId}/achievements/{achievementId}/export | Export achievement customer data
*ManagementApi* | [**exportApplicationCampaignAnalytics**](docs/ManagementApi.md#exportApplicationCampaignAnalytics) | **GET** /v1/applications/{applicationId}/campaign_analytics/export | Export Application analytics aggregated by campaign
*ManagementApi* | [**exportAudiencesMemberships**](docs/ManagementApi.md#exportAudiencesMemberships) | **GET** /v1/audiences/{audienceId}/memberships/export | Export audience members
@@ -296,6 +306,7 @@ Class | Method | HTTP request | Description
*ManagementApi* | [**getAccountAnalytics**](docs/ManagementApi.md#getAccountAnalytics) | **GET** /v1/accounts/{accountId}/analytics | Get account analytics
*ManagementApi* | [**getAccountCollection**](docs/ManagementApi.md#getAccountCollection) | **GET** /v1/collections/{collectionId} | Get account-level collection
*ManagementApi* | [**getAchievement**](docs/ManagementApi.md#getAchievement) | **GET** /v1/applications/{applicationId}/campaigns/{campaignId}/achievements/{achievementId} | Get achievement
+*ManagementApi* | [**getAchievementV2**](docs/ManagementApi.md#getAchievementV2) | **GET** /v2/achievements/{achievementId} | Get achievement
*ManagementApi* | [**getAdditionalCost**](docs/ManagementApi.md#getAdditionalCost) | **GET** /v1/additional_costs/{additionalCostId} | Get additional cost
*ManagementApi* | [**getAdditionalCosts**](docs/ManagementApi.md#getAdditionalCosts) | **GET** /v1/additional_costs | List additional costs
*ManagementApi* | [**getApplication**](docs/ManagementApi.md#getApplication) | **GET** /v1/applications/{applicationId} | Get Application
@@ -309,6 +320,7 @@ Class | Method | HTTP request | Description
*ManagementApi* | [**getApplicationEventsWithoutTotalCount**](docs/ManagementApi.md#getApplicationEventsWithoutTotalCount) | **GET** /v1/applications/{applicationId}/events/no_total | List Applications events
*ManagementApi* | [**getApplicationSession**](docs/ManagementApi.md#getApplicationSession) | **GET** /v1/applications/{applicationId}/sessions/{sessionId} | Get Application session
*ManagementApi* | [**getApplicationSessions**](docs/ManagementApi.md#getApplicationSessions) | **GET** /v1/applications/{applicationId}/sessions | List Application sessions
+*ManagementApi* | [**getApplicationSessionsByCustomerAttributes**](docs/ManagementApi.md#getApplicationSessionsByCustomerAttributes) | **POST** /v1/applications/{applicationId}/sessions_search | List Application sessions matching the given customer attributes
*ManagementApi* | [**getApplications**](docs/ManagementApi.md#getApplications) | **GET** /v1/applications | List Applications
*ManagementApi* | [**getAttribute**](docs/ManagementApi.md#getAttribute) | **GET** /v1/attributes/{attributeId} | Get custom attribute
*ManagementApi* | [**getAttributes**](docs/ManagementApi.md#getAttributes) | **GET** /v1/attributes | List custom attributes
@@ -338,12 +350,12 @@ Class | Method | HTTP request | Description
*ManagementApi* | [**getExperiment**](docs/ManagementApi.md#getExperiment) | **GET** /v1/applications/{applicationId}/experiments/{experimentId} | Get experiment in Application
*ManagementApi* | [**getExports**](docs/ManagementApi.md#getExports) | **GET** /v1/exports | Get exports
*ManagementApi* | [**getLoyaltyCard**](docs/ManagementApi.md#getLoyaltyCard) | **GET** /v1/loyalty_programs/{loyaltyProgramId}/cards/{loyaltyCardId} | Get loyalty card
-*ManagementApi* | [**getLoyaltyCardTransactionLogs**](docs/ManagementApi.md#getLoyaltyCardTransactionLogs) | **GET** /v1/loyalty_programs/{loyaltyProgramId}/cards/{loyaltyCardId}/logs | List card's transactions
+*ManagementApi* | [**getLoyaltyCardTransactionLogs**](docs/ManagementApi.md#getLoyaltyCardTransactionLogs) | **GET** /v1/loyalty_programs/{loyaltyProgramId}/cards/{loyaltyCardId}/logs | List card's transactions (Management API)
*ManagementApi* | [**getLoyaltyCards**](docs/ManagementApi.md#getLoyaltyCards) | **GET** /v1/loyalty_programs/{loyaltyProgramId}/cards | List loyalty cards
-*ManagementApi* | [**getLoyaltyLedgerBalances**](docs/ManagementApi.md#getLoyaltyLedgerBalances) | **GET** /v1/loyalty_programs/{loyaltyProgramId}/profile/{integrationId}/ledger_balances | Get customer's loyalty balances
+*ManagementApi* | [**getLoyaltyLedgerBalances**](docs/ManagementApi.md#getLoyaltyLedgerBalances) | **GET** /v1/loyalty_programs/{loyaltyProgramId}/profile/{integrationId}/ledger_balances | Get customer's loyalty balances (Management API)
*ManagementApi* | [**getLoyaltyPoints**](docs/ManagementApi.md#getLoyaltyPoints) | **GET** /v1/loyalty_programs/{loyaltyProgramId}/profile/{integrationId} | Get customer's full loyalty ledger
*ManagementApi* | [**getLoyaltyProgram**](docs/ManagementApi.md#getLoyaltyProgram) | **GET** /v1/loyalty_programs/{loyaltyProgramId} | Get loyalty program
-*ManagementApi* | [**getLoyaltyProgramProfileLedgerTransactions**](docs/ManagementApi.md#getLoyaltyProgramProfileLedgerTransactions) | **GET** /v1/loyalty_programs/{loyaltyProgramId}/profile/{integrationId}/ledger_transactions | List customer's loyalty transactions
+*ManagementApi* | [**getLoyaltyProgramProfileLedgerTransactions**](docs/ManagementApi.md#getLoyaltyProgramProfileLedgerTransactions) | **GET** /v1/loyalty_programs/{loyaltyProgramId}/profile/{integrationId}/ledger_transactions | List customer's loyalty transactions (Management API)
*ManagementApi* | [**getLoyaltyProgramTransactions**](docs/ManagementApi.md#getLoyaltyProgramTransactions) | **GET** /v1/loyalty_programs/{loyaltyProgramId}/transactions | List loyalty program transactions
*ManagementApi* | [**getLoyaltyPrograms**](docs/ManagementApi.md#getLoyaltyPrograms) | **GET** /v1/loyalty_programs | List loyalty programs
*ManagementApi* | [**getLoyaltyStatistics**](docs/ManagementApi.md#getLoyaltyStatistics) | **GET** /v1/loyalty_programs/{loyaltyProgramId}/statistics | Get loyalty program statistics
@@ -351,6 +363,7 @@ Class | Method | HTTP request | Description
*ManagementApi* | [**getReferralsWithoutTotalCount**](docs/ManagementApi.md#getReferralsWithoutTotalCount) | **GET** /v1/applications/{applicationId}/campaigns/{campaignId}/referrals/no_total | List referrals
*ManagementApi* | [**getRoleV2**](docs/ManagementApi.md#getRoleV2) | **GET** /v2/roles/{roleId} | Get role
*ManagementApi* | [**getRuleset**](docs/ManagementApi.md#getRuleset) | **GET** /v1/applications/{applicationId}/campaigns/{campaignId}/rulesets/{rulesetId} | Get ruleset
+*ManagementApi* | [**getRulesetV2**](docs/ManagementApi.md#getRulesetV2) | **GET** /v2/applications/{applicationId}/campaigns/{campaignId}/rulesets/{rulesetId} | Get ruleset (V2)
*ManagementApi* | [**getRulesets**](docs/ManagementApi.md#getRulesets) | **GET** /v1/applications/{applicationId}/campaigns/{campaignId}/rulesets | List campaign rulesets
*ManagementApi* | [**getStore**](docs/ManagementApi.md#getStore) | **GET** /v1/applications/{applicationId}/stores/{storeId} | Get store
*ManagementApi* | [**getUser**](docs/ManagementApi.md#getUser) | **GET** /v1/users/{userId} | Get user
@@ -366,12 +379,14 @@ Class | Method | HTTP request | Description
*ManagementApi* | [**importCoupons**](docs/ManagementApi.md#importCoupons) | **POST** /v1/applications/{applicationId}/campaigns/{campaignId}/import_coupons | Import coupons
*ManagementApi* | [**importLoyaltyCards**](docs/ManagementApi.md#importLoyaltyCards) | **POST** /v1/loyalty_programs/{loyaltyProgramId}/import_cards | Import loyalty cards
*ManagementApi* | [**importLoyaltyCustomersTiers**](docs/ManagementApi.md#importLoyaltyCustomersTiers) | **POST** /v1/loyalty_programs/{loyaltyProgramId}/import_customers_tiers | Import customers into loyalty tiers
+*ManagementApi* | [**importLoyaltyJoinDates**](docs/ManagementApi.md#importLoyaltyJoinDates) | **POST** /v1/loyalty_programs/{loyaltyProgramId}/import_join_dates | Import join dates for a loyalty program
*ManagementApi* | [**importLoyaltyPoints**](docs/ManagementApi.md#importLoyaltyPoints) | **POST** /v1/loyalty_programs/{loyaltyProgramId}/import_points | Import loyalty points
*ManagementApi* | [**importPoolGiveaways**](docs/ManagementApi.md#importPoolGiveaways) | **POST** /v1/giveaways/pools/{poolId}/import | Import giveaway codes into a giveaway pool
*ManagementApi* | [**importReferrals**](docs/ManagementApi.md#importReferrals) | **POST** /v1/applications/{applicationId}/campaigns/{campaignId}/import_referrals | Import referrals
*ManagementApi* | [**inviteUserExternal**](docs/ManagementApi.md#inviteUserExternal) | **POST** /v1/users/invite | Invite user from identity provider
*ManagementApi* | [**listAccountCollections**](docs/ManagementApi.md#listAccountCollections) | **GET** /v1/collections | List collections in account
*ManagementApi* | [**listAchievements**](docs/ManagementApi.md#listAchievements) | **GET** /v1/applications/{applicationId}/campaigns/{campaignId}/achievements | List achievements
+*ManagementApi* | [**listAchievementsV2**](docs/ManagementApi.md#listAchievementsV2) | **GET** /v2/achievements | List achievements
*ManagementApi* | [**listAllRolesV2**](docs/ManagementApi.md#listAllRolesV2) | **GET** /v2/roles | List roles
*ManagementApi* | [**listApplicationCartItemFilters**](docs/ManagementApi.md#listApplicationCartItemFilters) | **GET** /v1/applications/{applicationId}/cart_item_filters | List Application cart item filters
*ManagementApi* | [**listCampaignStoreBudgetLimits**](docs/ManagementApi.md#listCampaignStoreBudgetLimits) | **GET** /v1/applications/{applicationId}/campaigns/{campaignId}/stores/budgets | List campaign store budget limits
@@ -405,6 +420,7 @@ Class | Method | HTTP request | Description
*ManagementApi* | [**transferLoyaltyCard**](docs/ManagementApi.md#transferLoyaltyCard) | **PUT** /v1/loyalty_programs/{loyaltyProgramId}/cards/{loyaltyCardId}/transfer | Transfer card data
*ManagementApi* | [**updateAccountCollection**](docs/ManagementApi.md#updateAccountCollection) | **PUT** /v1/collections/{collectionId} | Update account-level collection
*ManagementApi* | [**updateAchievement**](docs/ManagementApi.md#updateAchievement) | **PUT** /v1/applications/{applicationId}/campaigns/{campaignId}/achievements/{achievementId} | Update achievement
+*ManagementApi* | [**updateAchievementV2**](docs/ManagementApi.md#updateAchievementV2) | **PUT** /v2/achievements/{achievementId} | Update achievement
*ManagementApi* | [**updateAdditionalCost**](docs/ManagementApi.md#updateAdditionalCost) | **PUT** /v1/additional_costs/{additionalCostId} | Update additional cost
*ManagementApi* | [**updateAttribute**](docs/ManagementApi.md#updateAttribute) | **PUT** /v1/attributes/{attributeId} | Update custom attribute
*ManagementApi* | [**updateCampaign**](docs/ManagementApi.md#updateCampaign) | **PUT** /v1/applications/{applicationId}/campaigns/{campaignId} | Update campaign
@@ -450,6 +466,7 @@ Class | Method | HTTP request | Description
- [AddItemCatalogAction](docs/AddItemCatalogAction.md)
- [AddLoyaltyPoints](docs/AddLoyaltyPoints.md)
- [AddLoyaltyPointsEffectProps](docs/AddLoyaltyPointsEffectProps.md)
+- [AddLoyaltyPointsSupport](docs/AddLoyaltyPointsSupport.md)
- [AddPriceAdjustmentCatalogAction](docs/AddPriceAdjustmentCatalogAction.md)
- [AddToAudienceEffectProps](docs/AddToAudienceEffectProps.md)
- [AddedDeductedPointsBalancesAction](docs/AddedDeductedPointsBalancesAction.md)
@@ -459,6 +476,7 @@ Class | Method | HTTP request | Description
- [AddedDeductedPointsNotificationPolicy](docs/AddedDeductedPointsNotificationPolicy.md)
- [AdditionalCampaignProperties](docs/AdditionalCampaignProperties.md)
- [AdditionalCost](docs/AdditionalCost.md)
+- [AdditionalCostReference](docs/AdditionalCostReference.md)
- [AdjustmentDetails](docs/AdjustmentDetails.md)
- [AnalyticsDataPoint](docs/AnalyticsDataPoint.md)
- [AnalyticsDataPointWithTrend](docs/AnalyticsDataPointWithTrend.md)
@@ -479,6 +497,7 @@ Class | Method | HTTP request | Description
- [ApplicationCustomerEntity](docs/ApplicationCustomerEntity.md)
- [ApplicationEntity](docs/ApplicationEntity.md)
- [ApplicationEvent](docs/ApplicationEvent.md)
+- [ApplicationMembership](docs/ApplicationMembership.md)
- [ApplicationNotification](docs/ApplicationNotification.md)
- [ApplicationReferee](docs/ApplicationReferee.md)
- [ApplicationSession](docs/ApplicationSession.md)
@@ -496,7 +515,19 @@ Class | Method | HTTP request | Description
- [AudienceIntegrationID](docs/AudienceIntegrationID.md)
- [AudienceMembership](docs/AudienceMembership.md)
- [AudienceReference](docs/AudienceReference.md)
+- [AwardDiscountAdditionalCostTarget](docs/AwardDiscountAdditionalCostTarget.md)
+- [AwardDiscountAllItemsTarget](docs/AwardDiscountAllItemsTarget.md)
+- [AwardDiscountBlock](docs/AwardDiscountBlock.md)
+- [AwardDiscountBundleItemByAttribute](docs/AwardDiscountBundleItemByAttribute.md)
+- [AwardDiscountBundleItemByIndex](docs/AwardDiscountBundleItemByIndex.md)
+- [AwardDiscountBundleTarget](docs/AwardDiscountBundleTarget.md)
+- [AwardDiscountCartTarget](docs/AwardDiscountCartTarget.md)
+- [AwardDiscountGlobalFilterTarget](docs/AwardDiscountGlobalFilterTarget.md)
+- [AwardDiscountSelectorTarget](docs/AwardDiscountSelectorTarget.md)
+- [AwardGiveawayBlock](docs/AwardGiveawayBlock.md)
- [AwardGiveawayEffectProps](docs/AwardGiveawayEffectProps.md)
+- [AwardItemBlock](docs/AwardItemBlock.md)
+- [BaseBlock](docs/BaseBlock.md)
- [BaseCampaign](docs/BaseCampaign.md)
- [BaseLoyaltyProgram](docs/BaseLoyaltyProgram.md)
- [BaseNotification](docs/BaseNotification.md)
@@ -507,11 +538,14 @@ Class | Method | HTTP request | Description
- [BestPriorPrice](docs/BestPriorPrice.md)
- [BestPriorPriceMetadata](docs/BestPriorPriceMetadata.md)
- [BestPriorPriceRequest](docs/BestPriorPriceRequest.md)
+- [BestPriorPriceSettings](docs/BestPriorPriceSettings.md)
- [BestPriorTarget](docs/BestPriorTarget.md)
+- [BetweenCheckAttributeBlock](docs/BetweenCheckAttributeBlock.md)
- [Binding](docs/Binding.md)
- [Blueprint](docs/Blueprint.md)
- [BulkApplicationNotification](docs/BulkApplicationNotification.md)
- [BulkOperationOnCampaigns](docs/BulkOperationOnCampaigns.md)
+- [Bundle](docs/Bundle.md)
- [Campaign](docs/Campaign.md)
- [CampaignActivationRequest](docs/CampaignActivationRequest.md)
- [CampaignAnalytics](docs/CampaignAnalytics.md)
@@ -529,6 +563,10 @@ Class | Method | HTTP request | Description
- [CampaignDetail](docs/CampaignDetail.md)
- [CampaignEditedNotification](docs/CampaignEditedNotification.md)
- [CampaignEditedNotificationItem](docs/CampaignEditedNotificationItem.md)
+- [CampaignEligibility](docs/CampaignEligibility.md)
+- [CampaignEligibilityDetails](docs/CampaignEligibilityDetails.md)
+- [CampaignEligibilityExperiment](docs/CampaignEligibilityExperiment.md)
+- [CampaignEligibilityFailureDetails](docs/CampaignEligibilityFailureDetails.md)
- [CampaignEntity](docs/CampaignEntity.md)
- [CampaignEvaluationGroup](docs/CampaignEvaluationGroup.md)
- [CampaignEvaluationPosition](docs/CampaignEvaluationPosition.md)
@@ -537,10 +575,12 @@ Class | Method | HTTP request | Description
- [CampaignGroup](docs/CampaignGroup.md)
- [CampaignGroupEntity](docs/CampaignGroupEntity.md)
- [CampaignLogSummary](docs/CampaignLogSummary.md)
+- [CampaignLoyaltyProgram](docs/CampaignLoyaltyProgram.md)
- [CampaignNotificationBase](docs/CampaignNotificationBase.md)
- [CampaignNotificationGeneric](docs/CampaignNotificationGeneric.md)
- [CampaignNotificationItemBase](docs/CampaignNotificationItemBase.md)
- [CampaignNotificationPolicy](docs/CampaignNotificationPolicy.md)
+- [CampaignReference](docs/CampaignReference.md)
- [CampaignRulesetChangedNotification](docs/CampaignRulesetChangedNotification.md)
- [CampaignRulesetChangedNotificationItem](docs/CampaignRulesetChangedNotificationItem.md)
- [CampaignSearch](docs/CampaignSearch.md)
@@ -570,7 +610,13 @@ Class | Method | HTTP request | Description
- [CartItemFilterTemplate](docs/CartItemFilterTemplate.md)
- [Catalog](docs/Catalog.md)
- [CatalogAction](docs/CatalogAction.md)
+- [CatalogActionAdd](docs/CatalogActionAdd.md)
+- [CatalogActionAddPriceAdjustment](docs/CatalogActionAddPriceAdjustment.md)
- [CatalogActionFilter](docs/CatalogActionFilter.md)
+- [CatalogActionPatch](docs/CatalogActionPatch.md)
+- [CatalogActionPatchMany](docs/CatalogActionPatchMany.md)
+- [CatalogActionRemove](docs/CatalogActionRemove.md)
+- [CatalogActionRemoveMany](docs/CatalogActionRemoveMany.md)
- [CatalogItem](docs/CatalogItem.md)
- [CatalogRule](docs/CatalogRule.md)
- [CatalogSyncRequest](docs/CatalogSyncRequest.md)
@@ -578,16 +624,33 @@ Class | Method | HTTP request | Description
- [Change](docs/Change.md)
- [ChangeLoyaltyTierLevelEffectProps](docs/ChangeLoyaltyTierLevelEffectProps.md)
- [ChangeProfilePassword](docs/ChangeProfilePassword.md)
+- [CheckAchievementBlock](docs/CheckAchievementBlock.md)
+- [CheckAchievementBlockAchievement](docs/CheckAchievementBlockAchievement.md)
+- [CheckAttributeBlock](docs/CheckAttributeBlock.md)
+- [CheckAttributeBlockBase](docs/CheckAttributeBlockBase.md)
+- [CheckAudienceBlock](docs/CheckAudienceBlock.md)
+- [CheckAudienceBlockAudience](docs/CheckAudienceBlockAudience.md)
+- [CheckBudgetBlock](docs/CheckBudgetBlock.md)
+- [CheckCouponBlock](docs/CheckCouponBlock.md)
+- [CheckEventBlock](docs/CheckEventBlock.md)
+- [CheckLoyaltyBalanceBlock](docs/CheckLoyaltyBalanceBlock.md)
+- [CheckLoyaltyBalanceBlockProgram](docs/CheckLoyaltyBalanceBlockProgram.md)
+- [CheckLoyaltyCardBlock](docs/CheckLoyaltyCardBlock.md)
+- [CheckReferralBlock](docs/CheckReferralBlock.md)
+- [CheckTierBlock](docs/CheckTierBlock.md)
+- [CheckTierBlockTier](docs/CheckTierBlockTier.md)
- [CodeGeneratorSettings](docs/CodeGeneratorSettings.md)
- [Collection](docs/Collection.md)
- [CollectionItem](docs/CollectionItem.md)
- [CollectionWithoutPayload](docs/CollectionWithoutPayload.md)
+- [ConfirmRisksRequest](docs/ConfirmRisksRequest.md)
- [Coupon](docs/Coupon.md)
- [CouponConstraints](docs/CouponConstraints.md)
- [CouponCreatedEffectProps](docs/CouponCreatedEffectProps.md)
- [CouponCreationJob](docs/CouponCreationJob.md)
- [CouponDeletionFilters](docs/CouponDeletionFilters.md)
- [CouponDeletionJob](docs/CouponDeletionJob.md)
+- [CouponEligibilityInfo](docs/CouponEligibilityInfo.md)
- [CouponEntity](docs/CouponEntity.md)
- [CouponFailureSummary](docs/CouponFailureSummary.md)
- [CouponLimitConfigs](docs/CouponLimitConfigs.md)
@@ -601,13 +664,16 @@ Class | Method | HTTP request | Description
- [CreateAchievement](docs/CreateAchievement.md)
- [CreateAchievementV2](docs/CreateAchievementV2.md)
- [CreateApplicationAPIKey](docs/CreateApplicationAPIKey.md)
+- [CreateCouponBlock](docs/CreateCouponBlock.md)
- [CreateCouponData](docs/CreateCouponData.md)
- [CreateMCPKey](docs/CreateMCPKey.md)
- [CreateManagementKey](docs/CreateManagementKey.md)
+- [CreateReferralBlock](docs/CreateReferralBlock.md)
- [CreateTemplateCampaign](docs/CreateTemplateCampaign.md)
- [CreateTemplateCampaignResponse](docs/CreateTemplateCampaignResponse.md)
- [CustomEffect](docs/CustomEffect.md)
- [CustomEffectProps](docs/CustomEffectProps.md)
+- [CustomerAchievement](docs/CustomerAchievement.md)
- [CustomerActivityReport](docs/CustomerActivityReport.md)
- [CustomerAnalytics](docs/CustomerAnalytics.md)
- [CustomerInventory](docs/CustomerInventory.md)
@@ -617,8 +683,10 @@ Class | Method | HTTP request | Description
- [CustomerProfileEntity](docs/CustomerProfileEntity.md)
- [CustomerProfileIntegrationRequestV2](docs/CustomerProfileIntegrationRequestV2.md)
- [CustomerProfileIntegrationResponseV2](docs/CustomerProfileIntegrationResponseV2.md)
+- [CustomerProfileReward](docs/CustomerProfileReward.md)
- [CustomerProfileSearchQuery](docs/CustomerProfileSearchQuery.md)
- [CustomerProfileUpdateV2Response](docs/CustomerProfileUpdateV2Response.md)
+- [CustomerReward](docs/CustomerReward.md)
- [CustomerSession](docs/CustomerSession.md)
- [CustomerSessionV2](docs/CustomerSessionV2.md)
- [DeductLoyaltyPoints](docs/DeductLoyaltyPoints.md)
@@ -626,6 +694,8 @@ Class | Method | HTTP request | Description
- [DeleteCouponsData](docs/DeleteCouponsData.md)
- [DeleteLoyaltyTransactionsRequest](docs/DeleteLoyaltyTransactionsRequest.md)
- [DeleteUserRequest](docs/DeleteUserRequest.md)
+- [DigitalPass](docs/DigitalPass.md)
+- [DiscardRisksRequest](docs/DiscardRisksRequest.md)
- [Effect](docs/Effect.md)
- [EffectEntity](docs/EffectEntity.md)
- [EmailEntity](docs/EmailEntity.md)
@@ -646,8 +716,15 @@ Class | Method | HTTP request | Description
- [EventType](docs/EventType.md)
- [EventV2](docs/EventV2.md)
- [EventV3](docs/EventV3.md)
+- [EventV3Connections](docs/EventV3Connections.md)
+- [EventV3Entity](docs/EventV3Entity.md)
+- [EventV3ReferralEntity](docs/EventV3ReferralEntity.md)
+- [EventV3RequestEntity](docs/EventV3RequestEntity.md)
+- [ExcludePriceObservationsRequest](docs/ExcludePriceObservationsRequest.md)
- [Experiment](docs/Experiment.md)
- [ExperimentCampaignCopy](docs/ExperimentCampaignCopy.md)
+- [ExperimentConfidenceTimeline](docs/ExperimentConfidenceTimeline.md)
+- [ExperimentConfidenceTimelineDataPoint](docs/ExperimentConfidenceTimelineDataPoint.md)
- [ExperimentCopy](docs/ExperimentCopy.md)
- [ExperimentCopyExperiment](docs/ExperimentCopyExperiment.md)
- [ExperimentListResults](docs/ExperimentListResults.md)
@@ -678,7 +755,10 @@ Class | Method | HTTP request | Description
- [ExtendLoyaltyPointsExpiryDateEffectProps](docs/ExtendLoyaltyPointsExpiryDateEffectProps.md)
- [ExtendedCoupon](docs/ExtendedCoupon.md)
- [FeatureFlag](docs/FeatureFlag.md)
+- [FeatureFlagUpdate](docs/FeatureFlagUpdate.md)
- [FeaturesFeed](docs/FeaturesFeed.md)
+- [FilterAndMapValuesSelectorStep](docs/FilterAndMapValuesSelectorStep.md)
+- [FilterSelectorStep](docs/FilterSelectorStep.md)
- [FuncArgDef](docs/FuncArgDef.md)
- [FunctionDef](docs/FunctionDef.md)
- [GenerateAuditLogSummary](docs/GenerateAuditLogSummary.md)
@@ -692,11 +772,17 @@ Class | Method | HTTP request | Description
- [GenerateRuleTitle](docs/GenerateRuleTitle.md)
- [GenerateRuleTitleRule](docs/GenerateRuleTitleRule.md)
- [GenerateUserSessionSummary](docs/GenerateUserSessionSummary.md)
+- [GeoJSONGeometryCollection](docs/GeoJSONGeometryCollection.md)
+- [GeoJSONMultiPolygon](docs/GeoJSONMultiPolygon.md)
+- [GeoJSONPoint](docs/GeoJSONPoint.md)
+- [GeoJSONPolygon](docs/GeoJSONPolygon.md)
- [GetIntegrationCouponRequest](docs/GetIntegrationCouponRequest.md)
- [Giveaway](docs/Giveaway.md)
- [GiveawayPoolNotification](docs/GiveawayPoolNotification.md)
- [GiveawayPoolNotificationData](docs/GiveawayPoolNotificationData.md)
+- [GiveawayPoolReference](docs/GiveawayPoolReference.md)
- [GiveawaysPool](docs/GiveawaysPool.md)
+- [GroupBlock](docs/GroupBlock.md)
- [HiddenConditionsEffects](docs/HiddenConditionsEffects.md)
- [History](docs/History.md)
- [IdentifiableEntity](docs/IdentifiableEntity.md)
@@ -753,12 +839,17 @@ Class | Method | HTTP request | Description
- [InlineResponse20051](docs/InlineResponse20051.md)
- [InlineResponse20052](docs/InlineResponse20052.md)
- [InlineResponse20053](docs/InlineResponse20053.md)
+- [InlineResponse20054](docs/InlineResponse20054.md)
+- [InlineResponse20055](docs/InlineResponse20055.md)
+- [InlineResponse20056](docs/InlineResponse20056.md)
+- [InlineResponse20056Catalog](docs/InlineResponse20056Catalog.md)
- [InlineResponse2006](docs/InlineResponse2006.md)
- [InlineResponse2007](docs/InlineResponse2007.md)
- [InlineResponse2008](docs/InlineResponse2008.md)
- [InlineResponse2009](docs/InlineResponse2009.md)
- [InlineResponse201](docs/InlineResponse201.md)
- [IntegrationCampaign](docs/IntegrationCampaign.md)
+- [IntegrationCampaignBase](docs/IntegrationCampaignBase.md)
- [IntegrationCoupon](docs/IntegrationCoupon.md)
- [IntegrationCustomerProfileAudienceRequest](docs/IntegrationCustomerProfileAudienceRequest.md)
- [IntegrationCustomerProfileAudienceRequestItem](docs/IntegrationCustomerProfileAudienceRequestItem.md)
@@ -772,17 +863,19 @@ Class | Method | HTTP request | Description
- [IntegrationHubConfig](docs/IntegrationHubConfig.md)
- [IntegrationHubEventPayloadCouponBasedNotifications](docs/IntegrationHubEventPayloadCouponBasedNotifications.md)
- [IntegrationHubEventPayloadCouponBasedNotificationsLimits](docs/IntegrationHubEventPayloadCouponBasedNotificationsLimits.md)
-- [IntegrationHubEventPayloadLoyaltyProfileBasedNotification](docs/IntegrationHubEventPayloadLoyaltyProfileBasedNotification.md)
- [IntegrationHubEventPayloadLoyaltyProfileBasedPointsChangedNotification](docs/IntegrationHubEventPayloadLoyaltyProfileBasedPointsChangedNotification.md)
- [IntegrationHubEventPayloadLoyaltyProfileBasedPointsChangedNotificationAction](docs/IntegrationHubEventPayloadLoyaltyProfileBasedPointsChangedNotificationAction.md)
- [IntegrationHubEventPayloadLoyaltyProfileBasedTierDowngradeNotification](docs/IntegrationHubEventPayloadLoyaltyProfileBasedTierDowngradeNotification.md)
- [IntegrationHubEventPayloadLoyaltyProfileBasedTierUpgradeNotification](docs/IntegrationHubEventPayloadLoyaltyProfileBasedTierUpgradeNotification.md)
- [IntegrationHubEventRecord](docs/IntegrationHubEventRecord.md)
+- [IntegrationHubEventStatusUpdate](docs/IntegrationHubEventStatusUpdate.md)
+- [IntegrationHubEventType](docs/IntegrationHubEventType.md)
- [IntegrationHubFlow](docs/IntegrationHubFlow.md)
- [IntegrationHubFlowConfig](docs/IntegrationHubFlowConfig.md)
- [IntegrationHubFlowConfigResponse](docs/IntegrationHubFlowConfigResponse.md)
- [IntegrationHubFlowResponse](docs/IntegrationHubFlowResponse.md)
- [IntegrationHubFlowWithConfig](docs/IntegrationHubFlowWithConfig.md)
+- [IntegrationHubInstance](docs/IntegrationHubInstance.md)
- [IntegrationHubPaginatedEventPayload](docs/IntegrationHubPaginatedEventPayload.md)
- [IntegrationProfileEntity](docs/IntegrationProfileEntity.md)
- [IntegrationProfileEntityV3](docs/IntegrationProfileEntityV3.md)
@@ -791,9 +884,11 @@ Class | Method | HTTP request | Description
- [IntegrationState](docs/IntegrationState.md)
- [IntegrationStateV2](docs/IntegrationStateV2.md)
- [IntegrationStoreEntity](docs/IntegrationStoreEntity.md)
+- [IntegrationUnlockRewardRequest](docs/IntegrationUnlockRewardRequest.md)
- [InventoryCoupon](docs/InventoryCoupon.md)
- [InventoryReferral](docs/InventoryReferral.md)
- [ItemAttribute](docs/ItemAttribute.md)
+- [JoinLoyaltyProgramEffectProps](docs/JoinLoyaltyProgramEffectProps.md)
- [LabelTargetAudience](docs/LabelTargetAudience.md)
- [LabelTargetNone](docs/LabelTargetNone.md)
- [LedgerEntry](docs/LedgerEntry.md)
@@ -805,6 +900,9 @@ Class | Method | HTTP request | Description
- [LimitCounter](docs/LimitCounter.md)
- [ListCampaignStoreBudgets](docs/ListCampaignStoreBudgets.md)
- [ListCampaignStoreBudgetsStore](docs/ListCampaignStoreBudgetsStore.md)
+- [ListCheckAttributeBlock](docs/ListCheckAttributeBlock.md)
+- [ListWithCountCheckAttributeBlock](docs/ListWithCountCheckAttributeBlock.md)
+- [LocationCheckAttributeBlock](docs/LocationCheckAttributeBlock.md)
- [LoginParams](docs/LoginParams.md)
- [Loyalty](docs/Loyalty.md)
- [LoyaltyBalance](docs/LoyaltyBalance.md)
@@ -832,9 +930,19 @@ Class | Method | HTTP request | Description
- [LoyaltyProgramTransaction](docs/LoyaltyProgramTransaction.md)
- [LoyaltySubLedger](docs/LoyaltySubLedger.md)
- [LoyaltyTier](docs/LoyaltyTier.md)
+- [MCPCompleteOAuthSession](docs/MCPCompleteOAuthSession.md)
- [MCPKey](docs/MCPKey.md)
+- [MCPOAuthClient](docs/MCPOAuthClient.md)
+- [MCPOAuthCompleteResult](docs/MCPOAuthCompleteResult.md)
+- [MCPOAuthProtectedResource](docs/MCPOAuthProtectedResource.md)
+- [MCPOAuthServerMetadata](docs/MCPOAuthServerMetadata.md)
+- [MCPOAuthSessionInfo](docs/MCPOAuthSessionInfo.md)
+- [MCPOAuthToken](docs/MCPOAuthToken.md)
+- [MCPOAuthTokenError](docs/MCPOAuthTokenError.md)
+- [MCPOAuthTokenRequest](docs/MCPOAuthTokenRequest.md)
- [ManagementKey](docs/ManagementKey.md)
- [ManagerConfig](docs/ManagerConfig.md)
+- [MapSelectorStep](docs/MapSelectorStep.md)
- [MessageLogEntries](docs/MessageLogEntries.md)
- [MessageLogEntry](docs/MessageLogEntry.md)
- [MessageLogRequest](docs/MessageLogRequest.md)
@@ -883,19 +991,23 @@ Class | Method | HTTP request | Description
- [NewCustomerProfile](docs/NewCustomerProfile.md)
- [NewCustomerSession](docs/NewCustomerSession.md)
- [NewCustomerSessionV2](docs/NewCustomerSessionV2.md)
+- [NewDigitalPass](docs/NewDigitalPass.md)
- [NewEvent](docs/NewEvent.md)
- [NewEventType](docs/NewEventType.md)
+- [NewEventV3Entity](docs/NewEventV3Entity.md)
- [NewExperiment](docs/NewExperiment.md)
- [NewExperimentVariant](docs/NewExperimentVariant.md)
- [NewExperimentVariantArray](docs/NewExperimentVariantArray.md)
- [NewExternalInvitation](docs/NewExternalInvitation.md)
- [NewGiveawaysPool](docs/NewGiveawaysPool.md)
+- [NewIntegrationHubCoupons](docs/NewIntegrationHubCoupons.md)
- [NewInternalAudience](docs/NewInternalAudience.md)
- [NewInvitation](docs/NewInvitation.md)
- [NewInviteEmail](docs/NewInviteEmail.md)
- [NewLoyaltyProgram](docs/NewLoyaltyProgram.md)
- [NewLoyaltyTier](docs/NewLoyaltyTier.md)
- [NewMCPKey](docs/NewMCPKey.md)
+- [NewMCPOAuthClient](docs/NewMCPOAuthClient.md)
- [NewManagementKey](docs/NewManagementKey.md)
- [NewMessageTest](docs/NewMessageTest.md)
- [NewMultipleAudiencesItem](docs/NewMultipleAudiencesItem.md)
@@ -911,6 +1023,7 @@ Class | Method | HTTP request | Description
- [NewReturn](docs/NewReturn.md)
- [NewRevisionVersion](docs/NewRevisionVersion.md)
- [NewReward](docs/NewReward.md)
+- [NewRiskNotification](docs/NewRiskNotification.md)
- [NewRole](docs/NewRole.md)
- [NewRoleV2](docs/NewRoleV2.md)
- [NewRuleset](docs/NewRuleset.md)
@@ -938,6 +1051,7 @@ Class | Method | HTTP request | Description
- [OutgoingIntegrationTemplates](docs/OutgoingIntegrationTemplates.md)
- [OutgoingIntegrationType](docs/OutgoingIntegrationType.md)
- [OutgoingIntegrationTypes](docs/OutgoingIntegrationTypes.md)
+- [PassthroughBlock](docs/PassthroughBlock.md)
- [PatchItemCatalogAction](docs/PatchItemCatalogAction.md)
- [PatchManyItemsCatalogAction](docs/PatchManyItemsCatalogAction.md)
- [PendingActivePointsData](docs/PendingActivePointsData.md)
@@ -959,7 +1073,11 @@ Class | Method | HTTP request | Description
- [ProfileAudiencesChanges](docs/ProfileAudiencesChanges.md)
- [ProjectedTier](docs/ProjectedTier.md)
- [PromoteExperiment](docs/PromoteExperiment.md)
+- [RedeemLoyaltyPointsBlock](docs/RedeemLoyaltyPointsBlock.md)
+- [RedeemLoyaltyPointsBlockProgram](docs/RedeemLoyaltyPointsBlockProgram.md)
- [RedeemReferralEffectProps](docs/RedeemReferralEffectProps.md)
+- [RedeemableCoupon](docs/RedeemableCoupon.md)
+- [ReduceSelectorStep](docs/ReduceSelectorStep.md)
- [Referral](docs/Referral.md)
- [ReferralConstraints](docs/ReferralConstraints.md)
- [ReferralCreatedEffectProps](docs/ReferralCreatedEffectProps.md)
@@ -970,15 +1088,29 @@ Class | Method | HTTP request | Description
- [RemoveItemCatalogAction](docs/RemoveItemCatalogAction.md)
- [RemoveManyItemsCatalogAction](docs/RemoveManyItemsCatalogAction.md)
- [ReopenSessionResponse](docs/ReopenSessionResponse.md)
+- [ReserveCouponBlock](docs/ReserveCouponBlock.md)
- [ReserveCouponEffectProps](docs/ReserveCouponEffectProps.md)
- [ResponseContentObject](docs/ResponseContentObject.md)
- [ReturnIntegrationRequest](docs/ReturnIntegrationRequest.md)
- [ReturnedCartItem](docs/ReturnedCartItem.md)
+- [ReverseSelectorStep](docs/ReverseSelectorStep.md)
+- [ReviewRisksRequest](docs/ReviewRisksRequest.md)
- [Revision](docs/Revision.md)
- [RevisionActivation](docs/RevisionActivation.md)
- [RevisionActivationRequest](docs/RevisionActivationRequest.md)
- [RevisionVersion](docs/RevisionVersion.md)
- [Reward](docs/Reward.md)
+- [RewardCatalogItem](docs/RewardCatalogItem.md)
+- [RewardEligibility](docs/RewardEligibility.md)
+- [RewardEligibilityFailureDetails](docs/RewardEligibilityFailureDetails.md)
+- [RewardPointsRequired](docs/RewardPointsRequired.md)
+- [RewardUnlockRejection](docs/RewardUnlockRejection.md)
+- [RewardWithUnlocks](docs/RewardWithUnlocks.md)
+- [Risk](docs/Risk.md)
+- [RiskAffectedEntityItem](docs/RiskAffectedEntityItem.md)
+- [RiskCriticalityUpdate](docs/RiskCriticalityUpdate.md)
+- [RiskDetail](docs/RiskDetail.md)
+- [RiskNotification](docs/RiskNotification.md)
- [Role](docs/Role.md)
- [RoleAssign](docs/RoleAssign.md)
- [RoleMembership](docs/RoleMembership.md)
@@ -996,15 +1128,22 @@ Class | Method | HTTP request | Description
- [RollbackDiscountEffectProps](docs/RollbackDiscountEffectProps.md)
- [RollbackIncreasedAchievementProgressEffectProps](docs/RollbackIncreasedAchievementProgressEffectProps.md)
- [RollbackReferralEffectProps](docs/RollbackReferralEffectProps.md)
+- [RollbackUseRewardEffectProps](docs/RollbackUseRewardEffectProps.md)
- [Rule](docs/Rule.md)
+- [RuleEligibility](docs/RuleEligibility.md)
+- [RuleEligibilityFailureDetails](docs/RuleEligibilityFailureDetails.md)
- [RuleFailureReason](docs/RuleFailureReason.md)
- [RuleMetadata](docs/RuleMetadata.md)
+- [RuleMetadataEligibility](docs/RuleMetadataEligibility.md)
+- [RuleV2](docs/RuleV2.md)
- [Ruleset](docs/Ruleset.md)
+- [RulesetV2](docs/RulesetV2.md)
- [SSOConfig](docs/SSOConfig.md)
- [SamlConnection](docs/SamlConnection.md)
- [SamlConnectionInternal](docs/SamlConnectionInternal.md)
- [SamlConnectionMetadata](docs/SamlConnectionMetadata.md)
- [SamlLoginEndpoint](docs/SamlLoginEndpoint.md)
+- [ScalarCheckAttributeBlock](docs/ScalarCheckAttributeBlock.md)
- [ScimBaseGroup](docs/ScimBaseGroup.md)
- [ScimBaseUser](docs/ScimBaseUser.md)
- [ScimBaseUserName](docs/ScimBaseUserName.md)
@@ -1027,6 +1166,9 @@ Class | Method | HTTP request | Description
- [ScimUser](docs/ScimUser.md)
- [ScimUsersListResponse](docs/ScimUsersListResponse.md)
- [SecondaryDeployment](docs/SecondaryDeployment.md)
+- [SelectSelectorStep](docs/SelectSelectorStep.md)
+- [Selector](docs/Selector.md)
+- [SelectorValueMapRef](docs/SelectorValueMapRef.md)
- [Session](docs/Session.md)
- [SetDiscountEffectProps](docs/SetDiscountEffectProps.md)
- [SetDiscountPerAdditionalCostEffectProps](docs/SetDiscountPerAdditionalCostEffectProps.md)
@@ -1034,10 +1176,14 @@ Class | Method | HTTP request | Description
- [SetDiscountPerItemEffectProps](docs/SetDiscountPerItemEffectProps.md)
- [SetLoyaltyPointsExpiryDateEffectProps](docs/SetLoyaltyPointsExpiryDateEffectProps.md)
- [ShowBundleMetadataEffectProps](docs/ShowBundleMetadataEffectProps.md)
+- [ShowNotificationBlock](docs/ShowNotificationBlock.md)
- [ShowNotificationEffectProps](docs/ShowNotificationEffectProps.md)
- [SkuUnitAnalytics](docs/SkuUnitAnalytics.md)
- [SkuUnitAnalyticsDataPoint](docs/SkuUnitAnalyticsDataPoint.md)
- [SlotDef](docs/SlotDef.md)
+- [SortSelectorStep](docs/SortSelectorStep.md)
+- [SortSelectorStepField](docs/SortSelectorStepField.md)
+- [StartAchievementProgressEffectProps](docs/StartAchievementProgressEffectProps.md)
- [Store](docs/Store.md)
- [StrikethroughChangedItem](docs/StrikethroughChangedItem.md)
- [StrikethroughCustomEffectPerItemProps](docs/StrikethroughCustomEffectPerItemProps.md)
@@ -1048,11 +1194,15 @@ Class | Method | HTTP request | Description
- [StrikethroughSetDiscountPerItemMemberEffectProps](docs/StrikethroughSetDiscountPerItemMemberEffectProps.md)
- [StrikethroughTrigger](docs/StrikethroughTrigger.md)
- [SummaryCampaignStoreBudget](docs/SummaryCampaignStoreBudget.md)
+- [SupportCustomerProfile](docs/SupportCustomerProfile.md)
+- [SupportRequest](docs/SupportRequest.md)
+- [SupportRequestInput](docs/SupportRequestInput.md)
- [TalangAttribute](docs/TalangAttribute.md)
- [TalangAttributeVisibility](docs/TalangAttributeVisibility.md)
- [TemplateArgDef](docs/TemplateArgDef.md)
- [TemplateDef](docs/TemplateDef.md)
- [TemplateLimitConfig](docs/TemplateLimitConfig.md)
+- [TemplateParameter](docs/TemplateParameter.md)
- [Tier](docs/Tier.md)
- [TierDowngradeData](docs/TierDowngradeData.md)
- [TierDowngradeNotification](docs/TierDowngradeNotification.md)
@@ -1066,16 +1216,30 @@ Class | Method | HTTP request | Description
- [TierWillDowngradeNotificationTrigger](docs/TierWillDowngradeNotificationTrigger.md)
- [TimePoint](docs/TimePoint.md)
- [TransferLoyaltyCard](docs/TransferLoyaltyCard.md)
+- [TriggerCustomEffectBlock](docs/TriggerCustomEffectBlock.md)
+- [TriggerCustomEffectBlockCustomEffect](docs/TriggerCustomEffectBlockCustomEffect.md)
+- [TriggerCustomEffectBlockTarget](docs/TriggerCustomEffectBlockTarget.md)
+- [TriggerWebhookBlock](docs/TriggerWebhookBlock.md)
+- [TriggerWebhookBlockWebhook](docs/TriggerWebhookBlockWebhook.md)
- [TriggerWebhookEffectProps](docs/TriggerWebhookEffectProps.md)
- [TwoFAConfig](docs/TwoFAConfig.md)
+- [UnaryCheckAttributeBlock](docs/UnaryCheckAttributeBlock.md)
+- [UnlockRewardEffectProps](docs/UnlockRewardEffectProps.md)
- [UpdateAccount](docs/UpdateAccount.md)
- [UpdateAchievement](docs/UpdateAchievement.md)
+- [UpdateAchievementProgressBlock](docs/UpdateAchievementProgressBlock.md)
+- [UpdateAchievementProgressBlockAchievement](docs/UpdateAchievementProgressBlockAchievement.md)
- [UpdateAchievementV2](docs/UpdateAchievementV2.md)
- [UpdateApplication](docs/UpdateApplication.md)
- [UpdateApplicationAPIKey](docs/UpdateApplicationAPIKey.md)
- [UpdateApplicationCIF](docs/UpdateApplicationCIF.md)
- [UpdateAttributeEffectProps](docs/UpdateAttributeEffectProps.md)
+- [UpdateAttributeValueBlock](docs/UpdateAttributeValueBlock.md)
+- [UpdateAttributeValueBlockAttribute](docs/UpdateAttributeValueBlockAttribute.md)
+- [UpdateAttributeValueBlockTarget](docs/UpdateAttributeValueBlockTarget.md)
- [UpdateAudience](docs/UpdateAudience.md)
+- [UpdateAudienceMembershipBlock](docs/UpdateAudienceMembershipBlock.md)
+- [UpdateAudienceMembershipBlockAudience](docs/UpdateAudienceMembershipBlockAudience.md)
- [UpdateBlueprint](docs/UpdateBlueprint.md)
- [UpdateCampaign](docs/UpdateCampaign.md)
- [UpdateCampaignCollection](docs/UpdateCampaignCollection.md)
@@ -1099,19 +1263,26 @@ Class | Method | HTTP request | Description
- [UpdatePriceType](docs/UpdatePriceType.md)
- [UpdateReferral](docs/UpdateReferral.md)
- [UpdateReferralBatch](docs/UpdateReferralBatch.md)
+- [UpdateReward](docs/UpdateReward.md)
+- [UpdateRiskNotification](docs/UpdateRiskNotification.md)
- [UpdateRole](docs/UpdateRole.md)
- [UpdateStore](docs/UpdateStore.md)
+- [UpdateSupportRequest](docs/UpdateSupportRequest.md)
- [UpdateUser](docs/UpdateUser.md)
+- [UseRewardEffectProps](docs/UseRewardEffectProps.md)
- [User](docs/User.md)
- [UserEntity](docs/UserEntity.md)
- [ValueMap](docs/ValueMap.md)
- [Webhook](docs/Webhook.md)
- [WebhookAuthentication](docs/WebhookAuthentication.md)
+- [WebhookAuthenticationBaseBasic](docs/WebhookAuthenticationBaseBasic.md)
+- [WebhookAuthenticationBaseCustom](docs/WebhookAuthenticationBaseCustom.md)
- [WebhookAuthenticationDataBasic](docs/WebhookAuthenticationDataBasic.md)
- [WebhookAuthenticationDataCustom](docs/WebhookAuthenticationDataCustom.md)
- [WebhookAuthenticationWebhookRef](docs/WebhookAuthenticationWebhookRef.md)
- [WebhookWithOutgoingIntegrationDetails](docs/WebhookWithOutgoingIntegrationDetails.md)
- [WillAwardGiveawayEffectProps](docs/WillAwardGiveawayEffectProps.md)
+- [WithinCheckAttributeBlock](docs/WithinCheckAttributeBlock.md)
## Authorization
diff --git a/api/openapi.yaml b/api/openapi.yaml
index d7750232..b1b480ba 100644
--- a/api/openapi.yaml
+++ b/api/openapi.yaml
@@ -26,73 +26,60 @@ security:
- management_key: []
tags:
- description: |
- Operations for updating account information such as billing email addresses, inviting users, etc.
+ Represents account and user management, including billing email addresses and user invitations.
name: Accounts and users
- description: |
- Achievements allow you to reward a customer profile for performing a number of specific actions or reaching a transactional milestone within a defined period.
-
+ Represents achievements that reward a customer profile for performing a number of specific actions or reaching a transactional milestone within a defined period.
For example, you can use achievements to award your customers when they purchase five cups of coffee in one week or when they purchase items worth $3000 in three months.
+ See the [docs](https://docs.talon.one/docs/product/achievements/overview) for more information.
name: Achievements
- description: |
- An extra fee applied to the cart. For example, shipping fees or processing fees.
-
- See the [docs](https://docs.talon.one/docs/product/account/dev-tools/managing-additional-costs).
+ Represents an extra fee applied to the cart, for example, shipping fees or processing fees.
+ See the [docs](https://docs.talon.one/docs/product/account/dev-tools/managing-additional-costs) for more information.
name: Additional costs
- description: |
- Analytics are used to retrieve statistical data about the performance of campaigns within an Application.
+ Represents analytics used to retrieve statistical data about the performance of campaigns within an Application.
name: Analytics
- description: |
Represents an Application in the Campaign Manager.
An Application is the target of every Integration API request to Talon.One.
-
One Application can hold various API keys used for Integration API requests.
-
- You may have multiple Applications within one account,
- for example staging and production, or different international markets.
-
- See the [docs](https://docs.talon.one/docs/product/applications/overview).
+ You may have multiple Applications within one account, for example staging and production, or different international markets.
+ See the [docs](https://docs.talon.one/docs/product/applications/overview) for more information.
name: Applications
- description: |
- Represents a piece of information related to one of the entities avaialbe in the Campaign Manager. Use
- them to create highly customized rules.
-
- See the [docs](https://docs.talon.one/docs/product/account/dev-tools/managing-attributes).
+ Represents a piece of information related to one of the entities available in the Campaign Manager. Use them to create highly customized rules.
+ See the [docs](https://docs.talon.one/docs/product/account/dev-tools/managing-attributes) for more information.
name: Attributes
- description: |
Represents lists of customer profiles that allow you to target specific groups of customers in your campaigns.
Audiences can be synced from customer data platforms or created directly in Talon.One.
-
- See the [docs](https://docs.talon.one/docs/product/audiences/overview).
+ See the [docs](https://docs.talon.one/docs/product/audiences/overview) for more information.
name: Audiences
- description: |
Represents the campaign access groups you can create in your Applications to organize your campaigns based on the type of campaign or the team in charge.
- See the [docs](https://docs.talon.one/docs/product/account/account-settings/managing-campaign-groups).
+ See the [docs](https://docs.talon.one/docs/product/account/account-settings/managing-campaign-groups) for more information.
name: Campaign access groups
- description: |
Represents templates used to generate campaigns from.
name: Campaign templates
- description: |
- Represents the primary resource used to control the behavior of the Talon.One Rule Engine.
- They combine rulesets, coupons, and limits into a single unit.
-
- See the [docs](https://docs.talon.one/docs/product/campaigns/overview).
+ Represents the primary resource used to control the behavior of the Talon.One Rule Engine. They combine rulesets, coupons, and limits into a single unit.
+ See the [docs](https://docs.talon.one/docs/product/campaigns/overview) for more information.
name: Campaigns
- description: |
Represents a catalog of cart items with unique SKUs. Cart item catalogs allow you to synchronize your entire inventory with Talon.One.
-
- See the [docs](https://docs.talon.one/docs/product/account/dev-tools/managing-cart-item-catalogs).
+ See the [docs](https://docs.talon.one/docs/product/account/dev-tools/managing-cart-item-catalogs) for more information.
name: Catalogs
- description: |
Represents a collection of arbitrary values that you can use inside rules. For example, a list of SKUs.
-
- See the [docs](https://docs.talon.one/docs/product/campaigns/managing-collections).
+ See the [docs](https://docs.talon.one/docs/product/campaigns/managing-collections) for more information.
name: Collections
- description: |
- Coupons are unique codes belonging to a particular campaign. They don't define any behavior on their own.
+ Represents unique codes belonging to a particular campaign. Coupons don't define any behavior on their own.
Instead the campaign ruleset can include rules that validate coupons and carry out particular effects.
-
- See the [docs](https://docs.talon.one/docs/product/campaigns/coupons/coupon-page-overview).
+ See the [docs](https://docs.talon.one/docs/product/campaigns/coupons/coupon-page-overview) for more information.
name: Coupons
- description: |
Represents the data of a customer, including sessions and events used for reporting and debugging in the Campaign Manager.
@@ -102,45 +89,39 @@ tags:
name: Customer profiles
- description: |
Represents the data related to a customer session. Typically, a customer session is the value and content of the customer's cart.
-
Sessions can be anonymous or linked to a customer profile and they have a life cycle from `open` to `closed`.
In general, a session is closed when the customer completes the checkout step.
-
- Sessions are a key concept of Talon.One. We strongly recommend you read the [documentation about customer sessions](https://docs.talon.one/docs/dev/concepts/entities/customer-sessions).
+ Sessions are a key concept of Talon.One. We strongly recommend you read the [docs](https://docs.talon.one/docs/dev/concepts/entities/customer-sessions) for more information.
name: Customer sessions
- description: |
Represents a single occurrence of a specific customer action, for example, updating the cart or signing up for a newsletter.
-
- There are 2 types of events:
- - **Built-in events:** They are triggered by various endpoints, such as the [Update customer session](https://docs.talon.one/integration-api#tag/Customer-sessions/operation/updateCustomerSessionV2) endpoint. [Learn more](https://docs.talon.one/docs/dev/concepts/entities/events).
- - **Custom events:** They are triggered by the [Track event](https://docs.talon.one/integration-api#tag/Events/operation/trackEventV2) endpoint.
+ There are 2 types of [events](https://docs.talon.one/docs/dev/concepts/entities/events):
+ - **Built-in events:** They are triggered by various endpoints, such as
+ the [Update customer session](https://docs.talon.one/integration-api#tag/Customer-sessions/operation/updateCustomerSessionV2)
+ endpoint. [Learn more](https://docs.talon.one/docs/dev/concepts/entities/events#built-in-events).
+ - **Custom events:** They are triggered by the [Track advanced event](https://docs.talon.one/integration-api#tag/Events/operation/trackEventV3) endpoint. [Learn more](https://docs.talon.one/docs/dev/concepts/entities/events#advanced-events).
name: Events
- description: |
Represents an A/B testing configuration within a campaign that splits customer sessions across multiple variants to compare rule effects against each other.
name: Experiments
- description: |
Represents a program that rewards customers with giveaways, such as free gift cards.
-
- See the [docs](https://docs.talon.one/docs/product/giveaways/overview).
+ See the [docs](https://docs.talon.one/docs/product/giveaways/overview) for more information.
name: Giveaways
- description: |
- Operations to query the Talon.One logs. They contain all incoming and outgoing requests.
+ Represents the Talon.One logs, which contain all incoming and outgoing requests.
name: Logs
- description: |
Represents loyalty programs or concepts related to them.
-
- Loyalty programs can be _profile-based_ or _card-based_, depending on whether loyalty points are linked
- to [customer profiles](https://docs.talon.one/docs/product/applications/displaying-customer-profiles) or [loyalty cards](https://docs.talon.one/docs/product/loyalty-programs/card-based/card-based-overview).
-
- See [the Product docs](https://docs.talon.one/docs/product/loyalty-programs/overview) for more information.
+ Loyalty programs can be _profile-based_ or _card-based_, depending on whether loyalty points are linked to [customer profiles](https://docs.talon.one/docs/product/applications/displaying-customer-profiles) or [loyalty cards](https://docs.talon.one/docs/product/loyalty-programs/card-based/card-based-overview).
+ See [the docs](https://docs.talon.one/docs/product/loyalty-programs/overview) for more information.
name: Loyalty
- description: |
- Represents loyalty cards.
-
- [Loyalty cards](https://docs.talon.one/docs/product/loyalty-programs/card-based/card-based-overview) allow your customers to collect and spend loyalty points within a card-based loyalty program.
+ Represents loyalty cards, which allow your customers to collect and spend loyalty points within a card-based loyalty program.
+ See the [docs](https://docs.talon.one/docs/product/loyalty-programs/card-based/card-based-overview) for more information.
name: Loyalty cards
- description: |
- A referral is a code shared between a customer and a prospect.
+ Represents a referral code shared between a customer (advocate) and a prospect (friend).
A referral is defined by:
- an advocate: person who invited their friend via referral program.
@@ -149,6 +130,10 @@ tags:
See the [docs](https://docs.talon.one/docs/product/campaigns/referrals/referral-overview).
name: Referrals
+- description: |
+ Represents rewards. You can create a reward and manage its configuration to make it available for customers.
+ See the [docs](https://docs.talon.one/docs/product/rewards/overview) for more information.
+ name: Rewards
- description: |
Represents a set of permissions assigned to a user.
@@ -168,9 +153,9 @@ tags:
ruleset.
name: Value maps
- description: |
- A way to send information from Talon.One to the URI of your choice.
+ Represents webhooks, which send information from Talon.One to the URI of your choice.
- See the [docs](https://docs.talon.one/docs/dev/getting-started/webhooks).
+ See the [docs](https://docs.talon.one/docs/dev/getting-started/webhooks) for more information.
name: Webhooks
paths:
/v2/customer_sessions/{customerSessionId}:
@@ -189,6 +174,7 @@ paths:
You can see existing customer session integration IDs in the Campaign Manager's **Sessions** menu, or via the
[List Application session](https://docs.talon.one/management-api#tag/Customer-data/operation/getApplicationSessions) endpoint.
+ **Notes**: - There is no length limit for this ID. - It must be URL-encoded. For example, replace spaces with `%20`. [Learn more](https://www.w3schools.com/tags/ref_urlencode.asp).
in: path
name: customerSessionId
required: true
@@ -218,6 +204,15 @@ paths:
summary: Get customer session
tags:
- integration
+ x-mcp: true
+ x-mcp-hint-readonly: true
+ x-mcp-description: |
+ Retrieves the full details of a specific customer session by its integration ID, including cart items, applied effects, profile data, and session state.
+ Use this when the user wants to inspect what happened during a specific session — what coupons or referrals were used, what effects were triggered, and what the cart looked like.
+ Do not use this tool to list sessions; use list_application_sessions to search and browse sessions first; use get_application_session to retrieve a session by its internal numeric ID.
+ - applicationId is required; call get_applications first if it is unknown.
+ - customerSessionId is required; this is the integration ID set when the session was created, visible in the Campaign Manager's Sessions menu or via list_application_sessions.
+ - If a 400 error occurs, use the source field to identify the culprit parameter and explain the specific requirement to the user.
x-accepts: application/json
put:
description: |
@@ -286,6 +281,7 @@ paths:
You can see existing customer session integration IDs in the Campaign Manager's **Sessions** menu, or via the
[List Application session](https://docs.talon.one/management-api#tag/Customer-data/operation/getApplicationSessions) endpoint.
+ **Notes**: - There is no length limit for this ID. - It must be URL-encoded. For example, replace spaces with `%20`. [Learn more](https://www.w3schools.com/tags/ref_urlencode.asp).
in: path
name: customerSessionId
required: true
@@ -346,6 +342,7 @@ paths:
summary: Update customer session
tags:
- integration
+ x-idempotent: true
x-codegen-request-body-name: body
x-contentType: application/json
x-accepts: application/json
@@ -361,11 +358,6 @@ paths:
> For more information, see [our documentation on session
> states](https://docs.talon.one/docs/dev/concepts/entities/customer-sessions#customer-session-states)
> and [this tutorial](https://docs.talon.one/docs/dev/tutorials/partially-returning-a-session).
-
- > [!note] To make request processing idempotent for this endpoint, include the `Idempotency-Key` header with an idempotency key in requests. Also:
- > - Requests with the `Idempotency-Key` header are logged in the Talon.One access logs.
- > - Responses for idempotent requests are stored in the database and expire 24 hours after the request is sent.
- > - Idempotency keys are typically UUID keys and should not exceed 255 characters in length.
operationId: returnCartItems
parameters:
- description: |
@@ -421,6 +413,7 @@ paths:
summary: Return cart items
tags:
- integration
+ x-idempotent: true
x-codegen-request-body-name: body
x-contentType: application/json
x-accepts: application/json
@@ -506,6 +499,7 @@ paths:
summary: Reopen customer session
tags:
- integration
+ x-idempotent: true
x-accepts: application/json
/v2/customer_profiles/{integrationId}:
put:
@@ -520,6 +514,9 @@ paths:
> [!note] **Note**
> - Updating a customer profile returns a response with the requested integration state.
+ > - The [Has joined an audience](https://docs.talon.one/docs/product/rules/conditions/available-conditions#audience-conditions) and
+ > [Has left an audience](https://docs.talon.one/docs/product/rules/conditions/available-conditions#audience-conditions) conditions
+ > only trigger through this endpoint.
> - You can use the `responseContent` property to save yourself extra API calls. For example, you can get
> the customer profile details directly without extra requests.
> - We recommend sending requests sequentially.
@@ -533,6 +530,7 @@ paths:
- Stable for the customer. Do not use an ID that the customer can update themselves. For example, you can use a database ID.
Once set, you cannot update this identifier.
+ **Note**: It must be URL-encoded. For example, replace spaces with `%20`. [Learn more](https://www.w3schools.com/tags/ref_urlencode.asp).
in: path
name: integrationId
required: true
@@ -600,6 +598,7 @@ paths:
summary: Update customer profile
tags:
- integration
+ x-idempotent: true
x-codegen-request-body-name: body
x-contentType: application/json
x-accepts: application/json
@@ -645,6 +644,12 @@ paths:
schema:
$ref: '#/components/schemas/MultipleCustomerProfileIntegrationResponseV2'
description: OK
+ "204":
+ content:
+ application/json:
+ schema:
+ type: string
+ description: No content
"400":
content:
application/json:
@@ -662,6 +667,7 @@ paths:
summary: Update multiple customer profiles
tags:
- integration
+ x-idempotent: true
x-codegen-request-body-name: body
x-contentType: application/json
x-accepts: application/json
@@ -735,13 +741,17 @@ paths:
/v2/audiences/{audienceId}:
delete:
description: |
- Delete an audience created by a third-party integration.
+ Delete an audience.
> [!warning] This endpoint also removes any associations recorded between a
customer profile and this audience.
> [!note] Audiences can also be deleted via the Campaign Manager. See the
[docs](https://docs.talon.one/docs/product/audiences/managing-audiences#deleting-an-audience).
+
+ The audience isn't deleted if any experiment variant uses it.
+ The response identifies each blocking experiment by its Campaign
+ Manager path.
operationId: deleteAudienceV2
parameters:
- description: The ID of the audience.
@@ -773,6 +783,24 @@ paths:
schema:
$ref: '#/components/schemas/ErrorResponseWithStatus'
description: Not found
+ "409":
+ content:
+ application/json:
+ example:
+ message: Audience 'VIP customers' is used by the following experiments
+ and cannot be deleted.
+ errors:
+ - title: Experiment
+ details: Experiment 7 uses audience 10
+ source:
+ resource: /applications/42/experiments/7
+ StatusCode: 409
+ schema:
+ $ref: '#/components/schemas/ErrorResponseWithStatus'
+ description: |
+ Conflict. The audience is used by one or more experiments.
+ Each `errors[].source.resource` value contains the Campaign Manager path
+ of a blocking experiment.
security:
- api_key_v1: []
summary: Delete audience
@@ -1195,6 +1223,19 @@ paths:
schema:
format: date-time
type: string
+ - description: Filter results to campaigns linked to the specified store ID.
+ in: query
+ name: storeId
+ schema:
+ format: int64
+ type: integer
+ - description: Filter results to campaigns linked to the specified audience
+ ID.
+ in: query
+ name: audienceId
+ schema:
+ format: int64
+ type: integer
responses:
"200":
content:
@@ -1229,31 +1270,24 @@ paths:
/v2/events:
post:
description: |
- Triggers a custom event.
+ Trigger a [custom event](https://docs.talon.one/docs/dev/concepts/entities/events#custom-events).
To use this endpoint:
- 1. Define a [custom event](https://docs.talon.one/docs/dev/concepts/entities/events#creating-a-custom-event)
- in the Campaign Manager.
- 1. Update or create a rule to check for this event.
- 1. Trigger the event with this endpoint. After you have successfully sent an
- event to Talon.One, you can list the received events in the **Events** view
- in the Campaign Manager.
+ 1. [Create](https://docs.talon.one/docs/dev/concepts/entities/events#create-an-event) an event in the Campaign Manager.
+ 1. In a rule, add the **Check for event types** [condition](https://docs.talon.one/docs/dev/concepts/entities/events#use-an-event-in-a-rule) and select the event you created.
+ 1. Trigger the event with this endpoint.
- Talon.One also offers a set of [built-in
- events](https://docs.talon.one/docs/dev/concepts/entities/events). Ensure
- you do not create a custom event when you can use a built-in event.
+ You can [list](https://docs.talon.one/docs/product/applications/display-events#list-events) the received events in the **Events** view of the Campaign Manager.
- For example, use this endpoint to trigger an event when a customer shares a
- link to a product.
-
- See the [tutorial](https://docs.talon.one/docs/product/tutorials/referrals/incentivizing-product-link-sharing).
+ For example, you can use this endpoint to trigger an event when a customer shares a
+ link to a product. See our [tutorial](https://docs.talon.one/docs/product/tutorials/referrals/incentivizing-product-link-sharing).
> [!note] **Note**
> - `profileId` is required even though the schema does not specify it.
> - If the customer profile ID is new, a new profile is automatically created but the `customer_profile_created` [built-in event ](https://docs.talon.one/docs/dev/concepts/entities/events) is **not** triggered.
- > - We recommend sending requests sequentially. See [Managing parallel requests](https://docs.talon.one/docs/dev/getting-started/integration-tutorial#managing-parallel-requests).
- > - [Archived campaigns](https://docs.talon.one/docs/product/campaigns/managing-campaigns#archiving-a-campaign) are not considered in rule evaluation.
+ > - We recommend sending requests sequentially. See [Manage parallel requests](https://docs.talon.one/docs/dev/getting-started/integration-tutorial#manage-parallel-requests).
+ > - [Archived campaigns](https://docs.talon.one/docs/product/campaigns/managing-campaigns#archive-a-campaign) are not considered in rule evaluation.
operationId: trackEventV2
parameters:
- description: |
@@ -1292,6 +1326,12 @@ paths:
schema:
$ref: '#/components/schemas/IntegrationEventV2Response'
description: OK
+ "204":
+ content:
+ application/json:
+ schema:
+ type: string
+ description: No content
"400":
content:
application/json:
@@ -1310,12 +1350,13 @@ paths:
schema:
type: object
description: Too many requests or limit reached - Avoid parallel requests.
- See the [docs](https://docs.talon.one/docs/dev/tutorials/integrating-talon-one#managing-parallel-requests).
+ See the [docs](https://docs.talon.one/docs/dev/tutorials/integrating-talon-one#manage-parallel-requests).
security:
- api_key_v1: []
summary: Track event
tags:
- integration
+ x-idempotent: true
x-codegen-request-body-name: body
x-contentType: application/json
x-accepts: application/json
@@ -1621,10 +1662,12 @@ paths:
Return all customers that have this coupon marked as reserved. This includes hard and soft reservations.
operationId: getReservedCustomers
parameters:
- - description: "The code of the coupon.\n\n**Important:** The coupon code requires\
- \ [URL encoding](https://www.w3schools.com/tags//ref_urlencode.asp) \nif\
- \ it contains special characters.\nFor example, you must encode `SUMMER25%OFF`\
- \ as `SUMMER25%25OFF`.\n"
+ - description: |
+ The code of the coupon.
+
+ **Important:** The coupon code requires [URL encoding](https://www.w3schools.com/tags//ref_urlencode.asp)
+ if it contains special characters.
+ For example, you must encode `SUMMER25%OFF` as `SUMMER25%25OFF`.
in: path
name: couponValue
required: true
@@ -1660,6 +1703,15 @@ paths:
summary: List customers that have this coupon reserved
tags:
- integration
+ x-mcp: true
+ x-mcp-hint-readonly: true
+ x-mcp-description: |
+ Retrieves all customer profiles that have a specific coupon code marked as reserved, including both hard and soft reservations.
+ Use this when the user wants to know which customers have reserved a given coupon, or to audit reservation status before taking action on a coupon code.
+ Do not use this tool to check whether a coupon is valid or redeemable; use check_coupon_status for that purpose.
+ - applicationId is required; call get_applications first if it is unknown.
+ - couponValue is required; URL-encode the coupon code if it contains special characters (e.g., encode 'SUMMER25%OFF' as 'SUMMER25%25OFF').
+ - If a 404 error occurs, inform the user that no reservations were found for the given coupon code and suggest verifying the code value.
x-accepts: application/json
/v1/customer_profiles/{integrationId}/inventory:
get:
@@ -1710,6 +1762,12 @@ paths:
name: achievements
schema:
type: boolean
+ - description: Set to `true` to include `unlocked` rewards that have not been
+ `used` in the response.
+ in: query
+ name: unlockedRewards
+ schema:
+ type: boolean
responses:
"200":
content:
@@ -1734,6 +1792,16 @@ paths:
summary: List customer data
tags:
- integration
+ x-mcp: true
+ x-mcp-hint-readonly: true
+ x-mcp-description: |
+ Retrieves a comprehensive inventory of all entities associated with a customer profile by their integration ID, including profile data, referral codes, loyalty points, loyalty cards, reserved coupons, giveaways, and achievements.
+ Use this when the user wants a full picture of what a customer has — their loyalty balances, reserved or redeemed coupons, referral codes, and achievement progress — all in a single call identified by the customer's integration ID.
+ Do not use this tool to retrieve paginated transaction histories; use get_loyalty_balances or get_loyalty_ledger for detailed loyalty data, or get_customer_achievements for paginated achievement progress.
+ - applicationId is required; call get_applications first if it is unknown.
+ - integrationId is required; this is the external identifier set in your integration (not the internal numeric customer ID used by get_application_customer).
+ - All section flags (profile, referrals, coupons, loyalty, giveaways, achievements) default to false; set the relevant ones to true to include those sections in the response — omitting all flags returns a minimal response.
+ - If a 404 error occurs, inform the user the customer profile was not found and suggest verifying the integration ID with list_application_customers.
x-accepts: application/json
/v1/customer_profiles/{integrationId}/achievements:
get:
@@ -1851,6 +1919,17 @@ paths:
summary: List customer's available achievements
tags:
- integration
+ x-mcp: true
+ x-mcp-hint-readonly: true
+ x-mcp-description: |
+ Retrieves all achievements available to a specific customer profile and their current progress in each, with optional filtering by campaign, achievement ID, achievement status, or customer progress status.
+ Use this when the user wants to see which achievements a customer is working toward, what their progress is, or which ones they have completed.
+ Do not use this tool to retrieve the configuration of an achievement (rules, targets, periods); use get_achievement for that purpose; use get_customer_achievement_history for the detailed history of a specific achievement.
+ - applicationId is required; call get_applications first if it is unknown.
+ - integrationId is required; this is the external integration identifier for the customer, not the internal numeric ID.
+ - If no campaign or achievement filters are provided, data for all active achievements in the application is returned.
+ - Comma-separated filter parameters (campaignIds, achievementIds, achievementStatus, currentProgressStatus) accept multiple values separated by commas (e.g., '11,20').
+ - If a 404 error occurs, inform the user the customer profile was not found and suggest verifying the integration ID.
x-accepts: application/json
/v1/customer_profiles/{integrationId}/achievements/{achievementId}:
get:
@@ -1951,6 +2030,17 @@ paths:
summary: List customer's achievement history
tags:
- integration
+ x-mcp: true
+ x-mcp-hint-readonly: true
+ x-mcp-description: |
+ Retrieves the full progress history of a specific customer in a specific achievement, including all progress periods with their status, start dates, completion dates, and expiry dates.
+ Use this when the user wants to audit a customer's full history within one achievement — for example to see how many times they completed it, whether any attempts expired, or what their progress looked like over time.
+ Do not use this tool to list all achievements available to a customer; use get_customer_achievements for an overview of all achievement progress; use get_achievement for the achievement configuration itself.
+ - applicationId is required; call get_applications first if it is unknown.
+ - Both integrationId and achievementId are required; call get_customer_achievements to find achievement IDs if unknown.
+ - progressStatus accepts comma-separated values (e.g., 'inprogress,completed') to filter by multiple statuses at once.
+ - Convert any relative date phrases into RFC3339 strings (e.g., '2024-01-01T00:00:00Z') before calling.
+ - If a 404 error occurs, inform the user the customer profile or achievement was not found and suggest verifying both IDs.
x-accepts: application/json
/v1/loyalty_programs/{loyaltyProgramId}/cards/{loyaltyCardId}/balances:
get:
@@ -2037,6 +2127,17 @@ paths:
summary: Get card's point balances
tags:
- integration
+ x-mcp: true
+ x-mcp-hint-readonly: true
+ x-mcp-description: |
+ Retrieves point balances for a specific loyalty card within a card-based loyalty program, including active, pending, and expired totals, with optional date and subledger filtering.
+ Use this when the user wants to check the current balance on a loyalty card, verify its point totals by subledger, or inspect balances up to a specific date.
+ Do not use this tool for profile-based loyalty programs; use get_loyalty_balances for profile-based balance lookups; use get_loyalty_card_points for paginated individual point entries on a card.
+ - Both loyaltyProgramId and loyaltyCardId are required; call list_loyalty_programs first if the program ID is unknown.
+ - This endpoint is card-based only; it does not apply to profile-based loyalty programs.
+ - If no filters are applied, all current balances for the given loyalty card are returned.
+ - Convert any relative date phrases into RFC3339 strings (e.g., '2024-01-01T00:00:00Z') before calling.
+ - If a 400 error occurs, use the source field to identify the culprit parameter and explain the specific requirement to the user.
x-accepts: application/json
/v1/loyalty_programs/{loyaltyProgramId}/profile/{integrationId}/balances:
get:
@@ -2147,6 +2248,17 @@ paths:
summary: Get customer's loyalty balances
tags:
- integration
+ x-mcp: true
+ x-mcp-hint-readonly: true
+ x-mcp-description: |
+ Retrieves loyalty ledger balances for a specific customer profile within a loyalty program, including active, pending, and expired point totals, with optional tier and subledger filtering.
+ Use this when the user wants to check how many points a customer has, verify their tier status, or inspect balances up to a specific date.
+ Do not use this tool to retrieve the full transaction history for a profile; use get_loyalty_profile_transactions for the ledger log.
+ - Both loyaltyProgramId and integrationId are required; call list_loyalty_programs first if the program ID is unknown.
+ - This endpoint is profile-based only; it does not apply to card-based loyalty programs.
+ - If no filters are applied, all current balances for the integration ID are returned.
+ - Convert any relative date phrases into RFC3339 strings (e.g., '2024-01-01T00:00:00Z') before calling.
+ - If a 400 error occurs, use the source field to identify the culprit parameter and explain the specific requirement to the user.
x-accepts: application/json
/v1/loyalty_programs/{loyaltyProgramId}/profile/{integrationId}/ledger_balances:
get:
@@ -2157,8 +2269,10 @@ paths:
You can filter balances by date and subledger ID, and include tier-related
information in the response.
- > [!note] If no filtering options are applied, you retrieve all loyalty
- > balances on the current date for the given integration ID.
+ > [!note] **Note**
+ > - For most use cases, especially real-time integrations, use the Integration API endpoint:
+ [Get customer's loyalty balances](https://docs.talon.one/integration-api#tag/Loyalty/operation/getLoyaltyBalances).
+ > - If no filtering options are applied, you retrieve all loyalty balances on the current date for the given integration ID.
Loyalty balances are calculated when Talon.One receives your request using
the points stored in our database, so retrieving a large number of balances
@@ -2257,7 +2371,7 @@ paths:
schema:
$ref: '#/components/schemas/ErrorResponseWithStatus'
description: Not found
- summary: Get customer's loyalty balances
+ summary: Get customer's loyalty balances (Management API)
tags:
- management
x-accepts: application/json
@@ -2426,6 +2540,18 @@ paths:
summary: List card's transactions
tags:
- integration
+ x-mcp: true
+ x-mcp-hint-readonly: true
+ x-mcp-description: |
+ Retrieves a paginated, chronological log of loyalty transactions for a specific loyalty card within a card-based loyalty program, with optional filtering by transaction type, date range, or activation status.
+ Use this when the user wants a complete audit trail of point movements for a card — earned, redeemed, expired, and manually adjusted entries — rather than a snapshot of current balances.
+ Do not use this tool to view aggregate point balances; use get_loyalty_card_balances for summarized totals; use get_loyalty_card_points for a list of individual unused point entries on a card.
+ - Both loyaltyProgramId and loyaltyCardId are required; call list_loyalty_programs first if the program ID is unknown.
+ - This endpoint is card-based only; it does not apply to profile-based loyalty programs.
+ - If no filters are applied, the last 50 transactions for the given loyalty card are returned.
+ - Array-valued parameters (subledgerId, customerSessionIDs, transactionUUIDs) are not supported in this tool; use the management API directly if multi-value filtering is required.
+ - Convert any relative date phrases into RFC3339 strings (e.g., '2024-01-01T00:00:00Z') before calling.
+ - If a 400 error occurs, use the source field to identify the culprit parameter and explain the specific requirement to the user.
x-accepts: application/json
/v1/loyalty_programs/{loyaltyProgramId}/profile/{integrationId}/transactions:
get:
@@ -2491,11 +2617,21 @@ paths:
type: string
type: array
style: form
- - description: The ID of the subledger by which we filter the data.
+ - description: |
+ Filter the results by a list of subledger IDs.
+
+ To include multiple IDs, repeat the parameter for each one, for example,
+ `?subledgerId=id1&subledgerId=id2`.
+
+ The response contains only data associated with the specified subledgers.
+ explode: true
in: query
name: subledgerId
schema:
- type: string
+ items:
+ type: string
+ type: array
+ style: form
- description: |
Filter results by loyalty transaction type:
- `manual`: Loyalty transaction that was done manually.
@@ -2589,6 +2725,17 @@ paths:
summary: List customer's loyalty transactions
tags:
- integration
+ x-mcp: true
+ x-mcp-hint-readonly: true
+ x-mcp-description: |
+ Retrieves paginated loyalty transaction logs for a specific customer profile within a profile-based loyalty program, with filtering by date range, transaction type, subledger, and activation status.
+ Use this when the user wants to audit the full transaction history for a customer — for example to trace when points were earned, spent, or expired, or to filter by a specific session or date window.
+ Do not use this tool to view aggregate balances; use get_loyalty_balances for summarized point totals, or list_loyalty_program_transactions to audit transactions across all profiles in a program.
+ - Both loyaltyProgramId and integrationId are required; call list_loyalty_programs first if the program ID is unknown.
+ - This endpoint is profile-based only; it does not apply to card-based loyalty programs.
+ - If no filters are applied, the last 50 transactions for the integration ID are returned.
+ - Convert any relative date phrases into RFC3339 strings (e.g., '2024-01-01T00:00:00Z') before calling.
+ - If a 400 error occurs, use the source field to identify the culprit parameter and explain the specific requirement to the user.
x-accepts: application/json
/v1/loyalty_programs/{loyaltyProgramId}/profile/{integrationId}/ledger_transactions:
get:
@@ -2599,9 +2746,11 @@ paths:
You can filter transactions by date or by ledger (subledger or main ledger). If no filters are applied, the last 50
loyalty transactions for the given integration ID are returned.
- > [!note] To retrieve all loyalty program transaction logs in a given
- > loyalty program, use the [List loyalty program transactions](https://docs.talon.one/management-api#tag/Loyalty/operation/getLoyaltyProgramTransactions)
- > endpoint.
+ > [!note] **Note**
+ > - For most use cases, especially real-time integrations, use the Integration API endpoint:
+ > [List customer's loyalty transactions](https://docs.talon.one/integration-api#tag/Loyalty/operation/getLoyaltyProgramProfileTransactions).
+ > - To retrieve all loyalty program transaction logs in a given loyalty program, use the
+ > [List loyalty program transactions](https://docs.talon.one/management-api#tag/Loyalty/operation/getLoyaltyProgramTransactions) endpoint.
operationId: getLoyaltyProgramProfileLedgerTransactions
parameters:
- description: |
@@ -2748,7 +2897,7 @@ paths:
schema:
$ref: '#/components/schemas/ErrorResponseWithStatus'
description: Not found
- summary: List customer's loyalty transactions
+ summary: List customer's loyalty transactions (Management API)
tags:
- management
x-accepts: application/json
@@ -2816,166 +2965,21 @@ paths:
x-codegen-request-body-name: body
x-contentType: application/json
x-accepts: application/json
- /v1/loyalty_programs/{loyaltyProgramId}/cards/{loyaltyCardId}/points:
- get:
+ /v1/loyalty_programs/{loyaltyProgramId}/profile/{integrationId}/join:
+ post:
description: |
- Get paginated results of loyalty points for a given loyalty card identifier in a card-based loyalty program. This endpoint returns only the balances of unused points on a loyalty card.
-
- You can filter points by status:
- - `active`: Points ready to be redeemed.
- - `pending`: Points with a start date in the future.
- - `expired`: Points with an expiration date in the past.
- operationId: getLoyaltyCardPoints
- parameters:
- - description: |
- Identifier of the card-based loyalty program containing the loyalty card. You can get the ID with
- the [List loyalty programs](https://docs.talon.one/management-api#tag/Loyalty/operation/getLoyaltyPrograms) endpoint.
- in: path
- name: loyaltyProgramId
- required: true
- schema:
- format: int64
- type: integer
- - description: |
- Identifier of the loyalty card. You can get the identifier with
- the [List loyalty
- cards](https://docs.talon.one/management-api#tag/Loyalty-cards/operation/getLoyaltyCards)
- endpoint.
-
- **Important**: The loyalty card ID requires [URL
- encoding](https://www.w3schools.com/tags//ref_urlencode.asp) if it
- contains special characters. For example, you must encode `NewCard2026%`
- as `NewCard2026%25`.
- in: path
- name: loyaltyCardId
- required: true
- schema:
- maxLength: 108
- minLength: 4
- type: string
- - description: Filter points based on their status.
- in: query
- name: status
- schema:
- default: active
- enum:
- - active
- - pending
- - expired
- type: string
- - description: Filter results by one or more subledger IDs. Must be exact match.
- explode: true
- in: query
- name: subledgerId
- schema:
- items:
- type: string
- type: array
- style: form
- - description: |
- Filter the results by a list of customer session IDs.
-
- To include multiple IDs, repeat the parameter for each one, for example,
- `?customerSessionIDs=id1&customerSessionIDs=id2`.
-
- The response contains only data associated with the specified sessions.
- explode: true
- in: query
- name: customerSessionIDs
- schema:
- items:
- type: string
- type: array
- style: form
- - description: |
- Filter the results by a list of transaction UUIDs.
-
- To include multiple IDs, repeat the parameter for each one, for example,
- `?transactionUUIDs=uuid1&transactionUUIDs=uuid2`.
-
- The response contains only data associated with the specified transactions.
- explode: true
- in: query
- name: transactionUUIDs
- schema:
- items:
- type: string
- type: array
- style: form
- - description: The number of items in the response.
- in: query
- name: pageSize
- schema:
- default: 50
- format: int64
- maximum: 1000
- minimum: 1
- type: integer
- - description: The number of items to skip when paging through large result
- sets.
- in: query
- name: skip
- schema:
- format: int64
- type: integer
- - description: |
- The field by which results should be sorted. You can enter one of the following values:
+ Join a customer profile to the specified loyalty program.
- - `startDate`: Sorts the results by the start date of the points.
- - `expiryDate`: Sorts the results by the expiry date of the points.
+ If the customer profile does not exist, it will be created first using the
+ provided `integrationId`, then joined to the loyalty program.
- By default, results are sorted in ascending order.
- To sort them in descending order, prefix the field name with `-`.
-
- **Note:** You can only sort by one field at a time.
- in: query
- name: sort
- schema:
- enum:
- - startDate
- - expiryDate
- type: string
- responses:
- "200":
- content:
- application/json:
- schema:
- $ref: '#/components/schemas/inline_response_200_6'
- description: OK
- "400":
- content:
- application/json:
- schema:
- $ref: '#/components/schemas/ErrorResponseWithStatus'
- description: Bad request
- "401":
- content:
- application/json:
- schema:
- $ref: '#/components/schemas/ErrorResponseWithStatus'
- description: Unauthorized
- "404":
- content:
- application/json:
- schema:
- $ref: '#/components/schemas/ErrorResponseWithStatus'
- description: Not found
- security:
- - api_key_v1: []
- summary: List card's unused loyalty points
- tags:
- - integration
- x-accepts: application/json
- /v1/loyalty_programs/{loyaltyProgramId}/profile/{integrationId}/points:
- get:
- description: |
- Get paginated results of loyalty points for a given Integration ID in the specified profile-based loyalty program. This endpoint returns only the balances of unused points linked to a customer profile.
+ > [!note] This endpoint only works with profile-based loyalty programs.
- You can filter points by status:
- - `active`: Points ready to be redeemed.
- - `pending`: Points with a start date in the future.
- - `expired`: Points with an expiration date in the past.
- operationId: getLoyaltyProgramProfilePoints
+ **Behavior**:
+ - If the loyalty program does not exist, the request fails.
+ - If the customer profile is already joined to the loyalty program, the request fails.
+ - If the customer profile does not exist, it is created and then joined to the loyalty program.
+ operationId: joinLoyaltyProgram
parameters:
- description: |
Identifier of the profile-based loyalty program. You can get the ID with
@@ -2987,89 +2991,328 @@ paths:
format: int64
type: integer
- description: |
- The integration identifier for this customer profile. Must be:
- - Unique within the deployment.
- - Stable for the customer. Do not use an ID that the customer can update themselves. For example, you can use a database ID.
-
- Once set, you cannot update this identifier.
+ The integration ID of the customer profile. You can get the `integrationId` of a profile using:
+ - A customer session integration ID with the [Update customer session](https://docs.talon.one/integration-api#tag/Customer-sessions/operation/updateCustomerSessionV2) endpoint.
+ - The Management API with the [List application's customers](https://docs.talon.one/management-api#tag/Customer-data/operation/getApplicationCustomers) endpoint.
in: path
name: integrationId
required: true
schema:
type: string
- - description: Filter points based on their status.
- in: query
- name: status
- schema:
- default: active
- enum:
- - active
- - pending
- - expired
- type: string
- - description: The ID of the subledger by which we filter the data.
- in: query
- name: subledgerId
- schema:
- type: string
- - description: "Filter the results by a list of customer session IDs. \n\nTo\
- \ include multiple IDs, repeat the parameter for each one, for example,\
- \ \n`?customerSessionIDs=id1&customerSessionIDs=id2`.\n\nThe response contains\
- \ only data associated with the specified sessions.\n"
- explode: true
- in: query
- name: customerSessionIDs
- schema:
- items:
- type: string
- type: array
- style: form
- - description: "Filter the results by a list of transaction UUIDs.\n\nTo include\
- \ multiple IDs, repeat the parameter for each one, for example, \n`?transactionUUIDs=uuid1&transactionUUIDs=uuid2`.\n\
- \nThe response contains only data associated with the specified transactions.\n"
- explode: true
- in: query
- name: transactionUUIDs
- schema:
- items:
- type: string
- type: array
- style: form
- - description: The number of items in the response.
- in: query
- name: pageSize
- schema:
- default: 50
- format: int64
- maximum: 1000
- minimum: 1
- type: integer
- - description: The number of items to skip when paging through large result
- sets.
- in: query
- name: skip
- schema:
- format: int64
- type: integer
- - description: "The field by which results should be sorted. You can enter one\
- \ of the following values:\n\n- `startDate`: Sorts the results by the start\
- \ date of the points.\n- `expiryDate`: Sorts the results by the expiry date\
- \ of the points.\n\nBy default, results are sorted in ascending order. \n\
- To sort them in descending order, prefix the field name with `-`.\n\n**Note:**\
- \ You can only sort by one field at a time.\n"
- in: query
- name: sort
- schema:
- enum:
- - startDate
- - expiryDate
- type: string
responses:
"200":
- content:
- application/json:
- schema:
- $ref: '#/components/schemas/inline_response_200_7'
+ content: {}
+ description: OK
+ "400":
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/ErrorResponseWithStatus'
+ description: Bad request
+ "401":
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/ErrorResponseWithStatus'
+ description: Unauthorized
+ "404":
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/ErrorResponseWithStatus'
+ description: Not found
+ security:
+ - api_key_v1: []
+ summary: Join customer profile to loyalty program
+ tags:
+ - integration
+ x-accepts: application/json
+ /v1/loyalty_programs/{loyaltyProgramId}/cards/{loyaltyCardId}/points:
+ get:
+ description: |
+ Get paginated results of loyalty points for a given loyalty card identifier in a card-based loyalty program. This endpoint returns only the balances of unused points on a loyalty card.
+
+ You can filter points by status:
+ - `active`: Points ready to be redeemed.
+ - `pending`: Points with a start date in the future.
+ - `expired`: Points with an expiration date in the past.
+ operationId: getLoyaltyCardPoints
+ parameters:
+ - description: |
+ Identifier of the card-based loyalty program containing the loyalty card. You can get the ID with
+ the [List loyalty programs](https://docs.talon.one/management-api#tag/Loyalty/operation/getLoyaltyPrograms) endpoint.
+ in: path
+ name: loyaltyProgramId
+ required: true
+ schema:
+ format: int64
+ type: integer
+ - description: |
+ Identifier of the loyalty card. You can get the identifier with
+ the [List loyalty
+ cards](https://docs.talon.one/management-api#tag/Loyalty-cards/operation/getLoyaltyCards)
+ endpoint.
+
+ **Important**: The loyalty card ID requires [URL
+ encoding](https://www.w3schools.com/tags//ref_urlencode.asp) if it
+ contains special characters. For example, you must encode `NewCard2026%`
+ as `NewCard2026%25`.
+ in: path
+ name: loyaltyCardId
+ required: true
+ schema:
+ maxLength: 108
+ minLength: 4
+ type: string
+ - description: Filter points based on their status.
+ in: query
+ name: status
+ schema:
+ default: active
+ enum:
+ - active
+ - pending
+ - expired
+ type: string
+ - description: Filter results by one or more subledger IDs. Must be exact match.
+ explode: true
+ in: query
+ name: subledgerId
+ schema:
+ items:
+ type: string
+ type: array
+ style: form
+ - description: |
+ Filter the results by a list of customer session IDs.
+
+ To include multiple IDs, repeat the parameter for each one, for example,
+ `?customerSessionIDs=id1&customerSessionIDs=id2`.
+
+ The response contains only data associated with the specified sessions.
+ explode: true
+ in: query
+ name: customerSessionIDs
+ schema:
+ items:
+ type: string
+ type: array
+ style: form
+ - description: |
+ Filter the results by a list of transaction UUIDs.
+
+ To include multiple IDs, repeat the parameter for each one, for example,
+ `?transactionUUIDs=uuid1&transactionUUIDs=uuid2`.
+
+ The response contains only data associated with the specified transactions.
+ explode: true
+ in: query
+ name: transactionUUIDs
+ schema:
+ items:
+ type: string
+ type: array
+ style: form
+ - description: The number of items in the response.
+ in: query
+ name: pageSize
+ schema:
+ default: 50
+ format: int64
+ maximum: 1000
+ minimum: 1
+ type: integer
+ - description: The number of items to skip when paging through large result
+ sets.
+ in: query
+ name: skip
+ schema:
+ format: int64
+ type: integer
+ - description: |
+ The field by which results should be sorted. You can enter one of the following values:
+
+ - `startDate`: Sorts the results by the start date of the points.
+ - `expiryDate`: Sorts the results by the expiry date of the points.
+
+ By default, results are sorted in ascending order.
+ To sort them in descending order, prefix the field name with `-`.
+
+ **Note:** You can only sort by one field at a time.
+ in: query
+ name: sort
+ schema:
+ enum:
+ - startDate
+ - expiryDate
+ type: string
+ responses:
+ "200":
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/inline_response_200_6'
+ description: OK
+ "400":
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/ErrorResponseWithStatus'
+ description: Bad request
+ "401":
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/ErrorResponseWithStatus'
+ description: Unauthorized
+ "404":
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/ErrorResponseWithStatus'
+ description: Not found
+ security:
+ - api_key_v1: []
+ summary: List card's unused loyalty points
+ tags:
+ - integration
+ x-mcp: true
+ x-mcp-hint-readonly: true
+ x-mcp-description: |
+ Retrieves a paginated list of unused loyalty point entries for a specific loyalty card within a card-based loyalty program, with optional filtering by status, subledger, or sorting by date.
+ Use this when the user wants to inspect individual point entries on a card — for example, to see which points are active, pending, or expired — rather than viewing aggregate totals.
+ Do not use this tool to retrieve aggregate point balances; use get_loyalty_card_balances for summarized balance totals; use get_loyalty_card_transactions for a chronological transaction history on a card.
+ - Both loyaltyProgramId and loyaltyCardId are required; call list_loyalty_programs first if the program ID is unknown.
+ - This endpoint is card-based only; it does not apply to profile-based loyalty programs.
+ - Array-valued parameters (subledgerId, customerSessionIDs, transactionUUIDs) are not supported in this tool; use the management API directly if multi-value filtering is required.
+ - Convert any relative date phrases into RFC3339 strings before calling.
+ - If a 400 error occurs, use the source field to identify the culprit parameter and explain the specific requirement to the user.
+ x-accepts: application/json
+ /v1/loyalty_programs/{loyaltyProgramId}/profile/{integrationId}/points:
+ get:
+ description: |
+ Get paginated results of loyalty points for a given Integration ID in the specified profile-based loyalty program. This endpoint returns only the balances of unused points linked to a customer profile.
+
+ You can filter points by status:
+ - `active`: Points ready to be redeemed.
+ - `pending`: Points with a start date in the future.
+ - `expired`: Points with an expiration date in the past.
+ operationId: getLoyaltyProgramProfilePoints
+ parameters:
+ - description: |
+ Identifier of the profile-based loyalty program. You can get the ID with
+ the [List loyalty programs](https://docs.talon.one/management-api#tag/Loyalty/operation/getLoyaltyPrograms) endpoint.
+ in: path
+ name: loyaltyProgramId
+ required: true
+ schema:
+ format: int64
+ type: integer
+ - description: |
+ The integration identifier for this customer profile. Must be:
+ - Unique within the deployment.
+ - Stable for the customer. Do not use an ID that the customer can update themselves. For example, you can use a database ID.
+
+ Once set, you cannot update this identifier.
+ in: path
+ name: integrationId
+ required: true
+ schema:
+ type: string
+ - description: Filter points based on their status.
+ in: query
+ name: status
+ schema:
+ default: active
+ enum:
+ - active
+ - pending
+ - expired
+ type: string
+ - description: |
+ Filter the results by a list of subledger IDs.
+
+ To include multiple IDs, repeat the parameter for each one, for example,
+ `?subledgerId=id1&subledgerId=id2`.
+
+ The response contains only data associated with the specified subledgers.
+ explode: true
+ in: query
+ name: subledgerId
+ schema:
+ items:
+ type: string
+ type: array
+ style: form
+ - description: |
+ Filter the results by a list of customer session IDs.
+
+ To include multiple IDs, repeat the parameter for each one, for example,
+ `?customerSessionIDs=id1&customerSessionIDs=id2`.
+
+ The response contains only data associated with the specified sessions.
+ explode: true
+ in: query
+ name: customerSessionIDs
+ schema:
+ items:
+ type: string
+ type: array
+ style: form
+ - description: |
+ Filter the results by a list of transaction UUIDs.
+
+ To include multiple IDs, repeat the parameter for each one, for example,
+ `?transactionUUIDs=uuid1&transactionUUIDs=uuid2`.
+
+ The response contains only data associated with the specified transactions.
+ explode: true
+ in: query
+ name: transactionUUIDs
+ schema:
+ items:
+ type: string
+ type: array
+ style: form
+ - description: The number of items in the response.
+ in: query
+ name: pageSize
+ schema:
+ default: 50
+ format: int64
+ maximum: 1000
+ minimum: 1
+ type: integer
+ - description: The number of items to skip when paging through large result
+ sets.
+ in: query
+ name: skip
+ schema:
+ format: int64
+ type: integer
+ - description: |
+ The field by which results should be sorted. You can enter one of the following values:
+
+ - `startDate`: Sorts the results by the start date of the points.
+ - `expiryDate`: Sorts the results by the expiry date of the points.
+
+ By default, results are sorted in ascending order.
+ To sort them in descending order, prefix the field name with `-`.
+
+ **Note:** You can only sort by one field at a time.
+ in: query
+ name: sort
+ schema:
+ enum:
+ - startDate
+ - expiryDate
+ type: string
+ responses:
+ "200":
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/inline_response_200_7'
description: OK
"400":
content:
@@ -3094,6 +3337,15 @@ paths:
summary: List customer's unused loyalty points
tags:
- integration
+ x-mcp: true
+ x-mcp-hint-readonly: true
+ x-mcp-description: |
+ Retrieves paginated unused loyalty point entries for a specific customer profile within a profile-based loyalty program, filterable by point status, subledger, and sort order.
+ Use this when the user wants to inspect individual point records for a customer — for example to see which points are active, which are pending, or which have expired.
+ Do not use this tool to retrieve aggregate balance totals; use get_loyalty_balances for summarized point counts.
+ - Both loyaltyProgramId and integrationId are required; call list_loyalty_programs first if the program ID is unknown.
+ - This endpoint is profile-based only; it does not apply to card-based loyalty programs.
+ - If a 400 error occurs, use the source field to identify the culprit parameter and explain the specific requirement to the user.
x-accepts: application/json
/v1/applications:
get:
@@ -3134,6 +3386,15 @@ paths:
summary: List Applications
tags:
- management
+ x-mcp: true
+ x-mcp-hint-readonly: true
+ x-mcp-description: |
+ Retrieves all applications configured in the current account, including their names, IDs, timezone, and currency settings.
+ Use this as the first step in any workflow that requires an applicationId, or when the user asks to see, find, or browse their applications.
+ Do not use this tool to create, update, or delete applications; it is a read-only listing endpoint.
+ - If the user refers to an application by name, call this tool first to resolve the correct applicationId before proceeding.
+ - Use pageSize and skip to paginate through large account portfolios; default ordering is by creation date.
+ - If a 400 error occurs, use the source field to identify the culprit parameter and explain the specific requirement to the user.
x-accepts: application/json
/v1/applications/{applicationId}:
get:
@@ -3158,6 +3419,14 @@ paths:
summary: Get Application
tags:
- management
+ x-mcp: true
+ x-mcp-hint-readonly: true
+ x-mcp-description: |
+ Retrieves a single application by its unique numeric ID, returning its full configuration including name, timezone, currency, and feature settings.
+ Use this when you already have an applicationId and need the complete details of that specific application.
+ Do not use this tool to browse or search applications; use get_applications for discovery and to resolve names to IDs.
+ - If the user refers to an application by name, call get_applications first to resolve the correct applicationId, then call this tool.
+ - If a 400 error occurs, use the source field to identify the culprit parameter and explain the specific requirement to the user.
x-accepts: application/json
/v1/applications/{applicationId}/campaigns:
get:
@@ -3224,11 +3493,15 @@ paths:
schema:
type: string
- description: |
- Filter results performing case-insensitive matching against the tags of the campaign. When used in conjunction with the "name" query parameter, a logical OR will be performed to search both tags and name for the provided values
+ Filter results performing case-insensitive matching against the tags of the campaign.
+ explode: true
in: query
name: tags
schema:
- type: string
+ items:
+ type: string
+ type: array
+ style: form
- description: Filter results comparing the parameter value, expected to be
an RFC3339 timestamp string, to the campaign creation timestamp. You can
use any time zone setting. Talon.One will convert to UTC internally.
@@ -3312,6 +3585,17 @@ paths:
summary: List campaigns
tags:
- management
+ x-mcp: true
+ x-mcp-hint-readonly: true
+ x-mcp-description: |
+ Retrieves all campaigns for an application including status, schedules, and budget counters.
+ Use this to check live eligibility for customers or to audit campaign configurations.
+ Do not use this tool for creating campaigns or pulling deep analytics.
+ - Provide applicationId first; if missing, use the search tool to find it.
+ - Use running for live campaigns and disabled for paused ones.
+ - Combining name and tags triggers a logical OR search.
+ - Convert all relative dates to RFC3339 format before calling.
+ - If a 400 error occurs, use the source field to identify the culprit and explain the specific requirement to the user.
x-accepts: application/json
/v1/applications/{applicationId}/campaigns/{campaignId}:
delete:
@@ -3372,6 +3656,15 @@ paths:
summary: Get campaign
tags:
- management
+ x-mcp: true
+ x-mcp-hint-readonly: true
+ x-mcp-description: |
+ Retrieves the full configuration of a single campaign by its ID, including its name, state, schedule, budget counters, tags, and ruleset references.
+ Use this when you already have a campaignId and need the complete details of that specific campaign.
+ Do not use this tool to browse or search campaigns; use list_campaigns for discovery and to resolve campaign names to IDs.
+ - If the applicationId is unknown, call get_applications first to resolve the correct ID.
+ - If the campaignId is unknown, call list_campaigns first to resolve the correct ID.
+ - If a 400 error occurs, use the source field to identify the culprit parameter and explain the specific requirement to the user.
x-accepts: application/json
put:
description: |
@@ -3595,6 +3888,15 @@ paths:
summary: List campaign rulesets
tags:
- management
+ x-mcp: true
+ x-mcp-hint-readonly: true
+ x-mcp-description: |
+ Retrieves all rulesets for a specific campaign — each ruleset is a revision of the campaign's rules, including deleted rules across all revisions.
+ Use this when the user wants to inspect the rule history of a campaign, audit past configurations, or retrieve a ruleset ID for use with get_ruleset.
+ Do not use this tool to view the current active rules in detail; use get_ruleset with the latest revision for that purpose.
+ - Both applicationId and campaignId are required; call get_applications first if the application ID is unknown, then list_campaigns to find the campaign ID.
+ - The response includes deleted rules — consider only the latest revision for the current active configuration.
+ - If a 400 error occurs, use the source field to identify the culprit parameter and explain the specific requirement to the user.
x-accepts: application/json
/v1/applications/{applicationId}/campaigns/{campaignId}/rulesets/{rulesetId}:
get:
@@ -3634,6 +3936,113 @@ paths:
summary: Get ruleset
tags:
- management
+ x-mcp: true
+ x-mcp-hint-readonly: true
+ x-mcp-description: |
+ Retrieves a specific ruleset revision for a campaign, including the full rule definitions, conditions, and effects configured at that point in time.
+ Use this when the user wants to inspect the exact rules of a specific ruleset revision; call list_rulesets first to discover available rulesetIds and identify the latest revision.
+ Do not use this tool to list all rulesets or browse history; use list_rulesets to enumerate revisions and find the IDs you need.
+ - applicationId, campaignId, and rulesetId are all required; call get_applications and list_campaigns first if the IDs are unknown, then list_rulesets to get the rulesetId.
+ - If a 400 error occurs, use the source field to identify the culprit parameter and explain the specific requirement to the user.
+ x-accepts: application/json
+ /v2/applications/{applicationId}/campaigns/{campaignId}/rulesets:
+ post:
+ description: |-
+ Create a ruleset from promotion and strikethrough rules in the V2 JSON block format. A ruleset is a revision of all the rules of a campaign.
+
+ Only `group` and `passthrough` blocks are currently writable, with optional `onFailure` blocks. A payload containing any other block type is rejected. Each rule's `blocks` array may contain at most one block.
+ operationId: createRulesetV2
+ parameters:
+ - description: The ID of the Application. It is displayed in your Talon.One
+ deployment URL.
+ in: path
+ name: applicationId
+ required: true
+ schema:
+ format: int64
+ type: integer
+ - description: The ID of the campaign. It is displayed in your Talon.One deployment
+ URL.
+ in: path
+ name: campaignId
+ required: true
+ schema:
+ format: int64
+ type: integer
+ requestBody:
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/RulesetV2'
+ description: body
+ required: true
+ responses:
+ "201":
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/RulesetV2'
+ description: Created
+ "400":
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/ErrorResponseWithStatus'
+ description: Bad request
+ summary: Create ruleset (V2)
+ tags:
+ - management
+ x-scalar-stability: experimental
+ x-codegen-request-body-name: body
+ x-contentType: application/json
+ x-accepts: application/json
+ /v2/applications/{applicationId}/campaigns/{campaignId}/rulesets/{rulesetId}:
+ get:
+ description: Retrieve the specified ruleset as a JSON object.
+ operationId: getRulesetV2
+ parameters:
+ - description: The ID of the Application. It is displayed in your Talon.One
+ deployment URL.
+ in: path
+ name: applicationId
+ required: true
+ schema:
+ format: int64
+ type: integer
+ - description: The ID of the campaign. It is displayed in your Talon.One deployment
+ URL.
+ in: path
+ name: campaignId
+ required: true
+ schema:
+ format: int64
+ type: integer
+ - description: The ID of the ruleset.
+ in: path
+ name: rulesetId
+ required: true
+ schema:
+ format: int64
+ type: integer
+ responses:
+ "200":
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/RulesetV2'
+ description: OK
+ summary: Get ruleset (V2)
+ tags:
+ - management
+ x-mcp: true
+ x-mcp-description: |
+ Retrieves a single ruleset revision for a campaign as a structured JSON object, decomposing each rule into explicit conditions and effects instead of the raw Talang expressions returned by get_ruleset.
+ Use this when the Talang output of get_ruleset or list_rulesets is unclear or hard to interpret, and you need a precise, machine-readable breakdown of a specific ruleset's rules; call list_rulesets first to discover available rulesetIds and identify the latest revision.
+ Do not use this tool to list all rulesets or browse history; use list_rulesets to enumerate revisions, and prefer get_ruleset only when you specifically need the original Talang expressions.
+ - applicationId, campaignId, and rulesetId are all required; call get_applications and list_campaigns first if the IDs are unknown, then list_rulesets to get the rulesetId.
+ - If a 400 error occurs, use the source field to identify the culprit parameter and explain the specific requirement to the user.
+ x-mcp-hint-readonly: true
+ x-scalar-stability: experimental
x-accepts: application/json
/v1/applications/{applicationId}/campaigns/{campaignId}/coupons:
delete:
@@ -4181,6 +4590,16 @@ paths:
summary: List coupons
tags:
- management
+ x-mcp: true
+ x-mcp-hint-readonly: true
+ x-mcp-description: |
+ Lists all coupons within a specific campaign with hasMore-based pagination, supporting the same filtering options as list_coupons but without the overhead of a total result count query.
+ Use this instead of list_coupons when the user does not need to know the exact total number of results and performance matters — for example when paging through large coupon batches or polling for new codes.
+ Do not use this tool when the user explicitly asks for the total count of matching coupons; use list_coupons instead in that case.
+ - Both applicationId and campaignId are required; call get_applications and list_campaigns first if either is unknown.
+ - The usable and redeemed filters are mutually exclusive; do not send both in the same request.
+ - Convert any relative date phrases (e.g., 'last 30 days') into RFC3339 strings such as '2024-01-01T00:00:00Z' before calling.
+ - If a 400 error occurs, use the source field to identify the culprit parameter and explain the specific requirement to the user.
x-accepts: application/json
/v1/applications/{applicationId}/campaigns/{campaignId}/coupons/{couponId}:
delete:
@@ -4559,6 +4978,15 @@ paths:
summary: List coupons that match the given attributes (without total count)
tags:
- management
+ x-mcp: true
+ x-mcp-hint-readonly: true
+ x-mcp-description: |
+ Looks up a single coupon by its exact code within an application, returning its current status, usage counter, validity window, batch ID, and recipient information.
+ Use this when the user wants to verify whether a specific coupon code exists, check how many times it has been used, confirm its expiration date, or identify who it was assigned to.
+ Do not use this tool to list or search multiple coupons; use list_coupons for bulk listing within a specific campaign.
+ - If the applicationId is unknown, call get_applications first to resolve the correct ID.
+ - If the result data array is empty, the coupon code does not exist in any campaign within that application.
+ - If a 400 error occurs, use the source field to identify the culprit parameter and explain the specific requirement to the user.
x-codegen-request-body-name: body
x-contentType: application/json
x-accepts: application/json
@@ -5009,6 +5437,14 @@ paths:
summary: List loyalty programs
tags:
- management
+ x-mcp: true
+ x-mcp-hint-readonly: true
+ x-mcp-description: |
+ Lists all loyalty programs belonging to the account, returning their IDs, names, tier configurations, and point settings.
+ Use this when the user wants to see which loyalty programs exist, retrieve a program ID to use in subsequent loyalty tool calls, or audit program configurations.
+ Do not use this tool to fetch balances, transactions, or point details for a specific profile; use the loyalty balance and transaction tools for that purpose.
+ - No parameters are required; the account is resolved from the authenticated session automatically.
+ - Always call this tool first when a loyaltyProgramId is unknown.
x-accepts: application/json
/v1/loyalty_programs/{loyaltyProgramId}:
get:
@@ -5042,6 +5478,14 @@ paths:
summary: Get loyalty program
tags:
- management
+ x-mcp: true
+ x-mcp-hint-readonly: true
+ x-mcp-description: |
+ Retrieves the full configuration of a single loyalty program by its ID, including tier definitions, point settings, and program metadata.
+ Use this when the user wants to inspect the details of a specific loyalty program, verify its tier structure, or confirm its configuration before referencing it in other operations.
+ Do not use this tool to retrieve a customer's balance or transaction history; use get_loyalty_balances or get_loyalty_profile_transactions for that purpose.
+ - loyaltyProgramId is required; call list_loyalty_programs first if the ID is unknown.
+ - If a 400 error occurs, use the source field to identify the culprit parameter and explain the specific requirement to the user.
x-accepts: application/json
/v1/loyalty_programs/{loyaltyProgramId}/activate_points:
post:
@@ -5265,7 +5709,7 @@ paths:
schema:
properties:
upFile:
- description: The file containing the data that is being imported.
+ description: The CSV file containing the data that is being imported.
format: csv
type: string
responses:
@@ -5298,7 +5742,7 @@ paths:
- `customerprofileid`: The integration ID of the customer profile to whom
the tier should be assigned.
- `tiername`: The name of an existing tier to assign to the customer.
- - `expirydate`: The expiration date of the tier when the tier is
+ - `expirydate`: The expiry date of the tier when the tier is
reevaluated. It should be a future date.
About customer assignment to a tier:
@@ -5306,9 +5750,11 @@ paths:
- If the customer isn't already in a tier, the customer is assigned to the
specified tier during the tier import.
- If the customer is already in the tier that's specified in the CSV file,
- only the expiration date is updated.
+ only the expiry date is updated.
- > [!note] We recommend not using this endpoint to update the tier of a customer.
+ > [!note] We recommend importing customers into the tier that matches their
+ > current balance. If a customer is imported into a lower tier, any session
+ > or points update automatically upgrades them to the tier they qualify for.
To update a customer's tier, you can
[add](/management-api#tag/Loyalty/operation/addLoyaltyPoints) or
@@ -5345,7 +5791,7 @@ paths:
schema:
properties:
upFile:
- description: The file containing the data that is being imported.
+ description: The CSV file containing the data that is being imported.
format: csv
type: string
responses:
@@ -5378,6 +5824,85 @@ paths:
- management
x-contentType: multipart/form-data
x-accepts: application/json
+ /v1/loyalty_programs/{loyaltyProgramId}/import_join_dates:
+ post:
+ description: |
+ Upload a CSV file containing customer profile IDs and their join dates for the
+ specified loyalty program. Send the file as multipart data.
+
+ > [!important] This endpoint only works with profile-based loyalty programs.
+
+ The CSV file **must** contain the following columns:
+
+ - `customerprofileid`: The integration ID of the customer profile whose join
+ date you want to update.
+ - `newjoindate`: The new join date for the customer in RFC3339 format. You
+ can use the time zone of your choice. It is converted to UTC internally
+ by Talon.One.
+
+ **Note**:
+ - Customer profiles must already exist. If a referenced profile does not exist, the import fails with a `400` error.
+ - If a join date already exists for a profile, the uploaded date replaces it.
+
+ > [!note] We recommend limiting your file size to 500 MB.
+
+ ## Example
+
+ ```csv
+ customerprofileid,newjoindate
+ customer1,2024-03-21T07:32:14Z
+ customer2,2025-04-16T21:12:37Z
+ customer3,2026-05-03T11:47:01Z
+ ```
+ operationId: importLoyaltyJoinDates
+ parameters:
+ - description: |
+ Identifier of the profile-based loyalty program. You can get the ID with the [List loyalty programs](https://docs.talon.one/management-api#tag/Loyalty/operation/getLoyaltyPrograms) endpoint.
+ in: path
+ name: loyaltyProgramId
+ required: true
+ schema:
+ format: int64
+ type: integer
+ requestBody:
+ content:
+ multipart/form-data:
+ schema:
+ properties:
+ upFile:
+ description: The CSV file containing the data that is being imported.
+ format: csv
+ type: string
+ responses:
+ "200":
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/Import'
+ description: OK
+ "400":
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/ErrorResponseWithStatus'
+ description: Bad request
+ "401":
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/ErrorResponseWithStatus'
+ description: Unauthorized
+ "404":
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/ErrorResponseWithStatus'
+ description: Not found
+ summary: Import join dates for a loyalty program
+ tags:
+ - management
+ x-contentType: multipart/form-data
+ x-accepts: application/json
/v1/loyalty_programs/{loyaltyProgramId}/profile/{integrationId}:
get:
deprecated: true
@@ -5745,7 +6270,7 @@ paths:
get:
deprecated: true
description: |
- > [warning] This endpoint is deprecated.
+ > [!warning] This endpoint is deprecated.
To retrieve statistics for a loyalty program, use the
[Get statistics for loyalty dashboard](/management-api#tag/Loyalty/operation/getDashboardStatistics)
@@ -5774,6 +6299,14 @@ paths:
summary: Get loyalty program statistics
tags:
- management
+ x-mcp: true
+ x-mcp-hint-readonly: true
+ x-mcp-description: |
+ Retrieves aggregate statistics for a loyalty program including total active points, pending points, spent points, and expired points.
+ Use this when the user wants a high-level overview of point activity across an entire loyalty program.
+ Do not use this tool to retrieve a specific customer's balance or transaction ledger; use get_loyalty_balances or get_loyalty_profile_transactions for individual profile data.
+ - loyaltyProgramId is required; call list_loyalty_programs first if the ID is unknown.
+ - If a 400 error occurs, use the source field to identify the culprit parameter and explain the specific requirement to the user.
x-accepts: application/json
/v1/loyalty_programs/{loyaltyProgramId}/export_customer_balances:
get:
@@ -5816,6 +6349,25 @@ paths:
schema:
format: date-time
type: string
+ - description: |
+ Filters which balance fields are included in the CSV export. `currentBalance`
+ is always returned.
+
+ By default, all balance fields are included. When this parameter is provided, only the
+ listed fields contain values and the rest are returned empty.
+
+ Accepted values:
+ - `currentBalance`
+ - `pendingBalance`
+ - `expiredBalance`
+ - `spentBalance`
+ - `negativeBalance`
+
+ Multiple values must be provided as a comma-separated list.
+ in: query
+ name: balances
+ schema:
+ type: string
responses:
"200":
content:
@@ -5873,6 +6425,25 @@ paths:
schema:
format: date-time
type: string
+ - description: |
+ Filters which balance fields are included in the CSV export. `currentBalance`
+ is always returned.
+
+ By default, all balance fields are included. When this parameter is provided, only the
+ listed fields contain values and the rest are returned empty.
+
+ Accepted values:
+ - `currentBalance`
+ - `pendingBalance`
+ - `expiredBalance`
+ - `spentBalance`
+ - `negativeBalance`
+
+ Multiple values must be provided as a comma-separated list.
+ in: query
+ name: balances
+ schema:
+ type: string
responses:
"200":
content:
@@ -6046,6 +6617,16 @@ paths:
summary: List loyalty program transactions
tags:
- management
+ x-mcp: true
+ x-mcp-hint-readonly: true
+ x-mcp-description: |
+ Lists transaction logs for a loyalty program including manual, session-based, and imported transactions, with filtering by type, subledger, date range, and activation status.
+ Use this when the user wants to audit point activity across an entire loyalty program, trace transactions within a date window, or filter by pending activation status.
+ Do not use this tool to retrieve transactions for a specific customer profile; use get_loyalty_profile_transactions for per-profile ledger data.
+ - loyaltyProgramId is required; call list_loyalty_programs first if the ID is unknown.
+ - If no filters are applied, the last 50 transactions are returned by default.
+ - Convert any relative date phrases into RFC3339 strings (e.g., '2024-01-01T00:00:00Z') before calling.
+ - If a 400 error occurs, use the source field to identify the culprit parameter and explain the specific requirement to the user.
x-accepts: application/json
/v1/loyalty_programs/{loyaltyProgramId}/import_cards:
post:
@@ -6064,14 +6645,17 @@ paths:
- `customerprofileids` (optional): An array of strings representing the
identifiers of the customer profiles linked to the loyalty card. The
identifiers should be separated with a semicolon (;).
+ - `attributes` (optional): A JSON object that contains the loyalty card's custom
+ attributes and their values. These attributes must be created and connected to this
+ loyalty program before they can be assigned to the cards through this endpoint.
- > [!note] We recommend limiting your file size to 500MB.
+ > [!note] Your CSV file must contain less than 500,000 rows. Requests time out after 30 seconds.
## Example
```csv
- identifier,state,customerprofileids
- 123-456-789AT,active,Alexa001;UserA
+ identifier,state,customerprofileids,attributes
+ 123-456-789AT,active,Alexa001;UserA,'{""my_attributes"": ""10_off""}"
```
operationId: importLoyaltyCards
parameters:
@@ -6090,7 +6674,7 @@ paths:
schema:
properties:
upFile:
- description: The file containing the data that is being imported.
+ description: The CSV file containing the data that is being imported.
format: csv
type: string
responses:
@@ -6223,6 +6807,27 @@ paths:
schema:
format: date-time
type: string
+ - description: |
+ Filters which balance fields are included in the CSV export. By default,
+ all balance fields are included. When this parameter is provided, only the
+ listed fields contain values and the rest are returned empty.
+
+ Accepted values:
+ - `currentBalance`
+ - `pendingBalance`
+ - `expiredBalance`
+ - `spentBalance`
+ - `negativeBalance`
+
+ Multiple values must be provided as a comma-separated list.
+
+ **Note:**
+ - The `negativeBalance` value is not supported for card balance exports.
+ - Providing an unsupported or invalid value returns a `400 Bad Request` error.
+ in: query
+ name: balances
+ schema:
+ type: string
responses:
"200":
content:
@@ -6412,7 +7017,7 @@ paths:
- `blockreason`: The reason for transferring and blocking the loyalty card.
- `generated`: An indicator of whether the loyalty card was generated.
- `batchid`: The ID of the batch the loyalty card is in.
- - `attributes`: The custom attributes of this loyalty card. Currently, this feature is only available upon request.
+ - `attributes`: The custom attributes of this loyalty card.
operationId: exportLoyaltyCards
parameters:
- description: |
@@ -6890,8 +7495,14 @@ paths:
get:
description: |
Retrieve the transaction logs for the given [loyalty card](https://docs.talon.one/docs/product/loyalty-programs/card-based/card-based-overview)
- within the specified [card-based loyalty program](https://docs.talon.one/docs/product/loyalty-programs/overview#loyalty-program-types) with filtering options applied.
- If no filtering options are applied, the last 50 loyalty transactions for the given loyalty card are returned.
+ within the specified [card-based loyalty program](https://docs.talon.one/docs/product/loyalty-programs/overview#loyalty-program-types)
+ with filtering options applied.
+
+ > [!note] For most use cases, especially real-time integrations, use the Integration API endpoint:
+ > [List card's transactions](https://docs.talon.one/integration-api#tag/Loyalty-cards/operation/getLoyaltyCardTransactions).
+
+ If no filtering options are applied, the last 50 loyalty transactions for
+ the given loyalty card are returned.
operationId: getLoyaltyCardTransactionLogs
parameters:
- description: |
@@ -7016,7 +7627,7 @@ paths:
schema:
$ref: '#/components/schemas/ErrorResponseWithStatus'
description: Not found
- summary: List card's transactions
+ summary: List card's transactions (Management API)
tags:
- management
x-accepts: application/json
@@ -7146,7 +7757,7 @@ paths:
schema:
properties:
upFile:
- description: The file containing the data that is being imported.
+ description: The CSV file containing the data that is being imported.
format: csv
type: string
responses:
@@ -7870,7 +8481,7 @@ paths:
schema:
properties:
upFile:
- description: The file containing the data that is being imported.
+ description: The CSV file containing the data that is being imported.
format: csv
type: string
responses:
@@ -7957,7 +8568,7 @@ paths:
schema:
properties:
upFile:
- description: The file containing the data that is being imported.
+ description: The CSV file containing the data that is being imported.
format: csv
type: string
responses:
@@ -8105,6 +8716,13 @@ paths:
summary: Get Application health
tags:
- management
+ x-mcp: true
+ x-mcp-hint-readonly: true
+ x-mcp-description: |
+ Retrieves the current API health status of an application, reporting whether recent integration requests succeeded, failed, or have not been recorded, along with the timestamp of the most recent request.
+ Use this when the user wants to verify that an application is actively processing integration traffic or to diagnose connection issues with the integration layer.
+ Do not use this tool to view campaign configurations or application settings; it is a read-only integration health check that covers only the last 5 minutes of activity.
+ If the applicationId is unknown, call get_applications first to resolve the correct ID before calling this tool.
x-accepts: application/json
/v1/applications/{applicationId}/access_logs/no_total:
get:
@@ -8206,6 +8824,15 @@ paths:
summary: Get access logs for Application
tags:
- management
+ x-mcp: true
+ x-mcp-hint-readonly: true
+ x-mcp-description: |
+ Retrieves the list of integration API calls sent to an application within a time window, including request paths, methods, HTTP status codes, and full request and response payloads.
+ Use this when the user wants to audit recent integration activity, debug a failing integration call, or verify that a specific session or event request was received.
+ Do not use this tool to check the overall health status of an application; use get_application_health for a high-level summary of recent request success rates.
+ - Both rangeStart and rangeEnd are required; convert any relative date phrases (e.g., 'last 7 days') into RFC3339 strings such as '2024-01-01T00:00:00Z' before calling.
+ - If the applicationId is unknown, call get_applications first to resolve the correct ID.
+ - If a 400 error occurs, use the source field to identify the culprit parameter and explain the specific requirement to the user.
x-accepts: application/json
/v1/applications/{applicationId}/campaigns/{campaignId}/analytics:
get:
@@ -8330,6 +8957,15 @@ paths:
summary: List application's customers
tags:
- management
+ x-mcp: true
+ x-mcp-hint-readonly: true
+ x-mcp-description: |
+ Lists all customer profiles associated with a specific application, with optional filtering by integration ID and pagination controls.
+ Use this when the user wants to browse or audit customer profiles in an application, look up a specific customer by their integration ID, or confirm whether a customer profile exists.
+ Do not use this tool to retrieve a single customer's full details or inventory; use get_application_customer for individual lookups.
+ - applicationId is required; call get_applications first if it is unknown.
+ - Use the integrationId filter to perform an exact match against a customer's profile integration identifier.
+ - If a 400 error occurs, use the source field to identify the culprit parameter and explain the specific requirement to the user.
x-accepts: application/json
/v1/applications/{applicationId}/customer_search:
post:
@@ -8545,6 +9181,14 @@ paths:
summary: Get application's customer
tags:
- management
+ x-mcp: true
+ x-mcp-hint-readonly: true
+ x-mcp-description: |
+ Retrieves a single customer record within a specific application by their internal numeric customer ID, returning profile data, integration ID, and associated attributes.
+ Use this when the user knows the internal customer ID (not the integration ID) and wants the full customer record within a specific application context; call list_application_customers first to find the customer ID if it is unknown.
+ Do not use this tool to look up a customer by their integration ID; use get_customer_profile for that purpose.
+ - Both applicationId and customerId are required; call get_applications first if the application ID is unknown, then list_application_customers to find the customerId.
+ - If a 400 error occurs, use the source field to identify the culprit parameter and explain the specific requirement to the user.
x-accepts: application/json
/v1/applications/{applicationId}/customer_activity_reports/no_total:
get:
@@ -8892,6 +9536,79 @@ paths:
summary: List Application sessions
tags:
- management
+ x-mcp: true
+ x-mcp-hint-readonly: true
+ x-mcp-description: |
+ Retrieves all customer sessions for a specific application as a paginated list, with optional filtering by profile integration ID, session state, coupon, referral, store, or date range.
+ Use this when the user wants to browse or search customer sessions within an application — for example to find all open sessions, sessions that used a specific coupon, or sessions for a given customer profile.
+ Do not use this tool to retrieve the full detail of a single session; use get_application_session or get_session_details for that purpose.
+ - applicationId is required; call get_applications first if the ID is unknown.
+ - Set partialMatch=true to enable substring matching on integrationId, profile, coupon, referral, or storeIntegrationId (minimum 3 characters); without it all text filters require exact matches.
+ - Convert any relative date phrases into RFC3339 strings (e.g., '2024-01-01T00:00:00Z') before calling.
+ - If a 400 error occurs, use the source field to identify the culprit parameter and explain the specific requirement to the user.
+ x-accepts: application/json
+ /v1/applications/{applicationId}/sessions_search:
+ post:
+ description: |
+ Get a list of the Application sessions matching the provided customer profile
+ attributes.
+
+ The match is successful if all the attributes of the request are found in a
+ profile, even if the profile has more attributes that are not present on the
+ request.
+ operationId: getApplicationSessionsByCustomerAttributes
+ parameters:
+ - description: The ID of the Application. It is displayed in your Talon.One
+ deployment URL.
+ in: path
+ name: applicationId
+ required: true
+ schema:
+ format: int64
+ type: integer
+ - description: The number of items in the response.
+ in: query
+ name: pageSize
+ schema:
+ default: 1000
+ format: int64
+ maximum: 1000
+ minimum: 1
+ type: integer
+ - description: The number of items to skip when paging through large result
+ sets.
+ in: query
+ name: skip
+ schema:
+ format: int64
+ type: integer
+ - description: |
+ When this flag is set, the result includes the total number of results for this query. This might decrease performance on large data sets.
+ - When `true`: `totalResultSize` contains the total number of results for this query.
+ - When `false`: Only `hasMore` is returned, and it is set to `true` when there are more results than shown on the page.
+ in: query
+ name: withTotalResultSize
+ schema:
+ type: boolean
+ requestBody:
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/CustomerProfileSearchQuery'
+ description: body
+ required: true
+ responses:
+ "200":
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/inline_response_200_32'
+ description: OK
+ summary: List Application sessions matching the given customer attributes
+ tags:
+ - management
+ x-codegen-request-body-name: body
+ x-contentType: application/json
x-accepts: application/json
/v1/applications/{applicationId}/sessions/{sessionId}:
get:
@@ -8926,6 +9643,15 @@ paths:
summary: Get Application session
tags:
- management
+ x-mcp: true
+ x-mcp-hint-readonly: true
+ x-mcp-description: |
+ Retrieves the details of a specific application session by its internal numeric session ID, including cart items, state, profile, coupons used, and referral data.
+ Use this when the user has the internal session ID (from list_application_sessions) and wants the full management-API view of that session.
+ Do not use this tool to find sessions by integration ID or customer; use list_application_sessions to search first; use get_session_details to retrieve a session by its integration ID via the integration API.
+ - Both applicationId and sessionId are required; call list_application_sessions to find the internal sessionId if unknown.
+ - sessionId is the internal numeric ID, not the session integration ID set during session creation.
+ - If a 400 error occurs, use the source field to identify the culprit parameter and explain the specific requirement to the user.
x-accepts: application/json
/v1/applications/{applicationId}/events/no_total:
get:
@@ -9038,11 +9764,22 @@ paths:
content:
application/json:
schema:
- $ref: '#/components/schemas/inline_response_200_32'
+ $ref: '#/components/schemas/inline_response_200_33'
description: OK
summary: List Applications events
tags:
- management
+ x-mcp: true
+ x-mcp-hint-readonly: true
+ x-mcp-description: |
+ Retrieves all events recorded for a specific application as a paginated list, with optional filtering by event type, date range, session, profile, customer, coupon, referral, rule, campaign, or effect.
+ Use this when the user wants to browse or audit events that occurred within an application — for example to find events triggered by a specific coupon, events for a given customer, or events of a particular type.
+ Do not use this tool to retrieve events for all applications at once; applicationId is required to scope the results.
+ - applicationId is required; call get_applications first if the ID is unknown.
+ - The type parameter accepts a comma-separated list of event type names for exact matching (e.g., "talon_session_created,talon_session_updated").
+ - Convert any relative date phrases into RFC3339 strings (e.g., '2024-01-01T00:00:00Z') before calling.
+ - customerName and customerEmail perform case-insensitive substring matching (minimum 2 characters); session and profile require exact matches.
+ - If a 400 error occurs, use the source field to identify the culprit parameter and explain the specific requirement to the user.
x-accepts: application/json
/v1/applications/{applicationId}/event_types:
get:
@@ -9089,11 +9826,19 @@ paths:
content:
application/json:
schema:
- $ref: '#/components/schemas/inline_response_200_33'
+ $ref: '#/components/schemas/inline_response_200_34'
description: OK
summary: List Applications event types
tags:
- management
+ x-mcp: true
+ x-mcp-hint-readonly: true
+ x-mcp-description: |
+ Retrieves all distinct event type names recorded for a specific application as a paginated list.
+ Use this to discover which event types are available for filtering when calling list_application_events — the returned strings are the exact values accepted by the type parameter of that tool.
+ Do not use this tool to retrieve the full event records; use list_application_events for that purpose.
+ - applicationId is required; call get_applications first if the ID is unknown.
+ - If a 400 error occurs, use the source field to identify the culprit parameter and explain the specific requirement to the user.
x-accepts: application/json
/v1/audiences:
get:
@@ -9139,11 +9884,19 @@ paths:
content:
application/json:
schema:
- $ref: '#/components/schemas/inline_response_200_34'
+ $ref: '#/components/schemas/inline_response_200_35'
description: OK
summary: List audiences
tags:
- management
+ x-mcp: true
+ x-mcp-hint-readonly: true
+ x-mcp-description: |
+ Retrieves all audiences created in the account as a paginated list, including their names, descriptions, and membership counts.
+ Use this when the user wants to browse available audiences, find a specific audience by name, or retrieve audience IDs for use in other operations.
+ Do not use this tool to modify audiences or manage memberships; use the management API directly for those operations.
+ - No required parameters; all filters are optional.
+ - If a 400 error occurs, use the source field to identify the culprit parameter and explain the specific requirement to the user.
x-accepts: application/json
/v1/audiences/analytics:
get:
@@ -9160,7 +9913,7 @@ paths:
schema:
type: string
- description: The IDs of one or more audiences, separated by commas, by which
- to filter results.
+ to filter results. Do not provide more than 1000 audience IDs.
in: query
name: audienceIds
required: true
@@ -9171,7 +9924,7 @@ paths:
content:
application/json:
schema:
- $ref: '#/components/schemas/inline_response_200_35'
+ $ref: '#/components/schemas/inline_response_200_36'
description: OK
summary: List audience analytics
tags:
@@ -9226,7 +9979,7 @@ paths:
content:
application/json:
schema:
- $ref: '#/components/schemas/inline_response_200_36'
+ $ref: '#/components/schemas/inline_response_200_37'
description: OK
"404":
content:
@@ -9275,7 +10028,7 @@ paths:
schema:
properties:
upFile:
- description: The file containing the data that is being imported.
+ description: The CSV file containing the data that is being imported.
format: csv
type: string
responses:
@@ -9417,11 +10170,20 @@ paths:
content:
application/json:
schema:
- $ref: '#/components/schemas/inline_response_200_37'
+ $ref: '#/components/schemas/inline_response_200_38'
description: OK
summary: List friends referred by customer profile
tags:
- management
+ x-mcp: true
+ x-mcp-hint-readonly: true
+ x-mcp-description: |
+ Lists the customer profiles referred by a specific advocate within an application, returning their profile data and referral details.
+ Use this when the user wants to see which customers were brought in by a specific advocate, verify the outcome of a referral program for a given profile, or audit referral activity for a particular integration ID.
+ Do not use this tool to list referral codes or referral objects; use list_referrals to enumerate referral codes within a campaign.
+ - Both applicationId and integrationId are required; call get_applications first if applicationId is unknown.
+ - If the result data array is empty, the advocate has not yet referred any friends within this application.
+ - If a 400 error occurs, use the source field to identify the culprit parameter and explain the specific requirement to the user.
x-accepts: application/json
/v1/best_prior_price:
post:
@@ -9484,6 +10246,38 @@ paths:
x-codegen-request-body-name: body
x-contentType: application/json
x-accepts: application/json
+ /v1/applications/{applicationId}/price_history/exclusions:
+ post:
+ description: |
+ Select a batch of historical price IDs to exclude from [best prior price calculation](https://docs.talon.one/integration-api#tag/Catalogs/operation/bestPriorPrice). All IDs in the batch must be valid `id` values obtained from the [Get summary of price history](https://docs.talon.one/management-api#tag/Catalogs/operation/priceHistory.responses.200.history) endpoint, must belong to the specified Application, must not already be excluded from best prior price calculation, and must not be associated with a scheduled strikethrough pricing notification.
+ operationId: excludePriceHistory
+ parameters:
+ - description: The ID of the Application. It is displayed in your Talon.One
+ deployment URL.
+ in: path
+ name: applicationId
+ required: true
+ schema:
+ format: int64
+ type: integer
+ requestBody:
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/ExcludePriceObservationsRequest'
+ description: body
+ required: true
+ responses:
+ "200":
+ content: {}
+ description: Ok
+ summary: Exclude price records from price history
+ tags:
+ - management
+ x-scalar-stability: experimental
+ x-codegen-request-body-name: body
+ x-contentType: application/json
+ x-accepts: application/json
/v1/attributes:
get:
description: |
@@ -9525,6 +10319,13 @@ paths:
name: applicationIds
schema:
type: string
+ - description: Returned attributes will be filtered by the specified loyalty
+ program ids, separated by commas. You can only use this parameter when `entity`
+ is `LoyaltyCard`.
+ in: query
+ name: loyaltyProgramIds
+ schema:
+ type: string
- description: Returned attributes will be filtered by supplied type
in: query
name: type
@@ -9552,11 +10353,19 @@ paths:
content:
application/json:
schema:
- $ref: '#/components/schemas/inline_response_200_38'
+ $ref: '#/components/schemas/inline_response_200_39'
description: OK
summary: List custom attributes
tags:
- management
+ x-mcp: true
+ x-mcp-hint-readonly: true
+ x-mcp-description: |
+ Retrieves all custom attributes defined in the account, with optional filtering by entity type, attribute type, kind, application, or a free-text search term.
+ Use this when the user wants to discover which custom attributes exist, find attributes for a specific entity (such as CustomerProfile or Campaign), or look up an attribute by name or description.
+ Do not use this tool to create or modify attributes; use the management API directly for write operations.
+ - No required parameters; all filters are optional and can be combined.
+ - If a 400 error occurs, use the source field to identify the culprit parameter and explain the specific requirement to the user.
x-accepts: application/json
post:
description: |
@@ -9618,6 +10427,14 @@ paths:
summary: Get custom attribute
tags:
- management
+ x-mcp: true
+ x-mcp-hint-readonly: true
+ x-mcp-description: |
+ Retrieves a single custom attribute by its numeric ID, returning its name, entity type, data type, description, and configuration.
+ Use this when the user wants the full details of a specific attribute they already know the ID of; call list_custom_attributes first to look up the ID if the user only knows the name.
+ Do not use this tool to list all attributes or filter by entity type; use list_custom_attributes for browsing and discovery.
+ - attributeId is required; you can find the ID by calling list_custom_attributes and matching on name.
+ - If a 400 error occurs, use the source field to identify the culprit parameter and explain the specific requirement to the user.
x-accepts: application/json
put:
description: |
@@ -9700,7 +10517,7 @@ paths:
schema:
properties:
upFile:
- description: The file containing the data that is being imported.
+ description: The CSV file containing the data that is being imported.
format: csv
type: string
responses:
@@ -9795,7 +10612,7 @@ paths:
content:
application/json:
schema:
- $ref: '#/components/schemas/inline_response_200_39'
+ $ref: '#/components/schemas/inline_response_200_40'
description: OK
summary: List items in a catalog
tags:
@@ -9849,211 +10666,7 @@ paths:
**Note:** `GE`, `LE`, `GT`, `LT` are for numeric values only.
- `value`: The value of the attribute selected in `attr`.
- ### Payload examples
-
- Synchronization actions are sent as `PUT` requests. See the structure for
- each action:
-
-
- Adding an item to the catalog
-
-
- ```json
- {
- "actions": [
- {
- "payload": {
- "attributes": {
- "color": "Navy blue",
- "type": "shoes"
- },
- "replaceIfExists": true,
- "sku": "SKU1241028",
- "price": 100,
- "product": {
- "name": "sneakers"
- }
- },
- "type": "ADD"
- }
- ]
- }
- ```
-
-
-
-
- Adding multiple items to the catalog
-
-
- ```json
- {
- "actions": [
- {
- "payload": {
- "attributes": {
- "color": "Navy blue",
- "type": "shoes"
- },
- "replaceIfExists": true,
- "sku": "SKU1241027",
- "price": 100,
- "product": {
- "name": "sneakers"
- }
- },
- "type": "ADD"
- },
- {
- "payload": {
- "attributes": {
- "color": "Navy blue",
- "type": "shoes"
- },
- "replaceIfExists": true,
- "sku": "SKU1241028",
- "price": 100,
- "product": {
- "name": "sneakers"
- }
- },
- "type": "ADD"
- }
- ]
- }
- ```
-
-
-
-
- Updating the attributes of an item in the catalog
-
-
- ```json
- {
- "actions": [
- {
- "payload": {
- "attributes": {
- "age": 11,
- "origin": "germany"
- },
- "createIfNotExists": false,
- "sku": "SKU1241028",
- "product": {
- "name": "sneakers"
- }
- },
- "type": "PATCH"
- }
- ]
- }
- ```
-
-
-
-
- Updating the attributes of multiple items in the catalog
-
-
- ```json
- {
- "actions": [
- {
- "payload": {
- "attributes": {
- "color": "red"
- },
- "filters": [
- {
- "attr": "color",
- "op": "EQ",
- "value": "blue"
- }
- ]
- },
- "type": "PATCH_MANY"
- }
- ]
- }
- ```
-
-
-
-
-
- Removing an item from the catalog
-
-
- ```json
- {
- "actions": [
- {
- "payload": {
- "sku": "SKU1241028"
- },
- "type": "REMOVE"
- }
- ]
- }
- ```
-
-
-
-
-
- Removing multiple items from the catalog
-
-
- ```json
- {
- "actions": [
- {
- "payload": {
- "filters": [
- {
- "attr": "color",
- "op": "EQ",
- "value": "blue"
- }
- ]
- },
- "type": "REMOVE_MANY"
- }
- ]
- }
- ```
-
-
-
-
- Removing shoes of sizes above 45 from the catalog
-
-
- Let's imagine that we have a shoe store and we have decided to stop selling
- shoes larger than size 45. We can remove from the catalog all the shoes of sizes above 45
- with a single action:
-
- ```json
- {
- "actions": [
- {
- "payload": {
- "filters": [
- {
- "attr": "size",
- "op": "GT",
- "value": "45"
- }
- ]
- },
- "type": "REMOVE_MANY"
- }
- ]
- }
- ```
-
-
+ For request examples of each action, see the **Request Body** examples.
operationId: syncCatalog
parameters:
- description: The ID of the catalog. You can find the ID in the Campaign Manager
@@ -10139,7 +10752,7 @@ paths:
content:
application/json:
schema:
- $ref: '#/components/schemas/inline_response_200_40'
+ $ref: '#/components/schemas/inline_response_200_41'
description: OK
summary: List additional costs
tags:
@@ -10299,11 +10912,20 @@ paths:
content:
application/json:
schema:
- $ref: '#/components/schemas/inline_response_200_41'
+ $ref: '#/components/schemas/inline_response_200_42'
description: OK
summary: List webhooks
tags:
- management
+ x-mcp: true
+ x-mcp-hint-readonly: true
+ x-mcp-description: |
+ Retrieves all webhooks configured in the authenticated Talon.One account as a paginated list, with optional filtering by application, creation type, visibility, outgoing integration type, or title.
+ Use this when the user wants to audit webhook configurations, find webhooks connected to a specific application, or locate a webhook by title before calling get_webhook.
+ Do not use this tool to retrieve the details of a single webhook; use get_webhook for that purpose.
+ - No required parameters; all filters are optional.
+ - applicationIds filters webhooks connected to the specified application ID; if omitted, webhooks for all applications are returned.
+ - If a 400 error occurs, use the source field to identify the culprit parameter and explain the specific requirement to the user.
x-accepts: application/json
/v1/webhooks/{webhookId}:
get:
@@ -10328,6 +10950,14 @@ paths:
summary: Get webhook
tags:
- management
+ x-mcp: true
+ x-mcp-hint-readonly: true
+ x-mcp-description: |
+ Retrieves the full configuration of a specific webhook by its numeric ID, including its URL, headers, payload template, and connected applications.
+ Use this when the user wants to inspect a webhook's settings after finding its ID via list_webhooks.
+ Do not use this tool to list webhooks; use list_webhooks to browse and find the webhookId first.
+ - webhookId is required; call list_webhooks to find the numeric ID if unknown — it is also visible in the Campaign Manager URL when viewing the webhook under Account > Webhooks.
+ - If a 400 error occurs, use the source field to identify the culprit parameter and explain the specific requirement to the user.
x-accepts: application/json
/v1/message_logs:
get:
@@ -10396,6 +11026,15 @@ paths:
schema:
format: byte
type: string
+ - description: The maximum number of message log entries to return.
+ in: query
+ name: pageSize
+ schema:
+ default: 50
+ format: int64
+ maximum: 1000
+ minimum: 1
+ type: integer
- description: |
Filter results by time period. Choose between the available relative time frames.
in: query
@@ -10512,7 +11151,7 @@ paths:
content:
application/json:
schema:
- $ref: '#/components/schemas/inline_response_200_42'
+ $ref: '#/components/schemas/inline_response_200_43'
description: OK
summary: List event types
tags:
@@ -10584,7 +11223,7 @@ paths:
schema:
properties:
upFile:
- description: The file containing the data that is being imported.
+ description: The CSV file containing the data that is being imported.
format: csv
type: string
responses:
@@ -10759,6 +11398,24 @@ paths:
schema:
default: false
type: boolean
+ - description: |-
+ Timestamp that filters the results to only contain coupons deleted before this date. Must be an RFC3339 timestamp string. You can use any time zone setting. Talon.One will convert to UTC internally.
+
+ **Note:** Only coupons deleted in the last 7 days will appear in the results.
+ in: query
+ name: deletedBefore
+ schema:
+ format: date-time
+ type: string
+ - description: |-
+ Timestamp that filters the results to only contain coupons deleted after this date. Must be an RFC3339 timestamp string. You can use any time zone setting. Talon.One will convert to UTC internally.
+
+ **Note:** Only coupons deleted in the last 7 days will appear in the results.
+ in: query
+ name: deletedAfter
+ schema:
+ format: date-time
+ type: string
responses:
"200":
content:
@@ -11001,6 +11658,20 @@ paths:
schema:
format: date-time
type: string
+ - description: Filter results comparing the parameter value, expected to be
+ an RFC3339 timestamp string.
+ in: query
+ name: updatedBefore
+ schema:
+ format: date-time
+ type: string
+ - description: Filter results comparing the parameter value, expected to be
+ an RFC3339 timestamp string.
+ in: query
+ name: updatedAfter
+ schema:
+ format: date-time
+ type: string
- description: Only return sessions for the customer that matches this customer
integration ID.
in: query
@@ -11099,7 +11770,7 @@ paths:
schema:
properties:
upFile:
- description: The file containing the data that is being imported.
+ description: The CSV file containing the data that is being imported.
format: csv
type: string
responses:
@@ -11149,11 +11820,19 @@ paths:
content:
application/json:
schema:
- $ref: '#/components/schemas/inline_response_200_43'
+ $ref: '#/components/schemas/inline_response_200_44'
description: OK
summary: List users in account
tags:
- management
+ x-mcp: true
+ x-mcp-hint-readonly: true
+ x-mcp-description: |
+ Retrieves all users belonging to the authenticated Talon.One account as a paginated list, including their roles, email addresses, and status.
+ Use this when the user wants to see who has access to the account, audit team membership, or look up a specific user's details before calling get_user.
+ Do not use this tool to retrieve application or campaign details; use get_applications or list_campaigns for those purposes.
+ - No required parameters; all filters are optional.
+ - If a 400 error occurs, use the source field to identify the culprit parameter and explain the specific requirement to the user.
x-accepts: application/json
/v1/users/{userId}:
delete:
@@ -11197,6 +11876,15 @@ paths:
summary: Get user
tags:
- management
+ x-mcp: true
+ x-mcp-hint-readonly: true
+ x-mcp-description: |
+ Retrieves the full profile of a specific user by their numeric ID, including their roles, email address, status, and invitation code if applicable.
+ Use this when the user wants to inspect a specific team member's details after finding their ID via list_users.
+ Do not use this tool to list all users; use list_users to browse and find the userId first.
+ - userId is required; call list_users to find the numeric user ID if unknown.
+ - Non-admin users can only retrieve their own profile; admin users can retrieve any user in the account.
+ - If a 400 error occurs, use the source field to identify the culprit parameter and explain the specific requirement to the user.
x-accepts: application/json
put:
description: Update the details of a specific user.
@@ -11782,7 +12470,7 @@ paths:
content:
application/json:
schema:
- $ref: '#/components/schemas/inline_response_200_44'
+ $ref: '#/components/schemas/inline_response_200_45'
description: OK
summary: Get audit logs for an account
tags:
@@ -11926,6 +12614,15 @@ paths:
summary: Get account details
tags:
- management
+ x-mcp: true
+ x-mcp-hint-readonly: true
+ x-mcp-description: |
+ Retrieves the full details of the authenticated Talon.One account, including subscription info, limits, and configuration.
+ Use this when the user wants to inspect their account settings or verify account-level information such as name, currency, timezone, or subscription status.
+ Do not use this tool to retrieve application or campaign details; use get_applications or list_campaigns for those purposes.
+ - accountId is required and must be the numeric ID of the authenticated account; it is visible in the Campaign Manager's Account menu or via the Talon.One API.
+ - You can only retrieve your own account; requests for a different account ID will be rejected.
+ - If a 400 error occurs, use the source field to identify the culprit parameter and explain the specific requirement to the user.
x-accepts: application/json
/v1/accounts/{accountId}/analytics:
get:
@@ -12055,7 +12752,7 @@ paths:
content:
application/json:
schema:
- $ref: '#/components/schemas/inline_response_200_45'
+ $ref: '#/components/schemas/inline_response_200_46'
description: OK
summary: Get exports
tags:
@@ -12070,11 +12767,18 @@ paths:
content:
application/json:
schema:
- $ref: '#/components/schemas/inline_response_200_46'
+ $ref: '#/components/schemas/inline_response_200_47'
description: OK
summary: List roles
tags:
- management
+ x-mcp: true
+ x-mcp-hint-readonly: true
+ x-mcp-description: |
+ Retrieves all roles defined in the authenticated Talon.One account, including their names, permissions, and associated members.
+ Use this when the user wants to audit access control, understand what permissions are configured, or look up a role before assigning it to a user.
+ Do not use this tool to manage role assignments; it is read-only and returns the full list of available roles.
+ - No parameters are required; the endpoint always returns all roles for the authenticated account.
x-accepts: application/json
/v2/roles/{roleId}:
get:
@@ -12291,7 +12995,7 @@ paths:
content:
application/json:
schema:
- $ref: '#/components/schemas/inline_response_200_47'
+ $ref: '#/components/schemas/inline_response_200_48'
description: OK
summary: List stores
tags:
@@ -12557,9 +13261,9 @@ paths:
- description: |
Filter by the display name of the Application cart item filter in the Application.
- **Note**: If no `title` is provided, all the Application cart item filters in the Application are returned.
+ **Note**: If no `name` is provided, all the Application cart item filters in the Application are returned.
in: query
- name: title
+ name: name
schema:
type: string
responses:
@@ -12567,7 +13271,7 @@ paths:
content:
application/json:
schema:
- $ref: '#/components/schemas/inline_response_200_48'
+ $ref: '#/components/schemas/inline_response_200_49'
description: OK
summary: List Application cart item filters
tags:
@@ -12695,7 +13399,7 @@ paths:
schema:
properties:
upFile:
- description: The file containing the data that is being imported.
+ description: The CSV file containing the data that is being imported.
format: csv
type: string
responses:
@@ -12830,7 +13534,7 @@ paths:
content:
application/json:
schema:
- $ref: '#/components/schemas/inline_response_200_49'
+ $ref: '#/components/schemas/inline_response_200_50'
description: OK
"400":
content:
@@ -12929,7 +13633,7 @@ paths:
content:
application/json:
schema:
- $ref: '#/components/schemas/inline_response_200_50'
+ $ref: '#/components/schemas/inline_response_200_51'
description: OK
"400":
content:
@@ -13010,7 +13714,7 @@ paths:
schema:
properties:
upFile:
- description: The file containing the data that is being imported.
+ description: The CSV file containing the data that is being imported.
format: csv
type: string
responses:
@@ -13114,6 +13818,7 @@ paths:
x-accepts: application/csv
/v1/applications/{applicationId}/campaigns/{campaignId}/achievements:
get:
+ deprecated: true
description: List all the achievements for a specific campaign.
operationId: listAchievements
parameters:
@@ -13162,13 +13867,14 @@ paths:
content:
application/json:
schema:
- $ref: '#/components/schemas/inline_response_200_51'
+ $ref: '#/components/schemas/inline_response_200_52'
description: OK
summary: List achievements
tags:
- management
x-accepts: application/json
post:
+ deprecated: true
description: Create a new achievement in a specific campaign.
operationId: createAchievement
parameters:
@@ -13225,6 +13931,7 @@ paths:
x-accepts: application/json
/v1/applications/{applicationId}/campaigns/{campaignId}/achievements/{achievementId}:
delete:
+ deprecated: true
description: Delete the specified achievement.
operationId: deleteAchievement
parameters:
@@ -13274,6 +13981,7 @@ paths:
- management
x-accepts: application/json
get:
+ deprecated: true
description: Get the details of a specific achievement.
operationId: getAchievement
parameters:
@@ -13324,8 +14032,17 @@ paths:
summary: Get achievement
tags:
- management
+ x-mcp: true
+ x-mcp-hint-readonly: true
+ x-mcp-description: |
+ Retrieves the details of a specific achievement within a campaign, including its name, description, progress target, period, and recurrence settings.
+ Use this when the user wants to inspect the full configuration of a specific achievement; call list_campaigns first if the campaign ID is unknown, and use get_customer_achievements to see a customer's progress toward achievements.
+ Do not use this tool to list all achievements in a campaign; use the management API's listAchievements endpoint for that purpose.
+ - applicationId, campaignId, and achievementId are all required; call get_applications and list_campaigns to find the application and campaign IDs.
+ - If a 404 error occurs, inform the user the achievement was not found and suggest verifying the IDs.
x-accepts: application/json
put:
+ deprecated: true
description: Update the details of a specific achievement.
operationId: updateAchievement
parameters:
@@ -13394,6 +14111,7 @@ paths:
x-accepts: application/json
/v1/applications/{applicationId}/campaigns/{campaignId}/achievements/{achievementId}/export:
get:
+ deprecated: true
description: |
Download a CSV file containing a list of all the customers who have participated in and are currently participating in the given achievement.
@@ -13463,6 +14181,283 @@ paths:
tags:
- management
x-accepts: application/csv
+ /v2/achievements:
+ get:
+ description: |
+ List all achievements.
+ operationId: listAchievementsV2
+ parameters:
+ - description: The number of items in the response.
+ in: query
+ name: pageSize
+ schema:
+ default: 50
+ format: int64
+ maximum: 1000
+ minimum: 1
+ type: integer
+ - description: The number of items to skip when paging through large result
+ sets.
+ in: query
+ name: skip
+ schema:
+ format: int64
+ type: integer
+ - description: |
+ The field by which results should be sorted. By default, results are sorted in ascending order. To sort them in descending order, prefix the field name with `-`.
+
+ **Note:** You may not be able to use all fields for sorting. This is due to performance limitations.
+ in: query
+ name: sort
+ schema:
+ type: string
+ - description: Filter by the display name of the achievement.
+ in: query
+ name: title
+ schema:
+ type: string
+ - description: Filter by the ID of an Application connected to the achievement.
+ in: query
+ name: applicationId
+ schema:
+ format: int64
+ type: integer
+ responses:
+ "200":
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/inline_response_200_53'
+ description: OK
+ "400":
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/ErrorResponseWithStatus'
+ description: Bad request
+ "401":
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/ErrorResponseWithStatus'
+ description: Unauthorized
+ summary: List achievements
+ tags:
+ - management
+ x-accepts: application/json
+ post:
+ description: Create a new account-level achievement.
+ operationId: createAchievementV2
+ requestBody:
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/CreateAchievementV2'
+ description: body
+ required: true
+ responses:
+ "201":
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/AchievementV2'
+ description: Created
+ "400":
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/ErrorResponseWithStatus'
+ description: Bad request
+ "401":
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/ErrorResponseWithStatus'
+ description: Unauthorized
+ "409":
+ content: {}
+ description: Conflict. An achievement with this name already exists.
+ summary: Create achievement
+ tags:
+ - management
+ x-codegen-request-body-name: body
+ x-contentType: application/json
+ x-accepts: application/json
+ /v2/achievements/{achievementId}:
+ delete:
+ description: Delete a specific achievement.
+ operationId: deleteAchievementV2
+ parameters:
+ - description: The ID of the achievement. You can get this ID with the [List
+ achievement](https://docs.talon.one/management-api#tag/Achievements/operation/listAchievementsV2)
+ endpoint.
+ in: path
+ name: achievementId
+ required: true
+ schema:
+ format: int64
+ type: integer
+ responses:
+ "204":
+ content: {}
+ description: No Content
+ "401":
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/ErrorResponseWithStatus'
+ description: Unauthorized
+ "404":
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/ErrorResponseWithStatus'
+ description: Not found
+ summary: Delete achievement
+ tags:
+ - management
+ x-accepts: application/json
+ get:
+ description: Retrieve the details of a specific achievement.
+ operationId: getAchievementV2
+ parameters:
+ - description: |
+ The ID of the achievement. You can get this ID with the [List achievement](https://docs.talon.one/management-api#tag/Achievements/operation/listAchievementsV2) endpoint.
+ in: path
+ name: achievementId
+ required: true
+ schema:
+ format: int64
+ type: integer
+ responses:
+ "200":
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/AchievementV2'
+ description: OK
+ "401":
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/ErrorResponseWithStatus'
+ description: Unauthorized
+ "404":
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/ErrorResponseWithStatus'
+ description: Not found
+ summary: Get achievement
+ tags:
+ - management
+ x-accepts: application/json
+ put:
+ description: Update the details of a specific achievement.
+ operationId: updateAchievementV2
+ parameters:
+ - description: The ID of the achievement. You can get this ID with the [List
+ achievement](https://docs.talon.one/management-api#tag/Achievements/operation/listAchievementsV2)
+ endpoint.
+ in: path
+ name: achievementId
+ required: true
+ schema:
+ format: int64
+ type: integer
+ requestBody:
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/UpdateAchievementV2'
+ description: body
+ required: true
+ responses:
+ "200":
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/AchievementV2'
+ description: OK
+ "400":
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/ErrorResponseWithStatus'
+ description: Bad request
+ "401":
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/ErrorResponseWithStatus'
+ description: Unauthorized
+ "404":
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/ErrorResponseWithStatus'
+ description: Not found
+ summary: Update achievement
+ tags:
+ - management
+ x-codegen-request-body-name: body
+ x-contentType: application/json
+ x-accepts: application/json
+ /v2/achievements/{achievementId}/export:
+ get:
+ description: |
+ Download a CSV file containing a list of all the customers who have participated in and are currently participating in the given achievement.
+
+ The CSV file contains the following columns:
+ - `profileIntegrationID`: The integration ID of the customer profile participating in the achievement.
+ - `title`: The display name of the achievement in the Campaign Manager.
+ - `target`: The required number of actions or the transactional milestone to complete the achievement.
+ - `progress`: The current progress of the customer in the achievement.
+ - `status`: The status of the achievement. Can be one of: ['inprogress', 'completed', 'expired'].
+ - `startDate`: The date on which the customer profile started the achievement in RFC3339.
+ - `endDate`: The date on which the achievement ends and resets for the customer profile in RFC3339.
+ - `completionDate`: The date on which the customer profile completed the achievement in RFC3339.
+ operationId: exportAchievementV2
+ parameters:
+ - description: The ID of the achievement. You can get this ID with the [List
+ achievements](https://docs.talon.one/management-api#tag/Achievements/operation/listAchievementsV2)
+ endpoint.
+ in: path
+ name: achievementId
+ required: true
+ schema:
+ format: int64
+ type: integer
+ responses:
+ "200":
+ content:
+ application/csv:
+ schema:
+ format: csv
+ type: string
+ description: OK
+ "400":
+ content:
+ application/csv:
+ schema:
+ $ref: '#/components/schemas/ErrorResponseWithStatus'
+ description: Bad request
+ "401":
+ content:
+ application/csv:
+ schema:
+ $ref: '#/components/schemas/ErrorResponseWithStatus'
+ description: Unauthorized
+ "404":
+ content:
+ application/csv:
+ schema:
+ $ref: '#/components/schemas/ErrorResponseWithStatus'
+ description: Not found
+ summary: Export achievement customer data
+ tags:
+ - management
+ x-accepts: application/csv
/v1/applications/{applicationId}/campaign_analytics/export:
get:
description: |
@@ -13603,7 +14598,7 @@ paths:
content:
application/json:
schema:
- $ref: '#/components/schemas/inline_response_200_52'
+ $ref: '#/components/schemas/inline_response_200_54'
description: OK
"400":
content:
@@ -13655,12 +14650,322 @@ paths:
content:
application/json:
schema:
- $ref: '#/components/schemas/inline_response_200_53'
+ $ref: '#/components/schemas/inline_response_200_55'
description: OK
summary: Summarize coupon redemption failures in session
tags:
- management
x-accepts: application/json
+ /v1/rewards/catalog:
+ get:
+ description: |
+ Retrieve the rewards catalog for the Application.
+ Returns a paginated list of rewards.
+ operationId: integrationRewardsCatalog
+ parameters:
+ - description: The number of items in the response.
+ in: query
+ name: pageSize
+ schema:
+ default: 1000
+ format: int64
+ maximum: 1000
+ minimum: 1
+ type: integer
+ - description: The number of items to skip when paging through large result
+ sets.
+ in: query
+ name: skip
+ schema:
+ format: int64
+ type: integer
+ - description: Return only rewards whose points required is greater than or
+ equal to this value.
+ in: query
+ name: pointsFrom
+ schema:
+ type: number
+ - description: Return only rewards whose points required is less than or equal
+ to this value.
+ in: query
+ name: pointsTo
+ schema:
+ type: number
+ - description: |
+ Whether to include rewards that have no `pointsRequired`. These rewards are
+ treated as free and available to all customers.
+ in: query
+ name: includeFree
+ schema:
+ default: true
+ type: boolean
+ - description: |
+ Return only rewards available in this loyalty program.
+ in: query
+ name: loyaltyProgramId
+ schema:
+ format: int64
+ type: integer
+ - description: |
+ Return only rewards available in this subledger. Must be combined with `loyaltyProgramId`.
+ To specify the main ledger, provide an empty string ("").
+ in: query
+ name: subledgerId
+ schema:
+ type: string
+ - description: |
+ The integration ID of the customer profile whose loyalty balances to
+ include in the response. Balances are returned only when
+ `loyaltyProgramId` is also provided.
+
+ **Note:** `profileIntegrationId` and `loyaltyCardId` are mutually exclusive. Do not send both in the same request.
+ in: query
+ name: profileIntegrationId
+ schema:
+ type: string
+ - description: |
+ The identifier of the loyalty card whose loyalty balances to include
+ in the response. Balances are returned only when `loyaltyProgramId`
+ is also provided.
+
+ **Note:** `profileIntegrationId` and `loyaltyCardId` are mutually exclusive. Do not send both in the same request.
+ in: query
+ name: loyaltyCardId
+ schema:
+ type: string
+ responses:
+ "200":
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/inline_response_200_56'
+ description: OK
+ "400":
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/ErrorResponseWithStatus'
+ description: Bad request
+ "401":
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/ErrorResponseWithStatus'
+ description: Unauthorized
+ "404":
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/ErrorResponseWithStatus'
+ description: Not found
+ security:
+ - api_key_v1: []
+ summary: List rewards in the catalog
+ tags:
+ - integration
+ x-scalar-stability: experimental
+ x-accepts: application/json
+ /v1/rewards/{rewardId}/unlock:
+ post:
+ description: |
+ Unlock a reward for a customer. If the reward has `pointsRequired` configured, the corresponding loyalty points are deducted from the customer's balance.
+
+ To unlock a reward with the points of a loyalty card, provide the card in `cardIdentifier`. The points are then deducted from the card, and the unlocked reward belongs to the card, which makes it available to all customer profiles linked to that card.
+ operationId: unlockReward
+ parameters:
+ - description: The ID of the reward. You can get the ID with the [List rewards](#tag/Rewards/operation/listRewards)
+ endpoint.
+ in: path
+ name: rewardId
+ required: true
+ schema:
+ format: int64
+ type: integer
+ - description: When set to `true`, the rule evaluation is performed but no changes
+ are persisted. Use this to preview the outcome of an unlocking.
+ in: query
+ name: dry
+ schema:
+ type: boolean
+ requestBody:
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/IntegrationUnlockRewardRequest'
+ required: true
+ responses:
+ "200":
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/IntegrationStateV2'
+ description: OK
+ "400":
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/ErrorResponseWithStatus'
+ description: Bad request
+ "401":
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/ErrorResponseWithStatus'
+ description: Unauthorized
+ "403":
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/ErrorResponseWithStatus'
+ description: Forbidden
+ "404":
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/ErrorResponseWithStatus'
+ description: Not found
+ "409":
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/ErrorResponseWithStatus'
+ description: Conflict. A reward unlock with this integration ID already
+ exists.
+ "422":
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/RewardUnlockRejection'
+ description: |
+ Unprocessable entity. The reward unlock was rejected by the Rule Engine, for example because the customer already unlocked this reward, the customer has insufficient points, or the reward's eligibility conditions are not met.
+ security:
+ - api_key_v1: []
+ summary: Unlock a reward
+ tags:
+ - integration
+ x-scalar-stability: experimental
+ x-codegen-request-body-name: body
+ x-contentType: application/json
+ x-accepts: application/json
+ /v3/events:
+ post:
+ description: |
+ Trigger an [advanced event](https://docs.talon.one/docs/dev/concepts/entities/events#advanced-events).
+
+ Advanced events are idempotent, uniquely identifiable events. They can also
+ reference a previously closed session to add more context for rule evaluation.
+
+ To use this endpoint:
+
+ 1. [Create](https://docs.talon.one/docs/dev/concepts/entities/events#create-an-event) an event in the Campaign Manager.
+ 1. In a rule, add the **Check for event types** [condition](https://docs.talon.one/docs/dev/concepts/entities/events#use-an-event-in-a-rule) and select the event you created.
+ 1. Trigger the event with this endpoint.
+
+ You can [list](https://docs.talon.one/docs/product/applications/display-events#list-events) the received events in the **Events** view of the Campaign Manager.
+
+ For example, you can use this endpoint to award loyalty points after an order is delivered.
+ See our [tutorial](https://docs.talon.one/docs/dev/tutorials/award-loyalty-points-after-delivery).
+
+ > [!note] **Note**
+ > - If the customer profile does not exist, it will be created. However, the `customer_profile_created` [built-in event](https://docs.talon.one/docs/dev/concepts/entities/events#built-in-events) is **not** triggered.
+ > - We recommend sending requests sequentially. See [Manage parallel requests](https://docs.talon.one/docs/dev/getting-started/integration-tutorial#manage-parallel-requests).
+ > - [Archived campaigns](https://docs.talon.one/docs/product/campaigns/managing-campaigns#archive-a-campaign) are not considered in rule evaluation.
+ operationId: trackEventV3
+ parameters:
+ - description: |
+ Possible values: `yes` or `no`.
+ - `yes`: Increases the performance of the API call by returning a 204 response.
+ - `no`: Returns a 200 response that contains the updated customer profiles.
+ in: query
+ name: silent
+ schema:
+ default: "yes"
+ type: string
+ - description: |
+ Indicates whether to persist the changes. Changes are ignored when `dry=true`.
+ in: query
+ name: dry
+ schema:
+ type: boolean
+ - description: |
+ Forces evaluation for all matching campaigns regardless of the [campaign evaluation mode](https://docs.talon.one/docs/product/applications/managing-campaign-evaluation#setting-campaign-evaluation-mode). Requires `dry=true`.
+ in: query
+ name: forceCompleteEvaluation
+ schema:
+ default: false
+ type: boolean
+ requestBody:
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/IntegrationEventV3Request'
+ description: body
+ required: true
+ responses:
+ "200":
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/IntegrationEventV3Response'
+ description: OK
+ "400":
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/ErrorResponseWithStatus'
+ description: Bad request
+ "401":
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/ErrorResponseWithStatus'
+ description: Unauthorized - Invalid API key
+ "409":
+ content:
+ application/json:
+ schema:
+ type: object
+ description: An advanced event already exists, too many requests, or limit
+ reached. Avoid parallel requests. See the [docs](https://docs.talon.one/docs/dev/tutorials/integrating-talon-one#manage-parallel-requests).
+ security:
+ - api_key_v1: []
+ summary: Track advanced event
+ tags:
+ - integration
+ x-codegen-request-body-name: body
+ x-contentType: application/json
+ x-accepts: application/json
+ /v3/events/{integrationId}:
+ get:
+ description: |
+ Retrieve an advanced event by its identifier.
+ operationId: getEventV3
+ parameters:
+ - description: The unique ID of the advanced event.
+ in: path
+ name: integrationId
+ required: true
+ schema:
+ type: string
+ responses:
+ "200":
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/EventV3'
+ description: OK
+ "404":
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/ErrorResponseWithStatus'
+ description: Not found
+ security:
+ - api_key_v1: []
+ summary: Get advanced event
+ tags:
+ - integration
+ x-accepts: application/json
components:
schemas:
ApplicationNotification:
@@ -14261,7 +15566,8 @@ components:
description: The strikethrough labels notification for an application.
properties:
version:
- description: The version of the strikethrough pricing notification.
+ description: |
+ The version of the strikethrough pricing notification. Set for **scheduled** strikethrough pricing updates only.
enum:
- v2
type: string
@@ -14402,15 +15708,7 @@ components:
format: date-time
type: string
EventType:
- enum:
- - LoyaltyPointsChanged
- - LoyaltyTierDowngrade
- - LoyaltyTierUpgrade
- - CouponCreated
- - CouponUpdated
- - CouponDeleted
- type: string
- x-generate-enum-go: IntegrationHubEventType
+ $ref: '#/components/schemas/IntegrationHubEventType'
Data:
items:
type: object
@@ -14763,6 +16061,13 @@ components:
example:
couponCodes:
- XMAS-20-2021
+ identifiers:
+ - d41306257915f83fe01e54092ae470f631161ea16fcf4415842eed41470386ea
+ experimentVariantAllocations:
+ - experimentID: 1
+ variantID: 2
+ - experimentID: 1
+ variantID: 2
loyaltyCards:
- loyalty-card-1
additionalCosts:
@@ -14770,8 +16075,6 @@ components:
price: 9
storeIntegrationId: STORE-001
profileId: URNGV8294NV
- identifiers:
- - d41306257915f83fe01e54092ae470f631161ea16fcf4415842eed41470386ea
evaluableCampaignIds:
- 10
- 12
@@ -14846,11 +16149,8 @@ components:
base:
price: 100
height: 0.8008281904610115
- experimentVariantAllocations:
- - experimentID: 1
- variantID: 2
- - experimentID: 1
- variantID: 2
+ rewardIntegrationIds:
+ - 5c0b5e6d-3f8a-4c2b-9f1e-2a7d6b4c8e90
properties:
profileId:
description: |
@@ -14914,18 +16214,27 @@ components:
type: string
maxItems: 1
type: array
+ rewardIntegrationIds:
+ description: |
+ The integration IDs of the unlocked rewards that can be used in this session.
+ example:
+ - 5c0b5e6d-3f8a-4c2b-9f1e-2a7d6b4c8e90
+ items:
+ type: string
+ title: Customer reward integration IDs
+ type: array
state:
default: open
description: |
Indicates the current state of the session. Sessions can be created as `open` or `closed`. The state transitions are:
- 1. `open` → `closed`
- 2. `open` → `cancelled`
+ 1. `open` -> `closed`
+ 2. `open` -> `cancelled`
3. Either:
- - `closed` → `cancelled` (**only** via [Update customer session](https://docs.talon.one/integration-api#tag/Customer-sessions/operation/updateCustomerSessionV2)) or
- - `closed` → `partially_returned` (**only** via [Return cart items](https://docs.talon.one/integration-api#tag/Customer-sessions/operation/returnCartItems))
- - `closed` → `open` (**only** via [Reopen customer session](https://docs.talon.one/integration-api#tag/Customer-sessions/operation/reopenCustomerSession))
- 4. `partially_returned` → `cancelled`
+ - `closed` -> `cancelled` (**only** via [Update customer session](https://docs.talon.one/integration-api#tag/Customer-sessions/operation/updateCustomerSessionV2)) or
+ - `closed` -> `partially_returned` (**only** via [Return cart items](https://docs.talon.one/integration-api#tag/Customer-sessions/operation/returnCartItems))
+ - `closed` -> `open` (**only** via [Reopen customer session](https://docs.talon.one/integration-api#tag/Customer-sessions/operation/reopenCustomerSession))
+ 4. `partially_returned` -> `cancelled`
For more information, see [Customer session states](https://docs.talon.one/docs/dev/concepts/entities/customer-sessions).
enum:
@@ -14998,6 +16307,7 @@ components:
example:
couponCodes:
- XMAS-20-2021
+ cartItemAdditionalCostTotal: 15.0
updateCount: 3
created: 2020-02-07T08:15:22Z
identifiers:
@@ -15008,7 +16318,7 @@ components:
variantID: 2
- experimentID: 1
variantID: 2
- total: 119.99
+ total: 134.99
loyaltyCards:
- loyalty-card-1
additionalCosts:
@@ -15094,6 +16404,8 @@ components:
price: 100
height: 0.8008281904610115
updated: 2020-02-08T14:15:22Z
+ rewardIntegrationIds:
+ - 5c0b5e6d-3f8a-4c2b-9f1e-2a7d6b4c8e90
firstSession: true
cartItemTotal: 99.99
properties:
@@ -15180,18 +16492,27 @@ components:
type: string
maxItems: 1
type: array
+ rewardIntegrationIds:
+ description: |
+ The integration IDs of the unlocked rewards that can be used in this session.
+ example:
+ - 5c0b5e6d-3f8a-4c2b-9f1e-2a7d6b4c8e90
+ items:
+ type: string
+ title: Customer reward integration IDs
+ type: array
state:
default: open
description: |
Indicates the current state of the session. Sessions can be created as `open` or `closed`. The state transitions are:
- 1. `open` → `closed`
- 2. `open` → `cancelled`
+ 1. `open` -> `closed`
+ 2. `open` -> `cancelled`
3. Either:
- - `closed` → `cancelled` (**only** via [Update customer session](https://docs.talon.one/integration-api#tag/Customer-sessions/operation/updateCustomerSessionV2)) or
- - `closed` → `partially_returned` (**only** via [Return cart items](https://docs.talon.one/integration-api#tag/Customer-sessions/operation/returnCartItems))
- - `closed` → `open` (**only** via [Reopen customer session](https://docs.talon.one/integration-api#tag/Customer-sessions/operation/reopenCustomerSession))
- 4. `partially_returned` → `cancelled`
+ - `closed` -> `cancelled` (**only** via [Update customer session](https://docs.talon.one/integration-api#tag/Customer-sessions/operation/updateCustomerSessionV2)) or
+ - `closed` -> `partially_returned` (**only** via [Return cart items](https://docs.talon.one/integration-api#tag/Customer-sessions/operation/returnCartItems))
+ - `closed` -> `open` (**only** via [Reopen customer session](https://docs.talon.one/integration-api#tag/Customer-sessions/operation/reopenCustomerSession))
+ 4. `partially_returned` -> `cancelled`
For more information, see [Customer session states](https://docs.talon.one/docs/dev/concepts/entities/customer-sessions).
enum:
@@ -15274,7 +16595,7 @@ components:
total:
description: The total value of cart items and additional costs in the session,
before any discounts are applied.
- example: 119.99
+ example: 134.99
title: Session Total
type: number
cartItemTotal:
@@ -15288,6 +16609,13 @@ components:
example: 20.0
title: Additional Costs Total
type: number
+ cartItemAdditionalCostTotal:
+ description: The total value of additional costs applied to individual items,
+ before any discounts are applied.
+ example: 15.0
+ readOnly: true
+ title: Cart Item Additional Cost Total
+ type: number
updated:
description: Timestamp of the most recent event received on this session.
example: 2020-02-08T14:15:22Z
@@ -15298,6 +16626,7 @@ components:
- additionalCostTotal
- applicationId
- attributes
+ - cartItemAdditionalCostTotal
- cartItemTotal
- cartItems
- created
@@ -15400,6 +16729,12 @@ components:
example: 68851723-e6fa-488f-ace9-112581e6c19b
format: uuid
type: string
+ rewardId:
+ description: The ID of the reward that was being evaluated when this effect
+ was triggered.
+ example: 7
+ format: int64
+ type: integer
required:
- campaignId
- effectType
@@ -15408,31 +16743,50 @@ components:
- rulesetId
type: object
AcceptCouponEffectProps:
- description: The properties specific to the "acceptCoupon" effect. This gets
- triggered whenever the coupon is valid and all other conditions in the rules
- of its campaign are met.
+ description: |-
+ This effect indicates that the coupon code supplied was valid.
+
+ You should handle this effect by clearing any messages from previous `rejectCoupon` effects and informing the user that the coupon is valid.
+
+ The code is automatically redeemed when you close the session.
+
+ Other effects, such as [setDiscount](https://docs.talon.one/docs/dev/integration-api/api-effects#setdiscount), provide more information about the actual rewards received.
+ example:
+ value: COUP-XYZ789
properties:
value:
description: The coupon code that was accepted.
type: string
required:
- value
+ title: acceptCoupon
type: object
AcceptReferralEffectProps:
- description: The properties specific to the "acceptReferral" effect. TThis gets
- triggered whenever the referral code is valid and all other conditions in
- the rules of its campaign are met.
+ description: |-
+ This effect indicates that the referral code supplied is valid.
+
+ You should handle this effect by informing the user that the referral code is valid.
+
+ The code is automatically redeemed when you close the session.
+
+ Other effects will provide more information about the actual reward.
+ example:
+ value: REF-ABC123
properties:
value:
- description: The referral code that was accepted.
+ description: The referral code provided in the session.
type: string
required:
- value
+ title: acceptReferral
type: object
RedeemReferralEffectProps:
description: |
- This effect is **deprecated**. The properties specific to the "redeemReferral" effect.
- This gets triggered whenever the referral code is valid, and a rule was triggered that contains a "redeem referral" effect.
+ This effect is **deprecated**. It has been replaced by the `acceptReferral` effect.
+ This effect indicates that the referral code is valid and has been redeemed.
+ example:
+ id: 12
+ value: REF-ABC123
properties:
id:
description: The id of the referral code that was redeemed.
@@ -15444,17 +16798,42 @@ components:
required:
- id
- value
+ title: redeemReferral
type: object
+ x-deprecated: true
RejectCouponEffectProps:
- description: The properties specific to the "rejectCoupon" effect. This gets
- triggered whenever the coupon was rejected. See rejectionReason for more info
- on why.
+ description: |-
+ This effect indicates that the coupon code supplied couldn't be used.
+
+ You should handle this effect by informing their user the coupon code is invalid.
+ example:
+ value: COUP-XYZ789
+ rejectionReason: CouponRejectedCondition
+ conditionIndex: 2
+ effectIndex: 0
+ details: Coupon usage limit reached
+ campaignExclusionReason: CampaignGaveLowerDiscount
properties:
value:
description: The coupon code that was rejected.
type: string
rejectionReason:
- description: The reason why this coupon was rejected.
+ description: |-
+ The reason why the code was rejected.
+
+ - `CampaignLimitReached`: The campaign-wide coupon code redemption limit has been reached.
+ - `CouponExpired`: The coupon is expired.
+ - `CouponLimitReached`: The coupon redemption limit or a campaign budget was reached.
+ - `CouponNotFound`: The coupon code is incorrect.
+ - `CouponPartOfNotRunningCampaign`: The campaign the coupon belongs to is currently not active. The campaignId field contains the ID of that campaign.
+ - `CouponRecipientDoesNotMatch`: The given coupon value does not match the recipient or the coupon is linked to a `recipientIntegrationID` but there is no profile in the session.
+ - `CouponRejectedByCondition`: Other conditions failed in the rule or all conditions passed but the `Coupon code is valid` condition is not present.
+ - `CouponStartDateInFuture`: The coupon isn't active yet.
+ - `EffectCouldNotBeApplied`: One of the effects in the campaign wasn't applied because a limit for that effect was reached (most common use case will be `setDiscount` cannot be applied because a discount limit is reached).
+ - `ProfileLimitReached`: The profile-specific coupon redemption limit has been reached.
+ - `CouponPartOfNotTriggeredCampaign`: The campaign the coupon belongs to was not triggered during evaluation (an exclusive or stackable campaign). The `campaignId` field contains the ID of that campaign.
+ - `CouponReservationRequired`: The coupon's `isReservationMandatory` property is `true`, but the profile does not have a reservation.
+ - `ProfileRequired`: The coupon's `isReservationMandatory` property is `true` or a [campaign profile budget](https://docs.talon.one/docs/product/campaigns/settings/manage-campaign-budgets) was set, but no profile exists in the session.
type: string
conditionIndex:
description: The index of the condition that caused the rejection of the
@@ -15469,23 +16848,51 @@ components:
description: More details about the failure.
type: string
campaignExclusionReason:
- description: The reason why the campaign was not applied.
+ description: |-
+ The reason why the campaign the coupon belongs to was excluded during [campaign evaluation](https://docs.talon.one/docs/product/applications/manage-campaign-evaluation), when `rejectionReason` was `CouponPartOfNotTriggeredCampaign`.
+ Its possible values are:
+
+ - `CampaignGaveLowerDiscount`: The required campaign and coupon conditions were met, but another campaign in a [Highest discount value](https://docs.talon.one/docs/product/applications/manage-campaign-evaluation#set-campaign-evaluation-mode) group offered a higher discount value.
+ - `CampaignIsNotFirst`: The campaign was not evaluated because another campaign in a [First campaign](https://docs.talon.one/docs/product/applications/manage-campaign-evaluation#set-campaign-evaluation-mode) group was picked and evaluated first.
+ - `CampaignNotInEvaluationSet`: The campaign did not meet other evaluation requirements, for example, because the coupon is part of an archived campaign.
example: CampaignGaveLowerDiscount
type: string
required:
- rejectionReason
- value
+ title: rejectCoupon
type: object
RejectReferralEffectProps:
- description: The properties specific to the "rejectReferral" effect. This gets
- triggered whenever the referral code was rejected. See rejectionReason for
- more info on why.
+ description: This effect indicates that the provided referral code is invalid.
+ example:
+ value: REF-ABC123
+ rejectionReason: ReferralRejectedCondition
+ conditionIndex: 1
+ effectIndex: 0
+ details: Referral code already used
+ campaignExclusionReason: CampaignGaveLowerDiscount
properties:
value:
- description: The referral code that was rejected.
+ description: The referral code that was rejected
type: string
rejectionReason:
- description: The reason why this referral code was rejected.
+ description: |-
+ The reason why the code was rejected.
+
+ - `AdvocateNotFound`: The advocate was not found.
+ - `CampaignLimitReached`: The campaign-wide referral code redemption limit has been reached.
+ - `EffectCouldNotBeApplied`: One of the effects in the campaign wasn't applied because a limit for that effect was reached (most common use case will be `setDiscount` can not be applied because a discount limit is reached).
+ - `ProfileLimitReached`: The profile-specific referral code redemption limit has been reached.
+ - `ReferralCustomerAlreadyReferred`: The friend is already referred.
+ - `ReferralExpired`: The transferred referral code is expired.
+ - `ReferralLimitReached`: The referral code redemption limit has been reached.
+ - `ReferralNotFound`: The transferred referral code is wrong.
+ - `ReferralPartOfNotRunningCampaign`: The campaign the referral code belongs to is currently not active. The campaign ID field shows the ID of that campaign.
+ - `ReferralRecipientDoesNotMatch`: The given referral code value does not match the recipient.
+ - `ReferralRecipientIdSameAsAdvocate`: The recipient (friend) has the same id as the advocate.
+ - `ReferralRejectedByCondition`: The referral code is valid and in an active campaign, but there were other conditions in that campaign's rules that were not met.
+ - `ReferralStartDateInFuture`: The transferred referral code isn't active yet.
+ - `ReferralPartOfNotTriggeredCampaign`: The campaign the referral code belongs to was not triggered during evaluation (an exclusive or stackable campaign). The campaign ID field shows the ID of that campaign.
type: string
conditionIndex:
description: The index of the condition that caused the rejection of the
@@ -15500,18 +16907,30 @@ components:
description: More details about the failure.
type: string
campaignExclusionReason:
- description: The reason why the campaign was not applied.
+ description: |-
+ The reason why the campaign the referral belongs to was excluded during [campaign evaluation](https://docs.talon.one/docs/product/applications/manage-campaign-evaluation), when `rejectionReason` was `CouponPartOfNotTriggeredCampaign`.
+ Its possible values are:
+
+ - `CampaignGaveLowerDiscount`: The required campaign and referral conditions were met, but another campaign in a [Highest discount value](https://docs.talon.one/docs/product/applications/manage-campaign-evaluation#set-campaign-evaluation-mode) group offered a higher discount value.
+ - `CampaignIsNotFirst`: The campaign was not evaluated because another campaign in a [First campaign](https://docs.talon.one/docs/product/applications/manage-campaign-evaluation#set-campaign-evaluation-mode) group was picked and evaluated first.
+ - `CampaignNotInEvaluationSet`: The campaign did not meet other evaluation requirements, for example, because the referral is part of an archived campaign.
example: CampaignGaveLowerDiscount
type: string
required:
- rejectionReason
- value
+ title: rejectReferral
type: object
CouponCreatedEffectProps:
- description: The properties specific to the "couponCreated" effect. This gets
- triggered whenever a validated rule contained a "create coupon" effect, and
- a coupon was created for a customer. See "createdCoupons" on the response
- for all details of this coupon.
+ description: |-
+ This effect indicates that a coupon was created.
+
+ For referrals and retention marketing, a common use case is to generate a coupon that can only be redeemed by one specific customer.
+
+ Handle this effect by notifying the recipient about their new coupon code.
+ example:
+ value: COUP-NEW123
+ profileId: customer_profile_id_1
properties:
value:
description: The coupon code that was created.
@@ -15523,97 +16942,136 @@ components:
required:
- profileId
- value
+ title: couponCreated
type: object
ReferralCreatedEffectProps:
- description: The properties specific to the "referralCreated" effect. This gets
- triggered whenever a validated rule contained a "create referral" effect,
- and a referral code was created for a customer. See "createdReferrals" on
- the response for all details of this referral code.
+ description: The `referralCreated` effect behaves similarly to [couponCreated](https://docs.talon.one/docs/dev/integration-api/api-effects#couponcreated).
+ If the `friendProfileIntegrationId` parameter is empty, the referral code
+ can be redeemed by anyone.
+ example:
+ value: REF-NEW456
properties:
value:
- description: The referral code that was created.
+ description: The referral code provided in the session.
type: string
required:
- value
+ title: referralCreated
type: object
SetDiscountEffectProps:
- description: The properties specific to the "setDiscount" effect. This gets
- triggered whenever a validated rule contained a "set discount" effect. This
- is a discount that should be applied on the scope of defined with it.
+ description: |-
+ This effect indicates that a discount should be set on the total shopping cart value of the current order with the given label and amount.
+
+ The discount should overwrite any existing discount with the same name. The most recent integration state update always returns the latest values for **all** effects, effectively overwriting any previous effects.
+
+ Enabling [partial discounts](https://docs.talon.one/docs/product/applications/manage-general-settings#partial-discounts) allows a rule that would fail because of insufficient budget to pass. The rule still fails when the budget reaches `0`. Use the `desiredValue` property to identify the original value of the discount.
+ example:
+ name: 10% Off
+ value: 2.5
+ scope: sessionTotal
+ desiredValue: 2.5
properties:
name:
- description: The name / description of this discount
+ description: The name or description of this discount.
type: string
value:
- description: The total monetary value of the discount.
+ description: The monetary value of the effective discount.
type: number
scope:
- description: The scope which the discount was applied on, can be one of
- (cartItems,additionalCosts,sessionTotal).
+ description: |-
+ What the discount applies to. Possible values:
+
+ - `cartItems`: Discount on the price of the items.
+ - `additionalCosts`: Discount on the [additional costs](https://docs.talon.one/docs/product/account/dev-tools/manage-additional-costs) of the items.
+ - `sessionTotal`: Discount on the total value of the customer session.
+
+ **Note:** [Cascading discounts](https://docs.talon.one/docs/product/applications/manage-general-settings#cascading-discounts) must be enabled for this property to be returned.
type: string
desiredValue:
- description: The original value of the discount.
+ description: _(Partial discounts enabled only)_ The monetary value of the
+ discount to be applied without considering budget limitations.
type: number
required:
- name
- value
+ title: setDiscount
type: object
SetDiscountPerItemEffectProps:
- description: |
- The properties specific to the `setDiscountPerItem` effect, triggered whenever a validated rule contained a
- "set per item discount" effect.
- This is a discount that will be applied either on a specific item, on a specific item + additional cost or on all additional costs per item.
- This depends on the chosen scope.
+ description: |-
+ This effect schema is returned when you use the **Discount individual items**, **Discount individual items pro rata**, or **Discount individual item in bundles** effect in a rule.
+
+ It indicates that a discount per item should be applied on the specific item specified in the effect.
+
+ The properties it contains depends on:
+
+ - Whether you used a pro rata effect or not.
+ - Whether you used an effect with bundles or not.
+ - Whether the partial discount feature is enabled.
+ example:
+ name: 'Discount on item #1'
+ value: 1.5
+ position: 1
+ subPosition: 1
+ desiredValue: 1.5
+ scope: price
+ totalDiscount: 1.5
+ desiredTotalDiscount: 1.5
+ bundleIndex: 1
+ bundleName: my_bundle
+ targetedItemPosition: 1
+ targetedItemSubPosition: 1
+ excludedFromPriceHistory: false
properties:
name:
- description: |
- The name of the discount. Contains a hashtag character indicating the index of the position of the item the discount applies
- to. It is identical to the value of the `position` property.
+ description: The description of this discount. `#number` is equal to the
+ `position` property.
type: string
value:
- description: The total monetary value of the discount.
+ description: The monetary value of the effective discount applied to the
+ item.
type: number
position:
- description: The index of the item in the cart items list on which this
+ description: The index of the item in the `cartItem` object on which this
discount should be applied.
type: number
subPosition:
- description: |
- For cart items with `quantity` > 1, the sub position indicates which item the discount applies to.
+ description: The index of the item unit in its line item.
type: number
desiredValue:
- description: The original value of the discount.
+ description: _(Partial discounts enabled only)_ The monetary value of the
+ discount to be applied to the item without considering budget limitations.
type: number
scope:
- description: |
- The scope of the discount:
- - `additionalCosts`: The discount applies to all the additional costs of the item.
- - `itemTotal`: The discount applies to the price of the item + the additional costs of the item.
- - `price`: The discount applies to the price of the item.
+ description: |-
+ What the discount applies to. Possible values:
+
+ - `price`: discount on the price of the item.
+ - `additionalCosts`: discount on the [additional cost](https://docs.talon.one/docs/product/account/dev-tools/manage-additional-costs) of the item.
+ - `itemTotal`: discount on the sum of price + additional cost of the item.
type: string
totalDiscount:
- description: The total discount given if this effect is a result of a prorated
- discount.
+ description: _(Pro rata discounts only)_ The monetary value of the total
+ effective discount
type: number
desiredTotalDiscount:
- description: The original total discount to give if this effect is a result
- of a prorated discount.
+ description: _(Pro rata discounts only)_ The monetary value of the total
+ discount to be applied without considering budget limitations
type: number
bundleIndex:
- description: The position of the bundle in a list of item bundles created
- from the same bundle definition.
+ description: _(Discounts with bundles only)_ The position of the specific
+ item bundle in the list of bundles created from the same bundle definition.
format: int64
type: integer
bundleName:
- description: The name of the bundle definition.
+ description: _(Discounts with bundles only)_ The name of the bundle definition.
type: string
targetedItemPosition:
- description: The index of the targeted bundle item on which the applied
- discount is based.
+ description: _(Discounting individual item in bundles only)_ The index of
+ the targeted bundle item on which the applied discount is based.
type: number
targetedItemSubPosition:
- description: |
- The sub-position of the targeted bundle item on which the applied discount is based.
+ description: _(Discounting individual item in bundles only)_ The sub-position
+ of the targeted bundle item on which the applied discount is based.
type: number
excludedFromPriceHistory:
description: When set to `true`, the applied discount is excluded from the
@@ -15623,50 +17081,62 @@ components:
- name
- position
- value
+ title: setDiscountPerItem
type: object
SetDiscountPerAdditionalCostEffectProps:
- description: The properties specific to the "setDiscountPerAdditionalCost" effect.
- This gets triggered whenever a validated rule contained a "set per additional
- cost discount" effect. This is a discount that should be applied on a specific
- additional cost.
+ description: |-
+ This effect indicates that a discount that should be applied on a specific additional cost. It is triggered whenever a rule containing a **Discount additional cost** effect is validated.
+
+ Enabling [partial rewards](https://docs.talon.one/docs/product/applications/manage-general-settings#partial-rewards) allows a rule that would fail because of insufficient budget to pass. The rule still fails when the budget reaches 0. Use the `desiredValue` property to identify the original amount of loyalty points.
+ example:
+ name: Shipping discount
+ additionalCostId: 1
+ additionalCost: shipping
+ value: 4.99
+ desiredValue: 4.99
properties:
name:
- description: The name / description of this discount
+ description: The name of the discount.
type: string
additionalCostId:
- description: The ID of the additional cost.
+ description: The identifier of the additional cost.
format: int64
type: integer
additionalCost:
- description: The name of the additional cost.
+ description: The API name of the additional cost.
type: string
value:
- description: The total monetary value of the discount.
+ description: The monetary value of the discount to apply.
type: number
desiredValue:
- description: The original value of the discount.
+ description: _(Partial discounts enabled only)_ The monetary value of the
+ discount to be applied without considering budget limitations.
type: number
required:
- additionalCost
- additionalCostId
- name
- value
+ title: setDiscountPerAdditionalCost
type: object
TriggerWebhookEffectProps:
- description: The properties specific to the "triggerWebhook" effect. This gets
- triggered whenever a validated rule contained a "trigger webhook" effect.
- This is communicated as an FYI and should usually not require action on your
- side.
+ description: This effect is triggered when a rule containing a [webhook effect](https://docs.talon.one/docs/product/rules/effects/available-effects#webhooks)
+ is validated. The details are shared with you for your information only. It
+ usually doesn't require an action on your side.
+ example:
+ webhookId: 7
+ webhookName: My Webhook
properties:
webhookId:
- description: The ID of the webhook that was triggered.
+ description: The internal ID of the webhook.
type: number
webhookName:
- description: The name of the webhook that was triggered.
+ description: The name of the webhook.
type: string
required:
- webhookId
- webhookName
+ title: triggerWebhook
type: object
LoyaltyCardIdentifier:
description: |
@@ -15677,11 +17147,42 @@ components:
pattern: ^[A-Za-z0-9._%+@-]+$
type: string
AddLoyaltyPointsEffectProps:
- description: |
- The properties specific to the "addLoyaltyPoints" effect. This gets triggered whenever a validated rule contained an "add loyalty" effect. These points are automatically stored and managed inside Talon.One.
+ description: |-
+ This effect indicates that a defined amount of loyalty points was successfully added to the customer's profile or to a loyalty card.
+
+ If you use the [Add loyalty points per item effect](https://docs.talon.one/docs/product/rules/effects/available-effects#reward-effects), use the `cartItemPosition` property to identify which item to add the loyalty points for.
+
+ Enabling [partial rewards](https://docs.talon.one/docs/product/applications/manage-general-settings#partial-rewards) allows a rule that would fail because of insufficient budget to pass. The rule still fails when the budget reaches 0. Use the `desiredValue` property to identify the original amount of loyalty points.
+
+ If you use **Add loyalty points per item** and if the session contains some cart items with _quantity > 1_, use the `cartItemSubPosition` property to identify the item unit in its line item. See the example below for more information.
+
+ If your list of cart items is a [bundle definition](https://docs.talon.one/docs/product/rules/create-and-manage-bundles), use the `bundleIndex` and `bundleName` properties to identify the bundle containing the items for which loyalty points are added.
+
+ If you have set custom activation and expiration dates for the loyalty points, use the `startDate` and `expiryDate` properties to identify when the reward will be active and when will expire.
+
+ If the loyalty program is [profile-based](https://docs.talon.one/docs/product/loyalty-programs/overview#loyalty-program-types), use the `recipientIntegrationId` property to identify the user who receives the loyalty points. If the loyalty program is [card-based](https://docs.talon.one/docs/product/loyalty-programs/overview#loyalty-program-types), use the `cardIdentifier` property to identify the loyalty card on which these points are added.
+
+ The points only persist when the session is closed.
+ example:
+ name: Points for purchase
+ programId: 5
+ subLedgerId: main
+ value: 100
+ desiredValue: 100
+ recipientIntegrationId: URNGV8294NV
+ startDate: 2024-01-01T00:00:00Z
+ expiryDate: 2025-01-01T00:00:00Z
+ transactionUUID: 8c2d3670-6ea5-4e9e-b5c6-e7e7b4a10111
+ cartItemPosition: 1
+ cartItemSubPosition: 1
+ cardIdentifier: loyalty-card-001
+ bundleIndex: 1
+ bundleName: my_bundle
+ awaitsActivation: false
+ validityDuration: 12M
properties:
name:
- description: The name / description of this loyalty point addition.
+ description: The reason of this loyalty point addition.
type: string
programId:
description: The ID of the loyalty program where these points were added.
@@ -15695,7 +17196,8 @@ components:
description: The amount of points that were added.
type: number
desiredValue:
- description: The original amount of loyalty points to be awarded.
+ description: (Partial rewards enabled only) The amount of loyalty points
+ to be awarded without considering budget limitations.
type: number
recipientIntegrationId:
description: The user for whom these points were added.
@@ -15703,23 +17205,23 @@ components:
maxLength: 1000
type: string
startDate:
- description: Date after which points will be valid.
+ description: The date after which the added points will be valid.
format: date-time
type: string
expiryDate:
- description: Date after which points will expire.
+ description: The date after which the added points will expire.
format: date-time
type: string
transactionUUID:
- description: The identifier of this addition in the loyalty ledger.
+ description: The identifier of this loyalty point transaction.
type: string
cartItemPosition:
- description: The index of the item in the cart items list on which the loyal
- points addition should be applied.
+ description: (_Add points per cart item_ only.) The index of the item in
+ the `cartItem` object for which these points were added.
type: number
cartItemSubPosition:
- description: |
- For cart items with `quantity` > 1, the sub position indicates to which item the loyalty points addition is applied.
+ description: (_Add points per cart item_ ) The index of the item unit in
+ its line item.
type: number
cardIdentifier:
description: |
@@ -15730,21 +17232,21 @@ components:
pattern: ^[A-Za-z0-9._%+@-]+$
type: string
bundleIndex:
- description: The position of the bundle in a list of item bundles created
- from the same bundle definition.
+ description: _(With bundles only)_ The position of the specific bundle in
+ the list of bundles created from the same bundle definition.
format: int64
type: integer
bundleName:
- description: The name of the bundle definition.
+ description: _(With bundles only)_ The name of the bundle definition.
type: string
awaitsActivation:
- description: |
- If `true`, the loyalty points remain pending until a specific action is complete. The `startDate` parameter automatically sets to `on_action`.
+ description: Indicates whether the points have an action-based start date.
+ This property is returned only for point transactions with an action-based
+ start date.
type: boolean
validityDuration:
- description: "The duration for which the points remain active, calculated\
- \ relative to the \nactivation date. \n\n**Note**: This value is returned\
- \ only if `awaitsActivation` is `true` \nand `expiryDate` is not set.\n"
+ description: The duration for which the points remain active, calculated
+ relative to their start date.
type: string
required:
- name
@@ -15753,34 +17255,51 @@ components:
- subLedgerId
- transactionUUID
- value
+ title: addLoyaltyPoints
type: object
DeductLoyaltyPointsEffectProps:
- description: The properties specific to the "deductLoyaltyPoints" effect. This
- gets triggered whenever a validated rule contained a condition to only trigger
- when the given number of loyalty points could be deduced. These points are
- automatically stored and managed inside Talon.One.
+ description: |-
+ This effect is triggered when a customer redeems loyalty points. The points are deducted from their active point balance.
+
+ If the loyalty program is card-based, use the `cardIdentifier` property to identify the loyalty card from which these points are deducted.
+
+ The Rule Engine deducts points in this order:
+
+ - Points with the earliest expiry date are deducted first, regardless of when they were added.
+ - Points with an unlimited expiry date are deducted last.
+ - For points with an unlimited expiry date, the points awarded first are deducted first.
+
+ The points only persist when the session is closed.
+ example:
+ ruleTitle: Deduct points on return
+ programId: 5
+ subLedgerId: main
+ value: 50
+ transactionUUID: 9f3e4781-7fb6-5f0f-c6d7-f8f8c5b21222
+ name: Points deducted for return
+ cardIdentifier: loyalty-card-001
properties:
ruleTitle:
description: The title of the rule that contained triggered this points
deduction.
type: string
programId:
- description: The ID of the loyalty program where these points were added.
+ description: The ID of the loyalty program from which these points were
+ deducted.
format: int64
type: integer
subLedgerId:
- description: The ID of the subledger within the loyalty program where these
- points were added.
+ description: The ID of the subledger within the loyalty program from which
+ these points were deducted.
type: string
value:
description: The amount of points that were deducted.
type: number
transactionUUID:
- description: The identifier of this deduction in the loyalty ledger.
+ description: The identifier of this loyalty point transaction.
type: string
name:
- description: |
- The name property gets one of the following two values. It can be the loyalty program name or it can represent a reason for the respective deduction of loyalty points. The latter is an optional value defined in a deduction rule.
+ description: The reason of this loyalty points deduction.
type: string
cardIdentifier:
description: |
@@ -15797,21 +17316,30 @@ components:
- subLedgerId
- transactionUUID
- value
+ title: deductLoyaltyPoints
type: object
ChangeLoyaltyTierLevelEffectProps:
- description: |
- The properties specific to the "changeLoyaltyTierLevel" effect.
- This is triggered whenever the user's loyalty tier is upgraded due to a validated rule that contained an "addLoyaltyPoints" effect.
+ description: |-
+ This effect indicates that a customer's loyalty tier has been upgraded.
+
+ This effect is generated only when the [Add loyalty points](https://docs.talon.one/docs/product/rules/effects/use-effects#add-loyalty-points) and the [Add loyalty points per cart item](https://docs.talon.one/docs/product/rules/effects/use-effects#add-loyalty-points-per-cart-item) effects are triggered for a particular customer, and, as a result, the customer's loyalty tier is upgraded.
+ example:
+ ruleTitle: Tier upgrade on purchase
+ programId: 5
+ subLedgerId: main
+ previousTierName: Silver
+ newTierName: Gold
+ expiryDate: 2025-12-31T23:59:59Z
properties:
ruleTitle:
description: The title of the rule that triggered the tier upgrade.
type: string
programId:
- description: The ID of the loyalty program where these points were added.
+ description: The ID of the loyalty program where the points were added.
format: int64
type: integer
subLedgerId:
- description: The ID of the subledger within the loyalty program where these
+ description: The ID of the subledger within the loyalty program where the
points were added.
type: string
previousTierName:
@@ -15829,17 +17357,24 @@ components:
- programId
- ruleTitle
- subLedgerId
+ title: changeLoyaltyTierLevel
type: object
AddFreeItemEffectProps:
- description: The properties specific to the "addFreeItem" effect. This gets
- triggered whenever a validated rule contained an "add free item" effect.
+ description: |-
+ This effect indicates that a free item should be added to the shopping cart in the current session. In this example, add the SKU to the shopping cart and set its price to `0`.
+
+ The effect of a successful referral can mean a free item for someone else, such as the referrer.
+ example:
+ sku: SKU1241028
+ name: Free Gift Item
+ desiredQuantity: 1
properties:
sku:
description: SKU of the item that needs to be added.
example: SKU1241028
type: string
name:
- description: The name / description of the effect
+ description: Description of the effect.
type: string
desiredQuantity:
description: The original quantity in case a partial reward was applied.
@@ -15848,138 +17383,191 @@ components:
required:
- name
- sku
+ title: addFreeItem
type: object
ShowNotificationEffectProps:
- description: The properties specific to the "showNotification" effect. This
- gets triggered whenever a validated rule contained a "show notification" effect.
+ description: |-
+ You can use notifications to inform customers of certain events. There are four types of notification messages:
+
+ - `Info`
+ - `Offer`
+ - `Error`
+ - `Misc`
+
+ It is up to you to use the Rule Builder to decide why and when to show notifications. Notifications can be used as both rule effects and failure effects.
+
+ A common use case is to display the notification at the top of the cart view in your web app. You can use the notification type to vary the styling of the notification message.
+ example:
+ notificationType: info
+ title: Discount applied
+ body: You have received a 10% discount on your order.
properties:
notificationType:
- description: The type of notification that should be shown (e.g. error/warning/info).
+ description: The type of notification.
type: string
title:
- description: Title of the notification.
+ description: The title of the notification.
type: string
body:
- description: Body of the notification.
+ description: The body of the notification.
type: string
required:
- body
- notificationType
- title
+ title: showNotification
type: object
UpdateAttributeEffectProps:
- description: The properties specific to the "updateAttribute" effect. This gets
- triggered whenever a validated rule contained an "update an attribute" effect.
+ description: This effect indicates that a rule containing an [Update attribute
+ value](https://docs.talon.one/docs/product/rules/effects/available-effects#update-effects)
+ or [Update cart item attribute value](https://docs.talon.one/docs/product/rules/effects/available-effects#update-effects)
+ was validated. You should update the value of the attribute in your system
+ based on the content of the returned effect.
+ example:
+ path: Session.Attributes.loyaltyTier
+ value: Gold
properties:
path:
- description: The exact path of the attribute that was updated.
+ description: The entity type and the attribute name.
type: string
value:
- description: |
- The new value of this attribute. The value can be of the following types:
- - boolean
- - location
- - number
- - string
- - time
- - list of any of those types
+ description: The new value of the attribute.
type: object
required:
- path
- value
+ title: updateAttribute
type: object
RollbackCouponEffectProps:
- description: The properties specific to the "rollbackCoupon" effect. This gets
- triggered whenever previously closed session is now cancelled and a coupon
- redemption was cancelled on our internal usage limit counters.
+ description: |-
+ This effect indicates that a coupon code redemption has been rolled back. The coupon becomes redeemable again.
+
+ The effect is triggered when you [cancel](https://docs.talon.one/docs/dev/concepts/entities/customer-sessions#manage-the-sessions-state) a session where a coupon was accepted. See an example of use in the [cancelling a session tutorial](https://docs.talon.one/docs/dev/tutorials/roll-back-effects).
+ example:
+ value: COUP-XYZ789
properties:
value:
- description: The coupon code whose usage has been rolled back.
+ description: The coupon code whose redemption has been rolled back.
type: string
required:
- value
+ title: rollbackCoupon
type: object
RollbackReferralEffectProps:
- description: The properties specific to the "rollbackReferral" effect. This
- gets triggered whenever previously closed session is now cancelled and a referral
- redemption was cancelled on our internal usage limit counters.
+ description: |-
+ This effect indicates that the redemption of the referral code has been rolled back. It triggers when a closed session that redeemed a referral is gets cancelled. The code becomes redeemable again.
+
+ For more information about session states, see [Managing states](https://docs.talon.one/docs/dev/concepts/entities/customer-sessions#customer-session-states).
+ example:
+ value: REF-ABC123
properties:
value:
- description: The referral code whose usage has been rolled back.
+ description: The referral code to be rolled back.
type: string
required:
- value
+ title: rollbackReferral
type: object
RollbackDiscountEffectProps:
- description: The properties specific to the "rollbackDiscount" effect. This
- gets triggered whenever previously closed session is now cancelled or partially
- returned and a setDiscount effect was cancelled on our internal discount limit
- counters.
+ description: |-
+ This effect indicates that a discounted session, cart item, or additional cost has been cancelled or partially returned. This effect can only happen when you set the status of a session to `cancel` or the status changes to `partially_returned`.
+
+ If the session contains some cart items with _quantity > 1_, use the `cartItemSubPosition` property to identify the specific item unit in its line item. See the example below.
+ example:
+ name: 10% Off
+ value: 2.5
+ cartItemPosition: 1
+ cartItemSubPosition: 1
+ additionalCostId: 1
+ additionalCost: shipping
+ scope: sessionTotal
properties:
name:
- description: The name of the "setDiscount" effect that was rolled back.
+ description: The name of the discount effect that was rolled back.
type: string
value:
- description: The value of the discount that was rolled back.
+ description: The monetary value of the discount that was rolled back.
type: number
cartItemPosition:
- description: The index of the item in the cart items for which the discount
+ description: The index of the item in the `cartItem` object whose discount
+ was rolled back, or the unit containing the additional cost whose discount
was rolled back.
type: number
cartItemSubPosition:
- description: |
- For cart items with `quantity` > 1, the subposition returns the index of the item unit in its line item.
+ description: The index of the item unit in its line item for which the discount
+ was rolled back.
type: number
additionalCostId:
- description: The ID of the additional cost that was rolled back.
+ description: _Only when rolling back [setDiscountPerAdditionalCost](https://docs.talon.one/docs/dev/integration-api/api-effects#setdiscountperadditionalcost)
+ and [setDiscountPerAdditionalCostPerItem](https://docs.talon.one/docs/dev/integration-api/api-effects#setdiscountperadditionalcostperitem)_
+ The ID of the additional cost to be discounted.
format: int64
type: integer
additionalCost:
- description: The name of the additional cost that was rolled back.
+ description: The API name of the additional cost whose discount was rolled
+ back.
type: string
scope:
- description: |
- The scope of the rolled back discount
+ description: |-
+ The scope of the rolled back discount.
+
- For a discount per session, it can be one of `cartItems`, `additionalCosts` or `sessionTotal`
- For a discount per item, it can be one of `price`, `additionalCosts` or `itemTotal`
type: string
required:
- name
- value
+ title: rollbackDiscount
type: object
RollbackAddedLoyaltyPointsEffectProps:
- description: The properties specific to the "rollbackAddedLoyaltyPoints" effect.
- This gets triggered whenever previously a closed session with an addLoyaltyPoints
- effect is cancelled.
+ description: |-
+ This effect is triggered in the following cases:
+
+ - A session was cancelled in which loyalty points have been added.
+ - A session was partially returned and loyalty point were added by the returned items. See [returning items](https://docs.talon.one/docs/dev/tutorials/partially-return-a-session).
+
+ If you use the [Add loyalty points per item effect](https://docs.talon.one/docs/product/rules/effects/available-effects#reward-effects), use the `cartItemPosition` property to identify which items the loyalty points were rolled back for.
+
+ If you use **Add loyalty points per item** and if the session contains some cart items with _quantity > 1_, use the `cartItemSubPosition` property to identify the item unit in its line item.
+
+ If the loyalty program is [profile-based](https://docs.talon.one/docs/product/loyalty-programs/overview#loyalty-program-types), use the `recipientIntegrationId` property to identify the user for whom the loyalty points are rolled back. If the loyalty program is [card-based](https://docs.talon.one/docs/product/loyalty-programs/overview#loyalty-program-types), use the `cardIdentifier` property to identify the loyalty card where the points were originally added.
+ example:
+ programId: 5
+ subLedgerId: main
+ value: 100
+ recipientIntegrationId: URNGV8294NV
+ transactionUUID: 8c2d3670-6ea5-4e9e-b5c6-e7e7b4a10111
+ cartItemPosition: 1
+ cartItemSubPosition: 1
+ cardIdentifier: loyalty-card-001
properties:
programId:
- description: The ID of the loyalty program where the points were originally
- added.
+ description: The ID of the loyalty program where these points were rolled
+ back.
format: int64
type: integer
subLedgerId:
description: The ID of the subledger within the loyalty program where these
- points were originally added.
+ points were rolled back.
type: string
value:
description: The amount of points that were rolled back.
type: number
recipientIntegrationId:
- description: The user for whom these points were originally added.
+ description: The user for whom these points were rolled back.
example: URNGV8294NV
maxLength: 1000
type: string
transactionUUID:
- description: The identifier of 'deduction' entry added to the ledger as
- the `addLoyaltyPoints` effect is rolled back.
+ description: The identifier of this loyalty point transaction.
type: string
cartItemPosition:
- description: The index of the item in the cart items for which the loyalty
- points were rolled back.
+ description: (_Add points per cart item_ only.) The index of the item in
+ the `cartItem` object for which these points were rolled back.
type: number
cartItemSubPosition:
- description: |
- For cart items with `quantity` > 1, the sub-position indicates to which item the loyalty points were rolled back.
+ description: (_Add points per cart item_ ) The index of the item unit in
+ its line item.
type: number
cardIdentifier:
description: |
@@ -15995,11 +17583,30 @@ components:
- subLedgerId
- transactionUUID
- value
+ title: rollbackAddedLoyaltyPoints
type: object
RollbackDeductedLoyaltyPointsEffectProps:
- description: The properties specific to the "rollbackDeductedLoyaltyPoints"
- effect. This effect is triggered whenever a previously closed session is cancelled
- and a deductLoyaltyPoints effect was revoked.
+ description: |-
+ This effect is triggered in the following cases:
+
+ - A session is _cancelled_ and this session deducted loyalty points. The rollback action returns the redeemed loyalty points to the customer.
+ - A session is impacted by a _partial return_. Only added loyalty points that are still **pending** are rolled back.
+ - A session in which loyalty points were spent is reopened.
+
+ See the [session states](https://docs.talon.one/docs/dev/concepts/entities/customer-sessions#customer-session-states).
+
+ If you set custom activation and expiration dates for the loyalty points, use the `startDate` and `expiryDate` properties to identify when the reward will be active and when will expire.
+
+ If the loyalty program is [profile-based](https://docs.talon.one/docs/product/loyalty-programs/profile-based/profile-based-overview), use the `recipientIntegrationId` property to identify the user who receives the loyalty points. If the loyalty program is [card-based](https://docs.talon.one/docs/product/loyalty-programs/overview#loyalty-program-types), use the `cardIdentifier` property to identify the loyalty card where the points are reimbursed.
+ example:
+ programId: 5
+ subLedgerId: main
+ value: 50
+ recipientIntegrationId: URNGV8294NV
+ startDate: 2024-01-01T00:00:00Z
+ expiryDate: 2025-01-01T00:00:00Z
+ transactionUUID: 9f3e4781-7fb6-5f0f-c6d7-f8f8c5b21222
+ cardIdentifier: loyalty-card-001
properties:
programId:
description: The ID of the loyalty program where these points were reimbursed.
@@ -16010,7 +17617,7 @@ components:
points were reimbursed.
type: string
value:
- description: The amount of reimbursed points that were added.
+ description: The amount of points that were reimbursed.
type: number
recipientIntegrationId:
description: The user for whom these points were reimbursed.
@@ -16018,16 +17625,15 @@ components:
maxLength: 1000
type: string
startDate:
- description: Date after which the reimbursed points will be valid.
+ description: The date after which the reimbursed points will be valid.
format: date-time
type: string
expiryDate:
- description: Date after which the reimbursed points will expire.
+ description: The date after which the reimbursed points will expire.
format: date-time
type: string
transactionUUID:
- description: The identifier of 'addition' entries added to the ledger as
- the `deductLoyaltyPoints` effect is rolled back.
+ description: The identifier of this loyalty point transaction.
type: string
cardIdentifier:
description: |
@@ -16043,11 +17649,24 @@ components:
- subLedgerId
- transactionUUID
- value
+ title: rollbackDeductedLoyaltyPoints
type: object
ShowBundleMetadataEffectProps:
- description: |
+ description: |-
This effect is **deprecated**.
- The properties specific to the "ShowBundleMetadata" effect. This effect contains information that allows you to associate the discounts from a rule in a bundle campaign with specific cart items. This way you can distinguish from "normal" discounts that were not the result of a product bundle.
+
+ The `ShowBundleMetadata` effect contains information that allows you to associate
+ the discounts from a rule in a bundle campaign with specific cart items.
+ This way you can distinguish from "normal" discounts that were not the result of a product bundle.
+ example:
+ description: Buy 2 get 1 free bundle
+ bundleAttributes:
+ - category
+ - brand
+ itemsIndices:
+ - 0
+ - 1
+ - 2
properties:
description:
description: Description of the product bundle.
@@ -16067,33 +17686,40 @@ components:
- bundleAttributes
- description
- itemsIndices
+ title: showBundleMetadata
type: object
+ x-deprecated: true
AwardGiveawayEffectProps:
- description: The properties specific to the "awardGiveaway" effect. This effect
- contains information on the giveaway item, and which profile it was awarded
- to.
+ description: This effect indicates the awarded giveaway item and to which profile
+ the item was awarded. Learn more about [giveaways](https://docs.talon.one/docs/product/giveaways/overview).
+ example:
+ poolId: 2
+ poolName: My pool
+ recipientIntegrationId: URNGV8294NV
+ giveawayId: 5
+ code: 57638t-67439hty
properties:
poolId:
- description: The ID of the giveaways pool the code was taken from.
+ description: The internal ID of the giveaway pool.
example: 2
format: int64
type: integer
poolName:
- description: The name of the giveaways pool the code was taken from.
+ description: The name of the giveaway pool.
example: My pool
type: string
recipientIntegrationId:
- description: The integration ID of the profile that was awarded the giveaway.
+ description: The integration ID of the customer that receives the giveaway.
example: URNGV8294NV
maxLength: 1000
type: string
giveawayId:
- description: The internal ID for the giveaway that was awarded.
+ description: The internal ID of the giveaway.
example: 5
format: int64
type: integer
code:
- description: The giveaway code that was awarded.
+ description: The giveaway code to be rewarded.
example: 57638t-67439hty
type: string
required:
@@ -16102,25 +17728,29 @@ components:
- poolId
- poolName
- recipientIntegrationId
+ title: awardGiveaway
type: object
WillAwardGiveawayEffectProps:
- description: The properties specific to the "awardGiveaway" effect when the
- session is not closed yet. This effect replaces "awardGiveaway" only when
- updating a session with any state other than "closed". This is to ensure no
- giveaway codes are leaked when they are still not guaranteed to be awarded.
+ description: |-
+ The equivalent of the `awardGiveaway` effect but returned when updating a session with any state other than `closed`. This ensures no giveaway codes are leaked when they are still not guaranteed to be awarded.
+
+ For more information about session states, see [Manage the session's state](https://docs.talon.one/docs/dev/concepts/entities/customer-sessions#manage-the-sessions-state).
+ example:
+ poolId: 2
+ poolName: My pool
+ recipientIntegrationId: URNGV8294NV
properties:
poolId:
- description: The ID of the giveaways pool the code will be taken from.
+ description: The internal ID of the giveaway pool.
example: 2
format: int64
type: integer
poolName:
- description: The name of the giveaways pool the code will be taken from.
+ description: The name of the giveaway pool.
example: My pool
type: string
recipientIntegrationId:
- description: The integration ID of the profile that will be awarded the
- giveaway.
+ description: The integration ID of the customer that receives the giveaway.
example: URNGV8294NV
maxLength: 1000
type: string
@@ -16128,19 +17758,37 @@ components:
- poolId
- poolName
- recipientIntegrationId
+ title: willAwardGiveaway
type: object
ErrorEffectProps:
- description: Whenever an error occurred during evaluation, we return an error
- effect. This should never happen for rules created in the rule builder.
+ description: This effect is triggered whenever an error occurs during rule evaluation.
+ This effect only provides information about what the error is.
+ example:
+ message: An unexpected error occurred during rule evaluation.
properties:
message:
description: The error message.
type: string
required:
- message
+ title: error
type: object
CustomEffectProps:
- description: Effect containing custom payload.
+ description: |-
+ If you want to return data as an effect but no effect matches your use case, you can [create a custom effect](https://docs.talon.one/docs/dev/tutorials/create-custom-effects).
+
+ Custom effects can be used as both rule effects and failure effects.
+
+ The structure of a custom effect depends on your specifications but is always named `customEffect`.
+ example:
+ effectId: 1
+ name: my_custom_effect
+ cartItemPosition: 1
+ cartItemSubPosition: 2
+ bundleIndex: 1
+ bundleName: my_bundle
+ payload:
+ key: value
properties:
effectId:
description: The ID of the custom effect that was triggered.
@@ -16180,38 +17828,48 @@ components:
- effectId
- name
- payload
+ title: customEffect
type: object
SetDiscountPerAdditionalCostPerItemEffectProps:
- description: The properties specific to the "setDiscountPerAdditionalCostPerItem"
- effect. This gets triggered whenever a validated rule contained a "set discount
- per additional cost per item" effect. This is a discount that should be applied
- on a specific additional cost in a specific item.
+ description: |-
+ This effect indicates that a discount of a specific additional cost within a specific item should be applied. It gets triggered whenever a rule containing a **Discount additional cost per item** effect is validated.
+
+ Use this effect when **all** items in the cart have an additional cost. If one of more items do not have an additional cost, the rule will fail.
+ example:
+ name: 'Shipping discount on item #1'
+ additionalCostId: 1
+ value: 4.99
+ position: 1
+ subPosition: 1
+ additionalCost: shipping
+ desiredValue: 4.99
properties:
name:
- description: The name / description of this discount
+ description: The description of this discount. `#number` is appended to
+ the name. It is equal to the `position` property.
type: string
additionalCostId:
- description: The ID of the additional cost.
+ description: The identifier of the additional cost to be discounted.
format: int64
type: integer
value:
- description: The total monetary value of the discount.
+ description: The monetary value of the effective discount applied to the
+ item's additional cost.
type: number
position:
- description: The index of the item in the cart item list containing the
- additional cost to be discounted.
+ description: The index of the item in the `cartItem` object containing the
+ additional cost that this discount applies to.
type: number
subPosition:
- description: |
- For cart items with `quantity` > 1, the sub position indicates which item the discount applies to.
+ description: The index of the item unit in its line item.
type: number
additionalCost:
- description: The name of the additional cost.
+ description: The API name of the additional cost to be discounted.
type: string
desiredValue:
- description: |
- Only with [partial discounts enabled](https://docs.talon.one/docs/product/campaigns/campaign-evaluation/#partial-discounts).
- Represents the monetary value of the discount to be applied to additional discount without considering budget limitations.
+ description: _[(Partial discounts enabled only)](https://docs.talon.one/docs/product/applications/manage-general-settings#partial-discounts)_.
+ The monetary value of the discount to be applied to the additional cost
+ without considering budget limitations.
type: number
required:
- additionalCost
@@ -16219,17 +17877,24 @@ components:
- name
- position
- value
+ title: setDiscountPerAdditionalCostPerItem
type: object
ReserveCouponEffectProps:
- description: The properties specific to the "reserveCoupon" effect. This gets
- triggered whenever a validated rule contained a "reserve coupon" effect. This
- reserves the coupon currently on scope to the profile on scope.
+ description: |-
+ This effect indicates that the given coupon code was reserved for the given customer.
+
+ Talon.One provides soft and hard reservations. For more information, see [Reserve a coupon code](https://docs.talon.one/docs/product/rules/effects/use-effects#reserve-a-coupon-code).
+ example:
+ couponValue: COUP-XYZ789
+ profileIntegrationId: customer_profile_id_1
+ isNewReservation: true
properties:
couponValue:
- description: The value of the coupon currently on scope.
+ description: The coupon code that was created.
type: string
profileIntegrationId:
- description: The ID of this customer profile in the third-party integration.
+ description: The integration identifier of the customer for whom this coupon
+ was reserved.
type: string
isNewReservation:
description: Indicates whether this is a new coupon reservation or not.
@@ -16238,10 +17903,18 @@ components:
- couponValue
- isNewReservation
- profileIntegrationId
+ title: reserveCoupon
type: object
AddToAudienceEffectProps:
- description: The properties specific to the "addToAudience" effect. This gets
- triggered whenever a validated rule contains an "addToAudience" effect.
+ description: This effect is triggered when a rule containing an [Update audience](https://docs.talon.one/docs/product/rules/effects/use-effects#update-an-audience)
+ effect with **Add customer to an audience** selected is validated. It indicates
+ that a customer was added to an audience and is returned when a customer session
+ is opened, updated, or closed.
+ example:
+ audienceId: 10
+ audienceName: My audience
+ profileIntegrationId: URNGV8294NV
+ profileId: 150
properties:
audienceId:
description: The internal ID of the audience.
@@ -16262,10 +17935,18 @@ components:
example: 150
format: int64
type: integer
+ title: addToAudience
type: object
RemoveFromAudienceEffectProps:
- description: The properties specific to the "removeFromAudience" effect. This
- gets triggered whenever a validated rule contains a "removeFromAudience" effect.
+ description: This effect is triggered when a rule containing an [Update audience](https://docs.talon.one/docs/product/rules/effects/use-effects#update-an-audience)
+ effect with **Remove customer from an audience** selected is validated. It
+ indicates that a customer was removed from an audience and is returned when
+ a customer session is opened, updated, or closed.
+ example:
+ audienceId: 10
+ audienceName: My audience
+ profileIntegrationId: URNGV8294NV
+ profileId: 150
properties:
audienceId:
description: The internal ID of the audience.
@@ -16286,11 +17967,21 @@ components:
example: 150
format: int64
type: integer
+ title: removeFromAudience
type: object
IncreaseAchievementProgressEffectProps:
- description: The properties specific to the "increaseAchievementProgress" effect.
- This gets triggered whenever a validated rule contained an "increase customer
- progress" effect.
+ description: |-
+ This effect indicates that the customer's progress in an achievement was updated during the current session. It is triggered when a rule using the [Update customer progress](https://docs.talon.one/docs/product/rules/effects/use-effects#update-customer-progress) effect is successfully validated.
+
+ For [on-completion achievements](https://docs.talon.one/docs/product/achievements/overview#recurring-on-completion-achievements), any customer progress exceeding the target automatically starts a new iteration. This generates a new `progressTrackerId` for each iteration, and there can be multiple progress updates for the same achievement from a single validation of this effect.
+ example:
+ achievementId: 10
+ achievementName: FreeCoffee10Orders
+ progressTrackerId: 42
+ delta: 1
+ value: 7
+ target: 10
+ isJustCompleted: false
properties:
achievementId:
description: The internal ID of the achievement.
@@ -16302,12 +17993,14 @@ components:
example: FreeCoffee10Orders
type: string
progressTrackerId:
- description: The internal ID of the achievement progress tracker.
+ description: |-
+ The internal ID of the customer progress tracker.
+ For [on-completion achievements](https://docs.talon.one/docs/product/achievements/overview#recurring-on-completion-achievements), this effect generates a unique ID for each iteration.
format: int64
type: integer
delta:
description: The value by which the customer's current progress in the achievement
- is increased.
+ has increased.
type: number
value:
description: The current progress of the customer in the achievement.
@@ -16326,12 +18019,22 @@ components:
- isJustCompleted
- target
- value
+ title: increaseAchievementProgress
type: object
RollbackIncreasedAchievementProgressEffectProps:
- description: The properties specific to the "rollbackIncreasedAchievementProgress"
- effect. This gets triggered whenever a closed session where the `increaseAchievementProgress`
- effect was triggered is cancelled. This is applicable only when the customer
- has not completed the achievement.
+ description: |-
+ This effect indicates that the customer's progress in an achievement was rolled back.
+
+ The Rule Engine triggers this effect when you cancel or [reopen a customer session](https://docs.talon.one/integration-api#tag/Customer-sessions/operation/reopenCustomerSession) that previously validated the [Update customer progress](https://docs.talon.one/docs/product/rules/effects/use-effects#update-customer-progress) effect and triggered the [increaseAchievementProgress](https://docs.talon.one/docs/dev/integration-api/api-effects#increaseachievementprogress) API effect.
+
+ The effect is also triggered for completed achievements if the **Allow progress rollback for completed achievements** setting is enabled. You can enable this through the [Campaign Manager](https://docs.talon.one/docs/product/achievements/manage-achievements) or the [Management API](https://docs.talon.one/management-api#tag/Achievements/operation/createAchievement) by setting the `achievementAllowRollbackAfterCompletion` property to `true`. This setting only applies to one-time and recurring on expiration achievements.
+ example:
+ achievementId: 10
+ achievementName: FreeCoffee10Orders
+ progressTrackerId: 42
+ decreaseProgressBy: 1
+ currentProgress: 6
+ target: 10
properties:
achievementId:
description: The internal ID of the achievement.
@@ -16348,7 +18051,7 @@ components:
type: integer
decreaseProgressBy:
description: The value by which the customer's current progress in the achievement
- is decreased.
+ has decreased.
type: number
currentProgress:
description: The current progress of the customer in the achievement.
@@ -16363,6 +18066,7 @@ components:
- decreaseProgressBy
- progressTrackerId
- target
+ title: rollbackIncreasedAchievementProgress
type: object
LoyaltyLedgerEntryExpiryDateChange:
description: The properties specific to effects for changing the expiry dates
@@ -16389,7 +18093,12 @@ components:
type: object
ExtendLoyaltyPointsExpiryDateEffectProps:
description: |
- The properties specific to the "extendLoyaltyPointsExpiryDate" effect. This gets triggered when a validated rule contains the "extend expiry date" effect. The current expiry date gets extended by the time frame given in the effect.
+ If loyalty points have an expiry date, this effect extends the expiry of all active and pending point transactions by a selected duration.
+ example:
+ programId: 5
+ subLedgerId: main
+ extensionDuration: 12h
+ affectedTransactions: []
properties:
programId:
description: ID of the loyalty program that contains these points.
@@ -16397,7 +18106,7 @@ components:
type: integer
subLedgerId:
description: API name of the loyalty program subledger that contains these
- points. added.
+ points.
type: string
extensionDuration:
description: |
@@ -16433,6 +18142,217 @@ components:
- extensionDuration
- programId
- subLedgerId
+ title: extendLoyaltyPointsExpiryDate
+ type: object
+ SetLoyaltyPointsExpiryDateEffectProps:
+ description: |
+ This effect updates the expiry date of all active, pending, and unlimited point transactions to a specific date.
+ example:
+ programId: 5
+ subLedgerId: main
+ newExpiryDate: 2024-07-24T14:15:22Z
+ affectedTransactions: []
+ properties:
+ programId:
+ description: ID of the loyalty program that contains these points.
+ format: int64
+ type: integer
+ subLedgerId:
+ description: API name of the loyalty program subledger that contains these
+ points.
+ type: string
+ newExpiryDate:
+ description: The specified expiry date and time for all active and pending
+ point transactions in the loyalty program subledger.
+ example: 2024-07-24T14:15:22Z
+ format: date-time
+ type: string
+ affectedTransactions:
+ description: List of transactions affected by the expiry date update.
+ items:
+ $ref: '#/components/schemas/LoyaltyLedgerEntryExpiryDateChange'
+ type: array
+ required:
+ - newExpiryDate
+ - programId
+ - subLedgerId
+ title: setLoyaltyPointsExpiryDate
+ type: object
+ JoinLoyaltyProgramEffectProps:
+ description: |
+ This effect indicates that a customer profile was joined to a profile-based loyalty program with the specified join date.
+
+ > [!note] **Note**
+ > - This effect requires a customer profile. It does not work for anonymous sessions.
+ > - The effect fails if the customer profile has already joined the loyalty program.
+ example:
+ programId: 5
+ joinDate: 2026-01-02T03:04:05Z
+ properties:
+ programId:
+ description: The ID of the loyalty program the customer profile is joined
+ to.
+ example: 5
+ format: int64
+ type: integer
+ joinDate:
+ description: The date and time when the customer profile joined the loyalty
+ program.
+ example: 2026-01-02T03:04:05Z
+ format: date-time
+ type: string
+ required:
+ - joinDate
+ - programId
+ title: joinLoyaltyProgram
+ type: object
+ StartAchievementProgressEffectProps:
+ description: |
+ This effect indicates that the customer's progress in an achievement was started during the current session. The progress value is set to 0. It is triggered when a rule using the [Start achievement progress](https://docs.talon.one/docs/product/rules/effects/use-effects#start-achievement-progress) effect is successfully validated.
+
+ This effect only marks the start of progress tracking. It can fire together with `increaseAchievementProgress` when progress starts and increases at the same time. In that case, both effects share the same `progressTrackerId`, `startDate`, and `endDate`.
+
+ For [on-completion achievements](https://docs.talon.one/docs/product/campaigns/achievements/overview#recurring-on-completion-achievements), each iteration also gets its own `startDate` and `endDate`.
+ example:
+ achievementId: 10
+ achievementName: FreeCoffee10Orders
+ progressTrackerId: 42
+ target: 10
+ startDate: 2026-04-16T15:25:37Z
+ endDate: 2026-04-30T11:24:59Z
+ properties:
+ achievementId:
+ description: The ID of the achievement.
+ example: 10
+ format: int64
+ type: integer
+ achievementName:
+ description: The name of the achievement.
+ example: FreeCoffee10Orders
+ type: string
+ progressTrackerId:
+ description: |-
+ The ID of the customer's progress tracker for this achievement.
+
+ For [on-completion achievements](https://docs.talon.one/docs/product/campaigns/achievements/overview#recurring-on-completion-achievements), this effect generates a unique ID for each iteration.
+ example: 42
+ format: int64
+ type: integer
+ target:
+ description: The target value to complete the achievement.
+ example: 10.0
+ type: number
+ startDate:
+ description: Timestamp at which the customer's progress started.
+ example: 2026-04-16T15:25:37Z
+ format: date-time
+ type: string
+ endDate:
+ description: |-
+ Timestamp at which this progress period ends.
+
+ Only returned for achievements that have a fixed end date. [On-completion achievements](https://docs.talon.one/docs/product/campaigns/achievements/overview#recurring-on-completion-achievements) have no end date.
+ example: 2026-04-30T11:24:59Z
+ format: date-time
+ type: string
+ required:
+ - achievementId
+ - achievementName
+ - startDate
+ - target
+ title: startAchievementProgress
+ type: object
+ UnlockRewardEffectProps:
+ description: The properties specific to the "unlockReward" effect. This gets
+ triggered whenever a validated rule unlocks a reward for a customer profile.
+ properties:
+ integrationId:
+ description: The integration ID assigned to the customer reward unlock.
+ example: reward-unlock-123
+ type: string
+ rewardId:
+ description: The internal ID of the reward that was unlocked.
+ example: 5
+ format: int64
+ type: integer
+ applicationId:
+ description: The internal ID of the application the reward belongs to.
+ example: 1
+ format: int64
+ type: integer
+ profileIntegrationId:
+ description: The integration ID of the customer profile that unlocked the
+ reward.
+ example: customer1
+ type: string
+ unlockedAt:
+ description: The time the reward was unlocked.
+ example: 2024-05-29T15:04:05Z
+ format: date-time
+ type: string
+ cardIdentifier:
+ description: |
+ The identifier of the loyalty card, which must match the regular expression `^[A-Za-z0-9._%+@-]+$`.
+ example: summer-loyalty-card-0543
+ maxLength: 108
+ minLength: 4
+ pattern: ^[A-Za-z0-9._%+@-]+$
+ type: string
+ required:
+ - applicationId
+ - integrationId
+ - profileIntegrationId
+ - rewardId
+ - unlockedAt
+ title: unlockReward
+ type: object
+ UseRewardEffectProps:
+ description: This effect is triggered when a rule that uses a customer's unlocked
+ reward is validated during session evaluation.
+ properties:
+ integrationId:
+ description: The integration ID of the customer reward that was used.
+ example: 5c0b5e6d-3f8a-4c2b-9f1e-2a7d6b4c8e90
+ type: string
+ rewardId:
+ description: The ID of the reward that was used.
+ example: 5
+ format: int64
+ type: integer
+ applicationId:
+ description: The ID of the Application the reward belongs to.
+ example: 1
+ format: int64
+ type: integer
+ required:
+ - applicationId
+ - integrationId
+ - rewardId
+ title: useReward
+ type: object
+ RollbackUseRewardEffectProps:
+ description: This effect is triggered when a reward usage has been rolled back
+ by a session cancellation.
+ properties:
+ integrationId:
+ description: The integration ID of the customer reward that was rolled back.
+ example: 5c0b5e6d-3f8a-4c2b-9f1e-2a7d6b4c8e90
+ type: string
+ rewardId:
+ description: The ID of the reward that was rolled back.
+ example: 5
+ format: int64
+ type: integer
+ applicationId:
+ description: The ID of the Application the reward belongs to.
+ example: 1
+ format: int64
+ type: integer
+ required:
+ - applicationId
+ - integrationId
+ - rewardId
+ title: RollbackUseReward
type: object
Effect:
description: A generic effect that is fired by a triggered campaign. The props
@@ -16447,6 +18367,7 @@ components:
effectType: rejectCoupon
adjustmentReferenceId: 68851723-e6fa-488f-ace9-112581e6c19b
props: '{}'
+ rewardId: 7
selectedPrice: 100.0
evaluationGroupID: 3
triggeredForCatalogItem: 786
@@ -16542,6 +18463,12 @@ components:
example: 68851723-e6fa-488f-ace9-112581e6c19b
format: uuid
type: string
+ rewardId:
+ description: The ID of the reward that was being evaluated when this effect
+ was triggered.
+ example: 7
+ format: int64
+ type: integer
props:
type: object
required:
@@ -16564,6 +18491,7 @@ components:
effectType: rejectCoupon
adjustmentReferenceId: 68851723-e6fa-488f-ace9-112581e6c19b
props: '{}'
+ rewardId: 7
selectedPrice: 100.0
evaluationGroupID: 3
triggeredForCatalogItem: 786
@@ -16581,6 +18509,7 @@ components:
effectType: rejectCoupon
adjustmentReferenceId: 68851723-e6fa-488f-ace9-112581e6c19b
props: '{}'
+ rewardId: 7
selectedPrice: 100.0
evaluationGroupID: 3
triggeredForCatalogItem: 786
@@ -16592,6 +18521,7 @@ components:
customerSession:
couponCodes:
- XMAS-20-2021
+ cartItemAdditionalCostTotal: 15.0
updateCount: 3
created: 2020-02-07T08:15:22Z
identifiers:
@@ -16602,7 +18532,7 @@ components:
variantID: 2
- experimentID: 1
variantID: 2
- total: 119.99
+ total: 134.99
loyaltyCards:
- loyalty-card-1
additionalCosts:
@@ -16688,6 +18618,8 @@ components:
price: 100
height: 0.8008281904610115
updated: 2020-02-08T14:15:22Z
+ rewardIntegrationIds:
+ - 5c0b5e6d-3f8a-4c2b-9f1e-2a7d6b4c8e90
firstSession: true
cartItemTotal: 99.99
properties:
@@ -16769,6 +18701,13 @@ components:
customerSession:
couponCodes:
- XMAS-20-2021
+ identifiers:
+ - d41306257915f83fe01e54092ae470f631161ea16fcf4415842eed41470386ea
+ experimentVariantAllocations:
+ - experimentID: 1
+ variantID: 2
+ - experimentID: 1
+ variantID: 2
loyaltyCards:
- loyalty-card-1
additionalCosts:
@@ -16776,8 +18715,6 @@ components:
price: 9
storeIntegrationId: STORE-001
profileId: URNGV8294NV
- identifiers:
- - d41306257915f83fe01e54092ae470f631161ea16fcf4415842eed41470386ea
evaluableCampaignIds:
- 10
- 12
@@ -16852,11 +18789,8 @@ components:
base:
price: 100
height: 0.8008281904610115
- experimentVariantAllocations:
- - experimentID: 1
- variantID: 2
- - experimentID: 1
- variantID: 2
+ rewardIntegrationIds:
+ - 5c0b5e6d-3f8a-4c2b-9f1e-2a7d6b4c8e90
responseContent:
- customerSession
- customerProfile
@@ -16884,6 +18818,9 @@ components:
- awardedGiveaways
- ruleFailureReasons
- previousReturns
+ - campaignEligibility
+ - achievements
+ - unlockedRewards
type: string
type: array
required:
@@ -17032,6 +18969,7 @@ components:
$ref: '#/components/schemas/LoyaltyMembership'
title: Loyalty programed joined
type: array
+ x-deprecated: true
audienceMemberships:
description: The audiences the customer belongs to.
items:
@@ -17145,12 +19083,14 @@ components:
example: 0.0
title: Expired balance
type: number
+ x-deprecated: true
spentBalance:
description: |
**DEPRECATED** Value is shown as 0.
example: 0.0
title: Spent balance
type: number
+ x-deprecated: true
tentativeCurrentBalance:
description: |
The tentative points balance, reflecting the `currentBalance` and all point additions and deductions within the current open customer session. When the session is closed, the effects are applied and the `currentBalance` is updated to this value.
@@ -17264,12 +19204,14 @@ components:
example: 0.0
title: Expired balance
type: number
+ x-deprecated: true
spentBalance:
description: |
**DEPRECATED** Value is shown as 0.
example: 0.0
title: Spent balance
type: number
+ x-deprecated: true
tentativeCurrentBalance:
description: |
The tentative points balance, reflecting the `currentBalance` and all point additions and deductions within the current open customer session. When the session is closed, the effects are applied and the `currentBalance` is updated to this value.
@@ -17537,6 +19479,7 @@ components:
additionalProperties:
$ref: '#/components/schemas/LedgerInfo'
description: A map containing information about each loyalty subledger.
+ Subledgers for which all balances are zero are excluded from the response.
type: object
required:
- id
@@ -17957,6 +19900,7 @@ components:
- giveaways
- strikethrough
- achievements
+ - advancedEvents
type: string
type: array
couponSettings:
@@ -18066,6 +20010,7 @@ components:
example: 163
format: int64
type: integer
+ x-deprecated: true
referralRedemptionCount:
description: |
This property is **deprecated**. The count should be available under *budgets* property.
@@ -18073,12 +20018,14 @@ components:
example: 3
format: int64
type: integer
+ x-deprecated: true
discountCount:
description: |
This property is **deprecated**. The count should be available under *budgets* property.
Total amount of discounts redeemed in the campaign.
example: 288.0
type: number
+ x-deprecated: true
discountEffectCount:
description: |
This property is **deprecated**. The count should be available under *budgets* property.
@@ -18086,6 +20033,7 @@ components:
example: 343
format: int64
type: integer
+ x-deprecated: true
couponCreationCount:
description: |
This property is **deprecated**. The count should be available under *budgets* property.
@@ -18093,6 +20041,7 @@ components:
example: 16
format: int64
type: integer
+ x-deprecated: true
customEffectCount:
description: |
This property is **deprecated**. The count should be available under *budgets* property.
@@ -18100,6 +20049,7 @@ components:
example: 0
format: int64
type: integer
+ x-deprecated: true
referralCreationCount:
description: |
This property is **deprecated**. The count should be available under *budgets* property.
@@ -18107,6 +20057,7 @@ components:
example: 8
format: int64
type: integer
+ x-deprecated: true
addFreeItemEffectCount:
description: |
This property is **deprecated**. The count should be available under *budgets* property.
@@ -18114,6 +20065,7 @@ components:
example: 0
format: int64
type: integer
+ x-deprecated: true
awardedGiveawaysCount:
description: |
This property is **deprecated**. The count should be available under *budgets* property.
@@ -18121,12 +20073,14 @@ components:
example: 9
format: int64
type: integer
+ x-deprecated: true
createdLoyaltyPointsCount:
description: |
This property is **deprecated**. The count should be available under *budgets* property.
Total number of loyalty points created by rules in this campaign.
example: 9.0
type: number
+ x-deprecated: true
createdLoyaltyPointsEffectCount:
description: |
This property is **deprecated**. The count should be available under *budgets* property.
@@ -18134,12 +20088,14 @@ components:
example: 2
format: int64
type: integer
+ x-deprecated: true
redeemedLoyaltyPointsCount:
description: |
This property is **deprecated**. The count should be available under *budgets* property.
Total number of loyalty points redeemed by rules in this campaign.
example: 8.0
type: number
+ x-deprecated: true
redeemedLoyaltyPointsEffectCount:
description: |
This property is **deprecated**. The count should be available under *budgets* property.
@@ -18147,6 +20103,7 @@ components:
example: 9
format: int64
type: integer
+ x-deprecated: true
callApiEffectCount:
description: |
This property is **deprecated**. The count should be available under *budgets* property.
@@ -18154,6 +20111,7 @@ components:
example: 0
format: int64
type: integer
+ x-deprecated: true
reservecouponEffectCount:
description: |
This property is **deprecated**. The count should be available under *budgets* property.
@@ -18161,6 +20119,7 @@ components:
example: 9
format: int64
type: integer
+ x-deprecated: true
lastActivity:
description: Timestamp of the most recent event received by this campaign.
example: 2022-11-10T23:00:00Z
@@ -18170,6 +20129,7 @@ components:
description: |
Timestamp of the most recent update to the campaign's property. Updates to external entities used in this campaign
are **not** registered by this property, such as collection or coupon updates.
+ example: 2022-10-27T15:00:00Z
format: date-time
type: string
createdBy:
@@ -18347,7 +20307,7 @@ components:
- 100
- 215
applicationId: 322
- updated: 2000-01-23T04:56:07.000+00:00
+ updated: 2022-10-27T15:00:00Z
callApiEffectCount: 0
createdLoyaltyPointsEffectCount: 2
discountCount: 288.0
@@ -18514,6 +20474,7 @@ components:
- giveaways
- strikethrough
- achievements
+ - advancedEvents
type: string
type: array
couponSettings:
@@ -18583,6 +20544,7 @@ components:
example: 163
format: int64
type: integer
+ x-deprecated: true
referralRedemptionCount:
description: |
This property is **deprecated**. The count should be available under *budgets* property.
@@ -18590,12 +20552,14 @@ components:
example: 3
format: int64
type: integer
+ x-deprecated: true
discountCount:
description: |
This property is **deprecated**. The count should be available under *budgets* property.
Total amount of discounts redeemed in the campaign.
example: 288.0
type: number
+ x-deprecated: true
discountEffectCount:
description: |
This property is **deprecated**. The count should be available under *budgets* property.
@@ -18603,6 +20567,7 @@ components:
example: 343
format: int64
type: integer
+ x-deprecated: true
couponCreationCount:
description: |
This property is **deprecated**. The count should be available under *budgets* property.
@@ -18610,6 +20575,7 @@ components:
example: 16
format: int64
type: integer
+ x-deprecated: true
customEffectCount:
description: |
This property is **deprecated**. The count should be available under *budgets* property.
@@ -18617,6 +20583,7 @@ components:
example: 0
format: int64
type: integer
+ x-deprecated: true
referralCreationCount:
description: |
This property is **deprecated**. The count should be available under *budgets* property.
@@ -18624,6 +20591,7 @@ components:
example: 8
format: int64
type: integer
+ x-deprecated: true
addFreeItemEffectCount:
description: |
This property is **deprecated**. The count should be available under *budgets* property.
@@ -18631,6 +20599,7 @@ components:
example: 0
format: int64
type: integer
+ x-deprecated: true
awardedGiveawaysCount:
description: |
This property is **deprecated**. The count should be available under *budgets* property.
@@ -18638,12 +20607,14 @@ components:
example: 9
format: int64
type: integer
+ x-deprecated: true
createdLoyaltyPointsCount:
description: |
This property is **deprecated**. The count should be available under *budgets* property.
Total number of loyalty points created by rules in this campaign.
example: 9.0
type: number
+ x-deprecated: true
createdLoyaltyPointsEffectCount:
description: |
This property is **deprecated**. The count should be available under *budgets* property.
@@ -18651,12 +20622,14 @@ components:
example: 2
format: int64
type: integer
+ x-deprecated: true
redeemedLoyaltyPointsCount:
description: |
This property is **deprecated**. The count should be available under *budgets* property.
Total number of loyalty points redeemed by rules in this campaign.
example: 8.0
type: number
+ x-deprecated: true
redeemedLoyaltyPointsEffectCount:
description: |
This property is **deprecated**. The count should be available under *budgets* property.
@@ -18664,6 +20637,7 @@ components:
example: 9
format: int64
type: integer
+ x-deprecated: true
callApiEffectCount:
description: |
This property is **deprecated**. The count should be available under *budgets* property.
@@ -18671,6 +20645,7 @@ components:
example: 0
format: int64
type: integer
+ x-deprecated: true
reservecouponEffectCount:
description: |
This property is **deprecated**. The count should be available under *budgets* property.
@@ -18678,6 +20653,7 @@ components:
example: 9
format: int64
type: integer
+ x-deprecated: true
lastActivity:
description: Timestamp of the most recent event received by this campaign.
example: 2022-11-10T23:00:00Z
@@ -18687,6 +20663,7 @@ components:
description: |
Timestamp of the most recent update to the campaign's property. Updates to external entities used in this campaign
are **not** registered by this property, such as collection or coupon updates.
+ example: 2022-10-27T15:00:00Z
format: date-time
type: string
createdBy:
@@ -18791,19 +20768,517 @@ components:
- type
- userId
type: object
+ IntegrationCampaignBase:
+ properties:
+ applicationId:
+ description: The ID of the Application that owns this entity.
+ example: 322
+ format: int64
+ type: integer
+ id:
+ description: Unique ID of Campaign.
+ example: 4
+ format: int64
+ type: integer
+ name:
+ description: The name of the campaign.
+ example: Summer promotions
+ minLength: 1
+ title: Campaign Name
+ type: string
+ description:
+ description: A detailed description of the campaign.
+ example: Campaign for all summer 2021 promotions
+ title: Campaign Description
+ type: string
+ startTime:
+ description: Timestamp when the campaign will become active.
+ example: 2021-07-20T22:00:00Z
+ format: date-time
+ type: string
+ endTime:
+ description: Timestamp when the campaign will become inactive.
+ example: 2021-09-22T22:00:00Z
+ format: date-time
+ type: string
+ attributes:
+ description: Arbitrary properties associated with this campaign.
+ properties: {}
+ type: object
+ state:
+ default: enabled
+ description: |
+ The state of the campaign.
+ enum:
+ - enabled
+ example: enabled
+ type: string
+ tags:
+ description: A list of tags for the campaign.
+ example:
+ - summer
+ items:
+ maxLength: 50
+ minLength: 1
+ type: string
+ maxItems: 50
+ type: array
+ features:
+ description: The features enabled in this campaign.
+ example:
+ - coupons
+ - referrals
+ items:
+ enum:
+ - coupons
+ - referrals
+ - loyalty
+ - giveaways
+ - strikethrough
+ - achievements
+ - advancedEvents
+ type: string
+ type: array
+ required:
+ - applicationId
+ - features
+ - id
+ - name
+ - state
+ - tags
+ type: object
+ CampaignEligibilityFailureDetails:
+ description: The details about why the customer was not eligible for the campaign
+ in the current session.
+ example:
+ failureCode: ALL_RULES_FAILED
+ properties:
+ failureCode:
+ description: A code identifying why the customer was not eligible for the
+ campaign.
+ enum:
+ - ALL_RULES_FAILED
+ - SKIPPED
+ - AUDIENCE_NOT_MATCHED
+ type: string
+ required:
+ - failureCode
+ type: object
+ CampaignEligibilityDetails:
+ example:
+ details:
+ failureCode: ALL_RULES_FAILED
+ passed: true
+ couponCode: couponCode
+ properties:
+ passed:
+ description: Indicates whether the customer was eligible for the campaign
+ in the current session.
+ type: boolean
+ couponCode:
+ description: The coupon code used to check a customer's eligibility for
+ the campaign in the current session, if applicable.
+ type: string
+ details:
+ $ref: '#/components/schemas/CampaignEligibilityFailureDetails'
+ required:
+ - passed
+ type: object
+ RuleMetadata:
+ example:
+ displayDescription: Get a 20% discount on all shoes during Thanksgiving! Offer
+ valid till Dec 5 only.
+ displayName: 20% off all shoes!
+ relatedData: https://example.com/discounts/20-off-shoes.png
+ title: Give discount via coupon
+ properties:
+ title:
+ description: A short description of the rule.
+ example: Give discount via coupon
+ type: string
+ displayName:
+ description: A customer-facing name for the rule.
+ example: 20% off all shoes!
+ type: string
+ displayDescription:
+ description: "A customer-facing description that explains the details of\
+ \ the rule. \n\nFor example, this property can contain details about eligibility\
+ \ requirements, reward timelines, or terms and conditions.\n"
+ example: Get a 20% discount on all shoes during Thanksgiving! Offer valid
+ till Dec 5 only.
+ type: string
+ relatedData:
+ description: |
+ Any additional data associated with the rule, such as an image URL, vendor name, or a content management system (CMS) ID.
+ example: https://example.com/discounts/20-off-shoes.png
+ type: string
+ required:
+ - title
+ type: object
+ RuleEligibilityFailureDetails:
+ description: The details about why the customer was not eligible for the rule
+ in the current session.
+ example:
+ failureCode: CONDITION_NOT_MET
+ referralID: 0
+ conditionIndex: 6
+ effectIndex: 1
+ details: details
+ couponID: 4928
+ referralValue: referralValue
+ couponValue: couponValue
+ properties:
+ failureCode:
+ description: A code identifying why the customer was not eligible for the
+ rule in the current session.
+ enum:
+ - CONDITION_NOT_MET
+ - EFFECT_FAILED
+ type: string
+ couponID:
+ description: |
+ The ID of the coupon that was being evaluated when the rule failed.
+ example: 4928
+ format: int64
+ type: integer
+ couponValue:
+ description: |
+ The coupon code that was being evaluated when the rule failed.
+ type: string
+ referralID:
+ description: |
+ The ID of the referral that was being evaluated when the rule failed.
+ format: int64
+ type: integer
+ referralValue:
+ description: |
+ The referral code that was being evaluated when the rule failed.
+ type: string
+ conditionIndex:
+ description: The index of the condition that caused the rule to fail.
+ format: int64
+ type: integer
+ effectIndex:
+ description: The index of the effect that caused the rule to fail.
+ format: int64
+ type: integer
+ details:
+ description: Additional details about the failure.
+ type: string
+ required:
+ - details
+ - failureCode
+ type: object
+ RuleEligibility:
+ description: The customer's eligibility for a rule in the current session, based
+ on whether all of the rule's conditions were met.
+ example:
+ details:
+ failureCode: CONDITION_NOT_MET
+ referralID: 0
+ conditionIndex: 6
+ effectIndex: 1
+ details: details
+ couponID: 4928
+ referralValue: referralValue
+ couponValue: couponValue
+ passed: true
+ couponCode: couponCode
+ properties:
+ passed:
+ description: Indicates whether the customer was eligible for the rule in
+ the current session, based on whether all of the rule's conditions were
+ met.
+ example: true
+ type: boolean
+ couponCode:
+ description: The coupon code used to check a customer's eligibility for
+ the rule in the current session, if applicable.
+ type: string
+ details:
+ $ref: '#/components/schemas/RuleEligibilityFailureDetails'
+ required:
+ - passed
+ type: object
+ RuleMetadataEligibility:
+ example:
+ displayDescription: Get a 20% discount on all shoes during Thanksgiving! Offer
+ valid till Dec 5 only.
+ displayName: 20% off all shoes!
+ eligibility:
+ - details:
+ failureCode: CONDITION_NOT_MET
+ referralID: 0
+ conditionIndex: 6
+ effectIndex: 1
+ details: details
+ couponID: 4928
+ referralValue: referralValue
+ couponValue: couponValue
+ passed: true
+ couponCode: couponCode
+ - details:
+ failureCode: CONDITION_NOT_MET
+ referralID: 0
+ conditionIndex: 6
+ effectIndex: 1
+ details: details
+ couponID: 4928
+ referralValue: referralValue
+ couponValue: couponValue
+ passed: true
+ couponCode: couponCode
+ relatedData: https://example.com/discounts/20-off-shoes.png
+ title: Give discount via coupon
+ properties:
+ title:
+ description: A short description of the rule.
+ example: Give discount via coupon
+ type: string
+ displayName:
+ description: A customer-facing name for the rule.
+ example: 20% off all shoes!
+ type: string
+ displayDescription:
+ description: "A customer-facing description that explains the details of\
+ \ the rule. \n\nFor example, this property can contain details about eligibility\
+ \ requirements, reward timelines, or terms and conditions.\n"
+ example: Get a 20% discount on all shoes during Thanksgiving! Offer valid
+ till Dec 5 only.
+ type: string
+ relatedData:
+ description: |
+ Any additional data associated with the rule, such as an image URL, vendor name, or a content management system (CMS) ID.
+ example: https://example.com/discounts/20-off-shoes.png
+ type: string
+ eligibility:
+ items:
+ $ref: '#/components/schemas/RuleEligibility'
+ type: array
+ required:
+ - eligibility
+ - title
+ type: object
+ CampaignEligibilityExperiment:
+ description: |
+ The identifiers for the [experiment](https://docs.talon.one/management-api#tag/Experiments) and the variant assigned to the customer profile.
+ Only returned when the customer profile has been assigned to a variant in an experiment campaign.
+ example:
+ id: 5
+ variantId: 5
+ properties:
+ id:
+ description: The ID of the experiment.
+ format: int64
+ type: integer
+ variantId:
+ description: The ID of the variant assigned to the customer profile.
+ format: int64
+ type: integer
+ required:
+ - id
+ - variantId
+ type: object
+ CampaignEligibility:
+ description: "A list of campaigns and their evaluation status for the current\
+ \ customer session.\n\nFor experiment campaigns, the experiment and variant\
+ \ assigned to the customer profile are\nreturned through the `experiment`\
+ \ field. Customer profiles with no variant assignment are not included.\n\n\
+ **Note**:\n\n- This response can **only** be included if the `dry` parameter\
+ \ in the query is set to `true`. \n- Do not include `triggeredCampaigns` or\
+ \ `ruleFailureReasons` in `responseContent` to avoid duplicate results.\n"
+ example:
+ description: Campaign for all summer 2021 promotions
+ eligibility:
+ - details:
+ failureCode: ALL_RULES_FAILED
+ passed: true
+ couponCode: couponCode
+ - details:
+ failureCode: ALL_RULES_FAILED
+ passed: true
+ couponCode: couponCode
+ rules:
+ - displayDescription: Get a 20% discount on all shoes during Thanksgiving!
+ Offer valid till Dec 5 only.
+ displayName: 20% off all shoes!
+ eligibility:
+ - details:
+ failureCode: CONDITION_NOT_MET
+ referralID: 0
+ conditionIndex: 6
+ effectIndex: 1
+ details: details
+ couponID: 4928
+ referralValue: referralValue
+ couponValue: couponValue
+ passed: true
+ couponCode: couponCode
+ - details:
+ failureCode: CONDITION_NOT_MET
+ referralID: 0
+ conditionIndex: 6
+ effectIndex: 1
+ details: details
+ couponID: 4928
+ referralValue: referralValue
+ couponValue: couponValue
+ passed: true
+ couponCode: couponCode
+ relatedData: https://example.com/discounts/20-off-shoes.png
+ title: Give discount via coupon
+ - displayDescription: Get a 20% discount on all shoes during Thanksgiving!
+ Offer valid till Dec 5 only.
+ displayName: 20% off all shoes!
+ eligibility:
+ - details:
+ failureCode: CONDITION_NOT_MET
+ referralID: 0
+ conditionIndex: 6
+ effectIndex: 1
+ details: details
+ couponID: 4928
+ referralValue: referralValue
+ couponValue: couponValue
+ passed: true
+ couponCode: couponCode
+ - details:
+ failureCode: CONDITION_NOT_MET
+ referralID: 0
+ conditionIndex: 6
+ effectIndex: 1
+ details: details
+ couponID: 4928
+ referralValue: referralValue
+ couponValue: couponValue
+ passed: true
+ couponCode: couponCode
+ relatedData: https://example.com/discounts/20-off-shoes.png
+ title: Give discount via coupon
+ tags:
+ - summer
+ features:
+ - coupons
+ - referrals
+ experiment:
+ id: 5
+ variantId: 5
+ name: Summer promotions
+ startTime: 2021-07-20T22:00:00Z
+ attributes: '{}'
+ id: 4
+ endTime: 2021-09-22T22:00:00Z
+ state: enabled
+ applicationId: 322
+ properties:
+ applicationId:
+ description: The ID of the Application that owns this entity.
+ example: 322
+ format: int64
+ type: integer
+ id:
+ description: Unique ID of Campaign.
+ example: 4
+ format: int64
+ type: integer
+ name:
+ description: The name of the campaign.
+ example: Summer promotions
+ minLength: 1
+ title: Campaign Name
+ type: string
+ description:
+ description: A detailed description of the campaign.
+ example: Campaign for all summer 2021 promotions
+ title: Campaign Description
+ type: string
+ startTime:
+ description: Timestamp when the campaign will become active.
+ example: 2021-07-20T22:00:00Z
+ format: date-time
+ type: string
+ endTime:
+ description: Timestamp when the campaign will become inactive.
+ example: 2021-09-22T22:00:00Z
+ format: date-time
+ type: string
+ attributes:
+ description: Arbitrary properties associated with this campaign.
+ properties: {}
+ type: object
+ state:
+ default: enabled
+ description: |
+ The state of the campaign.
+ enum:
+ - enabled
+ example: enabled
+ type: string
+ tags:
+ description: A list of tags for the campaign.
+ example:
+ - summer
+ items:
+ maxLength: 50
+ minLength: 1
+ type: string
+ maxItems: 50
+ type: array
+ features:
+ description: The features enabled in this campaign.
+ example:
+ - coupons
+ - referrals
+ items:
+ enum:
+ - coupons
+ - referrals
+ - loyalty
+ - giveaways
+ - strikethrough
+ - achievements
+ - advancedEvents
+ type: string
+ type: array
+ eligibility:
+ description: The customer's eligibility for each campaign in the current
+ customer session.
+ items:
+ $ref: '#/components/schemas/CampaignEligibilityDetails'
+ type: array
+ rules:
+ description: A list of rules containing customer-facing details of the rewards
+ defined in the campaign.
+ items:
+ $ref: '#/components/schemas/RuleMetadataEligibility'
+ type: array
+ experiment:
+ $ref: '#/components/schemas/CampaignEligibilityExperiment'
+ required:
+ - applicationId
+ - eligibility
+ - features
+ - id
+ - name
+ - rules
+ - state
+ - tags
+ type: object
RuleFailureReason:
description: Details about why a rule failed.
example:
- rulesetID: 6
- ruleIndex: 5
- campaignID: 0
- referralID: 1
- conditionIndex: 5
- effectIndex: 2
+ rulesetID: 7
+ ruleIndex: 3
+ campaignID: 2
+ referralID: 9
+ rewardIntegrationId: 5c0b5e6d-3f8a-4c2b-9f1e-2a7d6b4c8e90
+ conditionIndex: 2
+ effectIndex: 4
evaluationGroupMode: stackable
couponID: 4928
referralValue: referralValue
couponValue: couponValue
+ rewardId: 7
evaluationGroupID: 3
ruleName: ruleName
details: details
@@ -18839,6 +21314,17 @@ components:
description: The code of the referral that was being evaluated at the time
of the rule failure.
type: string
+ rewardId:
+ description: The ID of the reward that was being evaluated at the time of
+ the rule failure.
+ example: 7
+ format: int64
+ type: integer
+ rewardIntegrationId:
+ description: The integration ID of the reward that was being evaluated at
+ the time of the rule failure.
+ example: 5c0b5e6d-3f8a-4c2b-9f1e-2a7d6b4c8e90
+ type: string
ruleIndex:
description: The index of the rule that failed within the ruleset.
format: int64
@@ -19414,6 +21900,303 @@ components:
- id
- poolId
type: object
+ CampaignReference:
+ example:
+ id: 1
+ applicationId: 2
+ properties:
+ id:
+ description: The ID of the campaign that references this achievement.
+ example: 1
+ format: int64
+ type: integer
+ applicationId:
+ description: The ID of the Application the campaign belongs to.
+ example: 2
+ format: int64
+ type: integer
+ required:
+ - applicationId
+ - id
+ type: object
+ AchievementProgress:
+ description: The current progress of the customer in the achievement.
+ example:
+ endDate: 2000-01-23T04:56:07.000+00:00
+ progress: 10.0
+ completionDate: 2000-01-23T04:56:07.000+00:00
+ startDate: 2000-01-23T04:56:07.000+00:00
+ status: completed
+ properties:
+ status:
+ description: The status of the achievement.
+ enum:
+ - inprogress
+ - completed
+ - expired
+ - not_started
+ example: completed
+ type: string
+ progress:
+ description: The current progress of the customer in the achievement.
+ example: 10.0
+ type: number
+ startDate:
+ description: Timestamp at which the customer started the achievement.
+ format: date-time
+ type: string
+ completionDate:
+ description: Timestamp at which point the customer completed the achievement.
+ format: date-time
+ type: string
+ endDate:
+ description: Timestamp at which point the achievement ends and resets for
+ the customer.
+ format: date-time
+ type: string
+ required:
+ - progress
+ - status
+ type: object
+ CustomerAchievement:
+ description: A customer's progress in an achievement, together with the achievement
+ definition.
+ example:
+ currentProgress:
+ endDate: 2000-01-23T04:56:07.000+00:00
+ progress: 10.0
+ completionDate: 2000-01-23T04:56:07.000+00:00
+ startDate: 2000-01-23T04:56:07.000+00:00
+ status: completed
+ referencedByCampaigns:
+ - id: 1
+ applicationId: 2
+ - id: 1
+ applicationId: 2
+ endDate: 2000-01-23T04:56:07.000+00:00
+ campaignId: 3
+ description: 50% off for every 50th purchase in a year.
+ activationPolicy: fixed_schedule
+ title: 50% off on 50th purchase.
+ allowRollbackAfterCompletion: false
+ target: 10.0
+ fixedStartDate: 2000-01-23T04:56:07.000+00:00
+ name: FreeCoffee10Orders
+ id: 3
+ campaignIds:
+ - 1
+ - 14
+ - 27
+ recurrencePolicy: no_recurrence
+ properties:
+ id:
+ description: The internal ID of the achievement.
+ example: 3
+ format: int64
+ type: integer
+ name:
+ description: |
+ The internal name of the achievement used in API requests.
+ example: FreeCoffee10Orders
+ maxLength: 1000
+ minLength: 1
+ pattern: ^[a-zA-Z]\w+$
+ type: string
+ title:
+ description: The display name of the achievement in the Campaign Manager.
+ example: 50% off on 50th purchase.
+ type: string
+ description:
+ description: The description of the achievement in the Campaign Manager.
+ example: 50% off for every 50th purchase in a year.
+ format: string
+ type: string
+ target:
+ description: The required number of actions or the transactional milestone
+ to complete the achievement.
+ example: 10.0
+ type: number
+ recurrencePolicy:
+ description: |
+ The policy that determines if and how the achievement recurs.
+ - `no_recurrence`: The achievement can be completed only once.
+ - `on_expiration`: The achievement resets after it expires and becomes available again.
+ - `on_completion`: When the customer progress status reaches `completed`, the achievement resets and becomes available again.
+ enum:
+ - no_recurrence
+ - on_expiration
+ - on_completion
+ example: no_recurrence
+ type: string
+ activationPolicy:
+ description: |
+ The policy that determines how the achievement starts, ends, or resets.
+ - `user_action`: The achievement ends or resets relative to when the customer started the achievement.
+ - `fixed_schedule`: The achievement starts, ends, or resets for all customers following a fixed schedule.
+ enum:
+ - user_action
+ - fixed_schedule
+ example: fixed_schedule
+ type: string
+ fixedStartDate:
+ description: |
+ The achievement's start date when `activationPolicy` is equal to `fixed_schedule`.
+
+ **Note:** It is an RFC3339 timestamp string.
+ format: date-time
+ type: string
+ endDate:
+ description: |
+ The achievement's end date. If defined, customers cannot participate in the achievement after this date.
+
+ **Note:** It is an RFC3339 timestamp string.
+ format: date-time
+ type: string
+ allowRollbackAfterCompletion:
+ description: When `true`, customer progress can be rolled back in completed
+ achievements.
+ example: false
+ type: boolean
+ campaignId:
+ description: This property is **deprecated**. Use `referencedByCampaigns`
+ instead. This field contains the first campaign ID from the related `referencedByCampaigns`,
+ and is omitted when `referencedByCampaigns` is empty.
+ example: 3
+ format: int64
+ type: integer
+ x-deprecated: true
+ campaignIds:
+ description: The IDs of the campaigns that reference this achievement, in
+ ascending order.
+ example:
+ - 1
+ - 14
+ - 27
+ items:
+ format: int64
+ type: integer
+ type: array
+ referencedByCampaigns:
+ description: The campaigns that reference this achievement. They are sorted
+ in ascending order by their `id`.
+ items:
+ $ref: '#/components/schemas/CampaignReference'
+ type: array
+ currentProgress:
+ $ref: '#/components/schemas/AchievementProgress'
+ required:
+ - activationPolicy
+ - allowRollbackAfterCompletion
+ - campaignIds
+ - description
+ - id
+ - name
+ - recurrencePolicy
+ - referencedByCampaigns
+ - target
+ - title
+ type: object
+ CustomerReward:
+ description: A reward unlocked by a customer profile.
+ example:
+ profileIntegrationId: customer1
+ unlockedAt: 2024-01-01T00:00:00Z
+ integrationId: reward-unlock-123
+ usedAt: 2024-01-02T00:00:00Z
+ applicationId: 3
+ properties:
+ applicationId:
+ description: The ID of the Application in which the reward was unlocked.
+ example: 3
+ format: int64
+ type: integer
+ profileIntegrationId:
+ description: The integration ID of the customer profile that unlocked this
+ reward.
+ example: customer1
+ type: string
+ integrationId:
+ description: The integration ID assigned to this reward unlock.
+ example: reward-unlock-123
+ type: string
+ unlockedAt:
+ description: The date and time when the reward was unlocked.
+ example: 2024-01-01T00:00:00Z
+ format: date-time
+ type: string
+ usedAt:
+ description: The date and time when the reward was used.
+ example: 2024-01-02T00:00:00Z
+ format: date-time
+ type: string
+ required:
+ - applicationId
+ - integrationId
+ - profileIntegrationId
+ - unlockedAt
+ type: object
+ RewardWithUnlocks:
+ description: A reward and details of each time a customer profile has unlocked
+ it.
+ example:
+ name: 10% Off Coupon
+ integrationId: free-coffee
+ description: Applies to next order
+ rule:
+ displayDescription: Get a 20% discount on all shoes during Thanksgiving!
+ Offer valid till Dec 5 only.
+ displayName: 20% off all shoes!
+ relatedData: https://example.com/discounts/20-off-shoes.png
+ title: Give discount via coupon
+ id: 42
+ unlocked:
+ - profileIntegrationId: customer1
+ unlockedAt: 2024-01-01T00:00:00Z
+ integrationId: reward-unlock-123
+ usedAt: 2024-01-02T00:00:00Z
+ applicationId: 3
+ - profileIntegrationId: customer1
+ unlockedAt: 2024-01-01T00:00:00Z
+ integrationId: reward-unlock-123
+ usedAt: 2024-01-02T00:00:00Z
+ applicationId: 3
+ properties:
+ id:
+ description: The unique ID of the reward.
+ example: 42
+ format: int64
+ type: integer
+ integrationId:
+ description: A unique identifier used to reference the reward in API integrations.
+ example: free-coffee
+ type: string
+ name:
+ description: The customer-facing name of the reward.
+ example: 10% Off Coupon
+ type: string
+ description:
+ description: Customer-facing description of the reward.
+ example: Applies to next order
+ type: string
+ rule:
+ $ref: '#/components/schemas/RuleMetadata'
+ unlocked:
+ description: The customer profile's unlocks of this reward that are not
+ yet `used`.
+ items:
+ $ref: '#/components/schemas/CustomerReward'
+ type: array
+ required:
+ - id
+ - integrationId
+ - name
+ - rule
+ type: object
+ Rewards:
+ description: The rewards for the customer profile.
+ items:
+ $ref: '#/components/schemas/RewardWithUnlocks'
+ type: array
IntegrationResponse:
description: |
Contains entities that might be valuable in Talon.One integrations.
@@ -19428,6 +22211,15 @@ components:
items:
$ref: '#/components/schemas/Campaign'
type: array
+ campaignEligibility:
+ description: "A list of campaigns and their evaluation status for the current\
+ \ customer session.\n\n**Note**:\n\n- This response can **only** be included\
+ \ if the `dry` parameter in the query is set to `true`. \n- Do not include\
+ \ `triggeredCampaigns` or `ruleFailureReasons` in `responseContent` to\
+ \ avoid duplicate results.\n"
+ items:
+ $ref: '#/components/schemas/CampaignEligibility'
+ type: array
effects:
description: The effects generated by the rules in your running campaigns.
See [API effects](https://docs.talon.one/docs/dev/integration-api/api-effects).
@@ -19456,6 +22248,16 @@ components:
items:
$ref: '#/components/schemas/Giveaway'
type: array
+ achievements:
+ description: The achievements progress of the customer.
+ items:
+ $ref: '#/components/schemas/CustomerAchievement'
+ type: array
+ rewards:
+ description: The rewards for the customer profile.
+ items:
+ $ref: '#/components/schemas/RewardWithUnlocks'
+ type: array
required:
- createdCoupons
- createdReferrals
@@ -19783,8 +22585,8 @@ components:
minLength: 1
type: string
type:
- description: A string representing the event. Must not be a reserved event
- name.
+ description: The name of the event. Must be a [custom event](https://docs.talon.one/docs/dev/concepts/entities/events#custom-events),
+ not a built-in event.
example: pageViewed
minLength: 1
title: Event Type
@@ -19799,6 +22601,15 @@ components:
- attributes
- type
type: object
+ EventV3Entity:
+ properties:
+ integrationId:
+ description: |
+ The unique ID of the event. Only one event with this ID can be registered.
+ example: 175KJPS947296
+ minLength: 1
+ type: string
+ type: object
LedgerEntry:
description: Entry in the point ledger.
example:
@@ -19811,7 +22622,7 @@ components:
profileId: URNGV8294NV
loyaltyProgramId: 323414846
id: 6
- referenceId: 9
+ referenceId: 1
properties:
id:
description: The internal ID of this entity.
@@ -19917,8 +22728,8 @@ components:
a 'rejectReferral' effect.
example:
reason: ReferralNotFound
- campaignId: 3
- referralId: 2
+ campaignId: 1
+ referralId: 1
properties:
campaignId:
format: int64
@@ -19953,8 +22764,8 @@ components:
coupons: '{}'
referralRejectionReason:
reason: ReferralNotFound
- campaignId: 3
- referralId: 2
+ campaignId: 1
+ referralId: 1
warnings: '{}'
couponRejectionReason:
reason: CouponNotFound
@@ -19992,8 +22803,8 @@ components:
coupons: '{}'
referralRejectionReason:
reason: ReferralNotFound
- campaignId: 3
- referralId: 2
+ campaignId: 1
+ referralId: 1
warnings: '{}'
couponRejectionReason:
reason: CouponNotFound
@@ -20009,7 +22820,7 @@ components:
profileId: URNGV8294NV
loyaltyProgramId: 323414846
id: 6
- referenceId: 9
+ referenceId: 1
- expiryDate: 2022-04-26T11:02:38Z
accountId: 7
eventId: 3
@@ -20019,7 +22830,8 @@ components:
profileId: URNGV8294NV
loyaltyProgramId: 323414846
id: 6
- referenceId: 9
+ referenceId: 1
+ integrationId: 175KJPS947296
attributes:
myAttribute: myValue
id: 6
@@ -20057,8 +22869,8 @@ components:
minLength: 1
type: string
type:
- description: A string representing the event. Must not be a reserved event
- name.
+ description: The name of the event. Must be a [custom event](https://docs.talon.one/docs/dev/concepts/entities/events#custom-events),
+ not a built-in event.
example: pageViewed
minLength: 1
title: Event Type
@@ -20069,6 +22881,12 @@ components:
myAttribute: myValue
properties: {}
type: object
+ integrationId:
+ description: |
+ The unique ID of the event. Only one event with this ID can be registered.
+ example: 175KJPS947296
+ minLength: 1
+ type: string
sessionId:
description: The ID of the session that this event occurred in.
example: 175KJPS947296
@@ -20098,32 +22916,62 @@ components:
- id
- type
type: object
- IntegrationProfileEntityV3:
+ EventV3Connections:
properties:
- profileId:
+ connectedSessionId:
+ description: The ID of the session to reference. The session must be in
+ `closed` state. Otherwise, the API call will fail.
+ example: 175KJPS947296
+ minLength: 1
+ type: string
+ type: object
+ EventV3ReferralEntity:
+ properties:
+ referralCode:
description: |
- ID of the customer profile set by your integration layer.
-
- **Note:** If the customer does not yet have a known `profileId`, we recommend you use a guest `profileId`.
- example: URNGV8294NV
+ The referral code submitted with the event. The endpoint does not validate the code, and submitting a code does not redeem it. Use the "Referral code is valid" condition in the Rule Builder to validate and redeem the code, or "Referral code is valid (without redemption)" to validate without redeeming.
+ example: NT2K54D9
+ maxLength: 100
type: string
- required:
- - profileId
type: object
EventV3:
example:
- connectedSessionID: 175KJPS947296
+ connectedSessionId: 175KJPS947296
+ effects:
+ - '{}'
+ - '{}'
storeIntegrationId: STORE-001
+ created: 2020-06-10T09:05:27.993483Z
profileId: URNGV8294NV
- evaluableCampaignIds:
- - 10
- - 12
- previousEventID: 175KJPS947296
+ referralCode: NT2K54D9
integrationId: 175KJPS947296
attributes:
myAttribute: myValue
+ id: 6
+ applicationId: 322
type: pageViewed
properties:
+ connectedSessionId:
+ description: The ID of the session to reference. The session must be in
+ `closed` state. Otherwise, the API call will fail.
+ example: 175KJPS947296
+ minLength: 1
+ type: string
+ id:
+ description: The internal ID of this entity.
+ example: 6
+ format: int64
+ type: integer
+ created:
+ description: The time this entity was created.
+ example: 2020-06-10T09:05:27.993483Z
+ format: date-time
+ type: string
+ applicationId:
+ description: The ID of the Application that owns this entity.
+ example: 322
+ format: int64
+ type: integer
profileId:
description: |
ID of the customer profile set by your integration layer.
@@ -20138,53 +22986,46 @@ components:
maxLength: 1000
minLength: 1
type: string
- evaluableCampaignIds:
- description: |
- When using the `dry` query parameter, use this property to list the campaign to be evaluated by the Rule Engine.
-
- These campaigns will be evaluated, even if they are disabled, allowing you to test specific campaigns before activating them.
- example:
- - 10
- - 12
- items:
- format: int64
- type: integer
- title: Campaigns to evaluate
- type: array
- integrationId:
- description: |
- The unique ID of the current event. Only one event with this ID could be activated, duplicated events are forbidden.
- example: 175KJPS947296
- minLength: 1
- type: string
type:
- description: |
- A string representing the event name. Must not be a reserved event name. You create this value when you [create an attribute](https://docs.talon.one/docs/dev/concepts/entities/events#creating-a-custom-event) of type `event` in the Campaign Manager.
+ description: The name of the event. Must be a [custom event](https://docs.talon.one/docs/dev/concepts/entities/events#custom-events),
+ not a built-in event.
example: pageViewed
minLength: 1
title: Event Type
type: string
attributes:
- description: Arbitrary additional JSON properties associated with the event.
- They must be created in the Campaign Manager before setting them with
- this property. See [creating custom attributes](https://docs.talon.one/docs/product/account/dev-tools/managing-attributes#creating-a-custom-attribute).
+ description: Arbitrary additional JSON data associated with the event.
example:
myAttribute: myValue
properties: {}
type: object
- connectedSessionID:
- description: The ID of the session that happened in the past.
+ integrationId:
+ description: |
+ The unique ID of the event. Only one event with this ID can be registered.
example: 175KJPS947296
minLength: 1
type: string
- previousEventID:
- description: The unique identifier of the event that happened in the past.
- example: 175KJPS947296
- minLength: 1
+ referralCode:
+ description: |
+ The referral code submitted with the event. The endpoint does not validate the code, and submitting a code does not redeem it. Use the "Referral code is valid" condition in the Rule Builder to validate and redeem the code, or "Referral code is valid (without redemption)" to validate without redeeming.
+ example: NT2K54D9
+ maxLength: 100
type: string
+ effects:
+ description: |
+ An array of effects generated by the rules of the enabled campaigns of the Application.
+
+ You decide how to apply them in your system. See the list of [API effects](https://docs.talon.one/docs/dev/integration-api/api-effects).
+ items:
+ properties: {}
+ type: object
+ type: array
required:
- - integrationId
- - profileId
+ - applicationId
+ - attributes
+ - created
+ - effects
+ - id
- type
type: object
AccountEntity:
@@ -20337,6 +23178,59 @@ components:
description: |
Contains all entities that might interest Talon.One integrations.
example:
+ achievements:
+ - currentProgress:
+ endDate: 2000-01-23T04:56:07.000+00:00
+ progress: 10.0
+ completionDate: 2000-01-23T04:56:07.000+00:00
+ startDate: 2000-01-23T04:56:07.000+00:00
+ status: completed
+ referencedByCampaigns:
+ - id: 1
+ applicationId: 2
+ - id: 1
+ applicationId: 2
+ endDate: 2000-01-23T04:56:07.000+00:00
+ campaignId: 3
+ description: 50% off for every 50th purchase in a year.
+ activationPolicy: fixed_schedule
+ title: 50% off on 50th purchase.
+ allowRollbackAfterCompletion: false
+ target: 10.0
+ fixedStartDate: 2000-01-23T04:56:07.000+00:00
+ name: FreeCoffee10Orders
+ id: 3
+ campaignIds:
+ - 1
+ - 14
+ - 27
+ recurrencePolicy: no_recurrence
+ - currentProgress:
+ endDate: 2000-01-23T04:56:07.000+00:00
+ progress: 10.0
+ completionDate: 2000-01-23T04:56:07.000+00:00
+ startDate: 2000-01-23T04:56:07.000+00:00
+ status: completed
+ referencedByCampaigns:
+ - id: 1
+ applicationId: 2
+ - id: 1
+ applicationId: 2
+ endDate: 2000-01-23T04:56:07.000+00:00
+ campaignId: 3
+ description: 50% off for every 50th purchase in a year.
+ activationPolicy: fixed_schedule
+ title: 50% off on 50th purchase.
+ allowRollbackAfterCompletion: false
+ target: 10.0
+ fixedStartDate: 2000-01-23T04:56:07.000+00:00
+ name: FreeCoffee10Orders
+ id: 3
+ campaignIds:
+ - 1
+ - 14
+ - 27
+ recurrencePolicy: no_recurrence
customerProfile:
accountId: 31
closedSessions: 3
@@ -20635,6 +23529,7 @@ components:
effectType: rejectCoupon
adjustmentReferenceId: 68851723-e6fa-488f-ace9-112581e6c19b
props: '{}'
+ rewardId: 7
selectedPrice: 100.0
evaluationGroupID: 3
triggeredForCatalogItem: 786
@@ -20652,6 +23547,7 @@ components:
effectType: rejectCoupon
adjustmentReferenceId: 68851723-e6fa-488f-ace9-112581e6c19b
props: '{}'
+ rewardId: 7
selectedPrice: 100.0
evaluationGroupID: 3
triggeredForCatalogItem: 786
@@ -20759,7 +23655,7 @@ components:
- 100
- 215
applicationId: 322
- updated: 2000-01-23T04:56:07.000+00:00
+ updated: 2022-10-27T15:00:00Z
callApiEffectCount: 0
createdLoyaltyPointsEffectCount: 2
discountCount: 288.0
@@ -20914,7 +23810,7 @@ components:
- 100
- 215
applicationId: 322
- updated: 2000-01-23T04:56:07.000+00:00
+ updated: 2022-10-27T15:00:00Z
callApiEffectCount: 0
createdLoyaltyPointsEffectCount: 2
discountCount: 288.0
@@ -21059,6 +23955,7 @@ components:
customerSession:
couponCodes:
- XMAS-20-2021
+ cartItemAdditionalCostTotal: 15.0
updateCount: 3
created: 2020-02-07T08:15:22Z
identifiers:
@@ -21069,7 +23966,7 @@ components:
variantID: 2
- experimentID: 1
variantID: 2
- total: 119.99
+ total: 134.99
loyaltyCards:
- loyalty-card-1
additionalCosts:
@@ -21155,6 +24052,8 @@ components:
price: 100
height: 0.8008281904610115
updated: 2020-02-08T14:15:22Z
+ rewardIntegrationIds:
+ - 5c0b5e6d-3f8a-4c2b-9f1e-2a7d6b4c8e90
firstSession: true
cartItemTotal: 99.99
previousReturns:
@@ -21192,17 +24091,185 @@ components:
id: 6
sessionId: 123
applicationId: 322
+ campaignEligibility:
+ - description: Campaign for all summer 2021 promotions
+ eligibility:
+ - details:
+ failureCode: ALL_RULES_FAILED
+ passed: true
+ couponCode: couponCode
+ - details:
+ failureCode: ALL_RULES_FAILED
+ passed: true
+ couponCode: couponCode
+ rules:
+ - displayDescription: Get a 20% discount on all shoes during Thanksgiving!
+ Offer valid till Dec 5 only.
+ displayName: 20% off all shoes!
+ eligibility:
+ - details:
+ failureCode: CONDITION_NOT_MET
+ referralID: 0
+ conditionIndex: 6
+ effectIndex: 1
+ details: details
+ couponID: 4928
+ referralValue: referralValue
+ couponValue: couponValue
+ passed: true
+ couponCode: couponCode
+ - details:
+ failureCode: CONDITION_NOT_MET
+ referralID: 0
+ conditionIndex: 6
+ effectIndex: 1
+ details: details
+ couponID: 4928
+ referralValue: referralValue
+ couponValue: couponValue
+ passed: true
+ couponCode: couponCode
+ relatedData: https://example.com/discounts/20-off-shoes.png
+ title: Give discount via coupon
+ - displayDescription: Get a 20% discount on all shoes during Thanksgiving!
+ Offer valid till Dec 5 only.
+ displayName: 20% off all shoes!
+ eligibility:
+ - details:
+ failureCode: CONDITION_NOT_MET
+ referralID: 0
+ conditionIndex: 6
+ effectIndex: 1
+ details: details
+ couponID: 4928
+ referralValue: referralValue
+ couponValue: couponValue
+ passed: true
+ couponCode: couponCode
+ - details:
+ failureCode: CONDITION_NOT_MET
+ referralID: 0
+ conditionIndex: 6
+ effectIndex: 1
+ details: details
+ couponID: 4928
+ referralValue: referralValue
+ couponValue: couponValue
+ passed: true
+ couponCode: couponCode
+ relatedData: https://example.com/discounts/20-off-shoes.png
+ title: Give discount via coupon
+ tags:
+ - summer
+ features:
+ - coupons
+ - referrals
+ experiment:
+ id: 5
+ variantId: 5
+ name: Summer promotions
+ startTime: 2021-07-20T22:00:00Z
+ attributes: '{}'
+ id: 4
+ endTime: 2021-09-22T22:00:00Z
+ state: enabled
+ applicationId: 322
+ - description: Campaign for all summer 2021 promotions
+ eligibility:
+ - details:
+ failureCode: ALL_RULES_FAILED
+ passed: true
+ couponCode: couponCode
+ - details:
+ failureCode: ALL_RULES_FAILED
+ passed: true
+ couponCode: couponCode
+ rules:
+ - displayDescription: Get a 20% discount on all shoes during Thanksgiving!
+ Offer valid till Dec 5 only.
+ displayName: 20% off all shoes!
+ eligibility:
+ - details:
+ failureCode: CONDITION_NOT_MET
+ referralID: 0
+ conditionIndex: 6
+ effectIndex: 1
+ details: details
+ couponID: 4928
+ referralValue: referralValue
+ couponValue: couponValue
+ passed: true
+ couponCode: couponCode
+ - details:
+ failureCode: CONDITION_NOT_MET
+ referralID: 0
+ conditionIndex: 6
+ effectIndex: 1
+ details: details
+ couponID: 4928
+ referralValue: referralValue
+ couponValue: couponValue
+ passed: true
+ couponCode: couponCode
+ relatedData: https://example.com/discounts/20-off-shoes.png
+ title: Give discount via coupon
+ - displayDescription: Get a 20% discount on all shoes during Thanksgiving!
+ Offer valid till Dec 5 only.
+ displayName: 20% off all shoes!
+ eligibility:
+ - details:
+ failureCode: CONDITION_NOT_MET
+ referralID: 0
+ conditionIndex: 6
+ effectIndex: 1
+ details: details
+ couponID: 4928
+ referralValue: referralValue
+ couponValue: couponValue
+ passed: true
+ couponCode: couponCode
+ - details:
+ failureCode: CONDITION_NOT_MET
+ referralID: 0
+ conditionIndex: 6
+ effectIndex: 1
+ details: details
+ couponID: 4928
+ referralValue: referralValue
+ couponValue: couponValue
+ passed: true
+ couponCode: couponCode
+ relatedData: https://example.com/discounts/20-off-shoes.png
+ title: Give discount via coupon
+ tags:
+ - summer
+ features:
+ - coupons
+ - referrals
+ experiment:
+ id: 5
+ variantId: 5
+ name: Summer promotions
+ startTime: 2021-07-20T22:00:00Z
+ attributes: '{}'
+ id: 4
+ endTime: 2021-09-22T22:00:00Z
+ state: enabled
+ applicationId: 322
advancedEvent:
- connectedSessionID: 175KJPS947296
+ connectedSessionId: 175KJPS947296
+ effects:
+ - '{}'
+ - '{}'
storeIntegrationId: STORE-001
+ created: 2020-06-10T09:05:27.993483Z
profileId: URNGV8294NV
- evaluableCampaignIds:
- - 10
- - 12
- previousEventID: 175KJPS947296
+ referralCode: NT2K54D9
integrationId: 175KJPS947296
attributes:
myAttribute: myValue
+ id: 6
+ applicationId: 322
type: pageViewed
event:
effects:
@@ -21216,8 +24283,8 @@ components:
coupons: '{}'
referralRejectionReason:
reason: ReferralNotFound
- campaignId: 3
- referralId: 2
+ campaignId: 1
+ referralId: 1
warnings: '{}'
couponRejectionReason:
reason: CouponNotFound
@@ -21233,7 +24300,7 @@ components:
profileId: URNGV8294NV
loyaltyProgramId: 323414846
id: 6
- referenceId: 9
+ referenceId: 1
- expiryDate: 2022-04-26T11:02:38Z
accountId: 7
eventId: 3
@@ -21243,7 +24310,8 @@ components:
profileId: URNGV8294NV
loyaltyProgramId: 323414846
id: 6
- referenceId: 9
+ referenceId: 1
+ integrationId: 175KJPS947296
attributes:
myAttribute: myValue
id: 6
@@ -21251,34 +24319,81 @@ components:
applicationId: 322
type: pageViewed
ruleFailureReasons:
- - rulesetID: 6
- ruleIndex: 5
- campaignID: 0
- referralID: 1
- conditionIndex: 5
- effectIndex: 2
+ - rulesetID: 7
+ ruleIndex: 3
+ campaignID: 2
+ referralID: 9
+ rewardIntegrationId: 5c0b5e6d-3f8a-4c2b-9f1e-2a7d6b4c8e90
+ conditionIndex: 2
+ effectIndex: 4
evaluationGroupMode: stackable
couponID: 4928
referralValue: referralValue
couponValue: couponValue
+ rewardId: 7
evaluationGroupID: 3
ruleName: ruleName
details: details
campaignName: campaignName
- - rulesetID: 6
- ruleIndex: 5
- campaignID: 0
- referralID: 1
- conditionIndex: 5
- effectIndex: 2
+ - rulesetID: 7
+ ruleIndex: 3
+ campaignID: 2
+ referralID: 9
+ rewardIntegrationId: 5c0b5e6d-3f8a-4c2b-9f1e-2a7d6b4c8e90
+ conditionIndex: 2
+ effectIndex: 4
evaluationGroupMode: stackable
couponID: 4928
referralValue: referralValue
couponValue: couponValue
+ rewardId: 7
evaluationGroupID: 3
ruleName: ruleName
details: details
campaignName: campaignName
+ rewards:
+ - name: 10% Off Coupon
+ integrationId: free-coffee
+ description: Applies to next order
+ rule:
+ displayDescription: Get a 20% discount on all shoes during Thanksgiving!
+ Offer valid till Dec 5 only.
+ displayName: 20% off all shoes!
+ relatedData: https://example.com/discounts/20-off-shoes.png
+ title: Give discount via coupon
+ id: 42
+ unlocked:
+ - profileIntegrationId: customer1
+ unlockedAt: 2024-01-01T00:00:00Z
+ integrationId: reward-unlock-123
+ usedAt: 2024-01-02T00:00:00Z
+ applicationId: 3
+ - profileIntegrationId: customer1
+ unlockedAt: 2024-01-01T00:00:00Z
+ integrationId: reward-unlock-123
+ usedAt: 2024-01-02T00:00:00Z
+ applicationId: 3
+ - name: 10% Off Coupon
+ integrationId: free-coffee
+ description: Applies to next order
+ rule:
+ displayDescription: Get a 20% discount on all shoes during Thanksgiving!
+ Offer valid till Dec 5 only.
+ displayName: 20% off all shoes!
+ relatedData: https://example.com/discounts/20-off-shoes.png
+ title: Give discount via coupon
+ id: 42
+ unlocked:
+ - profileIntegrationId: customer1
+ unlockedAt: 2024-01-01T00:00:00Z
+ integrationId: reward-unlock-123
+ usedAt: 2024-01-02T00:00:00Z
+ applicationId: 3
+ - profileIntegrationId: customer1
+ unlockedAt: 2024-01-01T00:00:00Z
+ integrationId: reward-unlock-123
+ usedAt: 2024-01-02T00:00:00Z
+ applicationId: 3
return:
returnedCartItems:
- quantity: 1
@@ -21308,6 +24423,15 @@ components:
items:
$ref: '#/components/schemas/Campaign'
type: array
+ campaignEligibility:
+ description: "A list of campaigns and their evaluation status for the current\
+ \ customer session.\n\n**Note**:\n\n- This response can **only** be included\
+ \ if the `dry` parameter in the query is set to `true`. \n- Do not include\
+ \ `triggeredCampaigns` or `ruleFailureReasons` in `responseContent` to\
+ \ avoid duplicate results.\n"
+ items:
+ $ref: '#/components/schemas/CampaignEligibility'
+ type: array
effects:
description: The effects generated by the rules in your running campaigns.
See [API effects](https://docs.talon.one/docs/dev/integration-api/api-effects).
@@ -21336,6 +24460,16 @@ components:
items:
$ref: '#/components/schemas/Giveaway'
type: array
+ achievements:
+ description: The achievements progress of the customer.
+ items:
+ $ref: '#/components/schemas/CustomerAchievement'
+ type: array
+ rewards:
+ description: The rewards for the customer profile.
+ items:
+ $ref: '#/components/schemas/RewardWithUnlocks'
+ type: array
referral:
$ref: '#/components/schemas/InventoryReferral'
coupons:
@@ -21416,6 +24550,7 @@ components:
effectType: rejectCoupon
adjustmentReferenceId: 68851723-e6fa-488f-ace9-112581e6c19b
props: '{}'
+ rewardId: 7
selectedPrice: 100.0
evaluationGroupID: 3
triggeredForCatalogItem: 786
@@ -21433,6 +24568,7 @@ components:
effectType: rejectCoupon
adjustmentReferenceId: 68851723-e6fa-488f-ace9-112581e6c19b
props: '{}'
+ rewardId: 7
selectedPrice: 100.0
evaluationGroupID: 3
triggeredForCatalogItem: 786
@@ -21467,8 +24603,13 @@ components:
- event
- awardedGiveaways
- ruleFailureReasons
+ - campaignEligibility
+ - achievements
+ - unlockedRewards
type: string
type: array
+ x-internal-enum-values:
+ - campaignEligibility
type: object
ProfileAudiencesChanges:
example:
@@ -21556,8 +24697,13 @@ components:
- event
- awardedGiveaways
- ruleFailureReasons
+ - campaignEligibility
+ - achievements
+ - unlockedRewards
type: string
type: array
+ x-internal-enum-values:
+ - campaignEligibility
audiencesChanges:
$ref: '#/components/schemas/ProfileAudiencesChanges'
type: object
@@ -21575,6 +24721,7 @@ components:
effectType: rejectCoupon
adjustmentReferenceId: 68851723-e6fa-488f-ace9-112581e6c19b
props: '{}'
+ rewardId: 7
selectedPrice: 100.0
evaluationGroupID: 3
triggeredForCatalogItem: 786
@@ -21592,6 +24739,7 @@ components:
effectType: rejectCoupon
adjustmentReferenceId: 68851723-e6fa-488f-ace9-112581e6c19b
props: '{}'
+ rewardId: 7
selectedPrice: 100.0
evaluationGroupID: 3
triggeredForCatalogItem: 786
@@ -21681,7 +24829,7 @@ components:
- 100
- 215
applicationId: 322
- updated: 2000-01-23T04:56:07.000+00:00
+ updated: 2022-10-27T15:00:00Z
callApiEffectCount: 0
createdLoyaltyPointsEffectCount: 2
discountCount: 288.0
@@ -21836,7 +24984,7 @@ components:
- 100
- 215
applicationId: 322
- updated: 2000-01-23T04:56:07.000+00:00
+ updated: 2022-10-27T15:00:00Z
callApiEffectCount: 0
createdLoyaltyPointsEffectCount: 2
discountCount: 288.0
@@ -22082,6 +25230,171 @@ components:
name: program1
id: 5
title: My loyalty program
+ campaignEligibility:
+ - description: Campaign for all summer 2021 promotions
+ eligibility:
+ - details:
+ failureCode: ALL_RULES_FAILED
+ passed: true
+ couponCode: couponCode
+ - details:
+ failureCode: ALL_RULES_FAILED
+ passed: true
+ couponCode: couponCode
+ rules:
+ - displayDescription: Get a 20% discount on all shoes during Thanksgiving!
+ Offer valid till Dec 5 only.
+ displayName: 20% off all shoes!
+ eligibility:
+ - details:
+ failureCode: CONDITION_NOT_MET
+ referralID: 0
+ conditionIndex: 6
+ effectIndex: 1
+ details: details
+ couponID: 4928
+ referralValue: referralValue
+ couponValue: couponValue
+ passed: true
+ couponCode: couponCode
+ - details:
+ failureCode: CONDITION_NOT_MET
+ referralID: 0
+ conditionIndex: 6
+ effectIndex: 1
+ details: details
+ couponID: 4928
+ referralValue: referralValue
+ couponValue: couponValue
+ passed: true
+ couponCode: couponCode
+ relatedData: https://example.com/discounts/20-off-shoes.png
+ title: Give discount via coupon
+ - displayDescription: Get a 20% discount on all shoes during Thanksgiving!
+ Offer valid till Dec 5 only.
+ displayName: 20% off all shoes!
+ eligibility:
+ - details:
+ failureCode: CONDITION_NOT_MET
+ referralID: 0
+ conditionIndex: 6
+ effectIndex: 1
+ details: details
+ couponID: 4928
+ referralValue: referralValue
+ couponValue: couponValue
+ passed: true
+ couponCode: couponCode
+ - details:
+ failureCode: CONDITION_NOT_MET
+ referralID: 0
+ conditionIndex: 6
+ effectIndex: 1
+ details: details
+ couponID: 4928
+ referralValue: referralValue
+ couponValue: couponValue
+ passed: true
+ couponCode: couponCode
+ relatedData: https://example.com/discounts/20-off-shoes.png
+ title: Give discount via coupon
+ tags:
+ - summer
+ features:
+ - coupons
+ - referrals
+ experiment:
+ id: 5
+ variantId: 5
+ name: Summer promotions
+ startTime: 2021-07-20T22:00:00Z
+ attributes: '{}'
+ id: 4
+ endTime: 2021-09-22T22:00:00Z
+ state: enabled
+ applicationId: 322
+ - description: Campaign for all summer 2021 promotions
+ eligibility:
+ - details:
+ failureCode: ALL_RULES_FAILED
+ passed: true
+ couponCode: couponCode
+ - details:
+ failureCode: ALL_RULES_FAILED
+ passed: true
+ couponCode: couponCode
+ rules:
+ - displayDescription: Get a 20% discount on all shoes during Thanksgiving!
+ Offer valid till Dec 5 only.
+ displayName: 20% off all shoes!
+ eligibility:
+ - details:
+ failureCode: CONDITION_NOT_MET
+ referralID: 0
+ conditionIndex: 6
+ effectIndex: 1
+ details: details
+ couponID: 4928
+ referralValue: referralValue
+ couponValue: couponValue
+ passed: true
+ couponCode: couponCode
+ - details:
+ failureCode: CONDITION_NOT_MET
+ referralID: 0
+ conditionIndex: 6
+ effectIndex: 1
+ details: details
+ couponID: 4928
+ referralValue: referralValue
+ couponValue: couponValue
+ passed: true
+ couponCode: couponCode
+ relatedData: https://example.com/discounts/20-off-shoes.png
+ title: Give discount via coupon
+ - displayDescription: Get a 20% discount on all shoes during Thanksgiving!
+ Offer valid till Dec 5 only.
+ displayName: 20% off all shoes!
+ eligibility:
+ - details:
+ failureCode: CONDITION_NOT_MET
+ referralID: 0
+ conditionIndex: 6
+ effectIndex: 1
+ details: details
+ couponID: 4928
+ referralValue: referralValue
+ couponValue: couponValue
+ passed: true
+ couponCode: couponCode
+ - details:
+ failureCode: CONDITION_NOT_MET
+ referralID: 0
+ conditionIndex: 6
+ effectIndex: 1
+ details: details
+ couponID: 4928
+ referralValue: referralValue
+ couponValue: couponValue
+ passed: true
+ couponCode: couponCode
+ relatedData: https://example.com/discounts/20-off-shoes.png
+ title: Give discount via coupon
+ tags:
+ - summer
+ features:
+ - coupons
+ - referrals
+ experiment:
+ id: 5
+ variantId: 5
+ name: Summer promotions
+ startTime: 2021-07-20T22:00:00Z
+ attributes: '{}'
+ id: 4
+ endTime: 2021-09-22T22:00:00Z
+ state: enabled
+ applicationId: 322
awardedGiveaways:
- profileIntegrationId: R195412
code: GIVEAWAY1
@@ -22117,8 +25430,8 @@ components:
coupons: '{}'
referralRejectionReason:
reason: ReferralNotFound
- campaignId: 3
- referralId: 2
+ campaignId: 1
+ referralId: 1
warnings: '{}'
couponRejectionReason:
reason: CouponNotFound
@@ -22134,7 +25447,7 @@ components:
profileId: URNGV8294NV
loyaltyProgramId: 323414846
id: 6
- referenceId: 9
+ referenceId: 1
- expiryDate: 2022-04-26T11:02:38Z
accountId: 7
eventId: 3
@@ -22144,7 +25457,8 @@ components:
profileId: URNGV8294NV
loyaltyProgramId: 323414846
id: 6
- referenceId: 9
+ referenceId: 1
+ integrationId: 175KJPS947296
attributes:
myAttribute: myValue
id: 6
@@ -22217,34 +25531,81 @@ components:
discountRemainder: 5.0
isReservationMandatory: false
ruleFailureReasons:
- - rulesetID: 6
- ruleIndex: 5
- campaignID: 0
- referralID: 1
- conditionIndex: 5
- effectIndex: 2
+ - rulesetID: 7
+ ruleIndex: 3
+ campaignID: 2
+ referralID: 9
+ rewardIntegrationId: 5c0b5e6d-3f8a-4c2b-9f1e-2a7d6b4c8e90
+ conditionIndex: 2
+ effectIndex: 4
evaluationGroupMode: stackable
couponID: 4928
referralValue: referralValue
couponValue: couponValue
+ rewardId: 7
evaluationGroupID: 3
ruleName: ruleName
details: details
campaignName: campaignName
- - rulesetID: 6
- ruleIndex: 5
- campaignID: 0
- referralID: 1
- conditionIndex: 5
- effectIndex: 2
+ - rulesetID: 7
+ ruleIndex: 3
+ campaignID: 2
+ referralID: 9
+ rewardIntegrationId: 5c0b5e6d-3f8a-4c2b-9f1e-2a7d6b4c8e90
+ conditionIndex: 2
+ effectIndex: 4
evaluationGroupMode: stackable
couponID: 4928
referralValue: referralValue
couponValue: couponValue
+ rewardId: 7
evaluationGroupID: 3
ruleName: ruleName
details: details
campaignName: campaignName
+ rewards:
+ - name: 10% Off Coupon
+ integrationId: free-coffee
+ description: Applies to next order
+ rule:
+ displayDescription: Get a 20% discount on all shoes during Thanksgiving!
+ Offer valid till Dec 5 only.
+ displayName: 20% off all shoes!
+ relatedData: https://example.com/discounts/20-off-shoes.png
+ title: Give discount via coupon
+ id: 42
+ unlocked:
+ - profileIntegrationId: customer1
+ unlockedAt: 2024-01-01T00:00:00Z
+ integrationId: reward-unlock-123
+ usedAt: 2024-01-02T00:00:00Z
+ applicationId: 3
+ - profileIntegrationId: customer1
+ unlockedAt: 2024-01-01T00:00:00Z
+ integrationId: reward-unlock-123
+ usedAt: 2024-01-02T00:00:00Z
+ applicationId: 3
+ - name: 10% Off Coupon
+ integrationId: free-coffee
+ description: Applies to next order
+ rule:
+ displayDescription: Get a 20% discount on all shoes during Thanksgiving!
+ Offer valid till Dec 5 only.
+ displayName: 20% off all shoes!
+ relatedData: https://example.com/discounts/20-off-shoes.png
+ title: Give discount via coupon
+ id: 42
+ unlocked:
+ - profileIntegrationId: customer1
+ unlockedAt: 2024-01-01T00:00:00Z
+ integrationId: reward-unlock-123
+ usedAt: 2024-01-02T00:00:00Z
+ applicationId: 3
+ - profileIntegrationId: customer1
+ unlockedAt: 2024-01-01T00:00:00Z
+ integrationId: reward-unlock-123
+ usedAt: 2024-01-02T00:00:00Z
+ applicationId: 3
createdReferrals:
- code: 27G47Y54VH9L
created: 2020-06-10T09:05:27.993483Z
@@ -22289,10 +25650,19 @@ components:
items:
$ref: '#/components/schemas/RuleFailureReason'
type: array
+ campaignEligibility:
+ items:
+ $ref: '#/components/schemas/CampaignEligibility'
+ type: array
awardedGiveaways:
items:
$ref: '#/components/schemas/Giveaway'
type: array
+ rewards:
+ description: The rewards for the customer profile.
+ items:
+ $ref: '#/components/schemas/RewardWithUnlocks'
+ type: array
effects:
description: The effects generated by the rules in your running campaigns.
See [API effects](https://docs.talon.one/docs/dev/integration-api/api-effects).
@@ -22458,6 +25828,17 @@ components:
description: A description of the audience.
example: Travel audience 18-27
type: string
+ subscribedApplicationsIds:
+ description: A list of the IDs of the Applications that are connected to
+ this audience.
+ example:
+ - 3
+ - 13
+ items:
+ format: int64
+ type: integer
+ type: array
+ uniqueItems: true
required:
- name
type: object
@@ -22466,6 +25847,9 @@ components:
lastUpdate: 2022-04-26T11:02:38Z
name: Travel audience
sandbox: true
+ subscribedApplicationsIds:
+ - 3
+ - 13
integration: mparticle
description: Travel audience 18-27
integrationId: 382370BKDB946
@@ -22484,6 +25868,17 @@ components:
description: A description of the audience.
example: Travel audience 18-27
type: string
+ subscribedApplicationsIds:
+ description: A list of the IDs of the Applications that are connected to
+ this audience.
+ example:
+ - 3
+ - 13
+ items:
+ format: int64
+ type: integer
+ type: array
+ uniqueItems: true
integration:
description: |
The Talon.One-supported [3rd-party platform](https://docs.talon.one/docs/dev/technology-partners/overview) that this audience was created in.
@@ -22521,6 +25916,9 @@ components:
lastUpdate: 2022-04-26T11:02:38Z
name: Travel audience
sandbox: true
+ subscribedApplicationsIds:
+ - 3
+ - 13
integration: mparticle
description: Travel audience 18-27
integrationId: 382370BKDB946
@@ -22555,6 +25953,17 @@ components:
description: A description of the audience.
example: Travel audience 18-27
type: string
+ subscribedApplicationsIds:
+ description: A list of the IDs of the Applications that are connected to
+ this audience.
+ example:
+ - 3
+ - 13
+ items:
+ format: int64
+ type: integer
+ type: array
+ uniqueItems: true
integration:
description: |
The Talon.One-supported [3rd-party platform](https://docs.talon.one/docs/dev/technology-partners/overview) that this audience was created in.
@@ -22591,12 +26000,26 @@ components:
UpdateAudience:
example:
name: Travel audience
+ subscribedApplicationsIds:
+ - 3
+ - 13
properties:
name:
description: The human-friendly display name for this audience.
example: Travel audience
minLength: 1
type: string
+ subscribedApplicationsIds:
+ description: A list of the IDs of the Applications that are connected to
+ this audience.
+ example:
+ - 3
+ - 13
+ items:
+ format: int64
+ type: integer
+ type: array
+ uniqueItems: true
required:
- name
type: object
@@ -22706,59 +26129,51 @@ components:
$ref: '#/components/schemas/IntegrationCustomerProfileAudienceRequestItem'
type: array
type: object
- RuleMetadata:
- properties:
- title:
- description: A short description of the rule.
- example: Give discount via coupon
- type: string
- displayName:
- description: A customer-facing name for the rule.
- example: 20% off all shoes!
- type: string
- displayDescription:
- description: "A customer-facing description that explains the details of\
- \ the rule. \n\nFor example, this property can contain details about eligibility\
- \ requirements, reward timelines, or terms and conditions.\n"
- example: Get a 20% discount on all shoes during Thanksgiving! Offer valid
- till Dec 5 only.
- type: string
- relatedData:
- description: |
- Any additional data associated with the rule, such as an image URL, vendor name, or a content management system (CMS) ID.
- example: https://example.com/discounts/20-off-shoes.png
- type: string
- required:
- - title
- type: object
IntegrationCampaign:
example:
+ description: Campaign for all summer 2021 promotions
+ rules:
+ - displayDescription: Get a 20% discount on all shoes during Thanksgiving!
+ Offer valid till Dec 5 only.
+ displayName: 20% off all shoes!
+ relatedData: https://example.com/discounts/20-off-shoes.png
+ title: Give discount via coupon
+ - displayDescription: Get a 20% discount on all shoes during Thanksgiving!
+ Offer valid till Dec 5 only.
+ displayName: 20% off all shoes!
+ relatedData: https://example.com/discounts/20-off-shoes.png
+ title: Give discount via coupon
+ tags:
+ - summer
+ linkedAudienceIds:
+ - 3
+ - 4
features:
- coupons
- referrals
+ linkedStoreIds:
+ - 1
+ - 2
name: Summer promotions
- description: Campaign for all summer 2021 promotions
startTime: 2021-07-20T22:00:00Z
attributes: '{}'
id: 4
endTime: 2021-09-22T22:00:00Z
state: enabled
applicationId: 322
- tags:
- - summer
properties:
- id:
- description: Unique ID of Campaign.
- example: 4
- format: int64
- type: integer
applicationId:
description: The ID of the Application that owns this entity.
example: 322
format: int64
type: integer
+ id:
+ description: Unique ID of Campaign.
+ example: 4
+ format: int64
+ type: integer
name:
- description: A user-facing name for this campaign.
+ description: The name of the campaign.
example: Summer promotions
minLength: 1
title: Campaign Name
@@ -22813,13 +26228,39 @@ components:
- giveaways
- strikethrough
- achievements
+ - advancedEvents
type: string
type: array
+ rules:
+ description: A list of rules containing customer-facing details of the rewards
+ defined in the campaign.
+ items:
+ $ref: '#/components/schemas/RuleMetadata'
+ type: array
+ linkedStoreIds:
+ description: A list of store IDs linked to this campaign.
+ example:
+ - 1
+ - 2
+ items:
+ format: int64
+ type: integer
+ type: array
+ linkedAudienceIds:
+ description: A list of audience IDs linked to this campaign.
+ example:
+ - 3
+ - 4
+ items:
+ format: int64
+ type: integer
+ type: array
required:
- applicationId
- features
- id
- name
+ - rules
- state
- tags
type: object
@@ -23385,8 +26826,8 @@ components:
EventAttributesEntity:
properties:
type:
- description: |
- A string representing the event name. Must not be a reserved event name. You create this value when you [create an attribute](https://docs.talon.one/docs/dev/concepts/entities/events#creating-a-custom-event) of type `event` in the Campaign Manager.
+ description: The name of the event. Must be a [custom event](https://docs.talon.one/docs/dev/concepts/entities/events#custom-events),
+ not a built-in event.
example: pageViewed
minLength: 1
title: Event Type
@@ -23432,8 +26873,8 @@ components:
title: Campaigns to evaluate
type: array
type:
- description: |
- A string representing the event name. Must not be a reserved event name. You create this value when you [create an attribute](https://docs.talon.one/docs/dev/concepts/entities/events#creating-a-custom-event) of type `event` in the Campaign Manager.
+ description: The name of the event. Must be a [custom event](https://docs.talon.one/docs/dev/concepts/entities/events#custom-events),
+ not a built-in event.
example: pageViewed
minLength: 1
title: Event Type
@@ -23493,8 +26934,8 @@ components:
title: Campaigns to evaluate
type: array
type:
- description: |
- A string representing the event name. Must not be a reserved event name. You create this value when you [create an attribute](https://docs.talon.one/docs/dev/concepts/entities/events#creating-a-custom-event) of type `event` in the Campaign Manager.
+ description: The name of the event. Must be a [custom event](https://docs.talon.one/docs/dev/concepts/entities/events#custom-events),
+ not a built-in event.
example: pageViewed
minLength: 1
title: Event Type
@@ -23521,8 +26962,13 @@ components:
- event
- awardedGiveaways
- ruleFailureReasons
+ - campaignEligibility
+ - achievements
+ - unlockedRewards
type: string
type: array
+ x-internal-enum-values:
+ - campaignEligibility
loyaltyCards:
description: Identifiers of the loyalty cards used during this event.
example:
@@ -23680,6 +27126,18 @@ components:
mandatory:
$ref: '#/components/schemas/AttributesMandatory'
type: object
+ BestPriorPriceSettings:
+ description: The best prior price settings for this Application.
+ example:
+ enableBestPriorPrice: true
+ properties:
+ enableBestPriorPrice:
+ description: When set to `true`, the best prior price feature is enabled
+ in this Application and its [price history](https://docs.talon.one/management-api#tag/Catalogs/operation/priceHistory)
+ is recorded.
+ example: true
+ type: boolean
+ type: object
UpdateApplication:
properties:
name:
@@ -23775,6 +27233,8 @@ components:
**Important:** After this feature is enabled, it cannot be disabled.
example: false
type: boolean
+ bestPriorPriceSettings:
+ $ref: '#/components/schemas/BestPriorPriceSettings'
required:
- currency
- name
@@ -24284,6 +27744,8 @@ components:
type: object
Application:
example:
+ bestPriorPriceSettings:
+ enableBestPriorPrice: true
enableFlattenedCartItems: true
created: 2020-06-10T09:05:27.993483Z
timezone: Europe/Berlin
@@ -24599,6 +28061,8 @@ components:
**Important:** After this feature is enabled, it cannot be disabled.
example: false
type: boolean
+ bestPriorPriceSettings:
+ $ref: '#/components/schemas/BestPriorPriceSettings'
loyaltyPrograms:
description: An array containing all the loyalty programs to which this
application is subscribed.
@@ -24645,6 +28109,17 @@ components:
example: Travel audience
minLength: 1
type: string
+ subscribedApplicationsIds:
+ description: A list of the IDs of the Applications that are connected to
+ this audience.
+ example:
+ - 3
+ - 13
+ items:
+ format: int64
+ type: integer
+ type: array
+ uniqueItems: true
integrationId:
description: The ID of this audience in the third-party integration.
example: 382370BKDB946
@@ -24680,6 +28155,17 @@ components:
example: Travel audience
minLength: 1
type: string
+ subscribedApplicationsIds:
+ description: A list of the IDs of the Applications that are connected to
+ this audience.
+ example:
+ - 3
+ - 13
+ items:
+ format: int64
+ type: integer
+ type: array
+ uniqueItems: true
integrationId:
description: The ID of this audience in the third-party integration.
example: 382370BKDB946
@@ -24743,10 +28229,10 @@ components:
description: |
Indicates the current state of the session. Sessions can be created as `open` or `closed`. The state transitions are:
- 1. `open` → `closed`
- 2. `open` → `cancelled`
- 3. `closed` → `cancelled` or `partially_returned`
- 4. `partially_returned` → `cancelled`
+ 1. `open` -> `closed`
+ 2. `open` -> `cancelled`
+ 3. `closed` -> `cancelled` or `partially_returned`
+ 4. `partially_returned` -> `cancelled`
For more information, see [Customer session states](https://docs.talon.one/docs/dev/concepts/entities/customer-sessions).
enum:
@@ -24828,10 +28314,10 @@ components:
description: |
Indicates the current state of the session. Sessions can be created as `open` or `closed`. The state transitions are:
- 1. `open` → `closed`
- 2. `open` → `cancelled`
- 3. `closed` → `cancelled` or `partially_returned`
- 4. `partially_returned` → `cancelled`
+ 1. `open` -> `closed`
+ 2. `open` -> `cancelled`
+ 3. `closed` -> `cancelled` or `partially_returned`
+ 4. `partially_returned` -> `cancelled`
For more information, see [Customer session states](https://docs.talon.one/docs/dev/concepts/entities/customer-sessions).
enum:
@@ -24931,6 +28417,83 @@ components:
- profile
- session
type: object
+ NewDigitalPass:
+ properties:
+ loyaltyProgramId:
+ description: The ID of the associated loyalty program.
+ example: 42
+ format: int64
+ minimum: 1
+ type: integer
+ passTemplateId:
+ description: |
+ The ID of the digital pass template used to generate the pass.
+ example: tmpl_summer_loyalty
+ minLength: 1
+ type: string
+ profileId:
+ description: The integration ID of the customer profile the pass is issued
+ for.
+ example: "12412412421"
+ minLength: 1
+ type: string
+ loyaltyCardId:
+ description: |
+ The identifier of the loyalty card the pass is issued for.
+
+ **Note**: Only applicable for card-based loyalty programs.
+ example: summer-loyalty-0e2f
+ type: string
+ platform:
+ description: The wallet platform the pass is generated for.
+ enum:
+ - apple
+ - google
+ example: google
+ type: string
+ attributes:
+ additionalProperties:
+ type: string
+ description: |
+ A map of placeholder values that you provide to fill in the pass template.
+ These values are not validated against the template.
+ example:
+ hm_member_name: Jane Doe
+ type: object
+ required:
+ - loyaltyProgramId
+ - passTemplateId
+ - platform
+ - profileId
+ type: object
+ DigitalPass:
+ properties:
+ passId:
+ description: The ID of the generated digital pass.
+ example: pass_9c3f1a2b
+ type: string
+ passTemplateId:
+ description: The ID of the digital pass template used to generate the pass.
+ example: tmpl_summer_loyalty
+ type: string
+ status:
+ description: The status of the digital pass.
+ enum:
+ - created
+ example: created
+ type: string
+ passUrl:
+ description: The URL you can use to let the customer add the digital pass
+ to their wallet.
+ example: https://wallet.example.com/passes/pass_9c3f1a2b
+ format: uri
+ type: string
+ required:
+ - passId
+ - passTemplateId
+ - passUrl
+ - status
+ type: object
NewEvent:
properties:
profileId:
@@ -24948,8 +28511,8 @@ components:
minLength: 1
type: string
type:
- description: A string representing the event. Must not be a reserved event
- name.
+ description: The name of the event. Must be a [custom event](https://docs.talon.one/docs/dev/concepts/entities/events#custom-events),
+ not a built-in event.
example: pageViewed
minLength: 1
title: Event Type
@@ -24984,6 +28547,7 @@ components:
effectType: rejectCoupon
adjustmentReferenceId: 68851723-e6fa-488f-ace9-112581e6c19b
props: '{}'
+ rewardId: 7
selectedPrice: 100.0
evaluationGroupID: 3
triggeredForCatalogItem: 786
@@ -25001,6 +28565,7 @@ components:
effectType: rejectCoupon
adjustmentReferenceId: 68851723-e6fa-488f-ace9-112581e6c19b
props: '{}'
+ rewardId: 7
selectedPrice: 100.0
evaluationGroupID: 3
triggeredForCatalogItem: 786
@@ -25009,162 +28574,60 @@ components:
ruleName: Give 20% discount
experimentId: 12
triggeredByCoupon: 4928
- triggeredCampaigns:
- - type: advanced
- templateId: 3
- customEffectCount: 0
- activeRevisionId: 6
- features:
- - coupons
- - referrals
- createdLoyaltyPointsCount: 9.0
- storesImported: true
- couponSettings:
- couponPattern: SUMMER-####-####
- validCharacters:
- - A
- - B
- - C
- - D
- - E
- - F
- - G
- - H
- - I
- - J
- - K
- - L
- - M
- - "N"
- - O
- - P
- - Q
- - R
- - S
- - T
- - U
- - V
- - W
- - X
- - "Y"
- - Z
- - "0"
- - "1"
- - "2"
- - "3"
- - "4"
- - "5"
- - "6"
- - "7"
- - "8"
- - "9"
- experimentId: 1
- id: 4
- state: enabled
- couponAttributes: '{}'
- reservecouponEffectCount: 9
- updatedBy: Jane Doe
- frontendState: running
- created: 2020-06-10T09:05:27.993483Z
- referralCreationCount: 8
- stageRevision: false
- couponRedemptionCount: 163
- couponCreationCount: 16
- version: 6
- campaignGroups:
+ achievements:
+ - currentProgress:
+ endDate: 2000-01-23T04:56:07.000+00:00
+ progress: 10.0
+ completionDate: 2000-01-23T04:56:07.000+00:00
+ startDate: 2000-01-23T04:56:07.000+00:00
+ status: completed
+ referencedByCampaigns:
+ - id: 1
+ applicationId: 2
+ - id: 1
+ applicationId: 2
+ endDate: 2000-01-23T04:56:07.000+00:00
+ campaignId: 3
+ description: 50% off for every 50th purchase in a year.
+ activationPolicy: fixed_schedule
+ title: 50% off on 50th purchase.
+ allowRollbackAfterCompletion: false
+ target: 10.0
+ fixedStartDate: 2000-01-23T04:56:07.000+00:00
+ name: FreeCoffee10Orders
+ id: 3
+ campaignIds:
- 1
- - 3
- tags:
- - summer
- discountEffectCount: 343
- budgets:
- - limit: 1000.0
- action: createCoupon
- counter: 42.0
- - limit: 1000.0
- action: createCoupon
- counter: 42.0
- redeemedLoyaltyPointsCount: 8.0
- name: Summer promotions
- valueMapsIds:
- - 100
- - 215
- applicationId: 322
- updated: 2000-01-23T04:56:07.000+00:00
- callApiEffectCount: 0
- createdLoyaltyPointsEffectCount: 2
- discountCount: 288.0
- revisionFrontendState: revised
- description: Campaign for all summer 2021 promotions
- activeRevisionVersionId: 6
- currentRevisionVersionId: 6
- startTime: 2021-07-20T22:00:00Z
- currentRevisionId: 6
- limits:
- - period: yearly
- entities:
- - Coupon
- limit: 1000.0
- action: createCoupon
- - period: yearly
- entities:
- - Coupon
- limit: 1000.0
- action: createCoupon
- activeRulesetId: 6
- reevaluateOnReturn: true
- userId: 388
- awardedGiveawaysCount: 9
- redeemedLoyaltyPointsEffectCount: 9
- linkedStoreIds:
+ - 14
+ - 27
+ recurrencePolicy: no_recurrence
+ - currentProgress:
+ endDate: 2000-01-23T04:56:07.000+00:00
+ progress: 10.0
+ completionDate: 2000-01-23T04:56:07.000+00:00
+ startDate: 2000-01-23T04:56:07.000+00:00
+ status: completed
+ referencedByCampaigns:
+ - id: 1
+ applicationId: 2
+ - id: 1
+ applicationId: 2
+ endDate: 2000-01-23T04:56:07.000+00:00
+ campaignId: 3
+ description: 50% off for every 50th purchase in a year.
+ activationPolicy: fixed_schedule
+ title: 50% off on 50th purchase.
+ allowRollbackAfterCompletion: false
+ target: 10.0
+ fixedStartDate: 2000-01-23T04:56:07.000+00:00
+ name: FreeCoffee10Orders
+ id: 3
+ campaignIds:
- 1
- - 2
- - 3
- createdBy: John Doe
- addFreeItemEffectCount: 0
- referralSettings:
- couponPattern: SUMMER-####-####
- validCharacters:
- - A
- - B
- - C
- - D
- - E
- - F
- - G
- - H
- - I
- - J
- - K
- - L
- - M
- - "N"
- - O
- - P
- - Q
- - R
- - S
- - T
- - U
- - V
- - W
- - X
- - "Y"
- - Z
- - "0"
- - "1"
- - "2"
- - "3"
- - "4"
- - "5"
- - "6"
- - "7"
- - "8"
- - "9"
- attributes: '{}'
- lastActivity: 2022-11-10T23:00:00Z
- endTime: 2021-09-22T22:00:00Z
- referralRedemptionCount: 3
+ - 14
+ - 27
+ recurrencePolicy: no_recurrence
+ triggeredCampaigns:
- type: advanced
templateId: 3
customEffectCount: 0
@@ -25245,7 +28708,162 @@ components:
- 100
- 215
applicationId: 322
- updated: 2000-01-23T04:56:07.000+00:00
+ updated: 2022-10-27T15:00:00Z
+ callApiEffectCount: 0
+ createdLoyaltyPointsEffectCount: 2
+ discountCount: 288.0
+ revisionFrontendState: revised
+ description: Campaign for all summer 2021 promotions
+ activeRevisionVersionId: 6
+ currentRevisionVersionId: 6
+ startTime: 2021-07-20T22:00:00Z
+ currentRevisionId: 6
+ limits:
+ - period: yearly
+ entities:
+ - Coupon
+ limit: 1000.0
+ action: createCoupon
+ - period: yearly
+ entities:
+ - Coupon
+ limit: 1000.0
+ action: createCoupon
+ activeRulesetId: 6
+ reevaluateOnReturn: true
+ userId: 388
+ awardedGiveawaysCount: 9
+ redeemedLoyaltyPointsEffectCount: 9
+ linkedStoreIds:
+ - 1
+ - 2
+ - 3
+ createdBy: John Doe
+ addFreeItemEffectCount: 0
+ referralSettings:
+ couponPattern: SUMMER-####-####
+ validCharacters:
+ - A
+ - B
+ - C
+ - D
+ - E
+ - F
+ - G
+ - H
+ - I
+ - J
+ - K
+ - L
+ - M
+ - "N"
+ - O
+ - P
+ - Q
+ - R
+ - S
+ - T
+ - U
+ - V
+ - W
+ - X
+ - "Y"
+ - Z
+ - "0"
+ - "1"
+ - "2"
+ - "3"
+ - "4"
+ - "5"
+ - "6"
+ - "7"
+ - "8"
+ - "9"
+ attributes: '{}'
+ lastActivity: 2022-11-10T23:00:00Z
+ endTime: 2021-09-22T22:00:00Z
+ referralRedemptionCount: 3
+ - type: advanced
+ templateId: 3
+ customEffectCount: 0
+ activeRevisionId: 6
+ features:
+ - coupons
+ - referrals
+ createdLoyaltyPointsCount: 9.0
+ storesImported: true
+ couponSettings:
+ couponPattern: SUMMER-####-####
+ validCharacters:
+ - A
+ - B
+ - C
+ - D
+ - E
+ - F
+ - G
+ - H
+ - I
+ - J
+ - K
+ - L
+ - M
+ - "N"
+ - O
+ - P
+ - Q
+ - R
+ - S
+ - T
+ - U
+ - V
+ - W
+ - X
+ - "Y"
+ - Z
+ - "0"
+ - "1"
+ - "2"
+ - "3"
+ - "4"
+ - "5"
+ - "6"
+ - "7"
+ - "8"
+ - "9"
+ experimentId: 1
+ id: 4
+ state: enabled
+ couponAttributes: '{}'
+ reservecouponEffectCount: 9
+ updatedBy: Jane Doe
+ frontendState: running
+ created: 2020-06-10T09:05:27.993483Z
+ referralCreationCount: 8
+ stageRevision: false
+ couponRedemptionCount: 163
+ couponCreationCount: 16
+ version: 6
+ campaignGroups:
+ - 1
+ - 3
+ tags:
+ - summer
+ discountEffectCount: 343
+ budgets:
+ - limit: 1000.0
+ action: createCoupon
+ counter: 42.0
+ - limit: 1000.0
+ action: createCoupon
+ counter: 42.0
+ redeemedLoyaltyPointsCount: 8.0
+ name: Summer promotions
+ valueMapsIds:
+ - 100
+ - 215
+ applicationId: 322
+ updated: 2022-10-27T15:00:00Z
callApiEffectCount: 0
createdLoyaltyPointsEffectCount: 2
discountCount: 288.0
@@ -25491,6 +29109,171 @@ components:
name: program1
id: 5
title: My loyalty program
+ campaignEligibility:
+ - description: Campaign for all summer 2021 promotions
+ eligibility:
+ - details:
+ failureCode: ALL_RULES_FAILED
+ passed: true
+ couponCode: couponCode
+ - details:
+ failureCode: ALL_RULES_FAILED
+ passed: true
+ couponCode: couponCode
+ rules:
+ - displayDescription: Get a 20% discount on all shoes during Thanksgiving!
+ Offer valid till Dec 5 only.
+ displayName: 20% off all shoes!
+ eligibility:
+ - details:
+ failureCode: CONDITION_NOT_MET
+ referralID: 0
+ conditionIndex: 6
+ effectIndex: 1
+ details: details
+ couponID: 4928
+ referralValue: referralValue
+ couponValue: couponValue
+ passed: true
+ couponCode: couponCode
+ - details:
+ failureCode: CONDITION_NOT_MET
+ referralID: 0
+ conditionIndex: 6
+ effectIndex: 1
+ details: details
+ couponID: 4928
+ referralValue: referralValue
+ couponValue: couponValue
+ passed: true
+ couponCode: couponCode
+ relatedData: https://example.com/discounts/20-off-shoes.png
+ title: Give discount via coupon
+ - displayDescription: Get a 20% discount on all shoes during Thanksgiving!
+ Offer valid till Dec 5 only.
+ displayName: 20% off all shoes!
+ eligibility:
+ - details:
+ failureCode: CONDITION_NOT_MET
+ referralID: 0
+ conditionIndex: 6
+ effectIndex: 1
+ details: details
+ couponID: 4928
+ referralValue: referralValue
+ couponValue: couponValue
+ passed: true
+ couponCode: couponCode
+ - details:
+ failureCode: CONDITION_NOT_MET
+ referralID: 0
+ conditionIndex: 6
+ effectIndex: 1
+ details: details
+ couponID: 4928
+ referralValue: referralValue
+ couponValue: couponValue
+ passed: true
+ couponCode: couponCode
+ relatedData: https://example.com/discounts/20-off-shoes.png
+ title: Give discount via coupon
+ tags:
+ - summer
+ features:
+ - coupons
+ - referrals
+ experiment:
+ id: 5
+ variantId: 5
+ name: Summer promotions
+ startTime: 2021-07-20T22:00:00Z
+ attributes: '{}'
+ id: 4
+ endTime: 2021-09-22T22:00:00Z
+ state: enabled
+ applicationId: 322
+ - description: Campaign for all summer 2021 promotions
+ eligibility:
+ - details:
+ failureCode: ALL_RULES_FAILED
+ passed: true
+ couponCode: couponCode
+ - details:
+ failureCode: ALL_RULES_FAILED
+ passed: true
+ couponCode: couponCode
+ rules:
+ - displayDescription: Get a 20% discount on all shoes during Thanksgiving!
+ Offer valid till Dec 5 only.
+ displayName: 20% off all shoes!
+ eligibility:
+ - details:
+ failureCode: CONDITION_NOT_MET
+ referralID: 0
+ conditionIndex: 6
+ effectIndex: 1
+ details: details
+ couponID: 4928
+ referralValue: referralValue
+ couponValue: couponValue
+ passed: true
+ couponCode: couponCode
+ - details:
+ failureCode: CONDITION_NOT_MET
+ referralID: 0
+ conditionIndex: 6
+ effectIndex: 1
+ details: details
+ couponID: 4928
+ referralValue: referralValue
+ couponValue: couponValue
+ passed: true
+ couponCode: couponCode
+ relatedData: https://example.com/discounts/20-off-shoes.png
+ title: Give discount via coupon
+ - displayDescription: Get a 20% discount on all shoes during Thanksgiving!
+ Offer valid till Dec 5 only.
+ displayName: 20% off all shoes!
+ eligibility:
+ - details:
+ failureCode: CONDITION_NOT_MET
+ referralID: 0
+ conditionIndex: 6
+ effectIndex: 1
+ details: details
+ couponID: 4928
+ referralValue: referralValue
+ couponValue: couponValue
+ passed: true
+ couponCode: couponCode
+ - details:
+ failureCode: CONDITION_NOT_MET
+ referralID: 0
+ conditionIndex: 6
+ effectIndex: 1
+ details: details
+ couponID: 4928
+ referralValue: referralValue
+ couponValue: couponValue
+ passed: true
+ couponCode: couponCode
+ relatedData: https://example.com/discounts/20-off-shoes.png
+ title: Give discount via coupon
+ tags:
+ - summer
+ features:
+ - coupons
+ - referrals
+ experiment:
+ id: 5
+ variantId: 5
+ name: Summer promotions
+ startTime: 2021-07-20T22:00:00Z
+ attributes: '{}'
+ id: 4
+ endTime: 2021-09-22T22:00:00Z
+ state: enabled
+ applicationId: 322
awardedGiveaways:
- profileIntegrationId: R195412
code: GIVEAWAY1
@@ -25591,8 +29374,8 @@ components:
coupons: '{}'
referralRejectionReason:
reason: ReferralNotFound
- campaignId: 3
- referralId: 2
+ campaignId: 1
+ referralId: 1
warnings: '{}'
couponRejectionReason:
reason: CouponNotFound
@@ -25608,7 +29391,7 @@ components:
profileId: URNGV8294NV
loyaltyProgramId: 323414846
id: 6
- referenceId: 9
+ referenceId: 1
- expiryDate: 2022-04-26T11:02:38Z
accountId: 7
eventId: 3
@@ -25618,7 +29401,8 @@ components:
profileId: URNGV8294NV
loyaltyProgramId: 323414846
id: 6
- referenceId: 9
+ referenceId: 1
+ integrationId: 175KJPS947296
attributes:
myAttribute: myValue
id: 6
@@ -25626,30 +29410,34 @@ components:
applicationId: 322
type: pageViewed
ruleFailureReasons:
- - rulesetID: 6
- ruleIndex: 5
- campaignID: 0
- referralID: 1
- conditionIndex: 5
- effectIndex: 2
+ - rulesetID: 7
+ ruleIndex: 3
+ campaignID: 2
+ referralID: 9
+ rewardIntegrationId: 5c0b5e6d-3f8a-4c2b-9f1e-2a7d6b4c8e90
+ conditionIndex: 2
+ effectIndex: 4
evaluationGroupMode: stackable
couponID: 4928
referralValue: referralValue
couponValue: couponValue
+ rewardId: 7
evaluationGroupID: 3
ruleName: ruleName
details: details
campaignName: campaignName
- - rulesetID: 6
- ruleIndex: 5
- campaignID: 0
- referralID: 1
- conditionIndex: 5
- effectIndex: 2
+ - rulesetID: 7
+ ruleIndex: 3
+ campaignID: 2
+ referralID: 9
+ rewardIntegrationId: 5c0b5e6d-3f8a-4c2b-9f1e-2a7d6b4c8e90
+ conditionIndex: 2
+ effectIndex: 4
evaluationGroupMode: stackable
couponID: 4928
referralValue: referralValue
couponValue: couponValue
+ rewardId: 7
evaluationGroupID: 3
ruleName: ruleName
details: details
@@ -25683,6 +29471,49 @@ components:
channel: web
id: 6
startDate: 2020-11-10T23:00:00Z
+ rewards:
+ - name: 10% Off Coupon
+ integrationId: free-coffee
+ description: Applies to next order
+ rule:
+ displayDescription: Get a 20% discount on all shoes during Thanksgiving!
+ Offer valid till Dec 5 only.
+ displayName: 20% off all shoes!
+ relatedData: https://example.com/discounts/20-off-shoes.png
+ title: Give discount via coupon
+ id: 42
+ unlocked:
+ - profileIntegrationId: customer1
+ unlockedAt: 2024-01-01T00:00:00Z
+ integrationId: reward-unlock-123
+ usedAt: 2024-01-02T00:00:00Z
+ applicationId: 3
+ - profileIntegrationId: customer1
+ unlockedAt: 2024-01-01T00:00:00Z
+ integrationId: reward-unlock-123
+ usedAt: 2024-01-02T00:00:00Z
+ applicationId: 3
+ - name: 10% Off Coupon
+ integrationId: free-coffee
+ description: Applies to next order
+ rule:
+ displayDescription: Get a 20% discount on all shoes during Thanksgiving!
+ Offer valid till Dec 5 only.
+ displayName: 20% off all shoes!
+ relatedData: https://example.com/discounts/20-off-shoes.png
+ title: Give discount via coupon
+ id: 42
+ unlocked:
+ - profileIntegrationId: customer1
+ unlockedAt: 2024-01-01T00:00:00Z
+ integrationId: reward-unlock-123
+ usedAt: 2024-01-02T00:00:00Z
+ applicationId: 3
+ - profileIntegrationId: customer1
+ unlockedAt: 2024-01-01T00:00:00Z
+ integrationId: reward-unlock-123
+ usedAt: 2024-01-02T00:00:00Z
+ applicationId: 3
properties:
customerProfile:
$ref: '#/components/schemas/CustomerProfile'
@@ -25694,6 +29525,15 @@ components:
items:
$ref: '#/components/schemas/Campaign'
type: array
+ campaignEligibility:
+ description: "A list of campaigns and their evaluation status for the current\
+ \ customer session.\n\n**Note**:\n\n- This response can **only** be included\
+ \ if the `dry` parameter in the query is set to `true`. \n- Do not include\
+ \ `triggeredCampaigns` or `ruleFailureReasons` in `responseContent` to\
+ \ avoid duplicate results.\n"
+ items:
+ $ref: '#/components/schemas/CampaignEligibility'
+ type: array
effects:
description: The effects generated by the rules in your running campaigns.
See [API effects](https://docs.talon.one/docs/dev/integration-api/api-effects).
@@ -25722,6 +29562,16 @@ components:
items:
$ref: '#/components/schemas/Giveaway'
type: array
+ achievements:
+ description: The achievements progress of the customer.
+ items:
+ $ref: '#/components/schemas/CustomerAchievement'
+ type: array
+ rewards:
+ description: The rewards for the customer profile.
+ items:
+ $ref: '#/components/schemas/RewardWithUnlocks'
+ type: array
event:
$ref: '#/components/schemas/Event'
required:
@@ -25879,48 +29729,14 @@ components:
required:
- integrationIDs
type: object
- AchievementProgress:
- description: The current progress of the customer in the achievement.
- example:
- endDate: 2000-01-23T04:56:07.000+00:00
- progress: 10.0
- completionDate: 2000-01-23T04:56:07.000+00:00
- startDate: 2000-01-23T04:56:07.000+00:00
- status: completed
- properties:
- status:
- description: The status of the achievement.
- enum:
- - inprogress
- - completed
- - expired
- - not_started
- example: completed
- type: string
- progress:
- description: The current progress of the customer in the achievement.
- example: 10.0
- type: number
- startDate:
- description: Timestamp at which the customer started the achievement.
- format: date-time
- type: string
- completionDate:
- description: Timestamp at which point the customer completed the achievement.
- format: date-time
- type: string
- endDate:
- description: Timestamp at which point the achievement ends and resets for
- the customer.
- format: date-time
- type: string
- required:
- - progress
- - status
- type: object
AchievementProgressWithDefinition:
description: The current progress of the customer in the achievement.
example:
+ referencedByCampaigns:
+ - id: 1
+ applicationId: 2
+ - id: 1
+ applicationId: 2
endDate: 2000-01-23T04:56:07.000+00:00
achievementAllowRollbackAfterCompletion: false
campaignId: 3
@@ -25935,6 +29751,10 @@ components:
achievementEndDate: 2000-01-23T04:56:07.000+00:00
progress: 10.0
completionDate: 2000-01-23T04:56:07.000+00:00
+ campaignIds:
+ - 1
+ - 14
+ - 27
startDate: 2000-01-23T04:56:07.000+00:00
status: completed
properties:
@@ -25987,10 +29807,31 @@ components:
format: string
type: string
campaignId:
- description: The ID of the campaign the achievement belongs to.
+ description: This property is **deprecated**. Use `campaignIds` (Integration
+ API) or `referencedByCampaigns` (Management API) instead. This field contains
+ the first campaign ID from the related `campaignIds`, and is omitted when
+ `campaignIds` is empty.
example: 3
format: int64
type: integer
+ x-deprecated: true
+ campaignIds:
+ description: The IDs of the campaigns that reference this achievement, in
+ ascending order.
+ example:
+ - 1
+ - 14
+ - 27
+ items:
+ format: int64
+ type: integer
+ type: array
+ referencedByCampaigns:
+ description: The campaigns that reference this achievement, in ascending
+ order of their `id`.
+ items:
+ $ref: '#/components/schemas/CampaignReference'
+ type: array
target:
description: The required number of actions or the transactional milestone
to complete the achievement.
@@ -26041,17 +29882,23 @@ components:
- achievementActivationPolicy
- achievementId
- achievementRecurrencePolicy
- - campaignId
+ - campaignIds
- description
- name
- progress
+ - referencedByCampaigns
- status
- title
type: object
CustomerInventory:
example:
achievements:
- - endDate: 2000-01-23T04:56:07.000+00:00
+ - referencedByCampaigns:
+ - id: 1
+ applicationId: 2
+ - id: 1
+ applicationId: 2
+ endDate: 2000-01-23T04:56:07.000+00:00
achievementAllowRollbackAfterCompletion: false
campaignId: 3
achievementId: 3
@@ -26065,9 +29912,18 @@ components:
achievementEndDate: 2000-01-23T04:56:07.000+00:00
progress: 10.0
completionDate: 2000-01-23T04:56:07.000+00:00
+ campaignIds:
+ - 1
+ - 14
+ - 27
startDate: 2000-01-23T04:56:07.000+00:00
status: completed
- - endDate: 2000-01-23T04:56:07.000+00:00
+ - referencedByCampaigns:
+ - id: 1
+ applicationId: 2
+ - id: 1
+ applicationId: 2
+ endDate: 2000-01-23T04:56:07.000+00:00
achievementAllowRollbackAfterCompletion: false
campaignId: 3
achievementId: 3
@@ -26081,6 +29937,10 @@ components:
achievementEndDate: 2000-01-23T04:56:07.000+00:00
progress: 10.0
completionDate: 2000-01-23T04:56:07.000+00:00
+ campaignIds:
+ - 1
+ - 14
+ - 27
startDate: 2000-01-23T04:56:07.000+00:00
status: completed
coupons:
@@ -26358,6 +30218,49 @@ components:
name: program1
id: 5
title: My loyalty program
+ rewards:
+ - name: 10% Off Coupon
+ integrationId: free-coffee
+ description: Applies to next order
+ rule:
+ displayDescription: Get a 20% discount on all shoes during Thanksgiving!
+ Offer valid till Dec 5 only.
+ displayName: 20% off all shoes!
+ relatedData: https://example.com/discounts/20-off-shoes.png
+ title: Give discount via coupon
+ id: 42
+ unlocked:
+ - profileIntegrationId: customer1
+ unlockedAt: 2024-01-01T00:00:00Z
+ integrationId: reward-unlock-123
+ usedAt: 2024-01-02T00:00:00Z
+ applicationId: 3
+ - profileIntegrationId: customer1
+ unlockedAt: 2024-01-01T00:00:00Z
+ integrationId: reward-unlock-123
+ usedAt: 2024-01-02T00:00:00Z
+ applicationId: 3
+ - name: 10% Off Coupon
+ integrationId: free-coffee
+ description: Applies to next order
+ rule:
+ displayDescription: Get a 20% discount on all shoes during Thanksgiving!
+ Offer valid till Dec 5 only.
+ displayName: 20% off all shoes!
+ relatedData: https://example.com/discounts/20-off-shoes.png
+ title: Give discount via coupon
+ id: 42
+ unlocked:
+ - profileIntegrationId: customer1
+ unlockedAt: 2024-01-01T00:00:00Z
+ integrationId: reward-unlock-123
+ usedAt: 2024-01-02T00:00:00Z
+ applicationId: 3
+ - profileIntegrationId: customer1
+ unlockedAt: 2024-01-01T00:00:00Z
+ integrationId: reward-unlock-123
+ usedAt: 2024-01-02T00:00:00Z
+ applicationId: 3
giveaways:
- profileIntegrationId: R195412
code: GIVEAWAY1
@@ -26404,6 +30307,11 @@ components:
items:
$ref: '#/components/schemas/AchievementProgressWithDefinition'
type: array
+ rewards:
+ description: The customer rewards that are `unlocked` and not yet `used`.
+ items:
+ $ref: '#/components/schemas/RewardWithUnlocks'
+ type: array
type: object
TimePoint:
description: |
@@ -26712,6 +30620,10 @@ components:
minute: 59
second: 59
id: 6
+ campaignIds:
+ - 1
+ - 14
+ - 27
recurrencePolicy: no_recurrence
status: active
properties:
@@ -26822,10 +30734,24 @@ components:
example: false
type: boolean
campaignId:
- description: The ID of the campaign the achievement belongs to.
+ description: This property is **deprecated**. Use `referencedByCampaigns`
+ instead. This field contains the first campaign ID from the related `referencedByCampaigns`,
+ and is omitted when `referencedByCampaigns` is empty.
example: 1
format: int64
type: integer
+ x-deprecated: true
+ campaignIds:
+ description: The IDs of the campaigns that reference this achievement, in
+ ascending order.
+ example:
+ - 1
+ - 14
+ - 27
+ items:
+ format: int64
+ type: integer
+ type: array
status:
description: The status of the achievement.
enum:
@@ -26843,6 +30769,94 @@ components:
- target
- title
type: object
+ CustomerProfileReward:
+ description: A reward instance held by a customer profile.
+ properties:
+ id:
+ description: The ID of the customer reward instance. A customer profile
+ can have multiple instances of the same reward.
+ example: 6
+ format: int64
+ type: integer
+ integrationId:
+ description: The integration ID of the customer reward instance.
+ example: reward-unlock-123
+ type: string
+ rewardId:
+ description: The ID of the reward this instance belongs to.
+ example: 12
+ format: int64
+ type: integer
+ rewardIntegrationId:
+ description: The integration ID of the reward this instance belongs to.
+ example: free-coffee
+ type: string
+ rewardName:
+ description: The name of the reward.
+ example: Free coffee
+ type: string
+ description:
+ description: The customer-facing description of the reward.
+ example: One free coffee of any size
+ type: string
+ rule:
+ $ref: '#/components/schemas/RuleMetadata'
+ status:
+ description: |
+ The status of the customer reward:
+ - `unlocked`: The reward is available for use.
+ - `used`: The reward has been used.
+ enum:
+ - unlocked
+ - used
+ example: unlocked
+ type: string
+ unlockedAt:
+ description: The date and time when the reward was unlocked.
+ example: 2026-07-01T09:00:00Z
+ format: date-time
+ type: string
+ unlockedByProfileIntegrationId:
+ description: "The integration ID of the customer profile that unlocked the\
+ \ reward. \n\nFor rewards unlocked with a loyalty card, this can be any\
+ \ customer profile \nlinked to that loyalty card.\n"
+ example: customer2839
+ type: string
+ usedAt:
+ description: The date and time when the reward was used.
+ example: 2026-07-02T10:30:00Z
+ format: date-time
+ type: string
+ usedByProfileIntegrationId:
+ description: "The integration ID of the customer profile that used the reward.\
+ \ \n\nFor rewards unlocked with a loyalty card, this can be any customer\
+ \ profile \nlinked to that loyalty card. \n\nOnly returned when the reward\
+ \ has been used.\n"
+ example: customer2840
+ type: string
+ loyaltyProgramId:
+ description: The ID of the loyalty program that the loyalty card belongs
+ to. Only returned for rewards unlocked with a loyalty card.
+ example: 9
+ format: int64
+ type: integer
+ loyaltyCardIdentifier:
+ description: |
+ The identifier of the loyalty card, which must match the regular expression `^[A-Za-z0-9._%+@-]+$`.
+ example: summer-loyalty-card-0543
+ maxLength: 108
+ minLength: 4
+ pattern: ^[A-Za-z0-9._%+@-]+$
+ type: string
+ required:
+ - id
+ - integrationId
+ - rewardId
+ - rewardIntegrationId
+ - rewardName
+ - status
+ - unlockedAt
+ type: object
LoyaltyBalance:
description: Point balance of a ledger in the Loyalty Program.
example:
@@ -26884,6 +30898,20 @@ components:
type: object
LoyaltyBalances:
description: List of loyalty balances for a ledger and its subledgers.
+ example:
+ balance:
+ negativePoints: 286.0
+ activePoints: 286.0
+ spentPoints: 150.0
+ expiredPoints: 286.0
+ pendingPoints: 50.0
+ subledgerBalances:
+ mysubledger:
+ activePoints: 286
+ pendingPoints: 50
+ spentPoints: 150
+ expiredPoints: 25
+ negativePoints: 0
properties:
balance:
$ref: '#/components/schemas/LoyaltyBalance'
@@ -27182,7 +31210,7 @@ components:
type: string
validityDuration:
description: |
- The duration for which the points remain active, relative to the activation date.
+ The duration for which the points remain active, relative to the activation date.
**Note**: This only applies to points for which `awaitsActivation` is `true` and `expiryDate` is not set.
example: 30D
@@ -27231,6 +31259,7 @@ components:
type: addition
expiryDate: 2022-08-02T15:04:05Z07:00
transactionUUID: ce59f12a-f53b-4014-a745-636d93f2bd3f
+ storeIntegrationId: STORE-001
subledgerId: sub-123
name: Reward 10% points of a purchase's current total
validityDuration: 30D
@@ -27257,6 +31286,14 @@ components:
example: 05c2da0d-48fa-4aa1-b629-898f58f1584d
maxLength: 255
type: string
+ storeIntegrationId:
+ description: The integration ID of the store where the transaction occurred.
+ Only set for transactions created by a customer session or event that
+ referenced a store.
+ example: STORE-001
+ maxLength: 1000
+ minLength: 1
+ type: string
type:
description: |
Type of transaction. Possible values:
@@ -27317,7 +31354,7 @@ components:
$ref: '#/components/schemas/LoyaltyLedgerEntryFlags'
validityDuration:
description: |
- The duration for which the points remain active, relative to the activation date.
+ The duration for which the points remain active, relative to the activation date.
**Note**: This only applies to points for which `awaitsActivation` is `true` and `expiryDate` is not set.
example: 30D
@@ -27625,6 +31662,8 @@ components:
**Important:** After this feature is enabled, it cannot be disabled.
example: false
type: boolean
+ bestPriorPriceSettings:
+ $ref: '#/components/schemas/BestPriorPriceSettings'
required:
- currency
- name
@@ -27703,6 +31742,7 @@ components:
- giveaways
- strikethrough
- achievements
+ - advancedEvents
type: string
type: array
couponSettings:
@@ -27855,6 +31895,7 @@ components:
- giveaways
- strikethrough
- achievements
+ - advancedEvents
type: string
type: array
couponAttributes:
@@ -27957,6 +31998,7 @@ components:
- giveaways
- strikethrough
- achievements
+ - advancedEvents
type: string
type: array
couponAttributes:
@@ -28510,6 +32552,7 @@ components:
- giveaways
- strikethrough
- achievements
+ - advancedEvents
type: string
type: array
couponSettings:
@@ -29848,14 +33891,16 @@ components:
description: setDiscountPerItem effect in strikethrough pricing payload.
properties:
name:
- description: effect name.
+ description: The effect name.
example: 1EuroOff
type: string
value:
- description: discount value.
+ description: The discount value.
example: "1"
type: object
excludedFromPriceHistory:
+ description: When set to `true`, the applied discount is excluded from the
+ item's price history.
type: boolean
required:
- name
@@ -29887,11 +33932,11 @@ components:
description: setDiscountPerItem member effect in strikethrough pricing payload.
properties:
name:
- description: effect name.
+ description: The effect name.
example: 10% off members only
type: string
value:
- description: discount value.
+ description: The discount value.
example: "9"
type: object
required:
@@ -30282,17 +34327,17 @@ components:
attributeId: 100
minValue: 0.0
expression:
- - string1
- - string2
+ - identity
+ - 10
maxValue: 19.9
- valueType: string
- name: my property
- description: This is a template parameter of type `number`.
+ valueType: number
+ name: Discount percentage
+ description: The percentage discount applied to the cart total.
type: templateParameter
properties:
name:
description: A descriptive name for the value to be bound.
- example: my property
+ example: Discount percentage
type: string
type:
description: |
@@ -30304,21 +34349,26 @@ components:
example: templateParameter
type: string
expression:
- description: A Talang expression that will be evaluated and its result attached
- to the name of the binding.
+ description: |
+ A Talang expression that is evaluated, and its result is bound to the name of
+ the binding. The first element must be one of the functions or operators supported
+ by Talang, followed by its arguments. The arguments can be strings, numbers, or
+ nested expressions. For example:
+ - `["list", "10014", "10015"]` calls the `list` function to build a list of strings.
+ - `["+", 2, 0]` uses the `+` operator to add two numbers.
example:
- - string1
- - string2
+ - identity
+ - 10
items:
type: object
type: array
valueType:
description: |
- Can be one of the following:
+ The data type of the value. One of the following:
- `string`
- `number`
- `boolean`
- example: string
+ example: number
type: string
minValue:
description: The minimum value allowed for this placeholder.
@@ -30329,15 +34379,15 @@ components:
example: 19.9
type: number
attributeId:
- description: Id of the attribute attached to the placeholder.
+ description: Identifier of the attribute attached to the placeholder.
example: 100
format: int64
title: Attribute ID
type: integer
description:
- description: Describes the placeholder field and value in the template.
- This description can be used when creating campaigns from this template.
- example: This is a template parameter of type `number`.
+ description: Description of the placeholder field and its value in the template.
+ This text can be shown when creating campaigns from this template.
+ example: The percentage discount applied to the cart total.
type: string
required:
- expression
@@ -30364,22 +34414,22 @@ components:
- attributeId: 100
minValue: 0.0
expression:
- - string1
- - string2
+ - identity
+ - 10
maxValue: 19.9
- valueType: string
- name: my property
- description: This is a template parameter of type `number`.
+ valueType: number
+ name: Discount percentage
+ description: The percentage discount applied to the cart total.
type: templateParameter
- attributeId: 100
minValue: 0.0
expression:
- - string1
- - string2
+ - identity
+ - 10
maxValue: 19.9
- valueType: string
- name: my property
- description: This is a template parameter of type `number`.
+ valueType: number
+ name: Discount percentage
+ description: The percentage discount applied to the cart total.
type: templateParameter
description: Creates a discount when a coupon is valid
id: 7fa800a8-ac8d-4792-85dc-c4650dcc8f23
@@ -30508,22 +34558,22 @@ components:
- attributeId: 100
minValue: 0.0
expression:
- - string1
- - string2
+ - identity
+ - 10
maxValue: 19.9
- valueType: string
- name: my property
- description: This is a template parameter of type `number`.
+ valueType: number
+ name: Discount percentage
+ description: The percentage discount applied to the cart total.
type: templateParameter
- attributeId: 100
minValue: 0.0
expression:
- - string1
- - string2
+ - identity
+ - 10
maxValue: 19.9
- valueType: string
- name: my property
- description: This is a template parameter of type `number`.
+ valueType: number
+ name: Discount percentage
+ description: The percentage discount applied to the cart total.
type: templateParameter
description: Creates a discount when a coupon is valid
id: 7fa800a8-ac8d-4792-85dc-c4650dcc8f23
@@ -30548,22 +34598,22 @@ components:
- attributeId: 100
minValue: 0.0
expression:
- - string1
- - string2
+ - identity
+ - 10
maxValue: 19.9
- valueType: string
- name: my property
- description: This is a template parameter of type `number`.
+ valueType: number
+ name: Discount percentage
+ description: The percentage discount applied to the cart total.
type: templateParameter
- attributeId: 100
minValue: 0.0
expression:
- - string1
- - string2
+ - identity
+ - 10
maxValue: 19.9
- valueType: string
- name: my property
- description: This is a template parameter of type `number`.
+ valueType: number
+ name: Discount percentage
+ description: The percentage discount applied to the cart total.
type: templateParameter
description: Creates a discount when a coupon is valid
id: 7fa800a8-ac8d-4792-85dc-c4650dcc8f23
@@ -30590,22 +34640,22 @@ components:
- attributeId: 100
minValue: 0.0
expression:
- - string1
- - string2
+ - identity
+ - 10
maxValue: 19.9
- valueType: string
- name: my property
- description: This is a template parameter of type `number`.
+ valueType: number
+ name: Discount percentage
+ description: The percentage discount applied to the cart total.
type: templateParameter
- attributeId: 100
minValue: 0.0
expression:
- - string1
- - string2
+ - identity
+ - 10
maxValue: 19.9
- valueType: string
- name: my property
- description: This is a template parameter of type `number`.
+ valueType: number
+ name: Discount percentage
+ description: The percentage discount applied to the cart total.
type: templateParameter
description: Creates a discount when a coupon is valid
id: 7fa800a8-ac8d-4792-85dc-c4650dcc8f23
@@ -30630,22 +34680,22 @@ components:
- attributeId: 100
minValue: 0.0
expression:
- - string1
- - string2
+ - identity
+ - 10
maxValue: 19.9
- valueType: string
- name: my property
- description: This is a template parameter of type `number`.
+ valueType: number
+ name: Discount percentage
+ description: The percentage discount applied to the cart total.
type: templateParameter
- attributeId: 100
minValue: 0.0
expression:
- - string1
- - string2
+ - identity
+ - 10
maxValue: 19.9
- valueType: string
- name: my property
- description: This is a template parameter of type `number`.
+ valueType: number
+ name: Discount percentage
+ description: The percentage discount applied to the cart total.
type: templateParameter
description: Creates a discount when a coupon is valid
id: 7fa800a8-ac8d-4792-85dc-c4650dcc8f23
@@ -30720,2950 +34770,3212 @@ components:
- rules
- userId
type: object
- UpdateCouponBatch:
- example:
- expiryDate: 2023-08-24T14:15:22Z
- usageLimit: 100
- reservationLimit: 45
- attributes: '{}'
- batchID: batchID
- discountLimit: 30.0
- startDate: 2020-01-24T14:15:22Z
+ BaseBlock:
+ description: Common properties shared by all block types.
properties:
- usageLimit:
- description: |
- The number of times the coupon code can be redeemed. `0` means unlimited redemptions but any campaign usage limits will still apply.
- example: 100
- format: int64
- maximum: 999999
- minimum: 0
- type: integer
- discountLimit:
- description: |
- The total discount value that the code can give. Typically used to represent a gift card value.
- example: 30.0
- maximum: 1E+15
- minimum: 0
- type: number
- reservationLimit:
- description: |
- The number of reservations that can be made with this coupon code.
- example: 45
- format: int64
- maximum: 999999
- minimum: 0
- type: integer
- startDate:
- description: Timestamp at which point the coupon becomes valid.
- example: 2020-01-24T14:15:22Z
- format: date-time
- type: string
- expiryDate:
- description: Expiration date of the coupon. Coupon never expires if this
- is omitted.
- example: 2023-08-24T14:15:22Z
- format: date-time
+ id:
+ description: Unique identifier for this block.
+ example: a1b2c3d4-e5f6-7890-abcd-ef1234567890
+ readOnly: true
type: string
- attributes:
- description: |
- Optional property to set the value of custom coupon attributes. They are defined in the Campaign Manager,
- see [Managing attributes](https://docs.talon.one/docs/product/account/dev-tools/managing-attributes).
-
- Coupon attributes can also be set to _mandatory_ in your Application [settings](https://docs.talon.one/docs/product/applications/using-attributes#making-attributes-mandatory).
- If your Application uses mandatory attributes, you must use this property to set their value.
- properties: {}
- type: object
- batchID:
- description: The ID of the batch the coupon(s) belong to.
- title: Batch ID
+ type:
+ description: Identifies the block variant and determines which additional
+ properties are present in it.
type: string
+ tags:
+ description: Semantic labels attached to this block.
+ items:
+ type: string
+ readOnly: true
+ type: array
+ required:
+ - type
+ title: BaseBlock
type: object
- NewCoupons:
- example:
- recipientIntegrationId: URNGV8294NV
- uniquePrefix: ""
- implicitlyReserved: false
- usageLimit: 100
- numberOfCoupons: 1
- expiryDate: 2023-08-24T14:15:22Z
- couponPattern: SUMMER-#####
- validCharacters:
- - A
- - B
- - G
- - "Y"
- reservationLimit: 45
- attributes:
- venueId: 12
- discountLimit: 30.0
- startDate: 2020-01-24T14:15:22Z
- limits:
- - period: yearly
- entities:
- - Coupon
- limit: 1000.0
- action: createCoupon
- - period: yearly
- entities:
- - Coupon
- limit: 1000.0
- action: createCoupon
- isReservationMandatory: false
+ Block:
+ description: Describes a part of the logic of the rule.
+ discriminator:
+ propertyName: type
+ type: object
+ GroupBlock:
+ description: A structural combinator block that groups child blocks using a
+ logical operator. Evaluates to true when its operator condition is satisfied
+ across all child blocks.
properties:
- usageLimit:
- description: |
- The number of times the coupon code can be redeemed. `0` means unlimited redemptions but any campaign usage limits will still apply.
- example: 100
- format: int64
- maximum: 999999
- minimum: 0
- type: integer
- discountLimit:
- description: |
- The total discount value that the code can give. Typically used to represent a gift card value.
- example: 30.0
- maximum: 1E+15
- minimum: 0
- type: number
- reservationLimit:
- description: |
- The number of reservations that can be made with this coupon code.
- example: 45
- format: int64
- maximum: 999999
- minimum: 0
- type: integer
- startDate:
- description: Timestamp at which point the coupon becomes valid.
- example: 2020-01-24T14:15:22Z
- format: date-time
+ id:
+ description: Unique identifier for this block.
+ example: a1b2c3d4-e5f6-7890-abcd-ef1234567890
+ readOnly: true
type: string
- expiryDate:
- description: Expiration date of the coupon. Coupon never expires if this
- is omitted.
- example: 2023-08-24T14:15:22Z
- format: date-time
+ type:
+ description: Identifies the block variant and determines which additional
+ properties are present in it.
type: string
- limits:
- description: |
- Limits configuration for a coupon. These limits will override the limits
- set from the campaign.
-
- **Note:** Only usable when creating a single coupon which is not tied to a specific recipient.
- Only per-profile limits are allowed to be configured.
+ tags:
+ description: Semantic labels attached to this block.
items:
- $ref: '#/components/schemas/LimitConfig'
+ type: string
+ readOnly: true
type: array
- numberOfCoupons:
- description: The number of new coupon codes to generate for the campaign.
- Must be at least 1.
- example: 1
- format: int64
- type: integer
- uniquePrefix:
- description: |
- **DEPRECATED** To create more than 20,000 coupons in one request, use [Create coupons asynchronously](https://docs.talon.one/management-api#tag/Coupons/operation/createCouponsAsync) endpoint.
- example: ""
- title: Coupon code unique prefix
- type: string
- attributes:
- description: Arbitrary properties associated with this item.
- example:
- venueId: 12
- properties: {}
- type: object
- recipientIntegrationId:
- description: The integration ID for this coupon's beneficiary's profile.
- example: URNGV8294NV
- maxLength: 1000
- title: Receiving customer profile integration ID
+ operator:
+ description: Logical operator applied across child blocks. `all` requires
+ every child to pass, `atLeastOne` requires at least one, `none` requires
+ all to fail.
+ enum:
+ - all
+ - atLeastOne
+ - none
type: string
- validCharacters:
- description: |
- List of characters used to generate the random parts of a code. By default,
- the list of characters is equivalent to the `[A-Z, 0-9]` regular expression.
- example:
- - A
- - B
- - G
- - "Y"
+ blocks:
+ description: Child blocks evaluated according to the operator.
items:
- type: string
+ $ref: '#/components/schemas/Block'
type: array
- couponPattern:
- description: |
- The pattern used to generate coupon codes.
- The character `#` is a placeholder and is replaced by a random character from the `validCharacters` set.
- example: SUMMER-#####
- maxLength: 100
- minLength: 3
+ onFailure:
+ description: Blocks evaluated when this block fails or returns false.
+ items:
+ $ref: '#/components/schemas/Block'
+ type: array
+ onError:
+ additionalProperties:
+ items:
+ $ref: '#/components/schemas/Block'
+ type: array
+ description: Named error handlers evaluated when a specific error occurs.
+ type: object
+ required:
+ - blocks
+ - operator
+ - type
+ title: GroupBlock
+ type: object
+ x-discriminator-value: group
+ x-ms-discriminator-value: group
+ AwardDiscountCartTarget:
+ description: Applies the discount to the entire cart as a single unit.
+ properties:
+ type:
+ description: A target discriminator of type `cart`.
+ enum:
+ - cart
type: string
- isReservationMandatory:
- default: false
- description: An indication of whether the code can be redeemed only if it
- has been reserved first.
+ required:
+ - type
+ title: AwardDiscountCartTarget
+ type: object
+ x-discriminator-value: cart
+ x-ms-discriminator-value: cart
+ AwardDiscountAllItemsTarget:
+ description: Applies the discount across all cart items.
+ properties:
+ type:
+ description: A target discriminator of type `allItems`.
+ enum:
+ - allItems
+ type: string
+ prorated:
+ description: Whether to distribute the discount proportionally across the
+ targeted items.
+ example: true
+ type: boolean
+ required:
+ - type
+ title: AwardDiscountAllItemsTarget
+ type: object
+ x-discriminator-value: allItems
+ x-ms-discriminator-value: allItems
+ AwardDiscountGlobalFilterTarget:
+ description: Applies the discount to items matched by a named Application-level
+ cart-item filter.
+ properties:
+ type:
+ description: A target discriminator of type `globalFilter`.
+ enum:
+ - globalFilter
+ type: string
+ name:
+ description: The name of the Application-level cart-item filter the discount
+ targets.
+ example: PremiumItems
+ type: string
+ prorated:
+ description: Whether to distribute the discount proportionally across the
+ matched items.
example: false
- title: Is reservation mandatory
type: boolean
- implicitlyReserved:
- description: An indication of whether the coupon is implicitly reserved
- for all customers.
+ required:
+ - name
+ - type
+ title: AwardDiscountGlobalFilterTarget
+ type: object
+ x-discriminator-value: globalFilter
+ x-ms-discriminator-value: globalFilter
+ AwardDiscountSelectorTarget:
+ description: Applies the discount to items matched by a named selector binding.
+ properties:
+ type:
+ description: A target discriminator of type `selector`.
+ enum:
+ - selector
+ type: string
+ name:
+ description: The name of the selector binding the discount targets.
+ example: ElectronicsItems
+ type: string
+ prorated:
+ description: Whether to distribute the discount proportionally across the
+ selected items.
example: false
- title: Is coupon implicitly reserved for all customers
type: boolean
required:
- - numberOfCoupons
- - usageLimit
+ - name
+ - type
+ title: AwardDiscountSelectorTarget
type: object
- NewCouponsForMultipleRecipients:
- example:
- expiryDate: 2023-08-24T14:15:22Z
- couponPattern: SUMMER-#####
- validCharacters:
- - A
- - B
- - C
- - D
- - E
- - F
- - G
- - H
- - I
- - J
- - K
- - L
- - M
- - "N"
- - O
- - P
- - Q
- - R
- - S
- - T
- - U
- - V
- - W
- - X
- - "Y"
- - Z
- usageLimit: 100
- reservationLimit: 45
- recipientsIntegrationIds:
- - URNGV8294NV
- - BZGGC2454PA
- attributes:
- venueId: 12
- discountLimit: 30.0
- startDate: 2020-01-24T14:15:22Z
+ x-discriminator-value: selector
+ x-ms-discriminator-value: selector
+ AwardDiscountBundleItemByIndex:
+ description: Identifies a bundle slot by its zero-based index within the bundle.
properties:
- usageLimit:
- description: |
- The number of times the coupon code can be redeemed. `0` means unlimited redemptions but any campaign usage limits will still apply.
- example: 100
+ type:
+ description: A bundle-item selector of type `byIndex`.
+ enum:
+ - byIndex
+ type: string
+ value:
+ description: The zero-based index of the slot within the bundle.
+ example: 0
format: int64
- maximum: 999999
- minimum: 0
type: integer
- discountLimit:
- description: |
- The total discount value that the code can give. Typically used to represent a gift card value.
- example: 30.0
- maximum: 1E+15
- minimum: 0
- type: number
- reservationLimit:
- description: |
- The number of reservations that can be made with this coupon code.
- example: 45
+ required:
+ - type
+ - value
+ title: AwardDiscountBundleItemByIndex
+ type: object
+ x-discriminator-value: byIndex
+ x-ms-discriminator-value: byIndex
+ AwardDiscountBundleItemByAttribute:
+ description: Identifies a bundle slot by ranking items by a per-item attribute
+ expression and picking the highest- or lowest-ranked one.
+ properties:
+ type:
+ description: A bundle-item selector of type `byAttribute`.
+ enum:
+ - byAttribute
+ type: string
+ attribute:
+ description: A per-item attribute expression used to rank bundle items.
+ example: '{{$Item.Price}}'
+ type: string
+ direction:
+ description: Ranking direction. `highest` picks the item with the largest
+ attribute value, `lowest` the smallest.
+ enum:
+ - highest
+ - lowest
+ example: highest
+ type: string
+ required:
+ - attribute
+ - direction
+ - type
+ title: AwardDiscountBundleItemByAttribute
+ type: object
+ x-discriminator-value: byAttribute
+ x-ms-discriminator-value: byAttribute
+ AwardDiscountBundleItem:
+ description: Selects which slot inside a bundle a discount applies to. The `type`
+ field picks the selection mode.
+ discriminator:
+ propertyName: type
+ type: object
+ AwardDiscountBundleTarget:
+ description: Applies the discount to items belonging to a named bundle.
+ properties:
+ type:
+ description: A target discriminator of type `bundle`.
+ enum:
+ - bundle
+ type: string
+ name:
+ description: Name of the bundle binding the discount targets.
+ example: BogoBundle
+ type: string
+ item:
+ description: Selects which slot inside a bundle a discount applies to. The
+ `type` field picks the selection mode.
+ discriminator:
+ propertyName: type
+ type: object
+ prorated:
+ description: Whether to distribute the discount proportionally across the
+ bundle's items.
+ example: false
+ type: boolean
+ required:
+ - name
+ - type
+ title: AwardDiscountBundleTarget
+ type: object
+ x-discriminator-value: bundle
+ x-ms-discriminator-value: bundle
+ AdditionalCostReference:
+ description: Identifies an additional cost referenced from a rule.
+ properties:
+ id:
+ description: The internal identifier of the additional cost.
+ example: 42
format: int64
- maximum: 999999
- minimum: 0
type: integer
- startDate:
- description: Timestamp at which point the coupon becomes valid.
- example: 2020-01-24T14:15:22Z
- format: date-time
+ name:
+ description: The additional cost name as used in API requests.
+ example: shipping
type: string
- expiryDate:
- description: Expiration date of the coupon. Coupon never expires if this
- is omitted.
- example: 2023-08-24T14:15:22Z
- format: date-time
+ title:
+ description: The human-readable title of the additional cost.
+ example: Shipping
type: string
- attributes:
- description: Arbitrary properties associated with this item.
- example:
- venueId: 12
- properties: {}
+ required:
+ - id
+ - name
+ title: AdditionalCostReference
+ type: object
+ AwardDiscountAdditionalCostTarget:
+ description: Applies the discount to an additional cost. The `target` field
+ determines which subset of cart items the additional cost contribution is
+ applied to.
+ properties:
+ type:
+ description: A target discriminator of type `additionalCost`.
+ enum:
+ - additionalCost
+ type: string
+ additionalCost:
+ $ref: '#/components/schemas/AdditionalCostReference'
+ target:
+ description: A subset of cart items whose additional cost the discount applies
+ to. Cannot be another `additionalCost` target.
type: object
- recipientsIntegrationIds:
- description: The integration IDs for recipients.
- example:
- - URNGV8294NV
- - BZGGC2454PA
+ required:
+ - additionalCost
+ - target
+ - type
+ title: AwardDiscountAdditionalCostTarget
+ type: object
+ x-discriminator-value: additionalCost
+ x-ms-discriminator-value: additionalCost
+ AwardDiscountTarget:
+ description: Identifies the scope a discount applies to. The `type` field selects
+ the concrete target variant.
+ discriminator:
+ propertyName: type
+ type: object
+ AwardDiscountBlock:
+ description: A block that grants a discount when its rule conditions evaluate
+ to `true`. The `target` field determines what the discount applies to (the
+ whole cart, a subset of items, a bundle, an additional cost, etc.); the `value`
+ field is the discount amount.
+ properties:
+ id:
+ description: Unique identifier for this block.
+ example: a1b2c3d4-e5f6-7890-abcd-ef1234567890
+ readOnly: true
+ type: string
+ type:
+ description: Identifies the block variant and determines which additional
+ properties are present in it.
+ type: string
+ tags:
+ description: Semantic labels attached to this block.
items:
type: string
- maxItems: 1000
- minItems: 1
- title: Receiving customer profiles integration IDs
+ readOnly: true
type: array
- validCharacters:
- description: |
- List of characters used to generate the random parts of a code. By default, the list of
- characters is equivalent to the `[A-Z, 0-9]` regular expression.
- example:
- - A
- - B
- - C
- - D
- - E
- - F
- - G
- - H
- - I
- - J
- - K
- - L
- - M
- - "N"
- - O
- - P
- - Q
- - R
- - S
- - T
- - U
- - V
- - W
- - X
- - "Y"
- - Z
- items:
- type: string
- type: array
- couponPattern:
- description: |
- The pattern used to generate coupon codes. The character `#` is a placeholder and is replaced by a random character from the `validCharacters` set.
- example: SUMMER-#####
- maxLength: 100
- minLength: 3
- type: string
- required:
- - recipientsIntegrationIds
- - usageLimit
- type: object
- NewCouponCreationJob:
- example:
- expiryDate: 2023-08-24T14:15:22Z
- usageLimit: 100
- reservationLimit: 45
- numberOfCoupons: 200000
- couponSettings:
- couponPattern: SUMMER-####-####
- validCharacters:
- - A
- - B
- - C
- - D
- - E
- - F
- - G
- - H
- - I
- - J
- - K
- - L
- - M
- - "N"
- - O
- - P
- - Q
- - R
- - S
- - T
- - U
- - V
- - W
- - X
- - "Y"
- - Z
- - "0"
- - "1"
- - "2"
- - "3"
- - "4"
- - "5"
- - "6"
- - "7"
- - "8"
- - "9"
- attributes: '{}'
- discountLimit: 30.0
- startDate: 2020-01-24T14:15:22Z
- isReservationMandatory: false
- properties:
- usageLimit:
- description: |
- The number of times the coupon code can be redeemed. `0` means unlimited redemptions but any campaign usage limits will still apply.
- example: 100
- format: int64
- maximum: 999999
- minimum: 0
- type: integer
- discountLimit:
- description: |
- The total discount value that the code can give. Typically used to represent a gift card value.
- example: 30.0
- maximum: 1E+15
- minimum: 0
- type: number
- reservationLimit:
- description: |
- The number of reservations that can be made with this coupon code.
- example: 45
- format: int64
- maximum: 999999
- minimum: 0
- type: integer
- startDate:
- description: Timestamp at which point the coupon becomes valid.
- example: 2020-01-24T14:15:22Z
- format: date-time
- type: string
- expiryDate:
- description: Expiration date of the coupon. Coupon never expires if this
- is omitted.
- example: 2023-08-24T14:15:22Z
- format: date-time
+ name:
+ description: The human-readable label attached to the discount.
+ example: 10% Off
type: string
- numberOfCoupons:
- description: The number of new coupon codes to generate for the campaign.
- example: 200000
- format: int64
- maximum: 5E+6
- minimum: 1
- type: integer
- couponSettings:
- $ref: '#/components/schemas/CodeGeneratorSettings'
- attributes:
- description: Arbitrary properties associated with coupons.
- properties: {}
+ value:
+ description: Discount amount. Either a numeric scalar or a `{{expression}}`
+ string that resolves to a number at evaluation time.
type: object
- isReservationMandatory:
- default: false
- description: An indication of whether the code can be redeemed only if it
- has been reserved first.
+ partial:
+ description: Whether to apply a partial discount when the requested value
+ exceeds the configured budget.
example: false
type: boolean
+ target:
+ description: Identifies the scope a discount applies to. The `type` field
+ selects the concrete target variant.
+ discriminator:
+ propertyName: type
+ type: object
required:
- - attributes
- - numberOfCoupons
- - usageLimit
+ - name
+ - partial
+ - target
+ - type
+ - value
+ title: AwardDiscountBlock
type: object
- AsyncCouponCreationResponse:
- example:
- batchId: tqyrgahe
+ x-discriminator-value: awardDiscount
+ x-ms-discriminator-value: awardDiscount
+ PassthroughBlock:
+ description: A block representing a Talang expression that could not be mapped
+ to a typed block. The expression is preserved in its raw Talang array form
+ for diagnostic and round-trip purposes.
properties:
- batchId:
- description: The batch ID that all coupons created by the request will have.
- example: tqyrgahe
+ id:
+ description: Unique identifier for this block.
+ example: a1b2c3d4-e5f6-7890-abcd-ef1234567890
+ readOnly: true
+ type: string
+ type:
+ description: The type discriminator for this block.
+ enum:
+ - passthrough
type: string
+ expression:
+ description: The raw Talang expression as an array. For a function call,
+ the first element is the function name and subsequent elements are its
+ arguments. For any other expression (for example a bare attribute path
+ or a literal value), this is a single-element array containing that value.
+ items:
+ type: object
+ type: array
required:
- - batchId
+ - expression
+ - type
+ title: PassthroughBlock
type: object
- CouponDeletionFilters:
- example:
- startsAfter: 2000-01-23T04:56:07.000+00:00
- recipientIntegrationId: recipientIntegrationId
- exactMatch: false
- redeemed: true
- referralId: 0
- createdAfter: 2000-01-23T04:56:07.000+00:00
- batchId: batchId
- valid: expired
- usable: true
- expiresAfter: 2000-01-23T04:56:07.000+00:00
- expiresBefore: 2000-01-23T04:56:07.000+00:00
- createdBefore: 2000-01-23T04:56:07.000+00:00
- value: value
- startsBefore: 2000-01-23T04:56:07.000+00:00
+ x-discriminator-value: passthrough
+ x-ms-discriminator-value: passthrough
+ ShowNotificationBlock:
+ description: A block that displays a notification to the customer with a configurable
+ type, title, and optional body message.
properties:
- createdBefore:
- description: Filter results comparing the parameter value, expected to be
- an RFC3339 timestamp string, to the coupon creation timestamp. You can
- use any time zone setting. Talon.One will convert to UTC internally.
- format: date-time
+ id:
+ description: Unique identifier for this block.
+ example: a1b2c3d4-e5f6-7890-abcd-ef1234567890
+ readOnly: true
type: string
- createdAfter:
- description: Filter results comparing the parameter value, expected to be
- an RFC3339 timestamp string, to the coupon creation timestamp. You can
- use any time zone setting. Talon.One will convert to UTC internally.
- format: date-time
+ type:
+ description: Identifies the block variant and determines which additional
+ properties are present in it.
type: string
- startsAfter:
- description: Filter results comparing the parameter value, expected to be
- an RFC3339 timestamp string, to the coupon creation timestamp. You can
- use any time zone setting. Talon.One will convert to UTC internally.
- format: date-time
+ tags:
+ description: Semantic labels attached to this block.
+ items:
+ type: string
+ readOnly: true
+ type: array
+ notificationType:
+ description: The type of notification to display.
+ example: Info
type: string
- startsBefore:
- description: Filter results comparing the parameter value, expected to be
- an RFC3339 timestamp string, to the coupon creation timestamp. You can
- use any time zone setting. Talon.One will convert to UTC internally.
- format: date-time
+ title:
+ description: The notification heading shown to the customer.
+ example: You earned a reward!
type: string
- valid:
- description: |
- - `expired`: Matches coupons in which the expiration date is set and in the past.
- - `validNow`: Matches coupons in which the start date is null or in the past and the expiration date is null or in the future.
- - `validFuture`: Matches coupons in which the start date is set and in the future.
- enum:
- - expired
- - validNow
- - validFuture
+ body:
+ description: The notification body text. Supports template placeholders
+ (e.g. "{{$Session.Total}}") evaluated at rule execution time.
+ example: You saved $10 on your order.
type: string
- usable:
- description: |
- - `true`: only coupons where `usageCounter < usageLimit` will be returned.
- - `false`: only coupons where `usageCounter >= usageLimit` will be returned.
- - This field cannot be used in conjunction with the `usable` query parameter.
- type: boolean
- redeemed:
- description: |
- - `true`: only coupons where `usageCounter > 0` will be returned.
- - `false`: only coupons where `usageCounter = 0` will be returned.
-
- **Note:** This field cannot be used in conjunction with the `usable` query parameter.
- type: boolean
- recipientIntegrationId:
- description: |
- Filter results by match with a profile id specified in the coupon's `RecipientIntegrationId` field.
+ onFailure:
+ description: Blocks evaluated when this block fails or returns false.
+ items:
+ $ref: '#/components/schemas/Block'
+ type: array
+ onError:
+ additionalProperties:
+ items:
+ $ref: '#/components/schemas/Block'
+ type: array
+ description: Named error handlers evaluated when a specific error occurs.
+ type: object
+ required:
+ - notificationType
+ - title
+ - type
+ title: ShowNotificationBlock
+ type: object
+ x-discriminator-value: showNotification
+ x-ms-discriminator-value: showNotification
+ AwardItemBlock:
+ description: A block that awards a free cart item to the customer. The item
+ is identified by SKU and name and has a configurable quantity.
+ properties:
+ id:
+ description: Unique identifier for this block.
+ example: a1b2c3d4-e5f6-7890-abcd-ef1234567890
+ readOnly: true
type: string
- exactMatch:
- default: false
- description: Filter results to an exact case-insensitive matching against
- the coupon code
- type: boolean
- value:
- description: Filter results by the coupon code
+ type:
+ description: Identifies the block variant and determines which additional
+ properties are present in it.
type: string
- batchId:
- description: Filter results by batches of coupons
+ tags:
+ description: Semantic labels attached to this block.
+ items:
+ type: string
+ readOnly: true
+ type: array
+ sku:
+ description: The stock keeping unit of the item to award.
+ example: SKU1241028
type: string
- referralId:
- description: Filter the results by matching them with the ID of a referral.
- This filter shows the coupons created by redeeming a referral code.
- format: int64
- type: integer
- expiresAfter:
- description: Filter results comparing the parameter value, expected to be
- an RFC3339 timestamp string, to the coupon creation timestamp. You can
- use any time zone setting. Talon.One will convert to UTC internally.
- format: date-time
+ name:
+ description: The display name of the item to award.
+ example: Free Tote Bag
type: string
- expiresBefore:
- description: Filter results comparing the parameter value, expected to be
- an RFC3339 timestamp string, to the coupon creation timestamp. You can
- use any time zone setting. Talon.One will convert to UTC internally.
- format: date-time
+ quantity:
+ description: The number of items to award. Supports template placeholders
+ (e.g. "{{$Session.Total / 2}}") for dynamic quantities.
+ example: "1"
type: string
- type: object
- NewCouponDeletionJob:
- example:
- filters:
- startsAfter: 2000-01-23T04:56:07.000+00:00
- recipientIntegrationId: recipientIntegrationId
- exactMatch: false
- redeemed: true
- referralId: 0
- createdAfter: 2000-01-23T04:56:07.000+00:00
- batchId: batchId
- valid: expired
- usable: true
- expiresAfter: 2000-01-23T04:56:07.000+00:00
- expiresBefore: 2000-01-23T04:56:07.000+00:00
- createdBefore: 2000-01-23T04:56:07.000+00:00
- value: value
- startsBefore: 2000-01-23T04:56:07.000+00:00
- properties:
- filters:
- $ref: '#/components/schemas/CouponDeletionFilters'
+ partial:
+ description: When set to `true`, applies a partial item reward if the remaining
+ budget is insufficient to award the full reward.
+ example: false
+ type: boolean
+ onFailure:
+ description: Blocks evaluated when this block fails or returns false.
+ items:
+ $ref: '#/components/schemas/Block'
+ type: array
+ onError:
+ additionalProperties:
+ items:
+ $ref: '#/components/schemas/Block'
+ type: array
+ description: Named error handlers evaluated when a specific error occurs.
+ type: object
required:
- - filters
+ - name
+ - quantity
+ - sku
+ - type
+ title: AwardItemBlock
type: object
- AsyncCouponDeletionJobResponse:
- example:
- id: 6
+ x-discriminator-value: awardItem
+ x-ms-discriminator-value: awardItem
+ GiveawayPoolReference:
+ description: The giveaway pool from which a giveaway is awarded.
properties:
id:
- description: Unique ID for this entity. Not to be confused with the Integration
- ID, which is set by your integration layer and used in most endpoints.
- example: 6
+ description: The unique identifier of the giveaway pool.
+ example: 42
format: int64
type: integer
+ name:
+ description: The display name of the giveaway pool.
+ example: Summer Campaign Pool
+ readOnly: true
+ type: string
required:
- id
+ - name
type: object
- NewAppWideCouponDeletionJob:
+ AwardGiveawayBlock:
+ description: A block that awards a giveaway item from a configured giveaway
+ pool to the specified customer profile.
properties:
- filters:
- $ref: '#/components/schemas/CouponDeletionFilters'
- campaignids:
+ id:
+ description: Unique identifier for this block.
+ example: a1b2c3d4-e5f6-7890-abcd-ef1234567890
+ readOnly: true
+ type: string
+ type:
+ description: Identifies the block variant and determines which additional
+ properties are present in it.
+ type: string
+ tags:
+ description: Semantic labels attached to this block.
items:
- format: int64
- type: integer
+ type: string
+ readOnly: true
+ type: array
+ giveawayPool:
+ $ref: '#/components/schemas/GiveawayPoolReference'
+ profile:
+ description: The customer profile to award the giveaway to. `Current` targets
+ the customer in the current session; `Advocate` targets the person who
+ invited their friend via referral program.
+ enum:
+ - Current
+ - Advocate
+ example: Current
+ type: string
+ onFailure:
+ description: Blocks evaluated when this block fails or returns false.
+ items:
+ $ref: '#/components/schemas/Block'
type: array
+ onError:
+ additionalProperties:
+ items:
+ $ref: '#/components/schemas/Block'
+ type: array
+ description: Named error handlers evaluated when a specific error occurs.
+ type: object
required:
- - campaignids
- - filters
+ - giveawayPool
+ - profile
+ - type
+ title: AwardGiveawayBlock
type: object
- UpdateCoupon:
- example:
- expiryDate: 2023-08-24T14:15:22Z
- recipientIntegrationId: URNGV8294NV
- implicitlyReserved: false
- usageLimit: 100
- reservationLimit: 45
- attributes: '{}'
- discountLimit: 30.0
- startDate: 2020-01-24T14:15:22Z
- limits:
- - period: yearly
- entities:
- - Coupon
- limit: 1000.0
- action: createCoupon
- - period: yearly
- entities:
- - Coupon
- limit: 1000.0
- action: createCoupon
- isReservationMandatory: false
+ x-discriminator-value: awardGiveaway
+ x-ms-discriminator-value: awardGiveaway
+ TriggerWebhookBlock:
+ description: A block that triggers a configured webhook and passes its required
+ parameters.
properties:
- usageLimit:
- description: |
- The number of times the coupon code can be redeemed. `0` means unlimited redemptions but any campaign usage limits will still apply.
- example: 100
- format: int64
- maximum: 999999
- minimum: 0
- type: integer
- discountLimit:
- description: |
- The total discount value that the code can give. Typically used to represent a gift card value.
- example: 30.0
- maximum: 1E+15
- minimum: 0
- type: number
- reservationLimit:
- description: |
- The number of reservations that can be made with this coupon code.
- example: 45
- format: int64
- maximum: 999999
- minimum: 0
- type: integer
- startDate:
- description: Timestamp at which point the coupon becomes valid.
- example: 2020-01-24T14:15:22Z
- format: date-time
+ id:
+ description: Unique identifier for this block.
+ example: a1b2c3d4-e5f6-7890-abcd-ef1234567890
+ readOnly: true
type: string
- expiryDate:
- description: Expiration date of the coupon. Coupon never expires if this
- is omitted.
- example: 2023-08-24T14:15:22Z
- format: date-time
+ type:
+ description: Identifies the block variant and determines which additional
+ properties are present in it.
type: string
- limits:
- description: |
- Limits configuration for a coupon. These limits will override the limits
- set from the campaign.
-
- **Note:** Only usable when creating a single coupon which is not tied to a specific recipient.
- Only per-profile limits are allowed to be configured.
+ tags:
+ description: Semantic labels attached to this block.
items:
- $ref: '#/components/schemas/LimitConfig'
+ type: string
+ readOnly: true
type: array
- recipientIntegrationId:
- description: The integration ID for this coupon's beneficiary's profile.
- example: URNGV8294NV
- maxLength: 1000
- title: Receiving customer profile integration ID
- type: string
- attributes:
- description: Arbitrary properties associated with this item.
+ webhook:
+ $ref: '#/components/schemas/TriggerWebhookBlock_webhook'
+ params:
+ description: The webhook's parameters, in configured order. Each property
+ name is the parameter's title, lowercased with spaces replaced by underscores
+ (for example, `Order ID` becomes `order_id`); falls back to `param_0`,
+ `param_1`, and so on if a title is blank or collides with another.
+ example:
+ order_id: ORD-10293
properties: {}
type: object
- isReservationMandatory:
- default: false
- description: An indication of whether the code can be redeemed only if it
- has been reserved first.
- example: false
- title: Is reservation mandatory
- type: boolean
- implicitlyReserved:
- description: An indication of whether the coupon is implicitly reserved
- for all customers.
- example: false
- title: Is coupon implicitly reserved for all customers
- type: boolean
+ onError:
+ additionalProperties:
+ items:
+ $ref: '#/components/schemas/Block'
+ type: array
+ description: Named error handlers evaluated when a specific error occurs.
+ type: object
+ required:
+ - type
+ - webhook
+ title: TriggerWebhookBlock
type: object
- CouponSearch:
+ x-discriminator-value: triggerWebhook
+ x-ms-discriminator-value: triggerWebhook
+ ScalarCheckAttributeBlock:
+ description: Variant of `CheckAttributeBlock` for operators that compare an
+ attribute against a single value.
properties:
- attributes:
- description: Properties to match against a coupon. All provided attributes
- will be exactly matched against attributes.
- properties: {}
+ operator:
+ description: The comparison operator applied to the attribute.
+ enum:
+ - equals
+ - not(equals)
+ - lessThan
+ - lessThanOrEqual
+ - greaterThan
+ - greaterThanOrEqual
+ - contains
+ - not(contains)
+ - matchesRegexp
+ - startsWith
+ - endsWith
+ - oneOf
+ - not(oneOf)
+ - inCollection
+ - not(inCollection)
+ - after
+ - before
+ type: string
+ value:
+ description: The comparison value for this operator.
+ example: "100"
type: object
required:
- - attributes
+ - value
+ title: ScalarCheckAttributeBlock
type: object
- UpdateReferralBatch:
+ x-discriminator-value: before
+ x-ms-discriminator-value: before
+ BetweenCheckAttributeBlock:
+ description: Variant of `CheckAttributeBlock` for the `between` operator, which
+ requires both a minimum and maximum value.
properties:
- attributes:
- description: Arbitrary properties associated with this item.
- properties: {}
- type: object
- batchID:
- description: The id of the batch the referral belongs to.
- example: 32535-43255
- title: Batch ID
+ operator:
+ description: The range comparison operator. Must be `between`.
+ enum:
+ - between
type: string
- startDate:
- description: Timestamp at which point the referral code becomes valid.
- example: 2020-11-10T23:00:00Z
- format: date-time
- title: Referral code valid from
+ min:
+ description: The minimum value allowed for the `between` operator.
+ example: "10"
+ type: object
+ max:
+ description: The maximum value allowed for the `between` operator.
+ example: "100"
+ type: object
+ required:
+ - max
+ - min
+ title: BetweenCheckAttributeBlock
+ type: object
+ x-discriminator-value: between
+ x-ms-discriminator-value: between
+ ListCheckAttributeBlock:
+ description: Variant of `CheckAttributeBlock` for operators that test list membership
+ against a set of values.
+ properties:
+ operator:
+ description: The list membership operator applied to the attribute.
+ enum:
+ - containsOneOf
+ - containsNoneOf
+ - containsAllOf
type: string
- expiryDate:
- description: Expiration date of the referral code. Referral never expires
- if this is omitted.
- example: 2021-11-10T23:00:00Z
- format: date-time
- title: Referral code valid until
+ values:
+ description: The set of values to match against.
+ type: object
+ required:
+ - values
+ title: ListCheckAttributeBlock
+ type: object
+ x-discriminator-value: containsAllOf
+ x-ms-discriminator-value: containsAllOf
+ ListWithCountCheckAttributeBlock:
+ description: Variant of `CheckAttributeBlock` for operators that test list membership
+ with a minimum or exact count threshold.
+ properties:
+ operator:
+ description: The list membership operator with a count threshold applied
+ to the attribute.
+ enum:
+ - containsAtLeast
+ - containsExactly
type: string
- usageLimit:
- description: |
- The number of times a referral code can be used. This can be set to 0 for no limit, but any campaign usage limits will still apply.
- example: 1
- format: int64
- maximum: 999999
- minimum: 0
- title: Referral code Usage Limit
- type: integer
+ values:
+ description: The set of values to match against.
+ type: object
+ count:
+ description: The count threshold for this operator.
+ example: "2"
+ type: object
required:
- - batchID
+ - count
+ - values
+ title: ListWithCountCheckAttributeBlock
type: object
- UpdateReferral:
- example:
- expiryDate: 2021-11-10T23:00:00Z
- friendProfileIntegrationId: BZGGC2454PA
- usageLimit: 1
- attributes: '{}'
- startDate: 2020-11-10T23:00:00Z
+ x-discriminator-value: containsExactly
+ x-ms-discriminator-value: containsExactly
+ UnaryCheckAttributeBlock:
+ description: Variant of `CheckAttributeBlock` for operators that test a property
+ of the attribute itself with no comparison value.
properties:
- friendProfileIntegrationId:
- description: An optional Integration ID of the Friend's Profile.
- example: BZGGC2454PA
- maxLength: 1000
- title: Friend's Profile ID
+ operator:
+ description: The unary operator applied to the attribute. These operators
+ require no comparison value.
+ enum:
+ - empty
+ - not(empty)
+ - exists
+ - not(exists)
+ - isTrue
+ - isFalse
type: string
- startDate:
- description: Timestamp at which point the referral code becomes valid.
- example: 2020-11-10T23:00:00Z
- format: date-time
- title: Referral code valid from
+ title: UnaryCheckAttributeBlock
+ type: object
+ x-discriminator-value: isFalse
+ x-ms-discriminator-value: isFalse
+ WithinCheckAttributeBlock:
+ description: Variant of `CheckAttributeBlock` for the `within` and `not(within)`
+ operators, which require both a start and end value.
+ properties:
+ operator:
+ description: The range comparison operator. Must be `within` or `not(within)`.
+ enum:
+ - within
+ - not(within)
type: string
- expiryDate:
- description: Expiration date of the referral code. Referral never expires
- if this is omitted.
- example: 2021-11-10T23:00:00Z
- format: date-time
- title: Referral code valid until
- type: string
- usageLimit:
- description: |
- The number of times a referral code can be used. This can be set to 0 for no limit, but any campaign usage limits will still apply.
- example: 1
- format: int64
- maximum: 999999
- minimum: 0
- title: Referral code Usage Limit
- type: integer
- attributes:
- description: Arbitrary properties associated with this item.
- properties: {}
+ start:
+ description: The start value for the `within` operator.
+ example: 2021-09-22T22:00:00Z
+ type: object
+ end:
+ description: The end value for the `within` operator.
+ example: 2021-09-22T22:00:00Z
type: object
+ startInclusive:
+ description: When `true`, the `start` value is included in the range for
+ the `within` operator.
+ example: true
+ type: boolean
+ endInclusive:
+ description: When `true`, the `end` value is included in the range for the
+ `within` operator.
+ example: true
+ type: boolean
+ timezoneInsensitive:
+ description: Indicates whether the `within` operator ignores time zones
+ and compares the wall-clock time only. When `false`, time zones are taken
+ into account.
+ example: false
+ type: boolean
+ required:
+ - end
+ - start
+ title: WithinCheckAttributeBlock
type: object
- NewCampaignGroup:
+ x-discriminator-value: not(within)
+ x-ms-discriminator-value: not(within)
+ GeoJSONPoint:
+ description: A single point on a map, defined by its longitude and latitude
+ coordinates, following the GeoJSON format.
properties:
- name:
- description: The name of the campaign access group.
- example: Europe access group
- minLength: 1
- type: string
- description:
- description: A longer description of the campaign access group.
- example: A group that gives access to all the campaigns for the Europe market.
+ type:
+ description: The geometry type discriminator.
+ enum:
+ - Point
type: string
- subscribedApplicationsIds:
- description: A list of IDs of the Applications that this campaign access
- group is enabled for.
+ coordinates:
+ description: The longitude and latitude coordinates of the point, optionally
+ followed by altitude.
example:
- - 1
- - 2
- - 3
+ - 13.405
+ - 52.52
items:
- format: int64
- type: integer
+ type: number
+ maxItems: 3
+ minItems: 2
type: array
- campaignIds:
- description: A list of IDs of the campaigns that are part of the campaign
- access group.
+ required:
+ - coordinates
+ - type
+ title: GeoJSONPoint
+ type: object
+ x-discriminator-value: Point
+ x-ms-discriminator-value: Point
+ GeoJSONPolygon:
+ description: A shape formed by one or more boundaries, following the GeoJSON
+ format. The first boundary defines the outer edge of the shape; any additional
+ boundaries define holes within the shape.
+ properties:
+ type:
+ description: The geometry type discriminator.
+ enum:
+ - Polygon
+ type: string
+ coordinates:
+ description: The boundaries that make up the shape. Each boundary is a closed
+ loop of longitude and latitude points, where the first and last point
+ are the same.
example:
- - 4
- - 6
- - 8
+ - - - 13
+ - 52.3
+ - - 13.8
+ - 52.3
+ - - 13.8
+ - 52.7
+ - - 13
+ - 52.7
+ - - 13
+ - 52.3
+ items:
+ items:
+ items:
+ type: number
+ maxItems: 3
+ minItems: 2
+ type: array
+ type: array
+ type: array
+ required:
+ - coordinates
+ - type
+ title: GeoJSONPolygon
+ type: object
+ x-discriminator-value: Polygon
+ x-ms-discriminator-value: Polygon
+ GeoJSONMultiPolygon:
+ description: One or more separate shapes grouped together as a single location,
+ following the GeoJSON format.
+ properties:
+ type:
+ description: The geometry type discriminator.
+ enum:
+ - MultiPolygon
+ type: string
+ coordinates:
+ description: The shapes in this group. Each one follows the same boundary
+ structure as a polygon.
+ example:
+ - - - - 13
+ - 52.3
+ - - 13.8
+ - 52.3
+ - - 13.8
+ - 52.7
+ - - 13
+ - 52.7
+ - - 13
+ - 52.3
+ items:
+ items:
+ items:
+ items:
+ type: number
+ maxItems: 3
+ minItems: 2
+ type: array
+ type: array
+ type: array
+ type: array
+ required:
+ - coordinates
+ - type
+ title: GeoJSONMultiPolygon
+ type: object
+ x-discriminator-value: MultiPolygon
+ x-ms-discriminator-value: MultiPolygon
+ GeoJSONGeometry:
+ description: A shape used to represent a geographical location. The `type` field
+ determines the kind of shape.
+ discriminator:
+ propertyName: type
+ type: object
+ GeoJSONGeometryCollection:
+ description: A group of different shapes combined into a single location, following
+ the GeoJSON format.
+ properties:
+ type:
+ description: The geometry type discriminator.
+ enum:
+ - GeometryCollection
+ type: string
+ geometries:
+ description: The shapes contained in this group.
items:
- format: int64
- type: integer
+ $ref: '#/components/schemas/GeoJSONGeometry'
type: array
required:
- - name
+ - geometries
+ - type
+ title: GeoJSONGeometryCollection
type: object
- CampaignGroup:
- example:
- accountId: 3886
- created: 2020-06-10T09:05:27.993483Z
- name: Europe access group
- subscribedApplicationsIds:
- - 1
- - 2
- - 3
- modified: 2021-09-12T10:12:42Z
- description: A group that gives access to all the campaigns for the Europe
- market.
- id: 6
- campaignIds:
- - 4
- - 6
- - 8
+ x-discriminator-value: GeometryCollection
+ x-ms-discriminator-value: GeometryCollection
+ LocationCheckAttributeBlock:
+ description: A block variant of `CheckAttributeBlock` for operators that check
+ whether a geographical location is inside a set of geometric areas.
+ properties:
+ operator:
+ description: The location membership operator applied to the attribute.
+ enum:
+ - in
+ - not(in)
+ type: string
+ values:
+ description: The geometric areas to check the location against.
+ type: object
+ required:
+ - values
+ title: LocationCheckAttributeBlock
+ type: object
+ x-discriminator-value: not(in)
+ x-ms-discriminator-value: not(in)
+ CheckAttributeBlockBase:
+ description: |-
+ Shared shape for attribute-comparison blocks: a single attribute evaluated by a named operator.
+ The operator determines which additional fields are required:
+ - `scalar` requires `value`.
+ - `between` requires `min` and `max` values.
+ - `list` requires `values`.
+ - `list-with-count` requires `values` and `count`.
+ - `unary` requires no extra fields.
properties:
id:
- description: The internal ID of this entity.
- example: 6
- format: int64
- type: integer
- created:
- description: The time this entity was created.
- example: 2020-06-10T09:05:27.993483Z
- format: date-time
+ description: Unique identifier for this block.
+ example: a1b2c3d4-e5f6-7890-abcd-ef1234567890
+ readOnly: true
type: string
- modified:
- description: The time this entity was last modified.
- example: 2021-09-12T10:12:42Z
- format: date-time
+ type:
+ description: Identifies the block variant and determines which additional
+ properties are present in it.
type: string
- accountId:
- description: The ID of the account that owns this entity.
- example: 3886
- format: int64
- type: integer
- name:
- description: The name of the campaign access group.
- example: Europe access group
- minLength: 1
+ tags:
+ description: Semantic labels attached to this block.
+ items:
+ type: string
+ readOnly: true
+ type: array
+ operator:
+ description: The comparison operator applied to the attribute.
+ enum:
+ - equals
+ - not(equals)
+ - lessThan
+ - lessThanOrEqual
+ - greaterThan
+ - greaterThanOrEqual
+ - between
+ - contains
+ - not(contains)
+ - matchesRegexp
+ - startsWith
+ - endsWith
+ - oneOf
+ - not(oneOf)
+ - inCollection
+ - not(inCollection)
+ - empty
+ - not(empty)
+ - exists
+ - not(exists)
+ - isTrue
+ - isFalse
+ - containsAtLeast
+ - containsExactly
+ - containsOneOf
+ - containsNoneOf
+ - containsAllOf
+ - after
+ - before
+ - within
+ - not(within)
+ - in
+ - not(in)
+ example: greaterThan
+ type: string
+ attribute:
+ description: The attribute path identifier (e.g. "$Session.Total").
+ example: $Session.Total
+ type: object
+ value:
+ description: The comparison value for scalar operators.
+ example: "100"
+ type: object
+ min:
+ description: The minimum value allowed for the `between` operator.
+ example: "10"
+ type: object
+ max:
+ description: The maximum value allowed for the `between` operator.
+ example: "100"
+ type: object
+ start:
+ description: The start value for the `within` operator.
+ example: 2021-09-22T22:00:00Z
+ type: object
+ end:
+ description: The end value for the `within` operator.
+ example: 2021-09-22T22:00:00Z
+ type: object
+ startInclusive:
+ description: When `true`, the `start` value is included in the range for
+ the `within` operator.
+ example: true
+ type: boolean
+ endInclusive:
+ description: When `true`, the `end` value is included in the range for the
+ `within` operator.
+ example: true
+ type: boolean
+ timezoneInsensitive:
+ description: Indicates whether the `within` operator ignores time zones
+ and compares the wall-clock time only. When `false`, time zones are taken
+ into account.
+ example: false
+ type: boolean
+ values:
+ description: The set of values to match against for list operators. For
+ location operators (`in`, `not(in)`), an array of objects with a `geometry`
+ (see `GeoJSONGeometry`) and an optional `name`, or a string reference
+ to a list attribute.
+ example: ""
+ type: object
+ count:
+ description: The count threshold for `containsAtLeast` and `containsExactly`
+ operators.
+ example: "2"
+ type: object
+ onFailure:
+ description: Promotion blocks evaluated when this block fails or returns
+ false.
+ items:
+ $ref: '#/components/schemas/Block'
+ type: array
+ required:
+ - attribute
+ - operator
+ - type
+ title: CheckAttributeBlockBase
+ type: object
+ CheckAttributeBlock:
+ description: |-
+ Shared shape for attribute-comparison blocks: a single attribute evaluated by a named operator.
+ The operator determines which additional fields are required:
+ - `scalar` requires `value`.
+ - `between` requires `min` and `max` values.
+ - `list` requires `values`.
+ - `list-with-count` requires `values` and `count`.
+ - `unary` requires no extra fields.
+ discriminator:
+ propertyName: operator
+ properties:
+ id:
+ description: Unique identifier for this block.
+ example: a1b2c3d4-e5f6-7890-abcd-ef1234567890
+ readOnly: true
type: string
- description:
- description: A longer description of the campaign access group.
- example: A group that gives access to all the campaigns for the Europe market.
+ type:
+ description: A block discriminator of type `checkAttribute`.
+ enum:
+ - checkAttribute
+ example: checkAttribute
type: string
- subscribedApplicationsIds:
- description: A list of IDs of the Applications that this campaign access
- group is enabled for.
- example:
- - 1
- - 2
- - 3
+ tags:
+ description: Semantic labels attached to this block.
items:
- format: int64
- type: integer
+ type: string
+ readOnly: true
type: array
- campaignIds:
- description: A list of IDs of the campaigns that are part of the campaign
- access group.
- example:
- - 4
- - 6
- - 8
+ operator:
+ description: The comparison operator applied to the attribute.
+ enum:
+ - equals
+ - not(equals)
+ - lessThan
+ - lessThanOrEqual
+ - greaterThan
+ - greaterThanOrEqual
+ - between
+ - contains
+ - not(contains)
+ - matchesRegexp
+ - startsWith
+ - endsWith
+ - oneOf
+ - not(oneOf)
+ - inCollection
+ - not(inCollection)
+ - empty
+ - not(empty)
+ - exists
+ - not(exists)
+ - isTrue
+ - isFalse
+ - containsAtLeast
+ - containsExactly
+ - containsOneOf
+ - containsNoneOf
+ - containsAllOf
+ - after
+ - before
+ - within
+ - not(within)
+ - in
+ - not(in)
+ example: greaterThan
+ type: string
+ attribute:
+ description: The attribute path identifier (e.g. "$Session.Total").
+ example: $Session.Total
+ type: object
+ value:
+ description: The comparison value for scalar operators.
+ example: "100"
+ type: object
+ min:
+ description: The minimum value allowed for the `between` operator.
+ example: "10"
+ type: object
+ max:
+ description: The maximum value allowed for the `between` operator.
+ example: "100"
+ type: object
+ start:
+ description: The start value for the `within` operator.
+ example: 2021-09-22T22:00:00Z
+ type: object
+ end:
+ description: The end value for the `within` operator.
+ example: 2021-09-22T22:00:00Z
+ type: object
+ startInclusive:
+ description: When `true`, the `start` value is included in the range for
+ the `within` operator.
+ example: true
+ type: boolean
+ endInclusive:
+ description: When `true`, the `end` value is included in the range for the
+ `within` operator.
+ example: true
+ type: boolean
+ timezoneInsensitive:
+ description: Indicates whether the `within` operator ignores time zones
+ and compares the wall-clock time only. When `false`, time zones are taken
+ into account.
+ example: false
+ type: boolean
+ values:
+ description: The set of values to match against for list operators. For
+ location operators (`in`, `not(in)`), an array of objects with a `geometry`
+ (see `GeoJSONGeometry`) and an optional `name`, or a string reference
+ to a list attribute.
+ example: ""
+ type: object
+ count:
+ description: The count threshold for `containsAtLeast` and `containsExactly`
+ operators.
+ example: "2"
+ type: object
+ onFailure:
+ description: Promotion blocks evaluated when this block fails or returns
+ false.
items:
- format: int64
- type: integer
+ $ref: '#/components/schemas/Block'
type: array
required:
- - accountId
- - created
- - id
- - modified
- - name
+ - attribute
+ - operator
+ - type
+ title: CheckAttributeBlockBase
type: object
- UpdateCampaignGroup:
+ x-discriminator-value: checkAttribute
+ x-ms-discriminator-value: checkAttribute
+ CheckAudienceBlock:
+ description: A block that checks whether a given customer profile is a member
+ of an audience.
properties:
- name:
- description: The name of the campaign access group.
- example: Europe access group
- minLength: 1
+ id:
+ description: Unique identifier for this block.
+ example: a1b2c3d4-e5f6-7890-abcd-ef1234567890
+ readOnly: true
type: string
- description:
- description: A longer description of the campaign access group.
- example: A group that gives access to all the campaigns for the Europe market.
+ type:
+ description: Identifies the block variant and determines which additional
+ properties are present in it.
type: string
- subscribedApplicationsIds:
- description: A list of IDs of the Applications that this campaign access
- group is enabled for.
- example:
- - 1
- - 2
- - 3
+ tags:
+ description: Semantic labels attached to this block.
items:
- format: int64
- type: integer
+ type: string
+ readOnly: true
type: array
- campaignIds:
- description: A list of IDs of the campaigns that are part of the campaign
- access group.
- example:
- - 4
- - 6
- - 8
+ operator:
+ description: An indicator of how the block compares its elements.
+ enum:
+ - member
+ - not(member)
+ - justJoined
+ - justLeft
+ example: member
+ type: string
+ profile:
+ description: The customer profile to check against the audience. `Current`
+ targets the customer in the current session; `Advocate` targets the person
+ who invited their friend via referral program.
+ enum:
+ - Current
+ - Advocate
+ example: Current
+ type: string
+ audience:
+ $ref: '#/components/schemas/CheckAudienceBlock_audience'
+ onFailure:
+ description: Promotion blocks evaluated when this block fails or returns
+ false.
items:
- format: int64
- type: integer
+ $ref: '#/components/schemas/Block'
type: array
required:
- - name
+ - audience
+ - operator
+ - profile
+ - type
+ title: CheckAudienceBlock
type: object
- Role:
+ x-discriminator-value: checkAudience
+ x-ms-discriminator-value: checkAudience
+ CheckLoyaltyBalanceBlock:
+ description: A block that checks a specific loyalty program's ledger or subledger
+ balance against a numeric value.
properties:
id:
- description: The internal ID of this entity.
- example: 6
- format: int64
- type: integer
- created:
- description: The time this entity was created.
- example: 2020-06-10T09:05:27.993483Z
- format: date-time
+ description: Unique identifier for this block.
+ example: a1b2c3d4-e5f6-7890-abcd-ef1234567890
+ readOnly: true
type: string
- modified:
- description: The time this entity was last modified.
- example: 2021-09-12T10:12:42Z
- format: date-time
+ type:
+ description: Identifies the block variant and determines which additional
+ properties are present in it.
type: string
- accountId:
- description: The ID of the account that owns this entity.
- example: 3886
- format: int64
- type: integer
- campaignGroupID:
- description: |
- The ID of the [Campaign Group](https://docs.talon.one/docs/product/account/account-settings/managing-campaign-groups)
- this role was created for.
- example: 3
- format: int64
- type: integer
- name:
- description: Name of the role.
- example: Campaign Reviewer
+ tags:
+ description: Semantic labels attached to this block.
+ items:
+ type: string
+ readOnly: true
+ type: array
+ operator:
+ description: An indicator of how the block compares the balance to the value.
+ enum:
+ - equals
+ - not(equals)
+ - lessThan
+ - lessThanOrEqual
+ - greaterThan
+ - greaterThanOrEqual
+ example: greaterThanOrEqual
+ type: string
+ program:
+ $ref: '#/components/schemas/CheckLoyaltyBalanceBlock_program'
+ subledger:
+ description: The name of the subledger to check the balance of. Can be empty
+ if this block checks the loyalty program's main ledger balance instead
+ of a subledger.
+ example: ""
type: string
- description:
- description: Description of the role.
- example: Reviews the campaigns
+ balance:
+ description: |-
+ The type of balance to check:
+ - `current` is the sum of currently active points
+ - `pending` is the sum of pending points.
+ - `negative` is the sum of negative points.
+ - `tentativeCurrent` is the tentative points balance
+ within the current open customer session.
+ enum:
+ - current
+ - pending
+ - negative
+ - tentativeCurrent
+ example: current
type: string
- members:
- description: A list of user identifiers assigned to this role.
- example:
- - 48
- - 562
- - 475
- - 18
+ value:
+ description: The numeric value to compare the balance against.
+ example: 500.0
+ type: number
+ onFailure:
+ description: Promotion blocks evaluated when this block fails or returns
+ false.
items:
- format: int64
- type: integer
+ $ref: '#/components/schemas/Block'
type: array
- acl:
- description: The `Access Control List` json defining the role of the user.
- This represents the access control on the user level.
- example:
- Role: 127
- properties: {}
- type: object
required:
- - accountId
- - acl
- - created
- - id
- - modified
- - name
+ - balance
+ - operator
+ - program
+ - subledger
+ - type
+ - value
+ title: CheckLoyaltyBalanceBlock
type: object
- CampaignTemplateCouponReservationSettings:
- example:
- reservationLimit: 45
- isReservationMandatory: false
+ x-discriminator-value: checkLoyaltyBalance
+ x-ms-discriminator-value: checkLoyaltyBalance
+ CheckCouponBlock:
+ description: A block that validates the coupon code value and date.
properties:
- reservationLimit:
- description: |
- The number of reservations that can be made with this coupon code.
- example: 45
- format: int64
- maximum: 999999
- minimum: 0
- type: integer
- isReservationMandatory:
- default: false
- description: An indication of whether the code can be redeemed only if it
- has been reserved first.
- example: false
- title: Is reservation mandatory
+ id:
+ description: Unique identifier for this block.
+ example: a1b2c3d4-e5f6-7890-abcd-ef1234567890
+ readOnly: true
+ type: string
+ type:
+ description: Identifies the block variant and determines which additional
+ properties are present in it.
+ type: string
+ tags:
+ description: Semantic labels attached to this block.
+ items:
+ type: string
+ readOnly: true
+ type: array
+ redeem:
+ description: When `true`, the coupon code is redeemed.
+ example: true
type: boolean
+ onFailure:
+ description: Promotion blocks evaluated when this block fails or returns
+ false.
+ items:
+ $ref: '#/components/schemas/Block'
+ type: array
+ required:
+ - redeem
+ - type
+ title: CheckCouponBlock
type: object
- TemplateLimitConfig:
- example:
- period: yearly
- entities:
- - Coupon
- limit: 1000.0
- action: createCoupon
+ x-discriminator-value: checkCoupon
+ x-ms-discriminator-value: checkCoupon
+ CheckReferralBlock:
+ description: A block that validates the referral code value and date.
properties:
- action:
- description: |
- The limitable action to which this limit applies. For example:
- - `setDiscount`
- - `setDiscountEffect`
- - `redeemCoupon`
- - `createCoupon`
- example: createCoupon
+ id:
+ description: Unique identifier for this block.
+ example: a1b2c3d4-e5f6-7890-abcd-ef1234567890
+ readOnly: true
type: string
- limit:
- description: The value to set for the limit.
- example: 1000.0
- minimum: 0
- type: number
- period:
- description: The period on which the budget limit recurs.
- enum:
- - daily
- - weekly
- - monthly
- - yearly
- example: yearly
+ type:
+ description: Identifies the block variant and determines which additional
+ properties are present in it.
type: string
- entities:
- description: The entity that this limit applies to.
- example:
- - Coupon
+ tags:
+ description: Semantic labels attached to this block.
items:
- enum:
- - Coupon
- - Referral
- - Profile
- - Identifier
- - Store
- - Session
type: string
+ readOnly: true
+ type: array
+ redeem:
+ description: When `true`, the referral code is redeemed.
+ example: true
+ type: boolean
+ onFailure:
+ description: Promotion blocks evaluated when this block fails or returns
+ false.
+ items:
+ $ref: '#/components/schemas/Block'
type: array
required:
- - action
- - entities
- - limit
+ - redeem
+ - type
+ title: CheckReferralBlock
type: object
- CampaignTemplateParams:
- example:
- attributeId: 42
- name: discount_value
- description: This is a template parameter of type `number`.
- type: number
+ x-discriminator-value: checkReferral
+ x-ms-discriminator-value: checkReferral
+ UpdateAudienceMembershipBlock:
+ description: A block that adds a customer to or removes them from an audience.
properties:
- name:
- description: Name of the campaign template parameter.
- example: discount_value
- minLength: 1
+ id:
+ description: Unique identifier for this block.
+ example: a1b2c3d4-e5f6-7890-abcd-ef1234567890
+ readOnly: true
type: string
type:
- description: Defines the type of parameter value.
+ description: Identifies the block variant and determines which additional
+ properties are present in it.
+ type: string
+ tags:
+ description: Semantic labels attached to this block.
+ items:
+ type: string
+ readOnly: true
+ type: array
+ operator:
+ description: The action to perform.
enum:
- - string
- - number
- - boolean
- - percent
- - (list string)
- - (list number)
- - time
- example: number
+ - add
+ - remove
+ example: add
type: string
- description:
- description: Explains the meaning of this template parameter and the placeholder
- value that will define it. It is used on campaign creation from this template.
- example: This is a template parameter of type `number`.
+ profile:
+ description: The customer profile to add or remove from the audience. `Current`
+ targets the customer in the current session; `Advocate` targets the person
+ who invited their friend via referral program.
+ enum:
+ - Current
+ - Advocate
+ example: Current
type: string
- attributeId:
- description: ID of the corresponding attribute.
- example: 42
- format: int64
- type: integer
+ audience:
+ $ref: '#/components/schemas/UpdateAudienceMembershipBlock_audience'
required:
- - description
- - name
+ - audience
+ - operator
+ - profile
- type
+ title: UpdateAudienceMembershipBlock
type: object
- CampaignTemplateCollection:
- example:
- name: My collection
- description: My collection of SKUs
+ x-discriminator-value: updateAudienceMembership
+ x-ms-discriminator-value: updateAudienceMembership
+ UpdateAchievementProgressBlock:
+ description: A block that updates the progress of a customer in an achievement.
properties:
- name:
- description: The name of this collection.
- example: My collection
- minLength: 1
- pattern: ^[A-Za-z](\w|\s)*$
+ id:
+ description: Unique identifier for this block.
+ example: a1b2c3d4-e5f6-7890-abcd-ef1234567890
+ readOnly: true
type: string
- description:
- description: A short description of the purpose of this collection.
- example: My collection of SKUs
+ type:
+ description: Identifies the block variant and determines which additional
+ properties are present in it.
+ type: string
+ tags:
+ description: Semantic labels attached to this block.
+ items:
+ type: string
+ readOnly: true
+ type: array
+ operator:
+ enum:
+ - increaseBy
+ example: increaseBy
+ type: string
+ value:
+ description: The value to update the progress by. Supports template placeholders
+ (e.g. "{{$Session.Total / 2}}") for dynamic quantities.
+ example: "10"
type: string
+ achievement:
+ $ref: '#/components/schemas/UpdateAchievementProgressBlock_achievement'
required:
- - name
+ - achievement
+ - operator
+ - type
+ - value
+ title: UpdateAchievementProgressBlock
type: object
- UpdateCampaignTemplate:
+ x-discriminator-value: updateAchievementProgress
+ x-ms-discriminator-value: updateAchievementProgress
+ UpdateAttributeValueBlock:
+ description: A block that sets or updates an attribute. The `type` may be empty
+ for [built-in attributes](https://docs.talon.one/docs/dev/concepts/attributes).
properties:
- name:
- description: The campaign template name.
- example: Discount campaign
- minLength: 1
- type: string
- description:
- description: Customer-facing text that explains the objective of the template.
- example: This is a template for a discount campaign.
+ id:
+ description: Unique identifier for this block.
+ example: a1b2c3d4-e5f6-7890-abcd-ef1234567890
+ readOnly: true
type: string
- instructions:
- description: Customer-facing text that explains how to use the template.
- For example, you can use this property to explain the available attributes
- of this template, and how they can be modified when a user uses this template
- to create a new campaign.
- example: Use this template for discount campaigns. Set the campaign properties
- according to the campaign goals, and don't forget to set an end date.
+ type:
+ description: Identifies the block variant and determines which additional
+ properties are present in it.
type: string
- campaignAttributes:
- description: The campaign attributes that campaigns created from this template
- will have by default.
- properties: {}
+ tags:
+ description: Semantic labels attached to this block.
+ items:
+ type: string
+ readOnly: true
+ type: array
+ operator:
+ description: The update operation applied to the attribute.
+ enum:
+ - setTo
+ - increaseBy
+ - decreaseBy
+ - multiplyBy
+ - divideBy
+ - toggle
+ - laterBy
+ - earlierBy
+ example: setTo
+ type: string
+ attribute:
+ $ref: '#/components/schemas/UpdateAttributeValueBlock_attribute'
+ value:
+ description: The value of the attribute. Omitted when operator is set to
+ `toggle`.
+ example: "10"
type: object
- couponAttributes:
- description: The campaign attributes that coupons created from this template
- will have by default.
+ target:
+ $ref: '#/components/schemas/UpdateAttributeValueBlock_target'
+ required:
+ - attribute
+ - operator
+ - target
+ - type
+ title: UpdateAttributeValueBlock
+ type: object
+ x-discriminator-value: updateAttributeValue
+ x-ms-discriminator-value: updateAttributeValue
+ TriggerCustomEffectBlock:
+ description: A block that triggers a configured custom effect and passes its
+ required parameters.
+ properties:
+ id:
+ description: Unique identifier for this block.
+ example: a1b2c3d4-e5f6-7890-abcd-ef1234567890
+ readOnly: true
+ type: string
+ type:
+ description: Identifies the block variant and determines which additional
+ properties are present in it.
+ type: string
+ tags:
+ description: Semantic labels attached to this block.
+ items:
+ type: string
+ readOnly: true
+ type: array
+ customEffect:
+ $ref: '#/components/schemas/TriggerCustomEffectBlock_customEffect'
+ params:
+ description: The custom effect's parameters, in configured order. Each property
+ name is the parameter's title, lowercased with spaces replaced by underscores
+ (for example, `Order ID` becomes `order_id`); falls back to `param_0`,
+ `param_1`, and so on if a title is blank or collides with another.
+ example:
+ template_id: TPL-10293
properties: {}
type: object
- state:
- description: Only campaign templates in 'available' state may be used to
- create campaigns.
- enum:
- - draft
- - enabled
- - disabled
+ target:
+ $ref: '#/components/schemas/TriggerCustomEffectBlock_target'
+ onError:
+ additionalProperties:
+ items:
+ $ref: '#/components/schemas/Block'
+ type: array
+ description: Named error handlers evaluated when a specific error occurs.
+ type: object
+ required:
+ - customEffect
+ - target
+ - type
+ title: TriggerCustomEffectBlock
+ type: object
+ x-discriminator-value: triggerCustomEffect
+ x-ms-discriminator-value: triggerCustomEffect
+ CheckEventBlock:
+ description: A block that validates the event type.
+ properties:
+ id:
+ description: Unique identifier for this block.
+ example: a1b2c3d4-e5f6-7890-abcd-ef1234567890
+ readOnly: true
+ type: string
+ type:
+ description: Identifies the block variant and determines which additional
+ properties are present in it.
type: string
- activeRulesetId:
- description: The ID of the ruleset this campaign template will use.
- example: 5
- format: int64
- type: integer
tags:
- description: A list of tags for the campaign template.
- example:
- - discount
+ description: Semantic labels attached to this block.
items:
- maxLength: 50
- minLength: 1
type: string
- maxItems: 50
+ readOnly: true
type: array
- reevaluateOnReturn:
- description: Indicates whether campaigns created from this template should
- be reevaluated when a customer returns an item.
- example: true
- type: boolean
- features:
- description: A list of features for the campaign template.
+ eventType:
+ description: The event type to check against.
+ example: profileCreated
+ type: string
+ matchers:
items:
- enum:
- - coupons
- - referrals
- - loyalty
- - giveaways
- - strikethrough
- - achievements
- type: string
+ $ref: '#/components/schemas/Block'
type: array
- couponSettings:
- $ref: '#/components/schemas/CodeGeneratorSettings'
- couponReservationSettings:
- $ref: '#/components/schemas/CampaignTemplateCouponReservationSettings'
- referralSettings:
- $ref: '#/components/schemas/CodeGeneratorSettings'
- limits:
- description: The set of limits that operate for this campaign template.
+ onFailure:
+ description: Promotion blocks evaluated when this block fails or returns
+ false.
items:
- $ref: '#/components/schemas/TemplateLimitConfig'
+ $ref: '#/components/schemas/Block'
type: array
- templateParams:
- description: Fields which can be used to replace values in a rule.
+ required:
+ - eventType
+ - type
+ title: CheckEventBlock
+ type: object
+ x-discriminator-value: checkEvent
+ x-ms-discriminator-value: checkEvent
+ CheckAchievementBlock:
+ description: A block that checks the current customer's completion or progress
+ status in an achievement.
+ properties:
+ id:
+ description: Unique identifier for this block.
+ example: a1b2c3d4-e5f6-7890-abcd-ef1234567890
+ readOnly: true
+ type: string
+ type:
+ description: Identifies the block variant and determines which additional
+ properties are present in it.
+ type: string
+ tags:
+ description: Semantic labels attached to this block.
items:
- $ref: '#/components/schemas/CampaignTemplateParams'
+ type: string
+ readOnly: true
type: array
- applicationsIds:
- description: A list of IDs of the Applications that are subscribed to this
- campaign template.
- example:
- - 1
- - 2
- - 3
+ operator:
+ description: The comparison operator applied to the achievement.
+ enum:
+ - justCompleted
+ - started
+ - not(started)
+ - inProgress
+ - not(inProgress)
+ - completed
+ - not(completed)
+ example: justCompleted
+ type: string
+ achievement:
+ $ref: '#/components/schemas/CheckAchievementBlock_achievement'
+ onFailure:
+ description: Promotion blocks evaluated when this block fails or returns
+ false.
items:
- format: int64
- type: integer
+ $ref: '#/components/schemas/Block'
type: array
- campaignCollections:
- description: The campaign collections from the blueprint campaign for the
- template.
+ required:
+ - achievement
+ - operator
+ - type
+ title: CheckAchievementBlock
+ type: object
+ x-discriminator-value: checkAchievement
+ x-ms-discriminator-value: checkAchievement
+ CheckBudgetBlock:
+ description: A block that verifies if a specific budget has sufficient limit
+ available, and whether this limit meets or exceeds a specific value.
+ properties:
+ id:
+ description: Unique identifier for this block.
+ example: a1b2c3d4-e5f6-7890-abcd-ef1234567890
+ readOnly: true
+ type: string
+ type:
+ description: Identifies the block variant and determines which additional
+ properties are present in it.
+ type: string
+ tags:
+ description: Semantic labels attached to this block.
items:
- $ref: '#/components/schemas/CampaignTemplateCollection'
+ type: string
+ readOnly: true
type: array
- defaultCampaignGroupId:
- description: The default campaign group ID.
- example: 42
- format: int64
- type: integer
- campaignType:
- default: advanced
- description: |
- The campaign type. Possible type values:
- - `cartItem`: Type of campaign that can apply effects only to cart items.
- - `advanced`: Type of campaign that can apply effects to customer sessions and cart items.
+ operator:
+ description: The comparison operator applied to the limit. `available` checks
+ if there is budget available for a given limitable action; `enoughFor`
+ checks if the available budget meets or exceeds a specific value limit.
enum:
- - cartItem
- - advanced
- example: advanced
+ - available
+ - enoughFor
+ example: available
+ type: string
+ action:
+ description: The limitable action to check.
+ enum:
+ - redeemCoupon
+ - redeemReferral
+ - setDiscount
+ - createCoupon
+ - createReferral
+ - setDiscountEffect
+ - createLoyaltyPoints
+ - createLoyaltyPointsEffect
+ - redeemLoyaltyPoints
+ - redeemLoyaltyPointsEffect
+ - awardGiveaway
+ - addFreeItemEffect
+ - customEffect
+ - callApi
+ example: setDiscount
type: string
+ value:
+ description: The value to check against when using the `enoughFor` operator.
+ example: 5.0
+ type: number
+ onFailure:
+ description: Promotion blocks evaluated when this block fails or returns
+ false.
+ items:
+ $ref: '#/components/schemas/Block'
+ type: array
required:
- - applicationsIds
- - description
- - instructions
- - name
- - state
+ - action
+ - operator
+ - type
+ title: CheckBudgetBlock
type: object
- CampaignTemplate:
- example:
- instructions: Use this template for discount campaigns. Set the campaign properties
- according to the campaign goals, and don't forget to set an end date.
- campaignCollections:
- - name: My collection
- description: My collection of SKUs
- - name: My collection
- description: My collection of SKUs
- campaignsCount: 3
- defaultCampaignGroupId: 42
- description: This is a template for a discount campaign.
- features:
- - coupons
- - coupons
- couponReservationSettings:
- reservationLimit: 45
- isReservationMandatory: false
- couponSettings:
- couponPattern: SUMMER-####-####
- validCharacters:
- - A
- - B
- - C
- - D
- - E
- - F
- - G
- - H
- - I
- - J
- - K
- - L
- - M
- - "N"
- - O
- - P
- - Q
- - R
- - S
- - T
- - U
- - V
- - W
- - X
- - "Y"
- - Z
- - "0"
- - "1"
- - "2"
- - "3"
- - "4"
- - "5"
- - "6"
- - "7"
- - "8"
- - "9"
- templateParams:
- - attributeId: 42
- name: discount_value
- description: This is a template parameter of type `number`.
- type: number
- - attributeId: 42
- name: discount_value
- description: This is a template parameter of type `number`.
- type: number
- id: 6
- couponAttributes: '{}'
- state: draft
- limits:
- - period: yearly
- entities:
- - Coupon
- limit: 1000.0
- action: createCoupon
- - period: yearly
- entities:
- - Coupon
- limit: 1000.0
- action: createCoupon
- activeRulesetId: 5
- campaignAttributes: '{}'
- applicationsIds:
- - 1
- - 2
- - 3
- - 1
- - 2
- - 3
- campaignType: advanced
- updatedBy: Jane Doe
- created: 2020-06-10T09:05:27.993483Z
- isUserFavorite: false
- reevaluateOnReturn: true
- userId: 388
- tags:
- - discount
- accountId: 3886
- validApplicationIds:
- - 1
- - 2
- - 3
- name: Discount campaign
- referralSettings:
- couponPattern: SUMMER-####-####
- validCharacters:
- - A
- - B
- - C
- - D
- - E
- - F
- - G
- - H
- - I
- - J
- - K
- - L
- - M
- - "N"
- - O
- - P
- - Q
- - R
- - S
- - T
- - U
- - V
- - W
- - X
- - "Y"
- - Z
- - "0"
- - "1"
- - "2"
- - "3"
- - "4"
- - "5"
- - "6"
- - "7"
- - "8"
- - "9"
- updated: 2022-08-24T14:15:22Z
+ x-discriminator-value: checkBudget
+ x-ms-discriminator-value: checkBudget
+ CreateCouponBlock:
+ description: A block that creates a coupon code.
properties:
id:
- description: The internal ID of this entity.
- example: 6
- format: int64
- type: integer
- created:
- description: The time this entity was created.
- example: 2020-06-10T09:05:27.993483Z
- format: date-time
- type: string
- accountId:
- description: The ID of the account that owns this entity.
- example: 3886
- format: int64
- type: integer
- userId:
- description: The ID of the user associated with this entity.
- example: 388
- format: int64
- type: integer
- name:
- description: The campaign template name.
- example: Discount campaign
- minLength: 1
+ description: Unique identifier for this block.
+ example: a1b2c3d4-e5f6-7890-abcd-ef1234567890
+ readOnly: true
type: string
- description:
- description: Customer-facing text that explains the objective of the template.
- example: This is a template for a discount campaign.
+ type:
+ description: Identifies the block variant and determines which additional
+ properties are present in it.
type: string
- instructions:
- description: Customer-facing text that explains how to use the template.
- For example, you can use this property to explain the available attributes
- of this template, and how they can be modified when a user uses this template
- to create a new campaign.
- example: Use this template for discount campaigns. Set the campaign properties
- according to the campaign goals, and don't forget to set an end date.
+ tags:
+ description: Semantic labels attached to this block.
+ items:
+ type: string
+ readOnly: true
+ type: array
+ campaignId:
+ description: The ID of the campaign in which the coupon code is created.
+ type: object
+ recipientId:
+ description: The integration ID of the customer that is allowed to redeem
+ this coupon.
+ example: '{{$Profile.IntegrationId}}'
type: string
- campaignAttributes:
- description: The campaign attributes that campaigns created from this template
- will have by default.
- properties: {}
+ storeInSession:
+ description: When `true`, the coupon is stored in the session.
+ example: true
+ type: boolean
+ usageLimit:
+ description: |
+ The number of times the coupon code can be redeemed. `0` means unlimited redemptions, but any campaign usage limits still apply. Either a numeric scalar or a `{{expression}}` string that resolves to a number at evaluation time.
type: object
- couponAttributes:
- description: The campaign attributes that coupons created from this template
- will have by default.
- properties: {}
+ discountLimit:
+ description: |
+ The total discount value that the code can give. Typically used to represent a gift card value. Either a numeric scalar or a `{{expression}}` string that resolves to a number at evaluation time.
type: object
- state:
- description: Only campaign templates in 'available' state may be used to
- create campaigns.
- enum:
- - draft
- - enabled
- - disabled
+ startDate:
+ description: Timestamp at which point the coupon becomes valid.
+ example: 2024-12-24T14:15:22Z
+ type: object
+ expiryDate:
+ description: Expiration date of the coupon. Coupon never expires if this
+ is omitted.
+ example: 2024-12-24T14:15:22Z
+ type: object
+ attributes:
+ description: Custom attributes associated with this coupon code.
+ type: object
+ validCharacters:
+ description: Characters used to generate the random parts of a code.
+ example: ABC
+ type: string
+ pattern:
+ description: |
+ The pattern used to generate codes, such as coupon codes, referral codes, and loyalty cards. The character `#` is a placeholder and is replaced by a random character from the `validCharacters` set.
+ example: SUMMER-####-####
+ type: string
+ required:
+ - campaignId
+ - recipientId
+ - storeInSession
+ - type
+ title: CreateCouponBlock
+ type: object
+ x-discriminator-value: createCoupon
+ x-ms-discriminator-value: createCoupon
+ CreateReferralBlock:
+ description: A block that creates a referral code.
+ properties:
+ id:
+ description: Unique identifier for this block.
+ example: a1b2c3d4-e5f6-7890-abcd-ef1234567890
+ readOnly: true
+ type: string
+ type:
+ description: Identifies the block variant and determines which additional
+ properties are present in it.
type: string
- activeRulesetId:
- description: The ID of the ruleset this campaign template will use.
- example: 5
- format: int64
- type: integer
tags:
- description: A list of tags for the campaign template.
- example:
- - discount
+ description: Semantic labels attached to this block.
items:
- maxLength: 50
- minLength: 1
type: string
- maxItems: 50
+ readOnly: true
type: array
- reevaluateOnReturn:
- description: Indicates whether campaigns created from this template should
- be reevaluated when a customer returns an item.
+ campaignId:
+ description: The ID of the campaign in which the referral code is created.
+ Either a numeric scalar or a `{{expression}}` string that resolves to
+ a number at evaluation time.
+ type: object
+ friendId:
+ description: An optional integration ID of the friend's profile.
+ example: '{{$Profile.IntegrationId}}'
+ type: string
+ storeInSession:
+ description: When `true`, the referral code is stored in the session.
example: true
type: boolean
- features:
- description: A list of features for the campaign template.
+ usageLimit:
+ description: |
+ The number of times the referral code code can be redeemed. `0` means unlimited redemptions, but any campaign usage limits still apply. Either a numeric scalar or a `{{expression}}` string that resolves to a number at evaluation time.
+ type: object
+ startDate:
+ description: Timestamp at which point the referral code becomes valid.
+ example: 2024-12-24T14:15:22Z
+ type: object
+ expiryDate:
+ description: Expiration date of the referral code. Referral code never expires
+ if this is omitted.
+ example: 2024-12-24T14:15:22Z
+ type: object
+ attributes:
+ description: Custom attributes associated with this referral code.
+ type: object
+ validCharacters:
+ description: Characters used to generate the random parts of a code.
+ example: ABC
+ type: string
+ pattern:
+ description: |
+ The pattern used to generate codes, such as coupon codes, referral codes, and loyalty cards. The character `#` is a placeholder and is replaced by a random character from the `validCharacters` set.
+ example: SUMMER-####-####
+ type: string
+ required:
+ - campaignId
+ - friendId
+ - storeInSession
+ - type
+ title: CreateReferralBlock
+ type: object
+ x-discriminator-value: createReferral
+ x-ms-discriminator-value: createReferral
+ ReserveCouponBlock:
+ description: A block that reserve a coupon during a customer session.
+ properties:
+ id:
+ description: Unique identifier for this block.
+ example: a1b2c3d4-e5f6-7890-abcd-ef1234567890
+ readOnly: true
+ type: string
+ type:
+ description: Identifies the block variant and determines which additional
+ properties are present in it.
+ type: string
+ tags:
+ description: Semantic labels attached to this block.
items:
- enum:
- - coupons
- - referrals
- - loyalty
- - giveaways
- - strikethrough
- - achievements
type: string
+ readOnly: true
type: array
- couponSettings:
- $ref: '#/components/schemas/CodeGeneratorSettings'
- couponReservationSettings:
- $ref: '#/components/schemas/CampaignTemplateCouponReservationSettings'
- referralSettings:
- $ref: '#/components/schemas/CodeGeneratorSettings'
- limits:
- description: The set of limits that operate for this campaign template.
+ required:
+ - type
+ title: ReserveCouponBlock
+ type: object
+ x-discriminator-value: reserveCoupon
+ x-ms-discriminator-value: reserveCoupon
+ CheckLoyaltyCardBlock:
+ description: A block that verifies whether a loyalty card is linked to the user's
+ profile.
+ properties:
+ id:
+ description: Unique identifier for this block.
+ example: a1b2c3d4-e5f6-7890-abcd-ef1234567890
+ readOnly: true
+ type: string
+ type:
+ description: Identifies the block variant and determines which additional
+ properties are present in it.
+ type: string
+ tags:
+ description: Semantic labels attached to this block.
items:
- $ref: '#/components/schemas/TemplateLimitConfig'
+ type: string
+ readOnly: true
type: array
- templateParams:
- description: Fields which can be used to replace values in a rule.
+ operator:
+ description: An indicator of how the block compares its elements.
+ enum:
+ - linked
+ - not(linked)
+ type: string
+ onFailure:
+ description: Promotion blocks evaluated when this block fails or returns
+ false.
items:
- $ref: '#/components/schemas/CampaignTemplateParams'
+ $ref: '#/components/schemas/Block'
type: array
- applicationsIds:
- description: A list of IDs of the Applications that are subscribed to this
- campaign template.
- example:
- - 1
- - 2
- - 3
- - 1
- - 2
- - 3
- items:
- format: int64
- type: integer
- type: array
- campaignCollections:
- description: The campaign collections from the blueprint campaign for the
- template.
+ required:
+ - operator
+ - type
+ title: CheckLoyaltyCardBlock
+ type: object
+ x-discriminator-value: checkLoyaltyCard
+ x-ms-discriminator-value: checkLoyaltyCard
+ CheckTierBlock:
+ description: A block that checks whether a user profile is a member of a specific
+ tier within a loyalty program.
+ properties:
+ id:
+ description: Unique identifier for this block.
+ example: a1b2c3d4-e5f6-7890-abcd-ef1234567890
+ readOnly: true
+ type: string
+ type:
+ description: Identifies the block variant and determines which additional
+ properties are present in it.
+ type: string
+ tags:
+ description: Semantic labels attached to this block.
items:
- $ref: '#/components/schemas/CampaignTemplateCollection'
+ type: string
+ readOnly: true
type: array
- defaultCampaignGroupId:
- description: The default campaign group ID.
- example: 42
- format: int64
- type: integer
- campaignType:
- default: advanced
- description: |
- The campaign type. Possible type values:
- - `cartItem`: Type of campaign that can apply effects only to cart items.
- - `advanced`: Type of campaign that can apply effects to customer sessions and cart items.
+ operator:
+ description: An indicator of how the block compares its elements.
enum:
- - cartItem
- - advanced
- example: advanced
- type: string
- campaignsCount:
- description: The number of Campaigns created from this template.
- example: 3
- format: int64
- type: integer
- updated:
- description: Timestamp of the most recent update to the campaign template
- or any of its elements.
- example: 2022-08-24T14:15:22Z
- format: date-time
+ - member
+ - not(member)
+ example: member
type: string
- updatedBy:
- description: Name of the user who last updated this campaign template, if
- available.
- example: Jane Doe
+ subledger:
+ description: The name of the subledger to check the balance of. Can be empty
+ if this block checks the loyalty program's main ledger balance instead
+ of a subledger.
+ example: ""
type: string
- validApplicationIds:
- description: The IDs of the Applications that are related to this entity.
- example:
- - 1
- - 2
- - 3
+ tier:
+ $ref: '#/components/schemas/CheckTierBlock_tier'
+ onFailure:
+ description: Promotion blocks evaluated when this block fails or returns
+ false.
items:
- format: int64
- type: integer
+ $ref: '#/components/schemas/Block'
type: array
- isUserFavorite:
- default: false
- description: A flag indicating whether the user marked the template as a
- favorite.
- example: false
- type: boolean
required:
- - accountId
- - applicationsIds
- - campaignType
- - created
- - description
- - id
- - instructions
- - name
- - reevaluateOnReturn
- - state
- - userId
- - validApplicationIds
+ - operator
+ - subledger
+ - tier
+ - type
+ title: CheckTierBlock
type: object
- NewCampaignTemplate:
+ x-discriminator-value: checkTier
+ x-ms-discriminator-value: checkTier
+ RedeemLoyaltyPointsBlock:
+ description: A block that deducts a specified amount of points from a customer's
+ loyalty program balance, optionally from a named subledger.
properties:
+ id:
+ description: Unique identifier for this block.
+ example: a1b2c3d4-e5f6-7890-abcd-ef1234567890
+ readOnly: true
+ type: string
+ type:
+ description: Identifies the block variant and determines which additional
+ properties are present in it.
+ type: string
+ tags:
+ description: Semantic labels attached to this block.
+ items:
+ type: string
+ readOnly: true
+ type: array
+ program:
+ $ref: '#/components/schemas/RedeemLoyaltyPointsBlock_program'
+ subledger:
+ description: The name of the subledger to deduct points from. Can be empty
+ if this block deducts from the loyalty program's main ledger instead of
+ a subledger.
+ example: main
+ type: string
+ value:
+ description: Number of points to deduct. Either a numeric scalar or a `{{expression}}`
+ string that resolves to a number at evaluation time.
+ type: object
name:
- description: The campaign template name.
- minLength: 1
+ description: A custom description recorded as the reason for the point deduction.
+ example: Purchase Deduction
+ type: string
+ onFailure:
+ description: Promotion blocks evaluated when this block fails or returns
+ false.
+ items:
+ $ref: '#/components/schemas/Block'
+ type: array
+ required:
+ - program
+ - subledger
+ - type
+ - value
+ title: RedeemLoyaltyPointsBlock
+ type: object
+ x-discriminator-value: redeemLoyaltyPoints
+ x-ms-discriminator-value: redeemLoyaltyPoints
+ RuleV2:
+ description: Shared fields common to all V2 rule types.
+ example:
+ blocks:
+ - null
+ - null
+ description: description
+ id: a1b2c3d4-e5f6-7890-abcd-ef1234567890
+ title: 10% off for loyalty members
+ parentId: parentId
+ properties:
+ id:
+ description: Unique identifier of the rule.
+ example: a1b2c3d4-e5f6-7890-abcd-ef1234567890
+ type: string
+ parentId:
+ description: ID of the parent rule, if any.
+ type: string
+ title:
+ description: A short description of the rule.
+ example: 10% off for loyalty members
type: string
description:
- description: Customer-facing text that explains the objective of the template.
+ description: A longer description of the rule.
type: string
- instructions:
- description: Customer-facing text that explains how to use the template.
- For example, you can use this property to explain the available attributes
- of this template, and how they can be modified when a user uses this template
- to create a new campaign.
+ blocks:
+ description: The condition and effect blocks that make up this rule.
+ items:
+ $ref: '#/components/schemas/Block'
+ type: array
+ required:
+ - blocks
+ - title
+ title: RuleV2
+ type: object
+ FilterSelectorStep:
+ description: Filters only items that match a predicate block.
+ properties:
+ type:
+ description: A step discriminator of type `filter`.
+ enum:
+ - filter
+ example: filter
type: string
- campaignAttributes:
- description: The campaign attributes that campaigns created from this template
- will have by default.
- properties: {}
- type: object
- couponAttributes:
- description: The campaign attributes that coupons created from this template
- will have by default.
- properties: {}
+ predicate:
+ description: Describes a part of the logic of the rule.
+ discriminator:
+ propertyName: type
type: object
- state:
- description: Only Campaign Templates in 'available' state may be used to
- create Campaigns.
+ required:
+ - predicate
+ - type
+ title: FilterSelectorStep
+ type: object
+ x-discriminator-value: filter
+ x-ms-discriminator-value: filter
+ SortSelectorStepField:
+ properties:
+ expression:
+ description: The attribute path the items are sorted by.
+ example: $Item.Price
+ type: string
+ direction:
+ description: The sort direction for this field.
enum:
- - draft
- - enabled
- - disabled
+ - asc
+ - desc
+ example: asc
type: string
- tags:
- description: A list of tags for the campaign template.
+ required:
+ - direction
+ - expression
+ title: SortSelectorStepField
+ type: object
+ SortSelectorStep:
+ description: Sorts items by one or more field expressions.
+ properties:
+ type:
+ description: A step discriminator of type `sort`.
+ enum:
+ - sort
+ example: sort
+ type: string
+ fields:
+ description: One or more fields to sort by, applied in order. Each field
+ has its own direction.
items:
- maxLength: 50
- minLength: 1
- type: string
- maxItems: 50
+ $ref: '#/components/schemas/SortSelectorStepField'
type: array
- reevaluateOnReturn:
- description: Indicates whether campaigns created from this template should
- be reevaluated when a customer returns an item.
+ required:
+ - fields
+ - type
+ title: SortSelectorStep
+ type: object
+ x-discriminator-value: sort
+ x-ms-discriminator-value: sort
+ SelectSelectorStep:
+ description: 'Picks a subset of the items by count, range, or exact position.
+ The `operator` determines which additional fields are required: - `many` selects
+ items from `from` (`start` or `end`) and is limited by `count`. - `between`
+ selects items between integer indices `from` and `to`. - `one` selects the
+ single item at `index`.'
+ properties:
+ type:
+ description: A step discriminator of type `select`.
+ enum:
+ - select
+ example: select
+ type: string
+ operator:
+ description: The selection operator applied to the items.
+ enum:
+ - many
+ - between
+ - one
+ example: many
+ type: string
+ from:
+ description: The starting value of the selection. For the `many` operator
+ this is the string `start` or `end`; for the `between` operator this is
+ an integer start index. No discriminator is needed since the string and
+ integer branches are distinguishable by JSON type alone.
+ type: object
+ to:
+ description: The end index for the `between` operator. The item at this
+ index is not included.
+ example: 7
+ format: int32
+ type: integer
+ count:
+ description: The maximum number of items to select for the `many` operator.
+ example: 5
+ format: int32
+ type: integer
+ index:
+ description: The exact position of the item to select for the `one` operator.
+ example: 0
+ format: int32
+ type: integer
+ partial:
+ description: Indicates if the step returns fewer items than requested when
+ the source list is shorter than the range needs. Always `true` for the
+ `many` and `between` operators; not present for `one`, which fails instead
+ of returning a partial result.
example: true
type: boolean
- features:
- description: A list of features for the campaign template.
+ required:
+ - operator
+ - type
+ title: SelectSelectorStep
+ type: object
+ x-discriminator-value: select
+ x-ms-discriminator-value: select
+ MapSelectorStep:
+ description: Transforms each item using an expression.
+ properties:
+ type:
+ description: A step discriminator of type `map`.
+ enum:
+ - map
+ example: map
+ type: string
+ expression:
+ description: The attribute path each item is mapped to.
+ example: $Item.Price
+ type: string
+ required:
+ - expression
+ - type
+ title: MapSelectorStep
+ type: object
+ x-discriminator-value: map
+ x-ms-discriminator-value: map
+ ReduceSelectorStep:
+ description: Aggregates items into a single value.
+ properties:
+ type:
+ description: A step discriminator of type `reduce`.
+ enum:
+ - reduce
+ example: reduce
+ type: string
+ operator:
+ description: |
+ The aggregation operator applied to the items produced by the preceding step:
+ - `max`, `min`, and `sum` operate on numeric values.
+ - `count` returns the number of items.
+ - `empty` reports whether the list is empty.
+ enum:
+ - max
+ - min
+ - sum
+ - count
+ - empty
+ example: sum
+ type: string
+ required:
+ - operator
+ - type
+ title: ReduceSelectorStep
+ type: object
+ x-discriminator-value: reduce
+ x-ms-discriminator-value: reduce
+ ReverseSelectorStep:
+ description: Reverses the order of the items.
+ properties:
+ type:
+ description: A step discriminator of type `reverse`.
+ enum:
+ - reverse
+ example: reverse
+ type: string
+ required:
+ - type
+ title: ReverseSelectorStep
+ type: object
+ x-discriminator-value: reverse
+ x-ms-discriminator-value: reverse
+ SelectorValueMapRef:
+ description: A reference to a value map by its internal ID.
+ properties:
+ id:
+ description: The internal ID of the referenced value map.
+ example: 12
+ format: int64
+ type: integer
+ required:
+ - id
+ title: SelectorValueMapRef
+ type: object
+ FilterAndMapValuesSelectorStep:
+ description: Keeps items that exist in the value map, and attaches each kept
+ item's mapped value.
+ properties:
+ type:
+ description: A step discriminator of type `filterAndMapValues`.
+ enum:
+ - filterAndMapValues
+ example: filterAndMapValues
+ type: string
+ valueMap:
+ $ref: '#/components/schemas/SelectorValueMapRef'
+ required:
+ - type
+ - valueMap
+ title: FilterAndMapValuesSelectorStep
+ type: object
+ x-discriminator-value: filterAndMapValues
+ x-ms-discriminator-value: filterAndMapValues
+ SelectorStep:
+ description: A single step in a selector item pipeline. The `type` field determines
+ the step variant.
+ discriminator:
+ propertyName: type
+ type: object
+ Selector:
+ description: A named pipeline of steps (filter, sort, map, etc.) that filters
+ or transforms a list of cart items. Replaces `cartItemFilter` [bindings](https://docs.talon.one/management-api#tag/Campaigns/operation/getRuleset.responses.200.bindings)
+ in V1 rulesets.
+ example:
+ name: discountedCartItems
+ source: $Session.CartItems
+ type: selector
+ steps:
+ - null
+ - null
+ properties:
+ name:
+ description: The name of the selector binding.
+ example: discountedCartItems
+ type: string
+ type:
+ description: A binding of type `selector`.
+ enum:
+ - selector
+ example: selector
+ type: string
+ source:
+ description: The attribute path the pipeline draws items from.
+ example: $Session.CartItems
+ type: string
+ steps:
+ description: Ordered pipeline steps applied to the source items.
items:
- enum:
- - coupons
- - referrals
- - loyalty
- - giveaways
- - strikethrough
- - achievements
- type: string
+ $ref: '#/components/schemas/SelectorStep'
type: array
- couponSettings:
- $ref: '#/components/schemas/CodeGeneratorSettings'
- couponReservationSettings:
- $ref: '#/components/schemas/CampaignTemplateCouponReservationSettings'
- referralSettings:
- $ref: '#/components/schemas/CodeGeneratorSettings'
- limits:
- description: The set of limits that will operate for this campaign template.
+ required:
+ - name
+ - source
+ - steps
+ - type
+ title: Selector
+ type: object
+ Bundle:
+ description: A named bundle definition consisting of selector sources with matching
+ constraints. Replaces `bundle` [bindings](https://docs.talon.one/management-api#tag/Campaigns/operation/getRuleset.responses.200.bindings)
+ in V1 rulesets.
+ example:
+ matchers:
+ - color
+ sources:
+ - '{{$mains}}'
+ - '{{$drinks}}'
+ counts:
+ - 1
+ - 2
+ name: meal_deal
+ id: 1b671a64-40d5-491e-99b0-da01ff1f3341
+ type: bundle
+ properties:
+ id:
+ description: An identifier derived from the bundle content.
+ example: 1b671a64-40d5-491e-99b0-da01ff1f3341
+ type: string
+ name:
+ description: The name of the bundle.
+ example: meal_deal
+ type: string
+ type:
+ description: A binding of type `bundle`.
+ enum:
+ - bundle
+ example: bundle
+ type: string
+ sources:
+ description: The selector sources of bundle items. Each source is expressed
+ as a `{{$selectorName}}` reference.
+ example:
+ - '{{$mains}}'
+ - '{{$drinks}}'
items:
- $ref: '#/components/schemas/TemplateLimitConfig'
+ type: string
type: array
- templateParams:
- description: Fields which can be used to replace values in a rule.
+ counts:
+ description: The number of items to retrieve from each corresponding source
+ in `sources`.
+ example:
+ - 1
+ - 2
items:
- $ref: '#/components/schemas/CampaignTemplateParams'
+ format: int64
+ type: integer
type: array
- campaignCollections:
- description: The campaign collections from the blueprint campaign for the
- template.
+ matchers:
+ description: Attribute names that the bundled items must share.
+ example:
+ - color
items:
- $ref: '#/components/schemas/CampaignTemplateCollection'
+ type: string
type: array
- defaultCampaignGroupId:
- description: The default campaign group ID.
+ required:
+ - counts
+ - id
+ - name
+ - sources
+ - type
+ title: Bundle
+ type: object
+ TemplateParameter:
+ description: A named parameter definition that exposes a configurable value
+ in a campaign template. Replaces `templateParameter` [bindings](https://docs.talon.one/management-api#tag/Campaigns/operation/getRuleset.responses.200.bindings)
+ in V1 rulesets.
+ example:
+ minValue: 0.0
+ maxValue: 10000.0
+ valueType: number
+ name: minCartTotal
+ description: Minimum cart total to trigger the campaign.
+ attribute: 42
+ value: "50"
+ properties:
+ name:
+ description: The name of the template parameter.
+ example: minCartTotal
+ type: string
+ value:
+ description: The parameter's bound value. Its type depends on the `valueType`.
+ example: "50"
+ type: object
+ valueType:
+ description: The data type of the value, derived from the bound expression
+ (for example `number`, `string`, `boolean`, `percent`, `time`, `(list
+ string)`, or `(list number)`).
+ example: number
+ type: string
+ minValue:
+ description: The minimum value allowed for this parameter.
+ example: 0.0
+ type: number
+ maxValue:
+ description: The maximum value allowed for this parameter.
+ example: 10000.0
+ type: number
+ description:
+ description: A human-readable description of the parameter shown when creating
+ campaigns from the template.
+ example: Minimum cart total to trigger the campaign.
+ type: string
+ attribute:
+ description: The ID of the attribute linked to this parameter. Omitted when
+ the parameter is not linked to an attribute.
example: 42
format: int64
type: integer
- campaignType:
- default: advanced
- description: |
- The campaign type. Possible type values:
- - `cartItem`: Type of campaign that can apply effects only to cart items.
- - `advanced`: Type of campaign that can apply effects to customer sessions and cart items.
- enum:
- - cartItem
- - advanced
- example: advanced
- type: string
required:
- - campaignType
- description
- - instructions
- name
- - state
- type: object
- ExperimentVariant:
- example:
- created: 2020-06-10T09:05:27.993483Z
- isPrimary: true
- name: Variant A
- ruleset:
- rbVersion: v2
- created: 2020-06-10T09:05:27.993483Z
- campaignId: 320
- bindings: []
- activatedAt: 2000-01-23T04:56:07.000+00:00
- activate: true
- rules:
- - condition:
- - and
- - - couponValid
- effects:
- - catch
- - - noop
- - - setDiscount
- - 10% off
- - - '*'
- - - "."
- - Session
- - Total
- - - /
- - 10
- - 100
- bindings:
- - attributeId: 100
- minValue: 0.0
- expression:
- - string1
- - string2
- maxValue: 19.9
- valueType: string
- name: my property
- description: This is a template parameter of type `number`.
- type: templateParameter
- - attributeId: 100
- minValue: 0.0
- expression:
- - string1
- - string2
- maxValue: 19.9
- valueType: string
- name: my property
- description: This is a template parameter of type `number`.
- type: templateParameter
- description: Creates a discount when a coupon is valid
- id: 7fa800a8-ac8d-4792-85dc-c4650dcc8f23
- title: Give discount via coupon
- parentId: 7fa800a8-ac8d-4792-85dc-c4650dcc8f23
- - condition:
- - and
- - - couponValid
- effects:
- - catch
- - - noop
- - - setDiscount
- - 10% off
- - - '*'
- - - "."
- - Session
- - Total
- - - /
- - 10
- - 100
- bindings:
- - attributeId: 100
- minValue: 0.0
- expression:
- - string1
- - string2
- maxValue: 19.9
- valueType: string
- name: my property
- description: This is a template parameter of type `number`.
- type: templateParameter
- - attributeId: 100
- minValue: 0.0
- expression:
- - string1
- - string2
- maxValue: 19.9
- valueType: string
- name: my property
- description: This is a template parameter of type `number`.
- type: templateParameter
- description: Creates a discount when a coupon is valid
- id: 7fa800a8-ac8d-4792-85dc-c4650dcc8f23
- title: Give discount via coupon
- parentId: 7fa800a8-ac8d-4792-85dc-c4650dcc8f23
- id: 6
- strikethroughRules:
- - condition:
- - and
- - - couponValid
- effects:
- - catch
- - - noop
- - - setDiscount
- - 10% off
- - - '*'
- - - "."
- - Session
- - Total
- - - /
- - 10
- - 100
- bindings:
- - attributeId: 100
- minValue: 0.0
- expression:
- - string1
- - string2
- maxValue: 19.9
- valueType: string
- name: my property
- description: This is a template parameter of type `number`.
- type: templateParameter
- - attributeId: 100
- minValue: 0.0
- expression:
- - string1
- - string2
- maxValue: 19.9
- valueType: string
- name: my property
- description: This is a template parameter of type `number`.
- type: templateParameter
- description: Creates a discount when a coupon is valid
- id: 7fa800a8-ac8d-4792-85dc-c4650dcc8f23
- title: Give discount via coupon
- parentId: 7fa800a8-ac8d-4792-85dc-c4650dcc8f23
- - condition:
- - and
- - - couponValid
- effects:
- - catch
- - - noop
- - - setDiscount
- - 10% off
- - - '*'
- - - "."
- - Session
- - Total
- - - /
- - 10
- - 100
- bindings:
- - attributeId: 100
- minValue: 0.0
- expression:
- - string1
- - string2
- maxValue: 19.9
- valueType: string
- name: my property
- description: This is a template parameter of type `number`.
- type: templateParameter
- - attributeId: 100
- minValue: 0.0
- expression:
- - string1
- - string2
- maxValue: 19.9
- valueType: string
- name: my property
- description: This is a template parameter of type `number`.
- type: templateParameter
- description: Creates a discount when a coupon is valid
- id: 7fa800a8-ac8d-4792-85dc-c4650dcc8f23
- title: Give discount via coupon
- parentId: 7fa800a8-ac8d-4792-85dc-c4650dcc8f23
- templateId: 3
- userId: 388
- weight: 12
- experimentId: 10
+ - value
+ - valueType
+ title: TemplateParameter
+ type: object
+ RulesetV2:
+ description: Ruleset in the V2 JSON block format.
+ example:
+ promotionRules:
+ - blocks:
+ - null
+ - null
+ description: description
+ id: a1b2c3d4-e5f6-7890-abcd-ef1234567890
+ title: 10% off for loyalty members
+ parentId: parentId
+ - blocks:
+ - null
+ - null
+ description: description
+ id: a1b2c3d4-e5f6-7890-abcd-ef1234567890
+ title: 10% off for loyalty members
+ parentId: parentId
+ created: 2000-01-23T04:56:07.000+00:00
+ campaignId: 320
+ activatedAt: 2000-01-23T04:56:07.000+00:00
+ bundles:
+ - matchers:
+ - color
+ sources:
+ - '{{$mains}}'
+ - '{{$drinks}}'
+ counts:
+ - 1
+ - 2
+ name: meal_deal
+ id: 1b671a64-40d5-491e-99b0-da01ff1f3341
+ type: bundle
+ - matchers:
+ - color
+ sources:
+ - '{{$mains}}'
+ - '{{$drinks}}'
+ counts:
+ - 1
+ - 2
+ name: meal_deal
+ id: 1b671a64-40d5-491e-99b0-da01ff1f3341
+ type: bundle
id: 6
+ strikethroughRules:
+ - blocks:
+ - null
+ - null
+ description: description
+ id: a1b2c3d4-e5f6-7890-abcd-ef1234567890
+ title: 10% off for loyalty members
+ parentId: parentId
+ - blocks:
+ - null
+ - null
+ description: description
+ id: a1b2c3d4-e5f6-7890-abcd-ef1234567890
+ title: 10% off for loyalty members
+ parentId: parentId
+ templateId: 3
+ selectors:
+ - name: discountedCartItems
+ source: $Session.CartItems
+ type: selector
+ steps:
+ - null
+ - null
+ - name: discountedCartItems
+ source: $Session.CartItems
+ type: selector
+ steps:
+ - null
+ - null
+ userId: 385
+ parameters:
+ - minValue: 0.0
+ maxValue: 10000.0
+ valueType: number
+ name: minCartTotal
+ description: Minimum cart total to trigger the campaign.
+ attribute: 42
+ value: "50"
+ - minValue: 0.0
+ maxValue: 10000.0
+ valueType: number
+ name: minCartTotal
+ description: Minimum cart total to trigger the campaign.
+ attribute: 42
+ value: "50"
properties:
id:
- description: The internal ID of this entity.
+ description: Internal ID of this entity.
example: 6
format: int64
+ readOnly: true
type: integer
created:
description: The time this entity was created.
- example: 2020-06-10T09:05:27.993483Z
format: date-time
+ readOnly: true
type: string
- name:
- example: Variant A
- type: string
- experimentId:
- example: 10
+ userId:
+ description: The ID of the user that created this ruleset.
+ example: 385
format: int64
+ readOnly: true
type: integer
- ruleset:
- $ref: '#/components/schemas/Ruleset'
- weight:
- example: 12
+ campaignId:
+ description: The ID of the campaign that owns this entity.
+ example: 320
format: int64
+ readOnly: true
type: integer
- isPrimary:
- example: true
- type: boolean
- required:
- - created
- - id
- - isPrimary
- - name
- type: object
- Experiment:
- example:
- deletedat: 2000-01-23T04:56:07.000+00:00
- created: 2020-06-10T09:05:27.993483Z
- campaign:
- type: advanced
- templateId: 3
- customEffectCount: 0
- activeRevisionId: 6
- features:
- - coupons
- - referrals
- createdLoyaltyPointsCount: 9.0
- storesImported: true
- couponSettings:
- couponPattern: SUMMER-####-####
- validCharacters:
- - A
- - B
- - C
- - D
- - E
- - F
- - G
- - H
- - I
- - J
- - K
- - L
- - M
- - "N"
- - O
- - P
- - Q
- - R
- - S
- - T
- - U
- - V
- - W
- - X
- - "Y"
- - Z
- - "0"
- - "1"
- - "2"
- - "3"
- - "4"
- - "5"
- - "6"
- - "7"
- - "8"
- - "9"
- experimentId: 1
- id: 4
- state: enabled
- couponAttributes: '{}'
- reservecouponEffectCount: 9
- updatedBy: Jane Doe
- frontendState: running
- created: 2020-06-10T09:05:27.993483Z
- referralCreationCount: 8
- stageRevision: false
- couponRedemptionCount: 163
- couponCreationCount: 16
- version: 6
- campaignGroups:
- - 1
- - 3
- tags:
- - summer
- discountEffectCount: 343
- budgets:
- - limit: 1000.0
- action: createCoupon
- counter: 42.0
- - limit: 1000.0
- action: createCoupon
- counter: 42.0
- redeemedLoyaltyPointsCount: 8.0
- name: Summer promotions
- valueMapsIds:
- - 100
- - 215
- applicationId: 322
- updated: 2000-01-23T04:56:07.000+00:00
- callApiEffectCount: 0
- createdLoyaltyPointsEffectCount: 2
- discountCount: 288.0
- revisionFrontendState: revised
- description: Campaign for all summer 2021 promotions
- activeRevisionVersionId: 6
- currentRevisionVersionId: 6
- startTime: 2021-07-20T22:00:00Z
- currentRevisionId: 6
- limits:
- - period: yearly
- entities:
- - Coupon
- limit: 1000.0
- action: createCoupon
- - period: yearly
- entities:
- - Coupon
- limit: 1000.0
- action: createCoupon
- activeRulesetId: 6
- reevaluateOnReturn: true
- userId: 388
- awardedGiveawaysCount: 9
- redeemedLoyaltyPointsEffectCount: 9
- linkedStoreIds:
- - 1
- - 2
- - 3
- createdBy: John Doe
- addFreeItemEffectCount: 0
- referralSettings:
- couponPattern: SUMMER-####-####
- validCharacters:
- - A
- - B
- - C
- - D
- - E
- - F
- - G
- - H
- - I
- - J
- - K
- - L
- - M
- - "N"
- - O
- - P
- - Q
- - R
- - S
- - T
- - U
- - V
- - W
- - X
- - "Y"
- - Z
- - "0"
- - "1"
- - "2"
- - "3"
- - "4"
- - "5"
- - "6"
- - "7"
- - "8"
- - "9"
- attributes: '{}'
- lastActivity: 2022-11-10T23:00:00Z
- endTime: 2021-09-22T22:00:00Z
- referralRedemptionCount: 3
- id: 6
- state: enabled
- variants:
- - created: 2020-06-10T09:05:27.993483Z
- isPrimary: true
- name: Variant A
- ruleset:
- rbVersion: v2
- created: 2020-06-10T09:05:27.993483Z
- campaignId: 320
- bindings: []
- activatedAt: 2000-01-23T04:56:07.000+00:00
- activate: true
- rules:
- - condition:
- - and
- - - couponValid
- effects:
- - catch
- - - noop
- - - setDiscount
- - 10% off
- - - '*'
- - - "."
- - Session
- - Total
- - - /
- - 10
- - 100
- bindings:
- - attributeId: 100
- minValue: 0.0
- expression:
- - string1
- - string2
- maxValue: 19.9
- valueType: string
- name: my property
- description: This is a template parameter of type `number`.
- type: templateParameter
- - attributeId: 100
- minValue: 0.0
- expression:
- - string1
- - string2
- maxValue: 19.9
- valueType: string
- name: my property
- description: This is a template parameter of type `number`.
- type: templateParameter
- description: Creates a discount when a coupon is valid
- id: 7fa800a8-ac8d-4792-85dc-c4650dcc8f23
- title: Give discount via coupon
- parentId: 7fa800a8-ac8d-4792-85dc-c4650dcc8f23
- - condition:
- - and
- - - couponValid
- effects:
- - catch
- - - noop
- - - setDiscount
- - 10% off
- - - '*'
- - - "."
- - Session
- - Total
- - - /
- - 10
- - 100
- bindings:
- - attributeId: 100
- minValue: 0.0
- expression:
- - string1
- - string2
- maxValue: 19.9
- valueType: string
- name: my property
- description: This is a template parameter of type `number`.
- type: templateParameter
- - attributeId: 100
- minValue: 0.0
- expression:
- - string1
- - string2
- maxValue: 19.9
- valueType: string
- name: my property
- description: This is a template parameter of type `number`.
- type: templateParameter
- description: Creates a discount when a coupon is valid
- id: 7fa800a8-ac8d-4792-85dc-c4650dcc8f23
- title: Give discount via coupon
- parentId: 7fa800a8-ac8d-4792-85dc-c4650dcc8f23
- id: 6
- strikethroughRules:
- - condition:
- - and
- - - couponValid
- effects:
- - catch
- - - noop
- - - setDiscount
- - 10% off
- - - '*'
- - - "."
- - Session
- - Total
- - - /
- - 10
- - 100
- bindings:
- - attributeId: 100
- minValue: 0.0
- expression:
- - string1
- - string2
- maxValue: 19.9
- valueType: string
- name: my property
- description: This is a template parameter of type `number`.
- type: templateParameter
- - attributeId: 100
- minValue: 0.0
- expression:
- - string1
- - string2
- maxValue: 19.9
- valueType: string
- name: my property
- description: This is a template parameter of type `number`.
- type: templateParameter
- description: Creates a discount when a coupon is valid
- id: 7fa800a8-ac8d-4792-85dc-c4650dcc8f23
- title: Give discount via coupon
- parentId: 7fa800a8-ac8d-4792-85dc-c4650dcc8f23
- - condition:
- - and
- - - couponValid
- effects:
- - catch
- - - noop
- - - setDiscount
- - 10% off
- - - '*'
- - - "."
- - Session
- - Total
- - - /
- - 10
- - 100
- bindings:
- - attributeId: 100
- minValue: 0.0
- expression:
- - string1
- - string2
- maxValue: 19.9
- valueType: string
- name: my property
- description: This is a template parameter of type `number`.
- type: templateParameter
- - attributeId: 100
- minValue: 0.0
- expression:
- - string1
- - string2
- maxValue: 19.9
- valueType: string
- name: my property
- description: This is a template parameter of type `number`.
- type: templateParameter
- description: Creates a discount when a coupon is valid
- id: 7fa800a8-ac8d-4792-85dc-c4650dcc8f23
- title: Give discount via coupon
- parentId: 7fa800a8-ac8d-4792-85dc-c4650dcc8f23
- templateId: 3
- userId: 388
- weight: 12
- experimentId: 10
- id: 6
- - created: 2020-06-10T09:05:27.993483Z
- isPrimary: true
- name: Variant A
- ruleset:
- rbVersion: v2
- created: 2020-06-10T09:05:27.993483Z
- campaignId: 320
- bindings: []
- activatedAt: 2000-01-23T04:56:07.000+00:00
- activate: true
- rules:
- - condition:
- - and
- - - couponValid
- effects:
- - catch
- - - noop
- - - setDiscount
- - 10% off
- - - '*'
- - - "."
- - Session
- - Total
- - - /
- - 10
- - 100
- bindings:
- - attributeId: 100
- minValue: 0.0
- expression:
- - string1
- - string2
- maxValue: 19.9
- valueType: string
- name: my property
- description: This is a template parameter of type `number`.
- type: templateParameter
- - attributeId: 100
- minValue: 0.0
- expression:
- - string1
- - string2
- maxValue: 19.9
- valueType: string
- name: my property
- description: This is a template parameter of type `number`.
- type: templateParameter
- description: Creates a discount when a coupon is valid
- id: 7fa800a8-ac8d-4792-85dc-c4650dcc8f23
- title: Give discount via coupon
- parentId: 7fa800a8-ac8d-4792-85dc-c4650dcc8f23
- - condition:
- - and
- - - couponValid
- effects:
- - catch
- - - noop
- - - setDiscount
- - 10% off
- - - '*'
- - - "."
- - Session
- - Total
- - - /
- - 10
- - 100
- bindings:
- - attributeId: 100
- minValue: 0.0
- expression:
- - string1
- - string2
- maxValue: 19.9
- valueType: string
- name: my property
- description: This is a template parameter of type `number`.
- type: templateParameter
- - attributeId: 100
- minValue: 0.0
- expression:
- - string1
- - string2
- maxValue: 19.9
- valueType: string
- name: my property
- description: This is a template parameter of type `number`.
- type: templateParameter
- description: Creates a discount when a coupon is valid
- id: 7fa800a8-ac8d-4792-85dc-c4650dcc8f23
- title: Give discount via coupon
- parentId: 7fa800a8-ac8d-4792-85dc-c4650dcc8f23
- id: 6
- strikethroughRules:
- - condition:
- - and
- - - couponValid
- effects:
- - catch
- - - noop
- - - setDiscount
- - 10% off
- - - '*'
- - - "."
- - Session
- - Total
- - - /
- - 10
- - 100
- bindings:
- - attributeId: 100
- minValue: 0.0
- expression:
- - string1
- - string2
- maxValue: 19.9
- valueType: string
- name: my property
- description: This is a template parameter of type `number`.
- type: templateParameter
- - attributeId: 100
- minValue: 0.0
- expression:
- - string1
- - string2
- maxValue: 19.9
- valueType: string
- name: my property
- description: This is a template parameter of type `number`.
- type: templateParameter
- description: Creates a discount when a coupon is valid
- id: 7fa800a8-ac8d-4792-85dc-c4650dcc8f23
- title: Give discount via coupon
- parentId: 7fa800a8-ac8d-4792-85dc-c4650dcc8f23
- - condition:
- - and
- - - couponValid
- effects:
- - catch
- - - noop
- - - setDiscount
- - 10% off
- - - '*'
- - - "."
- - Session
- - Total
- - - /
- - 10
- - 100
- bindings:
- - attributeId: 100
- minValue: 0.0
- expression:
- - string1
- - string2
- maxValue: 19.9
- valueType: string
- name: my property
- description: This is a template parameter of type `number`.
- type: templateParameter
- - attributeId: 100
- minValue: 0.0
- expression:
- - string1
- - string2
- maxValue: 19.9
- valueType: string
- name: my property
- description: This is a template parameter of type `number`.
- type: templateParameter
- description: Creates a discount when a coupon is valid
- id: 7fa800a8-ac8d-4792-85dc-c4650dcc8f23
- title: Give discount via coupon
- parentId: 7fa800a8-ac8d-4792-85dc-c4650dcc8f23
- templateId: 3
- userId: 388
- weight: 12
- experimentId: 10
- id: 6
- applicationId: 322
- isVariantAssignmentExternal: true
- activated: 2000-01-23T04:56:07.000+00:00
- properties:
- id:
- description: The internal ID of this entity.
- example: 6
+ templateId:
+ description: The ID of the campaign template that owns this entity.
+ example: 3
format: int64
+ readOnly: true
type: integer
- created:
- description: The time this entity was created.
- example: 2020-06-10T09:05:27.993483Z
+ activatedAt:
+ description: Timestamp indicating when this ruleset was activated.
format: date-time
+ readOnly: true
type: string
- applicationId:
- description: The ID of the Application that owns this entity.
- example: 322
+ promotionRules:
+ description: Set of promotion rules.
+ items:
+ $ref: '#/components/schemas/RuleV2'
+ type: array
+ strikethroughRules:
+ description: Set of strikethrough rules.
+ items:
+ $ref: '#/components/schemas/RuleV2'
+ type: array
+ selectors:
+ description: Variable bindings of type selector.
+ items:
+ $ref: '#/components/schemas/Selector'
+ readOnly: true
+ type: array
+ bundles:
+ description: Variable bindings of type bundle.
+ items:
+ $ref: '#/components/schemas/Bundle'
+ readOnly: true
+ type: array
+ parameters:
+ description: Variable bindings of type template parameter.
+ items:
+ $ref: '#/components/schemas/TemplateParameter'
+ readOnly: true
+ type: array
+ required:
+ - promotionRules
+ title: RulesetV2
+ type: object
+ UpdateCouponBatch:
+ example:
+ expiryDate: 2023-08-24T14:15:22Z
+ usageLimit: 100
+ reservationLimit: 45
+ attributes: '{}'
+ batchID: batchID
+ discountLimit: 30.0
+ startDate: 2020-01-24T14:15:22Z
+ properties:
+ usageLimit:
+ description: |
+ The number of times the coupon code can be redeemed. `0` means unlimited redemptions but any campaign usage limits will still apply.
+ example: 100
format: int64
+ maximum: 999999
+ minimum: 0
type: integer
- isVariantAssignmentExternal:
+ discountLimit:
description: |
- The source of the assignment. - false - The variant assignment is handled internally by Talon.One. - true - The variant assignment is handled externally.
- type: boolean
- campaign:
- $ref: '#/components/schemas/Campaign'
- activated:
+ The total discount value that the code can give. Typically used to represent a gift card value.
+ example: 30.0
+ maximum: 1E+15
+ minimum: 0
+ type: number
+ reservationLimit:
description: |
- The date and time the experiment was activated.
+ The number of reservations that can be made with this coupon code.
+ example: 45
+ format: int64
+ maximum: 999999
+ minimum: 0
+ type: integer
+ startDate:
+ description: Timestamp at which point the coupon becomes valid.
+ example: 2020-01-24T14:15:22Z
format: date-time
type: string
- state:
- default: disabled
- description: |
- A disabled experiment is not evaluated for rules or coupons.
- enum:
- - enabled
- - disabled
- - archived
- example: enabled
+ expiryDate:
+ description: Expiration date of the coupon. Coupon never expires if this
+ is omitted.
+ example: 2023-08-24T14:15:22Z
+ format: date-time
type: string
- variants:
- items:
- $ref: '#/components/schemas/ExperimentVariant'
- type: array
- deletedat:
+ attributes:
description: |
- The date and time the experiment was deleted.
- format: date-time
+ Optional property to set the value of custom coupon attributes. They are defined in the Campaign Manager,
+ see [Managing attributes](https://docs.talon.one/docs/product/account/dev-tools/managing-attributes).
+
+ Coupon attributes can also be set to _mandatory_ in your Application [settings](https://docs.talon.one/docs/product/applications/using-attributes#making-attributes-mandatory).
+ If your Application uses mandatory attributes, you must use this property to set their value.
+ properties: {}
+ type: object
+ batchID:
+ description: The ID of the batch the coupon(s) belong to.
+ title: Batch ID
type: string
- required:
- - applicationId
- - created
- - id
- - state
type: object
- NewExperiment:
+ NewCoupons:
+ example:
+ recipientIntegrationId: URNGV8294NV
+ uniquePrefix: ""
+ implicitlyReserved: false
+ supportRequestNote: Approved as compensation for the delayed order.
+ usageLimit: 100
+ supportRequestId: 42
+ numberOfCoupons: 1
+ batchId: 3rdparty_fjsieoaa
+ expiryDate: 2023-08-24T14:15:22Z
+ couponPattern: SUMMER-#####
+ validCharacters:
+ - A
+ - B
+ - G
+ - "Y"
+ reservationLimit: 45
+ attributes:
+ venueId: 12
+ discountLimit: 30.0
+ startDate: 2020-01-24T14:15:22Z
+ limits:
+ - period: yearly
+ entities:
+ - Coupon
+ limit: 1000.0
+ action: createCoupon
+ - period: yearly
+ entities:
+ - Coupon
+ limit: 1000.0
+ action: createCoupon
+ isReservationMandatory: false
properties:
- isVariantAssignmentExternal:
+ usageLimit:
description: |
- The source of the assignment. - false - The variant assignment is handled internally by Talon.One. - true - The variant assignment is handled externally.
- type: boolean
- campaign:
- $ref: '#/components/schemas/NewCampaign'
- required:
- - campaign
- - isVariantAssignmentExternal
- type: object
- ExperimentListResultsRequest:
- properties:
- experimentIds:
- items:
- format: int64
- type: integer
- type: array
- required:
- - experimentIds
- type: object
- ExperimentVariantResult:
- properties:
- variantId:
- description: The ID of the variant.
- example: 1
- format: int64
- type: integer
- variantName:
- description: The name of the variant.
- example: Variant A
- type: string
- variantWeight:
- description: The weight of the variant.
- example: 50
+ The number of times the coupon code can be redeemed. `0` means unlimited redemptions but any campaign usage limits will still apply.
+ example: 100
format: int64
+ maximum: 999999
+ minimum: 0
type: integer
- isWinner:
- description: Calculated flag if the variant is the winner.
- example: true
- type: boolean
- totalRevenue:
- description: The total, pre-discount value of all items purchased in a customer
- session.
- example: 100.0
- type: number
- sessionsCount:
- description: The number of all closed sessions.
- example: 100.0
- type: number
- avgItemsPerSession:
- description: The number of items from sessions divided by the number of
- sessions.
- example: 100.0
- type: number
- avgSessionValue:
- description: The average customer session value, calculated by dividing
- the revenue value by the number of sessions.
- example: 100.0
- type: number
- avgDiscountedSessionValue:
- description: The average customer session value, calculated by dividing
- the revenue value by the number of sessions.
- example: 100.0
- type: number
- totalDiscounts:
- description: The total value of discounts given for cart items in sessions.
- example: 10.0
- type: number
- couponsCount:
- description: The number of times a coupon was successfully redeemed in sessions.
- example: 12.0
- type: number
- type: object
- ExperimentVariantResultConfidence:
- properties:
- avgSessionValue:
- description: The calculated confidence value of the average customer session
- value.
- example: 100.0
- type: number
- avgDiscountedSessionValue:
- description: The calculated confidence value of the average customer discounted
- session value.
- example: 100.0
- type: number
- avgItemsPerSession:
- description: The calculated confidence value of the number of items from
- sessions value.
- example: 100.0
+ discountLimit:
+ description: |
+ The total discount value that the code can give. Typically used to represent a gift card value.
+ example: 30.0
+ maximum: 1E+15
+ minimum: 0
type: number
- required:
- - avgDiscountedSessionValue
- - avgItemsPerSession
- - avgSessionValue
- type: object
- ExperimentResults:
- properties:
- variants:
- items:
- $ref: '#/components/schemas/ExperimentVariantResult'
- type: array
- confidence:
- $ref: '#/components/schemas/ExperimentVariantResultConfidence'
- required:
- - confidence
- - variants
- type: object
- ExperimentResult:
- properties:
- variants:
- items:
- $ref: '#/components/schemas/ExperimentVariantResult'
- type: array
- confidence:
- $ref: '#/components/schemas/ExperimentVariantResultConfidence'
- experimentId:
- example: 1
- format: int64
- type: integer
- required:
- - confidence
- - experimentId
- - variants
- type: object
- ExperimentListResults:
- properties:
- results:
- items:
- $ref: '#/components/schemas/ExperimentResult'
- type: array
- type: object
- UpdateExperiment:
- properties:
- isVariantAssignmentExternal:
+ reservationLimit:
description: |
- The source of the assignment. - false - The variant assignment is handled internally by Talon.One. - true - The variant assignment is handled externally.
- type: boolean
- campaign:
- $ref: '#/components/schemas/UpdateCampaign'
- required:
- - campaign
- - isVariantAssignmentExternal
- type: object
- UpdateExperimentVariant:
- properties:
- id:
- example: 10
+ The number of reservations that can be made with this coupon code.
+ example: 45
format: int64
+ maximum: 999999
+ minimum: 0
type: integer
- name:
- description: The name of this variant.
- example: Variant A
- maxLength: 255
- minLength: 1
+ startDate:
+ description: Timestamp at which point the coupon becomes valid.
+ example: 2020-01-24T14:15:22Z
+ format: date-time
type: string
- ruleset:
- $ref: '#/components/schemas/NewRuleset'
- weight:
- description: The percentage split of this variant. The sum of all variant
- percentages must be 100.
- example: 13
- format: int64
- maximum: 99
- minimum: 1
- type: integer
- required:
- - id
- - name
- - ruleset
- - weight
- type: object
- UpdateExperimentVariantArray:
- properties:
- variants:
- description: Array of experiment variants to update
+ expiryDate:
+ description: Expiration date of the coupon. Coupon never expires if this
+ is omitted.
+ example: 2023-08-24T14:15:22Z
+ format: date-time
+ type: string
+ limits:
+ description: |
+ Limits configuration for a coupon. These limits will override the limits
+ set from the campaign.
+
+ **Note:** Only usable when creating a single coupon which is not tied to a specific recipient.
+ Only per-profile limits are allowed to be configured.
items:
- $ref: '#/components/schemas/UpdateExperimentVariant'
+ $ref: '#/components/schemas/LimitConfig'
type: array
- required:
- - variants
- type: object
- NewExperimentVariant:
- properties:
- name:
- description: The name of this variant.
- example: Variant A
- maxLength: 255
- minLength: 1
- type: string
- weight:
- description: The percentage split of this variant. The sum of all variant
- percentages must be 100.
- example: 13
+ numberOfCoupons:
+ description: The number of new coupon codes to generate for the campaign.
+ Must be at least 1.
+ example: 1
format: int64
- maximum: 99
- minimum: 1
type: integer
- ruleset:
- $ref: '#/components/schemas/NewRuleset'
- isPrimary:
- example: true
- type: boolean
- required:
- - isPrimary
- - name
- - ruleset
- - weight
- type: object
- NewExperimentVariantArray:
- properties:
- variants:
- description: Array of experiment variants to create
- items:
- $ref: '#/components/schemas/NewExperimentVariant'
- type: array
- required:
- - variants
- type: object
- UpdateExperimentVariantName:
- properties:
- name:
- description: The name of the variant.
- example: Variant A
- maxLength: 255
- minLength: 1
- type: string
- required:
- - name
- type: object
- ExperimentCampaignCopy:
- properties:
- name:
- description: Name of the copied campaign (Defaults to "Copy of original
- campaign name").
- example: Copy of Summer promotions
- type: string
- description:
- description: A detailed description of the campaign.
- example: Campaign for all summer 2021 promotions
- title: Campaign Description
+ batchId:
+ description: The batch ID that all coupons created by the request will bear.
+ If omitted, a batch ID is generated automatically.
+ example: 3rdparty_fjsieoaa
type: string
- startTime:
- description: Timestamp when the campaign will become active.
- example: 2021-06-01T09:00:27.993483Z
- format: date-time
+ uniquePrefix:
+ description: |
+ **DEPRECATED** To create more than 20,000 coupons in one request, use [Create coupons asynchronously](https://docs.talon.one/management-api#tag/Coupons/operation/createCouponsAsync) endpoint.
+ example: ""
+ title: Coupon code unique prefix
type: string
- endTime:
- description: Timestamp when the campaign will become inactive.
- example: 2021-09-10T01:00:00.993483Z
- format: date-time
+ x-deprecated: true
+ attributes:
+ description: Arbitrary properties associated with this item.
+ example:
+ venueId: 12
+ properties: {}
+ type: object
+ recipientIntegrationId:
+ description: The integration ID for this coupon's beneficiary's profile.
+ example: URNGV8294NV
+ maxLength: 1000
+ title: Receiving customer profile integration ID
type: string
- tags:
- description: A list of tags for the campaign.
+ validCharacters:
+ description: |
+ List of characters used to generate the random parts of a code. By default,
+ the list of characters is equivalent to the `[A-Z, 0-9]` regular expression.
example:
- - Summer
- - Shoes
+ - A
+ - B
+ - G
+ - "Y"
items:
- maxLength: 50
- minLength: 1
type: string
- maxItems: 50
type: array
- evaluationGroupId:
- description: The ID of the campaign evaluation group the campaign belongs
- to.
- example: 2
- format: int64
- type: integer
- type: object
- ExperimentCopy:
- properties:
- targetApplicationId:
+ couponPattern:
description: |
- The ID of the Application to copy the experiment. It is displayed in your Talon.One deployment URL.
+ The pattern used to generate coupon codes.
+ The character `#` is a placeholder and is replaced by a random character from the `validCharacters` set.
+ example: SUMMER-#####
+ maxLength: 100
+ minLength: 3
+ type: string
+ isReservationMandatory:
+ default: false
+ description: An indication of whether the code can be redeemed only if it
+ has been reserved first.
+ example: false
+ title: Is reservation mandatory
+ type: boolean
+ implicitlyReserved:
+ description: An indication of whether the coupon is implicitly reserved
+ for all customers.
+ example: false
+ title: Is coupon implicitly reserved for all customers
+ type: boolean
+ supportRequestId:
+ description: The identifier of the support request to link to the coupon
+ creation. The request must exist and not yet be processed.
+ example: 42
format: int64
type: integer
- experiment:
- $ref: '#/components/schemas/ExperimentCopy_experiment'
+ supportRequestNote:
+ description: A note recorded when the linked support request is approved
+ or rejected. Applied when `supportRequestId` is provided.
+ example: Approved as compensation for the delayed order.
+ type: string
required:
- - experiment
- - targetApplicationId
+ - numberOfCoupons
+ - usageLimit
type: object
- PromoteExperiment:
+ NewCouponsForMultipleRecipients:
+ example:
+ expiryDate: 2023-08-24T14:15:22Z
+ couponPattern: SUMMER-#####
+ validCharacters:
+ - A
+ - B
+ - C
+ - D
+ - E
+ - F
+ - G
+ - H
+ - I
+ - J
+ - K
+ - L
+ - M
+ - "N"
+ - O
+ - P
+ - Q
+ - R
+ - S
+ - T
+ - U
+ - V
+ - W
+ - X
+ - "Y"
+ - Z
+ usageLimit: 100
+ reservationLimit: 45
+ recipientsIntegrationIds:
+ - URNGV8294NV
+ - BZGGC2454PA
+ attributes:
+ venueId: 12
+ batchId: 3rdparty_fjsieoaa
+ discountLimit: 30.0
+ startDate: 2020-01-24T14:15:22Z
properties:
- targetApplicationId:
+ usageLimit:
description: |
- The ID of the Application to copy the experiment. It is displayed in your Talon.One deployment URL.
+ The number of times the coupon code can be redeemed. `0` means unlimited redemptions but any campaign usage limits will still apply.
+ example: 100
format: int64
+ maximum: 999999
+ minimum: 0
type: integer
- variantId:
+ discountLimit:
description: |
- The ID of the Experiment Variant to build the new campaign.
+ The total discount value that the code can give. Typically used to represent a gift card value.
+ example: 30.0
+ maximum: 1E+15
+ minimum: 0
+ type: number
+ reservationLimit:
+ description: |
+ The number of reservations that can be made with this coupon code.
+ example: 45
format: int64
+ maximum: 999999
+ minimum: 0
type: integer
- disableExperiment:
- description: |
- Force disable the experiment.
- type: boolean
- campaign:
- $ref: '#/components/schemas/ExperimentCampaignCopy'
- required:
- - campaign
- - targetApplicationId
- - variantId
- type: object
- ExperimentVerdict:
- properties:
- winnerVariantName:
- description: The name of the winning variant. If no variant shows a statistically
- significant advantage on key business metrics, return 'Inconclusive'.
+ startDate:
+ description: Timestamp at which point the coupon becomes valid.
+ example: 2020-01-24T14:15:22Z
+ format: date-time
type: string
- verdictSummary:
- description: A one-sentence summary of the outcome, including the key metric
- and confidence level that led to the decision.
+ expiryDate:
+ description: Expiration date of the coupon. Coupon never expires if this
+ is omitted.
+ example: 2023-08-24T14:15:22Z
+ format: date-time
type: string
- keyFindings:
- description: A bullet point stating the most important finding, including
- the metric, the percentage change, and the confidence.
+ batchId:
+ description: The batch ID that all coupons created by the request will bear.
+ If omitted, a batch ID is generated automatically.
+ example: 3rdparty_fjsieoaa
+ type: string
+ attributes:
+ description: Arbitrary properties associated with this item.
+ example:
+ venueId: 12
+ properties: {}
+ type: object
+ recipientsIntegrationIds:
+ description: The integration IDs for recipients.
+ example:
+ - URNGV8294NV
+ - BZGGC2454PA
items:
type: string
+ maxItems: 1000
+ minItems: 1
+ title: Receiving customer profiles integration IDs
type: array
- aiConfidenceLevel:
- description: Your confidence in this overall verdict, from 0 to 100.
- type: string
- recommendation:
- description: A short, actionable recommendation based on the findings. If
- inconclusive, suggest running the test longer. If there is a clear winner,
- recommend promoting it.
+ validCharacters:
+ description: |
+ List of characters used to generate the random parts of a code. By default, the list of
+ characters is equivalent to the `[A-Z, 0-9]` regular expression.
+ example:
+ - A
+ - B
+ - C
+ - D
+ - E
+ - F
+ - G
+ - H
+ - I
+ - J
+ - K
+ - L
+ - M
+ - "N"
+ - O
+ - P
+ - Q
+ - R
+ - S
+ - T
+ - U
+ - V
+ - W
+ - X
+ - "Y"
+ - Z
+ items:
+ type: string
+ type: array
+ couponPattern:
+ description: |
+ The pattern used to generate coupon codes. The character `#` is a placeholder and is replaced by a random character from the `validCharacters` set.
+ example: SUMMER-#####
+ maxLength: 100
+ minLength: 3
type: string
required:
- - aiConfidenceLevel
- - keyFindings
- - recommendation
- - verdictSummary
- - winnerVariantName
+ - recipientsIntegrationIds
+ - usageLimit
type: object
- ExperimentVerdictResponse:
+ NewCouponCreationJob:
+ example:
+ expiryDate: 2023-08-24T14:15:22Z
+ usageLimit: 100
+ reservationLimit: 45
+ numberOfCoupons: 200000
+ couponSettings:
+ couponPattern: SUMMER-####-####
+ validCharacters:
+ - A
+ - B
+ - C
+ - D
+ - E
+ - F
+ - G
+ - H
+ - I
+ - J
+ - K
+ - L
+ - M
+ - "N"
+ - O
+ - P
+ - Q
+ - R
+ - S
+ - T
+ - U
+ - V
+ - W
+ - X
+ - "Y"
+ - Z
+ - "0"
+ - "1"
+ - "2"
+ - "3"
+ - "4"
+ - "5"
+ - "6"
+ - "7"
+ - "8"
+ - "9"
+ attributes: '{}'
+ discountLimit: 30.0
+ startDate: 2020-01-24T14:15:22Z
+ isReservationMandatory: false
properties:
- verdict:
- $ref: '#/components/schemas/ExperimentVerdict'
- generated:
- description: Timestamp of the moment when the verdict was generated.
+ usageLimit:
+ description: |
+ The number of times the coupon code can be redeemed. `0` means unlimited redemptions but any campaign usage limits will still apply.
+ example: 100
+ format: int64
+ maximum: 999999
+ minimum: 0
+ type: integer
+ discountLimit:
+ description: |
+ The total discount value that the code can give. Typically used to represent a gift card value.
+ example: 30.0
+ maximum: 1E+15
+ minimum: 0
+ type: number
+ reservationLimit:
+ description: |
+ The number of reservations that can be made with this coupon code.
+ example: 45
+ format: int64
+ maximum: 999999
+ minimum: 0
+ type: integer
+ startDate:
+ description: Timestamp at which point the coupon becomes valid.
+ example: 2020-01-24T14:15:22Z
+ format: date-time
+ type: string
+ expiryDate:
+ description: Expiration date of the coupon. Coupon never expires if this
+ is omitted.
+ example: 2023-08-24T14:15:22Z
format: date-time
type: string
+ numberOfCoupons:
+ description: The number of new coupon codes to generate for the campaign.
+ example: 200000
+ format: int64
+ maximum: 5E+6
+ minimum: 1
+ type: integer
+ couponSettings:
+ $ref: '#/components/schemas/CodeGeneratorSettings'
+ attributes:
+ description: Arbitrary properties associated with coupons.
+ properties: {}
+ type: object
+ isReservationMandatory:
+ default: false
+ description: An indication of whether the code can be redeemed only if it
+ has been reserved first.
+ example: false
+ type: boolean
required:
- - generated
- - verdict
+ - attributes
+ - numberOfCoupons
+ - usageLimit
type: object
- ExperimentSegmentInsightVariant:
+ AsyncCouponCreationResponse:
+ example:
+ batchId: tqyrgahe
properties:
- variantId:
- description: The ID of the experiment variant.
- example: 41
- format: int64
- type: integer
- variantName:
- description: The name of the experiment variant.
- example: Control
+ batchId:
+ description: The batch ID that all coupons created by the request will have.
+ example: tqyrgahe
type: string
- sessionsCount:
- description: The number of sessions in this segment for this variant.
- example: 161
- format: int64
- type: integer
- value:
- description: The metric value for this variant in the segment.
- example: 13.13
- format: double
- type: number
required:
- - sessionsCount
- - value
- - variantId
- - variantName
+ - batchId
type: object
- ExperimentSegmentInsight:
+ CouponDeletionFilters:
+ example:
+ startsAfter: 2000-01-23T04:56:07.000+00:00
+ recipientIntegrationId: recipientIntegrationId
+ exactMatch: false
+ redeemed: true
+ referralId: 0
+ createdAfter: 2000-01-23T04:56:07.000+00:00
+ batchId: batchId
+ valid: expired
+ usable: true
+ expiresAfter: 2000-01-23T04:56:07.000+00:00
+ expiresBefore: 2000-01-23T04:56:07.000+00:00
+ createdBefore: 2000-01-23T04:56:07.000+00:00
+ value: value
+ startsBefore: 2000-01-23T04:56:07.000+00:00
properties:
- dimension:
- description: The segmentation dimension used to group customers or purchases
- for analysis.
- enum:
- - cart_value
- - item_count
- - customer_type
- example: cart_value
+ createdBefore:
+ description: Filter results comparing the parameter value, expected to be
+ an RFC3339 timestamp string, to the coupon creation timestamp. You can
+ use any time zone setting. Talon.One will convert to UTC internally.
+ format: date-time
type: string
- bucket:
- description: The specific group within the segmentation dimension.
+ createdAfter:
+ description: Filter results comparing the parameter value, expected to be
+ an RFC3339 timestamp string, to the coupon creation timestamp. You can
+ use any time zone setting. Talon.One will convert to UTC internally.
+ format: date-time
+ type: string
+ startsAfter:
+ description: Filter results comparing the parameter value, expected to be
+ an RFC3339 timestamp string, to the coupon creation timestamp. You can
+ use any time zone setting. Talon.One will convert to UTC internally.
+ format: date-time
+ type: string
+ startsBefore:
+ description: Filter results comparing the parameter value, expected to be
+ an RFC3339 timestamp string, to the coupon creation timestamp. You can
+ use any time zone setting. Talon.One will convert to UTC internally.
+ format: date-time
+ type: string
+ valid:
+ description: |
+ - `expired`: Matches coupons in which the expiration date is set and in the past.
+ - `validNow`: Matches coupons in which the start date is null or in the past and the expiration date is null or in the future.
+ - `validFuture`: Matches coupons in which the start date is set and in the future.
enum:
- - low
- - medium
- - high
- - new
- - returning
- - loyal
- example: high
+ - expired
+ - validNow
+ - validFuture
type: string
- confidence:
+ usable:
description: |
- The raw (unadjusted) confidence score expressed as a percentage. Only segments with a confidence score greater than or equal to 95% are returned.
- example: 99.2
- format: double
- maximum: 1E+2
- minimum: 95
- type: number
- winnerVariantId:
- description: The ID of the variant that performed better in this segment.
- example: 42
+ - `true`: only coupons where `usageCounter < usageLimit` will be returned.
+ - `false`: only coupons where `usageCounter >= usageLimit` will be returned.
+ - This field cannot be used in conjunction with the `usable` query parameter.
+ type: boolean
+ redeemed:
+ description: |
+ - `true`: only coupons where `usageCounter > 0` will be returned.
+ - `false`: only coupons where `usageCounter = 0` will be returned.
+
+ **Note:** This field cannot be used in conjunction with the `usable` query parameter.
+ type: boolean
+ recipientIntegrationId:
+ description: |
+ Filter results by match with a profile id specified in the coupon's `RecipientIntegrationId` field.
+ type: string
+ exactMatch:
+ default: false
+ description: Filter results to an exact case-insensitive matching against
+ the coupon code
+ type: boolean
+ value:
+ description: Filter results by the coupon code
+ type: string
+ batchId:
+ description: Filter results by batches of coupons
+ type: string
+ referralId:
+ description: Filter the results by matching them with the ID of a referral.
+ This filter shows the coupons created by redeeming a referral code.
format: int64
type: integer
- variants:
- description: Per-variant metric values for this segment.
- items:
- $ref: '#/components/schemas/ExperimentSegmentInsightVariant'
- type: array
+ expiresAfter:
+ description: Filter results comparing the parameter value, expected to be
+ an RFC3339 timestamp string, to the coupon creation timestamp. You can
+ use any time zone setting. Talon.One will convert to UTC internally.
+ format: date-time
+ type: string
+ expiresBefore:
+ description: Filter results comparing the parameter value, expected to be
+ an RFC3339 timestamp string, to the coupon creation timestamp. You can
+ use any time zone setting. Talon.One will convert to UTC internally.
+ format: date-time
+ type: string
+ type: object
+ NewCouponDeletionJob:
+ example:
+ filters:
+ startsAfter: 2000-01-23T04:56:07.000+00:00
+ recipientIntegrationId: recipientIntegrationId
+ exactMatch: false
+ redeemed: true
+ referralId: 0
+ createdAfter: 2000-01-23T04:56:07.000+00:00
+ batchId: batchId
+ valid: expired
+ usable: true
+ expiresAfter: 2000-01-23T04:56:07.000+00:00
+ expiresBefore: 2000-01-23T04:56:07.000+00:00
+ createdBefore: 2000-01-23T04:56:07.000+00:00
+ value: value
+ startsBefore: 2000-01-23T04:56:07.000+00:00
+ properties:
+ filters:
+ $ref: '#/components/schemas/CouponDeletionFilters'
required:
- - bucket
- - confidence
- - dimension
- - variants
- - winnerVariantId
+ - filters
type: object
- ExperimentSegmentInsightMetric:
+ AsyncCouponDeletionJobResponse:
+ example:
+ id: 6
properties:
- metric:
- description: The metric being measured.
- enum:
- - avg_session_value
- - avg_discounted_session_value
- - avg_items_per_session
- example: avg_session_value
- type: string
- segments:
- description: |
- Segments with statistically significant results for this metric. An empty array means no significant segments were found. Segments are sorted by confidence score from highest to lowest.
- items:
- $ref: '#/components/schemas/ExperimentSegmentInsight'
- type: array
+ id:
+ description: Unique ID for this entity. Not to be confused with the Integration
+ ID, which is set by your integration layer and used in most endpoints.
+ example: 6
+ format: int64
+ type: integer
required:
- - metric
- - segments
+ - id
type: object
- ExperimentSegmentInsights:
+ NewAppWideCouponDeletionJob:
properties:
- metrics:
- description: |
- Segment insights grouped by metric. This array always contains exactly three metric objects. Each metric includes a segments array, which is empty if no significant results were found. The metrics array itself is empty if the `reason` property is populated.
+ filters:
+ $ref: '#/components/schemas/CouponDeletionFilters'
+ campaignids:
items:
- $ref: '#/components/schemas/ExperimentSegmentInsightMetric'
+ format: int64
+ type: integer
type: array
- totalSegmentsTested:
- description: |
- Total number of segment-metric combinations that were tested for statistical significance.
- example: 24
- format: int64
- type: integer
- dimensionsTested:
- description: |
- Number of segmentation dimensions that had sufficient data variance to test. Dimensions where all sessions fall into a single bucket are excluded.
- example: 3
- format: int64
- type: integer
- reason:
- description: |
- Empty string when segment insights are available. Contains a reason code when insights could not be computed (e.g., "insufficient_data" when the experiment has fewer than 100 sessions per variant).
- example: ""
- type: string
required:
- - dimensionsTested
- - metrics
- - reason
- - totalSegmentsTested
+ - campaignids
+ - filters
type: object
- CreateTemplateCampaign:
+ UpdateCoupon:
example:
- campaignAttributesOverrides: '{}'
- linkedStoreIds:
- - 1
- - 2
- - 3
- evaluationGroupId: 2
- name: Discount campaign
- description: This template is for discount campaigns.
- limitOverrides:
+ expiryDate: 2023-08-24T14:15:22Z
+ recipientIntegrationId: URNGV8294NV
+ implicitlyReserved: false
+ usageLimit: 100
+ reservationLimit: 45
+ attributes: '{}'
+ discountLimit: 30.0
+ startDate: 2020-01-24T14:15:22Z
+ limits:
- period: yearly
entities:
- Coupon
@@ -33674,129 +37986,177 @@ components:
- Coupon
limit: 1000.0
action: createCoupon
- templateParamValues:
- - attributeId: 100
- minValue: 0.0
- expression:
- - string1
- - string2
- maxValue: 19.9
- valueType: string
- name: my property
- description: This is a template parameter of type `number`.
- type: templateParameter
- - attributeId: 100
- minValue: 0.0
- expression:
- - string1
- - string2
- maxValue: 19.9
- valueType: string
- name: my property
- description: This is a template parameter of type `number`.
- type: templateParameter
- templateId: 4
- campaignGroups:
- - 1
- - 3
- tags:
- - summer
+ isReservationMandatory: false
properties:
- name:
- description: A user-facing name for this campaign.
- example: Discount campaign
- minLength: 1
- title: Campaign Name
- type: string
- description:
- description: A detailed description of the campaign.
- example: This template is for discount campaigns.
- title: Campaign Description
- type: string
- templateId:
- description: The ID of the Campaign Template which will be used in order
- to create the Campaign.
- example: 4
+ usageLimit:
+ description: |
+ The number of times the coupon code can be redeemed. `0` means unlimited redemptions but any campaign usage limits will still apply.
+ example: 100
format: int64
+ maximum: 999999
+ minimum: 0
type: integer
- campaignAttributesOverrides:
- description: Custom Campaign Attributes. If the Campaign Template defines
- the same values, they will be overridden.
- properties: {}
- type: object
- templateParamValues:
- description: Actual values to replace the template placeholder values in
- the Ruleset bindings. Values for all Template Parameters must be provided.
- items:
- $ref: '#/components/schemas/Binding'
- type: array
- limitOverrides:
- description: Limits for this Campaign. If the Campaign Template or Application
- define default values for the same limits, they will be overridden.
+ discountLimit:
+ description: |
+ The total discount value that the code can give. Typically used to represent a gift card value.
+ example: 30.0
+ maximum: 1E+15
+ minimum: 0
+ type: number
+ reservationLimit:
+ description: |
+ The number of reservations that can be made with this coupon code.
+ example: 45
+ format: int64
+ maximum: 999999
+ minimum: 0
+ type: integer
+ startDate:
+ description: Timestamp at which point the coupon becomes valid.
+ example: 2020-01-24T14:15:22Z
+ format: date-time
+ type: string
+ expiryDate:
+ description: Expiration date of the coupon. Coupon never expires if this
+ is omitted.
+ example: 2023-08-24T14:15:22Z
+ format: date-time
+ type: string
+ limits:
+ description: |
+ Limits configuration for a coupon. These limits will override the limits
+ set from the campaign.
+
+ **Note:** Only usable when creating a single coupon which is not tied to a specific recipient.
+ Only per-profile limits are allowed to be configured.
items:
$ref: '#/components/schemas/LimitConfig'
type: array
- campaignGroups:
- description: |
- The IDs of the [campaign groups](https://docs.talon.one/docs/product/account/account-settings/managing-campaign-groups) this campaign belongs to.
- example:
- - 1
- - 3
- items:
- format: int64
- type: integer
- type: array
- tags:
- description: A list of tags for the campaign. If the campaign template has
- tags, they will be overridden by this list.
- example:
- - summer
- items:
- maxLength: 50
- minLength: 1
- type: string
- maxItems: 50
- type: array
- evaluationGroupId:
- description: The ID of the campaign evaluation group the campaign belongs
- to.
- example: 2
+ recipientIntegrationId:
+ description: The integration ID for this coupon's beneficiary's profile.
+ example: URNGV8294NV
+ maxLength: 1000
+ title: Receiving customer profile integration ID
+ type: string
+ attributes:
+ description: Arbitrary properties associated with this item.
+ properties: {}
+ type: object
+ isReservationMandatory:
+ default: false
+ description: An indication of whether the code can be redeemed only if it
+ has been reserved first.
+ example: false
+ title: Is reservation mandatory
+ type: boolean
+ implicitlyReserved:
+ description: An indication of whether the coupon is implicitly reserved
+ for all customers.
+ example: false
+ title: Is coupon implicitly reserved for all customers
+ type: boolean
+ type: object
+ CouponSearch:
+ properties:
+ attributes:
+ description: Properties to match against a coupon. All provided attributes
+ will be exactly matched against attributes.
+ properties: {}
+ type: object
+ required:
+ - attributes
+ type: object
+ UpdateReferralBatch:
+ properties:
+ attributes:
+ description: Arbitrary properties associated with this item.
+ properties: {}
+ type: object
+ batchID:
+ description: The id of the batch the referral belongs to.
+ example: 32535-43255
+ title: Batch ID
+ type: string
+ startDate:
+ description: Timestamp at which point the referral code becomes valid.
+ example: 2020-11-10T23:00:00Z
+ format: date-time
+ title: Referral code valid from
+ type: string
+ expiryDate:
+ description: Expiration date of the referral code. Referral never expires
+ if this is omitted.
+ example: 2021-11-10T23:00:00Z
+ format: date-time
+ title: Referral code valid until
+ type: string
+ usageLimit:
+ description: |
+ The number of times a referral code can be used. This can be set to 0 for no limit, but any campaign usage limits will still apply.
+ example: 1
format: int64
+ maximum: 999999
+ minimum: 0
+ title: Referral code Usage Limit
type: integer
- linkedStoreIds:
- description: |
- A list of store IDs that are linked to the campaign.
-
- **Note:** Campaigns with linked store IDs will only be evaluated when there is a
- [customer session update](https://docs.talon.one/integration-api#tag/Customer-sessions/operation/updateCustomerSessionV2)
- that references a linked store.
- example:
- - 1
- - 2
- - 3
- items:
- format: int64
- type: integer
- type: array
required:
- - name
- - templateId
+ - batchID
type: object
- UpdateCollection:
+ UpdateReferral:
example:
- subscribedApplicationsIds:
- - 1
- - 2
- - 3
- description: My collection of SKUs
+ expiryDate: 2021-11-10T23:00:00Z
+ friendProfileIntegrationId: BZGGC2454PA
+ usageLimit: 1
+ attributes: '{}'
+ startDate: 2020-11-10T23:00:00Z
+ properties:
+ friendProfileIntegrationId:
+ description: An optional Integration ID of the Friend's Profile.
+ example: BZGGC2454PA
+ maxLength: 1000
+ title: Friend's Profile ID
+ type: string
+ startDate:
+ description: Timestamp at which point the referral code becomes valid.
+ example: 2020-11-10T23:00:00Z
+ format: date-time
+ title: Referral code valid from
+ type: string
+ expiryDate:
+ description: Expiration date of the referral code. Referral never expires
+ if this is omitted.
+ example: 2021-11-10T23:00:00Z
+ format: date-time
+ title: Referral code valid until
+ type: string
+ usageLimit:
+ description: |
+ The number of times a referral code can be used. This can be set to 0 for no limit, but any campaign usage limits will still apply.
+ example: 1
+ format: int64
+ maximum: 999999
+ minimum: 0
+ title: Referral code Usage Limit
+ type: integer
+ attributes:
+ description: Arbitrary properties associated with this item.
+ properties: {}
+ type: object
+ type: object
+ NewCampaignGroup:
properties:
+ name:
+ description: The name of the campaign access group.
+ example: Europe access group
+ minLength: 1
+ type: string
description:
- description: A short description of the purpose of this collection.
- example: My collection of SKUs
+ description: A longer description of the campaign access group.
+ example: A group that gives access to all the campaigns for the Europe market.
type: string
subscribedApplicationsIds:
- description: A list of the IDs of the Applications where this collection
- is enabled.
+ description: A list of IDs of the Applications that this campaign access
+ group is enabled for.
example:
- 1
- 2
@@ -33805,56 +38165,37 @@ components:
format: int64
type: integer
type: array
- type: object
- NewCollection:
- example:
- subscribedApplicationsIds:
- - 1
- - 2
- - 3
- name: My collection
- description: My collection of SKUs
- properties:
- description:
- description: A short description of the purpose of this collection.
- example: My collection of SKUs
- type: string
- subscribedApplicationsIds:
- description: A list of the IDs of the Applications where this collection
- is enabled.
+ campaignIds:
+ description: A list of IDs of the campaigns that are part of the campaign
+ access group.
example:
- - 1
- - 2
- - 3
+ - 4
+ - 6
+ - 8
items:
format: int64
type: integer
type: array
- name:
- description: The name of this collection.
- example: My collection
- minLength: 1
- pattern: ^[^[:cntrl:]\s][^[:cntrl:]]*$
- type: string
required:
- name
type: object
- CollectionWithoutPayload:
+ CampaignGroup:
example:
accountId: 3886
- createdBy: 134
created: 2020-06-10T09:05:27.993483Z
- campaignId: 7
+ name: Europe access group
subscribedApplicationsIds:
- 1
- 2
- 3
- name: My collection
modified: 2021-09-12T10:12:42Z
- description: My collection of SKUs
- modifiedBy: 48
+ description: A group that gives access to all the campaigns for the Europe
+ market.
id: 6
- applicationId: 1
+ campaignIds:
+ - 4
+ - 6
+ - 8
properties:
id:
description: The internal ID of this entity.
@@ -33866,23 +38207,28 @@ components:
example: 2020-06-10T09:05:27.993483Z
format: date-time
type: string
+ modified:
+ description: The time this entity was last modified.
+ example: 2021-09-12T10:12:42Z
+ format: date-time
+ type: string
accountId:
description: The ID of the account that owns this entity.
example: 3886
format: int64
type: integer
- modified:
- description: The time this entity was last modified.
- example: 2021-09-12T10:12:42Z
- format: date-time
+ name:
+ description: The name of the campaign access group.
+ example: Europe access group
+ minLength: 1
type: string
description:
- description: A short description of the purpose of this collection.
- example: My collection of SKUs
+ description: A longer description of the campaign access group.
+ example: A group that gives access to all the campaigns for the Europe market.
type: string
subscribedApplicationsIds:
- description: A list of the IDs of the Applications where this collection
- is enabled.
+ description: A list of IDs of the Applications that this campaign access
+ group is enabled for.
example:
- 1
- 2
@@ -33891,59 +38237,61 @@ components:
format: int64
type: integer
type: array
- name:
- description: The name of this collection.
- example: My collection
- minLength: 1
- pattern: ^[^[:cntrl:]\s][^[:cntrl:]]*$
- type: string
- modifiedBy:
- description: ID of the user who last updated this effect if available.
- example: 48
- format: int64
- type: integer
- createdBy:
- description: ID of the user who created this effect.
- example: 134
- format: int64
- type: integer
- applicationId:
- description: The ID of the Application that owns this entity.
- example: 1
- format: int64
- type: integer
- campaignId:
- description: The ID of the campaign that owns this entity.
- example: 7
- format: int64
- type: integer
+ campaignIds:
+ description: A list of IDs of the campaigns that are part of the campaign
+ access group.
+ example:
+ - 4
+ - 6
+ - 8
+ items:
+ format: int64
+ type: integer
+ type: array
required:
- accountId
- created
- - createdBy
- id
- modified
- name
type: object
- Collection:
- example:
- accountId: 3886
- createdBy: 134
- payload:
- - KTL-WH-ET-1
- - KTL-BL-ET-1
- created: 2020-06-10T09:05:27.993483Z
- campaignId: 7
+ UpdateCampaignGroup:
+ properties:
+ name:
+ description: The name of the campaign access group.
+ example: Europe access group
+ minLength: 1
+ type: string
+ description:
+ description: A longer description of the campaign access group.
+ example: A group that gives access to all the campaigns for the Europe market.
+ type: string
subscribedApplicationsIds:
- - 1
- - 2
- - 3
- name: My collection
- modified: 2021-09-12T10:12:42Z
- description: My collection of SKUs
- modifiedBy: 48
- id: 6
- applicationId: 1
+ description: A list of IDs of the Applications that this campaign access
+ group is enabled for.
+ example:
+ - 1
+ - 2
+ - 3
+ items:
+ format: int64
+ type: integer
+ type: array
+ campaignIds:
+ description: A list of IDs of the campaigns that are part of the campaign
+ access group.
+ example:
+ - 4
+ - 6
+ - 8
+ items:
+ format: int64
+ type: integer
+ type: array
+ required:
+ - name
+ type: object
+ Role:
properties:
id:
description: The internal ID of this entity.
@@ -33955,1050 +38303,925 @@ components:
example: 2020-06-10T09:05:27.993483Z
format: date-time
type: string
+ modified:
+ description: The time this entity was last modified.
+ example: 2021-09-12T10:12:42Z
+ format: date-time
+ type: string
accountId:
description: The ID of the account that owns this entity.
example: 3886
format: int64
type: integer
- modified:
- description: The time this entity was last modified.
- example: 2021-09-12T10:12:42Z
- format: date-time
+ campaignGroupID:
+ description: |
+ The ID of the [Campaign Group](https://docs.talon.one/docs/product/account/account-settings/managing-campaign-groups)
+ this role was created for.
+ example: 3
+ format: int64
+ type: integer
+ name:
+ description: Name of the role.
+ example: Campaign Reviewer
type: string
description:
- description: A short description of the purpose of this collection.
- example: My collection of SKUs
+ description: Description of the role.
+ example: Reviews the campaigns
type: string
- subscribedApplicationsIds:
- description: A list of the IDs of the Applications where this collection
- is enabled.
+ members:
+ description: A list of user identifiers assigned to this role.
example:
- - 1
- - 2
- - 3
+ - 48
+ - 562
+ - 475
+ - 18
items:
format: int64
type: integer
type: array
- name:
- description: The name of this collection.
- example: My collection
- minLength: 1
- pattern: ^[^[:cntrl:]\s][^[:cntrl:]]*$
- type: string
- modifiedBy:
- description: ID of the user who last updated this effect if available.
- example: 48
- format: int64
- type: integer
- createdBy:
- description: ID of the user who created this effect.
- example: 134
- format: int64
- type: integer
- applicationId:
- description: The ID of the Application that owns this entity.
- example: 1
- format: int64
- type: integer
- campaignId:
- description: The ID of the campaign that owns this entity.
- example: 7
+ acl:
+ description: The `Access Control List` json defining the role of the user.
+ This represents the access control on the user level.
+ example:
+ Role: 127
+ properties: {}
+ type: object
+ required:
+ - accountId
+ - acl
+ - created
+ - id
+ - modified
+ - name
+ type: object
+ CampaignTemplateCouponReservationSettings:
+ example:
+ reservationLimit: 45
+ isReservationMandatory: false
+ properties:
+ reservationLimit:
+ description: |
+ The number of reservations that can be made with this coupon code.
+ example: 45
format: int64
+ maximum: 999999
+ minimum: 0
type: integer
- payload:
- description: The content of the collection.
+ isReservationMandatory:
+ default: false
+ description: An indication of whether the code can be redeemed only if it
+ has been reserved first.
+ example: false
+ title: Is reservation mandatory
+ type: boolean
+ type: object
+ TemplateLimitConfig:
+ example:
+ period: yearly
+ entities:
+ - Coupon
+ limit: 1000.0
+ action: createCoupon
+ properties:
+ action:
+ description: |
+ The limitable action to which this limit applies. For example:
+ - `setDiscount`
+ - `setDiscountEffect`
+ - `redeemCoupon`
+ - `createCoupon`
+ example: createCoupon
+ type: string
+ limit:
+ description: The value to set for the limit.
+ example: 1000.0
+ minimum: 0
+ type: number
+ period:
+ description: The period on which the budget limit recurs.
+ enum:
+ - daily
+ - weekly
+ - monthly
+ - yearly
+ example: yearly
+ type: string
+ entities:
+ description: The entity that this limit applies to.
example:
- - KTL-WH-ET-1
- - KTL-BL-ET-1
+ - Coupon
items:
+ enum:
+ - Coupon
+ - Referral
+ - Profile
+ - Identifier
+ - Store
+ - Session
type: string
- maxItems: 50
type: array
required:
- - accountId
- - created
- - createdBy
- - id
- - modified
+ - action
+ - entities
+ - limit
+ type: object
+ CampaignTemplateParams:
+ example:
+ attributeId: 42
+ name: discount_value
+ description: This is a template parameter of type `number`.
+ type: number
+ properties:
+ name:
+ description: Name of the campaign template parameter.
+ example: discount_value
+ minLength: 1
+ type: string
+ type:
+ description: Defines the type of parameter value.
+ enum:
+ - string
+ - number
+ - boolean
+ - percent
+ - (list string)
+ - (list number)
+ - time
+ example: number
+ type: string
+ description:
+ description: Explains the meaning of this template parameter and the placeholder
+ value that will define it. It is used on campaign creation from this template.
+ example: This is a template parameter of type `number`.
+ type: string
+ attributeId:
+ description: ID of the corresponding attribute.
+ example: 42
+ format: int64
+ type: integer
+ required:
+ - description
- name
+ - type
type: object
- CreateTemplateCampaignResponse:
+ CampaignTemplateCollection:
example:
- collections:
- - accountId: 3886
- createdBy: 134
- payload:
- - KTL-WH-ET-1
- - KTL-BL-ET-1
- created: 2020-06-10T09:05:27.993483Z
- campaignId: 7
- subscribedApplicationsIds:
- - 1
- - 2
- - 3
- name: My collection
- modified: 2021-09-12T10:12:42Z
- description: My collection of SKUs
- modifiedBy: 48
- id: 6
- applicationId: 1
- - accountId: 3886
- createdBy: 134
- payload:
- - KTL-WH-ET-1
- - KTL-BL-ET-1
- created: 2020-06-10T09:05:27.993483Z
- campaignId: 7
- subscribedApplicationsIds:
- - 1
- - 2
- - 3
- name: My collection
- modified: 2021-09-12T10:12:42Z
- description: My collection of SKUs
- modifiedBy: 48
- id: 6
- applicationId: 1
- ruleset:
- rbVersion: v2
- created: 2020-06-10T09:05:27.993483Z
- campaignId: 320
- bindings: []
- activatedAt: 2000-01-23T04:56:07.000+00:00
- activate: true
- rules:
- - condition:
- - and
- - - couponValid
- effects:
- - catch
- - - noop
- - - setDiscount
- - 10% off
- - - '*'
- - - "."
- - Session
- - Total
- - - /
- - 10
- - 100
- bindings:
- - attributeId: 100
- minValue: 0.0
- expression:
- - string1
- - string2
- maxValue: 19.9
- valueType: string
- name: my property
- description: This is a template parameter of type `number`.
- type: templateParameter
- - attributeId: 100
- minValue: 0.0
- expression:
- - string1
- - string2
- maxValue: 19.9
- valueType: string
- name: my property
- description: This is a template parameter of type `number`.
- type: templateParameter
- description: Creates a discount when a coupon is valid
- id: 7fa800a8-ac8d-4792-85dc-c4650dcc8f23
- title: Give discount via coupon
- parentId: 7fa800a8-ac8d-4792-85dc-c4650dcc8f23
- - condition:
- - and
- - - couponValid
- effects:
- - catch
- - - noop
- - - setDiscount
- - 10% off
- - - '*'
- - - "."
- - Session
- - Total
- - - /
- - 10
- - 100
- bindings:
- - attributeId: 100
- minValue: 0.0
- expression:
- - string1
- - string2
- maxValue: 19.9
- valueType: string
- name: my property
- description: This is a template parameter of type `number`.
- type: templateParameter
- - attributeId: 100
- minValue: 0.0
- expression:
- - string1
- - string2
- maxValue: 19.9
- valueType: string
- name: my property
- description: This is a template parameter of type `number`.
- type: templateParameter
- description: Creates a discount when a coupon is valid
- id: 7fa800a8-ac8d-4792-85dc-c4650dcc8f23
- title: Give discount via coupon
- parentId: 7fa800a8-ac8d-4792-85dc-c4650dcc8f23
- id: 6
- strikethroughRules:
- - condition:
- - and
- - - couponValid
- effects:
- - catch
- - - noop
- - - setDiscount
- - 10% off
- - - '*'
- - - "."
- - Session
- - Total
- - - /
- - 10
- - 100
- bindings:
- - attributeId: 100
- minValue: 0.0
- expression:
- - string1
- - string2
- maxValue: 19.9
- valueType: string
- name: my property
- description: This is a template parameter of type `number`.
- type: templateParameter
- - attributeId: 100
- minValue: 0.0
- expression:
- - string1
- - string2
- maxValue: 19.9
- valueType: string
- name: my property
- description: This is a template parameter of type `number`.
- type: templateParameter
- description: Creates a discount when a coupon is valid
- id: 7fa800a8-ac8d-4792-85dc-c4650dcc8f23
- title: Give discount via coupon
- parentId: 7fa800a8-ac8d-4792-85dc-c4650dcc8f23
- - condition:
- - and
- - - couponValid
- effects:
- - catch
- - - noop
- - - setDiscount
- - 10% off
- - - '*'
- - - "."
- - Session
- - Total
- - - /
- - 10
- - 100
- bindings:
- - attributeId: 100
- minValue: 0.0
- expression:
- - string1
- - string2
- maxValue: 19.9
- valueType: string
- name: my property
- description: This is a template parameter of type `number`.
- type: templateParameter
- - attributeId: 100
- minValue: 0.0
- expression:
- - string1
- - string2
- maxValue: 19.9
- valueType: string
- name: my property
- description: This is a template parameter of type `number`.
- type: templateParameter
- description: Creates a discount when a coupon is valid
- id: 7fa800a8-ac8d-4792-85dc-c4650dcc8f23
- title: Give discount via coupon
- parentId: 7fa800a8-ac8d-4792-85dc-c4650dcc8f23
- templateId: 3
- userId: 388
- campaign:
- type: advanced
- templateId: 3
- customEffectCount: 0
- activeRevisionId: 6
- features:
- - coupons
- - referrals
- createdLoyaltyPointsCount: 9.0
- storesImported: true
- couponSettings:
- couponPattern: SUMMER-####-####
- validCharacters:
- - A
- - B
- - C
- - D
- - E
- - F
- - G
- - H
- - I
- - J
- - K
- - L
- - M
- - "N"
- - O
- - P
- - Q
- - R
- - S
- - T
- - U
- - V
- - W
- - X
- - "Y"
- - Z
- - "0"
- - "1"
- - "2"
- - "3"
- - "4"
- - "5"
- - "6"
- - "7"
- - "8"
- - "9"
- experimentId: 1
- id: 4
- state: enabled
- couponAttributes: '{}'
- reservecouponEffectCount: 9
- updatedBy: Jane Doe
- frontendState: running
- created: 2020-06-10T09:05:27.993483Z
- referralCreationCount: 8
- stageRevision: false
- couponRedemptionCount: 163
- couponCreationCount: 16
- version: 6
- campaignGroups:
- - 1
- - 3
- tags:
- - summer
- discountEffectCount: 343
- budgets:
- - limit: 1000.0
- action: createCoupon
- counter: 42.0
- - limit: 1000.0
- action: createCoupon
- counter: 42.0
- redeemedLoyaltyPointsCount: 8.0
- name: Summer promotions
- valueMapsIds:
- - 100
- - 215
- applicationId: 322
- updated: 2000-01-23T04:56:07.000+00:00
- callApiEffectCount: 0
- createdLoyaltyPointsEffectCount: 2
- discountCount: 288.0
- revisionFrontendState: revised
- description: Campaign for all summer 2021 promotions
- activeRevisionVersionId: 6
- currentRevisionVersionId: 6
- startTime: 2021-07-20T22:00:00Z
- currentRevisionId: 6
- limits:
- - period: yearly
- entities:
- - Coupon
- limit: 1000.0
- action: createCoupon
- - period: yearly
- entities:
- - Coupon
- limit: 1000.0
- action: createCoupon
- activeRulesetId: 6
- reevaluateOnReturn: true
- userId: 388
- awardedGiveawaysCount: 9
- redeemedLoyaltyPointsEffectCount: 9
- linkedStoreIds:
- - 1
- - 2
- - 3
- createdBy: John Doe
- addFreeItemEffectCount: 0
- referralSettings:
- couponPattern: SUMMER-####-####
- validCharacters:
- - A
- - B
- - C
- - D
- - E
- - F
- - G
- - H
- - I
- - J
- - K
- - L
- - M
- - "N"
- - O
- - P
- - Q
- - R
- - S
- - T
- - U
- - V
- - W
- - X
- - "Y"
- - Z
- - "0"
- - "1"
- - "2"
- - "3"
- - "4"
- - "5"
- - "6"
- - "7"
- - "8"
- - "9"
- attributes: '{}'
- lastActivity: 2022-11-10T23:00:00Z
- endTime: 2021-09-22T22:00:00Z
- referralRedemptionCount: 3
+ name: My collection
+ description: My collection of SKUs
properties:
- campaign:
- $ref: '#/components/schemas/Campaign'
- ruleset:
- $ref: '#/components/schemas/Ruleset'
- collections:
- items:
- $ref: '#/components/schemas/Collection'
- type: array
+ name:
+ description: The name of this collection.
+ example: My collection
+ minLength: 1
+ pattern: ^[A-Za-z](\w|\s)*$
+ type: string
+ description:
+ description: A short description of the purpose of this collection.
+ example: My collection of SKUs
+ type: string
required:
- - campaign
- - ruleset
+ - name
type: object
- NewLoyaltyProgram:
- description: A new loyalty program
+ UpdateCampaignTemplate:
properties:
- title:
- description: The display title for the Loyalty Program.
- example: Point collection
+ name:
+ description: The campaign template name.
+ example: Discount campaign
+ minLength: 1
type: string
description:
- description: Description of our Loyalty Program.
- example: Customers collect 10 points per 1$ spent
+ description: Customer-facing text that explains the objective of the template.
+ example: This is a template for a discount campaign.
type: string
- subscribedApplications:
- description: A list containing the IDs of all applications that are subscribed
- to this Loyalty Program.
+ instructions:
+ description: Customer-facing text that explains how to use the template.
+ For example, you can use this property to explain the available attributes
+ of this template, and how they can be modified when a user uses this template
+ to create a new campaign.
+ example: Use this template for discount campaigns. Set the campaign properties
+ according to the campaign goals, and don't forget to set an end date.
+ type: string
+ campaignAttributes:
+ description: The campaign attributes that campaigns created from this template
+ will have by default.
+ properties: {}
+ type: object
+ couponAttributes:
+ description: The campaign attributes that coupons created from this template
+ will have by default.
+ properties: {}
+ type: object
+ state:
+ description: Only campaign templates in 'available' state may be used to
+ create campaigns.
+ enum:
+ - draft
+ - enabled
+ - disabled
+ type: string
+ activeRulesetId:
+ description: The ID of the ruleset this campaign template will use.
+ example: 5
+ format: int64
+ type: integer
+ tags:
+ description: A list of tags for the campaign template.
example:
- - 132
- - 97
+ - discount
+ items:
+ maxLength: 50
+ minLength: 1
+ type: string
+ maxItems: 50
+ type: array
+ reevaluateOnReturn:
+ description: Indicates whether campaigns created from this template should
+ be reevaluated when a customer returns an item.
+ example: true
+ type: boolean
+ features:
+ description: A list of features for the campaign template.
+ items:
+ enum:
+ - coupons
+ - referrals
+ - loyalty
+ - giveaways
+ - strikethrough
+ - achievements
+ - advancedEvents
+ type: string
+ type: array
+ couponSettings:
+ $ref: '#/components/schemas/CodeGeneratorSettings'
+ couponReservationSettings:
+ $ref: '#/components/schemas/CampaignTemplateCouponReservationSettings'
+ referralSettings:
+ $ref: '#/components/schemas/CodeGeneratorSettings'
+ limits:
+ description: The set of limits that operate for this campaign template.
+ items:
+ $ref: '#/components/schemas/TemplateLimitConfig'
+ type: array
+ templateParams:
+ description: Fields which can be used to replace values in a rule.
+ items:
+ $ref: '#/components/schemas/CampaignTemplateParams'
+ type: array
+ applicationsIds:
+ description: A list of IDs of the Applications that are subscribed to this
+ campaign template.
+ example:
+ - 1
+ - 2
+ - 3
items:
format: int64
type: integer
type: array
- defaultValidity:
- description: |
- The default duration after which new loyalty points should expire. Can be 'unlimited' or a specific time.
- The time format is a number followed by one letter indicating the time unit, like '30s', '40m', '1h', '5D', '7W', or 10M'. These rounding suffixes are also supported:
- - '_D' for rounding down. Can be used as a suffix after 'D', and signifies the start of the day.
- - '_U' for rounding up. Can be used as a suffix after 'D', 'W', and 'M', and signifies the end of the day, week, and month.
- example: 2W_U
- type: string
- defaultPending:
- description: |
- The default duration of the pending time after which points should be valid. Accepted values: 'immediate', 'on_action' or a specific time.
- The time format is a number followed by one letter indicating the time unit, like '30s', '40m', '1h', '5D', '7W', or 10M'. These rounding suffixes are also supported:
- - '_D' for rounding down. Can be used as a suffix after 'D', and signifies the start of the day.
- - '_U' for rounding up. Can be used as a suffix after 'D', 'W', and 'M', and signifies the end of the day, week, and month.
- example: immediate
- type: string
- allowSubledger:
- description: Indicates if this program supports subledgers inside the program.
- example: false
- type: boolean
- usersPerCardLimit:
- description: |
- The max amount of user profiles with whom a card can be shared. This can be set to 0 for no limit.
- This property is only used when `cardBased` is `true`.
- example: 111
+ campaignCollections:
+ description: The campaign collections from the blueprint campaign for the
+ template.
+ items:
+ $ref: '#/components/schemas/CampaignTemplateCollection'
+ type: array
+ defaultCampaignGroupId:
+ description: The default campaign group ID.
+ example: 42
format: int64
- minimum: 0
type: integer
- sandbox:
- description: Indicates if this program is a live or sandbox program. Programs
- of a given type can only be connected to Applications of the same type.
- example: true
- title: Sandbox
- type: boolean
- programJoinPolicy:
+ campaignType:
+ default: advanced
description: |
- The policy that defines when the customer joins the loyalty program.
- - `not_join`: The customer does not join the loyalty program but can still earn and spend loyalty points.
-
- **Note**: The customer does not have a program join date.
- - `points_activated`: The customer joins the loyalty program only when their earned loyalty points become active for the first time.
- - `points_earned`: The customer joins the loyalty program when they earn loyalty points for the first time.
+ The campaign type. Possible type values:
+ - `cartItem`: Type of campaign that can apply effects only to cart items.
+ - `advanced`: Type of campaign that can apply effects to customer sessions and cart items.
enum:
- - not_join
- - points_activated
- - points_earned
+ - cartItem
+ - advanced
+ example: advanced
type: string
- tiersExpirationPolicy:
- description: |
- The policy that defines how tier expiration, used to reevaluate the customer's current tier, is determined.
- - `tier_start_date`: The tier expiration is relative to when the customer joined the current tier.
- - `program_join_date`: The tier expiration is relative to when the customer joined the loyalty program.
- - `customer_attribute`: The tier expiration is determined by a custom customer attribute.
- - `absolute_expiration`: The tier is reevaluated at the start of each tier cycle. For this policy, it is required to provide a `tierCycleStartDate`.
- enum:
- - tier_start_date
- - program_join_date
- - customer_attribute
- - absolute_expiration
- type: string
- tierCycleStartDate:
- description: |
- Timestamp at which the tier cycle starts for all customers in the loyalty program.
-
- **Note**: This is only required when the tier expiration policy is set to `absolute_expiration`.
- example: 2021-09-12T10:12:42Z
+ required:
+ - applicationsIds
+ - description
+ - instructions
+ - name
+ - state
+ type: object
+ CampaignTemplate:
+ example:
+ instructions: Use this template for discount campaigns. Set the campaign properties
+ according to the campaign goals, and don't forget to set an end date.
+ campaignCollections:
+ - name: My collection
+ description: My collection of SKUs
+ - name: My collection
+ description: My collection of SKUs
+ campaignsCount: 3
+ defaultCampaignGroupId: 42
+ description: This is a template for a discount campaign.
+ features:
+ - coupons
+ - coupons
+ couponReservationSettings:
+ reservationLimit: 45
+ isReservationMandatory: false
+ couponSettings:
+ couponPattern: SUMMER-####-####
+ validCharacters:
+ - A
+ - B
+ - C
+ - D
+ - E
+ - F
+ - G
+ - H
+ - I
+ - J
+ - K
+ - L
+ - M
+ - "N"
+ - O
+ - P
+ - Q
+ - R
+ - S
+ - T
+ - U
+ - V
+ - W
+ - X
+ - "Y"
+ - Z
+ - "0"
+ - "1"
+ - "2"
+ - "3"
+ - "4"
+ - "5"
+ - "6"
+ - "7"
+ - "8"
+ - "9"
+ templateParams:
+ - attributeId: 42
+ name: discount_value
+ description: This is a template parameter of type `number`.
+ type: number
+ - attributeId: 42
+ name: discount_value
+ description: This is a template parameter of type `number`.
+ type: number
+ id: 6
+ couponAttributes: '{}'
+ state: draft
+ limits:
+ - period: yearly
+ entities:
+ - Coupon
+ limit: 1000.0
+ action: createCoupon
+ - period: yearly
+ entities:
+ - Coupon
+ limit: 1000.0
+ action: createCoupon
+ activeRulesetId: 5
+ campaignAttributes: '{}'
+ applicationsIds:
+ - 1
+ - 2
+ - 3
+ - 1
+ - 2
+ - 3
+ campaignType: advanced
+ updatedBy: Jane Doe
+ created: 2020-06-10T09:05:27.993483Z
+ isUserFavorite: false
+ reevaluateOnReturn: true
+ userId: 388
+ tags:
+ - discount
+ accountId: 3886
+ validApplicationIds:
+ - 1
+ - 2
+ - 3
+ name: Discount campaign
+ referralSettings:
+ couponPattern: SUMMER-####-####
+ validCharacters:
+ - A
+ - B
+ - C
+ - D
+ - E
+ - F
+ - G
+ - H
+ - I
+ - J
+ - K
+ - L
+ - M
+ - "N"
+ - O
+ - P
+ - Q
+ - R
+ - S
+ - T
+ - U
+ - V
+ - W
+ - X
+ - "Y"
+ - Z
+ - "0"
+ - "1"
+ - "2"
+ - "3"
+ - "4"
+ - "5"
+ - "6"
+ - "7"
+ - "8"
+ - "9"
+ updated: 2022-08-24T14:15:22Z
+ properties:
+ id:
+ description: The internal ID of this entity.
+ example: 6
+ format: int64
+ type: integer
+ created:
+ description: The time this entity was created.
+ example: 2020-06-10T09:05:27.993483Z
format: date-time
type: string
- tiersExpireIn:
- description: |
- The amount of time after which the tier expires and is reevaluated.
-
- The time format is an **integer** followed by one letter indicating the time unit.
- Examples: `30s`, `40m`, `1h`, `5D`, `7W`, `10M`, `15Y`.
-
- Available units:
-
- - `s`: seconds
- - `m`: minutes
- - `h`: hours
- - `D`: days
- - `W`: weeks
- - `M`: months
- - `Y`: years
-
- You can round certain units up or down:
- - `_D` for rounding down days only. Signifies the start of the day.
- - `_U` for rounding up days, weeks, months and years. Signifies the end of the day, week, month or year.
- example: 27W_U
+ accountId:
+ description: The ID of the account that owns this entity.
+ example: 3886
+ format: int64
+ type: integer
+ userId:
+ description: The ID of the user associated with this entity.
+ example: 388
+ format: int64
+ type: integer
+ name:
+ description: The campaign template name.
+ example: Discount campaign
+ minLength: 1
type: string
- tiersDowngradePolicy:
- description: |
- The policy that defines how customer tiers are downgraded in the loyalty program after tier reevaluation.
- - `one_down`: If the customer doesn't have enough points to stay in the current tier, they are downgraded by one tier.
- - `balance_based`: The customer's tier is reevaluated based on the amount of active points they have at the moment.
- enum:
- - one_down
- - balance_based
+ description:
+ description: Customer-facing text that explains the objective of the template.
+ example: This is a template for a discount campaign.
type: string
- cardCodeSettings:
- $ref: '#/components/schemas/CodeGeneratorSettings'
- returnPolicy:
- description: |
- The policy that defines the rollback of points in case of a partially returned, cancelled, or reopened [customer session](https://docs.talon.one/docs/dev/concepts/entities/customer-sessions).
- - `only_pending`: Only pending points can be rolled back.
- - `within_balance`: Available active points can be rolled back if there aren't enough pending points. The active balance of the customer cannot be negative.
- - `unlimited`: Allows negative balance without any limit.
- enum:
- - only_pending
- - within_balance
- - unlimited
+ instructions:
+ description: Customer-facing text that explains how to use the template.
+ For example, you can use this property to explain the available attributes
+ of this template, and how they can be modified when a user uses this template
+ to create a new campaign.
+ example: Use this template for discount campaigns. Set the campaign properties
+ according to the campaign goals, and don't forget to set an end date.
type: string
- name:
- description: The internal name for the Loyalty Program. This is an immutable
- value.
- example: GeneralPointCollection
+ campaignAttributes:
+ description: The campaign attributes that campaigns created from this template
+ will have by default.
+ properties: {}
+ type: object
+ couponAttributes:
+ description: The campaign attributes that coupons created from this template
+ will have by default.
+ properties: {}
+ type: object
+ state:
+ description: Only campaign templates in 'available' state may be used to
+ create campaigns.
+ enum:
+ - draft
+ - enabled
+ - disabled
type: string
- tiers:
- description: The tiers in this loyalty program.
+ activeRulesetId:
+ description: The ID of the ruleset this campaign template will use.
+ example: 5
+ format: int64
+ type: integer
+ tags:
+ description: A list of tags for the campaign template.
+ example:
+ - discount
items:
- $ref: '#/components/schemas/NewLoyaltyTier'
+ maxLength: 50
+ minLength: 1
+ type: string
+ maxItems: 50
type: array
- timezone:
- description: A string containing an IANA timezone descriptor.
- minLength: 1
- type: string
- cardBased:
- default: false
- description: |
- Defines the type of loyalty program:
- - `true`: the program is a card-based.
- - `false`: the program is profile-based.
+ reevaluateOnReturn:
+ description: Indicates whether campaigns created from this template should
+ be reevaluated when a customer returns an item.
example: true
type: boolean
- required:
- - allowSubledger
- - cardBased
- - defaultPending
- - defaultValidity
- - name
- - sandbox
- - timezone
- - title
- type: object
- UpdateLoyaltyProgram:
- description: An updated loyalty program.
- properties:
- title:
- description: The display title for the Loyalty Program.
- example: Point collection
- type: string
- description:
- description: Description of our Loyalty Program.
- example: Customers collect 10 points per 1$ spent
- type: string
- subscribedApplications:
- description: A list containing the IDs of all applications that are subscribed
- to this Loyalty Program.
+ features:
+ description: A list of features for the campaign template.
+ items:
+ enum:
+ - coupons
+ - referrals
+ - loyalty
+ - giveaways
+ - strikethrough
+ - achievements
+ - advancedEvents
+ type: string
+ type: array
+ couponSettings:
+ $ref: '#/components/schemas/CodeGeneratorSettings'
+ couponReservationSettings:
+ $ref: '#/components/schemas/CampaignTemplateCouponReservationSettings'
+ referralSettings:
+ $ref: '#/components/schemas/CodeGeneratorSettings'
+ limits:
+ description: The set of limits that operate for this campaign template.
+ items:
+ $ref: '#/components/schemas/TemplateLimitConfig'
+ type: array
+ templateParams:
+ description: Fields which can be used to replace values in a rule.
+ items:
+ $ref: '#/components/schemas/CampaignTemplateParams'
+ type: array
+ applicationsIds:
+ description: A list of IDs of the Applications that are subscribed to this
+ campaign template.
example:
- - 132
- - 97
+ - 1
+ - 2
+ - 3
+ - 1
+ - 2
+ - 3
items:
format: int64
type: integer
type: array
- defaultValidity:
- description: |
- The default duration after which new loyalty points should expire. Can be 'unlimited' or a specific time.
- The time format is a number followed by one letter indicating the time unit, like '30s', '40m', '1h', '5D', '7W', or 10M'. These rounding suffixes are also supported:
- - '_D' for rounding down. Can be used as a suffix after 'D', and signifies the start of the day.
- - '_U' for rounding up. Can be used as a suffix after 'D', 'W', and 'M', and signifies the end of the day, week, and month.
- example: 2W_U
- type: string
- defaultPending:
- description: |
- The default duration of the pending time after which points should be valid. Accepted values: 'immediate', 'on_action' or a specific time.
- The time format is a number followed by one letter indicating the time unit, like '30s', '40m', '1h', '5D', '7W', or 10M'. These rounding suffixes are also supported:
- - '_D' for rounding down. Can be used as a suffix after 'D', and signifies the start of the day.
- - '_U' for rounding up. Can be used as a suffix after 'D', 'W', and 'M', and signifies the end of the day, week, and month.
- example: immediate
- type: string
- allowSubledger:
- description: Indicates if this program supports subledgers inside the program.
- example: false
- type: boolean
- usersPerCardLimit:
- description: |
- The max amount of user profiles with whom a card can be shared. This can be set to 0 for no limit.
- This property is only used when `cardBased` is `true`.
- example: 111
+ campaignCollections:
+ description: The campaign collections from the blueprint campaign for the
+ template.
+ items:
+ $ref: '#/components/schemas/CampaignTemplateCollection'
+ type: array
+ defaultCampaignGroupId:
+ description: The default campaign group ID.
+ example: 42
format: int64
- minimum: 0
type: integer
- sandbox:
- description: Indicates if this program is a live or sandbox program. Programs
- of a given type can only be connected to Applications of the same type.
- example: true
- title: Sandbox
- type: boolean
- programJoinPolicy:
- description: |
- The policy that defines when the customer joins the loyalty program.
- - `not_join`: The customer does not join the loyalty program but can still earn and spend loyalty points.
-
- **Note**: The customer does not have a program join date.
- - `points_activated`: The customer joins the loyalty program only when their earned loyalty points become active for the first time.
- - `points_earned`: The customer joins the loyalty program when they earn loyalty points for the first time.
- enum:
- - not_join
- - points_activated
- - points_earned
- type: string
- tiersExpirationPolicy:
+ campaignType:
+ default: advanced
description: |
- The policy that defines how tier expiration, used to reevaluate the customer's current tier, is determined.
- - `tier_start_date`: The tier expiration is relative to when the customer joined the current tier.
- - `program_join_date`: The tier expiration is relative to when the customer joined the loyalty program.
- - `customer_attribute`: The tier expiration is determined by a custom customer attribute.
- - `absolute_expiration`: The tier is reevaluated at the start of each tier cycle. For this policy, it is required to provide a `tierCycleStartDate`.
+ The campaign type. Possible type values:
+ - `cartItem`: Type of campaign that can apply effects only to cart items.
+ - `advanced`: Type of campaign that can apply effects to customer sessions and cart items.
enum:
- - tier_start_date
- - program_join_date
- - customer_attribute
- - absolute_expiration
+ - cartItem
+ - advanced
+ example: advanced
type: string
- tierCycleStartDate:
- description: |
- Timestamp at which the tier cycle starts for all customers in the loyalty program.
-
- **Note**: This is only required when the tier expiration policy is set to `absolute_expiration`.
- example: 2021-09-12T10:12:42Z
+ campaignsCount:
+ description: The number of Campaigns created from this template.
+ example: 3
+ format: int64
+ type: integer
+ updated:
+ description: Timestamp of the most recent update to the campaign template
+ or any of its elements.
+ example: 2022-08-24T14:15:22Z
format: date-time
type: string
- tiersExpireIn:
- description: |
- The amount of time after which the tier expires and is reevaluated.
-
- The time format is an **integer** followed by one letter indicating the time unit.
- Examples: `30s`, `40m`, `1h`, `5D`, `7W`, `10M`, `15Y`.
-
- Available units:
-
- - `s`: seconds
- - `m`: minutes
- - `h`: hours
- - `D`: days
- - `W`: weeks
- - `M`: months
- - `Y`: years
-
- You can round certain units up or down:
- - `_D` for rounding down days only. Signifies the start of the day.
- - `_U` for rounding up days, weeks, months and years. Signifies the end of the day, week, month or year.
- example: 27W_U
- type: string
- tiersDowngradePolicy:
- description: |
- The policy that defines how customer tiers are downgraded in the loyalty program after tier reevaluation.
- - `one_down`: If the customer doesn't have enough points to stay in the current tier, they are downgraded by one tier.
- - `balance_based`: The customer's tier is reevaluated based on the amount of active points they have at the moment.
- enum:
- - one_down
- - balance_based
- type: string
- cardCodeSettings:
- $ref: '#/components/schemas/CodeGeneratorSettings'
- returnPolicy:
- description: |
- The policy that defines the rollback of points in case of a partially returned, cancelled, or reopened [customer session](https://docs.talon.one/docs/dev/concepts/entities/customer-sessions).
- - `only_pending`: Only pending points can be rolled back.
- - `within_balance`: Available active points can be rolled back if there aren't enough pending points. The active balance of the customer cannot be negative.
- - `unlimited`: Allows negative balance without any limit.
- enum:
- - only_pending
- - within_balance
- - unlimited
+ updatedBy:
+ description: Name of the user who last updated this campaign template, if
+ available.
+ example: Jane Doe
type: string
- tiers:
- description: The tiers in this loyalty program.
- items:
- $ref: '#/components/schemas/NewLoyaltyTier'
- type: array
- type: object
- ActivateLoyaltyPoints:
- description: Activate loyalty points
- example:
- transactionUUIDs:
- - 8f1a8d7c-9c3e-4a5e-9f0d-2c5f7a3b1cde
- sessionId: ac08cc3c43470426591ad75b2d685ec04_v2
- properties:
- transactionUUIDs:
- description: |
- An array of transaction UUIDs used to activate specific pending point transactions.
-
- If provided, do not include the `sessionId` parameter.
+ validApplicationIds:
+ description: The IDs of the Applications that are related to this entity.
example:
- - 8f1a8d7c-9c3e-4a5e-9f0d-2c5f7a3b1cde
+ - 1
+ - 2
+ - 3
items:
- format: uuid
- type: string
- maxItems: 50
- minItems: 1
+ format: int64
+ type: integer
type: array
- uniqueItems: true
- sessionId:
- description: |
- The ID of the session containing the pending point transactions to activate.
-
- If provided, do not include the `transactionUUIDs` parameter.
- example: ac08cc3c43470426591ad75b2d685ec04_v2
- minLength: 1
- type: string
- type: object
- LoyaltyLedgerEntry:
- description: A single row of the ledger, describing one addition or deduction.
- example:
- eventID: 5
- amount: 100.0
- created: 2021-07-20T22:00:00Z
- flags:
- createsNegativeBalance: true
- subLedgerID: mysubledger
- customerSessionID: t2gy5s-47274
- type: addition
- userID: 499
- expiryDate: 2022-07-20T22:00:00Z
- archived: false
- customerProfileID: URNGV8294NV
- cardID: 241
- name: Add points on purchase
- validityDuration: 30D
- programID: 5
- startDate: 2021-07-20T22:00:00Z
- properties:
- created:
- example: 2021-07-20T22:00:00Z
- format: date-time
- type: string
- programID:
- example: 5
- format: int64
- type: integer
- customerProfileID:
- example: URNGV8294NV
- type: string
- cardID:
- example: 241
- format: int64
- type: integer
- customerSessionID:
- example: t2gy5s-47274
- type: string
- eventID:
- example: 5
- format: int64
- type: integer
- type:
- description: |
- The type of the ledger transaction. Possible values are:
- - `addition`
- - `subtraction`
- - `expire`
- - `expiring` (for expiring points ledgers)
- example: addition
- type: string
- amount:
- example: 100.0
- type: number
- startDate:
- example: 2021-07-20T22:00:00Z
- format: date-time
- type: string
- expiryDate:
- example: 2022-07-20T22:00:00Z
- format: date-time
- type: string
- name:
- description: A name referencing the condition or effect that added this
- entry, or the specific name provided in an API call.
- example: Add points on purchase
- type: string
- subLedgerID:
- description: This specifies if we are adding loyalty points to the main
- ledger or a subledger.
- example: mysubledger
- type: string
- userID:
- description: This is the ID of the user who created this entry, if the addition
- or subtraction was done manually.
- example: 499
- format: int64
- type: integer
- archived:
- description: Indicates if the entry belongs to the archived session.
+ isUserFavorite:
+ default: false
+ description: A flag indicating whether the user marked the template as a
+ favorite.
example: false
type: boolean
- flags:
- $ref: '#/components/schemas/LoyaltyLedgerEntryFlags'
- validityDuration:
- description: |
- The duration for which the points remain active, relative to the activation date.
-
- **Note**: This only applies to points for which `awaitsActivation` is `true` and `expiryDate` is not set.
- example: 30D
- type: string
required:
- - amount
+ - accountId
+ - applicationsIds
+ - campaignType
- created
+ - description
+ - id
+ - instructions
- name
- - programID
- - subLedgerID
- - type
+ - reevaluateOnReturn
+ - state
+ - userId
+ - validApplicationIds
type: object
- ActivateLoyaltyPointsResponse:
- example:
- ledgerEntries:
- - eventID: 5
- amount: 100.0
- created: 2021-07-20T22:00:00Z
- flags:
- createsNegativeBalance: true
- subLedgerID: mysubledger
- customerSessionID: t2gy5s-47274
- type: addition
- userID: 499
- expiryDate: 2022-07-20T22:00:00Z
- archived: false
- customerProfileID: URNGV8294NV
- cardID: 241
- name: Add points on purchase
- validityDuration: 30D
- programID: 5
- startDate: 2021-07-20T22:00:00Z
- - eventID: 5
- amount: 100.0
- created: 2021-07-20T22:00:00Z
- flags:
- createsNegativeBalance: true
- subLedgerID: mysubledger
- customerSessionID: t2gy5s-47274
- type: addition
- userID: 499
- expiryDate: 2022-07-20T22:00:00Z
- archived: false
- customerProfileID: URNGV8294NV
- cardID: 241
- name: Add points on purchase
- validityDuration: 30D
- programID: 5
- startDate: 2021-07-20T22:00:00Z
+ NewCampaignTemplate:
properties:
- ledgerEntries:
- description: Updated ledger entries after activation.
+ name:
+ description: The campaign template name.
+ minLength: 1
+ type: string
+ description:
+ description: Customer-facing text that explains the objective of the template.
+ type: string
+ instructions:
+ description: Customer-facing text that explains how to use the template.
+ For example, you can use this property to explain the available attributes
+ of this template, and how they can be modified when a user uses this template
+ to create a new campaign.
+ type: string
+ campaignAttributes:
+ description: The campaign attributes that campaigns created from this template
+ will have by default.
+ properties: {}
+ type: object
+ couponAttributes:
+ description: The campaign attributes that coupons created from this template
+ will have by default.
+ properties: {}
+ type: object
+ state:
+ description: Only Campaign Templates in 'available' state may be used to
+ create Campaigns.
+ enum:
+ - draft
+ - enabled
+ - disabled
+ type: string
+ tags:
+ description: A list of tags for the campaign template.
items:
- $ref: '#/components/schemas/LoyaltyLedgerEntry'
+ maxLength: 50
+ minLength: 1
+ type: string
+ maxItems: 50
type: array
- type: object
- UpdateLoyaltyProgramTier:
- description: Update a tier in a specified loyalty program.
- properties:
- id:
- description: The internal ID of the tier.
- example: 6
+ reevaluateOnReturn:
+ description: Indicates whether campaigns created from this template should
+ be reevaluated when a customer returns an item.
+ example: true
+ type: boolean
+ features:
+ description: A list of features for the campaign template.
+ items:
+ enum:
+ - coupons
+ - referrals
+ - loyalty
+ - giveaways
+ - strikethrough
+ - achievements
+ - advancedEvents
+ type: string
+ type: array
+ couponSettings:
+ $ref: '#/components/schemas/CodeGeneratorSettings'
+ couponReservationSettings:
+ $ref: '#/components/schemas/CampaignTemplateCouponReservationSettings'
+ referralSettings:
+ $ref: '#/components/schemas/CodeGeneratorSettings'
+ limits:
+ description: The set of limits that will operate for this campaign template.
+ items:
+ $ref: '#/components/schemas/TemplateLimitConfig'
+ type: array
+ templateParams:
+ description: Fields which can be used to replace values in a rule.
+ items:
+ $ref: '#/components/schemas/CampaignTemplateParams'
+ type: array
+ campaignCollections:
+ description: The campaign collections from the blueprint campaign for the
+ template.
+ items:
+ $ref: '#/components/schemas/CampaignTemplateCollection'
+ type: array
+ defaultCampaignGroupId:
+ description: The default campaign group ID.
+ example: 42
format: int64
type: integer
- name:
- description: The name of the tier.
- example: Gold
- type: string
- minPoints:
- description: The minimum amount of points required to enter the tier.
- example: 300.0
- maximum: 999999999999.99
- minimum: 0
- type: number
- required:
- - id
- type: object
- UpdateLoyaltyProgramTiers:
- description: List of tiers that are updated by the request.
- items:
- $ref: '#/components/schemas/UpdateLoyaltyProgramTier'
- type: array
- LoyaltyTiers:
- description: A list of the loyalty program's tiers.
- items:
- $ref: '#/components/schemas/LoyaltyTier'
- type: array
- LoyaltyDashboardPointsBreakdown:
- example:
- createdManually: 125.0
- createdViaRuleEngine: 9631.0
- properties:
- createdManually:
- example: 125.0
- type: number
- createdViaRuleEngine:
- example: 9631.0
- type: number
- required:
- - createdManually
- - createdViaRuleEngine
- type: object
- LoyaltyDashboardData:
- description: Datapoint for the graphs and cards on a loyalty program dashboard.
- example:
- date: 2000-01-23T04:56:07.000+00:00
- totalMembers: 2582.0
- totalSpentPoints: 25668.0
- spentPoints:
- createdManually: 125.0
- createdViaRuleEngine: 9631.0
- totalActivePoints: 9756.0
- totalPendingPoints: 548.0
- totalExpiredPoints: 1156.0
- totalNegativePoints: 32.0
- newMembers: 3.0
- earnedPoints:
- createdManually: 125.0
- createdViaRuleEngine: 9631.0
- properties:
- date:
- description: Date at which data point was collected.
- format: date-time
+ campaignType:
+ default: advanced
+ description: |
+ The campaign type. Possible type values:
+ - `cartItem`: Type of campaign that can apply effects only to cart items.
+ - `advanced`: Type of campaign that can apply effects to customer sessions and cart items.
+ enum:
+ - cartItem
+ - advanced
+ example: advanced
type: string
- totalActivePoints:
- description: Total of active points for this loyalty program.
- example: 9756.0
- type: number
- totalPendingPoints:
- description: Total of pending points for this loyalty program.
- example: 548.0
- type: number
- totalSpentPoints:
- description: Total of spent points for this loyalty program.
- example: 25668.0
- type: number
- totalExpiredPoints:
- description: Total of expired points for this loyalty program.
- example: 1156.0
- type: number
- totalNegativePoints:
- description: Total of negative points for this loyalty program.
- example: 32.0
- type: number
- totalMembers:
- description: Number of loyalty program members.
- example: 2582.0
- type: number
- newMembers:
- description: Number of members who joined on this day.
- example: 3.0
- type: number
- spentPoints:
- $ref: '#/components/schemas/LoyaltyDashboardPointsBreakdown'
- earnedPoints:
- $ref: '#/components/schemas/LoyaltyDashboardPointsBreakdown'
required:
- - date
- - earnedPoints
- - newMembers
- - spentPoints
- - totalActivePoints
- - totalExpiredPoints
- - totalMembers
- - totalNegativePoints
- - totalPendingPoints
- - totalSpentPoints
+ - campaignType
+ - description
+ - instructions
+ - name
+ - state
type: object
- Import:
+ ExperimentVariant:
example:
- accountId: 3886
- amount: 10
created: 2020-06-10T09:05:27.993483Z
+ isPrimary: true
+ name: Variant A
+ ruleset:
+ rbVersion: v2
+ created: 2020-06-10T09:05:27.993483Z
+ campaignId: 320
+ bindings: []
+ activatedAt: 2000-01-23T04:56:07.000+00:00
+ activate: true
+ rules:
+ - condition:
+ - and
+ - - couponValid
+ effects:
+ - catch
+ - - noop
+ - - setDiscount
+ - 10% off
+ - - '*'
+ - - "."
+ - Session
+ - Total
+ - - /
+ - 10
+ - 100
+ bindings:
+ - attributeId: 100
+ minValue: 0.0
+ expression:
+ - identity
+ - 10
+ maxValue: 19.9
+ valueType: number
+ name: Discount percentage
+ description: The percentage discount applied to the cart total.
+ type: templateParameter
+ - attributeId: 100
+ minValue: 0.0
+ expression:
+ - identity
+ - 10
+ maxValue: 19.9
+ valueType: number
+ name: Discount percentage
+ description: The percentage discount applied to the cart total.
+ type: templateParameter
+ description: Creates a discount when a coupon is valid
+ id: 7fa800a8-ac8d-4792-85dc-c4650dcc8f23
+ title: Give discount via coupon
+ parentId: 7fa800a8-ac8d-4792-85dc-c4650dcc8f23
+ - condition:
+ - and
+ - - couponValid
+ effects:
+ - catch
+ - - noop
+ - - setDiscount
+ - 10% off
+ - - '*'
+ - - "."
+ - Session
+ - Total
+ - - /
+ - 10
+ - 100
+ bindings:
+ - attributeId: 100
+ minValue: 0.0
+ expression:
+ - identity
+ - 10
+ maxValue: 19.9
+ valueType: number
+ name: Discount percentage
+ description: The percentage discount applied to the cart total.
+ type: templateParameter
+ - attributeId: 100
+ minValue: 0.0
+ expression:
+ - identity
+ - 10
+ maxValue: 19.9
+ valueType: number
+ name: Discount percentage
+ description: The percentage discount applied to the cart total.
+ type: templateParameter
+ description: Creates a discount when a coupon is valid
+ id: 7fa800a8-ac8d-4792-85dc-c4650dcc8f23
+ title: Give discount via coupon
+ parentId: 7fa800a8-ac8d-4792-85dc-c4650dcc8f23
+ id: 6
+ strikethroughRules:
+ - condition:
+ - and
+ - - couponValid
+ effects:
+ - catch
+ - - noop
+ - - setDiscount
+ - 10% off
+ - - '*'
+ - - "."
+ - Session
+ - Total
+ - - /
+ - 10
+ - 100
+ bindings:
+ - attributeId: 100
+ minValue: 0.0
+ expression:
+ - identity
+ - 10
+ maxValue: 19.9
+ valueType: number
+ name: Discount percentage
+ description: The percentage discount applied to the cart total.
+ type: templateParameter
+ - attributeId: 100
+ minValue: 0.0
+ expression:
+ - identity
+ - 10
+ maxValue: 19.9
+ valueType: number
+ name: Discount percentage
+ description: The percentage discount applied to the cart total.
+ type: templateParameter
+ description: Creates a discount when a coupon is valid
+ id: 7fa800a8-ac8d-4792-85dc-c4650dcc8f23
+ title: Give discount via coupon
+ parentId: 7fa800a8-ac8d-4792-85dc-c4650dcc8f23
+ - condition:
+ - and
+ - - couponValid
+ effects:
+ - catch
+ - - noop
+ - - setDiscount
+ - 10% off
+ - - '*'
+ - - "."
+ - Session
+ - Total
+ - - /
+ - 10
+ - 100
+ bindings:
+ - attributeId: 100
+ minValue: 0.0
+ expression:
+ - identity
+ - 10
+ maxValue: 19.9
+ valueType: number
+ name: Discount percentage
+ description: The percentage discount applied to the cart total.
+ type: templateParameter
+ - attributeId: 100
+ minValue: 0.0
+ expression:
+ - identity
+ - 10
+ maxValue: 19.9
+ valueType: number
+ name: Discount percentage
+ description: The percentage discount applied to the cart total.
+ type: templateParameter
+ description: Creates a discount when a coupon is valid
+ id: 7fa800a8-ac8d-4792-85dc-c4650dcc8f23
+ title: Give discount via coupon
+ parentId: 7fa800a8-ac8d-4792-85dc-c4650dcc8f23
+ templateId: 3
+ userId: 388
+ weight: 12
+ experimentId: 10
id: 6
- userId: 388
- entity: AttributeAllowedList
properties:
id:
description: The internal ID of this entity.
@@ -35010,514 +39233,3018 @@ components:
example: 2020-06-10T09:05:27.993483Z
format: date-time
type: string
- accountId:
- description: The ID of the account that owns this entity.
- example: 3886
- format: int64
- type: integer
- userId:
- description: The ID of the user associated with this entity.
- example: 388
- format: int64
- type: integer
- entity:
- description: |
- The name of the entity that was imported.
- example: AttributeAllowedList
+ name:
+ example: Variant A
type: string
- amount:
- description: The number of values that were imported.
+ experimentId:
example: 10
format: int64
- minimum: 0
type: integer
+ ruleset:
+ $ref: '#/components/schemas/Ruleset'
+ weight:
+ example: 12
+ format: int64
+ type: integer
+ isPrimary:
+ example: true
+ type: boolean
required:
- - accountId
- - amount
- created
- - entity
- id
- - userId
- type: object
- LoyaltySubLedger:
- description: Ledger of Balance in Loyalty Program for a Customer.
- example:
- total: 0.8008281904610115
- totalSpentPoints: 5.962133916683182
- activePoints:
- - eventID: 5
- amount: 100.0
- created: 2021-07-20T22:00:00Z
- flags:
- createsNegativeBalance: true
- subLedgerID: mysubledger
- customerSessionID: t2gy5s-47274
- type: addition
- userID: 499
- expiryDate: 2022-07-20T22:00:00Z
- archived: false
- customerProfileID: URNGV8294NV
- cardID: 241
- name: Add points on purchase
- validityDuration: 30D
- programID: 5
- startDate: 2021-07-20T22:00:00Z
- - eventID: 5
- amount: 100.0
- created: 2021-07-20T22:00:00Z
- flags:
- createsNegativeBalance: true
- subLedgerID: mysubledger
- customerSessionID: t2gy5s-47274
- type: addition
- userID: 499
- expiryDate: 2022-07-20T22:00:00Z
- archived: false
- customerProfileID: URNGV8294NV
- cardID: 241
- name: Add points on purchase
- validityDuration: 30D
- programID: 5
- startDate: 2021-07-20T22:00:00Z
- expiringPoints:
- - eventID: 5
- amount: 100.0
- created: 2021-07-20T22:00:00Z
- flags:
- createsNegativeBalance: true
- subLedgerID: mysubledger
- customerSessionID: t2gy5s-47274
- type: addition
- userID: 499
- expiryDate: 2022-07-20T22:00:00Z
- archived: false
- customerProfileID: URNGV8294NV
- cardID: 241
- name: Add points on purchase
- validityDuration: 30D
- programID: 5
- startDate: 2021-07-20T22:00:00Z
- - eventID: 5
- amount: 100.0
- created: 2021-07-20T22:00:00Z
- flags:
- createsNegativeBalance: true
- subLedgerID: mysubledger
- customerSessionID: t2gy5s-47274
- type: addition
- userID: 499
- expiryDate: 2022-07-20T22:00:00Z
- archived: false
- customerProfileID: URNGV8294NV
- cardID: 241
- name: Add points on purchase
- validityDuration: 30D
- programID: 5
- startDate: 2021-07-20T22:00:00Z
- totalActivePoints: 6.027456183070403
- totalPendingPoints: 1.4658129805029452
- totalExpiredPoints: 5.637376656633329
- totalNegativePoints: 2.3021358869347655
- transactions:
- - eventID: 5
- amount: 100.0
- created: 2021-07-20T22:00:00Z
- flags:
- createsNegativeBalance: true
- subLedgerID: mysubledger
- customerSessionID: t2gy5s-47274
- type: addition
- userID: 499
- expiryDate: 2022-07-20T22:00:00Z
- archived: false
- customerProfileID: URNGV8294NV
- cardID: 241
- name: Add points on purchase
- validityDuration: 30D
- programID: 5
- startDate: 2021-07-20T22:00:00Z
- - eventID: 5
- amount: 100.0
- created: 2021-07-20T22:00:00Z
- flags:
- createsNegativeBalance: true
- subLedgerID: mysubledger
- customerSessionID: t2gy5s-47274
- type: addition
- userID: 499
- expiryDate: 2022-07-20T22:00:00Z
- archived: false
- customerProfileID: URNGV8294NV
- cardID: 241
- name: Add points on purchase
- validityDuration: 30D
- programID: 5
- startDate: 2021-07-20T22:00:00Z
- expiredPoints:
- - eventID: 5
- amount: 100.0
- created: 2021-07-20T22:00:00Z
- flags:
- createsNegativeBalance: true
- subLedgerID: mysubledger
- customerSessionID: t2gy5s-47274
- type: addition
- userID: 499
- expiryDate: 2022-07-20T22:00:00Z
- archived: false
- customerProfileID: URNGV8294NV
- cardID: 241
- name: Add points on purchase
- validityDuration: 30D
- programID: 5
- startDate: 2021-07-20T22:00:00Z
- - eventID: 5
- amount: 100.0
- created: 2021-07-20T22:00:00Z
- flags:
- createsNegativeBalance: true
- subLedgerID: mysubledger
- customerSessionID: t2gy5s-47274
- type: addition
- userID: 499
- expiryDate: 2022-07-20T22:00:00Z
- archived: false
- customerProfileID: URNGV8294NV
- cardID: 241
- name: Add points on purchase
- validityDuration: 30D
- programID: 5
- startDate: 2021-07-20T22:00:00Z
- currentTier:
- expiryDate: 2000-01-23T04:56:07.000+00:00
- downgradePolicy: one_down
- name: bronze
- id: 11
- startDate: 2000-01-23T04:56:07.000+00:00
- pendingPoints:
- - eventID: 5
- amount: 100.0
- created: 2021-07-20T22:00:00Z
- flags:
- createsNegativeBalance: true
- subLedgerID: mysubledger
- customerSessionID: t2gy5s-47274
- type: addition
- userID: 499
- expiryDate: 2022-07-20T22:00:00Z
- archived: false
- customerProfileID: URNGV8294NV
- cardID: 241
- name: Add points on purchase
- validityDuration: 30D
- programID: 5
- startDate: 2021-07-20T22:00:00Z
- - eventID: 5
- amount: 100.0
- created: 2021-07-20T22:00:00Z
- flags:
- createsNegativeBalance: true
- subLedgerID: mysubledger
- customerSessionID: t2gy5s-47274
- type: addition
- userID: 499
- expiryDate: 2022-07-20T22:00:00Z
- archived: false
- customerProfileID: URNGV8294NV
- cardID: 241
- name: Add points on purchase
- validityDuration: 30D
- programID: 5
- startDate: 2021-07-20T22:00:00Z
- properties:
- total:
- description: |
- **DEPRECATED** Use `totalActivePoints` property instead. Total amount of currently active and available points in the customer's balance.
- title: Current Balance (Deprecated)
- type: number
- totalActivePoints:
- description: Total amount of currently active and available points in the
- customer's balance.
- title: Current Balance
- type: number
- totalPendingPoints:
- description: Total amount of pending points, which are not active yet but
- will become active in the future.
- title: Total pending points
- type: number
- totalSpentPoints:
- description: Total amount of points already spent by this customer.
- title: Total spent points
- type: number
- totalExpiredPoints:
- description: Total amount of points, that expired without ever being spent.
- title: Total expired points
- type: number
- totalNegativePoints:
- description: Total amount of negative points. This implies that `totalActivePoints`
- is `0`.
- title: Total negative points
- type: number
- transactions:
- description: List of all events that have happened such as additions, subtractions
- and expiries.
- items:
- $ref: '#/components/schemas/LoyaltyLedgerEntry'
- type: array
- expiringPoints:
- description: List of all points that will expire.
- items:
- $ref: '#/components/schemas/LoyaltyLedgerEntry'
- type: array
- activePoints:
- description: List of all currently active points.
- items:
- $ref: '#/components/schemas/LoyaltyLedgerEntry'
- type: array
- pendingPoints:
- description: List of all points pending activation.
- items:
- $ref: '#/components/schemas/LoyaltyLedgerEntry'
- type: array
- expiredPoints:
- description: List of expired points.
- items:
- $ref: '#/components/schemas/LoyaltyLedgerEntry'
- type: array
- currentTier:
- $ref: '#/components/schemas/Tier'
- required:
- - total
- - totalActivePoints
- - totalExpiredPoints
- - totalNegativePoints
- - totalPendingPoints
- - totalSpentPoints
- type: object
- LoyaltyLedger:
- description: Ledger of Balance in Loyalty Program for a Customer.
- example:
- ledger:
- total: 0.8008281904610115
- totalSpentPoints: 5.962133916683182
- activePoints:
- - eventID: 5
- amount: 100.0
- created: 2021-07-20T22:00:00Z
- flags:
- createsNegativeBalance: true
- subLedgerID: mysubledger
- customerSessionID: t2gy5s-47274
- type: addition
- userID: 499
- expiryDate: 2022-07-20T22:00:00Z
- archived: false
- customerProfileID: URNGV8294NV
- cardID: 241
- name: Add points on purchase
- validityDuration: 30D
- programID: 5
- startDate: 2021-07-20T22:00:00Z
- - eventID: 5
- amount: 100.0
- created: 2021-07-20T22:00:00Z
- flags:
- createsNegativeBalance: true
- subLedgerID: mysubledger
- customerSessionID: t2gy5s-47274
- type: addition
- userID: 499
- expiryDate: 2022-07-20T22:00:00Z
- archived: false
- customerProfileID: URNGV8294NV
- cardID: 241
- name: Add points on purchase
- validityDuration: 30D
- programID: 5
- startDate: 2021-07-20T22:00:00Z
- expiringPoints:
- - eventID: 5
- amount: 100.0
- created: 2021-07-20T22:00:00Z
- flags:
- createsNegativeBalance: true
- subLedgerID: mysubledger
- customerSessionID: t2gy5s-47274
- type: addition
- userID: 499
- expiryDate: 2022-07-20T22:00:00Z
- archived: false
- customerProfileID: URNGV8294NV
- cardID: 241
- name: Add points on purchase
- validityDuration: 30D
- programID: 5
- startDate: 2021-07-20T22:00:00Z
- - eventID: 5
- amount: 100.0
- created: 2021-07-20T22:00:00Z
- flags:
- createsNegativeBalance: true
- subLedgerID: mysubledger
- customerSessionID: t2gy5s-47274
- type: addition
- userID: 499
- expiryDate: 2022-07-20T22:00:00Z
- archived: false
- customerProfileID: URNGV8294NV
- cardID: 241
- name: Add points on purchase
- validityDuration: 30D
- programID: 5
- startDate: 2021-07-20T22:00:00Z
- totalActivePoints: 6.027456183070403
- totalPendingPoints: 1.4658129805029452
- totalExpiredPoints: 5.637376656633329
- totalNegativePoints: 2.3021358869347655
- transactions:
- - eventID: 5
- amount: 100.0
- created: 2021-07-20T22:00:00Z
- flags:
- createsNegativeBalance: true
- subLedgerID: mysubledger
- customerSessionID: t2gy5s-47274
- type: addition
- userID: 499
- expiryDate: 2022-07-20T22:00:00Z
- archived: false
- customerProfileID: URNGV8294NV
- cardID: 241
- name: Add points on purchase
- validityDuration: 30D
- programID: 5
- startDate: 2021-07-20T22:00:00Z
- - eventID: 5
- amount: 100.0
- created: 2021-07-20T22:00:00Z
- flags:
- createsNegativeBalance: true
- subLedgerID: mysubledger
- customerSessionID: t2gy5s-47274
- type: addition
- userID: 499
- expiryDate: 2022-07-20T22:00:00Z
- archived: false
- customerProfileID: URNGV8294NV
- cardID: 241
- name: Add points on purchase
- validityDuration: 30D
- programID: 5
- startDate: 2021-07-20T22:00:00Z
- expiredPoints:
- - eventID: 5
- amount: 100.0
- created: 2021-07-20T22:00:00Z
- flags:
- createsNegativeBalance: true
- subLedgerID: mysubledger
- customerSessionID: t2gy5s-47274
- type: addition
- userID: 499
- expiryDate: 2022-07-20T22:00:00Z
- archived: false
- customerProfileID: URNGV8294NV
- cardID: 241
- name: Add points on purchase
- validityDuration: 30D
- programID: 5
- startDate: 2021-07-20T22:00:00Z
- - eventID: 5
- amount: 100.0
- created: 2021-07-20T22:00:00Z
- flags:
- createsNegativeBalance: true
- subLedgerID: mysubledger
- customerSessionID: t2gy5s-47274
- type: addition
- userID: 499
- expiryDate: 2022-07-20T22:00:00Z
- archived: false
- customerProfileID: URNGV8294NV
- cardID: 241
- name: Add points on purchase
- validityDuration: 30D
- programID: 5
- startDate: 2021-07-20T22:00:00Z
- currentTier:
- expiryDate: 2000-01-23T04:56:07.000+00:00
- downgradePolicy: one_down
- name: bronze
- id: 11
- startDate: 2000-01-23T04:56:07.000+00:00
- pendingPoints:
- - eventID: 5
- amount: 100.0
- created: 2021-07-20T22:00:00Z
- flags:
- createsNegativeBalance: true
- subLedgerID: mysubledger
- customerSessionID: t2gy5s-47274
- type: addition
- userID: 499
- expiryDate: 2022-07-20T22:00:00Z
- archived: false
- customerProfileID: URNGV8294NV
- cardID: 241
- name: Add points on purchase
- validityDuration: 30D
- programID: 5
- startDate: 2021-07-20T22:00:00Z
- - eventID: 5
- amount: 100.0
- created: 2021-07-20T22:00:00Z
- flags:
- createsNegativeBalance: true
- subLedgerID: mysubledger
- customerSessionID: t2gy5s-47274
- type: addition
- userID: 499
- expiryDate: 2022-07-20T22:00:00Z
- archived: false
- customerProfileID: URNGV8294NV
- cardID: 241
- name: Add points on purchase
- validityDuration: 30D
- programID: 5
- startDate: 2021-07-20T22:00:00Z
- subLedgers:
- mysubledger:
- total: 0
- totalActivePoints: 286
- totalPendingPoints: 50
- totalSpentPoints: 150
- totalExpiredPoints: 25
- totalNegativePoints: 0
- properties:
- ledger:
- $ref: '#/components/schemas/LoyaltySubLedger'
- subLedgers:
- additionalProperties:
- $ref: '#/components/schemas/LoyaltySubLedger'
- description: A map containing a list of all loyalty subledger balances.
- example:
- mysubledger:
- total: 0
- totalActivePoints: 286
- totalPendingPoints: 50
- totalSpentPoints: 150
- totalExpiredPoints: 25
- totalNegativePoints: 0
- type: object
- required:
- - ledger
+ - isPrimary
+ - name
type: object
- DeductLoyaltyPoints:
- description: Points to deduct.
+ Experiment:
example:
- subledgerId: sub-123
- name: Penalty
- applicationId: 322
+ goalType: other
+ goalDescription: Offering free shipping will increase average order revenue
+ more than a 10% discount
+ deletedat: 2000-01-23T04:56:07.000+00:00
+ created: 2020-06-10T09:05:27.993483Z
+ campaign:
+ type: advanced
+ templateId: 3
+ customEffectCount: 0
+ activeRevisionId: 6
+ features:
+ - coupons
+ - referrals
+ createdLoyaltyPointsCount: 9.0
+ storesImported: true
+ couponSettings:
+ couponPattern: SUMMER-####-####
+ validCharacters:
+ - A
+ - B
+ - C
+ - D
+ - E
+ - F
+ - G
+ - H
+ - I
+ - J
+ - K
+ - L
+ - M
+ - "N"
+ - O
+ - P
+ - Q
+ - R
+ - S
+ - T
+ - U
+ - V
+ - W
+ - X
+ - "Y"
+ - Z
+ - "0"
+ - "1"
+ - "2"
+ - "3"
+ - "4"
+ - "5"
+ - "6"
+ - "7"
+ - "8"
+ - "9"
+ experimentId: 1
+ id: 4
+ state: enabled
+ couponAttributes: '{}'
+ reservecouponEffectCount: 9
+ updatedBy: Jane Doe
+ frontendState: running
+ created: 2020-06-10T09:05:27.993483Z
+ referralCreationCount: 8
+ stageRevision: false
+ couponRedemptionCount: 163
+ couponCreationCount: 16
+ version: 6
+ campaignGroups:
+ - 1
+ - 3
+ tags:
+ - summer
+ discountEffectCount: 343
+ budgets:
+ - limit: 1000.0
+ action: createCoupon
+ counter: 42.0
+ - limit: 1000.0
+ action: createCoupon
+ counter: 42.0
+ redeemedLoyaltyPointsCount: 8.0
+ name: Summer promotions
+ valueMapsIds:
+ - 100
+ - 215
+ applicationId: 322
+ updated: 2022-10-27T15:00:00Z
+ callApiEffectCount: 0
+ createdLoyaltyPointsEffectCount: 2
+ discountCount: 288.0
+ revisionFrontendState: revised
+ description: Campaign for all summer 2021 promotions
+ activeRevisionVersionId: 6
+ currentRevisionVersionId: 6
+ startTime: 2021-07-20T22:00:00Z
+ currentRevisionId: 6
+ limits:
+ - period: yearly
+ entities:
+ - Coupon
+ limit: 1000.0
+ action: createCoupon
+ - period: yearly
+ entities:
+ - Coupon
+ limit: 1000.0
+ action: createCoupon
+ activeRulesetId: 6
+ reevaluateOnReturn: true
+ userId: 388
+ awardedGiveawaysCount: 9
+ redeemedLoyaltyPointsEffectCount: 9
+ linkedStoreIds:
+ - 1
+ - 2
+ - 3
+ createdBy: John Doe
+ addFreeItemEffectCount: 0
+ referralSettings:
+ couponPattern: SUMMER-####-####
+ validCharacters:
+ - A
+ - B
+ - C
+ - D
+ - E
+ - F
+ - G
+ - H
+ - I
+ - J
+ - K
+ - L
+ - M
+ - "N"
+ - O
+ - P
+ - Q
+ - R
+ - S
+ - T
+ - U
+ - V
+ - W
+ - X
+ - "Y"
+ - Z
+ - "0"
+ - "1"
+ - "2"
+ - "3"
+ - "4"
+ - "5"
+ - "6"
+ - "7"
+ - "8"
+ - "9"
+ attributes: '{}'
+ lastActivity: 2022-11-10T23:00:00Z
+ endTime: 2021-09-22T22:00:00Z
+ referralRedemptionCount: 3
+ id: 6
+ state: enabled
+ variants:
+ - created: 2020-06-10T09:05:27.993483Z
+ isPrimary: true
+ name: Variant A
+ ruleset:
+ rbVersion: v2
+ created: 2020-06-10T09:05:27.993483Z
+ campaignId: 320
+ bindings: []
+ activatedAt: 2000-01-23T04:56:07.000+00:00
+ activate: true
+ rules:
+ - condition:
+ - and
+ - - couponValid
+ effects:
+ - catch
+ - - noop
+ - - setDiscount
+ - 10% off
+ - - '*'
+ - - "."
+ - Session
+ - Total
+ - - /
+ - 10
+ - 100
+ bindings:
+ - attributeId: 100
+ minValue: 0.0
+ expression:
+ - identity
+ - 10
+ maxValue: 19.9
+ valueType: number
+ name: Discount percentage
+ description: The percentage discount applied to the cart total.
+ type: templateParameter
+ - attributeId: 100
+ minValue: 0.0
+ expression:
+ - identity
+ - 10
+ maxValue: 19.9
+ valueType: number
+ name: Discount percentage
+ description: The percentage discount applied to the cart total.
+ type: templateParameter
+ description: Creates a discount when a coupon is valid
+ id: 7fa800a8-ac8d-4792-85dc-c4650dcc8f23
+ title: Give discount via coupon
+ parentId: 7fa800a8-ac8d-4792-85dc-c4650dcc8f23
+ - condition:
+ - and
+ - - couponValid
+ effects:
+ - catch
+ - - noop
+ - - setDiscount
+ - 10% off
+ - - '*'
+ - - "."
+ - Session
+ - Total
+ - - /
+ - 10
+ - 100
+ bindings:
+ - attributeId: 100
+ minValue: 0.0
+ expression:
+ - identity
+ - 10
+ maxValue: 19.9
+ valueType: number
+ name: Discount percentage
+ description: The percentage discount applied to the cart total.
+ type: templateParameter
+ - attributeId: 100
+ minValue: 0.0
+ expression:
+ - identity
+ - 10
+ maxValue: 19.9
+ valueType: number
+ name: Discount percentage
+ description: The percentage discount applied to the cart total.
+ type: templateParameter
+ description: Creates a discount when a coupon is valid
+ id: 7fa800a8-ac8d-4792-85dc-c4650dcc8f23
+ title: Give discount via coupon
+ parentId: 7fa800a8-ac8d-4792-85dc-c4650dcc8f23
+ id: 6
+ strikethroughRules:
+ - condition:
+ - and
+ - - couponValid
+ effects:
+ - catch
+ - - noop
+ - - setDiscount
+ - 10% off
+ - - '*'
+ - - "."
+ - Session
+ - Total
+ - - /
+ - 10
+ - 100
+ bindings:
+ - attributeId: 100
+ minValue: 0.0
+ expression:
+ - identity
+ - 10
+ maxValue: 19.9
+ valueType: number
+ name: Discount percentage
+ description: The percentage discount applied to the cart total.
+ type: templateParameter
+ - attributeId: 100
+ minValue: 0.0
+ expression:
+ - identity
+ - 10
+ maxValue: 19.9
+ valueType: number
+ name: Discount percentage
+ description: The percentage discount applied to the cart total.
+ type: templateParameter
+ description: Creates a discount when a coupon is valid
+ id: 7fa800a8-ac8d-4792-85dc-c4650dcc8f23
+ title: Give discount via coupon
+ parentId: 7fa800a8-ac8d-4792-85dc-c4650dcc8f23
+ - condition:
+ - and
+ - - couponValid
+ effects:
+ - catch
+ - - noop
+ - - setDiscount
+ - 10% off
+ - - '*'
+ - - "."
+ - Session
+ - Total
+ - - /
+ - 10
+ - 100
+ bindings:
+ - attributeId: 100
+ minValue: 0.0
+ expression:
+ - identity
+ - 10
+ maxValue: 19.9
+ valueType: number
+ name: Discount percentage
+ description: The percentage discount applied to the cart total.
+ type: templateParameter
+ - attributeId: 100
+ minValue: 0.0
+ expression:
+ - identity
+ - 10
+ maxValue: 19.9
+ valueType: number
+ name: Discount percentage
+ description: The percentage discount applied to the cart total.
+ type: templateParameter
+ description: Creates a discount when a coupon is valid
+ id: 7fa800a8-ac8d-4792-85dc-c4650dcc8f23
+ title: Give discount via coupon
+ parentId: 7fa800a8-ac8d-4792-85dc-c4650dcc8f23
+ templateId: 3
+ userId: 388
+ weight: 12
+ experimentId: 10
+ id: 6
+ - created: 2020-06-10T09:05:27.993483Z
+ isPrimary: true
+ name: Variant A
+ ruleset:
+ rbVersion: v2
+ created: 2020-06-10T09:05:27.993483Z
+ campaignId: 320
+ bindings: []
+ activatedAt: 2000-01-23T04:56:07.000+00:00
+ activate: true
+ rules:
+ - condition:
+ - and
+ - - couponValid
+ effects:
+ - catch
+ - - noop
+ - - setDiscount
+ - 10% off
+ - - '*'
+ - - "."
+ - Session
+ - Total
+ - - /
+ - 10
+ - 100
+ bindings:
+ - attributeId: 100
+ minValue: 0.0
+ expression:
+ - identity
+ - 10
+ maxValue: 19.9
+ valueType: number
+ name: Discount percentage
+ description: The percentage discount applied to the cart total.
+ type: templateParameter
+ - attributeId: 100
+ minValue: 0.0
+ expression:
+ - identity
+ - 10
+ maxValue: 19.9
+ valueType: number
+ name: Discount percentage
+ description: The percentage discount applied to the cart total.
+ type: templateParameter
+ description: Creates a discount when a coupon is valid
+ id: 7fa800a8-ac8d-4792-85dc-c4650dcc8f23
+ title: Give discount via coupon
+ parentId: 7fa800a8-ac8d-4792-85dc-c4650dcc8f23
+ - condition:
+ - and
+ - - couponValid
+ effects:
+ - catch
+ - - noop
+ - - setDiscount
+ - 10% off
+ - - '*'
+ - - "."
+ - Session
+ - Total
+ - - /
+ - 10
+ - 100
+ bindings:
+ - attributeId: 100
+ minValue: 0.0
+ expression:
+ - identity
+ - 10
+ maxValue: 19.9
+ valueType: number
+ name: Discount percentage
+ description: The percentage discount applied to the cart total.
+ type: templateParameter
+ - attributeId: 100
+ minValue: 0.0
+ expression:
+ - identity
+ - 10
+ maxValue: 19.9
+ valueType: number
+ name: Discount percentage
+ description: The percentage discount applied to the cart total.
+ type: templateParameter
+ description: Creates a discount when a coupon is valid
+ id: 7fa800a8-ac8d-4792-85dc-c4650dcc8f23
+ title: Give discount via coupon
+ parentId: 7fa800a8-ac8d-4792-85dc-c4650dcc8f23
+ id: 6
+ strikethroughRules:
+ - condition:
+ - and
+ - - couponValid
+ effects:
+ - catch
+ - - noop
+ - - setDiscount
+ - 10% off
+ - - '*'
+ - - "."
+ - Session
+ - Total
+ - - /
+ - 10
+ - 100
+ bindings:
+ - attributeId: 100
+ minValue: 0.0
+ expression:
+ - identity
+ - 10
+ maxValue: 19.9
+ valueType: number
+ name: Discount percentage
+ description: The percentage discount applied to the cart total.
+ type: templateParameter
+ - attributeId: 100
+ minValue: 0.0
+ expression:
+ - identity
+ - 10
+ maxValue: 19.9
+ valueType: number
+ name: Discount percentage
+ description: The percentage discount applied to the cart total.
+ type: templateParameter
+ description: Creates a discount when a coupon is valid
+ id: 7fa800a8-ac8d-4792-85dc-c4650dcc8f23
+ title: Give discount via coupon
+ parentId: 7fa800a8-ac8d-4792-85dc-c4650dcc8f23
+ - condition:
+ - and
+ - - couponValid
+ effects:
+ - catch
+ - - noop
+ - - setDiscount
+ - 10% off
+ - - '*'
+ - - "."
+ - Session
+ - Total
+ - - /
+ - 10
+ - 100
+ bindings:
+ - attributeId: 100
+ minValue: 0.0
+ expression:
+ - identity
+ - 10
+ maxValue: 19.9
+ valueType: number
+ name: Discount percentage
+ description: The percentage discount applied to the cart total.
+ type: templateParameter
+ - attributeId: 100
+ minValue: 0.0
+ expression:
+ - identity
+ - 10
+ maxValue: 19.9
+ valueType: number
+ name: Discount percentage
+ description: The percentage discount applied to the cart total.
+ type: templateParameter
+ description: Creates a discount when a coupon is valid
+ id: 7fa800a8-ac8d-4792-85dc-c4650dcc8f23
+ title: Give discount via coupon
+ parentId: 7fa800a8-ac8d-4792-85dc-c4650dcc8f23
+ templateId: 3
+ userId: 388
+ weight: 12
+ experimentId: 10
+ id: 6
+ applicationId: 322
+ isVariantAssignmentExternal: true
+ activated: 2000-01-23T04:56:07.000+00:00
+ properties:
+ id:
+ description: The internal ID of this entity.
+ example: 6
+ format: int64
+ type: integer
+ created:
+ description: The time this entity was created.
+ example: 2020-06-10T09:05:27.993483Z
+ format: date-time
+ type: string
+ applicationId:
+ description: The ID of the Application that owns this entity.
+ example: 322
+ format: int64
+ type: integer
+ isVariantAssignmentExternal:
+ description: |
+ The source of the assignment. - false - The variant assignment is handled internally by Talon.One. - true - The variant assignment is handled externally.
+ type: boolean
+ campaign:
+ $ref: '#/components/schemas/Campaign'
+ activated:
+ description: |
+ The date and time the experiment was activated.
+ format: date-time
+ type: string
+ state:
+ default: disabled
+ description: |
+ A disabled experiment is not evaluated for rules or coupons.
+ enum:
+ - enabled
+ - disabled
+ - archived
+ example: enabled
+ type: string
+ variants:
+ items:
+ $ref: '#/components/schemas/ExperimentVariant'
+ type: array
+ goalType:
+ description: |
+ The goal of the experiment. Determines which single metric is used to decide the winning variant. When set to `other`, multiple metrics are used.
+ enum:
+ - other
+ - maximize_revenue
+ - optimize_discount_efficiency
+ - maximize_items_sold
+ type: string
+ goalDescription:
+ description: |
+ A description of the experiment goal. Provides context for the AI summary and helps it interpret the outcome of the experiment against the stated goal.
+ example: Offering free shipping will increase average order revenue more
+ than a 10% discount
+ type: string
+ deletedat:
+ description: |
+ The date and time the experiment was deleted.
+ format: date-time
+ type: string
+ required:
+ - applicationId
+ - created
+ - goalType
+ - id
+ - state
+ type: object
+ NewExperiment:
+ properties:
+ isVariantAssignmentExternal:
+ description: |
+ The source of the assignment. - false - The variant assignment is handled internally by Talon.One. - true - The variant assignment is handled externally.
+ type: boolean
+ campaign:
+ $ref: '#/components/schemas/NewCampaign'
+ goalType:
+ default: other
+ description: |
+ The goal of the experiment. Determines which single metric is used to decide the winning variant. When set to `other`, multiple metrics are used.
+ enum:
+ - other
+ - maximize_revenue
+ - maximize_items_sold
+ - optimize_discount_efficiency
+ type: string
+ goalDescription:
+ description: |
+ A description of the experiment goal. Provides context for the AI summary and helps it interpret the outcome of the experiment against the stated goal.
+ example: Offering free shipping will increase average order revenue more
+ than a 10% discount
+ type: string
+ required:
+ - campaign
+ - goalType
+ - isVariantAssignmentExternal
+ type: object
+ ExperimentListResultsRequest:
+ properties:
+ experimentIds:
+ items:
+ format: int64
+ type: integer
+ type: array
+ required:
+ - experimentIds
+ type: object
+ ExperimentVariantResult:
+ properties:
+ variantId:
+ description: The ID of the variant.
+ example: 1
+ format: int64
+ type: integer
+ variantName:
+ description: The name of the variant.
+ example: Variant A
+ type: string
+ variantWeight:
+ description: The weight of the variant.
+ example: 50
+ format: int64
+ type: integer
+ isWinner:
+ description: Calculated flag if the variant is the winner.
+ example: true
+ type: boolean
+ totalRevenue:
+ description: The total, pre-discount value of all items purchased in a customer
+ session.
+ example: 100.0
+ type: number
+ sessionsCount:
+ description: The number of all closed sessions.
+ example: 100.0
+ type: number
+ avgItemsPerSession:
+ description: The number of items from sessions divided by the number of
+ sessions.
+ example: 100.0
+ type: number
+ avgSessionValue:
+ description: The average customer session value, calculated by dividing
+ the revenue value by the number of sessions.
+ example: 100.0
+ type: number
+ avgDiscountedSessionValue:
+ description: The average customer session value, calculated by dividing
+ the revenue value by the number of sessions.
+ example: 100.0
+ type: number
+ totalDiscounts:
+ description: The total value of discounts given for cart items in sessions.
+ example: 10.0
+ type: number
+ couponsCount:
+ description: The number of times a coupon was successfully redeemed in sessions.
+ example: 12.0
+ type: number
+ type: object
+ ExperimentVariantResultConfidence:
+ properties:
+ avgSessionValue:
+ description: The calculated confidence value of the average customer session
+ value.
+ example: 100.0
+ type: number
+ avgDiscountedSessionValue:
+ description: The calculated confidence value of the average customer discounted
+ session value.
+ example: 100.0
+ type: number
+ avgItemsPerSession:
+ description: The calculated confidence value of the number of items from
+ sessions value.
+ example: 100.0
+ type: number
+ required:
+ - avgDiscountedSessionValue
+ - avgItemsPerSession
+ - avgSessionValue
+ type: object
+ ExperimentResults:
+ properties:
+ variants:
+ items:
+ $ref: '#/components/schemas/ExperimentVariantResult'
+ type: array
+ confidence:
+ $ref: '#/components/schemas/ExperimentVariantResultConfidence'
+ required:
+ - confidence
+ - variants
+ type: object
+ ExperimentResult:
+ properties:
+ variants:
+ items:
+ $ref: '#/components/schemas/ExperimentVariantResult'
+ type: array
+ confidence:
+ $ref: '#/components/schemas/ExperimentVariantResultConfidence'
+ experimentId:
+ example: 1
+ format: int64
+ type: integer
+ required:
+ - confidence
+ - experimentId
+ - variants
+ type: object
+ ExperimentListResults:
+ properties:
+ results:
+ items:
+ $ref: '#/components/schemas/ExperimentResult'
+ type: array
+ type: object
+ UpdateExperiment:
+ properties:
+ isVariantAssignmentExternal:
+ description: |
+ The source of the assignment. - false - The variant assignment is handled internally by Talon.One. - true - The variant assignment is handled externally.
+ type: boolean
+ campaign:
+ $ref: '#/components/schemas/UpdateCampaign'
+ goalType:
+ description: |
+ The goal of the experiment. Determines which single metric is used to decide the winning variant. When set to `other`, multiple metrics are used. If omitted, the current value is preserved.
+ enum:
+ - other
+ - maximize_revenue
+ - maximize_items_sold
+ - optimize_discount_efficiency
+ type: string
+ goalDescription:
+ description: |
+ A description of the experiment goal. Provides context for the AI summary and helps it interpret the outcome of the experiment against the stated goal. If omitted, the current value is preserved.
+ example: Offering free shipping will increase average order revenue more
+ than a 10% discount
+ type: string
+ required:
+ - campaign
+ - isVariantAssignmentExternal
+ type: object
+ UpdateExperimentVariant:
+ properties:
+ id:
+ example: 10
+ format: int64
+ type: integer
+ name:
+ description: The name of this variant.
+ example: Variant A
+ maxLength: 255
+ minLength: 1
+ type: string
+ ruleset:
+ $ref: '#/components/schemas/NewRuleset'
+ weight:
+ description: The percentage split of this variant. The sum of all variant
+ percentages must be 100.
+ example: 13
+ format: int64
+ maximum: 99
+ minimum: 1
+ type: integer
+ required:
+ - id
+ - name
+ - ruleset
+ - weight
+ type: object
+ UpdateExperimentVariantArray:
+ properties:
+ variants:
+ description: Array of experiment variants to update
+ items:
+ $ref: '#/components/schemas/UpdateExperimentVariant'
+ type: array
+ required:
+ - variants
+ type: object
+ NewExperimentVariant:
+ properties:
+ name:
+ description: The name of this variant.
+ example: Variant A
+ maxLength: 255
+ minLength: 1
+ type: string
+ weight:
+ description: The percentage split of this variant. The sum of all variant
+ percentages must be 100.
+ example: 13
+ format: int64
+ maximum: 99
+ minimum: 1
+ type: integer
+ ruleset:
+ $ref: '#/components/schemas/NewRuleset'
+ isPrimary:
+ example: true
+ type: boolean
+ required:
+ - isPrimary
+ - name
+ - ruleset
+ - weight
+ type: object
+ NewExperimentVariantArray:
+ properties:
+ variants:
+ description: Array of experiment variants to create
+ items:
+ $ref: '#/components/schemas/NewExperimentVariant'
+ type: array
+ required:
+ - variants
+ type: object
+ UpdateExperimentVariantName:
+ properties:
+ name:
+ description: The name of the variant.
+ example: Variant A
+ maxLength: 255
+ minLength: 1
+ type: string
+ required:
+ - name
+ type: object
+ ExperimentCampaignCopy:
+ properties:
+ name:
+ description: Name of the copied campaign (Defaults to "Copy of original
+ campaign name").
+ example: Copy of Summer promotions
+ type: string
+ description:
+ description: A detailed description of the campaign.
+ example: Campaign for all summer 2021 promotions
+ title: Campaign Description
+ type: string
+ startTime:
+ description: Timestamp when the campaign will become active.
+ example: 2021-06-01T09:00:27.993483Z
+ format: date-time
+ type: string
+ endTime:
+ description: Timestamp when the campaign will become inactive.
+ example: 2021-09-10T01:00:00.993483Z
+ format: date-time
+ type: string
+ tags:
+ description: A list of tags for the campaign.
+ example:
+ - Summer
+ - Shoes
+ items:
+ maxLength: 50
+ minLength: 1
+ type: string
+ maxItems: 50
+ type: array
+ evaluationGroupId:
+ description: The ID of the campaign evaluation group the campaign belongs
+ to.
+ example: 2
+ format: int64
+ type: integer
+ type: object
+ ExperimentCopy:
+ properties:
+ targetApplicationId:
+ description: |
+ The ID of the Application to copy the experiment. It is displayed in your Talon.One deployment URL.
+ format: int64
+ type: integer
+ experiment:
+ $ref: '#/components/schemas/ExperimentCopy_experiment'
+ required:
+ - experiment
+ - targetApplicationId
+ type: object
+ PromoteExperiment:
+ properties:
+ targetApplicationId:
+ description: |
+ The ID of the Application to copy the experiment. It is displayed in your Talon.One deployment URL.
+ format: int64
+ type: integer
+ variantId:
+ description: |
+ The ID of the Experiment Variant to build the new campaign.
+ format: int64
+ type: integer
+ disableExperiment:
+ description: |
+ Force disable the experiment.
+ type: boolean
+ campaign:
+ $ref: '#/components/schemas/ExperimentCampaignCopy'
+ required:
+ - campaign
+ - targetApplicationId
+ - variantId
+ type: object
+ ExperimentVerdict:
+ properties:
+ winnerVariantName:
+ description: The name of the winning variant. If no variant shows a statistically
+ significant advantage on key business metrics, return 'Inconclusive'.
+ type: string
+ verdictSummary:
+ description: A one-sentence summary of the outcome, including the key metric
+ and confidence level that led to the decision.
+ type: string
+ keyFindings:
+ description: A bullet point stating the most important finding, including
+ the metric, the percentage change, and the confidence.
+ items:
+ type: string
+ type: array
+ aiConfidenceLevel:
+ description: Your confidence in this overall verdict, from 0 to 100.
+ type: string
+ recommendation:
+ description: A short, actionable recommendation based on the findings. If
+ inconclusive, suggest running the test longer. If there is a clear winner,
+ recommend promoting it.
+ type: string
+ required:
+ - aiConfidenceLevel
+ - keyFindings
+ - recommendation
+ - verdictSummary
+ - winnerVariantName
+ type: object
+ ExperimentVerdictResponse:
+ properties:
+ verdict:
+ $ref: '#/components/schemas/ExperimentVerdict'
+ generated:
+ description: Timestamp of the moment when the verdict was generated.
+ format: date-time
+ type: string
+ required:
+ - generated
+ - verdict
+ type: object
+ ExperimentSegmentInsightVariant:
+ properties:
+ variantId:
+ description: The ID of the experiment variant.
+ example: 41
+ format: int64
+ type: integer
+ variantName:
+ description: The name of the experiment variant.
+ example: Control
+ type: string
+ sessionsCount:
+ description: The number of sessions in this segment for this variant.
+ example: 161
+ format: int64
+ type: integer
+ value:
+ description: The metric value for this variant in the segment.
+ example: 13.13
+ format: double
+ type: number
+ required:
+ - sessionsCount
+ - value
+ - variantId
+ - variantName
+ type: object
+ ExperimentSegmentInsight:
+ properties:
+ dimension:
+ description: The segmentation dimension used to group customers or purchases
+ for analysis.
+ enum:
+ - cart_value
+ - item_count
+ - customer_type
+ example: cart_value
+ type: string
+ bucket:
+ description: The specific group within the segmentation dimension.
+ enum:
+ - low
+ - medium
+ - high
+ - new
+ - returning
+ - loyal
+ example: high
+ type: string
+ confidence:
+ description: |
+ The raw (unadjusted) confidence score expressed as a percentage. Only segments with a confidence score greater than or equal to 95% are returned.
+ example: 99.2
+ format: double
+ maximum: 1E+2
+ minimum: 95
+ type: number
+ winnerVariantId:
+ description: The ID of the variant that performed better in this segment.
+ example: 42
+ format: int64
+ type: integer
+ variants:
+ description: Per-variant metric values for this segment.
+ items:
+ $ref: '#/components/schemas/ExperimentSegmentInsightVariant'
+ type: array
+ required:
+ - bucket
+ - confidence
+ - dimension
+ - variants
+ - winnerVariantId
+ type: object
+ ExperimentSegmentInsightMetric:
+ properties:
+ metric:
+ description: The metric being measured.
+ enum:
+ - avg_session_value
+ - avg_discounted_session_value
+ - avg_items_per_session
+ example: avg_session_value
+ type: string
+ segments:
+ description: |
+ Segments with statistically significant results for this metric. An empty array means no significant segments were found. Segments are sorted by confidence score from highest to lowest.
+ items:
+ $ref: '#/components/schemas/ExperimentSegmentInsight'
+ type: array
+ required:
+ - metric
+ - segments
+ type: object
+ ExperimentSegmentInsights:
+ properties:
+ metrics:
+ description: |
+ Segment insights grouped by metric. This array always contains exactly three metric objects. Each metric includes a segments array, which is empty if no significant results were found. The metrics array itself is empty if the `reason` property is populated.
+ items:
+ $ref: '#/components/schemas/ExperimentSegmentInsightMetric'
+ type: array
+ totalSegmentsTested:
+ description: |
+ Total number of segment-metric combinations that were tested for statistical significance.
+ example: 24
+ format: int64
+ type: integer
+ dimensionsTested:
+ description: |
+ Number of segmentation dimensions that had sufficient data variance to test. Dimensions where all sessions fall into a single bucket are excluded.
+ example: 3
+ format: int64
+ type: integer
+ reason:
+ description: |
+ Empty string when segment insights are available. Contains a reason code when insights could not be computed (e.g., "insufficient_data" when the experiment has fewer than 100 sessions per variant).
+ example: ""
+ type: string
+ required:
+ - dimensionsTested
+ - metrics
+ - reason
+ - totalSegmentsTested
+ type: object
+ ExperimentConfidenceTimelineDataPoint:
+ properties:
+ date:
+ description: The date-time this data point represents.
+ example: 2024-01-15T00:00:00+07:00
+ format: date-time
+ type: string
+ confidence:
+ $ref: '#/components/schemas/ExperimentVariantResultConfidence'
+ required:
+ - confidence
+ - date
+ type: object
+ ExperimentConfidenceTimeline:
+ properties:
+ data:
+ description: |
+ Daily cumulative confidence values ordered chronologically from experiment start to end, or to today if the experiment is still running. Empty if the experiment has no data yet.
+ items:
+ $ref: '#/components/schemas/ExperimentConfidenceTimelineDataPoint'
+ type: array
+ required:
+ - data
+ type: object
+ CreateTemplateCampaign:
+ example:
+ campaignAttributesOverrides: '{}'
+ linkedStoreIds:
+ - 1
+ - 2
+ - 3
+ evaluationGroupId: 2
+ name: Discount campaign
+ description: This template is for discount campaigns.
+ limitOverrides:
+ - period: yearly
+ entities:
+ - Coupon
+ limit: 1000.0
+ action: createCoupon
+ - period: yearly
+ entities:
+ - Coupon
+ limit: 1000.0
+ action: createCoupon
+ templateParamValues:
+ - attributeId: 100
+ minValue: 0.0
+ expression:
+ - identity
+ - 10
+ maxValue: 19.9
+ valueType: number
+ name: Discount percentage
+ description: The percentage discount applied to the cart total.
+ type: templateParameter
+ - attributeId: 100
+ minValue: 0.0
+ expression:
+ - identity
+ - 10
+ maxValue: 19.9
+ valueType: number
+ name: Discount percentage
+ description: The percentage discount applied to the cart total.
+ type: templateParameter
+ templateId: 4
+ campaignGroups:
+ - 1
+ - 3
+ tags:
+ - summer
+ properties:
+ name:
+ description: A user-facing name for this campaign.
+ example: Discount campaign
+ minLength: 1
+ title: Campaign Name
+ type: string
+ description:
+ description: A detailed description of the campaign.
+ example: This template is for discount campaigns.
+ title: Campaign Description
+ type: string
+ templateId:
+ description: The ID of the Campaign Template which will be used in order
+ to create the Campaign.
+ example: 4
+ format: int64
+ type: integer
+ campaignAttributesOverrides:
+ description: Custom Campaign Attributes. If the Campaign Template defines
+ the same values, they will be overridden.
+ properties: {}
+ type: object
+ templateParamValues:
+ description: Actual values to replace the template placeholder values in
+ the Ruleset bindings. Values for all Template Parameters must be provided.
+ items:
+ $ref: '#/components/schemas/Binding'
+ type: array
+ limitOverrides:
+ description: Limits for this Campaign. If the Campaign Template or Application
+ define default values for the same limits, they will be overridden.
+ items:
+ $ref: '#/components/schemas/LimitConfig'
+ type: array
+ campaignGroups:
+ description: |
+ The IDs of the [campaign groups](https://docs.talon.one/docs/product/account/account-settings/managing-campaign-groups) this campaign belongs to.
+ example:
+ - 1
+ - 3
+ items:
+ format: int64
+ type: integer
+ type: array
+ tags:
+ description: A list of tags for the campaign. If the campaign template has
+ tags, they will be overridden by this list.
+ example:
+ - summer
+ items:
+ maxLength: 50
+ minLength: 1
+ type: string
+ maxItems: 50
+ type: array
+ evaluationGroupId:
+ description: The ID of the campaign evaluation group the campaign belongs
+ to.
+ example: 2
+ format: int64
+ type: integer
+ linkedStoreIds:
+ description: |
+ A list of store IDs that are linked to the campaign.
+
+ **Note:** Campaigns with linked store IDs will only be evaluated when there is a
+ [customer session update](https://docs.talon.one/integration-api#tag/Customer-sessions/operation/updateCustomerSessionV2)
+ that references a linked store.
+ example:
+ - 1
+ - 2
+ - 3
+ items:
+ format: int64
+ type: integer
+ type: array
+ required:
+ - name
+ - templateId
+ type: object
+ UpdateCollection:
+ example:
+ subscribedApplicationsIds:
+ - 1
+ - 2
+ - 3
+ description: My collection of SKUs
+ properties:
+ description:
+ description: A short description of the purpose of this collection.
+ example: My collection of SKUs
+ type: string
+ subscribedApplicationsIds:
+ description: A list of the IDs of the Applications where this collection
+ is enabled.
+ example:
+ - 1
+ - 2
+ - 3
+ items:
+ format: int64
+ type: integer
+ type: array
+ type: object
+ NewCollection:
+ example:
+ subscribedApplicationsIds:
+ - 1
+ - 2
+ - 3
+ name: My collection
+ description: My collection of SKUs
+ properties:
+ description:
+ description: A short description of the purpose of this collection.
+ example: My collection of SKUs
+ type: string
+ subscribedApplicationsIds:
+ description: A list of the IDs of the Applications where this collection
+ is enabled.
+ example:
+ - 1
+ - 2
+ - 3
+ items:
+ format: int64
+ type: integer
+ type: array
+ name:
+ description: The name of this collection.
+ example: My collection
+ minLength: 1
+ pattern: ^[^[:cntrl:]\s][^[:cntrl:]]*$
+ type: string
+ required:
+ - name
+ type: object
+ CollectionWithoutPayload:
+ example:
+ accountId: 3886
+ createdBy: 134
+ created: 2020-06-10T09:05:27.993483Z
+ campaignId: 7
+ subscribedApplicationsIds:
+ - 1
+ - 2
+ - 3
+ name: My collection
+ modified: 2021-09-12T10:12:42Z
+ description: My collection of SKUs
+ modifiedBy: 48
+ id: 6
+ applicationId: 1
+ properties:
+ id:
+ description: The internal ID of this entity.
+ example: 6
+ format: int64
+ type: integer
+ created:
+ description: The time this entity was created.
+ example: 2020-06-10T09:05:27.993483Z
+ format: date-time
+ type: string
+ accountId:
+ description: The ID of the account that owns this entity.
+ example: 3886
+ format: int64
+ type: integer
+ modified:
+ description: The time this entity was last modified.
+ example: 2021-09-12T10:12:42Z
+ format: date-time
+ type: string
+ description:
+ description: A short description of the purpose of this collection.
+ example: My collection of SKUs
+ type: string
+ subscribedApplicationsIds:
+ description: A list of the IDs of the Applications where this collection
+ is enabled.
+ example:
+ - 1
+ - 2
+ - 3
+ items:
+ format: int64
+ type: integer
+ type: array
+ name:
+ description: The name of this collection.
+ example: My collection
+ minLength: 1
+ pattern: ^[^[:cntrl:]\s][^[:cntrl:]]*$
+ type: string
+ modifiedBy:
+ description: ID of the user who last updated this effect if available.
+ example: 48
+ format: int64
+ type: integer
+ createdBy:
+ description: ID of the user who created this effect.
+ example: 134
+ format: int64
+ type: integer
+ applicationId:
+ description: The ID of the Application that owns this entity.
+ example: 1
+ format: int64
+ type: integer
+ campaignId:
+ description: The ID of the campaign that owns this entity.
+ example: 7
+ format: int64
+ type: integer
+ required:
+ - accountId
+ - created
+ - createdBy
+ - id
+ - modified
+ - name
+ type: object
+ Collection:
+ example:
+ accountId: 3886
+ createdBy: 134
+ payload:
+ - KTL-WH-ET-1
+ - KTL-BL-ET-1
+ created: 2020-06-10T09:05:27.993483Z
+ campaignId: 7
+ subscribedApplicationsIds:
+ - 1
+ - 2
+ - 3
+ name: My collection
+ modified: 2021-09-12T10:12:42Z
+ description: My collection of SKUs
+ modifiedBy: 48
+ id: 6
+ applicationId: 1
+ properties:
+ id:
+ description: The internal ID of this entity.
+ example: 6
+ format: int64
+ type: integer
+ created:
+ description: The time this entity was created.
+ example: 2020-06-10T09:05:27.993483Z
+ format: date-time
+ type: string
+ accountId:
+ description: The ID of the account that owns this entity.
+ example: 3886
+ format: int64
+ type: integer
+ modified:
+ description: The time this entity was last modified.
+ example: 2021-09-12T10:12:42Z
+ format: date-time
+ type: string
+ description:
+ description: A short description of the purpose of this collection.
+ example: My collection of SKUs
+ type: string
+ subscribedApplicationsIds:
+ description: A list of the IDs of the Applications where this collection
+ is enabled.
+ example:
+ - 1
+ - 2
+ - 3
+ items:
+ format: int64
+ type: integer
+ type: array
+ name:
+ description: The name of this collection.
+ example: My collection
+ minLength: 1
+ pattern: ^[^[:cntrl:]\s][^[:cntrl:]]*$
+ type: string
+ modifiedBy:
+ description: ID of the user who last updated this effect if available.
+ example: 48
+ format: int64
+ type: integer
+ createdBy:
+ description: ID of the user who created this effect.
+ example: 134
+ format: int64
+ type: integer
+ applicationId:
+ description: The ID of the Application that owns this entity.
+ example: 1
+ format: int64
+ type: integer
+ campaignId:
+ description: The ID of the campaign that owns this entity.
+ example: 7
+ format: int64
+ type: integer
+ payload:
+ description: The content of the collection.
+ example:
+ - KTL-WH-ET-1
+ - KTL-BL-ET-1
+ items:
+ type: string
+ maxItems: 50
+ type: array
+ required:
+ - accountId
+ - created
+ - createdBy
+ - id
+ - modified
+ - name
+ type: object
+ CreateTemplateCampaignResponse:
+ example:
+ collections:
+ - accountId: 3886
+ createdBy: 134
+ payload:
+ - KTL-WH-ET-1
+ - KTL-BL-ET-1
+ created: 2020-06-10T09:05:27.993483Z
+ campaignId: 7
+ subscribedApplicationsIds:
+ - 1
+ - 2
+ - 3
+ name: My collection
+ modified: 2021-09-12T10:12:42Z
+ description: My collection of SKUs
+ modifiedBy: 48
+ id: 6
+ applicationId: 1
+ - accountId: 3886
+ createdBy: 134
+ payload:
+ - KTL-WH-ET-1
+ - KTL-BL-ET-1
+ created: 2020-06-10T09:05:27.993483Z
+ campaignId: 7
+ subscribedApplicationsIds:
+ - 1
+ - 2
+ - 3
+ name: My collection
+ modified: 2021-09-12T10:12:42Z
+ description: My collection of SKUs
+ modifiedBy: 48
+ id: 6
+ applicationId: 1
+ ruleset:
+ rbVersion: v2
+ created: 2020-06-10T09:05:27.993483Z
+ campaignId: 320
+ bindings: []
+ activatedAt: 2000-01-23T04:56:07.000+00:00
+ activate: true
+ rules:
+ - condition:
+ - and
+ - - couponValid
+ effects:
+ - catch
+ - - noop
+ - - setDiscount
+ - 10% off
+ - - '*'
+ - - "."
+ - Session
+ - Total
+ - - /
+ - 10
+ - 100
+ bindings:
+ - attributeId: 100
+ minValue: 0.0
+ expression:
+ - identity
+ - 10
+ maxValue: 19.9
+ valueType: number
+ name: Discount percentage
+ description: The percentage discount applied to the cart total.
+ type: templateParameter
+ - attributeId: 100
+ minValue: 0.0
+ expression:
+ - identity
+ - 10
+ maxValue: 19.9
+ valueType: number
+ name: Discount percentage
+ description: The percentage discount applied to the cart total.
+ type: templateParameter
+ description: Creates a discount when a coupon is valid
+ id: 7fa800a8-ac8d-4792-85dc-c4650dcc8f23
+ title: Give discount via coupon
+ parentId: 7fa800a8-ac8d-4792-85dc-c4650dcc8f23
+ - condition:
+ - and
+ - - couponValid
+ effects:
+ - catch
+ - - noop
+ - - setDiscount
+ - 10% off
+ - - '*'
+ - - "."
+ - Session
+ - Total
+ - - /
+ - 10
+ - 100
+ bindings:
+ - attributeId: 100
+ minValue: 0.0
+ expression:
+ - identity
+ - 10
+ maxValue: 19.9
+ valueType: number
+ name: Discount percentage
+ description: The percentage discount applied to the cart total.
+ type: templateParameter
+ - attributeId: 100
+ minValue: 0.0
+ expression:
+ - identity
+ - 10
+ maxValue: 19.9
+ valueType: number
+ name: Discount percentage
+ description: The percentage discount applied to the cart total.
+ type: templateParameter
+ description: Creates a discount when a coupon is valid
+ id: 7fa800a8-ac8d-4792-85dc-c4650dcc8f23
+ title: Give discount via coupon
+ parentId: 7fa800a8-ac8d-4792-85dc-c4650dcc8f23
+ id: 6
+ strikethroughRules:
+ - condition:
+ - and
+ - - couponValid
+ effects:
+ - catch
+ - - noop
+ - - setDiscount
+ - 10% off
+ - - '*'
+ - - "."
+ - Session
+ - Total
+ - - /
+ - 10
+ - 100
+ bindings:
+ - attributeId: 100
+ minValue: 0.0
+ expression:
+ - identity
+ - 10
+ maxValue: 19.9
+ valueType: number
+ name: Discount percentage
+ description: The percentage discount applied to the cart total.
+ type: templateParameter
+ - attributeId: 100
+ minValue: 0.0
+ expression:
+ - identity
+ - 10
+ maxValue: 19.9
+ valueType: number
+ name: Discount percentage
+ description: The percentage discount applied to the cart total.
+ type: templateParameter
+ description: Creates a discount when a coupon is valid
+ id: 7fa800a8-ac8d-4792-85dc-c4650dcc8f23
+ title: Give discount via coupon
+ parentId: 7fa800a8-ac8d-4792-85dc-c4650dcc8f23
+ - condition:
+ - and
+ - - couponValid
+ effects:
+ - catch
+ - - noop
+ - - setDiscount
+ - 10% off
+ - - '*'
+ - - "."
+ - Session
+ - Total
+ - - /
+ - 10
+ - 100
+ bindings:
+ - attributeId: 100
+ minValue: 0.0
+ expression:
+ - identity
+ - 10
+ maxValue: 19.9
+ valueType: number
+ name: Discount percentage
+ description: The percentage discount applied to the cart total.
+ type: templateParameter
+ - attributeId: 100
+ minValue: 0.0
+ expression:
+ - identity
+ - 10
+ maxValue: 19.9
+ valueType: number
+ name: Discount percentage
+ description: The percentage discount applied to the cart total.
+ type: templateParameter
+ description: Creates a discount when a coupon is valid
+ id: 7fa800a8-ac8d-4792-85dc-c4650dcc8f23
+ title: Give discount via coupon
+ parentId: 7fa800a8-ac8d-4792-85dc-c4650dcc8f23
+ templateId: 3
+ userId: 388
+ campaign:
+ type: advanced
+ templateId: 3
+ customEffectCount: 0
+ activeRevisionId: 6
+ features:
+ - coupons
+ - referrals
+ createdLoyaltyPointsCount: 9.0
+ storesImported: true
+ couponSettings:
+ couponPattern: SUMMER-####-####
+ validCharacters:
+ - A
+ - B
+ - C
+ - D
+ - E
+ - F
+ - G
+ - H
+ - I
+ - J
+ - K
+ - L
+ - M
+ - "N"
+ - O
+ - P
+ - Q
+ - R
+ - S
+ - T
+ - U
+ - V
+ - W
+ - X
+ - "Y"
+ - Z
+ - "0"
+ - "1"
+ - "2"
+ - "3"
+ - "4"
+ - "5"
+ - "6"
+ - "7"
+ - "8"
+ - "9"
+ experimentId: 1
+ id: 4
+ state: enabled
+ couponAttributes: '{}'
+ reservecouponEffectCount: 9
+ updatedBy: Jane Doe
+ frontendState: running
+ created: 2020-06-10T09:05:27.993483Z
+ referralCreationCount: 8
+ stageRevision: false
+ couponRedemptionCount: 163
+ couponCreationCount: 16
+ version: 6
+ campaignGroups:
+ - 1
+ - 3
+ tags:
+ - summer
+ discountEffectCount: 343
+ budgets:
+ - limit: 1000.0
+ action: createCoupon
+ counter: 42.0
+ - limit: 1000.0
+ action: createCoupon
+ counter: 42.0
+ redeemedLoyaltyPointsCount: 8.0
+ name: Summer promotions
+ valueMapsIds:
+ - 100
+ - 215
+ applicationId: 322
+ updated: 2022-10-27T15:00:00Z
+ callApiEffectCount: 0
+ createdLoyaltyPointsEffectCount: 2
+ discountCount: 288.0
+ revisionFrontendState: revised
+ description: Campaign for all summer 2021 promotions
+ activeRevisionVersionId: 6
+ currentRevisionVersionId: 6
+ startTime: 2021-07-20T22:00:00Z
+ currentRevisionId: 6
+ limits:
+ - period: yearly
+ entities:
+ - Coupon
+ limit: 1000.0
+ action: createCoupon
+ - period: yearly
+ entities:
+ - Coupon
+ limit: 1000.0
+ action: createCoupon
+ activeRulesetId: 6
+ reevaluateOnReturn: true
+ userId: 388
+ awardedGiveawaysCount: 9
+ redeemedLoyaltyPointsEffectCount: 9
+ linkedStoreIds:
+ - 1
+ - 2
+ - 3
+ createdBy: John Doe
+ addFreeItemEffectCount: 0
+ referralSettings:
+ couponPattern: SUMMER-####-####
+ validCharacters:
+ - A
+ - B
+ - C
+ - D
+ - E
+ - F
+ - G
+ - H
+ - I
+ - J
+ - K
+ - L
+ - M
+ - "N"
+ - O
+ - P
+ - Q
+ - R
+ - S
+ - T
+ - U
+ - V
+ - W
+ - X
+ - "Y"
+ - Z
+ - "0"
+ - "1"
+ - "2"
+ - "3"
+ - "4"
+ - "5"
+ - "6"
+ - "7"
+ - "8"
+ - "9"
+ attributes: '{}'
+ lastActivity: 2022-11-10T23:00:00Z
+ endTime: 2021-09-22T22:00:00Z
+ referralRedemptionCount: 3
+ properties:
+ campaign:
+ $ref: '#/components/schemas/Campaign'
+ ruleset:
+ $ref: '#/components/schemas/Ruleset'
+ collections:
+ items:
+ $ref: '#/components/schemas/Collection'
+ type: array
+ required:
+ - campaign
+ - ruleset
+ type: object
+ NewLoyaltyProgram:
+ description: A new loyalty program
+ properties:
+ title:
+ description: The display title for the Loyalty Program.
+ example: Point collection
+ type: string
+ description:
+ description: Description of our Loyalty Program.
+ example: Customers collect 10 points per 1$ spent
+ type: string
+ subscribedApplications:
+ description: A list containing the IDs of all applications that are subscribed
+ to this Loyalty Program.
+ example:
+ - 132
+ - 97
+ items:
+ format: int64
+ type: integer
+ type: array
+ defaultValidity:
+ description: |
+ The default duration after which new loyalty points should expire. Can be 'unlimited' or a specific time.
+ The time format is a number followed by one letter indicating the time unit, like '30s', '40m', '1h', '5D', '7W', or 10M'. These rounding suffixes are also supported:
+ - '_D' for rounding down. Can be used as a suffix after 'D', and signifies the start of the day.
+ - '_U' for rounding up. Can be used as a suffix after 'D', 'W', and 'M', and signifies the end of the day, week, and month.
+ example: 2W_U
+ type: string
+ defaultPending:
+ description: |
+ The default duration of the pending time after which points should be valid. Accepted values: 'immediate', 'on_action' or a specific time.
+ The time format is a number followed by one letter indicating the time unit, like '30s', '40m', '1h', '5D', '7W', or 10M'. These rounding suffixes are also supported:
+ - '_D' for rounding down. Can be used as a suffix after 'D', and signifies the start of the day.
+ - '_U' for rounding up. Can be used as a suffix after 'D', 'W', and 'M', and signifies the end of the day, week, and month.
+ example: immediate
+ type: string
+ allowSubledger:
+ description: Indicates if this program supports subledgers inside the program.
+ example: false
+ type: boolean
+ usersPerCardLimit:
+ description: |
+ The max amount of user profiles with whom a card can be shared. This can be set to 0 for no limit.
+ This property is only used when `cardBased` is `true`.
+ example: 111
+ format: int64
+ minimum: 0
+ type: integer
+ sandbox:
+ description: Indicates if this program is a live or sandbox program. Programs
+ of a given type can only be connected to Applications of the same type.
+ example: true
+ title: Sandbox
+ type: boolean
+ programJoinPolicy:
+ description: |
+ The policy that defines when the customer joins the loyalty program.
+ - `not_join`: The customer does not join the loyalty program but can still earn and spend loyalty points.
+
+ **Note**: The customer does not have a program join date.
+ - `points_activated`: The customer joins the loyalty program only when their earned loyalty points become active for the first time.
+ - `points_earned`: The customer joins the loyalty program when they earn loyalty points for the first time.
+ enum:
+ - not_join
+ - points_activated
+ - points_earned
+ type: string
+ tiersExpirationPolicy:
+ description: |
+ The policy that defines how tier expiration, used to reevaluate the customer's current tier, is determined.
+ - `tier_start_date`: The tier expiration is relative to when the customer joined the current tier.
+ - `program_join_date`: The tier expiration is relative to when the customer joined the loyalty program.
+ - `customer_attribute`: The tier expiration is determined by a custom customer attribute.
+ - `absolute_expiration`: The tier is reevaluated at the start of each tier cycle. For this policy, it is required to provide a `tierCycleStartDate`.
+ enum:
+ - tier_start_date
+ - program_join_date
+ - customer_attribute
+ - absolute_expiration
+ type: string
+ tierCycleStartDate:
+ description: |
+ Timestamp at which the tier cycle starts for all customers in the loyalty program.
+
+ **Note**: This is only required when the tier expiration policy is set to `absolute_expiration`.
+ example: 2021-09-12T10:12:42Z
+ format: date-time
+ type: string
+ tiersExpireIn:
+ description: |
+ The amount of time after which the tier expires and is reevaluated.
+
+ The time format is an **integer** followed by one letter indicating the time unit.
+ Examples: `30s`, `40m`, `1h`, `5D`, `7W`, `10M`, `15Y`.
+
+ Available units:
+
+ - `s`: seconds
+ - `m`: minutes
+ - `h`: hours
+ - `D`: days
+ - `W`: weeks
+ - `M`: months
+ - `Y`: years
+
+ You can round certain units up or down:
+ - `_D` for rounding down days only. Signifies the start of the day.
+ - `_U` for rounding up days, weeks, months and years. Signifies the end of the day, week, month or year.
+ example: 27W_U
+ type: string
+ tiersDowngradePolicy:
+ description: |
+ The policy that defines how customer tiers are downgraded in the loyalty program after tier reevaluation.
+ - `one_down`: If the customer doesn't have enough points to stay in the current tier, they are downgraded by one tier.
+ - `balance_based`: The customer's tier is reevaluated based on the amount of active points they have at the moment.
+ enum:
+ - one_down
+ - balance_based
+ type: string
+ cardCodeSettings:
+ $ref: '#/components/schemas/CodeGeneratorSettings'
+ returnPolicy:
+ description: |
+ The policy that defines the rollback of points in case of a partially returned, cancelled, or reopened [customer session](https://docs.talon.one/docs/dev/concepts/entities/customer-sessions).
+ - `only_pending`: Only pending points can be rolled back.
+ - `within_balance`: Available active points can be rolled back if there aren't enough pending points. The active balance of the customer cannot be negative.
+ - `unlimited`: Allows negative balance without any limit.
+ enum:
+ - only_pending
+ - within_balance
+ - unlimited
+ type: string
+ name:
+ description: The internal name for the Loyalty Program. This is an immutable
+ value.
+ example: GeneralPointCollection
+ type: string
+ tiers:
+ description: The tiers in this loyalty program.
+ items:
+ $ref: '#/components/schemas/NewLoyaltyTier'
+ type: array
+ timezone:
+ description: A string containing an IANA timezone descriptor.
+ minLength: 1
+ type: string
+ cardBased:
+ default: false
+ description: |
+ Defines the type of loyalty program:
+ - `true`: the program is a card-based.
+ - `false`: the program is profile-based.
+ example: true
+ type: boolean
+ required:
+ - allowSubledger
+ - cardBased
+ - defaultPending
+ - defaultValidity
+ - name
+ - sandbox
+ - timezone
+ - title
+ type: object
+ UpdateLoyaltyProgram:
+ description: An updated loyalty program.
+ properties:
+ title:
+ description: The display title for the Loyalty Program.
+ example: Point collection
+ type: string
+ description:
+ description: Description of our Loyalty Program.
+ example: Customers collect 10 points per 1$ spent
+ type: string
+ subscribedApplications:
+ description: A list containing the IDs of all applications that are subscribed
+ to this Loyalty Program.
+ example:
+ - 132
+ - 97
+ items:
+ format: int64
+ type: integer
+ type: array
+ defaultValidity:
+ description: |
+ The default duration after which new loyalty points should expire. Can be 'unlimited' or a specific time.
+ The time format is a number followed by one letter indicating the time unit, like '30s', '40m', '1h', '5D', '7W', or 10M'. These rounding suffixes are also supported:
+ - '_D' for rounding down. Can be used as a suffix after 'D', and signifies the start of the day.
+ - '_U' for rounding up. Can be used as a suffix after 'D', 'W', and 'M', and signifies the end of the day, week, and month.
+ example: 2W_U
+ type: string
+ defaultPending:
+ description: |
+ The default duration of the pending time after which points should be valid. Accepted values: 'immediate', 'on_action' or a specific time.
+ The time format is a number followed by one letter indicating the time unit, like '30s', '40m', '1h', '5D', '7W', or 10M'. These rounding suffixes are also supported:
+ - '_D' for rounding down. Can be used as a suffix after 'D', and signifies the start of the day.
+ - '_U' for rounding up. Can be used as a suffix after 'D', 'W', and 'M', and signifies the end of the day, week, and month.
+ example: immediate
+ type: string
+ allowSubledger:
+ description: Indicates if this program supports subledgers inside the program.
+ example: false
+ type: boolean
+ usersPerCardLimit:
+ description: |
+ The max amount of user profiles with whom a card can be shared. This can be set to 0 for no limit.
+ This property is only used when `cardBased` is `true`.
+ example: 111
+ format: int64
+ minimum: 0
+ type: integer
+ sandbox:
+ description: Indicates if this program is a live or sandbox program. Programs
+ of a given type can only be connected to Applications of the same type.
+ example: true
+ title: Sandbox
+ type: boolean
+ programJoinPolicy:
+ description: |
+ The policy that defines when the customer joins the loyalty program.
+ - `not_join`: The customer does not join the loyalty program but can still earn and spend loyalty points.
+
+ **Note**: The customer does not have a program join date.
+ - `points_activated`: The customer joins the loyalty program only when their earned loyalty points become active for the first time.
+ - `points_earned`: The customer joins the loyalty program when they earn loyalty points for the first time.
+ enum:
+ - not_join
+ - points_activated
+ - points_earned
+ type: string
+ tiersExpirationPolicy:
+ description: |
+ The policy that defines how tier expiration, used to reevaluate the customer's current tier, is determined.
+ - `tier_start_date`: The tier expiration is relative to when the customer joined the current tier.
+ - `program_join_date`: The tier expiration is relative to when the customer joined the loyalty program.
+ - `customer_attribute`: The tier expiration is determined by a custom customer attribute.
+ - `absolute_expiration`: The tier is reevaluated at the start of each tier cycle. For this policy, it is required to provide a `tierCycleStartDate`.
+ enum:
+ - tier_start_date
+ - program_join_date
+ - customer_attribute
+ - absolute_expiration
+ type: string
+ tierCycleStartDate:
+ description: |
+ Timestamp at which the tier cycle starts for all customers in the loyalty program.
+
+ **Note**: This is only required when the tier expiration policy is set to `absolute_expiration`.
+ example: 2021-09-12T10:12:42Z
+ format: date-time
+ type: string
+ tiersExpireIn:
+ description: |
+ The amount of time after which the tier expires and is reevaluated.
+
+ The time format is an **integer** followed by one letter indicating the time unit.
+ Examples: `30s`, `40m`, `1h`, `5D`, `7W`, `10M`, `15Y`.
+
+ Available units:
+
+ - `s`: seconds
+ - `m`: minutes
+ - `h`: hours
+ - `D`: days
+ - `W`: weeks
+ - `M`: months
+ - `Y`: years
+
+ You can round certain units up or down:
+ - `_D` for rounding down days only. Signifies the start of the day.
+ - `_U` for rounding up days, weeks, months and years. Signifies the end of the day, week, month or year.
+ example: 27W_U
+ type: string
+ tiersDowngradePolicy:
+ description: |
+ The policy that defines how customer tiers are downgraded in the loyalty program after tier reevaluation.
+ - `one_down`: If the customer doesn't have enough points to stay in the current tier, they are downgraded by one tier.
+ - `balance_based`: The customer's tier is reevaluated based on the amount of active points they have at the moment.
+ enum:
+ - one_down
+ - balance_based
+ type: string
+ cardCodeSettings:
+ $ref: '#/components/schemas/CodeGeneratorSettings'
+ returnPolicy:
+ description: |
+ The policy that defines the rollback of points in case of a partially returned, cancelled, or reopened [customer session](https://docs.talon.one/docs/dev/concepts/entities/customer-sessions).
+ - `only_pending`: Only pending points can be rolled back.
+ - `within_balance`: Available active points can be rolled back if there aren't enough pending points. The active balance of the customer cannot be negative.
+ - `unlimited`: Allows negative balance without any limit.
+ enum:
+ - only_pending
+ - within_balance
+ - unlimited
+ type: string
+ tiers:
+ description: The tiers in this loyalty program.
+ items:
+ $ref: '#/components/schemas/NewLoyaltyTier'
+ type: array
+ type: object
+ ActivateLoyaltyPoints:
+ description: Activate loyalty points
+ example:
+ transactionUUIDs:
+ - 8f1a8d7c-9c3e-4a5e-9f0d-2c5f7a3b1cde
+ sessionId: ac08cc3c43470426591ad75b2d685ec04_v2
+ properties:
+ transactionUUIDs:
+ description: |
+ An array of transaction UUIDs used to activate specific pending point transactions.
+
+ If provided, do not include the `sessionId` parameter.
+ example:
+ - 8f1a8d7c-9c3e-4a5e-9f0d-2c5f7a3b1cde
+ items:
+ format: uuid
+ type: string
+ maxItems: 50
+ minItems: 1
+ type: array
+ uniqueItems: true
+ sessionId:
+ description: |
+ The ID of the session containing the pending point transactions to activate.
+
+ If provided, do not include the `transactionUUIDs` parameter.
+ example: ac08cc3c43470426591ad75b2d685ec04_v2
+ minLength: 1
+ type: string
+ type: object
+ LoyaltyLedgerEntry:
+ description: A single row of the ledger, describing one addition or deduction.
+ example:
+ eventID: 5
+ amount: 100.0
+ created: 2021-07-20T22:00:00Z
+ flags:
+ createsNegativeBalance: true
+ subLedgerID: mysubledger
+ customerSessionID: t2gy5s-47274
+ type: addition
+ userID: 499
+ expiryDate: 2022-07-20T22:00:00Z
+ archived: false
+ customerProfileID: URNGV8294NV
+ cardID: 241
+ name: Add points on purchase
+ validityDuration: 30D
+ programID: 5
+ startDate: 2021-07-20T22:00:00Z
+ properties:
+ created:
+ example: 2021-07-20T22:00:00Z
+ format: date-time
+ type: string
+ programID:
+ example: 5
+ format: int64
+ type: integer
+ customerProfileID:
+ example: URNGV8294NV
+ type: string
+ cardID:
+ example: 241
+ format: int64
+ type: integer
+ customerSessionID:
+ example: t2gy5s-47274
+ type: string
+ eventID:
+ example: 5
+ format: int64
+ type: integer
+ type:
+ description: |
+ The type of the ledger transaction. Possible values are:
+ - `addition`
+ - `subtraction`
+ - `expire`
+ - `expiring` (for expiring points ledgers)
+ example: addition
+ type: string
+ amount:
+ example: 100.0
+ type: number
+ startDate:
+ example: 2021-07-20T22:00:00Z
+ format: date-time
+ type: string
+ expiryDate:
+ example: 2022-07-20T22:00:00Z
+ format: date-time
+ type: string
+ name:
+ description: A name referencing the condition or effect that added this
+ entry, or the specific name provided in an API call.
+ example: Add points on purchase
+ type: string
+ subLedgerID:
+ description: This specifies if we are adding loyalty points to the main
+ ledger or a subledger.
+ example: mysubledger
+ type: string
+ userID:
+ description: This is the ID of the user who created this entry, if the addition
+ or subtraction was done manually.
+ example: 499
+ format: int64
+ type: integer
+ archived:
+ description: Indicates if the entry belongs to the archived session.
+ example: false
+ type: boolean
+ flags:
+ $ref: '#/components/schemas/LoyaltyLedgerEntryFlags'
+ validityDuration:
+ description: |
+ The duration for which the points remain active, relative to the activation date.
+
+ **Note**: This only applies to points for which `awaitsActivation` is `true` and `expiryDate` is not set.
+ example: 30D
+ type: string
+ required:
+ - amount
+ - created
+ - name
+ - programID
+ - subLedgerID
+ - type
+ type: object
+ ActivateLoyaltyPointsResponse:
+ example:
+ ledgerEntries:
+ - eventID: 5
+ amount: 100.0
+ created: 2021-07-20T22:00:00Z
+ flags:
+ createsNegativeBalance: true
+ subLedgerID: mysubledger
+ customerSessionID: t2gy5s-47274
+ type: addition
+ userID: 499
+ expiryDate: 2022-07-20T22:00:00Z
+ archived: false
+ customerProfileID: URNGV8294NV
+ cardID: 241
+ name: Add points on purchase
+ validityDuration: 30D
+ programID: 5
+ startDate: 2021-07-20T22:00:00Z
+ - eventID: 5
+ amount: 100.0
+ created: 2021-07-20T22:00:00Z
+ flags:
+ createsNegativeBalance: true
+ subLedgerID: mysubledger
+ customerSessionID: t2gy5s-47274
+ type: addition
+ userID: 499
+ expiryDate: 2022-07-20T22:00:00Z
+ archived: false
+ customerProfileID: URNGV8294NV
+ cardID: 241
+ name: Add points on purchase
+ validityDuration: 30D
+ programID: 5
+ startDate: 2021-07-20T22:00:00Z
+ properties:
+ ledgerEntries:
+ description: Updated ledger entries after activation.
+ items:
+ $ref: '#/components/schemas/LoyaltyLedgerEntry'
+ type: array
+ type: object
+ UpdateLoyaltyProgramTier:
+ description: Update a tier in a specified loyalty program.
+ properties:
+ id:
+ description: The internal ID of the tier.
+ example: 6
+ format: int64
+ type: integer
+ name:
+ description: The name of the tier.
+ example: Gold
+ type: string
+ minPoints:
+ description: The minimum amount of points required to enter the tier.
+ example: 300.0
+ maximum: 999999999999.99
+ minimum: 0
+ type: number
+ required:
+ - id
+ type: object
+ UpdateLoyaltyProgramTiers:
+ description: List of tiers that are updated by the request.
+ items:
+ $ref: '#/components/schemas/UpdateLoyaltyProgramTier'
+ type: array
+ LoyaltyTiers:
+ description: A list of the loyalty program's tiers.
+ items:
+ $ref: '#/components/schemas/LoyaltyTier'
+ type: array
+ LoyaltyDashboardPointsBreakdown:
+ example:
+ createdManually: 125.0
+ createdViaRuleEngine: 9631.0
+ properties:
+ createdManually:
+ example: 125.0
+ type: number
+ createdViaRuleEngine:
+ example: 9631.0
+ type: number
+ required:
+ - createdManually
+ - createdViaRuleEngine
+ type: object
+ LoyaltyDashboardData:
+ description: Datapoint for the graphs and cards on a loyalty program dashboard.
+ example:
+ date: 2000-01-23T04:56:07.000+00:00
+ totalMembers: 2582.0
+ totalSpentPoints: 25668.0
+ spentPoints:
+ createdManually: 125.0
+ createdViaRuleEngine: 9631.0
+ totalActivePoints: 9756.0
+ totalPendingPoints: 548.0
+ totalExpiredPoints: 1156.0
+ totalNegativePoints: 32.0
+ newMembers: 3.0
+ earnedPoints:
+ createdManually: 125.0
+ createdViaRuleEngine: 9631.0
+ properties:
+ date:
+ description: Date at which data point was collected.
+ format: date-time
+ type: string
+ totalActivePoints:
+ description: Total of active points for this loyalty program.
+ example: 9756.0
+ type: number
+ totalPendingPoints:
+ description: Total of pending points for this loyalty program.
+ example: 548.0
+ type: number
+ totalSpentPoints:
+ description: Total of spent points for this loyalty program.
+ example: 25668.0
+ type: number
+ totalExpiredPoints:
+ description: Total of expired points for this loyalty program.
+ example: 1156.0
+ type: number
+ totalNegativePoints:
+ description: Total of negative points for this loyalty program.
+ example: 32.0
+ type: number
+ totalMembers:
+ description: Number of loyalty program members.
+ example: 2582.0
+ type: number
+ newMembers:
+ description: Number of members who joined on this day.
+ example: 3.0
+ type: number
+ spentPoints:
+ $ref: '#/components/schemas/LoyaltyDashboardPointsBreakdown'
+ earnedPoints:
+ $ref: '#/components/schemas/LoyaltyDashboardPointsBreakdown'
+ required:
+ - date
+ - earnedPoints
+ - newMembers
+ - spentPoints
+ - totalActivePoints
+ - totalExpiredPoints
+ - totalMembers
+ - totalNegativePoints
+ - totalPendingPoints
+ - totalSpentPoints
+ type: object
+ Import:
+ example:
+ accountId: 3886
+ amount: 10
+ created: 2020-06-10T09:05:27.993483Z
+ id: 6
+ userId: 388
+ entity: AttributeAllowedList
+ properties:
+ id:
+ description: The internal ID of this entity.
+ example: 6
+ format: int64
+ type: integer
+ created:
+ description: The time this entity was created.
+ example: 2020-06-10T09:05:27.993483Z
+ format: date-time
+ type: string
+ accountId:
+ description: The ID of the account that owns this entity.
+ example: 3886
+ format: int64
+ type: integer
+ userId:
+ description: The ID of the user associated with this entity.
+ example: 388
+ format: int64
+ type: integer
+ entity:
+ description: |
+ The name of the entity that was imported.
+ example: AttributeAllowedList
+ type: string
+ amount:
+ description: The number of values that were imported.
+ example: 10
+ format: int64
+ minimum: 0
+ type: integer
+ required:
+ - accountId
+ - amount
+ - created
+ - entity
+ - id
+ - userId
+ type: object
+ LoyaltySubLedger:
+ description: Ledger of Balance in Loyalty Program for a Customer.
+ example:
+ total: 0.8008281904610115
+ totalSpentPoints: 5.962133916683182
+ activePoints:
+ - eventID: 5
+ amount: 100.0
+ created: 2021-07-20T22:00:00Z
+ flags:
+ createsNegativeBalance: true
+ subLedgerID: mysubledger
+ customerSessionID: t2gy5s-47274
+ type: addition
+ userID: 499
+ expiryDate: 2022-07-20T22:00:00Z
+ archived: false
+ customerProfileID: URNGV8294NV
+ cardID: 241
+ name: Add points on purchase
+ validityDuration: 30D
+ programID: 5
+ startDate: 2021-07-20T22:00:00Z
+ - eventID: 5
+ amount: 100.0
+ created: 2021-07-20T22:00:00Z
+ flags:
+ createsNegativeBalance: true
+ subLedgerID: mysubledger
+ customerSessionID: t2gy5s-47274
+ type: addition
+ userID: 499
+ expiryDate: 2022-07-20T22:00:00Z
+ archived: false
+ customerProfileID: URNGV8294NV
+ cardID: 241
+ name: Add points on purchase
+ validityDuration: 30D
+ programID: 5
+ startDate: 2021-07-20T22:00:00Z
+ expiringPoints:
+ - eventID: 5
+ amount: 100.0
+ created: 2021-07-20T22:00:00Z
+ flags:
+ createsNegativeBalance: true
+ subLedgerID: mysubledger
+ customerSessionID: t2gy5s-47274
+ type: addition
+ userID: 499
+ expiryDate: 2022-07-20T22:00:00Z
+ archived: false
+ customerProfileID: URNGV8294NV
+ cardID: 241
+ name: Add points on purchase
+ validityDuration: 30D
+ programID: 5
+ startDate: 2021-07-20T22:00:00Z
+ - eventID: 5
+ amount: 100.0
+ created: 2021-07-20T22:00:00Z
+ flags:
+ createsNegativeBalance: true
+ subLedgerID: mysubledger
+ customerSessionID: t2gy5s-47274
+ type: addition
+ userID: 499
+ expiryDate: 2022-07-20T22:00:00Z
+ archived: false
+ customerProfileID: URNGV8294NV
+ cardID: 241
+ name: Add points on purchase
+ validityDuration: 30D
+ programID: 5
+ startDate: 2021-07-20T22:00:00Z
+ totalActivePoints: 6.027456183070403
+ totalPendingPoints: 1.4658129805029452
+ totalExpiredPoints: 5.637376656633329
+ totalNegativePoints: 2.3021358869347655
+ transactions:
+ - eventID: 5
+ amount: 100.0
+ created: 2021-07-20T22:00:00Z
+ flags:
+ createsNegativeBalance: true
+ subLedgerID: mysubledger
+ customerSessionID: t2gy5s-47274
+ type: addition
+ userID: 499
+ expiryDate: 2022-07-20T22:00:00Z
+ archived: false
+ customerProfileID: URNGV8294NV
+ cardID: 241
+ name: Add points on purchase
+ validityDuration: 30D
+ programID: 5
+ startDate: 2021-07-20T22:00:00Z
+ - eventID: 5
+ amount: 100.0
+ created: 2021-07-20T22:00:00Z
+ flags:
+ createsNegativeBalance: true
+ subLedgerID: mysubledger
+ customerSessionID: t2gy5s-47274
+ type: addition
+ userID: 499
+ expiryDate: 2022-07-20T22:00:00Z
+ archived: false
+ customerProfileID: URNGV8294NV
+ cardID: 241
+ name: Add points on purchase
+ validityDuration: 30D
+ programID: 5
+ startDate: 2021-07-20T22:00:00Z
+ expiredPoints:
+ - eventID: 5
+ amount: 100.0
+ created: 2021-07-20T22:00:00Z
+ flags:
+ createsNegativeBalance: true
+ subLedgerID: mysubledger
+ customerSessionID: t2gy5s-47274
+ type: addition
+ userID: 499
+ expiryDate: 2022-07-20T22:00:00Z
+ archived: false
+ customerProfileID: URNGV8294NV
+ cardID: 241
+ name: Add points on purchase
+ validityDuration: 30D
+ programID: 5
+ startDate: 2021-07-20T22:00:00Z
+ - eventID: 5
+ amount: 100.0
+ created: 2021-07-20T22:00:00Z
+ flags:
+ createsNegativeBalance: true
+ subLedgerID: mysubledger
+ customerSessionID: t2gy5s-47274
+ type: addition
+ userID: 499
+ expiryDate: 2022-07-20T22:00:00Z
+ archived: false
+ customerProfileID: URNGV8294NV
+ cardID: 241
+ name: Add points on purchase
+ validityDuration: 30D
+ programID: 5
+ startDate: 2021-07-20T22:00:00Z
+ currentTier:
+ expiryDate: 2000-01-23T04:56:07.000+00:00
+ downgradePolicy: one_down
+ name: bronze
+ id: 11
+ startDate: 2000-01-23T04:56:07.000+00:00
+ pendingPoints:
+ - eventID: 5
+ amount: 100.0
+ created: 2021-07-20T22:00:00Z
+ flags:
+ createsNegativeBalance: true
+ subLedgerID: mysubledger
+ customerSessionID: t2gy5s-47274
+ type: addition
+ userID: 499
+ expiryDate: 2022-07-20T22:00:00Z
+ archived: false
+ customerProfileID: URNGV8294NV
+ cardID: 241
+ name: Add points on purchase
+ validityDuration: 30D
+ programID: 5
+ startDate: 2021-07-20T22:00:00Z
+ - eventID: 5
+ amount: 100.0
+ created: 2021-07-20T22:00:00Z
+ flags:
+ createsNegativeBalance: true
+ subLedgerID: mysubledger
+ customerSessionID: t2gy5s-47274
+ type: addition
+ userID: 499
+ expiryDate: 2022-07-20T22:00:00Z
+ archived: false
+ customerProfileID: URNGV8294NV
+ cardID: 241
+ name: Add points on purchase
+ validityDuration: 30D
+ programID: 5
+ startDate: 2021-07-20T22:00:00Z
+ properties:
+ total:
+ description: |
+ **DEPRECATED** Use `totalActivePoints` property instead. Total amount of currently active and available points in the customer's balance.
+ title: Current Balance (Deprecated)
+ type: number
+ x-deprecated: true
+ totalActivePoints:
+ description: Total amount of currently active and available points in the
+ customer's balance.
+ title: Current Balance
+ type: number
+ totalPendingPoints:
+ description: Total amount of pending points, which are not active yet but
+ will become active in the future.
+ title: Total pending points
+ type: number
+ totalSpentPoints:
+ description: Total amount of points already spent by this customer.
+ title: Total spent points
+ type: number
+ totalExpiredPoints:
+ description: Total amount of points, that expired without ever being spent.
+ title: Total expired points
+ type: number
+ totalNegativePoints:
+ description: Total amount of negative points. This implies that `totalActivePoints`
+ is `0`.
+ title: Total negative points
+ type: number
+ transactions:
+ description: List of all events that have happened such as additions, subtractions
+ and expiries.
+ items:
+ $ref: '#/components/schemas/LoyaltyLedgerEntry'
+ type: array
+ expiringPoints:
+ description: List of all points that will expire.
+ items:
+ $ref: '#/components/schemas/LoyaltyLedgerEntry'
+ type: array
+ activePoints:
+ description: List of all currently active points.
+ items:
+ $ref: '#/components/schemas/LoyaltyLedgerEntry'
+ type: array
+ pendingPoints:
+ description: List of all points pending activation.
+ items:
+ $ref: '#/components/schemas/LoyaltyLedgerEntry'
+ type: array
+ expiredPoints:
+ description: List of expired points.
+ items:
+ $ref: '#/components/schemas/LoyaltyLedgerEntry'
+ type: array
+ currentTier:
+ $ref: '#/components/schemas/Tier'
+ required:
+ - total
+ - totalActivePoints
+ - totalExpiredPoints
+ - totalNegativePoints
+ - totalPendingPoints
+ - totalSpentPoints
+ type: object
+ LoyaltyLedger:
+ description: Ledger of Balance in Loyalty Program for a Customer.
+ example:
+ ledger:
+ total: 0.8008281904610115
+ totalSpentPoints: 5.962133916683182
+ activePoints:
+ - eventID: 5
+ amount: 100.0
+ created: 2021-07-20T22:00:00Z
+ flags:
+ createsNegativeBalance: true
+ subLedgerID: mysubledger
+ customerSessionID: t2gy5s-47274
+ type: addition
+ userID: 499
+ expiryDate: 2022-07-20T22:00:00Z
+ archived: false
+ customerProfileID: URNGV8294NV
+ cardID: 241
+ name: Add points on purchase
+ validityDuration: 30D
+ programID: 5
+ startDate: 2021-07-20T22:00:00Z
+ - eventID: 5
+ amount: 100.0
+ created: 2021-07-20T22:00:00Z
+ flags:
+ createsNegativeBalance: true
+ subLedgerID: mysubledger
+ customerSessionID: t2gy5s-47274
+ type: addition
+ userID: 499
+ expiryDate: 2022-07-20T22:00:00Z
+ archived: false
+ customerProfileID: URNGV8294NV
+ cardID: 241
+ name: Add points on purchase
+ validityDuration: 30D
+ programID: 5
+ startDate: 2021-07-20T22:00:00Z
+ expiringPoints:
+ - eventID: 5
+ amount: 100.0
+ created: 2021-07-20T22:00:00Z
+ flags:
+ createsNegativeBalance: true
+ subLedgerID: mysubledger
+ customerSessionID: t2gy5s-47274
+ type: addition
+ userID: 499
+ expiryDate: 2022-07-20T22:00:00Z
+ archived: false
+ customerProfileID: URNGV8294NV
+ cardID: 241
+ name: Add points on purchase
+ validityDuration: 30D
+ programID: 5
+ startDate: 2021-07-20T22:00:00Z
+ - eventID: 5
+ amount: 100.0
+ created: 2021-07-20T22:00:00Z
+ flags:
+ createsNegativeBalance: true
+ subLedgerID: mysubledger
+ customerSessionID: t2gy5s-47274
+ type: addition
+ userID: 499
+ expiryDate: 2022-07-20T22:00:00Z
+ archived: false
+ customerProfileID: URNGV8294NV
+ cardID: 241
+ name: Add points on purchase
+ validityDuration: 30D
+ programID: 5
+ startDate: 2021-07-20T22:00:00Z
+ totalActivePoints: 6.027456183070403
+ totalPendingPoints: 1.4658129805029452
+ totalExpiredPoints: 5.637376656633329
+ totalNegativePoints: 2.3021358869347655
+ transactions:
+ - eventID: 5
+ amount: 100.0
+ created: 2021-07-20T22:00:00Z
+ flags:
+ createsNegativeBalance: true
+ subLedgerID: mysubledger
+ customerSessionID: t2gy5s-47274
+ type: addition
+ userID: 499
+ expiryDate: 2022-07-20T22:00:00Z
+ archived: false
+ customerProfileID: URNGV8294NV
+ cardID: 241
+ name: Add points on purchase
+ validityDuration: 30D
+ programID: 5
+ startDate: 2021-07-20T22:00:00Z
+ - eventID: 5
+ amount: 100.0
+ created: 2021-07-20T22:00:00Z
+ flags:
+ createsNegativeBalance: true
+ subLedgerID: mysubledger
+ customerSessionID: t2gy5s-47274
+ type: addition
+ userID: 499
+ expiryDate: 2022-07-20T22:00:00Z
+ archived: false
+ customerProfileID: URNGV8294NV
+ cardID: 241
+ name: Add points on purchase
+ validityDuration: 30D
+ programID: 5
+ startDate: 2021-07-20T22:00:00Z
+ expiredPoints:
+ - eventID: 5
+ amount: 100.0
+ created: 2021-07-20T22:00:00Z
+ flags:
+ createsNegativeBalance: true
+ subLedgerID: mysubledger
+ customerSessionID: t2gy5s-47274
+ type: addition
+ userID: 499
+ expiryDate: 2022-07-20T22:00:00Z
+ archived: false
+ customerProfileID: URNGV8294NV
+ cardID: 241
+ name: Add points on purchase
+ validityDuration: 30D
+ programID: 5
+ startDate: 2021-07-20T22:00:00Z
+ - eventID: 5
+ amount: 100.0
+ created: 2021-07-20T22:00:00Z
+ flags:
+ createsNegativeBalance: true
+ subLedgerID: mysubledger
+ customerSessionID: t2gy5s-47274
+ type: addition
+ userID: 499
+ expiryDate: 2022-07-20T22:00:00Z
+ archived: false
+ customerProfileID: URNGV8294NV
+ cardID: 241
+ name: Add points on purchase
+ validityDuration: 30D
+ programID: 5
+ startDate: 2021-07-20T22:00:00Z
+ currentTier:
+ expiryDate: 2000-01-23T04:56:07.000+00:00
+ downgradePolicy: one_down
+ name: bronze
+ id: 11
+ startDate: 2000-01-23T04:56:07.000+00:00
+ pendingPoints:
+ - eventID: 5
+ amount: 100.0
+ created: 2021-07-20T22:00:00Z
+ flags:
+ createsNegativeBalance: true
+ subLedgerID: mysubledger
+ customerSessionID: t2gy5s-47274
+ type: addition
+ userID: 499
+ expiryDate: 2022-07-20T22:00:00Z
+ archived: false
+ customerProfileID: URNGV8294NV
+ cardID: 241
+ name: Add points on purchase
+ validityDuration: 30D
+ programID: 5
+ startDate: 2021-07-20T22:00:00Z
+ - eventID: 5
+ amount: 100.0
+ created: 2021-07-20T22:00:00Z
+ flags:
+ createsNegativeBalance: true
+ subLedgerID: mysubledger
+ customerSessionID: t2gy5s-47274
+ type: addition
+ userID: 499
+ expiryDate: 2022-07-20T22:00:00Z
+ archived: false
+ customerProfileID: URNGV8294NV
+ cardID: 241
+ name: Add points on purchase
+ validityDuration: 30D
+ programID: 5
+ startDate: 2021-07-20T22:00:00Z
+ subLedgers:
+ mysubledger:
+ total: 0
+ totalActivePoints: 286
+ totalPendingPoints: 50
+ totalSpentPoints: 150
+ totalExpiredPoints: 25
+ totalNegativePoints: 0
+ properties:
+ ledger:
+ $ref: '#/components/schemas/LoyaltySubLedger'
+ subLedgers:
+ additionalProperties:
+ $ref: '#/components/schemas/LoyaltySubLedger'
+ description: A map containing a list of all loyalty subledger balances.
+ example:
+ mysubledger:
+ total: 0
+ totalActivePoints: 286
+ totalPendingPoints: 50
+ totalSpentPoints: 150
+ totalExpiredPoints: 25
+ totalNegativePoints: 0
+ type: object
+ required:
+ - ledger
+ type: object
+ DeductLoyaltyPoints:
+ description: Points to deduct.
+ example:
+ subledgerId: sub-123
+ name: Penalty
+ applicationId: 322
points: 300.0
properties:
points:
@@ -35680,7 +42407,7 @@ components:
$ref: '#/components/schemas/LoyaltyLedgerEntryFlags'
validityDuration:
description: |
- The duration for which the points remain active, relative to the activation date.
+ The duration for which the points remain active, relative to the activation date.
**Note**: This only applies to points for which `awaitsActivation` is `true` and `expiryDate` is not set.
example: 30D
@@ -36583,6 +43310,11 @@ components:
assertionConsumerServiceURL:
description: The location where the SAML assertion is sent with a HTTP POST.
type: string
+ certificateExpiry:
+ description: The expiry date of the X.509 certificate.
+ example: 2021-07-20T21:59:00Z
+ format: date-time
+ type: string
accountId:
description: The ID of the account that owns this entity.
example: 3885
@@ -37174,6 +43906,7 @@ components:
$ref: '#/components/schemas/LoyaltyMembership'
title: Loyalty programed joined
type: array
+ x-deprecated: true
audienceMemberships:
description: The audiences the customer belongs to.
items:
@@ -37511,10 +44244,10 @@ components:
description: |
Indicates the current state of the session. Sessions can be created as `open` or `closed`. The state transitions are:
- 1. `open` → `closed`
- 2. `open` → `cancelled`
- 3. `closed` → `cancelled` or `partially_returned`
- 4. `partially_returned` → `cancelled`
+ 1. `open` -> `closed`
+ 2. `open` -> `cancelled`
+ 3. `closed` -> `cancelled` or `partially_returned`
+ 4. `partially_returned` -> `cancelled`
For more information, see [Customer session states](https://docs.talon.one/docs/dev/concepts/entities/customer-sessions).
enum:
@@ -37584,6 +44317,7 @@ components:
effectType: rejectCoupon
adjustmentReferenceId: 68851723-e6fa-488f-ace9-112581e6c19b
props: '{}'
+ rewardId: 7
selectedPrice: 100.0
evaluationGroupID: 3
triggeredForCatalogItem: 786
@@ -37601,6 +44335,7 @@ components:
effectType: rejectCoupon
adjustmentReferenceId: 68851723-e6fa-488f-ace9-112581e6c19b
props: '{}'
+ rewardId: 7
selectedPrice: 100.0
evaluationGroupID: 3
triggeredForCatalogItem: 786
@@ -37612,6 +44347,7 @@ components:
storeIntegrationId: STORE-001
created: 2020-06-10T09:05:27.993483Z
profileId: 138
+ integrationId: 175KJPS947296
attributes: '{}'
id: 6
sessionId: 6
@@ -37619,30 +44355,34 @@ components:
storeId: 0
type: type
ruleFailureReasons:
- - rulesetID: 6
- ruleIndex: 5
- campaignID: 0
- referralID: 1
- conditionIndex: 5
- effectIndex: 2
+ - rulesetID: 7
+ ruleIndex: 3
+ campaignID: 2
+ referralID: 9
+ rewardIntegrationId: 5c0b5e6d-3f8a-4c2b-9f1e-2a7d6b4c8e90
+ conditionIndex: 2
+ effectIndex: 4
evaluationGroupMode: stackable
couponID: 4928
referralValue: referralValue
couponValue: couponValue
+ rewardId: 7
evaluationGroupID: 3
ruleName: ruleName
details: details
campaignName: campaignName
- - rulesetID: 6
- ruleIndex: 5
- campaignID: 0
- referralID: 1
- conditionIndex: 5
- effectIndex: 2
+ - rulesetID: 7
+ ruleIndex: 3
+ campaignID: 2
+ referralID: 9
+ rewardIntegrationId: 5c0b5e6d-3f8a-4c2b-9f1e-2a7d6b4c8e90
+ conditionIndex: 2
+ effectIndex: 4
evaluationGroupMode: stackable
couponID: 4928
referralValue: referralValue
couponValue: couponValue
+ rewardId: 7
evaluationGroupID: 3
ruleName: ruleName
details: details
@@ -37680,14 +44420,20 @@ components:
maxLength: 1000
minLength: 1
type: string
+ integrationId:
+ description: |
+ The unique ID of the event. Only one event with this ID can be registered.
+ example: 175KJPS947296
+ minLength: 1
+ type: string
sessionId:
description: The globally unique Talon.One ID of the session that contains
this event.
format: int64
type: integer
type:
- description: A string representing the event. Must not be a reserved event
- name.
+ description: The name of the event. Must be a [custom event](https://docs.talon.one/docs/dev/concepts/entities/events#custom-events),
+ not a built-in event.
type: string
attributes:
description: Additional JSON serialized data associated with the event.
@@ -37785,6 +44531,7 @@ components:
$ref: '#/components/schemas/LoyaltyMembership'
title: Loyalty programed joined
type: array
+ x-deprecated: true
audienceMemberships:
description: The audiences the customer belongs to.
items:
@@ -37843,6 +44590,7 @@ components:
type: object
ApplicationReferee:
example:
+ advancedEventIntegrationId: advanced_event_1234
friendIntegrationId: friendIntegrationId
code: code
created: 2000-01-23T04:56:07.000+00:00
@@ -37859,6 +44607,13 @@ components:
description: Integration ID of the session in which the customer redeemed
the referral.
type: string
+ advancedEventIntegrationId:
+ description: The unique ID of the advanced event in which the customer redeemed
+ the referral. Omitted when the referral was redeemed through a customer
+ session rather than an advanced event.
+ example: advanced_event_1234
+ maxLength: 1000
+ type: string
advocateIntegrationId:
description: Integration ID of the Advocate's Profile.
maxLength: 1000
@@ -38650,8 +45405,8 @@ components:
timeframeEndDate: 2020-11-10T23:00:00Z
timeframe: "30"
skus:
- - comma
- - period
+ - SKU1241028
+ - SKU7345278
timeframeEndDateType: sale
target:
targetType: AUDIENCE
@@ -38661,8 +45416,8 @@ components:
description: List of product SKUs to check when determining the best prior
price.
example:
- - comma
- - period
+ - SKU1241028
+ - SKU7345278
items:
type: string
minItems: 1
@@ -38774,11 +45529,13 @@ components:
discountValue: 6.027456183070403
- campaignId: 0
discountValue: 6.027456183070403
- observedAt: 2020-11-10T23:00:00Z
+ observedAt: 2025-11-10T23:00:00Z
price: 99.99
- contextId: Summer Sale 2025
+ contextIds:
+ - SpringSale
+ - SummerSale2025
id: 1
- sku: NVR-GN-GV-UUP
+ sku: SKU7345278
target: '{}'
properties:
id:
@@ -38788,18 +45545,22 @@ components:
type: integer
sku:
description: sku
- example: NVR-GN-GV-UUP
+ example: SKU7345278
type: string
observedAt:
description: The date and time when the price was observed.
- example: 2020-11-10T23:00:00Z
+ example: 2025-11-10T23:00:00Z
format: date-time
type: string
- contextId:
+ contextIds:
description: |
- The context ID of the context active at the time of observation.
- example: Summer Sale 2025
- type: string
+ The identifiers of the relevant context at the time the price was observed. Includes the context IDs of any price adjustments and of the campaigns that influenced the final price.
+ example:
+ - SpringSale
+ - SummerSale2025
+ items:
+ type: string
+ type: array
price:
description: Price of the item.
example: 99.99
@@ -38809,7 +45570,7 @@ components:
target:
type: object
required:
- - contextId
+ - contextIds
- id
- metadata
- observedAt
@@ -38824,13 +45585,13 @@ components:
PriceHistoryRequest:
example:
endDate: 2020-12-10T23:00:00Z
- sku: ""
+ sku: SKU1241028
startDate: 2020-11-10T23:00:00Z
properties:
sku:
description: The SKU of the item for which the historical prices are being
retrieved.
- example: ""
+ example: SKU1241028
type: string
startDate:
description: The start date of the period for which historical prices should
@@ -38861,9 +45622,13 @@ components:
discountValue: 6.027456183070403
- campaignId: 0
discountValue: 6.027456183070403
- observedAt: 2020-11-10T23:00:00Z
+ observedAt: 2025-11-10T23:00:00Z
price: 99.99
- contextId: Summer Sale 2025
+ exclusionReason: Incorrect contextID value
+ excludedAt: 2025-11-10T23:00:00Z
+ contextIds:
+ - SpringSale
+ - SummerSale2025
id: 1
target: '{}'
properties:
@@ -38874,14 +45639,18 @@ components:
type: integer
observedAt:
description: The date and time when the price was observed.
- example: 2020-11-10T23:00:00Z
+ example: 2025-11-10T23:00:00Z
format: date-time
type: string
- contextId:
+ contextIds:
description: |
- Identifier of the relevant context at the time the price was observed (e.g. summer sale).
- example: Summer Sale 2025
- type: string
+ The identifiers of the relevant context at the time the price was observed. Includes the context IDs of any price adjustments and of the campaigns that influenced the final price.
+ example:
+ - SpringSale
+ - SummerSale2025
+ items:
+ type: string
+ type: array
price:
description: Price of the item.
example: 99.99
@@ -38890,8 +45659,17 @@ components:
$ref: '#/components/schemas/BestPriorPriceMetadata'
target:
type: object
+ excludedAt:
+ description: The date and time when the historical price ID was excluded.
+ example: 2025-11-10T23:00:00Z
+ format: date-time
+ type: string
+ exclusionReason:
+ description: The reason for excluding this historical price ID.
+ example: Incorrect contextID value
+ type: string
required:
- - contextId
+ - contextIds
- id
- metadata
- observedAt
@@ -38911,9 +45689,13 @@ components:
discountValue: 6.027456183070403
- campaignId: 0
discountValue: 6.027456183070403
- observedAt: 2020-11-10T23:00:00Z
+ observedAt: 2025-11-10T23:00:00Z
price: 99.99
- contextId: Summer Sale 2025
+ exclusionReason: Incorrect contextID value
+ excludedAt: 2025-11-10T23:00:00Z
+ contextIds:
+ - SpringSale
+ - SummerSale2025
id: 1
target: '{}'
- metadata:
@@ -38926,16 +45708,20 @@ components:
discountValue: 6.027456183070403
- campaignId: 0
discountValue: 6.027456183070403
- observedAt: 2020-11-10T23:00:00Z
+ observedAt: 2025-11-10T23:00:00Z
price: 99.99
- contextId: Summer Sale 2025
+ exclusionReason: Incorrect contextID value
+ excludedAt: 2025-11-10T23:00:00Z
+ contextIds:
+ - SpringSale
+ - SummerSale2025
id: 1
target: '{}'
- sku: ""
+ sku: SKU1241028
properties:
sku:
description: The SKU of the item for which historical prices should be retrieved.
- example: ""
+ example: SKU1241028
type: string
history:
items:
@@ -38945,6 +45731,37 @@ components:
- history
- sku
type: object
+ ExcludePriceObservationsRequest:
+ example:
+ reason: Incorrect contextID value.
+ ids:
+ - 1
+ - 1
+ - 1
+ - 1
+ - 1
+ properties:
+ ids:
+ description: |
+ A list of historical price IDs to exclude from best prior price calculation. Must contain between 1 and 1000 IDs. All IDs must be valid `id` values obtained from the [Get summary of price history](https://docs.talon.one/management-api#tag/Catalogs/operation/priceHistory.responses.200.history) endpoint, must belong to the specified Application, and must not already be excluded from best prior price calculation.
+ items:
+ format: int64
+ minimum: 1
+ type: integer
+ maxItems: 1000
+ minItems: 1
+ type: array
+ uniqueItems: true
+ reason:
+ description: |
+ The reason for excluding these historical price IDs. Applies to all IDs in the batch.
+ example: Incorrect contextID value.
+ minLength: 1
+ type: string
+ required:
+ - ids
+ - reason
+ type: object
TalangAttribute:
properties:
entity:
@@ -38970,6 +45787,8 @@ components:
- Session
- Store
- Achievements
+ - AdvancedEvent
+ - AdvancedEventConnectedSession
type: string
name:
description: |
@@ -39240,6 +46059,31 @@ components:
required:
- sku
type: object
+ CatalogActionAdd:
+ description: Adds an item to the catalog.
+ example:
+ type: ADD
+ payload:
+ sku: T123
+ attributes:
+ type: shoes
+ color: blue
+ replaceIfExists: true
+ properties:
+ type:
+ description: A catalog sync action discriminator of type `ADD`.
+ enum:
+ - ADD
+ type: string
+ payload:
+ $ref: '#/components/schemas/AddItemCatalogAction'
+ required:
+ - payload
+ - type
+ title: Add
+ type: object
+ x-discriminator-value: ADD
+ x-ms-discriminator-value: ADD
PatchItemCatalogAction:
description: |
The specific properties of the "PATCH" catalog sync action.
@@ -39268,6 +46112,23 @@ components:
required:
- sku
type: object
+ CatalogActionPatch:
+ description: Updates an item in the catalog.
+ properties:
+ type:
+ description: A catalog sync action discriminator of type `PATCH`.
+ enum:
+ - PATCH
+ type: string
+ payload:
+ $ref: '#/components/schemas/PatchItemCatalogAction'
+ required:
+ - payload
+ - type
+ title: Patch
+ type: object
+ x-discriminator-value: PATCH
+ x-ms-discriminator-value: PATCH
CatalogActionFilter:
description: The properties for a single filtering condition in a catalog sync
action.
@@ -39313,6 +46174,23 @@ components:
properties: {}
type: object
type: object
+ CatalogActionPatchMany:
+ description: Updates the items of the catalog that match the given filters.
+ properties:
+ type:
+ description: A catalog sync action discriminator of type `PATCH_MANY`.
+ enum:
+ - PATCH_MANY
+ type: string
+ payload:
+ $ref: '#/components/schemas/PatchManyItemsCatalogAction'
+ required:
+ - payload
+ - type
+ title: PatchMany
+ type: object
+ x-discriminator-value: PATCH_MANY
+ x-ms-discriminator-value: PATCH_MANY
RemoveItemCatalogAction:
description: The specific properties of the "REMOVE" catalog sync action.
properties:
@@ -39322,6 +46200,23 @@ components:
required:
- sku
type: object
+ CatalogActionRemove:
+ description: Removes an item from the catalog.
+ properties:
+ type:
+ description: A catalog sync action discriminator of type `REMOVE`.
+ enum:
+ - REMOVE
+ type: string
+ payload:
+ $ref: '#/components/schemas/RemoveItemCatalogAction'
+ required:
+ - payload
+ - type
+ title: Remove
+ type: object
+ x-discriminator-value: REMOVE
+ x-ms-discriminator-value: REMOVE
RemoveManyItemsCatalogAction:
description: The specific properties of the "REMOVE_MANY" catalog sync action.
properties:
@@ -39334,6 +46229,23 @@ components:
$ref: '#/components/schemas/CatalogActionFilter'
type: array
type: object
+ CatalogActionRemoveMany:
+ description: Removes the items of the catalog that match the given filters.
+ properties:
+ type:
+ description: A catalog sync action discriminator of type `REMOVE_MANY`.
+ enum:
+ - REMOVE_MANY
+ type: string
+ payload:
+ $ref: '#/components/schemas/RemoveManyItemsCatalogAction'
+ required:
+ - payload
+ - type
+ title: RemoveMany
+ type: object
+ x-discriminator-value: REMOVE_MANY
+ x-ms-discriminator-value: REMOVE_MANY
NewPriceAdjustment:
properties:
priceType:
@@ -39397,9 +46309,28 @@ components:
- adjustments
- sku
type: object
+ CatalogActionAddPriceAdjustment:
+ description: Adds price adjustments to an item of the catalog.
+ properties:
+ type:
+ description: A catalog sync action discriminator of type `ADD_PRICE_ADJUSTMENT`.
+ enum:
+ - ADD_PRICE_ADJUSTMENT
+ type: string
+ payload:
+ $ref: '#/components/schemas/AddPriceAdjustmentCatalogAction'
+ required:
+ - payload
+ - type
+ title: AddPriceAdjustment
+ type: object
+ x-discriminator-value: ADD_PRICE_ADJUSTMENT
+ x-ms-discriminator-value: ADD_PRICE_ADJUSTMENT
CatalogAction:
description: Definition of all the properties that are needed for a single catalog
- sync action.
+ sync action. The `type` field selects the concrete action variant.
+ discriminator:
+ propertyName: type
example:
payload: '{}'
type: ADD
@@ -39418,10 +46349,11 @@ components:
payload:
properties: {}
type: object
- required:
- - payload
- - type
type: object
+ x-go-merge-oneof:
+ properties:
+ type:
+ description: The type of sync action.
CatalogSyncRequest:
example:
actions:
@@ -39672,8 +46604,61 @@ components:
- type
- webhooks
type: object
- WebhookAuthenticationBase:
+ WebhookAuthenticationBaseBasic:
+ description: Authenticates the webhook with Basic HTTP authentication.
+ properties:
+ name:
+ description: The name of the webhook authentication.
+ example: My basic auth
+ type: string
+ type:
+ description: A webhook authentication discriminator of type `basic`.
+ enum:
+ - basic
+ type: string
+ data:
+ $ref: '#/components/schemas/WebhookAuthenticationDataBasic'
+ required:
+ - data
+ - name
+ - type
+ title: Basic
+ type: object
+ x-discriminator-value: basic
+ x-ms-discriminator-value: basic
+ WebhookAuthenticationBaseCustom:
+ description: Authenticates the webhook with a custom set of HTTP headers.
+ properties:
+ name:
+ description: The name of the webhook authentication.
+ example: My custom auth
+ type: string
+ type:
+ description: A webhook authentication discriminator of type `custom`.
+ enum:
+ - custom
+ type: string
+ data:
+ $ref: '#/components/schemas/WebhookAuthenticationDataCustom'
+ required:
+ - data
+ - name
+ - type
+ title: Custom
type: object
+ x-discriminator-value: custom
+ x-ms-discriminator-value: custom
+ WebhookAuthenticationBase:
+ description: Definition of all the properties that are needed to create or update
+ a webhook authentication. The `type` field selects the concrete authentication
+ variant.
+ discriminator:
+ propertyName: type
+ type: object
+ x-go-merge-oneof:
+ properties:
+ type:
+ description: The type of authentication.
MessageLogRequest:
description: Details of the request.
example:
@@ -40690,6 +47675,561 @@ components:
- name
- value
type: object
+ FeatureFlagUpdate:
+ properties:
+ name:
+ description: The name of the feature flag.
+ example: canCreateCampaignFromTemplate
+ type: string
+ value:
+ description: The value of the feature flag.
+ example: "true"
+ type: string
+ required:
+ - name
+ - value
+ type: object
+ NewRiskNotification:
+ description: Data for creating a new risk notification.
+ properties:
+ entity:
+ description: The entity type to analyze within the given time frame.
+ enum:
+ - customer_profile
+ - customer_session
+ example: customer_profile
+ type: string
+ activity:
+ description: The activity metric to analyze within the given entity.
+ enum:
+ - loyalty_points_earned
+ - discounted_amount
+ - completed_orders
+ - coupon_attempts
+ example: loyalty_points_earned
+ type: string
+ timeFrame:
+ description: The rolling time window for risk evaluation.
+ enum:
+ - 1D
+ - 7D
+ - 30D
+ example: 7D
+ type: string
+ required:
+ - activity
+ - entity
+ - timeFrame
+ type: object
+ RiskNotification:
+ description: A risk notification configuration rule.
+ properties:
+ id:
+ description: The internal ID of this entity.
+ example: 6
+ format: int64
+ type: integer
+ created:
+ description: The time this entity was created.
+ example: 2020-06-10T09:05:27.993483Z
+ format: date-time
+ type: string
+ entity:
+ description: The entity type to analyze within the given time frame.
+ enum:
+ - customer_profile
+ - customer_session
+ example: customer_profile
+ type: string
+ activity:
+ description: The activity metric to analyze within the given entity.
+ enum:
+ - loyalty_points_earned
+ - discounted_amount
+ - completed_orders
+ - coupon_attempts
+ example: loyalty_points_earned
+ type: string
+ timeFrame:
+ description: The rolling time window for risk evaluation.
+ enum:
+ - 1D
+ - 7D
+ - 30D
+ example: 7D
+ type: string
+ active:
+ description: Indicates whether this risk notification is active.
+ example: true
+ type: boolean
+ modified:
+ description: Timestamp of the most recent update.
+ example: 2026-04-16T09:05:27.993483Z
+ format: date-time
+ type: string
+ required:
+ - active
+ - activity
+ - created
+ - entity
+ - id
+ - modified
+ - timeFrame
+ type: object
+ UpdateRiskNotification:
+ description: Data for updating a risk notification.
+ properties:
+ entity:
+ description: The entity type to analyze within the given time frame.
+ enum:
+ - customer_profile
+ - customer_session
+ example: customer_profile
+ type: string
+ activity:
+ description: The activity metric to analyze within the given entity.
+ enum:
+ - loyalty_points_earned
+ - discounted_amount
+ - completed_orders
+ - coupon_attempts
+ example: loyalty_points_earned
+ type: string
+ timeFrame:
+ description: The rolling time window for risk evaluation.
+ enum:
+ - 1D
+ - 7D
+ - 30D
+ example: 7D
+ type: string
+ active:
+ description: Indicates whether this risk notification is active.
+ example: true
+ type: boolean
+ required:
+ - active
+ - activity
+ - entity
+ - timeFrame
+ type: object
+ Risk:
+ description: A risk detected by the anomaly detection service for one Application
+ group.
+ properties:
+ id:
+ description: The internal ID of this entity.
+ example: 6
+ format: int64
+ type: integer
+ created:
+ description: The time this entity was created.
+ example: 2020-06-10T09:05:27.993483Z
+ format: date-time
+ type: string
+ notificationId:
+ description: The ID of the risk notification rule that flagged this risk.
+ example: 3
+ format: int64
+ type: integer
+ featureDate:
+ description: |
+ The date of the activity data in which this risk was detected. The anomaly
+ detection pipeline scores complete 24-hour cycles, so this is always the day
+ before the risk was reported, not the reporting date itself.
+ example: 2026-06-05
+ format: date
+ type: string
+ groupKey:
+ description: |
+ The Application group this risk was detected in. Contains the Application ID,
+ or `__GLOBAL__` for metrics that are not grouped by Application.
+ example: "7"
+ type: string
+ applicationId:
+ description: The ID of the Application this risk belongs to. Absent for
+ global metrics.
+ example: 7
+ format: int64
+ type: integer
+ status:
+ description: The triage lifecycle status of this risk.
+ enum:
+ - active
+ - in_review
+ - confirmed
+ - discarded
+ example: active
+ type: string
+ criticality:
+ description: The critical classification bucket of this risk.
+ enum:
+ - critical
+ - not_critical
+ example: critical
+ type: string
+ entity:
+ description: The entity type the risk was detected in.
+ enum:
+ - customer_profile
+ - customer_session
+ example: customer_profile
+ type: string
+ activity:
+ description: The activity metric the risk was detected in.
+ enum:
+ - loyalty_points_earned
+ - discounted_amount
+ - completed_orders
+ - coupon_attempts
+ example: discounted_amount
+ type: string
+ timeFrame:
+ description: The rolling time window of the risk evaluation.
+ enum:
+ - 1D
+ - 7D
+ - 30D
+ example: 7D
+ type: string
+ reportedDate:
+ description: The time the ML service reported this risk.
+ example: 2026-06-05T06:26:13.698884Z
+ format: date-time
+ type: string
+ affectedEntityCount:
+ description: The total number of entities affected by this risk.
+ example: 4437
+ format: int64
+ type: integer
+ description:
+ description: Human-readable description of the detected anomaly.
+ example: Unusual discount usage detected for 4437 customer profiles.
+ type: string
+ discardReason:
+ description: The reason this risk was discarded. Only present on discarded
+ risks.
+ enum:
+ - expected_behavior
+ - other
+ example: expected_behavior
+ type: string
+ statusComment:
+ description: |
+ The free-text details of the latest reclassification action: the description
+ for resolving confirmed risks, or the details for discarding risks.
+ example: Investigated with the customer and fixed the loyalty rule.
+ type: string
+ statusChangedBy:
+ description: The ID of the user who performed the latest reclassification
+ action.
+ example: 42
+ format: int64
+ type: integer
+ statusChangedAt:
+ description: The time of the latest reclassification action.
+ example: 2026-06-06T09:12:45Z
+ format: date-time
+ type: string
+ modified:
+ description: Timestamp of the most recent update.
+ example: 2026-06-05T06:26:13.698884Z
+ format: date-time
+ type: string
+ required:
+ - activity
+ - affectedEntityCount
+ - created
+ - criticality
+ - entity
+ - featureDate
+ - groupKey
+ - id
+ - modified
+ - notificationId
+ - reportedDate
+ - status
+ - timeFrame
+ type: object
+ RiskCriticalityUpdate:
+ properties:
+ riskIds:
+ description: The IDs of the risks to reclassify.
+ example:
+ - 1
+ - 2
+ - 3
+ items:
+ format: int64
+ type: integer
+ maxItems: 1000
+ minItems: 1
+ type: array
+ criticality:
+ description: |
+ The criticality to assign to risks. Only `not_critical` is accepted: critical risks can be
+ reclassified as non-critical, but not the other way around.
+ enum:
+ - not_critical
+ example: not_critical
+ type: string
+ required:
+ - criticality
+ - riskIds
+ type: object
+ ReviewRisksRequest:
+ properties:
+ riskIds:
+ description: The IDs of the risks to move to `In review` status.
+ example:
+ - 1
+ - 2
+ - 3
+ items:
+ format: int64
+ type: integer
+ maxItems: 1000
+ minItems: 1
+ type: array
+ required:
+ - riskIds
+ type: object
+ ConfirmRisksRequest:
+ properties:
+ riskIds:
+ description: The IDs of the risks to confirm.
+ example:
+ - 1
+ - 2
+ - 3
+ items:
+ format: int64
+ type: integer
+ maxItems: 1000
+ minItems: 1
+ type: array
+ comment:
+ description: Free-text description of how the risk was resolved.
+ example: Investigated with the customer and fixed the loyalty rule.
+ minLength: 1
+ type: string
+ required:
+ - comment
+ - riskIds
+ type: object
+ DiscardRisksRequest:
+ properties:
+ riskIds:
+ description: The IDs of the risks to discard.
+ example:
+ - 1
+ - 2
+ - 3
+ items:
+ format: int64
+ type: integer
+ maxItems: 1000
+ minItems: 1
+ type: array
+ reason:
+ description: The reason the risks are being discarded.
+ enum:
+ - expected_behavior
+ - other
+ example: expected_behavior
+ type: string
+ comment:
+ description: |
+ Free-text description of why the risks are being discarded. Required when `reason` is `other`, optional for
+ `expected_behavior`.
+ example: Duplicate of a risk already being handled.
+ type: string
+ required:
+ - reason
+ - riskIds
+ type: object
+ RiskAffectedEntityItem:
+ description: A single entity flagged as anomalous within a risk.
+ properties:
+ entityId:
+ description: The integration ID of the affected entity.
+ example: "174165415"
+ type: string
+ activityValue:
+ description: The observed value of the monitored activity metric for this
+ entity.
+ example: 2898.2
+ format: double
+ type: number
+ threshold:
+ description: The anomaly threshold computed for the entity's Application
+ group.
+ example: 60.0
+ format: double
+ type: number
+ severityRatio:
+ description: The ratio of the observed value to the threshold.
+ example: 48.3
+ format: double
+ type: number
+ criticality:
+ description: The critical classification bucket of this entity.
+ enum:
+ - critical
+ - not_critical
+ example: critical
+ type: string
+ required:
+ - activityValue
+ - criticality
+ - entityId
+ - severityRatio
+ - threshold
+ type: object
+ RiskDetail:
+ description: Details of a risk, including its most severely affected entities.
+ properties:
+ id:
+ description: The internal ID of this entity.
+ example: 6
+ format: int64
+ type: integer
+ created:
+ description: The time this entity was created.
+ example: 2020-06-10T09:05:27.993483Z
+ format: date-time
+ type: string
+ notificationId:
+ description: The ID of the risk notification rule that flagged this risk.
+ example: 3
+ format: int64
+ type: integer
+ featureDate:
+ description: |
+ The date of the activity data in which this risk was detected. The anomaly
+ detection pipeline scores complete 24-hour cycles, so this is always the day
+ before the risk was reported, not the reporting date itself.
+ example: 2026-06-05
+ format: date
+ type: string
+ groupKey:
+ description: |
+ The Application group this risk was detected in. Contains the Application ID,
+ or `__GLOBAL__` for metrics that are not grouped by Application.
+ example: "7"
+ type: string
+ applicationId:
+ description: The ID of the Application this risk belongs to. Absent for
+ global metrics.
+ example: 7
+ format: int64
+ type: integer
+ status:
+ description: The triage lifecycle status of this risk.
+ enum:
+ - active
+ - in_review
+ - confirmed
+ - discarded
+ example: active
+ type: string
+ criticality:
+ description: The critical classification bucket of this risk.
+ enum:
+ - critical
+ - not_critical
+ example: critical
+ type: string
+ entity:
+ description: The entity type the risk was detected in.
+ enum:
+ - customer_profile
+ - customer_session
+ example: customer_profile
+ type: string
+ activity:
+ description: The activity metric the risk was detected in.
+ enum:
+ - loyalty_points_earned
+ - discounted_amount
+ - completed_orders
+ - coupon_attempts
+ example: discounted_amount
+ type: string
+ timeFrame:
+ description: The rolling time window of the risk evaluation.
+ enum:
+ - 1D
+ - 7D
+ - 30D
+ example: 7D
+ type: string
+ reportedDate:
+ description: The time the ML service reported this risk.
+ example: 2026-06-05T06:26:13.698884Z
+ format: date-time
+ type: string
+ affectedEntityCount:
+ description: The total number of entities affected by this risk.
+ example: 4437
+ format: int64
+ type: integer
+ description:
+ description: Human-readable description of the detected anomaly.
+ example: Unusual discount usage detected for 4437 customer profiles.
+ type: string
+ discardReason:
+ description: The reason this risk was discarded. Only present on discarded
+ risks.
+ enum:
+ - expected_behavior
+ - other
+ example: expected_behavior
+ type: string
+ statusComment:
+ description: |
+ The free-text details of the latest reclassification action: the description
+ for resolving confirmed risks, or the details for discarding risks.
+ example: Investigated with the customer and fixed the loyalty rule.
+ type: string
+ statusChangedBy:
+ description: The ID of the user who performed the latest reclassification
+ action.
+ example: 42
+ format: int64
+ type: integer
+ statusChangedAt:
+ description: The time of the latest reclassification action.
+ example: 2026-06-06T09:12:45Z
+ format: date-time
+ type: string
+ modified:
+ description: Timestamp of the most recent update.
+ example: 2026-06-05T06:26:13.698884Z
+ format: date-time
+ type: string
+ affectedEntities:
+ description: The affected entities with the highest severity ratios, in
+ descending order.
+ items:
+ $ref: '#/components/schemas/RiskAffectedEntityItem'
+ type: array
+ required:
+ - activity
+ - affectedEntities
+ - affectedEntityCount
+ - created
+ - criticality
+ - entity
+ - featureDate
+ - groupKey
+ - id
+ - modified
+ - notificationId
+ - reportedDate
+ - status
+ - timeFrame
+ type: object
Change:
example:
new:
@@ -41472,15 +49012,6 @@ components:
- logicalOperations
- name
type: object
- RolesV2Thresholds:
- properties:
- loyaltyPointsLimit:
- description: Maximum number of loyalty points a support user can award without
- approval.
- example: 100
- format: int64
- type: integer
- type: object
RoleV2ApplicationDetails:
properties:
application:
@@ -41498,8 +49029,6 @@ components:
description: Name of the tools-related permission set.
example: Tools permission set
type: string
- thresholds:
- $ref: '#/components/schemas/RolesV2Thresholds'
type: object
RoleV2Application:
additionalProperties:
@@ -41589,8 +49118,32 @@ components:
description: Name of the account-level permission set
type: string
type: object
+ RolesV2Thresholds:
+ example:
+ loyaltyPointsLimit: 100
+ loyaltyProgramId: 8
+ properties:
+ loyaltyProgramId:
+ description: Identifier of the loyalty program. You can get the ID with
+ the [List loyalty programs](https://docs.talon.one/management-api#tag/Loyalty/operation/getLoyaltyPrograms)
+ endpoint.
+ example: 8
+ format: int64
+ type: integer
+ loyaltyPointsLimit:
+ description: Maximum number of loyalty points a support user can award without
+ approval.
+ example: 100
+ format: int64
+ type: integer
+ type: object
RoleV2Permissions:
example:
+ thresholds:
+ - loyaltyPointsLimit: 100
+ loyaltyProgramId: 8
+ - loyaltyPointsLimit: 100
+ loyaltyProgramId: 8
permissionSets:
- name: Application permission set
logicalOperations:
@@ -41657,10 +49210,21 @@ components:
type: array
roles:
$ref: '#/components/schemas/RoleV2RolesGroup'
+ thresholds:
+ description: Support user limits for actions that require admin approval
+ within the given application.
+ items:
+ $ref: '#/components/schemas/RolesV2Thresholds'
+ type: array
type: object
RoleV2Base:
example:
permissions:
+ thresholds:
+ - loyaltyPointsLimit: 100
+ loyaltyProgramId: 8
+ - loyaltyPointsLimit: 100
+ loyaltyProgramId: 8
permissionSets:
- name: Application permission set
logicalOperations:
@@ -41743,6 +49307,11 @@ components:
isReadonly: false
created: 2020-06-10T09:05:27.993483Z
permissions:
+ thresholds:
+ - loyaltyPointsLimit: 100
+ loyaltyProgramId: 8
+ - loyaltyPointsLimit: 100
+ loyaltyProgramId: 8
permissionSets:
- name: Application permission set
logicalOperations:
@@ -42444,6 +50013,240 @@ components:
- key
- name
type: object
+ MCPOAuthTokenRequest:
+ properties:
+ grant_type:
+ description: OAuth2 grant type.
+ enum:
+ - authorization_code
+ - refresh_token
+ example: authorization_code
+ type: string
+ code:
+ description: Authorization code. Required for `authorization_code` grant.
+ example: 4a3b2c1d9e6f78901234567890abcdef
+ type: string
+ client_id:
+ description: Client ID. Required for `authorization_code` grant.
+ example: a3f8c1e2b4d56789
+ type: string
+ redirect_uri:
+ description: Redirect URI. Required for `authorization_code` grant.
+ example: http://localhost:3000/callback
+ type: string
+ code_verifier:
+ description: PKCE code verifier. Required for `authorization_code` grant.
+ example: dBjftJeZ4CVP-mB92K27uhbUJU1p1r_wW1gFWFOEjXk
+ type: string
+ refresh_token:
+ description: Refresh token. Required for `refresh_token` grant.
+ example: mcpor:9f8e7d6c
+ type: string
+ required:
+ - grant_type
+ type: object
+ MCPOAuthToken:
+ properties:
+ access_token:
+ description: Bearer access token.
+ example: mcpoa:4a3b2c1d...
+ type: string
+ token_type:
+ description: Token type. Always "Bearer".
+ enum:
+ - Bearer
+ example: Bearer
+ type: string
+ expires_in:
+ description: Seconds until the access token expires.
+ example: 3600
+ format: int64
+ type: integer
+ refresh_token:
+ description: Refresh token for obtaining a new access token.
+ example: mcpor:9f8e7d6c...
+ type: string
+ refresh_token_expires_in:
+ description: Seconds until the refresh token expires.
+ example: 2592000
+ format: int64
+ type: integer
+ required:
+ - access_token
+ - expires_in
+ - refresh_token
+ - refresh_token_expires_in
+ - token_type
+ type: object
+ MCPOAuthTokenError:
+ properties:
+ error:
+ description: RFC 6749 §5.2 error code.
+ enum:
+ - invalid_request
+ - invalid_client
+ - invalid_grant
+ - unsupported_grant_type
+ example: invalid_grant
+ type: string
+ error_description:
+ description: Human-readable description of the error.
+ example: authorization code is invalid, already used, or expired
+ type: string
+ required:
+ - error
+ type: object
+ NewMCPOAuthClient:
+ properties:
+ client_name:
+ description: Human-readable name for the OAuth2 client.
+ example: My MCP Integration
+ type: string
+ redirect_uris:
+ description: List of allowed redirect URIs for the authorization code flow.
+ At least one URI is required.
+ example:
+ - http://localhost:3000/callback
+ items:
+ type: string
+ minItems: 1
+ type: array
+ required:
+ - client_name
+ - redirect_uris
+ type: object
+ MCPOAuthClient:
+ properties:
+ client_id:
+ description: Unique identifier for the OAuth2 client.
+ example: a3f8c1e2b4d56789
+ type: string
+ client_name:
+ description: Human-readable name for the OAuth2 client.
+ example: My MCP Integration
+ type: string
+ redirect_uris:
+ description: List of allowed redirect URIs for the authorization code flow.
+ example:
+ - https://example.com/callback
+ - http://localhost:3000/callback
+ items:
+ type: string
+ type: array
+ created_at:
+ description: Timestamp of when the client was registered.
+ example: 2026-06-12T10:00:00Z
+ format: date-time
+ type: string
+ required:
+ - client_id
+ - client_name
+ - created_at
+ - redirect_uris
+ type: object
+ MCPCompleteOAuthSession:
+ properties:
+ sessionId:
+ description: The pending authorization session ID to complete.
+ example: a3f8c1e2b4d567890123456789abcdef
+ type: string
+ required:
+ - sessionId
+ type: object
+ MCPOAuthCompleteResult:
+ properties:
+ redirectUrl:
+ description: The full redirect URL the browser should be sent to, containing
+ the authorization code and state as query parameters.
+ example: http://localhost:3000/callback?code=abc123&state=xyz
+ type: string
+ required:
+ - redirectUrl
+ type: object
+ MCPOAuthSessionInfo:
+ properties:
+ session_id:
+ description: The identifier of the authorization session.
+ example: a3f8c1e2b4d567890123456789abcdef
+ type: string
+ expires_at:
+ description: The date and time at which the session expires. Date and time.
+ Follows RFC3339 format.
+ example: 2016-03-28T08:34:32Z
+ format: date-time
+ type: string
+ client:
+ $ref: '#/components/schemas/MCPOAuthClient'
+ required:
+ - client
+ - session_id
+ type: object
+ MCPOAuthProtectedResource:
+ properties:
+ resource:
+ description: The URL of the protected resource (the MCP entrypoint).
+ example: https://mycompany.talon.one/v1/mcp/entrypoint
+ type: string
+ authorization_servers:
+ description: List of authorization server base URLs that can issue tokens
+ for this resource.
+ example:
+ - https://mycompany.talon.one/v1/mcp/auth
+ items:
+ type: string
+ type: array
+ required:
+ - authorization_servers
+ - resource
+ type: object
+ MCPOAuthServerMetadata:
+ properties:
+ issuer:
+ description: The authorization server's issuer identifier (its base URL).
+ example: https://mycompany.talon.one
+ type: string
+ authorization_endpoint:
+ description: URL of the authorization endpoint.
+ example: https://mycompany.talon.one/v1/mcp/auth/authorize
+ type: string
+ token_endpoint:
+ description: URL of the token endpoint.
+ example: https://mycompany.talon.one/v1/mcp/auth/token
+ type: string
+ registration_endpoint:
+ description: URL of the client registration endpoint.
+ example: https://mycompany.talon.one/v1/mcp/auth/register
+ type: string
+ response_types_supported:
+ description: List of supported OAuth2 response types.
+ example:
+ - code
+ items:
+ type: string
+ type: array
+ grant_types_supported:
+ description: List of supported OAuth2 grant types.
+ example:
+ - authorization_code
+ items:
+ type: string
+ type: array
+ code_challenge_methods_supported:
+ description: List of supported PKCE code challenge methods.
+ example:
+ - S256
+ items:
+ type: string
+ type: array
+ required:
+ - authorization_endpoint
+ - code_challenge_methods_supported
+ - grant_types_supported
+ - issuer
+ - registration_endpoint
+ - response_types_supported
+ - token_endpoint
+ type: object
NewValueMap:
type: object
ValueMap:
@@ -42696,7 +50499,7 @@ components:
- - - Item
- - catch
- false
- - - =
+ - - contains
- - "."
- Item
- Category
@@ -42716,7 +50519,7 @@ components:
- - - Item
- - catch
- false
- - - =
+ - - contains
- - "."
- Item
- Category
@@ -42759,7 +50562,7 @@ components:
- - - Item
- - catch
- false
- - - =
+ - - contains
- - "."
- Item
- Category
@@ -42847,7 +50650,7 @@ components:
- - - Item
- - catch
- false
- - - =
+ - - contains
- - "."
- Item
- Category
@@ -43135,6 +50938,37 @@ components:
- imported
- storeCount
type: object
+ CampaignLoyaltyProgram:
+ description: A loyalty program referenced in a campaign.
+ properties:
+ id:
+ description: The ID of the loyalty program.
+ example: 5
+ format: int64
+ type: integer
+ name:
+ description: The name of the loyalty program.
+ example: My program
+ type: string
+ tiers:
+ description: The names of the tiers in the loyalty program.
+ example:
+ - Silver
+ - Gold
+ - Platinum
+ items:
+ type: string
+ type: array
+ cardBased:
+ description: Whether the loyalty program is card-based.
+ example: false
+ type: boolean
+ required:
+ - cardBased
+ - id
+ - name
+ - tiers
+ type: object
UpdateAchievement:
example:
fixedStartDate: 2000-01-23T04:56:07.000+00:00
@@ -43349,13 +51183,6 @@ components:
achievements.
example: false
type: boolean
- sandbox:
- description: Indicates if this achievement is a live or sandbox achievement.
- Achievements of a given type can only be connected to Applications of
- the same type.
- example: true
- title: Sandbox
- type: boolean
subscribedApplications:
description: A list containing the IDs of all applications that are subscribed
to A list containing the IDs of all Applications that are connected to
@@ -43368,11 +51195,6 @@ components:
type: integer
minItems: 0
type: array
- timezone:
- description: A string containing an IANA timezone descriptor.
- example: Europe/Berlin
- minLength: 1
- type: string
type: object
AchievementAdditionalPropertiesV2:
properties:
@@ -43388,22 +51210,61 @@ components:
**Note**: This is not available if the user has been deleted.
example: John Doe
type: string
+ periodEndOverride:
+ $ref: '#/components/schemas/TimePoint'
hasProgress:
description: Indicates if a customer has made progress in the achievement.
type: boolean
status:
- description: The status of the achievement.
+ description: "The status of the achievement. \
+ \ \n\
+ - `active`: The achievement is available to customers.\n- `scheduled`:\
+ \ The achievement has a `fixedStartDate` set in the future.\n- `expired`:\
+ \ The achievement's `endDate` is in the past.\n"
enum:
- - inprogress
+ - active
+ - scheduled
- expired
- - not_started
- - completed
- example: inprogress
+ example: active
type: string
required:
- userId
type: object
AchievementV2:
+ example:
+ referencedByCampaigns:
+ - id: 1
+ applicationId: 2
+ - id: 1
+ applicationId: 2
+ period: 1Y
+ endDate: 2024-01-15T15:04:05+07:00
+ created: 2020-06-10T09:05:27.993483Z
+ timezone: Europe/Berlin
+ campaignId: 3
+ sandbox: true
+ description: 50% off for every 50th purchase in a year.
+ activationPolicy: fixed_schedule
+ title: 50% off on 50th purchase.
+ allowRollbackAfterCompletion: false
+ userId: 1234
+ hasProgress: true
+ target: 50.0
+ subscribedApplications:
+ - 132
+ - 97
+ fixedStartDate: 2024-01-15T15:04:05+07:00
+ createdBy: John Doe
+ name: Order50Discount
+ periodEndOverride:
+ month: 11
+ dayOfMonth: 23
+ hour: 23
+ minute: 59
+ second: 59
+ id: 6
+ recurrencePolicy: no_recurrence
+ status: active
properties:
id:
description: The internal ID of this entity.
@@ -43511,13 +51372,6 @@ components:
achievements.
example: false
type: boolean
- sandbox:
- description: Indicates if this achievement is a live or sandbox achievement.
- Achievements of a given type can only be connected to Applications of
- the same type.
- example: true
- title: Sandbox
- type: boolean
subscribedApplications:
description: A list containing the IDs of all applications that are subscribed
to A list containing the IDs of all Applications that are connected to
@@ -43530,11 +51384,6 @@ components:
type: integer
minItems: 0
type: array
- timezone:
- description: A string containing an IANA timezone descriptor.
- example: Europe/Berlin
- minLength: 1
- type: string
userId:
description: The ID of the user that created this achievement.
example: 1234
@@ -43547,18 +51396,49 @@ components:
**Note**: This is not available if the user has been deleted.
example: John Doe
type: string
+ periodEndOverride:
+ $ref: '#/components/schemas/TimePoint'
hasProgress:
description: Indicates if a customer has made progress in the achievement.
type: boolean
status:
- description: The status of the achievement.
+ description: "The status of the achievement. \
+ \ \n\
+ - `active`: The achievement is available to customers.\n- `scheduled`:\
+ \ The achievement has a `fixedStartDate` set in the future.\n- `expired`:\
+ \ The achievement's `endDate` is in the past.\n"
enum:
- - inprogress
+ - active
+ - scheduled
- expired
- - not_started
- - completed
- example: inprogress
+ example: active
+ type: string
+ sandbox:
+ description: Indicates if this achievement is a live or sandbox achievement.
+ Achievements of a given type can only be connected to Applications of
+ the same type.
+ example: true
+ title: Sandbox
+ type: boolean
+ timezone:
+ description: A string containing an IANA timezone descriptor.
+ example: Europe/Berlin
+ minLength: 1
type: string
+ campaignId:
+ description: This property is **deprecated**. Use `referencedByCampaigns`
+ instead. This field contains the first campaign ID from the related `referencedByCampaigns`,
+ and is omitted when `referencedByCampaigns` is empty.
+ example: 3
+ format: int64
+ type: integer
+ x-deprecated: true
+ referencedByCampaigns:
+ description: The campaigns that reference this achievement. They are sorted
+ in ascending order by their id.
+ items:
+ $ref: '#/components/schemas/CampaignReference'
+ type: array
required:
- activationPolicy
- created
@@ -43566,6 +51446,7 @@ components:
- id
- name
- recurrencePolicy
+ - referencedByCampaigns
- sandbox
- subscribedApplications
- target
@@ -43574,6 +51455,22 @@ components:
- userId
type: object
CreateAchievementV2:
+ example:
+ period: 1Y
+ endDate: 2024-01-15T15:04:05+07:00
+ timezone: Europe/Berlin
+ sandbox: true
+ description: 50% off for every 50th purchase in a year.
+ activationPolicy: fixed_schedule
+ title: 50% off on 50th purchase.
+ allowRollbackAfterCompletion: false
+ target: 50.0
+ subscribedApplications:
+ - 132
+ - 97
+ fixedStartDate: 2024-01-15T15:04:05+07:00
+ name: Order50Discount
+ recurrencePolicy: no_recurrence
properties:
name:
description: |
@@ -43671,13 +51568,6 @@ components:
achievements.
example: false
type: boolean
- sandbox:
- description: Indicates if this achievement is a live or sandbox achievement.
- Achievements of a given type can only be connected to Applications of
- the same type.
- example: true
- title: Sandbox
- type: boolean
subscribedApplications:
description: A list containing the IDs of all applications that are subscribed
to A list containing the IDs of all Applications that are connected to
@@ -43690,6 +51580,13 @@ components:
type: integer
minItems: 0
type: array
+ sandbox:
+ description: Indicates if this achievement is a live or sandbox achievement.
+ Achievements of a given type can only be connected to Applications of
+ the same type.
+ example: true
+ title: Sandbox
+ type: boolean
timezone:
description: A string containing an IANA timezone descriptor.
example: Europe/Berlin
@@ -43704,6 +51601,20 @@ components:
- title
type: object
UpdateAchievementV2:
+ example:
+ fixedStartDate: 2024-01-15T15:04:05+07:00
+ period: 1Y
+ endDate: 2024-01-15T15:04:05+07:00
+ name: Order50Discount
+ description: 50% off for every 50th purchase in a year.
+ activationPolicy: fixed_schedule
+ title: 50% off on 50th purchase.
+ allowRollbackAfterCompletion: false
+ target: 50.0
+ recurrencePolicy: no_recurrence
+ subscribedApplications:
+ - 132
+ - 97
properties:
name:
description: |
@@ -43797,16 +51708,9 @@ components:
format: date-time
type: string
allowRollbackAfterCompletion:
- description: When `true`, customer progress can be rolled back in completed
- achievements.
- example: false
- type: boolean
- sandbox:
- description: Indicates if this achievement is a live or sandbox achievement.
- Achievements of a given type can only be connected to Applications of
- the same type.
- example: true
- title: Sandbox
+ description: When `true`, customer progress can be rolled back in completed
+ achievements.
+ example: false
type: boolean
subscribedApplications:
description: A list containing the IDs of all applications that are subscribed
@@ -43820,11 +51724,12 @@ components:
type: integer
minItems: 0
type: array
- timezone:
- description: A string containing an IANA timezone descriptor.
- example: Europe/Berlin
- minLength: 1
- type: string
+ required:
+ - description
+ - name
+ - subscribedApplications
+ - target
+ - title
type: object
AchievementReference:
properties:
@@ -43851,11 +51756,25 @@ components:
example: 4501
format: int64
type: integer
+ campaignName:
+ description: The name of the campaign that references this achievement.
+ example: Summer promotions
+ type: string
+ campaignState:
+ description: The state of the campaign that references this achievement.
+ enum:
+ - enabled
+ - disabled
+ - archived
+ example: enabled
+ type: string
required:
- achievementId
- applicationId
- applicationName
- campaignId
+ - campaignName
+ - campaignState
type: object
AnalyticsDataPoint:
properties:
@@ -44029,1188 +51948,2912 @@ components:
format: int64
type: integer
required:
- - value
+ - value
+ type: object
+ AnalyticsProduct:
+ properties:
+ id:
+ description: The ID of the product.
+ example: 1
+ format: int64
+ type: integer
+ name:
+ description: The name of the product.
+ example: MyProduct
+ type: string
+ catalogId:
+ description: |
+ The ID of the catalog. You can find the ID in the Campaign Manager in **Account** > **Tools** > **Cart item catalogs**.
+ example: 1
+ format: int64
+ type: integer
+ unitsSold:
+ $ref: '#/components/schemas/AnalyticsDataPointWithTrend'
+ required:
+ - catalogId
+ - id
+ - name
+ type: object
+ ProductUnitAnalyticsDataPoint:
+ properties:
+ startTime:
+ description: The start of the aggregation time frame in UTC.
+ example: 2024-02-01T00:00:00Z
+ format: date-time
+ type: string
+ endTime:
+ description: The end of the aggregation time frame in UTC.
+ format: date-time
+ type: string
+ unitsSold:
+ $ref: '#/components/schemas/AnalyticsDataPointWithTrend'
+ productId:
+ description: The ID of the product.
+ example: 1
+ format: int64
+ type: integer
+ productName:
+ description: The name of the product.
+ example: MyProduct
+ type: string
+ required:
+ - endTime
+ - productId
+ - productName
+ - startTime
+ - unitsSold
+ type: object
+ ProductUnitAnalytics:
+ properties:
+ data:
+ items:
+ $ref: '#/components/schemas/ProductUnitAnalyticsDataPoint'
+ type: array
+ totals:
+ $ref: '#/components/schemas/ProductUnitAnalytics_totals'
+ required:
+ - data
+ - totals
+ type: object
+ AnalyticsSKU:
+ properties:
+ id:
+ description: The ID of the SKU linked to the Application.
+ example: 1
+ format: int64
+ type: integer
+ sku:
+ description: The SKU linked to the Application.
+ example: SKU-123
+ type: string
+ lastUpdated:
+ description: Values in UTC for the date the SKU linked to the product was
+ last updated.
+ example: 2024-02-01T00:00:00Z
+ format: date-time
+ type: string
+ catalogId:
+ description: The ID of the catalog that contains the SKU.
+ example: 1
+ format: int64
+ type: integer
+ productId:
+ description: The ID of the product that the SKU belongs to.
+ example: 1
+ format: int64
+ type: integer
+ unitsSold:
+ $ref: '#/components/schemas/AnalyticsDataPointWithTrend'
+ required:
+ - id
+ - sku
+ type: object
+ SkuUnitAnalyticsDataPoint:
+ properties:
+ startTime:
+ description: The start of the aggregation time frame in UTC.
+ example: 2024-02-01T00:00:00Z
+ format: date-time
+ type: string
+ endTime:
+ description: The end of the aggregation time frame in UTC.
+ format: date-time
+ type: string
+ unitsSold:
+ $ref: '#/components/schemas/AnalyticsDataPointWithTrend'
+ sku:
+ description: The SKU linked to the application.
+ example: SKU-123
+ type: string
+ required:
+ - endTime
+ - sku
+ - startTime
+ - unitsSold
+ type: object
+ SkuUnitAnalytics:
+ properties:
+ data:
+ items:
+ $ref: '#/components/schemas/SkuUnitAnalyticsDataPoint'
+ type: array
+ totals:
+ $ref: '#/components/schemas/ProductUnitAnalytics_totals'
+ required:
+ - data
+ - totals
+ type: object
+ GenerateCampaignDescription:
+ properties:
+ campaignID:
+ description: ID of a campaign.
+ format: int64
+ type: integer
+ rulesetID:
+ description: ID of a ruleset.
+ format: int64
+ type: integer
+ currency:
+ description: Currency for the campaign.
+ type: string
+ required:
+ - campaignID
+ - currency
+ - rulesetID
+ type: object
+ GenerateCampaignTags:
+ properties:
+ rulesetID:
+ description: ID of a ruleset.
+ format: int64
+ type: integer
+ required:
+ - rulesetID
+ type: object
+ GenerateItemFilterDescription:
+ properties:
+ itemFilter:
+ description: An array of item filter Talang expressions.
+ example:
+ - filter
+ - - "."
+ - Session
+ - CartItems
+ - - - Item
+ - - catch
+ - false
+ - - and
+ - - '!='
+ - - "."
+ - Item
+ - Attributes
+ - c_productType
+ - egiftcard
+ items:
+ properties: {}
+ type: object
+ type: array
+ required:
+ - itemFilter
+ type: object
+ GenerateCampaignSummary:
+ properties:
+ campaignID:
+ description: ID of a campaign.
+ format: int64
+ type: integer
+ rulesetID:
+ description: ID of a ruleset.
+ format: int64
+ type: integer
+ currency:
+ description: Currency for the campaign.
+ type: string
+ required:
+ - campaignID
+ - currency
+ - rulesetID
+ type: object
+ GenerateUserSessionSummary:
+ properties:
+ sessionID:
+ description: The ID of the session.
+ type: string
+ applicationID:
+ description: The ID of the Application. It is displayed in your Talon.One
+ deployment URL.
+ type: number
+ required:
+ - applicationID
+ - sessionID
+ type: object
+ GenerateAuditLogSummary:
+ properties:
+ logID:
+ description: The ID of the audit log.
+ format: int64
+ type: integer
+ required:
+ - logID
+ type: object
+ GenerateCouponFailureSummary:
+ properties:
+ eventID:
+ description: The ID of the event.
+ format: int64
+ type: integer
+ language:
+ description: The language the summary will be generated in.
+ example: en
+ type: string
+ required:
+ - eventID
+ type: object
+ CouponFailureSummary:
+ description: Summary of the reasons for coupon redemption failure.
+ example:
+ summary: Session total was less than the required total.
+ eventID: 1011
+ createdAt: 2021-07-20T21:59:00Z
+ profileID: a48f10dddb5c9493aad194e49bb9c1dac
+ language: en
+ id: 1
+ sessionID: "1"
+ couponCode: ABC123
+ status: rejected
+ updatedAt: 2021-07-20T21:59:00Z
+ properties:
+ id:
+ description: ID of the evaluation record.
+ example: 1
+ format: int64
+ type: integer
+ eventID:
+ description: ID of the event.
+ example: 1011
+ format: int64
+ type: integer
+ sessionID:
+ description: ID of the customer session set by your integration layer.
+ example: "1"
+ type: string
+ profileID:
+ description: ID of the customer profile set by your integration layer.
+ example: a48f10dddb5c9493aad194e49bb9c1dac
+ type: string
+ status:
+ description: Status defines if the coupon code was applied or rejected.
+ example: rejected
+ type: string
+ couponCode:
+ description: Coupon code passed for evaluation.
+ example: ABC123
+ type: string
+ language:
+ description: Language of the summary.
+ example: en
+ type: string
+ summary:
+ description: A summary of the reasons for coupon redemption failure.
+ example: Session total was less than the required total.
+ type: string
+ createdAt:
+ description: Timestamp when the request was made.
+ example: 2021-07-20T21:59:00Z
+ format: date-time
+ type: string
+ updatedAt:
+ description: Timestamp when the request was last updated.
+ example: 2021-07-20T21:59:00Z
+ format: date-time
+ type: string
+ required:
+ - couponCode
+ - createdAt
+ - eventID
+ - id
+ - language
+ - status
+ - summary
+ - updatedAt
+ type: object
+ GenerateCouponFailureDetailedSummary:
+ properties:
+ applicationID:
+ description: The ID of the Application. It is displayed in your Talon.One
+ deployment URL.
+ type: number
+ sessionID:
+ description: ID of the customer session where the coupon redemption failed.
+ example: 05c2da0d-48fa-4aa1-b629-898f58f1584d
+ maxLength: 255
+ type: string
+ eventID:
+ description: The ID of the event for which the coupon redemption failed.
+ format: int64
+ type: integer
+ coupon:
+ description: The coupon code that could not be redeemed.
+ example: BKDB946
+ type: string
+ language:
+ description: The language of the summary.
+ example: en
+ type: string
+ required:
+ - applicationID
+ - coupon
+ - eventID
+ - sessionID
+ type: object
+ CampaignLogSummary:
+ description: Campaign Log Summary
+ properties:
+ name:
+ description: Name of the user that performed the change.
+ example: Admin
+ type: string
+ email:
+ description: E-mail of the user that performed the change.
+ example: admin@talon.one
+ type: string
+ created:
+ description: Date and time the change was performed.
+ format: date-time
+ type: string
+ action:
+ description: Action performed by the user.
+ enum:
+ - create
+ - delete
+ - update
+ example: create
+ type: string
+ summary:
+ description: AI-generated summary of the action performed.
+ type: string
+ required:
+ - action
+ - created
+ - email
+ - name
+ - summary
+ type: object
+ IntegrationHubEventType:
+ description: The type of integration hub event.
+ enum:
+ - LoyaltyPointsChanged
+ - LoyaltyTierDowngrade
+ - LoyaltyTierUpgrade
+ - CouponCreated
+ - CouponUpdated
+ - CouponDeleted
+ example: CouponCreated
+ type: string
+ x-generate-enum-go: true
+ IntegrationHubFlowConfigResponse:
+ properties:
+ WorkerCount:
+ description: Number of IntegrationHub workers to run in parallel for this
+ flow (maximum 500).
+ format: int64
+ maximum: 5E+2
+ minimum: 1
+ type: integer
+ MaxEventsPerMessage:
+ description: Maximum number of events to send in a single message to IntegrationHub.
+ format: int64
+ minimum: 1
+ type: integer
+ MaxRetries:
+ description: Maximum number of retries for a IntegrationHub event before
+ it is ignored.
+ format: int64
+ minimum: 0
+ type: integer
+ type: object
+ IntegrationHubFlowResponse:
+ properties:
+ id:
+ description: ID of the integration hub flow.
+ format: int64
+ type: integer
+ integrationName:
+ description: Name of the integration.
+ type: string
+ instanceName:
+ description: Name of the integration instance.
+ type: string
+ createdAt:
+ description: Timestamp when the flow was created.
+ format: date-time
+ type: string
+ disabledUntil:
+ description: Timestamp until which the flow is disabled. Null when the flow
+ is active.
+ format: date-time
+ nullable: true
+ type: string
+ applicationId:
+ description: ID of the application the flow is registered for.
+ example: 54
+ format: int64
+ type: integer
+ loyaltyProgramId:
+ description: ID of the loyalty program the flow is registered for.
+ example: 12
+ format: int64
+ type: integer
+ eventType:
+ description: The event type we want to register a flow for.
+ type: string
+ x-fieldType: IntegrationHubEventType
+ config:
+ $ref: '#/components/schemas/IntegrationHubFlowConfigResponse'
+ required:
+ - config
+ - createdAt
+ - eventType
+ - id
+ type: object
+ IntegrationHubFlowConfig:
+ properties:
+ ApiKey:
+ type: string
+ WorkerCount:
+ default: 10
+ description: Number of IntegrationHub workers to run in parallel for this
+ flow (maximum 500).
+ format: int64
+ maximum: 5E+2
+ minimum: 1
+ type: integer
+ MaxEventsPerMessage:
+ default: 1000
+ description: Maximum number of events to send in a single message to IntegrationHub.
+ format: int64
+ minimum: 1
+ type: integer
+ MaxRetries:
+ default: 10
+ description: Maximum number of retries for a IntegrationHub event before
+ it is ignored.
+ format: int64
+ minimum: 0
+ type: integer
+ InstanceName:
+ description: Name of the Prismatic instance that registered this flow.
+ type: string
+ IntegrationName:
+ description: Name of the Prismatic integration that registered this flow.
+ type: string
+ required:
+ - ApiKey
+ type: object
+ IntegrationHubFlowWithConfig:
+ properties:
+ ApplicationID:
+ description: ID of the application the flow is registered for.
+ example: 54
+ format: int64
+ type: integer
+ LoyaltyProgramID:
+ description: ID of the loyalty program the flow is registered for.
+ example: 12
+ format: int64
+ type: integer
+ EventType:
+ $ref: '#/components/schemas/IntegrationHubEventType'
+ IntegrationHubFlowUrl:
+ description: The URL of the integration hub flow that we want to trigger
+ for the event.
+ type: string
+ Config:
+ $ref: '#/components/schemas/IntegrationHubFlowConfig'
+ required:
+ - Config
+ - EventType
+ - IntegrationHubFlowUrl
+ type: object
+ IntegrationHubFlow:
+ properties:
+ ApplicationID:
+ description: ID of the application the flow is registered for.
+ example: 54
+ format: int64
+ type: integer
+ LoyaltyProgramID:
+ description: ID of the loyalty program the flow is registered for.
+ example: 12
+ format: int64
+ type: integer
+ EventType:
+ $ref: '#/components/schemas/IntegrationHubEventType'
+ IntegrationHubFlowUrl:
+ description: The URL of the integration hub flow that we want to trigger
+ for the event.
+ type: string
+ required:
+ - EventType
+ - IntegrationHubFlowUrl
type: object
- AnalyticsProduct:
+ IntegrationHubEventRecord:
properties:
id:
- description: The ID of the product.
- example: 1
+ description: ID of the event record.
format: int64
type: integer
- name:
- description: The name of the product.
- example: MyProduct
+ flowId:
+ description: ID of the integration hub flow.
+ format: int64
+ type: integer
+ integrationName:
+ description: Name of the integration.
type: string
- catalogId:
- description: |
- The ID of the catalog. You can find the ID in the Campaign Manager in **Account** > **Tools** > **Cart item catalogs**.
- example: 1
+ instanceName:
+ description: Name of the integration instance.
+ type: string
+ eventType:
+ $ref: '#/components/schemas/IntegrationHubEventType'
+ publishedAt:
+ description: Timestamp when the event was published.
+ format: date-time
+ type: string
+ processedAt:
+ description: Timestamp when the event was processed.
+ format: date-time
+ type: string
+ deliveredAt:
+ description: Timestamp when the event was delivered.
+ format: date-time
+ type: string
+ scheduledTo:
+ description: Timestamp after which the event is scheduled to be processed.
+ format: date-time
+ type: string
+ retry:
+ description: Number of delivery retries attempted.
format: int64
type: integer
- unitsSold:
- $ref: '#/components/schemas/AnalyticsDataPointWithTrend'
+ payload:
+ description: The event payload as a formatted JSON string.
+ type: string
required:
- - catalogId
+ - eventType
+ - flowId
- id
- - name
+ - payload
+ - publishedAt
+ - retry
+ - scheduledTo
type: object
- ProductUnitAnalyticsDataPoint:
+ IntegrationHubEventStatusUpdate:
properties:
- startTime:
- description: The start of the aggregation time frame in UTC.
- example: 2024-02-01T00:00:00Z
- format: date-time
- type: string
- endTime:
- description: The end of the aggregation time frame in UTC.
- format: date-time
- type: string
- unitsSold:
- $ref: '#/components/schemas/AnalyticsDataPointWithTrend'
- productId:
- description: The ID of the product.
- example: 1
+ EventId:
+ description: The ID of the integration hub event.
+ example: 123
format: int64
type: integer
- productName:
- description: The name of the product.
- example: MyProduct
+ Status:
+ description: The delivery outcome for the event.
+ enum:
+ - delivered
+ - failed
type: string
+ x-generate-enum-go: true
required:
- - endTime
- - productId
- - productName
- - startTime
- - unitsSold
+ - EventId
+ - Status
type: object
- ProductUnitAnalytics:
+ IntegrationHubEventStatusUpdates:
+ items:
+ $ref: '#/components/schemas/IntegrationHubEventStatusUpdate'
+ type: array
+ IntegrationHubConfig:
+ description: Config used for accessing integrations in IntegrationHub
properties:
- data:
- items:
- $ref: '#/components/schemas/ProductUnitAnalyticsDataPoint'
- type: array
- totals:
- $ref: '#/components/schemas/ProductUnitAnalytics_totals'
+ integrationHubUrl:
+ description: The url used to integrate the IntegrationHub Marketplace.
+ example: https://hub.talon.farm/
+ type: string
+ accessToken:
+ description: Access token used to authenticate a user in Talon.One.
+ example: eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9
+ type: string
required:
- - data
- - totals
+ - accessToken
+ - integrationHubUrl
type: object
- AnalyticsSKU:
+ IntegrationHubInstance:
properties:
- id:
- description: The ID of the SKU linked to the Application.
- example: 1
- format: int64
- type: integer
- sku:
- description: The SKU linked to the Application.
- example: SKU-123
+ instanceId:
+ description: The ID of the Prismatic integration instance.
+ example: aW5zdGFuY2U6MTIz
type: string
- lastUpdated:
- description: Values in UTC for the date the SKU linked to the product was
- last updated.
- example: 2024-02-01T00:00:00Z
- format: date-time
+ instanceName:
+ description: The name of the Prismatic integration instance.
+ example: Create Coupon
type: string
- catalogId:
- description: The ID of the catalog that contains the SKU.
- example: 1
+ required:
+ - instanceId
+ - instanceName
+ type: object
+ IntegrationHubInstanceList:
+ items:
+ $ref: '#/components/schemas/IntegrationHubInstance'
+ type: array
+ NewIntegrationHubCoupons:
+ properties:
+ usageLimit:
+ description: |
+ The number of times the coupon code can be redeemed. `0` means unlimited redemptions but any campaign usage limits will still apply.
+ example: 100
format: int64
+ maximum: 999999
+ minimum: 0
type: integer
- productId:
- description: The ID of the product that the SKU belongs to.
- example: 1
+ discountLimit:
+ description: |
+ The total discount value that the code can give. Typically used to represent a gift card value.
+ example: 30.0
+ maximum: 1E+15
+ minimum: 0
+ type: number
+ reservationLimit:
+ description: |
+ The number of reservations that can be made with this coupon code.
+ example: 45
format: int64
+ maximum: 999999
+ minimum: 0
type: integer
- unitsSold:
- $ref: '#/components/schemas/AnalyticsDataPointWithTrend'
- required:
- - id
- - sku
- type: object
- SkuUnitAnalyticsDataPoint:
- properties:
- startTime:
- description: The start of the aggregation time frame in UTC.
- example: 2024-02-01T00:00:00Z
+ startDate:
+ description: Timestamp at which point the coupon becomes valid.
+ example: 2020-01-24T14:15:22Z
format: date-time
type: string
- endTime:
- description: The end of the aggregation time frame in UTC.
+ expiryDate:
+ description: Expiration date of the coupon. Coupon never expires if this
+ is omitted.
+ example: 2023-08-24T14:15:22Z
format: date-time
type: string
- unitsSold:
- $ref: '#/components/schemas/AnalyticsDataPointWithTrend'
- sku:
- description: The SKU linked to the application.
- example: SKU-123
- type: string
- required:
- - endTime
- - sku
- - startTime
- - unitsSold
- type: object
- SkuUnitAnalytics:
- properties:
- data:
+ limits:
+ description: |
+ Limits configuration for a coupon. These limits will override the limits
+ set from the campaign.
+
+ **Note:** Only usable when creating a single coupon which is not tied to a specific recipient.
+ Only per-profile limits are allowed to be configured.
items:
- $ref: '#/components/schemas/SkuUnitAnalyticsDataPoint'
+ $ref: '#/components/schemas/LimitConfig'
type: array
- totals:
- $ref: '#/components/schemas/ProductUnitAnalytics_totals'
- required:
- - data
- - totals
- type: object
- GenerateCampaignDescription:
- properties:
- campaignID:
- description: ID of a campaign.
+ applicationId:
+ description: The ID of the Application the coupons will belong to.
+ example: 1
format: int64
type: integer
- rulesetID:
- description: ID of a ruleset.
+ campaignId:
+ description: The ID of the Campaign the coupons will belong to.
+ example: 1
format: int64
type: integer
- currency:
- description: Currency for the campaign.
+ batchId:
+ description: An identifier for the batch of coupons being created.
+ example: abcdef123
type: string
- required:
- - campaignID
- - currency
- - rulesetID
- type: object
- GenerateCampaignTags:
- properties:
- rulesetID:
- description: ID of a ruleset.
+ numberOfCoupons:
+ description: The number of new coupon codes to generate for the campaign.
+ Must be at least 1.
+ example: 100
format: int64
type: integer
- required:
- - rulesetID
- type: object
- GenerateItemFilterDescription:
- properties:
- itemFilter:
- description: An array of item filter Talang expressions.
+ attributes:
+ description: Arbitrary properties associated with this item.
example:
- - filter
- - - "."
- - Session
- - CartItems
- - - - Item
- - - catch
- - false
- - - and
- - - '!='
- - - "."
- - Item
- - Attributes
- - c_productType
- - egiftcard
+ campaignSource: cep-integration
+ properties: {}
+ type: object
+ validCharacters:
+ description: |
+ List of characters used to generate the random parts of a code. By default,
+ the list of characters is equivalent to the `[A-Z, 0-9]` regular expression.
+ example:
+ - A
+ - B
+ - C
items:
- properties: {}
- type: object
+ type: string
type: array
+ couponPattern:
+ description: |
+ The pattern used to generate coupon codes.
+ The character `#` is a placeholder and is replaced by a random character from the `validCharacters` set.
+ example: CEP-####-####
+ maxLength: 100
+ minLength: 3
+ type: string
+ isReservationMandatory:
+ default: false
+ description: An indication of whether the code can be redeemed only if it
+ has been reserved first.
+ example: false
+ title: Is reservation mandatory
+ type: boolean
+ implicitlyReserved:
+ description: An indication of whether the coupon is implicitly reserved
+ for all customers.
+ example: false
+ title: Is coupon implicitly reserved for all customers
+ type: boolean
+ recipientIntegrationId:
+ description: The integration ID for this coupon's beneficiary's profile.
+ example: URNGV8294NV
+ maxLength: 1000
+ title: Receiving customer profile integration ID
+ type: string
+ supportRequestId:
+ description: The identifier of the support request to link to the coupon
+ creation. The request must exist and not yet be processed.
+ example: 42
+ format: int64
+ type: integer
+ supportRequestNote:
+ description: A note recorded when the linked support request is approved
+ or rejected. Applied when `supportRequestId` is provided.
+ example: Approved as compensation for the delayed order.
+ type: string
required:
- - itemFilter
+ - applicationId
+ - batchId
+ - campaignId
+ - numberOfCoupons
+ - usageLimit
type: object
- GenerateCampaignSummary:
+ CouponWithApplication:
properties:
- campaignID:
- description: ID of a campaign.
+ id:
+ description: The internal ID of the coupon.
+ example: 6
format: int64
type: integer
- rulesetID:
- description: ID of a ruleset.
+ created:
+ description: The time the coupon was created.
+ example: 2020-06-10T09:05:27.993483Z
+ format: date-time
+ type: string
+ campaignId:
+ description: The ID of the campaign that owns this entity.
+ example: 211
format: int64
+ title: Campaign ID
type: integer
- currency:
- description: Currency for the campaign.
+ value:
+ description: The coupon code.
+ example: XMAS-20-2021
+ minLength: 4
+ title: Coupon Code
type: string
- required:
- - campaignID
- - currency
- - rulesetID
- type: object
- GenerateUserSessionSummary:
- properties:
- sessionID:
- description: The ID of the session.
+ usageLimit:
+ description: |
+ The number of times the coupon code can be redeemed. `0` means unlimited redemptions but any campaign usage limits will still apply.
+ example: 100
+ format: int64
+ maximum: 999999
+ minimum: 0
+ type: integer
+ discountLimit:
+ description: |
+ The total discount value that the code can give. Typically used to represent a gift card value.
+ example: 30.0
+ maximum: 1E+15
+ minimum: 0
+ type: number
+ reservationLimit:
+ description: |
+ The number of reservations that can be made with this coupon code.
+ example: 45
+ format: int64
+ maximum: 999999
+ minimum: 0
+ type: integer
+ startDate:
+ description: Timestamp at which point the coupon becomes valid.
+ example: 2020-01-24T14:15:22Z
+ format: date-time
type: string
- applicationID:
- description: The ID of the Application. It is displayed in your Talon.One
- deployment URL.
+ expiryDate:
+ description: Expiration date of the coupon. Coupon never expires if this
+ is omitted.
+ example: 2023-08-24T14:15:22Z
+ format: date-time
+ type: string
+ limits:
+ description: |
+ Limits configuration for a coupon. These limits will override the limits
+ set from the campaign.
+
+ **Note:** Only usable when creating a single coupon which is not tied to a specific recipient.
+ Only per-profile limits are allowed to be configured.
+ items:
+ $ref: '#/components/schemas/LimitConfig'
+ type: array
+ usageCounter:
+ description: The number of times the coupon has been successfully redeemed.
+ example: 10
+ format: int64
+ title: Total coupon redemptions
+ type: integer
+ discountCounter:
+ description: The amount of discounts given on rules redeeming this coupon.
+ Only usable if a coupon discount budget was set for this coupon.
+ example: 10.0
+ title: Discounts Given
type: number
- required:
- - applicationID
- - sessionID
- type: object
- GenerateAuditLogSummary:
- properties:
- logID:
- description: The ID of the audit log.
+ discountRemainder:
+ description: The remaining discount this coupon can give.
+ example: 5.0
+ title: Coupon Discount Remainder
+ type: number
+ reservationCounter:
+ description: The number of times this coupon has been reserved.
+ example: 1.0
+ title: Number of reservations
+ type: number
+ attributes:
+ description: Custom attributes associated with this coupon.
+ properties: {}
+ title: Attributes of coupon
+ type: object
+ referralId:
+ description: The integration ID of the referring customer (if any) for whom
+ this coupon was created as an effect.
+ example: 326632952
+ format: int64
+ title: Advocate ID
+ type: integer
+ recipientIntegrationId:
+ description: The Integration ID of the customer that is allowed to redeem
+ this coupon.
+ example: URNGV8294NV
+ maxLength: 1000
+ title: Recipient ID
+ type: string
+ importId:
+ description: The ID of the Import which created this coupon.
+ example: 4
+ format: int64
+ title: Import ID
+ type: integer
+ reservation:
+ default: true
+ description: |
+ Defines the reservation type:
+ - `true`: The coupon can be reserved for multiple customers.
+ - `false`: The coupon can be reserved only for one customer. It is a personal code.
+ example: false
+ title: Reservation Type
+ type: boolean
+ batchId:
+ description: The id of the batch the coupon belongs to.
+ example: 32535-43255
+ title: Batch ID
+ type: string
+ isReservationMandatory:
+ default: false
+ description: An indication of whether the code can be redeemed only if it
+ has been reserved first.
+ example: false
+ title: Is reservation mandatory
+ type: boolean
+ implicitlyReserved:
+ description: An indication of whether the coupon is implicitly reserved
+ for all customers.
+ example: false
+ title: Is coupon implicitly reserved for all customers
+ type: boolean
+ applicationId:
+ description: The ID of the application.
+ example: 123
format: int64
type: integer
+ applicationName:
+ description: Name of the Application that is connected to the coupon.
+ example: Test Application
+ type: string
required:
- - logID
+ - applicationId
+ - applicationName
+ - campaignId
+ - created
+ - id
+ - usageCounter
+ - usageLimit
+ - value
type: object
- GenerateCouponFailureSummary:
+ SupportRequestInput:
properties:
- eventID:
- description: The ID of the event.
+ applicationId:
+ description: Identifier of the Application connected to the loyalty program
+ or the campaign. It is displayed in your Talon.One deployment URL.
+ example: 322
format: int64
type: integer
- language:
- description: The language the summary will be generated in.
- example: en
+ campaignId:
+ description: Identifier of the campaign where the coupon or gift card is
+ created.
+ example: 100
+ format: int64
+ type: integer
+ loyaltyProgramId:
+ description: Identifier of the loyalty program. You can get the ID with
+ the [List loyalty programs](https://docs.talon.one/management-api#tag/Loyalty/operation/getLoyaltyPrograms)
+ endpoint.
+ example: 8
+ format: int64
+ type: integer
+ subledgerId:
+ description: Identifier of the subledger the points are added to or deducted
+ from. If there is no existing subledger with this ID, the subledger is
+ created automatically.
+ example: 123
+ format: int64
+ type: integer
+ customerProfileId:
+ description: Integration ID of the customer profile linked to the support
+ request.
+ example: URNGV8294NV
+ type: string
+ requestType:
+ description: Type of reward requested, including gift cards, personal coupons,
+ and loyalty point additions or deductions.
+ enum:
+ - gift_card
+ - personal_coupon
+ - loyalty_points_added
+ - loyalty_points_deducted
+ example: personal_coupon
+ type: string
+ requestValue:
+ description: Requested monetary balance of the gift card or the number of
+ loyalty points to be added or deducted.
+ example: 20.5
+ exclusiveMinimum: false
+ format: float
+ type: number
+ requestNote:
+ description: Notes attached to the support request.
+ example: Support request for coupon failure.
type: string
required:
- - eventID
+ - applicationId
+ - customerProfileId
+ - requestNote
+ - requestType
type: object
- CouponFailureSummary:
- description: Summary of the reasons for coupon redemption failure.
- example:
- summary: Session total was less than the required total.
- eventID: 1011
- createdAt: 2021-07-20T21:59:00Z
- profileID: a48f10dddb5c9493aad194e49bb9c1dac
- language: en
- id: 1
- sessionID: "1"
- couponCode: ABC123
- status: rejected
- updatedAt: 2021-07-20T21:59:00Z
+ SupportRequest:
+ description: Summary of a support request created by a customer support agent.
properties:
id:
- description: ID of the evaluation record.
+ description: Identifier of the support request.
example: 1
format: int64
type: integer
- eventID:
- description: ID of the event.
- example: 1011
+ applicationId:
+ description: Identifier of the Application connected to the loyalty program
+ or the campaign. It is displayed in your Talon.One deployment URL.
+ example: 322
+ format: int64
+ type: integer
+ campaignId:
+ description: Identifier of the campaign where the coupon or gift card is
+ created.
+ example: 100
format: int64
type: integer
- sessionID:
- description: ID of the customer session set by your integration layer.
- example: "1"
+ loyaltyProgramId:
+ description: Identifier of the loyalty program where the points are added
+ or deducted.
+ example: 8
+ format: int64
+ type: integer
+ subledgerId:
+ description: Identifier of the subledger the points are added to or deducted
+ from. If there is no existing subledger with this ID, the subledger is
+ created automatically.
+ example: 123
+ format: int64
+ type: integer
+ createdByUser:
+ description: Email address of the customer support agent who created the
+ support request.
+ example: support.agent.name@company.com
type: string
- profileID:
- description: ID of the customer profile set by your integration layer.
- example: a48f10dddb5c9493aad194e49bb9c1dac
+ createdAt:
+ description: Timestamp when the request was made.
+ example: 2025-07-20T22:00:00Z
+ format: date-time
type: string
- status:
- description: Status defines if the coupon code was applied or rejected.
- example: rejected
+ customerProfileId:
+ description: Integration ID of the customer profile linked to the support
+ request.
+ example: URNGV8294NV
type: string
- couponCode:
- description: Coupon code passed for evaluation.
- example: ABC123
+ requestType:
+ description: Type of reward requested, including gift cards, personal coupons,
+ and loyalty point additions or deductions.
+ enum:
+ - gift_card
+ - personal_coupon
+ - loyalty_points_added
+ - loyalty_points_deducted
+ example: personal_coupon
type: string
- language:
- description: Language of the summary.
- example: en
+ requestValue:
+ description: Requested monetary balance of the gift card or the number of
+ loyalty points to be added or deducted.
+ example: 20.5
+ exclusiveMinimum: false
+ format: float
+ type: number
+ requestNote:
+ description: Notes attached to the support request.
+ example: Support request for coupon failure.
type: string
- summary:
- description: A summary of the reasons for coupon redemption failure.
- example: Session total was less than the required total.
+ requestStatus:
+ description: Current status of the support request.
+ enum:
+ - pending_approval
+ - approved
+ - rejected
+ - expired
+ example: approved
type: string
- createdAt:
- description: Timestamp when the request was made.
- example: 2021-07-20T21:59:00Z
+ processedAt:
+ description: Timestamp when the request was approved or rejected.
+ example: 2025-07-20T22:10:00Z
format: date-time
type: string
- updatedAt:
- description: Timestamp when the request was last updated.
- example: 2021-07-20T21:59:00Z
- format: date-time
+ processingNote:
+ description: Notes attached by the admin when rejecting or approving a request.
+ example: Rejected as the customer was awarded points already.
+ type: string
+ processedByUser:
+ description: Email address of the admin who approved or rejected the support
+ request.
+ example: admin.name@company.com
+ type: string
+ couponCode:
+ description: Coupon code associated with the approved support request.
+ example: SUMMER-2025-XYZ
type: string
required:
- - couponCode
+ - applicationId
- createdAt
- - eventID
+ - createdByUser
+ - customerProfileId
- id
- - language
- - status
- - summary
- - updatedAt
+ - requestNote
+ - requestStatus
+ - requestType
type: object
- GenerateCouponFailureDetailedSummary:
+ UpdateSupportRequest:
properties:
- applicationID:
- description: The ID of the Application. It is displayed in your Talon.One
- deployment URL.
- type: number
- sessionID:
- description: ID of the customer session where the coupon redemption failed.
- example: 05c2da0d-48fa-4aa1-b629-898f58f1584d
- maxLength: 255
- type: string
- eventID:
- description: The ID of the event for which the coupon redemption failed.
- format: int64
- type: integer
- coupon:
- description: The coupon code that could not be redeemed.
- example: BKDB946
+ requestStatus:
+ description: Current status of the support request.
+ enum:
+ - approved
+ - rejected
+ - expired
+ example: approved
type: string
- language:
- description: The language of the summary.
- example: en
+ processingNote:
+ description: Notes attached by the admin when rejecting or approving a request.
+ example: Rejected as the customer was awarded points already.
type: string
required:
- - applicationID
- - coupon
- - eventID
- - sessionID
+ - requestStatus
type: object
- CampaignLogSummary:
- description: Campaign Log Summary
+ AddLoyaltyPointsSupport:
+ description: Points to add via the support portal.
properties:
+ points:
+ description: Amount of loyalty points.
+ example: 300.0
+ exclusiveMinimum: false
+ maximum: 999999999999.99
+ type: number
name:
- description: Name of the user that performed the change.
- example: Admin
+ description: Name / reason for the point addition.
+ example: Compensation
type: string
- email:
- description: E-mail of the user that performed the change.
- example: admin@talon.one
+ validityDuration:
+ description: |
+ The time format is either:
+ - `unlimited` or,
+ - an **integer** followed by one letter indicating the time unit.
+
+ Examples: `unlimited`, `30s`, `40m`, `1h`, `5D`, `7W`, `10M`, `15Y`.
+
+ Available units:
+
+ - `s`: seconds
+ - `m`: minutes
+ - `h`: hours
+ - `D`: days
+ - `W`: weeks
+ - `M`: months
+ - `Y`: years
+
+ You can round certain units up or down:
+ - `_D` for rounding down days only. Signifies the start of the day.
+ - `_U` for rounding up days, weeks, months and years. Signifies the end of the day, week, month or year.
+
+ If passed, `validUntil` should be omitted.
+ example: 5D
type: string
- created:
- description: Date and time the change was performed.
+ validUntil:
+ description: |
+ Date and time when points should expire. The value should be provided in RFC 3339 format.
+ If passed, `validityDuration` should be omitted.
+ example: 2021-07-20T22:00:00Z
format: date-time
type: string
- action:
- description: Action performed by the user.
- enum:
- - create
- - delete
- - update
- example: create
+ pendingDuration:
+ description: |
+ The amount of time before the points are considered valid.
+
+ The time format is either:
+ - `immediate` or,
+ - `on_action` or,
+ - an **integer** followed by one letter indicating the time unit.
+
+ Examples: `immediate`, `30s`, `40m`, `1h`, `5D`, `7W`, `10M`, `15Y`, `on_action`.
+
+ Available units:
+
+ - `s`: seconds
+ - `m`: minutes
+ - `h`: hours
+ - `D`: days
+ - `W`: weeks
+ - `M`: months
+ - `Y`: years
+
+ You can round certain units up or down:
+ - `_D` for rounding down days only. Signifies the start of the day.
+ - `_U` for rounding up days, weeks, months and years. Signifies the end of the day, week, month or year.
+ example: 12h
type: string
- summary:
- description: AI-generated summary of the action performed.
+ pendingUntil:
+ description: |
+ Date and time after the points are considered valid. The value should be provided in RFC 3339 format.
+ If passed, `pendingDuration` should be omitted.
+ example: 2021-07-20T22:00:00Z
+ format: date-time
type: string
- required:
- - action
- - created
- - email
- - name
- - summary
- type: object
- IntegrationHubFlowConfigResponse:
- properties:
- WorkerCount:
- description: Number of IntegrationHub workers to run in parallel for this
- flow (maximum 500).
- format: int64
- maximum: 5E+2
- minimum: 1
- type: integer
- MaxEventsPerMessage:
- description: Maximum number of events to send in a single message to IntegrationHub.
+ subledgerId:
+ description: ID of the subledger the points are added to. If there is no
+ existing subledger with this ID, the subledger is created automatically.
+ example: sub-123
+ type: string
+ applicationId:
+ description: ID of the Application that is connected to the loyalty program.
+ It is displayed in your Talon.One deployment URL.
+ example: 322
format: int64
- minimum: 1
type: integer
- MaxRetries:
- description: Maximum number of retries for a IntegrationHub event before
- it is ignored.
+ supportRequestId:
+ description: ID of the support request to approve. When provided by an admin,
+ the points are added on behalf of the support user who created the request.
+ example: 42
format: int64
- minimum: 0
type: integer
+ processingNote:
+ description: Note from the admin approving the support request. Stored as
+ the processing note on the support request record. This is only used when
+ a supportRequestId is passed.
+ example: Approved after manual review.
+ type: string
+ required:
+ - points
type: object
- IntegrationHubFlowResponse:
+ ApplicationMembership:
properties:
- Id:
- description: ID of the integration hub flow.
+ applicationId:
+ description: The ID of the Application the customer belongs to.
+ example: 1
format: int64
type: integer
- ApplicationID:
- description: ID of application the flow is registered for.
- example: 54
+ applicationName:
+ description: The name of the Application the customer belongs to.
+ example: My Application
+ type: string
+ required:
+ - applicationId
+ - applicationName
+ type: object
+ SupportCustomerProfile:
+ properties:
+ id:
+ description: The internal ID of the customer profile.
+ example: 6
format: int64
type: integer
- EventType:
- description: The event type we want to register a flow for.
+ created:
+ description: The time the customer profile was created.
+ example: 2020-06-10T09:05:27.993483Z
+ format: date-time
type: string
- x-fieldType: IntegrationHubEventType
- IntegrationHubFlowUrl:
- description: The URL of the integration hub flow that we want to trigger
- for the event.
+ integrationId:
+ description: The integration ID set by your integration layer.
+ example: URNGV8294NV
type: string
- Config:
- $ref: '#/components/schemas/IntegrationHubFlowConfigResponse'
+ attributes:
+ description: Arbitrary properties associated with this item.
+ example:
+ Language: english
+ ShippingCountry: DE
+ properties: {}
+ type: object
+ applicationMemberships:
+ description: The applications the customer belongs to.
+ items:
+ $ref: '#/components/schemas/ApplicationMembership'
+ type: array
required:
- - Config
- - EventType
- - Id
- - IntegrationHubFlowUrl
+ - applicationMemberships
+ - attributes
+ - created
+ - id
+ - integrationId
type: object
- IntegrationHubFlowConfig:
+ RedeemableCoupon:
properties:
- ApiKey:
- type: string
- WorkerCount:
- default: 10
- description: Number of IntegrationHub workers to run in parallel for this
- flow (maximum 500).
+ couponId:
+ description: The internal ID of the coupon.
+ example: 34
format: int64
- maximum: 5E+2
- minimum: 1
type: integer
- MaxEventsPerMessage:
- default: 1000
- description: Maximum number of events to send in a single message to IntegrationHub.
+ couponCode:
+ description: The coupon code.
+ example: SUMMER10
+ type: string
+ usageCounter:
+ description: The number of times the coupon has been successfully redeemed.
+ example: 3
format: int64
- minimum: 1
type: integer
- MaxRetries:
- default: 10
- description: Maximum number of retries for a IntegrationHub event before
- it is ignored.
+ usageLimit:
+ description: The number of times the coupon code can be redeemed. `0` means
+ unlimited redemptions but any campaign usage limits still apply.
+ example: 10
format: int64
- minimum: 0
type: integer
+ campaignName:
+ description: The name of the campaign that owns the coupon.
+ example: Summer Sale 2026
+ type: string
required:
- - ApiKey
+ - campaignName
+ - couponCode
+ - couponId
+ - usageCounter
+ - usageLimit
type: object
- IntegrationHubFlowWithConfig:
+ CouponEligibilityInfo:
properties:
- ApplicationID:
- description: ID of application the flow is registered for.
- example: 54
+ campaignId:
+ description: The ID of the campaign that owns the coupon.
+ example: 42
format: int64
type: integer
- EventType:
- description: The event type we want to register a flow for.
+ campaignName:
+ description: The name of the campaign that owns the coupon.
+ example: Summer Sale 2026
type: string
- x-fieldType: IntegrationHubEventType
- IntegrationHubFlowUrl:
- description: The URL of the integration hub flow that we want to trigger
- for the event.
+ failureReason:
+ description: The reason the coupon is not eligible, if applicable.
+ example: Coupon has expired
type: string
- Config:
- $ref: '#/components/schemas/IntegrationHubFlowConfig'
required:
- - Config
- - EventType
- - IntegrationHubFlowUrl
+ - campaignId
+ - campaignName
type: object
- IntegrationHubFlow:
+ RewardPointsRequired:
+ description: The loyalty points required to activate a reward.
+ example:
+ amount: 500.0
+ subledgerId: mysubledger
+ loyaltyProgramId: 10
+ id: 1
properties:
- ApplicationID:
- description: ID of application the flow is registered for.
- example: 54
+ id:
+ description: |
+ The ID of the `pointsRequired` entry. When updating a reward,
+ include this property to update an existing entry. Omit it to create a new one.
+ example: 1
format: int64
type: integer
- EventType:
- description: The event type we want to register a flow for.
- type: string
- x-fieldType: IntegrationHubEventType
- IntegrationHubFlowUrl:
- description: The URL of the integration hub flow that we want to trigger
- for the event.
- type: string
- required:
- - EventType
- - IntegrationHubFlowUrl
- type: object
- IntegrationHubEventPayloadLoyaltyProfileBasedPointsChangedNotificationAction:
- properties:
- Amount:
- format: float
+ amount:
+ description: The number of loyalty points required to activate the reward.
+ example: 500.0
+ minimum: 0
type: number
- Reason:
- type: string
- Operation:
- enum:
- - addition
- - subtraction
- type: string
- StartDate:
- format: date-time
- type: string
- ExpiryDate:
- format: date-time
- type: string
- TransactionUUID:
- description: The identifier of the transaction in the loyalty ledger.
- format: uuid
+ loyaltyProgramId:
+ description: The ID of the associated loyalty program.
+ example: 10
+ format: int64
+ type: integer
+ subledgerId:
+ description: |
+ The ID of the subledger within the loyalty program from which points are deducted when activating the reward.
+
+ To specify the main ledger, provide an empty string ("").
+ example: mysubledger
type: string
required:
- - Amount
- - Operation
- - TransactionUUID
+ - amount
+ - loyaltyProgramId
+ - subledgerId
type: object
- IntegrationHubEventPayloadLoyaltyProfileBasedPointsChangedNotification:
+ NewReward:
properties:
- ProfileIntegrationID:
- type: string
- LoyaltyProgramID:
- format: int64
- type: integer
- SubledgerID:
+ name:
+ description: The name of the reward.
+ example: Free Coffee
+ minLength: 1
type: string
- SourceOfEvent:
+ apiName:
+ description: A unique identifier used to reference the reward in API integrations.
+ example: free-coffee
+ minLength: 1
type: string
- EmployeeName:
+ description:
+ description: A description of the reward.
+ example: This reward gets you one free coffee.
type: string
- UserID:
- format: int64
- type: integer
- CurrentPoints:
- format: float
- type: number
- Actions:
+ applicationIds:
+ description: "The IDs of the Applications this reward is connected to. \n\
+ \n**Note**: Currently, a reward can only be connected to one Application.\n"
+ example:
+ - 1
+ - 2
+ - 3
items:
- $ref: '#/components/schemas/IntegrationHubEventPayloadLoyaltyProfileBasedPointsChangedNotificationAction'
+ format: int64
+ type: integer
+ type: array
+ sandbox:
+ description: Indicates if this is a live or sandbox reward. Rewards of a
+ given type can only be connected to Applications of the same type.
+ example: true
+ title: Sandbox
+ type: boolean
+ eligibilityConditions:
+ $ref: '#/components/schemas/Rule'
+ rule:
+ $ref: '#/components/schemas/Rule'
+ bindings:
+ description: A list of named variables created before the reward's rules
+ are evaluated. Each binding pairs a name with a talang expression. The
+ expression is evaluated once and its result is available by name in any
+ rule condition or effect. Bindings must be defined outside of individual
+ rules.
+ example: []
+ items:
+ $ref: '#/components/schemas/Binding'
+ type: array
+ pointsRequired:
+ description: |
+ The loyalty points required to activate the reward. Each object defines the specific
+ loyalty program and subledger from which points are deducted when activating the reward.
+
+ **Note:** When creating a reward, the `id` of each entry is ignored and a new entry is
+ always created.
+ items:
+ $ref: '#/components/schemas/RewardPointsRequired'
type: array
- PublishedAt:
- description: Timestamp when the event was published.
- format: date-time
- type: string
required:
- - CurrentPoints
- - LoyaltyProgramID
- - ProfileIntegrationID
- - PublishedAt
- - SourceOfEvent
- - SubledgerID
+ - apiName
+ - applicationIds
+ - name
+ - sandbox
type: object
- x-discriminator-value: LoyaltyPointsChanged
- x-ms-discriminator-value: LoyaltyPointsChanged
- IntegrationHubEventPayloadLoyaltyProfileBasedTierDowngradeNotification:
+ Reward:
properties:
- ProfileIntegrationID:
- type: string
- LoyaltyProgramID:
+ id:
+ description: The internal ID of this entity.
+ example: 6
format: int64
type: integer
- SubledgerID:
- type: string
- SourceOfEvent:
- type: string
- CurrentTier:
+ created:
+ description: The time this entity was created.
+ example: 2020-06-10T09:05:27.993483Z
+ format: date-time
type: string
- CurrentPoints:
- format: float
- type: number
- OldTier:
+ accountId:
+ description: The ID of the account that owns this entity.
+ example: 3886
+ format: int64
+ type: integer
+ name:
+ description: The name of the reward.
+ example: Free Coffee
+ minLength: 1
type: string
- TierExpirationDate:
- format: date-time
+ apiName:
+ description: A unique identifier used to reference the reward in API integrations.
+ example: free-coffee
+ minLength: 1
type: string
- TimestampOfTierChange:
- format: date-time
+ description:
+ description: A description of the reward.
+ example: This reward gets you one free coffee.
type: string
- PublishedAt:
- description: Timestamp when the event was published.
+ applicationIds:
+ description: "The IDs of the Applications this reward is connected to. \n\
+ \n**Note**: Currently, a reward can only be connected to one Application.\n"
+ example:
+ - 1
+ - 2
+ - 3
+ items:
+ format: int64
+ type: integer
+ type: array
+ sandbox:
+ description: Indicates if this is a live or sandbox reward. Rewards of a
+ given type can only be connected to Applications of the same type.
+ example: true
+ title: Sandbox
+ type: boolean
+ eligibilityConditions:
+ $ref: '#/components/schemas/Rule'
+ rule:
+ $ref: '#/components/schemas/Rule'
+ bindings:
+ description: A list of named variables created before the reward's rules
+ are evaluated. Each binding pairs a name with a talang expression. The
+ expression is evaluated once and its result is available by name in any
+ rule condition or effect. Bindings must be defined outside of individual
+ rules.
+ example: []
+ items:
+ $ref: '#/components/schemas/Binding'
+ type: array
+ pointsRequired:
+ description: |
+ The loyalty points required to activate the reward. Each object defines the specific
+ loyalty program and subledger from which points are deducted when activating the reward.
+
+ **Note:** When creating a reward, the `id` of each entry is ignored and a new entry is
+ always created.
+ items:
+ $ref: '#/components/schemas/RewardPointsRequired'
+ type: array
+ modified:
+ description: The timestamp when the reward was last updated in RFC3339 format.
format: date-time
type: string
+ status:
+ description: The status of the reward.
+ enum:
+ - active
+ - inactive
+ example: active
+ type: string
required:
- - CurrentPoints
- - LoyaltyProgramID
- - ProfileIntegrationID
- - PublishedAt
- - SourceOfEvent
- - SubledgerID
+ - accountId
+ - apiName
+ - applicationIds
+ - created
+ - id
+ - name
+ - sandbox
+ - status
type: object
- x-discriminator-value: LoyaltyTierDowngrade
- x-ms-discriminator-value: LoyaltyTierDowngrade
- IntegrationHubEventPayloadLoyaltyProfileBasedTierUpgradeNotification:
+ RewardEligibilityFailureDetails:
+ description: The details about why the customer is not eligible for the reward.
+ example:
+ failureCode: CONDITION_NOT_MET
+ conditionIndex: 0
properties:
- ProfileIntegrationID:
+ failureCode:
+ description: A code identifying why the customer is not eligible for the
+ reward.
+ enum:
+ - CONDITION_NOT_MET
+ - INSUFFICIENT_BALANCE
+ - CARD_REQUIRED
+ - PROFILE_REQUIRED
+ example: CONDITION_NOT_MET
type: string
- LoyaltyProgramID:
+ conditionIndex:
+ description: The index of the eligibility condition that the customer did
+ not meet. Only applicable when `failureCode` is `CONDITION_NOT_MET`.
+ example: 0
format: int64
type: integer
- SubledgerID:
- type: string
- SourceOfEvent:
- type: string
- CurrentTier:
- type: string
- CurrentPoints:
- format: float
- type: number
- OldTier:
- type: string
- PointsRequiredToTheNextTier:
- format: float
- type: number
- NextTier:
- type: string
- TierExpirationDate:
- format: date-time
- type: string
- TimestampOfTierChange:
- format: date-time
- type: string
- PublishedAt:
- description: Timestamp when the event was published.
- format: date-time
- type: string
required:
- - CurrentPoints
- - LoyaltyProgramID
- - ProfileIntegrationID
- - PublishedAt
- - SourceOfEvent
- - SubledgerID
+ - failureCode
type: object
- x-discriminator-value: LoyaltyTierUpgrade
- x-ms-discriminator-value: LoyaltyTierUpgrade
- IntegrationHubEventPayloadLoyaltyProfileBasedNotification:
+ RewardEligibility:
+ description: The customer's eligibility for the reward based on the specified
+ customer profile or loyalty card.
+ example:
+ details:
+ - failureCode: CONDITION_NOT_MET
+ conditionIndex: 0
+ - failureCode: CONDITION_NOT_MET
+ conditionIndex: 0
+ passed: true
+ properties:
+ passed:
+ description: Indicates whether the customer is eligible for the reward.
+ example: true
+ type: boolean
+ details:
+ description: The reasons the customer is not eligible for the reward. Empty
+ when `passed` is `true`.
+ items:
+ $ref: '#/components/schemas/RewardEligibilityFailureDetails'
+ type: array
+ required:
+ - passed
+ type: object
+ RewardCatalogItem:
+ description: A reward returned by the rewards catalog Integration API endpoint.
+ example:
+ name: 10% Off Coupon
+ pointsRequired:
+ - amount: 500.0
+ subledgerId: mysubledger
+ loyaltyProgramId: 10
+ id: 1
+ - amount: 500.0
+ subledgerId: mysubledger
+ loyaltyProgramId: 10
+ id: 1
+ description: Applies to next order
+ rule:
+ displayDescription: Get a 20% discount on all shoes during Thanksgiving!
+ Offer valid till Dec 5 only.
+ displayName: 20% off all shoes!
+ relatedData: https://example.com/discounts/20-off-shoes.png
+ title: Give discount via coupon
+ eligibility:
+ details:
+ - failureCode: CONDITION_NOT_MET
+ conditionIndex: 0
+ - failureCode: CONDITION_NOT_MET
+ conditionIndex: 0
+ passed: true
+ id: 42
properties:
- ProfileIntegrationID:
- type: string
- LoyaltyProgramID:
+ id:
+ description: The unique ID of the reward.
+ example: 42
format: int64
type: integer
- SubledgerID:
- type: string
- SourceOfEvent:
+ name:
+ description: The customer-facing name of the reward.
+ example: 10% Off Coupon
type: string
- EmployeeName:
+ description:
+ description: The customer-facing description of the reward.
+ example: Applies to next order
type: string
- UserID:
- format: int64
- type: integer
- CurrentPoints:
- format: float
- type: number
- Actions:
+ pointsRequired:
+ description: The loyalty points required to activate the reward.
items:
- $ref: '#/components/schemas/IntegrationHubEventPayloadLoyaltyProfileBasedPointsChangedNotificationAction'
+ $ref: '#/components/schemas/RewardPointsRequired'
type: array
- PublishedAt:
- description: Timestamp when the event was published.
- format: date-time
- type: string
- CurrentTier:
- type: string
- OldTier:
- type: string
- TierExpirationDate:
- format: date-time
- type: string
- TimestampOfTierChange:
- format: date-time
- type: string
- PointsRequiredToTheNextTier:
- format: float
- type: number
- NextTier:
- type: string
+ rule:
+ $ref: '#/components/schemas/RuleMetadata'
+ eligibility:
+ $ref: '#/components/schemas/RewardEligibility'
required:
- - CurrentPoints
- - LoyaltyProgramID
- - ProfileIntegrationID
- - PublishedAt
- - SourceOfEvent
- - SubledgerID
+ - id
+ - name
+ - rule
type: object
- IntegrationHubEventPayloadCouponBasedNotificationsLimits:
+ UpdateReward:
properties:
- Action:
+ name:
+ description: The name of the reward.
+ example: Free Coffee
+ minLength: 1
type: string
- Limit:
- format: float
- type: number
- Period:
+ description:
+ description: A description of the reward.
+ example: This reward gets you one free coffee.
type: string
- Entities:
+ status:
+ description: The status of the reward.
+ enum:
+ - active
+ - inactive
+ example: active
+ type: string
+ eligibilityConditions:
+ $ref: '#/components/schemas/Rule'
+ rule:
+ $ref: '#/components/schemas/Rule'
+ bindings:
+ description: A list of named variables created before the reward's rules
+ are evaluated. Each binding pairs a name with a talang expression. The
+ expression is evaluated once and its result is available by name in any
+ rule condition or effect. Bindings must be defined outside of individual
+ rules.
+ example: []
items:
- type: string
+ $ref: '#/components/schemas/Binding'
+ type: array
+ pointsRequired:
+ description: |
+ The loyalty points required to activate the reward. Each object defines the specific
+ loyalty program and subledger from which points are deducted when activating the reward.
+
+ **Note:**
+ - Objects with an `id` are updated.
+ - Objects without an `id` are created.
+ - Existing objects omitted from the payload are deleted.
+ items:
+ $ref: '#/components/schemas/RewardPointsRequired'
type: array
required:
- - Action
- - Entities
- - Limit
+ - name
+ - status
type: object
- IntegrationHubEventPayloadCouponBasedNotifications:
+ IntegrationUnlockRewardRequest:
+ description: |
+ The request body for unlocking a reward for a customer profile, optionally
+ using the balance of one of the customer's loyalty cards.
+ example:
+ profileIntegrationId: customer1
+ subledgerId: sub1
+ integrationId: reward-unlock-123
+ loyaltyProgramId: 2
+ responseContent:
+ - customerProfile
+ - loyalty
+ cardIdentifier: summer-loyalty-card-0543
properties:
- Id:
- format: int64
- type: integer
- Created:
- format: date-time
- type: string
- CampaignId:
- format: int64
- type: integer
- Value:
- type: string
- UsageLimit:
- format: int64
- type: integer
- DiscountLimit:
- format: float
- type: number
- ReservationLimit:
- format: int64
- type: integer
- StartDate:
- format: date-time
+ integrationId:
+ description: The integration ID to assign to the created customer reward
+ unlock.
+ example: reward-unlock-123
type: string
- ExpiryDate:
- format: date-time
+ profileIntegrationId:
+ description: The integration ID of the customer profile unlocking the reward.
+ example: customer1
type: string
- UsageCounter:
- format: int64
- type: integer
- DiscountCounter:
- format: float
- type: number
- DiscountRemainder:
- format: float
- type: number
- ReferralId:
- format: int64
- type: integer
- RecipientIntegrationId:
+ cardIdentifier:
+ description: |
+ The identifier of the loyalty card, which must match the regular expression `^[A-Za-z0-9._%+@-]+$`.
+ example: summer-loyalty-card-0543
+ maxLength: 108
+ minLength: 4
+ pattern: ^[A-Za-z0-9._%+@-]+$
type: string
- ImportId:
+ loyaltyProgramId:
+ description: The ID of the loyalty program from which points will be deducted.
+ Required when the reward has `pointsRequired` configured.
+ example: 2
format: int64
type: integer
- BatchId:
+ subledgerId:
+ description: |
+ The ID of the subledger from which points will be deducted.
+ Required when the reward has `pointsRequired` configured.
+
+ To specify the main ledger, provide an empty string ("").
+ example: sub1
type: string
- Attributes:
- properties: {}
- type: object
- Limits:
+ responseContent:
+ description: 'Determines which data is included in the response. Add any
+ of the following optional values to the array to get that data in the
+ response: `customerProfile`, `ruleFailureReasons`, `loyalty`. `effects`
+ is always returned regardless of whether it is included here.'
+ example:
+ - customerProfile
+ - loyalty
items:
- $ref: '#/components/schemas/IntegrationHubEventPayloadCouponBasedNotificationsLimits'
+ enum:
+ - customerProfile
+ - effects
+ - ruleFailureReasons
+ - loyalty
+ type: string
type: array
- PublishedAt:
- description: Timestamp when the event was published.
- format: date-time
- type: string
- SourceOfEvent:
- type: string
- EmployeeName:
- type: string
required:
- - CampaignId
- - Created
- - EmployeeName
- - Id
- - PublishedAt
- - SourceOfEvent
- - UsageCounter
- - UsageLimit
- - Value
+ - integrationId
+ - profileIntegrationId
type: object
- x-discriminator-value: CouponDeleted
- x-ms-discriminator-value: CouponDeleted
- IntegrationHubEventRecord:
+ RewardUnlockRejection:
+ description: |
+ Returned when a reward unlock is rejected by the Rule Engine, for example because the customer already unlocked this reward, the customer has insufficient points, or the reward's eligibility conditions are not met.
properties:
- Id:
- format: int64
- type: integer
- FlowId:
- format: int64
- type: integer
- EventType:
- type: string
- x-fieldType: IntegrationHubEventType
- EventData:
- type: object
- PublishedAt:
- format: date-time
- type: string
- ProcessedAt:
- format: date-time
- type: string
- ProcessAfter:
- format: date-time
+ message:
+ description: A human-readable summary of why the reward unlock was rejected.
+ example: reward unlock rejected
type: string
- Retry:
- format: int64
- type: integer
+ ruleFailureReasons:
+ description: The reasons why the reward could not be unlocked.
+ items:
+ $ref: '#/components/schemas/RuleFailureReason'
+ type: array
required:
- - EventData
- - EventType
- - FlowId
- - Id
- - ProcessAfter
- - PublishedAt
- - Retry
+ - message
+ - ruleFailureReasons
type: object
- IntegrationHubConfig:
- description: Config used for accessing integrations in IntegrationHub
+ IntegrationProfileEntityV3:
properties:
- integrationHubUrl:
- description: The url used to integrate the IntegrationHub Marketplace.
- example: https://hub.talon.farm/
- type: string
- accessToken:
- description: Access token used to authenticate a user in Talon.One.
- example: eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9
+ profileId:
+ description: |
+ ID of the customer profile set by your integration layer.
+
+ **Note:** If the customer does not yet have a known `profileId`, we recommend you use a guest `profileId`.
+ example: URNGV8294NV
type: string
required:
- - accessToken
- - integrationHubUrl
+ - profileId
type: object
- CouponWithApplication:
+ NewEventV3Entity:
properties:
- id:
- description: The internal ID of the coupon.
- example: 6
- format: int64
- type: integer
- created:
- description: The time the coupon was created.
- example: 2020-06-10T09:05:27.993483Z
- format: date-time
- type: string
- campaignId:
- description: The ID of the campaign that owns this entity.
- example: 211
- format: int64
- title: Campaign ID
- type: integer
- value:
- description: The coupon code.
- example: XMAS-20-2021
- minLength: 4
- title: Coupon Code
- type: string
- usageLimit:
- description: |
- The number of times the coupon code can be redeemed. `0` means unlimited redemptions but any campaign usage limits will still apply.
- example: 100
- format: int64
- maximum: 999999
- minimum: 0
- type: integer
- discountLimit:
+ integrationId:
description: |
- The total discount value that the code can give. Typically used to represent a gift card value.
- example: 30.0
- maximum: 1E+15
- minimum: 0
- type: number
- reservationLimit:
+ The unique ID of the event. Only one event with this ID can be registered.
+ example: 175KJPS947296
+ minLength: 1
+ type: string
+ required:
+ - integrationId
+ type: object
+ EventV3RequestEntity:
+ properties:
+ profileId:
description: |
- The number of reservations that can be made with this coupon code.
- example: 45
- format: int64
- maximum: 999999
- minimum: 0
- type: integer
- startDate:
- description: Timestamp at which point the coupon becomes valid.
- example: 2020-01-24T14:15:22Z
- format: date-time
+ ID of the customer profile set by your integration layer.
+
+ **Note:** If the customer does not yet have a known `profileId`, we recommend you use a guest `profileId`.
+ example: URNGV8294NV
type: string
- expiryDate:
- description: Expiration date of the coupon. Coupon never expires if this
- is omitted.
- example: 2023-08-24T14:15:22Z
- format: date-time
+ storeIntegrationId:
+ description: The integration ID of the store. You choose this ID when you
+ create a store.
+ example: STORE-001
+ maxLength: 1000
+ minLength: 1
type: string
- limits:
+ evaluableCampaignIds:
description: |
- Limits configuration for a coupon. These limits will override the limits
- set from the campaign.
+ When using the `dry` query parameter, use this property to list the campaign to be evaluated by the Rule Engine.
- **Note:** Only usable when creating a single coupon which is not tied to a specific recipient.
- Only per-profile limits are allowed to be configured.
+ These campaigns will be evaluated, even if they are disabled, allowing you to test specific campaigns before activating them.
+ example:
+ - 10
+ - 12
items:
- $ref: '#/components/schemas/LimitConfig'
+ format: int64
+ type: integer
+ title: Campaigns to evaluate
type: array
- usageCounter:
- description: The number of times the coupon has been successfully redeemed.
- example: 10
- format: int64
- title: Total coupon redemptions
- type: integer
- discountCounter:
- description: The amount of discounts given on rules redeeming this coupon.
- Only usable if a coupon discount budget was set for this coupon.
- example: 10.0
- title: Discounts Given
- type: number
- discountRemainder:
- description: The remaining discount this coupon can give.
- example: 5.0
- title: Coupon Discount Remainder
- type: number
- reservationCounter:
- description: The number of times this coupon has been reserved.
- example: 1.0
- title: Number of reservations
- type: number
+ type:
+ description: The name of the event. Must be a [custom event](https://docs.talon.one/docs/dev/concepts/entities/events#custom-events),
+ not a built-in event.
+ example: pageViewed
+ minLength: 1
+ title: Event Type
+ type: string
attributes:
- description: Custom attributes associated with this coupon.
+ description: Arbitrary additional JSON properties associated with the event.
+ They must be created in the Campaign Manager before setting them with
+ this property. See [creating custom attributes](https://docs.talon.one/docs/product/account/dev-tools/managing-attributes#creating-a-custom-attribute).
+ example:
+ myAttribute: myValue
properties: {}
- title: Attributes of coupon
type: object
- referralId:
- description: The integration ID of the referring customer (if any) for whom
- this coupon was created as an effect.
- example: 326632952
- format: int64
- title: Advocate ID
- type: integer
- recipientIntegrationId:
- description: The Integration ID of the customer that is allowed to redeem
- this coupon.
- example: URNGV8294NV
- maxLength: 1000
- title: Recipient ID
- type: string
- importId:
- description: The ID of the Import which created this coupon.
- example: 4
- format: int64
- title: Import ID
- type: integer
- reservation:
- default: true
+ integrationId:
description: |
- Defines the reservation type:
- - `true`: The coupon can be reserved for multiple customers.
- - `false`: The coupon can be reserved only for one customer. It is a personal code.
- example: false
- title: Reservation Type
- type: boolean
- batchId:
- description: The id of the batch the coupon belongs to.
- example: 32535-43255
- title: Batch ID
+ The unique ID of the event. Only one event with this ID can be registered.
+ example: 175KJPS947296
+ minLength: 1
type: string
- isReservationMandatory:
- default: false
- description: An indication of whether the code can be redeemed only if it
- has been reserved first.
- example: false
- title: Is reservation mandatory
- type: boolean
- implicitlyReserved:
- description: An indication of whether the coupon is implicitly reserved
- for all customers.
- example: false
- title: Is coupon implicitly reserved for all customers
- type: boolean
- applicationId:
- description: The ID of the application.
- example: 123
- format: int64
- type: integer
- applicationName:
- description: Name of the Application that is connected to the coupon.
- example: Test Application
+ connectedSessionId:
+ description: The ID of the session to reference. The session must be in
+ `closed` state. Otherwise, the API call will fail.
+ example: 175KJPS947296
+ minLength: 1
+ type: string
+ referralCode:
+ description: |
+ The referral code submitted with the event. The endpoint does not validate the code, and submitting a code does not redeem it. Use the "Referral code is valid" condition in the Rule Builder to validate and redeem the code, or "Referral code is valid (without redemption)" to validate without redeeming.
+ example: NT2K54D9
+ maxLength: 100
type: string
required:
- - applicationId
- - applicationName
- - campaignId
- - created
- - id
- - usageCounter
- - usageLimit
- - value
+ - integrationId
+ - profileId
+ - type
type: object
- NewReward:
+ IntegrationEventV3Request:
+ example:
+ connectedSessionId: 175KJPS947296
+ loyaltyCards:
+ - loyalty-card-1
+ storeIntegrationId: STORE-001
+ profileId: URNGV8294NV
+ evaluableCampaignIds:
+ - 10
+ - 12
+ referralCode: NT2K54D9
+ integrationId: 175KJPS947296
+ attributes:
+ myAttribute: myValue
+ type: pageViewed
+ responseContent:
+ - triggeredCampaigns
+ - customerProfile
properties:
- name:
- description: The name of the reward.
- example: Free Coffee
+ profileId:
+ description: |
+ ID of the customer profile set by your integration layer.
+
+ **Note:** If the customer does not yet have a known `profileId`, we recommend you use a guest `profileId`.
+ example: URNGV8294NV
+ type: string
+ storeIntegrationId:
+ description: The integration ID of the store. You choose this ID when you
+ create a store.
+ example: STORE-001
+ maxLength: 1000
minLength: 1
type: string
- apiName:
- description: A unique identifier used to reference the reward in API integrations.
- example: free-coffee
+ evaluableCampaignIds:
+ description: |
+ When using the `dry` query parameter, use this property to list the campaign to be evaluated by the Rule Engine.
+
+ These campaigns will be evaluated, even if they are disabled, allowing you to test specific campaigns before activating them.
+ example:
+ - 10
+ - 12
+ items:
+ format: int64
+ type: integer
+ title: Campaigns to evaluate
+ type: array
+ type:
+ description: The name of the event. Must be a [custom event](https://docs.talon.one/docs/dev/concepts/entities/events#custom-events),
+ not a built-in event.
+ example: pageViewed
minLength: 1
+ title: Event Type
type: string
- description:
- description: A description of the reward.
- example: This reward gets you one free coffee.
+ attributes:
+ description: Arbitrary additional JSON properties associated with the event.
+ They must be created in the Campaign Manager before setting them with
+ this property. See [creating custom attributes](https://docs.talon.one/docs/product/account/dev-tools/managing-attributes#creating-a-custom-attribute).
+ example:
+ myAttribute: myValue
+ properties: {}
+ type: object
+ integrationId:
+ description: |
+ The unique ID of the event. Only one event with this ID can be registered.
+ example: 175KJPS947296
+ minLength: 1
type: string
- applicationIds:
- description: "The IDs of the Applications this reward is connected to. \n\
- \n**Note**: Currently, a reward can only be connected to one Application.\n"
+ connectedSessionId:
+ description: The ID of the session to reference. The session must be in
+ `closed` state. Otherwise, the API call will fail.
+ example: 175KJPS947296
+ minLength: 1
+ type: string
+ referralCode:
+ description: |
+ The referral code submitted with the event. The endpoint does not validate the code, and submitting a code does not redeem it. Use the "Referral code is valid" condition in the Rule Builder to validate and redeem the code, or "Referral code is valid (without redemption)" to validate without redeeming.
+ example: NT2K54D9
+ maxLength: 100
+ type: string
+ loyaltyCards:
+ description: Identifiers of the loyalty cards used during this event.
+ example:
+ - loyalty-card-1
+ items:
+ type: string
+ maxItems: 1
+ type: array
+ responseContent:
+ description: |
+ Optional list of requested information to be present on the response related to the tracking custom event.
example:
+ - triggeredCampaigns
+ - customerProfile
+ items:
+ enum:
+ - advancedEvent
+ - awardedGiveaways
+ - customerProfile
+ - loyalty
+ - referral
+ - ruleFailureReasons
+ - triggeredCampaigns
+ type: string
+ type: array
+ required:
+ - integrationId
+ - profileId
+ - type
+ type: object
+ IntegrationEventV3Response:
+ description: |
+ This is the response type returned by the trackEventV3 endpoint.
+ example:
+ achievements:
+ - currentProgress:
+ endDate: 2000-01-23T04:56:07.000+00:00
+ progress: 10.0
+ completionDate: 2000-01-23T04:56:07.000+00:00
+ startDate: 2000-01-23T04:56:07.000+00:00
+ status: completed
+ referencedByCampaigns:
+ - id: 1
+ applicationId: 2
+ - id: 1
+ applicationId: 2
+ endDate: 2000-01-23T04:56:07.000+00:00
+ campaignId: 3
+ description: 50% off for every 50th purchase in a year.
+ activationPolicy: fixed_schedule
+ title: 50% off on 50th purchase.
+ allowRollbackAfterCompletion: false
+ target: 10.0
+ fixedStartDate: 2000-01-23T04:56:07.000+00:00
+ name: FreeCoffee10Orders
+ id: 3
+ campaignIds:
+ - 1
+ - 14
+ - 27
+ recurrencePolicy: no_recurrence
+ - currentProgress:
+ endDate: 2000-01-23T04:56:07.000+00:00
+ progress: 10.0
+ completionDate: 2000-01-23T04:56:07.000+00:00
+ startDate: 2000-01-23T04:56:07.000+00:00
+ status: completed
+ referencedByCampaigns:
+ - id: 1
+ applicationId: 2
+ - id: 1
+ applicationId: 2
+ endDate: 2000-01-23T04:56:07.000+00:00
+ campaignId: 3
+ description: 50% off for every 50th purchase in a year.
+ activationPolicy: fixed_schedule
+ title: 50% off on 50th purchase.
+ allowRollbackAfterCompletion: false
+ target: 10.0
+ fixedStartDate: 2000-01-23T04:56:07.000+00:00
+ name: FreeCoffee10Orders
+ id: 3
+ campaignIds:
+ - 1
+ - 14
+ - 27
+ recurrencePolicy: no_recurrence
+ customerProfile:
+ accountId: 31
+ closedSessions: 3
+ created: 2020-02-07T08:15:22Z
+ sandbox: false
+ integrationId: URNGV8294NV
+ attributes:
+ Language: english
+ ShippingCountry: DE
+ totalSales: 299.99
+ lastActivity: 2020-02-08T14:15:20Z
+ id: 6
+ loyaltyMemberships:
+ - joined: 2012-03-20T14:15:22Z
+ loyaltyProgramId: 323414846
+ - joined: 2012-03-20T14:15:22Z
+ loyaltyProgramId: 323414846
+ audienceMemberships:
+ - name: Travel audience
+ id: 2
+ - name: Travel audience
+ id: 2
+ loyalty:
+ cards:
+ - ledger:
+ pendingBalance: 10.0
+ nextTierName: Silver
+ negativeBalance: 10.0
+ currentBalance: 100.0
+ spentBalance: 0.0
+ tentativeCurrentBalance: 100.0
+ tentativePendingBalance: 20.0
+ pointsToNextTier: 20.0
+ expiredBalance: 0.0
+ currentTier:
+ expiryDate: 2000-01-23T04:56:07.000+00:00
+ downgradePolicy: one_down
+ name: bronze
+ id: 11
+ startDate: 2000-01-23T04:56:07.000+00:00
+ tentativeNegativeBalance: 100.0
+ identifier: summer-loyalty-card-0543
+ oldCardIdentifier: summer-loyalty-card-0543
+ usersPerCardLimit: 111
+ created: 2020-06-10T09:05:27.993483Z
+ profiles:
+ - integrationId: R195412
+ timestamp: 2021-09-12T10:12:42Z
+ - integrationId: R195412
+ timestamp: 2021-09-12T10:12:42Z
+ subledgers:
+ key:
+ pendingBalance: 10.0
+ nextTierName: Silver
+ negativeBalance: 10.0
+ currentBalance: 100.0
+ spentBalance: 0.0
+ tentativeCurrentBalance: 100.0
+ tentativePendingBalance: 20.0
+ pointsToNextTier: 20.0
+ expiredBalance: 0.0
+ currentTier:
+ expiryDate: 2000-01-23T04:56:07.000+00:00
+ downgradePolicy: one_down
+ name: bronze
+ id: 11
+ startDate: 2000-01-23T04:56:07.000+00:00
+ tentativeNegativeBalance: 100.0
+ batchId: wdefpov
+ programTitle: Loyalty program
+ programName: Loyalty_program
+ modified: 2021-09-12T10:12:42Z
+ id: 6
+ blockReason: Current card lost. Customer needs a new card.
+ newCardIdentifier: summer-loyalty-card-0543
+ programID: 125
+ status: active
+ - ledger:
+ pendingBalance: 10.0
+ nextTierName: Silver
+ negativeBalance: 10.0
+ currentBalance: 100.0
+ spentBalance: 0.0
+ tentativeCurrentBalance: 100.0
+ tentativePendingBalance: 20.0
+ pointsToNextTier: 20.0
+ expiredBalance: 0.0
+ currentTier:
+ expiryDate: 2000-01-23T04:56:07.000+00:00
+ downgradePolicy: one_down
+ name: bronze
+ id: 11
+ startDate: 2000-01-23T04:56:07.000+00:00
+ tentativeNegativeBalance: 100.0
+ identifier: summer-loyalty-card-0543
+ oldCardIdentifier: summer-loyalty-card-0543
+ usersPerCardLimit: 111
+ created: 2020-06-10T09:05:27.993483Z
+ profiles:
+ - integrationId: R195412
+ timestamp: 2021-09-12T10:12:42Z
+ - integrationId: R195412
+ timestamp: 2021-09-12T10:12:42Z
+ subledgers:
+ key:
+ pendingBalance: 10.0
+ nextTierName: Silver
+ negativeBalance: 10.0
+ currentBalance: 100.0
+ spentBalance: 0.0
+ tentativeCurrentBalance: 100.0
+ tentativePendingBalance: 20.0
+ pointsToNextTier: 20.0
+ expiredBalance: 0.0
+ currentTier:
+ expiryDate: 2000-01-23T04:56:07.000+00:00
+ downgradePolicy: one_down
+ name: bronze
+ id: 11
+ startDate: 2000-01-23T04:56:07.000+00:00
+ tentativeNegativeBalance: 100.0
+ batchId: wdefpov
+ programTitle: Loyalty program
+ programName: Loyalty_program
+ modified: 2021-09-12T10:12:42Z
+ id: 6
+ blockReason: Current card lost. Customer needs a new card.
+ newCardIdentifier: summer-loyalty-card-0543
+ programID: 125
+ status: active
+ programs:
+ key:
+ ledger:
+ pendingBalance: 10.0
+ nextTierName: Silver
+ negativeBalance: 10.0
+ currentBalance: 100.0
+ spentBalance: 0.0
+ tentativeCurrentBalance: 100.0
+ tentativePendingBalance: 20.0
+ pointsToNextTier: 20.0
+ expiredBalance: 0.0
+ currentTier:
+ expiryDate: 2000-01-23T04:56:07.000+00:00
+ downgradePolicy: one_down
+ name: bronze
+ id: 11
+ startDate: 2000-01-23T04:56:07.000+00:00
+ tentativeNegativeBalance: 100.0
+ joinDate: 2000-01-23T04:56:07.000+00:00
+ subLedgers:
+ key:
+ pendingBalance: 10.0
+ nextTierName: Silver
+ negativeBalance: 10.0
+ currentBalance: 100.0
+ spentBalance: 0.0
+ tentativeCurrentBalance: 100.0
+ tentativePendingBalance: 20.0
+ pointsToNextTier: 20.0
+ expiredBalance: 0.0
+ currentTier:
+ expiryDate: 2000-01-23T04:56:07.000+00:00
+ downgradePolicy: one_down
+ name: bronze
+ id: 11
+ startDate: 2000-01-23T04:56:07.000+00:00
+ tentativeNegativeBalance: 100.0
+ name: program1
+ id: 5
+ title: My loyalty program
+ awardedGiveaways:
+ - profileIntegrationId: R195412
+ code: GIVEAWAY1
+ importId: 4
+ endDate: 2000-01-23T04:56:07.000+00:00
+ created: 2020-06-10T09:05:27.993483Z
+ profileId: 1
+ poolId: 1
+ attributes: '{}'
+ id: 6
+ used: true
+ startDate: 2000-01-23T04:56:07.000+00:00
+ - profileIntegrationId: R195412
+ code: GIVEAWAY1
+ importId: 4
+ endDate: 2000-01-23T04:56:07.000+00:00
+ created: 2020-06-10T09:05:27.993483Z
+ profileId: 1
+ poolId: 1
+ attributes: '{}'
+ id: 6
+ used: true
+ startDate: 2000-01-23T04:56:07.000+00:00
+ createdCoupons:
+ - recipientIntegrationId: URNGV8294NV
+ implicitlyReserved: false
+ created: 2020-06-10T09:05:27.993483Z
+ campaignId: 211
+ usageLimit: 100
+ referralId: 326632952
+ usageCounter: 10
+ batchId: 32535-43255
+ discountCounter: 10.0
+ expiryDate: 2023-08-24T14:15:22Z
+ importId: 4
+ reservationLimit: 45
+ reservationCounter: 1.0
+ reservation: false
+ attributes: '{}'
+ id: 6
+ value: XMAS-20-2021
+ discountLimit: 30.0
+ startDate: 2020-01-24T14:15:22Z
+ limits:
+ - period: yearly
+ entities:
+ - Coupon
+ limit: 1000.0
+ action: createCoupon
+ - period: yearly
+ entities:
+ - Coupon
+ limit: 1000.0
+ action: createCoupon
+ discountRemainder: 5.0
+ isReservationMandatory: false
+ - recipientIntegrationId: URNGV8294NV
+ implicitlyReserved: false
+ created: 2020-06-10T09:05:27.993483Z
+ campaignId: 211
+ usageLimit: 100
+ referralId: 326632952
+ usageCounter: 10
+ batchId: 32535-43255
+ discountCounter: 10.0
+ expiryDate: 2023-08-24T14:15:22Z
+ importId: 4
+ reservationLimit: 45
+ reservationCounter: 1.0
+ reservation: false
+ attributes: '{}'
+ id: 6
+ value: XMAS-20-2021
+ discountLimit: 30.0
+ startDate: 2020-01-24T14:15:22Z
+ limits:
+ - period: yearly
+ entities:
+ - Coupon
+ limit: 1000.0
+ action: createCoupon
+ - period: yearly
+ entities:
+ - Coupon
+ limit: 1000.0
+ action: createCoupon
+ discountRemainder: 5.0
+ isReservationMandatory: false
+ createdReferrals:
+ - code: 27G47Y54VH9L
+ created: 2020-06-10T09:05:27.993483Z
+ usageLimit: 1
+ campaignId: 78
+ usageCounter: 1
+ batchId: tqyrgahe
+ advocateProfileIntegrationId: URNGV8294NV
+ expiryDate: 2021-11-10T23:00:00Z
+ importId: 4
+ friendProfileIntegrationId: BZGGC2454PA
+ attributes:
+ channel: web
+ id: 6
+ startDate: 2020-11-10T23:00:00Z
+ - code: 27G47Y54VH9L
+ created: 2020-06-10T09:05:27.993483Z
+ usageLimit: 1
+ campaignId: 78
+ usageCounter: 1
+ batchId: tqyrgahe
+ advocateProfileIntegrationId: URNGV8294NV
+ expiryDate: 2021-11-10T23:00:00Z
+ importId: 4
+ friendProfileIntegrationId: BZGGC2454PA
+ attributes:
+ channel: web
+ id: 6
+ startDate: 2020-11-10T23:00:00Z
+ effects:
+ - rulesetId: 73
+ ruleIndex: 2
+ campaignRevisionVersionId: 5
+ campaignId: 244
+ conditionIndex: 786
+ evaluationGroupMode: stackable
+ effectType: rejectCoupon
+ adjustmentReferenceId: 68851723-e6fa-488f-ace9-112581e6c19b
+ props: '{}'
+ rewardId: 7
+ selectedPrice: 100.0
+ evaluationGroupID: 3
+ triggeredForCatalogItem: 786
+ selectedPriceType: member
+ campaignRevisionId: 1
+ ruleName: Give 20% discount
+ experimentId: 12
+ triggeredByCoupon: 4928
+ - rulesetId: 73
+ ruleIndex: 2
+ campaignRevisionVersionId: 5
+ campaignId: 244
+ conditionIndex: 786
+ evaluationGroupMode: stackable
+ effectType: rejectCoupon
+ adjustmentReferenceId: 68851723-e6fa-488f-ace9-112581e6c19b
+ props: '{}'
+ rewardId: 7
+ selectedPrice: 100.0
+ evaluationGroupID: 3
+ triggeredForCatalogItem: 786
+ selectedPriceType: member
+ campaignRevisionId: 1
+ ruleName: Give 20% discount
+ experimentId: 12
+ triggeredByCoupon: 4928
+ referral:
+ code: 27G47Y54VH9L
+ created: 2020-06-10T09:05:27.993483Z
+ usageLimit: 1
+ campaignId: 78
+ usageCounter: 1
+ batchId: tqyrgahe
+ advocateProfileIntegrationId: URNGV8294NV
+ expiryDate: 2021-11-10T23:00:00Z
+ importId: 4
+ friendProfileIntegrationId: BZGGC2454PA
+ attributes:
+ channel: web
+ referredCustomers:
+ - referredCustomers
+ - referredCustomers
+ id: 6
+ startDate: 2020-11-10T23:00:00Z
+ triggeredCampaigns:
+ - type: advanced
+ templateId: 3
+ customEffectCount: 0
+ activeRevisionId: 6
+ features:
+ - coupons
+ - referrals
+ createdLoyaltyPointsCount: 9.0
+ storesImported: true
+ couponSettings:
+ couponPattern: SUMMER-####-####
+ validCharacters:
+ - A
+ - B
+ - C
+ - D
+ - E
+ - F
+ - G
+ - H
+ - I
+ - J
+ - K
+ - L
+ - M
+ - "N"
+ - O
+ - P
+ - Q
+ - R
+ - S
+ - T
+ - U
+ - V
+ - W
+ - X
+ - "Y"
+ - Z
+ - "0"
+ - "1"
+ - "2"
+ - "3"
+ - "4"
+ - "5"
+ - "6"
+ - "7"
+ - "8"
+ - "9"
+ experimentId: 1
+ id: 4
+ state: enabled
+ couponAttributes: '{}'
+ reservecouponEffectCount: 9
+ updatedBy: Jane Doe
+ frontendState: running
+ created: 2020-06-10T09:05:27.993483Z
+ referralCreationCount: 8
+ stageRevision: false
+ couponRedemptionCount: 163
+ couponCreationCount: 16
+ version: 6
+ campaignGroups:
+ - 1
+ - 3
+ tags:
+ - summer
+ discountEffectCount: 343
+ budgets:
+ - limit: 1000.0
+ action: createCoupon
+ counter: 42.0
+ - limit: 1000.0
+ action: createCoupon
+ counter: 42.0
+ redeemedLoyaltyPointsCount: 8.0
+ name: Summer promotions
+ valueMapsIds:
+ - 100
+ - 215
+ applicationId: 322
+ updated: 2022-10-27T15:00:00Z
+ callApiEffectCount: 0
+ createdLoyaltyPointsEffectCount: 2
+ discountCount: 288.0
+ revisionFrontendState: revised
+ description: Campaign for all summer 2021 promotions
+ activeRevisionVersionId: 6
+ currentRevisionVersionId: 6
+ startTime: 2021-07-20T22:00:00Z
+ currentRevisionId: 6
+ limits:
+ - period: yearly
+ entities:
+ - Coupon
+ limit: 1000.0
+ action: createCoupon
+ - period: yearly
+ entities:
+ - Coupon
+ limit: 1000.0
+ action: createCoupon
+ activeRulesetId: 6
+ reevaluateOnReturn: true
+ userId: 388
+ awardedGiveawaysCount: 9
+ redeemedLoyaltyPointsEffectCount: 9
+ linkedStoreIds:
- 1
- 2
- 3
- items:
- format: int64
- type: integer
- type: array
- sandbox:
- description: Indicates if this is a live or sandbox reward. Rewards of a
- given type can only be connected to Applications of the same type.
- example: true
- title: Sandbox
- type: boolean
- required:
- - apiName
- - applicationIds
- - name
- - sandbox
- type: object
- Reward:
- properties:
- id:
- description: The internal ID of this entity.
- example: 6
- format: int64
- type: integer
- created:
- description: The time this entity was created.
- example: 2020-06-10T09:05:27.993483Z
- format: date-time
- type: string
- accountId:
- description: The ID of the account that owns this entity.
- example: 3886
- format: int64
- type: integer
- name:
- description: The name of the reward.
- example: Free Coffee
- minLength: 1
- type: string
- apiName:
- description: A unique identifier used to reference the reward in API integrations.
- example: free-coffee
- minLength: 1
- type: string
- description:
- description: A description of the reward.
- example: This reward gets you one free coffee.
- type: string
- applicationIds:
- description: "The IDs of the Applications this reward is connected to. \n\
- \n**Note**: Currently, a reward can only be connected to one Application.\n"
- example:
+ createdBy: John Doe
+ addFreeItemEffectCount: 0
+ referralSettings:
+ couponPattern: SUMMER-####-####
+ validCharacters:
+ - A
+ - B
+ - C
+ - D
+ - E
+ - F
+ - G
+ - H
+ - I
+ - J
+ - K
+ - L
+ - M
+ - "N"
+ - O
+ - P
+ - Q
+ - R
+ - S
+ - T
+ - U
+ - V
+ - W
+ - X
+ - "Y"
+ - Z
+ - "0"
+ - "1"
+ - "2"
+ - "3"
+ - "4"
+ - "5"
+ - "6"
+ - "7"
+ - "8"
+ - "9"
+ attributes: '{}'
+ lastActivity: 2022-11-10T23:00:00Z
+ endTime: 2021-09-22T22:00:00Z
+ referralRedemptionCount: 3
+ - type: advanced
+ templateId: 3
+ customEffectCount: 0
+ activeRevisionId: 6
+ features:
+ - coupons
+ - referrals
+ createdLoyaltyPointsCount: 9.0
+ storesImported: true
+ couponSettings:
+ couponPattern: SUMMER-####-####
+ validCharacters:
+ - A
+ - B
+ - C
+ - D
+ - E
+ - F
+ - G
+ - H
+ - I
+ - J
+ - K
+ - L
+ - M
+ - "N"
+ - O
+ - P
+ - Q
+ - R
+ - S
+ - T
+ - U
+ - V
+ - W
+ - X
+ - "Y"
+ - Z
+ - "0"
+ - "1"
+ - "2"
+ - "3"
+ - "4"
+ - "5"
+ - "6"
+ - "7"
+ - "8"
+ - "9"
+ experimentId: 1
+ id: 4
+ state: enabled
+ couponAttributes: '{}'
+ reservecouponEffectCount: 9
+ updatedBy: Jane Doe
+ frontendState: running
+ created: 2020-06-10T09:05:27.993483Z
+ referralCreationCount: 8
+ stageRevision: false
+ couponRedemptionCount: 163
+ couponCreationCount: 16
+ version: 6
+ campaignGroups:
+ - 1
+ - 3
+ tags:
+ - summer
+ discountEffectCount: 343
+ budgets:
+ - limit: 1000.0
+ action: createCoupon
+ counter: 42.0
+ - limit: 1000.0
+ action: createCoupon
+ counter: 42.0
+ redeemedLoyaltyPointsCount: 8.0
+ name: Summer promotions
+ valueMapsIds:
+ - 100
+ - 215
+ applicationId: 322
+ updated: 2022-10-27T15:00:00Z
+ callApiEffectCount: 0
+ createdLoyaltyPointsEffectCount: 2
+ discountCount: 288.0
+ revisionFrontendState: revised
+ description: Campaign for all summer 2021 promotions
+ activeRevisionVersionId: 6
+ currentRevisionVersionId: 6
+ startTime: 2021-07-20T22:00:00Z
+ currentRevisionId: 6
+ limits:
+ - period: yearly
+ entities:
+ - Coupon
+ limit: 1000.0
+ action: createCoupon
+ - period: yearly
+ entities:
+ - Coupon
+ limit: 1000.0
+ action: createCoupon
+ activeRulesetId: 6
+ reevaluateOnReturn: true
+ userId: 388
+ awardedGiveawaysCount: 9
+ redeemedLoyaltyPointsEffectCount: 9
+ linkedStoreIds:
- 1
- 2
- 3
- items:
- format: int64
- type: integer
- type: array
- sandbox:
- description: Indicates if this is a live or sandbox reward. Rewards of a
- given type can only be connected to Applications of the same type.
- example: true
- title: Sandbox
- type: boolean
- status:
- description: The status of the reward.
- enum:
- - active
- - inactive
- example: active
- type: string
- required:
- - accountId
- - apiName
- - applicationIds
- - created
- - id
- - name
- - sandbox
- - status
- type: object
- IntegrationEventV3Request:
- properties:
- profileId:
- description: |
- ID of the customer profile set by your integration layer.
-
- **Note:** If the customer does not yet have a known `profileId`, we recommend you use a guest `profileId`.
- example: URNGV8294NV
- type: string
- storeIntegrationId:
- description: The integration ID of the store. You choose this ID when you
- create a store.
- example: STORE-001
- maxLength: 1000
- minLength: 1
- type: string
- evaluableCampaignIds:
- description: |
- When using the `dry` query parameter, use this property to list the campaign to be evaluated by the Rule Engine.
-
- These campaigns will be evaluated, even if they are disabled, allowing you to test specific campaigns before activating them.
- example:
- - 10
- - 12
- items:
- format: int64
- type: integer
- title: Campaigns to evaluate
- type: array
- integrationId:
- description: |
- The unique ID of the current event. Only one event with this ID could be activated, duplicated events are forbidden.
- example: 175KJPS947296
- minLength: 1
- type: string
- type:
- description: |
- A string representing the event name. Must not be a reserved event name. You create this value when you [create an attribute](https://docs.talon.one/docs/dev/concepts/entities/events#creating-a-custom-event) of type `event` in the Campaign Manager.
- example: pageViewed
- minLength: 1
- title: Event Type
- type: string
- attributes:
- description: Arbitrary additional JSON properties associated with the event.
- They must be created in the Campaign Manager before setting them with
- this property. See [creating custom attributes](https://docs.talon.one/docs/product/account/dev-tools/managing-attributes#creating-a-custom-attribute).
- example:
+ createdBy: John Doe
+ addFreeItemEffectCount: 0
+ referralSettings:
+ couponPattern: SUMMER-####-####
+ validCharacters:
+ - A
+ - B
+ - C
+ - D
+ - E
+ - F
+ - G
+ - H
+ - I
+ - J
+ - K
+ - L
+ - M
+ - "N"
+ - O
+ - P
+ - Q
+ - R
+ - S
+ - T
+ - U
+ - V
+ - W
+ - X
+ - "Y"
+ - Z
+ - "0"
+ - "1"
+ - "2"
+ - "3"
+ - "4"
+ - "5"
+ - "6"
+ - "7"
+ - "8"
+ - "9"
+ attributes: '{}'
+ lastActivity: 2022-11-10T23:00:00Z
+ endTime: 2021-09-22T22:00:00Z
+ referralRedemptionCount: 3
+ campaignEligibility:
+ - description: Campaign for all summer 2021 promotions
+ eligibility:
+ - details:
+ failureCode: ALL_RULES_FAILED
+ passed: true
+ couponCode: couponCode
+ - details:
+ failureCode: ALL_RULES_FAILED
+ passed: true
+ couponCode: couponCode
+ rules:
+ - displayDescription: Get a 20% discount on all shoes during Thanksgiving!
+ Offer valid till Dec 5 only.
+ displayName: 20% off all shoes!
+ eligibility:
+ - details:
+ failureCode: CONDITION_NOT_MET
+ referralID: 0
+ conditionIndex: 6
+ effectIndex: 1
+ details: details
+ couponID: 4928
+ referralValue: referralValue
+ couponValue: couponValue
+ passed: true
+ couponCode: couponCode
+ - details:
+ failureCode: CONDITION_NOT_MET
+ referralID: 0
+ conditionIndex: 6
+ effectIndex: 1
+ details: details
+ couponID: 4928
+ referralValue: referralValue
+ couponValue: couponValue
+ passed: true
+ couponCode: couponCode
+ relatedData: https://example.com/discounts/20-off-shoes.png
+ title: Give discount via coupon
+ - displayDescription: Get a 20% discount on all shoes during Thanksgiving!
+ Offer valid till Dec 5 only.
+ displayName: 20% off all shoes!
+ eligibility:
+ - details:
+ failureCode: CONDITION_NOT_MET
+ referralID: 0
+ conditionIndex: 6
+ effectIndex: 1
+ details: details
+ couponID: 4928
+ referralValue: referralValue
+ couponValue: couponValue
+ passed: true
+ couponCode: couponCode
+ - details:
+ failureCode: CONDITION_NOT_MET
+ referralID: 0
+ conditionIndex: 6
+ effectIndex: 1
+ details: details
+ couponID: 4928
+ referralValue: referralValue
+ couponValue: couponValue
+ passed: true
+ couponCode: couponCode
+ relatedData: https://example.com/discounts/20-off-shoes.png
+ title: Give discount via coupon
+ tags:
+ - summer
+ features:
+ - coupons
+ - referrals
+ experiment:
+ id: 5
+ variantId: 5
+ name: Summer promotions
+ startTime: 2021-07-20T22:00:00Z
+ attributes: '{}'
+ id: 4
+ endTime: 2021-09-22T22:00:00Z
+ state: enabled
+ applicationId: 322
+ - description: Campaign for all summer 2021 promotions
+ eligibility:
+ - details:
+ failureCode: ALL_RULES_FAILED
+ passed: true
+ couponCode: couponCode
+ - details:
+ failureCode: ALL_RULES_FAILED
+ passed: true
+ couponCode: couponCode
+ rules:
+ - displayDescription: Get a 20% discount on all shoes during Thanksgiving!
+ Offer valid till Dec 5 only.
+ displayName: 20% off all shoes!
+ eligibility:
+ - details:
+ failureCode: CONDITION_NOT_MET
+ referralID: 0
+ conditionIndex: 6
+ effectIndex: 1
+ details: details
+ couponID: 4928
+ referralValue: referralValue
+ couponValue: couponValue
+ passed: true
+ couponCode: couponCode
+ - details:
+ failureCode: CONDITION_NOT_MET
+ referralID: 0
+ conditionIndex: 6
+ effectIndex: 1
+ details: details
+ couponID: 4928
+ referralValue: referralValue
+ couponValue: couponValue
+ passed: true
+ couponCode: couponCode
+ relatedData: https://example.com/discounts/20-off-shoes.png
+ title: Give discount via coupon
+ - displayDescription: Get a 20% discount on all shoes during Thanksgiving!
+ Offer valid till Dec 5 only.
+ displayName: 20% off all shoes!
+ eligibility:
+ - details:
+ failureCode: CONDITION_NOT_MET
+ referralID: 0
+ conditionIndex: 6
+ effectIndex: 1
+ details: details
+ couponID: 4928
+ referralValue: referralValue
+ couponValue: couponValue
+ passed: true
+ couponCode: couponCode
+ - details:
+ failureCode: CONDITION_NOT_MET
+ referralID: 0
+ conditionIndex: 6
+ effectIndex: 1
+ details: details
+ couponID: 4928
+ referralValue: referralValue
+ couponValue: couponValue
+ passed: true
+ couponCode: couponCode
+ relatedData: https://example.com/discounts/20-off-shoes.png
+ title: Give discount via coupon
+ tags:
+ - summer
+ features:
+ - coupons
+ - referrals
+ experiment:
+ id: 5
+ variantId: 5
+ name: Summer promotions
+ startTime: 2021-07-20T22:00:00Z
+ attributes: '{}'
+ id: 4
+ endTime: 2021-09-22T22:00:00Z
+ state: enabled
+ applicationId: 322
+ advancedEvent:
+ connectedSessionId: 175KJPS947296
+ effects:
+ - '{}'
+ - '{}'
+ storeIntegrationId: STORE-001
+ created: 2020-06-10T09:05:27.993483Z
+ profileId: URNGV8294NV
+ referralCode: NT2K54D9
+ integrationId: 175KJPS947296
+ attributes:
myAttribute: myValue
- properties: {}
- type: object
- connectedSessionID:
- description: The ID of the session that happened in the past.
- example: 175KJPS947296
- minLength: 1
- type: string
- previousEventID:
- description: The unique identifier of the event that happened in the past.
- example: 175KJPS947296
- minLength: 1
- type: string
- loyaltyCards:
- description: Identifiers of the loyalty cards used during this event.
- example:
- - loyalty-card-1
- items:
- type: string
- maxItems: 1
- type: array
- responseContent:
- description: |
- Optional list of requested information to be present on the response related to the tracking custom event.
- example:
- - triggeredCampaigns
- - customerProfile
- items:
- enum:
- - customerProfile
- - triggeredCampaigns
- - loyalty
- - advancedEvent
- - awardedGiveaways
- - ruleFailureReasons
- type: string
- type: array
- required:
- - integrationId
- - profileId
- - type
- type: object
- IntegrationEventV3Response:
- description: |
- This is the response type returned by the trackEventV3 endpoint.
+ id: 6
+ applicationId: 322
+ type: pageViewed
+ ruleFailureReasons:
+ - rulesetID: 7
+ ruleIndex: 3
+ campaignID: 2
+ referralID: 9
+ rewardIntegrationId: 5c0b5e6d-3f8a-4c2b-9f1e-2a7d6b4c8e90
+ conditionIndex: 2
+ effectIndex: 4
+ evaluationGroupMode: stackable
+ couponID: 4928
+ referralValue: referralValue
+ couponValue: couponValue
+ rewardId: 7
+ evaluationGroupID: 3
+ ruleName: ruleName
+ details: details
+ campaignName: campaignName
+ - rulesetID: 7
+ ruleIndex: 3
+ campaignID: 2
+ referralID: 9
+ rewardIntegrationId: 5c0b5e6d-3f8a-4c2b-9f1e-2a7d6b4c8e90
+ conditionIndex: 2
+ effectIndex: 4
+ evaluationGroupMode: stackable
+ couponID: 4928
+ referralValue: referralValue
+ couponValue: couponValue
+ rewardId: 7
+ evaluationGroupID: 3
+ ruleName: ruleName
+ details: details
+ campaignName: campaignName
+ rewards:
+ - name: 10% Off Coupon
+ integrationId: free-coffee
+ description: Applies to next order
+ rule:
+ displayDescription: Get a 20% discount on all shoes during Thanksgiving!
+ Offer valid till Dec 5 only.
+ displayName: 20% off all shoes!
+ relatedData: https://example.com/discounts/20-off-shoes.png
+ title: Give discount via coupon
+ id: 42
+ unlocked:
+ - profileIntegrationId: customer1
+ unlockedAt: 2024-01-01T00:00:00Z
+ integrationId: reward-unlock-123
+ usedAt: 2024-01-02T00:00:00Z
+ applicationId: 3
+ - profileIntegrationId: customer1
+ unlockedAt: 2024-01-01T00:00:00Z
+ integrationId: reward-unlock-123
+ usedAt: 2024-01-02T00:00:00Z
+ applicationId: 3
+ - name: 10% Off Coupon
+ integrationId: free-coffee
+ description: Applies to next order
+ rule:
+ displayDescription: Get a 20% discount on all shoes during Thanksgiving!
+ Offer valid till Dec 5 only.
+ displayName: 20% off all shoes!
+ relatedData: https://example.com/discounts/20-off-shoes.png
+ title: Give discount via coupon
+ id: 42
+ unlocked:
+ - profileIntegrationId: customer1
+ unlockedAt: 2024-01-01T00:00:00Z
+ integrationId: reward-unlock-123
+ usedAt: 2024-01-02T00:00:00Z
+ applicationId: 3
+ - profileIntegrationId: customer1
+ unlockedAt: 2024-01-01T00:00:00Z
+ integrationId: reward-unlock-123
+ usedAt: 2024-01-02T00:00:00Z
+ applicationId: 3
properties:
customerProfile:
$ref: '#/components/schemas/CustomerProfile'
@@ -45222,6 +54865,15 @@ components:
items:
$ref: '#/components/schemas/Campaign'
type: array
+ campaignEligibility:
+ description: "A list of campaigns and their evaluation status for the current\
+ \ customer session.\n\n**Note**:\n\n- This response can **only** be included\
+ \ if the `dry` parameter in the query is set to `true`. \n- Do not include\
+ \ `triggeredCampaigns` or `ruleFailureReasons` in `responseContent` to\
+ \ avoid duplicate results.\n"
+ items:
+ $ref: '#/components/schemas/CampaignEligibility'
+ type: array
effects:
description: The effects generated by the rules in your running campaigns.
See [API effects](https://docs.talon.one/docs/dev/integration-api/api-effects).
@@ -45250,8 +54902,20 @@ components:
items:
$ref: '#/components/schemas/Giveaway'
type: array
+ achievements:
+ description: The achievements progress of the customer.
+ items:
+ $ref: '#/components/schemas/CustomerAchievement'
+ type: array
+ rewards:
+ description: The rewards for the customer profile.
+ items:
+ $ref: '#/components/schemas/RewardWithUnlocks'
+ type: array
advancedEvent:
$ref: '#/components/schemas/EventV3'
+ referral:
+ $ref: '#/components/schemas/InventoryReferral'
required:
- createdCoupons
- createdReferrals
@@ -47102,63 +56766,360 @@ components:
- UserID
- UsersPerCardLimit
type: object
- SetLoyaltyPointsExpiryDateEffectProps:
- description: |
- The properties specific to the "setLoyaltyPointsExpiryDate" effect. This gets triggered when a validated rule contains the "set expiry date" effect. The current expiry date gets set to the date given in the effect.
+ IntegrationHubEventPayloadLoyaltyProfileBasedPointsChangedNotificationAction:
properties:
- programId:
- description: ID of the loyalty program that contains these points.
+ Amount:
+ format: float
+ type: number
+ Reason:
+ type: string
+ Operation:
+ enum:
+ - addition
+ - subtraction
+ type: string
+ StartDate:
+ format: date-time
+ type: string
+ ExpiryDate:
+ format: date-time
+ type: string
+ TransactionUUID:
+ description: The identifier of the transaction in the loyalty ledger.
+ format: uuid
+ type: string
+ required:
+ - Amount
+ - Operation
+ - TransactionUUID
+ type: object
+ IntegrationHubEventPayloadLoyaltyProfileBasedPointsChangedNotification:
+ properties:
+ EventId:
+ description: The ID of the integration hub event. Return this value in the
+ delivery-status callback to mark the event delivered or failed.
+ example: 123
format: int64
type: integer
- subLedgerId:
- description: API name of the loyalty program subledger that contains these
- points.
+ ProfileIntegrationID:
type: string
- newExpiryDate:
- description: The specified expiry date and time for all active and pending
- point transactions in the loyalty program subledger.
- example: 2024-07-24T14:15:22Z
+ LoyaltyProgramID:
+ format: int64
+ type: integer
+ LoyaltyProgramName:
+ description: The name of the loyalty program.
+ type: string
+ SubledgerID:
+ type: string
+ SourceOfEvent:
+ type: string
+ CurrentTier:
+ description: The name of the customer's current tier.
+ type: string
+ SessionIntegrationID:
+ description: The integration ID of the session through which the points
+ were earned or lost. Only set when the change results from a rule engine
+ execution; empty otherwise.
+ type: string
+ EmployeeName:
+ type: string
+ UserID:
+ format: int64
+ type: integer
+ CurrentPoints:
+ format: float
+ type: number
+ Actions:
+ items:
+ $ref: '#/components/schemas/IntegrationHubEventPayloadLoyaltyProfileBasedPointsChangedNotificationAction'
+ type: array
+ PublishedAt:
+ description: Timestamp when the event was published.
format: date-time
type: string
- affectedTransactions:
- description: List of transactions affected by the expiry date update.
+ required:
+ - CurrentPoints
+ - CurrentTier
+ - EventId
+ - LoyaltyProgramID
+ - LoyaltyProgramName
+ - ProfileIntegrationID
+ - PublishedAt
+ - SourceOfEvent
+ - SubledgerID
+ type: object
+ x-discriminator-value: LoyaltyPointsChanged
+ x-ms-discriminator-value: LoyaltyPointsChanged
+ IntegrationHubEventPayloadLoyaltyProfileBasedTierDowngradeNotification:
+ properties:
+ EventId:
+ description: The ID of the integration hub event. Return this value in the
+ delivery-status callback to mark the event delivered or failed.
+ example: 123
+ format: int64
+ type: integer
+ ProfileIntegrationID:
+ type: string
+ LoyaltyProgramID:
+ format: int64
+ type: integer
+ LoyaltyProgramName:
+ description: The name of the loyalty program.
+ type: string
+ SubledgerID:
+ type: string
+ SourceOfEvent:
+ type: string
+ CurrentTier:
+ description: The name of the customer's current tier, or null if the customer
+ was downgraded below all tiers.
+ type: string
+ CurrentPoints:
+ format: float
+ type: number
+ OldTier:
+ type: string
+ TierExpirationDate:
+ format: date-time
+ type: string
+ TimestampOfTierChange:
+ format: date-time
+ type: string
+ PublishedAt:
+ description: Timestamp when the event was published.
+ format: date-time
+ type: string
+ required:
+ - CurrentPoints
+ - EventId
+ - LoyaltyProgramID
+ - LoyaltyProgramName
+ - ProfileIntegrationID
+ - PublishedAt
+ - SourceOfEvent
+ - SubledgerID
+ type: object
+ x-discriminator-value: LoyaltyTierDowngrade
+ x-ms-discriminator-value: LoyaltyTierDowngrade
+ IntegrationHubEventPayloadLoyaltyProfileBasedTierUpgradeNotification:
+ properties:
+ EventId:
+ description: The ID of the integration hub event. Return this value in the
+ delivery-status callback to mark the event delivered or failed.
+ example: 123
+ format: int64
+ type: integer
+ ProfileIntegrationID:
+ type: string
+ LoyaltyProgramID:
+ format: int64
+ type: integer
+ LoyaltyProgramName:
+ description: The name of the loyalty program.
+ type: string
+ SubledgerID:
+ type: string
+ SourceOfEvent:
+ type: string
+ CurrentTier:
+ description: The name of the customer's current tier.
+ type: string
+ CurrentPoints:
+ format: float
+ type: number
+ OldTier:
+ type: string
+ PointsRequiredToTheNextTier:
+ format: float
+ type: number
+ NextTier:
+ type: string
+ TierExpirationDate:
+ format: date-time
+ type: string
+ TimestampOfTierChange:
+ format: date-time
+ type: string
+ PublishedAt:
+ description: Timestamp when the event was published.
+ format: date-time
+ type: string
+ required:
+ - CurrentPoints
+ - CurrentTier
+ - EventId
+ - LoyaltyProgramID
+ - LoyaltyProgramName
+ - ProfileIntegrationID
+ - PublishedAt
+ - SourceOfEvent
+ - SubledgerID
+ type: object
+ x-discriminator-value: LoyaltyTierUpgrade
+ x-ms-discriminator-value: LoyaltyTierUpgrade
+ IntegrationHubEventPayloadCouponBasedNotificationsLimits:
+ properties:
+ Action:
+ type: string
+ Limit:
+ format: float
+ type: number
+ Period:
+ type: string
+ Entities:
items:
- $ref: '#/components/schemas/LoyaltyLedgerEntryExpiryDateChange'
+ type: string
type: array
required:
- - newExpiryDate
- - programId
- - subLedgerId
+ - Action
+ - Entities
+ - Limit
+ type: object
+ IntegrationHubEventPayloadCouponBasedNotifications:
+ properties:
+ EventId:
+ description: The ID of the integration hub event. Return this value in the
+ delivery-status callback to mark the event delivered or failed.
+ example: 123
+ format: int64
+ type: integer
+ Id:
+ format: int64
+ type: integer
+ Created:
+ format: date-time
+ type: string
+ CampaignId:
+ format: int64
+ type: integer
+ Value:
+ type: string
+ UsageLimit:
+ format: int64
+ type: integer
+ DiscountLimit:
+ format: float
+ type: number
+ ReservationLimit:
+ format: int64
+ type: integer
+ StartDate:
+ format: date-time
+ type: string
+ ExpiryDate:
+ format: date-time
+ type: string
+ UsageCounter:
+ format: int64
+ type: integer
+ DiscountCounter:
+ format: float
+ type: number
+ DiscountRemainder:
+ format: float
+ type: number
+ ReferralId:
+ format: int64
+ type: integer
+ RecipientIntegrationId:
+ type: string
+ ImportId:
+ format: int64
+ type: integer
+ BatchId:
+ type: string
+ Attributes:
+ properties: {}
+ type: object
+ Limits:
+ items:
+ $ref: '#/components/schemas/IntegrationHubEventPayloadCouponBasedNotificationsLimits'
+ type: array
+ PublishedAt:
+ description: Timestamp when the event was published.
+ format: date-time
+ type: string
+ SourceOfEvent:
+ type: string
+ EmployeeName:
+ type: string
+ required:
+ - CampaignId
+ - Created
+ - EmployeeName
+ - EventId
+ - Id
+ - PublishedAt
+ - SourceOfEvent
+ - UsageCounter
+ - UsageLimit
+ - Value
type: object
+ x-discriminator-value: CouponDeleted
+ x-ms-discriminator-value: CouponDeleted
inline_response_200:
example:
data:
- - features:
+ - description: Campaign for all summer 2021 promotions
+ rules:
+ - displayDescription: Get a 20% discount on all shoes during Thanksgiving!
+ Offer valid till Dec 5 only.
+ displayName: 20% off all shoes!
+ relatedData: https://example.com/discounts/20-off-shoes.png
+ title: Give discount via coupon
+ - displayDescription: Get a 20% discount on all shoes during Thanksgiving!
+ Offer valid till Dec 5 only.
+ displayName: 20% off all shoes!
+ relatedData: https://example.com/discounts/20-off-shoes.png
+ title: Give discount via coupon
+ tags:
+ - summer
+ linkedAudienceIds:
+ - 3
+ - 4
+ features:
- coupons
- referrals
+ linkedStoreIds:
+ - 1
+ - 2
name: Summer promotions
- description: Campaign for all summer 2021 promotions
startTime: 2021-07-20T22:00:00Z
attributes: '{}'
id: 4
endTime: 2021-09-22T22:00:00Z
state: enabled
applicationId: 322
+ - description: Campaign for all summer 2021 promotions
+ rules:
+ - displayDescription: Get a 20% discount on all shoes during Thanksgiving!
+ Offer valid till Dec 5 only.
+ displayName: 20% off all shoes!
+ relatedData: https://example.com/discounts/20-off-shoes.png
+ title: Give discount via coupon
+ - displayDescription: Get a 20% discount on all shoes during Thanksgiving!
+ Offer valid till Dec 5 only.
+ displayName: 20% off all shoes!
+ relatedData: https://example.com/discounts/20-off-shoes.png
+ title: Give discount via coupon
tags:
- summer
- - features:
+ linkedAudienceIds:
+ - 3
+ - 4
+ features:
- coupons
- referrals
+ linkedStoreIds:
+ - 1
+ - 2
name: Summer promotions
- description: Campaign for all summer 2021 promotions
startTime: 2021-07-20T22:00:00Z
attributes: '{}'
id: 4
endTime: 2021-09-22T22:00:00Z
state: enabled
applicationId: 322
- tags:
- - summer
hasMore: true
properties:
hasMore:
@@ -47299,6 +57260,10 @@ components:
minute: 59
second: 59
id: 6
+ campaignIds:
+ - 1
+ - 14
+ - 27
recurrencePolicy: no_recurrence
status: active
- currentProgress:
@@ -47325,6 +57290,10 @@ components:
minute: 59
second: 59
id: 6
+ campaignIds:
+ - 1
+ - 14
+ - 27
recurrencePolicy: no_recurrence
status: active
totalResultSize: 1
@@ -47423,6 +57392,7 @@ components:
type: addition
expiryDate: 2022-08-02T15:04:05Z07:00
transactionUUID: ce59f12a-f53b-4014-a745-636d93f2bd3f
+ storeIntegrationId: STORE-001
subledgerId: sub-123
name: Reward 10% points of a purchase's current total
validityDuration: 30D
@@ -47439,6 +57409,7 @@ components:
type: addition
expiryDate: 2022-08-02T15:04:05Z07:00
transactionUUID: ce59f12a-f53b-4014-a745-636d93f2bd3f
+ storeIntegrationId: STORE-001
subledgerId: sub-123
name: Reward 10% points of a purchase's current total
validityDuration: 30D
@@ -47537,7 +57508,9 @@ components:
inline_response_200_8:
example:
data:
- - enableFlattenedCartItems: true
+ - bestPriorPriceSettings:
+ enableBestPriorPrice: true
+ enableFlattenedCartItems: true
created: 2020-06-10T09:05:27.993483Z
timezone: Europe/Berlin
defaultCartItemFilterId: 3
@@ -47738,7 +57711,9 @@ components:
limit: 1000.0
action: createCoupon
enablePartialDiscounts: false
- - enableFlattenedCartItems: true
+ - bestPriorPriceSettings:
+ enableBestPriorPrice: true
+ enableFlattenedCartItems: true
created: 2020-06-10T09:05:27.993483Z
timezone: Europe/Berlin
defaultCartItemFilterId: 3
@@ -48035,7 +58010,7 @@ components:
- 100
- 215
applicationId: 322
- updated: 2000-01-23T04:56:07.000+00:00
+ updated: 2022-10-27T15:00:00Z
callApiEffectCount: 0
createdLoyaltyPointsEffectCount: 2
discountCount: 288.0
@@ -48190,7 +58165,7 @@ components:
- 100
- 215
applicationId: 322
- updated: 2000-01-23T04:56:07.000+00:00
+ updated: 2022-10-27T15:00:00Z
callApiEffectCount: 0
createdLoyaltyPointsEffectCount: 2
discountCount: 288.0
@@ -48307,22 +58282,22 @@ components:
- attributeId: 100
minValue: 0.0
expression:
- - string1
- - string2
+ - identity
+ - 10
maxValue: 19.9
- valueType: string
- name: my property
- description: This is a template parameter of type `number`.
+ valueType: number
+ name: Discount percentage
+ description: The percentage discount applied to the cart total.
type: templateParameter
- attributeId: 100
minValue: 0.0
expression:
- - string1
- - string2
+ - identity
+ - 10
maxValue: 19.9
- valueType: string
- name: my property
- description: This is a template parameter of type `number`.
+ valueType: number
+ name: Discount percentage
+ description: The percentage discount applied to the cart total.
type: templateParameter
description: Creates a discount when a coupon is valid
id: 7fa800a8-ac8d-4792-85dc-c4650dcc8f23
@@ -48347,22 +58322,22 @@ components:
- attributeId: 100
minValue: 0.0
expression:
- - string1
- - string2
+ - identity
+ - 10
maxValue: 19.9
- valueType: string
- name: my property
- description: This is a template parameter of type `number`.
+ valueType: number
+ name: Discount percentage
+ description: The percentage discount applied to the cart total.
type: templateParameter
- attributeId: 100
minValue: 0.0
expression:
- - string1
- - string2
+ - identity
+ - 10
maxValue: 19.9
- valueType: string
- name: my property
- description: This is a template parameter of type `number`.
+ valueType: number
+ name: Discount percentage
+ description: The percentage discount applied to the cart total.
type: templateParameter
description: Creates a discount when a coupon is valid
id: 7fa800a8-ac8d-4792-85dc-c4650dcc8f23
@@ -48389,22 +58364,22 @@ components:
- attributeId: 100
minValue: 0.0
expression:
- - string1
- - string2
+ - identity
+ - 10
maxValue: 19.9
- valueType: string
- name: my property
- description: This is a template parameter of type `number`.
+ valueType: number
+ name: Discount percentage
+ description: The percentage discount applied to the cart total.
type: templateParameter
- attributeId: 100
minValue: 0.0
expression:
- - string1
- - string2
+ - identity
+ - 10
maxValue: 19.9
- valueType: string
- name: my property
- description: This is a template parameter of type `number`.
+ valueType: number
+ name: Discount percentage
+ description: The percentage discount applied to the cart total.
type: templateParameter
description: Creates a discount when a coupon is valid
id: 7fa800a8-ac8d-4792-85dc-c4650dcc8f23
@@ -48429,22 +58404,22 @@ components:
- attributeId: 100
minValue: 0.0
expression:
- - string1
- - string2
+ - identity
+ - 10
maxValue: 19.9
- valueType: string
- name: my property
- description: This is a template parameter of type `number`.
+ valueType: number
+ name: Discount percentage
+ description: The percentage discount applied to the cart total.
type: templateParameter
- attributeId: 100
minValue: 0.0
expression:
- - string1
- - string2
+ - identity
+ - 10
maxValue: 19.9
- valueType: string
- name: my property
- description: This is a template parameter of type `number`.
+ valueType: number
+ name: Discount percentage
+ description: The percentage discount applied to the cart total.
type: templateParameter
description: Creates a discount when a coupon is valid
id: 7fa800a8-ac8d-4792-85dc-c4650dcc8f23
@@ -48478,22 +58453,22 @@ components:
- attributeId: 100
minValue: 0.0
expression:
- - string1
- - string2
+ - identity
+ - 10
maxValue: 19.9
- valueType: string
- name: my property
- description: This is a template parameter of type `number`.
+ valueType: number
+ name: Discount percentage
+ description: The percentage discount applied to the cart total.
type: templateParameter
- attributeId: 100
minValue: 0.0
expression:
- - string1
- - string2
+ - identity
+ - 10
maxValue: 19.9
- valueType: string
- name: my property
- description: This is a template parameter of type `number`.
+ valueType: number
+ name: Discount percentage
+ description: The percentage discount applied to the cart total.
type: templateParameter
description: Creates a discount when a coupon is valid
id: 7fa800a8-ac8d-4792-85dc-c4650dcc8f23
@@ -48518,22 +58493,22 @@ components:
- attributeId: 100
minValue: 0.0
expression:
- - string1
- - string2
+ - identity
+ - 10
maxValue: 19.9
- valueType: string
- name: my property
- description: This is a template parameter of type `number`.
+ valueType: number
+ name: Discount percentage
+ description: The percentage discount applied to the cart total.
type: templateParameter
- attributeId: 100
minValue: 0.0
expression:
- - string1
- - string2
+ - identity
+ - 10
maxValue: 19.9
- valueType: string
- name: my property
- description: This is a template parameter of type `number`.
+ valueType: number
+ name: Discount percentage
+ description: The percentage discount applied to the cart total.
type: templateParameter
description: Creates a discount when a coupon is valid
id: 7fa800a8-ac8d-4792-85dc-c4650dcc8f23
@@ -48560,22 +58535,22 @@ components:
- attributeId: 100
minValue: 0.0
expression:
- - string1
- - string2
+ - identity
+ - 10
maxValue: 19.9
- valueType: string
- name: my property
- description: This is a template parameter of type `number`.
+ valueType: number
+ name: Discount percentage
+ description: The percentage discount applied to the cart total.
type: templateParameter
- attributeId: 100
minValue: 0.0
expression:
- - string1
- - string2
+ - identity
+ - 10
maxValue: 19.9
- valueType: string
- name: my property
- description: This is a template parameter of type `number`.
+ valueType: number
+ name: Discount percentage
+ description: The percentage discount applied to the cart total.
type: templateParameter
description: Creates a discount when a coupon is valid
id: 7fa800a8-ac8d-4792-85dc-c4650dcc8f23
@@ -48600,22 +58575,22 @@ components:
- attributeId: 100
minValue: 0.0
expression:
- - string1
- - string2
+ - identity
+ - 10
maxValue: 19.9
- valueType: string
- name: my property
- description: This is a template parameter of type `number`.
+ valueType: number
+ name: Discount percentage
+ description: The percentage discount applied to the cart total.
type: templateParameter
- attributeId: 100
minValue: 0.0
expression:
- - string1
- - string2
+ - identity
+ - 10
maxValue: 19.9
- valueType: string
- name: my property
- description: This is a template parameter of type `number`.
+ valueType: number
+ name: Discount percentage
+ description: The percentage discount applied to the cart total.
type: templateParameter
description: Creates a discount when a coupon is valid
id: 7fa800a8-ac8d-4792-85dc-c4650dcc8f23
@@ -49186,7 +59161,10 @@ components:
inline_response_200_16:
example:
data:
- - deletedat: 2000-01-23T04:56:07.000+00:00
+ - goalType: other
+ goalDescription: Offering free shipping will increase average order revenue
+ more than a 10% discount
+ deletedat: 2000-01-23T04:56:07.000+00:00
created: 2020-06-10T09:05:27.993483Z
campaign:
type: advanced
@@ -49269,7 +59247,7 @@ components:
- 100
- 215
applicationId: 322
- updated: 2000-01-23T04:56:07.000+00:00
+ updated: 2022-10-27T15:00:00Z
callApiEffectCount: 0
createdLoyaltyPointsEffectCount: 2
discountCount: 288.0
@@ -49377,22 +59355,22 @@ components:
- attributeId: 100
minValue: 0.0
expression:
- - string1
- - string2
+ - identity
+ - 10
maxValue: 19.9
- valueType: string
- name: my property
- description: This is a template parameter of type `number`.
+ valueType: number
+ name: Discount percentage
+ description: The percentage discount applied to the cart total.
type: templateParameter
- attributeId: 100
minValue: 0.0
expression:
- - string1
- - string2
+ - identity
+ - 10
maxValue: 19.9
- valueType: string
- name: my property
- description: This is a template parameter of type `number`.
+ valueType: number
+ name: Discount percentage
+ description: The percentage discount applied to the cart total.
type: templateParameter
description: Creates a discount when a coupon is valid
id: 7fa800a8-ac8d-4792-85dc-c4650dcc8f23
@@ -49417,22 +59395,22 @@ components:
- attributeId: 100
minValue: 0.0
expression:
- - string1
- - string2
+ - identity
+ - 10
maxValue: 19.9
- valueType: string
- name: my property
- description: This is a template parameter of type `number`.
+ valueType: number
+ name: Discount percentage
+ description: The percentage discount applied to the cart total.
type: templateParameter
- attributeId: 100
minValue: 0.0
expression:
- - string1
- - string2
+ - identity
+ - 10
maxValue: 19.9
- valueType: string
- name: my property
- description: This is a template parameter of type `number`.
+ valueType: number
+ name: Discount percentage
+ description: The percentage discount applied to the cart total.
type: templateParameter
description: Creates a discount when a coupon is valid
id: 7fa800a8-ac8d-4792-85dc-c4650dcc8f23
@@ -49459,22 +59437,22 @@ components:
- attributeId: 100
minValue: 0.0
expression:
- - string1
- - string2
+ - identity
+ - 10
maxValue: 19.9
- valueType: string
- name: my property
- description: This is a template parameter of type `number`.
+ valueType: number
+ name: Discount percentage
+ description: The percentage discount applied to the cart total.
type: templateParameter
- attributeId: 100
minValue: 0.0
expression:
- - string1
- - string2
+ - identity
+ - 10
maxValue: 19.9
- valueType: string
- name: my property
- description: This is a template parameter of type `number`.
+ valueType: number
+ name: Discount percentage
+ description: The percentage discount applied to the cart total.
type: templateParameter
description: Creates a discount when a coupon is valid
id: 7fa800a8-ac8d-4792-85dc-c4650dcc8f23
@@ -49499,22 +59477,22 @@ components:
- attributeId: 100
minValue: 0.0
expression:
- - string1
- - string2
+ - identity
+ - 10
maxValue: 19.9
- valueType: string
- name: my property
- description: This is a template parameter of type `number`.
+ valueType: number
+ name: Discount percentage
+ description: The percentage discount applied to the cart total.
type: templateParameter
- attributeId: 100
minValue: 0.0
expression:
- - string1
- - string2
+ - identity
+ - 10
maxValue: 19.9
- valueType: string
- name: my property
- description: This is a template parameter of type `number`.
+ valueType: number
+ name: Discount percentage
+ description: The percentage discount applied to the cart total.
type: templateParameter
description: Creates a discount when a coupon is valid
id: 7fa800a8-ac8d-4792-85dc-c4650dcc8f23
@@ -49555,22 +59533,22 @@ components:
- attributeId: 100
minValue: 0.0
expression:
- - string1
- - string2
+ - identity
+ - 10
maxValue: 19.9
- valueType: string
- name: my property
- description: This is a template parameter of type `number`.
+ valueType: number
+ name: Discount percentage
+ description: The percentage discount applied to the cart total.
type: templateParameter
- attributeId: 100
minValue: 0.0
expression:
- - string1
- - string2
+ - identity
+ - 10
maxValue: 19.9
- valueType: string
- name: my property
- description: This is a template parameter of type `number`.
+ valueType: number
+ name: Discount percentage
+ description: The percentage discount applied to the cart total.
type: templateParameter
description: Creates a discount when a coupon is valid
id: 7fa800a8-ac8d-4792-85dc-c4650dcc8f23
@@ -49595,22 +59573,22 @@ components:
- attributeId: 100
minValue: 0.0
expression:
- - string1
- - string2
+ - identity
+ - 10
maxValue: 19.9
- valueType: string
- name: my property
- description: This is a template parameter of type `number`.
+ valueType: number
+ name: Discount percentage
+ description: The percentage discount applied to the cart total.
type: templateParameter
- attributeId: 100
minValue: 0.0
expression:
- - string1
- - string2
+ - identity
+ - 10
maxValue: 19.9
- valueType: string
- name: my property
- description: This is a template parameter of type `number`.
+ valueType: number
+ name: Discount percentage
+ description: The percentage discount applied to the cart total.
type: templateParameter
description: Creates a discount when a coupon is valid
id: 7fa800a8-ac8d-4792-85dc-c4650dcc8f23
@@ -49637,22 +59615,22 @@ components:
- attributeId: 100
minValue: 0.0
expression:
- - string1
- - string2
+ - identity
+ - 10
maxValue: 19.9
- valueType: string
- name: my property
- description: This is a template parameter of type `number`.
+ valueType: number
+ name: Discount percentage
+ description: The percentage discount applied to the cart total.
type: templateParameter
- attributeId: 100
minValue: 0.0
expression:
- - string1
- - string2
+ - identity
+ - 10
maxValue: 19.9
- valueType: string
- name: my property
- description: This is a template parameter of type `number`.
+ valueType: number
+ name: Discount percentage
+ description: The percentage discount applied to the cart total.
type: templateParameter
description: Creates a discount when a coupon is valid
id: 7fa800a8-ac8d-4792-85dc-c4650dcc8f23
@@ -49677,22 +59655,22 @@ components:
- attributeId: 100
minValue: 0.0
expression:
- - string1
- - string2
+ - identity
+ - 10
maxValue: 19.9
- valueType: string
- name: my property
- description: This is a template parameter of type `number`.
+ valueType: number
+ name: Discount percentage
+ description: The percentage discount applied to the cart total.
type: templateParameter
- attributeId: 100
minValue: 0.0
expression:
- - string1
- - string2
+ - identity
+ - 10
maxValue: 19.9
- valueType: string
- name: my property
- description: This is a template parameter of type `number`.
+ valueType: number
+ name: Discount percentage
+ description: The percentage discount applied to the cart total.
type: templateParameter
description: Creates a discount when a coupon is valid
id: 7fa800a8-ac8d-4792-85dc-c4650dcc8f23
@@ -49706,7 +59684,10 @@ components:
applicationId: 322
isVariantAssignmentExternal: true
activated: 2000-01-23T04:56:07.000+00:00
- - deletedat: 2000-01-23T04:56:07.000+00:00
+ - goalType: other
+ goalDescription: Offering free shipping will increase average order revenue
+ more than a 10% discount
+ deletedat: 2000-01-23T04:56:07.000+00:00
created: 2020-06-10T09:05:27.993483Z
campaign:
type: advanced
@@ -49789,7 +59770,7 @@ components:
- 100
- 215
applicationId: 322
- updated: 2000-01-23T04:56:07.000+00:00
+ updated: 2022-10-27T15:00:00Z
callApiEffectCount: 0
createdLoyaltyPointsEffectCount: 2
discountCount: 288.0
@@ -49897,22 +59878,22 @@ components:
- attributeId: 100
minValue: 0.0
expression:
- - string1
- - string2
+ - identity
+ - 10
maxValue: 19.9
- valueType: string
- name: my property
- description: This is a template parameter of type `number`.
+ valueType: number
+ name: Discount percentage
+ description: The percentage discount applied to the cart total.
type: templateParameter
- attributeId: 100
minValue: 0.0
expression:
- - string1
- - string2
+ - identity
+ - 10
maxValue: 19.9
- valueType: string
- name: my property
- description: This is a template parameter of type `number`.
+ valueType: number
+ name: Discount percentage
+ description: The percentage discount applied to the cart total.
type: templateParameter
description: Creates a discount when a coupon is valid
id: 7fa800a8-ac8d-4792-85dc-c4650dcc8f23
@@ -49937,22 +59918,22 @@ components:
- attributeId: 100
minValue: 0.0
expression:
- - string1
- - string2
+ - identity
+ - 10
maxValue: 19.9
- valueType: string
- name: my property
- description: This is a template parameter of type `number`.
+ valueType: number
+ name: Discount percentage
+ description: The percentage discount applied to the cart total.
type: templateParameter
- attributeId: 100
minValue: 0.0
expression:
- - string1
- - string2
+ - identity
+ - 10
maxValue: 19.9
- valueType: string
- name: my property
- description: This is a template parameter of type `number`.
+ valueType: number
+ name: Discount percentage
+ description: The percentage discount applied to the cart total.
type: templateParameter
description: Creates a discount when a coupon is valid
id: 7fa800a8-ac8d-4792-85dc-c4650dcc8f23
@@ -49979,22 +59960,22 @@ components:
- attributeId: 100
minValue: 0.0
expression:
- - string1
- - string2
+ - identity
+ - 10
maxValue: 19.9
- valueType: string
- name: my property
- description: This is a template parameter of type `number`.
+ valueType: number
+ name: Discount percentage
+ description: The percentage discount applied to the cart total.
type: templateParameter
- attributeId: 100
minValue: 0.0
expression:
- - string1
- - string2
+ - identity
+ - 10
maxValue: 19.9
- valueType: string
- name: my property
- description: This is a template parameter of type `number`.
+ valueType: number
+ name: Discount percentage
+ description: The percentage discount applied to the cart total.
type: templateParameter
description: Creates a discount when a coupon is valid
id: 7fa800a8-ac8d-4792-85dc-c4650dcc8f23
@@ -50019,22 +60000,22 @@ components:
- attributeId: 100
minValue: 0.0
expression:
- - string1
- - string2
+ - identity
+ - 10
maxValue: 19.9
- valueType: string
- name: my property
- description: This is a template parameter of type `number`.
+ valueType: number
+ name: Discount percentage
+ description: The percentage discount applied to the cart total.
type: templateParameter
- attributeId: 100
minValue: 0.0
expression:
- - string1
- - string2
+ - identity
+ - 10
maxValue: 19.9
- valueType: string
- name: my property
- description: This is a template parameter of type `number`.
+ valueType: number
+ name: Discount percentage
+ description: The percentage discount applied to the cart total.
type: templateParameter
description: Creates a discount when a coupon is valid
id: 7fa800a8-ac8d-4792-85dc-c4650dcc8f23
@@ -50075,22 +60056,22 @@ components:
- attributeId: 100
minValue: 0.0
expression:
- - string1
- - string2
+ - identity
+ - 10
maxValue: 19.9
- valueType: string
- name: my property
- description: This is a template parameter of type `number`.
+ valueType: number
+ name: Discount percentage
+ description: The percentage discount applied to the cart total.
type: templateParameter
- attributeId: 100
minValue: 0.0
expression:
- - string1
- - string2
+ - identity
+ - 10
maxValue: 19.9
- valueType: string
- name: my property
- description: This is a template parameter of type `number`.
+ valueType: number
+ name: Discount percentage
+ description: The percentage discount applied to the cart total.
type: templateParameter
description: Creates a discount when a coupon is valid
id: 7fa800a8-ac8d-4792-85dc-c4650dcc8f23
@@ -50115,22 +60096,22 @@ components:
- attributeId: 100
minValue: 0.0
expression:
- - string1
- - string2
+ - identity
+ - 10
maxValue: 19.9
- valueType: string
- name: my property
- description: This is a template parameter of type `number`.
+ valueType: number
+ name: Discount percentage
+ description: The percentage discount applied to the cart total.
type: templateParameter
- attributeId: 100
minValue: 0.0
expression:
- - string1
- - string2
+ - identity
+ - 10
maxValue: 19.9
- valueType: string
- name: my property
- description: This is a template parameter of type `number`.
+ valueType: number
+ name: Discount percentage
+ description: The percentage discount applied to the cart total.
type: templateParameter
description: Creates a discount when a coupon is valid
id: 7fa800a8-ac8d-4792-85dc-c4650dcc8f23
@@ -50157,22 +60138,22 @@ components:
- attributeId: 100
minValue: 0.0
expression:
- - string1
- - string2
+ - identity
+ - 10
maxValue: 19.9
- valueType: string
- name: my property
- description: This is a template parameter of type `number`.
+ valueType: number
+ name: Discount percentage
+ description: The percentage discount applied to the cart total.
type: templateParameter
- attributeId: 100
minValue: 0.0
expression:
- - string1
- - string2
+ - identity
+ - 10
maxValue: 19.9
- valueType: string
- name: my property
- description: This is a template parameter of type `number`.
+ valueType: number
+ name: Discount percentage
+ description: The percentage discount applied to the cart total.
type: templateParameter
description: Creates a discount when a coupon is valid
id: 7fa800a8-ac8d-4792-85dc-c4650dcc8f23
@@ -50197,22 +60178,22 @@ components:
- attributeId: 100
minValue: 0.0
expression:
- - string1
- - string2
+ - identity
+ - 10
maxValue: 19.9
- valueType: string
- name: my property
- description: This is a template parameter of type `number`.
+ valueType: number
+ name: Discount percentage
+ description: The percentage discount applied to the cart total.
type: templateParameter
- attributeId: 100
minValue: 0.0
expression:
- - string1
- - string2
+ - identity
+ - 10
maxValue: 19.9
- valueType: string
- name: my property
- description: This is a template parameter of type `number`.
+ valueType: number
+ name: Discount percentage
+ description: The percentage discount applied to the cart total.
type: templateParameter
description: Creates a discount when a coupon is valid
id: 7fa800a8-ac8d-4792-85dc-c4650dcc8f23
@@ -51310,6 +61291,187 @@ components:
required:
- data
inline_response_200_32:
+ example:
+ data:
+ - coupon: BKDB946
+ created: 2020-02-07T08:15:22Z
+ totalDiscounts: 100.0
+ integrationId: URNGV8294NV
+ profileintegrationid: 382370BKDB946
+ total: 200.0
+ referral: BKDB946
+ discounts:
+ key: 0.8008281904610115
+ storeIntegrationId: STORE-001
+ profileId: 138
+ attributes: '{}'
+ id: 6
+ state: closed
+ applicationId: 322
+ cartItems:
+ - remainingQuantity: 1
+ product:
+ name: sample_product
+ quantity: 1
+ returnedQuantity: 1
+ length: 1.4658129805029452
+ weight: 1130.0
+ adjustmentReferenceId: 68851723-e6fa-488f-ace9-112581e6c19b
+ adjustmentEffectiveFrom: 2021-09-12T10:12:42Z
+ catalogItemID: 5
+ additionalCosts:
+ shipping:
+ price: 9
+ price: 99.99
+ selectedPriceType: member
+ name: Air Glide
+ width: 6.027456183070403
+ attributes:
+ image: 11.jpeg
+ material: leather
+ adjustmentEffectiveUntil: 2021-09-12T10:12:42Z
+ position: 5.962133916683182
+ sku: SKU1241028
+ category: shoes
+ prices:
+ member:
+ price: 90
+ adjustmentReferenceId: 68851723-e6fa-488f-ace9-112581e6c19b
+ effectiveFrom: 2025-05-25T00:00:00Z
+ effectiveUntil: 2025-05-30T00:00:00Z
+ base:
+ price: 100
+ height: 0.8008281904610115
+ - remainingQuantity: 1
+ product:
+ name: sample_product
+ quantity: 1
+ returnedQuantity: 1
+ length: 1.4658129805029452
+ weight: 1130.0
+ adjustmentReferenceId: 68851723-e6fa-488f-ace9-112581e6c19b
+ adjustmentEffectiveFrom: 2021-09-12T10:12:42Z
+ catalogItemID: 5
+ additionalCosts:
+ shipping:
+ price: 9
+ price: 99.99
+ selectedPriceType: member
+ name: Air Glide
+ width: 6.027456183070403
+ attributes:
+ image: 11.jpeg
+ material: leather
+ adjustmentEffectiveUntil: 2021-09-12T10:12:42Z
+ position: 5.962133916683182
+ sku: SKU1241028
+ category: shoes
+ prices:
+ member:
+ price: 90
+ adjustmentReferenceId: 68851723-e6fa-488f-ace9-112581e6c19b
+ effectiveFrom: 2025-05-25T00:00:00Z
+ effectiveUntil: 2025-05-30T00:00:00Z
+ base:
+ price: 100
+ height: 0.8008281904610115
+ - coupon: BKDB946
+ created: 2020-02-07T08:15:22Z
+ totalDiscounts: 100.0
+ integrationId: URNGV8294NV
+ profileintegrationid: 382370BKDB946
+ total: 200.0
+ referral: BKDB946
+ discounts:
+ key: 0.8008281904610115
+ storeIntegrationId: STORE-001
+ profileId: 138
+ attributes: '{}'
+ id: 6
+ state: closed
+ applicationId: 322
+ cartItems:
+ - remainingQuantity: 1
+ product:
+ name: sample_product
+ quantity: 1
+ returnedQuantity: 1
+ length: 1.4658129805029452
+ weight: 1130.0
+ adjustmentReferenceId: 68851723-e6fa-488f-ace9-112581e6c19b
+ adjustmentEffectiveFrom: 2021-09-12T10:12:42Z
+ catalogItemID: 5
+ additionalCosts:
+ shipping:
+ price: 9
+ price: 99.99
+ selectedPriceType: member
+ name: Air Glide
+ width: 6.027456183070403
+ attributes:
+ image: 11.jpeg
+ material: leather
+ adjustmentEffectiveUntil: 2021-09-12T10:12:42Z
+ position: 5.962133916683182
+ sku: SKU1241028
+ category: shoes
+ prices:
+ member:
+ price: 90
+ adjustmentReferenceId: 68851723-e6fa-488f-ace9-112581e6c19b
+ effectiveFrom: 2025-05-25T00:00:00Z
+ effectiveUntil: 2025-05-30T00:00:00Z
+ base:
+ price: 100
+ height: 0.8008281904610115
+ - remainingQuantity: 1
+ product:
+ name: sample_product
+ quantity: 1
+ returnedQuantity: 1
+ length: 1.4658129805029452
+ weight: 1130.0
+ adjustmentReferenceId: 68851723-e6fa-488f-ace9-112581e6c19b
+ adjustmentEffectiveFrom: 2021-09-12T10:12:42Z
+ catalogItemID: 5
+ additionalCosts:
+ shipping:
+ price: 9
+ price: 99.99
+ selectedPriceType: member
+ name: Air Glide
+ width: 6.027456183070403
+ attributes:
+ image: 11.jpeg
+ material: leather
+ adjustmentEffectiveUntil: 2021-09-12T10:12:42Z
+ position: 5.962133916683182
+ sku: SKU1241028
+ category: shoes
+ prices:
+ member:
+ price: 90
+ adjustmentReferenceId: 68851723-e6fa-488f-ace9-112581e6c19b
+ effectiveFrom: 2025-05-25T00:00:00Z
+ effectiveUntil: 2025-05-30T00:00:00Z
+ base:
+ price: 100
+ height: 0.8008281904610115
+ hasMore: true
+ totalResultSize: 0
+ properties:
+ hasMore:
+ type: boolean
+ totalResultSize:
+ format: int64
+ type: integer
+ data:
+ items:
+ $ref: '#/components/schemas/ApplicationSession'
+ type: array
+ required:
+ - data
+ inline_response_200_33:
example:
data:
- effects:
@@ -51322,6 +61484,7 @@ components:
effectType: rejectCoupon
adjustmentReferenceId: 68851723-e6fa-488f-ace9-112581e6c19b
props: '{}'
+ rewardId: 7
selectedPrice: 100.0
evaluationGroupID: 3
triggeredForCatalogItem: 786
@@ -51339,6 +61502,7 @@ components:
effectType: rejectCoupon
adjustmentReferenceId: 68851723-e6fa-488f-ace9-112581e6c19b
props: '{}'
+ rewardId: 7
selectedPrice: 100.0
evaluationGroupID: 3
triggeredForCatalogItem: 786
@@ -51350,6 +61514,7 @@ components:
storeIntegrationId: STORE-001
created: 2020-06-10T09:05:27.993483Z
profileId: 138
+ integrationId: 175KJPS947296
attributes: '{}'
id: 6
sessionId: 6
@@ -51357,30 +61522,34 @@ components:
storeId: 0
type: type
ruleFailureReasons:
- - rulesetID: 6
- ruleIndex: 5
- campaignID: 0
- referralID: 1
- conditionIndex: 5
- effectIndex: 2
+ - rulesetID: 7
+ ruleIndex: 3
+ campaignID: 2
+ referralID: 9
+ rewardIntegrationId: 5c0b5e6d-3f8a-4c2b-9f1e-2a7d6b4c8e90
+ conditionIndex: 2
+ effectIndex: 4
evaluationGroupMode: stackable
couponID: 4928
referralValue: referralValue
couponValue: couponValue
+ rewardId: 7
evaluationGroupID: 3
ruleName: ruleName
details: details
campaignName: campaignName
- - rulesetID: 6
- ruleIndex: 5
- campaignID: 0
- referralID: 1
- conditionIndex: 5
- effectIndex: 2
+ - rulesetID: 7
+ ruleIndex: 3
+ campaignID: 2
+ referralID: 9
+ rewardIntegrationId: 5c0b5e6d-3f8a-4c2b-9f1e-2a7d6b4c8e90
+ conditionIndex: 2
+ effectIndex: 4
evaluationGroupMode: stackable
couponID: 4928
referralValue: referralValue
couponValue: couponValue
+ rewardId: 7
evaluationGroupID: 3
ruleName: ruleName
details: details
@@ -51395,6 +61564,7 @@ components:
effectType: rejectCoupon
adjustmentReferenceId: 68851723-e6fa-488f-ace9-112581e6c19b
props: '{}'
+ rewardId: 7
selectedPrice: 100.0
evaluationGroupID: 3
triggeredForCatalogItem: 786
@@ -51412,6 +61582,7 @@ components:
effectType: rejectCoupon
adjustmentReferenceId: 68851723-e6fa-488f-ace9-112581e6c19b
props: '{}'
+ rewardId: 7
selectedPrice: 100.0
evaluationGroupID: 3
triggeredForCatalogItem: 786
@@ -51423,6 +61594,7 @@ components:
storeIntegrationId: STORE-001
created: 2020-06-10T09:05:27.993483Z
profileId: 138
+ integrationId: 175KJPS947296
attributes: '{}'
id: 6
sessionId: 6
@@ -51430,30 +61602,34 @@ components:
storeId: 0
type: type
ruleFailureReasons:
- - rulesetID: 6
- ruleIndex: 5
- campaignID: 0
- referralID: 1
- conditionIndex: 5
- effectIndex: 2
+ - rulesetID: 7
+ ruleIndex: 3
+ campaignID: 2
+ referralID: 9
+ rewardIntegrationId: 5c0b5e6d-3f8a-4c2b-9f1e-2a7d6b4c8e90
+ conditionIndex: 2
+ effectIndex: 4
evaluationGroupMode: stackable
couponID: 4928
referralValue: referralValue
couponValue: couponValue
+ rewardId: 7
evaluationGroupID: 3
ruleName: ruleName
details: details
campaignName: campaignName
- - rulesetID: 6
- ruleIndex: 5
- campaignID: 0
- referralID: 1
- conditionIndex: 5
- effectIndex: 2
+ - rulesetID: 7
+ ruleIndex: 3
+ campaignID: 2
+ referralID: 9
+ rewardIntegrationId: 5c0b5e6d-3f8a-4c2b-9f1e-2a7d6b4c8e90
+ conditionIndex: 2
+ effectIndex: 4
evaluationGroupMode: stackable
couponID: 4928
referralValue: referralValue
couponValue: couponValue
+ rewardId: 7
evaluationGroupID: 3
ruleName: ruleName
details: details
@@ -51469,7 +61645,7 @@ components:
required:
- data
- hasMore
- inline_response_200_33:
+ inline_response_200_34:
example:
data:
- data
@@ -51487,7 +61663,7 @@ components:
required:
- data
- totalResultSize
- inline_response_200_34:
+ inline_response_200_35:
example:
data:
- accountId: 3886
@@ -51495,6 +61671,9 @@ components:
lastUpdate: 2022-04-26T11:02:38Z
name: Travel audience
sandbox: true
+ subscribedApplicationsIds:
+ - 3
+ - 13
integration: mparticle
description: Travel audience 18-27
integrationId: 382370BKDB946
@@ -51505,6 +61684,9 @@ components:
lastUpdate: 2022-04-26T11:02:38Z
name: Travel audience
sandbox: true
+ subscribedApplicationsIds:
+ - 3
+ - 13
integration: mparticle
description: Travel audience 18-27
integrationId: 382370BKDB946
@@ -51525,7 +61707,7 @@ components:
type: array
required:
- data
- inline_response_200_35:
+ inline_response_200_36:
example:
data:
- membersCount: 1234
@@ -51542,7 +61724,7 @@ components:
type: array
required:
- data
- inline_response_200_36:
+ inline_response_200_37:
example:
data:
- accountId: 31
@@ -51597,16 +61779,18 @@ components:
type: array
required:
- data
- inline_response_200_37:
+ inline_response_200_38:
example:
data:
- - friendIntegrationId: friendIntegrationId
+ - advancedEventIntegrationId: advanced_event_1234
+ friendIntegrationId: friendIntegrationId
code: code
created: 2000-01-23T04:56:07.000+00:00
sessionId: sessionId
advocateIntegrationId: advocateIntegrationId
applicationId: 322
- - friendIntegrationId: friendIntegrationId
+ - advancedEventIntegrationId: advanced_event_1234
+ friendIntegrationId: friendIntegrationId
code: code
created: 2000-01-23T04:56:07.000+00:00
sessionId: sessionId
@@ -51627,7 +61811,7 @@ components:
type: array
required:
- data
- inline_response_200_38:
+ inline_response_200_39:
example:
data:
- created: 2020-06-10T09:05:27.993483Z
@@ -51701,7 +61885,7 @@ components:
required:
- data
- totalResultSize
- inline_response_200_39:
+ inline_response_200_40:
example:
data:
- product:
@@ -51749,7 +61933,7 @@ components:
type: array
required:
- data
- inline_response_200_40:
+ inline_response_200_41:
example:
data:
- accountId: 3886
@@ -51785,7 +61969,7 @@ components:
required:
- data
- totalResultSize
- inline_response_200_41:
+ inline_response_200_42:
example:
data:
- headers:
@@ -51843,7 +62027,7 @@ components:
required:
- data
- totalResultSize
- inline_response_200_42:
+ inline_response_200_43:
example:
data:
- created: 2020-06-10T09:05:27.993483Z
@@ -51869,7 +62053,7 @@ components:
required:
- data
- totalResultSize
- inline_response_200_43:
+ inline_response_200_44:
example:
data:
- created: 2020-06-10T09:05:27.993483Z
@@ -51923,7 +62107,7 @@ components:
required:
- data
- totalResultSize
- inline_response_200_44:
+ inline_response_200_45:
example:
data:
- new:
@@ -51975,7 +62159,7 @@ components:
type: array
required:
- data
- inline_response_200_45:
+ inline_response_200_46:
example:
data:
- filter: '{}'
@@ -52003,13 +62187,18 @@ components:
required:
- data
- totalResultSize
- inline_response_200_46:
+ inline_response_200_47:
example:
data:
- accountId: 3886
isReadonly: false
created: 2020-06-10T09:05:27.993483Z
permissions:
+ thresholds:
+ - loyaltyPointsLimit: 100
+ loyaltyProgramId: 8
+ - loyaltyPointsLimit: 100
+ loyaltyProgramId: 8
permissionSets:
- name: Application permission set
logicalOperations:
@@ -52058,6 +62247,11 @@ components:
isReadonly: false
created: 2020-06-10T09:05:27.993483Z
permissions:
+ thresholds:
+ - loyaltyPointsLimit: 100
+ loyaltyProgramId: 8
+ - loyaltyPointsLimit: 100
+ loyaltyProgramId: 8
permissionSets:
- name: Application permission set
logicalOperations:
@@ -52115,7 +62309,7 @@ components:
required:
- data
- totalResultSize
- inline_response_200_47:
+ inline_response_200_48:
example:
data:
- linkedCampaignIds:
@@ -52161,7 +62355,7 @@ components:
type: array
required:
- data
- inline_response_200_48:
+ inline_response_200_49:
example:
data:
- createdBy: 216
@@ -52192,7 +62386,7 @@ components:
type: array
required:
- data
- inline_response_200_49:
+ inline_response_200_50:
example:
data:
- period: period
@@ -52214,7 +62408,7 @@ components:
items:
$ref: '#/components/schemas/ListCampaignStoreBudgets'
type: array
- inline_response_200_50:
+ inline_response_200_51:
example:
data:
- period: overall
@@ -52230,7 +62424,7 @@ components:
items:
$ref: '#/components/schemas/SummaryCampaignStoreBudget'
type: array
- inline_response_200_51:
+ inline_response_200_52:
example:
data:
- period: 1Y
@@ -52289,10 +62483,94 @@ components:
type: array
required:
- data
- inline_response_200_52:
+ inline_response_200_53:
example:
data:
- - endDate: 2000-01-23T04:56:07.000+00:00
+ - referencedByCampaigns:
+ - id: 1
+ applicationId: 2
+ - id: 1
+ applicationId: 2
+ period: 1Y
+ endDate: 2024-01-15T15:04:05+07:00
+ created: 2020-06-10T09:05:27.993483Z
+ timezone: Europe/Berlin
+ campaignId: 3
+ sandbox: true
+ description: 50% off for every 50th purchase in a year.
+ activationPolicy: fixed_schedule
+ title: 50% off on 50th purchase.
+ allowRollbackAfterCompletion: false
+ userId: 1234
+ hasProgress: true
+ target: 50.0
+ subscribedApplications:
+ - 132
+ - 97
+ fixedStartDate: 2024-01-15T15:04:05+07:00
+ createdBy: John Doe
+ name: Order50Discount
+ periodEndOverride:
+ month: 11
+ dayOfMonth: 23
+ hour: 23
+ minute: 59
+ second: 59
+ id: 6
+ recurrencePolicy: no_recurrence
+ status: active
+ - referencedByCampaigns:
+ - id: 1
+ applicationId: 2
+ - id: 1
+ applicationId: 2
+ period: 1Y
+ endDate: 2024-01-15T15:04:05+07:00
+ created: 2020-06-10T09:05:27.993483Z
+ timezone: Europe/Berlin
+ campaignId: 3
+ sandbox: true
+ description: 50% off for every 50th purchase in a year.
+ activationPolicy: fixed_schedule
+ title: 50% off on 50th purchase.
+ allowRollbackAfterCompletion: false
+ userId: 1234
+ hasProgress: true
+ target: 50.0
+ subscribedApplications:
+ - 132
+ - 97
+ fixedStartDate: 2024-01-15T15:04:05+07:00
+ createdBy: John Doe
+ name: Order50Discount
+ periodEndOverride:
+ month: 11
+ dayOfMonth: 23
+ hour: 23
+ minute: 59
+ second: 59
+ id: 6
+ recurrencePolicy: no_recurrence
+ status: active
+ hasMore: true
+ properties:
+ hasMore:
+ type: boolean
+ data:
+ items:
+ $ref: '#/components/schemas/AchievementV2'
+ type: array
+ required:
+ - data
+ inline_response_200_54:
+ example:
+ data:
+ - referencedByCampaigns:
+ - id: 1
+ applicationId: 2
+ - id: 1
+ applicationId: 2
+ endDate: 2000-01-23T04:56:07.000+00:00
achievementAllowRollbackAfterCompletion: false
campaignId: 3
achievementId: 3
@@ -52306,9 +62584,18 @@ components:
achievementEndDate: 2000-01-23T04:56:07.000+00:00
progress: 10.0
completionDate: 2000-01-23T04:56:07.000+00:00
+ campaignIds:
+ - 1
+ - 14
+ - 27
startDate: 2000-01-23T04:56:07.000+00:00
status: completed
- - endDate: 2000-01-23T04:56:07.000+00:00
+ - referencedByCampaigns:
+ - id: 1
+ applicationId: 2
+ - id: 1
+ applicationId: 2
+ endDate: 2000-01-23T04:56:07.000+00:00
achievementAllowRollbackAfterCompletion: false
campaignId: 3
achievementId: 3
@@ -52322,6 +62609,10 @@ components:
achievementEndDate: 2000-01-23T04:56:07.000+00:00
progress: 10.0
completionDate: 2000-01-23T04:56:07.000+00:00
+ campaignIds:
+ - 1
+ - 14
+ - 27
startDate: 2000-01-23T04:56:07.000+00:00
status: completed
hasMore: true
@@ -52336,7 +62627,7 @@ components:
required:
- data
- hasMore
- inline_response_200_53:
+ inline_response_200_55:
example:
data:
- summary: Session total was less than the required total.
@@ -52366,6 +62657,155 @@ components:
type: array
required:
- data
+ inline_response_200_56_catalog:
+ description: The paginated rewards catalog.
+ example:
+ data:
+ - name: 10% Off Coupon
+ pointsRequired:
+ - amount: 500.0
+ subledgerId: mysubledger
+ loyaltyProgramId: 10
+ id: 1
+ - amount: 500.0
+ subledgerId: mysubledger
+ loyaltyProgramId: 10
+ id: 1
+ description: Applies to next order
+ rule:
+ displayDescription: Get a 20% discount on all shoes during Thanksgiving!
+ Offer valid till Dec 5 only.
+ displayName: 20% off all shoes!
+ relatedData: https://example.com/discounts/20-off-shoes.png
+ title: Give discount via coupon
+ eligibility:
+ details:
+ - failureCode: CONDITION_NOT_MET
+ conditionIndex: 0
+ - failureCode: CONDITION_NOT_MET
+ conditionIndex: 0
+ passed: true
+ id: 42
+ - name: 10% Off Coupon
+ pointsRequired:
+ - amount: 500.0
+ subledgerId: mysubledger
+ loyaltyProgramId: 10
+ id: 1
+ - amount: 500.0
+ subledgerId: mysubledger
+ loyaltyProgramId: 10
+ id: 1
+ description: Applies to next order
+ rule:
+ displayDescription: Get a 20% discount on all shoes during Thanksgiving!
+ Offer valid till Dec 5 only.
+ displayName: 20% off all shoes!
+ relatedData: https://example.com/discounts/20-off-shoes.png
+ title: Give discount via coupon
+ eligibility:
+ details:
+ - failureCode: CONDITION_NOT_MET
+ conditionIndex: 0
+ - failureCode: CONDITION_NOT_MET
+ conditionIndex: 0
+ passed: true
+ id: 42
+ hasMore: true
+ properties:
+ hasMore:
+ description: Whether more pages exist after the current one.
+ type: boolean
+ data:
+ items:
+ $ref: '#/components/schemas/RewardCatalogItem'
+ type: array
+ required:
+ - data
+ - hasMore
+ inline_response_200_56:
+ example:
+ catalog:
+ data:
+ - name: 10% Off Coupon
+ pointsRequired:
+ - amount: 500.0
+ subledgerId: mysubledger
+ loyaltyProgramId: 10
+ id: 1
+ - amount: 500.0
+ subledgerId: mysubledger
+ loyaltyProgramId: 10
+ id: 1
+ description: Applies to next order
+ rule:
+ displayDescription: Get a 20% discount on all shoes during Thanksgiving!
+ Offer valid till Dec 5 only.
+ displayName: 20% off all shoes!
+ relatedData: https://example.com/discounts/20-off-shoes.png
+ title: Give discount via coupon
+ eligibility:
+ details:
+ - failureCode: CONDITION_NOT_MET
+ conditionIndex: 0
+ - failureCode: CONDITION_NOT_MET
+ conditionIndex: 0
+ passed: true
+ id: 42
+ - name: 10% Off Coupon
+ pointsRequired:
+ - amount: 500.0
+ subledgerId: mysubledger
+ loyaltyProgramId: 10
+ id: 1
+ - amount: 500.0
+ subledgerId: mysubledger
+ loyaltyProgramId: 10
+ id: 1
+ description: Applies to next order
+ rule:
+ displayDescription: Get a 20% discount on all shoes during Thanksgiving!
+ Offer valid till Dec 5 only.
+ displayName: 20% off all shoes!
+ relatedData: https://example.com/discounts/20-off-shoes.png
+ title: Give discount via coupon
+ eligibility:
+ details:
+ - failureCode: CONDITION_NOT_MET
+ conditionIndex: 0
+ - failureCode: CONDITION_NOT_MET
+ conditionIndex: 0
+ passed: true
+ id: 42
+ hasMore: true
+ loyalty:
+ key:
+ balance:
+ negativePoints: 286.0
+ activePoints: 286.0
+ spentPoints: 150.0
+ expiredPoints: 286.0
+ pendingPoints: 50.0
+ subledgerBalances:
+ mysubledger:
+ activePoints: 286
+ pendingPoints: 50
+ spentPoints: 150
+ expiredPoints: 25
+ negativePoints: 0
+ properties:
+ catalog:
+ $ref: '#/components/schemas/inline_response_200_56_catalog'
+ loyalty:
+ additionalProperties:
+ $ref: '#/components/schemas/LoyaltyBalances'
+ description: |
+ The customer's loyalty balances for the specified loyalty program.
+ Returned only when `loyaltyProgramId` is provided together with
+ `profileIntegrationId` or `loyaltyCardId`.
+ type: object
+ required:
+ - catalog
GenerateRuleTitle_rule:
properties:
effects:
@@ -52397,6 +62837,297 @@ components:
type: object
minItems: 1
type: array
+ TriggerWebhookBlock_webhook:
+ description: The webhook to trigger.
+ properties:
+ id:
+ description: The unique identifier of the webhook.
+ example: 1
+ format: int64
+ type: integer
+ title:
+ description: The display name of the webhook.
+ example: Thank you for your order.
+ type: string
+ required:
+ - id
+ - title
+ CheckAudienceBlock_audience:
+ description: The audience to check the profile against.
+ properties:
+ id:
+ description: The ID of the audience.
+ example: 42
+ format: int64
+ type: integer
+ name:
+ description: The display name of the audience.
+ example: Travel audience
+ type: string
+ integration:
+ description: |
+ The Talon.One-supported [3rd-party platform](https://docs.talon.one/docs/dev/technology-partners/overview) that this audience was created in.
+
+ For example, `mParticle`, `Segment`, `Shopify`, `Braze`, or `Iterable`.
+
+ **Note:** If you do not integrate with any of these platforms, do not use this property.
+ example: mparticle
+ type: string
+ integrationId:
+ description: |
+ The ID of this audience in the third-party integration.
+
+ **Note:** To create an audience that doesn't come from a 3rd party platform, do not use this property.
+ example: 382370BKDB946
+ type: string
+ required:
+ - id
+ - name
+ CheckLoyaltyBalanceBlock_program:
+ description: The loyalty program whose ledger balance is checked.
+ properties:
+ id:
+ description: The ID of the loyalty program.
+ example: 10
+ format: int64
+ type: integer
+ name:
+ description: The internal name of the loyalty program.
+ example: MainProgram
+ type: string
+ title:
+ description: The display name of the loyalty program.
+ example: Main Loyalty Program
+ type: string
+ required:
+ - id
+ - name
+ - title
+ UpdateAudienceMembershipBlock_audience:
+ description: The audience to add the customer to or remove them from.
+ properties:
+ id:
+ description: The ID of the audience.
+ example: 42
+ format: int64
+ type: integer
+ name:
+ description: The display name of the audience.
+ example: Travel audience
+ type: string
+ integration:
+ description: |
+ The Talon.One-supported [3rd-party platform](https://docs.talon.one/docs/dev/technology-partners/overview) that this audience was created in.
+
+ For example, `mParticle`, `Segment`, `Shopify`, `Braze`, or `Iterable`.
+
+ **Note:** If you do not integrate with any of these platforms, do not use this property.
+ example: mparticle
+ type: string
+ integrationId:
+ description: |
+ The ID of this audience in the third-party integration.
+
+ **Note:** To create an audience that doesn't come from a 3rd party platform, do not use this property.
+ example: 382370BKDB946
+ type: string
+ required:
+ - id
+ - name
+ UpdateAchievementProgressBlock_achievement:
+ description: The achievement to update.
+ properties:
+ id:
+ description: The ID of the achievement.
+ example: 42
+ format: int64
+ type: integer
+ name:
+ description: The internal name of the achievement used in API requests.
+ example: Order50Discount
+ type: string
+ title:
+ description: The display name of the achievement in the Campaign Manager.
+ example: 50% off on 50th purchase.
+ type: string
+ target:
+ description: The required number of actions or the transactional milestone
+ to complete the achievement.
+ example: 50.0
+ type: number
+ required:
+ - id
+ - name
+ - target
+ - title
+ UpdateAttributeValueBlock_attribute:
+ description: The attribute being updated.
+ properties:
+ id:
+ description: The internal ID of the attribute. Reverts to `0` when the attribute
+ is deleted or does not exist.
+ example: 100
+ format: int64
+ type: integer
+ entity:
+ description: The entity type that owns the attribute. Reverts to an empty
+ string when the attribute is deleted or does not exist.
+ example: profile
+ type: string
+ name:
+ description: The attribute name as used in API requests.
+ example: City
+ type: string
+ title:
+ description: The human-readable name of the attribute.
+ example: City
+ type: string
+ type:
+ description: The data type of the attribute.
+ example: string
+ type: string
+ required:
+ - entity
+ - id
+ - name
+ - title
+ - type
+ UpdateAttributeValueBlock_target:
+ description: The entity or item scope that this effect operates on.
+ properties:
+ type:
+ description: Identifies the target scope of the attribute update.
+ enum:
+ - session
+ - profile
+ - advocateProfile
+ - coupon
+ - referral
+ - event
+ - loyaltyCard
+ - allItems
+ - selector
+ - globalFilter
+ example: profile
+ type: string
+ name:
+ description: Identifies the name of the target when its type is set to `selector`
+ or `globalFilter`.
+ example: Filter items by product
+ type: string
+ required:
+ - type
+ TriggerCustomEffectBlock_customEffect:
+ description: The custom effect to trigger.
+ properties:
+ id:
+ description: The unique identifier of the custom effect.
+ example: 1
+ format: int64
+ type: integer
+ name:
+ description: The name of the custom effect, as used in API requests.
+ example: sendEmail
+ type: string
+ title:
+ description: The display name of the custom effect.
+ example: Send email
+ type: string
+ required:
+ - id
+ - name
+ - title
+ TriggerCustomEffectBlock_target:
+ description: The target scope of this effect.
+ properties:
+ type:
+ description: 'The scope the custom effect applies to: - `cart` applies once
+ to the whole cart. - `allItems` applies once per cart item. - `selector`
+ applies once per item matched by the named selector. - `globalFilter`
+ applies once per item matched by the named global item filter. - `bundle`
+ applies once per item in the named bundle.'
+ enum:
+ - cart
+ - allItems
+ - selector
+ - globalFilter
+ - bundle
+ example: cart
+ type: string
+ name:
+ description: The name of the targeted selector or bundle. Only set when
+ `type` is `selector`, `globalFilter`, or `bundle`.
+ example: giftBundle
+ type: string
+ required:
+ - type
+ CheckAchievementBlock_achievement:
+ description: The achievement to check for.
+ properties:
+ id:
+ description: The ID of the achievement.
+ example: 42
+ format: int64
+ type: integer
+ title:
+ description: The display name for the achievement in the Campaign Manager.
+ example: 50% off on 50th purchase.
+ type: string
+ name:
+ description: The internal name of the achievement used in API requests.
+ example: Order50Discount
+ type: string
+ target:
+ description: The required number of actions or the transactional milestone
+ to complete the achievement.
+ example: 50.0
+ type: number
+ required:
+ - id
+ - name
+ - target
+ - title
+ CheckTierBlock_tier:
+ properties:
+ id:
+ description: The ID of the tier.
+ example: 42
+ format: int64
+ type: integer
+ name:
+ description: The display name of the tier.
+ example: Bronze
+ type: string
+ minPoints:
+ description: The minimum amount of points required to enter the tier.
+ example: 150.0
+ type: number
+ upperLimit:
+ type: number
+ required:
+ - id
+ - minPoints
+ - name
+ RedeemLoyaltyPointsBlock_program:
+ description: The loyalty program whose balance points are deducted from.
+ properties:
+ id:
+ description: The ID of the loyalty program.
+ example: 10
+ format: int64
+ type: integer
+ name:
+ description: The internal name of the loyalty program.
+ example: MainProgram
+ type: string
+ title:
+ description: The display name of the loyalty program.
+ example: Main Loyalty Program
+ type: string
+ required:
+ - id
+ - name
+ - title
ExperimentCopy_experiment:
properties:
isVariantAssignmentExternal:
@@ -52405,11 +63136,24 @@ components:
type: boolean
campaign:
$ref: '#/components/schemas/ExperimentCampaignCopy'
+ goalType:
+ description: |
+ The goal of the experiment. Determines which single metric is used to decide the winning variant. When set to `other`, multiple metrics are used. If omitted, the value from the source experiment is used.
+ enum:
+ - other
+ - maximize_revenue
+ - maximize_items_sold
+ - optimize_discount_efficiency
+ type: string
+ goalDescription:
+ description: |
+ A description of the experiment goal. Provides context for the AI summary and helps it interpret the outcome of the experiment against the stated goal. If omitted, the value from the source experiment is used.
+ type: string
required:
- campaign
- isVariantAssignmentExternal
ScimBaseUser_name:
- description: The components of the user’s real name.
+ description: The components of the user's real name.
example:
formatted: Mr. John J Doe
properties:
@@ -52546,7 +63290,7 @@ components:
**Management API Keys**.
1. Click **Create Key** and give it a name.
1. Set an expiration date.
- > [!tip] Avoid choosing expiration dates that fall at the end of the year or during other high-traffic periods.
+ **Tip**: Avoid choosing expiration dates that fall at the end of the year or during other high-traffic periods.
1. Choose the endpoints the key should give access to.
1. Click **Create Key**.
1. Share it with your developer.
diff --git a/build.gradle b/build.gradle
index a9e02026..a3d5461c 100644
--- a/build.gradle
+++ b/build.gradle
@@ -3,7 +3,7 @@ apply plugin: 'eclipse'
apply plugin: 'java'
group = 'one.talon'
-version = '15.0.0'
+version = '16.0.0'
buildscript {
repositories {
diff --git a/build.sbt b/build.sbt
index cdbff8ee..6deb10b5 100644
--- a/build.sbt
+++ b/build.sbt
@@ -2,7 +2,7 @@ lazy val root = (project in file(".")).
settings(
organization := "one.talon",
name := "talon-one-client",
- version := "15.0.0",
+ version := "16.0.0",
scalaVersion := "2.11.4",
scalacOptions ++= Seq("-feature"),
javacOptions in compile ++= Seq("-Xlint:deprecation"),
diff --git a/docs/AcceptCouponEffectProps.md b/docs/AcceptCouponEffectProps.md
index ca3a5467..6e2659e7 100644
--- a/docs/AcceptCouponEffectProps.md
+++ b/docs/AcceptCouponEffectProps.md
@@ -2,7 +2,7 @@
# AcceptCouponEffectProps
-The properties specific to the \"acceptCoupon\" effect. This gets triggered whenever the coupon is valid and all other conditions in the rules of its campaign are met.
+This effect indicates that the coupon code supplied was valid. You should handle this effect by clearing any messages from previous `rejectCoupon` effects and informing the user that the coupon is valid. The code is automatically redeemed when you close the session. Other effects, such as [setDiscount](https://docs.talon.one/docs/dev/integration-api/api-effects#setdiscount), provide more information about the actual rewards received.
## Properties
Name | Type | Description | Notes
diff --git a/docs/AcceptReferralEffectProps.md b/docs/AcceptReferralEffectProps.md
index d08f2556..bd3510e8 100644
--- a/docs/AcceptReferralEffectProps.md
+++ b/docs/AcceptReferralEffectProps.md
@@ -2,12 +2,12 @@
# AcceptReferralEffectProps
-The properties specific to the \"acceptReferral\" effect. TThis gets triggered whenever the referral code is valid and all other conditions in the rules of its campaign are met.
+This effect indicates that the referral code supplied is valid. You should handle this effect by informing the user that the referral code is valid. The code is automatically redeemed when you close the session. Other effects will provide more information about the actual reward.
## Properties
Name | Type | Description | Notes
------------ | ------------- | ------------- | -------------
-**value** | **String** | The referral code that was accepted. |
+**value** | **String** | The referral code provided in the session. |
diff --git a/docs/AchievementAdditionalPropertiesV2.md b/docs/AchievementAdditionalPropertiesV2.md
index 75423b6e..78cd0322 100644
--- a/docs/AchievementAdditionalPropertiesV2.md
+++ b/docs/AchievementAdditionalPropertiesV2.md
@@ -8,8 +8,9 @@ Name | Type | Description | Notes
------------ | ------------- | ------------- | -------------
**userId** | **Long** | The ID of the user that created this achievement. |
**createdBy** | **String** | Name of the user that created the achievement. **Note**: This is not available if the user has been deleted. | [optional]
+**periodEndOverride** | [**TimePoint**](TimePoint.md) | | [optional]
**hasProgress** | **Boolean** | Indicates if a customer has made progress in the achievement. | [optional]
-**status** | [**StatusEnum**](#StatusEnum) | The status of the achievement. | [optional]
+**status** | [**StatusEnum**](#StatusEnum) | The status of the achievement. - `active`: The achievement is available to customers. - `scheduled`: The achievement has a `fixedStartDate` set in the future. - `expired`: The achievement's `endDate` is in the past. | [optional]
@@ -17,10 +18,9 @@ Name | Type | Description | Notes
Name | Value
---- | -----
-INPROGRESS | "inprogress"
+ACTIVE | "active"
+SCHEDULED | "scheduled"
EXPIRED | "expired"
-NOT_STARTED | "not_started"
-COMPLETED | "completed"
diff --git a/docs/AchievementBaseV2.md b/docs/AchievementBaseV2.md
index ea809321..f8042bdf 100644
--- a/docs/AchievementBaseV2.md
+++ b/docs/AchievementBaseV2.md
@@ -16,9 +16,7 @@ Name | Type | Description | Notes
**fixedStartDate** | [**OffsetDateTime**](OffsetDateTime.md) | The achievement's start date when `activationPolicy` is set to `fixed_schedule`. **Note:** It must be an RFC3339 timestamp string. | [optional]
**endDate** | [**OffsetDateTime**](OffsetDateTime.md) | The achievement's end date. If defined, customers cannot participate in the achievement after this date. **Note:** It must be an RFC3339 timestamp string. | [optional]
**allowRollbackAfterCompletion** | **Boolean** | When `true`, customer progress can be rolled back in completed achievements. | [optional]
-**sandbox** | **Boolean** | Indicates if this achievement is a live or sandbox achievement. Achievements of a given type can only be connected to Applications of the same type. | [optional]
**subscribedApplications** | **List<Long>** | A list containing the IDs of all applications that are subscribed to A list containing the IDs of all Applications that are connected to this achievement. | [optional]
-**timezone** | **String** | A string containing an IANA timezone descriptor. | [optional]
diff --git a/docs/AchievementProgressWithDefinition.md b/docs/AchievementProgressWithDefinition.md
index 303337cd..8793de39 100644
--- a/docs/AchievementProgressWithDefinition.md
+++ b/docs/AchievementProgressWithDefinition.md
@@ -16,7 +16,9 @@ Name | Type | Description | Notes
**name** | **String** | The internal name of the achievement used in API requests. |
**title** | **String** | The display name of the achievement in the Campaign Manager. |
**description** | **String** | The description of the achievement in the Campaign Manager. |
-**campaignId** | **Long** | The ID of the campaign the achievement belongs to. |
+**campaignId** | **Long** | This property is **deprecated**. Use `campaignIds` (Integration API) or `referencedByCampaigns` (Management API) instead. This field contains the first campaign ID from the related `campaignIds`, and is omitted when `campaignIds` is empty. | [optional]
+**campaignIds** | **List<Long>** | The IDs of the campaigns that reference this achievement, in ascending order. |
+**referencedByCampaigns** | [**List<CampaignReference>**](CampaignReference.md) | The campaigns that reference this achievement, in ascending order of their `id`. |
**target** | [**BigDecimal**](BigDecimal.md) | The required number of actions or the transactional milestone to complete the achievement. | [optional]
**achievementRecurrencePolicy** | [**AchievementRecurrencePolicyEnum**](#AchievementRecurrencePolicyEnum) | The policy that determines if and how the achievement recurs. - `no_recurrence`: The achievement can be completed only once. - `on_expiration`: The achievement resets after it expires and becomes available again. - `on_completion`: When the customer progress status reaches `completed`, the achievement resets and becomes available again. |
**achievementActivationPolicy** | [**AchievementActivationPolicyEnum**](#AchievementActivationPolicyEnum) | The policy that determines how the achievement starts, ends, or resets. - `user_action`: The achievement ends or resets relative to when the customer started the achievement. - `fixed_schedule`: The achievement starts, ends, or resets for all customers following a fixed schedule. |
diff --git a/docs/AchievementReference.md b/docs/AchievementReference.md
index 22d45e05..676d095e 100644
--- a/docs/AchievementReference.md
+++ b/docs/AchievementReference.md
@@ -10,6 +10,18 @@ Name | Type | Description | Notes
**applicationId** | **Long** | The ID of the Application associated with the campaign that references this achievement. |
**applicationName** | **String** | The name of the Application associated with the campaign that references this achievement. |
**campaignId** | **Long** | The ID of the campaign that references this achievement. |
+**campaignName** | **String** | The name of the campaign that references this achievement. |
+**campaignState** | [**CampaignStateEnum**](#CampaignStateEnum) | The state of the campaign that references this achievement. |
+
+
+
+## Enum: CampaignStateEnum
+
+Name | Value
+---- | -----
+ENABLED | "enabled"
+DISABLED | "disabled"
+ARCHIVED | "archived"
diff --git a/docs/AchievementStatusEntry.md b/docs/AchievementStatusEntry.md
index fc91bb03..14fb9946 100644
--- a/docs/AchievementStatusEntry.md
+++ b/docs/AchievementStatusEntry.md
@@ -19,7 +19,8 @@ Name | Type | Description | Notes
**fixedStartDate** | [**OffsetDateTime**](OffsetDateTime.md) | The achievement's start date when `activationPolicy` is set to `fixed_schedule`. **Note:** It must be an RFC3339 timestamp string. | [optional]
**endDate** | [**OffsetDateTime**](OffsetDateTime.md) | The achievement's end date. If defined, customers cannot participate in the achievement after this date. **Note:** It must be an RFC3339 timestamp string. | [optional]
**allowRollbackAfterCompletion** | **Boolean** | When `true`, customer progress can be rolled back in completed achievements. | [optional]
-**campaignId** | **Long** | The ID of the campaign the achievement belongs to. | [optional]
+**campaignId** | **Long** | This property is **deprecated**. Use `referencedByCampaigns` instead. This field contains the first campaign ID from the related `referencedByCampaigns`, and is omitted when `referencedByCampaigns` is empty. | [optional]
+**campaignIds** | **List<Long>** | The IDs of the campaigns that reference this achievement, in ascending order. | [optional]
**status** | [**StatusEnum**](#StatusEnum) | The status of the achievement. | [optional]
**currentProgress** | [**AchievementProgress**](AchievementProgress.md) | | [optional]
diff --git a/docs/AchievementV2.md b/docs/AchievementV2.md
index 2503a54f..50d4fe4e 100644
--- a/docs/AchievementV2.md
+++ b/docs/AchievementV2.md
@@ -18,13 +18,16 @@ Name | Type | Description | Notes
**fixedStartDate** | [**OffsetDateTime**](OffsetDateTime.md) | The achievement's start date when `activationPolicy` is set to `fixed_schedule`. **Note:** It must be an RFC3339 timestamp string. | [optional]
**endDate** | [**OffsetDateTime**](OffsetDateTime.md) | The achievement's end date. If defined, customers cannot participate in the achievement after this date. **Note:** It must be an RFC3339 timestamp string. | [optional]
**allowRollbackAfterCompletion** | **Boolean** | When `true`, customer progress can be rolled back in completed achievements. | [optional]
-**sandbox** | **Boolean** | Indicates if this achievement is a live or sandbox achievement. Achievements of a given type can only be connected to Applications of the same type. |
**subscribedApplications** | **List<Long>** | A list containing the IDs of all applications that are subscribed to A list containing the IDs of all Applications that are connected to this achievement. |
-**timezone** | **String** | A string containing an IANA timezone descriptor. |
**userId** | **Long** | The ID of the user that created this achievement. |
**createdBy** | **String** | Name of the user that created the achievement. **Note**: This is not available if the user has been deleted. | [optional]
+**periodEndOverride** | [**TimePoint**](TimePoint.md) | | [optional]
**hasProgress** | **Boolean** | Indicates if a customer has made progress in the achievement. | [optional]
-**status** | [**StatusEnum**](#StatusEnum) | The status of the achievement. | [optional]
+**status** | [**StatusEnum**](#StatusEnum) | The status of the achievement. - `active`: The achievement is available to customers. - `scheduled`: The achievement has a `fixedStartDate` set in the future. - `expired`: The achievement's `endDate` is in the past. | [optional]
+**sandbox** | **Boolean** | Indicates if this achievement is a live or sandbox achievement. Achievements of a given type can only be connected to Applications of the same type. |
+**timezone** | **String** | A string containing an IANA timezone descriptor. |
+**campaignId** | **Long** | This property is **deprecated**. Use `referencedByCampaigns` instead. This field contains the first campaign ID from the related `referencedByCampaigns`, and is omitted when `referencedByCampaigns` is empty. | [optional]
+**referencedByCampaigns** | [**List<CampaignReference>**](CampaignReference.md) | The campaigns that reference this achievement. They are sorted in ascending order by their id. |
@@ -51,10 +54,9 @@ FIXED_SCHEDULE | "fixed_schedule"
Name | Value
---- | -----
-INPROGRESS | "inprogress"
+ACTIVE | "active"
+SCHEDULED | "scheduled"
EXPIRED | "expired"
-NOT_STARTED | "not_started"
-COMPLETED | "completed"
diff --git a/docs/AddFreeItemEffectProps.md b/docs/AddFreeItemEffectProps.md
index 602629d9..f6d6f59e 100644
--- a/docs/AddFreeItemEffectProps.md
+++ b/docs/AddFreeItemEffectProps.md
@@ -2,13 +2,13 @@
# AddFreeItemEffectProps
-The properties specific to the \"addFreeItem\" effect. This gets triggered whenever a validated rule contained an \"add free item\" effect.
+This effect indicates that a free item should be added to the shopping cart in the current session. In this example, add the SKU to the shopping cart and set its price to `0`. The effect of a successful referral can mean a free item for someone else, such as the referrer.
## Properties
Name | Type | Description | Notes
------------ | ------------- | ------------- | -------------
**sku** | **String** | SKU of the item that needs to be added. |
-**name** | **String** | The name / description of the effect |
+**name** | **String** | Description of the effect. |
**desiredQuantity** | **Long** | The original quantity in case a partial reward was applied. | [optional]
diff --git a/docs/AddLoyaltyPointsEffectProps.md b/docs/AddLoyaltyPointsEffectProps.md
index 3c729023..51d8ed23 100644
--- a/docs/AddLoyaltyPointsEffectProps.md
+++ b/docs/AddLoyaltyPointsEffectProps.md
@@ -2,27 +2,27 @@
# AddLoyaltyPointsEffectProps
-The properties specific to the \"addLoyaltyPoints\" effect. This gets triggered whenever a validated rule contained an \"add loyalty\" effect. These points are automatically stored and managed inside Talon.One.
+This effect indicates that a defined amount of loyalty points was successfully added to the customer's profile or to a loyalty card. If you use the [Add loyalty points per item effect](https://docs.talon.one/docs/product/rules/effects/available-effects#reward-effects), use the `cartItemPosition` property to identify which item to add the loyalty points for. Enabling [partial rewards](https://docs.talon.one/docs/product/applications/manage-general-settings#partial-rewards) allows a rule that would fail because of insufficient budget to pass. The rule still fails when the budget reaches 0. Use the `desiredValue` property to identify the original amount of loyalty points. If you use **Add loyalty points per item** and if the session contains some cart items with _quantity > 1_, use the `cartItemSubPosition` property to identify the item unit in its line item. See the example below for more information. If your list of cart items is a [bundle definition](https://docs.talon.one/docs/product/rules/create-and-manage-bundles), use the `bundleIndex` and `bundleName` properties to identify the bundle containing the items for which loyalty points are added. If you have set custom activation and expiration dates for the loyalty points, use the `startDate` and `expiryDate` properties to identify when the reward will be active and when will expire. If the loyalty program is [profile-based](https://docs.talon.one/docs/product/loyalty-programs/overview#loyalty-program-types), use the `recipientIntegrationId` property to identify the user who receives the loyalty points. If the loyalty program is [card-based](https://docs.talon.one/docs/product/loyalty-programs/overview#loyalty-program-types), use the `cardIdentifier` property to identify the loyalty card on which these points are added. The points only persist when the session is closed.
## Properties
Name | Type | Description | Notes
------------ | ------------- | ------------- | -------------
-**name** | **String** | The name / description of this loyalty point addition. |
+**name** | **String** | The reason of this loyalty point addition. |
**programId** | **Long** | The ID of the loyalty program where these points were added. |
**subLedgerId** | **String** | The ID of the subledger within the loyalty program where these points were added. |
**value** | [**BigDecimal**](BigDecimal.md) | The amount of points that were added. |
-**desiredValue** | [**BigDecimal**](BigDecimal.md) | The original amount of loyalty points to be awarded. | [optional]
+**desiredValue** | [**BigDecimal**](BigDecimal.md) | (Partial rewards enabled only) The amount of loyalty points to be awarded without considering budget limitations. | [optional]
**recipientIntegrationId** | **String** | The user for whom these points were added. |
-**startDate** | [**OffsetDateTime**](OffsetDateTime.md) | Date after which points will be valid. | [optional]
-**expiryDate** | [**OffsetDateTime**](OffsetDateTime.md) | Date after which points will expire. | [optional]
-**transactionUUID** | **String** | The identifier of this addition in the loyalty ledger. |
-**cartItemPosition** | [**BigDecimal**](BigDecimal.md) | The index of the item in the cart items list on which the loyal points addition should be applied. | [optional]
-**cartItemSubPosition** | [**BigDecimal**](BigDecimal.md) | For cart items with `quantity` > 1, the sub position indicates to which item the loyalty points addition is applied. | [optional]
+**startDate** | [**OffsetDateTime**](OffsetDateTime.md) | The date after which the added points will be valid. | [optional]
+**expiryDate** | [**OffsetDateTime**](OffsetDateTime.md) | The date after which the added points will expire. | [optional]
+**transactionUUID** | **String** | The identifier of this loyalty point transaction. |
+**cartItemPosition** | [**BigDecimal**](BigDecimal.md) | (_Add points per cart item_ only.) The index of the item in the `cartItem` object for which these points were added. | [optional]
+**cartItemSubPosition** | [**BigDecimal**](BigDecimal.md) | (_Add points per cart item_ ) The index of the item unit in its line item. | [optional]
**cardIdentifier** | **String** | The identifier of the loyalty card, which must match the regular expression `^[A-Za-z0-9._%+@-]+$`. | [optional]
-**bundleIndex** | **Long** | The position of the bundle in a list of item bundles created from the same bundle definition. | [optional]
-**bundleName** | **String** | The name of the bundle definition. | [optional]
-**awaitsActivation** | **Boolean** | If `true`, the loyalty points remain pending until a specific action is complete. The `startDate` parameter automatically sets to `on_action`. | [optional]
-**validityDuration** | **String** | The duration for which the points remain active, calculated relative to the activation date. **Note**: This value is returned only if `awaitsActivation` is `true` and `expiryDate` is not set. | [optional]
+**bundleIndex** | **Long** | _(With bundles only)_ The position of the specific bundle in the list of bundles created from the same bundle definition. | [optional]
+**bundleName** | **String** | _(With bundles only)_ The name of the bundle definition. | [optional]
+**awaitsActivation** | **Boolean** | Indicates whether the points have an action-based start date. This property is returned only for point transactions with an action-based start date. | [optional]
+**validityDuration** | **String** | The duration for which the points remain active, calculated relative to their start date. | [optional]
diff --git a/docs/AddLoyaltyPointsSupport.md b/docs/AddLoyaltyPointsSupport.md
new file mode 100644
index 00000000..4d7aed9e
--- /dev/null
+++ b/docs/AddLoyaltyPointsSupport.md
@@ -0,0 +1,22 @@
+
+
+# AddLoyaltyPointsSupport
+
+Points to add via the support portal.
+## Properties
+
+Name | Type | Description | Notes
+------------ | ------------- | ------------- | -------------
+**points** | [**BigDecimal**](BigDecimal.md) | Amount of loyalty points. |
+**name** | **String** | Name / reason for the point addition. | [optional]
+**validityDuration** | **String** | The time format is either: - `unlimited` or, - an **integer** followed by one letter indicating the time unit. Examples: `unlimited`, `30s`, `40m`, `1h`, `5D`, `7W`, `10M`, `15Y`. Available units: - `s`: seconds - `m`: minutes - `h`: hours - `D`: days - `W`: weeks - `M`: months - `Y`: years You can round certain units up or down: - `_D` for rounding down days only. Signifies the start of the day. - `_U` for rounding up days, weeks, months and years. Signifies the end of the day, week, month or year. If passed, `validUntil` should be omitted. | [optional]
+**validUntil** | [**OffsetDateTime**](OffsetDateTime.md) | Date and time when points should expire. The value should be provided in RFC 3339 format. If passed, `validityDuration` should be omitted. | [optional]
+**pendingDuration** | **String** | The amount of time before the points are considered valid. The time format is either: - `immediate` or, - `on_action` or, - an **integer** followed by one letter indicating the time unit. Examples: `immediate`, `30s`, `40m`, `1h`, `5D`, `7W`, `10M`, `15Y`, `on_action`. Available units: - `s`: seconds - `m`: minutes - `h`: hours - `D`: days - `W`: weeks - `M`: months - `Y`: years You can round certain units up or down: - `_D` for rounding down days only. Signifies the start of the day. - `_U` for rounding up days, weeks, months and years. Signifies the end of the day, week, month or year. | [optional]
+**pendingUntil** | [**OffsetDateTime**](OffsetDateTime.md) | Date and time after the points are considered valid. The value should be provided in RFC 3339 format. If passed, `pendingDuration` should be omitted. | [optional]
+**subledgerId** | **String** | ID of the subledger the points are added to. If there is no existing subledger with this ID, the subledger is created automatically. | [optional]
+**applicationId** | **Long** | ID of the Application that is connected to the loyalty program. It is displayed in your Talon.One deployment URL. | [optional]
+**supportRequestId** | **Long** | ID of the support request to approve. When provided by an admin, the points are added on behalf of the support user who created the request. | [optional]
+**processingNote** | **String** | Note from the admin approving the support request. Stored as the processing note on the support request record. This is only used when a supportRequestId is passed. | [optional]
+
+
+
diff --git a/docs/AddToAudienceEffectProps.md b/docs/AddToAudienceEffectProps.md
index e75e7fbc..89678a46 100644
--- a/docs/AddToAudienceEffectProps.md
+++ b/docs/AddToAudienceEffectProps.md
@@ -2,7 +2,7 @@
# AddToAudienceEffectProps
-The properties specific to the \"addToAudience\" effect. This gets triggered whenever a validated rule contains an \"addToAudience\" effect.
+This effect is triggered when a rule containing an [Update audience](https://docs.talon.one/docs/product/rules/effects/use-effects#update-an-audience) effect with **Add customer to an audience** selected is validated. It indicates that a customer was added to an audience and is returned when a customer session is opened, updated, or closed.
## Properties
Name | Type | Description | Notes
diff --git a/docs/AdditionalCostReference.md b/docs/AdditionalCostReference.md
new file mode 100644
index 00000000..7baace76
--- /dev/null
+++ b/docs/AdditionalCostReference.md
@@ -0,0 +1,15 @@
+
+
+# AdditionalCostReference
+
+Identifies an additional cost referenced from a rule.
+## Properties
+
+Name | Type | Description | Notes
+------------ | ------------- | ------------- | -------------
+**id** | **Long** | The internal identifier of the additional cost. |
+**name** | **String** | The additional cost name as used in API requests. |
+**title** | **String** | The human-readable title of the additional cost. | [optional]
+
+
+
diff --git a/docs/Application.md b/docs/Application.md
index 9ff7f51e..73b2d5e6 100644
--- a/docs/Application.md
+++ b/docs/Application.md
@@ -27,6 +27,7 @@ Name | Type | Description | Notes
**defaultEvaluationGroupId** | **Long** | The ID of the default campaign evaluation group to which new campaigns will be added unless a different group is selected when creating the campaign. | [optional]
**defaultCartItemFilterId** | **Long** | The ID of the default Cart-Item-Filter for this application. | [optional]
**enableCampaignStateManagement** | **Boolean** | Indicates whether the campaign staging and revisions feature is enabled for the Application. **Important:** After this feature is enabled, it cannot be disabled. | [optional]
+**bestPriorPriceSettings** | [**BestPriorPriceSettings**](BestPriorPriceSettings.md) | | [optional]
**loyaltyPrograms** | [**List<LoyaltyProgram>**](LoyaltyProgram.md) | An array containing all the loyalty programs to which this application is subscribed. |
diff --git a/docs/ApplicationEvent.md b/docs/ApplicationEvent.md
index 3af451df..fb044497 100644
--- a/docs/ApplicationEvent.md
+++ b/docs/ApplicationEvent.md
@@ -12,8 +12,9 @@ Name | Type | Description | Notes
**profileId** | **Long** | The globally unique Talon.One ID of the customer that created this entity. | [optional]
**storeId** | **Long** | The ID of the store. | [optional]
**storeIntegrationId** | **String** | The integration ID of the store. You choose this ID when you create a store. | [optional]
+**integrationId** | **String** | The unique ID of the event. Only one event with this ID can be registered. | [optional]
**sessionId** | **Long** | The globally unique Talon.One ID of the session that contains this event. | [optional]
-**type** | **String** | A string representing the event. Must not be a reserved event name. |
+**type** | **String** | The name of the event. Must be a [custom event](https://docs.talon.one/docs/dev/concepts/entities/events#custom-events), not a built-in event. |
**attributes** | [**Object**](.md) | Additional JSON serialized data associated with the event. |
**effects** | [**List<Effect>**](Effect.md) | An array containing the effects that were applied as a result of this event. |
**ruleFailureReasons** | [**List<RuleFailureReason>**](RuleFailureReason.md) | An array containing the rule failure reasons which happened during this event. | [optional]
diff --git a/docs/ApplicationMembership.md b/docs/ApplicationMembership.md
new file mode 100644
index 00000000..9744e2f1
--- /dev/null
+++ b/docs/ApplicationMembership.md
@@ -0,0 +1,13 @@
+
+
+# ApplicationMembership
+
+## Properties
+
+Name | Type | Description | Notes
+------------ | ------------- | ------------- | -------------
+**applicationId** | **Long** | The ID of the Application the customer belongs to. |
+**applicationName** | **String** | The name of the Application the customer belongs to. |
+
+
+
diff --git a/docs/ApplicationReferee.md b/docs/ApplicationReferee.md
index ff135584..7d4252a3 100644
--- a/docs/ApplicationReferee.md
+++ b/docs/ApplicationReferee.md
@@ -8,6 +8,7 @@ Name | Type | Description | Notes
------------ | ------------- | ------------- | -------------
**applicationId** | **Long** | The ID of the Application that owns this entity. |
**sessionId** | **String** | Integration ID of the session in which the customer redeemed the referral. |
+**advancedEventIntegrationId** | **String** | The unique ID of the advanced event in which the customer redeemed the referral. Omitted when the referral was redeemed through a customer session rather than an advanced event. | [optional]
**advocateIntegrationId** | **String** | Integration ID of the Advocate's Profile. |
**friendIntegrationId** | **String** | Integration ID of the Friend's Profile. |
**code** | **String** | Advocate's referral code. |
diff --git a/docs/ApplicationSession.md b/docs/ApplicationSession.md
index fabb2957..34c53e74 100644
--- a/docs/ApplicationSession.md
+++ b/docs/ApplicationSession.md
@@ -15,7 +15,7 @@ Name | Type | Description | Notes
**profileintegrationid** | **String** | Integration ID of the customer for the session. | [optional]
**coupon** | **String** | Any coupon code entered. |
**referral** | **String** | Any referral code entered. |
-**state** | [**StateEnum**](#StateEnum) | Indicates the current state of the session. Sessions can be created as `open` or `closed`. The state transitions are: 1. `open` → `closed` 2. `open` → `cancelled` 3. `closed` → `cancelled` or `partially_returned` 4. `partially_returned` → `cancelled` For more information, see [Customer session states](https://docs.talon.one/docs/dev/concepts/entities/customer-sessions). |
+**state** | [**StateEnum**](#StateEnum) | Indicates the current state of the session. Sessions can be created as `open` or `closed`. The state transitions are: 1. `open` -> `closed` 2. `open` -> `cancelled` 3. `closed` -> `cancelled` or `partially_returned` 4. `partially_returned` -> `cancelled` For more information, see [Customer session states](https://docs.talon.one/docs/dev/concepts/entities/customer-sessions). |
**cartItems** | [**List<CartItem>**](CartItem.md) | Serialized JSON representation. |
**discounts** | [**Map<String, BigDecimal>**](BigDecimal.md) | **API V1 only.** A map of labeled discount values, in the same currency as the session. If you are using the V2 endpoints, refer to the `totalDiscounts` property instead. |
**totalDiscounts** | [**BigDecimal**](BigDecimal.md) | The total sum of the discounts applied to this session. **Note:** If more than one session is returned, this value is displayed as `0`. |
diff --git a/docs/Audience.md b/docs/Audience.md
index ab7c334e..406ae245 100644
--- a/docs/Audience.md
+++ b/docs/Audience.md
@@ -12,6 +12,7 @@ Name | Type | Description | Notes
**name** | **String** | The human-friendly display name for this audience. |
**sandbox** | **Boolean** | Indicates if this is a live or sandbox Application. | [optional]
**description** | **String** | A description of the audience. | [optional]
+**subscribedApplicationsIds** | **List<Long>** | A list of the IDs of the Applications that are connected to this audience. | [optional]
**integration** | **String** | The Talon.One-supported [3rd-party platform](https://docs.talon.one/docs/dev/technology-partners/overview) that this audience was created in. For example, `mParticle`, `Segment`, `Shopify`, `Braze`, or `Iterable`. **Note:** If you do not integrate with any of these platforms, do not use this property. | [optional]
**integrationId** | **String** | The ID of this audience in the third-party integration. **Note:** To create an audience that doesn't come from a 3rd party platform, do not use this property. | [optional]
**createdIn3rdParty** | **Boolean** | Determines if this audience is a 3rd party audience or not. | [optional]
diff --git a/docs/AwardDiscountAdditionalCostTarget.md b/docs/AwardDiscountAdditionalCostTarget.md
new file mode 100644
index 00000000..1f342a5d
--- /dev/null
+++ b/docs/AwardDiscountAdditionalCostTarget.md
@@ -0,0 +1,23 @@
+
+
+# AwardDiscountAdditionalCostTarget
+
+Applies the discount to an additional cost. The `target` field determines which subset of cart items the additional cost contribution is applied to.
+## Properties
+
+Name | Type | Description | Notes
+------------ | ------------- | ------------- | -------------
+**type** | [**TypeEnum**](#TypeEnum) | A target discriminator of type `additionalCost`. |
+**additionalCost** | [**AdditionalCostReference**](AdditionalCostReference.md) | |
+**target** | [**Object**](.md) | A subset of cart items whose additional cost the discount applies to. Cannot be another `additionalCost` target. |
+
+
+
+## Enum: TypeEnum
+
+Name | Value
+---- | -----
+ADDITIONALCOST | "additionalCost"
+
+
+
diff --git a/docs/AwardDiscountAllItemsTarget.md b/docs/AwardDiscountAllItemsTarget.md
new file mode 100644
index 00000000..b655ce0a
--- /dev/null
+++ b/docs/AwardDiscountAllItemsTarget.md
@@ -0,0 +1,22 @@
+
+
+# AwardDiscountAllItemsTarget
+
+Applies the discount across all cart items.
+## Properties
+
+Name | Type | Description | Notes
+------------ | ------------- | ------------- | -------------
+**type** | [**TypeEnum**](#TypeEnum) | A target discriminator of type `allItems`. |
+**prorated** | **Boolean** | Whether to distribute the discount proportionally across the targeted items. | [optional]
+
+
+
+## Enum: TypeEnum
+
+Name | Value
+---- | -----
+ALLITEMS | "allItems"
+
+
+
diff --git a/docs/AwardDiscountBlock.md b/docs/AwardDiscountBlock.md
new file mode 100644
index 00000000..ef137243
--- /dev/null
+++ b/docs/AwardDiscountBlock.md
@@ -0,0 +1,19 @@
+
+
+# AwardDiscountBlock
+
+A block that grants a discount when its rule conditions evaluate to `true`. The `target` field determines what the discount applies to (the whole cart, a subset of items, a bundle, an additional cost, etc.); the `value` field is the discount amount.
+## Properties
+
+Name | Type | Description | Notes
+------------ | ------------- | ------------- | -------------
+**id** | **String** | Unique identifier for this block. | [optional] [readonly]
+**type** | **String** | Identifies the block variant and determines which additional properties are present in it. |
+**tags** | **List<String>** | Semantic labels attached to this block. | [optional] [readonly]
+**name** | **String** | The human-readable label attached to the discount. |
+**value** | [**Object**](.md) | Discount amount. Either a numeric scalar or a `{{expression}}` string that resolves to a number at evaluation time. |
+**partial** | **Boolean** | Whether to apply a partial discount when the requested value exceeds the configured budget. |
+**target** | [**Object**](.md) | Identifies the scope a discount applies to. The `type` field selects the concrete target variant. |
+
+
+
diff --git a/docs/AwardDiscountBundleItemByAttribute.md b/docs/AwardDiscountBundleItemByAttribute.md
new file mode 100644
index 00000000..9c19ea61
--- /dev/null
+++ b/docs/AwardDiscountBundleItemByAttribute.md
@@ -0,0 +1,32 @@
+
+
+# AwardDiscountBundleItemByAttribute
+
+Identifies a bundle slot by ranking items by a per-item attribute expression and picking the highest- or lowest-ranked one.
+## Properties
+
+Name | Type | Description | Notes
+------------ | ------------- | ------------- | -------------
+**type** | [**TypeEnum**](#TypeEnum) | A bundle-item selector of type `byAttribute`. |
+**attribute** | **String** | A per-item attribute expression used to rank bundle items. |
+**direction** | [**DirectionEnum**](#DirectionEnum) | Ranking direction. `highest` picks the item with the largest attribute value, `lowest` the smallest. |
+
+
+
+## Enum: TypeEnum
+
+Name | Value
+---- | -----
+BYATTRIBUTE | "byAttribute"
+
+
+
+## Enum: DirectionEnum
+
+Name | Value
+---- | -----
+HIGHEST | "highest"
+LOWEST | "lowest"
+
+
+
diff --git a/docs/AwardDiscountBundleItemByIndex.md b/docs/AwardDiscountBundleItemByIndex.md
new file mode 100644
index 00000000..6ff55f68
--- /dev/null
+++ b/docs/AwardDiscountBundleItemByIndex.md
@@ -0,0 +1,22 @@
+
+
+# AwardDiscountBundleItemByIndex
+
+Identifies a bundle slot by its zero-based index within the bundle.
+## Properties
+
+Name | Type | Description | Notes
+------------ | ------------- | ------------- | -------------
+**type** | [**TypeEnum**](#TypeEnum) | A bundle-item selector of type `byIndex`. |
+**value** | **Long** | The zero-based index of the slot within the bundle. |
+
+
+
+## Enum: TypeEnum
+
+Name | Value
+---- | -----
+BYINDEX | "byIndex"
+
+
+
diff --git a/docs/AwardDiscountBundleTarget.md b/docs/AwardDiscountBundleTarget.md
new file mode 100644
index 00000000..6da65787
--- /dev/null
+++ b/docs/AwardDiscountBundleTarget.md
@@ -0,0 +1,24 @@
+
+
+# AwardDiscountBundleTarget
+
+Applies the discount to items belonging to a named bundle.
+## Properties
+
+Name | Type | Description | Notes
+------------ | ------------- | ------------- | -------------
+**type** | [**TypeEnum**](#TypeEnum) | A target discriminator of type `bundle`. |
+**name** | **String** | Name of the bundle binding the discount targets. |
+**item** | [**Object**](.md) | Selects which slot inside a bundle a discount applies to. The `type` field picks the selection mode. | [optional]
+**prorated** | **Boolean** | Whether to distribute the discount proportionally across the bundle's items. | [optional]
+
+
+
+## Enum: TypeEnum
+
+Name | Value
+---- | -----
+BUNDLE | "bundle"
+
+
+
diff --git a/docs/AwardDiscountCartTarget.md b/docs/AwardDiscountCartTarget.md
new file mode 100644
index 00000000..f8602bd5
--- /dev/null
+++ b/docs/AwardDiscountCartTarget.md
@@ -0,0 +1,21 @@
+
+
+# AwardDiscountCartTarget
+
+Applies the discount to the entire cart as a single unit.
+## Properties
+
+Name | Type | Description | Notes
+------------ | ------------- | ------------- | -------------
+**type** | [**TypeEnum**](#TypeEnum) | A target discriminator of type `cart`. |
+
+
+
+## Enum: TypeEnum
+
+Name | Value
+---- | -----
+CART | "cart"
+
+
+
diff --git a/docs/AwardDiscountGlobalFilterTarget.md b/docs/AwardDiscountGlobalFilterTarget.md
new file mode 100644
index 00000000..4f025ffc
--- /dev/null
+++ b/docs/AwardDiscountGlobalFilterTarget.md
@@ -0,0 +1,23 @@
+
+
+# AwardDiscountGlobalFilterTarget
+
+Applies the discount to items matched by a named Application-level cart-item filter.
+## Properties
+
+Name | Type | Description | Notes
+------------ | ------------- | ------------- | -------------
+**type** | [**TypeEnum**](#TypeEnum) | A target discriminator of type `globalFilter`. |
+**name** | **String** | The name of the Application-level cart-item filter the discount targets. |
+**prorated** | **Boolean** | Whether to distribute the discount proportionally across the matched items. | [optional]
+
+
+
+## Enum: TypeEnum
+
+Name | Value
+---- | -----
+GLOBALFILTER | "globalFilter"
+
+
+
diff --git a/docs/AwardDiscountSelectorTarget.md b/docs/AwardDiscountSelectorTarget.md
new file mode 100644
index 00000000..9315a044
--- /dev/null
+++ b/docs/AwardDiscountSelectorTarget.md
@@ -0,0 +1,23 @@
+
+
+# AwardDiscountSelectorTarget
+
+Applies the discount to items matched by a named selector binding.
+## Properties
+
+Name | Type | Description | Notes
+------------ | ------------- | ------------- | -------------
+**type** | [**TypeEnum**](#TypeEnum) | A target discriminator of type `selector`. |
+**name** | **String** | The name of the selector binding the discount targets. |
+**prorated** | **Boolean** | Whether to distribute the discount proportionally across the selected items. | [optional]
+
+
+
+## Enum: TypeEnum
+
+Name | Value
+---- | -----
+SELECTOR | "selector"
+
+
+
diff --git a/docs/AwardGiveawayBlock.md b/docs/AwardGiveawayBlock.md
new file mode 100644
index 00000000..e8b183f9
--- /dev/null
+++ b/docs/AwardGiveawayBlock.md
@@ -0,0 +1,28 @@
+
+
+# AwardGiveawayBlock
+
+A block that awards a giveaway item from a configured giveaway pool to the specified customer profile.
+## Properties
+
+Name | Type | Description | Notes
+------------ | ------------- | ------------- | -------------
+**id** | **String** | Unique identifier for this block. | [optional] [readonly]
+**type** | **String** | Identifies the block variant and determines which additional properties are present in it. |
+**tags** | **List<String>** | Semantic labels attached to this block. | [optional] [readonly]
+**giveawayPool** | [**GiveawayPoolReference**](GiveawayPoolReference.md) | |
+**profile** | [**ProfileEnum**](#ProfileEnum) | The customer profile to award the giveaway to. `Current` targets the customer in the current session; `Advocate` targets the person who invited their friend via referral program. |
+**onFailure** | **List<Object>** | Blocks evaluated when this block fails or returns false. | [optional]
+**onError** | [**Map<String, List<Object>>**](List.md) | Named error handlers evaluated when a specific error occurs. | [optional]
+
+
+
+## Enum: ProfileEnum
+
+Name | Value
+---- | -----
+CURRENT | "Current"
+ADVOCATE | "Advocate"
+
+
+
diff --git a/docs/AwardGiveawayEffectProps.md b/docs/AwardGiveawayEffectProps.md
index 9b68d10c..645f766a 100644
--- a/docs/AwardGiveawayEffectProps.md
+++ b/docs/AwardGiveawayEffectProps.md
@@ -2,16 +2,16 @@
# AwardGiveawayEffectProps
-The properties specific to the \"awardGiveaway\" effect. This effect contains information on the giveaway item, and which profile it was awarded to.
+This effect indicates the awarded giveaway item and to which profile the item was awarded. Learn more about [giveaways](https://docs.talon.one/docs/product/giveaways/overview).
## Properties
Name | Type | Description | Notes
------------ | ------------- | ------------- | -------------
-**poolId** | **Long** | The ID of the giveaways pool the code was taken from. |
-**poolName** | **String** | The name of the giveaways pool the code was taken from. |
-**recipientIntegrationId** | **String** | The integration ID of the profile that was awarded the giveaway. |
-**giveawayId** | **Long** | The internal ID for the giveaway that was awarded. |
-**code** | **String** | The giveaway code that was awarded. |
+**poolId** | **Long** | The internal ID of the giveaway pool. |
+**poolName** | **String** | The name of the giveaway pool. |
+**recipientIntegrationId** | **String** | The integration ID of the customer that receives the giveaway. |
+**giveawayId** | **Long** | The internal ID of the giveaway. |
+**code** | **String** | The giveaway code to be rewarded. |
diff --git a/docs/AwardItemBlock.md b/docs/AwardItemBlock.md
new file mode 100644
index 00000000..2c9898b5
--- /dev/null
+++ b/docs/AwardItemBlock.md
@@ -0,0 +1,21 @@
+
+
+# AwardItemBlock
+
+A block that awards a free cart item to the customer. The item is identified by SKU and name and has a configurable quantity.
+## Properties
+
+Name | Type | Description | Notes
+------------ | ------------- | ------------- | -------------
+**id** | **String** | Unique identifier for this block. | [optional] [readonly]
+**type** | **String** | Identifies the block variant and determines which additional properties are present in it. |
+**tags** | **List<String>** | Semantic labels attached to this block. | [optional] [readonly]
+**sku** | **String** | The stock keeping unit of the item to award. |
+**name** | **String** | The display name of the item to award. |
+**quantity** | **String** | The number of items to award. Supports template placeholders (e.g. \"{{$Session.Total / 2}}\") for dynamic quantities. |
+**partial** | **Boolean** | When set to `true`, applies a partial item reward if the remaining budget is insufficient to award the full reward. | [optional]
+**onFailure** | **List<Object>** | Blocks evaluated when this block fails or returns false. | [optional]
+**onError** | [**Map<String, List<Object>>**](List.md) | Named error handlers evaluated when a specific error occurs. | [optional]
+
+
+
diff --git a/docs/BaseBlock.md b/docs/BaseBlock.md
new file mode 100644
index 00000000..8ff0c559
--- /dev/null
+++ b/docs/BaseBlock.md
@@ -0,0 +1,15 @@
+
+
+# BaseBlock
+
+Common properties shared by all block types.
+## Properties
+
+Name | Type | Description | Notes
+------------ | ------------- | ------------- | -------------
+**id** | **String** | Unique identifier for this block. | [optional] [readonly]
+**type** | **String** | Identifies the block variant and determines which additional properties are present in it. |
+**tags** | **List<String>** | Semantic labels attached to this block. | [optional] [readonly]
+
+
+
diff --git a/docs/BaseCampaign.md b/docs/BaseCampaign.md
index 44a043c2..552f70ac 100644
--- a/docs/BaseCampaign.md
+++ b/docs/BaseCampaign.md
@@ -46,6 +46,7 @@ LOYALTY | "loyalty"
GIVEAWAYS | "giveaways"
STRIKETHROUGH | "strikethrough"
ACHIEVEMENTS | "achievements"
+ADVANCEDEVENTS | "advancedEvents"
diff --git a/docs/BestPriorPrice.md b/docs/BestPriorPrice.md
index 7033ccc3..c4fdd6fb 100644
--- a/docs/BestPriorPrice.md
+++ b/docs/BestPriorPrice.md
@@ -9,7 +9,7 @@ Name | Type | Description | Notes
**id** | **Long** | The ID of the historical price. |
**sku** | **String** | sku |
**observedAt** | [**OffsetDateTime**](OffsetDateTime.md) | The date and time when the price was observed. |
-**contextId** | **String** | The context ID of the context active at the time of observation. |
+**contextIds** | **List<String>** | The identifiers of the relevant context at the time the price was observed. Includes the context IDs of any price adjustments and of the campaigns that influenced the final price. |
**price** | [**BigDecimal**](BigDecimal.md) | Price of the item. |
**metadata** | [**BestPriorPriceMetadata**](BestPriorPriceMetadata.md) | |
**target** | [**Object**](.md) | |
diff --git a/docs/BestPriorPriceSettings.md b/docs/BestPriorPriceSettings.md
new file mode 100644
index 00000000..5cf310d6
--- /dev/null
+++ b/docs/BestPriorPriceSettings.md
@@ -0,0 +1,13 @@
+
+
+# BestPriorPriceSettings
+
+The best prior price settings for this Application.
+## Properties
+
+Name | Type | Description | Notes
+------------ | ------------- | ------------- | -------------
+**enableBestPriorPrice** | **Boolean** | When set to `true`, the best prior price feature is enabled in this Application and its [price history](https://docs.talon.one/management-api#tag/Catalogs/operation/priceHistory) is recorded. | [optional]
+
+
+
diff --git a/docs/BetweenCheckAttributeBlock.md b/docs/BetweenCheckAttributeBlock.md
new file mode 100644
index 00000000..52765874
--- /dev/null
+++ b/docs/BetweenCheckAttributeBlock.md
@@ -0,0 +1,23 @@
+
+
+# BetweenCheckAttributeBlock
+
+Variant of `CheckAttributeBlock` for the `between` operator, which requires both a minimum and maximum value.
+## Properties
+
+Name | Type | Description | Notes
+------------ | ------------- | ------------- | -------------
+**operator** | [**OperatorEnum**](#OperatorEnum) | The range comparison operator. Must be `between`. | [optional]
+**min** | [**Object**](.md) | The minimum value allowed for the `between` operator. |
+**max** | [**Object**](.md) | The maximum value allowed for the `between` operator. |
+
+
+
+## Enum: OperatorEnum
+
+Name | Value
+---- | -----
+BETWEEN | "between"
+
+
+
diff --git a/docs/Binding.md b/docs/Binding.md
index 9bad76cd..3ebc05e3 100644
--- a/docs/Binding.md
+++ b/docs/Binding.md
@@ -8,12 +8,12 @@ Name | Type | Description | Notes
------------ | ------------- | ------------- | -------------
**name** | **String** | A descriptive name for the value to be bound. |
**type** | **String** | The kind of binding. Possible values are: - `bundle` - `cartItemFilter` - `subledgerBalance` - `templateParameter` | [optional]
-**expression** | **List<Object>** | A Talang expression that will be evaluated and its result attached to the name of the binding. |
-**valueType** | **String** | Can be one of the following: - `string` - `number` - `boolean` | [optional]
+**expression** | **List<Object>** | A Talang expression that is evaluated, and its result is bound to the name of the binding. The first element must be one of the functions or operators supported by Talang, followed by its arguments. The arguments can be strings, numbers, or nested expressions. For example: - `[\"list\", \"10014\", \"10015\"]` calls the `list` function to build a list of strings. - `[\"+\", 2, 0]` uses the `+` operator to add two numbers. |
+**valueType** | **String** | The data type of the value. One of the following: - `string` - `number` - `boolean` | [optional]
**minValue** | [**BigDecimal**](BigDecimal.md) | The minimum value allowed for this placeholder. | [optional]
**maxValue** | [**BigDecimal**](BigDecimal.md) | The maximum value allowed for this placeholder. | [optional]
-**attributeId** | **Long** | Id of the attribute attached to the placeholder. | [optional]
-**description** | **String** | Describes the placeholder field and value in the template. This description can be used when creating campaigns from this template. | [optional]
+**attributeId** | **Long** | Identifier of the attribute attached to the placeholder. | [optional]
+**description** | **String** | Description of the placeholder field and its value in the template. This text can be shown when creating campaigns from this template. | [optional]
diff --git a/docs/Bundle.md b/docs/Bundle.md
new file mode 100644
index 00000000..0608ceb7
--- /dev/null
+++ b/docs/Bundle.md
@@ -0,0 +1,26 @@
+
+
+# Bundle
+
+A named bundle definition consisting of selector sources with matching constraints. Replaces `bundle` [bindings](https://docs.talon.one/management-api#tag/Campaigns/operation/getRuleset.responses.200.bindings) in V1 rulesets.
+## Properties
+
+Name | Type | Description | Notes
+------------ | ------------- | ------------- | -------------
+**id** | **String** | An identifier derived from the bundle content. |
+**name** | **String** | The name of the bundle. |
+**type** | [**TypeEnum**](#TypeEnum) | A binding of type `bundle`. |
+**sources** | **List<String>** | The selector sources of bundle items. Each source is expressed as a `{{$selectorName}}` reference. |
+**counts** | **List<Long>** | The number of items to retrieve from each corresponding source in `sources`. |
+**matchers** | **List<String>** | Attribute names that the bundled items must share. | [optional]
+
+
+
+## Enum: TypeEnum
+
+Name | Value
+---- | -----
+BUNDLE | "bundle"
+
+
+
diff --git a/docs/Campaign.md b/docs/Campaign.md
index 1763c79d..e897315f 100644
--- a/docs/Campaign.md
+++ b/docs/Campaign.md
@@ -82,6 +82,7 @@ LOYALTY | "loyalty"
GIVEAWAYS | "giveaways"
STRIKETHROUGH | "strikethrough"
ACHIEVEMENTS | "achievements"
+ADVANCEDEVENTS | "advancedEvents"
diff --git a/docs/CampaignEligibility.md b/docs/CampaignEligibility.md
new file mode 100644
index 00000000..61a945a1
--- /dev/null
+++ b/docs/CampaignEligibility.md
@@ -0,0 +1,47 @@
+
+
+# CampaignEligibility
+
+A list of campaigns and their evaluation status for the current customer session. For experiment campaigns, the experiment and variant assigned to the customer profile are returned through the `experiment` field. Customer profiles with no variant assignment are not included. **Note**: - This response can **only** be included if the `dry` parameter in the query is set to `true`. - Do not include `triggeredCampaigns` or `ruleFailureReasons` in `responseContent` to avoid duplicate results.
+## Properties
+
+Name | Type | Description | Notes
+------------ | ------------- | ------------- | -------------
+**applicationId** | **Long** | The ID of the Application that owns this entity. |
+**id** | **Long** | Unique ID of Campaign. |
+**name** | **String** | The name of the campaign. |
+**description** | **String** | A detailed description of the campaign. | [optional]
+**startTime** | [**OffsetDateTime**](OffsetDateTime.md) | Timestamp when the campaign will become active. | [optional]
+**endTime** | [**OffsetDateTime**](OffsetDateTime.md) | Timestamp when the campaign will become inactive. | [optional]
+**attributes** | [**Object**](.md) | Arbitrary properties associated with this campaign. | [optional]
+**state** | [**StateEnum**](#StateEnum) | The state of the campaign. |
+**tags** | **List<String>** | A list of tags for the campaign. |
+**features** | [**List<FeaturesEnum>**](#List<FeaturesEnum>) | The features enabled in this campaign. |
+**eligibility** | [**List<CampaignEligibilityDetails>**](CampaignEligibilityDetails.md) | The customer's eligibility for each campaign in the current customer session. |
+**rules** | [**List<RuleMetadataEligibility>**](RuleMetadataEligibility.md) | A list of rules containing customer-facing details of the rewards defined in the campaign. |
+**experiment** | [**CampaignEligibilityExperiment**](CampaignEligibilityExperiment.md) | | [optional]
+
+
+
+## Enum: StateEnum
+
+Name | Value
+---- | -----
+ENABLED | "enabled"
+
+
+
+## Enum: List<FeaturesEnum>
+
+Name | Value
+---- | -----
+COUPONS | "coupons"
+REFERRALS | "referrals"
+LOYALTY | "loyalty"
+GIVEAWAYS | "giveaways"
+STRIKETHROUGH | "strikethrough"
+ACHIEVEMENTS | "achievements"
+ADVANCEDEVENTS | "advancedEvents"
+
+
+
diff --git a/docs/CampaignEligibilityDetails.md b/docs/CampaignEligibilityDetails.md
new file mode 100644
index 00000000..3fc6ac34
--- /dev/null
+++ b/docs/CampaignEligibilityDetails.md
@@ -0,0 +1,14 @@
+
+
+# CampaignEligibilityDetails
+
+## Properties
+
+Name | Type | Description | Notes
+------------ | ------------- | ------------- | -------------
+**passed** | **Boolean** | Indicates whether the customer was eligible for the campaign in the current session. |
+**couponCode** | **String** | The coupon code used to check a customer's eligibility for the campaign in the current session, if applicable. | [optional]
+**details** | [**CampaignEligibilityFailureDetails**](CampaignEligibilityFailureDetails.md) | | [optional]
+
+
+
diff --git a/docs/CampaignEligibilityExperiment.md b/docs/CampaignEligibilityExperiment.md
new file mode 100644
index 00000000..fa8619e0
--- /dev/null
+++ b/docs/CampaignEligibilityExperiment.md
@@ -0,0 +1,14 @@
+
+
+# CampaignEligibilityExperiment
+
+The identifiers for the [experiment](https://docs.talon.one/management-api#tag/Experiments) and the variant assigned to the customer profile. Only returned when the customer profile has been assigned to a variant in an experiment campaign.
+## Properties
+
+Name | Type | Description | Notes
+------------ | ------------- | ------------- | -------------
+**id** | **Long** | The ID of the experiment. |
+**variantId** | **Long** | The ID of the variant assigned to the customer profile. |
+
+
+
diff --git a/docs/CampaignEligibilityFailureDetails.md b/docs/CampaignEligibilityFailureDetails.md
new file mode 100644
index 00000000..b776d359
--- /dev/null
+++ b/docs/CampaignEligibilityFailureDetails.md
@@ -0,0 +1,23 @@
+
+
+# CampaignEligibilityFailureDetails
+
+The details about why the customer was not eligible for the campaign in the current session.
+## Properties
+
+Name | Type | Description | Notes
+------------ | ------------- | ------------- | -------------
+**failureCode** | [**FailureCodeEnum**](#FailureCodeEnum) | A code identifying why the customer was not eligible for the campaign. |
+
+
+
+## Enum: FailureCodeEnum
+
+Name | Value
+---- | -----
+ALL_RULES_FAILED | "ALL_RULES_FAILED"
+SKIPPED | "SKIPPED"
+AUDIENCE_NOT_MATCHED | "AUDIENCE_NOT_MATCHED"
+
+
+
diff --git a/docs/CampaignLoyaltyProgram.md b/docs/CampaignLoyaltyProgram.md
new file mode 100644
index 00000000..f69aab4a
--- /dev/null
+++ b/docs/CampaignLoyaltyProgram.md
@@ -0,0 +1,16 @@
+
+
+# CampaignLoyaltyProgram
+
+A loyalty program referenced in a campaign.
+## Properties
+
+Name | Type | Description | Notes
+------------ | ------------- | ------------- | -------------
+**id** | **Long** | The ID of the loyalty program. |
+**name** | **String** | The name of the loyalty program. |
+**tiers** | **List<String>** | The names of the tiers in the loyalty program. |
+**cardBased** | **Boolean** | Whether the loyalty program is card-based. |
+
+
+
diff --git a/docs/CampaignReference.md b/docs/CampaignReference.md
new file mode 100644
index 00000000..aea564bb
--- /dev/null
+++ b/docs/CampaignReference.md
@@ -0,0 +1,13 @@
+
+
+# CampaignReference
+
+## Properties
+
+Name | Type | Description | Notes
+------------ | ------------- | ------------- | -------------
+**id** | **Long** | The ID of the campaign that references this achievement. |
+**applicationId** | **Long** | The ID of the Application the campaign belongs to. |
+
+
+
diff --git a/docs/CampaignTemplate.md b/docs/CampaignTemplate.md
index 981b042a..3737925a 100644
--- a/docs/CampaignTemplate.md
+++ b/docs/CampaignTemplate.md
@@ -57,6 +57,7 @@ LOYALTY | "loyalty"
GIVEAWAYS | "giveaways"
STRIKETHROUGH | "strikethrough"
ACHIEVEMENTS | "achievements"
+ADVANCEDEVENTS | "advancedEvents"
diff --git a/docs/CardLedgerTransactionLogEntryIntegrationAPI.md b/docs/CardLedgerTransactionLogEntryIntegrationAPI.md
index f1961ae2..000a86ee 100644
--- a/docs/CardLedgerTransactionLogEntryIntegrationAPI.md
+++ b/docs/CardLedgerTransactionLogEntryIntegrationAPI.md
@@ -21,7 +21,7 @@ Name | Type | Description | Notes
**id** | **Long** | ID of the loyalty ledger transaction. |
**rulesetId** | **Long** | The ID of the ruleset containing the rule that triggered this effect. | [optional]
**ruleName** | **String** | The name of the rule that triggered this effect. | [optional]
-**validityDuration** | **String** | The duration for which the points remain active, relative to the activation date. **Note**: This only applies to points for which `awaitsActivation` is `true` and `expiryDate` is not set. | [optional]
+**validityDuration** | **String** | The duration for which the points remain active, relative to the activation date. **Note**: This only applies to points for which `awaitsActivation` is `true` and `expiryDate` is not set. | [optional]
diff --git a/docs/CatalogAction.md b/docs/CatalogAction.md
index d6c78874..9ba421f5 100644
--- a/docs/CatalogAction.md
+++ b/docs/CatalogAction.md
@@ -2,13 +2,13 @@
# CatalogAction
-Definition of all the properties that are needed for a single catalog sync action.
+Definition of all the properties that are needed for a single catalog sync action. The `type` field selects the concrete action variant.
## Properties
Name | Type | Description | Notes
------------ | ------------- | ------------- | -------------
-**type** | [**TypeEnum**](#TypeEnum) | The type of sync action. |
-**payload** | [**Object**](.md) | |
+**type** | [**TypeEnum**](#TypeEnum) | The type of sync action. | [optional]
+**payload** | [**Object**](.md) | | [optional]
diff --git a/docs/CatalogActionAdd.md b/docs/CatalogActionAdd.md
new file mode 100644
index 00000000..3ad1bc2f
--- /dev/null
+++ b/docs/CatalogActionAdd.md
@@ -0,0 +1,22 @@
+
+
+# CatalogActionAdd
+
+Adds an item to the catalog.
+## Properties
+
+Name | Type | Description | Notes
+------------ | ------------- | ------------- | -------------
+**type** | [**TypeEnum**](#TypeEnum) | A catalog sync action discriminator of type `ADD`. |
+**payload** | [**AddItemCatalogAction**](AddItemCatalogAction.md) | |
+
+
+
+## Enum: TypeEnum
+
+Name | Value
+---- | -----
+ADD | "ADD"
+
+
+
diff --git a/docs/CatalogActionAddPriceAdjustment.md b/docs/CatalogActionAddPriceAdjustment.md
new file mode 100644
index 00000000..88bd45f2
--- /dev/null
+++ b/docs/CatalogActionAddPriceAdjustment.md
@@ -0,0 +1,22 @@
+
+
+# CatalogActionAddPriceAdjustment
+
+Adds price adjustments to an item of the catalog.
+## Properties
+
+Name | Type | Description | Notes
+------------ | ------------- | ------------- | -------------
+**type** | [**TypeEnum**](#TypeEnum) | A catalog sync action discriminator of type `ADD_PRICE_ADJUSTMENT`. |
+**payload** | [**AddPriceAdjustmentCatalogAction**](AddPriceAdjustmentCatalogAction.md) | |
+
+
+
+## Enum: TypeEnum
+
+Name | Value
+---- | -----
+ADD_PRICE_ADJUSTMENT | "ADD_PRICE_ADJUSTMENT"
+
+
+
diff --git a/docs/CatalogActionPatch.md b/docs/CatalogActionPatch.md
new file mode 100644
index 00000000..2d680d87
--- /dev/null
+++ b/docs/CatalogActionPatch.md
@@ -0,0 +1,22 @@
+
+
+# CatalogActionPatch
+
+Updates an item in the catalog.
+## Properties
+
+Name | Type | Description | Notes
+------------ | ------------- | ------------- | -------------
+**type** | [**TypeEnum**](#TypeEnum) | A catalog sync action discriminator of type `PATCH`. |
+**payload** | [**PatchItemCatalogAction**](PatchItemCatalogAction.md) | |
+
+
+
+## Enum: TypeEnum
+
+Name | Value
+---- | -----
+PATCH | "PATCH"
+
+
+
diff --git a/docs/CatalogActionPatchMany.md b/docs/CatalogActionPatchMany.md
new file mode 100644
index 00000000..90a1dde2
--- /dev/null
+++ b/docs/CatalogActionPatchMany.md
@@ -0,0 +1,22 @@
+
+
+# CatalogActionPatchMany
+
+Updates the items of the catalog that match the given filters.
+## Properties
+
+Name | Type | Description | Notes
+------------ | ------------- | ------------- | -------------
+**type** | [**TypeEnum**](#TypeEnum) | A catalog sync action discriminator of type `PATCH_MANY`. |
+**payload** | [**PatchManyItemsCatalogAction**](PatchManyItemsCatalogAction.md) | |
+
+
+
+## Enum: TypeEnum
+
+Name | Value
+---- | -----
+PATCH_MANY | "PATCH_MANY"
+
+
+
diff --git a/docs/CatalogActionRemove.md b/docs/CatalogActionRemove.md
new file mode 100644
index 00000000..355c853c
--- /dev/null
+++ b/docs/CatalogActionRemove.md
@@ -0,0 +1,22 @@
+
+
+# CatalogActionRemove
+
+Removes an item from the catalog.
+## Properties
+
+Name | Type | Description | Notes
+------------ | ------------- | ------------- | -------------
+**type** | [**TypeEnum**](#TypeEnum) | A catalog sync action discriminator of type `REMOVE`. |
+**payload** | [**RemoveItemCatalogAction**](RemoveItemCatalogAction.md) | |
+
+
+
+## Enum: TypeEnum
+
+Name | Value
+---- | -----
+REMOVE | "REMOVE"
+
+
+
diff --git a/docs/CatalogActionRemoveMany.md b/docs/CatalogActionRemoveMany.md
new file mode 100644
index 00000000..30667539
--- /dev/null
+++ b/docs/CatalogActionRemoveMany.md
@@ -0,0 +1,22 @@
+
+
+# CatalogActionRemoveMany
+
+Removes the items of the catalog that match the given filters.
+## Properties
+
+Name | Type | Description | Notes
+------------ | ------------- | ------------- | -------------
+**type** | [**TypeEnum**](#TypeEnum) | A catalog sync action discriminator of type `REMOVE_MANY`. |
+**payload** | [**RemoveManyItemsCatalogAction**](RemoveManyItemsCatalogAction.md) | |
+
+
+
+## Enum: TypeEnum
+
+Name | Value
+---- | -----
+REMOVE_MANY | "REMOVE_MANY"
+
+
+
diff --git a/docs/ChangeLoyaltyTierLevelEffectProps.md b/docs/ChangeLoyaltyTierLevelEffectProps.md
index f9356324..d953f5d3 100644
--- a/docs/ChangeLoyaltyTierLevelEffectProps.md
+++ b/docs/ChangeLoyaltyTierLevelEffectProps.md
@@ -2,14 +2,14 @@
# ChangeLoyaltyTierLevelEffectProps
-The properties specific to the \"changeLoyaltyTierLevel\" effect. This is triggered whenever the user's loyalty tier is upgraded due to a validated rule that contained an \"addLoyaltyPoints\" effect.
+This effect indicates that a customer's loyalty tier has been upgraded. This effect is generated only when the [Add loyalty points](https://docs.talon.one/docs/product/rules/effects/use-effects#add-loyalty-points) and the [Add loyalty points per cart item](https://docs.talon.one/docs/product/rules/effects/use-effects#add-loyalty-points-per-cart-item) effects are triggered for a particular customer, and, as a result, the customer's loyalty tier is upgraded.
## Properties
Name | Type | Description | Notes
------------ | ------------- | ------------- | -------------
**ruleTitle** | **String** | The title of the rule that triggered the tier upgrade. |
-**programId** | **Long** | The ID of the loyalty program where these points were added. |
-**subLedgerId** | **String** | The ID of the subledger within the loyalty program where these points were added. |
+**programId** | **Long** | The ID of the loyalty program where the points were added. |
+**subLedgerId** | **String** | The ID of the subledger within the loyalty program where the points were added. |
**previousTierName** | **String** | The name of the tier from which the user was upgraded. | [optional]
**newTierName** | **String** | The name of the tier to which the user has been upgraded. |
**expiryDate** | [**OffsetDateTime**](OffsetDateTime.md) | The expiration date of the new tier. | [optional]
diff --git a/docs/CheckAchievementBlock.md b/docs/CheckAchievementBlock.md
new file mode 100644
index 00000000..257c39a7
--- /dev/null
+++ b/docs/CheckAchievementBlock.md
@@ -0,0 +1,32 @@
+
+
+# CheckAchievementBlock
+
+A block that checks the current customer's completion or progress status in an achievement.
+## Properties
+
+Name | Type | Description | Notes
+------------ | ------------- | ------------- | -------------
+**id** | **String** | Unique identifier for this block. | [optional] [readonly]
+**type** | **String** | Identifies the block variant and determines which additional properties are present in it. |
+**tags** | **List<String>** | Semantic labels attached to this block. | [optional] [readonly]
+**operator** | [**OperatorEnum**](#OperatorEnum) | The comparison operator applied to the achievement. |
+**achievement** | [**CheckAchievementBlockAchievement**](CheckAchievementBlockAchievement.md) | |
+**onFailure** | **List<Object>** | Promotion blocks evaluated when this block fails or returns false. | [optional]
+
+
+
+## Enum: OperatorEnum
+
+Name | Value
+---- | -----
+JUSTCOMPLETED | "justCompleted"
+STARTED | "started"
+NOT_STARTED_ | "not(started)"
+INPROGRESS | "inProgress"
+NOT_INPROGRESS_ | "not(inProgress)"
+COMPLETED | "completed"
+NOT_COMPLETED_ | "not(completed)"
+
+
+
diff --git a/docs/CheckAchievementBlockAchievement.md b/docs/CheckAchievementBlockAchievement.md
new file mode 100644
index 00000000..7d333055
--- /dev/null
+++ b/docs/CheckAchievementBlockAchievement.md
@@ -0,0 +1,16 @@
+
+
+# CheckAchievementBlockAchievement
+
+The achievement to check for.
+## Properties
+
+Name | Type | Description | Notes
+------------ | ------------- | ------------- | -------------
+**id** | **Long** | The ID of the achievement. |
+**title** | **String** | The display name for the achievement in the Campaign Manager. |
+**name** | **String** | The internal name of the achievement used in API requests. |
+**target** | [**BigDecimal**](BigDecimal.md) | The required number of actions or the transactional milestone to complete the achievement. |
+
+
+
diff --git a/docs/CheckAttributeBlock.md b/docs/CheckAttributeBlock.md
new file mode 100644
index 00000000..ef6b6447
--- /dev/null
+++ b/docs/CheckAttributeBlock.md
@@ -0,0 +1,76 @@
+
+
+# CheckAttributeBlock
+
+Shared shape for attribute-comparison blocks: a single attribute evaluated by a named operator. The operator determines which additional fields are required: - `scalar` requires `value`. - `between` requires `min` and `max` values. - `list` requires `values`. - `list-with-count` requires `values` and `count`. - `unary` requires no extra fields.
+## Properties
+
+Name | Type | Description | Notes
+------------ | ------------- | ------------- | -------------
+**id** | **String** | Unique identifier for this block. | [optional] [readonly]
+**type** | [**TypeEnum**](#TypeEnum) | A block discriminator of type `checkAttribute`. |
+**tags** | **List<String>** | Semantic labels attached to this block. | [optional] [readonly]
+**operator** | [**OperatorEnum**](#OperatorEnum) | The comparison operator applied to the attribute. |
+**attribute** | [**Object**](.md) | The attribute path identifier (e.g. \"$Session.Total\"). |
+**value** | [**Object**](.md) | The comparison value for scalar operators. | [optional]
+**min** | [**Object**](.md) | The minimum value allowed for the `between` operator. | [optional]
+**max** | [**Object**](.md) | The maximum value allowed for the `between` operator. | [optional]
+**start** | [**Object**](.md) | The start value for the `within` operator. | [optional]
+**end** | [**Object**](.md) | The end value for the `within` operator. | [optional]
+**startInclusive** | **Boolean** | When `true`, the `start` value is included in the range for the `within` operator. | [optional]
+**endInclusive** | **Boolean** | When `true`, the `end` value is included in the range for the `within` operator. | [optional]
+**timezoneInsensitive** | **Boolean** | Indicates whether the `within` operator ignores time zones and compares the wall-clock time only. When `false`, time zones are taken into account. | [optional]
+**values** | [**Object**](.md) | The set of values to match against for list operators. For location operators (`in`, `not(in)`), an array of objects with a `geometry` (see `GeoJSONGeometry`) and an optional `name`, or a string reference to a list attribute. | [optional]
+**count** | [**Object**](.md) | The count threshold for `containsAtLeast` and `containsExactly` operators. | [optional]
+**onFailure** | **List<Object>** | Promotion blocks evaluated when this block fails or returns false. | [optional]
+
+
+
+## Enum: TypeEnum
+
+Name | Value
+---- | -----
+CHECKATTRIBUTE | "checkAttribute"
+
+
+
+## Enum: OperatorEnum
+
+Name | Value
+---- | -----
+EQUALS | "equals"
+NOT_EQUALS_ | "not(equals)"
+LESSTHAN | "lessThan"
+LESSTHANOREQUAL | "lessThanOrEqual"
+GREATERTHAN | "greaterThan"
+GREATERTHANOREQUAL | "greaterThanOrEqual"
+BETWEEN | "between"
+CONTAINS | "contains"
+NOT_CONTAINS_ | "not(contains)"
+MATCHESREGEXP | "matchesRegexp"
+STARTSWITH | "startsWith"
+ENDSWITH | "endsWith"
+ONEOF | "oneOf"
+NOT_ONEOF_ | "not(oneOf)"
+INCOLLECTION | "inCollection"
+NOT_INCOLLECTION_ | "not(inCollection)"
+EMPTY | "empty"
+NOT_EMPTY_ | "not(empty)"
+EXISTS | "exists"
+NOT_EXISTS_ | "not(exists)"
+ISTRUE | "isTrue"
+ISFALSE | "isFalse"
+CONTAINSATLEAST | "containsAtLeast"
+CONTAINSEXACTLY | "containsExactly"
+CONTAINSONEOF | "containsOneOf"
+CONTAINSNONEOF | "containsNoneOf"
+CONTAINSALLOF | "containsAllOf"
+AFTER | "after"
+BEFORE | "before"
+WITHIN | "within"
+NOT_WITHIN_ | "not(within)"
+IN | "in"
+NOT_IN_ | "not(in)"
+
+
+
diff --git a/docs/CheckAttributeBlockBase.md b/docs/CheckAttributeBlockBase.md
new file mode 100644
index 00000000..0aafe742
--- /dev/null
+++ b/docs/CheckAttributeBlockBase.md
@@ -0,0 +1,68 @@
+
+
+# CheckAttributeBlockBase
+
+Shared shape for attribute-comparison blocks: a single attribute evaluated by a named operator. The operator determines which additional fields are required: - `scalar` requires `value`. - `between` requires `min` and `max` values. - `list` requires `values`. - `list-with-count` requires `values` and `count`. - `unary` requires no extra fields.
+## Properties
+
+Name | Type | Description | Notes
+------------ | ------------- | ------------- | -------------
+**id** | **String** | Unique identifier for this block. | [optional] [readonly]
+**type** | **String** | Identifies the block variant and determines which additional properties are present in it. |
+**tags** | **List<String>** | Semantic labels attached to this block. | [optional] [readonly]
+**operator** | [**OperatorEnum**](#OperatorEnum) | The comparison operator applied to the attribute. |
+**attribute** | [**Object**](.md) | The attribute path identifier (e.g. \"$Session.Total\"). |
+**value** | [**Object**](.md) | The comparison value for scalar operators. | [optional]
+**min** | [**Object**](.md) | The minimum value allowed for the `between` operator. | [optional]
+**max** | [**Object**](.md) | The maximum value allowed for the `between` operator. | [optional]
+**start** | [**Object**](.md) | The start value for the `within` operator. | [optional]
+**end** | [**Object**](.md) | The end value for the `within` operator. | [optional]
+**startInclusive** | **Boolean** | When `true`, the `start` value is included in the range for the `within` operator. | [optional]
+**endInclusive** | **Boolean** | When `true`, the `end` value is included in the range for the `within` operator. | [optional]
+**timezoneInsensitive** | **Boolean** | Indicates whether the `within` operator ignores time zones and compares the wall-clock time only. When `false`, time zones are taken into account. | [optional]
+**values** | [**Object**](.md) | The set of values to match against for list operators. For location operators (`in`, `not(in)`), an array of objects with a `geometry` (see `GeoJSONGeometry`) and an optional `name`, or a string reference to a list attribute. | [optional]
+**count** | [**Object**](.md) | The count threshold for `containsAtLeast` and `containsExactly` operators. | [optional]
+**onFailure** | **List<Object>** | Promotion blocks evaluated when this block fails or returns false. | [optional]
+
+
+
+## Enum: OperatorEnum
+
+Name | Value
+---- | -----
+EQUALS | "equals"
+NOT_EQUALS_ | "not(equals)"
+LESSTHAN | "lessThan"
+LESSTHANOREQUAL | "lessThanOrEqual"
+GREATERTHAN | "greaterThan"
+GREATERTHANOREQUAL | "greaterThanOrEqual"
+BETWEEN | "between"
+CONTAINS | "contains"
+NOT_CONTAINS_ | "not(contains)"
+MATCHESREGEXP | "matchesRegexp"
+STARTSWITH | "startsWith"
+ENDSWITH | "endsWith"
+ONEOF | "oneOf"
+NOT_ONEOF_ | "not(oneOf)"
+INCOLLECTION | "inCollection"
+NOT_INCOLLECTION_ | "not(inCollection)"
+EMPTY | "empty"
+NOT_EMPTY_ | "not(empty)"
+EXISTS | "exists"
+NOT_EXISTS_ | "not(exists)"
+ISTRUE | "isTrue"
+ISFALSE | "isFalse"
+CONTAINSATLEAST | "containsAtLeast"
+CONTAINSEXACTLY | "containsExactly"
+CONTAINSONEOF | "containsOneOf"
+CONTAINSNONEOF | "containsNoneOf"
+CONTAINSALLOF | "containsAllOf"
+AFTER | "after"
+BEFORE | "before"
+WITHIN | "within"
+NOT_WITHIN_ | "not(within)"
+IN | "in"
+NOT_IN_ | "not(in)"
+
+
+
diff --git a/docs/CheckAudienceBlock.md b/docs/CheckAudienceBlock.md
new file mode 100644
index 00000000..e8348a79
--- /dev/null
+++ b/docs/CheckAudienceBlock.md
@@ -0,0 +1,39 @@
+
+
+# CheckAudienceBlock
+
+A block that checks whether a given customer profile is a member of an audience.
+## Properties
+
+Name | Type | Description | Notes
+------------ | ------------- | ------------- | -------------
+**id** | **String** | Unique identifier for this block. | [optional] [readonly]
+**type** | **String** | Identifies the block variant and determines which additional properties are present in it. |
+**tags** | **List<String>** | Semantic labels attached to this block. | [optional] [readonly]
+**operator** | [**OperatorEnum**](#OperatorEnum) | An indicator of how the block compares its elements. |
+**profile** | [**ProfileEnum**](#ProfileEnum) | The customer profile to check against the audience. `Current` targets the customer in the current session; `Advocate` targets the person who invited their friend via referral program. |
+**audience** | [**CheckAudienceBlockAudience**](CheckAudienceBlockAudience.md) | |
+**onFailure** | **List<Object>** | Promotion blocks evaluated when this block fails or returns false. | [optional]
+
+
+
+## Enum: OperatorEnum
+
+Name | Value
+---- | -----
+MEMBER | "member"
+NOT_MEMBER_ | "not(member)"
+JUSTJOINED | "justJoined"
+JUSTLEFT | "justLeft"
+
+
+
+## Enum: ProfileEnum
+
+Name | Value
+---- | -----
+CURRENT | "Current"
+ADVOCATE | "Advocate"
+
+
+
diff --git a/docs/CheckAudienceBlockAudience.md b/docs/CheckAudienceBlockAudience.md
new file mode 100644
index 00000000..dd768454
--- /dev/null
+++ b/docs/CheckAudienceBlockAudience.md
@@ -0,0 +1,16 @@
+
+
+# CheckAudienceBlockAudience
+
+The audience to check the profile against.
+## Properties
+
+Name | Type | Description | Notes
+------------ | ------------- | ------------- | -------------
+**id** | **Long** | The ID of the audience. |
+**name** | **String** | The display name of the audience. |
+**integration** | **String** | The Talon.One-supported [3rd-party platform](https://docs.talon.one/docs/dev/technology-partners/overview) that this audience was created in. For example, `mParticle`, `Segment`, `Shopify`, `Braze`, or `Iterable`. **Note:** If you do not integrate with any of these platforms, do not use this property. | [optional]
+**integrationId** | **String** | The ID of this audience in the third-party integration. **Note:** To create an audience that doesn't come from a 3rd party platform, do not use this property. | [optional]
+
+
+
diff --git a/docs/CheckBudgetBlock.md b/docs/CheckBudgetBlock.md
new file mode 100644
index 00000000..e0447bc2
--- /dev/null
+++ b/docs/CheckBudgetBlock.md
@@ -0,0 +1,49 @@
+
+
+# CheckBudgetBlock
+
+A block that verifies if a specific budget has sufficient limit available, and whether this limit meets or exceeds a specific value.
+## Properties
+
+Name | Type | Description | Notes
+------------ | ------------- | ------------- | -------------
+**id** | **String** | Unique identifier for this block. | [optional] [readonly]
+**type** | **String** | Identifies the block variant and determines which additional properties are present in it. |
+**tags** | **List<String>** | Semantic labels attached to this block. | [optional] [readonly]
+**operator** | [**OperatorEnum**](#OperatorEnum) | The comparison operator applied to the limit. `available` checks if there is budget available for a given limitable action; `enoughFor` checks if the available budget meets or exceeds a specific value limit. |
+**action** | [**ActionEnum**](#ActionEnum) | The limitable action to check. |
+**value** | [**BigDecimal**](BigDecimal.md) | The value to check against when using the `enoughFor` operator. | [optional]
+**onFailure** | **List<Object>** | Promotion blocks evaluated when this block fails or returns false. | [optional]
+
+
+
+## Enum: OperatorEnum
+
+Name | Value
+---- | -----
+AVAILABLE | "available"
+ENOUGHFOR | "enoughFor"
+
+
+
+## Enum: ActionEnum
+
+Name | Value
+---- | -----
+REDEEMCOUPON | "redeemCoupon"
+REDEEMREFERRAL | "redeemReferral"
+SETDISCOUNT | "setDiscount"
+CREATECOUPON | "createCoupon"
+CREATEREFERRAL | "createReferral"
+SETDISCOUNTEFFECT | "setDiscountEffect"
+CREATELOYALTYPOINTS | "createLoyaltyPoints"
+CREATELOYALTYPOINTSEFFECT | "createLoyaltyPointsEffect"
+REDEEMLOYALTYPOINTS | "redeemLoyaltyPoints"
+REDEEMLOYALTYPOINTSEFFECT | "redeemLoyaltyPointsEffect"
+AWARDGIVEAWAY | "awardGiveaway"
+ADDFREEITEMEFFECT | "addFreeItemEffect"
+CUSTOMEFFECT | "customEffect"
+CALLAPI | "callApi"
+
+
+
diff --git a/docs/CheckCouponBlock.md b/docs/CheckCouponBlock.md
new file mode 100644
index 00000000..929c9d54
--- /dev/null
+++ b/docs/CheckCouponBlock.md
@@ -0,0 +1,17 @@
+
+
+# CheckCouponBlock
+
+A block that validates the coupon code value and date.
+## Properties
+
+Name | Type | Description | Notes
+------------ | ------------- | ------------- | -------------
+**id** | **String** | Unique identifier for this block. | [optional] [readonly]
+**type** | **String** | Identifies the block variant and determines which additional properties are present in it. |
+**tags** | **List<String>** | Semantic labels attached to this block. | [optional] [readonly]
+**redeem** | **Boolean** | When `true`, the coupon code is redeemed. |
+**onFailure** | **List<Object>** | Promotion blocks evaluated when this block fails or returns false. | [optional]
+
+
+
diff --git a/docs/CheckEventBlock.md b/docs/CheckEventBlock.md
new file mode 100644
index 00000000..a09fc093
--- /dev/null
+++ b/docs/CheckEventBlock.md
@@ -0,0 +1,18 @@
+
+
+# CheckEventBlock
+
+A block that validates the event type.
+## Properties
+
+Name | Type | Description | Notes
+------------ | ------------- | ------------- | -------------
+**id** | **String** | Unique identifier for this block. | [optional] [readonly]
+**type** | **String** | Identifies the block variant and determines which additional properties are present in it. |
+**tags** | **List<String>** | Semantic labels attached to this block. | [optional] [readonly]
+**eventType** | **String** | The event type to check against. |
+**matchers** | **List<Object>** | | [optional]
+**onFailure** | **List<Object>** | Promotion blocks evaluated when this block fails or returns false. | [optional]
+
+
+
diff --git a/docs/CheckLoyaltyBalanceBlock.md b/docs/CheckLoyaltyBalanceBlock.md
new file mode 100644
index 00000000..806fc1b6
--- /dev/null
+++ b/docs/CheckLoyaltyBalanceBlock.md
@@ -0,0 +1,45 @@
+
+
+# CheckLoyaltyBalanceBlock
+
+A block that checks a specific loyalty program's ledger or subledger balance against a numeric value.
+## Properties
+
+Name | Type | Description | Notes
+------------ | ------------- | ------------- | -------------
+**id** | **String** | Unique identifier for this block. | [optional] [readonly]
+**type** | **String** | Identifies the block variant and determines which additional properties are present in it. |
+**tags** | **List<String>** | Semantic labels attached to this block. | [optional] [readonly]
+**operator** | [**OperatorEnum**](#OperatorEnum) | An indicator of how the block compares the balance to the value. |
+**program** | [**CheckLoyaltyBalanceBlockProgram**](CheckLoyaltyBalanceBlockProgram.md) | |
+**subledger** | **String** | The name of the subledger to check the balance of. Can be empty if this block checks the loyalty program's main ledger balance instead of a subledger. |
+**balance** | [**BalanceEnum**](#BalanceEnum) | The type of balance to check: - `current` is the sum of currently active points - `pending` is the sum of pending points. - `negative` is the sum of negative points. - `tentativeCurrent` is the tentative points balance within the current open customer session. |
+**value** | [**BigDecimal**](BigDecimal.md) | The numeric value to compare the balance against. |
+**onFailure** | **List<Object>** | Promotion blocks evaluated when this block fails or returns false. | [optional]
+
+
+
+## Enum: OperatorEnum
+
+Name | Value
+---- | -----
+EQUALS | "equals"
+NOT_EQUALS_ | "not(equals)"
+LESSTHAN | "lessThan"
+LESSTHANOREQUAL | "lessThanOrEqual"
+GREATERTHAN | "greaterThan"
+GREATERTHANOREQUAL | "greaterThanOrEqual"
+
+
+
+## Enum: BalanceEnum
+
+Name | Value
+---- | -----
+CURRENT | "current"
+PENDING | "pending"
+NEGATIVE | "negative"
+TENTATIVECURRENT | "tentativeCurrent"
+
+
+
diff --git a/docs/CheckLoyaltyBalanceBlockProgram.md b/docs/CheckLoyaltyBalanceBlockProgram.md
new file mode 100644
index 00000000..2069c381
--- /dev/null
+++ b/docs/CheckLoyaltyBalanceBlockProgram.md
@@ -0,0 +1,15 @@
+
+
+# CheckLoyaltyBalanceBlockProgram
+
+The loyalty program whose ledger balance is checked.
+## Properties
+
+Name | Type | Description | Notes
+------------ | ------------- | ------------- | -------------
+**id** | **Long** | The ID of the loyalty program. |
+**name** | **String** | The internal name of the loyalty program. |
+**title** | **String** | The display name of the loyalty program. |
+
+
+
diff --git a/docs/CheckLoyaltyCardBlock.md b/docs/CheckLoyaltyCardBlock.md
new file mode 100644
index 00000000..c132feab
--- /dev/null
+++ b/docs/CheckLoyaltyCardBlock.md
@@ -0,0 +1,26 @@
+
+
+# CheckLoyaltyCardBlock
+
+A block that verifies whether a loyalty card is linked to the user's profile.
+## Properties
+
+Name | Type | Description | Notes
+------------ | ------------- | ------------- | -------------
+**id** | **String** | Unique identifier for this block. | [optional] [readonly]
+**type** | **String** | Identifies the block variant and determines which additional properties are present in it. |
+**tags** | **List<String>** | Semantic labels attached to this block. | [optional] [readonly]
+**operator** | [**OperatorEnum**](#OperatorEnum) | An indicator of how the block compares its elements. |
+**onFailure** | **List<Object>** | Promotion blocks evaluated when this block fails or returns false. | [optional]
+
+
+
+## Enum: OperatorEnum
+
+Name | Value
+---- | -----
+LINKED | "linked"
+NOT_LINKED_ | "not(linked)"
+
+
+
diff --git a/docs/CheckReferralBlock.md b/docs/CheckReferralBlock.md
new file mode 100644
index 00000000..7fff9e91
--- /dev/null
+++ b/docs/CheckReferralBlock.md
@@ -0,0 +1,17 @@
+
+
+# CheckReferralBlock
+
+A block that validates the referral code value and date.
+## Properties
+
+Name | Type | Description | Notes
+------------ | ------------- | ------------- | -------------
+**id** | **String** | Unique identifier for this block. | [optional] [readonly]
+**type** | **String** | Identifies the block variant and determines which additional properties are present in it. |
+**tags** | **List<String>** | Semantic labels attached to this block. | [optional] [readonly]
+**redeem** | **Boolean** | When `true`, the referral code is redeemed. |
+**onFailure** | **List<Object>** | Promotion blocks evaluated when this block fails or returns false. | [optional]
+
+
+
diff --git a/docs/CheckTierBlock.md b/docs/CheckTierBlock.md
new file mode 100644
index 00000000..2237af68
--- /dev/null
+++ b/docs/CheckTierBlock.md
@@ -0,0 +1,28 @@
+
+
+# CheckTierBlock
+
+A block that checks whether a user profile is a member of a specific tier within a loyalty program.
+## Properties
+
+Name | Type | Description | Notes
+------------ | ------------- | ------------- | -------------
+**id** | **String** | Unique identifier for this block. | [optional] [readonly]
+**type** | **String** | Identifies the block variant and determines which additional properties are present in it. |
+**tags** | **List<String>** | Semantic labels attached to this block. | [optional] [readonly]
+**operator** | [**OperatorEnum**](#OperatorEnum) | An indicator of how the block compares its elements. |
+**subledger** | **String** | The name of the subledger to check the balance of. Can be empty if this block checks the loyalty program's main ledger balance instead of a subledger. |
+**tier** | [**CheckTierBlockTier**](CheckTierBlockTier.md) | |
+**onFailure** | **List<Object>** | Promotion blocks evaluated when this block fails or returns false. | [optional]
+
+
+
+## Enum: OperatorEnum
+
+Name | Value
+---- | -----
+MEMBER | "member"
+NOT_MEMBER_ | "not(member)"
+
+
+
diff --git a/docs/CheckTierBlockTier.md b/docs/CheckTierBlockTier.md
new file mode 100644
index 00000000..af0cd813
--- /dev/null
+++ b/docs/CheckTierBlockTier.md
@@ -0,0 +1,15 @@
+
+
+# CheckTierBlockTier
+
+## Properties
+
+Name | Type | Description | Notes
+------------ | ------------- | ------------- | -------------
+**id** | **Long** | The ID of the tier. |
+**name** | **String** | The display name of the tier. |
+**minPoints** | [**BigDecimal**](BigDecimal.md) | The minimum amount of points required to enter the tier. |
+**upperLimit** | [**BigDecimal**](BigDecimal.md) | | [optional]
+
+
+
diff --git a/docs/ConfirmRisksRequest.md b/docs/ConfirmRisksRequest.md
new file mode 100644
index 00000000..6d63d643
--- /dev/null
+++ b/docs/ConfirmRisksRequest.md
@@ -0,0 +1,13 @@
+
+
+# ConfirmRisksRequest
+
+## Properties
+
+Name | Type | Description | Notes
+------------ | ------------- | ------------- | -------------
+**riskIds** | **List<Long>** | The IDs of the risks to confirm. |
+**comment** | **String** | Free-text description of how the risk was resolved. |
+
+
+
diff --git a/docs/CouponCreatedEffectProps.md b/docs/CouponCreatedEffectProps.md
index 9ce3e9bb..ddde4430 100644
--- a/docs/CouponCreatedEffectProps.md
+++ b/docs/CouponCreatedEffectProps.md
@@ -2,7 +2,7 @@
# CouponCreatedEffectProps
-The properties specific to the \"couponCreated\" effect. This gets triggered whenever a validated rule contained a \"create coupon\" effect, and a coupon was created for a customer. See \"createdCoupons\" on the response for all details of this coupon.
+This effect indicates that a coupon was created. For referrals and retention marketing, a common use case is to generate a coupon that can only be redeemed by one specific customer. Handle this effect by notifying the recipient about their new coupon code.
## Properties
Name | Type | Description | Notes
diff --git a/docs/CouponEligibilityInfo.md b/docs/CouponEligibilityInfo.md
new file mode 100644
index 00000000..3cd50925
--- /dev/null
+++ b/docs/CouponEligibilityInfo.md
@@ -0,0 +1,14 @@
+
+
+# CouponEligibilityInfo
+
+## Properties
+
+Name | Type | Description | Notes
+------------ | ------------- | ------------- | -------------
+**campaignId** | **Long** | The ID of the campaign that owns the coupon. |
+**campaignName** | **String** | The name of the campaign that owns the coupon. |
+**failureReason** | **String** | The reason the coupon is not eligible, if applicable. | [optional]
+
+
+
diff --git a/docs/CreateAchievementV2.md b/docs/CreateAchievementV2.md
index 659ed192..e33af71a 100644
--- a/docs/CreateAchievementV2.md
+++ b/docs/CreateAchievementV2.md
@@ -16,8 +16,8 @@ Name | Type | Description | Notes
**fixedStartDate** | [**OffsetDateTime**](OffsetDateTime.md) | The achievement's start date when `activationPolicy` is set to `fixed_schedule`. **Note:** It must be an RFC3339 timestamp string. | [optional]
**endDate** | [**OffsetDateTime**](OffsetDateTime.md) | The achievement's end date. If defined, customers cannot participate in the achievement after this date. **Note:** It must be an RFC3339 timestamp string. | [optional]
**allowRollbackAfterCompletion** | **Boolean** | When `true`, customer progress can be rolled back in completed achievements. | [optional]
-**sandbox** | **Boolean** | Indicates if this achievement is a live or sandbox achievement. Achievements of a given type can only be connected to Applications of the same type. |
**subscribedApplications** | **List<Long>** | A list containing the IDs of all applications that are subscribed to A list containing the IDs of all Applications that are connected to this achievement. | [optional]
+**sandbox** | **Boolean** | Indicates if this achievement is a live or sandbox achievement. Achievements of a given type can only be connected to Applications of the same type. |
**timezone** | **String** | A string containing an IANA timezone descriptor. |
diff --git a/docs/CreateCouponBlock.md b/docs/CreateCouponBlock.md
new file mode 100644
index 00000000..5eb6df2f
--- /dev/null
+++ b/docs/CreateCouponBlock.md
@@ -0,0 +1,25 @@
+
+
+# CreateCouponBlock
+
+A block that creates a coupon code.
+## Properties
+
+Name | Type | Description | Notes
+------------ | ------------- | ------------- | -------------
+**id** | **String** | Unique identifier for this block. | [optional] [readonly]
+**type** | **String** | Identifies the block variant and determines which additional properties are present in it. |
+**tags** | **List<String>** | Semantic labels attached to this block. | [optional] [readonly]
+**campaignId** | [**Object**](.md) | The ID of the campaign in which the coupon code is created. |
+**recipientId** | **String** | The integration ID of the customer that is allowed to redeem this coupon. |
+**storeInSession** | **Boolean** | When `true`, the coupon is stored in the session. |
+**usageLimit** | [**Object**](.md) | The number of times the coupon code can be redeemed. `0` means unlimited redemptions, but any campaign usage limits still apply. Either a numeric scalar or a `{{expression}}` string that resolves to a number at evaluation time. | [optional]
+**discountLimit** | [**Object**](.md) | The total discount value that the code can give. Typically used to represent a gift card value. Either a numeric scalar or a `{{expression}}` string that resolves to a number at evaluation time. | [optional]
+**startDate** | [**Object**](.md) | Timestamp at which point the coupon becomes valid. | [optional]
+**expiryDate** | [**Object**](.md) | Expiration date of the coupon. Coupon never expires if this is omitted. | [optional]
+**attributes** | [**Object**](.md) | Custom attributes associated with this coupon code. | [optional]
+**validCharacters** | **String** | Characters used to generate the random parts of a code. | [optional]
+**pattern** | **String** | The pattern used to generate codes, such as coupon codes, referral codes, and loyalty cards. The character `#` is a placeholder and is replaced by a random character from the `validCharacters` set. | [optional]
+
+
+
diff --git a/docs/CreateReferralBlock.md b/docs/CreateReferralBlock.md
new file mode 100644
index 00000000..f31b066a
--- /dev/null
+++ b/docs/CreateReferralBlock.md
@@ -0,0 +1,24 @@
+
+
+# CreateReferralBlock
+
+A block that creates a referral code.
+## Properties
+
+Name | Type | Description | Notes
+------------ | ------------- | ------------- | -------------
+**id** | **String** | Unique identifier for this block. | [optional] [readonly]
+**type** | **String** | Identifies the block variant and determines which additional properties are present in it. |
+**tags** | **List<String>** | Semantic labels attached to this block. | [optional] [readonly]
+**campaignId** | [**Object**](.md) | The ID of the campaign in which the referral code is created. Either a numeric scalar or a `{{expression}}` string that resolves to a number at evaluation time. |
+**friendId** | **String** | An optional integration ID of the friend's profile. |
+**storeInSession** | **Boolean** | When `true`, the referral code is stored in the session. |
+**usageLimit** | [**Object**](.md) | The number of times the referral code code can be redeemed. `0` means unlimited redemptions, but any campaign usage limits still apply. Either a numeric scalar or a `{{expression}}` string that resolves to a number at evaluation time. | [optional]
+**startDate** | [**Object**](.md) | Timestamp at which point the referral code becomes valid. | [optional]
+**expiryDate** | [**Object**](.md) | Expiration date of the referral code. Referral code never expires if this is omitted. | [optional]
+**attributes** | [**Object**](.md) | Custom attributes associated with this referral code. | [optional]
+**validCharacters** | **String** | Characters used to generate the random parts of a code. | [optional]
+**pattern** | **String** | The pattern used to generate codes, such as coupon codes, referral codes, and loyalty cards. The character `#` is a placeholder and is replaced by a random character from the `validCharacters` set. | [optional]
+
+
+
diff --git a/docs/CustomEffectProps.md b/docs/CustomEffectProps.md
index 2209dfc1..4afa6daf 100644
--- a/docs/CustomEffectProps.md
+++ b/docs/CustomEffectProps.md
@@ -2,7 +2,7 @@
# CustomEffectProps
-Effect containing custom payload.
+If you want to return data as an effect but no effect matches your use case, you can [create a custom effect](https://docs.talon.one/docs/dev/tutorials/create-custom-effects). Custom effects can be used as both rule effects and failure effects. The structure of a custom effect depends on your specifications but is always named `customEffect`.
## Properties
Name | Type | Description | Notes
diff --git a/docs/CustomerAchievement.md b/docs/CustomerAchievement.md
new file mode 100644
index 00000000..c9e4ea6a
--- /dev/null
+++ b/docs/CustomerAchievement.md
@@ -0,0 +1,45 @@
+
+
+# CustomerAchievement
+
+A customer's progress in an achievement, together with the achievement definition.
+## Properties
+
+Name | Type | Description | Notes
+------------ | ------------- | ------------- | -------------
+**id** | **Long** | The internal ID of the achievement. |
+**name** | **String** | The internal name of the achievement used in API requests. |
+**title** | **String** | The display name of the achievement in the Campaign Manager. |
+**description** | **String** | The description of the achievement in the Campaign Manager. |
+**target** | [**BigDecimal**](BigDecimal.md) | The required number of actions or the transactional milestone to complete the achievement. |
+**recurrencePolicy** | [**RecurrencePolicyEnum**](#RecurrencePolicyEnum) | The policy that determines if and how the achievement recurs. - `no_recurrence`: The achievement can be completed only once. - `on_expiration`: The achievement resets after it expires and becomes available again. - `on_completion`: When the customer progress status reaches `completed`, the achievement resets and becomes available again. |
+**activationPolicy** | [**ActivationPolicyEnum**](#ActivationPolicyEnum) | The policy that determines how the achievement starts, ends, or resets. - `user_action`: The achievement ends or resets relative to when the customer started the achievement. - `fixed_schedule`: The achievement starts, ends, or resets for all customers following a fixed schedule. |
+**fixedStartDate** | [**OffsetDateTime**](OffsetDateTime.md) | The achievement's start date when `activationPolicy` is equal to `fixed_schedule`. **Note:** It is an RFC3339 timestamp string. | [optional]
+**endDate** | [**OffsetDateTime**](OffsetDateTime.md) | The achievement's end date. If defined, customers cannot participate in the achievement after this date. **Note:** It is an RFC3339 timestamp string. | [optional]
+**allowRollbackAfterCompletion** | **Boolean** | When `true`, customer progress can be rolled back in completed achievements. |
+**campaignId** | **Long** | This property is **deprecated**. Use `referencedByCampaigns` instead. This field contains the first campaign ID from the related `referencedByCampaigns`, and is omitted when `referencedByCampaigns` is empty. | [optional]
+**campaignIds** | **List<Long>** | The IDs of the campaigns that reference this achievement, in ascending order. |
+**referencedByCampaigns** | [**List<CampaignReference>**](CampaignReference.md) | The campaigns that reference this achievement. They are sorted in ascending order by their `id`. |
+**currentProgress** | [**AchievementProgress**](AchievementProgress.md) | | [optional]
+
+
+
+## Enum: RecurrencePolicyEnum
+
+Name | Value
+---- | -----
+NO_RECURRENCE | "no_recurrence"
+ON_EXPIRATION | "on_expiration"
+ON_COMPLETION | "on_completion"
+
+
+
+## Enum: ActivationPolicyEnum
+
+Name | Value
+---- | -----
+USER_ACTION | "user_action"
+FIXED_SCHEDULE | "fixed_schedule"
+
+
+
diff --git a/docs/CustomerInventory.md b/docs/CustomerInventory.md
index a33eb4e5..5644740d 100644
--- a/docs/CustomerInventory.md
+++ b/docs/CustomerInventory.md
@@ -12,6 +12,7 @@ Name | Type | Description | Notes
**coupons** | [**List<InventoryCoupon>**](InventoryCoupon.md) | The coupons reserved by this profile. This array includes hard and soft reservations. | [optional]
**giveaways** | [**List<Giveaway>**](Giveaway.md) | | [optional]
**achievements** | [**List<AchievementProgressWithDefinition>**](AchievementProgressWithDefinition.md) | | [optional]
+**rewards** | [**List<RewardWithUnlocks>**](RewardWithUnlocks.md) | The customer rewards that are `unlocked` and not yet `used`. | [optional]
diff --git a/docs/CustomerProfileIntegrationRequestV2.md b/docs/CustomerProfileIntegrationRequestV2.md
index 25b2ccb1..30053d3d 100644
--- a/docs/CustomerProfileIntegrationRequestV2.md
+++ b/docs/CustomerProfileIntegrationRequestV2.md
@@ -24,6 +24,9 @@ LOYALTY | "loyalty"
EVENT | "event"
AWARDEDGIVEAWAYS | "awardedGiveaways"
RULEFAILUREREASONS | "ruleFailureReasons"
+CAMPAIGNELIGIBILITY | "campaignEligibility"
+ACHIEVEMENTS | "achievements"
+UNLOCKEDREWARDS | "unlockedRewards"
diff --git a/docs/CustomerProfileIntegrationResponseV2.md b/docs/CustomerProfileIntegrationResponseV2.md
index af5c7347..e7bffe4b 100644
--- a/docs/CustomerProfileIntegrationResponseV2.md
+++ b/docs/CustomerProfileIntegrationResponseV2.md
@@ -12,7 +12,9 @@ Name | Type | Description | Notes
**loyalty** | [**Loyalty**](Loyalty.md) | | [optional]
**triggeredCampaigns** | [**List<Campaign>**](Campaign.md) | | [optional]
**ruleFailureReasons** | [**List<RuleFailureReason>**](RuleFailureReason.md) | | [optional]
+**campaignEligibility** | [**List<CampaignEligibility>**](CampaignEligibility.md) | | [optional]
**awardedGiveaways** | [**List<Giveaway>**](Giveaway.md) | | [optional]
+**rewards** | [**List<RewardWithUnlocks>**](RewardWithUnlocks.md) | The rewards for the customer profile. | [optional]
**effects** | [**List<Effect>**](Effect.md) | The effects generated by the rules in your running campaigns. See [API effects](https://docs.talon.one/docs/dev/integration-api/api-effects). |
**createdCoupons** | [**List<Coupon>**](Coupon.md) | |
**createdReferrals** | [**List<Referral>**](Referral.md) | |
diff --git a/docs/CustomerProfileReward.md b/docs/CustomerProfileReward.md
new file mode 100644
index 00000000..964736b2
--- /dev/null
+++ b/docs/CustomerProfileReward.md
@@ -0,0 +1,35 @@
+
+
+# CustomerProfileReward
+
+A reward instance held by a customer profile.
+## Properties
+
+Name | Type | Description | Notes
+------------ | ------------- | ------------- | -------------
+**id** | **Long** | The ID of the customer reward instance. A customer profile can have multiple instances of the same reward. |
+**integrationId** | **String** | The integration ID of the customer reward instance. |
+**rewardId** | **Long** | The ID of the reward this instance belongs to. |
+**rewardIntegrationId** | **String** | The integration ID of the reward this instance belongs to. |
+**rewardName** | **String** | The name of the reward. |
+**description** | **String** | The customer-facing description of the reward. | [optional]
+**rule** | [**RuleMetadata**](RuleMetadata.md) | | [optional]
+**status** | [**StatusEnum**](#StatusEnum) | The status of the customer reward: - `unlocked`: The reward is available for use. - `used`: The reward has been used. |
+**unlockedAt** | [**OffsetDateTime**](OffsetDateTime.md) | The date and time when the reward was unlocked. |
+**unlockedByProfileIntegrationId** | **String** | The integration ID of the customer profile that unlocked the reward. For rewards unlocked with a loyalty card, this can be any customer profile linked to that loyalty card. | [optional]
+**usedAt** | [**OffsetDateTime**](OffsetDateTime.md) | The date and time when the reward was used. | [optional]
+**usedByProfileIntegrationId** | **String** | The integration ID of the customer profile that used the reward. For rewards unlocked with a loyalty card, this can be any customer profile linked to that loyalty card. Only returned when the reward has been used. | [optional]
+**loyaltyProgramId** | **Long** | The ID of the loyalty program that the loyalty card belongs to. Only returned for rewards unlocked with a loyalty card. | [optional]
+**loyaltyCardIdentifier** | **String** | The identifier of the loyalty card, which must match the regular expression `^[A-Za-z0-9._%+@-]+$`. | [optional]
+
+
+
+## Enum: StatusEnum
+
+Name | Value
+---- | -----
+UNLOCKED | "unlocked"
+USED | "used"
+
+
+
diff --git a/docs/CustomerReward.md b/docs/CustomerReward.md
new file mode 100644
index 00000000..78658461
--- /dev/null
+++ b/docs/CustomerReward.md
@@ -0,0 +1,17 @@
+
+
+# CustomerReward
+
+A reward unlocked by a customer profile.
+## Properties
+
+Name | Type | Description | Notes
+------------ | ------------- | ------------- | -------------
+**applicationId** | **Long** | The ID of the Application in which the reward was unlocked. |
+**profileIntegrationId** | **String** | The integration ID of the customer profile that unlocked this reward. |
+**integrationId** | **String** | The integration ID assigned to this reward unlock. |
+**unlockedAt** | [**OffsetDateTime**](OffsetDateTime.md) | The date and time when the reward was unlocked. |
+**usedAt** | [**OffsetDateTime**](OffsetDateTime.md) | The date and time when the reward was used. | [optional]
+
+
+
diff --git a/docs/CustomerSession.md b/docs/CustomerSession.md
index 6160b45d..5085e812 100644
--- a/docs/CustomerSession.md
+++ b/docs/CustomerSession.md
@@ -12,7 +12,7 @@ Name | Type | Description | Notes
**profileId** | **String** | ID of the customer profile set by your integration layer. **Note:** If the customer does not yet have a known `profileId`, we recommend you use a guest `profileId`. |
**coupon** | **String** | Any coupon code entered. |
**referral** | **String** | Any referral code entered. |
-**state** | [**StateEnum**](#StateEnum) | Indicates the current state of the session. Sessions can be created as `open` or `closed`. The state transitions are: 1. `open` → `closed` 2. `open` → `cancelled` 3. `closed` → `cancelled` or `partially_returned` 4. `partially_returned` → `cancelled` For more information, see [Customer session states](https://docs.talon.one/docs/dev/concepts/entities/customer-sessions). |
+**state** | [**StateEnum**](#StateEnum) | Indicates the current state of the session. Sessions can be created as `open` or `closed`. The state transitions are: 1. `open` -> `closed` 2. `open` -> `cancelled` 3. `closed` -> `cancelled` or `partially_returned` 4. `partially_returned` -> `cancelled` For more information, see [Customer session states](https://docs.talon.one/docs/dev/concepts/entities/customer-sessions). |
**cartItems** | [**List<CartItem>**](CartItem.md) | Serialized JSON representation. |
**identifiers** | **List<String>** | Session custom identifiers that you can set limits on or use inside your rules. For example, you can use IP addresses as identifiers to potentially identify devices and limit discounts abuse in case of customers creating multiple accounts. See the [tutorial](https://docs.talon.one/docs/dev/tutorials/using-identifiers). | [optional]
**total** | [**BigDecimal**](BigDecimal.md) | The total sum of the cart in one session. |
diff --git a/docs/CustomerSessionV2.md b/docs/CustomerSessionV2.md
index 1e10406c..c2051cc0 100644
--- a/docs/CustomerSessionV2.md
+++ b/docs/CustomerSessionV2.md
@@ -17,7 +17,8 @@ Name | Type | Description | Notes
**couponCodes** | **List<String>** | Any coupon codes entered. **Important - for requests only**: - If you [create a coupon budget](https://docs.talon.one/docs/product/campaigns/settings/managing-campaign-budgets/#budget-types) for your campaign, ensure the session contains a coupon code by the time you close it. - In requests where `dry=false`, providing an empty array discards any previous coupons. To avoid this, omit the parameter entirely. | [optional]
**referralCode** | **String** | Any referral code entered. **Important - for requests only**: - If you [create a referral budget](https://docs.talon.one/docs/product/campaigns/settings/managing-campaign-budgets/#budget-types) for your campaign, ensure the session contains a referral code by the time you close it. - In requests where `dry=false`, providing an empty value discards the previous referral code. To avoid this, omit the parameter entirely. | [optional]
**loyaltyCards** | **List<String>** | Identifier of a loyalty card. | [optional]
-**state** | [**StateEnum**](#StateEnum) | Indicates the current state of the session. Sessions can be created as `open` or `closed`. The state transitions are: 1. `open` → `closed` 2. `open` → `cancelled` 3. Either: - `closed` → `cancelled` (**only** via [Update customer session](https://docs.talon.one/integration-api#tag/Customer-sessions/operation/updateCustomerSessionV2)) or - `closed` → `partially_returned` (**only** via [Return cart items](https://docs.talon.one/integration-api#tag/Customer-sessions/operation/returnCartItems)) - `closed` → `open` (**only** via [Reopen customer session](https://docs.talon.one/integration-api#tag/Customer-sessions/operation/reopenCustomerSession)) 4. `partially_returned` → `cancelled` For more information, see [Customer session states](https://docs.talon.one/docs/dev/concepts/entities/customer-sessions). |
+**rewardIntegrationIds** | **List<String>** | The integration IDs of the unlocked rewards that can be used in this session. | [optional]
+**state** | [**StateEnum**](#StateEnum) | Indicates the current state of the session. Sessions can be created as `open` or `closed`. The state transitions are: 1. `open` -> `closed` 2. `open` -> `cancelled` 3. Either: - `closed` -> `cancelled` (**only** via [Update customer session](https://docs.talon.one/integration-api#tag/Customer-sessions/operation/updateCustomerSessionV2)) or - `closed` -> `partially_returned` (**only** via [Return cart items](https://docs.talon.one/integration-api#tag/Customer-sessions/operation/returnCartItems)) - `closed` -> `open` (**only** via [Reopen customer session](https://docs.talon.one/integration-api#tag/Customer-sessions/operation/reopenCustomerSession)) 4. `partially_returned` -> `cancelled` For more information, see [Customer session states](https://docs.talon.one/docs/dev/concepts/entities/customer-sessions). |
**cartItems** | [**List<CartItem>**](CartItem.md) | The items to add to this session. **Do not exceed 1000 items** and ensure the sum of all cart item's `quantity` **does not exceed 10.000** per request. |
**experimentVariantAllocations** | [**List<ExperimentVariantAllocation>**](ExperimentVariantAllocation.md) | The experiment variant allocations to add to this session. | [optional]
**additionalCosts** | [**Map<String, AdditionalCost>**](AdditionalCost.md) | Use this property to set a value for the additional costs of this session, such as a shipping cost. They must be created in the Campaign Manager before you set them with this property. See [Managing additional costs](https://docs.talon.one/docs/product/account/dev-tools/managing-additional-costs). | [optional]
@@ -28,6 +29,7 @@ Name | Type | Description | Notes
**total** | [**BigDecimal**](BigDecimal.md) | The total value of cart items and additional costs in the session, before any discounts are applied. |
**cartItemTotal** | [**BigDecimal**](BigDecimal.md) | The total value of cart items, before any discounts are applied. |
**additionalCostTotal** | [**BigDecimal**](BigDecimal.md) | The total value of additional costs, before any discounts are applied. |
+**cartItemAdditionalCostTotal** | [**BigDecimal**](BigDecimal.md) | The total value of additional costs applied to individual items, before any discounts are applied. | [readonly]
**updated** | [**OffsetDateTime**](OffsetDateTime.md) | Timestamp of the most recent event received on this session. |
diff --git a/docs/DeductLoyaltyPointsEffectProps.md b/docs/DeductLoyaltyPointsEffectProps.md
index 76a9d1b3..756d1d49 100644
--- a/docs/DeductLoyaltyPointsEffectProps.md
+++ b/docs/DeductLoyaltyPointsEffectProps.md
@@ -2,17 +2,17 @@
# DeductLoyaltyPointsEffectProps
-The properties specific to the \"deductLoyaltyPoints\" effect. This gets triggered whenever a validated rule contained a condition to only trigger when the given number of loyalty points could be deduced. These points are automatically stored and managed inside Talon.One.
+This effect is triggered when a customer redeems loyalty points. The points are deducted from their active point balance. If the loyalty program is card-based, use the `cardIdentifier` property to identify the loyalty card from which these points are deducted. The Rule Engine deducts points in this order: - Points with the earliest expiry date are deducted first, regardless of when they were added. - Points with an unlimited expiry date are deducted last. - For points with an unlimited expiry date, the points awarded first are deducted first. The points only persist when the session is closed.
## Properties
Name | Type | Description | Notes
------------ | ------------- | ------------- | -------------
**ruleTitle** | **String** | The title of the rule that contained triggered this points deduction. |
-**programId** | **Long** | The ID of the loyalty program where these points were added. |
-**subLedgerId** | **String** | The ID of the subledger within the loyalty program where these points were added. |
+**programId** | **Long** | The ID of the loyalty program from which these points were deducted. |
+**subLedgerId** | **String** | The ID of the subledger within the loyalty program from which these points were deducted. |
**value** | [**BigDecimal**](BigDecimal.md) | The amount of points that were deducted. |
-**transactionUUID** | **String** | The identifier of this deduction in the loyalty ledger. |
-**name** | **String** | The name property gets one of the following two values. It can be the loyalty program name or it can represent a reason for the respective deduction of loyalty points. The latter is an optional value defined in a deduction rule. |
+**transactionUUID** | **String** | The identifier of this loyalty point transaction. |
+**name** | **String** | The reason of this loyalty points deduction. |
**cardIdentifier** | **String** | The identifier of the loyalty card, which must match the regular expression `^[A-Za-z0-9._%+@-]+$`. | [optional]
diff --git a/docs/DigitalPass.md b/docs/DigitalPass.md
new file mode 100644
index 00000000..3e0f1843
--- /dev/null
+++ b/docs/DigitalPass.md
@@ -0,0 +1,23 @@
+
+
+# DigitalPass
+
+## Properties
+
+Name | Type | Description | Notes
+------------ | ------------- | ------------- | -------------
+**passId** | **String** | The ID of the generated digital pass. |
+**passTemplateId** | **String** | The ID of the digital pass template used to generate the pass. |
+**status** | [**StatusEnum**](#StatusEnum) | The status of the digital pass. |
+**passUrl** | [**URI**](URI.md) | The URL you can use to let the customer add the digital pass to their wallet. |
+
+
+
+## Enum: StatusEnum
+
+Name | Value
+---- | -----
+CREATED | "created"
+
+
+
diff --git a/docs/DiscardRisksRequest.md b/docs/DiscardRisksRequest.md
new file mode 100644
index 00000000..96336597
--- /dev/null
+++ b/docs/DiscardRisksRequest.md
@@ -0,0 +1,23 @@
+
+
+# DiscardRisksRequest
+
+## Properties
+
+Name | Type | Description | Notes
+------------ | ------------- | ------------- | -------------
+**riskIds** | **List<Long>** | The IDs of the risks to discard. |
+**reason** | [**ReasonEnum**](#ReasonEnum) | The reason the risks are being discarded. |
+**comment** | **String** | Free-text description of why the risks are being discarded. Required when `reason` is `other`, optional for `expected_behavior`. | [optional]
+
+
+
+## Enum: ReasonEnum
+
+Name | Value
+---- | -----
+EXPECTED_BEHAVIOR | "expected_behavior"
+OTHER | "other"
+
+
+
diff --git a/docs/Effect.md b/docs/Effect.md
index 9922c6cd..0190d437 100644
--- a/docs/Effect.md
+++ b/docs/Effect.md
@@ -23,6 +23,7 @@ Name | Type | Description | Notes
**selectedPriceType** | **String** | The selected price type for the SKU targeted by this effect. | [optional]
**selectedPrice** | [**BigDecimal**](BigDecimal.md) | The value of the selected price type to apply to the SKU targeted by this effect, before any discounts are applied. | [optional]
**adjustmentReferenceId** | [**UUID**](UUID.md) | The reference identifier of the selected price adjustment for this SKU. This is only returned if the `selectedPrice` resulted from a price adjustment. | [optional]
+**rewardId** | **Long** | The ID of the reward that was being evaluated when this effect was triggered. | [optional]
**props** | [**Object**](.md) | |
diff --git a/docs/EffectEntity.md b/docs/EffectEntity.md
index 6a3f73d7..a11ba6b3 100644
--- a/docs/EffectEntity.md
+++ b/docs/EffectEntity.md
@@ -23,6 +23,7 @@ Name | Type | Description | Notes
**selectedPriceType** | **String** | The selected price type for the SKU targeted by this effect. | [optional]
**selectedPrice** | [**BigDecimal**](BigDecimal.md) | The value of the selected price type to apply to the SKU targeted by this effect, before any discounts are applied. | [optional]
**adjustmentReferenceId** | [**UUID**](UUID.md) | The reference identifier of the selected price adjustment for this SKU. This is only returned if the `selectedPrice` resulted from a price adjustment. | [optional]
+**rewardId** | **Long** | The ID of the reward that was being evaluated when this effect was triggered. | [optional]
diff --git a/docs/ErrorEffectProps.md b/docs/ErrorEffectProps.md
index e46da507..7332c5a8 100644
--- a/docs/ErrorEffectProps.md
+++ b/docs/ErrorEffectProps.md
@@ -2,7 +2,7 @@
# ErrorEffectProps
-Whenever an error occurred during evaluation, we return an error effect. This should never happen for rules created in the rule builder.
+This effect is triggered whenever an error occurs during rule evaluation. This effect only provides information about what the error is.
## Properties
Name | Type | Description | Notes
diff --git a/docs/Event.md b/docs/Event.md
index a9035102..86949ca4 100644
--- a/docs/Event.md
+++ b/docs/Event.md
@@ -11,8 +11,9 @@ Name | Type | Description | Notes
**applicationId** | **Long** | The ID of the Application that owns this entity. |
**profileId** | **String** | ID of the customer profile set by your integration layer. **Note:** If the customer does not yet have a known `profileId`, we recommend you use a guest `profileId`. | [optional]
**storeIntegrationId** | **String** | The integration ID of the store. You choose this ID when you create a store. | [optional]
-**type** | **String** | A string representing the event. Must not be a reserved event name. |
+**type** | **String** | The name of the event. Must be a [custom event](https://docs.talon.one/docs/dev/concepts/entities/events#custom-events), not a built-in event. |
**attributes** | [**Object**](.md) | Arbitrary additional JSON data associated with the event. |
+**integrationId** | **String** | The unique ID of the event. Only one event with this ID can be registered. | [optional]
**sessionId** | **String** | The ID of the session that this event occurred in. | [optional]
**effects** | **List<Object>** | An array of effects generated by the rules of the enabled campaigns of the Application. You decide how to apply them in your system. See the list of [API effects](https://docs.talon.one/docs/dev/integration-api/api-effects). |
**ledgerEntries** | [**List<LedgerEntry>**](LedgerEntry.md) | Ledger entries for the event. | [optional]
diff --git a/docs/EventAttributesEntity.md b/docs/EventAttributesEntity.md
index 8bfd2d7e..e98ebeaa 100644
--- a/docs/EventAttributesEntity.md
+++ b/docs/EventAttributesEntity.md
@@ -6,7 +6,7 @@
Name | Type | Description | Notes
------------ | ------------- | ------------- | -------------
-**type** | **String** | A string representing the event name. Must not be a reserved event name. You create this value when you [create an attribute](https://docs.talon.one/docs/dev/concepts/entities/events#creating-a-custom-event) of type `event` in the Campaign Manager. |
+**type** | **String** | The name of the event. Must be a [custom event](https://docs.talon.one/docs/dev/concepts/entities/events#custom-events), not a built-in event. |
**attributes** | [**Object**](.md) | Arbitrary additional JSON properties associated with the event. They must be created in the Campaign Manager before setting them with this property. See [creating custom attributes](https://docs.talon.one/docs/product/account/dev-tools/managing-attributes#creating-a-custom-attribute). | [optional]
diff --git a/docs/EventV2.md b/docs/EventV2.md
index 190c1e92..b4ee9ec8 100644
--- a/docs/EventV2.md
+++ b/docs/EventV2.md
@@ -9,7 +9,7 @@ Name | Type | Description | Notes
**profileId** | **String** | ID of the customer profile set by your integration layer. **Note:** If the customer does not yet have a known `profileId`, we recommend you use a guest `profileId`. | [optional]
**storeIntegrationId** | **String** | The integration ID of the store. You choose this ID when you create a store. | [optional]
**evaluableCampaignIds** | **List<Long>** | When using the `dry` query parameter, use this property to list the campaign to be evaluated by the Rule Engine. These campaigns will be evaluated, even if they are disabled, allowing you to test specific campaigns before activating them. | [optional]
-**type** | **String** | A string representing the event name. Must not be a reserved event name. You create this value when you [create an attribute](https://docs.talon.one/docs/dev/concepts/entities/events#creating-a-custom-event) of type `event` in the Campaign Manager. |
+**type** | **String** | The name of the event. Must be a [custom event](https://docs.talon.one/docs/dev/concepts/entities/events#custom-events), not a built-in event. |
**attributes** | [**Object**](.md) | Arbitrary additional JSON properties associated with the event. They must be created in the Campaign Manager before setting them with this property. See [creating custom attributes](https://docs.talon.one/docs/product/account/dev-tools/managing-attributes#creating-a-custom-attribute). | [optional]
diff --git a/docs/EventV3.md b/docs/EventV3.md
index 9f4fc30f..921512b8 100644
--- a/docs/EventV3.md
+++ b/docs/EventV3.md
@@ -6,14 +6,17 @@
Name | Type | Description | Notes
------------ | ------------- | ------------- | -------------
-**profileId** | **String** | ID of the customer profile set by your integration layer. **Note:** If the customer does not yet have a known `profileId`, we recommend you use a guest `profileId`. |
+**connectedSessionId** | **String** | The ID of the session to reference. The session must be in `closed` state. Otherwise, the API call will fail. | [optional]
+**id** | **Long** | The internal ID of this entity. |
+**created** | [**OffsetDateTime**](OffsetDateTime.md) | The time this entity was created. |
+**applicationId** | **Long** | The ID of the Application that owns this entity. |
+**profileId** | **String** | ID of the customer profile set by your integration layer. **Note:** If the customer does not yet have a known `profileId`, we recommend you use a guest `profileId`. | [optional]
**storeIntegrationId** | **String** | The integration ID of the store. You choose this ID when you create a store. | [optional]
-**evaluableCampaignIds** | **List<Long>** | When using the `dry` query parameter, use this property to list the campaign to be evaluated by the Rule Engine. These campaigns will be evaluated, even if they are disabled, allowing you to test specific campaigns before activating them. | [optional]
-**integrationId** | **String** | The unique ID of the current event. Only one event with this ID could be activated, duplicated events are forbidden. |
-**type** | **String** | A string representing the event name. Must not be a reserved event name. You create this value when you [create an attribute](https://docs.talon.one/docs/dev/concepts/entities/events#creating-a-custom-event) of type `event` in the Campaign Manager. |
-**attributes** | [**Object**](.md) | Arbitrary additional JSON properties associated with the event. They must be created in the Campaign Manager before setting them with this property. See [creating custom attributes](https://docs.talon.one/docs/product/account/dev-tools/managing-attributes#creating-a-custom-attribute). | [optional]
-**connectedSessionID** | **String** | The ID of the session that happened in the past. | [optional]
-**previousEventID** | **String** | The unique identifier of the event that happened in the past. | [optional]
+**type** | **String** | The name of the event. Must be a [custom event](https://docs.talon.one/docs/dev/concepts/entities/events#custom-events), not a built-in event. |
+**attributes** | [**Object**](.md) | Arbitrary additional JSON data associated with the event. |
+**integrationId** | **String** | The unique ID of the event. Only one event with this ID can be registered. | [optional]
+**referralCode** | **String** | The referral code submitted with the event. The endpoint does not validate the code, and submitting a code does not redeem it. Use the \"Referral code is valid\" condition in the Rule Builder to validate and redeem the code, or \"Referral code is valid (without redemption)\" to validate without redeeming. | [optional]
+**effects** | **List<Object>** | An array of effects generated by the rules of the enabled campaigns of the Application. You decide how to apply them in your system. See the list of [API effects](https://docs.talon.one/docs/dev/integration-api/api-effects). |
diff --git a/docs/EventV3Connections.md b/docs/EventV3Connections.md
new file mode 100644
index 00000000..92847dbd
--- /dev/null
+++ b/docs/EventV3Connections.md
@@ -0,0 +1,12 @@
+
+
+# EventV3Connections
+
+## Properties
+
+Name | Type | Description | Notes
+------------ | ------------- | ------------- | -------------
+**connectedSessionId** | **String** | The ID of the session to reference. The session must be in `closed` state. Otherwise, the API call will fail. | [optional]
+
+
+
diff --git a/docs/EventV3Entity.md b/docs/EventV3Entity.md
new file mode 100644
index 00000000..50dc3451
--- /dev/null
+++ b/docs/EventV3Entity.md
@@ -0,0 +1,12 @@
+
+
+# EventV3Entity
+
+## Properties
+
+Name | Type | Description | Notes
+------------ | ------------- | ------------- | -------------
+**integrationId** | **String** | The unique ID of the event. Only one event with this ID can be registered. | [optional]
+
+
+
diff --git a/docs/EventV3ReferralEntity.md b/docs/EventV3ReferralEntity.md
new file mode 100644
index 00000000..1e2edc47
--- /dev/null
+++ b/docs/EventV3ReferralEntity.md
@@ -0,0 +1,12 @@
+
+
+# EventV3ReferralEntity
+
+## Properties
+
+Name | Type | Description | Notes
+------------ | ------------- | ------------- | -------------
+**referralCode** | **String** | The referral code submitted with the event. The endpoint does not validate the code, and submitting a code does not redeem it. Use the \"Referral code is valid\" condition in the Rule Builder to validate and redeem the code, or \"Referral code is valid (without redemption)\" to validate without redeeming. | [optional]
+
+
+
diff --git a/docs/EventV3RequestEntity.md b/docs/EventV3RequestEntity.md
new file mode 100644
index 00000000..65d976fe
--- /dev/null
+++ b/docs/EventV3RequestEntity.md
@@ -0,0 +1,19 @@
+
+
+# EventV3RequestEntity
+
+## Properties
+
+Name | Type | Description | Notes
+------------ | ------------- | ------------- | -------------
+**profileId** | **String** | ID of the customer profile set by your integration layer. **Note:** If the customer does not yet have a known `profileId`, we recommend you use a guest `profileId`. |
+**storeIntegrationId** | **String** | The integration ID of the store. You choose this ID when you create a store. | [optional]
+**evaluableCampaignIds** | **List<Long>** | When using the `dry` query parameter, use this property to list the campaign to be evaluated by the Rule Engine. These campaigns will be evaluated, even if they are disabled, allowing you to test specific campaigns before activating them. | [optional]
+**type** | **String** | The name of the event. Must be a [custom event](https://docs.talon.one/docs/dev/concepts/entities/events#custom-events), not a built-in event. |
+**attributes** | [**Object**](.md) | Arbitrary additional JSON properties associated with the event. They must be created in the Campaign Manager before setting them with this property. See [creating custom attributes](https://docs.talon.one/docs/product/account/dev-tools/managing-attributes#creating-a-custom-attribute). | [optional]
+**integrationId** | **String** | The unique ID of the event. Only one event with this ID can be registered. |
+**connectedSessionId** | **String** | The ID of the session to reference. The session must be in `closed` state. Otherwise, the API call will fail. | [optional]
+**referralCode** | **String** | The referral code submitted with the event. The endpoint does not validate the code, and submitting a code does not redeem it. Use the \"Referral code is valid\" condition in the Rule Builder to validate and redeem the code, or \"Referral code is valid (without redemption)\" to validate without redeeming. | [optional]
+
+
+
diff --git a/docs/ExcludePriceObservationsRequest.md b/docs/ExcludePriceObservationsRequest.md
new file mode 100644
index 00000000..1a551295
--- /dev/null
+++ b/docs/ExcludePriceObservationsRequest.md
@@ -0,0 +1,13 @@
+
+
+# ExcludePriceObservationsRequest
+
+## Properties
+
+Name | Type | Description | Notes
+------------ | ------------- | ------------- | -------------
+**ids** | **List<Long>** | A list of historical price IDs to exclude from best prior price calculation. Must contain between 1 and 1000 IDs. All IDs must be valid `id` values obtained from the [Get summary of price history](https://docs.talon.one/management-api#tag/Catalogs/operation/priceHistory.responses.200.history) endpoint, must belong to the specified Application, and must not already be excluded from best prior price calculation. |
+**reason** | **String** | The reason for excluding these historical price IDs. Applies to all IDs in the batch. |
+
+
+
diff --git a/docs/Experiment.md b/docs/Experiment.md
index 802868ab..8e75ff2e 100644
--- a/docs/Experiment.md
+++ b/docs/Experiment.md
@@ -14,6 +14,8 @@ Name | Type | Description | Notes
**activated** | [**OffsetDateTime**](OffsetDateTime.md) | The date and time the experiment was activated. | [optional]
**state** | [**StateEnum**](#StateEnum) | A disabled experiment is not evaluated for rules or coupons. |
**variants** | [**List<ExperimentVariant>**](ExperimentVariant.md) | | [optional]
+**goalType** | [**GoalTypeEnum**](#GoalTypeEnum) | The goal of the experiment. Determines which single metric is used to decide the winning variant. When set to `other`, multiple metrics are used. |
+**goalDescription** | **String** | A description of the experiment goal. Provides context for the AI summary and helps it interpret the outcome of the experiment against the stated goal. | [optional]
**deletedat** | [**OffsetDateTime**](OffsetDateTime.md) | The date and time the experiment was deleted. | [optional]
@@ -28,3 +30,14 @@ ARCHIVED | "archived"
+## Enum: GoalTypeEnum
+
+Name | Value
+---- | -----
+OTHER | "other"
+MAXIMIZE_REVENUE | "maximize_revenue"
+OPTIMIZE_DISCOUNT_EFFICIENCY | "optimize_discount_efficiency"
+MAXIMIZE_ITEMS_SOLD | "maximize_items_sold"
+
+
+
diff --git a/docs/ExperimentConfidenceTimeline.md b/docs/ExperimentConfidenceTimeline.md
new file mode 100644
index 00000000..0f40f08c
--- /dev/null
+++ b/docs/ExperimentConfidenceTimeline.md
@@ -0,0 +1,12 @@
+
+
+# ExperimentConfidenceTimeline
+
+## Properties
+
+Name | Type | Description | Notes
+------------ | ------------- | ------------- | -------------
+**data** | [**List<ExperimentConfidenceTimelineDataPoint>**](ExperimentConfidenceTimelineDataPoint.md) | Daily cumulative confidence values ordered chronologically from experiment start to end, or to today if the experiment is still running. Empty if the experiment has no data yet. |
+
+
+
diff --git a/docs/ExperimentConfidenceTimelineDataPoint.md b/docs/ExperimentConfidenceTimelineDataPoint.md
new file mode 100644
index 00000000..a0b06b1a
--- /dev/null
+++ b/docs/ExperimentConfidenceTimelineDataPoint.md
@@ -0,0 +1,13 @@
+
+
+# ExperimentConfidenceTimelineDataPoint
+
+## Properties
+
+Name | Type | Description | Notes
+------------ | ------------- | ------------- | -------------
+**date** | [**OffsetDateTime**](OffsetDateTime.md) | The date-time this data point represents. |
+**confidence** | [**ExperimentVariantResultConfidence**](ExperimentVariantResultConfidence.md) | |
+
+
+
diff --git a/docs/ExperimentCopyExperiment.md b/docs/ExperimentCopyExperiment.md
index 84bc7ecb..abd77090 100644
--- a/docs/ExperimentCopyExperiment.md
+++ b/docs/ExperimentCopyExperiment.md
@@ -8,6 +8,19 @@ Name | Type | Description | Notes
------------ | ------------- | ------------- | -------------
**isVariantAssignmentExternal** | **Boolean** | The source of the assignment. - false - The variant assignment is handled internally by Talon.One. - true - The variant assignment is handled externally. |
**campaign** | [**ExperimentCampaignCopy**](ExperimentCampaignCopy.md) | |
+**goalType** | [**GoalTypeEnum**](#GoalTypeEnum) | The goal of the experiment. Determines which single metric is used to decide the winning variant. When set to `other`, multiple metrics are used. If omitted, the value from the source experiment is used. | [optional]
+**goalDescription** | **String** | A description of the experiment goal. Provides context for the AI summary and helps it interpret the outcome of the experiment against the stated goal. If omitted, the value from the source experiment is used. | [optional]
+
+
+
+## Enum: GoalTypeEnum
+
+Name | Value
+---- | -----
+OTHER | "other"
+MAXIMIZE_REVENUE | "maximize_revenue"
+MAXIMIZE_ITEMS_SOLD | "maximize_items_sold"
+OPTIMIZE_DISCOUNT_EFFICIENCY | "optimize_discount_efficiency"
diff --git a/docs/ExtendLoyaltyPointsExpiryDateEffectProps.md b/docs/ExtendLoyaltyPointsExpiryDateEffectProps.md
index e00392dd..a16fa38f 100644
--- a/docs/ExtendLoyaltyPointsExpiryDateEffectProps.md
+++ b/docs/ExtendLoyaltyPointsExpiryDateEffectProps.md
@@ -2,13 +2,13 @@
# ExtendLoyaltyPointsExpiryDateEffectProps
-The properties specific to the \"extendLoyaltyPointsExpiryDate\" effect. This gets triggered when a validated rule contains the \"extend expiry date\" effect. The current expiry date gets extended by the time frame given in the effect.
+If loyalty points have an expiry date, this effect extends the expiry of all active and pending point transactions by a selected duration.
## Properties
Name | Type | Description | Notes
------------ | ------------- | ------------- | -------------
**programId** | **Long** | ID of the loyalty program that contains these points. |
-**subLedgerId** | **String** | API name of the loyalty program subledger that contains these points. added. |
+**subLedgerId** | **String** | API name of the loyalty program subledger that contains these points. |
**extensionDuration** | **String** | Time frame by which the expiry date extends. The time format is either: - immediate, or - an **integer** followed by a letter indicating the time unit. Examples: `immediate`, `30s`, `40m`, `1h`, `5D`, `7W`, `10M`, `15Y`. Available units: - `s`: seconds - `m`: minutes - `h`: hours - `D`: days - `W`: weeks - `M`: months - `Y`: years You can round certain units up or down: - `_D` for rounding down days only. Signifies the start of the day. - `_U` for rounding up days, weeks, months and years. Signifies the end of the day, week, month or year. |
**affectedTransactions** | [**List<LoyaltyLedgerEntryExpiryDateChange>**](LoyaltyLedgerEntryExpiryDateChange.md) | List of transactions affected by the expiry date update. | [optional]
diff --git a/docs/FeatureFlagUpdate.md b/docs/FeatureFlagUpdate.md
new file mode 100644
index 00000000..4871a1b0
--- /dev/null
+++ b/docs/FeatureFlagUpdate.md
@@ -0,0 +1,13 @@
+
+
+# FeatureFlagUpdate
+
+## Properties
+
+Name | Type | Description | Notes
+------------ | ------------- | ------------- | -------------
+**name** | **String** | The name of the feature flag. |
+**value** | **String** | The value of the feature flag. |
+
+
+
diff --git a/docs/FilterAndMapValuesSelectorStep.md b/docs/FilterAndMapValuesSelectorStep.md
new file mode 100644
index 00000000..6bfc2695
--- /dev/null
+++ b/docs/FilterAndMapValuesSelectorStep.md
@@ -0,0 +1,22 @@
+
+
+# FilterAndMapValuesSelectorStep
+
+Keeps items that exist in the value map, and attaches each kept item's mapped value.
+## Properties
+
+Name | Type | Description | Notes
+------------ | ------------- | ------------- | -------------
+**type** | [**TypeEnum**](#TypeEnum) | A step discriminator of type `filterAndMapValues`. |
+**valueMap** | [**SelectorValueMapRef**](SelectorValueMapRef.md) | |
+
+
+
+## Enum: TypeEnum
+
+Name | Value
+---- | -----
+FILTERANDMAPVALUES | "filterAndMapValues"
+
+
+
diff --git a/docs/FilterSelectorStep.md b/docs/FilterSelectorStep.md
new file mode 100644
index 00000000..80648e09
--- /dev/null
+++ b/docs/FilterSelectorStep.md
@@ -0,0 +1,22 @@
+
+
+# FilterSelectorStep
+
+Filters only items that match a predicate block.
+## Properties
+
+Name | Type | Description | Notes
+------------ | ------------- | ------------- | -------------
+**type** | [**TypeEnum**](#TypeEnum) | A step discriminator of type `filter`. |
+**predicate** | [**Object**](.md) | Describes a part of the logic of the rule. |
+
+
+
+## Enum: TypeEnum
+
+Name | Value
+---- | -----
+FILTER | "filter"
+
+
+
diff --git a/docs/GeoJSONGeometryCollection.md b/docs/GeoJSONGeometryCollection.md
new file mode 100644
index 00000000..aaee7fea
--- /dev/null
+++ b/docs/GeoJSONGeometryCollection.md
@@ -0,0 +1,22 @@
+
+
+# GeoJSONGeometryCollection
+
+A group of different shapes combined into a single location, following the GeoJSON format.
+## Properties
+
+Name | Type | Description | Notes
+------------ | ------------- | ------------- | -------------
+**type** | [**TypeEnum**](#TypeEnum) | The geometry type discriminator. |
+**geometries** | **List<Object>** | The shapes contained in this group. |
+
+
+
+## Enum: TypeEnum
+
+Name | Value
+---- | -----
+GEOMETRYCOLLECTION | "GeometryCollection"
+
+
+
diff --git a/docs/GeoJSONMultiPolygon.md b/docs/GeoJSONMultiPolygon.md
new file mode 100644
index 00000000..bd953d00
--- /dev/null
+++ b/docs/GeoJSONMultiPolygon.md
@@ -0,0 +1,22 @@
+
+
+# GeoJSONMultiPolygon
+
+One or more separate shapes grouped together as a single location, following the GeoJSON format.
+## Properties
+
+Name | Type | Description | Notes
+------------ | ------------- | ------------- | -------------
+**type** | [**TypeEnum**](#TypeEnum) | The geometry type discriminator. |
+**coordinates** | [**List<List<List<List<BigDecimal>>>>**](List.md) | The shapes in this group. Each one follows the same boundary structure as a polygon. |
+
+
+
+## Enum: TypeEnum
+
+Name | Value
+---- | -----
+MULTIPOLYGON | "MultiPolygon"
+
+
+
diff --git a/docs/GeoJSONPoint.md b/docs/GeoJSONPoint.md
new file mode 100644
index 00000000..eaa77c7d
--- /dev/null
+++ b/docs/GeoJSONPoint.md
@@ -0,0 +1,22 @@
+
+
+# GeoJSONPoint
+
+A single point on a map, defined by its longitude and latitude coordinates, following the GeoJSON format.
+## Properties
+
+Name | Type | Description | Notes
+------------ | ------------- | ------------- | -------------
+**type** | [**TypeEnum**](#TypeEnum) | The geometry type discriminator. |
+**coordinates** | [**List<BigDecimal>**](BigDecimal.md) | The longitude and latitude coordinates of the point, optionally followed by altitude. |
+
+
+
+## Enum: TypeEnum
+
+Name | Value
+---- | -----
+POINT | "Point"
+
+
+
diff --git a/docs/GeoJSONPolygon.md b/docs/GeoJSONPolygon.md
new file mode 100644
index 00000000..c84fe3ac
--- /dev/null
+++ b/docs/GeoJSONPolygon.md
@@ -0,0 +1,22 @@
+
+
+# GeoJSONPolygon
+
+A shape formed by one or more boundaries, following the GeoJSON format. The first boundary defines the outer edge of the shape; any additional boundaries define holes within the shape.
+## Properties
+
+Name | Type | Description | Notes
+------------ | ------------- | ------------- | -------------
+**type** | [**TypeEnum**](#TypeEnum) | The geometry type discriminator. |
+**coordinates** | [**List<List<List<BigDecimal>>>**](List.md) | The boundaries that make up the shape. Each boundary is a closed loop of longitude and latitude points, where the first and last point are the same. |
+
+
+
+## Enum: TypeEnum
+
+Name | Value
+---- | -----
+POLYGON | "Polygon"
+
+
+
diff --git a/docs/GiveawayPoolReference.md b/docs/GiveawayPoolReference.md
new file mode 100644
index 00000000..d6adcf6d
--- /dev/null
+++ b/docs/GiveawayPoolReference.md
@@ -0,0 +1,14 @@
+
+
+# GiveawayPoolReference
+
+The giveaway pool from which a giveaway is awarded.
+## Properties
+
+Name | Type | Description | Notes
+------------ | ------------- | ------------- | -------------
+**id** | **Long** | The unique identifier of the giveaway pool. |
+**name** | **String** | The display name of the giveaway pool. | [readonly]
+
+
+
diff --git a/docs/GroupBlock.md b/docs/GroupBlock.md
new file mode 100644
index 00000000..ba56c349
--- /dev/null
+++ b/docs/GroupBlock.md
@@ -0,0 +1,29 @@
+
+
+# GroupBlock
+
+A structural combinator block that groups child blocks using a logical operator. Evaluates to true when its operator condition is satisfied across all child blocks.
+## Properties
+
+Name | Type | Description | Notes
+------------ | ------------- | ------------- | -------------
+**id** | **String** | Unique identifier for this block. | [optional] [readonly]
+**type** | **String** | Identifies the block variant and determines which additional properties are present in it. |
+**tags** | **List<String>** | Semantic labels attached to this block. | [optional] [readonly]
+**operator** | [**OperatorEnum**](#OperatorEnum) | Logical operator applied across child blocks. `all` requires every child to pass, `atLeastOne` requires at least one, `none` requires all to fail. |
+**blocks** | **List<Object>** | Child blocks evaluated according to the operator. |
+**onFailure** | **List<Object>** | Blocks evaluated when this block fails or returns false. | [optional]
+**onError** | [**Map<String, List<Object>>**](List.md) | Named error handlers evaluated when a specific error occurs. | [optional]
+
+
+
+## Enum: OperatorEnum
+
+Name | Value
+---- | -----
+ALL | "all"
+ATLEASTONE | "atLeastOne"
+NONE | "none"
+
+
+
diff --git a/docs/History.md b/docs/History.md
index 94101ccd..9dd009fe 100644
--- a/docs/History.md
+++ b/docs/History.md
@@ -8,10 +8,12 @@ Name | Type | Description | Notes
------------ | ------------- | ------------- | -------------
**id** | **Long** | The ID of the historical price. |
**observedAt** | [**OffsetDateTime**](OffsetDateTime.md) | The date and time when the price was observed. |
-**contextId** | **String** | Identifier of the relevant context at the time the price was observed (e.g. summer sale). |
+**contextIds** | **List<String>** | The identifiers of the relevant context at the time the price was observed. Includes the context IDs of any price adjustments and of the campaigns that influenced the final price. |
**price** | [**BigDecimal**](BigDecimal.md) | Price of the item. |
**metadata** | [**BestPriorPriceMetadata**](BestPriorPriceMetadata.md) | |
**target** | [**Object**](.md) | |
+**excludedAt** | [**OffsetDateTime**](OffsetDateTime.md) | The date and time when the historical price ID was excluded. | [optional]
+**exclusionReason** | **String** | The reason for excluding this historical price ID. | [optional]
diff --git a/docs/IncreaseAchievementProgressEffectProps.md b/docs/IncreaseAchievementProgressEffectProps.md
index 93c88f38..814da10b 100644
--- a/docs/IncreaseAchievementProgressEffectProps.md
+++ b/docs/IncreaseAchievementProgressEffectProps.md
@@ -2,15 +2,15 @@
# IncreaseAchievementProgressEffectProps
-The properties specific to the \"increaseAchievementProgress\" effect. This gets triggered whenever a validated rule contained an \"increase customer progress\" effect.
+This effect indicates that the customer's progress in an achievement was updated during the current session. It is triggered when a rule using the [Update customer progress](https://docs.talon.one/docs/product/rules/effects/use-effects#update-customer-progress) effect is successfully validated. For [on-completion achievements](https://docs.talon.one/docs/product/achievements/overview#recurring-on-completion-achievements), any customer progress exceeding the target automatically starts a new iteration. This generates a new `progressTrackerId` for each iteration, and there can be multiple progress updates for the same achievement from a single validation of this effect.
## Properties
Name | Type | Description | Notes
------------ | ------------- | ------------- | -------------
**achievementId** | **Long** | The internal ID of the achievement. |
**achievementName** | **String** | The name of the achievement. |
-**progressTrackerId** | **Long** | The internal ID of the achievement progress tracker. | [optional]
-**delta** | [**BigDecimal**](BigDecimal.md) | The value by which the customer's current progress in the achievement is increased. |
+**progressTrackerId** | **Long** | The internal ID of the customer progress tracker. For [on-completion achievements](https://docs.talon.one/docs/product/achievements/overview#recurring-on-completion-achievements), this effect generates a unique ID for each iteration. | [optional]
+**delta** | [**BigDecimal**](BigDecimal.md) | The value by which the customer's current progress in the achievement has increased. |
**value** | [**BigDecimal**](BigDecimal.md) | The current progress of the customer in the achievement. |
**target** | [**BigDecimal**](BigDecimal.md) | The target value to complete the achievement. |
**isJustCompleted** | **Boolean** | Indicates if the customer has completed the achievement in the current session. |
diff --git a/docs/InlineResponse20032.md b/docs/InlineResponse20032.md
index c27b86d7..822d38f3 100644
--- a/docs/InlineResponse20032.md
+++ b/docs/InlineResponse20032.md
@@ -6,8 +6,9 @@
Name | Type | Description | Notes
------------ | ------------- | ------------- | -------------
-**hasMore** | **Boolean** | |
-**data** | [**List<ApplicationEvent>**](ApplicationEvent.md) | |
+**hasMore** | **Boolean** | | [optional]
+**totalResultSize** | **Long** | | [optional]
+**data** | [**List<ApplicationSession>**](ApplicationSession.md) | |
diff --git a/docs/InlineResponse20033.md b/docs/InlineResponse20033.md
index 07a2a78f..3be9466b 100644
--- a/docs/InlineResponse20033.md
+++ b/docs/InlineResponse20033.md
@@ -6,8 +6,8 @@
Name | Type | Description | Notes
------------ | ------------- | ------------- | -------------
-**totalResultSize** | **Long** | |
-**data** | **List<String>** | |
+**hasMore** | **Boolean** | |
+**data** | [**List<ApplicationEvent>**](ApplicationEvent.md) | |
diff --git a/docs/InlineResponse20034.md b/docs/InlineResponse20034.md
index 020200ae..3697ba64 100644
--- a/docs/InlineResponse20034.md
+++ b/docs/InlineResponse20034.md
@@ -6,9 +6,8 @@
Name | Type | Description | Notes
------------ | ------------- | ------------- | -------------
-**hasMore** | **Boolean** | | [optional]
-**totalResultSize** | **Long** | | [optional]
-**data** | [**List<Audience>**](Audience.md) | |
+**totalResultSize** | **Long** | |
+**data** | **List<String>** | |
diff --git a/docs/InlineResponse20035.md b/docs/InlineResponse20035.md
index 553f5b62..80363565 100644
--- a/docs/InlineResponse20035.md
+++ b/docs/InlineResponse20035.md
@@ -7,7 +7,8 @@
Name | Type | Description | Notes
------------ | ------------- | ------------- | -------------
**hasMore** | **Boolean** | | [optional]
-**data** | [**List<AudienceAnalytics>**](AudienceAnalytics.md) | |
+**totalResultSize** | **Long** | | [optional]
+**data** | [**List<Audience>**](Audience.md) | |
diff --git a/docs/InlineResponse20036.md b/docs/InlineResponse20036.md
index 78da0954..270f13b4 100644
--- a/docs/InlineResponse20036.md
+++ b/docs/InlineResponse20036.md
@@ -7,7 +7,7 @@
Name | Type | Description | Notes
------------ | ------------- | ------------- | -------------
**hasMore** | **Boolean** | | [optional]
-**data** | [**List<CustomerProfile>**](CustomerProfile.md) | |
+**data** | [**List<AudienceAnalytics>**](AudienceAnalytics.md) | |
diff --git a/docs/InlineResponse20037.md b/docs/InlineResponse20037.md
index 24e0274a..e16eebbe 100644
--- a/docs/InlineResponse20037.md
+++ b/docs/InlineResponse20037.md
@@ -7,8 +7,7 @@
Name | Type | Description | Notes
------------ | ------------- | ------------- | -------------
**hasMore** | **Boolean** | | [optional]
-**totalResultSize** | **Long** | | [optional]
-**data** | [**List<ApplicationReferee>**](ApplicationReferee.md) | |
+**data** | [**List<CustomerProfile>**](CustomerProfile.md) | |
diff --git a/docs/InlineResponse20038.md b/docs/InlineResponse20038.md
index f902d82b..a8eb52bc 100644
--- a/docs/InlineResponse20038.md
+++ b/docs/InlineResponse20038.md
@@ -6,8 +6,9 @@
Name | Type | Description | Notes
------------ | ------------- | ------------- | -------------
-**totalResultSize** | **Long** | |
-**data** | [**List<Attribute>**](Attribute.md) | |
+**hasMore** | **Boolean** | | [optional]
+**totalResultSize** | **Long** | | [optional]
+**data** | [**List<ApplicationReferee>**](ApplicationReferee.md) | |
diff --git a/docs/InlineResponse20039.md b/docs/InlineResponse20039.md
index 650f4b84..92fc6439 100644
--- a/docs/InlineResponse20039.md
+++ b/docs/InlineResponse20039.md
@@ -6,9 +6,8 @@
Name | Type | Description | Notes
------------ | ------------- | ------------- | -------------
-**hasMore** | **Boolean** | | [optional]
-**totalResultSize** | **Long** | | [optional]
-**data** | [**List<CatalogItem>**](CatalogItem.md) | |
+**totalResultSize** | **Long** | |
+**data** | [**List<Attribute>**](Attribute.md) | |
diff --git a/docs/InlineResponse20040.md b/docs/InlineResponse20040.md
index 8750ef6d..4f955fcb 100644
--- a/docs/InlineResponse20040.md
+++ b/docs/InlineResponse20040.md
@@ -6,8 +6,9 @@
Name | Type | Description | Notes
------------ | ------------- | ------------- | -------------
-**totalResultSize** | **Long** | |
-**data** | [**List<AccountAdditionalCost>**](AccountAdditionalCost.md) | |
+**hasMore** | **Boolean** | | [optional]
+**totalResultSize** | **Long** | | [optional]
+**data** | [**List<CatalogItem>**](CatalogItem.md) | |
diff --git a/docs/InlineResponse20041.md b/docs/InlineResponse20041.md
index 0dc5db38..74793735 100644
--- a/docs/InlineResponse20041.md
+++ b/docs/InlineResponse20041.md
@@ -7,7 +7,7 @@
Name | Type | Description | Notes
------------ | ------------- | ------------- | -------------
**totalResultSize** | **Long** | |
-**data** | [**List<WebhookWithOutgoingIntegrationDetails>**](WebhookWithOutgoingIntegrationDetails.md) | |
+**data** | [**List<AccountAdditionalCost>**](AccountAdditionalCost.md) | |
diff --git a/docs/InlineResponse20042.md b/docs/InlineResponse20042.md
index 56ff961a..226f1c4a 100644
--- a/docs/InlineResponse20042.md
+++ b/docs/InlineResponse20042.md
@@ -7,7 +7,7 @@
Name | Type | Description | Notes
------------ | ------------- | ------------- | -------------
**totalResultSize** | **Long** | |
-**data** | [**List<EventType>**](EventType.md) | |
+**data** | [**List<WebhookWithOutgoingIntegrationDetails>**](WebhookWithOutgoingIntegrationDetails.md) | |
diff --git a/docs/InlineResponse20043.md b/docs/InlineResponse20043.md
index 4d69f414..a30adc5c 100644
--- a/docs/InlineResponse20043.md
+++ b/docs/InlineResponse20043.md
@@ -7,7 +7,7 @@
Name | Type | Description | Notes
------------ | ------------- | ------------- | -------------
**totalResultSize** | **Long** | |
-**data** | [**List<User>**](User.md) | |
+**data** | [**List<EventType>**](EventType.md) | |
diff --git a/docs/InlineResponse20044.md b/docs/InlineResponse20044.md
index 5af1b6d0..f8ce5b3c 100644
--- a/docs/InlineResponse20044.md
+++ b/docs/InlineResponse20044.md
@@ -6,9 +6,8 @@
Name | Type | Description | Notes
------------ | ------------- | ------------- | -------------
-**totalResultSize** | **Long** | | [optional]
-**hasMore** | **Boolean** | | [optional]
-**data** | [**List<Change>**](Change.md) | |
+**totalResultSize** | **Long** | |
+**data** | [**List<User>**](User.md) | |
diff --git a/docs/InlineResponse20045.md b/docs/InlineResponse20045.md
index 3712756c..bc911072 100644
--- a/docs/InlineResponse20045.md
+++ b/docs/InlineResponse20045.md
@@ -6,8 +6,9 @@
Name | Type | Description | Notes
------------ | ------------- | ------------- | -------------
-**totalResultSize** | **Long** | |
-**data** | [**List<Export>**](Export.md) | |
+**totalResultSize** | **Long** | | [optional]
+**hasMore** | **Boolean** | | [optional]
+**data** | [**List<Change>**](Change.md) | |
diff --git a/docs/InlineResponse20046.md b/docs/InlineResponse20046.md
index 20110f99..cf49f6e6 100644
--- a/docs/InlineResponse20046.md
+++ b/docs/InlineResponse20046.md
@@ -7,7 +7,7 @@
Name | Type | Description | Notes
------------ | ------------- | ------------- | -------------
**totalResultSize** | **Long** | |
-**data** | [**List<RoleV2>**](RoleV2.md) | |
+**data** | [**List<Export>**](Export.md) | |
diff --git a/docs/InlineResponse20047.md b/docs/InlineResponse20047.md
index c994c7d7..1d175867 100644
--- a/docs/InlineResponse20047.md
+++ b/docs/InlineResponse20047.md
@@ -6,9 +6,8 @@
Name | Type | Description | Notes
------------ | ------------- | ------------- | -------------
-**hasMore** | **Boolean** | | [optional]
-**totalResultSize** | **Long** | | [optional]
-**data** | [**List<Store>**](Store.md) | |
+**totalResultSize** | **Long** | |
+**data** | [**List<RoleV2>**](RoleV2.md) | |
diff --git a/docs/InlineResponse20048.md b/docs/InlineResponse20048.md
index 3dbf56d2..b350abb7 100644
--- a/docs/InlineResponse20048.md
+++ b/docs/InlineResponse20048.md
@@ -7,7 +7,8 @@
Name | Type | Description | Notes
------------ | ------------- | ------------- | -------------
**hasMore** | **Boolean** | | [optional]
-**data** | [**List<ApplicationCIF>**](ApplicationCIF.md) | |
+**totalResultSize** | **Long** | | [optional]
+**data** | [**List<Store>**](Store.md) | |
diff --git a/docs/InlineResponse20049.md b/docs/InlineResponse20049.md
index 8b156d17..fed6f269 100644
--- a/docs/InlineResponse20049.md
+++ b/docs/InlineResponse20049.md
@@ -6,7 +6,8 @@
Name | Type | Description | Notes
------------ | ------------- | ------------- | -------------
-**data** | [**List<ListCampaignStoreBudgets>**](ListCampaignStoreBudgets.md) | | [optional]
+**hasMore** | **Boolean** | | [optional]
+**data** | [**List<ApplicationCIF>**](ApplicationCIF.md) | |
diff --git a/docs/InlineResponse20050.md b/docs/InlineResponse20050.md
index 395c4f9e..2399730f 100644
--- a/docs/InlineResponse20050.md
+++ b/docs/InlineResponse20050.md
@@ -6,7 +6,7 @@
Name | Type | Description | Notes
------------ | ------------- | ------------- | -------------
-**data** | [**List<SummaryCampaignStoreBudget>**](SummaryCampaignStoreBudget.md) | | [optional]
+**data** | [**List<ListCampaignStoreBudgets>**](ListCampaignStoreBudgets.md) | | [optional]
diff --git a/docs/InlineResponse20051.md b/docs/InlineResponse20051.md
index e5ed265b..db710e8f 100644
--- a/docs/InlineResponse20051.md
+++ b/docs/InlineResponse20051.md
@@ -6,8 +6,7 @@
Name | Type | Description | Notes
------------ | ------------- | ------------- | -------------
-**hasMore** | **Boolean** | | [optional]
-**data** | [**List<Achievement>**](Achievement.md) | |
+**data** | [**List<SummaryCampaignStoreBudget>**](SummaryCampaignStoreBudget.md) | | [optional]
diff --git a/docs/InlineResponse20052.md b/docs/InlineResponse20052.md
index d8275356..ccf8f778 100644
--- a/docs/InlineResponse20052.md
+++ b/docs/InlineResponse20052.md
@@ -6,8 +6,8 @@
Name | Type | Description | Notes
------------ | ------------- | ------------- | -------------
-**hasMore** | **Boolean** | |
-**data** | [**List<AchievementProgressWithDefinition>**](AchievementProgressWithDefinition.md) | |
+**hasMore** | **Boolean** | | [optional]
+**data** | [**List<Achievement>**](Achievement.md) | |
diff --git a/docs/InlineResponse20053.md b/docs/InlineResponse20053.md
index 6974901d..35f349e5 100644
--- a/docs/InlineResponse20053.md
+++ b/docs/InlineResponse20053.md
@@ -6,7 +6,8 @@
Name | Type | Description | Notes
------------ | ------------- | ------------- | -------------
-**data** | [**List<CouponFailureSummary>**](CouponFailureSummary.md) | |
+**hasMore** | **Boolean** | | [optional]
+**data** | [**List<AchievementV2>**](AchievementV2.md) | |
diff --git a/docs/InlineResponse20054.md b/docs/InlineResponse20054.md
new file mode 100644
index 00000000..fc0bd47b
--- /dev/null
+++ b/docs/InlineResponse20054.md
@@ -0,0 +1,13 @@
+
+
+# InlineResponse20054
+
+## Properties
+
+Name | Type | Description | Notes
+------------ | ------------- | ------------- | -------------
+**hasMore** | **Boolean** | |
+**data** | [**List<AchievementProgressWithDefinition>**](AchievementProgressWithDefinition.md) | |
+
+
+
diff --git a/docs/InlineResponse20055.md b/docs/InlineResponse20055.md
new file mode 100644
index 00000000..6f016f92
--- /dev/null
+++ b/docs/InlineResponse20055.md
@@ -0,0 +1,12 @@
+
+
+# InlineResponse20055
+
+## Properties
+
+Name | Type | Description | Notes
+------------ | ------------- | ------------- | -------------
+**data** | [**List<CouponFailureSummary>**](CouponFailureSummary.md) | |
+
+
+
diff --git a/docs/InlineResponse20056.md b/docs/InlineResponse20056.md
new file mode 100644
index 00000000..9550c4a0
--- /dev/null
+++ b/docs/InlineResponse20056.md
@@ -0,0 +1,13 @@
+
+
+# InlineResponse20056
+
+## Properties
+
+Name | Type | Description | Notes
+------------ | ------------- | ------------- | -------------
+**catalog** | [**InlineResponse20056Catalog**](InlineResponse20056Catalog.md) | |
+**loyalty** | [**Map<String, LoyaltyBalances>**](LoyaltyBalances.md) | The customer's loyalty balances for the specified loyalty program. Returned only when `loyaltyProgramId` is provided together with `profileIntegrationId` or `loyaltyCardId`. | [optional]
+
+
+
diff --git a/docs/InlineResponse20056Catalog.md b/docs/InlineResponse20056Catalog.md
new file mode 100644
index 00000000..91d5bf2d
--- /dev/null
+++ b/docs/InlineResponse20056Catalog.md
@@ -0,0 +1,14 @@
+
+
+# InlineResponse20056Catalog
+
+The paginated rewards catalog.
+## Properties
+
+Name | Type | Description | Notes
+------------ | ------------- | ------------- | -------------
+**hasMore** | **Boolean** | Whether more pages exist after the current one. |
+**data** | [**List<RewardCatalogItem>**](RewardCatalogItem.md) | |
+
+
+
diff --git a/docs/IntegrationApi.md b/docs/IntegrationApi.md
index 11b434c0..61279d15 100644
--- a/docs/IntegrationApi.md
+++ b/docs/IntegrationApi.md
@@ -20,6 +20,7 @@ Method | HTTP request | Description
[**getCustomerAchievements**](IntegrationApi.md#getCustomerAchievements) | **GET** /v1/customer_profiles/{integrationId}/achievements | List customer's available achievements
[**getCustomerInventory**](IntegrationApi.md#getCustomerInventory) | **GET** /v1/customer_profiles/{integrationId}/inventory | List customer data
[**getCustomerSession**](IntegrationApi.md#getCustomerSession) | **GET** /v2/customer_sessions/{customerSessionId} | Get customer session
+[**getEventV3**](IntegrationApi.md#getEventV3) | **GET** /v3/events/{integrationId} | Get advanced event
[**getLoyaltyBalances**](IntegrationApi.md#getLoyaltyBalances) | **GET** /v1/loyalty_programs/{loyaltyProgramId}/profile/{integrationId}/balances | Get customer's loyalty balances
[**getLoyaltyCardBalances**](IntegrationApi.md#getLoyaltyCardBalances) | **GET** /v1/loyalty_programs/{loyaltyProgramId}/cards/{loyaltyCardId}/balances | Get card's point balances
[**getLoyaltyCardPoints**](IntegrationApi.md#getLoyaltyCardPoints) | **GET** /v1/loyalty_programs/{loyaltyProgramId}/cards/{loyaltyCardId}/points | List card's unused loyalty points
@@ -28,12 +29,16 @@ Method | HTTP request | Description
[**getLoyaltyProgramProfileTransactions**](IntegrationApi.md#getLoyaltyProgramProfileTransactions) | **GET** /v1/loyalty_programs/{loyaltyProgramId}/profile/{integrationId}/transactions | List customer's loyalty transactions
[**getReservedCustomers**](IntegrationApi.md#getReservedCustomers) | **GET** /v1/coupon_reservations/customerprofiles/{couponValue} | List customers that have this coupon reserved
[**integrationGetAllCampaigns**](IntegrationApi.md#integrationGetAllCampaigns) | **GET** /v1/integration/campaigns | List all running campaigns
+[**integrationRewardsCatalog**](IntegrationApi.md#integrationRewardsCatalog) | **GET** /v1/rewards/catalog | List rewards in the catalog
+[**joinLoyaltyProgram**](IntegrationApi.md#joinLoyaltyProgram) | **POST** /v1/loyalty_programs/{loyaltyProgramId}/profile/{integrationId}/join | Join customer profile to loyalty program
[**linkLoyaltyCardToProfile**](IntegrationApi.md#linkLoyaltyCardToProfile) | **POST** /v2/loyalty_programs/{loyaltyProgramId}/cards/{loyaltyCardId}/link_profile | Link customer profile to card
[**reopenCustomerSession**](IntegrationApi.md#reopenCustomerSession) | **PUT** /v2/customer_sessions/{customerSessionId}/reopen | Reopen customer session
[**returnCartItems**](IntegrationApi.md#returnCartItems) | **POST** /v2/customer_sessions/{customerSessionId}/returns | Return cart items
[**syncCatalog**](IntegrationApi.md#syncCatalog) | **PUT** /v1/catalogs/{catalogId}/sync | Sync cart item catalog
[**trackEventV2**](IntegrationApi.md#trackEventV2) | **POST** /v2/events | Track event
+[**trackEventV3**](IntegrationApi.md#trackEventV3) | **POST** /v3/events | Track advanced event
[**unlinkLoyaltyCardFromProfile**](IntegrationApi.md#unlinkLoyaltyCardFromProfile) | **POST** /v2/loyalty_programs/{loyaltyProgramId}/cards/{loyaltyCardId}/unlink_profile | Unlink customer profile from a loyalty card
+[**unlockReward**](IntegrationApi.md#unlockReward) | **POST** /v1/rewards/{rewardId}/unlock | Unlock a reward
[**updateAudienceCustomersAttributes**](IntegrationApi.md#updateAudienceCustomersAttributes) | **PUT** /v2/audience_customers/{audienceId}/attributes | Update profile attributes for all customers in audience
[**updateAudienceV2**](IntegrationApi.md#updateAudienceV2) | **PUT** /v2/audiences/{audienceId} | Update audience name
[**updateCustomerProfileAudiences**](IntegrationApi.md#updateCustomerProfileAudiences) | **POST** /v2/customer_audiences | Update multiple customer profiles' audiences
@@ -586,7 +591,7 @@ null (empty response body)
Delete audience
-Delete an audience created by a third-party integration. > [!warning] This endpoint also removes any associations recorded between a customer profile and this audience. > [!note] Audiences can also be deleted via the Campaign Manager. See the [docs](https://docs.talon.one/docs/product/audiences/managing-audiences#deleting-an-audience).
+Delete an audience. > [!warning] This endpoint also removes any associations recorded between a customer profile and this audience. > [!note] Audiences can also be deleted via the Campaign Manager. See the [docs](https://docs.talon.one/docs/product/audiences/managing-audiences#deleting-an-audience). The audience isn't deleted if any experiment variant uses it. The response identifies each blocking experiment by its Campaign Manager path.
### Example
@@ -652,6 +657,7 @@ null (empty response body)
| **400** | Bad request | - |
| **401** | Unauthorized | - |
| **404** | Not found | - |
+| **409** | Conflict. The audience is used by one or more experiments. Each `errors[].source.resource` value contains the Campaign Manager path of a blocking experiment. | - |
## deleteCouponReservation
@@ -1133,7 +1139,7 @@ Name | Type | Description | Notes
## getCustomerInventory
-> CustomerInventory getCustomerInventory(integrationId, profile, referrals, coupons, loyalty, giveaways, achievements)
+> CustomerInventory getCustomerInventory(integrationId, profile, referrals, coupons, loyalty, giveaways, achievements, unlockedRewards)
List customer data
@@ -1169,8 +1175,9 @@ public class Example {
Boolean loyalty = true; // Boolean | Set to `true` to include loyalty information in the response.
Boolean giveaways = true; // Boolean | Set to `true` to include giveaways information in the response.
Boolean achievements = true; // Boolean | Set to `true` to include achievement information in the response.
+ Boolean unlockedRewards = true; // Boolean | Set to `true` to include `unlocked` rewards that have not been `used` in the response.
try {
- CustomerInventory result = apiInstance.getCustomerInventory(integrationId, profile, referrals, coupons, loyalty, giveaways, achievements);
+ CustomerInventory result = apiInstance.getCustomerInventory(integrationId, profile, referrals, coupons, loyalty, giveaways, achievements, unlockedRewards);
System.out.println(result);
} catch (ApiException e) {
System.err.println("Exception when calling IntegrationApi#getCustomerInventory");
@@ -1195,6 +1202,7 @@ Name | Type | Description | Notes
**loyalty** | **Boolean**| Set to `true` to include loyalty information in the response. | [optional]
**giveaways** | **Boolean**| Set to `true` to include giveaways information in the response. | [optional]
**achievements** | **Boolean**| Set to `true` to include achievement information in the response. | [optional]
+ **unlockedRewards** | **Boolean**| Set to `true` to include `unlocked` rewards that have not been `used` in the response. | [optional]
### Return type cool
@@ -1248,7 +1256,7 @@ public class Example {
//api_key_v1.setApiKeyPrefix("Token");
IntegrationApi apiInstance = new IntegrationApi(defaultClient);
- String customerSessionId = "customerSessionId_example"; // String | The `integration ID` of the customer session. You set this ID when you create a customer session. You can see existing customer session integration IDs in the Campaign Manager's **Sessions** menu, or via the [List Application session](https://docs.talon.one/management-api#tag/Customer-data/operation/getApplicationSessions) endpoint.
+ String customerSessionId = "customerSessionId_example"; // String | The `integration ID` of the customer session. You set this ID when you create a customer session. You can see existing customer session integration IDs in the Campaign Manager's **Sessions** menu, or via the [List Application session](https://docs.talon.one/management-api#tag/Customer-data/operation/getApplicationSessions) endpoint. **Notes**: - There is no length limit for this ID. - It must be URL-encoded. For example, replace spaces with `%20`. [Learn more](https://www.w3schools.com/tags/ref_urlencode.asp).
try {
IntegrationCustomerSessionResponse result = apiInstance.getCustomerSession(customerSessionId);
System.out.println(result);
@@ -1268,7 +1276,7 @@ public class Example {
Name | Type | Description | Notes
------------- | ------------- | ------------- | -------------
- **customerSessionId** | **String**| The `integration ID` of the customer session. You set this ID when you create a customer session. You can see existing customer session integration IDs in the Campaign Manager's **Sessions** menu, or via the [List Application session](https://docs.talon.one/management-api#tag/Customer-data/operation/getApplicationSessions) endpoint. |
+ **customerSessionId** | **String**| The `integration ID` of the customer session. You set this ID when you create a customer session. You can see existing customer session integration IDs in the Campaign Manager's **Sessions** menu, or via the [List Application session](https://docs.talon.one/management-api#tag/Customer-data/operation/getApplicationSessions) endpoint. **Notes**: - There is no length limit for this ID. - It must be URL-encoded. For example, replace spaces with `%20`. [Learn more](https://www.w3schools.com/tags/ref_urlencode.asp). |
### Return type cool
@@ -1291,6 +1299,79 @@ Name | Type | Description | Notes
| **401** | Unauthorized - Invalid API key | - |
+## getEventV3
+
+> EventV3 getEventV3(integrationId)
+
+Get advanced event
+
+Retrieve an advanced event by its identifier.
+
+### Example
+
+```java
+// Import classes:
+import one.talon.ApiClient;
+import one.talon.ApiException;
+import one.talon.Configuration;
+import one.talon.auth.*;
+import one.talon.models.*;
+import one.talon.api.IntegrationApi;
+
+public class Example {
+ public static void main(String[] args) {
+ ApiClient defaultClient = Configuration.getDefaultApiClient();
+ defaultClient.setBasePath("https://yourbaseurl.talon.one");
+
+ // Configure API key authorization: api_key_v1
+ ApiKeyAuth api_key_v1 = (ApiKeyAuth) defaultClient.getAuthentication("api_key_v1");
+ api_key_v1.setApiKey("YOUR API KEY");
+ // Uncomment the following line to set a prefix for the API key, e.g. "Token" (defaults to null)
+ //api_key_v1.setApiKeyPrefix("Token");
+
+ IntegrationApi apiInstance = new IntegrationApi(defaultClient);
+ String integrationId = "integrationId_example"; // String | The unique ID of the advanced event.
+ try {
+ EventV3 result = apiInstance.getEventV3(integrationId);
+ System.out.println(result);
+ } catch (ApiException e) {
+ System.err.println("Exception when calling IntegrationApi#getEventV3");
+ System.err.println("Status code: " + e.getCode());
+ System.err.println("Reason: " + e.getResponseBody());
+ System.err.println("Response headers: " + e.getResponseHeaders());
+ e.printStackTrace();
+ }
+ }
+}
+```
+
+### Parameters
+
+
+Name | Type | Description | Notes
+------------- | ------------- | ------------- | -------------
+ **integrationId** | **String**| The unique ID of the advanced event. |
+
+### Return type cool
+
+[**EventV3**](EventV3.md)
+
+### Authorization
+
+[api_key_v1](../README.md#api_key_v1)
+
+### HTTP request headers
+
+- **Content-Type**: Not defined
+- **Accept**: application/json
+
+### HTTP response details
+| Status code | Description | Response headers |
+|-------------|-------------|------------------|
+| **200** | OK | - |
+| **404** | Not found | - |
+
+
## getLoyaltyBalances
> LoyaltyBalancesWithTiers getLoyaltyBalances(loyaltyProgramId, integrationId, endDate, subledgerId, includeTiers, includeProjectedTier)
@@ -1677,12 +1758,12 @@ public class Example {
Long loyaltyProgramId = 56L; // Long | Identifier of the profile-based loyalty program. You can get the ID with the [List loyalty programs](https://docs.talon.one/management-api#tag/Loyalty/operation/getLoyaltyPrograms) endpoint.
String integrationId = "integrationId_example"; // String | The integration identifier for this customer profile. Must be: - Unique within the deployment. - Stable for the customer. Do not use an ID that the customer can update themselves. For example, you can use a database ID. Once set, you cannot update this identifier.
String status = "active"; // String | Filter points based on their status.
- String subledgerId = "subledgerId_example"; // String | The ID of the subledger by which we filter the data.
- List customerSessionIDs = Arrays.asList(); // List | Filter the results by a list of customer session IDs. To include multiple IDs, repeat the parameter for each one, for example, `?customerSessionIDs=id1&customerSessionIDs=id2`. The response contains only data associated with the specified sessions.
- List transactionUUIDs = Arrays.asList(); // List | Filter the results by a list of transaction UUIDs. To include multiple IDs, repeat the parameter for each one, for example, `?transactionUUIDs=uuid1&transactionUUIDs=uuid2`. The response contains only data associated with the specified transactions.
+ List subledgerId = Arrays.asList(); // List | Filter the results by a list of subledger IDs. To include multiple IDs, repeat the parameter for each one, for example, `?subledgerId=id1&subledgerId=id2`. The response contains only data associated with the specified subledgers.
+ List customerSessionIDs = Arrays.asList(); // List | Filter the results by a list of customer session IDs. To include multiple IDs, repeat the parameter for each one, for example, `?customerSessionIDs=id1&customerSessionIDs=id2`. The response contains only data associated with the specified sessions.
+ List transactionUUIDs = Arrays.asList(); // List | Filter the results by a list of transaction UUIDs. To include multiple IDs, repeat the parameter for each one, for example, `?transactionUUIDs=uuid1&transactionUUIDs=uuid2`. The response contains only data associated with the specified transactions.
Long pageSize = 50lL; // Long | The number of items in the response.
Long skip = 56L; // Long | The number of items to skip when paging through large result sets.
- String sort = "sort_example"; // String | The field by which results should be sorted. You can enter one of the following values: - `startDate`: Sorts the results by the start date of the points. - `expiryDate`: Sorts the results by the expiry date of the points. By default, results are sorted in ascending order. To sort them in descending order, prefix the field name with `-`. **Note:** You can only sort by one field at a time.
+ String sort = "sort_example"; // String | The field by which results should be sorted. You can enter one of the following values: - `startDate`: Sorts the results by the start date of the points. - `expiryDate`: Sorts the results by the expiry date of the points. By default, results are sorted in ascending order. To sort them in descending order, prefix the field name with `-`. **Note:** You can only sort by one field at a time.
try {
InlineResponse2007 result = apiInstance.getLoyaltyProgramProfilePoints(loyaltyProgramId, integrationId, status, subledgerId, customerSessionIDs, transactionUUIDs, pageSize, skip, sort);
System.out.println(result);
@@ -1705,12 +1786,12 @@ Name | Type | Description | Notes
**loyaltyProgramId** | **Long**| Identifier of the profile-based loyalty program. You can get the ID with the [List loyalty programs](https://docs.talon.one/management-api#tag/Loyalty/operation/getLoyaltyPrograms) endpoint. |
**integrationId** | **String**| The integration identifier for this customer profile. Must be: - Unique within the deployment. - Stable for the customer. Do not use an ID that the customer can update themselves. For example, you can use a database ID. Once set, you cannot update this identifier. |
**status** | **String**| Filter points based on their status. | [optional] [default to active] [enum: active, pending, expired]
- **subledgerId** | **String**| The ID of the subledger by which we filter the data. | [optional]
- **customerSessionIDs** | [**List<String>**](String.md)| Filter the results by a list of customer session IDs. To include multiple IDs, repeat the parameter for each one, for example, `?customerSessionIDs=id1&customerSessionIDs=id2`. The response contains only data associated with the specified sessions. | [optional]
- **transactionUUIDs** | [**List<String>**](String.md)| Filter the results by a list of transaction UUIDs. To include multiple IDs, repeat the parameter for each one, for example, `?transactionUUIDs=uuid1&transactionUUIDs=uuid2`. The response contains only data associated with the specified transactions. | [optional]
+ **subledgerId** | [**List<String>**](String.md)| Filter the results by a list of subledger IDs. To include multiple IDs, repeat the parameter for each one, for example, `?subledgerId=id1&subledgerId=id2`. The response contains only data associated with the specified subledgers. | [optional]
+ **customerSessionIDs** | [**List<String>**](String.md)| Filter the results by a list of customer session IDs. To include multiple IDs, repeat the parameter for each one, for example, `?customerSessionIDs=id1&customerSessionIDs=id2`. The response contains only data associated with the specified sessions. | [optional]
+ **transactionUUIDs** | [**List<String>**](String.md)| Filter the results by a list of transaction UUIDs. To include multiple IDs, repeat the parameter for each one, for example, `?transactionUUIDs=uuid1&transactionUUIDs=uuid2`. The response contains only data associated with the specified transactions. | [optional]
**pageSize** | **Long**| The number of items in the response. | [optional] [default to 50l]
**skip** | **Long**| The number of items to skip when paging through large result sets. | [optional]
- **sort** | **String**| The field by which results should be sorted. You can enter one of the following values: - `startDate`: Sorts the results by the start date of the points. - `expiryDate`: Sorts the results by the expiry date of the points. By default, results are sorted in ascending order. To sort them in descending order, prefix the field name with `-`. **Note:** You can only sort by one field at a time. | [optional] [enum: startDate, expiryDate]
+ **sort** | **String**| The field by which results should be sorted. You can enter one of the following values: - `startDate`: Sorts the results by the start date of the points. - `expiryDate`: Sorts the results by the expiry date of the points. By default, results are sorted in ascending order. To sort them in descending order, prefix the field name with `-`. **Note:** You can only sort by one field at a time. | [optional] [enum: startDate, expiryDate]
### Return type cool
@@ -1769,7 +1850,7 @@ public class Example {
String integrationId = "integrationId_example"; // String | The integration identifier for this customer profile. Must be: - Unique within the deployment. - Stable for the customer. Do not use an ID that the customer can update themselves. For example, you can use a database ID. Once set, you cannot update this identifier.
List customerSessionIDs = Arrays.asList(); // List | Filter the results by a list of customer session IDs. To include multiple IDs, repeat the parameter for each one, for example, `?customerSessionIDs=id1&customerSessionIDs=id2`. The response contains only data associated with the specified sessions.
List transactionUUIDs = Arrays.asList(); // List | Filter the results by a list of transaction UUIDs. To include multiple IDs, repeat the parameter for each one, for example, `?transactionUUIDs=uuid1&transactionUUIDs=uuid2`. The response contains only data associated with the specified transactions.
- String subledgerId = "subledgerId_example"; // String | The ID of the subledger by which we filter the data.
+ List subledgerId = Arrays.asList(); // List | Filter the results by a list of subledger IDs. To include multiple IDs, repeat the parameter for each one, for example, `?subledgerId=id1&subledgerId=id2`. The response contains only data associated with the specified subledgers.
String loyaltyTransactionType = "loyaltyTransactionType_example"; // String | Filter results by loyalty transaction type: - `manual`: Loyalty transaction that was done manually. - `session`: Loyalty transaction that resulted from a customer session. - `import`: Loyalty transaction that was imported from a CSV file.
OffsetDateTime startDate = new OffsetDateTime(); // OffsetDateTime | Date and time from which results are returned. Results are filtered by transaction creation date. > [!note] **Note** > - This must be an RFC3339 timestamp string. > - You can include a time component in your string, for example, `T23:59:59` to specify the end of the day. The time zone setting > considered is `UTC`. If you do not include a time component, a default time value of `T00:00:00` (midnight) in `UTC` is considered.
OffsetDateTime endDate = new OffsetDateTime(); // OffsetDateTime | Date and time by which results are returned. Results are filtered by transaction creation date. > [!note] **Note** > - This must be an RFC3339 timestamp string. > - You can include a time component in your string, for example, `T23:59:59` to specify the end of the day. The time zone setting > considered is `UTC`. If you do not include a time component, a default time value of `T00:00:00` (midnight) in `UTC` is considered.
@@ -1799,7 +1880,7 @@ Name | Type | Description | Notes
**integrationId** | **String**| The integration identifier for this customer profile. Must be: - Unique within the deployment. - Stable for the customer. Do not use an ID that the customer can update themselves. For example, you can use a database ID. Once set, you cannot update this identifier. |
**customerSessionIDs** | [**List<String>**](String.md)| Filter the results by a list of customer session IDs. To include multiple IDs, repeat the parameter for each one, for example, `?customerSessionIDs=id1&customerSessionIDs=id2`. The response contains only data associated with the specified sessions. | [optional]
**transactionUUIDs** | [**List<String>**](String.md)| Filter the results by a list of transaction UUIDs. To include multiple IDs, repeat the parameter for each one, for example, `?transactionUUIDs=uuid1&transactionUUIDs=uuid2`. The response contains only data associated with the specified transactions. | [optional]
- **subledgerId** | **String**| The ID of the subledger by which we filter the data. | [optional]
+ **subledgerId** | [**List<String>**](String.md)| Filter the results by a list of subledger IDs. To include multiple IDs, repeat the parameter for each one, for example, `?subledgerId=id1&subledgerId=id2`. The response contains only data associated with the specified subledgers. | [optional]
**loyaltyTransactionType** | **String**| Filter results by loyalty transaction type: - `manual`: Loyalty transaction that was done manually. - `session`: Loyalty transaction that resulted from a customer session. - `import`: Loyalty transaction that was imported from a CSV file. | [optional] [enum: manual, session, import]
**startDate** | **OffsetDateTime**| Date and time from which results are returned. Results are filtered by transaction creation date. > [!note] **Note** > - This must be an RFC3339 timestamp string. > - You can include a time component in your string, for example, `T23:59:59` to specify the end of the day. The time zone setting > considered is `UTC`. If you do not include a time component, a default time value of `T00:00:00` (midnight) in `UTC` is considered. | [optional]
**endDate** | **OffsetDateTime**| Date and time by which results are returned. Results are filtered by transaction creation date. > [!note] **Note** > - This must be an RFC3339 timestamp string. > - You can include a time component in your string, for example, `T23:59:59` to specify the end of the day. The time zone setting > considered is `UTC`. If you do not include a time component, a default time value of `T00:00:00` (midnight) in `UTC` is considered. | [optional]
@@ -1860,7 +1941,7 @@ public class Example {
//api_key_v1.setApiKeyPrefix("Token");
IntegrationApi apiInstance = new IntegrationApi(defaultClient);
- String couponValue = "couponValue_example"; // String | The code of the coupon. **Important:** The coupon code requires [URL encoding](https://www.w3schools.com/tags//ref_urlencode.asp) if it contains special characters. For example, you must encode `SUMMER25%OFF` as `SUMMER25%25OFF`.
+ String couponValue = "couponValue_example"; // String | The code of the coupon. **Important:** The coupon code requires [URL encoding](https://www.w3schools.com/tags//ref_urlencode.asp) if it contains special characters. For example, you must encode `SUMMER25%OFF` as `SUMMER25%25OFF`.
try {
InlineResponse2001 result = apiInstance.getReservedCustomers(couponValue);
System.out.println(result);
@@ -1880,7 +1961,7 @@ public class Example {
Name | Type | Description | Notes
------------- | ------------- | ------------- | -------------
- **couponValue** | **String**| The code of the coupon. **Important:** The coupon code requires [URL encoding](https://www.w3schools.com/tags//ref_urlencode.asp) if it contains special characters. For example, you must encode `SUMMER25%OFF` as `SUMMER25%25OFF`. |
+ **couponValue** | **String**| The code of the coupon. **Important:** The coupon code requires [URL encoding](https://www.w3schools.com/tags//ref_urlencode.asp) if it contains special characters. For example, you must encode `SUMMER25%OFF` as `SUMMER25%25OFF`. |
### Return type cool
@@ -1906,7 +1987,7 @@ Name | Type | Description | Notes
## integrationGetAllCampaigns
-> InlineResponse200 integrationGetAllCampaigns(pageSize, skip, campaignIds, startAfter, startBefore, endAfter, endBefore)
+> InlineResponse200 integrationGetAllCampaigns(pageSize, skip, campaignIds, startAfter, startBefore, endAfter, endBefore, storeId, audienceId)
List all running campaigns
@@ -1942,8 +2023,10 @@ public class Example {
OffsetDateTime startBefore = new OffsetDateTime(); // OffsetDateTime | Filter results to only include campaigns that start on or before the specified timestamp. **Note:** - It must be an RFC3339 timestamp string. - You can include a time component in your string, for example, `T23:59:59` to specify the end of the day. The time zone setting considered is `UTC`. If you do not include a time component, a default time value of `T00:00:00` (midnight) in `UTC` is considered.
OffsetDateTime endAfter = new OffsetDateTime(); // OffsetDateTime | Filter results to only include campaigns that end on or after the specified timestamp. **Note:** - It must be an RFC3339 timestamp string. - You can include a time component in your string, for example, `T23:59:59` to specify the end of the day. The time zone setting considered is `UTC`. If you do not include a time component, a default time value of `T00:00:00` (midnight) in `UTC` is considered.
OffsetDateTime endBefore = new OffsetDateTime(); // OffsetDateTime | Filter results to only include campaigns that end on or before the specified timestamp. **Note:** - It must be an RFC3339 timestamp string. - You can include a time component in your string, for example, `T23:59:59` to specify the end of the day. The time zone setting considered is `UTC`. If you do not include a time component, a default time value of `T00:00:00` (midnight) in `UTC` is considered.
+ Long storeId = 56L; // Long | Filter results to campaigns linked to the specified store ID.
+ Long audienceId = 56L; // Long | Filter results to campaigns linked to the specified audience ID.
try {
- InlineResponse200 result = apiInstance.integrationGetAllCampaigns(pageSize, skip, campaignIds, startAfter, startBefore, endAfter, endBefore);
+ InlineResponse200 result = apiInstance.integrationGetAllCampaigns(pageSize, skip, campaignIds, startAfter, startBefore, endAfter, endBefore, storeId, audienceId);
System.out.println(result);
} catch (ApiException e) {
System.err.println("Exception when calling IntegrationApi#integrationGetAllCampaigns");
@@ -1968,6 +2051,8 @@ Name | Type | Description | Notes
**startBefore** | **OffsetDateTime**| Filter results to only include campaigns that start on or before the specified timestamp. **Note:** - It must be an RFC3339 timestamp string. - You can include a time component in your string, for example, `T23:59:59` to specify the end of the day. The time zone setting considered is `UTC`. If you do not include a time component, a default time value of `T00:00:00` (midnight) in `UTC` is considered. | [optional]
**endAfter** | **OffsetDateTime**| Filter results to only include campaigns that end on or after the specified timestamp. **Note:** - It must be an RFC3339 timestamp string. - You can include a time component in your string, for example, `T23:59:59` to specify the end of the day. The time zone setting considered is `UTC`. If you do not include a time component, a default time value of `T00:00:00` (midnight) in `UTC` is considered. | [optional]
**endBefore** | **OffsetDateTime**| Filter results to only include campaigns that end on or before the specified timestamp. **Note:** - It must be an RFC3339 timestamp string. - You can include a time component in your string, for example, `T23:59:59` to specify the end of the day. The time zone setting considered is `UTC`. If you do not include a time component, a default time value of `T00:00:00` (midnight) in `UTC` is considered. | [optional]
+ **storeId** | **Long**| Filter results to campaigns linked to the specified store ID. | [optional]
+ **audienceId** | **Long**| Filter results to campaigns linked to the specified audience ID. | [optional]
### Return type cool
@@ -1991,6 +2076,173 @@ Name | Type | Description | Notes
| **404** | Not found | - |
+## integrationRewardsCatalog
+
+> InlineResponse20056 integrationRewardsCatalog(pageSize, skip, pointsFrom, pointsTo, includeFree, loyaltyProgramId, subledgerId, profileIntegrationId, loyaltyCardId)
+
+List rewards in the catalog
+
+Retrieve the rewards catalog for the Application. Returns a paginated list of rewards.
+
+### Example
+
+```java
+// Import classes:
+import one.talon.ApiClient;
+import one.talon.ApiException;
+import one.talon.Configuration;
+import one.talon.auth.*;
+import one.talon.models.*;
+import one.talon.api.IntegrationApi;
+
+public class Example {
+ public static void main(String[] args) {
+ ApiClient defaultClient = Configuration.getDefaultApiClient();
+ defaultClient.setBasePath("https://yourbaseurl.talon.one");
+
+ // Configure API key authorization: api_key_v1
+ ApiKeyAuth api_key_v1 = (ApiKeyAuth) defaultClient.getAuthentication("api_key_v1");
+ api_key_v1.setApiKey("YOUR API KEY");
+ // Uncomment the following line to set a prefix for the API key, e.g. "Token" (defaults to null)
+ //api_key_v1.setApiKeyPrefix("Token");
+
+ IntegrationApi apiInstance = new IntegrationApi(defaultClient);
+ Long pageSize = 1000lL; // Long | The number of items in the response.
+ Long skip = 56L; // Long | The number of items to skip when paging through large result sets.
+ BigDecimal pointsFrom = new BigDecimal(); // BigDecimal | Return only rewards whose points required is greater than or equal to this value.
+ BigDecimal pointsTo = new BigDecimal(); // BigDecimal | Return only rewards whose points required is less than or equal to this value.
+ Boolean includeFree = true; // Boolean | Whether to include rewards that have no `pointsRequired`. These rewards are treated as free and available to all customers.
+ Long loyaltyProgramId = 56L; // Long | Return only rewards available in this loyalty program.
+ String subledgerId = "subledgerId_example"; // String | Return only rewards available in this subledger. Must be combined with `loyaltyProgramId`. To specify the main ledger, provide an empty string (\"\").
+ String profileIntegrationId = "profileIntegrationId_example"; // String | The integration ID of the customer profile whose loyalty balances to include in the response. Balances are returned only when `loyaltyProgramId` is also provided. **Note:** `profileIntegrationId` and `loyaltyCardId` are mutually exclusive. Do not send both in the same request.
+ String loyaltyCardId = "loyaltyCardId_example"; // String | The identifier of the loyalty card whose loyalty balances to include in the response. Balances are returned only when `loyaltyProgramId` is also provided. **Note:** `profileIntegrationId` and `loyaltyCardId` are mutually exclusive. Do not send both in the same request.
+ try {
+ InlineResponse20056 result = apiInstance.integrationRewardsCatalog(pageSize, skip, pointsFrom, pointsTo, includeFree, loyaltyProgramId, subledgerId, profileIntegrationId, loyaltyCardId);
+ System.out.println(result);
+ } catch (ApiException e) {
+ System.err.println("Exception when calling IntegrationApi#integrationRewardsCatalog");
+ System.err.println("Status code: " + e.getCode());
+ System.err.println("Reason: " + e.getResponseBody());
+ System.err.println("Response headers: " + e.getResponseHeaders());
+ e.printStackTrace();
+ }
+ }
+}
+```
+
+### Parameters
+
+
+Name | Type | Description | Notes
+------------- | ------------- | ------------- | -------------
+ **pageSize** | **Long**| The number of items in the response. | [optional] [default to 1000l]
+ **skip** | **Long**| The number of items to skip when paging through large result sets. | [optional]
+ **pointsFrom** | **BigDecimal**| Return only rewards whose points required is greater than or equal to this value. | [optional]
+ **pointsTo** | **BigDecimal**| Return only rewards whose points required is less than or equal to this value. | [optional]
+ **includeFree** | **Boolean**| Whether to include rewards that have no `pointsRequired`. These rewards are treated as free and available to all customers. | [optional] [default to true]
+ **loyaltyProgramId** | **Long**| Return only rewards available in this loyalty program. | [optional]
+ **subledgerId** | **String**| Return only rewards available in this subledger. Must be combined with `loyaltyProgramId`. To specify the main ledger, provide an empty string (\"\"). | [optional]
+ **profileIntegrationId** | **String**| The integration ID of the customer profile whose loyalty balances to include in the response. Balances are returned only when `loyaltyProgramId` is also provided. **Note:** `profileIntegrationId` and `loyaltyCardId` are mutually exclusive. Do not send both in the same request. | [optional]
+ **loyaltyCardId** | **String**| The identifier of the loyalty card whose loyalty balances to include in the response. Balances are returned only when `loyaltyProgramId` is also provided. **Note:** `profileIntegrationId` and `loyaltyCardId` are mutually exclusive. Do not send both in the same request. | [optional]
+
+### Return type cool
+
+[**InlineResponse20056**](InlineResponse20056.md)
+
+### Authorization
+
+[api_key_v1](../README.md#api_key_v1)
+
+### HTTP request headers
+
+- **Content-Type**: Not defined
+- **Accept**: application/json
+
+### HTTP response details
+| Status code | Description | Response headers |
+|-------------|-------------|------------------|
+| **200** | OK | - |
+| **400** | Bad request | - |
+| **401** | Unauthorized | - |
+| **404** | Not found | - |
+
+
+## joinLoyaltyProgram
+
+> joinLoyaltyProgram(loyaltyProgramId, integrationId)
+
+Join customer profile to loyalty program
+
+Join a customer profile to the specified loyalty program. If the customer profile does not exist, it will be created first using the provided `integrationId`, then joined to the loyalty program. > [!note] This endpoint only works with profile-based loyalty programs. **Behavior**: - If the loyalty program does not exist, the request fails. - If the customer profile is already joined to the loyalty program, the request fails. - If the customer profile does not exist, it is created and then joined to the loyalty program.
+
+### Example
+
+```java
+// Import classes:
+import one.talon.ApiClient;
+import one.talon.ApiException;
+import one.talon.Configuration;
+import one.talon.auth.*;
+import one.talon.models.*;
+import one.talon.api.IntegrationApi;
+
+public class Example {
+ public static void main(String[] args) {
+ ApiClient defaultClient = Configuration.getDefaultApiClient();
+ defaultClient.setBasePath("https://yourbaseurl.talon.one");
+
+ // Configure API key authorization: api_key_v1
+ ApiKeyAuth api_key_v1 = (ApiKeyAuth) defaultClient.getAuthentication("api_key_v1");
+ api_key_v1.setApiKey("YOUR API KEY");
+ // Uncomment the following line to set a prefix for the API key, e.g. "Token" (defaults to null)
+ //api_key_v1.setApiKeyPrefix("Token");
+
+ IntegrationApi apiInstance = new IntegrationApi(defaultClient);
+ Long loyaltyProgramId = 56L; // Long | Identifier of the profile-based loyalty program. You can get the ID with the [List loyalty programs](https://docs.talon.one/management-api#tag/Loyalty/operation/getLoyaltyPrograms) endpoint.
+ String integrationId = "integrationId_example"; // String | The integration ID of the customer profile. You can get the `integrationId` of a profile using: - A customer session integration ID with the [Update customer session](https://docs.talon.one/integration-api#tag/Customer-sessions/operation/updateCustomerSessionV2) endpoint. - The Management API with the [List application's customers](https://docs.talon.one/management-api#tag/Customer-data/operation/getApplicationCustomers) endpoint.
+ try {
+ apiInstance.joinLoyaltyProgram(loyaltyProgramId, integrationId);
+ } catch (ApiException e) {
+ System.err.println("Exception when calling IntegrationApi#joinLoyaltyProgram");
+ System.err.println("Status code: " + e.getCode());
+ System.err.println("Reason: " + e.getResponseBody());
+ System.err.println("Response headers: " + e.getResponseHeaders());
+ e.printStackTrace();
+ }
+ }
+}
+```
+
+### Parameters
+
+
+Name | Type | Description | Notes
+------------- | ------------- | ------------- | -------------
+ **loyaltyProgramId** | **Long**| Identifier of the profile-based loyalty program. You can get the ID with the [List loyalty programs](https://docs.talon.one/management-api#tag/Loyalty/operation/getLoyaltyPrograms) endpoint. |
+ **integrationId** | **String**| The integration ID of the customer profile. You can get the `integrationId` of a profile using: - A customer session integration ID with the [Update customer session](https://docs.talon.one/integration-api#tag/Customer-sessions/operation/updateCustomerSessionV2) endpoint. - The Management API with the [List application's customers](https://docs.talon.one/management-api#tag/Customer-data/operation/getApplicationCustomers) endpoint. |
+
+### Return type cool
+
+null (empty response body)
+
+### Authorization
+
+[api_key_v1](../README.md#api_key_v1)
+
+### HTTP request headers
+
+- **Content-Type**: Not defined
+- **Accept**: application/json
+
+### HTTP response details
+| Status code | Description | Response headers |
+|-------------|-------------|------------------|
+| **200** | OK | - |
+| **400** | Bad request | - |
+| **401** | Unauthorized | - |
+| **404** | Not found | - |
+
+
## linkLoyaltyCardToProfile
> LoyaltyCard linkLoyaltyCardToProfile(loyaltyProgramId, loyaltyCardId, body)
@@ -2150,7 +2402,7 @@ Name | Type | Description | Notes
Return cart items
-Create a new return request for the specified cart items. This endpoint automatically changes the session state from `closed` to `partially_returned`. > [!note] This will roll back any effects associated with these cart items. > For more information, see [our documentation on session > states](https://docs.talon.one/docs/dev/concepts/entities/customer-sessions#customer-session-states) > and [this tutorial](https://docs.talon.one/docs/dev/tutorials/partially-returning-a-session). > [!note] To make request processing idempotent for this endpoint, include the `Idempotency-Key` header with an idempotency key in requests. Also: > - Requests with the `Idempotency-Key` header are logged in the Talon.One access logs. > - Responses for idempotent requests are stored in the database and expire 24 hours after the request is sent. > - Idempotency keys are typically UUID keys and should not exceed 255 characters in length.
+Create a new return request for the specified cart items. This endpoint automatically changes the session state from `closed` to `partially_returned`. > [!note] This will roll back any effects associated with these cart items. > For more information, see [our documentation on session > states](https://docs.talon.one/docs/dev/concepts/entities/customer-sessions#customer-session-states) > and [this tutorial](https://docs.talon.one/docs/dev/tutorials/partially-returning-a-session).
### Example
@@ -2230,7 +2482,7 @@ Name | Type | Description | Notes
Sync cart item catalog
-Perform the following actions for a given cart item catalog: - Add an item to the catalog. - Add multiple items to the catalog. - Update the attributes of an item in the catalog. - Update the attributes of multiple items in the catalog. - Remove an item from the catalog. - Remove multiple items from the catalog. You can either add, update, or delete up to 1000 cart items in a single request. Each item synced to a catalog must have a unique `SKU`. > [!important] You can perform only one type of action in a single sync request. Syncing items with duplicate `SKU` values in a single request returns an error message with a `400` status code. For more information, read [managing cart item catalogs](https://docs.talon.one/docs/product/account/dev-tools/managing-cart-item-catalogs). ### Filtering cart items Use [cart item attributes](https://docs.talon.one/docs/product/account/dev-tools/managing-attributes) to filter items and select the ones you want to edit or delete when editing or deleting more than one item at a time. The `filters` array contains an object with the following properties: - `attr`: A [cart item attribute](https://docs.talon.one/docs/product/account/dev-tools/managing-attributes) connected to the catalog. It is applied to all items in the catalog. - `op`: The filtering operator indicating the relationship between the value of each cart item in the catalog and the value of the `value` property for the attribute selected in `attr`. The value of `op` can be one of the following: - `EQ`: Equal to `value` - `LT`: Less than `value` - `LE`: Less than or equal to `value` - `GT`: Greater than `value` - `GE`: Greater than or equal to `value` - `IN`: One of the comma-separated values that `value` is set to. **Note:** `GE`, `LE`, `GT`, `LT` are for numeric values only. - `value`: The value of the attribute selected in `attr`. ### Payload examples Synchronization actions are sent as `PUT` requests. See the structure for each action: <details> <summary><strong>Adding an item to the catalog</strong></summary> <div> ```json { \"actions\": [ { \"payload\": { \"attributes\": { \"color\": \"Navy blue\", \"type\": \"shoes\" }, \"replaceIfExists\": true, \"sku\": \"SKU1241028\", \"price\": 100, \"product\": { \"name\": \"sneakers\" } }, \"type\": \"ADD\" } ] } ``` </div> </details> <details> <summary><strong>Adding multiple items to the catalog</strong></summary> <div> ```json { \"actions\": [ { \"payload\": { \"attributes\": { \"color\": \"Navy blue\", \"type\": \"shoes\" }, \"replaceIfExists\": true, \"sku\": \"SKU1241027\", \"price\": 100, \"product\": { \"name\": \"sneakers\" } }, \"type\": \"ADD\" }, { \"payload\": { \"attributes\": { \"color\": \"Navy blue\", \"type\": \"shoes\" }, \"replaceIfExists\": true, \"sku\": \"SKU1241028\", \"price\": 100, \"product\": { \"name\": \"sneakers\" } }, \"type\": \"ADD\" } ] } ``` </div> </details> <details> <summary><strong>Updating the attributes of an item in the catalog</strong></summary> <div> ```json { \"actions\": [ { \"payload\": { \"attributes\": { \"age\": 11, \"origin\": \"germany\" }, \"createIfNotExists\": false, \"sku\": \"SKU1241028\", \"product\": { \"name\": \"sneakers\" } }, \"type\": \"PATCH\" } ] } ``` </div> </details> <details> <summary><strong>Updating the attributes of multiple items in the catalog</strong></summary> <div> ```json { \"actions\": [ { \"payload\": { \"attributes\": { \"color\": \"red\" }, \"filters\": [ { \"attr\": \"color\", \"op\": \"EQ\", \"value\": \"blue\" } ] }, \"type\": \"PATCH_MANY\" } ] } ``` </div> </details> <details> <summary><strong>Removing an item from the catalog</strong></summary> <div> ```json { \"actions\": [ { \"payload\": { \"sku\": \"SKU1241028\" }, \"type\": \"REMOVE\" } ] } ``` </div> </details> <details> <summary><strong>Removing multiple items from the catalog</strong></summary> <div> ```json { \"actions\": [ { \"payload\": { \"filters\": [ { \"attr\": \"color\", \"op\": \"EQ\", \"value\": \"blue\" } ] }, \"type\": \"REMOVE_MANY\" } ] } ``` </div> </details> <details> <summary><strong>Removing shoes of sizes above 45 from the catalog</strong></summary> <div> <p> Let's imagine that we have a shoe store and we have decided to stop selling shoes larger than size 45. We can remove from the catalog all the shoes of sizes above 45 with a single action:</p> ```json { \"actions\": [ { \"payload\": { \"filters\": [ { \"attr\": \"size\", \"op\": \"GT\", \"value\": \"45\" } ] }, \"type\": \"REMOVE_MANY\" } ] } ``` </div> </details>
+Perform the following actions for a given cart item catalog: - Add an item to the catalog. - Add multiple items to the catalog. - Update the attributes of an item in the catalog. - Update the attributes of multiple items in the catalog. - Remove an item from the catalog. - Remove multiple items from the catalog. You can either add, update, or delete up to 1000 cart items in a single request. Each item synced to a catalog must have a unique `SKU`. > [!important] You can perform only one type of action in a single sync request. Syncing items with duplicate `SKU` values in a single request returns an error message with a `400` status code. For more information, read [managing cart item catalogs](https://docs.talon.one/docs/product/account/dev-tools/managing-cart-item-catalogs). ### Filtering cart items Use [cart item attributes](https://docs.talon.one/docs/product/account/dev-tools/managing-attributes) to filter items and select the ones you want to edit or delete when editing or deleting more than one item at a time. The `filters` array contains an object with the following properties: - `attr`: A [cart item attribute](https://docs.talon.one/docs/product/account/dev-tools/managing-attributes) connected to the catalog. It is applied to all items in the catalog. - `op`: The filtering operator indicating the relationship between the value of each cart item in the catalog and the value of the `value` property for the attribute selected in `attr`. The value of `op` can be one of the following: - `EQ`: Equal to `value` - `LT`: Less than `value` - `LE`: Less than or equal to `value` - `GT`: Greater than `value` - `GE`: Greater than or equal to `value` - `IN`: One of the comma-separated values that `value` is set to. **Note:** `GE`, `LE`, `GT`, `LT` are for numeric values only. - `value`: The value of the attribute selected in `attr`. For request examples of each action, see the **Request Body** examples.
### Example
@@ -2307,7 +2559,7 @@ Name | Type | Description | Notes
Track event
-Triggers a custom event. To use this endpoint: 1. Define a [custom event](https://docs.talon.one/docs/dev/concepts/entities/events#creating-a-custom-event) in the Campaign Manager. 1. Update or create a rule to check for this event. 1. Trigger the event with this endpoint. After you have successfully sent an event to Talon.One, you can list the received events in the **Events** view in the Campaign Manager. Talon.One also offers a set of [built-in events](https://docs.talon.one/docs/dev/concepts/entities/events). Ensure you do not create a custom event when you can use a built-in event. For example, use this endpoint to trigger an event when a customer shares a link to a product. See the [tutorial](https://docs.talon.one/docs/product/tutorials/referrals/incentivizing-product-link-sharing). > [!note] **Note** > - `profileId` is required even though the schema does not specify it. > - If the customer profile ID is new, a new profile is automatically created but the `customer_profile_created` [built-in event ](https://docs.talon.one/docs/dev/concepts/entities/events) is **not** triggered. > - We recommend sending requests sequentially. See [Managing parallel requests](https://docs.talon.one/docs/dev/getting-started/integration-tutorial#managing-parallel-requests). > - [Archived campaigns](https://docs.talon.one/docs/product/campaigns/managing-campaigns#archiving-a-campaign) are not considered in rule evaluation.
+Trigger a [custom event](https://docs.talon.one/docs/dev/concepts/entities/events#custom-events). To use this endpoint: 1. [Create](https://docs.talon.one/docs/dev/concepts/entities/events#create-an-event) an event in the Campaign Manager. 1. In a rule, add the **Check for event types** [condition](https://docs.talon.one/docs/dev/concepts/entities/events#use-an-event-in-a-rule) and select the event you created. 1. Trigger the event with this endpoint. You can [list](https://docs.talon.one/docs/product/applications/display-events#list-events) the received events in the **Events** view of the Campaign Manager. For example, you can use this endpoint to trigger an event when a customer shares a link to a product. See our [tutorial](https://docs.talon.one/docs/product/tutorials/referrals/incentivizing-product-link-sharing). > [!note] **Note** > - `profileId` is required even though the schema does not specify it. > - If the customer profile ID is new, a new profile is automatically created but the `customer_profile_created` [built-in event ](https://docs.talon.one/docs/dev/concepts/entities/events) is **not** triggered. > - We recommend sending requests sequentially. See [Manage parallel requests](https://docs.talon.one/docs/dev/getting-started/integration-tutorial#manage-parallel-requests). > - [Archived campaigns](https://docs.talon.one/docs/product/campaigns/managing-campaigns#archive-a-campaign) are not considered in rule evaluation.
### Example
@@ -2377,9 +2629,91 @@ Name | Type | Description | Notes
| Status code | Description | Response headers |
|-------------|-------------|------------------|
| **200** | OK | - |
+| **204** | No content | - |
| **400** | Bad request | - |
| **401** | Unauthorized - Invalid API key | - |
-| **409** | Too many requests or limit reached - Avoid parallel requests. See the [docs](https://docs.talon.one/docs/dev/tutorials/integrating-talon-one#managing-parallel-requests). | - |
+| **409** | Too many requests or limit reached - Avoid parallel requests. See the [docs](https://docs.talon.one/docs/dev/tutorials/integrating-talon-one#manage-parallel-requests). | - |
+
+
+## trackEventV3
+
+> IntegrationEventV3Response trackEventV3(body, silent, dry, forceCompleteEvaluation)
+
+Track advanced event
+
+Trigger an [advanced event](https://docs.talon.one/docs/dev/concepts/entities/events#advanced-events). Advanced events are idempotent, uniquely identifiable events. They can also reference a previously closed session to add more context for rule evaluation. To use this endpoint: 1. [Create](https://docs.talon.one/docs/dev/concepts/entities/events#create-an-event) an event in the Campaign Manager. 1. In a rule, add the **Check for event types** [condition](https://docs.talon.one/docs/dev/concepts/entities/events#use-an-event-in-a-rule) and select the event you created. 1. Trigger the event with this endpoint. You can [list](https://docs.talon.one/docs/product/applications/display-events#list-events) the received events in the **Events** view of the Campaign Manager. For example, you can use this endpoint to award loyalty points after an order is delivered. See our [tutorial](https://docs.talon.one/docs/dev/tutorials/award-loyalty-points-after-delivery). > [!note] **Note** > - If the customer profile does not exist, it will be created. However, the `customer_profile_created` [built-in event](https://docs.talon.one/docs/dev/concepts/entities/events#built-in-events) is **not** triggered. > - We recommend sending requests sequentially. See [Manage parallel requests](https://docs.talon.one/docs/dev/getting-started/integration-tutorial#manage-parallel-requests). > - [Archived campaigns](https://docs.talon.one/docs/product/campaigns/managing-campaigns#archive-a-campaign) are not considered in rule evaluation.
+
+### Example
+
+```java
+// Import classes:
+import one.talon.ApiClient;
+import one.talon.ApiException;
+import one.talon.Configuration;
+import one.talon.auth.*;
+import one.talon.models.*;
+import one.talon.api.IntegrationApi;
+
+public class Example {
+ public static void main(String[] args) {
+ ApiClient defaultClient = Configuration.getDefaultApiClient();
+ defaultClient.setBasePath("https://yourbaseurl.talon.one");
+
+ // Configure API key authorization: api_key_v1
+ ApiKeyAuth api_key_v1 = (ApiKeyAuth) defaultClient.getAuthentication("api_key_v1");
+ api_key_v1.setApiKey("YOUR API KEY");
+ // Uncomment the following line to set a prefix for the API key, e.g. "Token" (defaults to null)
+ //api_key_v1.setApiKeyPrefix("Token");
+
+ IntegrationApi apiInstance = new IntegrationApi(defaultClient);
+ IntegrationEventV3Request body = new IntegrationEventV3Request(); // IntegrationEventV3Request | body
+ String silent = "\"yes\""; // String | Possible values: `yes` or `no`. - `yes`: Increases the performance of the API call by returning a 204 response. - `no`: Returns a 200 response that contains the updated customer profiles.
+ Boolean dry = true; // Boolean | Indicates whether to persist the changes. Changes are ignored when `dry=true`.
+ Boolean forceCompleteEvaluation = false; // Boolean | Forces evaluation for all matching campaigns regardless of the [campaign evaluation mode](https://docs.talon.one/docs/product/applications/managing-campaign-evaluation#setting-campaign-evaluation-mode). Requires `dry=true`.
+ try {
+ IntegrationEventV3Response result = apiInstance.trackEventV3(body, silent, dry, forceCompleteEvaluation);
+ System.out.println(result);
+ } catch (ApiException e) {
+ System.err.println("Exception when calling IntegrationApi#trackEventV3");
+ System.err.println("Status code: " + e.getCode());
+ System.err.println("Reason: " + e.getResponseBody());
+ System.err.println("Response headers: " + e.getResponseHeaders());
+ e.printStackTrace();
+ }
+ }
+}
+```
+
+### Parameters
+
+
+Name | Type | Description | Notes
+------------- | ------------- | ------------- | -------------
+ **body** | [**IntegrationEventV3Request**](IntegrationEventV3Request.md)| body |
+ **silent** | **String**| Possible values: `yes` or `no`. - `yes`: Increases the performance of the API call by returning a 204 response. - `no`: Returns a 200 response that contains the updated customer profiles. | [optional] [default to "yes"]
+ **dry** | **Boolean**| Indicates whether to persist the changes. Changes are ignored when `dry=true`. | [optional]
+ **forceCompleteEvaluation** | **Boolean**| Forces evaluation for all matching campaigns regardless of the [campaign evaluation mode](https://docs.talon.one/docs/product/applications/managing-campaign-evaluation#setting-campaign-evaluation-mode). Requires `dry=true`. | [optional] [default to false]
+
+### Return type cool
+
+[**IntegrationEventV3Response**](IntegrationEventV3Response.md)
+
+### Authorization
+
+[api_key_v1](../README.md#api_key_v1)
+
+### HTTP request headers
+
+- **Content-Type**: application/json
+- **Accept**: application/json
+
+### HTTP response details
+| Status code | Description | Response headers |
+|-------------|-------------|------------------|
+| **200** | OK | - |
+| **400** | Bad request | - |
+| **401** | Unauthorized - Invalid API key | - |
+| **409** | An advanced event already exists, too many requests, or limit reached. Avoid parallel requests. See the [docs](https://docs.talon.one/docs/dev/tutorials/integrating-talon-one#manage-parallel-requests). | - |
## unlinkLoyaltyCardFromProfile
@@ -2461,6 +2795,88 @@ Name | Type | Description | Notes
| **404** | Not found | - |
+## unlockReward
+
+> IntegrationStateV2 unlockReward(rewardId, body, dry)
+
+Unlock a reward
+
+Unlock a reward for a customer. If the reward has `pointsRequired` configured, the corresponding loyalty points are deducted from the customer's balance. To unlock a reward with the points of a loyalty card, provide the card in `cardIdentifier`. The points are then deducted from the card, and the unlocked reward belongs to the card, which makes it available to all customer profiles linked to that card.
+
+### Example
+
+```java
+// Import classes:
+import one.talon.ApiClient;
+import one.talon.ApiException;
+import one.talon.Configuration;
+import one.talon.auth.*;
+import one.talon.models.*;
+import one.talon.api.IntegrationApi;
+
+public class Example {
+ public static void main(String[] args) {
+ ApiClient defaultClient = Configuration.getDefaultApiClient();
+ defaultClient.setBasePath("https://yourbaseurl.talon.one");
+
+ // Configure API key authorization: api_key_v1
+ ApiKeyAuth api_key_v1 = (ApiKeyAuth) defaultClient.getAuthentication("api_key_v1");
+ api_key_v1.setApiKey("YOUR API KEY");
+ // Uncomment the following line to set a prefix for the API key, e.g. "Token" (defaults to null)
+ //api_key_v1.setApiKeyPrefix("Token");
+
+ IntegrationApi apiInstance = new IntegrationApi(defaultClient);
+ Long rewardId = 56L; // Long | The ID of the reward. You can get the ID with the [List rewards](#tag/Rewards/operation/listRewards) endpoint.
+ IntegrationUnlockRewardRequest body = new IntegrationUnlockRewardRequest(); // IntegrationUnlockRewardRequest |
+ Boolean dry = true; // Boolean | When set to `true`, the rule evaluation is performed but no changes are persisted. Use this to preview the outcome of an unlocking.
+ try {
+ IntegrationStateV2 result = apiInstance.unlockReward(rewardId, body, dry);
+ System.out.println(result);
+ } catch (ApiException e) {
+ System.err.println("Exception when calling IntegrationApi#unlockReward");
+ System.err.println("Status code: " + e.getCode());
+ System.err.println("Reason: " + e.getResponseBody());
+ System.err.println("Response headers: " + e.getResponseHeaders());
+ e.printStackTrace();
+ }
+ }
+}
+```
+
+### Parameters
+
+
+Name | Type | Description | Notes
+------------- | ------------- | ------------- | -------------
+ **rewardId** | **Long**| The ID of the reward. You can get the ID with the [List rewards](#tag/Rewards/operation/listRewards) endpoint. |
+ **body** | [**IntegrationUnlockRewardRequest**](IntegrationUnlockRewardRequest.md)| |
+ **dry** | **Boolean**| When set to `true`, the rule evaluation is performed but no changes are persisted. Use this to preview the outcome of an unlocking. | [optional]
+
+### Return type cool
+
+[**IntegrationStateV2**](IntegrationStateV2.md)
+
+### Authorization
+
+[api_key_v1](../README.md#api_key_v1)
+
+### HTTP request headers
+
+- **Content-Type**: application/json
+- **Accept**: application/json
+
+### HTTP response details
+| Status code | Description | Response headers |
+|-------------|-------------|------------------|
+| **200** | OK | - |
+| **400** | Bad request | - |
+| **401** | Unauthorized | - |
+| **403** | Forbidden | - |
+| **404** | Not found | - |
+| **409** | Conflict. A reward unlock with this integration ID already exists. | - |
+| **422** | Unprocessable entity. The reward unlock was rejected by the Rule Engine, for example because the customer already unlocked this reward, the customer has insufficient points, or the reward's eligibility conditions are not met. | - |
+
+
## updateAudienceCustomersAttributes
> updateAudienceCustomersAttributes(audienceId, body)
@@ -2692,7 +3108,7 @@ null (empty response body)
Update customer profile
-Update or create a [Customer Profile](https://docs.talon.one/docs/dev/concepts/entities/customer-profiles). This endpoint triggers the Rule Builder. You can use this endpoint to: - Set attributes on the given customer profile. Ensure you create the attributes in the Campaign Manager, first. - Modify the audience the customer profile is a member of. > [!note] **Note** > - Updating a customer profile returns a response with the requested integration state. > - You can use the `responseContent` property to save yourself extra API calls. For example, you can get > the customer profile details directly without extra requests. > - We recommend sending requests sequentially. > See [Managing parallel requests](https://docs.talon.one/docs/dev/getting-started/integration-tutorial#managing-parallel-requests). > - [Archived campaigns](https://docs.talon.one/docs/product/campaigns/managing-campaigns#archiving-a-campaign) are not considered in rule evaluation when `runRuleEngine` is `true`.
+Update or create a [Customer Profile](https://docs.talon.one/docs/dev/concepts/entities/customer-profiles). This endpoint triggers the Rule Builder. You can use this endpoint to: - Set attributes on the given customer profile. Ensure you create the attributes in the Campaign Manager, first. - Modify the audience the customer profile is a member of. > [!note] **Note** > - Updating a customer profile returns a response with the requested integration state. > - The [Has joined an audience](https://docs.talon.one/docs/product/rules/conditions/available-conditions#audience-conditions) and > [Has left an audience](https://docs.talon.one/docs/product/rules/conditions/available-conditions#audience-conditions) conditions > only trigger through this endpoint. > - You can use the `responseContent` property to save yourself extra API calls. For example, you can get > the customer profile details directly without extra requests. > - We recommend sending requests sequentially. > See [Managing parallel requests](https://docs.talon.one/docs/dev/getting-started/integration-tutorial#managing-parallel-requests). > - [Archived campaigns](https://docs.talon.one/docs/product/campaigns/managing-campaigns#archiving-a-campaign) are not considered in rule evaluation when `runRuleEngine` is `true`.
### Example
@@ -2717,7 +3133,7 @@ public class Example {
//api_key_v1.setApiKeyPrefix("Token");
IntegrationApi apiInstance = new IntegrationApi(defaultClient);
- String integrationId = "integrationId_example"; // String | The integration identifier for this customer profile. Must be: - Unique within the deployment. - Stable for the customer. Do not use an ID that the customer can update themselves. For example, you can use a database ID. Once set, you cannot update this identifier.
+ String integrationId = "integrationId_example"; // String | The integration identifier for this customer profile. Must be: - Unique within the deployment. - Stable for the customer. Do not use an ID that the customer can update themselves. For example, you can use a database ID. Once set, you cannot update this identifier. **Note**: It must be URL-encoded. For example, replace spaces with `%20`. [Learn more](https://www.w3schools.com/tags/ref_urlencode.asp).
CustomerProfileIntegrationRequestV2 body = new CustomerProfileIntegrationRequestV2(); // CustomerProfileIntegrationRequestV2 | body
Boolean runRuleEngine = false; // Boolean | Indicates whether to run the Rule Engine. If `true`, the response includes: - The effects generated by the triggered campaigns are returned in the `effects` property. - The created coupons and referral objects. If `false`: - The rules are not executed and the `effects` property is always empty. - The response time improves. - You cannot use `responseContent` in the body.
Boolean dry = true; // Boolean | (Only works when `runRuleEngine=true`) Indicates whether to persist the changes. Changes are ignored when `dry=true`. When set to `true`, you can use the `evaluableCampaignIds` body property to select specific campaigns to run.
@@ -2740,7 +3156,7 @@ public class Example {
Name | Type | Description | Notes
------------- | ------------- | ------------- | -------------
- **integrationId** | **String**| The integration identifier for this customer profile. Must be: - Unique within the deployment. - Stable for the customer. Do not use an ID that the customer can update themselves. For example, you can use a database ID. Once set, you cannot update this identifier. |
+ **integrationId** | **String**| The integration identifier for this customer profile. Must be: - Unique within the deployment. - Stable for the customer. Do not use an ID that the customer can update themselves. For example, you can use a database ID. Once set, you cannot update this identifier. **Note**: It must be URL-encoded. For example, replace spaces with `%20`. [Learn more](https://www.w3schools.com/tags/ref_urlencode.asp). |
**body** | [**CustomerProfileIntegrationRequestV2**](CustomerProfileIntegrationRequestV2.md)| body |
**runRuleEngine** | **Boolean**| Indicates whether to run the Rule Engine. If `true`, the response includes: - The effects generated by the triggered campaigns are returned in the `effects` property. - The created coupons and referral objects. If `false`: - The rules are not executed and the `effects` property is always empty. - The response time improves. - You cannot use `responseContent` in the body. | [optional] [default to false]
**dry** | **Boolean**| (Only works when `runRuleEngine=true`) Indicates whether to persist the changes. Changes are ignored when `dry=true`. When set to `true`, you can use the `evaluableCampaignIds` body property to select specific campaigns to run. | [optional]
@@ -2839,6 +3255,7 @@ Name | Type | Description | Notes
| Status code | Description | Response headers |
|-------------|-------------|------------------|
| **200** | OK | - |
+| **204** | No content | - |
| **400** | Bad request | - |
| **401** | Unauthorized - Invalid API key | - |
@@ -2874,7 +3291,7 @@ public class Example {
//api_key_v1.setApiKeyPrefix("Token");
IntegrationApi apiInstance = new IntegrationApi(defaultClient);
- String customerSessionId = "customerSessionId_example"; // String | The `integration ID` of the customer session. You set this ID when you create a customer session. You can see existing customer session integration IDs in the Campaign Manager's **Sessions** menu, or via the [List Application session](https://docs.talon.one/management-api#tag/Customer-data/operation/getApplicationSessions) endpoint.
+ String customerSessionId = "customerSessionId_example"; // String | The `integration ID` of the customer session. You set this ID when you create a customer session. You can see existing customer session integration IDs in the Campaign Manager's **Sessions** menu, or via the [List Application session](https://docs.talon.one/management-api#tag/Customer-data/operation/getApplicationSessions) endpoint. **Notes**: - There is no length limit for this ID. - It must be URL-encoded. For example, replace spaces with `%20`. [Learn more](https://www.w3schools.com/tags/ref_urlencode.asp).
IntegrationRequest body = new IntegrationRequest(); // IntegrationRequest | body
Boolean dry = true; // Boolean | Indicates whether to persist the changes. Changes are ignored when `dry=true`. When set to `true`: - The endpoint considers **only** the payload that you pass when **closing** the session. When you do not use the `dry` parameter, the endpoint behaves as a typical PUT endpoint. Each update builds upon the previous ones. - You can use the `evaluableCampaignIds` body property to select specific campaigns to run. [See the docs](https://docs.talon.one/docs/dev/integration-api/dry-requests).
OffsetDateTime now = new OffsetDateTime(); // OffsetDateTime | A timestamp value of a future date that acts as a current date when included in the query. Use this parameter, for example, to test campaigns that would be evaluated for this customer session in the future (say, [scheduled campaigns](https://docs.talon.one/docs/product/campaigns/settings/managing-campaign-schedule)). > [!note] **Note** > - It must be an RFC3339 timestamp string. > - It can **only** be a date in the future. > - It can **only** be used if the `dry` parameter in the query is set to `true`.
@@ -2897,7 +3314,7 @@ public class Example {
Name | Type | Description | Notes
------------- | ------------- | ------------- | -------------
- **customerSessionId** | **String**| The `integration ID` of the customer session. You set this ID when you create a customer session. You can see existing customer session integration IDs in the Campaign Manager's **Sessions** menu, or via the [List Application session](https://docs.talon.one/management-api#tag/Customer-data/operation/getApplicationSessions) endpoint. |
+ **customerSessionId** | **String**| The `integration ID` of the customer session. You set this ID when you create a customer session. You can see existing customer session integration IDs in the Campaign Manager's **Sessions** menu, or via the [List Application session](https://docs.talon.one/management-api#tag/Customer-data/operation/getApplicationSessions) endpoint. **Notes**: - There is no length limit for this ID. - It must be URL-encoded. For example, replace spaces with `%20`. [Learn more](https://www.w3schools.com/tags/ref_urlencode.asp). |
**body** | [**IntegrationRequest**](IntegrationRequest.md)| body |
**dry** | **Boolean**| Indicates whether to persist the changes. Changes are ignored when `dry=true`. When set to `true`: - The endpoint considers **only** the payload that you pass when **closing** the session. When you do not use the `dry` parameter, the endpoint behaves as a typical PUT endpoint. Each update builds upon the previous ones. - You can use the `evaluableCampaignIds` body property to select specific campaigns to run. [See the docs](https://docs.talon.one/docs/dev/integration-api/dry-requests). | [optional]
**now** | **OffsetDateTime**| A timestamp value of a future date that acts as a current date when included in the query. Use this parameter, for example, to test campaigns that would be evaluated for this customer session in the future (say, [scheduled campaigns](https://docs.talon.one/docs/product/campaigns/settings/managing-campaign-schedule)). > [!note] **Note** > - It must be an RFC3339 timestamp string. > - It can **only** be a date in the future. > - It can **only** be used if the `dry` parameter in the query is set to `true`. | [optional]
diff --git a/docs/IntegrationCampaign.md b/docs/IntegrationCampaign.md
index e376a6c3..4fde5490 100644
--- a/docs/IntegrationCampaign.md
+++ b/docs/IntegrationCampaign.md
@@ -6,9 +6,9 @@
Name | Type | Description | Notes
------------ | ------------- | ------------- | -------------
-**id** | **Long** | Unique ID of Campaign. |
**applicationId** | **Long** | The ID of the Application that owns this entity. |
-**name** | **String** | A user-facing name for this campaign. |
+**id** | **Long** | Unique ID of Campaign. |
+**name** | **String** | The name of the campaign. |
**description** | **String** | A detailed description of the campaign. | [optional]
**startTime** | [**OffsetDateTime**](OffsetDateTime.md) | Timestamp when the campaign will become active. | [optional]
**endTime** | [**OffsetDateTime**](OffsetDateTime.md) | Timestamp when the campaign will become inactive. | [optional]
@@ -16,6 +16,9 @@ Name | Type | Description | Notes
**state** | [**StateEnum**](#StateEnum) | The state of the campaign. |
**tags** | **List<String>** | A list of tags for the campaign. |
**features** | [**List<FeaturesEnum>**](#List<FeaturesEnum>) | The features enabled in this campaign. |
+**rules** | [**List<RuleMetadata>**](RuleMetadata.md) | A list of rules containing customer-facing details of the rewards defined in the campaign. |
+**linkedStoreIds** | **List<Long>** | A list of store IDs linked to this campaign. | [optional]
+**linkedAudienceIds** | **List<Long>** | A list of audience IDs linked to this campaign. | [optional]
@@ -37,6 +40,7 @@ LOYALTY | "loyalty"
GIVEAWAYS | "giveaways"
STRIKETHROUGH | "strikethrough"
ACHIEVEMENTS | "achievements"
+ADVANCEDEVENTS | "advancedEvents"
diff --git a/docs/IntegrationCampaignBase.md b/docs/IntegrationCampaignBase.md
new file mode 100644
index 00000000..caa24671
--- /dev/null
+++ b/docs/IntegrationCampaignBase.md
@@ -0,0 +1,43 @@
+
+
+# IntegrationCampaignBase
+
+## Properties
+
+Name | Type | Description | Notes
+------------ | ------------- | ------------- | -------------
+**applicationId** | **Long** | The ID of the Application that owns this entity. |
+**id** | **Long** | Unique ID of Campaign. |
+**name** | **String** | The name of the campaign. |
+**description** | **String** | A detailed description of the campaign. | [optional]
+**startTime** | [**OffsetDateTime**](OffsetDateTime.md) | Timestamp when the campaign will become active. | [optional]
+**endTime** | [**OffsetDateTime**](OffsetDateTime.md) | Timestamp when the campaign will become inactive. | [optional]
+**attributes** | [**Object**](.md) | Arbitrary properties associated with this campaign. | [optional]
+**state** | [**StateEnum**](#StateEnum) | The state of the campaign. |
+**tags** | **List<String>** | A list of tags for the campaign. |
+**features** | [**List<FeaturesEnum>**](#List<FeaturesEnum>) | The features enabled in this campaign. |
+
+
+
+## Enum: StateEnum
+
+Name | Value
+---- | -----
+ENABLED | "enabled"
+
+
+
+## Enum: List<FeaturesEnum>
+
+Name | Value
+---- | -----
+COUPONS | "coupons"
+REFERRALS | "referrals"
+LOYALTY | "loyalty"
+GIVEAWAYS | "giveaways"
+STRIKETHROUGH | "strikethrough"
+ACHIEVEMENTS | "achievements"
+ADVANCEDEVENTS | "advancedEvents"
+
+
+
diff --git a/docs/IntegrationEvent.md b/docs/IntegrationEvent.md
index 518f0bbe..a0f6ed5b 100644
--- a/docs/IntegrationEvent.md
+++ b/docs/IntegrationEvent.md
@@ -8,7 +8,7 @@ Name | Type | Description | Notes
------------ | ------------- | ------------- | -------------
**profileId** | **String** | ID of the customer profile set by your integration layer. **Note:** If the customer does not yet have a known `profileId`, we recommend you use a guest `profileId`. | [optional]
**storeIntegrationId** | **String** | The integration ID of the store. You choose this ID when you create a store. | [optional]
-**type** | **String** | A string representing the event. Must not be a reserved event name. |
+**type** | **String** | The name of the event. Must be a [custom event](https://docs.talon.one/docs/dev/concepts/entities/events#custom-events), not a built-in event. |
**attributes** | [**Object**](.md) | Arbitrary additional JSON data associated with the event. |
diff --git a/docs/IntegrationEventV2Request.md b/docs/IntegrationEventV2Request.md
index 59c204ba..b3d7c399 100644
--- a/docs/IntegrationEventV2Request.md
+++ b/docs/IntegrationEventV2Request.md
@@ -9,7 +9,7 @@ Name | Type | Description | Notes
**profileId** | **String** | ID of the customer profile set by your integration layer. **Note:** If the customer does not yet have a known `profileId`, we recommend you use a guest `profileId`. | [optional]
**storeIntegrationId** | **String** | The integration ID of the store. You choose this ID when you create a store. | [optional]
**evaluableCampaignIds** | **List<Long>** | When using the `dry` query parameter, use this property to list the campaign to be evaluated by the Rule Engine. These campaigns will be evaluated, even if they are disabled, allowing you to test specific campaigns before activating them. | [optional]
-**type** | **String** | A string representing the event name. Must not be a reserved event name. You create this value when you [create an attribute](https://docs.talon.one/docs/dev/concepts/entities/events#creating-a-custom-event) of type `event` in the Campaign Manager. |
+**type** | **String** | The name of the event. Must be a [custom event](https://docs.talon.one/docs/dev/concepts/entities/events#custom-events), not a built-in event. |
**attributes** | [**Object**](.md) | Arbitrary additional JSON properties associated with the event. They must be created in the Campaign Manager before setting them with this property. See [creating custom attributes](https://docs.talon.one/docs/product/account/dev-tools/managing-attributes#creating-a-custom-attribute). | [optional]
**responseContent** | [**List<ResponseContentEnum>**](#List<ResponseContentEnum>) | Extends the response with the chosen data entities. Use this property to get as much data back as needed from one request instead of sending extra requests to other endpoints. | [optional]
**loyaltyCards** | **List<String>** | Identifiers of the loyalty cards used during this event. | [optional]
@@ -26,6 +26,9 @@ LOYALTY | "loyalty"
EVENT | "event"
AWARDEDGIVEAWAYS | "awardedGiveaways"
RULEFAILUREREASONS | "ruleFailureReasons"
+CAMPAIGNELIGIBILITY | "campaignEligibility"
+ACHIEVEMENTS | "achievements"
+UNLOCKEDREWARDS | "unlockedRewards"
diff --git a/docs/IntegrationEventV2Response.md b/docs/IntegrationEventV2Response.md
index f2b86f5e..2e60fd34 100644
--- a/docs/IntegrationEventV2Response.md
+++ b/docs/IntegrationEventV2Response.md
@@ -10,11 +10,14 @@ Name | Type | Description | Notes
**customerProfile** | [**CustomerProfile**](CustomerProfile.md) | | [optional]
**loyalty** | [**Loyalty**](Loyalty.md) | | [optional]
**triggeredCampaigns** | [**List<Campaign>**](Campaign.md) | The campaigns that were triggered as a result of processing the event. | [optional]
+**campaignEligibility** | [**List<CampaignEligibility>**](CampaignEligibility.md) | A list of campaigns and their evaluation status for the current customer session. **Note**: - This response can **only** be included if the `dry` parameter in the query is set to `true`. - Do not include `triggeredCampaigns` or `ruleFailureReasons` in `responseContent` to avoid duplicate results. | [optional]
**effects** | [**List<Effect>**](Effect.md) | The effects generated by the rules in your running campaigns. See [API effects](https://docs.talon.one/docs/dev/integration-api/api-effects). |
**ruleFailureReasons** | [**List<RuleFailureReason>**](RuleFailureReason.md) | The reasons why certain rules were not triggered during the event processing. | [optional]
**createdCoupons** | [**List<Coupon>**](Coupon.md) | The coupons that were created during the event processing. |
**createdReferrals** | [**List<Referral>**](Referral.md) | The referrals that were created during the event processing. |
**awardedGiveaways** | [**List<Giveaway>**](Giveaway.md) | The giveaways that were awarded during the event processing. | [optional]
+**achievements** | [**List<CustomerAchievement>**](CustomerAchievement.md) | The achievements progress of the customer. | [optional]
+**rewards** | [**List<RewardWithUnlocks>**](RewardWithUnlocks.md) | The rewards for the customer profile. | [optional]
**event** | [**Event**](Event.md) | | [optional]
diff --git a/docs/IntegrationEventV3Request.md b/docs/IntegrationEventV3Request.md
index 0934c639..58704ffe 100644
--- a/docs/IntegrationEventV3Request.md
+++ b/docs/IntegrationEventV3Request.md
@@ -9,11 +9,11 @@ Name | Type | Description | Notes
**profileId** | **String** | ID of the customer profile set by your integration layer. **Note:** If the customer does not yet have a known `profileId`, we recommend you use a guest `profileId`. |
**storeIntegrationId** | **String** | The integration ID of the store. You choose this ID when you create a store. | [optional]
**evaluableCampaignIds** | **List<Long>** | When using the `dry` query parameter, use this property to list the campaign to be evaluated by the Rule Engine. These campaigns will be evaluated, even if they are disabled, allowing you to test specific campaigns before activating them. | [optional]
-**integrationId** | **String** | The unique ID of the current event. Only one event with this ID could be activated, duplicated events are forbidden. |
-**type** | **String** | A string representing the event name. Must not be a reserved event name. You create this value when you [create an attribute](https://docs.talon.one/docs/dev/concepts/entities/events#creating-a-custom-event) of type `event` in the Campaign Manager. |
+**type** | **String** | The name of the event. Must be a [custom event](https://docs.talon.one/docs/dev/concepts/entities/events#custom-events), not a built-in event. |
**attributes** | [**Object**](.md) | Arbitrary additional JSON properties associated with the event. They must be created in the Campaign Manager before setting them with this property. See [creating custom attributes](https://docs.talon.one/docs/product/account/dev-tools/managing-attributes#creating-a-custom-attribute). | [optional]
-**connectedSessionID** | **String** | The ID of the session that happened in the past. | [optional]
-**previousEventID** | **String** | The unique identifier of the event that happened in the past. | [optional]
+**integrationId** | **String** | The unique ID of the event. Only one event with this ID can be registered. |
+**connectedSessionId** | **String** | The ID of the session to reference. The session must be in `closed` state. Otherwise, the API call will fail. | [optional]
+**referralCode** | **String** | The referral code submitted with the event. The endpoint does not validate the code, and submitting a code does not redeem it. Use the \"Referral code is valid\" condition in the Rule Builder to validate and redeem the code, or \"Referral code is valid (without redemption)\" to validate without redeeming. | [optional]
**loyaltyCards** | **List<String>** | Identifiers of the loyalty cards used during this event. | [optional]
**responseContent** | [**List<ResponseContentEnum>**](#List<ResponseContentEnum>) | Optional list of requested information to be present on the response related to the tracking custom event. | [optional]
@@ -23,12 +23,13 @@ Name | Type | Description | Notes
Name | Value
---- | -----
-CUSTOMERPROFILE | "customerProfile"
-TRIGGEREDCAMPAIGNS | "triggeredCampaigns"
-LOYALTY | "loyalty"
ADVANCEDEVENT | "advancedEvent"
AWARDEDGIVEAWAYS | "awardedGiveaways"
+CUSTOMERPROFILE | "customerProfile"
+LOYALTY | "loyalty"
+REFERRAL | "referral"
RULEFAILUREREASONS | "ruleFailureReasons"
+TRIGGEREDCAMPAIGNS | "triggeredCampaigns"
diff --git a/docs/IntegrationEventV3Response.md b/docs/IntegrationEventV3Response.md
index 7ccb7dd9..9e568550 100644
--- a/docs/IntegrationEventV3Response.md
+++ b/docs/IntegrationEventV3Response.md
@@ -10,12 +10,16 @@ Name | Type | Description | Notes
**customerProfile** | [**CustomerProfile**](CustomerProfile.md) | | [optional]
**loyalty** | [**Loyalty**](Loyalty.md) | | [optional]
**triggeredCampaigns** | [**List<Campaign>**](Campaign.md) | The campaigns that were triggered as a result of processing the event. | [optional]
+**campaignEligibility** | [**List<CampaignEligibility>**](CampaignEligibility.md) | A list of campaigns and their evaluation status for the current customer session. **Note**: - This response can **only** be included if the `dry` parameter in the query is set to `true`. - Do not include `triggeredCampaigns` or `ruleFailureReasons` in `responseContent` to avoid duplicate results. | [optional]
**effects** | [**List<Effect>**](Effect.md) | The effects generated by the rules in your running campaigns. See [API effects](https://docs.talon.one/docs/dev/integration-api/api-effects). |
**ruleFailureReasons** | [**List<RuleFailureReason>**](RuleFailureReason.md) | The reasons why certain rules were not triggered during the event processing. | [optional]
**createdCoupons** | [**List<Coupon>**](Coupon.md) | The coupons that were created during the event processing. |
**createdReferrals** | [**List<Referral>**](Referral.md) | The referrals that were created during the event processing. |
**awardedGiveaways** | [**List<Giveaway>**](Giveaway.md) | The giveaways that were awarded during the event processing. | [optional]
+**achievements** | [**List<CustomerAchievement>**](CustomerAchievement.md) | The achievements progress of the customer. | [optional]
+**rewards** | [**List<RewardWithUnlocks>**](RewardWithUnlocks.md) | The rewards for the customer profile. | [optional]
**advancedEvent** | [**EventV3**](EventV3.md) | | [optional]
+**referral** | [**InventoryReferral**](InventoryReferral.md) | | [optional]
diff --git a/docs/IntegrationHubEventPayloadCouponBasedNotifications.md b/docs/IntegrationHubEventPayloadCouponBasedNotifications.md
index de62cedf..1ea90098 100644
--- a/docs/IntegrationHubEventPayloadCouponBasedNotifications.md
+++ b/docs/IntegrationHubEventPayloadCouponBasedNotifications.md
@@ -6,6 +6,7 @@
Name | Type | Description | Notes
------------ | ------------- | ------------- | -------------
+**eventId** | **Long** | The ID of the integration hub event. Return this value in the delivery-status callback to mark the event delivered or failed. |
**id** | **Long** | |
**created** | [**OffsetDateTime**](OffsetDateTime.md) | |
**campaignId** | **Long** | |
diff --git a/docs/IntegrationHubEventPayloadLoyaltyProfileBasedPointsChangedNotification.md b/docs/IntegrationHubEventPayloadLoyaltyProfileBasedPointsChangedNotification.md
index 45b9322d..d9e21898 100644
--- a/docs/IntegrationHubEventPayloadLoyaltyProfileBasedPointsChangedNotification.md
+++ b/docs/IntegrationHubEventPayloadLoyaltyProfileBasedPointsChangedNotification.md
@@ -6,10 +6,14 @@
Name | Type | Description | Notes
------------ | ------------- | ------------- | -------------
+**eventId** | **Long** | The ID of the integration hub event. Return this value in the delivery-status callback to mark the event delivered or failed. |
**profileIntegrationID** | **String** | |
**loyaltyProgramID** | **Long** | |
+**loyaltyProgramName** | **String** | The name of the loyalty program. |
**subledgerID** | **String** | |
**sourceOfEvent** | **String** | |
+**currentTier** | **String** | The name of the customer's current tier. |
+**sessionIntegrationID** | **String** | The integration ID of the session through which the points were earned or lost. Only set when the change results from a rule engine execution; empty otherwise. | [optional]
**employeeName** | **String** | | [optional]
**userID** | **Long** | | [optional]
**currentPoints** | **Float** | |
diff --git a/docs/IntegrationHubEventPayloadLoyaltyProfileBasedTierDowngradeNotification.md b/docs/IntegrationHubEventPayloadLoyaltyProfileBasedTierDowngradeNotification.md
index 46772660..7a7ebd4b 100644
--- a/docs/IntegrationHubEventPayloadLoyaltyProfileBasedTierDowngradeNotification.md
+++ b/docs/IntegrationHubEventPayloadLoyaltyProfileBasedTierDowngradeNotification.md
@@ -6,11 +6,13 @@
Name | Type | Description | Notes
------------ | ------------- | ------------- | -------------
+**eventId** | **Long** | The ID of the integration hub event. Return this value in the delivery-status callback to mark the event delivered or failed. |
**profileIntegrationID** | **String** | |
**loyaltyProgramID** | **Long** | |
+**loyaltyProgramName** | **String** | The name of the loyalty program. |
**subledgerID** | **String** | |
**sourceOfEvent** | **String** | |
-**currentTier** | **String** | | [optional]
+**currentTier** | **String** | The name of the customer's current tier, or null if the customer was downgraded below all tiers. | [optional]
**currentPoints** | **Float** | |
**oldTier** | **String** | | [optional]
**tierExpirationDate** | [**OffsetDateTime**](OffsetDateTime.md) | | [optional]
diff --git a/docs/IntegrationHubEventPayloadLoyaltyProfileBasedTierUpgradeNotification.md b/docs/IntegrationHubEventPayloadLoyaltyProfileBasedTierUpgradeNotification.md
index dbda7e6f..4c8d6182 100644
--- a/docs/IntegrationHubEventPayloadLoyaltyProfileBasedTierUpgradeNotification.md
+++ b/docs/IntegrationHubEventPayloadLoyaltyProfileBasedTierUpgradeNotification.md
@@ -6,11 +6,13 @@
Name | Type | Description | Notes
------------ | ------------- | ------------- | -------------
+**eventId** | **Long** | The ID of the integration hub event. Return this value in the delivery-status callback to mark the event delivered or failed. |
**profileIntegrationID** | **String** | |
**loyaltyProgramID** | **Long** | |
+**loyaltyProgramName** | **String** | The name of the loyalty program. |
**subledgerID** | **String** | |
**sourceOfEvent** | **String** | |
-**currentTier** | **String** | | [optional]
+**currentTier** | **String** | The name of the customer's current tier. |
**currentPoints** | **Float** | |
**oldTier** | **String** | | [optional]
**pointsRequiredToTheNextTier** | **Float** | | [optional]
diff --git a/docs/IntegrationHubEventRecord.md b/docs/IntegrationHubEventRecord.md
index f9ccd850..a205929f 100644
--- a/docs/IntegrationHubEventRecord.md
+++ b/docs/IntegrationHubEventRecord.md
@@ -6,14 +6,17 @@
Name | Type | Description | Notes
------------ | ------------- | ------------- | -------------
-**id** | **Long** | |
-**flowId** | **Long** | |
-**eventType** | **String** | |
-**eventData** | [**Object**](.md) | |
-**publishedAt** | [**OffsetDateTime**](OffsetDateTime.md) | |
-**processedAt** | [**OffsetDateTime**](OffsetDateTime.md) | | [optional]
-**processAfter** | [**OffsetDateTime**](OffsetDateTime.md) | |
-**retry** | **Long** | |
+**id** | **Long** | ID of the event record. |
+**flowId** | **Long** | ID of the integration hub flow. |
+**integrationName** | **String** | Name of the integration. | [optional]
+**instanceName** | **String** | Name of the integration instance. | [optional]
+**eventType** | [**IntegrationHubEventType**](IntegrationHubEventType.md) | |
+**publishedAt** | [**OffsetDateTime**](OffsetDateTime.md) | Timestamp when the event was published. |
+**processedAt** | [**OffsetDateTime**](OffsetDateTime.md) | Timestamp when the event was processed. | [optional]
+**deliveredAt** | [**OffsetDateTime**](OffsetDateTime.md) | Timestamp when the event was delivered. | [optional]
+**scheduledTo** | [**OffsetDateTime**](OffsetDateTime.md) | Timestamp after which the event is scheduled to be processed. |
+**retry** | **Long** | Number of delivery retries attempted. |
+**payload** | **String** | The event payload as a formatted JSON string. |
diff --git a/docs/IntegrationHubEventStatusUpdate.md b/docs/IntegrationHubEventStatusUpdate.md
new file mode 100644
index 00000000..50748f14
--- /dev/null
+++ b/docs/IntegrationHubEventStatusUpdate.md
@@ -0,0 +1,22 @@
+
+
+# IntegrationHubEventStatusUpdate
+
+## Properties
+
+Name | Type | Description | Notes
+------------ | ------------- | ------------- | -------------
+**eventId** | **Long** | The ID of the integration hub event. |
+**status** | [**StatusEnum**](#StatusEnum) | The delivery outcome for the event. |
+
+
+
+## Enum: StatusEnum
+
+Name | Value
+---- | -----
+DELIVERED | "delivered"
+FAILED | "failed"
+
+
+
diff --git a/docs/IntegrationHubEventType.md b/docs/IntegrationHubEventType.md
new file mode 100644
index 00000000..ad6b61ff
--- /dev/null
+++ b/docs/IntegrationHubEventType.md
@@ -0,0 +1,21 @@
+
+
+# IntegrationHubEventType
+
+## Enum
+
+
+* `LOYALTYPOINTSCHANGED` (value: `"LoyaltyPointsChanged"`)
+
+* `LOYALTYTIERDOWNGRADE` (value: `"LoyaltyTierDowngrade"`)
+
+* `LOYALTYTIERUPGRADE` (value: `"LoyaltyTierUpgrade"`)
+
+* `COUPONCREATED` (value: `"CouponCreated"`)
+
+* `COUPONUPDATED` (value: `"CouponUpdated"`)
+
+* `COUPONDELETED` (value: `"CouponDeleted"`)
+
+
+
diff --git a/docs/IntegrationHubFlow.md b/docs/IntegrationHubFlow.md
index 57035e01..63a2b237 100644
--- a/docs/IntegrationHubFlow.md
+++ b/docs/IntegrationHubFlow.md
@@ -6,8 +6,9 @@
Name | Type | Description | Notes
------------ | ------------- | ------------- | -------------
-**applicationID** | **Long** | ID of application the flow is registered for. | [optional]
-**eventType** | **String** | The event type we want to register a flow for. |
+**applicationID** | **Long** | ID of the application the flow is registered for. | [optional]
+**loyaltyProgramID** | **Long** | ID of the loyalty program the flow is registered for. | [optional]
+**eventType** | [**IntegrationHubEventType**](IntegrationHubEventType.md) | |
**integrationHubFlowUrl** | **String** | The URL of the integration hub flow that we want to trigger for the event. |
diff --git a/docs/IntegrationHubFlowConfig.md b/docs/IntegrationHubFlowConfig.md
index 74f5a01b..72893e03 100644
--- a/docs/IntegrationHubFlowConfig.md
+++ b/docs/IntegrationHubFlowConfig.md
@@ -10,6 +10,8 @@ Name | Type | Description | Notes
**workerCount** | **Long** | Number of IntegrationHub workers to run in parallel for this flow (maximum 500). | [optional]
**maxEventsPerMessage** | **Long** | Maximum number of events to send in a single message to IntegrationHub. | [optional]
**maxRetries** | **Long** | Maximum number of retries for a IntegrationHub event before it is ignored. | [optional]
+**instanceName** | **String** | Name of the Prismatic instance that registered this flow. | [optional]
+**integrationName** | **String** | Name of the Prismatic integration that registered this flow. | [optional]
diff --git a/docs/IntegrationHubFlowResponse.md b/docs/IntegrationHubFlowResponse.md
index 22a1f955..6e4ac192 100644
--- a/docs/IntegrationHubFlowResponse.md
+++ b/docs/IntegrationHubFlowResponse.md
@@ -7,9 +7,13 @@
Name | Type | Description | Notes
------------ | ------------- | ------------- | -------------
**id** | **Long** | ID of the integration hub flow. |
-**applicationID** | **Long** | ID of application the flow is registered for. | [optional]
+**integrationName** | **String** | Name of the integration. | [optional]
+**instanceName** | **String** | Name of the integration instance. | [optional]
+**createdAt** | [**OffsetDateTime**](OffsetDateTime.md) | Timestamp when the flow was created. |
+**disabledUntil** | [**OffsetDateTime**](OffsetDateTime.md) | Timestamp until which the flow is disabled. Null when the flow is active. | [optional]
+**applicationId** | **Long** | ID of the application the flow is registered for. | [optional]
+**loyaltyProgramId** | **Long** | ID of the loyalty program the flow is registered for. | [optional]
**eventType** | **String** | The event type we want to register a flow for. |
-**integrationHubFlowUrl** | **String** | The URL of the integration hub flow that we want to trigger for the event. |
**config** | [**IntegrationHubFlowConfigResponse**](IntegrationHubFlowConfigResponse.md) | |
diff --git a/docs/IntegrationHubFlowWithConfig.md b/docs/IntegrationHubFlowWithConfig.md
index ad09ebf2..f6d18b7a 100644
--- a/docs/IntegrationHubFlowWithConfig.md
+++ b/docs/IntegrationHubFlowWithConfig.md
@@ -6,8 +6,9 @@
Name | Type | Description | Notes
------------ | ------------- | ------------- | -------------
-**applicationID** | **Long** | ID of application the flow is registered for. | [optional]
-**eventType** | **String** | The event type we want to register a flow for. |
+**applicationID** | **Long** | ID of the application the flow is registered for. | [optional]
+**loyaltyProgramID** | **Long** | ID of the loyalty program the flow is registered for. | [optional]
+**eventType** | [**IntegrationHubEventType**](IntegrationHubEventType.md) | |
**integrationHubFlowUrl** | **String** | The URL of the integration hub flow that we want to trigger for the event. |
**config** | [**IntegrationHubFlowConfig**](IntegrationHubFlowConfig.md) | |
diff --git a/docs/IntegrationHubInstance.md b/docs/IntegrationHubInstance.md
new file mode 100644
index 00000000..fb5cb8ad
--- /dev/null
+++ b/docs/IntegrationHubInstance.md
@@ -0,0 +1,13 @@
+
+
+# IntegrationHubInstance
+
+## Properties
+
+Name | Type | Description | Notes
+------------ | ------------- | ------------- | -------------
+**instanceId** | **String** | The ID of the Prismatic integration instance. |
+**instanceName** | **String** | The name of the Prismatic integration instance. |
+
+
+
diff --git a/docs/IntegrationHubPaginatedEventPayload.md b/docs/IntegrationHubPaginatedEventPayload.md
index b5c2e3b4..8701bbaa 100644
--- a/docs/IntegrationHubPaginatedEventPayload.md
+++ b/docs/IntegrationHubPaginatedEventPayload.md
@@ -8,21 +8,8 @@ Name | Type | Description | Notes
------------ | ------------- | ------------- | -------------
**totalResultSize** | **Long** | |
**batchedAt** | [**OffsetDateTime**](OffsetDateTime.md) | Timestamp when the batch was created. | [optional]
-**eventType** | [**EventTypeEnum**](#EventTypeEnum) | |
+**eventType** | [**IntegrationHubEventType**](IntegrationHubEventType.md) | |
**data** | **List<Object>** | |
-## Enum: EventTypeEnum
-
-Name | Value
----- | -----
-LOYALTYPOINTSCHANGED | "LoyaltyPointsChanged"
-LOYALTYTIERDOWNGRADE | "LoyaltyTierDowngrade"
-LOYALTYTIERUPGRADE | "LoyaltyTierUpgrade"
-COUPONCREATED | "CouponCreated"
-COUPONUPDATED | "CouponUpdated"
-COUPONDELETED | "CouponDeleted"
-
-
-
diff --git a/docs/IntegrationRequest.md b/docs/IntegrationRequest.md
index 0515d4e8..84b9059b 100644
--- a/docs/IntegrationRequest.md
+++ b/docs/IntegrationRequest.md
@@ -26,6 +26,9 @@ EVENT | "event"
AWARDEDGIVEAWAYS | "awardedGiveaways"
RULEFAILUREREASONS | "ruleFailureReasons"
PREVIOUSRETURNS | "previousReturns"
+CAMPAIGNELIGIBILITY | "campaignEligibility"
+ACHIEVEMENTS | "achievements"
+UNLOCKEDREWARDS | "unlockedRewards"
diff --git a/docs/IntegrationResponse.md b/docs/IntegrationResponse.md
index 802f9948..d97d6ecf 100644
--- a/docs/IntegrationResponse.md
+++ b/docs/IntegrationResponse.md
@@ -10,11 +10,14 @@ Name | Type | Description | Notes
**customerProfile** | [**CustomerProfile**](CustomerProfile.md) | | [optional]
**loyalty** | [**Loyalty**](Loyalty.md) | | [optional]
**triggeredCampaigns** | [**List<Campaign>**](Campaign.md) | The campaigns that were triggered as a result of processing the event. | [optional]
+**campaignEligibility** | [**List<CampaignEligibility>**](CampaignEligibility.md) | A list of campaigns and their evaluation status for the current customer session. **Note**: - This response can **only** be included if the `dry` parameter in the query is set to `true`. - Do not include `triggeredCampaigns` or `ruleFailureReasons` in `responseContent` to avoid duplicate results. | [optional]
**effects** | [**List<Effect>**](Effect.md) | The effects generated by the rules in your running campaigns. See [API effects](https://docs.talon.one/docs/dev/integration-api/api-effects). |
**ruleFailureReasons** | [**List<RuleFailureReason>**](RuleFailureReason.md) | The reasons why certain rules were not triggered during the event processing. | [optional]
**createdCoupons** | [**List<Coupon>**](Coupon.md) | The coupons that were created during the event processing. |
**createdReferrals** | [**List<Referral>**](Referral.md) | The referrals that were created during the event processing. |
**awardedGiveaways** | [**List<Giveaway>**](Giveaway.md) | The giveaways that were awarded during the event processing. | [optional]
+**achievements** | [**List<CustomerAchievement>**](CustomerAchievement.md) | The achievements progress of the customer. | [optional]
+**rewards** | [**List<RewardWithUnlocks>**](RewardWithUnlocks.md) | The rewards for the customer profile. | [optional]
diff --git a/docs/IntegrationStateV2.md b/docs/IntegrationStateV2.md
index d8c09895..1e16517c 100644
--- a/docs/IntegrationStateV2.md
+++ b/docs/IntegrationStateV2.md
@@ -10,11 +10,14 @@ Name | Type | Description | Notes
**customerProfile** | [**CustomerProfile**](CustomerProfile.md) | | [optional]
**loyalty** | [**Loyalty**](Loyalty.md) | | [optional]
**triggeredCampaigns** | [**List<Campaign>**](Campaign.md) | The campaigns that were triggered as a result of processing the event. | [optional]
+**campaignEligibility** | [**List<CampaignEligibility>**](CampaignEligibility.md) | A list of campaigns and their evaluation status for the current customer session. **Note**: - This response can **only** be included if the `dry` parameter in the query is set to `true`. - Do not include `triggeredCampaigns` or `ruleFailureReasons` in `responseContent` to avoid duplicate results. | [optional]
**effects** | [**List<Effect>**](Effect.md) | The effects generated by the rules in your running campaigns. See [API effects](https://docs.talon.one/docs/dev/integration-api/api-effects). |
**ruleFailureReasons** | [**List<RuleFailureReason>**](RuleFailureReason.md) | The reasons why certain rules were not triggered during the event processing. | [optional]
**createdCoupons** | [**List<Coupon>**](Coupon.md) | The coupons that were created during the event processing. |
**createdReferrals** | [**List<Referral>**](Referral.md) | The referrals that were created during the event processing. |
**awardedGiveaways** | [**List<Giveaway>**](Giveaway.md) | The giveaways that were awarded during the event processing. | [optional]
+**achievements** | [**List<CustomerAchievement>**](CustomerAchievement.md) | The achievements progress of the customer. | [optional]
+**rewards** | [**List<RewardWithUnlocks>**](RewardWithUnlocks.md) | The rewards for the customer profile. | [optional]
**referral** | [**InventoryReferral**](InventoryReferral.md) | | [optional]
**coupons** | [**List<IntegrationCoupon>**](IntegrationCoupon.md) | The coupons that were processed. | [optional]
**event** | [**Event**](Event.md) | | [optional]
diff --git a/docs/IntegrationUnlockRewardRequest.md b/docs/IntegrationUnlockRewardRequest.md
new file mode 100644
index 00000000..04e2ee08
--- /dev/null
+++ b/docs/IntegrationUnlockRewardRequest.md
@@ -0,0 +1,29 @@
+
+
+# IntegrationUnlockRewardRequest
+
+The request body for unlocking a reward for a customer profile, optionally using the balance of one of the customer's loyalty cards.
+## Properties
+
+Name | Type | Description | Notes
+------------ | ------------- | ------------- | -------------
+**integrationId** | **String** | The integration ID to assign to the created customer reward unlock. |
+**profileIntegrationId** | **String** | The integration ID of the customer profile unlocking the reward. |
+**cardIdentifier** | **String** | The identifier of the loyalty card, which must match the regular expression `^[A-Za-z0-9._%+@-]+$`. | [optional]
+**loyaltyProgramId** | **Long** | The ID of the loyalty program from which points will be deducted. Required when the reward has `pointsRequired` configured. | [optional]
+**subledgerId** | **String** | The ID of the subledger from which points will be deducted. Required when the reward has `pointsRequired` configured. To specify the main ledger, provide an empty string (\"\"). | [optional]
+**responseContent** | [**List<ResponseContentEnum>**](#List<ResponseContentEnum>) | Determines which data is included in the response. Add any of the following optional values to the array to get that data in the response: `customerProfile`, `ruleFailureReasons`, `loyalty`. `effects` is always returned regardless of whether it is included here. | [optional]
+
+
+
+## Enum: List<ResponseContentEnum>
+
+Name | Value
+---- | -----
+CUSTOMERPROFILE | "customerProfile"
+EFFECTS | "effects"
+RULEFAILUREREASONS | "ruleFailureReasons"
+LOYALTY | "loyalty"
+
+
+
diff --git a/docs/JoinLoyaltyProgramEffectProps.md b/docs/JoinLoyaltyProgramEffectProps.md
new file mode 100644
index 00000000..ebb1da29
--- /dev/null
+++ b/docs/JoinLoyaltyProgramEffectProps.md
@@ -0,0 +1,14 @@
+
+
+# JoinLoyaltyProgramEffectProps
+
+This effect indicates that a customer profile was joined to a profile-based loyalty program with the specified join date. > [!note] **Note** > - This effect requires a customer profile. It does not work for anonymous sessions. > - The effect fails if the customer profile has already joined the loyalty program.
+## Properties
+
+Name | Type | Description | Notes
+------------ | ------------- | ------------- | -------------
+**programId** | **Long** | The ID of the loyalty program the customer profile is joined to. |
+**joinDate** | [**OffsetDateTime**](OffsetDateTime.md) | The date and time when the customer profile joined the loyalty program. |
+
+
+
diff --git a/docs/LedgerTransactionLogEntryIntegrationAPI.md b/docs/LedgerTransactionLogEntryIntegrationAPI.md
index 89553818..f3f83705 100644
--- a/docs/LedgerTransactionLogEntryIntegrationAPI.md
+++ b/docs/LedgerTransactionLogEntryIntegrationAPI.md
@@ -11,6 +11,7 @@ Name | Type | Description | Notes
**created** | [**OffsetDateTime**](OffsetDateTime.md) | Date and time the loyalty transaction occurred. |
**programId** | **Long** | ID of the loyalty program. |
**customerSessionId** | **String** | ID of the customer session where the transaction occurred. | [optional]
+**storeIntegrationId** | **String** | The integration ID of the store where the transaction occurred. Only set for transactions created by a customer session or event that referenced a store. | [optional]
**type** | [**TypeEnum**](#TypeEnum) | Type of transaction. Possible values: - `addition`: Signifies added points. - `subtraction`: Signifies deducted points. |
**name** | **String** | Name or reason of the loyalty ledger transaction. |
**startDate** | **String** | When points become active. Possible values: - `immediate`: Points are immediately active. - `on_action`: Points become active based on the customer's action. - a timestamp value: Points become active at a given date and time. |
@@ -21,7 +22,7 @@ Name | Type | Description | Notes
**rulesetId** | **Long** | The ID of the ruleset containing the rule that triggered this effect. | [optional]
**ruleName** | **String** | The name of the rule that triggered this effect. | [optional]
**flags** | [**LoyaltyLedgerEntryFlags**](LoyaltyLedgerEntryFlags.md) | | [optional]
-**validityDuration** | **String** | The duration for which the points remain active, relative to the activation date. **Note**: This only applies to points for which `awaitsActivation` is `true` and `expiryDate` is not set. | [optional]
+**validityDuration** | **String** | The duration for which the points remain active, relative to the activation date. **Note**: This only applies to points for which `awaitsActivation` is `true` and `expiryDate` is not set. | [optional]
diff --git a/docs/ListCheckAttributeBlock.md b/docs/ListCheckAttributeBlock.md
new file mode 100644
index 00000000..83bea3ea
--- /dev/null
+++ b/docs/ListCheckAttributeBlock.md
@@ -0,0 +1,24 @@
+
+
+# ListCheckAttributeBlock
+
+Variant of `CheckAttributeBlock` for operators that test list membership against a set of values.
+## Properties
+
+Name | Type | Description | Notes
+------------ | ------------- | ------------- | -------------
+**operator** | [**OperatorEnum**](#OperatorEnum) | The list membership operator applied to the attribute. | [optional]
+**values** | [**Object**](.md) | The set of values to match against. |
+
+
+
+## Enum: OperatorEnum
+
+Name | Value
+---- | -----
+CONTAINSONEOF | "containsOneOf"
+CONTAINSNONEOF | "containsNoneOf"
+CONTAINSALLOF | "containsAllOf"
+
+
+
diff --git a/docs/ListWithCountCheckAttributeBlock.md b/docs/ListWithCountCheckAttributeBlock.md
new file mode 100644
index 00000000..a181c9fd
--- /dev/null
+++ b/docs/ListWithCountCheckAttributeBlock.md
@@ -0,0 +1,24 @@
+
+
+# ListWithCountCheckAttributeBlock
+
+Variant of `CheckAttributeBlock` for operators that test list membership with a minimum or exact count threshold.
+## Properties
+
+Name | Type | Description | Notes
+------------ | ------------- | ------------- | -------------
+**operator** | [**OperatorEnum**](#OperatorEnum) | The list membership operator with a count threshold applied to the attribute. | [optional]
+**values** | [**Object**](.md) | The set of values to match against. |
+**count** | [**Object**](.md) | The count threshold for this operator. |
+
+
+
+## Enum: OperatorEnum
+
+Name | Value
+---- | -----
+CONTAINSATLEAST | "containsAtLeast"
+CONTAINSEXACTLY | "containsExactly"
+
+
+
diff --git a/docs/LocationCheckAttributeBlock.md b/docs/LocationCheckAttributeBlock.md
new file mode 100644
index 00000000..bc118c96
--- /dev/null
+++ b/docs/LocationCheckAttributeBlock.md
@@ -0,0 +1,23 @@
+
+
+# LocationCheckAttributeBlock
+
+A block variant of `CheckAttributeBlock` for operators that check whether a geographical location is inside a set of geometric areas.
+## Properties
+
+Name | Type | Description | Notes
+------------ | ------------- | ------------- | -------------
+**operator** | [**OperatorEnum**](#OperatorEnum) | The location membership operator applied to the attribute. | [optional]
+**values** | [**Object**](.md) | The geometric areas to check the location against. |
+
+
+
+## Enum: OperatorEnum
+
+Name | Value
+---- | -----
+IN | "in"
+NOT_IN_ | "not(in)"
+
+
+
diff --git a/docs/LoyaltyProgramLedgers.md b/docs/LoyaltyProgramLedgers.md
index b05bd41d..7ef703e5 100644
--- a/docs/LoyaltyProgramLedgers.md
+++ b/docs/LoyaltyProgramLedgers.md
@@ -12,7 +12,7 @@ Name | Type | Description | Notes
**name** | **String** | Internal name of loyalty program. |
**joinDate** | [**OffsetDateTime**](OffsetDateTime.md) | The date on which the customer joined the loyalty program in RFC3339. **Note**: This is in the loyalty program's time zone. | [optional]
**ledger** | [**LedgerInfo**](LedgerInfo.md) | |
-**subLedgers** | [**Map<String, LedgerInfo>**](LedgerInfo.md) | A map containing information about each loyalty subledger. | [optional]
+**subLedgers** | [**Map<String, LedgerInfo>**](LedgerInfo.md) | A map containing information about each loyalty subledger. Subledgers for which all balances are zero are excluded from the response. | [optional]
diff --git a/docs/LoyaltyProgramTransaction.md b/docs/LoyaltyProgramTransaction.md
index cfd0bb30..28bd85ab 100644
--- a/docs/LoyaltyProgramTransaction.md
+++ b/docs/LoyaltyProgramTransaction.md
@@ -26,7 +26,7 @@ Name | Type | Description | Notes
**rulesetId** | **Long** | ID of the ruleset containing the rule that triggered the effect. Applies only for transactions that resulted from a customer session. | [optional]
**ruleName** | **String** | Name of the rule that triggered the effect. Applies only for transactions that resulted from a customer session. | [optional]
**flags** | [**LoyaltyLedgerEntryFlags**](LoyaltyLedgerEntryFlags.md) | | [optional]
-**validityDuration** | **String** | The duration for which the points remain active, relative to the activation date. **Note**: This only applies to points for which `awaitsActivation` is `true` and `expiryDate` is not set. | [optional]
+**validityDuration** | **String** | The duration for which the points remain active, relative to the activation date. **Note**: This only applies to points for which `awaitsActivation` is `true` and `expiryDate` is not set. | [optional]
diff --git a/docs/MCPCompleteOAuthSession.md b/docs/MCPCompleteOAuthSession.md
new file mode 100644
index 00000000..60a3f3cd
--- /dev/null
+++ b/docs/MCPCompleteOAuthSession.md
@@ -0,0 +1,12 @@
+
+
+# MCPCompleteOAuthSession
+
+## Properties
+
+Name | Type | Description | Notes
+------------ | ------------- | ------------- | -------------
+**sessionId** | **String** | The pending authorization session ID to complete. |
+
+
+
diff --git a/docs/MCPOAuthClient.md b/docs/MCPOAuthClient.md
new file mode 100644
index 00000000..41487b68
--- /dev/null
+++ b/docs/MCPOAuthClient.md
@@ -0,0 +1,15 @@
+
+
+# MCPOAuthClient
+
+## Properties
+
+Name | Type | Description | Notes
+------------ | ------------- | ------------- | -------------
+**clientId** | **String** | Unique identifier for the OAuth2 client. |
+**clientName** | **String** | Human-readable name for the OAuth2 client. |
+**redirectUris** | **List<String>** | List of allowed redirect URIs for the authorization code flow. |
+**createdAt** | [**OffsetDateTime**](OffsetDateTime.md) | Timestamp of when the client was registered. |
+
+
+
diff --git a/docs/MCPOAuthCompleteResult.md b/docs/MCPOAuthCompleteResult.md
new file mode 100644
index 00000000..9fbe6d10
--- /dev/null
+++ b/docs/MCPOAuthCompleteResult.md
@@ -0,0 +1,12 @@
+
+
+# MCPOAuthCompleteResult
+
+## Properties
+
+Name | Type | Description | Notes
+------------ | ------------- | ------------- | -------------
+**redirectUrl** | **String** | The full redirect URL the browser should be sent to, containing the authorization code and state as query parameters. |
+
+
+
diff --git a/docs/MCPOAuthProtectedResource.md b/docs/MCPOAuthProtectedResource.md
new file mode 100644
index 00000000..0fd0681e
--- /dev/null
+++ b/docs/MCPOAuthProtectedResource.md
@@ -0,0 +1,13 @@
+
+
+# MCPOAuthProtectedResource
+
+## Properties
+
+Name | Type | Description | Notes
+------------ | ------------- | ------------- | -------------
+**resource** | **String** | The URL of the protected resource (the MCP entrypoint). |
+**authorizationServers** | **List<String>** | List of authorization server base URLs that can issue tokens for this resource. |
+
+
+
diff --git a/docs/MCPOAuthServerMetadata.md b/docs/MCPOAuthServerMetadata.md
new file mode 100644
index 00000000..0091f6c0
--- /dev/null
+++ b/docs/MCPOAuthServerMetadata.md
@@ -0,0 +1,18 @@
+
+
+# MCPOAuthServerMetadata
+
+## Properties
+
+Name | Type | Description | Notes
+------------ | ------------- | ------------- | -------------
+**issuer** | **String** | The authorization server's issuer identifier (its base URL). |
+**authorizationEndpoint** | **String** | URL of the authorization endpoint. |
+**tokenEndpoint** | **String** | URL of the token endpoint. |
+**registrationEndpoint** | **String** | URL of the client registration endpoint. |
+**responseTypesSupported** | **List<String>** | List of supported OAuth2 response types. |
+**grantTypesSupported** | **List<String>** | List of supported OAuth2 grant types. |
+**codeChallengeMethodsSupported** | **List<String>** | List of supported PKCE code challenge methods. |
+
+
+
diff --git a/docs/MCPOAuthSessionInfo.md b/docs/MCPOAuthSessionInfo.md
new file mode 100644
index 00000000..4263c03c
--- /dev/null
+++ b/docs/MCPOAuthSessionInfo.md
@@ -0,0 +1,14 @@
+
+
+# MCPOAuthSessionInfo
+
+## Properties
+
+Name | Type | Description | Notes
+------------ | ------------- | ------------- | -------------
+**sessionId** | **String** | The identifier of the authorization session. |
+**expiresAt** | [**OffsetDateTime**](OffsetDateTime.md) | The date and time at which the session expires. Date and time. Follows RFC3339 format. | [optional]
+**client** | [**MCPOAuthClient**](MCPOAuthClient.md) | |
+
+
+
diff --git a/docs/MCPOAuthToken.md b/docs/MCPOAuthToken.md
new file mode 100644
index 00000000..e06c9e21
--- /dev/null
+++ b/docs/MCPOAuthToken.md
@@ -0,0 +1,24 @@
+
+
+# MCPOAuthToken
+
+## Properties
+
+Name | Type | Description | Notes
+------------ | ------------- | ------------- | -------------
+**accessToken** | **String** | Bearer access token. |
+**tokenType** | [**TokenTypeEnum**](#TokenTypeEnum) | Token type. Always \"Bearer\". |
+**expiresIn** | **Long** | Seconds until the access token expires. |
+**refreshToken** | **String** | Refresh token for obtaining a new access token. |
+**refreshTokenExpiresIn** | **Long** | Seconds until the refresh token expires. |
+
+
+
+## Enum: TokenTypeEnum
+
+Name | Value
+---- | -----
+BEARER | "Bearer"
+
+
+
diff --git a/docs/MCPOAuthTokenError.md b/docs/MCPOAuthTokenError.md
new file mode 100644
index 00000000..aa81efe8
--- /dev/null
+++ b/docs/MCPOAuthTokenError.md
@@ -0,0 +1,24 @@
+
+
+# MCPOAuthTokenError
+
+## Properties
+
+Name | Type | Description | Notes
+------------ | ------------- | ------------- | -------------
+**error** | [**ErrorEnum**](#ErrorEnum) | RFC 6749 §5.2 error code. |
+**errorDescription** | **String** | Human-readable description of the error. | [optional]
+
+
+
+## Enum: ErrorEnum
+
+Name | Value
+---- | -----
+INVALID_REQUEST | "invalid_request"
+INVALID_CLIENT | "invalid_client"
+INVALID_GRANT | "invalid_grant"
+UNSUPPORTED_GRANT_TYPE | "unsupported_grant_type"
+
+
+
diff --git a/docs/MCPOAuthTokenRequest.md b/docs/MCPOAuthTokenRequest.md
new file mode 100644
index 00000000..383ad0e4
--- /dev/null
+++ b/docs/MCPOAuthTokenRequest.md
@@ -0,0 +1,26 @@
+
+
+# MCPOAuthTokenRequest
+
+## Properties
+
+Name | Type | Description | Notes
+------------ | ------------- | ------------- | -------------
+**grantType** | [**GrantTypeEnum**](#GrantTypeEnum) | OAuth2 grant type. |
+**code** | **String** | Authorization code. Required for `authorization_code` grant. | [optional]
+**clientId** | **String** | Client ID. Required for `authorization_code` grant. | [optional]
+**redirectUri** | **String** | Redirect URI. Required for `authorization_code` grant. | [optional]
+**codeVerifier** | **String** | PKCE code verifier. Required for `authorization_code` grant. | [optional]
+**refreshToken** | **String** | Refresh token. Required for `refresh_token` grant. | [optional]
+
+
+
+## Enum: GrantTypeEnum
+
+Name | Value
+---- | -----
+AUTHORIZATION_CODE | "authorization_code"
+REFRESH_TOKEN | "refresh_token"
+
+
+
diff --git a/docs/ManagementApi.md b/docs/ManagementApi.md
index 6e6680ec..76220c83 100644
--- a/docs/ManagementApi.md
+++ b/docs/ManagementApi.md
@@ -10,6 +10,7 @@ Method | HTTP request | Description
[**copyCampaignToApplications**](ManagementApi.md#copyCampaignToApplications) | **POST** /v1/applications/{applicationId}/campaigns/{campaignId}/copy | Copy the campaign into the specified Application
[**createAccountCollection**](ManagementApi.md#createAccountCollection) | **POST** /v1/collections | Create account-level collection
[**createAchievement**](ManagementApi.md#createAchievement) | **POST** /v1/applications/{applicationId}/campaigns/{campaignId}/achievements | Create achievement
+[**createAchievementV2**](ManagementApi.md#createAchievementV2) | **POST** /v2/achievements | Create achievement
[**createAdditionalCost**](ManagementApi.md#createAdditionalCost) | **POST** /v1/additional_costs | Create additional cost
[**createAttribute**](ManagementApi.md#createAttribute) | **POST** /v1/attributes | Create custom attribute
[**createBatchLoyaltyCards**](ManagementApi.md#createBatchLoyaltyCards) | **POST** /v1/loyalty_programs/{loyaltyProgramId}/cards/batch | Create loyalty cards
@@ -23,12 +24,14 @@ Method | HTTP request | Description
[**createInviteEmail**](ManagementApi.md#createInviteEmail) | **POST** /v1/invite_emails | Resend invitation email
[**createInviteV2**](ManagementApi.md#createInviteV2) | **POST** /v2/invites | Invite user
[**createPasswordRecoveryEmail**](ManagementApi.md#createPasswordRecoveryEmail) | **POST** /v1/password_recovery_emails | Request a password reset
+[**createRulesetV2**](ManagementApi.md#createRulesetV2) | **POST** /v2/applications/{applicationId}/campaigns/{campaignId}/rulesets | Create ruleset (V2)
[**createSession**](ManagementApi.md#createSession) | **POST** /v1/sessions | Create session
[**createStore**](ManagementApi.md#createStore) | **POST** /v1/applications/{applicationId}/stores | Create store
[**deactivateUserByEmail**](ManagementApi.md#deactivateUserByEmail) | **POST** /v1/users/deactivate | Disable user by email address
[**deductLoyaltyCardPoints**](ManagementApi.md#deductLoyaltyCardPoints) | **PUT** /v1/loyalty_programs/{loyaltyProgramId}/cards/{loyaltyCardId}/deduct_points | Deduct points from card
[**deleteAccountCollection**](ManagementApi.md#deleteAccountCollection) | **DELETE** /v1/collections/{collectionId} | Delete account-level collection
[**deleteAchievement**](ManagementApi.md#deleteAchievement) | **DELETE** /v1/applications/{applicationId}/campaigns/{campaignId}/achievements/{achievementId} | Delete achievement
+[**deleteAchievementV2**](ManagementApi.md#deleteAchievementV2) | **DELETE** /v2/achievements/{achievementId} | Delete achievement
[**deleteCampaign**](ManagementApi.md#deleteCampaign) | **DELETE** /v1/applications/{applicationId}/campaigns/{campaignId} | Delete campaign
[**deleteCampaignStoreBudgets**](ManagementApi.md#deleteCampaignStoreBudgets) | **DELETE** /v1/applications/{applicationId}/campaigns/{campaignId}/stores/budgets | Delete campaign store budgets
[**deleteCollection**](ManagementApi.md#deleteCollection) | **DELETE** /v1/applications/{applicationId}/campaigns/{campaignId}/collections/{collectionId} | Delete campaign-level collection
@@ -41,7 +44,9 @@ Method | HTTP request | Description
[**deleteUserByEmail**](ManagementApi.md#deleteUserByEmail) | **POST** /v1/users/delete | Delete user by email address
[**destroySession**](ManagementApi.md#destroySession) | **DELETE** /v1/sessions | Destroy session
[**disconnectCampaignStores**](ManagementApi.md#disconnectCampaignStores) | **DELETE** /v1/applications/{applicationId}/campaigns/{campaignId}/stores | Disconnect stores
+[**excludePriceHistory**](ManagementApi.md#excludePriceHistory) | **POST** /v1/applications/{applicationId}/price_history/exclusions | Exclude price records from price history
[**exportAccountCollectionItems**](ManagementApi.md#exportAccountCollectionItems) | **GET** /v1/collections/{collectionId}/export | Export account-level collection's items
+[**exportAchievementV2**](ManagementApi.md#exportAchievementV2) | **GET** /v2/achievements/{achievementId}/export | Export achievement customer data
[**exportAchievements**](ManagementApi.md#exportAchievements) | **GET** /v1/applications/{applicationId}/campaigns/{campaignId}/achievements/{achievementId}/export | Export achievement customer data
[**exportApplicationCampaignAnalytics**](ManagementApi.md#exportApplicationCampaignAnalytics) | **GET** /v1/applications/{applicationId}/campaign_analytics/export | Export Application analytics aggregated by campaign
[**exportAudiencesMemberships**](ManagementApi.md#exportAudiencesMemberships) | **GET** /v1/audiences/{audienceId}/memberships/export | Export audience members
@@ -68,6 +73,7 @@ Method | HTTP request | Description
[**getAccountAnalytics**](ManagementApi.md#getAccountAnalytics) | **GET** /v1/accounts/{accountId}/analytics | Get account analytics
[**getAccountCollection**](ManagementApi.md#getAccountCollection) | **GET** /v1/collections/{collectionId} | Get account-level collection
[**getAchievement**](ManagementApi.md#getAchievement) | **GET** /v1/applications/{applicationId}/campaigns/{campaignId}/achievements/{achievementId} | Get achievement
+[**getAchievementV2**](ManagementApi.md#getAchievementV2) | **GET** /v2/achievements/{achievementId} | Get achievement
[**getAdditionalCost**](ManagementApi.md#getAdditionalCost) | **GET** /v1/additional_costs/{additionalCostId} | Get additional cost
[**getAdditionalCosts**](ManagementApi.md#getAdditionalCosts) | **GET** /v1/additional_costs | List additional costs
[**getApplication**](ManagementApi.md#getApplication) | **GET** /v1/applications/{applicationId} | Get Application
@@ -81,6 +87,7 @@ Method | HTTP request | Description
[**getApplicationEventsWithoutTotalCount**](ManagementApi.md#getApplicationEventsWithoutTotalCount) | **GET** /v1/applications/{applicationId}/events/no_total | List Applications events
[**getApplicationSession**](ManagementApi.md#getApplicationSession) | **GET** /v1/applications/{applicationId}/sessions/{sessionId} | Get Application session
[**getApplicationSessions**](ManagementApi.md#getApplicationSessions) | **GET** /v1/applications/{applicationId}/sessions | List Application sessions
+[**getApplicationSessionsByCustomerAttributes**](ManagementApi.md#getApplicationSessionsByCustomerAttributes) | **POST** /v1/applications/{applicationId}/sessions_search | List Application sessions matching the given customer attributes
[**getApplications**](ManagementApi.md#getApplications) | **GET** /v1/applications | List Applications
[**getAttribute**](ManagementApi.md#getAttribute) | **GET** /v1/attributes/{attributeId} | Get custom attribute
[**getAttributes**](ManagementApi.md#getAttributes) | **GET** /v1/attributes | List custom attributes
@@ -110,12 +117,12 @@ Method | HTTP request | Description
[**getExperiment**](ManagementApi.md#getExperiment) | **GET** /v1/applications/{applicationId}/experiments/{experimentId} | Get experiment in Application
[**getExports**](ManagementApi.md#getExports) | **GET** /v1/exports | Get exports
[**getLoyaltyCard**](ManagementApi.md#getLoyaltyCard) | **GET** /v1/loyalty_programs/{loyaltyProgramId}/cards/{loyaltyCardId} | Get loyalty card
-[**getLoyaltyCardTransactionLogs**](ManagementApi.md#getLoyaltyCardTransactionLogs) | **GET** /v1/loyalty_programs/{loyaltyProgramId}/cards/{loyaltyCardId}/logs | List card's transactions
+[**getLoyaltyCardTransactionLogs**](ManagementApi.md#getLoyaltyCardTransactionLogs) | **GET** /v1/loyalty_programs/{loyaltyProgramId}/cards/{loyaltyCardId}/logs | List card's transactions (Management API)
[**getLoyaltyCards**](ManagementApi.md#getLoyaltyCards) | **GET** /v1/loyalty_programs/{loyaltyProgramId}/cards | List loyalty cards
-[**getLoyaltyLedgerBalances**](ManagementApi.md#getLoyaltyLedgerBalances) | **GET** /v1/loyalty_programs/{loyaltyProgramId}/profile/{integrationId}/ledger_balances | Get customer's loyalty balances
+[**getLoyaltyLedgerBalances**](ManagementApi.md#getLoyaltyLedgerBalances) | **GET** /v1/loyalty_programs/{loyaltyProgramId}/profile/{integrationId}/ledger_balances | Get customer's loyalty balances (Management API)
[**getLoyaltyPoints**](ManagementApi.md#getLoyaltyPoints) | **GET** /v1/loyalty_programs/{loyaltyProgramId}/profile/{integrationId} | Get customer's full loyalty ledger
[**getLoyaltyProgram**](ManagementApi.md#getLoyaltyProgram) | **GET** /v1/loyalty_programs/{loyaltyProgramId} | Get loyalty program
-[**getLoyaltyProgramProfileLedgerTransactions**](ManagementApi.md#getLoyaltyProgramProfileLedgerTransactions) | **GET** /v1/loyalty_programs/{loyaltyProgramId}/profile/{integrationId}/ledger_transactions | List customer's loyalty transactions
+[**getLoyaltyProgramProfileLedgerTransactions**](ManagementApi.md#getLoyaltyProgramProfileLedgerTransactions) | **GET** /v1/loyalty_programs/{loyaltyProgramId}/profile/{integrationId}/ledger_transactions | List customer's loyalty transactions (Management API)
[**getLoyaltyProgramTransactions**](ManagementApi.md#getLoyaltyProgramTransactions) | **GET** /v1/loyalty_programs/{loyaltyProgramId}/transactions | List loyalty program transactions
[**getLoyaltyPrograms**](ManagementApi.md#getLoyaltyPrograms) | **GET** /v1/loyalty_programs | List loyalty programs
[**getLoyaltyStatistics**](ManagementApi.md#getLoyaltyStatistics) | **GET** /v1/loyalty_programs/{loyaltyProgramId}/statistics | Get loyalty program statistics
@@ -123,6 +130,7 @@ Method | HTTP request | Description
[**getReferralsWithoutTotalCount**](ManagementApi.md#getReferralsWithoutTotalCount) | **GET** /v1/applications/{applicationId}/campaigns/{campaignId}/referrals/no_total | List referrals
[**getRoleV2**](ManagementApi.md#getRoleV2) | **GET** /v2/roles/{roleId} | Get role
[**getRuleset**](ManagementApi.md#getRuleset) | **GET** /v1/applications/{applicationId}/campaigns/{campaignId}/rulesets/{rulesetId} | Get ruleset
+[**getRulesetV2**](ManagementApi.md#getRulesetV2) | **GET** /v2/applications/{applicationId}/campaigns/{campaignId}/rulesets/{rulesetId} | Get ruleset (V2)
[**getRulesets**](ManagementApi.md#getRulesets) | **GET** /v1/applications/{applicationId}/campaigns/{campaignId}/rulesets | List campaign rulesets
[**getStore**](ManagementApi.md#getStore) | **GET** /v1/applications/{applicationId}/stores/{storeId} | Get store
[**getUser**](ManagementApi.md#getUser) | **GET** /v1/users/{userId} | Get user
@@ -138,12 +146,14 @@ Method | HTTP request | Description
[**importCoupons**](ManagementApi.md#importCoupons) | **POST** /v1/applications/{applicationId}/campaigns/{campaignId}/import_coupons | Import coupons
[**importLoyaltyCards**](ManagementApi.md#importLoyaltyCards) | **POST** /v1/loyalty_programs/{loyaltyProgramId}/import_cards | Import loyalty cards
[**importLoyaltyCustomersTiers**](ManagementApi.md#importLoyaltyCustomersTiers) | **POST** /v1/loyalty_programs/{loyaltyProgramId}/import_customers_tiers | Import customers into loyalty tiers
+[**importLoyaltyJoinDates**](ManagementApi.md#importLoyaltyJoinDates) | **POST** /v1/loyalty_programs/{loyaltyProgramId}/import_join_dates | Import join dates for a loyalty program
[**importLoyaltyPoints**](ManagementApi.md#importLoyaltyPoints) | **POST** /v1/loyalty_programs/{loyaltyProgramId}/import_points | Import loyalty points
[**importPoolGiveaways**](ManagementApi.md#importPoolGiveaways) | **POST** /v1/giveaways/pools/{poolId}/import | Import giveaway codes into a giveaway pool
[**importReferrals**](ManagementApi.md#importReferrals) | **POST** /v1/applications/{applicationId}/campaigns/{campaignId}/import_referrals | Import referrals
[**inviteUserExternal**](ManagementApi.md#inviteUserExternal) | **POST** /v1/users/invite | Invite user from identity provider
[**listAccountCollections**](ManagementApi.md#listAccountCollections) | **GET** /v1/collections | List collections in account
[**listAchievements**](ManagementApi.md#listAchievements) | **GET** /v1/applications/{applicationId}/campaigns/{campaignId}/achievements | List achievements
+[**listAchievementsV2**](ManagementApi.md#listAchievementsV2) | **GET** /v2/achievements | List achievements
[**listAllRolesV2**](ManagementApi.md#listAllRolesV2) | **GET** /v2/roles | List roles
[**listApplicationCartItemFilters**](ManagementApi.md#listApplicationCartItemFilters) | **GET** /v1/applications/{applicationId}/cart_item_filters | List Application cart item filters
[**listCampaignStoreBudgetLimits**](ManagementApi.md#listCampaignStoreBudgetLimits) | **GET** /v1/applications/{applicationId}/campaigns/{campaignId}/stores/budgets | List campaign store budget limits
@@ -177,6 +187,7 @@ Method | HTTP request | Description
[**transferLoyaltyCard**](ManagementApi.md#transferLoyaltyCard) | **PUT** /v1/loyalty_programs/{loyaltyProgramId}/cards/{loyaltyCardId}/transfer | Transfer card data
[**updateAccountCollection**](ManagementApi.md#updateAccountCollection) | **PUT** /v1/collections/{collectionId} | Update account-level collection
[**updateAchievement**](ManagementApi.md#updateAchievement) | **PUT** /v1/applications/{applicationId}/campaigns/{campaignId}/achievements/{achievementId} | Update achievement
+[**updateAchievementV2**](ManagementApi.md#updateAchievementV2) | **PUT** /v2/achievements/{achievementId} | Update achievement
[**updateAdditionalCost**](ManagementApi.md#updateAdditionalCost) | **PUT** /v1/additional_costs/{additionalCostId} | Update additional cost
[**updateAttribute**](ManagementApi.md#updateAttribute) | **PUT** /v1/attributes/{attributeId} | Update custom attribute
[**updateCampaign**](ManagementApi.md#updateCampaign) | **PUT** /v1/applications/{applicationId}/campaigns/{campaignId} | Update campaign
@@ -720,6 +731,93 @@ Name | Type | Description | Notes
| **409** | Conflict. An achievement with this name or title already exists. | - |
+## createAchievementV2
+
+> AchievementV2 createAchievementV2(body)
+
+Create achievement
+
+Create a new account-level achievement.
+
+### Example
+
+```java
+// Import classes:
+import one.talon.ApiClient;
+import one.talon.ApiException;
+import one.talon.Configuration;
+import one.talon.auth.*;
+import one.talon.models.*;
+import one.talon.api.ManagementApi;
+
+public class Example {
+ public static void main(String[] args) {
+ ApiClient defaultClient = Configuration.getDefaultApiClient();
+ defaultClient.setBasePath("https://yourbaseurl.talon.one");
+
+ // Configure API key authorization: api_key_v1
+ ApiKeyAuth api_key_v1 = (ApiKeyAuth) defaultClient.getAuthentication("api_key_v1");
+ api_key_v1.setApiKey("YOUR API KEY");
+ // Uncomment the following line to set a prefix for the API key, e.g. "Token" (defaults to null)
+ //api_key_v1.setApiKeyPrefix("Token");
+
+ // Configure API key authorization: management_key
+ ApiKeyAuth management_key = (ApiKeyAuth) defaultClient.getAuthentication("management_key");
+ management_key.setApiKey("YOUR API KEY");
+ // Uncomment the following line to set a prefix for the API key, e.g. "Token" (defaults to null)
+ //management_key.setApiKeyPrefix("Token");
+
+ // Configure API key authorization: manager_auth
+ ApiKeyAuth manager_auth = (ApiKeyAuth) defaultClient.getAuthentication("manager_auth");
+ manager_auth.setApiKey("YOUR API KEY");
+ // Uncomment the following line to set a prefix for the API key, e.g. "Token" (defaults to null)
+ //manager_auth.setApiKeyPrefix("Token");
+
+ ManagementApi apiInstance = new ManagementApi(defaultClient);
+ CreateAchievementV2 body = new CreateAchievementV2(); // CreateAchievementV2 | body
+ try {
+ AchievementV2 result = apiInstance.createAchievementV2(body);
+ System.out.println(result);
+ } catch (ApiException e) {
+ System.err.println("Exception when calling ManagementApi#createAchievementV2");
+ System.err.println("Status code: " + e.getCode());
+ System.err.println("Reason: " + e.getResponseBody());
+ System.err.println("Response headers: " + e.getResponseHeaders());
+ e.printStackTrace();
+ }
+ }
+}
+```
+
+### Parameters
+
+
+Name | Type | Description | Notes
+------------- | ------------- | ------------- | -------------
+ **body** | [**CreateAchievementV2**](CreateAchievementV2.md)| body |
+
+### Return type cool
+
+[**AchievementV2**](AchievementV2.md)
+
+### Authorization
+
+[api_key_v1](../README.md#api_key_v1), [management_key](../README.md#management_key), [manager_auth](../README.md#manager_auth)
+
+### HTTP request headers
+
+- **Content-Type**: application/json
+- **Accept**: application/json
+
+### HTTP response details
+| Status code | Description | Response headers |
+|-------------|-------------|------------------|
+| **201** | Created | - |
+| **400** | Bad request | - |
+| **401** | Unauthorized | - |
+| **409** | Conflict. An achievement with this name already exists. | - |
+
+
## createAdditionalCost
> AccountAdditionalCost createAdditionalCost(body)
@@ -1850,6 +1948,95 @@ Name | Type | Description | Notes
| **204** | Created | - |
+## createRulesetV2
+
+> RulesetV2 createRulesetV2(applicationId, campaignId, body)
+
+Create ruleset (V2)
+
+Create a ruleset from promotion and strikethrough rules in the V2 JSON block format. A ruleset is a revision of all the rules of a campaign. Only `group` and `passthrough` blocks are currently writable, with optional `onFailure` blocks. A payload containing any other block type is rejected. Each rule's `blocks` array may contain at most one block.
+
+### Example
+
+```java
+// Import classes:
+import one.talon.ApiClient;
+import one.talon.ApiException;
+import one.talon.Configuration;
+import one.talon.auth.*;
+import one.talon.models.*;
+import one.talon.api.ManagementApi;
+
+public class Example {
+ public static void main(String[] args) {
+ ApiClient defaultClient = Configuration.getDefaultApiClient();
+ defaultClient.setBasePath("https://yourbaseurl.talon.one");
+
+ // Configure API key authorization: api_key_v1
+ ApiKeyAuth api_key_v1 = (ApiKeyAuth) defaultClient.getAuthentication("api_key_v1");
+ api_key_v1.setApiKey("YOUR API KEY");
+ // Uncomment the following line to set a prefix for the API key, e.g. "Token" (defaults to null)
+ //api_key_v1.setApiKeyPrefix("Token");
+
+ // Configure API key authorization: management_key
+ ApiKeyAuth management_key = (ApiKeyAuth) defaultClient.getAuthentication("management_key");
+ management_key.setApiKey("YOUR API KEY");
+ // Uncomment the following line to set a prefix for the API key, e.g. "Token" (defaults to null)
+ //management_key.setApiKeyPrefix("Token");
+
+ // Configure API key authorization: manager_auth
+ ApiKeyAuth manager_auth = (ApiKeyAuth) defaultClient.getAuthentication("manager_auth");
+ manager_auth.setApiKey("YOUR API KEY");
+ // Uncomment the following line to set a prefix for the API key, e.g. "Token" (defaults to null)
+ //manager_auth.setApiKeyPrefix("Token");
+
+ ManagementApi apiInstance = new ManagementApi(defaultClient);
+ Long applicationId = 56L; // Long | The ID of the Application. It is displayed in your Talon.One deployment URL.
+ Long campaignId = 56L; // Long | The ID of the campaign. It is displayed in your Talon.One deployment URL.
+ RulesetV2 body = new RulesetV2(); // RulesetV2 | body
+ try {
+ RulesetV2 result = apiInstance.createRulesetV2(applicationId, campaignId, body);
+ System.out.println(result);
+ } catch (ApiException e) {
+ System.err.println("Exception when calling ManagementApi#createRulesetV2");
+ System.err.println("Status code: " + e.getCode());
+ System.err.println("Reason: " + e.getResponseBody());
+ System.err.println("Response headers: " + e.getResponseHeaders());
+ e.printStackTrace();
+ }
+ }
+}
+```
+
+### Parameters
+
+
+Name | Type | Description | Notes
+------------- | ------------- | ------------- | -------------
+ **applicationId** | **Long**| The ID of the Application. It is displayed in your Talon.One deployment URL. |
+ **campaignId** | **Long**| The ID of the campaign. It is displayed in your Talon.One deployment URL. |
+ **body** | [**RulesetV2**](RulesetV2.md)| body |
+
+### Return type cool
+
+[**RulesetV2**](RulesetV2.md)
+
+### Authorization
+
+[api_key_v1](../README.md#api_key_v1), [management_key](../README.md#management_key), [manager_auth](../README.md#manager_auth)
+
+### HTTP request headers
+
+- **Content-Type**: application/json
+- **Accept**: application/json
+
+### HTTP response details
+| Status code | Description | Response headers |
+|-------------|-------------|------------------|
+| **201** | Created | - |
+| **400** | Bad request | - |
+
+
## createSession
> Session createSession(body)
@@ -2368,6 +2555,91 @@ null (empty response body)
| **404** | Not found | - |
+## deleteAchievementV2
+
+> deleteAchievementV2(achievementId)
+
+Delete achievement
+
+Delete a specific achievement.
+
+### Example
+
+```java
+// Import classes:
+import one.talon.ApiClient;
+import one.talon.ApiException;
+import one.talon.Configuration;
+import one.talon.auth.*;
+import one.talon.models.*;
+import one.talon.api.ManagementApi;
+
+public class Example {
+ public static void main(String[] args) {
+ ApiClient defaultClient = Configuration.getDefaultApiClient();
+ defaultClient.setBasePath("https://yourbaseurl.talon.one");
+
+ // Configure API key authorization: api_key_v1
+ ApiKeyAuth api_key_v1 = (ApiKeyAuth) defaultClient.getAuthentication("api_key_v1");
+ api_key_v1.setApiKey("YOUR API KEY");
+ // Uncomment the following line to set a prefix for the API key, e.g. "Token" (defaults to null)
+ //api_key_v1.setApiKeyPrefix("Token");
+
+ // Configure API key authorization: management_key
+ ApiKeyAuth management_key = (ApiKeyAuth) defaultClient.getAuthentication("management_key");
+ management_key.setApiKey("YOUR API KEY");
+ // Uncomment the following line to set a prefix for the API key, e.g. "Token" (defaults to null)
+ //management_key.setApiKeyPrefix("Token");
+
+ // Configure API key authorization: manager_auth
+ ApiKeyAuth manager_auth = (ApiKeyAuth) defaultClient.getAuthentication("manager_auth");
+ manager_auth.setApiKey("YOUR API KEY");
+ // Uncomment the following line to set a prefix for the API key, e.g. "Token" (defaults to null)
+ //manager_auth.setApiKeyPrefix("Token");
+
+ ManagementApi apiInstance = new ManagementApi(defaultClient);
+ Long achievementId = 56L; // Long | The ID of the achievement. You can get this ID with the [List achievement](https://docs.talon.one/management-api#tag/Achievements/operation/listAchievementsV2) endpoint.
+ try {
+ apiInstance.deleteAchievementV2(achievementId);
+ } catch (ApiException e) {
+ System.err.println("Exception when calling ManagementApi#deleteAchievementV2");
+ System.err.println("Status code: " + e.getCode());
+ System.err.println("Reason: " + e.getResponseBody());
+ System.err.println("Response headers: " + e.getResponseHeaders());
+ e.printStackTrace();
+ }
+ }
+}
+```
+
+### Parameters
+
+
+Name | Type | Description | Notes
+------------- | ------------- | ------------- | -------------
+ **achievementId** | **Long**| The ID of the achievement. You can get this ID with the [List achievement](https://docs.talon.one/management-api#tag/Achievements/operation/listAchievementsV2) endpoint. |
+
+### Return type cool
+
+null (empty response body)
+
+### Authorization
+
+[api_key_v1](../README.md#api_key_v1), [management_key](../README.md#management_key), [manager_auth](../README.md#manager_auth)
+
+### HTTP request headers
+
+- **Content-Type**: Not defined
+- **Accept**: application/json
+
+### HTTP response details
+| Status code | Description | Response headers |
+|-------------|-------------|------------------|
+| **204** | No Content | - |
+| **401** | Unauthorized | - |
+| **404** | Not found | - |
+
+
## deleteCampaign
> deleteCampaign(applicationId, campaignId)
@@ -3172,13 +3444,175 @@ null (empty response body)
| **204** | No Content | - |
-## deleteUserByEmail
+## deleteUserByEmail
+
+> deleteUserByEmail(body)
+
+Delete user by email address
+
+[Delete a specific user](https://docs.talon.one/docs/product/account/account-settings/managing-users#deleting-a-user) by their email address.
+
+### Example
+
+```java
+// Import classes:
+import one.talon.ApiClient;
+import one.talon.ApiException;
+import one.talon.Configuration;
+import one.talon.auth.*;
+import one.talon.models.*;
+import one.talon.api.ManagementApi;
+
+public class Example {
+ public static void main(String[] args) {
+ ApiClient defaultClient = Configuration.getDefaultApiClient();
+ defaultClient.setBasePath("https://yourbaseurl.talon.one");
+
+ // Configure API key authorization: api_key_v1
+ ApiKeyAuth api_key_v1 = (ApiKeyAuth) defaultClient.getAuthentication("api_key_v1");
+ api_key_v1.setApiKey("YOUR API KEY");
+ // Uncomment the following line to set a prefix for the API key, e.g. "Token" (defaults to null)
+ //api_key_v1.setApiKeyPrefix("Token");
+
+ // Configure API key authorization: management_key
+ ApiKeyAuth management_key = (ApiKeyAuth) defaultClient.getAuthentication("management_key");
+ management_key.setApiKey("YOUR API KEY");
+ // Uncomment the following line to set a prefix for the API key, e.g. "Token" (defaults to null)
+ //management_key.setApiKeyPrefix("Token");
+
+ // Configure API key authorization: manager_auth
+ ApiKeyAuth manager_auth = (ApiKeyAuth) defaultClient.getAuthentication("manager_auth");
+ manager_auth.setApiKey("YOUR API KEY");
+ // Uncomment the following line to set a prefix for the API key, e.g. "Token" (defaults to null)
+ //manager_auth.setApiKeyPrefix("Token");
+
+ ManagementApi apiInstance = new ManagementApi(defaultClient);
+ DeleteUserRequest body = new DeleteUserRequest(); // DeleteUserRequest | body
+ try {
+ apiInstance.deleteUserByEmail(body);
+ } catch (ApiException e) {
+ System.err.println("Exception when calling ManagementApi#deleteUserByEmail");
+ System.err.println("Status code: " + e.getCode());
+ System.err.println("Reason: " + e.getResponseBody());
+ System.err.println("Response headers: " + e.getResponseHeaders());
+ e.printStackTrace();
+ }
+ }
+}
+```
+
+### Parameters
+
+
+Name | Type | Description | Notes
+------------- | ------------- | ------------- | -------------
+ **body** | [**DeleteUserRequest**](DeleteUserRequest.md)| body |
+
+### Return type cool
+
+null (empty response body)
+
+### Authorization
+
+[api_key_v1](../README.md#api_key_v1), [management_key](../README.md#management_key), [manager_auth](../README.md#manager_auth)
+
+### HTTP request headers
+
+- **Content-Type**: application/json
+- **Accept**: Not defined
+
+### HTTP response details
+| Status code | Description | Response headers |
+|-------------|-------------|------------------|
+| **204** | No Content | - |
+
+
+## destroySession
+
+> destroySession()
+
+Destroy session
+
+Destroys the session.
+
+### Example
+
+```java
+// Import classes:
+import one.talon.ApiClient;
+import one.talon.ApiException;
+import one.talon.Configuration;
+import one.talon.auth.*;
+import one.talon.models.*;
+import one.talon.api.ManagementApi;
+
+public class Example {
+ public static void main(String[] args) {
+ ApiClient defaultClient = Configuration.getDefaultApiClient();
+ defaultClient.setBasePath("https://yourbaseurl.talon.one");
+
+ // Configure API key authorization: api_key_v1
+ ApiKeyAuth api_key_v1 = (ApiKeyAuth) defaultClient.getAuthentication("api_key_v1");
+ api_key_v1.setApiKey("YOUR API KEY");
+ // Uncomment the following line to set a prefix for the API key, e.g. "Token" (defaults to null)
+ //api_key_v1.setApiKeyPrefix("Token");
+
+ // Configure API key authorization: management_key
+ ApiKeyAuth management_key = (ApiKeyAuth) defaultClient.getAuthentication("management_key");
+ management_key.setApiKey("YOUR API KEY");
+ // Uncomment the following line to set a prefix for the API key, e.g. "Token" (defaults to null)
+ //management_key.setApiKeyPrefix("Token");
+
+ // Configure API key authorization: manager_auth
+ ApiKeyAuth manager_auth = (ApiKeyAuth) defaultClient.getAuthentication("manager_auth");
+ manager_auth.setApiKey("YOUR API KEY");
+ // Uncomment the following line to set a prefix for the API key, e.g. "Token" (defaults to null)
+ //manager_auth.setApiKeyPrefix("Token");
+
+ ManagementApi apiInstance = new ManagementApi(defaultClient);
+ try {
+ apiInstance.destroySession();
+ } catch (ApiException e) {
+ System.err.println("Exception when calling ManagementApi#destroySession");
+ System.err.println("Status code: " + e.getCode());
+ System.err.println("Reason: " + e.getResponseBody());
+ System.err.println("Response headers: " + e.getResponseHeaders());
+ e.printStackTrace();
+ }
+ }
+}
+```
+
+### Parameters
+
+This endpoint does not need any parameter.
+
+### Return type cool
+
+null (empty response body)
+
+### Authorization
+
+[api_key_v1](../README.md#api_key_v1), [management_key](../README.md#management_key), [manager_auth](../README.md#manager_auth)
+
+### HTTP request headers
+
+- **Content-Type**: Not defined
+- **Accept**: Not defined
+
+### HTTP response details
+| Status code | Description | Response headers |
+|-------------|-------------|------------------|
+| **204** | No Content | - |
+
+
+## disconnectCampaignStores
-> deleteUserByEmail(body)
+> disconnectCampaignStores(applicationId, campaignId)
-Delete user by email address
+Disconnect stores
-[Delete a specific user](https://docs.talon.one/docs/product/account/account-settings/managing-users#deleting-a-user) by their email address.
+Disconnect the stores linked to a specific campaign.
### Example
@@ -3215,11 +3649,12 @@ public class Example {
//manager_auth.setApiKeyPrefix("Token");
ManagementApi apiInstance = new ManagementApi(defaultClient);
- DeleteUserRequest body = new DeleteUserRequest(); // DeleteUserRequest | body
+ Long applicationId = 56L; // Long | The ID of the Application. It is displayed in your Talon.One deployment URL.
+ Long campaignId = 56L; // Long | The ID of the campaign. It is displayed in your Talon.One deployment URL.
try {
- apiInstance.deleteUserByEmail(body);
+ apiInstance.disconnectCampaignStores(applicationId, campaignId);
} catch (ApiException e) {
- System.err.println("Exception when calling ManagementApi#deleteUserByEmail");
+ System.err.println("Exception when calling ManagementApi#disconnectCampaignStores");
System.err.println("Status code: " + e.getCode());
System.err.println("Reason: " + e.getResponseBody());
System.err.println("Response headers: " + e.getResponseHeaders());
@@ -3234,7 +3669,8 @@ public class Example {
Name | Type | Description | Notes
------------- | ------------- | ------------- | -------------
- **body** | [**DeleteUserRequest**](DeleteUserRequest.md)| body |
+ **applicationId** | **Long**| The ID of the Application. It is displayed in your Talon.One deployment URL. |
+ **campaignId** | **Long**| The ID of the campaign. It is displayed in your Talon.One deployment URL. |
### Return type cool
@@ -3246,22 +3682,25 @@ null (empty response body)
### HTTP request headers
-- **Content-Type**: application/json
-- **Accept**: Not defined
+- **Content-Type**: Not defined
+- **Accept**: application/json
### HTTP response details
| Status code | Description | Response headers |
|-------------|-------------|------------------|
| **204** | No Content | - |
+| **400** | Bad request | - |
+| **401** | Unauthorized - Invalid API key | - |
+| **404** | Not found | - |
-## destroySession
+## excludePriceHistory
-> destroySession()
+> excludePriceHistory(applicationId, body)
-Destroy session
+Exclude price records from price history
-Destroys the session.
+Select a batch of historical price IDs to exclude from [best prior price calculation](https://docs.talon.one/integration-api#tag/Catalogs/operation/bestPriorPrice). All IDs in the batch must be valid `id` values obtained from the [Get summary of price history](https://docs.talon.one/management-api#tag/Catalogs/operation/priceHistory.responses.200.history) endpoint, must belong to the specified Application, must not already be excluded from best prior price calculation, and must not be associated with a scheduled strikethrough pricing notification.
### Example
@@ -3298,10 +3737,12 @@ public class Example {
//manager_auth.setApiKeyPrefix("Token");
ManagementApi apiInstance = new ManagementApi(defaultClient);
+ Long applicationId = 56L; // Long | The ID of the Application. It is displayed in your Talon.One deployment URL.
+ ExcludePriceObservationsRequest body = new ExcludePriceObservationsRequest(); // ExcludePriceObservationsRequest | body
try {
- apiInstance.destroySession();
+ apiInstance.excludePriceHistory(applicationId, body);
} catch (ApiException e) {
- System.err.println("Exception when calling ManagementApi#destroySession");
+ System.err.println("Exception when calling ManagementApi#excludePriceHistory");
System.err.println("Status code: " + e.getCode());
System.err.println("Reason: " + e.getResponseBody());
System.err.println("Response headers: " + e.getResponseHeaders());
@@ -3313,7 +3754,11 @@ public class Example {
### Parameters
-This endpoint does not need any parameter.
+
+Name | Type | Description | Notes
+------------- | ------------- | ------------- | -------------
+ **applicationId** | **Long**| The ID of the Application. It is displayed in your Talon.One deployment URL. |
+ **body** | [**ExcludePriceObservationsRequest**](ExcludePriceObservationsRequest.md)| body |
### Return type cool
@@ -3325,22 +3770,22 @@ null (empty response body)
### HTTP request headers
-- **Content-Type**: Not defined
+- **Content-Type**: application/json
- **Accept**: Not defined
### HTTP response details
| Status code | Description | Response headers |
|-------------|-------------|------------------|
-| **204** | No Content | - |
+| **200** | Ok | - |
-## disconnectCampaignStores
+## exportAccountCollectionItems
-> disconnectCampaignStores(applicationId, campaignId)
+> String exportAccountCollectionItems(collectionId)
-Disconnect stores
+Export account-level collection's items
-Disconnect the stores linked to a specific campaign.
+Download a CSV file containing items from a given account-level collection. > [!tip] If the exported CSV file is too large to view, you can > [split it into multiple files](https://www.google.com/search?q=split+CSV+into+multiple+files).
### Example
@@ -3377,12 +3822,12 @@ public class Example {
//manager_auth.setApiKeyPrefix("Token");
ManagementApi apiInstance = new ManagementApi(defaultClient);
- Long applicationId = 56L; // Long | The ID of the Application. It is displayed in your Talon.One deployment URL.
- Long campaignId = 56L; // Long | The ID of the campaign. It is displayed in your Talon.One deployment URL.
+ Long collectionId = 56L; // Long | The ID of the collection. You can get it with the [List collections in account](#tag/Collections/operation/listAccountCollections) endpoint.
try {
- apiInstance.disconnectCampaignStores(applicationId, campaignId);
+ String result = apiInstance.exportAccountCollectionItems(collectionId);
+ System.out.println(result);
} catch (ApiException e) {
- System.err.println("Exception when calling ManagementApi#disconnectCampaignStores");
+ System.err.println("Exception when calling ManagementApi#exportAccountCollectionItems");
System.err.println("Status code: " + e.getCode());
System.err.println("Reason: " + e.getResponseBody());
System.err.println("Response headers: " + e.getResponseHeaders());
@@ -3397,12 +3842,11 @@ public class Example {
Name | Type | Description | Notes
------------- | ------------- | ------------- | -------------
- **applicationId** | **Long**| The ID of the Application. It is displayed in your Talon.One deployment URL. |
- **campaignId** | **Long**| The ID of the campaign. It is displayed in your Talon.One deployment URL. |
+ **collectionId** | **Long**| The ID of the collection. You can get it with the [List collections in account](#tag/Collections/operation/listAccountCollections) endpoint. |
### Return type cool
-null (empty response body)
+**String**
### Authorization
@@ -3411,24 +3855,23 @@ null (empty response body)
### HTTP request headers
- **Content-Type**: Not defined
-- **Accept**: application/json
+- **Accept**: application/csv
### HTTP response details
| Status code | Description | Response headers |
|-------------|-------------|------------------|
-| **204** | No Content | - |
-| **400** | Bad request | - |
+| **200** | OK | - |
| **401** | Unauthorized - Invalid API key | - |
| **404** | Not found | - |
-## exportAccountCollectionItems
+## exportAchievementV2
-> String exportAccountCollectionItems(collectionId)
+> String exportAchievementV2(achievementId)
-Export account-level collection's items
+Export achievement customer data
-Download a CSV file containing items from a given account-level collection. > [!tip] If the exported CSV file is too large to view, you can > [split it into multiple files](https://www.google.com/search?q=split+CSV+into+multiple+files).
+Download a CSV file containing a list of all the customers who have participated in and are currently participating in the given achievement. The CSV file contains the following columns: - `profileIntegrationID`: The integration ID of the customer profile participating in the achievement. - `title`: The display name of the achievement in the Campaign Manager. - `target`: The required number of actions or the transactional milestone to complete the achievement. - `progress`: The current progress of the customer in the achievement. - `status`: The status of the achievement. Can be one of: ['inprogress', 'completed', 'expired']. - `startDate`: The date on which the customer profile started the achievement in RFC3339. - `endDate`: The date on which the achievement ends and resets for the customer profile in RFC3339. - `completionDate`: The date on which the customer profile completed the achievement in RFC3339.
### Example
@@ -3465,12 +3908,12 @@ public class Example {
//manager_auth.setApiKeyPrefix("Token");
ManagementApi apiInstance = new ManagementApi(defaultClient);
- Long collectionId = 56L; // Long | The ID of the collection. You can get it with the [List collections in account](#tag/Collections/operation/listAccountCollections) endpoint.
+ Long achievementId = 56L; // Long | The ID of the achievement. You can get this ID with the [List achievements](https://docs.talon.one/management-api#tag/Achievements/operation/listAchievementsV2) endpoint.
try {
- String result = apiInstance.exportAccountCollectionItems(collectionId);
+ String result = apiInstance.exportAchievementV2(achievementId);
System.out.println(result);
} catch (ApiException e) {
- System.err.println("Exception when calling ManagementApi#exportAccountCollectionItems");
+ System.err.println("Exception when calling ManagementApi#exportAchievementV2");
System.err.println("Status code: " + e.getCode());
System.err.println("Reason: " + e.getResponseBody());
System.err.println("Response headers: " + e.getResponseHeaders());
@@ -3485,7 +3928,7 @@ public class Example {
Name | Type | Description | Notes
------------- | ------------- | ------------- | -------------
- **collectionId** | **Long**| The ID of the collection. You can get it with the [List collections in account](#tag/Collections/operation/listAccountCollections) endpoint. |
+ **achievementId** | **Long**| The ID of the achievement. You can get this ID with the [List achievements](https://docs.talon.one/management-api#tag/Achievements/operation/listAchievementsV2) endpoint. |
### Return type cool
@@ -3504,7 +3947,8 @@ Name | Type | Description | Notes
| Status code | Description | Response headers |
|-------------|-------------|------------------|
| **200** | OK | - |
-| **401** | Unauthorized - Invalid API key | - |
+| **400** | Bad request | - |
+| **401** | Unauthorized | - |
| **404** | Not found | - |
@@ -4141,7 +4585,7 @@ Name | Type | Description | Notes
## exportCoupons
-> String exportCoupons(applicationId, campaignId, sort, value, createdBefore, createdAfter, valid, usable, referralId, recipientIntegrationId, batchId, exactMatch, dateFormat, campaignState, valuesOnly)
+> String exportCoupons(applicationId, campaignId, sort, value, createdBefore, createdAfter, valid, usable, referralId, recipientIntegrationId, batchId, exactMatch, dateFormat, campaignState, valuesOnly, deletedBefore, deletedAfter)
Export coupons
@@ -4197,8 +4641,10 @@ public class Example {
String dateFormat = "dateFormat_example"; // String | Determines the format of dates in the export document.
String campaignState = "campaignState_example"; // String | Filter results by the state of the campaign. - `enabled`: Campaigns that are scheduled, running (activated), or expired. - `running`: Campaigns that are running (activated). - `disabled`: Campaigns that are disabled. - `expired`: Campaigns that are expired. - `archived`: Campaigns that are archived.
Boolean valuesOnly = false; // Boolean | Filter results to only return the coupon codes (`value` column) without the associated coupon data.
+ OffsetDateTime deletedBefore = new OffsetDateTime(); // OffsetDateTime | Timestamp that filters the results to only contain coupons deleted before this date. Must be an RFC3339 timestamp string. You can use any time zone setting. Talon.One will convert to UTC internally. **Note:** Only coupons deleted in the last 7 days will appear in the results.
+ OffsetDateTime deletedAfter = new OffsetDateTime(); // OffsetDateTime | Timestamp that filters the results to only contain coupons deleted after this date. Must be an RFC3339 timestamp string. You can use any time zone setting. Talon.One will convert to UTC internally. **Note:** Only coupons deleted in the last 7 days will appear in the results.
try {
- String result = apiInstance.exportCoupons(applicationId, campaignId, sort, value, createdBefore, createdAfter, valid, usable, referralId, recipientIntegrationId, batchId, exactMatch, dateFormat, campaignState, valuesOnly);
+ String result = apiInstance.exportCoupons(applicationId, campaignId, sort, value, createdBefore, createdAfter, valid, usable, referralId, recipientIntegrationId, batchId, exactMatch, dateFormat, campaignState, valuesOnly, deletedBefore, deletedAfter);
System.out.println(result);
} catch (ApiException e) {
System.err.println("Exception when calling ManagementApi#exportCoupons");
@@ -4231,6 +4677,8 @@ Name | Type | Description | Notes
**dateFormat** | **String**| Determines the format of dates in the export document. | [optional] [enum: excel, ISO8601]
**campaignState** | **String**| Filter results by the state of the campaign. - `enabled`: Campaigns that are scheduled, running (activated), or expired. - `running`: Campaigns that are running (activated). - `disabled`: Campaigns that are disabled. - `expired`: Campaigns that are expired. - `archived`: Campaigns that are archived. | [optional] [enum: enabled, disabled, archived, scheduled, running, expired, staged]
**valuesOnly** | **Boolean**| Filter results to only return the coupon codes (`value` column) without the associated coupon data. | [optional] [default to false]
+ **deletedBefore** | **OffsetDateTime**| Timestamp that filters the results to only contain coupons deleted before this date. Must be an RFC3339 timestamp string. You can use any time zone setting. Talon.One will convert to UTC internally. **Note:** Only coupons deleted in the last 7 days will appear in the results. | [optional]
+ **deletedAfter** | **OffsetDateTime**| Timestamp that filters the results to only contain coupons deleted after this date. Must be an RFC3339 timestamp string. You can use any time zone setting. Talon.One will convert to UTC internally. **Note:** Only coupons deleted in the last 7 days will appear in the results. | [optional]
### Return type cool
@@ -4253,7 +4701,7 @@ Name | Type | Description | Notes
## exportCustomerSessions
-> String exportCustomerSessions(applicationId, createdBefore, createdAfter, profileIntegrationId, dateFormat, customerSessionState)
+> String exportCustomerSessions(applicationId, createdBefore, createdAfter, updatedBefore, updatedAfter, profileIntegrationId, dateFormat, customerSessionState)
Export customer sessions
@@ -4297,11 +4745,13 @@ public class Example {
Long applicationId = 56L; // Long | The ID of the Application. It is displayed in your Talon.One deployment URL.
OffsetDateTime createdBefore = new OffsetDateTime(); // OffsetDateTime | Filter results comparing the parameter value, expected to be an RFC3339 timestamp string.
OffsetDateTime createdAfter = new OffsetDateTime(); // OffsetDateTime | Filter results comparing the parameter value, expected to be an RFC3339 timestamp string.
+ OffsetDateTime updatedBefore = new OffsetDateTime(); // OffsetDateTime | Filter results comparing the parameter value, expected to be an RFC3339 timestamp string.
+ OffsetDateTime updatedAfter = new OffsetDateTime(); // OffsetDateTime | Filter results comparing the parameter value, expected to be an RFC3339 timestamp string.
String profileIntegrationId = "profileIntegrationId_example"; // String | Only return sessions for the customer that matches this customer integration ID.
String dateFormat = "dateFormat_example"; // String | Determines the format of dates in the export document.
String customerSessionState = "customerSessionState_example"; // String | Filter results by state.
try {
- String result = apiInstance.exportCustomerSessions(applicationId, createdBefore, createdAfter, profileIntegrationId, dateFormat, customerSessionState);
+ String result = apiInstance.exportCustomerSessions(applicationId, createdBefore, createdAfter, updatedBefore, updatedAfter, profileIntegrationId, dateFormat, customerSessionState);
System.out.println(result);
} catch (ApiException e) {
System.err.println("Exception when calling ManagementApi#exportCustomerSessions");
@@ -4322,6 +4772,8 @@ Name | Type | Description | Notes
**applicationId** | **Long**| The ID of the Application. It is displayed in your Talon.One deployment URL. |
**createdBefore** | **OffsetDateTime**| Filter results comparing the parameter value, expected to be an RFC3339 timestamp string. | [optional]
**createdAfter** | **OffsetDateTime**| Filter results comparing the parameter value, expected to be an RFC3339 timestamp string. | [optional]
+ **updatedBefore** | **OffsetDateTime**| Filter results comparing the parameter value, expected to be an RFC3339 timestamp string. | [optional]
+ **updatedAfter** | **OffsetDateTime**| Filter results comparing the parameter value, expected to be an RFC3339 timestamp string. | [optional]
**profileIntegrationId** | **String**| Only return sessions for the customer that matches this customer integration ID. | [optional]
**dateFormat** | **String**| Determines the format of dates in the export document. | [optional] [enum: excel, ISO8601]
**customerSessionState** | **String**| Filter results by state. | [optional] [enum: open, closed, partially_returned, cancelled]
@@ -4527,7 +4979,7 @@ Name | Type | Description | Notes
## exportLoyaltyBalance
-> String exportLoyaltyBalance(loyaltyProgramId, endDate)
+> String exportLoyaltyBalance(loyaltyProgramId, endDate, balances)
Export customer loyalty balance to CSV
@@ -4570,8 +5022,9 @@ public class Example {
ManagementApi apiInstance = new ManagementApi(defaultClient);
String loyaltyProgramId = "loyaltyProgramId_example"; // String | The identifier for the loyalty program.
OffsetDateTime endDate = new OffsetDateTime(); // OffsetDateTime | Used to return expired, active, and pending loyalty balances before this timestamp. You can enter any past, present, or future timestamp value. > [!note] **Note** > - This must be an RFC3339 timestamp string. > - You can include a time component in your string, for example, `T23:59:59` to specify the end of the day. The time zone setting > considered is `UTC`. If you do not include a time component, a default time value of `T00:00:00` (midnight) in `UTC` is considered.
+ String balances = "balances_example"; // String | Filters which balance fields are included in the CSV export. `currentBalance` is always returned. By default, all balance fields are included. When this parameter is provided, only the listed fields contain values and the rest are returned empty. Accepted values: - `currentBalance` - `pendingBalance` - `expiredBalance` - `spentBalance` - `negativeBalance` Multiple values must be provided as a comma-separated list.
try {
- String result = apiInstance.exportLoyaltyBalance(loyaltyProgramId, endDate);
+ String result = apiInstance.exportLoyaltyBalance(loyaltyProgramId, endDate, balances);
System.out.println(result);
} catch (ApiException e) {
System.err.println("Exception when calling ManagementApi#exportLoyaltyBalance");
@@ -4591,6 +5044,7 @@ Name | Type | Description | Notes
------------- | ------------- | ------------- | -------------
**loyaltyProgramId** | **String**| The identifier for the loyalty program. |
**endDate** | **OffsetDateTime**| Used to return expired, active, and pending loyalty balances before this timestamp. You can enter any past, present, or future timestamp value. > [!note] **Note** > - This must be an RFC3339 timestamp string. > - You can include a time component in your string, for example, `T23:59:59` to specify the end of the day. The time zone setting > considered is `UTC`. If you do not include a time component, a default time value of `T00:00:00` (midnight) in `UTC` is considered. | [optional]
+ **balances** | **String**| Filters which balance fields are included in the CSV export. `currentBalance` is always returned. By default, all balance fields are included. When this parameter is provided, only the listed fields contain values and the rest are returned empty. Accepted values: - `currentBalance` - `pendingBalance` - `expiredBalance` - `spentBalance` - `negativeBalance` Multiple values must be provided as a comma-separated list. | [optional]
### Return type cool
@@ -4615,7 +5069,7 @@ Name | Type | Description | Notes
## exportLoyaltyBalances
-> String exportLoyaltyBalances(loyaltyProgramId, endDate)
+> String exportLoyaltyBalances(loyaltyProgramId, endDate, balances)
Export customer loyalty balances
@@ -4658,8 +5112,9 @@ public class Example {
ManagementApi apiInstance = new ManagementApi(defaultClient);
String loyaltyProgramId = "loyaltyProgramId_example"; // String | The identifier for the loyalty program.
OffsetDateTime endDate = new OffsetDateTime(); // OffsetDateTime | Used to return expired, active, and pending loyalty balances before this timestamp. You can enter any past, present, or future timestamp value. > [!note] **Note** > - This must be an RFC3339 timestamp string. > - You can include a time component in your string, for example, `T23:59:59` to specify the end of the day. The time zone setting > considered is `UTC`. If you do not include a time component, a default time value of `T00:00:00` (midnight) in `UTC` is considered. > - This parameter does not affect the `currentTier` field in the CSV file, which shows the customer's tier at the time of export.
+ String balances = "balances_example"; // String | Filters which balance fields are included in the CSV export. `currentBalance` is always returned. By default, all balance fields are included. When this parameter is provided, only the listed fields contain values and the rest are returned empty. Accepted values: - `currentBalance` - `pendingBalance` - `expiredBalance` - `spentBalance` - `negativeBalance` Multiple values must be provided as a comma-separated list.
try {
- String result = apiInstance.exportLoyaltyBalances(loyaltyProgramId, endDate);
+ String result = apiInstance.exportLoyaltyBalances(loyaltyProgramId, endDate, balances);
System.out.println(result);
} catch (ApiException e) {
System.err.println("Exception when calling ManagementApi#exportLoyaltyBalances");
@@ -4679,6 +5134,7 @@ Name | Type | Description | Notes
------------- | ------------- | ------------- | -------------
**loyaltyProgramId** | **String**| The identifier for the loyalty program. |
**endDate** | **OffsetDateTime**| Used to return expired, active, and pending loyalty balances before this timestamp. You can enter any past, present, or future timestamp value. > [!note] **Note** > - This must be an RFC3339 timestamp string. > - You can include a time component in your string, for example, `T23:59:59` to specify the end of the day. The time zone setting > considered is `UTC`. If you do not include a time component, a default time value of `T00:00:00` (midnight) in `UTC` is considered. > - This parameter does not affect the `currentTier` field in the CSV file, which shows the customer's tier at the time of export. | [optional]
+ **balances** | **String**| Filters which balance fields are included in the CSV export. `currentBalance` is always returned. By default, all balance fields are included. When this parameter is provided, only the listed fields contain values and the rest are returned empty. Accepted values: - `currentBalance` - `pendingBalance` - `expiredBalance` - `spentBalance` - `negativeBalance` Multiple values must be provided as a comma-separated list. | [optional]
### Return type cool
@@ -4703,7 +5159,7 @@ Name | Type | Description | Notes
## exportLoyaltyCardBalances
-> String exportLoyaltyCardBalances(loyaltyProgramId, endDate)
+> String exportLoyaltyCardBalances(loyaltyProgramId, endDate, balances)
Export all card transaction logs
@@ -4746,8 +5202,9 @@ public class Example {
ManagementApi apiInstance = new ManagementApi(defaultClient);
Long loyaltyProgramId = 56L; // Long | Identifier of the card-based loyalty program containing the loyalty card. You can get the ID with the [List loyalty programs](https://docs.talon.one/management-api#tag/Loyalty/operation/getLoyaltyPrograms) endpoint.
OffsetDateTime endDate = new OffsetDateTime(); // OffsetDateTime | Used to return expired, active, and pending loyalty balances before this timestamp. You can enter any past, present, or future timestamp value. > [!note] **Note** > - This must be an RFC3339 timestamp string. > - You can include a time component in your string, for example, `T23:59:59` to specify the end of the day. The time zone setting > considered is `UTC`. If you do not include a time component, a default time value of `T00:00:00` (midnight) in `UTC` is considered.
+ String balances = "balances_example"; // String | Filters which balance fields are included in the CSV export. By default, all balance fields are included. When this parameter is provided, only the listed fields contain values and the rest are returned empty. Accepted values: - `currentBalance` - `pendingBalance` - `expiredBalance` - `spentBalance` - `negativeBalance` Multiple values must be provided as a comma-separated list. **Note:** - The `negativeBalance` value is not supported for card balance exports. - Providing an unsupported or invalid value returns a `400 Bad Request` error.
try {
- String result = apiInstance.exportLoyaltyCardBalances(loyaltyProgramId, endDate);
+ String result = apiInstance.exportLoyaltyCardBalances(loyaltyProgramId, endDate, balances);
System.out.println(result);
} catch (ApiException e) {
System.err.println("Exception when calling ManagementApi#exportLoyaltyCardBalances");
@@ -4767,6 +5224,7 @@ Name | Type | Description | Notes
------------- | ------------- | ------------- | -------------
**loyaltyProgramId** | **Long**| Identifier of the card-based loyalty program containing the loyalty card. You can get the ID with the [List loyalty programs](https://docs.talon.one/management-api#tag/Loyalty/operation/getLoyaltyPrograms) endpoint. |
**endDate** | **OffsetDateTime**| Used to return expired, active, and pending loyalty balances before this timestamp. You can enter any past, present, or future timestamp value. > [!note] **Note** > - This must be an RFC3339 timestamp string. > - You can include a time component in your string, for example, `T23:59:59` to specify the end of the day. The time zone setting > considered is `UTC`. If you do not include a time component, a default time value of `T00:00:00` (midnight) in `UTC` is considered. | [optional]
+ **balances** | **String**| Filters which balance fields are included in the CSV export. By default, all balance fields are included. When this parameter is provided, only the listed fields contain values and the rest are returned empty. Accepted values: - `currentBalance` - `pendingBalance` - `expiredBalance` - `spentBalance` - `negativeBalance` Multiple values must be provided as a comma-separated list. **Note:** - The `negativeBalance` value is not supported for card balance exports. - Providing an unsupported or invalid value returns a `400 Bad Request` error. | [optional]
### Return type cool
@@ -4889,7 +5347,7 @@ Name | Type | Description | Notes
Export loyalty cards
-Download a CSV file containing the loyalty cards from a specified loyalty program. > [!tip] If the exported CSV file is too large to view, you can > [split it into multiple files](https://www.google.com/search?q=split+CSV+into+multiple+files). The CSV file contains the following columns: - `identifier`: The unique identifier of the loyalty card. - `created`: The date and time the loyalty card was created. - `status`: The status of the loyalty card. - `userpercardlimit`: The maximum number of customer profiles that can be linked to the card. - `customerprofileids`: Integration IDs of the customer profiles linked to the card. - `blockreason`: The reason for transferring and blocking the loyalty card. - `generated`: An indicator of whether the loyalty card was generated. - `batchid`: The ID of the batch the loyalty card is in. - `attributes`: The custom attributes of this loyalty card. Currently, this feature is only available upon request.
+Download a CSV file containing the loyalty cards from a specified loyalty program. > [!tip] If the exported CSV file is too large to view, you can > [split it into multiple files](https://www.google.com/search?q=split+CSV+into+multiple+files). The CSV file contains the following columns: - `identifier`: The unique identifier of the loyalty card. - `created`: The date and time the loyalty card was created. - `status`: The status of the loyalty card. - `userpercardlimit`: The maximum number of customer profiles that can be linked to the card. - `customerprofileids`: Integration IDs of the customer profiles linked to the card. - `blockreason`: The reason for transferring and blocking the loyalty card. - `generated`: An indicator of whether the loyalty card was generated. - `batchid`: The ID of the batch the loyalty card is in. - `attributes`: The custom attributes of this loyalty card.
### Example
@@ -5344,7 +5802,7 @@ Name | Type | Description | Notes
## generateCouponRejections
-> InlineResponse20053 generateCouponRejections(sessionIntegrationId, applicationId, language, couponCode)
+> InlineResponse20055 generateCouponRejections(sessionIntegrationId, applicationId, language, couponCode)
Summarize coupon redemption failures in session
@@ -5390,7 +5848,7 @@ public class Example {
String language = "language_example"; // String | The [ISO-639](https://en.wikipedia.org/wiki/List_of_ISO_639_language_codes) code of the language in which the summary will be generated.
String couponCode = "couponCode_example"; // String | The coupon code for which to get the rejection reason.
try {
- InlineResponse20053 result = apiInstance.generateCouponRejections(sessionIntegrationId, applicationId, language, couponCode);
+ InlineResponse20055 result = apiInstance.generateCouponRejections(sessionIntegrationId, applicationId, language, couponCode);
System.out.println(result);
} catch (ApiException e) {
System.err.println("Exception when calling ManagementApi#generateCouponRejections");
@@ -5415,7 +5873,7 @@ Name | Type | Description | Notes
### Return type cool
-[**InlineResponse20053**](InlineResponse20053.md)
+[**InlineResponse20055**](InlineResponse20055.md)
### Authorization
@@ -5875,6 +6333,92 @@ Name | Type | Description | Notes
| **404** | Not found | - |
+## getAchievementV2
+
+> AchievementV2 getAchievementV2(achievementId)
+
+Get achievement
+
+Retrieve the details of a specific achievement.
+
+### Example
+
+```java
+// Import classes:
+import one.talon.ApiClient;
+import one.talon.ApiException;
+import one.talon.Configuration;
+import one.talon.auth.*;
+import one.talon.models.*;
+import one.talon.api.ManagementApi;
+
+public class Example {
+ public static void main(String[] args) {
+ ApiClient defaultClient = Configuration.getDefaultApiClient();
+ defaultClient.setBasePath("https://yourbaseurl.talon.one");
+
+ // Configure API key authorization: api_key_v1
+ ApiKeyAuth api_key_v1 = (ApiKeyAuth) defaultClient.getAuthentication("api_key_v1");
+ api_key_v1.setApiKey("YOUR API KEY");
+ // Uncomment the following line to set a prefix for the API key, e.g. "Token" (defaults to null)
+ //api_key_v1.setApiKeyPrefix("Token");
+
+ // Configure API key authorization: management_key
+ ApiKeyAuth management_key = (ApiKeyAuth) defaultClient.getAuthentication("management_key");
+ management_key.setApiKey("YOUR API KEY");
+ // Uncomment the following line to set a prefix for the API key, e.g. "Token" (defaults to null)
+ //management_key.setApiKeyPrefix("Token");
+
+ // Configure API key authorization: manager_auth
+ ApiKeyAuth manager_auth = (ApiKeyAuth) defaultClient.getAuthentication("manager_auth");
+ manager_auth.setApiKey("YOUR API KEY");
+ // Uncomment the following line to set a prefix for the API key, e.g. "Token" (defaults to null)
+ //manager_auth.setApiKeyPrefix("Token");
+
+ ManagementApi apiInstance = new ManagementApi(defaultClient);
+ Long achievementId = 56L; // Long | The ID of the achievement. You can get this ID with the [List achievement](https://docs.talon.one/management-api#tag/Achievements/operation/listAchievementsV2) endpoint.
+ try {
+ AchievementV2 result = apiInstance.getAchievementV2(achievementId);
+ System.out.println(result);
+ } catch (ApiException e) {
+ System.err.println("Exception when calling ManagementApi#getAchievementV2");
+ System.err.println("Status code: " + e.getCode());
+ System.err.println("Reason: " + e.getResponseBody());
+ System.err.println("Response headers: " + e.getResponseHeaders());
+ e.printStackTrace();
+ }
+ }
+}
+```
+
+### Parameters
+
+
+Name | Type | Description | Notes
+------------- | ------------- | ------------- | -------------
+ **achievementId** | **Long**| The ID of the achievement. You can get this ID with the [List achievement](https://docs.talon.one/management-api#tag/Achievements/operation/listAchievementsV2) endpoint. |
+
+### Return type cool
+
+[**AchievementV2**](AchievementV2.md)
+
+### Authorization
+
+[api_key_v1](../README.md#api_key_v1), [management_key](../README.md#management_key), [manager_auth](../README.md#manager_auth)
+
+### HTTP request headers
+
+- **Content-Type**: Not defined
+- **Accept**: application/json
+
+### HTTP response details
+| Status code | Description | Response headers |
+|-------------|-------------|------------------|
+| **200** | OK | - |
+| **401** | Unauthorized | - |
+| **404** | Not found | - |
+
+
## getAdditionalCost
> AccountAdditionalCost getAdditionalCost(additionalCostId)
@@ -5961,7 +6505,7 @@ Name | Type | Description | Notes
## getAdditionalCosts
-> InlineResponse20040 getAdditionalCosts(pageSize, skip, sort)
+> InlineResponse20041 getAdditionalCosts(pageSize, skip, sort)
List additional costs
@@ -6006,7 +6550,7 @@ public class Example {
Long skip = 56L; // Long | The number of items to skip when paging through large result sets.
String sort = "sort_example"; // String | The field by which results should be sorted. By default, results are sorted in ascending order. To sort them in descending order, prefix the field name with `-`. **Note:** You may not be able to use all fields for sorting. This is due to performance limitations.
try {
- InlineResponse20040 result = apiInstance.getAdditionalCosts(pageSize, skip, sort);
+ InlineResponse20041 result = apiInstance.getAdditionalCosts(pageSize, skip, sort);
System.out.println(result);
} catch (ApiException e) {
System.err.println("Exception when calling ManagementApi#getAdditionalCosts");
@@ -6030,7 +6574,7 @@ Name | Type | Description | Notes
### Return type cool
-[**InlineResponse20040**](InlineResponse20040.md)
+[**InlineResponse20041**](InlineResponse20041.md)
### Authorization
@@ -6391,7 +6935,7 @@ Name | Type | Description | Notes
## getApplicationCustomerFriends
-> InlineResponse20037 getApplicationCustomerFriends(applicationId, integrationId, pageSize, skip, sort, withTotalResultSize)
+> InlineResponse20038 getApplicationCustomerFriends(applicationId, integrationId, pageSize, skip, sort, withTotalResultSize)
List friends referred by customer profile
@@ -6439,7 +6983,7 @@ public class Example {
String sort = "sort_example"; // String | The field by which results should be sorted. By default, results are sorted in ascending order. To sort them in descending order, prefix the field name with `-`. **Note:** You may not be able to use all fields for sorting. This is due to performance limitations.
Boolean withTotalResultSize = true; // Boolean | When this flag is set, the result includes the total number of results for this query. This might decrease performance on large data sets. - When `true`: `totalResultSize` contains the total number of results for this query. - When `false`: Only `hasMore` is returned, and it is set to `true` when there are more results than shown on the page.
try {
- InlineResponse20037 result = apiInstance.getApplicationCustomerFriends(applicationId, integrationId, pageSize, skip, sort, withTotalResultSize);
+ InlineResponse20038 result = apiInstance.getApplicationCustomerFriends(applicationId, integrationId, pageSize, skip, sort, withTotalResultSize);
System.out.println(result);
} catch (ApiException e) {
System.err.println("Exception when calling ManagementApi#getApplicationCustomerFriends");
@@ -6466,7 +7010,7 @@ Name | Type | Description | Notes
### Return type cool
-[**InlineResponse20037**](InlineResponse20037.md)
+[**InlineResponse20038**](InlineResponse20038.md)
### Authorization
@@ -6669,7 +7213,7 @@ Name | Type | Description | Notes
## getApplicationEventTypes
-> InlineResponse20033 getApplicationEventTypes(applicationId, pageSize, skip, sort)
+> InlineResponse20034 getApplicationEventTypes(applicationId, pageSize, skip, sort)
List Applications event types
@@ -6715,7 +7259,7 @@ public class Example {
Long skip = 56L; // Long | The number of items to skip when paging through large result sets.
String sort = "sort_example"; // String | The field by which results should be sorted. By default, results are sorted in ascending order. To sort them in descending order, prefix the field name with `-`. **Note:** You may not be able to use all fields for sorting. This is due to performance limitations.
try {
- InlineResponse20033 result = apiInstance.getApplicationEventTypes(applicationId, pageSize, skip, sort);
+ InlineResponse20034 result = apiInstance.getApplicationEventTypes(applicationId, pageSize, skip, sort);
System.out.println(result);
} catch (ApiException e) {
System.err.println("Exception when calling ManagementApi#getApplicationEventTypes");
@@ -6740,7 +7284,7 @@ Name | Type | Description | Notes
### Return type cool
-[**InlineResponse20033**](InlineResponse20033.md)
+[**InlineResponse20034**](InlineResponse20034.md)
### Authorization
@@ -6759,7 +7303,7 @@ Name | Type | Description | Notes
## getApplicationEventsWithoutTotalCount
-> InlineResponse20032 getApplicationEventsWithoutTotalCount(applicationId, pageSize, skip, sort, type, createdBefore, createdAfter, session, profile, customerName, customerEmail, couponCode, referralCode, ruleQuery, campaignQuery, effectType)
+> InlineResponse20033 getApplicationEventsWithoutTotalCount(applicationId, pageSize, skip, sort, type, createdBefore, createdAfter, session, profile, customerName, customerEmail, couponCode, referralCode, ruleQuery, campaignQuery, effectType)
List Applications events
@@ -6817,7 +7361,7 @@ public class Example {
String campaignQuery = "campaignQuery_example"; // String | Campaign name filter for events
String effectType = "effectType_example"; // String | The type of effect that was triggered. See [API effects](https://docs.talon.one/docs/dev/integration-api/api-effects).
try {
- InlineResponse20032 result = apiInstance.getApplicationEventsWithoutTotalCount(applicationId, pageSize, skip, sort, type, createdBefore, createdAfter, session, profile, customerName, customerEmail, couponCode, referralCode, ruleQuery, campaignQuery, effectType);
+ InlineResponse20033 result = apiInstance.getApplicationEventsWithoutTotalCount(applicationId, pageSize, skip, sort, type, createdBefore, createdAfter, session, profile, customerName, customerEmail, couponCode, referralCode, ruleQuery, campaignQuery, effectType);
System.out.println(result);
} catch (ApiException e) {
System.err.println("Exception when calling ManagementApi#getApplicationEventsWithoutTotalCount");
@@ -6854,7 +7398,7 @@ Name | Type | Description | Notes
### Return type cool
-[**InlineResponse20032**](InlineResponse20032.md)
+[**InlineResponse20033**](InlineResponse20033.md)
### Authorization
@@ -6875,9 +7419,95 @@ Name | Type | Description | Notes
> ApplicationSession getApplicationSession(applicationId, sessionId)
-Get Application session
+Get Application session
+
+Get the details of the given session. You can list the sessions with the [List Application sessions](https://docs.talon.one/management-api#tag/Customer-data/operation/getApplicationSessions) endpoint.
+
+### Example
+
+```java
+// Import classes:
+import one.talon.ApiClient;
+import one.talon.ApiException;
+import one.talon.Configuration;
+import one.talon.auth.*;
+import one.talon.models.*;
+import one.talon.api.ManagementApi;
+
+public class Example {
+ public static void main(String[] args) {
+ ApiClient defaultClient = Configuration.getDefaultApiClient();
+ defaultClient.setBasePath("https://yourbaseurl.talon.one");
+
+ // Configure API key authorization: api_key_v1
+ ApiKeyAuth api_key_v1 = (ApiKeyAuth) defaultClient.getAuthentication("api_key_v1");
+ api_key_v1.setApiKey("YOUR API KEY");
+ // Uncomment the following line to set a prefix for the API key, e.g. "Token" (defaults to null)
+ //api_key_v1.setApiKeyPrefix("Token");
+
+ // Configure API key authorization: management_key
+ ApiKeyAuth management_key = (ApiKeyAuth) defaultClient.getAuthentication("management_key");
+ management_key.setApiKey("YOUR API KEY");
+ // Uncomment the following line to set a prefix for the API key, e.g. "Token" (defaults to null)
+ //management_key.setApiKeyPrefix("Token");
+
+ // Configure API key authorization: manager_auth
+ ApiKeyAuth manager_auth = (ApiKeyAuth) defaultClient.getAuthentication("manager_auth");
+ manager_auth.setApiKey("YOUR API KEY");
+ // Uncomment the following line to set a prefix for the API key, e.g. "Token" (defaults to null)
+ //manager_auth.setApiKeyPrefix("Token");
+
+ ManagementApi apiInstance = new ManagementApi(defaultClient);
+ Long applicationId = 56L; // Long | The ID of the Application. It is displayed in your Talon.One deployment URL.
+ Long sessionId = 56L; // Long | The **internal** ID of the session. You can get the ID with the [List Application sessions](https://docs.talon.one/management-api#tag/Customer-data/operation/getApplicationSessions) endpoint.
+ try {
+ ApplicationSession result = apiInstance.getApplicationSession(applicationId, sessionId);
+ System.out.println(result);
+ } catch (ApiException e) {
+ System.err.println("Exception when calling ManagementApi#getApplicationSession");
+ System.err.println("Status code: " + e.getCode());
+ System.err.println("Reason: " + e.getResponseBody());
+ System.err.println("Response headers: " + e.getResponseHeaders());
+ e.printStackTrace();
+ }
+ }
+}
+```
+
+### Parameters
+
+
+Name | Type | Description | Notes
+------------- | ------------- | ------------- | -------------
+ **applicationId** | **Long**| The ID of the Application. It is displayed in your Talon.One deployment URL. |
+ **sessionId** | **Long**| The **internal** ID of the session. You can get the ID with the [List Application sessions](https://docs.talon.one/management-api#tag/Customer-data/operation/getApplicationSessions) endpoint. |
+
+### Return type cool
+
+[**ApplicationSession**](ApplicationSession.md)
+
+### Authorization
+
+[api_key_v1](../README.md#api_key_v1), [management_key](../README.md#management_key), [manager_auth](../README.md#manager_auth)
+
+### HTTP request headers
+
+- **Content-Type**: Not defined
+- **Accept**: application/json
+
+### HTTP response details
+| Status code | Description | Response headers |
+|-------------|-------------|------------------|
+| **200** | OK | - |
+
+
+## getApplicationSessions
+
+> InlineResponse20031 getApplicationSessions(applicationId, pageSize, skip, sort, partialMatch, profile, state, createdBefore, createdAfter, coupon, referral, integrationId, storeIntegrationId)
+
+List Application sessions
-Get the details of the given session. You can list the sessions with the [List Application sessions](https://docs.talon.one/management-api#tag/Customer-data/operation/getApplicationSessions) endpoint.
+List all the sessions of the specified Application.
### Example
@@ -6915,12 +7545,23 @@ public class Example {
ManagementApi apiInstance = new ManagementApi(defaultClient);
Long applicationId = 56L; // Long | The ID of the Application. It is displayed in your Talon.One deployment URL.
- Long sessionId = 56L; // Long | The **internal** ID of the session. You can get the ID with the [List Application sessions](https://docs.talon.one/management-api#tag/Customer-data/operation/getApplicationSessions) endpoint.
+ Long pageSize = 1000lL; // Long | The number of items in the response.
+ Long skip = 56L; // Long | The number of items to skip when paging through large result sets.
+ String sort = "sort_example"; // String | The field by which results should be sorted. By default, results are sorted in ascending order. To sort them in descending order, prefix the field name with `-`. **Note:** You may not be able to use all fields for sorting. This is due to performance limitations.
+ Boolean partialMatch = false; // Boolean | Enables partial matching for a single text search field. When enabled, the search term matches anywhere within the field value (case-insensitive). Minimum 3 characters required for partial matches; shorter inputs automatically fall back to exact match. **Note:** Use with one of: `integrationId`, `profile`, `coupon`, `referral`, or `storeIntegrationId`.
+ String profile = "profile_example"; // String | Filter by sessions with this profile integration ID. By default, requires exact match. Use `partialMatch=true` to search for partial matches (minimum 3 characters).
+ String state = "state_example"; // String | Filter by sessions with this state. Must be exact match.
+ OffsetDateTime createdBefore = new OffsetDateTime(); // OffsetDateTime | Only return events created before this date. You can use any time zone setting. Talon.One will convert to UTC internally.
+ OffsetDateTime createdAfter = new OffsetDateTime(); // OffsetDateTime | Only return events created after this date. You can use any time zone setting. Talon.One will convert to UTC internally.
+ String coupon = "coupon_example"; // String | Filter by sessions with this coupon. By default, requires exact match. Use `partialMatch=true` to search for partial matches (minimum 3 characters).
+ String referral = "referral_example"; // String | Filter by sessions with this referral. By default, requires exact match. Use `partialMatch=true` to search for partial matches (minimum 3 characters).
+ String integrationId = "integrationId_example"; // String | Filter by sessions with this integration ID. By default, requires exact match. Use `partialMatch=true` to search for partial matches (minimum 3 characters).
+ String storeIntegrationId = "storeIntegrationId_example"; // String | The integration ID of the store. You choose this ID when you create a store. By default, requires exact match. Use `partialMatch=true` to search for partial matches (minimum 3 characters).
try {
- ApplicationSession result = apiInstance.getApplicationSession(applicationId, sessionId);
+ InlineResponse20031 result = apiInstance.getApplicationSessions(applicationId, pageSize, skip, sort, partialMatch, profile, state, createdBefore, createdAfter, coupon, referral, integrationId, storeIntegrationId);
System.out.println(result);
} catch (ApiException e) {
- System.err.println("Exception when calling ManagementApi#getApplicationSession");
+ System.err.println("Exception when calling ManagementApi#getApplicationSessions");
System.err.println("Status code: " + e.getCode());
System.err.println("Reason: " + e.getResponseBody());
System.err.println("Response headers: " + e.getResponseHeaders());
@@ -6936,11 +7577,22 @@ public class Example {
Name | Type | Description | Notes
------------- | ------------- | ------------- | -------------
**applicationId** | **Long**| The ID of the Application. It is displayed in your Talon.One deployment URL. |
- **sessionId** | **Long**| The **internal** ID of the session. You can get the ID with the [List Application sessions](https://docs.talon.one/management-api#tag/Customer-data/operation/getApplicationSessions) endpoint. |
+ **pageSize** | **Long**| The number of items in the response. | [optional] [default to 1000l]
+ **skip** | **Long**| The number of items to skip when paging through large result sets. | [optional]
+ **sort** | **String**| The field by which results should be sorted. By default, results are sorted in ascending order. To sort them in descending order, prefix the field name with `-`. **Note:** You may not be able to use all fields for sorting. This is due to performance limitations. | [optional]
+ **partialMatch** | **Boolean**| Enables partial matching for a single text search field. When enabled, the search term matches anywhere within the field value (case-insensitive). Minimum 3 characters required for partial matches; shorter inputs automatically fall back to exact match. **Note:** Use with one of: `integrationId`, `profile`, `coupon`, `referral`, or `storeIntegrationId`. | [optional] [default to false]
+ **profile** | **String**| Filter by sessions with this profile integration ID. By default, requires exact match. Use `partialMatch=true` to search for partial matches (minimum 3 characters). | [optional]
+ **state** | **String**| Filter by sessions with this state. Must be exact match. | [optional] [enum: open, closed, partially_returned, cancelled]
+ **createdBefore** | **OffsetDateTime**| Only return events created before this date. You can use any time zone setting. Talon.One will convert to UTC internally. | [optional]
+ **createdAfter** | **OffsetDateTime**| Only return events created after this date. You can use any time zone setting. Talon.One will convert to UTC internally. | [optional]
+ **coupon** | **String**| Filter by sessions with this coupon. By default, requires exact match. Use `partialMatch=true` to search for partial matches (minimum 3 characters). | [optional]
+ **referral** | **String**| Filter by sessions with this referral. By default, requires exact match. Use `partialMatch=true` to search for partial matches (minimum 3 characters). | [optional]
+ **integrationId** | **String**| Filter by sessions with this integration ID. By default, requires exact match. Use `partialMatch=true` to search for partial matches (minimum 3 characters). | [optional]
+ **storeIntegrationId** | **String**| The integration ID of the store. You choose this ID when you create a store. By default, requires exact match. Use `partialMatch=true` to search for partial matches (minimum 3 characters). | [optional]
### Return type cool
-[**ApplicationSession**](ApplicationSession.md)
+[**InlineResponse20031**](InlineResponse20031.md)
### Authorization
@@ -6957,13 +7609,13 @@ Name | Type | Description | Notes
| **200** | OK | - |
-## getApplicationSessions
+## getApplicationSessionsByCustomerAttributes
-> InlineResponse20031 getApplicationSessions(applicationId, pageSize, skip, sort, partialMatch, profile, state, createdBefore, createdAfter, coupon, referral, integrationId, storeIntegrationId)
+> InlineResponse20032 getApplicationSessionsByCustomerAttributes(applicationId, body, pageSize, skip, withTotalResultSize)
-List Application sessions
+List Application sessions matching the given customer attributes
-List all the sessions of the specified Application.
+Get a list of the Application sessions matching the provided customer profile attributes. The match is successful if all the attributes of the request are found in a profile, even if the profile has more attributes that are not present on the request.
### Example
@@ -7001,23 +7653,15 @@ public class Example {
ManagementApi apiInstance = new ManagementApi(defaultClient);
Long applicationId = 56L; // Long | The ID of the Application. It is displayed in your Talon.One deployment URL.
+ CustomerProfileSearchQuery body = new CustomerProfileSearchQuery(); // CustomerProfileSearchQuery | body
Long pageSize = 1000lL; // Long | The number of items in the response.
Long skip = 56L; // Long | The number of items to skip when paging through large result sets.
- String sort = "sort_example"; // String | The field by which results should be sorted. By default, results are sorted in ascending order. To sort them in descending order, prefix the field name with `-`. **Note:** You may not be able to use all fields for sorting. This is due to performance limitations.
- Boolean partialMatch = false; // Boolean | Enables partial matching for a single text search field. When enabled, the search term matches anywhere within the field value (case-insensitive). Minimum 3 characters required for partial matches; shorter inputs automatically fall back to exact match. **Note:** Use with one of: `integrationId`, `profile`, `coupon`, `referral`, or `storeIntegrationId`.
- String profile = "profile_example"; // String | Filter by sessions with this profile integration ID. By default, requires exact match. Use `partialMatch=true` to search for partial matches (minimum 3 characters).
- String state = "state_example"; // String | Filter by sessions with this state. Must be exact match.
- OffsetDateTime createdBefore = new OffsetDateTime(); // OffsetDateTime | Only return events created before this date. You can use any time zone setting. Talon.One will convert to UTC internally.
- OffsetDateTime createdAfter = new OffsetDateTime(); // OffsetDateTime | Only return events created after this date. You can use any time zone setting. Talon.One will convert to UTC internally.
- String coupon = "coupon_example"; // String | Filter by sessions with this coupon. By default, requires exact match. Use `partialMatch=true` to search for partial matches (minimum 3 characters).
- String referral = "referral_example"; // String | Filter by sessions with this referral. By default, requires exact match. Use `partialMatch=true` to search for partial matches (minimum 3 characters).
- String integrationId = "integrationId_example"; // String | Filter by sessions with this integration ID. By default, requires exact match. Use `partialMatch=true` to search for partial matches (minimum 3 characters).
- String storeIntegrationId = "storeIntegrationId_example"; // String | The integration ID of the store. You choose this ID when you create a store. By default, requires exact match. Use `partialMatch=true` to search for partial matches (minimum 3 characters).
+ Boolean withTotalResultSize = true; // Boolean | When this flag is set, the result includes the total number of results for this query. This might decrease performance on large data sets. - When `true`: `totalResultSize` contains the total number of results for this query. - When `false`: Only `hasMore` is returned, and it is set to `true` when there are more results than shown on the page.
try {
- InlineResponse20031 result = apiInstance.getApplicationSessions(applicationId, pageSize, skip, sort, partialMatch, profile, state, createdBefore, createdAfter, coupon, referral, integrationId, storeIntegrationId);
+ InlineResponse20032 result = apiInstance.getApplicationSessionsByCustomerAttributes(applicationId, body, pageSize, skip, withTotalResultSize);
System.out.println(result);
} catch (ApiException e) {
- System.err.println("Exception when calling ManagementApi#getApplicationSessions");
+ System.err.println("Exception when calling ManagementApi#getApplicationSessionsByCustomerAttributes");
System.err.println("Status code: " + e.getCode());
System.err.println("Reason: " + e.getResponseBody());
System.err.println("Response headers: " + e.getResponseHeaders());
@@ -7033,22 +7677,14 @@ public class Example {
Name | Type | Description | Notes
------------- | ------------- | ------------- | -------------
**applicationId** | **Long**| The ID of the Application. It is displayed in your Talon.One deployment URL. |
+ **body** | [**CustomerProfileSearchQuery**](CustomerProfileSearchQuery.md)| body |
**pageSize** | **Long**| The number of items in the response. | [optional] [default to 1000l]
**skip** | **Long**| The number of items to skip when paging through large result sets. | [optional]
- **sort** | **String**| The field by which results should be sorted. By default, results are sorted in ascending order. To sort them in descending order, prefix the field name with `-`. **Note:** You may not be able to use all fields for sorting. This is due to performance limitations. | [optional]
- **partialMatch** | **Boolean**| Enables partial matching for a single text search field. When enabled, the search term matches anywhere within the field value (case-insensitive). Minimum 3 characters required for partial matches; shorter inputs automatically fall back to exact match. **Note:** Use with one of: `integrationId`, `profile`, `coupon`, `referral`, or `storeIntegrationId`. | [optional] [default to false]
- **profile** | **String**| Filter by sessions with this profile integration ID. By default, requires exact match. Use `partialMatch=true` to search for partial matches (minimum 3 characters). | [optional]
- **state** | **String**| Filter by sessions with this state. Must be exact match. | [optional] [enum: open, closed, partially_returned, cancelled]
- **createdBefore** | **OffsetDateTime**| Only return events created before this date. You can use any time zone setting. Talon.One will convert to UTC internally. | [optional]
- **createdAfter** | **OffsetDateTime**| Only return events created after this date. You can use any time zone setting. Talon.One will convert to UTC internally. | [optional]
- **coupon** | **String**| Filter by sessions with this coupon. By default, requires exact match. Use `partialMatch=true` to search for partial matches (minimum 3 characters). | [optional]
- **referral** | **String**| Filter by sessions with this referral. By default, requires exact match. Use `partialMatch=true` to search for partial matches (minimum 3 characters). | [optional]
- **integrationId** | **String**| Filter by sessions with this integration ID. By default, requires exact match. Use `partialMatch=true` to search for partial matches (minimum 3 characters). | [optional]
- **storeIntegrationId** | **String**| The integration ID of the store. You choose this ID when you create a store. By default, requires exact match. Use `partialMatch=true` to search for partial matches (minimum 3 characters). | [optional]
+ **withTotalResultSize** | **Boolean**| When this flag is set, the result includes the total number of results for this query. This might decrease performance on large data sets. - When `true`: `totalResultSize` contains the total number of results for this query. - When `false`: Only `hasMore` is returned, and it is set to `true` when there are more results than shown on the page. | [optional]
### Return type cool
-[**InlineResponse20031**](InlineResponse20031.md)
+[**InlineResponse20032**](InlineResponse20032.md)
### Authorization
@@ -7056,7 +7692,7 @@ Name | Type | Description | Notes
### HTTP request headers
-- **Content-Type**: Not defined
+- **Content-Type**: application/json
- **Accept**: application/json
### HTTP response details
@@ -7239,7 +7875,7 @@ Name | Type | Description | Notes
## getAttributes
-> InlineResponse20038 getAttributes(pageSize, skip, sort, entity, applicationIds, type, kind, search)
+> InlineResponse20039 getAttributes(pageSize, skip, sort, entity, applicationIds, loyaltyProgramIds, type, kind, search)
List custom attributes
@@ -7285,11 +7921,12 @@ public class Example {
String sort = "sort_example"; // String | The field by which results should be sorted. By default, results are sorted in ascending order. To sort them in descending order, prefix the field name with `-`. **Note:** You may not be able to use all fields for sorting. This is due to performance limitations.
String entity = "entity_example"; // String | Returned attributes will be filtered by supplied entity.
String applicationIds = "applicationIds_example"; // String | Returned attributes will be filtered by supplied application ids
+ String loyaltyProgramIds = "loyaltyProgramIds_example"; // String | Returned attributes will be filtered by the specified loyalty program ids, separated by commas. You can only use this parameter when `entity` is `LoyaltyCard`.
String type = "type_example"; // String | Returned attributes will be filtered by supplied type
String kind = "kind_example"; // String | Returned attributes will be filtered by supplied kind (builtin or custom)
String search = "search_example"; // String | Returned attributes will be filtered by searching case insensitive through Attribute name, description and type
try {
- InlineResponse20038 result = apiInstance.getAttributes(pageSize, skip, sort, entity, applicationIds, type, kind, search);
+ InlineResponse20039 result = apiInstance.getAttributes(pageSize, skip, sort, entity, applicationIds, loyaltyProgramIds, type, kind, search);
System.out.println(result);
} catch (ApiException e) {
System.err.println("Exception when calling ManagementApi#getAttributes");
@@ -7312,13 +7949,14 @@ Name | Type | Description | Notes
**sort** | **String**| The field by which results should be sorted. By default, results are sorted in ascending order. To sort them in descending order, prefix the field name with `-`. **Note:** You may not be able to use all fields for sorting. This is due to performance limitations. | [optional]
**entity** | **String**| Returned attributes will be filtered by supplied entity. | [optional]
**applicationIds** | **String**| Returned attributes will be filtered by supplied application ids | [optional]
+ **loyaltyProgramIds** | **String**| Returned attributes will be filtered by the specified loyalty program ids, separated by commas. You can only use this parameter when `entity` is `LoyaltyCard`. | [optional]
**type** | **String**| Returned attributes will be filtered by supplied type | [optional]
**kind** | **String**| Returned attributes will be filtered by supplied kind (builtin or custom) | [optional] [enum: builtin, custom]
**search** | **String**| Returned attributes will be filtered by searching case insensitive through Attribute name, description and type | [optional]
### Return type cool
-[**InlineResponse20038**](InlineResponse20038.md)
+[**InlineResponse20039**](InlineResponse20039.md)
### Authorization
@@ -7337,7 +7975,7 @@ Name | Type | Description | Notes
## getAudienceMemberships
-> InlineResponse20036 getAudienceMemberships(audienceId, pageSize, skip, sort, profileQuery)
+> InlineResponse20037 getAudienceMemberships(audienceId, pageSize, skip, sort, profileQuery)
List audience members
@@ -7384,7 +8022,7 @@ public class Example {
String sort = "sort_example"; // String | The field by which results should be sorted. By default, results are sorted in ascending order. To sort them in descending order, prefix the field name with `-`. **Note:** You may not be able to use all fields for sorting. This is due to performance limitations.
String profileQuery = "profileQuery_example"; // String | The filter to select a profile.
try {
- InlineResponse20036 result = apiInstance.getAudienceMemberships(audienceId, pageSize, skip, sort, profileQuery);
+ InlineResponse20037 result = apiInstance.getAudienceMemberships(audienceId, pageSize, skip, sort, profileQuery);
System.out.println(result);
} catch (ApiException e) {
System.err.println("Exception when calling ManagementApi#getAudienceMemberships");
@@ -7410,7 +8048,7 @@ Name | Type | Description | Notes
### Return type cool
-[**InlineResponse20036**](InlineResponse20036.md)
+[**InlineResponse20037**](InlineResponse20037.md)
### Authorization
@@ -7430,7 +8068,7 @@ Name | Type | Description | Notes
## getAudiences
-> InlineResponse20034 getAudiences(pageSize, skip, sort, withTotalResultSize)
+> InlineResponse20035 getAudiences(pageSize, skip, sort, withTotalResultSize)
List audiences
@@ -7476,7 +8114,7 @@ public class Example {
String sort = "sort_example"; // String | The field by which results should be sorted. By default, results are sorted in ascending order. To sort them in descending order, prefix the field name with `-`. **Note:** You may not be able to use all fields for sorting. This is due to performance limitations.
Boolean withTotalResultSize = true; // Boolean | When this flag is set, the result includes the total number of results for this query. This might decrease performance on large data sets. - When `true`: `totalResultSize` contains the total number of results for this query. - When `false`: Only `hasMore` is returned, and it is set to `true` when there are more results than shown on the page.
try {
- InlineResponse20034 result = apiInstance.getAudiences(pageSize, skip, sort, withTotalResultSize);
+ InlineResponse20035 result = apiInstance.getAudiences(pageSize, skip, sort, withTotalResultSize);
System.out.println(result);
} catch (ApiException e) {
System.err.println("Exception when calling ManagementApi#getAudiences");
@@ -7501,7 +8139,7 @@ Name | Type | Description | Notes
### Return type cool
-[**InlineResponse20034**](InlineResponse20034.md)
+[**InlineResponse20035**](InlineResponse20035.md)
### Authorization
@@ -7520,7 +8158,7 @@ Name | Type | Description | Notes
## getAudiencesAnalytics
-> InlineResponse20035 getAudiencesAnalytics(audienceIds, sort)
+> InlineResponse20036 getAudiencesAnalytics(audienceIds, sort)
List audience analytics
@@ -7561,10 +8199,10 @@ public class Example {
//manager_auth.setApiKeyPrefix("Token");
ManagementApi apiInstance = new ManagementApi(defaultClient);
- String audienceIds = "audienceIds_example"; // String | The IDs of one or more audiences, separated by commas, by which to filter results.
+ String audienceIds = "audienceIds_example"; // String | The IDs of one or more audiences, separated by commas, by which to filter results. Do not provide more than 1000 audience IDs.
String sort = "sort_example"; // String | The field by which results should be sorted. By default, results are sorted in ascending order. To sort them in descending order, prefix the field name with `-`. **Note:** You may not be able to use all fields for sorting. This is due to performance limitations.
try {
- InlineResponse20035 result = apiInstance.getAudiencesAnalytics(audienceIds, sort);
+ InlineResponse20036 result = apiInstance.getAudiencesAnalytics(audienceIds, sort);
System.out.println(result);
} catch (ApiException e) {
System.err.println("Exception when calling ManagementApi#getAudiencesAnalytics");
@@ -7582,12 +8220,12 @@ public class Example {
Name | Type | Description | Notes
------------- | ------------- | ------------- | -------------
- **audienceIds** | **String**| The IDs of one or more audiences, separated by commas, by which to filter results. |
+ **audienceIds** | **String**| The IDs of one or more audiences, separated by commas, by which to filter results. Do not provide more than 1000 audience IDs. |
**sort** | **String**| The field by which results should be sorted. By default, results are sorted in ascending order. To sort them in descending order, prefix the field name with `-`. **Note:** You may not be able to use all fields for sorting. This is due to performance limitations. | [optional]
### Return type cool
-[**InlineResponse20035**](InlineResponse20035.md)
+[**InlineResponse20036**](InlineResponse20036.md)
### Authorization
@@ -8193,7 +8831,7 @@ public class Example {
String sort = "sort_example"; // String | The field by which results should be sorted. By default, results are sorted in ascending order. To sort them in descending order, prefix the field name with `-`. **Note:** You may not be able to use all fields for sorting. This is due to performance limitations.
String campaignState = "campaignState_example"; // String | Filter results by the state of the campaign. - `enabled`: Campaigns that are scheduled, running (activated), or expired. - `running`: Campaigns that are running (activated). - `disabled`: Campaigns that are disabled. - `expired`: Campaigns that are expired. - `archived`: Campaigns that are archived.
String name = "name_example"; // String | Filter results performing case-insensitive matching against the name of the campaign.
- String tags = "tags_example"; // String | Filter results performing case-insensitive matching against the tags of the campaign. When used in conjunction with the \"name\" query parameter, a logical OR will be performed to search both tags and name for the provided values
+ List tags = Arrays.asList(); // List | Filter results performing case-insensitive matching against the tags of the campaign.
OffsetDateTime createdBefore = new OffsetDateTime(); // OffsetDateTime | Filter results comparing the parameter value, expected to be an RFC3339 timestamp string, to the campaign creation timestamp. You can use any time zone setting. Talon.One will convert to UTC internally.
OffsetDateTime createdAfter = new OffsetDateTime(); // OffsetDateTime | Filter results comparing the parameter value, expected to be an RFC3339 timestamp string, to the campaign creation timestamp. You can use any time zone setting. Talon.One will convert to UTC internally.
OffsetDateTime startBefore = new OffsetDateTime(); // OffsetDateTime | Filter results comparing the parameter value, expected to be an RFC3339 timestamp string, to the campaign start time timestamp. You can use any time zone setting. Talon.One will convert to UTC internally.
@@ -8228,7 +8866,7 @@ Name | Type | Description | Notes
**sort** | **String**| The field by which results should be sorted. By default, results are sorted in ascending order. To sort them in descending order, prefix the field name with `-`. **Note:** You may not be able to use all fields for sorting. This is due to performance limitations. | [optional]
**campaignState** | **String**| Filter results by the state of the campaign. - `enabled`: Campaigns that are scheduled, running (activated), or expired. - `running`: Campaigns that are running (activated). - `disabled`: Campaigns that are disabled. - `expired`: Campaigns that are expired. - `archived`: Campaigns that are archived. | [optional] [enum: enabled, disabled, archived, scheduled, running, expired, staged]
**name** | **String**| Filter results performing case-insensitive matching against the name of the campaign. | [optional]
- **tags** | **String**| Filter results performing case-insensitive matching against the tags of the campaign. When used in conjunction with the \"name\" query parameter, a logical OR will be performed to search both tags and name for the provided values | [optional]
+ **tags** | [**List<String>**](String.md)| Filter results performing case-insensitive matching against the tags of the campaign. | [optional]
**createdBefore** | **OffsetDateTime**| Filter results comparing the parameter value, expected to be an RFC3339 timestamp string, to the campaign creation timestamp. You can use any time zone setting. Talon.One will convert to UTC internally. | [optional]
**createdAfter** | **OffsetDateTime**| Filter results comparing the parameter value, expected to be an RFC3339 timestamp string, to the campaign creation timestamp. You can use any time zone setting. Talon.One will convert to UTC internally. | [optional]
**startBefore** | **OffsetDateTime**| Filter results comparing the parameter value, expected to be an RFC3339 timestamp string, to the campaign start time timestamp. You can use any time zone setting. Talon.One will convert to UTC internally. | [optional]
@@ -8261,7 +8899,7 @@ Name | Type | Description | Notes
## getChanges
-> InlineResponse20044 getChanges(pageSize, skip, sort, applicationId, entityPath, userId, createdBefore, createdAfter, withTotalResultSize, managementKeyId, includeOld)
+> InlineResponse20045 getChanges(pageSize, skip, sort, applicationId, entityPath, userId, createdBefore, createdAfter, withTotalResultSize, managementKeyId, includeOld)
Get audit logs for an account
@@ -8314,7 +8952,7 @@ public class Example {
Long managementKeyId = 56L; // Long | Filter results that match the given management key ID.
Boolean includeOld = true; // Boolean | When this flag is set to false, the state without the change will not be returned. The default value is true.
try {
- InlineResponse20044 result = apiInstance.getChanges(pageSize, skip, sort, applicationId, entityPath, userId, createdBefore, createdAfter, withTotalResultSize, managementKeyId, includeOld);
+ InlineResponse20045 result = apiInstance.getChanges(pageSize, skip, sort, applicationId, entityPath, userId, createdBefore, createdAfter, withTotalResultSize, managementKeyId, includeOld);
System.out.println(result);
} catch (ApiException e) {
System.err.println("Exception when calling ManagementApi#getChanges");
@@ -8346,7 +8984,7 @@ Name | Type | Description | Notes
### Return type cool
-[**InlineResponse20044**](InlineResponse20044.md)
+[**InlineResponse20045**](InlineResponse20045.md)
### Authorization
@@ -9037,7 +9675,7 @@ Name | Type | Description | Notes
## getCustomerProfileAchievementProgress
-> InlineResponse20052 getCustomerProfileAchievementProgress(applicationId, integrationId, pageSize, skip, achievementId, title)
+> InlineResponse20054 getCustomerProfileAchievementProgress(applicationId, integrationId, pageSize, skip, achievementId, title)
List customer achievements
@@ -9085,7 +9723,7 @@ public class Example {
Long achievementId = 56L; // Long | The ID of the achievement. You can get this ID with the [List achievement](https://docs.talon.one/management-api#tag/Achievements/operation/listAchievements) endpoint.
String title = "title_example"; // String | Filter results by the `title` of an achievement.
try {
- InlineResponse20052 result = apiInstance.getCustomerProfileAchievementProgress(applicationId, integrationId, pageSize, skip, achievementId, title);
+ InlineResponse20054 result = apiInstance.getCustomerProfileAchievementProgress(applicationId, integrationId, pageSize, skip, achievementId, title);
System.out.println(result);
} catch (ApiException e) {
System.err.println("Exception when calling ManagementApi#getCustomerProfileAchievementProgress");
@@ -9112,7 +9750,7 @@ Name | Type | Description | Notes
### Return type cool
-[**InlineResponse20052**](InlineResponse20052.md)
+[**InlineResponse20054**](InlineResponse20054.md)
### Authorization
@@ -9401,7 +10039,7 @@ Name | Type | Description | Notes
## getEventTypes
-> InlineResponse20042 getEventTypes(name, includeOldVersions, pageSize, skip, sort)
+> InlineResponse20043 getEventTypes(name, includeOldVersions, pageSize, skip, sort)
List event types
@@ -9448,7 +10086,7 @@ public class Example {
Long skip = 56L; // Long | The number of items to skip when paging through large result sets.
String sort = "sort_example"; // String | The field by which results should be sorted. By default, results are sorted in ascending order. To sort them in descending order, prefix the field name with `-`. **Note:** You may not be able to use all fields for sorting. This is due to performance limitations.
try {
- InlineResponse20042 result = apiInstance.getEventTypes(name, includeOldVersions, pageSize, skip, sort);
+ InlineResponse20043 result = apiInstance.getEventTypes(name, includeOldVersions, pageSize, skip, sort);
System.out.println(result);
} catch (ApiException e) {
System.err.println("Exception when calling ManagementApi#getEventTypes");
@@ -9474,7 +10112,7 @@ Name | Type | Description | Notes
### Return type cool
-[**InlineResponse20042**](InlineResponse20042.md)
+[**InlineResponse20043**](InlineResponse20043.md)
### Authorization
@@ -9579,7 +10217,7 @@ Name | Type | Description | Notes
## getExports
-> InlineResponse20045 getExports(pageSize, skip, applicationId, campaignId, entity)
+> InlineResponse20046 getExports(pageSize, skip, applicationId, campaignId, entity)
Get exports
@@ -9626,7 +10264,7 @@ public class Example {
Long campaignId = 56L; // Long | Filter by the campaign ID on which the limit counters are used.
String entity = "entity_example"; // String | The name of the entity type that was exported.
try {
- InlineResponse20045 result = apiInstance.getExports(pageSize, skip, applicationId, campaignId, entity);
+ InlineResponse20046 result = apiInstance.getExports(pageSize, skip, applicationId, campaignId, entity);
System.out.println(result);
} catch (ApiException e) {
System.err.println("Exception when calling ManagementApi#getExports");
@@ -9652,7 +10290,7 @@ Name | Type | Description | Notes
### Return type cool
-[**InlineResponse20045**](InlineResponse20045.md)
+[**InlineResponse20046**](InlineResponse20046.md)
### Authorization
@@ -9762,9 +10400,9 @@ Name | Type | Description | Notes
> InlineResponse20021 getLoyaltyCardTransactionLogs(loyaltyProgramId, loyaltyCardId, startDate, endDate, pageSize, skip, subledgerId, customerSessionIDs, transactionUUIDs)
-List card's transactions
+List card's transactions (Management API)
-Retrieve the transaction logs for the given [loyalty card](https://docs.talon.one/docs/product/loyalty-programs/card-based/card-based-overview) within the specified [card-based loyalty program](https://docs.talon.one/docs/product/loyalty-programs/overview#loyalty-program-types) with filtering options applied. If no filtering options are applied, the last 50 loyalty transactions for the given loyalty card are returned.
+Retrieve the transaction logs for the given [loyalty card](https://docs.talon.one/docs/product/loyalty-programs/card-based/card-based-overview) within the specified [card-based loyalty program](https://docs.talon.one/docs/product/loyalty-programs/overview#loyalty-program-types) with filtering options applied. > [!note] For most use cases, especially real-time integrations, use the Integration API endpoint: > [List card's transactions](https://docs.talon.one/integration-api#tag/Loyalty-cards/operation/getLoyaltyCardTransactions). If no filtering options are applied, the last 50 loyalty transactions for the given loyalty card are returned.
### Example
@@ -9962,9 +10600,9 @@ Name | Type | Description | Notes
> LoyaltyBalancesWithTiers getLoyaltyLedgerBalances(loyaltyProgramId, integrationId, endDate, subledgerId, includeTiers, includeProjectedTier)
-Get customer's loyalty balances
+Get customer's loyalty balances (Management API)
-Retrieve loyalty ledger balances for the given Integration ID in the specified loyalty program. You can filter balances by date and subledger ID, and include tier-related information in the response. > [!note] If no filtering options are applied, you retrieve all loyalty > balances on the current date for the given integration ID. Loyalty balances are calculated when Talon.One receives your request using the points stored in our database, so retrieving a large number of balances at once can impact performance. For more information, see: - [Managing card-based loyalty program data](https://docs.talon.one/docs/product/loyalty-programs/card-based/managing-loyalty-cards) - [Managing profile-based loyalty program data](https://docs.talon.one/docs/product/loyalty-programs/profile-based/managing-pb-lp-data)
+Retrieve loyalty ledger balances for the given Integration ID in the specified loyalty program. You can filter balances by date and subledger ID, and include tier-related information in the response. > [!note] **Note** > - For most use cases, especially real-time integrations, use the Integration API endpoint: [Get customer's loyalty balances](https://docs.talon.one/integration-api#tag/Loyalty/operation/getLoyaltyBalances). > - If no filtering options are applied, you retrieve all loyalty balances on the current date for the given integration ID. Loyalty balances are calculated when Talon.One receives your request using the points stored in our database, so retrieving a large number of balances at once can impact performance. For more information, see: - [Managing card-based loyalty program data](https://docs.talon.one/docs/product/loyalty-programs/card-based/managing-loyalty-cards) - [Managing profile-based loyalty program data](https://docs.talon.one/docs/product/loyalty-programs/profile-based/managing-pb-lp-data)
### Example
@@ -10229,9 +10867,9 @@ Name | Type | Description | Notes
> InlineResponse2005 getLoyaltyProgramProfileLedgerTransactions(loyaltyProgramId, integrationId, customerSessionIDs, transactionUUIDs, subledgerId, loyaltyTransactionType, startDate, endDate, pageSize, skip, awaitsActivation)
-List customer's loyalty transactions
+List customer's loyalty transactions (Management API)
-Retrieve paginated results of loyalty transaction logs for the given Integration ID in the specified loyalty program. You can filter transactions by date or by ledger (subledger or main ledger). If no filters are applied, the last 50 loyalty transactions for the given integration ID are returned. > [!note] To retrieve all loyalty program transaction logs in a given > loyalty program, use the [List loyalty program transactions](https://docs.talon.one/management-api#tag/Loyalty/operation/getLoyaltyProgramTransactions) > endpoint.
+Retrieve paginated results of loyalty transaction logs for the given Integration ID in the specified loyalty program. You can filter transactions by date or by ledger (subledger or main ledger). If no filters are applied, the last 50 loyalty transactions for the given integration ID are returned. > [!note] **Note** > - For most use cases, especially real-time integrations, use the Integration API endpoint: > [List customer's loyalty transactions](https://docs.talon.one/integration-api#tag/Loyalty/operation/getLoyaltyProgramProfileTransactions). > - To retrieve all loyalty program transaction logs in a given loyalty program, use the > [List loyalty program transactions](https://docs.talon.one/management-api#tag/Loyalty/operation/getLoyaltyProgramTransactions) endpoint.
### Example
@@ -10523,7 +11161,7 @@ This endpoint does not need any parameter.
Get loyalty program statistics
-> [warning] This endpoint is deprecated. To retrieve statistics for a loyalty program, use the [Get statistics for loyalty dashboard](/management-api#tag/Loyalty/operation/getDashboardStatistics) endpoint. Retrieve the statistics of the specified loyalty program, such as the total active points, pending points, spent points, and expired points.
+> [!warning] This endpoint is deprecated. To retrieve statistics for a loyalty program, use the [Get statistics for loyalty dashboard](/management-api#tag/Loyalty/operation/getDashboardStatistics) endpoint. Retrieve the statistics of the specified loyalty program, such as the total active points, pending points, spent points, and expired points.
### Example
@@ -10603,7 +11241,7 @@ Name | Type | Description | Notes
## getMessageLogs
-> MessageLogEntries getMessageLogs(entityType, messageID, changeType, notificationIDs, createdBefore, createdAfter, cursor, period, isSuccessful, applicationId, campaignId, loyaltyProgramId, responseCode, webhookIDs)
+> MessageLogEntries getMessageLogs(entityType, messageID, changeType, notificationIDs, createdBefore, createdAfter, cursor, pageSize, period, isSuccessful, applicationId, campaignId, loyaltyProgramId, responseCode, webhookIDs)
List message log entries
@@ -10651,6 +11289,7 @@ public class Example {
OffsetDateTime createdBefore = new OffsetDateTime(); // OffsetDateTime | Filter results where request and response times to return entries before parameter value, expected to be an RFC3339 timestamp string. Use UTC time.
OffsetDateTime createdAfter = new OffsetDateTime(); // OffsetDateTime | Filter results where request and response times to return entries after parameter value, expected to be an RFC3339 timestamp string. Use UTC time.
byte[] cursor = null; // byte[] | A specific unique value in the database. If this value is not given, the server fetches results starting with the first record.
+ Long pageSize = 50lL; // Long | The maximum number of message log entries to return.
String period = "period_example"; // String | Filter results by time period. Choose between the available relative time frames.
Boolean isSuccessful = true; // Boolean | Indicates whether to return log entries with either successful or unsuccessful HTTP response codes. When set to`true`, only log entries with `2xx` response codes are returned. When set to `false`, only log entries with `4xx` and `5xx` response codes are returned.
BigDecimal applicationId = new BigDecimal(); // BigDecimal | Filter results by Application ID.
@@ -10659,7 +11298,7 @@ public class Example {
Long responseCode = 56L; // Long | Filter results by response status code.
String webhookIDs = "webhookIDs_example"; // String | Filter results by webhook ID (include up to 30 values, separated by a comma).
try {
- MessageLogEntries result = apiInstance.getMessageLogs(entityType, messageID, changeType, notificationIDs, createdBefore, createdAfter, cursor, period, isSuccessful, applicationId, campaignId, loyaltyProgramId, responseCode, webhookIDs);
+ MessageLogEntries result = apiInstance.getMessageLogs(entityType, messageID, changeType, notificationIDs, createdBefore, createdAfter, cursor, pageSize, period, isSuccessful, applicationId, campaignId, loyaltyProgramId, responseCode, webhookIDs);
System.out.println(result);
} catch (ApiException e) {
System.err.println("Exception when calling ManagementApi#getMessageLogs");
@@ -10684,6 +11323,7 @@ Name | Type | Description | Notes
**createdBefore** | **OffsetDateTime**| Filter results where request and response times to return entries before parameter value, expected to be an RFC3339 timestamp string. Use UTC time. | [optional]
**createdAfter** | **OffsetDateTime**| Filter results where request and response times to return entries after parameter value, expected to be an RFC3339 timestamp string. Use UTC time. | [optional]
**cursor** | **byte[]**| A specific unique value in the database. If this value is not given, the server fetches results starting with the first record. | [optional]
+ **pageSize** | **Long**| The maximum number of message log entries to return. | [optional] [default to 50l]
**period** | **String**| Filter results by time period. Choose between the available relative time frames. | [optional] [enum: 15m, 30m, 1h, 4h, 1d, 2d]
**isSuccessful** | **Boolean**| Indicates whether to return log entries with either successful or unsuccessful HTTP response codes. When set to`true`, only log entries with `2xx` response codes are returned. When set to `false`, only log entries with `4xx` and `5xx` response codes are returned. | [optional]
**applicationId** | **BigDecimal**| Filter results by Application ID. | [optional]
@@ -10987,6 +11627,94 @@ Name | Type | Description | Notes
| **200** | OK | - |
+## getRulesetV2
+
+> RulesetV2 getRulesetV2(applicationId, campaignId, rulesetId)
+
+Get ruleset (V2)
+
+Retrieve the specified ruleset as a JSON object.
+
+### Example
+
+```java
+// Import classes:
+import one.talon.ApiClient;
+import one.talon.ApiException;
+import one.talon.Configuration;
+import one.talon.auth.*;
+import one.talon.models.*;
+import one.talon.api.ManagementApi;
+
+public class Example {
+ public static void main(String[] args) {
+ ApiClient defaultClient = Configuration.getDefaultApiClient();
+ defaultClient.setBasePath("https://yourbaseurl.talon.one");
+
+ // Configure API key authorization: api_key_v1
+ ApiKeyAuth api_key_v1 = (ApiKeyAuth) defaultClient.getAuthentication("api_key_v1");
+ api_key_v1.setApiKey("YOUR API KEY");
+ // Uncomment the following line to set a prefix for the API key, e.g. "Token" (defaults to null)
+ //api_key_v1.setApiKeyPrefix("Token");
+
+ // Configure API key authorization: management_key
+ ApiKeyAuth management_key = (ApiKeyAuth) defaultClient.getAuthentication("management_key");
+ management_key.setApiKey("YOUR API KEY");
+ // Uncomment the following line to set a prefix for the API key, e.g. "Token" (defaults to null)
+ //management_key.setApiKeyPrefix("Token");
+
+ // Configure API key authorization: manager_auth
+ ApiKeyAuth manager_auth = (ApiKeyAuth) defaultClient.getAuthentication("manager_auth");
+ manager_auth.setApiKey("YOUR API KEY");
+ // Uncomment the following line to set a prefix for the API key, e.g. "Token" (defaults to null)
+ //manager_auth.setApiKeyPrefix("Token");
+
+ ManagementApi apiInstance = new ManagementApi(defaultClient);
+ Long applicationId = 56L; // Long | The ID of the Application. It is displayed in your Talon.One deployment URL.
+ Long campaignId = 56L; // Long | The ID of the campaign. It is displayed in your Talon.One deployment URL.
+ Long rulesetId = 56L; // Long | The ID of the ruleset.
+ try {
+ RulesetV2 result = apiInstance.getRulesetV2(applicationId, campaignId, rulesetId);
+ System.out.println(result);
+ } catch (ApiException e) {
+ System.err.println("Exception when calling ManagementApi#getRulesetV2");
+ System.err.println("Status code: " + e.getCode());
+ System.err.println("Reason: " + e.getResponseBody());
+ System.err.println("Response headers: " + e.getResponseHeaders());
+ e.printStackTrace();
+ }
+ }
+}
+```
+
+### Parameters
+
+
+Name | Type | Description | Notes
+------------- | ------------- | ------------- | -------------
+ **applicationId** | **Long**| The ID of the Application. It is displayed in your Talon.One deployment URL. |
+ **campaignId** | **Long**| The ID of the campaign. It is displayed in your Talon.One deployment URL. |
+ **rulesetId** | **Long**| The ID of the ruleset. |
+
+### Return type cool
+
+[**RulesetV2**](RulesetV2.md)
+
+### Authorization
+
+[api_key_v1](../README.md#api_key_v1), [management_key](../README.md#management_key), [manager_auth](../README.md#manager_auth)
+
+### HTTP request headers
+
+- **Content-Type**: Not defined
+- **Accept**: application/json
+
+### HTTP response details
+| Status code | Description | Response headers |
+|-------------|-------------|------------------|
+| **200** | OK | - |
+
+
## getRulesets
> InlineResponse20010 getRulesets(applicationId, campaignId, pageSize, skip, sort)
@@ -11252,7 +11980,7 @@ Name | Type | Description | Notes
## getUsers
-> InlineResponse20043 getUsers(pageSize, skip, sort)
+> InlineResponse20044 getUsers(pageSize, skip, sort)
List users in account
@@ -11297,7 +12025,7 @@ public class Example {
Long skip = 56L; // Long | The number of items to skip when paging through large result sets.
String sort = "sort_example"; // String | The field by which results should be sorted. By default, results are sorted in ascending order. To sort them in descending order, prefix the field name with `-`. **Note:** You may not be able to use all fields for sorting. This is due to performance limitations.
try {
- InlineResponse20043 result = apiInstance.getUsers(pageSize, skip, sort);
+ InlineResponse20044 result = apiInstance.getUsers(pageSize, skip, sort);
System.out.println(result);
} catch (ApiException e) {
System.err.println("Exception when calling ManagementApi#getUsers");
@@ -11321,7 +12049,7 @@ Name | Type | Description | Notes
### Return type cool
-[**InlineResponse20043**](InlineResponse20043.md)
+[**InlineResponse20044**](InlineResponse20044.md)
### Authorization
@@ -11424,7 +12152,7 @@ Name | Type | Description | Notes
## getWebhooks
-> InlineResponse20041 getWebhooks(applicationIds, sort, pageSize, skip, creationType, visibility, outgoingIntegrationsTypeId, title)
+> InlineResponse20042 getWebhooks(applicationIds, sort, pageSize, skip, creationType, visibility, outgoingIntegrationsTypeId, title)
List webhooks
@@ -11474,7 +12202,7 @@ public class Example {
Long outgoingIntegrationsTypeId = 56L; // Long | Filter results by outgoing integration type ID.
String title = "title_example"; // String | Filter results performing case-insensitive matching against the webhook title.
try {
- InlineResponse20041 result = apiInstance.getWebhooks(applicationIds, sort, pageSize, skip, creationType, visibility, outgoingIntegrationsTypeId, title);
+ InlineResponse20042 result = apiInstance.getWebhooks(applicationIds, sort, pageSize, skip, creationType, visibility, outgoingIntegrationsTypeId, title);
System.out.println(result);
} catch (ApiException e) {
System.err.println("Exception when calling ManagementApi#getWebhooks");
@@ -11503,7 +12231,7 @@ Name | Type | Description | Notes
### Return type cool
-[**InlineResponse20041**](InlineResponse20041.md)
+[**InlineResponse20042**](InlineResponse20042.md)
### Authorization
@@ -11564,7 +12292,7 @@ public class Example {
ManagementApi apiInstance = new ManagementApi(defaultClient);
Long collectionId = 56L; // Long | The ID of the collection. You can get it with the [List collections in account](#tag/Collections/operation/listAccountCollections) endpoint.
- String upFile = "upFile_example"; // String | The file containing the data that is being imported.
+ String upFile = "upFile_example"; // String | The CSV file containing the data that is being imported.
try {
ModelImport result = apiInstance.importAccountCollection(collectionId, upFile);
System.out.println(result);
@@ -11585,7 +12313,7 @@ public class Example {
Name | Type | Description | Notes
------------- | ------------- | ------------- | -------------
**collectionId** | **Long**| The ID of the collection. You can get it with the [List collections in account](#tag/Collections/operation/listAccountCollections) endpoint. |
- **upFile** | **String**| The file containing the data that is being imported. | [optional]
+ **upFile** | **String**| The CSV file containing the data that is being imported. | [optional]
### Return type cool
@@ -11652,7 +12380,7 @@ public class Example {
ManagementApi apiInstance = new ManagementApi(defaultClient);
Long attributeId = 56L; // Long | The ID of the attribute. You can find the ID in the Campaign Manager's URL when you display the details of an attribute in **Account** > **Tools** > **Attributes**.
- String upFile = "upFile_example"; // String | The file containing the data that is being imported.
+ String upFile = "upFile_example"; // String | The CSV file containing the data that is being imported.
try {
ModelImport result = apiInstance.importAllowedList(attributeId, upFile);
System.out.println(result);
@@ -11673,7 +12401,7 @@ public class Example {
Name | Type | Description | Notes
------------- | ------------- | ------------- | -------------
**attributeId** | **Long**| The ID of the attribute. You can find the ID in the Campaign Manager's URL when you display the details of an attribute in **Account** > **Tools** > **Attributes**. |
- **upFile** | **String**| The file containing the data that is being imported. | [optional]
+ **upFile** | **String**| The CSV file containing the data that is being imported. | [optional]
### Return type cool
@@ -11741,7 +12469,7 @@ public class Example {
ManagementApi apiInstance = new ManagementApi(defaultClient);
Long audienceId = 56L; // Long | The ID of the audience.
- String upFile = "upFile_example"; // String | The file containing the data that is being imported.
+ String upFile = "upFile_example"; // String | The CSV file containing the data that is being imported.
try {
ModelImport result = apiInstance.importAudiencesMemberships(audienceId, upFile);
System.out.println(result);
@@ -11762,7 +12490,7 @@ public class Example {
Name | Type | Description | Notes
------------- | ------------- | ------------- | -------------
**audienceId** | **Long**| The ID of the audience. |
- **upFile** | **String**| The file containing the data that is being imported. | [optional]
+ **upFile** | **String**| The CSV file containing the data that is being imported. | [optional]
### Return type cool
@@ -11833,7 +12561,7 @@ public class Example {
Long campaignId = 56L; // Long | The ID of the campaign. It is displayed in your Talon.One deployment URL.
String action = "action_example"; // String | The action that this budget is limiting.
String period = "period_example"; // String | The period to which the limit applies. **Note**: For budgets with no period, set this to `overall`.
- String upFile = "upFile_example"; // String | The file containing the data that is being imported.
+ String upFile = "upFile_example"; // String | The CSV file containing the data that is being imported.
try {
ModelImport result = apiInstance.importCampaignStoreBudget(applicationId, campaignId, action, period, upFile);
System.out.println(result);
@@ -11857,7 +12585,7 @@ Name | Type | Description | Notes
**campaignId** | **Long**| The ID of the campaign. It is displayed in your Talon.One deployment URL. |
**action** | **String**| The action that this budget is limiting. | [optional] [enum: setDiscount]
**period** | **String**| The period to which the limit applies. **Note**: For budgets with no period, set this to `overall`. | [optional] [enum: overall, daily, weekly, monthly, yearly]
- **upFile** | **String**| The file containing the data that is being imported. | [optional]
+ **upFile** | **String**| The CSV file containing the data that is being imported. | [optional]
### Return type cool
@@ -11883,9 +12611,100 @@ Name | Type | Description | Notes
> ModelImport importCampaignStores(applicationId, campaignId, upFile)
-Import stores
+Import stores
+
+Upload a CSV file containing the stores you want to link to a specific campaign. Send the file as multipart data. The CSV file **must** only contain the following column: - `store_integration_id`: The identifier of the store. The import **replaces** the previous list of stores linked to the campaign.
+
+### Example
+
+```java
+// Import classes:
+import one.talon.ApiClient;
+import one.talon.ApiException;
+import one.talon.Configuration;
+import one.talon.auth.*;
+import one.talon.models.*;
+import one.talon.api.ManagementApi;
+
+public class Example {
+ public static void main(String[] args) {
+ ApiClient defaultClient = Configuration.getDefaultApiClient();
+ defaultClient.setBasePath("https://yourbaseurl.talon.one");
+
+ // Configure API key authorization: api_key_v1
+ ApiKeyAuth api_key_v1 = (ApiKeyAuth) defaultClient.getAuthentication("api_key_v1");
+ api_key_v1.setApiKey("YOUR API KEY");
+ // Uncomment the following line to set a prefix for the API key, e.g. "Token" (defaults to null)
+ //api_key_v1.setApiKeyPrefix("Token");
+
+ // Configure API key authorization: management_key
+ ApiKeyAuth management_key = (ApiKeyAuth) defaultClient.getAuthentication("management_key");
+ management_key.setApiKey("YOUR API KEY");
+ // Uncomment the following line to set a prefix for the API key, e.g. "Token" (defaults to null)
+ //management_key.setApiKeyPrefix("Token");
+
+ // Configure API key authorization: manager_auth
+ ApiKeyAuth manager_auth = (ApiKeyAuth) defaultClient.getAuthentication("manager_auth");
+ manager_auth.setApiKey("YOUR API KEY");
+ // Uncomment the following line to set a prefix for the API key, e.g. "Token" (defaults to null)
+ //manager_auth.setApiKeyPrefix("Token");
+
+ ManagementApi apiInstance = new ManagementApi(defaultClient);
+ Long applicationId = 56L; // Long | The ID of the Application. It is displayed in your Talon.One deployment URL.
+ Long campaignId = 56L; // Long | The ID of the campaign. It is displayed in your Talon.One deployment URL.
+ String upFile = "upFile_example"; // String | The CSV file containing the data that is being imported.
+ try {
+ ModelImport result = apiInstance.importCampaignStores(applicationId, campaignId, upFile);
+ System.out.println(result);
+ } catch (ApiException e) {
+ System.err.println("Exception when calling ManagementApi#importCampaignStores");
+ System.err.println("Status code: " + e.getCode());
+ System.err.println("Reason: " + e.getResponseBody());
+ System.err.println("Response headers: " + e.getResponseHeaders());
+ e.printStackTrace();
+ }
+ }
+}
+```
+
+### Parameters
+
+
+Name | Type | Description | Notes
+------------- | ------------- | ------------- | -------------
+ **applicationId** | **Long**| The ID of the Application. It is displayed in your Talon.One deployment URL. |
+ **campaignId** | **Long**| The ID of the campaign. It is displayed in your Talon.One deployment URL. |
+ **upFile** | **String**| The CSV file containing the data that is being imported. | [optional]
+
+### Return type cool
+
+[**ModelImport**](ModelImport.md)
+
+### Authorization
+
+[api_key_v1](../README.md#api_key_v1), [management_key](../README.md#management_key), [manager_auth](../README.md#manager_auth)
+
+### HTTP request headers
+
+- **Content-Type**: multipart/form-data
+- **Accept**: application/json
+
+### HTTP response details
+| Status code | Description | Response headers |
+|-------------|-------------|------------------|
+| **200** | OK | - |
+| **400** | Bad request | - |
+| **401** | Unauthorized - Invalid API key | - |
+| **404** | Not found | - |
+
+
+## importCollection
+
+> ModelImport importCollection(applicationId, campaignId, collectionId, upFile)
+
+Import data into existing campaign-level collection
-Upload a CSV file containing the stores you want to link to a specific campaign. Send the file as multipart data. The CSV file **must** only contain the following column: - `store_integration_id`: The identifier of the store. The import **replaces** the previous list of stores linked to the campaign.
+Upload a CSV file containing the collection of string values that should be attached as payload for collection. The file should be sent as multipart data. The import **replaces** the initial content of the collection. The CSV file **must** only contain the following column: - `item`: the values in your collection. A collection is limited to 500,000 items. ## Example ``` item Adidas Nike Asics ``` > [!note] Before sending a request to this endpoint, ensure the data in the > CSV to import is different from the data currently stored in the collection.
### Example
@@ -11924,12 +12743,13 @@ public class Example {
ManagementApi apiInstance = new ManagementApi(defaultClient);
Long applicationId = 56L; // Long | The ID of the Application. It is displayed in your Talon.One deployment URL.
Long campaignId = 56L; // Long | The ID of the campaign. It is displayed in your Talon.One deployment URL.
- String upFile = "upFile_example"; // String | The file containing the data that is being imported.
+ Long collectionId = 56L; // Long | The ID of the collection. You can get it with the [List collections in Application](#tag/Collections/operation/listCollectionsInApplication) endpoint.
+ String upFile = "upFile_example"; // String | The CSV file containing the data that is being imported.
try {
- ModelImport result = apiInstance.importCampaignStores(applicationId, campaignId, upFile);
+ ModelImport result = apiInstance.importCollection(applicationId, campaignId, collectionId, upFile);
System.out.println(result);
} catch (ApiException e) {
- System.err.println("Exception when calling ManagementApi#importCampaignStores");
+ System.err.println("Exception when calling ManagementApi#importCollection");
System.err.println("Status code: " + e.getCode());
System.err.println("Reason: " + e.getResponseBody());
System.err.println("Response headers: " + e.getResponseHeaders());
@@ -11946,7 +12766,8 @@ Name | Type | Description | Notes
------------- | ------------- | ------------- | -------------
**applicationId** | **Long**| The ID of the Application. It is displayed in your Talon.One deployment URL. |
**campaignId** | **Long**| The ID of the campaign. It is displayed in your Talon.One deployment URL. |
- **upFile** | **String**| The file containing the data that is being imported. | [optional]
+ **collectionId** | **Long**| The ID of the collection. You can get it with the [List collections in Application](#tag/Collections/operation/listCollectionsInApplication) endpoint. |
+ **upFile** | **String**| The CSV file containing the data that is being imported. | [optional]
### Return type cool
@@ -11965,18 +12786,16 @@ Name | Type | Description | Notes
| Status code | Description | Response headers |
|-------------|-------------|------------------|
| **200** | OK | - |
-| **400** | Bad request | - |
-| **401** | Unauthorized - Invalid API key | - |
-| **404** | Not found | - |
+| **401** | Unauthorized | - |
-## importCollection
+## importCoupons
-> ModelImport importCollection(applicationId, campaignId, collectionId, upFile)
+> ModelImport importCoupons(applicationId, campaignId, skipDuplicates, upFile)
-Import data into existing campaign-level collection
+Import coupons
-Upload a CSV file containing the collection of string values that should be attached as payload for collection. The file should be sent as multipart data. The import **replaces** the initial content of the collection. The CSV file **must** only contain the following column: - `item`: the values in your collection. A collection is limited to 500,000 items. ## Example ``` item Adidas Nike Asics ``` > [!note] Before sending a request to this endpoint, ensure the data in the > CSV to import is different from the data currently stored in the collection.
+Upload a CSV file containing the coupons that should be created. The file should be sent as multipart data. The CSV file contains the following columns: - `value` (required): The coupon code. Must be at least 3 characters long. We recommend using alphanumeric characters. There is no maximum length but limiting the code to 30 characters ensures it is fully readable in the Campaign Manager. The code should be unique unless you set `skipDuplicates` to `true`. - `expirydate`: The end date in RFC3339 of the code redemption period. - `startdate`: The start date in RFC3339 of the code redemption period. - `recipientintegrationid`: The integration ID of the recipient of the coupon. Only the customer with this integration ID can redeem this code. Available only for personal codes. - `limitval`: The maximum number of redemptions of this code. For unlimited redemptions, use `0`. Defaults to `1` when not provided. - `discountlimit`: The total discount value that the code can give. This is typically used to represent a gift card value. - `attributes`: A JSON object describing _custom_ coupon attribute names and their values, enclosed with double quotation marks.<br /> For example, if you created a [custom attribute](https://docs.talon.one/docs/dev/concepts/attributes#custom-attributes) called `category` associated with the coupon entity, the object in the CSV file, when opened in a text editor, must be: `\"{\"category\": \"10_off\"}\"`. You can use the time zone of your choice. It is converted to UTC internally by Talon.One. > [!note] We recommend limiting your file size to 500 MB. ## Example ```text \"value\",\"expirydate\",\"startdate\",\"recipientintegrationid\",\"limitval\",\"attributes\",\"discountlimit\" COUP1,2018-07-01T04:00:00Z,2018-05-01T04:00:00Z,cust123,1,\"{\"\"Category\"\": \"\"10_off\"\"}\",2.4 ``` Once imported, you can find the `batchId` in the Campaign Manager or by using [List coupons](#tag/Coupons/operation/getCouponsWithoutTotalCount).
### Example
@@ -12015,13 +12834,13 @@ public class Example {
ManagementApi apiInstance = new ManagementApi(defaultClient);
Long applicationId = 56L; // Long | The ID of the Application. It is displayed in your Talon.One deployment URL.
Long campaignId = 56L; // Long | The ID of the campaign. It is displayed in your Talon.One deployment URL.
- Long collectionId = 56L; // Long | The ID of the collection. You can get it with the [List collections in Application](#tag/Collections/operation/listCollectionsInApplication) endpoint.
- String upFile = "upFile_example"; // String | The file containing the data that is being imported.
+ Boolean skipDuplicates = true; // Boolean | An indicator of whether to skip duplicate coupon values instead of causing an error. Duplicate values are ignored when `skipDuplicates=true`.
+ String upFile = "upFile_example"; // String | The CSV file containing the data that is being imported.
try {
- ModelImport result = apiInstance.importCollection(applicationId, campaignId, collectionId, upFile);
+ ModelImport result = apiInstance.importCoupons(applicationId, campaignId, skipDuplicates, upFile);
System.out.println(result);
} catch (ApiException e) {
- System.err.println("Exception when calling ManagementApi#importCollection");
+ System.err.println("Exception when calling ManagementApi#importCoupons");
System.err.println("Status code: " + e.getCode());
System.err.println("Reason: " + e.getResponseBody());
System.err.println("Response headers: " + e.getResponseHeaders());
@@ -12038,8 +12857,8 @@ Name | Type | Description | Notes
------------- | ------------- | ------------- | -------------
**applicationId** | **Long**| The ID of the Application. It is displayed in your Talon.One deployment URL. |
**campaignId** | **Long**| The ID of the campaign. It is displayed in your Talon.One deployment URL. |
- **collectionId** | **Long**| The ID of the collection. You can get it with the [List collections in Application](#tag/Collections/operation/listCollectionsInApplication) endpoint. |
- **upFile** | **String**| The file containing the data that is being imported. | [optional]
+ **skipDuplicates** | **Boolean**| An indicator of whether to skip duplicate coupon values instead of causing an error. Duplicate values are ignored when `skipDuplicates=true`. | [optional]
+ **upFile** | **String**| The CSV file containing the data that is being imported. | [optional]
### Return type cool
@@ -12058,16 +12877,15 @@ Name | Type | Description | Notes
| Status code | Description | Response headers |
|-------------|-------------|------------------|
| **200** | OK | - |
-| **401** | Unauthorized | - |
-## importCoupons
+## importLoyaltyCards
-> ModelImport importCoupons(applicationId, campaignId, skipDuplicates, upFile)
+> ModelImport importLoyaltyCards(loyaltyProgramId, upFile)
-Import coupons
+Import loyalty cards
-Upload a CSV file containing the coupons that should be created. The file should be sent as multipart data. The CSV file contains the following columns: - `value` (required): The coupon code. Must be at least 3 characters long. We recommend using alphanumeric characters. There is no maximum length but limiting the code to 30 characters ensures it is fully readable in the Campaign Manager. The code should be unique unless you set `skipDuplicates` to `true`. - `expirydate`: The end date in RFC3339 of the code redemption period. - `startdate`: The start date in RFC3339 of the code redemption period. - `recipientintegrationid`: The integration ID of the recipient of the coupon. Only the customer with this integration ID can redeem this code. Available only for personal codes. - `limitval`: The maximum number of redemptions of this code. For unlimited redemptions, use `0`. Defaults to `1` when not provided. - `discountlimit`: The total discount value that the code can give. This is typically used to represent a gift card value. - `attributes`: A JSON object describing _custom_ coupon attribute names and their values, enclosed with double quotation marks.<br /> For example, if you created a [custom attribute](https://docs.talon.one/docs/dev/concepts/attributes#custom-attributes) called `category` associated with the coupon entity, the object in the CSV file, when opened in a text editor, must be: `\"{\"category\": \"10_off\"}\"`. You can use the time zone of your choice. It is converted to UTC internally by Talon.One. > [!note] We recommend limiting your file size to 500 MB. ## Example ```text \"value\",\"expirydate\",\"startdate\",\"recipientintegrationid\",\"limitval\",\"attributes\",\"discountlimit\" COUP1,2018-07-01T04:00:00Z,2018-05-01T04:00:00Z,cust123,1,\"{\"\"Category\"\": \"\"10_off\"\"}\",2.4 ``` Once imported, you can find the `batchId` in the Campaign Manager or by using [List coupons](#tag/Coupons/operation/getCouponsWithoutTotalCount).
+Upload a CSV file containing the loyalty cards that you want to use in your card-based loyalty program. Send the file as multipart data. It contains the following columns for each card: - `identifier` (required): The identifier of the loyalty card, which must match the regular expression `^[A-Za-z0-9._%+@-]+$`. - `state` (required): The state of the loyalty card. It can be `active` or `inactive`. - `customerprofileids` (optional): An array of strings representing the identifiers of the customer profiles linked to the loyalty card. The identifiers should be separated with a semicolon (;). - `attributes` (optional): A JSON object that contains the loyalty card's custom attributes and their values. These attributes must be created and connected to this loyalty program before they can be assigned to the cards through this endpoint. > [!note] Your CSV file must contain less than 500,000 rows. Requests time out after 30 seconds. ## Example ```csv identifier,state,customerprofileids,attributes 123-456-789AT,active,Alexa001;UserA,'{\"\"my_attributes\"\": \"\"10_off\"\"}\" ```
### Example
@@ -12104,15 +12922,13 @@ public class Example {
//manager_auth.setApiKeyPrefix("Token");
ManagementApi apiInstance = new ManagementApi(defaultClient);
- Long applicationId = 56L; // Long | The ID of the Application. It is displayed in your Talon.One deployment URL.
- Long campaignId = 56L; // Long | The ID of the campaign. It is displayed in your Talon.One deployment URL.
- Boolean skipDuplicates = true; // Boolean | An indicator of whether to skip duplicate coupon values instead of causing an error. Duplicate values are ignored when `skipDuplicates=true`.
- String upFile = "upFile_example"; // String | The file containing the data that is being imported.
+ Long loyaltyProgramId = 56L; // Long | Identifier of the card-based loyalty program containing the loyalty card. You can get the ID with the [List loyalty programs](https://docs.talon.one/management-api#tag/Loyalty/operation/getLoyaltyPrograms) endpoint.
+ String upFile = "upFile_example"; // String | The CSV file containing the data that is being imported.
try {
- ModelImport result = apiInstance.importCoupons(applicationId, campaignId, skipDuplicates, upFile);
+ ModelImport result = apiInstance.importLoyaltyCards(loyaltyProgramId, upFile);
System.out.println(result);
} catch (ApiException e) {
- System.err.println("Exception when calling ManagementApi#importCoupons");
+ System.err.println("Exception when calling ManagementApi#importLoyaltyCards");
System.err.println("Status code: " + e.getCode());
System.err.println("Reason: " + e.getResponseBody());
System.err.println("Response headers: " + e.getResponseHeaders());
@@ -12127,10 +12943,8 @@ public class Example {
Name | Type | Description | Notes
------------- | ------------- | ------------- | -------------
- **applicationId** | **Long**| The ID of the Application. It is displayed in your Talon.One deployment URL. |
- **campaignId** | **Long**| The ID of the campaign. It is displayed in your Talon.One deployment URL. |
- **skipDuplicates** | **Boolean**| An indicator of whether to skip duplicate coupon values instead of causing an error. Duplicate values are ignored when `skipDuplicates=true`. | [optional]
- **upFile** | **String**| The file containing the data that is being imported. | [optional]
+ **loyaltyProgramId** | **Long**| Identifier of the card-based loyalty program containing the loyalty card. You can get the ID with the [List loyalty programs](https://docs.talon.one/management-api#tag/Loyalty/operation/getLoyaltyPrograms) endpoint. |
+ **upFile** | **String**| The CSV file containing the data that is being imported. | [optional]
### Return type cool
@@ -12149,15 +12963,17 @@ Name | Type | Description | Notes
| Status code | Description | Response headers |
|-------------|-------------|------------------|
| **200** | OK | - |
+| **401** | Unauthorized | - |
+| **404** | Not found | - |
-## importLoyaltyCards
+## importLoyaltyCustomersTiers
-> ModelImport importLoyaltyCards(loyaltyProgramId, upFile)
+> ModelImport importLoyaltyCustomersTiers(loyaltyProgramId, upFile)
-Import loyalty cards
+Import customers into loyalty tiers
-Upload a CSV file containing the loyalty cards that you want to use in your card-based loyalty program. Send the file as multipart data. It contains the following columns for each card: - `identifier` (required): The identifier of the loyalty card, which must match the regular expression `^[A-Za-z0-9._%+@-]+$`. - `state` (required): The state of the loyalty card. It can be `active` or `inactive`. - `customerprofileids` (optional): An array of strings representing the identifiers of the customer profiles linked to the loyalty card. The identifiers should be separated with a semicolon (;). > [!note] We recommend limiting your file size to 500MB. ## Example ```csv identifier,state,customerprofileids 123-456-789AT,active,Alexa001;UserA ```
+Upload a CSV file containing existing customers to be assigned to existing tiers. Send the file as multipart data. > [!important] This endpoint only works with loyalty programs with advanced > tiers (with expiration and downgrade policy) feature enabled. The CSV file should contain the following columns: - `subledgerid` (optional): The ID of the subledger. If this field is empty, the main ledger will be used. - `customerprofileid`: The integration ID of the customer profile to whom the tier should be assigned. - `tiername`: The name of an existing tier to assign to the customer. - `expirydate`: The expiry date of the tier when the tier is reevaluated. It should be a future date. About customer assignment to a tier: - If the customer isn't already in a tier, the customer is assigned to the specified tier during the tier import. - If the customer is already in the tier that's specified in the CSV file, only the expiry date is updated. > [!note] We recommend importing customers into the tier that matches their > current balance. If a customer is imported into a lower tier, any session > or points update automatically upgrades them to the tier they qualify for. To update a customer's tier, you can [add](/management-api#tag/Loyalty/operation/addLoyaltyPoints) or [deduct](/management-api#tag/Loyalty/operation/removeLoyaltyPoints) their loyalty points. You can use the time zone of your choice. It is converted to UTC internally by Talon.One. > [!note] We recommend limiting your file size to 500 MB. ## Example ```csv subledgerid,customerprofileid,tiername,expirydate SUB1,alexa,Gold,2024-03-21T07:32:14Z ,george,Silver,2025-04-16T21:12:37Z SUB2,avocado,Bronze,2026-05-03T11:47:01Z ```
### Example
@@ -12194,13 +13010,13 @@ public class Example {
//manager_auth.setApiKeyPrefix("Token");
ManagementApi apiInstance = new ManagementApi(defaultClient);
- Long loyaltyProgramId = 56L; // Long | Identifier of the card-based loyalty program containing the loyalty card. You can get the ID with the [List loyalty programs](https://docs.talon.one/management-api#tag/Loyalty/operation/getLoyaltyPrograms) endpoint.
- String upFile = "upFile_example"; // String | The file containing the data that is being imported.
+ Long loyaltyProgramId = 56L; // Long | Identifier of the loyalty program. You can get the ID with the [List loyalty programs](https://docs.talon.one/management-api#tag/Loyalty/operation/getLoyaltyPrograms) endpoint.
+ String upFile = "upFile_example"; // String | The CSV file containing the data that is being imported.
try {
- ModelImport result = apiInstance.importLoyaltyCards(loyaltyProgramId, upFile);
+ ModelImport result = apiInstance.importLoyaltyCustomersTiers(loyaltyProgramId, upFile);
System.out.println(result);
} catch (ApiException e) {
- System.err.println("Exception when calling ManagementApi#importLoyaltyCards");
+ System.err.println("Exception when calling ManagementApi#importLoyaltyCustomersTiers");
System.err.println("Status code: " + e.getCode());
System.err.println("Reason: " + e.getResponseBody());
System.err.println("Response headers: " + e.getResponseHeaders());
@@ -12215,8 +13031,8 @@ public class Example {
Name | Type | Description | Notes
------------- | ------------- | ------------- | -------------
- **loyaltyProgramId** | **Long**| Identifier of the card-based loyalty program containing the loyalty card. You can get the ID with the [List loyalty programs](https://docs.talon.one/management-api#tag/Loyalty/operation/getLoyaltyPrograms) endpoint. |
- **upFile** | **String**| The file containing the data that is being imported. | [optional]
+ **loyaltyProgramId** | **Long**| Identifier of the loyalty program. You can get the ID with the [List loyalty programs](https://docs.talon.one/management-api#tag/Loyalty/operation/getLoyaltyPrograms) endpoint. |
+ **upFile** | **String**| The CSV file containing the data that is being imported. | [optional]
### Return type cool
@@ -12235,17 +13051,18 @@ Name | Type | Description | Notes
| Status code | Description | Response headers |
|-------------|-------------|------------------|
| **200** | OK | - |
+| **400** | Bad request | - |
| **401** | Unauthorized | - |
| **404** | Not found | - |
-## importLoyaltyCustomersTiers
+## importLoyaltyJoinDates
-> ModelImport importLoyaltyCustomersTiers(loyaltyProgramId, upFile)
+> ModelImport importLoyaltyJoinDates(loyaltyProgramId, upFile)
-Import customers into loyalty tiers
+Import join dates for a loyalty program
-Upload a CSV file containing existing customers to be assigned to existing tiers. Send the file as multipart data. > [!important] This endpoint only works with loyalty programs with advanced > tiers (with expiration and downgrade policy) feature enabled. The CSV file should contain the following columns: - `subledgerid` (optional): The ID of the subledger. If this field is empty, the main ledger will be used. - `customerprofileid`: The integration ID of the customer profile to whom the tier should be assigned. - `tiername`: The name of an existing tier to assign to the customer. - `expirydate`: The expiration date of the tier when the tier is reevaluated. It should be a future date. About customer assignment to a tier: - If the customer isn't already in a tier, the customer is assigned to the specified tier during the tier import. - If the customer is already in the tier that's specified in the CSV file, only the expiration date is updated. > [!note] We recommend not using this endpoint to update the tier of a customer. To update a customer's tier, you can [add](/management-api#tag/Loyalty/operation/addLoyaltyPoints) or [deduct](/management-api#tag/Loyalty/operation/removeLoyaltyPoints) their loyalty points. You can use the time zone of your choice. It is converted to UTC internally by Talon.One. > [!note] We recommend limiting your file size to 500 MB. ## Example ```csv subledgerid,customerprofileid,tiername,expirydate SUB1,alexa,Gold,2024-03-21T07:32:14Z ,george,Silver,2025-04-16T21:12:37Z SUB2,avocado,Bronze,2026-05-03T11:47:01Z ```
+Upload a CSV file containing customer profile IDs and their join dates for the specified loyalty program. Send the file as multipart data. > [!important] This endpoint only works with profile-based loyalty programs. The CSV file **must** contain the following columns: - `customerprofileid`: The integration ID of the customer profile whose join date you want to update. - `newjoindate`: The new join date for the customer in RFC3339 format. You can use the time zone of your choice. It is converted to UTC internally by Talon.One. **Note**: - Customer profiles must already exist. If a referenced profile does not exist, the import fails with a `400` error. - If a join date already exists for a profile, the uploaded date replaces it. > [!note] We recommend limiting your file size to 500 MB. ## Example ```csv customerprofileid,newjoindate customer1,2024-03-21T07:32:14Z customer2,2025-04-16T21:12:37Z customer3,2026-05-03T11:47:01Z ```
### Example
@@ -12282,13 +13099,13 @@ public class Example {
//manager_auth.setApiKeyPrefix("Token");
ManagementApi apiInstance = new ManagementApi(defaultClient);
- Long loyaltyProgramId = 56L; // Long | Identifier of the loyalty program. You can get the ID with the [List loyalty programs](https://docs.talon.one/management-api#tag/Loyalty/operation/getLoyaltyPrograms) endpoint.
- String upFile = "upFile_example"; // String | The file containing the data that is being imported.
+ Long loyaltyProgramId = 56L; // Long | Identifier of the profile-based loyalty program. You can get the ID with the [List loyalty programs](https://docs.talon.one/management-api#tag/Loyalty/operation/getLoyaltyPrograms) endpoint.
+ String upFile = "upFile_example"; // String | The CSV file containing the data that is being imported.
try {
- ModelImport result = apiInstance.importLoyaltyCustomersTiers(loyaltyProgramId, upFile);
+ ModelImport result = apiInstance.importLoyaltyJoinDates(loyaltyProgramId, upFile);
System.out.println(result);
} catch (ApiException e) {
- System.err.println("Exception when calling ManagementApi#importLoyaltyCustomersTiers");
+ System.err.println("Exception when calling ManagementApi#importLoyaltyJoinDates");
System.err.println("Status code: " + e.getCode());
System.err.println("Reason: " + e.getResponseBody());
System.err.println("Response headers: " + e.getResponseHeaders());
@@ -12303,8 +13120,8 @@ public class Example {
Name | Type | Description | Notes
------------- | ------------- | ------------- | -------------
- **loyaltyProgramId** | **Long**| Identifier of the loyalty program. You can get the ID with the [List loyalty programs](https://docs.talon.one/management-api#tag/Loyalty/operation/getLoyaltyPrograms) endpoint. |
- **upFile** | **String**| The file containing the data that is being imported. | [optional]
+ **loyaltyProgramId** | **Long**| Identifier of the profile-based loyalty program. You can get the ID with the [List loyalty programs](https://docs.talon.one/management-api#tag/Loyalty/operation/getLoyaltyPrograms) endpoint. |
+ **upFile** | **String**| The CSV file containing the data that is being imported. | [optional]
### Return type cool
@@ -12373,7 +13190,7 @@ public class Example {
ManagementApi apiInstance = new ManagementApi(defaultClient);
Long loyaltyProgramId = 56L; // Long | Identifier of the loyalty program. You can get the ID with the [List loyalty programs](https://docs.talon.one/management-api#tag/Loyalty/operation/getLoyaltyPrograms) endpoint.
Boolean notificationsEnabled = true; // Boolean | Indicates whether the points import triggers notifications about its effects. For example, a notification is sent if the import upgrades a customer's tier or offsets their negative points balance. This parameter is optional and defaults to `true`.
- String upFile = "upFile_example"; // String | The file containing the data that is being imported.
+ String upFile = "upFile_example"; // String | The CSV file containing the data that is being imported.
try {
ModelImport result = apiInstance.importLoyaltyPoints(loyaltyProgramId, notificationsEnabled, upFile);
System.out.println(result);
@@ -12395,7 +13212,7 @@ Name | Type | Description | Notes
------------- | ------------- | ------------- | -------------
**loyaltyProgramId** | **Long**| Identifier of the loyalty program. You can get the ID with the [List loyalty programs](https://docs.talon.one/management-api#tag/Loyalty/operation/getLoyaltyPrograms) endpoint. |
**notificationsEnabled** | **Boolean**| Indicates whether the points import triggers notifications about its effects. For example, a notification is sent if the import upgrades a customer's tier or offsets their negative points balance. This parameter is optional and defaults to `true`. | [optional]
- **upFile** | **String**| The file containing the data that is being imported. | [optional]
+ **upFile** | **String**| The CSV file containing the data that is being imported. | [optional]
### Return type cool
@@ -12460,7 +13277,7 @@ public class Example {
ManagementApi apiInstance = new ManagementApi(defaultClient);
Long poolId = 56L; // Long | The ID of the pool. You can find it in the Campaign Manager, in the **Giveaways** section.
- String upFile = "upFile_example"; // String | The file containing the data that is being imported.
+ String upFile = "upFile_example"; // String | The CSV file containing the data that is being imported.
try {
ModelImport result = apiInstance.importPoolGiveaways(poolId, upFile);
System.out.println(result);
@@ -12481,7 +13298,7 @@ public class Example {
Name | Type | Description | Notes
------------- | ------------- | ------------- | -------------
**poolId** | **Long**| The ID of the pool. You can find it in the Campaign Manager, in the **Giveaways** section. |
- **upFile** | **String**| The file containing the data that is being imported. | [optional]
+ **upFile** | **String**| The CSV file containing the data that is being imported. | [optional]
### Return type cool
@@ -12547,7 +13364,7 @@ public class Example {
ManagementApi apiInstance = new ManagementApi(defaultClient);
Long applicationId = 56L; // Long | The ID of the Application. It is displayed in your Talon.One deployment URL.
Long campaignId = 56L; // Long | The ID of the campaign. It is displayed in your Talon.One deployment URL.
- String upFile = "upFile_example"; // String | The file containing the data that is being imported.
+ String upFile = "upFile_example"; // String | The CSV file containing the data that is being imported.
try {
ModelImport result = apiInstance.importReferrals(applicationId, campaignId, upFile);
System.out.println(result);
@@ -12569,7 +13386,7 @@ Name | Type | Description | Notes
------------- | ------------- | ------------- | -------------
**applicationId** | **Long**| The ID of the Application. It is displayed in your Talon.One deployment URL. |
**campaignId** | **Long**| The ID of the campaign. It is displayed in your Talon.One deployment URL. |
- **upFile** | **String**| The file containing the data that is being imported. | [optional]
+ **upFile** | **String**| The CSV file containing the data that is being imported. | [optional]
### Return type cool
@@ -12770,7 +13587,7 @@ Name | Type | Description | Notes
## listAchievements
-> InlineResponse20051 listAchievements(applicationId, campaignId, pageSize, skip, title)
+> InlineResponse20052 listAchievements(applicationId, campaignId, pageSize, skip, title)
List achievements
@@ -12817,7 +13634,7 @@ public class Example {
Long skip = 56L; // Long | The number of items to skip when paging through large result sets.
String title = "title_example"; // String | Filter by the display name for the achievement in the campaign manager. **Note**: If no `title` is provided, all the achievements from the campaign are returned.
try {
- InlineResponse20051 result = apiInstance.listAchievements(applicationId, campaignId, pageSize, skip, title);
+ InlineResponse20052 result = apiInstance.listAchievements(applicationId, campaignId, pageSize, skip, title);
System.out.println(result);
} catch (ApiException e) {
System.err.println("Exception when calling ManagementApi#listAchievements");
@@ -12843,7 +13660,99 @@ Name | Type | Description | Notes
### Return type cool
-[**InlineResponse20051**](InlineResponse20051.md)
+[**InlineResponse20052**](InlineResponse20052.md)
+
+### Authorization
+
+[api_key_v1](../README.md#api_key_v1), [management_key](../README.md#management_key), [manager_auth](../README.md#manager_auth)
+
+### HTTP request headers
+
+- **Content-Type**: Not defined
+- **Accept**: application/json
+
+### HTTP response details
+| Status code | Description | Response headers |
+|-------------|-------------|------------------|
+| **200** | OK | - |
+
+
+## listAchievementsV2
+
+> InlineResponse20053 listAchievementsV2(pageSize, skip, sort, title, applicationId)
+
+List achievements
+
+List all achievements.
+
+### Example
+
+```java
+// Import classes:
+import one.talon.ApiClient;
+import one.talon.ApiException;
+import one.talon.Configuration;
+import one.talon.auth.*;
+import one.talon.models.*;
+import one.talon.api.ManagementApi;
+
+public class Example {
+ public static void main(String[] args) {
+ ApiClient defaultClient = Configuration.getDefaultApiClient();
+ defaultClient.setBasePath("https://yourbaseurl.talon.one");
+
+ // Configure API key authorization: api_key_v1
+ ApiKeyAuth api_key_v1 = (ApiKeyAuth) defaultClient.getAuthentication("api_key_v1");
+ api_key_v1.setApiKey("YOUR API KEY");
+ // Uncomment the following line to set a prefix for the API key, e.g. "Token" (defaults to null)
+ //api_key_v1.setApiKeyPrefix("Token");
+
+ // Configure API key authorization: management_key
+ ApiKeyAuth management_key = (ApiKeyAuth) defaultClient.getAuthentication("management_key");
+ management_key.setApiKey("YOUR API KEY");
+ // Uncomment the following line to set a prefix for the API key, e.g. "Token" (defaults to null)
+ //management_key.setApiKeyPrefix("Token");
+
+ // Configure API key authorization: manager_auth
+ ApiKeyAuth manager_auth = (ApiKeyAuth) defaultClient.getAuthentication("manager_auth");
+ manager_auth.setApiKey("YOUR API KEY");
+ // Uncomment the following line to set a prefix for the API key, e.g. "Token" (defaults to null)
+ //manager_auth.setApiKeyPrefix("Token");
+
+ ManagementApi apiInstance = new ManagementApi(defaultClient);
+ Long pageSize = 50lL; // Long | The number of items in the response.
+ Long skip = 56L; // Long | The number of items to skip when paging through large result sets.
+ String sort = "sort_example"; // String | The field by which results should be sorted. By default, results are sorted in ascending order. To sort them in descending order, prefix the field name with `-`. **Note:** You may not be able to use all fields for sorting. This is due to performance limitations.
+ String title = "title_example"; // String | Filter by the display name of the achievement.
+ Long applicationId = 56L; // Long | Filter by the ID of an Application connected to the achievement.
+ try {
+ InlineResponse20053 result = apiInstance.listAchievementsV2(pageSize, skip, sort, title, applicationId);
+ System.out.println(result);
+ } catch (ApiException e) {
+ System.err.println("Exception when calling ManagementApi#listAchievementsV2");
+ System.err.println("Status code: " + e.getCode());
+ System.err.println("Reason: " + e.getResponseBody());
+ System.err.println("Response headers: " + e.getResponseHeaders());
+ e.printStackTrace();
+ }
+ }
+}
+```
+
+### Parameters
+
+
+Name | Type | Description | Notes
+------------- | ------------- | ------------- | -------------
+ **pageSize** | **Long**| The number of items in the response. | [optional] [default to 50l]
+ **skip** | **Long**| The number of items to skip when paging through large result sets. | [optional]
+ **sort** | **String**| The field by which results should be sorted. By default, results are sorted in ascending order. To sort them in descending order, prefix the field name with `-`. **Note:** You may not be able to use all fields for sorting. This is due to performance limitations. | [optional]
+ **title** | **String**| Filter by the display name of the achievement. | [optional]
+ **applicationId** | **Long**| Filter by the ID of an Application connected to the achievement. | [optional]
+
+### Return type cool
+
+[**InlineResponse20053**](InlineResponse20053.md)
### Authorization
@@ -12858,11 +13767,13 @@ Name | Type | Description | Notes
| Status code | Description | Response headers |
|-------------|-------------|------------------|
| **200** | OK | - |
+| **400** | Bad request | - |
+| **401** | Unauthorized | - |
## listAllRolesV2
-> InlineResponse20046 listAllRolesV2()
+> InlineResponse20047 listAllRolesV2()
List roles
@@ -12904,7 +13815,7 @@ public class Example {
ManagementApi apiInstance = new ManagementApi(defaultClient);
try {
- InlineResponse20046 result = apiInstance.listAllRolesV2();
+ InlineResponse20047 result = apiInstance.listAllRolesV2();
System.out.println(result);
} catch (ApiException e) {
System.err.println("Exception when calling ManagementApi#listAllRolesV2");
@@ -12923,7 +13834,7 @@ This endpoint does not need any parameter.
### Return type cool
-[**InlineResponse20046**](InlineResponse20046.md)
+[**InlineResponse20047**](InlineResponse20047.md)
### Authorization
@@ -12942,7 +13853,7 @@ This endpoint does not need any parameter.
## listApplicationCartItemFilters
-> InlineResponse20048 listApplicationCartItemFilters(applicationId, pageSize, skip, title)
+> InlineResponse20049 listApplicationCartItemFilters(applicationId, pageSize, skip, name)
List Application cart item filters
@@ -12986,9 +13897,9 @@ public class Example {
Long applicationId = 56L; // Long | The ID of the Application. It is displayed in your Talon.One deployment URL.
Long pageSize = 50lL; // Long | The number of items in the response.
Long skip = 56L; // Long | The number of items to skip when paging through large result sets.
- String title = "title_example"; // String | Filter by the display name of the Application cart item filter in the Application. **Note**: If no `title` is provided, all the Application cart item filters in the Application are returned.
+ String name = "name_example"; // String | Filter by the display name of the Application cart item filter in the Application. **Note**: If no `name` is provided, all the Application cart item filters in the Application are returned.
try {
- InlineResponse20048 result = apiInstance.listApplicationCartItemFilters(applicationId, pageSize, skip, title);
+ InlineResponse20049 result = apiInstance.listApplicationCartItemFilters(applicationId, pageSize, skip, name);
System.out.println(result);
} catch (ApiException e) {
System.err.println("Exception when calling ManagementApi#listApplicationCartItemFilters");
@@ -13009,11 +13920,11 @@ Name | Type | Description | Notes
**applicationId** | **Long**| The ID of the Application. It is displayed in your Talon.One deployment URL. |
**pageSize** | **Long**| The number of items in the response. | [optional] [default to 50l]
**skip** | **Long**| The number of items to skip when paging through large result sets. | [optional]
- **title** | **String**| Filter by the display name of the Application cart item filter in the Application. **Note**: If no `title` is provided, all the Application cart item filters in the Application are returned. | [optional]
+ **name** | **String**| Filter by the display name of the Application cart item filter in the Application. **Note**: If no `name` is provided, all the Application cart item filters in the Application are returned. | [optional]
### Return type cool
-[**InlineResponse20048**](InlineResponse20048.md)
+[**InlineResponse20049**](InlineResponse20049.md)
### Authorization
@@ -13032,7 +13943,7 @@ Name | Type | Description | Notes
## listCampaignStoreBudgetLimits
-> InlineResponse20049 listCampaignStoreBudgetLimits(applicationId, campaignId, action, period)
+> InlineResponse20050 listCampaignStoreBudgetLimits(applicationId, campaignId, action, period)
List campaign store budget limits
@@ -13078,7 +13989,7 @@ public class Example {
String action = "action_example"; // String | The action that this budget is limiting.
String period = "period_example"; // String | The period to which the limit applies. **Note**: For budgets with no period, set this to `overall`.
try {
- InlineResponse20049 result = apiInstance.listCampaignStoreBudgetLimits(applicationId, campaignId, action, period);
+ InlineResponse20050 result = apiInstance.listCampaignStoreBudgetLimits(applicationId, campaignId, action, period);
System.out.println(result);
} catch (ApiException e) {
System.err.println("Exception when calling ManagementApi#listCampaignStoreBudgetLimits");
@@ -13103,7 +14014,7 @@ Name | Type | Description | Notes
### Return type cool
-[**InlineResponse20049**](InlineResponse20049.md)
+[**InlineResponse20050**](InlineResponse20050.md)
### Authorization
@@ -13125,7 +14036,7 @@ Name | Type | Description | Notes
## listCatalogItems
-> InlineResponse20039 listCatalogItems(catalogId, pageSize, skip, withTotalResultSize, sku, productNames)
+> InlineResponse20040 listCatalogItems(catalogId, pageSize, skip, withTotalResultSize, sku, productNames)
List items in a catalog
@@ -13173,7 +14084,7 @@ public class Example {
List sku = Arrays.asList(); // List | Filter results by one or more SKUs. Must be exact match.
List productNames = Arrays.asList(); // List | Filter results by one or more product names. Must be exact match.
try {
- InlineResponse20039 result = apiInstance.listCatalogItems(catalogId, pageSize, skip, withTotalResultSize, sku, productNames);
+ InlineResponse20040 result = apiInstance.listCatalogItems(catalogId, pageSize, skip, withTotalResultSize, sku, productNames);
System.out.println(result);
} catch (ApiException e) {
System.err.println("Exception when calling ManagementApi#listCatalogItems");
@@ -13200,7 +14111,7 @@ Name | Type | Description | Notes
### Return type cool
-[**InlineResponse20039**](InlineResponse20039.md)
+[**InlineResponse20040**](InlineResponse20040.md)
### Authorization
@@ -13501,7 +14412,7 @@ Name | Type | Description | Notes
## listStores
-> InlineResponse20047 listStores(applicationId, pageSize, skip, sort, withTotalResultSize, campaignId, name, integrationId, query)
+> InlineResponse20048 listStores(applicationId, pageSize, skip, sort, withTotalResultSize, campaignId, name, integrationId, query)
List stores
@@ -13552,7 +14463,7 @@ public class Example {
String integrationId = "integrationId_example"; // String | The integration ID of the store.
String query = "query_example"; // String | Filter results by `name` or `integrationId`.
try {
- InlineResponse20047 result = apiInstance.listStores(applicationId, pageSize, skip, sort, withTotalResultSize, campaignId, name, integrationId, query);
+ InlineResponse20048 result = apiInstance.listStores(applicationId, pageSize, skip, sort, withTotalResultSize, campaignId, name, integrationId, query);
System.out.println(result);
} catch (ApiException e) {
System.err.println("Exception when calling ManagementApi#listStores");
@@ -13582,7 +14493,7 @@ Name | Type | Description | Notes
### Return type cool
-[**InlineResponse20047**](InlineResponse20047.md)
+[**InlineResponse20048**](InlineResponse20048.md)
### Authorization
@@ -15410,7 +16321,7 @@ Name | Type | Description | Notes
## summarizeCampaignStoreBudget
-> InlineResponse20050 summarizeCampaignStoreBudget(applicationId, campaignId)
+> InlineResponse20051 summarizeCampaignStoreBudget(applicationId, campaignId)
Get summary of campaign store budgets
@@ -15454,7 +16365,7 @@ public class Example {
Long applicationId = 56L; // Long | The ID of the Application. It is displayed in your Talon.One deployment URL.
Long campaignId = 56L; // Long | The ID of the campaign. It is displayed in your Talon.One deployment URL.
try {
- InlineResponse20050 result = apiInstance.summarizeCampaignStoreBudget(applicationId, campaignId);
+ InlineResponse20051 result = apiInstance.summarizeCampaignStoreBudget(applicationId, campaignId);
System.out.println(result);
} catch (ApiException e) {
System.err.println("Exception when calling ManagementApi#summarizeCampaignStoreBudget");
@@ -15477,7 +16388,7 @@ Name | Type | Description | Notes
### Return type cool
-[**InlineResponse20050**](InlineResponse20050.md)
+[**InlineResponse20051**](InlineResponse20051.md)
### Authorization
@@ -15769,6 +16680,95 @@ Name | Type | Description | Notes
| **404** | Not found | - |
+## updateAchievementV2
+
+> AchievementV2 updateAchievementV2(achievementId, body)
+
+Update achievement
+
+Update the details of a specific achievement.
+
+### Example
+
+```java
+// Import classes:
+import one.talon.ApiClient;
+import one.talon.ApiException;
+import one.talon.Configuration;
+import one.talon.auth.*;
+import one.talon.models.*;
+import one.talon.api.ManagementApi;
+
+public class Example {
+ public static void main(String[] args) {
+ ApiClient defaultClient = Configuration.getDefaultApiClient();
+ defaultClient.setBasePath("https://yourbaseurl.talon.one");
+
+ // Configure API key authorization: api_key_v1
+ ApiKeyAuth api_key_v1 = (ApiKeyAuth) defaultClient.getAuthentication("api_key_v1");
+ api_key_v1.setApiKey("YOUR API KEY");
+ // Uncomment the following line to set a prefix for the API key, e.g. "Token" (defaults to null)
+ //api_key_v1.setApiKeyPrefix("Token");
+
+ // Configure API key authorization: management_key
+ ApiKeyAuth management_key = (ApiKeyAuth) defaultClient.getAuthentication("management_key");
+ management_key.setApiKey("YOUR API KEY");
+ // Uncomment the following line to set a prefix for the API key, e.g. "Token" (defaults to null)
+ //management_key.setApiKeyPrefix("Token");
+
+ // Configure API key authorization: manager_auth
+ ApiKeyAuth manager_auth = (ApiKeyAuth) defaultClient.getAuthentication("manager_auth");
+ manager_auth.setApiKey("YOUR API KEY");
+ // Uncomment the following line to set a prefix for the API key, e.g. "Token" (defaults to null)
+ //manager_auth.setApiKeyPrefix("Token");
+
+ ManagementApi apiInstance = new ManagementApi(defaultClient);
+ Long achievementId = 56L; // Long | The ID of the achievement. You can get this ID with the [List achievement](https://docs.talon.one/management-api#tag/Achievements/operation/listAchievementsV2) endpoint.
+ UpdateAchievementV2 body = new UpdateAchievementV2(); // UpdateAchievementV2 | body
+ try {
+ AchievementV2 result = apiInstance.updateAchievementV2(achievementId, body);
+ System.out.println(result);
+ } catch (ApiException e) {
+ System.err.println("Exception when calling ManagementApi#updateAchievementV2");
+ System.err.println("Status code: " + e.getCode());
+ System.err.println("Reason: " + e.getResponseBody());
+ System.err.println("Response headers: " + e.getResponseHeaders());
+ e.printStackTrace();
+ }
+ }
+}
+```
+
+### Parameters
+
+
+Name | Type | Description | Notes
+------------- | ------------- | ------------- | -------------
+ **achievementId** | **Long**| The ID of the achievement. You can get this ID with the [List achievement](https://docs.talon.one/management-api#tag/Achievements/operation/listAchievementsV2) endpoint. |
+ **body** | [**UpdateAchievementV2**](UpdateAchievementV2.md)| body |
+
+### Return type cool
+
+[**AchievementV2**](AchievementV2.md)
+
+### Authorization
+
+[api_key_v1](../README.md#api_key_v1), [management_key](../README.md#management_key), [manager_auth](../README.md#manager_auth)
+
+### HTTP request headers
+
+- **Content-Type**: application/json
+- **Accept**: application/json
+
+### HTTP response details
+| Status code | Description | Response headers |
+|-------------|-------------|------------------|
+| **200** | OK | - |
+| **400** | Bad request | - |
+| **401** | Unauthorized | - |
+| **404** | Not found | - |
+
+
## updateAdditionalCost
> AccountAdditionalCost updateAdditionalCost(additionalCostId, body)
diff --git a/docs/MapSelectorStep.md b/docs/MapSelectorStep.md
new file mode 100644
index 00000000..6ed58a83
--- /dev/null
+++ b/docs/MapSelectorStep.md
@@ -0,0 +1,22 @@
+
+
+# MapSelectorStep
+
+Transforms each item using an expression.
+## Properties
+
+Name | Type | Description | Notes
+------------ | ------------- | ------------- | -------------
+**type** | [**TypeEnum**](#TypeEnum) | A step discriminator of type `map`. |
+**expression** | **String** | The attribute path each item is mapped to. |
+
+
+
+## Enum: TypeEnum
+
+Name | Value
+---- | -----
+MAP | "map"
+
+
+
diff --git a/docs/MultipleAudiencesItem.md b/docs/MultipleAudiencesItem.md
index ec8347de..718cb76c 100644
--- a/docs/MultipleAudiencesItem.md
+++ b/docs/MultipleAudiencesItem.md
@@ -9,6 +9,7 @@ Name | Type | Description | Notes
**id** | **Long** | The internal ID of this entity. |
**created** | [**OffsetDateTime**](OffsetDateTime.md) | The time this entity was created. |
**name** | **String** | The human-friendly display name for this audience. |
+**subscribedApplicationsIds** | **List<Long>** | A list of the IDs of the Applications that are connected to this audience. | [optional]
**integrationId** | **String** | The ID of this audience in the third-party integration. |
**status** | [**StatusEnum**](#StatusEnum) | Indicates whether the audience is new, updated or unmodified by the request. |
diff --git a/docs/NewApplication.md b/docs/NewApplication.md
index c04e5d4f..91c2d42c 100644
--- a/docs/NewApplication.md
+++ b/docs/NewApplication.md
@@ -22,6 +22,7 @@ Name | Type | Description | Notes
**defaultDiscountAdditionalCostPerItemScope** | [**DefaultDiscountAdditionalCostPerItemScopeEnum**](#DefaultDiscountAdditionalCostPerItemScopeEnum) | The default scope to apply `setDiscountPerItem` effects on if no scope was provided with the effect. | [optional]
**key** | **String** | Hex key for HMAC-signing API calls as coming from this application (16 hex digits). | [optional]
**enableCampaignStateManagement** | **Boolean** | Indicates whether the campaign staging and revisions feature is enabled for the Application. **Important:** After this feature is enabled, it cannot be disabled. | [optional]
+**bestPriorPriceSettings** | [**BestPriorPriceSettings**](BestPriorPriceSettings.md) | | [optional]
diff --git a/docs/NewAudience.md b/docs/NewAudience.md
index 3ef81ff9..bd2f4b47 100644
--- a/docs/NewAudience.md
+++ b/docs/NewAudience.md
@@ -9,6 +9,7 @@ Name | Type | Description | Notes
**name** | **String** | The human-friendly display name for this audience. |
**sandbox** | **Boolean** | Indicates if this is a live or sandbox Application. | [optional]
**description** | **String** | A description of the audience. | [optional]
+**subscribedApplicationsIds** | **List<Long>** | A list of the IDs of the Applications that are connected to this audience. | [optional]
**integration** | **String** | The Talon.One-supported [3rd-party platform](https://docs.talon.one/docs/dev/technology-partners/overview) that this audience was created in. For example, `mParticle`, `Segment`, `Shopify`, `Braze`, or `Iterable`. **Note:** If you do not integrate with any of these platforms, do not use this property. | [optional]
**integrationId** | **String** | The ID of this audience in the third-party integration. **Note:** To create an audience that doesn't come from a 3rd party platform, do not use this property. | [optional]
**createdIn3rdParty** | **Boolean** | Determines if this audience is a 3rd party audience or not. | [optional]
diff --git a/docs/NewCampaign.md b/docs/NewCampaign.md
index d5335705..6e67fedd 100644
--- a/docs/NewCampaign.md
+++ b/docs/NewCampaign.md
@@ -47,6 +47,7 @@ LOYALTY | "loyalty"
GIVEAWAYS | "giveaways"
STRIKETHROUGH | "strikethrough"
ACHIEVEMENTS | "achievements"
+ADVANCEDEVENTS | "advancedEvents"
diff --git a/docs/NewCampaignTemplate.md b/docs/NewCampaignTemplate.md
index 5b5d1f19..6668ea04 100644
--- a/docs/NewCampaignTemplate.md
+++ b/docs/NewCampaignTemplate.md
@@ -46,6 +46,7 @@ LOYALTY | "loyalty"
GIVEAWAYS | "giveaways"
STRIKETHROUGH | "strikethrough"
ACHIEVEMENTS | "achievements"
+ADVANCEDEVENTS | "advancedEvents"
diff --git a/docs/NewCoupons.md b/docs/NewCoupons.md
index cbaceaef..c05aeb48 100644
--- a/docs/NewCoupons.md
+++ b/docs/NewCoupons.md
@@ -13,6 +13,7 @@ Name | Type | Description | Notes
**expiryDate** | [**OffsetDateTime**](OffsetDateTime.md) | Expiration date of the coupon. Coupon never expires if this is omitted. | [optional]
**limits** | [**List<LimitConfig>**](LimitConfig.md) | Limits configuration for a coupon. These limits will override the limits set from the campaign. **Note:** Only usable when creating a single coupon which is not tied to a specific recipient. Only per-profile limits are allowed to be configured. | [optional]
**numberOfCoupons** | **Long** | The number of new coupon codes to generate for the campaign. Must be at least 1. |
+**batchId** | **String** | The batch ID that all coupons created by the request will bear. If omitted, a batch ID is generated automatically. | [optional]
**uniquePrefix** | **String** | **DEPRECATED** To create more than 20,000 coupons in one request, use [Create coupons asynchronously](https://docs.talon.one/management-api#tag/Coupons/operation/createCouponsAsync) endpoint. | [optional]
**attributes** | [**Object**](.md) | Arbitrary properties associated with this item. | [optional]
**recipientIntegrationId** | **String** | The integration ID for this coupon's beneficiary's profile. | [optional]
@@ -20,6 +21,8 @@ Name | Type | Description | Notes
**couponPattern** | **String** | The pattern used to generate coupon codes. The character `#` is a placeholder and is replaced by a random character from the `validCharacters` set. | [optional]
**isReservationMandatory** | **Boolean** | An indication of whether the code can be redeemed only if it has been reserved first. | [optional]
**implicitlyReserved** | **Boolean** | An indication of whether the coupon is implicitly reserved for all customers. | [optional]
+**supportRequestId** | **Long** | The identifier of the support request to link to the coupon creation. The request must exist and not yet be processed. | [optional]
+**supportRequestNote** | **String** | A note recorded when the linked support request is approved or rejected. Applied when `supportRequestId` is provided. | [optional]
diff --git a/docs/NewCouponsForMultipleRecipients.md b/docs/NewCouponsForMultipleRecipients.md
index f3bbb939..afd36c5b 100644
--- a/docs/NewCouponsForMultipleRecipients.md
+++ b/docs/NewCouponsForMultipleRecipients.md
@@ -11,6 +11,7 @@ Name | Type | Description | Notes
**reservationLimit** | **Long** | The number of reservations that can be made with this coupon code. | [optional]
**startDate** | [**OffsetDateTime**](OffsetDateTime.md) | Timestamp at which point the coupon becomes valid. | [optional]
**expiryDate** | [**OffsetDateTime**](OffsetDateTime.md) | Expiration date of the coupon. Coupon never expires if this is omitted. | [optional]
+**batchId** | **String** | The batch ID that all coupons created by the request will bear. If omitted, a batch ID is generated automatically. | [optional]
**attributes** | [**Object**](.md) | Arbitrary properties associated with this item. | [optional]
**recipientsIntegrationIds** | **List<String>** | The integration IDs for recipients. |
**validCharacters** | **List<String>** | List of characters used to generate the random parts of a code. By default, the list of characters is equivalent to the `[A-Z, 0-9]` regular expression. | [optional]
diff --git a/docs/NewCustomerSession.md b/docs/NewCustomerSession.md
index 0e000914..b9fedaac 100644
--- a/docs/NewCustomerSession.md
+++ b/docs/NewCustomerSession.md
@@ -9,7 +9,7 @@ Name | Type | Description | Notes
**profileId** | **String** | ID of the customer profile set by your integration layer. **Note:** If the customer does not yet have a known `profileId`, we recommend you use a guest `profileId`. | [optional]
**coupon** | **String** | Any coupon code entered. | [optional]
**referral** | **String** | Any referral code entered. | [optional]
-**state** | [**StateEnum**](#StateEnum) | Indicates the current state of the session. Sessions can be created as `open` or `closed`. The state transitions are: 1. `open` → `closed` 2. `open` → `cancelled` 3. `closed` → `cancelled` or `partially_returned` 4. `partially_returned` → `cancelled` For more information, see [Customer session states](https://docs.talon.one/docs/dev/concepts/entities/customer-sessions). | [optional]
+**state** | [**StateEnum**](#StateEnum) | Indicates the current state of the session. Sessions can be created as `open` or `closed`. The state transitions are: 1. `open` -> `closed` 2. `open` -> `cancelled` 3. `closed` -> `cancelled` or `partially_returned` 4. `partially_returned` -> `cancelled` For more information, see [Customer session states](https://docs.talon.one/docs/dev/concepts/entities/customer-sessions). | [optional]
**cartItems** | [**List<CartItem>**](CartItem.md) | Serialized JSON representation. | [optional]
**identifiers** | **List<String>** | Session custom identifiers that you can set limits on or use inside your rules. For example, you can use IP addresses as identifiers to potentially identify devices and limit discounts abuse in case of customers creating multiple accounts. See the [tutorial](https://docs.talon.one/docs/dev/tutorials/using-identifiers). | [optional]
**total** | [**BigDecimal**](BigDecimal.md) | The total sum of the cart in one session. | [optional]
diff --git a/docs/NewCustomerSessionV2.md b/docs/NewCustomerSessionV2.md
index fea87e4d..3423b8c5 100644
--- a/docs/NewCustomerSessionV2.md
+++ b/docs/NewCustomerSessionV2.md
@@ -13,7 +13,8 @@ Name | Type | Description | Notes
**couponCodes** | **List<String>** | Any coupon codes entered. **Important - for requests only**: - If you [create a coupon budget](https://docs.talon.one/docs/product/campaigns/settings/managing-campaign-budgets/#budget-types) for your campaign, ensure the session contains a coupon code by the time you close it. - In requests where `dry=false`, providing an empty array discards any previous coupons. To avoid this, omit the parameter entirely. | [optional]
**referralCode** | **String** | Any referral code entered. **Important - for requests only**: - If you [create a referral budget](https://docs.talon.one/docs/product/campaigns/settings/managing-campaign-budgets/#budget-types) for your campaign, ensure the session contains a referral code by the time you close it. - In requests where `dry=false`, providing an empty value discards the previous referral code. To avoid this, omit the parameter entirely. | [optional]
**loyaltyCards** | **List<String>** | Identifier of a loyalty card. | [optional]
-**state** | [**StateEnum**](#StateEnum) | Indicates the current state of the session. Sessions can be created as `open` or `closed`. The state transitions are: 1. `open` → `closed` 2. `open` → `cancelled` 3. Either: - `closed` → `cancelled` (**only** via [Update customer session](https://docs.talon.one/integration-api#tag/Customer-sessions/operation/updateCustomerSessionV2)) or - `closed` → `partially_returned` (**only** via [Return cart items](https://docs.talon.one/integration-api#tag/Customer-sessions/operation/returnCartItems)) - `closed` → `open` (**only** via [Reopen customer session](https://docs.talon.one/integration-api#tag/Customer-sessions/operation/reopenCustomerSession)) 4. `partially_returned` → `cancelled` For more information, see [Customer session states](https://docs.talon.one/docs/dev/concepts/entities/customer-sessions). | [optional]
+**rewardIntegrationIds** | **List<String>** | The integration IDs of the unlocked rewards that can be used in this session. | [optional]
+**state** | [**StateEnum**](#StateEnum) | Indicates the current state of the session. Sessions can be created as `open` or `closed`. The state transitions are: 1. `open` -> `closed` 2. `open` -> `cancelled` 3. Either: - `closed` -> `cancelled` (**only** via [Update customer session](https://docs.talon.one/integration-api#tag/Customer-sessions/operation/updateCustomerSessionV2)) or - `closed` -> `partially_returned` (**only** via [Return cart items](https://docs.talon.one/integration-api#tag/Customer-sessions/operation/returnCartItems)) - `closed` -> `open` (**only** via [Reopen customer session](https://docs.talon.one/integration-api#tag/Customer-sessions/operation/reopenCustomerSession)) 4. `partially_returned` -> `cancelled` For more information, see [Customer session states](https://docs.talon.one/docs/dev/concepts/entities/customer-sessions). | [optional]
**cartItems** | [**List<CartItem>**](CartItem.md) | The items to add to this session. **Do not exceed 1000 items** and ensure the sum of all cart item's `quantity` **does not exceed 10.000** per request. | [optional]
**experimentVariantAllocations** | [**List<ExperimentVariantAllocation>**](ExperimentVariantAllocation.md) | The experiment variant allocations to add to this session. | [optional]
**additionalCosts** | [**Map<String, AdditionalCost>**](AdditionalCost.md) | Use this property to set a value for the additional costs of this session, such as a shipping cost. They must be created in the Campaign Manager before you set them with this property. See [Managing additional costs](https://docs.talon.one/docs/product/account/dev-tools/managing-additional-costs). | [optional]
diff --git a/docs/NewDigitalPass.md b/docs/NewDigitalPass.md
new file mode 100644
index 00000000..164d409b
--- /dev/null
+++ b/docs/NewDigitalPass.md
@@ -0,0 +1,26 @@
+
+
+# NewDigitalPass
+
+## Properties
+
+Name | Type | Description | Notes
+------------ | ------------- | ------------- | -------------
+**loyaltyProgramId** | **Long** | The ID of the associated loyalty program. |
+**passTemplateId** | **String** | The ID of the digital pass template used to generate the pass. |
+**profileId** | **String** | The integration ID of the customer profile the pass is issued for. |
+**loyaltyCardId** | **String** | The identifier of the loyalty card the pass is issued for. **Note**: Only applicable for card-based loyalty programs. | [optional]
+**platform** | [**PlatformEnum**](#PlatformEnum) | The wallet platform the pass is generated for. |
+**attributes** | **Map<String, String>** | A map of placeholder values that you provide to fill in the pass template. These values are not validated against the template. | [optional]
+
+
+
+## Enum: PlatformEnum
+
+Name | Value
+---- | -----
+APPLE | "apple"
+GOOGLE | "google"
+
+
+
diff --git a/docs/NewEvent.md b/docs/NewEvent.md
index daa4173c..59a9512c 100644
--- a/docs/NewEvent.md
+++ b/docs/NewEvent.md
@@ -8,7 +8,7 @@ Name | Type | Description | Notes
------------ | ------------- | ------------- | -------------
**profileId** | **String** | ID of the customer profile set by your integration layer. **Note:** If the customer does not yet have a known `profileId`, we recommend you use a guest `profileId`. | [optional]
**storeIntegrationId** | **String** | The integration ID of the store. You choose this ID when you create a store. | [optional]
-**type** | **String** | A string representing the event. Must not be a reserved event name. |
+**type** | **String** | The name of the event. Must be a [custom event](https://docs.talon.one/docs/dev/concepts/entities/events#custom-events), not a built-in event. |
**attributes** | [**Object**](.md) | Arbitrary additional JSON data associated with the event. |
**sessionId** | **String** | The ID of the session that this event occurred in. |
diff --git a/docs/NewEventV3Entity.md b/docs/NewEventV3Entity.md
new file mode 100644
index 00000000..438f44ff
--- /dev/null
+++ b/docs/NewEventV3Entity.md
@@ -0,0 +1,12 @@
+
+
+# NewEventV3Entity
+
+## Properties
+
+Name | Type | Description | Notes
+------------ | ------------- | ------------- | -------------
+**integrationId** | **String** | The unique ID of the event. Only one event with this ID can be registered. |
+
+
+
diff --git a/docs/NewExperiment.md b/docs/NewExperiment.md
index d1a681a9..b9061303 100644
--- a/docs/NewExperiment.md
+++ b/docs/NewExperiment.md
@@ -8,6 +8,19 @@ Name | Type | Description | Notes
------------ | ------------- | ------------- | -------------
**isVariantAssignmentExternal** | **Boolean** | The source of the assignment. - false - The variant assignment is handled internally by Talon.One. - true - The variant assignment is handled externally. |
**campaign** | [**NewCampaign**](NewCampaign.md) | |
+**goalType** | [**GoalTypeEnum**](#GoalTypeEnum) | The goal of the experiment. Determines which single metric is used to decide the winning variant. When set to `other`, multiple metrics are used. |
+**goalDescription** | **String** | A description of the experiment goal. Provides context for the AI summary and helps it interpret the outcome of the experiment against the stated goal. | [optional]
+
+
+
+## Enum: GoalTypeEnum
+
+Name | Value
+---- | -----
+OTHER | "other"
+MAXIMIZE_REVENUE | "maximize_revenue"
+MAXIMIZE_ITEMS_SOLD | "maximize_items_sold"
+OPTIMIZE_DISCOUNT_EFFICIENCY | "optimize_discount_efficiency"
diff --git a/docs/NewIntegrationHubCoupons.md b/docs/NewIntegrationHubCoupons.md
new file mode 100644
index 00000000..4b05dac7
--- /dev/null
+++ b/docs/NewIntegrationHubCoupons.md
@@ -0,0 +1,29 @@
+
+
+# NewIntegrationHubCoupons
+
+## Properties
+
+Name | Type | Description | Notes
+------------ | ------------- | ------------- | -------------
+**usageLimit** | **Long** | The number of times the coupon code can be redeemed. `0` means unlimited redemptions but any campaign usage limits will still apply. |
+**discountLimit** | [**BigDecimal**](BigDecimal.md) | The total discount value that the code can give. Typically used to represent a gift card value. | [optional]
+**reservationLimit** | **Long** | The number of reservations that can be made with this coupon code. | [optional]
+**startDate** | [**OffsetDateTime**](OffsetDateTime.md) | Timestamp at which point the coupon becomes valid. | [optional]
+**expiryDate** | [**OffsetDateTime**](OffsetDateTime.md) | Expiration date of the coupon. Coupon never expires if this is omitted. | [optional]
+**limits** | [**List<LimitConfig>**](LimitConfig.md) | Limits configuration for a coupon. These limits will override the limits set from the campaign. **Note:** Only usable when creating a single coupon which is not tied to a specific recipient. Only per-profile limits are allowed to be configured. | [optional]
+**applicationId** | **Long** | The ID of the Application the coupons will belong to. |
+**campaignId** | **Long** | The ID of the Campaign the coupons will belong to. |
+**batchId** | **String** | An identifier for the batch of coupons being created. |
+**numberOfCoupons** | **Long** | The number of new coupon codes to generate for the campaign. Must be at least 1. |
+**attributes** | [**Object**](.md) | Arbitrary properties associated with this item. | [optional]
+**validCharacters** | **List<String>** | List of characters used to generate the random parts of a code. By default, the list of characters is equivalent to the `[A-Z, 0-9]` regular expression. | [optional]
+**couponPattern** | **String** | The pattern used to generate coupon codes. The character `#` is a placeholder and is replaced by a random character from the `validCharacters` set. | [optional]
+**isReservationMandatory** | **Boolean** | An indication of whether the code can be redeemed only if it has been reserved first. | [optional]
+**implicitlyReserved** | **Boolean** | An indication of whether the coupon is implicitly reserved for all customers. | [optional]
+**recipientIntegrationId** | **String** | The integration ID for this coupon's beneficiary's profile. | [optional]
+**supportRequestId** | **Long** | The identifier of the support request to link to the coupon creation. The request must exist and not yet be processed. | [optional]
+**supportRequestNote** | **String** | A note recorded when the linked support request is approved or rejected. Applied when `supportRequestId` is provided. | [optional]
+
+
+
diff --git a/docs/NewInternalAudience.md b/docs/NewInternalAudience.md
index cc32a364..3154a2d9 100644
--- a/docs/NewInternalAudience.md
+++ b/docs/NewInternalAudience.md
@@ -9,6 +9,7 @@ Name | Type | Description | Notes
**name** | **String** | The human-friendly display name for this audience. |
**sandbox** | **Boolean** | Indicates if this is a live or sandbox Application. | [optional]
**description** | **String** | A description of the audience. | [optional]
+**subscribedApplicationsIds** | **List<Long>** | A list of the IDs of the Applications that are connected to this audience. | [optional]
diff --git a/docs/NewMCPOAuthClient.md b/docs/NewMCPOAuthClient.md
new file mode 100644
index 00000000..6165282f
--- /dev/null
+++ b/docs/NewMCPOAuthClient.md
@@ -0,0 +1,13 @@
+
+
+# NewMCPOAuthClient
+
+## Properties
+
+Name | Type | Description | Notes
+------------ | ------------- | ------------- | -------------
+**clientName** | **String** | Human-readable name for the OAuth2 client. |
+**redirectUris** | **List<String>** | List of allowed redirect URIs for the authorization code flow. At least one URI is required. |
+
+
+
diff --git a/docs/NewMultipleAudiencesItem.md b/docs/NewMultipleAudiencesItem.md
index 2906b597..fe8cddd7 100644
--- a/docs/NewMultipleAudiencesItem.md
+++ b/docs/NewMultipleAudiencesItem.md
@@ -7,6 +7,7 @@
Name | Type | Description | Notes
------------ | ------------- | ------------- | -------------
**name** | **String** | The human-friendly display name for this audience. |
+**subscribedApplicationsIds** | **List<Long>** | A list of the IDs of the Applications that are connected to this audience. | [optional]
**integrationId** | **String** | The ID of this audience in the third-party integration. | [optional]
diff --git a/docs/NewRevisionVersion.md b/docs/NewRevisionVersion.md
index dbcd3f8b..cae358ba 100644
--- a/docs/NewRevisionVersion.md
+++ b/docs/NewRevisionVersion.md
@@ -32,6 +32,7 @@ LOYALTY | "loyalty"
GIVEAWAYS | "giveaways"
STRIKETHROUGH | "strikethrough"
ACHIEVEMENTS | "achievements"
+ADVANCEDEVENTS | "advancedEvents"
diff --git a/docs/NewReward.md b/docs/NewReward.md
index aa736857..cfea691a 100644
--- a/docs/NewReward.md
+++ b/docs/NewReward.md
@@ -11,6 +11,10 @@ Name | Type | Description | Notes
**description** | **String** | A description of the reward. | [optional]
**applicationIds** | **List<Long>** | The IDs of the Applications this reward is connected to. **Note**: Currently, a reward can only be connected to one Application. |
**sandbox** | **Boolean** | Indicates if this is a live or sandbox reward. Rewards of a given type can only be connected to Applications of the same type. |
+**eligibilityConditions** | [**Rule**](Rule.md) | | [optional]
+**rule** | [**Rule**](Rule.md) | | [optional]
+**bindings** | [**List<Binding>**](Binding.md) | A list of named variables created before the reward's rules are evaluated. Each binding pairs a name with a talang expression. The expression is evaluated once and its result is available by name in any rule condition or effect. Bindings must be defined outside of individual rules. | [optional]
+**pointsRequired** | [**List<RewardPointsRequired>**](RewardPointsRequired.md) | The loyalty points required to activate the reward. Each object defines the specific loyalty program and subledger from which points are deducted when activating the reward. **Note:** When creating a reward, the `id` of each entry is ignored and a new entry is always created. | [optional]
diff --git a/docs/NewRiskNotification.md b/docs/NewRiskNotification.md
new file mode 100644
index 00000000..0cd35191
--- /dev/null
+++ b/docs/NewRiskNotification.md
@@ -0,0 +1,45 @@
+
+
+# NewRiskNotification
+
+Data for creating a new risk notification.
+## Properties
+
+Name | Type | Description | Notes
+------------ | ------------- | ------------- | -------------
+**entity** | [**EntityEnum**](#EntityEnum) | The entity type to analyze within the given time frame. |
+**activity** | [**ActivityEnum**](#ActivityEnum) | The activity metric to analyze within the given entity. |
+**timeFrame** | [**TimeFrameEnum**](#TimeFrameEnum) | The rolling time window for risk evaluation. |
+
+
+
+## Enum: EntityEnum
+
+Name | Value
+---- | -----
+PROFILE | "customer_profile"
+SESSION | "customer_session"
+
+
+
+## Enum: ActivityEnum
+
+Name | Value
+---- | -----
+LOYALTY_POINTS_EARNED | "loyalty_points_earned"
+DISCOUNTED_AMOUNT | "discounted_amount"
+COMPLETED_ORDERS | "completed_orders"
+COUPON_ATTEMPTS | "coupon_attempts"
+
+
+
+## Enum: TimeFrameEnum
+
+Name | Value
+---- | -----
+_1D | "1D"
+_7D | "7D"
+_30D | "30D"
+
+
+
diff --git a/docs/PassthroughBlock.md b/docs/PassthroughBlock.md
new file mode 100644
index 00000000..5e4f0197
--- /dev/null
+++ b/docs/PassthroughBlock.md
@@ -0,0 +1,23 @@
+
+
+# PassthroughBlock
+
+A block representing a Talang expression that could not be mapped to a typed block. The expression is preserved in its raw Talang array form for diagnostic and round-trip purposes.
+## Properties
+
+Name | Type | Description | Notes
+------------ | ------------- | ------------- | -------------
+**id** | **String** | Unique identifier for this block. | [optional] [readonly]
+**type** | [**TypeEnum**](#TypeEnum) | The type discriminator for this block. |
+**expression** | **List<Object>** | The raw Talang expression as an array. For a function call, the first element is the function name and subsequent elements are its arguments. For any other expression (for example a bare attribute path or a literal value), this is a single-element array containing that value. |
+
+
+
+## Enum: TypeEnum
+
+Name | Value
+---- | -----
+PASSTHROUGH | "passthrough"
+
+
+
diff --git a/docs/RedeemLoyaltyPointsBlock.md b/docs/RedeemLoyaltyPointsBlock.md
new file mode 100644
index 00000000..1b1fe140
--- /dev/null
+++ b/docs/RedeemLoyaltyPointsBlock.md
@@ -0,0 +1,20 @@
+
+
+# RedeemLoyaltyPointsBlock
+
+A block that deducts a specified amount of points from a customer's loyalty program balance, optionally from a named subledger.
+## Properties
+
+Name | Type | Description | Notes
+------------ | ------------- | ------------- | -------------
+**id** | **String** | Unique identifier for this block. | [optional] [readonly]
+**type** | **String** | Identifies the block variant and determines which additional properties are present in it. |
+**tags** | **List<String>** | Semantic labels attached to this block. | [optional] [readonly]
+**program** | [**RedeemLoyaltyPointsBlockProgram**](RedeemLoyaltyPointsBlockProgram.md) | |
+**subledger** | **String** | The name of the subledger to deduct points from. Can be empty if this block deducts from the loyalty program's main ledger instead of a subledger. |
+**value** | [**Object**](.md) | Number of points to deduct. Either a numeric scalar or a `{{expression}}` string that resolves to a number at evaluation time. |
+**name** | **String** | A custom description recorded as the reason for the point deduction. | [optional]
+**onFailure** | **List<Object>** | Promotion blocks evaluated when this block fails or returns false. | [optional]
+
+
+
diff --git a/docs/RedeemLoyaltyPointsBlockProgram.md b/docs/RedeemLoyaltyPointsBlockProgram.md
new file mode 100644
index 00000000..539232c1
--- /dev/null
+++ b/docs/RedeemLoyaltyPointsBlockProgram.md
@@ -0,0 +1,15 @@
+
+
+# RedeemLoyaltyPointsBlockProgram
+
+The loyalty program whose balance points are deducted from.
+## Properties
+
+Name | Type | Description | Notes
+------------ | ------------- | ------------- | -------------
+**id** | **Long** | The ID of the loyalty program. |
+**name** | **String** | The internal name of the loyalty program. |
+**title** | **String** | The display name of the loyalty program. |
+
+
+
diff --git a/docs/RedeemReferralEffectProps.md b/docs/RedeemReferralEffectProps.md
index 150d11b9..db544286 100644
--- a/docs/RedeemReferralEffectProps.md
+++ b/docs/RedeemReferralEffectProps.md
@@ -2,7 +2,7 @@
# RedeemReferralEffectProps
-This effect is **deprecated**. The properties specific to the \"redeemReferral\" effect. This gets triggered whenever the referral code is valid, and a rule was triggered that contains a \"redeem referral\" effect.
+This effect is **deprecated**. It has been replaced by the `acceptReferral` effect. This effect indicates that the referral code is valid and has been redeemed.
## Properties
Name | Type | Description | Notes
diff --git a/docs/RedeemableCoupon.md b/docs/RedeemableCoupon.md
new file mode 100644
index 00000000..6065a9a8
--- /dev/null
+++ b/docs/RedeemableCoupon.md
@@ -0,0 +1,16 @@
+
+
+# RedeemableCoupon
+
+## Properties
+
+Name | Type | Description | Notes
+------------ | ------------- | ------------- | -------------
+**couponId** | **Long** | The internal ID of the coupon. |
+**couponCode** | **String** | The coupon code. |
+**usageCounter** | **Long** | The number of times the coupon has been successfully redeemed. |
+**usageLimit** | **Long** | The number of times the coupon code can be redeemed. `0` means unlimited redemptions but any campaign usage limits still apply. |
+**campaignName** | **String** | The name of the campaign that owns the coupon. |
+
+
+
diff --git a/docs/ReduceSelectorStep.md b/docs/ReduceSelectorStep.md
new file mode 100644
index 00000000..279f5211
--- /dev/null
+++ b/docs/ReduceSelectorStep.md
@@ -0,0 +1,34 @@
+
+
+# ReduceSelectorStep
+
+Aggregates items into a single value.
+## Properties
+
+Name | Type | Description | Notes
+------------ | ------------- | ------------- | -------------
+**type** | [**TypeEnum**](#TypeEnum) | A step discriminator of type `reduce`. |
+**operator** | [**OperatorEnum**](#OperatorEnum) | The aggregation operator applied to the items produced by the preceding step: - `max`, `min`, and `sum` operate on numeric values. - `count` returns the number of items. - `empty` reports whether the list is empty. |
+
+
+
+## Enum: TypeEnum
+
+Name | Value
+---- | -----
+REDUCE | "reduce"
+
+
+
+## Enum: OperatorEnum
+
+Name | Value
+---- | -----
+MAX | "max"
+MIN | "min"
+SUM | "sum"
+COUNT | "count"
+EMPTY | "empty"
+
+
+
diff --git a/docs/ReferralCreatedEffectProps.md b/docs/ReferralCreatedEffectProps.md
index aeceabeb..1c37d0bc 100644
--- a/docs/ReferralCreatedEffectProps.md
+++ b/docs/ReferralCreatedEffectProps.md
@@ -2,12 +2,12 @@
# ReferralCreatedEffectProps
-The properties specific to the \"referralCreated\" effect. This gets triggered whenever a validated rule contained a \"create referral\" effect, and a referral code was created for a customer. See \"createdReferrals\" on the response for all details of this referral code.
+The `referralCreated` effect behaves similarly to [couponCreated](https://docs.talon.one/docs/dev/integration-api/api-effects#couponcreated). If the `friendProfileIntegrationId` parameter is empty, the referral code can be redeemed by anyone.
## Properties
Name | Type | Description | Notes
------------ | ------------- | ------------- | -------------
-**value** | **String** | The referral code that was created. |
+**value** | **String** | The referral code provided in the session. |
diff --git a/docs/RejectCouponEffectProps.md b/docs/RejectCouponEffectProps.md
index 21e16c7b..d7962fc7 100644
--- a/docs/RejectCouponEffectProps.md
+++ b/docs/RejectCouponEffectProps.md
@@ -2,17 +2,17 @@
# RejectCouponEffectProps
-The properties specific to the \"rejectCoupon\" effect. This gets triggered whenever the coupon was rejected. See rejectionReason for more info on why.
+This effect indicates that the coupon code supplied couldn't be used. You should handle this effect by informing their user the coupon code is invalid.
## Properties
Name | Type | Description | Notes
------------ | ------------- | ------------- | -------------
**value** | **String** | The coupon code that was rejected. |
-**rejectionReason** | **String** | The reason why this coupon was rejected. |
+**rejectionReason** | **String** | The reason why the code was rejected. - `CampaignLimitReached`: The campaign-wide coupon code redemption limit has been reached. - `CouponExpired`: The coupon is expired. - `CouponLimitReached`: The coupon redemption limit or a campaign budget was reached. - `CouponNotFound`: The coupon code is incorrect. - `CouponPartOfNotRunningCampaign`: The campaign the coupon belongs to is currently not active. The campaignId field contains the ID of that campaign. - `CouponRecipientDoesNotMatch`: The given coupon value does not match the recipient or the coupon is linked to a `recipientIntegrationID` but there is no profile in the session. - `CouponRejectedByCondition`: Other conditions failed in the rule or all conditions passed but the `Coupon code is valid` condition is not present. - `CouponStartDateInFuture`: The coupon isn't active yet. - `EffectCouldNotBeApplied`: One of the effects in the campaign wasn't applied because a limit for that effect was reached (most common use case will be `setDiscount` cannot be applied because a discount limit is reached). - `ProfileLimitReached`: The profile-specific coupon redemption limit has been reached. - `CouponPartOfNotTriggeredCampaign`: The campaign the coupon belongs to was not triggered during evaluation (an exclusive or stackable campaign). The `campaignId` field contains the ID of that campaign. - `CouponReservationRequired`: The coupon's `isReservationMandatory` property is `true`, but the profile does not have a reservation. - `ProfileRequired`: The coupon's `isReservationMandatory` property is `true` or a [campaign profile budget](https://docs.talon.one/docs/product/campaigns/settings/manage-campaign-budgets) was set, but no profile exists in the session. |
**conditionIndex** | **Long** | The index of the condition that caused the rejection of the coupon. | [optional]
**effectIndex** | **Long** | The index of the effect that caused the rejection of the coupon. | [optional]
**details** | **String** | More details about the failure. | [optional]
-**campaignExclusionReason** | **String** | The reason why the campaign was not applied. | [optional]
+**campaignExclusionReason** | **String** | The reason why the campaign the coupon belongs to was excluded during [campaign evaluation](https://docs.talon.one/docs/product/applications/manage-campaign-evaluation), when `rejectionReason` was `CouponPartOfNotTriggeredCampaign`. Its possible values are: - `CampaignGaveLowerDiscount`: The required campaign and coupon conditions were met, but another campaign in a [Highest discount value](https://docs.talon.one/docs/product/applications/manage-campaign-evaluation#set-campaign-evaluation-mode) group offered a higher discount value. - `CampaignIsNotFirst`: The campaign was not evaluated because another campaign in a [First campaign](https://docs.talon.one/docs/product/applications/manage-campaign-evaluation#set-campaign-evaluation-mode) group was picked and evaluated first. - `CampaignNotInEvaluationSet`: The campaign did not meet other evaluation requirements, for example, because the coupon is part of an archived campaign. | [optional]
diff --git a/docs/RejectReferralEffectProps.md b/docs/RejectReferralEffectProps.md
index ec3e5eff..be3b3267 100644
--- a/docs/RejectReferralEffectProps.md
+++ b/docs/RejectReferralEffectProps.md
@@ -2,17 +2,17 @@
# RejectReferralEffectProps
-The properties specific to the \"rejectReferral\" effect. This gets triggered whenever the referral code was rejected. See rejectionReason for more info on why.
+This effect indicates that the provided referral code is invalid.
## Properties
Name | Type | Description | Notes
------------ | ------------- | ------------- | -------------
-**value** | **String** | The referral code that was rejected. |
-**rejectionReason** | **String** | The reason why this referral code was rejected. |
+**value** | **String** | The referral code that was rejected |
+**rejectionReason** | **String** | The reason why the code was rejected. - `AdvocateNotFound`: The advocate was not found. - `CampaignLimitReached`: The campaign-wide referral code redemption limit has been reached. - `EffectCouldNotBeApplied`: One of the effects in the campaign wasn't applied because a limit for that effect was reached (most common use case will be `setDiscount` can not be applied because a discount limit is reached). - `ProfileLimitReached`: The profile-specific referral code redemption limit has been reached. - `ReferralCustomerAlreadyReferred`: The friend is already referred. - `ReferralExpired`: The transferred referral code is expired. - `ReferralLimitReached`: The referral code redemption limit has been reached. - `ReferralNotFound`: The transferred referral code is wrong. - `ReferralPartOfNotRunningCampaign`: The campaign the referral code belongs to is currently not active. The campaign ID field shows the ID of that campaign. - `ReferralRecipientDoesNotMatch`: The given referral code value does not match the recipient. - `ReferralRecipientIdSameAsAdvocate`: The recipient (friend) has the same id as the advocate. - `ReferralRejectedByCondition`: The referral code is valid and in an active campaign, but there were other conditions in that campaign's rules that were not met. - `ReferralStartDateInFuture`: The transferred referral code isn't active yet. - `ReferralPartOfNotTriggeredCampaign`: The campaign the referral code belongs to was not triggered during evaluation (an exclusive or stackable campaign). The campaign ID field shows the ID of that campaign. |
**conditionIndex** | **Long** | The index of the condition that caused the rejection of the referral. | [optional]
**effectIndex** | **Long** | The index of the effect that caused the rejection of the referral. | [optional]
**details** | **String** | More details about the failure. | [optional]
-**campaignExclusionReason** | **String** | The reason why the campaign was not applied. | [optional]
+**campaignExclusionReason** | **String** | The reason why the campaign the referral belongs to was excluded during [campaign evaluation](https://docs.talon.one/docs/product/applications/manage-campaign-evaluation), when `rejectionReason` was `CouponPartOfNotTriggeredCampaign`. Its possible values are: - `CampaignGaveLowerDiscount`: The required campaign and referral conditions were met, but another campaign in a [Highest discount value](https://docs.talon.one/docs/product/applications/manage-campaign-evaluation#set-campaign-evaluation-mode) group offered a higher discount value. - `CampaignIsNotFirst`: The campaign was not evaluated because another campaign in a [First campaign](https://docs.talon.one/docs/product/applications/manage-campaign-evaluation#set-campaign-evaluation-mode) group was picked and evaluated first. - `CampaignNotInEvaluationSet`: The campaign did not meet other evaluation requirements, for example, because the referral is part of an archived campaign. | [optional]
diff --git a/docs/RemoveFromAudienceEffectProps.md b/docs/RemoveFromAudienceEffectProps.md
index 5c4b229e..8f21f1b1 100644
--- a/docs/RemoveFromAudienceEffectProps.md
+++ b/docs/RemoveFromAudienceEffectProps.md
@@ -2,7 +2,7 @@
# RemoveFromAudienceEffectProps
-The properties specific to the \"removeFromAudience\" effect. This gets triggered whenever a validated rule contains a \"removeFromAudience\" effect.
+This effect is triggered when a rule containing an [Update audience](https://docs.talon.one/docs/product/rules/effects/use-effects#update-an-audience) effect with **Remove customer from an audience** selected is validated. It indicates that a customer was removed from an audience and is returned when a customer session is opened, updated, or closed.
## Properties
Name | Type | Description | Notes
diff --git a/docs/ReserveCouponBlock.md b/docs/ReserveCouponBlock.md
new file mode 100644
index 00000000..972d9148
--- /dev/null
+++ b/docs/ReserveCouponBlock.md
@@ -0,0 +1,15 @@
+
+
+# ReserveCouponBlock
+
+A block that reserve a coupon during a customer session.
+## Properties
+
+Name | Type | Description | Notes
+------------ | ------------- | ------------- | -------------
+**id** | **String** | Unique identifier for this block. | [optional] [readonly]
+**type** | **String** | Identifies the block variant and determines which additional properties are present in it. |
+**tags** | **List<String>** | Semantic labels attached to this block. | [optional] [readonly]
+
+
+
diff --git a/docs/ReserveCouponEffectProps.md b/docs/ReserveCouponEffectProps.md
index caa0c1ce..d87da414 100644
--- a/docs/ReserveCouponEffectProps.md
+++ b/docs/ReserveCouponEffectProps.md
@@ -2,13 +2,13 @@
# ReserveCouponEffectProps
-The properties specific to the \"reserveCoupon\" effect. This gets triggered whenever a validated rule contained a \"reserve coupon\" effect. This reserves the coupon currently on scope to the profile on scope.
+This effect indicates that the given coupon code was reserved for the given customer. Talon.One provides soft and hard reservations. For more information, see [Reserve a coupon code](https://docs.talon.one/docs/product/rules/effects/use-effects#reserve-a-coupon-code).
## Properties
Name | Type | Description | Notes
------------ | ------------- | ------------- | -------------
-**couponValue** | **String** | The value of the coupon currently on scope. |
-**profileIntegrationId** | **String** | The ID of this customer profile in the third-party integration. |
+**couponValue** | **String** | The coupon code that was created. |
+**profileIntegrationId** | **String** | The integration identifier of the customer for whom this coupon was reserved. |
**isNewReservation** | **Boolean** | Indicates whether this is a new coupon reservation or not. |
diff --git a/docs/ResponseContentObject.md b/docs/ResponseContentObject.md
index 21624fc5..0e6cf283 100644
--- a/docs/ResponseContentObject.md
+++ b/docs/ResponseContentObject.md
@@ -20,6 +20,9 @@ LOYALTY | "loyalty"
EVENT | "event"
AWARDEDGIVEAWAYS | "awardedGiveaways"
RULEFAILUREREASONS | "ruleFailureReasons"
+CAMPAIGNELIGIBILITY | "campaignEligibility"
+ACHIEVEMENTS | "achievements"
+UNLOCKEDREWARDS | "unlockedRewards"
diff --git a/docs/ReverseSelectorStep.md b/docs/ReverseSelectorStep.md
new file mode 100644
index 00000000..54228be1
--- /dev/null
+++ b/docs/ReverseSelectorStep.md
@@ -0,0 +1,21 @@
+
+
+# ReverseSelectorStep
+
+Reverses the order of the items.
+## Properties
+
+Name | Type | Description | Notes
+------------ | ------------- | ------------- | -------------
+**type** | [**TypeEnum**](#TypeEnum) | A step discriminator of type `reverse`. |
+
+
+
+## Enum: TypeEnum
+
+Name | Value
+---- | -----
+REVERSE | "reverse"
+
+
+
diff --git a/docs/ReviewRisksRequest.md b/docs/ReviewRisksRequest.md
new file mode 100644
index 00000000..6cced52a
--- /dev/null
+++ b/docs/ReviewRisksRequest.md
@@ -0,0 +1,12 @@
+
+
+# ReviewRisksRequest
+
+## Properties
+
+Name | Type | Description | Notes
+------------ | ------------- | ------------- | -------------
+**riskIds** | **List<Long>** | The IDs of the risks to move to `In review` status. |
+
+
+
diff --git a/docs/RevisionVersion.md b/docs/RevisionVersion.md
index 32a6aae6..2df9b05d 100644
--- a/docs/RevisionVersion.md
+++ b/docs/RevisionVersion.md
@@ -40,6 +40,7 @@ LOYALTY | "loyalty"
GIVEAWAYS | "giveaways"
STRIKETHROUGH | "strikethrough"
ACHIEVEMENTS | "achievements"
+ADVANCEDEVENTS | "advancedEvents"
diff --git a/docs/Reward.md b/docs/Reward.md
index d73c0dd6..af8a2fef 100644
--- a/docs/Reward.md
+++ b/docs/Reward.md
@@ -14,6 +14,11 @@ Name | Type | Description | Notes
**description** | **String** | A description of the reward. | [optional]
**applicationIds** | **List<Long>** | The IDs of the Applications this reward is connected to. **Note**: Currently, a reward can only be connected to one Application. |
**sandbox** | **Boolean** | Indicates if this is a live or sandbox reward. Rewards of a given type can only be connected to Applications of the same type. |
+**eligibilityConditions** | [**Rule**](Rule.md) | | [optional]
+**rule** | [**Rule**](Rule.md) | | [optional]
+**bindings** | [**List<Binding>**](Binding.md) | A list of named variables created before the reward's rules are evaluated. Each binding pairs a name with a talang expression. The expression is evaluated once and its result is available by name in any rule condition or effect. Bindings must be defined outside of individual rules. | [optional]
+**pointsRequired** | [**List<RewardPointsRequired>**](RewardPointsRequired.md) | The loyalty points required to activate the reward. Each object defines the specific loyalty program and subledger from which points are deducted when activating the reward. **Note:** When creating a reward, the `id` of each entry is ignored and a new entry is always created. | [optional]
+**modified** | [**OffsetDateTime**](OffsetDateTime.md) | The timestamp when the reward was last updated in RFC3339 format. | [optional]
**status** | [**StatusEnum**](#StatusEnum) | The status of the reward. |
diff --git a/docs/RewardCatalogItem.md b/docs/RewardCatalogItem.md
new file mode 100644
index 00000000..23731e9d
--- /dev/null
+++ b/docs/RewardCatalogItem.md
@@ -0,0 +1,18 @@
+
+
+# RewardCatalogItem
+
+A reward returned by the rewards catalog Integration API endpoint.
+## Properties
+
+Name | Type | Description | Notes
+------------ | ------------- | ------------- | -------------
+**id** | **Long** | The unique ID of the reward. |
+**name** | **String** | The customer-facing name of the reward. |
+**description** | **String** | The customer-facing description of the reward. | [optional]
+**pointsRequired** | [**List<RewardPointsRequired>**](RewardPointsRequired.md) | The loyalty points required to activate the reward. | [optional]
+**rule** | [**RuleMetadata**](RuleMetadata.md) | |
+**eligibility** | [**RewardEligibility**](RewardEligibility.md) | | [optional]
+
+
+
diff --git a/docs/RewardEligibility.md b/docs/RewardEligibility.md
new file mode 100644
index 00000000..d0c3f98f
--- /dev/null
+++ b/docs/RewardEligibility.md
@@ -0,0 +1,14 @@
+
+
+# RewardEligibility
+
+The customer's eligibility for the reward based on the specified customer profile or loyalty card.
+## Properties
+
+Name | Type | Description | Notes
+------------ | ------------- | ------------- | -------------
+**passed** | **Boolean** | Indicates whether the customer is eligible for the reward. |
+**details** | [**List<RewardEligibilityFailureDetails>**](RewardEligibilityFailureDetails.md) | The reasons the customer is not eligible for the reward. Empty when `passed` is `true`. | [optional]
+
+
+
diff --git a/docs/RewardEligibilityFailureDetails.md b/docs/RewardEligibilityFailureDetails.md
new file mode 100644
index 00000000..e8efbad4
--- /dev/null
+++ b/docs/RewardEligibilityFailureDetails.md
@@ -0,0 +1,25 @@
+
+
+# RewardEligibilityFailureDetails
+
+The details about why the customer is not eligible for the reward.
+## Properties
+
+Name | Type | Description | Notes
+------------ | ------------- | ------------- | -------------
+**failureCode** | [**FailureCodeEnum**](#FailureCodeEnum) | A code identifying why the customer is not eligible for the reward. |
+**conditionIndex** | **Long** | The index of the eligibility condition that the customer did not meet. Only applicable when `failureCode` is `CONDITION_NOT_MET`. | [optional]
+
+
+
+## Enum: FailureCodeEnum
+
+Name | Value
+---- | -----
+CONDITION_NOT_MET | "CONDITION_NOT_MET"
+INSUFFICIENT_BALANCE | "INSUFFICIENT_BALANCE"
+CARD_REQUIRED | "CARD_REQUIRED"
+PROFILE_REQUIRED | "PROFILE_REQUIRED"
+
+
+
diff --git a/docs/RewardPointsRequired.md b/docs/RewardPointsRequired.md
new file mode 100644
index 00000000..eecdde04
--- /dev/null
+++ b/docs/RewardPointsRequired.md
@@ -0,0 +1,16 @@
+
+
+# RewardPointsRequired
+
+The loyalty points required to activate a reward.
+## Properties
+
+Name | Type | Description | Notes
+------------ | ------------- | ------------- | -------------
+**id** | **Long** | The ID of the `pointsRequired` entry. When updating a reward, include this property to update an existing entry. Omit it to create a new one. | [optional]
+**amount** | [**BigDecimal**](BigDecimal.md) | The number of loyalty points required to activate the reward. |
+**loyaltyProgramId** | **Long** | The ID of the associated loyalty program. |
+**subledgerId** | **String** | The ID of the subledger within the loyalty program from which points are deducted when activating the reward. To specify the main ledger, provide an empty string (\"\"). |
+
+
+
diff --git a/docs/RewardUnlockRejection.md b/docs/RewardUnlockRejection.md
new file mode 100644
index 00000000..a9cc1b44
--- /dev/null
+++ b/docs/RewardUnlockRejection.md
@@ -0,0 +1,14 @@
+
+
+# RewardUnlockRejection
+
+Returned when a reward unlock is rejected by the Rule Engine, for example because the customer already unlocked this reward, the customer has insufficient points, or the reward's eligibility conditions are not met.
+## Properties
+
+Name | Type | Description | Notes
+------------ | ------------- | ------------- | -------------
+**message** | **String** | A human-readable summary of why the reward unlock was rejected. |
+**ruleFailureReasons** | [**List<RuleFailureReason>**](RuleFailureReason.md) | The reasons why the reward could not be unlocked. |
+
+
+
diff --git a/docs/RewardWithUnlocks.md b/docs/RewardWithUnlocks.md
new file mode 100644
index 00000000..8b07d234
--- /dev/null
+++ b/docs/RewardWithUnlocks.md
@@ -0,0 +1,18 @@
+
+
+# RewardWithUnlocks
+
+A reward and details of each time a customer profile has unlocked it.
+## Properties
+
+Name | Type | Description | Notes
+------------ | ------------- | ------------- | -------------
+**id** | **Long** | The unique ID of the reward. |
+**integrationId** | **String** | A unique identifier used to reference the reward in API integrations. |
+**name** | **String** | The customer-facing name of the reward. |
+**description** | **String** | Customer-facing description of the reward. | [optional]
+**rule** | [**RuleMetadata**](RuleMetadata.md) | |
+**unlocked** | [**List<CustomerReward>**](CustomerReward.md) | The customer profile's unlocks of this reward that are not yet `used`. | [optional]
+
+
+
diff --git a/docs/Risk.md b/docs/Risk.md
new file mode 100644
index 00000000..f8f6c91a
--- /dev/null
+++ b/docs/Risk.md
@@ -0,0 +1,90 @@
+
+
+# Risk
+
+A risk detected by the anomaly detection service for one Application group.
+## Properties
+
+Name | Type | Description | Notes
+------------ | ------------- | ------------- | -------------
+**id** | **Long** | The internal ID of this entity. |
+**created** | [**OffsetDateTime**](OffsetDateTime.md) | The time this entity was created. |
+**notificationId** | **Long** | The ID of the risk notification rule that flagged this risk. |
+**featureDate** | [**LocalDate**](LocalDate.md) | The date of the activity data in which this risk was detected. The anomaly detection pipeline scores complete 24-hour cycles, so this is always the day before the risk was reported, not the reporting date itself. |
+**groupKey** | **String** | The Application group this risk was detected in. Contains the Application ID, or `__GLOBAL__` for metrics that are not grouped by Application. |
+**applicationId** | **Long** | The ID of the Application this risk belongs to. Absent for global metrics. | [optional]
+**status** | [**StatusEnum**](#StatusEnum) | The triage lifecycle status of this risk. |
+**criticality** | [**CriticalityEnum**](#CriticalityEnum) | The critical classification bucket of this risk. |
+**entity** | [**EntityEnum**](#EntityEnum) | The entity type the risk was detected in. |
+**activity** | [**ActivityEnum**](#ActivityEnum) | The activity metric the risk was detected in. |
+**timeFrame** | [**TimeFrameEnum**](#TimeFrameEnum) | The rolling time window of the risk evaluation. |
+**reportedDate** | [**OffsetDateTime**](OffsetDateTime.md) | The time the ML service reported this risk. |
+**affectedEntityCount** | **Long** | The total number of entities affected by this risk. |
+**description** | **String** | Human-readable description of the detected anomaly. | [optional]
+**discardReason** | [**DiscardReasonEnum**](#DiscardReasonEnum) | The reason this risk was discarded. Only present on discarded risks. | [optional]
+**statusComment** | **String** | The free-text details of the latest reclassification action: the description for resolving confirmed risks, or the details for discarding risks. | [optional]
+**statusChangedBy** | **Long** | The ID of the user who performed the latest reclassification action. | [optional]
+**statusChangedAt** | [**OffsetDateTime**](OffsetDateTime.md) | The time of the latest reclassification action. | [optional]
+**modified** | [**OffsetDateTime**](OffsetDateTime.md) | Timestamp of the most recent update. |
+
+
+
+## Enum: StatusEnum
+
+Name | Value
+---- | -----
+ACTIVE | "active"
+IN_REVIEW | "in_review"
+CONFIRMED | "confirmed"
+DISCARDED | "discarded"
+
+
+
+## Enum: CriticalityEnum
+
+Name | Value
+---- | -----
+CRITICAL | "critical"
+NOT_CRITICAL | "not_critical"
+
+
+
+## Enum: EntityEnum
+
+Name | Value
+---- | -----
+PROFILE | "customer_profile"
+SESSION | "customer_session"
+
+
+
+## Enum: ActivityEnum
+
+Name | Value
+---- | -----
+LOYALTY_POINTS_EARNED | "loyalty_points_earned"
+DISCOUNTED_AMOUNT | "discounted_amount"
+COMPLETED_ORDERS | "completed_orders"
+COUPON_ATTEMPTS | "coupon_attempts"
+
+
+
+## Enum: TimeFrameEnum
+
+Name | Value
+---- | -----
+_1D | "1D"
+_7D | "7D"
+_30D | "30D"
+
+
+
+## Enum: DiscardReasonEnum
+
+Name | Value
+---- | -----
+EXPECTED_BEHAVIOR | "expected_behavior"
+OTHER | "other"
+
+
+
diff --git a/docs/RiskAffectedEntityItem.md b/docs/RiskAffectedEntityItem.md
new file mode 100644
index 00000000..b8c5ba7b
--- /dev/null
+++ b/docs/RiskAffectedEntityItem.md
@@ -0,0 +1,26 @@
+
+
+# RiskAffectedEntityItem
+
+A single entity flagged as anomalous within a risk.
+## Properties
+
+Name | Type | Description | Notes
+------------ | ------------- | ------------- | -------------
+**entityId** | **String** | The integration ID of the affected entity. |
+**activityValue** | **Double** | The observed value of the monitored activity metric for this entity. |
+**threshold** | **Double** | The anomaly threshold computed for the entity's Application group. |
+**severityRatio** | **Double** | The ratio of the observed value to the threshold. |
+**criticality** | [**CriticalityEnum**](#CriticalityEnum) | The critical classification bucket of this entity. |
+
+
+
+## Enum: CriticalityEnum
+
+Name | Value
+---- | -----
+CRITICAL | "critical"
+NOT_CRITICAL | "not_critical"
+
+
+
diff --git a/docs/RiskCriticalityUpdate.md b/docs/RiskCriticalityUpdate.md
new file mode 100644
index 00000000..16fefd0a
--- /dev/null
+++ b/docs/RiskCriticalityUpdate.md
@@ -0,0 +1,21 @@
+
+
+# RiskCriticalityUpdate
+
+## Properties
+
+Name | Type | Description | Notes
+------------ | ------------- | ------------- | -------------
+**riskIds** | **List<Long>** | The IDs of the risks to reclassify. |
+**criticality** | [**CriticalityEnum**](#CriticalityEnum) | The criticality to assign to risks. Only `not_critical` is accepted: critical risks can be reclassified as non-critical, but not the other way around. |
+
+
+
+## Enum: CriticalityEnum
+
+Name | Value
+---- | -----
+NOT_CRITICAL | "not_critical"
+
+
+
diff --git a/docs/RiskDetail.md b/docs/RiskDetail.md
new file mode 100644
index 00000000..b5e9a539
--- /dev/null
+++ b/docs/RiskDetail.md
@@ -0,0 +1,91 @@
+
+
+# RiskDetail
+
+Details of a risk, including its most severely affected entities.
+## Properties
+
+Name | Type | Description | Notes
+------------ | ------------- | ------------- | -------------
+**id** | **Long** | The internal ID of this entity. |
+**created** | [**OffsetDateTime**](OffsetDateTime.md) | The time this entity was created. |
+**notificationId** | **Long** | The ID of the risk notification rule that flagged this risk. |
+**featureDate** | [**LocalDate**](LocalDate.md) | The date of the activity data in which this risk was detected. The anomaly detection pipeline scores complete 24-hour cycles, so this is always the day before the risk was reported, not the reporting date itself. |
+**groupKey** | **String** | The Application group this risk was detected in. Contains the Application ID, or `__GLOBAL__` for metrics that are not grouped by Application. |
+**applicationId** | **Long** | The ID of the Application this risk belongs to. Absent for global metrics. | [optional]
+**status** | [**StatusEnum**](#StatusEnum) | The triage lifecycle status of this risk. |
+**criticality** | [**CriticalityEnum**](#CriticalityEnum) | The critical classification bucket of this risk. |
+**entity** | [**EntityEnum**](#EntityEnum) | The entity type the risk was detected in. |
+**activity** | [**ActivityEnum**](#ActivityEnum) | The activity metric the risk was detected in. |
+**timeFrame** | [**TimeFrameEnum**](#TimeFrameEnum) | The rolling time window of the risk evaluation. |
+**reportedDate** | [**OffsetDateTime**](OffsetDateTime.md) | The time the ML service reported this risk. |
+**affectedEntityCount** | **Long** | The total number of entities affected by this risk. |
+**description** | **String** | Human-readable description of the detected anomaly. | [optional]
+**discardReason** | [**DiscardReasonEnum**](#DiscardReasonEnum) | The reason this risk was discarded. Only present on discarded risks. | [optional]
+**statusComment** | **String** | The free-text details of the latest reclassification action: the description for resolving confirmed risks, or the details for discarding risks. | [optional]
+**statusChangedBy** | **Long** | The ID of the user who performed the latest reclassification action. | [optional]
+**statusChangedAt** | [**OffsetDateTime**](OffsetDateTime.md) | The time of the latest reclassification action. | [optional]
+**modified** | [**OffsetDateTime**](OffsetDateTime.md) | Timestamp of the most recent update. |
+**affectedEntities** | [**List<RiskAffectedEntityItem>**](RiskAffectedEntityItem.md) | The affected entities with the highest severity ratios, in descending order. |
+
+
+
+## Enum: StatusEnum
+
+Name | Value
+---- | -----
+ACTIVE | "active"
+IN_REVIEW | "in_review"
+CONFIRMED | "confirmed"
+DISCARDED | "discarded"
+
+
+
+## Enum: CriticalityEnum
+
+Name | Value
+---- | -----
+CRITICAL | "critical"
+NOT_CRITICAL | "not_critical"
+
+
+
+## Enum: EntityEnum
+
+Name | Value
+---- | -----
+PROFILE | "customer_profile"
+SESSION | "customer_session"
+
+
+
+## Enum: ActivityEnum
+
+Name | Value
+---- | -----
+LOYALTY_POINTS_EARNED | "loyalty_points_earned"
+DISCOUNTED_AMOUNT | "discounted_amount"
+COMPLETED_ORDERS | "completed_orders"
+COUPON_ATTEMPTS | "coupon_attempts"
+
+
+
+## Enum: TimeFrameEnum
+
+Name | Value
+---- | -----
+_1D | "1D"
+_7D | "7D"
+_30D | "30D"
+
+
+
+## Enum: DiscardReasonEnum
+
+Name | Value
+---- | -----
+EXPECTED_BEHAVIOR | "expected_behavior"
+OTHER | "other"
+
+
+
diff --git a/docs/RiskNotification.md b/docs/RiskNotification.md
new file mode 100644
index 00000000..86913b0f
--- /dev/null
+++ b/docs/RiskNotification.md
@@ -0,0 +1,49 @@
+
+
+# RiskNotification
+
+A risk notification configuration rule.
+## Properties
+
+Name | Type | Description | Notes
+------------ | ------------- | ------------- | -------------
+**id** | **Long** | The internal ID of this entity. |
+**created** | [**OffsetDateTime**](OffsetDateTime.md) | The time this entity was created. |
+**entity** | [**EntityEnum**](#EntityEnum) | The entity type to analyze within the given time frame. |
+**activity** | [**ActivityEnum**](#ActivityEnum) | The activity metric to analyze within the given entity. |
+**timeFrame** | [**TimeFrameEnum**](#TimeFrameEnum) | The rolling time window for risk evaluation. |
+**active** | **Boolean** | Indicates whether this risk notification is active. |
+**modified** | [**OffsetDateTime**](OffsetDateTime.md) | Timestamp of the most recent update. |
+
+
+
+## Enum: EntityEnum
+
+Name | Value
+---- | -----
+PROFILE | "customer_profile"
+SESSION | "customer_session"
+
+
+
+## Enum: ActivityEnum
+
+Name | Value
+---- | -----
+LOYALTY_POINTS_EARNED | "loyalty_points_earned"
+DISCOUNTED_AMOUNT | "discounted_amount"
+COMPLETED_ORDERS | "completed_orders"
+COUPON_ATTEMPTS | "coupon_attempts"
+
+
+
+## Enum: TimeFrameEnum
+
+Name | Value
+---- | -----
+_1D | "1D"
+_7D | "7D"
+_30D | "30D"
+
+
+
diff --git a/docs/RoleV2ApplicationDetails.md b/docs/RoleV2ApplicationDetails.md
index 6c293ab1..1c95cb96 100644
--- a/docs/RoleV2ApplicationDetails.md
+++ b/docs/RoleV2ApplicationDetails.md
@@ -10,7 +10,6 @@ Name | Type | Description | Notes
**campaign** | **String** | Name of the campaign-related permission set for the given Application. | [optional]
**draftCampaign** | **String** | Name of the draft campaign-related permission set for the given Application. | [optional]
**tools** | **String** | Name of the tools-related permission set. | [optional]
-**thresholds** | [**RolesV2Thresholds**](RolesV2Thresholds.md) | | [optional]
diff --git a/docs/RoleV2Permissions.md b/docs/RoleV2Permissions.md
index 270f4d01..fa6f910c 100644
--- a/docs/RoleV2Permissions.md
+++ b/docs/RoleV2Permissions.md
@@ -8,6 +8,7 @@ Name | Type | Description | Notes
------------ | ------------- | ------------- | -------------
**permissionSets** | [**List<RoleV2PermissionSet>**](RoleV2PermissionSet.md) | List of grouped logical operations referenced by roles. | [optional]
**roles** | [**RoleV2RolesGroup**](RoleV2RolesGroup.md) | | [optional]
+**thresholds** | [**List<RolesV2Thresholds>**](RolesV2Thresholds.md) | Support user limits for actions that require admin approval within the given application. | [optional]
diff --git a/docs/RolesV2Thresholds.md b/docs/RolesV2Thresholds.md
index 367de202..6d1f7a61 100644
--- a/docs/RolesV2Thresholds.md
+++ b/docs/RolesV2Thresholds.md
@@ -6,6 +6,7 @@
Name | Type | Description | Notes
------------ | ------------- | ------------- | -------------
+**loyaltyProgramId** | **Long** | Identifier of the loyalty program. You can get the ID with the [List loyalty programs](https://docs.talon.one/management-api#tag/Loyalty/operation/getLoyaltyPrograms) endpoint. | [optional]
**loyaltyPointsLimit** | **Long** | Maximum number of loyalty points a support user can award without approval. | [optional]
diff --git a/docs/RollbackAddedLoyaltyPointsEffectProps.md b/docs/RollbackAddedLoyaltyPointsEffectProps.md
index 060f51d3..463efed3 100644
--- a/docs/RollbackAddedLoyaltyPointsEffectProps.md
+++ b/docs/RollbackAddedLoyaltyPointsEffectProps.md
@@ -2,18 +2,18 @@
# RollbackAddedLoyaltyPointsEffectProps
-The properties specific to the \"rollbackAddedLoyaltyPoints\" effect. This gets triggered whenever previously a closed session with an addLoyaltyPoints effect is cancelled.
+This effect is triggered in the following cases: - A session was cancelled in which loyalty points have been added. - A session was partially returned and loyalty point were added by the returned items. See [returning items](https://docs.talon.one/docs/dev/tutorials/partially-return-a-session). If you use the [Add loyalty points per item effect](https://docs.talon.one/docs/product/rules/effects/available-effects#reward-effects), use the `cartItemPosition` property to identify which items the loyalty points were rolled back for. If you use **Add loyalty points per item** and if the session contains some cart items with _quantity > 1_, use the `cartItemSubPosition` property to identify the item unit in its line item. If the loyalty program is [profile-based](https://docs.talon.one/docs/product/loyalty-programs/overview#loyalty-program-types), use the `recipientIntegrationId` property to identify the user for whom the loyalty points are rolled back. If the loyalty program is [card-based](https://docs.talon.one/docs/product/loyalty-programs/overview#loyalty-program-types), use the `cardIdentifier` property to identify the loyalty card where the points were originally added.
## Properties
Name | Type | Description | Notes
------------ | ------------- | ------------- | -------------
-**programId** | **Long** | The ID of the loyalty program where the points were originally added. |
-**subLedgerId** | **String** | The ID of the subledger within the loyalty program where these points were originally added. |
+**programId** | **Long** | The ID of the loyalty program where these points were rolled back. |
+**subLedgerId** | **String** | The ID of the subledger within the loyalty program where these points were rolled back. |
**value** | [**BigDecimal**](BigDecimal.md) | The amount of points that were rolled back. |
-**recipientIntegrationId** | **String** | The user for whom these points were originally added. |
-**transactionUUID** | **String** | The identifier of 'deduction' entry added to the ledger as the `addLoyaltyPoints` effect is rolled back. |
-**cartItemPosition** | [**BigDecimal**](BigDecimal.md) | The index of the item in the cart items for which the loyalty points were rolled back. | [optional]
-**cartItemSubPosition** | [**BigDecimal**](BigDecimal.md) | For cart items with `quantity` > 1, the sub-position indicates to which item the loyalty points were rolled back. | [optional]
+**recipientIntegrationId** | **String** | The user for whom these points were rolled back. |
+**transactionUUID** | **String** | The identifier of this loyalty point transaction. |
+**cartItemPosition** | [**BigDecimal**](BigDecimal.md) | (_Add points per cart item_ only.) The index of the item in the `cartItem` object for which these points were rolled back. | [optional]
+**cartItemSubPosition** | [**BigDecimal**](BigDecimal.md) | (_Add points per cart item_ ) The index of the item unit in its line item. | [optional]
**cardIdentifier** | **String** | The identifier of the loyalty card, which must match the regular expression `^[A-Za-z0-9._%+@-]+$`. | [optional]
diff --git a/docs/RollbackCouponEffectProps.md b/docs/RollbackCouponEffectProps.md
index 8d2fde0b..bee14989 100644
--- a/docs/RollbackCouponEffectProps.md
+++ b/docs/RollbackCouponEffectProps.md
@@ -2,12 +2,12 @@
# RollbackCouponEffectProps
-The properties specific to the \"rollbackCoupon\" effect. This gets triggered whenever previously closed session is now cancelled and a coupon redemption was cancelled on our internal usage limit counters.
+This effect indicates that a coupon code redemption has been rolled back. The coupon becomes redeemable again. The effect is triggered when you [cancel](https://docs.talon.one/docs/dev/concepts/entities/customer-sessions#manage-the-sessions-state) a session where a coupon was accepted. See an example of use in the [cancelling a session tutorial](https://docs.talon.one/docs/dev/tutorials/roll-back-effects).
## Properties
Name | Type | Description | Notes
------------ | ------------- | ------------- | -------------
-**value** | **String** | The coupon code whose usage has been rolled back. |
+**value** | **String** | The coupon code whose redemption has been rolled back. |
diff --git a/docs/RollbackDeductedLoyaltyPointsEffectProps.md b/docs/RollbackDeductedLoyaltyPointsEffectProps.md
index 4cc6f916..7a89b435 100644
--- a/docs/RollbackDeductedLoyaltyPointsEffectProps.md
+++ b/docs/RollbackDeductedLoyaltyPointsEffectProps.md
@@ -2,18 +2,18 @@
# RollbackDeductedLoyaltyPointsEffectProps
-The properties specific to the \"rollbackDeductedLoyaltyPoints\" effect. This effect is triggered whenever a previously closed session is cancelled and a deductLoyaltyPoints effect was revoked.
+This effect is triggered in the following cases: - A session is _cancelled_ and this session deducted loyalty points. The rollback action returns the redeemed loyalty points to the customer. - A session is impacted by a _partial return_. Only added loyalty points that are still **pending** are rolled back. - A session in which loyalty points were spent is reopened. See the [session states](https://docs.talon.one/docs/dev/concepts/entities/customer-sessions#customer-session-states). If you set custom activation and expiration dates for the loyalty points, use the `startDate` and `expiryDate` properties to identify when the reward will be active and when will expire. If the loyalty program is [profile-based](https://docs.talon.one/docs/product/loyalty-programs/profile-based/profile-based-overview), use the `recipientIntegrationId` property to identify the user who receives the loyalty points. If the loyalty program is [card-based](https://docs.talon.one/docs/product/loyalty-programs/overview#loyalty-program-types), use the `cardIdentifier` property to identify the loyalty card where the points are reimbursed.
## Properties
Name | Type | Description | Notes
------------ | ------------- | ------------- | -------------
**programId** | **Long** | The ID of the loyalty program where these points were reimbursed. |
**subLedgerId** | **String** | The ID of the subledger within the loyalty program where these points were reimbursed. |
-**value** | [**BigDecimal**](BigDecimal.md) | The amount of reimbursed points that were added. |
+**value** | [**BigDecimal**](BigDecimal.md) | The amount of points that were reimbursed. |
**recipientIntegrationId** | **String** | The user for whom these points were reimbursed. |
-**startDate** | [**OffsetDateTime**](OffsetDateTime.md) | Date after which the reimbursed points will be valid. | [optional]
-**expiryDate** | [**OffsetDateTime**](OffsetDateTime.md) | Date after which the reimbursed points will expire. | [optional]
-**transactionUUID** | **String** | The identifier of 'addition' entries added to the ledger as the `deductLoyaltyPoints` effect is rolled back. |
+**startDate** | [**OffsetDateTime**](OffsetDateTime.md) | The date after which the reimbursed points will be valid. | [optional]
+**expiryDate** | [**OffsetDateTime**](OffsetDateTime.md) | The date after which the reimbursed points will expire. | [optional]
+**transactionUUID** | **String** | The identifier of this loyalty point transaction. |
**cardIdentifier** | **String** | The identifier of the loyalty card, which must match the regular expression `^[A-Za-z0-9._%+@-]+$`. | [optional]
diff --git a/docs/RollbackDiscountEffectProps.md b/docs/RollbackDiscountEffectProps.md
index 604c0457..10013595 100644
--- a/docs/RollbackDiscountEffectProps.md
+++ b/docs/RollbackDiscountEffectProps.md
@@ -2,18 +2,18 @@
# RollbackDiscountEffectProps
-The properties specific to the \"rollbackDiscount\" effect. This gets triggered whenever previously closed session is now cancelled or partially returned and a setDiscount effect was cancelled on our internal discount limit counters.
+This effect indicates that a discounted session, cart item, or additional cost has been cancelled or partially returned. This effect can only happen when you set the status of a session to `cancel` or the status changes to `partially_returned`. If the session contains some cart items with _quantity > 1_, use the `cartItemSubPosition` property to identify the specific item unit in its line item. See the example below.
## Properties
Name | Type | Description | Notes
------------ | ------------- | ------------- | -------------
-**name** | **String** | The name of the \"setDiscount\" effect that was rolled back. |
-**value** | [**BigDecimal**](BigDecimal.md) | The value of the discount that was rolled back. |
-**cartItemPosition** | [**BigDecimal**](BigDecimal.md) | The index of the item in the cart items for which the discount was rolled back. | [optional]
-**cartItemSubPosition** | [**BigDecimal**](BigDecimal.md) | For cart items with `quantity` > 1, the subposition returns the index of the item unit in its line item. | [optional]
-**additionalCostId** | **Long** | The ID of the additional cost that was rolled back. | [optional]
-**additionalCost** | **String** | The name of the additional cost that was rolled back. | [optional]
-**scope** | **String** | The scope of the rolled back discount - For a discount per session, it can be one of `cartItems`, `additionalCosts` or `sessionTotal` - For a discount per item, it can be one of `price`, `additionalCosts` or `itemTotal` | [optional]
+**name** | **String** | The name of the discount effect that was rolled back. |
+**value** | [**BigDecimal**](BigDecimal.md) | The monetary value of the discount that was rolled back. |
+**cartItemPosition** | [**BigDecimal**](BigDecimal.md) | The index of the item in the `cartItem` object whose discount was rolled back, or the unit containing the additional cost whose discount was rolled back. | [optional]
+**cartItemSubPosition** | [**BigDecimal**](BigDecimal.md) | The index of the item unit in its line item for which the discount was rolled back. | [optional]
+**additionalCostId** | **Long** | _Only when rolling back [setDiscountPerAdditionalCost](https://docs.talon.one/docs/dev/integration-api/api-effects#setdiscountperadditionalcost) and [setDiscountPerAdditionalCostPerItem](https://docs.talon.one/docs/dev/integration-api/api-effects#setdiscountperadditionalcostperitem)_ The ID of the additional cost to be discounted. | [optional]
+**additionalCost** | **String** | The API name of the additional cost whose discount was rolled back. | [optional]
+**scope** | **String** | The scope of the rolled back discount. - For a discount per session, it can be one of `cartItems`, `additionalCosts` or `sessionTotal` - For a discount per item, it can be one of `price`, `additionalCosts` or `itemTotal` | [optional]
diff --git a/docs/RollbackIncreasedAchievementProgressEffectProps.md b/docs/RollbackIncreasedAchievementProgressEffectProps.md
index 6d95ddf9..eccc8dd7 100644
--- a/docs/RollbackIncreasedAchievementProgressEffectProps.md
+++ b/docs/RollbackIncreasedAchievementProgressEffectProps.md
@@ -2,7 +2,7 @@
# RollbackIncreasedAchievementProgressEffectProps
-The properties specific to the \"rollbackIncreasedAchievementProgress\" effect. This gets triggered whenever a closed session where the `increaseAchievementProgress` effect was triggered is cancelled. This is applicable only when the customer has not completed the achievement.
+This effect indicates that the customer's progress in an achievement was rolled back. The Rule Engine triggers this effect when you cancel or [reopen a customer session](https://docs.talon.one/integration-api#tag/Customer-sessions/operation/reopenCustomerSession) that previously validated the [Update customer progress](https://docs.talon.one/docs/product/rules/effects/use-effects#update-customer-progress) effect and triggered the [increaseAchievementProgress](https://docs.talon.one/docs/dev/integration-api/api-effects#increaseachievementprogress) API effect. The effect is also triggered for completed achievements if the **Allow progress rollback for completed achievements** setting is enabled. You can enable this through the [Campaign Manager](https://docs.talon.one/docs/product/achievements/manage-achievements) or the [Management API](https://docs.talon.one/management-api#tag/Achievements/operation/createAchievement) by setting the `achievementAllowRollbackAfterCompletion` property to `true`. This setting only applies to one-time and recurring on expiration achievements.
## Properties
Name | Type | Description | Notes
@@ -10,7 +10,7 @@ Name | Type | Description | Notes
**achievementId** | **Long** | The internal ID of the achievement. |
**achievementName** | **String** | The name of the achievement. |
**progressTrackerId** | **Long** | The internal ID of the achievement progress tracker. |
-**decreaseProgressBy** | [**BigDecimal**](BigDecimal.md) | The value by which the customer's current progress in the achievement is decreased. |
+**decreaseProgressBy** | [**BigDecimal**](BigDecimal.md) | The value by which the customer's current progress in the achievement has decreased. |
**currentProgress** | [**BigDecimal**](BigDecimal.md) | The current progress of the customer in the achievement. |
**target** | [**BigDecimal**](BigDecimal.md) | The target value to complete the achievement. |
diff --git a/docs/RollbackReferralEffectProps.md b/docs/RollbackReferralEffectProps.md
index 9550b469..decd5515 100644
--- a/docs/RollbackReferralEffectProps.md
+++ b/docs/RollbackReferralEffectProps.md
@@ -2,12 +2,12 @@
# RollbackReferralEffectProps
-The properties specific to the \"rollbackReferral\" effect. This gets triggered whenever previously closed session is now cancelled and a referral redemption was cancelled on our internal usage limit counters.
+This effect indicates that the redemption of the referral code has been rolled back. It triggers when a closed session that redeemed a referral is gets cancelled. The code becomes redeemable again. For more information about session states, see [Managing states](https://docs.talon.one/docs/dev/concepts/entities/customer-sessions#customer-session-states).
## Properties
Name | Type | Description | Notes
------------ | ------------- | ------------- | -------------
-**value** | **String** | The referral code whose usage has been rolled back. |
+**value** | **String** | The referral code to be rolled back. |
diff --git a/docs/RollbackUseRewardEffectProps.md b/docs/RollbackUseRewardEffectProps.md
new file mode 100644
index 00000000..2dac3146
--- /dev/null
+++ b/docs/RollbackUseRewardEffectProps.md
@@ -0,0 +1,15 @@
+
+
+# RollbackUseRewardEffectProps
+
+This effect is triggered when a reward usage has been rolled back by a session cancellation.
+## Properties
+
+Name | Type | Description | Notes
+------------ | ------------- | ------------- | -------------
+**integrationId** | **String** | The integration ID of the customer reward that was rolled back. |
+**rewardId** | **Long** | The ID of the reward that was rolled back. |
+**applicationId** | **Long** | The ID of the Application the reward belongs to. |
+
+
+
diff --git a/docs/RuleEligibility.md b/docs/RuleEligibility.md
new file mode 100644
index 00000000..f49ed738
--- /dev/null
+++ b/docs/RuleEligibility.md
@@ -0,0 +1,15 @@
+
+
+# RuleEligibility
+
+The customer's eligibility for a rule in the current session, based on whether all of the rule's conditions were met.
+## Properties
+
+Name | Type | Description | Notes
+------------ | ------------- | ------------- | -------------
+**passed** | **Boolean** | Indicates whether the customer was eligible for the rule in the current session, based on whether all of the rule's conditions were met. |
+**couponCode** | **String** | The coupon code used to check a customer's eligibility for the rule in the current session, if applicable. | [optional]
+**details** | [**RuleEligibilityFailureDetails**](RuleEligibilityFailureDetails.md) | | [optional]
+
+
+
diff --git a/docs/RuleEligibilityFailureDetails.md b/docs/RuleEligibilityFailureDetails.md
new file mode 100644
index 00000000..e1d99d1a
--- /dev/null
+++ b/docs/RuleEligibilityFailureDetails.md
@@ -0,0 +1,29 @@
+
+
+# RuleEligibilityFailureDetails
+
+The details about why the customer was not eligible for the rule in the current session.
+## Properties
+
+Name | Type | Description | Notes
+------------ | ------------- | ------------- | -------------
+**failureCode** | [**FailureCodeEnum**](#FailureCodeEnum) | A code identifying why the customer was not eligible for the rule in the current session. |
+**couponID** | **Long** | The ID of the coupon that was being evaluated when the rule failed. | [optional]
+**couponValue** | **String** | The coupon code that was being evaluated when the rule failed. | [optional]
+**referralID** | **Long** | The ID of the referral that was being evaluated when the rule failed. | [optional]
+**referralValue** | **String** | The referral code that was being evaluated when the rule failed. | [optional]
+**conditionIndex** | **Long** | The index of the condition that caused the rule to fail. | [optional]
+**effectIndex** | **Long** | The index of the effect that caused the rule to fail. | [optional]
+**details** | **String** | Additional details about the failure. |
+
+
+
+## Enum: FailureCodeEnum
+
+Name | Value
+---- | -----
+CONDITION_NOT_MET | "CONDITION_NOT_MET"
+EFFECT_FAILED | "EFFECT_FAILED"
+
+
+
diff --git a/docs/RuleFailureReason.md b/docs/RuleFailureReason.md
index 04830bd8..bab61836 100644
--- a/docs/RuleFailureReason.md
+++ b/docs/RuleFailureReason.md
@@ -14,6 +14,8 @@ Name | Type | Description | Notes
**couponValue** | **String** | The code of the coupon that was being evaluated at the time of the rule failure. | [optional]
**referralID** | **Long** | The ID of the referral that was being evaluated at the time of the rule failure. | [optional]
**referralValue** | **String** | The code of the referral that was being evaluated at the time of the rule failure. | [optional]
+**rewardId** | **Long** | The ID of the reward that was being evaluated at the time of the rule failure. | [optional]
+**rewardIntegrationId** | **String** | The integration ID of the reward that was being evaluated at the time of the rule failure. | [optional]
**ruleIndex** | **Long** | The index of the rule that failed within the ruleset. |
**ruleName** | **String** | The name of the rule that failed within the ruleset. |
**conditionIndex** | **Long** | The index of the condition that failed. | [optional]
diff --git a/docs/RuleMetadataEligibility.md b/docs/RuleMetadataEligibility.md
new file mode 100644
index 00000000..60cc3b33
--- /dev/null
+++ b/docs/RuleMetadataEligibility.md
@@ -0,0 +1,16 @@
+
+
+# RuleMetadataEligibility
+
+## Properties
+
+Name | Type | Description | Notes
+------------ | ------------- | ------------- | -------------
+**title** | **String** | A short description of the rule. |
+**displayName** | **String** | A customer-facing name for the rule. | [optional]
+**displayDescription** | **String** | A customer-facing description that explains the details of the rule. For example, this property can contain details about eligibility requirements, reward timelines, or terms and conditions. | [optional]
+**relatedData** | **String** | Any additional data associated with the rule, such as an image URL, vendor name, or a content management system (CMS) ID. | [optional]
+**eligibility** | [**List<RuleEligibility>**](RuleEligibility.md) | |
+
+
+
diff --git a/docs/RuleV2.md b/docs/RuleV2.md
new file mode 100644
index 00000000..fcc6ebd3
--- /dev/null
+++ b/docs/RuleV2.md
@@ -0,0 +1,17 @@
+
+
+# RuleV2
+
+Shared fields common to all V2 rule types.
+## Properties
+
+Name | Type | Description | Notes
+------------ | ------------- | ------------- | -------------
+**id** | **String** | Unique identifier of the rule. | [optional]
+**parentId** | **String** | ID of the parent rule, if any. | [optional]
+**title** | **String** | A short description of the rule. |
+**description** | **String** | A longer description of the rule. | [optional]
+**blocks** | **List<Object>** | The condition and effect blocks that make up this rule. |
+
+
+
diff --git a/docs/RulesetV2.md b/docs/RulesetV2.md
new file mode 100644
index 00000000..8f55d804
--- /dev/null
+++ b/docs/RulesetV2.md
@@ -0,0 +1,23 @@
+
+
+# RulesetV2
+
+Ruleset in the V2 JSON block format.
+## Properties
+
+Name | Type | Description | Notes
+------------ | ------------- | ------------- | -------------
+**id** | **Long** | Internal ID of this entity. | [optional] [readonly]
+**created** | [**OffsetDateTime**](OffsetDateTime.md) | The time this entity was created. | [optional] [readonly]
+**userId** | **Long** | The ID of the user that created this ruleset. | [optional] [readonly]
+**campaignId** | **Long** | The ID of the campaign that owns this entity. | [optional] [readonly]
+**templateId** | **Long** | The ID of the campaign template that owns this entity. | [optional] [readonly]
+**activatedAt** | [**OffsetDateTime**](OffsetDateTime.md) | Timestamp indicating when this ruleset was activated. | [optional] [readonly]
+**promotionRules** | [**List<RuleV2>**](RuleV2.md) | Set of promotion rules. |
+**strikethroughRules** | [**List<RuleV2>**](RuleV2.md) | Set of strikethrough rules. | [optional]
+**selectors** | [**List<Selector>**](Selector.md) | Variable bindings of type selector. | [optional] [readonly]
+**bundles** | [**List<Bundle>**](Bundle.md) | Variable bindings of type bundle. | [optional] [readonly]
+**parameters** | [**List<TemplateParameter>**](TemplateParameter.md) | Variable bindings of type template parameter. | [optional] [readonly]
+
+
+
diff --git a/docs/SamlConnection.md b/docs/SamlConnection.md
index 170c5267..732db417 100644
--- a/docs/SamlConnection.md
+++ b/docs/SamlConnection.md
@@ -8,6 +8,7 @@ A SAML 2.0 connection.
Name | Type | Description | Notes
------------ | ------------- | ------------- | -------------
**assertionConsumerServiceURL** | **String** | The location where the SAML assertion is sent with a HTTP POST. |
+**certificateExpiry** | [**OffsetDateTime**](OffsetDateTime.md) | The expiry date of the X.509 certificate. | [optional]
**accountId** | **Long** | The ID of the account that owns this entity. |
**name** | **String** | ID of the SAML service. |
**enabled** | **Boolean** | Determines if this SAML connection active. |
diff --git a/docs/ScalarCheckAttributeBlock.md b/docs/ScalarCheckAttributeBlock.md
new file mode 100644
index 00000000..a7498b6d
--- /dev/null
+++ b/docs/ScalarCheckAttributeBlock.md
@@ -0,0 +1,38 @@
+
+
+# ScalarCheckAttributeBlock
+
+Variant of `CheckAttributeBlock` for operators that compare an attribute against a single value.
+## Properties
+
+Name | Type | Description | Notes
+------------ | ------------- | ------------- | -------------
+**operator** | [**OperatorEnum**](#OperatorEnum) | The comparison operator applied to the attribute. | [optional]
+**value** | [**Object**](.md) | The comparison value for this operator. |
+
+
+
+## Enum: OperatorEnum
+
+Name | Value
+---- | -----
+EQUALS | "equals"
+NOT_EQUALS_ | "not(equals)"
+LESSTHAN | "lessThan"
+LESSTHANOREQUAL | "lessThanOrEqual"
+GREATERTHAN | "greaterThan"
+GREATERTHANOREQUAL | "greaterThanOrEqual"
+CONTAINS | "contains"
+NOT_CONTAINS_ | "not(contains)"
+MATCHESREGEXP | "matchesRegexp"
+STARTSWITH | "startsWith"
+ENDSWITH | "endsWith"
+ONEOF | "oneOf"
+NOT_ONEOF_ | "not(oneOf)"
+INCOLLECTION | "inCollection"
+NOT_INCOLLECTION_ | "not(inCollection)"
+AFTER | "after"
+BEFORE | "before"
+
+
+
diff --git a/docs/ScimBaseUserName.md b/docs/ScimBaseUserName.md
index d46c823c..6fa04d68 100644
--- a/docs/ScimBaseUserName.md
+++ b/docs/ScimBaseUserName.md
@@ -2,7 +2,7 @@
# ScimBaseUserName
-The components of the user’s real name.
+The components of the user's real name.
## Properties
Name | Type | Description | Notes
diff --git a/docs/SelectSelectorStep.md b/docs/SelectSelectorStep.md
new file mode 100644
index 00000000..bb27b8de
--- /dev/null
+++ b/docs/SelectSelectorStep.md
@@ -0,0 +1,37 @@
+
+
+# SelectSelectorStep
+
+Picks a subset of the items by count, range, or exact position. The `operator` determines which additional fields are required: - `many` selects items from `from` (`start` or `end`) and is limited by `count`. - `between` selects items between integer indices `from` and `to`. - `one` selects the single item at `index`.
+## Properties
+
+Name | Type | Description | Notes
+------------ | ------------- | ------------- | -------------
+**type** | [**TypeEnum**](#TypeEnum) | A step discriminator of type `select`. |
+**operator** | [**OperatorEnum**](#OperatorEnum) | The selection operator applied to the items. |
+**from** | [**Object**](.md) | The starting value of the selection. For the `many` operator this is the string `start` or `end`; for the `between` operator this is an integer start index. No discriminator is needed since the string and integer branches are distinguishable by JSON type alone. | [optional]
+**to** | **Integer** | The end index for the `between` operator. The item at this index is not included. | [optional]
+**count** | **Integer** | The maximum number of items to select for the `many` operator. | [optional]
+**index** | **Integer** | The exact position of the item to select for the `one` operator. | [optional]
+**partial** | **Boolean** | Indicates if the step returns fewer items than requested when the source list is shorter than the range needs. Always `true` for the `many` and `between` operators; not present for `one`, which fails instead of returning a partial result. | [optional]
+
+
+
+## Enum: TypeEnum
+
+Name | Value
+---- | -----
+SELECT | "select"
+
+
+
+## Enum: OperatorEnum
+
+Name | Value
+---- | -----
+MANY | "many"
+BETWEEN | "between"
+ONE | "one"
+
+
+
diff --git a/docs/Selector.md b/docs/Selector.md
new file mode 100644
index 00000000..62aa1475
--- /dev/null
+++ b/docs/Selector.md
@@ -0,0 +1,24 @@
+
+
+# Selector
+
+A named pipeline of steps (filter, sort, map, etc.) that filters or transforms a list of cart items. Replaces `cartItemFilter` [bindings](https://docs.talon.one/management-api#tag/Campaigns/operation/getRuleset.responses.200.bindings) in V1 rulesets.
+## Properties
+
+Name | Type | Description | Notes
+------------ | ------------- | ------------- | -------------
+**name** | **String** | The name of the selector binding. |
+**type** | [**TypeEnum**](#TypeEnum) | A binding of type `selector`. |
+**source** | **String** | The attribute path the pipeline draws items from. |
+**steps** | **List<Object>** | Ordered pipeline steps applied to the source items. |
+
+
+
+## Enum: TypeEnum
+
+Name | Value
+---- | -----
+SELECTOR | "selector"
+
+
+
diff --git a/docs/SelectorValueMapRef.md b/docs/SelectorValueMapRef.md
new file mode 100644
index 00000000..07883a0d
--- /dev/null
+++ b/docs/SelectorValueMapRef.md
@@ -0,0 +1,13 @@
+
+
+# SelectorValueMapRef
+
+A reference to a value map by its internal ID.
+## Properties
+
+Name | Type | Description | Notes
+------------ | ------------- | ------------- | -------------
+**id** | **Long** | The internal ID of the referenced value map. |
+
+
+
diff --git a/docs/SetDiscountEffectProps.md b/docs/SetDiscountEffectProps.md
index c57a8447..c05b7514 100644
--- a/docs/SetDiscountEffectProps.md
+++ b/docs/SetDiscountEffectProps.md
@@ -2,15 +2,15 @@
# SetDiscountEffectProps
-The properties specific to the \"setDiscount\" effect. This gets triggered whenever a validated rule contained a \"set discount\" effect. This is a discount that should be applied on the scope of defined with it.
+This effect indicates that a discount should be set on the total shopping cart value of the current order with the given label and amount. The discount should overwrite any existing discount with the same name. The most recent integration state update always returns the latest values for **all** effects, effectively overwriting any previous effects. Enabling [partial discounts](https://docs.talon.one/docs/product/applications/manage-general-settings#partial-discounts) allows a rule that would fail because of insufficient budget to pass. The rule still fails when the budget reaches `0`. Use the `desiredValue` property to identify the original value of the discount.
## Properties
Name | Type | Description | Notes
------------ | ------------- | ------------- | -------------
-**name** | **String** | The name / description of this discount |
-**value** | [**BigDecimal**](BigDecimal.md) | The total monetary value of the discount. |
-**scope** | **String** | The scope which the discount was applied on, can be one of (cartItems,additionalCosts,sessionTotal). | [optional]
-**desiredValue** | [**BigDecimal**](BigDecimal.md) | The original value of the discount. | [optional]
+**name** | **String** | The name or description of this discount. |
+**value** | [**BigDecimal**](BigDecimal.md) | The monetary value of the effective discount. |
+**scope** | **String** | What the discount applies to. Possible values: - `cartItems`: Discount on the price of the items. - `additionalCosts`: Discount on the [additional costs](https://docs.talon.one/docs/product/account/dev-tools/manage-additional-costs) of the items. - `sessionTotal`: Discount on the total value of the customer session. **Note:** [Cascading discounts](https://docs.talon.one/docs/product/applications/manage-general-settings#cascading-discounts) must be enabled for this property to be returned. | [optional]
+**desiredValue** | [**BigDecimal**](BigDecimal.md) | _(Partial discounts enabled only)_ The monetary value of the discount to be applied without considering budget limitations. | [optional]
diff --git a/docs/SetDiscountPerAdditionalCostEffectProps.md b/docs/SetDiscountPerAdditionalCostEffectProps.md
index d94246cf..7df30d5c 100644
--- a/docs/SetDiscountPerAdditionalCostEffectProps.md
+++ b/docs/SetDiscountPerAdditionalCostEffectProps.md
@@ -2,16 +2,16 @@
# SetDiscountPerAdditionalCostEffectProps
-The properties specific to the \"setDiscountPerAdditionalCost\" effect. This gets triggered whenever a validated rule contained a \"set per additional cost discount\" effect. This is a discount that should be applied on a specific additional cost.
+This effect indicates that a discount that should be applied on a specific additional cost. It is triggered whenever a rule containing a **Discount additional cost** effect is validated. Enabling [partial rewards](https://docs.talon.one/docs/product/applications/manage-general-settings#partial-rewards) allows a rule that would fail because of insufficient budget to pass. The rule still fails when the budget reaches 0. Use the `desiredValue` property to identify the original amount of loyalty points.
## Properties
Name | Type | Description | Notes
------------ | ------------- | ------------- | -------------
-**name** | **String** | The name / description of this discount |
-**additionalCostId** | **Long** | The ID of the additional cost. |
-**additionalCost** | **String** | The name of the additional cost. |
-**value** | [**BigDecimal**](BigDecimal.md) | The total monetary value of the discount. |
-**desiredValue** | [**BigDecimal**](BigDecimal.md) | The original value of the discount. | [optional]
+**name** | **String** | The name of the discount. |
+**additionalCostId** | **Long** | The identifier of the additional cost. |
+**additionalCost** | **String** | The API name of the additional cost. |
+**value** | [**BigDecimal**](BigDecimal.md) | The monetary value of the discount to apply. |
+**desiredValue** | [**BigDecimal**](BigDecimal.md) | _(Partial discounts enabled only)_ The monetary value of the discount to be applied without considering budget limitations. | [optional]
diff --git a/docs/SetDiscountPerAdditionalCostPerItemEffectProps.md b/docs/SetDiscountPerAdditionalCostPerItemEffectProps.md
index c67eb5dd..707fc952 100644
--- a/docs/SetDiscountPerAdditionalCostPerItemEffectProps.md
+++ b/docs/SetDiscountPerAdditionalCostPerItemEffectProps.md
@@ -2,18 +2,18 @@
# SetDiscountPerAdditionalCostPerItemEffectProps
-The properties specific to the \"setDiscountPerAdditionalCostPerItem\" effect. This gets triggered whenever a validated rule contained a \"set discount per additional cost per item\" effect. This is a discount that should be applied on a specific additional cost in a specific item.
+This effect indicates that a discount of a specific additional cost within a specific item should be applied. It gets triggered whenever a rule containing a **Discount additional cost per item** effect is validated. Use this effect when **all** items in the cart have an additional cost. If one of more items do not have an additional cost, the rule will fail.
## Properties
Name | Type | Description | Notes
------------ | ------------- | ------------- | -------------
-**name** | **String** | The name / description of this discount |
-**additionalCostId** | **Long** | The ID of the additional cost. |
-**value** | [**BigDecimal**](BigDecimal.md) | The total monetary value of the discount. |
-**position** | [**BigDecimal**](BigDecimal.md) | The index of the item in the cart item list containing the additional cost to be discounted. |
-**subPosition** | [**BigDecimal**](BigDecimal.md) | For cart items with `quantity` > 1, the sub position indicates which item the discount applies to. | [optional]
-**additionalCost** | **String** | The name of the additional cost. |
-**desiredValue** | [**BigDecimal**](BigDecimal.md) | Only with [partial discounts enabled](https://docs.talon.one/docs/product/campaigns/campaign-evaluation/#partial-discounts). Represents the monetary value of the discount to be applied to additional discount without considering budget limitations. | [optional]
+**name** | **String** | The description of this discount. `#number` is appended to the name. It is equal to the `position` property. |
+**additionalCostId** | **Long** | The identifier of the additional cost to be discounted. |
+**value** | [**BigDecimal**](BigDecimal.md) | The monetary value of the effective discount applied to the item's additional cost. |
+**position** | [**BigDecimal**](BigDecimal.md) | The index of the item in the `cartItem` object containing the additional cost that this discount applies to. |
+**subPosition** | [**BigDecimal**](BigDecimal.md) | The index of the item unit in its line item. | [optional]
+**additionalCost** | **String** | The API name of the additional cost to be discounted. |
+**desiredValue** | [**BigDecimal**](BigDecimal.md) | _[(Partial discounts enabled only)](https://docs.talon.one/docs/product/applications/manage-general-settings#partial-discounts)_. The monetary value of the discount to be applied to the additional cost without considering budget limitations. | [optional]
diff --git a/docs/SetDiscountPerItemEffectProps.md b/docs/SetDiscountPerItemEffectProps.md
index 6c41b043..c48d3884 100644
--- a/docs/SetDiscountPerItemEffectProps.md
+++ b/docs/SetDiscountPerItemEffectProps.md
@@ -2,23 +2,23 @@
# SetDiscountPerItemEffectProps
-The properties specific to the `setDiscountPerItem` effect, triggered whenever a validated rule contained a \"set per item discount\" effect. This is a discount that will be applied either on a specific item, on a specific item + additional cost or on all additional costs per item. This depends on the chosen scope.
+This effect schema is returned when you use the **Discount individual items**, **Discount individual items pro rata**, or **Discount individual item in bundles** effect in a rule. It indicates that a discount per item should be applied on the specific item specified in the effect. The properties it contains depends on: - Whether you used a pro rata effect or not. - Whether you used an effect with bundles or not. - Whether the partial discount feature is enabled.
## Properties
Name | Type | Description | Notes
------------ | ------------- | ------------- | -------------
-**name** | **String** | The name of the discount. Contains a hashtag character indicating the index of the position of the item the discount applies to. It is identical to the value of the `position` property. |
-**value** | [**BigDecimal**](BigDecimal.md) | The total monetary value of the discount. |
-**position** | [**BigDecimal**](BigDecimal.md) | The index of the item in the cart items list on which this discount should be applied. |
-**subPosition** | [**BigDecimal**](BigDecimal.md) | For cart items with `quantity` > 1, the sub position indicates which item the discount applies to. | [optional]
-**desiredValue** | [**BigDecimal**](BigDecimal.md) | The original value of the discount. | [optional]
-**scope** | **String** | The scope of the discount: - `additionalCosts`: The discount applies to all the additional costs of the item. - `itemTotal`: The discount applies to the price of the item + the additional costs of the item. - `price`: The discount applies to the price of the item. | [optional]
-**totalDiscount** | [**BigDecimal**](BigDecimal.md) | The total discount given if this effect is a result of a prorated discount. | [optional]
-**desiredTotalDiscount** | [**BigDecimal**](BigDecimal.md) | The original total discount to give if this effect is a result of a prorated discount. | [optional]
-**bundleIndex** | **Long** | The position of the bundle in a list of item bundles created from the same bundle definition. | [optional]
-**bundleName** | **String** | The name of the bundle definition. | [optional]
-**targetedItemPosition** | [**BigDecimal**](BigDecimal.md) | The index of the targeted bundle item on which the applied discount is based. | [optional]
-**targetedItemSubPosition** | [**BigDecimal**](BigDecimal.md) | The sub-position of the targeted bundle item on which the applied discount is based. | [optional]
+**name** | **String** | The description of this discount. `#number` is equal to the `position` property. |
+**value** | [**BigDecimal**](BigDecimal.md) | The monetary value of the effective discount applied to the item. |
+**position** | [**BigDecimal**](BigDecimal.md) | The index of the item in the `cartItem` object on which this discount should be applied. |
+**subPosition** | [**BigDecimal**](BigDecimal.md) | The index of the item unit in its line item. | [optional]
+**desiredValue** | [**BigDecimal**](BigDecimal.md) | _(Partial discounts enabled only)_ The monetary value of the discount to be applied to the item without considering budget limitations. | [optional]
+**scope** | **String** | What the discount applies to. Possible values: - `price`: discount on the price of the item. - `additionalCosts`: discount on the [additional cost](https://docs.talon.one/docs/product/account/dev-tools/manage-additional-costs) of the item. - `itemTotal`: discount on the sum of price + additional cost of the item. | [optional]
+**totalDiscount** | [**BigDecimal**](BigDecimal.md) | _(Pro rata discounts only)_ The monetary value of the total effective discount | [optional]
+**desiredTotalDiscount** | [**BigDecimal**](BigDecimal.md) | _(Pro rata discounts only)_ The monetary value of the total discount to be applied without considering budget limitations | [optional]
+**bundleIndex** | **Long** | _(Discounts with bundles only)_ The position of the specific item bundle in the list of bundles created from the same bundle definition. | [optional]
+**bundleName** | **String** | _(Discounts with bundles only)_ The name of the bundle definition. | [optional]
+**targetedItemPosition** | [**BigDecimal**](BigDecimal.md) | _(Discounting individual item in bundles only)_ The index of the targeted bundle item on which the applied discount is based. | [optional]
+**targetedItemSubPosition** | [**BigDecimal**](BigDecimal.md) | _(Discounting individual item in bundles only)_ The sub-position of the targeted bundle item on which the applied discount is based. | [optional]
**excludedFromPriceHistory** | **Boolean** | When set to `true`, the applied discount is excluded from the item's price history. | [optional]
diff --git a/docs/SetLoyaltyPointsExpiryDateEffectProps.md b/docs/SetLoyaltyPointsExpiryDateEffectProps.md
index 0c003185..350b50a5 100644
--- a/docs/SetLoyaltyPointsExpiryDateEffectProps.md
+++ b/docs/SetLoyaltyPointsExpiryDateEffectProps.md
@@ -2,7 +2,7 @@
# SetLoyaltyPointsExpiryDateEffectProps
-The properties specific to the \"setLoyaltyPointsExpiryDate\" effect. This gets triggered when a validated rule contains the \"set expiry date\" effect. The current expiry date gets set to the date given in the effect.
+This effect updates the expiry date of all active, pending, and unlimited point transactions to a specific date.
## Properties
Name | Type | Description | Notes
diff --git a/docs/ShowBundleMetadataEffectProps.md b/docs/ShowBundleMetadataEffectProps.md
index c156468f..cf49bb5f 100644
--- a/docs/ShowBundleMetadataEffectProps.md
+++ b/docs/ShowBundleMetadataEffectProps.md
@@ -2,7 +2,7 @@
# ShowBundleMetadataEffectProps
-This effect is **deprecated**. The properties specific to the \"ShowBundleMetadata\" effect. This effect contains information that allows you to associate the discounts from a rule in a bundle campaign with specific cart items. This way you can distinguish from \"normal\" discounts that were not the result of a product bundle.
+This effect is **deprecated**. The `ShowBundleMetadata` effect contains information that allows you to associate the discounts from a rule in a bundle campaign with specific cart items. This way you can distinguish from \"normal\" discounts that were not the result of a product bundle.
## Properties
Name | Type | Description | Notes
diff --git a/docs/ShowNotificationBlock.md b/docs/ShowNotificationBlock.md
new file mode 100644
index 00000000..2095ab70
--- /dev/null
+++ b/docs/ShowNotificationBlock.md
@@ -0,0 +1,20 @@
+
+
+# ShowNotificationBlock
+
+A block that displays a notification to the customer with a configurable type, title, and optional body message.
+## Properties
+
+Name | Type | Description | Notes
+------------ | ------------- | ------------- | -------------
+**id** | **String** | Unique identifier for this block. | [optional] [readonly]
+**type** | **String** | Identifies the block variant and determines which additional properties are present in it. |
+**tags** | **List<String>** | Semantic labels attached to this block. | [optional] [readonly]
+**notificationType** | **String** | The type of notification to display. |
+**title** | **String** | The notification heading shown to the customer. |
+**body** | **String** | The notification body text. Supports template placeholders (e.g. \"{{$Session.Total}}\") evaluated at rule execution time. | [optional]
+**onFailure** | **List<Object>** | Blocks evaluated when this block fails or returns false. | [optional]
+**onError** | [**Map<String, List<Object>>**](List.md) | Named error handlers evaluated when a specific error occurs. | [optional]
+
+
+
diff --git a/docs/ShowNotificationEffectProps.md b/docs/ShowNotificationEffectProps.md
index de631aa1..ea215b4e 100644
--- a/docs/ShowNotificationEffectProps.md
+++ b/docs/ShowNotificationEffectProps.md
@@ -2,14 +2,14 @@
# ShowNotificationEffectProps
-The properties specific to the \"showNotification\" effect. This gets triggered whenever a validated rule contained a \"show notification\" effect.
+You can use notifications to inform customers of certain events. There are four types of notification messages: - `Info` - `Offer` - `Error` - `Misc` It is up to you to use the Rule Builder to decide why and when to show notifications. Notifications can be used as both rule effects and failure effects. A common use case is to display the notification at the top of the cart view in your web app. You can use the notification type to vary the styling of the notification message.
## Properties
Name | Type | Description | Notes
------------ | ------------- | ------------- | -------------
-**notificationType** | **String** | The type of notification that should be shown (e.g. error/warning/info). |
-**title** | **String** | Title of the notification. |
-**body** | **String** | Body of the notification. |
+**notificationType** | **String** | The type of notification. |
+**title** | **String** | The title of the notification. |
+**body** | **String** | The body of the notification. |
diff --git a/docs/SortSelectorStep.md b/docs/SortSelectorStep.md
new file mode 100644
index 00000000..70f577b7
--- /dev/null
+++ b/docs/SortSelectorStep.md
@@ -0,0 +1,22 @@
+
+
+# SortSelectorStep
+
+Sorts items by one or more field expressions.
+## Properties
+
+Name | Type | Description | Notes
+------------ | ------------- | ------------- | -------------
+**type** | [**TypeEnum**](#TypeEnum) | A step discriminator of type `sort`. |
+**fields** | [**List<SortSelectorStepField>**](SortSelectorStepField.md) | One or more fields to sort by, applied in order. Each field has its own direction. |
+
+
+
+## Enum: TypeEnum
+
+Name | Value
+---- | -----
+SORT | "sort"
+
+
+
diff --git a/docs/SortSelectorStepField.md b/docs/SortSelectorStepField.md
new file mode 100644
index 00000000..a7810d7b
--- /dev/null
+++ b/docs/SortSelectorStepField.md
@@ -0,0 +1,22 @@
+
+
+# SortSelectorStepField
+
+## Properties
+
+Name | Type | Description | Notes
+------------ | ------------- | ------------- | -------------
+**expression** | **String** | The attribute path the items are sorted by. |
+**direction** | [**DirectionEnum**](#DirectionEnum) | The sort direction for this field. |
+
+
+
+## Enum: DirectionEnum
+
+Name | Value
+---- | -----
+ASC | "asc"
+DESC | "desc"
+
+
+
diff --git a/docs/StartAchievementProgressEffectProps.md b/docs/StartAchievementProgressEffectProps.md
new file mode 100644
index 00000000..fdc4a50b
--- /dev/null
+++ b/docs/StartAchievementProgressEffectProps.md
@@ -0,0 +1,18 @@
+
+
+# StartAchievementProgressEffectProps
+
+This effect indicates that the customer's progress in an achievement was started during the current session. The progress value is set to 0. It is triggered when a rule using the [Start achievement progress](https://docs.talon.one/docs/product/rules/effects/use-effects#start-achievement-progress) effect is successfully validated. This effect only marks the start of progress tracking. It can fire together with `increaseAchievementProgress` when progress starts and increases at the same time. In that case, both effects share the same `progressTrackerId`, `startDate`, and `endDate`. For [on-completion achievements](https://docs.talon.one/docs/product/campaigns/achievements/overview#recurring-on-completion-achievements), each iteration also gets its own `startDate` and `endDate`.
+## Properties
+
+Name | Type | Description | Notes
+------------ | ------------- | ------------- | -------------
+**achievementId** | **Long** | The ID of the achievement. |
+**achievementName** | **String** | The name of the achievement. |
+**progressTrackerId** | **Long** | The ID of the customer's progress tracker for this achievement. For [on-completion achievements](https://docs.talon.one/docs/product/campaigns/achievements/overview#recurring-on-completion-achievements), this effect generates a unique ID for each iteration. | [optional]
+**target** | [**BigDecimal**](BigDecimal.md) | The target value to complete the achievement. |
+**startDate** | [**OffsetDateTime**](OffsetDateTime.md) | Timestamp at which the customer's progress started. |
+**endDate** | [**OffsetDateTime**](OffsetDateTime.md) | Timestamp at which this progress period ends. Only returned for achievements that have a fixed end date. [On-completion achievements](https://docs.talon.one/docs/product/campaigns/achievements/overview#recurring-on-completion-achievements) have no end date. | [optional]
+
+
+
diff --git a/docs/StrikethroughLabelingNotification.md b/docs/StrikethroughLabelingNotification.md
index fbbfd1d6..81ccaff0 100644
--- a/docs/StrikethroughLabelingNotification.md
+++ b/docs/StrikethroughLabelingNotification.md
@@ -7,7 +7,7 @@ The strikethrough labels notification for an application.
Name | Type | Description | Notes
------------ | ------------- | ------------- | -------------
-**version** | [**VersionEnum**](#VersionEnum) | The version of the strikethrough pricing notification. | [optional]
+**version** | [**VersionEnum**](#VersionEnum) | The version of the strikethrough pricing notification. Set for **scheduled** strikethrough pricing updates only. | [optional]
**validFrom** | [**OffsetDateTime**](OffsetDateTime.md) | Timestamp at which the strikethrough pricing update becomes valid. Set for **scheduled** strikethrough pricing updates (version: v2) only. | [optional]
**applicationId** | **Long** | The ID of the Application to which the catalog items labels belongs. |
**currentBatch** | **Long** | The batch number of the notification. Notifications might be sent in different batches. |
diff --git a/docs/StrikethroughSetDiscountPerItemEffectProps.md b/docs/StrikethroughSetDiscountPerItemEffectProps.md
index d0dc9cb1..c1c6ebd2 100644
--- a/docs/StrikethroughSetDiscountPerItemEffectProps.md
+++ b/docs/StrikethroughSetDiscountPerItemEffectProps.md
@@ -7,9 +7,9 @@ setDiscountPerItem effect in strikethrough pricing payload.
Name | Type | Description | Notes
------------ | ------------- | ------------- | -------------
-**name** | **String** | effect name. |
-**value** | [**Object**](.md) | discount value. |
-**excludedFromPriceHistory** | **Boolean** | | [optional]
+**name** | **String** | The effect name. |
+**value** | [**Object**](.md) | The discount value. |
+**excludedFromPriceHistory** | **Boolean** | When set to `true`, the applied discount is excluded from the item's price history. | [optional]
diff --git a/docs/StrikethroughSetDiscountPerItemMemberEffectProps.md b/docs/StrikethroughSetDiscountPerItemMemberEffectProps.md
index 17c8ec8e..0e6b2fa6 100644
--- a/docs/StrikethroughSetDiscountPerItemMemberEffectProps.md
+++ b/docs/StrikethroughSetDiscountPerItemMemberEffectProps.md
@@ -7,8 +7,8 @@ setDiscountPerItem member effect in strikethrough pricing payload.
Name | Type | Description | Notes
------------ | ------------- | ------------- | -------------
-**name** | **String** | effect name. |
-**value** | [**Object**](.md) | discount value. |
+**name** | **String** | The effect name. |
+**value** | [**Object**](.md) | The discount value. |
diff --git a/docs/SupportCustomerProfile.md b/docs/SupportCustomerProfile.md
new file mode 100644
index 00000000..9cf531f7
--- /dev/null
+++ b/docs/SupportCustomerProfile.md
@@ -0,0 +1,16 @@
+
+
+# SupportCustomerProfile
+
+## Properties
+
+Name | Type | Description | Notes
+------------ | ------------- | ------------- | -------------
+**id** | **Long** | The internal ID of the customer profile. |
+**created** | [**OffsetDateTime**](OffsetDateTime.md) | The time the customer profile was created. |
+**integrationId** | **String** | The integration ID set by your integration layer. |
+**attributes** | [**Object**](.md) | Arbitrary properties associated with this item. |
+**applicationMemberships** | [**List<ApplicationMembership>**](ApplicationMembership.md) | The applications the customer belongs to. |
+
+
+
diff --git a/docs/SupportRequest.md b/docs/SupportRequest.md
new file mode 100644
index 00000000..d1716eee
--- /dev/null
+++ b/docs/SupportRequest.md
@@ -0,0 +1,50 @@
+
+
+# SupportRequest
+
+Summary of a support request created by a customer support agent.
+## Properties
+
+Name | Type | Description | Notes
+------------ | ------------- | ------------- | -------------
+**id** | **Long** | Identifier of the support request. |
+**applicationId** | **Long** | Identifier of the Application connected to the loyalty program or the campaign. It is displayed in your Talon.One deployment URL. |
+**campaignId** | **Long** | Identifier of the campaign where the coupon or gift card is created. | [optional]
+**loyaltyProgramId** | **Long** | Identifier of the loyalty program where the points are added or deducted. | [optional]
+**subledgerId** | **Long** | Identifier of the subledger the points are added to or deducted from. If there is no existing subledger with this ID, the subledger is created automatically. | [optional]
+**createdByUser** | **String** | Email address of the customer support agent who created the support request. |
+**createdAt** | [**OffsetDateTime**](OffsetDateTime.md) | Timestamp when the request was made. |
+**customerProfileId** | **String** | Integration ID of the customer profile linked to the support request. |
+**requestType** | [**RequestTypeEnum**](#RequestTypeEnum) | Type of reward requested, including gift cards, personal coupons, and loyalty point additions or deductions. |
+**requestValue** | **Float** | Requested monetary balance of the gift card or the number of loyalty points to be added or deducted. | [optional]
+**requestNote** | **String** | Notes attached to the support request. |
+**requestStatus** | [**RequestStatusEnum**](#RequestStatusEnum) | Current status of the support request. |
+**processedAt** | [**OffsetDateTime**](OffsetDateTime.md) | Timestamp when the request was approved or rejected. | [optional]
+**processingNote** | **String** | Notes attached by the admin when rejecting or approving a request. | [optional]
+**processedByUser** | **String** | Email address of the admin who approved or rejected the support request. | [optional]
+**couponCode** | **String** | Coupon code associated with the approved support request. | [optional]
+
+
+
+## Enum: RequestTypeEnum
+
+Name | Value
+---- | -----
+GIFT_CARD | "gift_card"
+PERSONAL_COUPON | "personal_coupon"
+LOYALTY_POINTS_ADDED | "loyalty_points_added"
+LOYALTY_POINTS_DEDUCTED | "loyalty_points_deducted"
+
+
+
+## Enum: RequestStatusEnum
+
+Name | Value
+---- | -----
+PENDING_APPROVAL | "pending_approval"
+APPROVED | "approved"
+REJECTED | "rejected"
+EXPIRED | "expired"
+
+
+
diff --git a/docs/SupportRequestInput.md b/docs/SupportRequestInput.md
new file mode 100644
index 00000000..a7e7123c
--- /dev/null
+++ b/docs/SupportRequestInput.md
@@ -0,0 +1,30 @@
+
+
+# SupportRequestInput
+
+## Properties
+
+Name | Type | Description | Notes
+------------ | ------------- | ------------- | -------------
+**applicationId** | **Long** | Identifier of the Application connected to the loyalty program or the campaign. It is displayed in your Talon.One deployment URL. |
+**campaignId** | **Long** | Identifier of the campaign where the coupon or gift card is created. | [optional]
+**loyaltyProgramId** | **Long** | Identifier of the loyalty program. You can get the ID with the [List loyalty programs](https://docs.talon.one/management-api#tag/Loyalty/operation/getLoyaltyPrograms) endpoint. | [optional]
+**subledgerId** | **Long** | Identifier of the subledger the points are added to or deducted from. If there is no existing subledger with this ID, the subledger is created automatically. | [optional]
+**customerProfileId** | **String** | Integration ID of the customer profile linked to the support request. |
+**requestType** | [**RequestTypeEnum**](#RequestTypeEnum) | Type of reward requested, including gift cards, personal coupons, and loyalty point additions or deductions. |
+**requestValue** | **Float** | Requested monetary balance of the gift card or the number of loyalty points to be added or deducted. | [optional]
+**requestNote** | **String** | Notes attached to the support request. |
+
+
+
+## Enum: RequestTypeEnum
+
+Name | Value
+---- | -----
+GIFT_CARD | "gift_card"
+PERSONAL_COUPON | "personal_coupon"
+LOYALTY_POINTS_ADDED | "loyalty_points_added"
+LOYALTY_POINTS_DEDUCTED | "loyalty_points_deducted"
+
+
+
diff --git a/docs/TalangAttribute.md b/docs/TalangAttribute.md
index 5125f78e..1992977b 100644
--- a/docs/TalangAttribute.md
+++ b/docs/TalangAttribute.md
@@ -42,6 +42,8 @@ REFERRAL | "Referral"
SESSION | "Session"
STORE | "Store"
ACHIEVEMENTS | "Achievements"
+ADVANCEDEVENT | "AdvancedEvent"
+ADVANCEDEVENTCONNECTEDSESSION | "AdvancedEventConnectedSession"
diff --git a/docs/TemplateParameter.md b/docs/TemplateParameter.md
new file mode 100644
index 00000000..eda1e5d2
--- /dev/null
+++ b/docs/TemplateParameter.md
@@ -0,0 +1,19 @@
+
+
+# TemplateParameter
+
+A named parameter definition that exposes a configurable value in a campaign template. Replaces `templateParameter` [bindings](https://docs.talon.one/management-api#tag/Campaigns/operation/getRuleset.responses.200.bindings) in V1 rulesets.
+## Properties
+
+Name | Type | Description | Notes
+------------ | ------------- | ------------- | -------------
+**name** | **String** | The name of the template parameter. |
+**value** | [**Object**](.md) | The parameter's bound value. Its type depends on the `valueType`. |
+**valueType** | **String** | The data type of the value, derived from the bound expression (for example `number`, `string`, `boolean`, `percent`, `time`, `(list string)`, or `(list number)`). |
+**minValue** | [**BigDecimal**](BigDecimal.md) | The minimum value allowed for this parameter. | [optional]
+**maxValue** | [**BigDecimal**](BigDecimal.md) | The maximum value allowed for this parameter. | [optional]
+**description** | **String** | A human-readable description of the parameter shown when creating campaigns from the template. |
+**attribute** | **Long** | The ID of the attribute linked to this parameter. Omitted when the parameter is not linked to an attribute. | [optional]
+
+
+
diff --git a/docs/TriggerCustomEffectBlock.md b/docs/TriggerCustomEffectBlock.md
new file mode 100644
index 00000000..c3e03716
--- /dev/null
+++ b/docs/TriggerCustomEffectBlock.md
@@ -0,0 +1,19 @@
+
+
+# TriggerCustomEffectBlock
+
+A block that triggers a configured custom effect and passes its required parameters.
+## Properties
+
+Name | Type | Description | Notes
+------------ | ------------- | ------------- | -------------
+**id** | **String** | Unique identifier for this block. | [optional] [readonly]
+**type** | **String** | Identifies the block variant and determines which additional properties are present in it. |
+**tags** | **List<String>** | Semantic labels attached to this block. | [optional] [readonly]
+**customEffect** | [**TriggerCustomEffectBlockCustomEffect**](TriggerCustomEffectBlockCustomEffect.md) | |
+**params** | [**Object**](.md) | The custom effect's parameters, in configured order. Each property name is the parameter's title, lowercased with spaces replaced by underscores (for example, `Order ID` becomes `order_id`); falls back to `param_0`, `param_1`, and so on if a title is blank or collides with another. | [optional]
+**target** | [**TriggerCustomEffectBlockTarget**](TriggerCustomEffectBlockTarget.md) | |
+**onError** | [**Map<String, List<Object>>**](List.md) | Named error handlers evaluated when a specific error occurs. | [optional]
+
+
+
diff --git a/docs/TriggerCustomEffectBlockCustomEffect.md b/docs/TriggerCustomEffectBlockCustomEffect.md
new file mode 100644
index 00000000..0884c9a5
--- /dev/null
+++ b/docs/TriggerCustomEffectBlockCustomEffect.md
@@ -0,0 +1,15 @@
+
+
+# TriggerCustomEffectBlockCustomEffect
+
+The custom effect to trigger.
+## Properties
+
+Name | Type | Description | Notes
+------------ | ------------- | ------------- | -------------
+**id** | **Long** | The unique identifier of the custom effect. |
+**name** | **String** | The name of the custom effect, as used in API requests. |
+**title** | **String** | The display name of the custom effect. |
+
+
+
diff --git a/docs/TriggerCustomEffectBlockTarget.md b/docs/TriggerCustomEffectBlockTarget.md
new file mode 100644
index 00000000..93ab7f6b
--- /dev/null
+++ b/docs/TriggerCustomEffectBlockTarget.md
@@ -0,0 +1,26 @@
+
+
+# TriggerCustomEffectBlockTarget
+
+The target scope of this effect.
+## Properties
+
+Name | Type | Description | Notes
+------------ | ------------- | ------------- | -------------
+**type** | [**TypeEnum**](#TypeEnum) | The scope the custom effect applies to: - `cart` applies once to the whole cart. - `allItems` applies once per cart item. - `selector` applies once per item matched by the named selector. - `globalFilter` applies once per item matched by the named global item filter. - `bundle` applies once per item in the named bundle. |
+**name** | **String** | The name of the targeted selector or bundle. Only set when `type` is `selector`, `globalFilter`, or `bundle`. | [optional]
+
+
+
+## Enum: TypeEnum
+
+Name | Value
+---- | -----
+CART | "cart"
+ALLITEMS | "allItems"
+SELECTOR | "selector"
+GLOBALFILTER | "globalFilter"
+BUNDLE | "bundle"
+
+
+
diff --git a/docs/TriggerWebhookBlock.md b/docs/TriggerWebhookBlock.md
new file mode 100644
index 00000000..63430abc
--- /dev/null
+++ b/docs/TriggerWebhookBlock.md
@@ -0,0 +1,18 @@
+
+
+# TriggerWebhookBlock
+
+A block that triggers a configured webhook and passes its required parameters.
+## Properties
+
+Name | Type | Description | Notes
+------------ | ------------- | ------------- | -------------
+**id** | **String** | Unique identifier for this block. | [optional] [readonly]
+**type** | **String** | Identifies the block variant and determines which additional properties are present in it. |
+**tags** | **List<String>** | Semantic labels attached to this block. | [optional] [readonly]
+**webhook** | [**TriggerWebhookBlockWebhook**](TriggerWebhookBlockWebhook.md) | |
+**params** | [**Object**](.md) | The webhook's parameters, in configured order. Each property name is the parameter's title, lowercased with spaces replaced by underscores (for example, `Order ID` becomes `order_id`); falls back to `param_0`, `param_1`, and so on if a title is blank or collides with another. | [optional]
+**onError** | [**Map<String, List<Object>>**](List.md) | Named error handlers evaluated when a specific error occurs. | [optional]
+
+
+
diff --git a/docs/TriggerWebhookBlockWebhook.md b/docs/TriggerWebhookBlockWebhook.md
new file mode 100644
index 00000000..175f612c
--- /dev/null
+++ b/docs/TriggerWebhookBlockWebhook.md
@@ -0,0 +1,14 @@
+
+
+# TriggerWebhookBlockWebhook
+
+The webhook to trigger.
+## Properties
+
+Name | Type | Description | Notes
+------------ | ------------- | ------------- | -------------
+**id** | **Long** | The unique identifier of the webhook. |
+**title** | **String** | The display name of the webhook. |
+
+
+
diff --git a/docs/TriggerWebhookEffectProps.md b/docs/TriggerWebhookEffectProps.md
index f9211f76..e079b606 100644
--- a/docs/TriggerWebhookEffectProps.md
+++ b/docs/TriggerWebhookEffectProps.md
@@ -2,13 +2,13 @@
# TriggerWebhookEffectProps
-The properties specific to the \"triggerWebhook\" effect. This gets triggered whenever a validated rule contained a \"trigger webhook\" effect. This is communicated as an FYI and should usually not require action on your side.
+This effect is triggered when a rule containing a [webhook effect](https://docs.talon.one/docs/product/rules/effects/available-effects#webhooks) is validated. The details are shared with you for your information only. It usually doesn't require an action on your side.
## Properties
Name | Type | Description | Notes
------------ | ------------- | ------------- | -------------
-**webhookId** | [**BigDecimal**](BigDecimal.md) | The ID of the webhook that was triggered. |
-**webhookName** | **String** | The name of the webhook that was triggered. |
+**webhookId** | [**BigDecimal**](BigDecimal.md) | The internal ID of the webhook. |
+**webhookName** | **String** | The name of the webhook. |
diff --git a/docs/UnaryCheckAttributeBlock.md b/docs/UnaryCheckAttributeBlock.md
new file mode 100644
index 00000000..3c3d6027
--- /dev/null
+++ b/docs/UnaryCheckAttributeBlock.md
@@ -0,0 +1,26 @@
+
+
+# UnaryCheckAttributeBlock
+
+Variant of `CheckAttributeBlock` for operators that test a property of the attribute itself with no comparison value.
+## Properties
+
+Name | Type | Description | Notes
+------------ | ------------- | ------------- | -------------
+**operator** | [**OperatorEnum**](#OperatorEnum) | The unary operator applied to the attribute. These operators require no comparison value. | [optional]
+
+
+
+## Enum: OperatorEnum
+
+Name | Value
+---- | -----
+EMPTY | "empty"
+NOT_EMPTY_ | "not(empty)"
+EXISTS | "exists"
+NOT_EXISTS_ | "not(exists)"
+ISTRUE | "isTrue"
+ISFALSE | "isFalse"
+
+
+
diff --git a/docs/UnlockRewardEffectProps.md b/docs/UnlockRewardEffectProps.md
new file mode 100644
index 00000000..5b784392
--- /dev/null
+++ b/docs/UnlockRewardEffectProps.md
@@ -0,0 +1,18 @@
+
+
+# UnlockRewardEffectProps
+
+The properties specific to the \"unlockReward\" effect. This gets triggered whenever a validated rule unlocks a reward for a customer profile.
+## Properties
+
+Name | Type | Description | Notes
+------------ | ------------- | ------------- | -------------
+**integrationId** | **String** | The integration ID assigned to the customer reward unlock. |
+**rewardId** | **Long** | The internal ID of the reward that was unlocked. |
+**applicationId** | **Long** | The internal ID of the application the reward belongs to. |
+**profileIntegrationId** | **String** | The integration ID of the customer profile that unlocked the reward. |
+**unlockedAt** | [**OffsetDateTime**](OffsetDateTime.md) | The time the reward was unlocked. |
+**cardIdentifier** | **String** | The identifier of the loyalty card, which must match the regular expression `^[A-Za-z0-9._%+@-]+$`. | [optional]
+
+
+
diff --git a/docs/UpdateAchievementProgressBlock.md b/docs/UpdateAchievementProgressBlock.md
new file mode 100644
index 00000000..9009156d
--- /dev/null
+++ b/docs/UpdateAchievementProgressBlock.md
@@ -0,0 +1,26 @@
+
+
+# UpdateAchievementProgressBlock
+
+A block that updates the progress of a customer in an achievement.
+## Properties
+
+Name | Type | Description | Notes
+------------ | ------------- | ------------- | -------------
+**id** | **String** | Unique identifier for this block. | [optional] [readonly]
+**type** | **String** | Identifies the block variant and determines which additional properties are present in it. |
+**tags** | **List<String>** | Semantic labels attached to this block. | [optional] [readonly]
+**operator** | [**OperatorEnum**](#OperatorEnum) | |
+**value** | **String** | The value to update the progress by. Supports template placeholders (e.g. \"{{$Session.Total / 2}}\") for dynamic quantities. |
+**achievement** | [**UpdateAchievementProgressBlockAchievement**](UpdateAchievementProgressBlockAchievement.md) | |
+
+
+
+## Enum: OperatorEnum
+
+Name | Value
+---- | -----
+INCREASEBY | "increaseBy"
+
+
+
diff --git a/docs/UpdateAchievementProgressBlockAchievement.md b/docs/UpdateAchievementProgressBlockAchievement.md
new file mode 100644
index 00000000..e856ab98
--- /dev/null
+++ b/docs/UpdateAchievementProgressBlockAchievement.md
@@ -0,0 +1,16 @@
+
+
+# UpdateAchievementProgressBlockAchievement
+
+The achievement to update.
+## Properties
+
+Name | Type | Description | Notes
+------------ | ------------- | ------------- | -------------
+**id** | **Long** | The ID of the achievement. |
+**name** | **String** | The internal name of the achievement used in API requests. |
+**title** | **String** | The display name of the achievement in the Campaign Manager. |
+**target** | [**BigDecimal**](BigDecimal.md) | The required number of actions or the transactional milestone to complete the achievement. |
+
+
+
diff --git a/docs/UpdateAchievementV2.md b/docs/UpdateAchievementV2.md
index f4cf12a6..7005dcc2 100644
--- a/docs/UpdateAchievementV2.md
+++ b/docs/UpdateAchievementV2.md
@@ -6,19 +6,17 @@
Name | Type | Description | Notes
------------ | ------------- | ------------- | -------------
-**name** | **String** | The internal name of the achievement used in API requests. **Note**: The name should start with a letter. This cannot be changed after the achievement has been created. | [optional]
-**title** | **String** | The display name for the achievement in the Campaign Manager. | [optional]
-**description** | **String** | A description of the achievement. | [optional]
-**target** | [**BigDecimal**](BigDecimal.md) | The required number of actions or the transactional milestone to complete the achievement. | [optional]
+**name** | **String** | The internal name of the achievement used in API requests. **Note**: The name should start with a letter. This cannot be changed after the achievement has been created. |
+**title** | **String** | The display name for the achievement in the Campaign Manager. |
+**description** | **String** | A description of the achievement. |
+**target** | [**BigDecimal**](BigDecimal.md) | The required number of actions or the transactional milestone to complete the achievement. |
**period** | **String** | The relative duration after which the achievement ends and resets for a particular customer profile. **Note**: The `period` does not start when the achievement is created. The period is a **positive real number** followed by one letter indicating the time unit. Examples: `30s`, `40m`, `1h`, `5D`, `7W`, `10M`, `15Y`. Available units: - `s`: seconds - `m`: minutes - `h`: hours - `D`: days - `W`: weeks - `M`: months - `Y`: years You can also round certain units down to the beginning of period and up to the end of period.: - `_D` for rounding down days only. Signifies the start of the day. Example: `30D_D` - `_U` for rounding up days, weeks, months and years. Signifies the end of the day, week, month or year. Example: `23W_U` **Note**: You can either use the round down and round up option or set an absolute period. | [optional]
**recurrencePolicy** | [**RecurrencePolicyEnum**](#RecurrencePolicyEnum) | The policy that determines if and how the achievement recurs. - `no_recurrence`: The achievement can be completed only once. - `on_expiration`: The achievement resets after it expires and becomes available again. - `on_completion`: When the customer progress status reaches `completed`, the achievement resets and becomes available again. | [optional]
**activationPolicy** | [**ActivationPolicyEnum**](#ActivationPolicyEnum) | The policy that determines how the achievement starts, ends, or resets. - `user_action`: The achievement ends or resets relative to when the customer started the achievement. - `fixed_schedule`: The achievement starts, ends, or resets for all customers following a fixed schedule. | [optional]
**fixedStartDate** | [**OffsetDateTime**](OffsetDateTime.md) | The achievement's start date when `activationPolicy` is set to `fixed_schedule`. **Note:** It must be an RFC3339 timestamp string. | [optional]
**endDate** | [**OffsetDateTime**](OffsetDateTime.md) | The achievement's end date. If defined, customers cannot participate in the achievement after this date. **Note:** It must be an RFC3339 timestamp string. | [optional]
**allowRollbackAfterCompletion** | **Boolean** | When `true`, customer progress can be rolled back in completed achievements. | [optional]
-**sandbox** | **Boolean** | Indicates if this achievement is a live or sandbox achievement. Achievements of a given type can only be connected to Applications of the same type. | [optional]
-**subscribedApplications** | **List<Long>** | A list containing the IDs of all applications that are subscribed to A list containing the IDs of all Applications that are connected to this achievement. | [optional]
-**timezone** | **String** | A string containing an IANA timezone descriptor. | [optional]
+**subscribedApplications** | **List<Long>** | A list containing the IDs of all applications that are subscribed to A list containing the IDs of all Applications that are connected to this achievement. |
diff --git a/docs/UpdateApplication.md b/docs/UpdateApplication.md
index 41a96bdc..53a6b418 100644
--- a/docs/UpdateApplication.md
+++ b/docs/UpdateApplication.md
@@ -23,6 +23,7 @@ Name | Type | Description | Notes
**defaultEvaluationGroupId** | **Long** | The ID of the default campaign evaluation group to which new campaigns will be added unless a different group is selected when creating the campaign. | [optional]
**defaultCartItemFilterId** | **Long** | The ID of the default Cart-Item-Filter for this application. | [optional]
**enableCampaignStateManagement** | **Boolean** | Indicates whether the campaign staging and revisions feature is enabled for the Application. **Important:** After this feature is enabled, it cannot be disabled. | [optional]
+**bestPriorPriceSettings** | [**BestPriorPriceSettings**](BestPriorPriceSettings.md) | | [optional]
diff --git a/docs/UpdateAttributeEffectProps.md b/docs/UpdateAttributeEffectProps.md
index b3a29243..61e377b8 100644
--- a/docs/UpdateAttributeEffectProps.md
+++ b/docs/UpdateAttributeEffectProps.md
@@ -2,13 +2,13 @@
# UpdateAttributeEffectProps
-The properties specific to the \"updateAttribute\" effect. This gets triggered whenever a validated rule contained an \"update an attribute\" effect.
+This effect indicates that a rule containing an [Update attribute value](https://docs.talon.one/docs/product/rules/effects/available-effects#update-effects) or [Update cart item attribute value](https://docs.talon.one/docs/product/rules/effects/available-effects#update-effects) was validated. You should update the value of the attribute in your system based on the content of the returned effect.
## Properties
Name | Type | Description | Notes
------------ | ------------- | ------------- | -------------
-**path** | **String** | The exact path of the attribute that was updated. |
-**value** | [**Object**](.md) | The new value of this attribute. The value can be of the following types: - boolean - location - number - string - time - list of any of those types |
+**path** | **String** | The entity type and the attribute name. |
+**value** | [**Object**](.md) | The new value of the attribute. |
diff --git a/docs/UpdateAttributeValueBlock.md b/docs/UpdateAttributeValueBlock.md
new file mode 100644
index 00000000..63de7a05
--- /dev/null
+++ b/docs/UpdateAttributeValueBlock.md
@@ -0,0 +1,34 @@
+
+
+# UpdateAttributeValueBlock
+
+A block that sets or updates an attribute. The `type` may be empty for [built-in attributes](https://docs.talon.one/docs/dev/concepts/attributes).
+## Properties
+
+Name | Type | Description | Notes
+------------ | ------------- | ------------- | -------------
+**id** | **String** | Unique identifier for this block. | [optional] [readonly]
+**type** | **String** | Identifies the block variant and determines which additional properties are present in it. |
+**tags** | **List<String>** | Semantic labels attached to this block. | [optional] [readonly]
+**operator** | [**OperatorEnum**](#OperatorEnum) | The update operation applied to the attribute. |
+**attribute** | [**UpdateAttributeValueBlockAttribute**](UpdateAttributeValueBlockAttribute.md) | |
+**value** | [**Object**](.md) | The value of the attribute. Omitted when operator is set to `toggle`. | [optional]
+**target** | [**UpdateAttributeValueBlockTarget**](UpdateAttributeValueBlockTarget.md) | |
+
+
+
+## Enum: OperatorEnum
+
+Name | Value
+---- | -----
+SETTO | "setTo"
+INCREASEBY | "increaseBy"
+DECREASEBY | "decreaseBy"
+MULTIPLYBY | "multiplyBy"
+DIVIDEBY | "divideBy"
+TOGGLE | "toggle"
+LATERBY | "laterBy"
+EARLIERBY | "earlierBy"
+
+
+
diff --git a/docs/UpdateAttributeValueBlockAttribute.md b/docs/UpdateAttributeValueBlockAttribute.md
new file mode 100644
index 00000000..e4798487
--- /dev/null
+++ b/docs/UpdateAttributeValueBlockAttribute.md
@@ -0,0 +1,17 @@
+
+
+# UpdateAttributeValueBlockAttribute
+
+The attribute being updated.
+## Properties
+
+Name | Type | Description | Notes
+------------ | ------------- | ------------- | -------------
+**id** | **Long** | The internal ID of the attribute. Reverts to `0` when the attribute is deleted or does not exist. |
+**entity** | **String** | The entity type that owns the attribute. Reverts to an empty string when the attribute is deleted or does not exist. |
+**name** | **String** | The attribute name as used in API requests. |
+**title** | **String** | The human-readable name of the attribute. |
+**type** | **String** | The data type of the attribute. |
+
+
+
diff --git a/docs/UpdateAttributeValueBlockTarget.md b/docs/UpdateAttributeValueBlockTarget.md
new file mode 100644
index 00000000..2cbe4320
--- /dev/null
+++ b/docs/UpdateAttributeValueBlockTarget.md
@@ -0,0 +1,31 @@
+
+
+# UpdateAttributeValueBlockTarget
+
+The entity or item scope that this effect operates on.
+## Properties
+
+Name | Type | Description | Notes
+------------ | ------------- | ------------- | -------------
+**type** | [**TypeEnum**](#TypeEnum) | Identifies the target scope of the attribute update. |
+**name** | **String** | Identifies the name of the target when its type is set to `selector` or `globalFilter`. | [optional]
+
+
+
+## Enum: TypeEnum
+
+Name | Value
+---- | -----
+SESSION | "session"
+PROFILE | "profile"
+ADVOCATEPROFILE | "advocateProfile"
+COUPON | "coupon"
+REFERRAL | "referral"
+EVENT | "event"
+LOYALTYCARD | "loyaltyCard"
+ALLITEMS | "allItems"
+SELECTOR | "selector"
+GLOBALFILTER | "globalFilter"
+
+
+
diff --git a/docs/UpdateAudience.md b/docs/UpdateAudience.md
index 2643a56a..b5be1ac8 100644
--- a/docs/UpdateAudience.md
+++ b/docs/UpdateAudience.md
@@ -7,6 +7,7 @@
Name | Type | Description | Notes
------------ | ------------- | ------------- | -------------
**name** | **String** | The human-friendly display name for this audience. |
+**subscribedApplicationsIds** | **List<Long>** | A list of the IDs of the Applications that are connected to this audience. | [optional]
diff --git a/docs/UpdateAudienceMembershipBlock.md b/docs/UpdateAudienceMembershipBlock.md
new file mode 100644
index 00000000..2b77f319
--- /dev/null
+++ b/docs/UpdateAudienceMembershipBlock.md
@@ -0,0 +1,36 @@
+
+
+# UpdateAudienceMembershipBlock
+
+A block that adds a customer to or removes them from an audience.
+## Properties
+
+Name | Type | Description | Notes
+------------ | ------------- | ------------- | -------------
+**id** | **String** | Unique identifier for this block. | [optional] [readonly]
+**type** | **String** | Identifies the block variant and determines which additional properties are present in it. |
+**tags** | **List<String>** | Semantic labels attached to this block. | [optional] [readonly]
+**operator** | [**OperatorEnum**](#OperatorEnum) | The action to perform. |
+**profile** | [**ProfileEnum**](#ProfileEnum) | The customer profile to add or remove from the audience. `Current` targets the customer in the current session; `Advocate` targets the person who invited their friend via referral program. |
+**audience** | [**UpdateAudienceMembershipBlockAudience**](UpdateAudienceMembershipBlockAudience.md) | |
+
+
+
+## Enum: OperatorEnum
+
+Name | Value
+---- | -----
+ADD | "add"
+REMOVE | "remove"
+
+
+
+## Enum: ProfileEnum
+
+Name | Value
+---- | -----
+CURRENT | "Current"
+ADVOCATE | "Advocate"
+
+
+
diff --git a/docs/UpdateAudienceMembershipBlockAudience.md b/docs/UpdateAudienceMembershipBlockAudience.md
new file mode 100644
index 00000000..e12738d1
--- /dev/null
+++ b/docs/UpdateAudienceMembershipBlockAudience.md
@@ -0,0 +1,16 @@
+
+
+# UpdateAudienceMembershipBlockAudience
+
+The audience to add the customer to or remove them from.
+## Properties
+
+Name | Type | Description | Notes
+------------ | ------------- | ------------- | -------------
+**id** | **Long** | The ID of the audience. |
+**name** | **String** | The display name of the audience. |
+**integration** | **String** | The Talon.One-supported [3rd-party platform](https://docs.talon.one/docs/dev/technology-partners/overview) that this audience was created in. For example, `mParticle`, `Segment`, `Shopify`, `Braze`, or `Iterable`. **Note:** If you do not integrate with any of these platforms, do not use this property. | [optional]
+**integrationId** | **String** | The ID of this audience in the third-party integration. **Note:** To create an audience that doesn't come from a 3rd party platform, do not use this property. | [optional]
+
+
+
diff --git a/docs/UpdateCampaign.md b/docs/UpdateCampaign.md
index afe4e861..6358d09d 100644
--- a/docs/UpdateCampaign.md
+++ b/docs/UpdateCampaign.md
@@ -47,6 +47,7 @@ LOYALTY | "loyalty"
GIVEAWAYS | "giveaways"
STRIKETHROUGH | "strikethrough"
ACHIEVEMENTS | "achievements"
+ADVANCEDEVENTS | "advancedEvents"
diff --git a/docs/UpdateCampaignTemplate.md b/docs/UpdateCampaignTemplate.md
index b81bc83d..4a07fccb 100644
--- a/docs/UpdateCampaignTemplate.md
+++ b/docs/UpdateCampaignTemplate.md
@@ -48,6 +48,7 @@ LOYALTY | "loyalty"
GIVEAWAYS | "giveaways"
STRIKETHROUGH | "strikethrough"
ACHIEVEMENTS | "achievements"
+ADVANCEDEVENTS | "advancedEvents"
diff --git a/docs/UpdateExperiment.md b/docs/UpdateExperiment.md
index b4fda975..d8bf10a0 100644
--- a/docs/UpdateExperiment.md
+++ b/docs/UpdateExperiment.md
@@ -8,6 +8,19 @@ Name | Type | Description | Notes
------------ | ------------- | ------------- | -------------
**isVariantAssignmentExternal** | **Boolean** | The source of the assignment. - false - The variant assignment is handled internally by Talon.One. - true - The variant assignment is handled externally. |
**campaign** | [**UpdateCampaign**](UpdateCampaign.md) | |
+**goalType** | [**GoalTypeEnum**](#GoalTypeEnum) | The goal of the experiment. Determines which single metric is used to decide the winning variant. When set to `other`, multiple metrics are used. If omitted, the current value is preserved. | [optional]
+**goalDescription** | **String** | A description of the experiment goal. Provides context for the AI summary and helps it interpret the outcome of the experiment against the stated goal. If omitted, the current value is preserved. | [optional]
+
+
+
+## Enum: GoalTypeEnum
+
+Name | Value
+---- | -----
+OTHER | "other"
+MAXIMIZE_REVENUE | "maximize_revenue"
+MAXIMIZE_ITEMS_SOLD | "maximize_items_sold"
+OPTIMIZE_DISCOUNT_EFFICIENCY | "optimize_discount_efficiency"
diff --git a/docs/UpdateReward.md b/docs/UpdateReward.md
new file mode 100644
index 00000000..41b1088e
--- /dev/null
+++ b/docs/UpdateReward.md
@@ -0,0 +1,27 @@
+
+
+# UpdateReward
+
+## Properties
+
+Name | Type | Description | Notes
+------------ | ------------- | ------------- | -------------
+**name** | **String** | The name of the reward. |
+**description** | **String** | A description of the reward. | [optional]
+**status** | [**StatusEnum**](#StatusEnum) | The status of the reward. |
+**eligibilityConditions** | [**Rule**](Rule.md) | | [optional]
+**rule** | [**Rule**](Rule.md) | | [optional]
+**bindings** | [**List<Binding>**](Binding.md) | A list of named variables created before the reward's rules are evaluated. Each binding pairs a name with a talang expression. The expression is evaluated once and its result is available by name in any rule condition or effect. Bindings must be defined outside of individual rules. | [optional]
+**pointsRequired** | [**List<RewardPointsRequired>**](RewardPointsRequired.md) | The loyalty points required to activate the reward. Each object defines the specific loyalty program and subledger from which points are deducted when activating the reward. **Note:** - Objects with an `id` are updated. - Objects without an `id` are created. - Existing objects omitted from the payload are deleted. | [optional]
+
+
+
+## Enum: StatusEnum
+
+Name | Value
+---- | -----
+ACTIVE | "active"
+INACTIVE | "inactive"
+
+
+
diff --git a/docs/UpdateRiskNotification.md b/docs/UpdateRiskNotification.md
new file mode 100644
index 00000000..efc15ae6
--- /dev/null
+++ b/docs/UpdateRiskNotification.md
@@ -0,0 +1,46 @@
+
+
+# UpdateRiskNotification
+
+Data for updating a risk notification.
+## Properties
+
+Name | Type | Description | Notes
+------------ | ------------- | ------------- | -------------
+**entity** | [**EntityEnum**](#EntityEnum) | The entity type to analyze within the given time frame. |
+**activity** | [**ActivityEnum**](#ActivityEnum) | The activity metric to analyze within the given entity. |
+**timeFrame** | [**TimeFrameEnum**](#TimeFrameEnum) | The rolling time window for risk evaluation. |
+**active** | **Boolean** | Indicates whether this risk notification is active. |
+
+
+
+## Enum: EntityEnum
+
+Name | Value
+---- | -----
+PROFILE | "customer_profile"
+SESSION | "customer_session"
+
+
+
+## Enum: ActivityEnum
+
+Name | Value
+---- | -----
+LOYALTY_POINTS_EARNED | "loyalty_points_earned"
+DISCOUNTED_AMOUNT | "discounted_amount"
+COMPLETED_ORDERS | "completed_orders"
+COUPON_ATTEMPTS | "coupon_attempts"
+
+
+
+## Enum: TimeFrameEnum
+
+Name | Value
+---- | -----
+_1D | "1D"
+_7D | "7D"
+_30D | "30D"
+
+
+
diff --git a/docs/UpdateSupportRequest.md b/docs/UpdateSupportRequest.md
new file mode 100644
index 00000000..31edf58e
--- /dev/null
+++ b/docs/UpdateSupportRequest.md
@@ -0,0 +1,23 @@
+
+
+# UpdateSupportRequest
+
+## Properties
+
+Name | Type | Description | Notes
+------------ | ------------- | ------------- | -------------
+**requestStatus** | [**RequestStatusEnum**](#RequestStatusEnum) | Current status of the support request. |
+**processingNote** | **String** | Notes attached by the admin when rejecting or approving a request. | [optional]
+
+
+
+## Enum: RequestStatusEnum
+
+Name | Value
+---- | -----
+APPROVED | "approved"
+REJECTED | "rejected"
+EXPIRED | "expired"
+
+
+
diff --git a/docs/UseRewardEffectProps.md b/docs/UseRewardEffectProps.md
new file mode 100644
index 00000000..0b228ef4
--- /dev/null
+++ b/docs/UseRewardEffectProps.md
@@ -0,0 +1,15 @@
+
+
+# UseRewardEffectProps
+
+This effect is triggered when a rule that uses a customer's unlocked reward is validated during session evaluation.
+## Properties
+
+Name | Type | Description | Notes
+------------ | ------------- | ------------- | -------------
+**integrationId** | **String** | The integration ID of the customer reward that was used. |
+**rewardId** | **Long** | The ID of the reward that was used. |
+**applicationId** | **Long** | The ID of the Application the reward belongs to. |
+
+
+
diff --git a/docs/WebhookAuthenticationBaseBasic.md b/docs/WebhookAuthenticationBaseBasic.md
new file mode 100644
index 00000000..d0b19ba3
--- /dev/null
+++ b/docs/WebhookAuthenticationBaseBasic.md
@@ -0,0 +1,23 @@
+
+
+# WebhookAuthenticationBaseBasic
+
+Authenticates the webhook with Basic HTTP authentication.
+## Properties
+
+Name | Type | Description | Notes
+------------ | ------------- | ------------- | -------------
+**name** | **String** | The name of the webhook authentication. |
+**type** | [**TypeEnum**](#TypeEnum) | A webhook authentication discriminator of type `basic`. |
+**data** | [**WebhookAuthenticationDataBasic**](WebhookAuthenticationDataBasic.md) | |
+
+
+
+## Enum: TypeEnum
+
+Name | Value
+---- | -----
+BASIC | "basic"
+
+
+
diff --git a/docs/WebhookAuthenticationBaseCustom.md b/docs/WebhookAuthenticationBaseCustom.md
new file mode 100644
index 00000000..af025c06
--- /dev/null
+++ b/docs/WebhookAuthenticationBaseCustom.md
@@ -0,0 +1,23 @@
+
+
+# WebhookAuthenticationBaseCustom
+
+Authenticates the webhook with a custom set of HTTP headers.
+## Properties
+
+Name | Type | Description | Notes
+------------ | ------------- | ------------- | -------------
+**name** | **String** | The name of the webhook authentication. |
+**type** | [**TypeEnum**](#TypeEnum) | A webhook authentication discriminator of type `custom`. |
+**data** | [**WebhookAuthenticationDataCustom**](WebhookAuthenticationDataCustom.md) | |
+
+
+
+## Enum: TypeEnum
+
+Name | Value
+---- | -----
+CUSTOM | "custom"
+
+
+
diff --git a/docs/WillAwardGiveawayEffectProps.md b/docs/WillAwardGiveawayEffectProps.md
index fc643303..b8fe6dd6 100644
--- a/docs/WillAwardGiveawayEffectProps.md
+++ b/docs/WillAwardGiveawayEffectProps.md
@@ -2,14 +2,14 @@
# WillAwardGiveawayEffectProps
-The properties specific to the \"awardGiveaway\" effect when the session is not closed yet. This effect replaces \"awardGiveaway\" only when updating a session with any state other than \"closed\". This is to ensure no giveaway codes are leaked when they are still not guaranteed to be awarded.
+The equivalent of the `awardGiveaway` effect but returned when updating a session with any state other than `closed`. This ensures no giveaway codes are leaked when they are still not guaranteed to be awarded. For more information about session states, see [Manage the session's state](https://docs.talon.one/docs/dev/concepts/entities/customer-sessions#manage-the-sessions-state).
## Properties
Name | Type | Description | Notes
------------ | ------------- | ------------- | -------------
-**poolId** | **Long** | The ID of the giveaways pool the code will be taken from. |
-**poolName** | **String** | The name of the giveaways pool the code will be taken from. |
-**recipientIntegrationId** | **String** | The integration ID of the profile that will be awarded the giveaway. |
+**poolId** | **Long** | The internal ID of the giveaway pool. |
+**poolName** | **String** | The name of the giveaway pool. |
+**recipientIntegrationId** | **String** | The integration ID of the customer that receives the giveaway. |
diff --git a/docs/WithinCheckAttributeBlock.md b/docs/WithinCheckAttributeBlock.md
new file mode 100644
index 00000000..f44f7665
--- /dev/null
+++ b/docs/WithinCheckAttributeBlock.md
@@ -0,0 +1,27 @@
+
+
+# WithinCheckAttributeBlock
+
+Variant of `CheckAttributeBlock` for the `within` and `not(within)` operators, which require both a start and end value.
+## Properties
+
+Name | Type | Description | Notes
+------------ | ------------- | ------------- | -------------
+**operator** | [**OperatorEnum**](#OperatorEnum) | The range comparison operator. Must be `within` or `not(within)`. | [optional]
+**start** | [**Object**](.md) | The start value for the `within` operator. |
+**end** | [**Object**](.md) | The end value for the `within` operator. |
+**startInclusive** | **Boolean** | When `true`, the `start` value is included in the range for the `within` operator. | [optional]
+**endInclusive** | **Boolean** | When `true`, the `end` value is included in the range for the `within` operator. | [optional]
+**timezoneInsensitive** | **Boolean** | Indicates whether the `within` operator ignores time zones and compares the wall-clock time only. When `false`, time zones are taken into account. | [optional]
+
+
+
+## Enum: OperatorEnum
+
+Name | Value
+---- | -----
+WITHIN | "within"
+NOT_WITHIN_ | "not(within)"
+
+
+
diff --git a/pom.xml b/pom.xml
index 6bcce658..8f13b4b7 100644
--- a/pom.xml
+++ b/pom.xml
@@ -5,7 +5,7 @@
talon-one-client
jar
talon-one-client
- 15.0.0
+ 16.0.0
https://github.com/talon-one/maven-artefacts
Talon.One unified JAVA SDK. It allows for programmatic access to the integration and management API with their respective authentication strategies
diff --git a/src/main/java/one/talon/ApiClient.java b/src/main/java/one/talon/ApiClient.java
index 976f2da5..9170d07b 100644
--- a/src/main/java/one/talon/ApiClient.java
+++ b/src/main/java/one/talon/ApiClient.java
@@ -132,7 +132,7 @@ private void init() {
json = new JSON();
// Set default User-Agent.
- setUserAgent("OpenAPI-Generator/15.0.0/java");
+ setUserAgent("OpenAPI-Generator/16.0.0/java");
authentications = new HashMap();
}
diff --git a/src/main/java/one/talon/JSON.java b/src/main/java/one/talon/JSON.java
index 5469e3e9..4761a04f 100644
--- a/src/main/java/one/talon/JSON.java
+++ b/src/main/java/one/talon/JSON.java
@@ -52,6 +52,24 @@ public class JSON {
public static GsonBuilder createGson() {
GsonFireBuilder fireBuilder = new GsonFireBuilder()
+ .registerTypeSelector(CatalogAction.class, new TypeSelector() {
+ @Override
+ public Class getClassForElement(JsonElement readElement) {
+ Map classByDiscriminatorValue = new HashMap();
+ classByDiscriminatorValue.put("CatalogAction", CatalogAction.class);
+ return getClassByDiscriminator(classByDiscriminatorValue,
+ getDiscriminatorValue(readElement, "type"));
+ }
+ })
+ .registerTypeSelector(CheckAttributeBlock.class, new TypeSelector() {
+ @Override
+ public Class getClassForElement(JsonElement readElement) {
+ Map classByDiscriminatorValue = new HashMap();
+ classByDiscriminatorValue.put("CheckAttributeBlock", CheckAttributeBlock.class);
+ return getClassByDiscriminator(classByDiscriminatorValue,
+ getDiscriminatorValue(readElement, "operator"));
+ }
+ })
;
GsonBuilder builder = fireBuilder.createGsonBuilder();
return builder;
diff --git a/src/main/java/one/talon/api/IntegrationApi.java b/src/main/java/one/talon/api/IntegrationApi.java
index 501708f3..4e024bd2 100644
--- a/src/main/java/one/talon/api/IntegrationApi.java
+++ b/src/main/java/one/talon/api/IntegrationApi.java
@@ -32,6 +32,7 @@
import one.talon.model.Audience;
import one.talon.model.BestPriorPrice;
import one.talon.model.BestPriorPriceRequest;
+import java.math.BigDecimal;
import one.talon.model.Catalog;
import one.talon.model.CatalogSyncRequest;
import one.talon.model.Coupon;
@@ -43,6 +44,7 @@
import one.talon.model.DeleteLoyaltyTransactionsRequest;
import one.talon.model.ErrorResponse;
import one.talon.model.ErrorResponseWithStatus;
+import one.talon.model.EventV3;
import one.talon.model.GenerateLoyaltyCard;
import one.talon.model.InlineResponse200;
import one.talon.model.InlineResponse2001;
@@ -50,14 +52,18 @@
import one.talon.model.InlineResponse2003;
import one.talon.model.InlineResponse2004;
import one.talon.model.InlineResponse2005;
+import one.talon.model.InlineResponse20056;
import one.talon.model.InlineResponse2006;
import one.talon.model.InlineResponse2007;
import one.talon.model.InlineResponse201;
import one.talon.model.IntegrationCustomerSessionResponse;
import one.talon.model.IntegrationEventV2Request;
import one.talon.model.IntegrationEventV2Response;
+import one.talon.model.IntegrationEventV3Request;
+import one.talon.model.IntegrationEventV3Response;
import one.talon.model.IntegrationRequest;
import one.talon.model.IntegrationStateV2;
+import one.talon.model.IntegrationUnlockRewardRequest;
import one.talon.model.LoyaltyBalancesWithTiers;
import one.talon.model.LoyaltyCard;
import one.talon.model.LoyaltyCardBalances;
@@ -71,6 +77,7 @@
import one.talon.model.Referral;
import one.talon.model.ReopenSessionResponse;
import one.talon.model.ReturnIntegrationRequest;
+import one.talon.model.RewardUnlockRejection;
import one.talon.model.UpdateAudience;
import java.lang.reflect.Type;
@@ -970,6 +977,7 @@ public okhttp3.Call deleteAudienceMembershipsV2Async(Long audienceId, final ApiC
| 400 | Bad request | - |
| 401 | Unauthorized | - |
| 404 | Not found | - |
+ | 409 | Conflict. The audience is used by one or more experiments. Each `errors[].source.resource` value contains the Campaign Manager path of a blocking experiment. | - |
*/
public okhttp3.Call deleteAudienceV2Call(Long audienceId, final ApiCallback _callback) throws ApiException {
@@ -1018,7 +1026,7 @@ private okhttp3.Call deleteAudienceV2ValidateBeforeCall(Long audienceId, final A
/**
* Delete audience
- * Delete an audience created by a third-party integration. > [!warning] This endpoint also removes any associations recorded between a customer profile and this audience. > [!note] Audiences can also be deleted via the Campaign Manager. See the [docs](https://docs.talon.one/docs/product/audiences/managing-audiences#deleting-an-audience).
+ * Delete an audience. > [!warning] This endpoint also removes any associations recorded between a customer profile and this audience. > [!note] Audiences can also be deleted via the Campaign Manager. See the [docs](https://docs.talon.one/docs/product/audiences/managing-audiences#deleting-an-audience). The audience isn't deleted if any experiment variant uses it. The response identifies each blocking experiment by its Campaign Manager path.
* @param audienceId The ID of the audience. (required)
* @throws ApiException If fail to call the API, e.g. server error or cannot deserialize the response body
* @http.response.details
@@ -1028,6 +1036,7 @@ private okhttp3.Call deleteAudienceV2ValidateBeforeCall(Long audienceId, final A
| 400 | Bad request | - |
| 401 | Unauthorized | - |
| 404 | Not found | - |
+ | 409 | Conflict. The audience is used by one or more experiments. Each `errors[].source.resource` value contains the Campaign Manager path of a blocking experiment. | - |
*/
public void deleteAudienceV2(Long audienceId) throws ApiException {
@@ -1036,7 +1045,7 @@ public void deleteAudienceV2(Long audienceId) throws ApiException {
/**
* Delete audience
- * Delete an audience created by a third-party integration. > [!warning] This endpoint also removes any associations recorded between a customer profile and this audience. > [!note] Audiences can also be deleted via the Campaign Manager. See the [docs](https://docs.talon.one/docs/product/audiences/managing-audiences#deleting-an-audience).
+ * Delete an audience. > [!warning] This endpoint also removes any associations recorded between a customer profile and this audience. > [!note] Audiences can also be deleted via the Campaign Manager. See the [docs](https://docs.talon.one/docs/product/audiences/managing-audiences#deleting-an-audience). The audience isn't deleted if any experiment variant uses it. The response identifies each blocking experiment by its Campaign Manager path.
* @param audienceId The ID of the audience. (required)
* @return ApiResponse<Void>
* @throws ApiException If fail to call the API, e.g. server error or cannot deserialize the response body
@@ -1047,6 +1056,7 @@ public void deleteAudienceV2(Long audienceId) throws ApiException {
| 400 | Bad request | - |
| 401 | Unauthorized | - |
| 404 | Not found | - |
+ | 409 | Conflict. The audience is used by one or more experiments. Each `errors[].source.resource` value contains the Campaign Manager path of a blocking experiment. | - |
*/
public ApiResponse deleteAudienceV2WithHttpInfo(Long audienceId) throws ApiException {
@@ -1056,7 +1066,7 @@ public ApiResponse deleteAudienceV2WithHttpInfo(Long audienceId) throws Ap
/**
* Delete audience (asynchronously)
- * Delete an audience created by a third-party integration. > [!warning] This endpoint also removes any associations recorded between a customer profile and this audience. > [!note] Audiences can also be deleted via the Campaign Manager. See the [docs](https://docs.talon.one/docs/product/audiences/managing-audiences#deleting-an-audience).
+ * Delete an audience. > [!warning] This endpoint also removes any associations recorded between a customer profile and this audience. > [!note] Audiences can also be deleted via the Campaign Manager. See the [docs](https://docs.talon.one/docs/product/audiences/managing-audiences#deleting-an-audience). The audience isn't deleted if any experiment variant uses it. The response identifies each blocking experiment by its Campaign Manager path.
* @param audienceId The ID of the audience. (required)
* @param _callback The callback to be executed when the API call finishes
* @return The request call
@@ -1068,6 +1078,7 @@ public ApiResponse deleteAudienceV2WithHttpInfo(Long audienceId) throws Ap
| 400 | Bad request | - |
| 401 | Unauthorized | - |
| 404 | Not found | - |
+ | 409 | Conflict. The audience is used by one or more experiments. Each `errors[].source.resource` value contains the Campaign Manager path of a blocking experiment. | - |
*/
public okhttp3.Call deleteAudienceV2Async(Long audienceId, final ApiCallback _callback) throws ApiException {
@@ -1938,6 +1949,7 @@ public okhttp3.Call getCustomerAchievementsAsync(String integrationId, List 404 | Not found | - |
*/
- public okhttp3.Call getCustomerInventoryCall(String integrationId, Boolean profile, Boolean referrals, Boolean coupons, Boolean loyalty, Boolean giveaways, Boolean achievements, final ApiCallback _callback) throws ApiException {
+ public okhttp3.Call getCustomerInventoryCall(String integrationId, Boolean profile, Boolean referrals, Boolean coupons, Boolean loyalty, Boolean giveaways, Boolean achievements, Boolean unlockedRewards, final ApiCallback _callback) throws ApiException {
Object localVarPostBody = null;
// create path and map variables
@@ -1982,6 +1994,10 @@ public okhttp3.Call getCustomerInventoryCall(String integrationId, Boolean profi
localVarQueryParams.addAll(localVarApiClient.parameterToPair("achievements", achievements));
}
+ if (unlockedRewards != null) {
+ localVarQueryParams.addAll(localVarApiClient.parameterToPair("unlockedRewards", unlockedRewards));
+ }
+
Map localVarHeaderParams = new HashMap();
Map localVarCookieParams = new HashMap();
Map localVarFormParams = new HashMap();
@@ -2004,7 +2020,7 @@ public okhttp3.Call getCustomerInventoryCall(String integrationId, Boolean profi
}
@SuppressWarnings("rawtypes")
- private okhttp3.Call getCustomerInventoryValidateBeforeCall(String integrationId, Boolean profile, Boolean referrals, Boolean coupons, Boolean loyalty, Boolean giveaways, Boolean achievements, final ApiCallback _callback) throws ApiException {
+ private okhttp3.Call getCustomerInventoryValidateBeforeCall(String integrationId, Boolean profile, Boolean referrals, Boolean coupons, Boolean loyalty, Boolean giveaways, Boolean achievements, Boolean unlockedRewards, final ApiCallback _callback) throws ApiException {
// verify the required parameter 'integrationId' is set
if (integrationId == null) {
@@ -2012,7 +2028,7 @@ private okhttp3.Call getCustomerInventoryValidateBeforeCall(String integrationId
}
- okhttp3.Call localVarCall = getCustomerInventoryCall(integrationId, profile, referrals, coupons, loyalty, giveaways, achievements, _callback);
+ okhttp3.Call localVarCall = getCustomerInventoryCall(integrationId, profile, referrals, coupons, loyalty, giveaways, achievements, unlockedRewards, _callback);
return localVarCall;
}
@@ -2027,6 +2043,7 @@ private okhttp3.Call getCustomerInventoryValidateBeforeCall(String integrationId
* @param loyalty Set to `true` to include loyalty information in the response. (optional)
* @param giveaways Set to `true` to include giveaways information in the response. (optional)
* @param achievements Set to `true` to include achievement information in the response. (optional)
+ * @param unlockedRewards Set to `true` to include `unlocked` rewards that have not been `used` in the response. (optional)
* @return CustomerInventory
* @throws ApiException If fail to call the API, e.g. server error or cannot deserialize the response body
* @http.response.details
@@ -2037,8 +2054,8 @@ private okhttp3.Call getCustomerInventoryValidateBeforeCall(String integrationId
| 404 | Not found | - |
*/
- public CustomerInventory getCustomerInventory(String integrationId, Boolean profile, Boolean referrals, Boolean coupons, Boolean loyalty, Boolean giveaways, Boolean achievements) throws ApiException {
- ApiResponse localVarResp = getCustomerInventoryWithHttpInfo(integrationId, profile, referrals, coupons, loyalty, giveaways, achievements);
+ public CustomerInventory getCustomerInventory(String integrationId, Boolean profile, Boolean referrals, Boolean coupons, Boolean loyalty, Boolean giveaways, Boolean achievements, Boolean unlockedRewards) throws ApiException {
+ ApiResponse localVarResp = getCustomerInventoryWithHttpInfo(integrationId, profile, referrals, coupons, loyalty, giveaways, achievements, unlockedRewards);
return localVarResp.getData();
}
@@ -2052,6 +2069,7 @@ public CustomerInventory getCustomerInventory(String integrationId, Boolean prof
* @param loyalty Set to `true` to include loyalty information in the response. (optional)
* @param giveaways Set to `true` to include giveaways information in the response. (optional)
* @param achievements Set to `true` to include achievement information in the response. (optional)
+ * @param unlockedRewards Set to `true` to include `unlocked` rewards that have not been `used` in the response. (optional)
* @return ApiResponse<CustomerInventory>
* @throws ApiException If fail to call the API, e.g. server error or cannot deserialize the response body
* @http.response.details
@@ -2062,8 +2080,8 @@ public CustomerInventory getCustomerInventory(String integrationId, Boolean prof
| 404 | Not found | - |
*/
- public ApiResponse getCustomerInventoryWithHttpInfo(String integrationId, Boolean profile, Boolean referrals, Boolean coupons, Boolean loyalty, Boolean giveaways, Boolean achievements) throws ApiException {
- okhttp3.Call localVarCall = getCustomerInventoryValidateBeforeCall(integrationId, profile, referrals, coupons, loyalty, giveaways, achievements, null);
+ public ApiResponse getCustomerInventoryWithHttpInfo(String integrationId, Boolean profile, Boolean referrals, Boolean coupons, Boolean loyalty, Boolean giveaways, Boolean achievements, Boolean unlockedRewards) throws ApiException {
+ okhttp3.Call localVarCall = getCustomerInventoryValidateBeforeCall(integrationId, profile, referrals, coupons, loyalty, giveaways, achievements, unlockedRewards, null);
Type localVarReturnType = new TypeToken(){}.getType();
return localVarApiClient.execute(localVarCall, localVarReturnType);
}
@@ -2078,6 +2096,7 @@ public ApiResponse getCustomerInventoryWithHttpInfo(String in
* @param loyalty Set to `true` to include loyalty information in the response. (optional)
* @param giveaways Set to `true` to include giveaways information in the response. (optional)
* @param achievements Set to `true` to include achievement information in the response. (optional)
+ * @param unlockedRewards Set to `true` to include `unlocked` rewards that have not been `used` in the response. (optional)
* @param _callback The callback to be executed when the API call finishes
* @return The request call
* @throws ApiException If fail to process the API call, e.g. serializing the request body object
@@ -2089,16 +2108,16 @@ public ApiResponse getCustomerInventoryWithHttpInfo(String in
| 404 | Not found | - |
*/
- public okhttp3.Call getCustomerInventoryAsync(String integrationId, Boolean profile, Boolean referrals, Boolean coupons, Boolean loyalty, Boolean giveaways, Boolean achievements, final ApiCallback _callback) throws ApiException {
+ public okhttp3.Call getCustomerInventoryAsync(String integrationId, Boolean profile, Boolean referrals, Boolean coupons, Boolean loyalty, Boolean giveaways, Boolean achievements, Boolean unlockedRewards, final ApiCallback _callback) throws ApiException {
- okhttp3.Call localVarCall = getCustomerInventoryValidateBeforeCall(integrationId, profile, referrals, coupons, loyalty, giveaways, achievements, _callback);
+ okhttp3.Call localVarCall = getCustomerInventoryValidateBeforeCall(integrationId, profile, referrals, coupons, loyalty, giveaways, achievements, unlockedRewards, _callback);
Type localVarReturnType = new TypeToken(){}.getType();
localVarApiClient.executeAsync(localVarCall, localVarReturnType, _callback);
return localVarCall;
}
/**
* Build call for getCustomerSession
- * @param customerSessionId The `integration ID` of the customer session. You set this ID when you create a customer session. You can see existing customer session integration IDs in the Campaign Manager's **Sessions** menu, or via the [List Application session](https://docs.talon.one/management-api#tag/Customer-data/operation/getApplicationSessions) endpoint. (required)
+ * @param customerSessionId The `integration ID` of the customer session. You set this ID when you create a customer session. You can see existing customer session integration IDs in the Campaign Manager's **Sessions** menu, or via the [List Application session](https://docs.talon.one/management-api#tag/Customer-data/operation/getApplicationSessions) endpoint. **Notes**: - There is no length limit for this ID. - It must be URL-encoded. For example, replace spaces with `%20`. [Learn more](https://www.w3schools.com/tags/ref_urlencode.asp). (required)
* @param _callback Callback for upload/download progress
* @return Call to execute
* @throws ApiException If fail to serialize the request body object
@@ -2157,7 +2176,7 @@ private okhttp3.Call getCustomerSessionValidateBeforeCall(String customerSession
/**
* Get customer session
* Get the details of the given customer session. You can get the same data via other endpoints that also apply changes, which can help you save requests and increase performance. See: - [Update customer session](#tag/Customer-sessions/operation/updateCustomerSessionV2) - [Update customer profile](#tag/Customer-profiles/operation/updateCustomerProfileV2)
- * @param customerSessionId The `integration ID` of the customer session. You set this ID when you create a customer session. You can see existing customer session integration IDs in the Campaign Manager's **Sessions** menu, or via the [List Application session](https://docs.talon.one/management-api#tag/Customer-data/operation/getApplicationSessions) endpoint. (required)
+ * @param customerSessionId The `integration ID` of the customer session. You set this ID when you create a customer session. You can see existing customer session integration IDs in the Campaign Manager's **Sessions** menu, or via the [List Application session](https://docs.talon.one/management-api#tag/Customer-data/operation/getApplicationSessions) endpoint. **Notes**: - There is no length limit for this ID. - It must be URL-encoded. For example, replace spaces with `%20`. [Learn more](https://www.w3schools.com/tags/ref_urlencode.asp). (required)
* @return IntegrationCustomerSessionResponse
* @throws ApiException If fail to call the API, e.g. server error or cannot deserialize the response body
* @http.response.details
@@ -2176,7 +2195,7 @@ public IntegrationCustomerSessionResponse getCustomerSession(String customerSess
/**
* Get customer session
* Get the details of the given customer session. You can get the same data via other endpoints that also apply changes, which can help you save requests and increase performance. See: - [Update customer session](#tag/Customer-sessions/operation/updateCustomerSessionV2) - [Update customer profile](#tag/Customer-profiles/operation/updateCustomerProfileV2)
- * @param customerSessionId The `integration ID` of the customer session. You set this ID when you create a customer session. You can see existing customer session integration IDs in the Campaign Manager's **Sessions** menu, or via the [List Application session](https://docs.talon.one/management-api#tag/Customer-data/operation/getApplicationSessions) endpoint. (required)
+ * @param customerSessionId The `integration ID` of the customer session. You set this ID when you create a customer session. You can see existing customer session integration IDs in the Campaign Manager's **Sessions** menu, or via the [List Application session](https://docs.talon.one/management-api#tag/Customer-data/operation/getApplicationSessions) endpoint. **Notes**: - There is no length limit for this ID. - It must be URL-encoded. For example, replace spaces with `%20`. [Learn more](https://www.w3schools.com/tags/ref_urlencode.asp). (required)
* @return ApiResponse<IntegrationCustomerSessionResponse>
* @throws ApiException If fail to call the API, e.g. server error or cannot deserialize the response body
* @http.response.details
@@ -2196,7 +2215,7 @@ public ApiResponse getCustomerSessionWithHtt
/**
* Get customer session (asynchronously)
* Get the details of the given customer session. You can get the same data via other endpoints that also apply changes, which can help you save requests and increase performance. See: - [Update customer session](#tag/Customer-sessions/operation/updateCustomerSessionV2) - [Update customer profile](#tag/Customer-profiles/operation/updateCustomerProfileV2)
- * @param customerSessionId The `integration ID` of the customer session. You set this ID when you create a customer session. You can see existing customer session integration IDs in the Campaign Manager's **Sessions** menu, or via the [List Application session](https://docs.talon.one/management-api#tag/Customer-data/operation/getApplicationSessions) endpoint. (required)
+ * @param customerSessionId The `integration ID` of the customer session. You set this ID when you create a customer session. You can see existing customer session integration IDs in the Campaign Manager's **Sessions** menu, or via the [List Application session](https://docs.talon.one/management-api#tag/Customer-data/operation/getApplicationSessions) endpoint. **Notes**: - There is no length limit for this ID. - It must be URL-encoded. For example, replace spaces with `%20`. [Learn more](https://www.w3schools.com/tags/ref_urlencode.asp). (required)
* @param _callback The callback to be executed when the API call finishes
* @return The request call
* @throws ApiException If fail to process the API call, e.g. serializing the request body object
@@ -2215,6 +2234,121 @@ public okhttp3.Call getCustomerSessionAsync(String customerSessionId, final ApiC
localVarApiClient.executeAsync(localVarCall, localVarReturnType, _callback);
return localVarCall;
}
+ /**
+ * Build call for getEventV3
+ * @param integrationId The unique ID of the advanced event. (required)
+ * @param _callback Callback for upload/download progress
+ * @return Call to execute
+ * @throws ApiException If fail to serialize the request body object
+ * @http.response.details
+
+ | Status Code | Description | Response Headers |
+ | 200 | OK | - |
+ | 404 | Not found | - |
+
+ */
+ public okhttp3.Call getEventV3Call(String integrationId, final ApiCallback _callback) throws ApiException {
+ Object localVarPostBody = null;
+
+ // create path and map variables
+ String localVarPath = "/v3/events/{integrationId}"
+ .replaceAll("\\{" + "integrationId" + "\\}", localVarApiClient.escapeString(integrationId.toString()));
+
+ List localVarQueryParams = new ArrayList();
+ List localVarCollectionQueryParams = new ArrayList();
+ Map localVarHeaderParams = new HashMap();
+ Map localVarCookieParams = new HashMap();
+ Map localVarFormParams = new HashMap();
+ final String[] localVarAccepts = {
+ "application/json"
+ };
+ final String localVarAccept = localVarApiClient.selectHeaderAccept(localVarAccepts);
+ if (localVarAccept != null) {
+ localVarHeaderParams.put("Accept", localVarAccept);
+ }
+
+ final String[] localVarContentTypes = {
+
+ };
+ final String localVarContentType = localVarApiClient.selectHeaderContentType(localVarContentTypes);
+ localVarHeaderParams.put("Content-Type", localVarContentType);
+
+ String[] localVarAuthNames = new String[] { "api_key_v1" };
+ return localVarApiClient.buildCall(localVarPath, "GET", localVarQueryParams, localVarCollectionQueryParams, localVarPostBody, localVarHeaderParams, localVarCookieParams, localVarFormParams, localVarAuthNames, _callback);
+ }
+
+ @SuppressWarnings("rawtypes")
+ private okhttp3.Call getEventV3ValidateBeforeCall(String integrationId, final ApiCallback _callback) throws ApiException {
+
+ // verify the required parameter 'integrationId' is set
+ if (integrationId == null) {
+ throw new ApiException("Missing the required parameter 'integrationId' when calling getEventV3(Async)");
+ }
+
+
+ okhttp3.Call localVarCall = getEventV3Call(integrationId, _callback);
+ return localVarCall;
+
+ }
+
+ /**
+ * Get advanced event
+ * Retrieve an advanced event by its identifier.
+ * @param integrationId The unique ID of the advanced event. (required)
+ * @return EventV3
+ * @throws ApiException If fail to call the API, e.g. server error or cannot deserialize the response body
+ * @http.response.details
+
+ | Status Code | Description | Response Headers |
+ | 200 | OK | - |
+ | 404 | Not found | - |
+
+ */
+ public EventV3 getEventV3(String integrationId) throws ApiException {
+ ApiResponse localVarResp = getEventV3WithHttpInfo(integrationId);
+ return localVarResp.getData();
+ }
+
+ /**
+ * Get advanced event
+ * Retrieve an advanced event by its identifier.
+ * @param integrationId The unique ID of the advanced event. (required)
+ * @return ApiResponse<EventV3>
+ * @throws ApiException If fail to call the API, e.g. server error or cannot deserialize the response body
+ * @http.response.details
+
+ | Status Code | Description | Response Headers |
+ | 200 | OK | - |
+ | 404 | Not found | - |
+
+ */
+ public ApiResponse getEventV3WithHttpInfo(String integrationId) throws ApiException {
+ okhttp3.Call localVarCall = getEventV3ValidateBeforeCall(integrationId, null);
+ Type localVarReturnType = new TypeToken(){}.getType();
+ return localVarApiClient.execute(localVarCall, localVarReturnType);
+ }
+
+ /**
+ * Get advanced event (asynchronously)
+ * Retrieve an advanced event by its identifier.
+ * @param integrationId The unique ID of the advanced event. (required)
+ * @param _callback The callback to be executed when the API call finishes
+ * @return The request call
+ * @throws ApiException If fail to process the API call, e.g. serializing the request body object
+ * @http.response.details
+
+ | Status Code | Description | Response Headers |
+ | 200 | OK | - |
+ | 404 | Not found | - |
+
+ */
+ public okhttp3.Call getEventV3Async(String integrationId, final ApiCallback _callback) throws ApiException {
+
+ okhttp3.Call localVarCall = getEventV3ValidateBeforeCall(integrationId, _callback);
+ Type localVarReturnType = new TypeToken(){}.getType();
+ localVarApiClient.executeAsync(localVarCall, localVarReturnType, _callback);
+ return localVarCall;
+ }
/**
* Build call for getLoyaltyBalances
* @param loyaltyProgramId Identifier of the profile-based loyalty program. You can get the ID with the [List loyalty programs](https://docs.talon.one/management-api#tag/Loyalty/operation/getLoyaltyPrograms) endpoint. (required)
@@ -2928,12 +3062,12 @@ public okhttp3.Call getLoyaltyCardTransactionsAsync(Long loyaltyProgramId, Strin
* @param loyaltyProgramId Identifier of the profile-based loyalty program. You can get the ID with the [List loyalty programs](https://docs.talon.one/management-api#tag/Loyalty/operation/getLoyaltyPrograms) endpoint. (required)
* @param integrationId The integration identifier for this customer profile. Must be: - Unique within the deployment. - Stable for the customer. Do not use an ID that the customer can update themselves. For example, you can use a database ID. Once set, you cannot update this identifier. (required)
* @param status Filter points based on their status. (optional, default to active)
- * @param subledgerId The ID of the subledger by which we filter the data. (optional)
- * @param customerSessionIDs Filter the results by a list of customer session IDs. To include multiple IDs, repeat the parameter for each one, for example, `?customerSessionIDs=id1&customerSessionIDs=id2`. The response contains only data associated with the specified sessions. (optional)
- * @param transactionUUIDs Filter the results by a list of transaction UUIDs. To include multiple IDs, repeat the parameter for each one, for example, `?transactionUUIDs=uuid1&transactionUUIDs=uuid2`. The response contains only data associated with the specified transactions. (optional)
+ * @param subledgerId Filter the results by a list of subledger IDs. To include multiple IDs, repeat the parameter for each one, for example, `?subledgerId=id1&subledgerId=id2`. The response contains only data associated with the specified subledgers. (optional)
+ * @param customerSessionIDs Filter the results by a list of customer session IDs. To include multiple IDs, repeat the parameter for each one, for example, `?customerSessionIDs=id1&customerSessionIDs=id2`. The response contains only data associated with the specified sessions. (optional)
+ * @param transactionUUIDs Filter the results by a list of transaction UUIDs. To include multiple IDs, repeat the parameter for each one, for example, `?transactionUUIDs=uuid1&transactionUUIDs=uuid2`. The response contains only data associated with the specified transactions. (optional)
* @param pageSize The number of items in the response. (optional, default to 50l)
* @param skip The number of items to skip when paging through large result sets. (optional)
- * @param sort The field by which results should be sorted. You can enter one of the following values: - `startDate`: Sorts the results by the start date of the points. - `expiryDate`: Sorts the results by the expiry date of the points. By default, results are sorted in ascending order. To sort them in descending order, prefix the field name with `-`. **Note:** You can only sort by one field at a time. (optional)
+ * @param sort The field by which results should be sorted. You can enter one of the following values: - `startDate`: Sorts the results by the start date of the points. - `expiryDate`: Sorts the results by the expiry date of the points. By default, results are sorted in ascending order. To sort them in descending order, prefix the field name with `-`. **Note:** You can only sort by one field at a time. (optional)
* @param _callback Callback for upload/download progress
* @return Call to execute
* @throws ApiException If fail to serialize the request body object
@@ -2946,7 +3080,7 @@ public okhttp3.Call getLoyaltyCardTransactionsAsync(Long loyaltyProgramId, Strin
| 404 | Not found | - |
*/
- public okhttp3.Call getLoyaltyProgramProfilePointsCall(Long loyaltyProgramId, String integrationId, String status, String subledgerId, List customerSessionIDs, List transactionUUIDs, Long pageSize, Long skip, String sort, final ApiCallback _callback) throws ApiException {
+ public okhttp3.Call getLoyaltyProgramProfilePointsCall(Long loyaltyProgramId, String integrationId, String status, List subledgerId, List customerSessionIDs, List transactionUUIDs, Long pageSize, Long skip, String sort, final ApiCallback _callback) throws ApiException {
Object localVarPostBody = null;
// create path and map variables
@@ -2961,7 +3095,7 @@ public okhttp3.Call getLoyaltyProgramProfilePointsCall(Long loyaltyProgramId, St
}
if (subledgerId != null) {
- localVarQueryParams.addAll(localVarApiClient.parameterToPair("subledgerId", subledgerId));
+ localVarCollectionQueryParams.addAll(localVarApiClient.parameterToPairs("multi", "subledgerId", subledgerId));
}
if (customerSessionIDs != null) {
@@ -3006,7 +3140,7 @@ public okhttp3.Call getLoyaltyProgramProfilePointsCall(Long loyaltyProgramId, St
}
@SuppressWarnings("rawtypes")
- private okhttp3.Call getLoyaltyProgramProfilePointsValidateBeforeCall(Long loyaltyProgramId, String integrationId, String status, String subledgerId, List customerSessionIDs, List transactionUUIDs, Long pageSize, Long skip, String sort, final ApiCallback _callback) throws ApiException {
+ private okhttp3.Call getLoyaltyProgramProfilePointsValidateBeforeCall(Long loyaltyProgramId, String integrationId, String status, List subledgerId, List customerSessionIDs, List transactionUUIDs, Long pageSize, Long skip, String sort, final ApiCallback _callback) throws ApiException {
// verify the required parameter 'loyaltyProgramId' is set
if (loyaltyProgramId == null) {
@@ -3030,12 +3164,12 @@ private okhttp3.Call getLoyaltyProgramProfilePointsValidateBeforeCall(Long loyal
* @param loyaltyProgramId Identifier of the profile-based loyalty program. You can get the ID with the [List loyalty programs](https://docs.talon.one/management-api#tag/Loyalty/operation/getLoyaltyPrograms) endpoint. (required)
* @param integrationId The integration identifier for this customer profile. Must be: - Unique within the deployment. - Stable for the customer. Do not use an ID that the customer can update themselves. For example, you can use a database ID. Once set, you cannot update this identifier. (required)
* @param status Filter points based on their status. (optional, default to active)
- * @param subledgerId The ID of the subledger by which we filter the data. (optional)
- * @param customerSessionIDs Filter the results by a list of customer session IDs. To include multiple IDs, repeat the parameter for each one, for example, `?customerSessionIDs=id1&customerSessionIDs=id2`. The response contains only data associated with the specified sessions. (optional)
- * @param transactionUUIDs Filter the results by a list of transaction UUIDs. To include multiple IDs, repeat the parameter for each one, for example, `?transactionUUIDs=uuid1&transactionUUIDs=uuid2`. The response contains only data associated with the specified transactions. (optional)
+ * @param subledgerId Filter the results by a list of subledger IDs. To include multiple IDs, repeat the parameter for each one, for example, `?subledgerId=id1&subledgerId=id2`. The response contains only data associated with the specified subledgers. (optional)
+ * @param customerSessionIDs Filter the results by a list of customer session IDs. To include multiple IDs, repeat the parameter for each one, for example, `?customerSessionIDs=id1&customerSessionIDs=id2`. The response contains only data associated with the specified sessions. (optional)
+ * @param transactionUUIDs Filter the results by a list of transaction UUIDs. To include multiple IDs, repeat the parameter for each one, for example, `?transactionUUIDs=uuid1&transactionUUIDs=uuid2`. The response contains only data associated with the specified transactions. (optional)
* @param pageSize The number of items in the response. (optional, default to 50l)
* @param skip The number of items to skip when paging through large result sets. (optional)
- * @param sort The field by which results should be sorted. You can enter one of the following values: - `startDate`: Sorts the results by the start date of the points. - `expiryDate`: Sorts the results by the expiry date of the points. By default, results are sorted in ascending order. To sort them in descending order, prefix the field name with `-`. **Note:** You can only sort by one field at a time. (optional)
+ * @param sort The field by which results should be sorted. You can enter one of the following values: - `startDate`: Sorts the results by the start date of the points. - `expiryDate`: Sorts the results by the expiry date of the points. By default, results are sorted in ascending order. To sort them in descending order, prefix the field name with `-`. **Note:** You can only sort by one field at a time. (optional)
* @return InlineResponse2007
* @throws ApiException If fail to call the API, e.g. server error or cannot deserialize the response body
* @http.response.details
@@ -3047,7 +3181,7 @@ private okhttp3.Call getLoyaltyProgramProfilePointsValidateBeforeCall(Long loyal
| 404 | Not found | - |
*/
- public InlineResponse2007 getLoyaltyProgramProfilePoints(Long loyaltyProgramId, String integrationId, String status, String subledgerId, List customerSessionIDs, List transactionUUIDs, Long pageSize, Long skip, String sort) throws ApiException {
+ public InlineResponse2007 getLoyaltyProgramProfilePoints(Long loyaltyProgramId, String integrationId, String status, List subledgerId, List customerSessionIDs, List transactionUUIDs, Long pageSize, Long skip, String sort) throws ApiException {
ApiResponse localVarResp = getLoyaltyProgramProfilePointsWithHttpInfo(loyaltyProgramId, integrationId, status, subledgerId, customerSessionIDs, transactionUUIDs, pageSize, skip, sort);
return localVarResp.getData();
}
@@ -3058,12 +3192,12 @@ public InlineResponse2007 getLoyaltyProgramProfilePoints(Long loyaltyProgramId,
* @param loyaltyProgramId Identifier of the profile-based loyalty program. You can get the ID with the [List loyalty programs](https://docs.talon.one/management-api#tag/Loyalty/operation/getLoyaltyPrograms) endpoint. (required)
* @param integrationId The integration identifier for this customer profile. Must be: - Unique within the deployment. - Stable for the customer. Do not use an ID that the customer can update themselves. For example, you can use a database ID. Once set, you cannot update this identifier. (required)
* @param status Filter points based on their status. (optional, default to active)
- * @param subledgerId The ID of the subledger by which we filter the data. (optional)
- * @param customerSessionIDs Filter the results by a list of customer session IDs. To include multiple IDs, repeat the parameter for each one, for example, `?customerSessionIDs=id1&customerSessionIDs=id2`. The response contains only data associated with the specified sessions. (optional)
- * @param transactionUUIDs Filter the results by a list of transaction UUIDs. To include multiple IDs, repeat the parameter for each one, for example, `?transactionUUIDs=uuid1&transactionUUIDs=uuid2`. The response contains only data associated with the specified transactions. (optional)
+ * @param subledgerId Filter the results by a list of subledger IDs. To include multiple IDs, repeat the parameter for each one, for example, `?subledgerId=id1&subledgerId=id2`. The response contains only data associated with the specified subledgers. (optional)
+ * @param customerSessionIDs Filter the results by a list of customer session IDs. To include multiple IDs, repeat the parameter for each one, for example, `?customerSessionIDs=id1&customerSessionIDs=id2`. The response contains only data associated with the specified sessions. (optional)
+ * @param transactionUUIDs Filter the results by a list of transaction UUIDs. To include multiple IDs, repeat the parameter for each one, for example, `?transactionUUIDs=uuid1&transactionUUIDs=uuid2`. The response contains only data associated with the specified transactions. (optional)
* @param pageSize The number of items in the response. (optional, default to 50l)
* @param skip The number of items to skip when paging through large result sets. (optional)
- * @param sort The field by which results should be sorted. You can enter one of the following values: - `startDate`: Sorts the results by the start date of the points. - `expiryDate`: Sorts the results by the expiry date of the points. By default, results are sorted in ascending order. To sort them in descending order, prefix the field name with `-`. **Note:** You can only sort by one field at a time. (optional)
+ * @param sort The field by which results should be sorted. You can enter one of the following values: - `startDate`: Sorts the results by the start date of the points. - `expiryDate`: Sorts the results by the expiry date of the points. By default, results are sorted in ascending order. To sort them in descending order, prefix the field name with `-`. **Note:** You can only sort by one field at a time. (optional)
* @return ApiResponse<InlineResponse2007>
* @throws ApiException If fail to call the API, e.g. server error or cannot deserialize the response body
* @http.response.details
@@ -3075,7 +3209,7 @@ public InlineResponse2007 getLoyaltyProgramProfilePoints(Long loyaltyProgramId,
| 404 | Not found | - |
*/
- public ApiResponse getLoyaltyProgramProfilePointsWithHttpInfo(Long loyaltyProgramId, String integrationId, String status, String subledgerId, List customerSessionIDs, List transactionUUIDs, Long pageSize, Long skip, String sort) throws ApiException {
+ public ApiResponse getLoyaltyProgramProfilePointsWithHttpInfo(Long loyaltyProgramId, String integrationId, String status, List subledgerId, List customerSessionIDs, List transactionUUIDs, Long pageSize, Long skip, String sort) throws ApiException {
okhttp3.Call localVarCall = getLoyaltyProgramProfilePointsValidateBeforeCall(loyaltyProgramId, integrationId, status, subledgerId, customerSessionIDs, transactionUUIDs, pageSize, skip, sort, null);
Type localVarReturnType = new TypeToken(){}.getType();
return localVarApiClient.execute(localVarCall, localVarReturnType);
@@ -3087,12 +3221,12 @@ public ApiResponse getLoyaltyProgramProfilePointsWithHttpInf
* @param loyaltyProgramId Identifier of the profile-based loyalty program. You can get the ID with the [List loyalty programs](https://docs.talon.one/management-api#tag/Loyalty/operation/getLoyaltyPrograms) endpoint. (required)
* @param integrationId The integration identifier for this customer profile. Must be: - Unique within the deployment. - Stable for the customer. Do not use an ID that the customer can update themselves. For example, you can use a database ID. Once set, you cannot update this identifier. (required)
* @param status Filter points based on their status. (optional, default to active)
- * @param subledgerId The ID of the subledger by which we filter the data. (optional)
- * @param customerSessionIDs Filter the results by a list of customer session IDs. To include multiple IDs, repeat the parameter for each one, for example, `?customerSessionIDs=id1&customerSessionIDs=id2`. The response contains only data associated with the specified sessions. (optional)
- * @param transactionUUIDs Filter the results by a list of transaction UUIDs. To include multiple IDs, repeat the parameter for each one, for example, `?transactionUUIDs=uuid1&transactionUUIDs=uuid2`. The response contains only data associated with the specified transactions. (optional)
+ * @param subledgerId Filter the results by a list of subledger IDs. To include multiple IDs, repeat the parameter for each one, for example, `?subledgerId=id1&subledgerId=id2`. The response contains only data associated with the specified subledgers. (optional)
+ * @param customerSessionIDs Filter the results by a list of customer session IDs. To include multiple IDs, repeat the parameter for each one, for example, `?customerSessionIDs=id1&customerSessionIDs=id2`. The response contains only data associated with the specified sessions. (optional)
+ * @param transactionUUIDs Filter the results by a list of transaction UUIDs. To include multiple IDs, repeat the parameter for each one, for example, `?transactionUUIDs=uuid1&transactionUUIDs=uuid2`. The response contains only data associated with the specified transactions. (optional)
* @param pageSize The number of items in the response. (optional, default to 50l)
* @param skip The number of items to skip when paging through large result sets. (optional)
- * @param sort The field by which results should be sorted. You can enter one of the following values: - `startDate`: Sorts the results by the start date of the points. - `expiryDate`: Sorts the results by the expiry date of the points. By default, results are sorted in ascending order. To sort them in descending order, prefix the field name with `-`. **Note:** You can only sort by one field at a time. (optional)
+ * @param sort The field by which results should be sorted. You can enter one of the following values: - `startDate`: Sorts the results by the start date of the points. - `expiryDate`: Sorts the results by the expiry date of the points. By default, results are sorted in ascending order. To sort them in descending order, prefix the field name with `-`. **Note:** You can only sort by one field at a time. (optional)
* @param _callback The callback to be executed when the API call finishes
* @return The request call
* @throws ApiException If fail to process the API call, e.g. serializing the request body object
@@ -3105,7 +3239,7 @@ public ApiResponse getLoyaltyProgramProfilePointsWithHttpInf
| 404 | Not found | - |
*/
- public okhttp3.Call getLoyaltyProgramProfilePointsAsync(Long loyaltyProgramId, String integrationId, String status, String subledgerId, List customerSessionIDs, List transactionUUIDs, Long pageSize, Long skip, String sort, final ApiCallback _callback) throws ApiException {
+ public okhttp3.Call getLoyaltyProgramProfilePointsAsync(Long loyaltyProgramId, String integrationId, String status, List subledgerId, List customerSessionIDs, List transactionUUIDs, Long pageSize, Long skip, String sort, final ApiCallback _callback) throws ApiException {
okhttp3.Call localVarCall = getLoyaltyProgramProfilePointsValidateBeforeCall(loyaltyProgramId, integrationId, status, subledgerId, customerSessionIDs, transactionUUIDs, pageSize, skip, sort, _callback);
Type localVarReturnType = new TypeToken(){}.getType();
@@ -3118,7 +3252,7 @@ public okhttp3.Call getLoyaltyProgramProfilePointsAsync(Long loyaltyProgramId, S
* @param integrationId The integration identifier for this customer profile. Must be: - Unique within the deployment. - Stable for the customer. Do not use an ID that the customer can update themselves. For example, you can use a database ID. Once set, you cannot update this identifier. (required)
* @param customerSessionIDs Filter the results by a list of customer session IDs. To include multiple IDs, repeat the parameter for each one, for example, `?customerSessionIDs=id1&customerSessionIDs=id2`. The response contains only data associated with the specified sessions. (optional)
* @param transactionUUIDs Filter the results by a list of transaction UUIDs. To include multiple IDs, repeat the parameter for each one, for example, `?transactionUUIDs=uuid1&transactionUUIDs=uuid2`. The response contains only data associated with the specified transactions. (optional)
- * @param subledgerId The ID of the subledger by which we filter the data. (optional)
+ * @param subledgerId Filter the results by a list of subledger IDs. To include multiple IDs, repeat the parameter for each one, for example, `?subledgerId=id1&subledgerId=id2`. The response contains only data associated with the specified subledgers. (optional)
* @param loyaltyTransactionType Filter results by loyalty transaction type: - `manual`: Loyalty transaction that was done manually. - `session`: Loyalty transaction that resulted from a customer session. - `import`: Loyalty transaction that was imported from a CSV file. (optional)
* @param startDate Date and time from which results are returned. Results are filtered by transaction creation date. > [!note] **Note** > - This must be an RFC3339 timestamp string. > - You can include a time component in your string, for example, `T23:59:59` to specify the end of the day. The time zone setting > considered is `UTC`. If you do not include a time component, a default time value of `T00:00:00` (midnight) in `UTC` is considered. (optional)
* @param endDate Date and time by which results are returned. Results are filtered by transaction creation date. > [!note] **Note** > - This must be an RFC3339 timestamp string. > - You can include a time component in your string, for example, `T23:59:59` to specify the end of the day. The time zone setting > considered is `UTC`. If you do not include a time component, a default time value of `T00:00:00` (midnight) in `UTC` is considered. (optional)
@@ -3137,7 +3271,7 @@ public okhttp3.Call getLoyaltyProgramProfilePointsAsync(Long loyaltyProgramId, S
| 404 | Not found | - |
*/
- public okhttp3.Call getLoyaltyProgramProfileTransactionsCall(Long loyaltyProgramId, String integrationId, List customerSessionIDs, List transactionUUIDs, String subledgerId, String loyaltyTransactionType, OffsetDateTime startDate, OffsetDateTime endDate, Long pageSize, Long skip, Boolean awaitsActivation, final ApiCallback _callback) throws ApiException {
+ public okhttp3.Call getLoyaltyProgramProfileTransactionsCall(Long loyaltyProgramId, String integrationId, List customerSessionIDs, List transactionUUIDs, List subledgerId, String loyaltyTransactionType, OffsetDateTime startDate, OffsetDateTime endDate, Long pageSize, Long skip, Boolean awaitsActivation, final ApiCallback _callback) throws ApiException {
Object localVarPostBody = null;
// create path and map variables
@@ -3156,7 +3290,7 @@ public okhttp3.Call getLoyaltyProgramProfileTransactionsCall(Long loyaltyProgram
}
if (subledgerId != null) {
- localVarQueryParams.addAll(localVarApiClient.parameterToPair("subledgerId", subledgerId));
+ localVarCollectionQueryParams.addAll(localVarApiClient.parameterToPairs("multi", "subledgerId", subledgerId));
}
if (loyaltyTransactionType != null) {
@@ -3205,7 +3339,7 @@ public okhttp3.Call getLoyaltyProgramProfileTransactionsCall(Long loyaltyProgram
}
@SuppressWarnings("rawtypes")
- private okhttp3.Call getLoyaltyProgramProfileTransactionsValidateBeforeCall(Long loyaltyProgramId, String integrationId, List customerSessionIDs, List transactionUUIDs, String subledgerId, String loyaltyTransactionType, OffsetDateTime startDate, OffsetDateTime endDate, Long pageSize, Long skip, Boolean awaitsActivation, final ApiCallback _callback) throws ApiException {
+ private okhttp3.Call getLoyaltyProgramProfileTransactionsValidateBeforeCall(Long loyaltyProgramId, String integrationId, List customerSessionIDs, List transactionUUIDs, List subledgerId, String loyaltyTransactionType, OffsetDateTime startDate, OffsetDateTime endDate, Long pageSize, Long skip, Boolean awaitsActivation, final ApiCallback _callback) throws ApiException {
// verify the required parameter 'loyaltyProgramId' is set
if (loyaltyProgramId == null) {
@@ -3230,7 +3364,7 @@ private okhttp3.Call getLoyaltyProgramProfileTransactionsValidateBeforeCall(Long
* @param integrationId The integration identifier for this customer profile. Must be: - Unique within the deployment. - Stable for the customer. Do not use an ID that the customer can update themselves. For example, you can use a database ID. Once set, you cannot update this identifier. (required)
* @param customerSessionIDs Filter the results by a list of customer session IDs. To include multiple IDs, repeat the parameter for each one, for example, `?customerSessionIDs=id1&customerSessionIDs=id2`. The response contains only data associated with the specified sessions. (optional)
* @param transactionUUIDs Filter the results by a list of transaction UUIDs. To include multiple IDs, repeat the parameter for each one, for example, `?transactionUUIDs=uuid1&transactionUUIDs=uuid2`. The response contains only data associated with the specified transactions. (optional)
- * @param subledgerId The ID of the subledger by which we filter the data. (optional)
+ * @param subledgerId Filter the results by a list of subledger IDs. To include multiple IDs, repeat the parameter for each one, for example, `?subledgerId=id1&subledgerId=id2`. The response contains only data associated with the specified subledgers. (optional)
* @param loyaltyTransactionType Filter results by loyalty transaction type: - `manual`: Loyalty transaction that was done manually. - `session`: Loyalty transaction that resulted from a customer session. - `import`: Loyalty transaction that was imported from a CSV file. (optional)
* @param startDate Date and time from which results are returned. Results are filtered by transaction creation date. > [!note] **Note** > - This must be an RFC3339 timestamp string. > - You can include a time component in your string, for example, `T23:59:59` to specify the end of the day. The time zone setting > considered is `UTC`. If you do not include a time component, a default time value of `T00:00:00` (midnight) in `UTC` is considered. (optional)
* @param endDate Date and time by which results are returned. Results are filtered by transaction creation date. > [!note] **Note** > - This must be an RFC3339 timestamp string. > - You can include a time component in your string, for example, `T23:59:59` to specify the end of the day. The time zone setting > considered is `UTC`. If you do not include a time component, a default time value of `T00:00:00` (midnight) in `UTC` is considered. (optional)
@@ -3248,7 +3382,7 @@ private okhttp3.Call getLoyaltyProgramProfileTransactionsValidateBeforeCall(Long
| 404 | Not found | - |
*/
- public InlineResponse2005 getLoyaltyProgramProfileTransactions(Long loyaltyProgramId, String integrationId, List customerSessionIDs, List transactionUUIDs, String subledgerId, String loyaltyTransactionType, OffsetDateTime startDate, OffsetDateTime endDate, Long pageSize, Long skip, Boolean awaitsActivation) throws ApiException {
+ public InlineResponse2005 getLoyaltyProgramProfileTransactions(Long loyaltyProgramId, String integrationId, List customerSessionIDs, List transactionUUIDs, List subledgerId, String loyaltyTransactionType, OffsetDateTime startDate, OffsetDateTime endDate, Long pageSize, Long skip, Boolean awaitsActivation) throws ApiException {
ApiResponse localVarResp = getLoyaltyProgramProfileTransactionsWithHttpInfo(loyaltyProgramId, integrationId, customerSessionIDs, transactionUUIDs, subledgerId, loyaltyTransactionType, startDate, endDate, pageSize, skip, awaitsActivation);
return localVarResp.getData();
}
@@ -3260,7 +3394,7 @@ public InlineResponse2005 getLoyaltyProgramProfileTransactions(Long loyaltyProgr
* @param integrationId The integration identifier for this customer profile. Must be: - Unique within the deployment. - Stable for the customer. Do not use an ID that the customer can update themselves. For example, you can use a database ID. Once set, you cannot update this identifier. (required)
* @param customerSessionIDs Filter the results by a list of customer session IDs. To include multiple IDs, repeat the parameter for each one, for example, `?customerSessionIDs=id1&customerSessionIDs=id2`. The response contains only data associated with the specified sessions. (optional)
* @param transactionUUIDs Filter the results by a list of transaction UUIDs. To include multiple IDs, repeat the parameter for each one, for example, `?transactionUUIDs=uuid1&transactionUUIDs=uuid2`. The response contains only data associated with the specified transactions. (optional)
- * @param subledgerId The ID of the subledger by which we filter the data. (optional)
+ * @param subledgerId Filter the results by a list of subledger IDs. To include multiple IDs, repeat the parameter for each one, for example, `?subledgerId=id1&subledgerId=id2`. The response contains only data associated with the specified subledgers. (optional)
* @param loyaltyTransactionType Filter results by loyalty transaction type: - `manual`: Loyalty transaction that was done manually. - `session`: Loyalty transaction that resulted from a customer session. - `import`: Loyalty transaction that was imported from a CSV file. (optional)
* @param startDate Date and time from which results are returned. Results are filtered by transaction creation date. > [!note] **Note** > - This must be an RFC3339 timestamp string. > - You can include a time component in your string, for example, `T23:59:59` to specify the end of the day. The time zone setting > considered is `UTC`. If you do not include a time component, a default time value of `T00:00:00` (midnight) in `UTC` is considered. (optional)
* @param endDate Date and time by which results are returned. Results are filtered by transaction creation date. > [!note] **Note** > - This must be an RFC3339 timestamp string. > - You can include a time component in your string, for example, `T23:59:59` to specify the end of the day. The time zone setting > considered is `UTC`. If you do not include a time component, a default time value of `T00:00:00` (midnight) in `UTC` is considered. (optional)
@@ -3278,7 +3412,7 @@ public InlineResponse2005 getLoyaltyProgramProfileTransactions(Long loyaltyProgr
| 404 | Not found | - |
*/
- public ApiResponse getLoyaltyProgramProfileTransactionsWithHttpInfo(Long loyaltyProgramId, String integrationId, List customerSessionIDs, List transactionUUIDs, String subledgerId, String loyaltyTransactionType, OffsetDateTime startDate, OffsetDateTime endDate, Long pageSize, Long skip, Boolean awaitsActivation) throws ApiException {
+ public ApiResponse getLoyaltyProgramProfileTransactionsWithHttpInfo(Long loyaltyProgramId, String integrationId, List customerSessionIDs, List transactionUUIDs, List subledgerId, String loyaltyTransactionType, OffsetDateTime startDate, OffsetDateTime endDate, Long pageSize, Long skip, Boolean awaitsActivation) throws ApiException {
okhttp3.Call localVarCall = getLoyaltyProgramProfileTransactionsValidateBeforeCall(loyaltyProgramId, integrationId, customerSessionIDs, transactionUUIDs, subledgerId, loyaltyTransactionType, startDate, endDate, pageSize, skip, awaitsActivation, null);
Type localVarReturnType = new TypeToken(){}.getType();
return localVarApiClient.execute(localVarCall, localVarReturnType);
@@ -3291,7 +3425,7 @@ public ApiResponse getLoyaltyProgramProfileTransactionsWithH
* @param integrationId The integration identifier for this customer profile. Must be: - Unique within the deployment. - Stable for the customer. Do not use an ID that the customer can update themselves. For example, you can use a database ID. Once set, you cannot update this identifier. (required)
* @param customerSessionIDs Filter the results by a list of customer session IDs. To include multiple IDs, repeat the parameter for each one, for example, `?customerSessionIDs=id1&customerSessionIDs=id2`. The response contains only data associated with the specified sessions. (optional)
* @param transactionUUIDs Filter the results by a list of transaction UUIDs. To include multiple IDs, repeat the parameter for each one, for example, `?transactionUUIDs=uuid1&transactionUUIDs=uuid2`. The response contains only data associated with the specified transactions. (optional)
- * @param subledgerId The ID of the subledger by which we filter the data. (optional)
+ * @param subledgerId Filter the results by a list of subledger IDs. To include multiple IDs, repeat the parameter for each one, for example, `?subledgerId=id1&subledgerId=id2`. The response contains only data associated with the specified subledgers. (optional)
* @param loyaltyTransactionType Filter results by loyalty transaction type: - `manual`: Loyalty transaction that was done manually. - `session`: Loyalty transaction that resulted from a customer session. - `import`: Loyalty transaction that was imported from a CSV file. (optional)
* @param startDate Date and time from which results are returned. Results are filtered by transaction creation date. > [!note] **Note** > - This must be an RFC3339 timestamp string. > - You can include a time component in your string, for example, `T23:59:59` to specify the end of the day. The time zone setting > considered is `UTC`. If you do not include a time component, a default time value of `T00:00:00` (midnight) in `UTC` is considered. (optional)
* @param endDate Date and time by which results are returned. Results are filtered by transaction creation date. > [!note] **Note** > - This must be an RFC3339 timestamp string. > - You can include a time component in your string, for example, `T23:59:59` to specify the end of the day. The time zone setting > considered is `UTC`. If you do not include a time component, a default time value of `T00:00:00` (midnight) in `UTC` is considered. (optional)
@@ -3310,7 +3444,7 @@ public ApiResponse getLoyaltyProgramProfileTransactionsWithH
| 404 | Not found | - |
*/
- public okhttp3.Call getLoyaltyProgramProfileTransactionsAsync(Long loyaltyProgramId, String integrationId, List customerSessionIDs, List transactionUUIDs, String subledgerId, String loyaltyTransactionType, OffsetDateTime startDate, OffsetDateTime endDate, Long pageSize, Long skip, Boolean awaitsActivation, final ApiCallback _callback) throws ApiException {
+ public okhttp3.Call getLoyaltyProgramProfileTransactionsAsync(Long loyaltyProgramId, String integrationId, List customerSessionIDs, List transactionUUIDs, List subledgerId, String loyaltyTransactionType, OffsetDateTime startDate, OffsetDateTime endDate, Long pageSize, Long skip, Boolean awaitsActivation, final ApiCallback _callback) throws ApiException {
okhttp3.Call localVarCall = getLoyaltyProgramProfileTransactionsValidateBeforeCall(loyaltyProgramId, integrationId, customerSessionIDs, transactionUUIDs, subledgerId, loyaltyTransactionType, startDate, endDate, pageSize, skip, awaitsActivation, _callback);
Type localVarReturnType = new TypeToken(){}.getType();
@@ -3319,7 +3453,7 @@ public okhttp3.Call getLoyaltyProgramProfileTransactionsAsync(Long loyaltyProgra
}
/**
* Build call for getReservedCustomers
- * @param couponValue The code of the coupon. **Important:** The coupon code requires [URL encoding](https://www.w3schools.com/tags//ref_urlencode.asp) if it contains special characters. For example, you must encode `SUMMER25%OFF` as `SUMMER25%25OFF`. (required)
+ * @param couponValue The code of the coupon. **Important:** The coupon code requires [URL encoding](https://www.w3schools.com/tags//ref_urlencode.asp) if it contains special characters. For example, you must encode `SUMMER25%OFF` as `SUMMER25%25OFF`. (required)
* @param _callback Callback for upload/download progress
* @return Call to execute
* @throws ApiException If fail to serialize the request body object
@@ -3379,7 +3513,7 @@ private okhttp3.Call getReservedCustomersValidateBeforeCall(String couponValue,
/**
* List customers that have this coupon reserved
* Return all customers that have this coupon marked as reserved. This includes hard and soft reservations.
- * @param couponValue The code of the coupon. **Important:** The coupon code requires [URL encoding](https://www.w3schools.com/tags//ref_urlencode.asp) if it contains special characters. For example, you must encode `SUMMER25%OFF` as `SUMMER25%25OFF`. (required)
+ * @param couponValue The code of the coupon. **Important:** The coupon code requires [URL encoding](https://www.w3schools.com/tags//ref_urlencode.asp) if it contains special characters. For example, you must encode `SUMMER25%OFF` as `SUMMER25%25OFF`. (required)
* @return InlineResponse2001
* @throws ApiException If fail to call the API, e.g. server error or cannot deserialize the response body
* @http.response.details
@@ -3399,7 +3533,7 @@ public InlineResponse2001 getReservedCustomers(String couponValue) throws ApiExc
/**
* List customers that have this coupon reserved
* Return all customers that have this coupon marked as reserved. This includes hard and soft reservations.
- * @param couponValue The code of the coupon. **Important:** The coupon code requires [URL encoding](https://www.w3schools.com/tags//ref_urlencode.asp) if it contains special characters. For example, you must encode `SUMMER25%OFF` as `SUMMER25%25OFF`. (required)
+ * @param couponValue The code of the coupon. **Important:** The coupon code requires [URL encoding](https://www.w3schools.com/tags//ref_urlencode.asp) if it contains special characters. For example, you must encode `SUMMER25%OFF` as `SUMMER25%25OFF`. (required)
* @return ApiResponse<InlineResponse2001>
* @throws ApiException If fail to call the API, e.g. server error or cannot deserialize the response body
* @http.response.details
@@ -3420,7 +3554,7 @@ public ApiResponse getReservedCustomersWithHttpInfo(String c
/**
* List customers that have this coupon reserved (asynchronously)
* Return all customers that have this coupon marked as reserved. This includes hard and soft reservations.
- * @param couponValue The code of the coupon. **Important:** The coupon code requires [URL encoding](https://www.w3schools.com/tags//ref_urlencode.asp) if it contains special characters. For example, you must encode `SUMMER25%OFF` as `SUMMER25%25OFF`. (required)
+ * @param couponValue The code of the coupon. **Important:** The coupon code requires [URL encoding](https://www.w3schools.com/tags//ref_urlencode.asp) if it contains special characters. For example, you must encode `SUMMER25%OFF` as `SUMMER25%25OFF`. (required)
* @param _callback The callback to be executed when the API call finishes
* @return The request call
* @throws ApiException If fail to process the API call, e.g. serializing the request body object
@@ -3449,6 +3583,8 @@ public okhttp3.Call getReservedCustomersAsync(String couponValue, final ApiCallb
* @param startBefore Filter results to only include campaigns that start on or before the specified timestamp. **Note:** - It must be an RFC3339 timestamp string. - You can include a time component in your string, for example, `T23:59:59` to specify the end of the day. The time zone setting considered is `UTC`. If you do not include a time component, a default time value of `T00:00:00` (midnight) in `UTC` is considered. (optional)
* @param endAfter Filter results to only include campaigns that end on or after the specified timestamp. **Note:** - It must be an RFC3339 timestamp string. - You can include a time component in your string, for example, `T23:59:59` to specify the end of the day. The time zone setting considered is `UTC`. If you do not include a time component, a default time value of `T00:00:00` (midnight) in `UTC` is considered. (optional)
* @param endBefore Filter results to only include campaigns that end on or before the specified timestamp. **Note:** - It must be an RFC3339 timestamp string. - You can include a time component in your string, for example, `T23:59:59` to specify the end of the day. The time zone setting considered is `UTC`. If you do not include a time component, a default time value of `T00:00:00` (midnight) in `UTC` is considered. (optional)
+ * @param storeId Filter results to campaigns linked to the specified store ID. (optional)
+ * @param audienceId Filter results to campaigns linked to the specified audience ID. (optional)
* @param _callback Callback for upload/download progress
* @return Call to execute
* @throws ApiException If fail to serialize the request body object
@@ -3461,7 +3597,7 @@ public okhttp3.Call getReservedCustomersAsync(String couponValue, final ApiCallb
| 404 | Not found | - |
*/
- public okhttp3.Call integrationGetAllCampaignsCall(Long pageSize, Long skip, List campaignIds, OffsetDateTime startAfter, OffsetDateTime startBefore, OffsetDateTime endAfter, OffsetDateTime endBefore, final ApiCallback _callback) throws ApiException {
+ public okhttp3.Call integrationGetAllCampaignsCall(Long pageSize, Long skip, List campaignIds, OffsetDateTime startAfter, OffsetDateTime startBefore, OffsetDateTime endAfter, OffsetDateTime endBefore, Long storeId, Long audienceId, final ApiCallback _callback) throws ApiException {
Object localVarPostBody = null;
// create path and map variables
@@ -3497,6 +3633,14 @@ public okhttp3.Call integrationGetAllCampaignsCall(Long pageSize, Long skip, Lis
localVarQueryParams.addAll(localVarApiClient.parameterToPair("endBefore", endBefore));
}
+ if (storeId != null) {
+ localVarQueryParams.addAll(localVarApiClient.parameterToPair("storeId", storeId));
+ }
+
+ if (audienceId != null) {
+ localVarQueryParams.addAll(localVarApiClient.parameterToPair("audienceId", audienceId));
+ }
+
Map localVarHeaderParams = new HashMap();
Map localVarCookieParams = new HashMap();
Map localVarFormParams = new HashMap();
@@ -3519,10 +3663,10 @@ public okhttp3.Call integrationGetAllCampaignsCall(Long pageSize, Long skip, Lis
}
@SuppressWarnings("rawtypes")
- private okhttp3.Call integrationGetAllCampaignsValidateBeforeCall(Long pageSize, Long skip, List campaignIds, OffsetDateTime startAfter, OffsetDateTime startBefore, OffsetDateTime endAfter, OffsetDateTime endBefore, final ApiCallback _callback) throws ApiException {
+ private okhttp3.Call integrationGetAllCampaignsValidateBeforeCall(Long pageSize, Long skip, List campaignIds, OffsetDateTime startAfter, OffsetDateTime startBefore, OffsetDateTime endAfter, OffsetDateTime endBefore, Long storeId, Long audienceId, final ApiCallback _callback) throws ApiException {
- okhttp3.Call localVarCall = integrationGetAllCampaignsCall(pageSize, skip, campaignIds, startAfter, startBefore, endAfter, endBefore, _callback);
+ okhttp3.Call localVarCall = integrationGetAllCampaignsCall(pageSize, skip, campaignIds, startAfter, startBefore, endAfter, endBefore, storeId, audienceId, _callback);
return localVarCall;
}
@@ -3537,6 +3681,8 @@ private okhttp3.Call integrationGetAllCampaignsValidateBeforeCall(Long pageSize,
* @param startBefore Filter results to only include campaigns that start on or before the specified timestamp. **Note:** - It must be an RFC3339 timestamp string. - You can include a time component in your string, for example, `T23:59:59` to specify the end of the day. The time zone setting considered is `UTC`. If you do not include a time component, a default time value of `T00:00:00` (midnight) in `UTC` is considered. (optional)
* @param endAfter Filter results to only include campaigns that end on or after the specified timestamp. **Note:** - It must be an RFC3339 timestamp string. - You can include a time component in your string, for example, `T23:59:59` to specify the end of the day. The time zone setting considered is `UTC`. If you do not include a time component, a default time value of `T00:00:00` (midnight) in `UTC` is considered. (optional)
* @param endBefore Filter results to only include campaigns that end on or before the specified timestamp. **Note:** - It must be an RFC3339 timestamp string. - You can include a time component in your string, for example, `T23:59:59` to specify the end of the day. The time zone setting considered is `UTC`. If you do not include a time component, a default time value of `T00:00:00` (midnight) in `UTC` is considered. (optional)
+ * @param storeId Filter results to campaigns linked to the specified store ID. (optional)
+ * @param audienceId Filter results to campaigns linked to the specified audience ID. (optional)
* @return InlineResponse200
* @throws ApiException If fail to call the API, e.g. server error or cannot deserialize the response body
* @http.response.details
@@ -3548,8 +3694,8 @@ private okhttp3.Call integrationGetAllCampaignsValidateBeforeCall(Long pageSize,
| 404 | Not found | - |
*/
- public InlineResponse200 integrationGetAllCampaigns(Long pageSize, Long skip, List campaignIds, OffsetDateTime startAfter, OffsetDateTime startBefore, OffsetDateTime endAfter, OffsetDateTime endBefore) throws ApiException {
- ApiResponse localVarResp = integrationGetAllCampaignsWithHttpInfo(pageSize, skip, campaignIds, startAfter, startBefore, endAfter, endBefore);
+ public InlineResponse200 integrationGetAllCampaigns(Long pageSize, Long skip, List campaignIds, OffsetDateTime startAfter, OffsetDateTime startBefore, OffsetDateTime endAfter, OffsetDateTime endBefore, Long storeId, Long audienceId) throws ApiException {
+ ApiResponse localVarResp = integrationGetAllCampaignsWithHttpInfo(pageSize, skip, campaignIds, startAfter, startBefore, endAfter, endBefore, storeId, audienceId);
return localVarResp.getData();
}
@@ -3563,6 +3709,8 @@ public InlineResponse200 integrationGetAllCampaigns(Long pageSize, Long skip, Li
* @param startBefore Filter results to only include campaigns that start on or before the specified timestamp. **Note:** - It must be an RFC3339 timestamp string. - You can include a time component in your string, for example, `T23:59:59` to specify the end of the day. The time zone setting considered is `UTC`. If you do not include a time component, a default time value of `T00:00:00` (midnight) in `UTC` is considered. (optional)
* @param endAfter Filter results to only include campaigns that end on or after the specified timestamp. **Note:** - It must be an RFC3339 timestamp string. - You can include a time component in your string, for example, `T23:59:59` to specify the end of the day. The time zone setting considered is `UTC`. If you do not include a time component, a default time value of `T00:00:00` (midnight) in `UTC` is considered. (optional)
* @param endBefore Filter results to only include campaigns that end on or before the specified timestamp. **Note:** - It must be an RFC3339 timestamp string. - You can include a time component in your string, for example, `T23:59:59` to specify the end of the day. The time zone setting considered is `UTC`. If you do not include a time component, a default time value of `T00:00:00` (midnight) in `UTC` is considered. (optional)
+ * @param storeId Filter results to campaigns linked to the specified store ID. (optional)
+ * @param audienceId Filter results to campaigns linked to the specified audience ID. (optional)
* @return ApiResponse<InlineResponse200>
* @throws ApiException If fail to call the API, e.g. server error or cannot deserialize the response body
* @http.response.details
@@ -3574,8 +3722,8 @@ public InlineResponse200 integrationGetAllCampaigns(Long pageSize, Long skip, Li
| 404 | Not found | - |
*/
- public ApiResponse integrationGetAllCampaignsWithHttpInfo(Long pageSize, Long skip, List campaignIds, OffsetDateTime startAfter, OffsetDateTime startBefore, OffsetDateTime endAfter, OffsetDateTime endBefore) throws ApiException {
- okhttp3.Call localVarCall = integrationGetAllCampaignsValidateBeforeCall(pageSize, skip, campaignIds, startAfter, startBefore, endAfter, endBefore, null);
+ public ApiResponse integrationGetAllCampaignsWithHttpInfo(Long pageSize, Long skip, List campaignIds, OffsetDateTime startAfter, OffsetDateTime startBefore, OffsetDateTime endAfter, OffsetDateTime endBefore, Long storeId, Long audienceId) throws ApiException {
+ okhttp3.Call localVarCall = integrationGetAllCampaignsValidateBeforeCall(pageSize, skip, campaignIds, startAfter, startBefore, endAfter, endBefore, storeId, audienceId, null);
Type localVarReturnType = new TypeToken(){}.getType();
return localVarApiClient.execute(localVarCall, localVarReturnType);
}
@@ -3590,6 +3738,8 @@ public ApiResponse integrationGetAllCampaignsWithHttpInfo(Lon
* @param startBefore Filter results to only include campaigns that start on or before the specified timestamp. **Note:** - It must be an RFC3339 timestamp string. - You can include a time component in your string, for example, `T23:59:59` to specify the end of the day. The time zone setting considered is `UTC`. If you do not include a time component, a default time value of `T00:00:00` (midnight) in `UTC` is considered. (optional)
* @param endAfter Filter results to only include campaigns that end on or after the specified timestamp. **Note:** - It must be an RFC3339 timestamp string. - You can include a time component in your string, for example, `T23:59:59` to specify the end of the day. The time zone setting considered is `UTC`. If you do not include a time component, a default time value of `T00:00:00` (midnight) in `UTC` is considered. (optional)
* @param endBefore Filter results to only include campaigns that end on or before the specified timestamp. **Note:** - It must be an RFC3339 timestamp string. - You can include a time component in your string, for example, `T23:59:59` to specify the end of the day. The time zone setting considered is `UTC`. If you do not include a time component, a default time value of `T00:00:00` (midnight) in `UTC` is considered. (optional)
+ * @param storeId Filter results to campaigns linked to the specified store ID. (optional)
+ * @param audienceId Filter results to campaigns linked to the specified audience ID. (optional)
* @param _callback The callback to be executed when the API call finishes
* @return The request call
* @throws ApiException If fail to process the API call, e.g. serializing the request body object
@@ -3602,18 +3752,24 @@ public ApiResponse integrationGetAllCampaignsWithHttpInfo(Lon
| 404 | Not found | - |
*/
- public okhttp3.Call integrationGetAllCampaignsAsync(Long pageSize, Long skip, List campaignIds, OffsetDateTime startAfter, OffsetDateTime startBefore, OffsetDateTime endAfter, OffsetDateTime endBefore, final ApiCallback _callback) throws ApiException {
+ public okhttp3.Call integrationGetAllCampaignsAsync(Long pageSize, Long skip, List campaignIds, OffsetDateTime startAfter, OffsetDateTime startBefore, OffsetDateTime endAfter, OffsetDateTime endBefore, Long storeId, Long audienceId, final ApiCallback _callback) throws ApiException {
- okhttp3.Call localVarCall = integrationGetAllCampaignsValidateBeforeCall(pageSize, skip, campaignIds, startAfter, startBefore, endAfter, endBefore, _callback);
+ okhttp3.Call localVarCall = integrationGetAllCampaignsValidateBeforeCall(pageSize, skip, campaignIds, startAfter, startBefore, endAfter, endBefore, storeId, audienceId, _callback);
Type localVarReturnType = new TypeToken(){}.getType();
localVarApiClient.executeAsync(localVarCall, localVarReturnType, _callback);
return localVarCall;
}
/**
- * Build call for linkLoyaltyCardToProfile
- * @param loyaltyProgramId Identifier of the card-based loyalty program containing the loyalty card. You can get the ID with the [List loyalty programs](https://docs.talon.one/management-api#tag/Loyalty/operation/getLoyaltyPrograms) endpoint. (required)
- * @param loyaltyCardId Identifier of the loyalty card. You can get the identifier with the [List loyalty cards](https://docs.talon.one/management-api#tag/Loyalty-cards/operation/getLoyaltyCards) endpoint. **Important**: The loyalty card ID requires [URL encoding](https://www.w3schools.com/tags//ref_urlencode.asp) if it contains special characters. For example, you must encode `NewCard2026%` as `NewCard2026%25`. (required)
- * @param body body (required)
+ * Build call for integrationRewardsCatalog
+ * @param pageSize The number of items in the response. (optional, default to 1000l)
+ * @param skip The number of items to skip when paging through large result sets. (optional)
+ * @param pointsFrom Return only rewards whose points required is greater than or equal to this value. (optional)
+ * @param pointsTo Return only rewards whose points required is less than or equal to this value. (optional)
+ * @param includeFree Whether to include rewards that have no `pointsRequired`. These rewards are treated as free and available to all customers. (optional, default to true)
+ * @param loyaltyProgramId Return only rewards available in this loyalty program. (optional)
+ * @param subledgerId Return only rewards available in this subledger. Must be combined with `loyaltyProgramId`. To specify the main ledger, provide an empty string (\"\"). (optional)
+ * @param profileIntegrationId The integration ID of the customer profile whose loyalty balances to include in the response. Balances are returned only when `loyaltyProgramId` is also provided. **Note:** `profileIntegrationId` and `loyaltyCardId` are mutually exclusive. Do not send both in the same request. (optional)
+ * @param loyaltyCardId The identifier of the loyalty card whose loyalty balances to include in the response. Balances are returned only when `loyaltyProgramId` is also provided. **Note:** `profileIntegrationId` and `loyaltyCardId` are mutually exclusive. Do not send both in the same request. (optional)
* @param _callback Callback for upload/download progress
* @return Call to execute
* @throws ApiException If fail to serialize the request body object
@@ -3626,16 +3782,50 @@ public okhttp3.Call integrationGetAllCampaignsAsync(Long pageSize, Long skip, Li
| 404 | Not found | - |
*/
- public okhttp3.Call linkLoyaltyCardToProfileCall(Long loyaltyProgramId, String loyaltyCardId, LoyaltyCardRegistration body, final ApiCallback _callback) throws ApiException {
- Object localVarPostBody = body;
+ public okhttp3.Call integrationRewardsCatalogCall(Long pageSize, Long skip, BigDecimal pointsFrom, BigDecimal pointsTo, Boolean includeFree, Long loyaltyProgramId, String subledgerId, String profileIntegrationId, String loyaltyCardId, final ApiCallback _callback) throws ApiException {
+ Object localVarPostBody = null;
// create path and map variables
- String localVarPath = "/v2/loyalty_programs/{loyaltyProgramId}/cards/{loyaltyCardId}/link_profile"
- .replaceAll("\\{" + "loyaltyProgramId" + "\\}", localVarApiClient.escapeString(loyaltyProgramId.toString()))
- .replaceAll("\\{" + "loyaltyCardId" + "\\}", localVarApiClient.escapeString(loyaltyCardId.toString()));
+ String localVarPath = "/v1/rewards/catalog";
List localVarQueryParams = new ArrayList();
List localVarCollectionQueryParams = new ArrayList();
+ if (pageSize != null) {
+ localVarQueryParams.addAll(localVarApiClient.parameterToPair("pageSize", pageSize));
+ }
+
+ if (skip != null) {
+ localVarQueryParams.addAll(localVarApiClient.parameterToPair("skip", skip));
+ }
+
+ if (pointsFrom != null) {
+ localVarQueryParams.addAll(localVarApiClient.parameterToPair("pointsFrom", pointsFrom));
+ }
+
+ if (pointsTo != null) {
+ localVarQueryParams.addAll(localVarApiClient.parameterToPair("pointsTo", pointsTo));
+ }
+
+ if (includeFree != null) {
+ localVarQueryParams.addAll(localVarApiClient.parameterToPair("includeFree", includeFree));
+ }
+
+ if (loyaltyProgramId != null) {
+ localVarQueryParams.addAll(localVarApiClient.parameterToPair("loyaltyProgramId", loyaltyProgramId));
+ }
+
+ if (subledgerId != null) {
+ localVarQueryParams.addAll(localVarApiClient.parameterToPair("subledgerId", subledgerId));
+ }
+
+ if (profileIntegrationId != null) {
+ localVarQueryParams.addAll(localVarApiClient.parameterToPair("profileIntegrationId", profileIntegrationId));
+ }
+
+ if (loyaltyCardId != null) {
+ localVarQueryParams.addAll(localVarApiClient.parameterToPair("loyaltyCardId", loyaltyCardId));
+ }
+
Map localVarHeaderParams = new HashMap();
Map localVarCookieParams = new HashMap();
Map localVarFormParams = new HashMap();
@@ -3648,46 +3838,37 @@ public okhttp3.Call linkLoyaltyCardToProfileCall(Long loyaltyProgramId, String l
}
final String[] localVarContentTypes = {
- "application/json"
+
};
final String localVarContentType = localVarApiClient.selectHeaderContentType(localVarContentTypes);
localVarHeaderParams.put("Content-Type", localVarContentType);
String[] localVarAuthNames = new String[] { "api_key_v1" };
- return localVarApiClient.buildCall(localVarPath, "POST", localVarQueryParams, localVarCollectionQueryParams, localVarPostBody, localVarHeaderParams, localVarCookieParams, localVarFormParams, localVarAuthNames, _callback);
+ return localVarApiClient.buildCall(localVarPath, "GET", localVarQueryParams, localVarCollectionQueryParams, localVarPostBody, localVarHeaderParams, localVarCookieParams, localVarFormParams, localVarAuthNames, _callback);
}
@SuppressWarnings("rawtypes")
- private okhttp3.Call linkLoyaltyCardToProfileValidateBeforeCall(Long loyaltyProgramId, String loyaltyCardId, LoyaltyCardRegistration body, final ApiCallback _callback) throws ApiException {
-
- // verify the required parameter 'loyaltyProgramId' is set
- if (loyaltyProgramId == null) {
- throw new ApiException("Missing the required parameter 'loyaltyProgramId' when calling linkLoyaltyCardToProfile(Async)");
- }
-
- // verify the required parameter 'loyaltyCardId' is set
- if (loyaltyCardId == null) {
- throw new ApiException("Missing the required parameter 'loyaltyCardId' when calling linkLoyaltyCardToProfile(Async)");
- }
-
- // verify the required parameter 'body' is set
- if (body == null) {
- throw new ApiException("Missing the required parameter 'body' when calling linkLoyaltyCardToProfile(Async)");
- }
+ private okhttp3.Call integrationRewardsCatalogValidateBeforeCall(Long pageSize, Long skip, BigDecimal pointsFrom, BigDecimal pointsTo, Boolean includeFree, Long loyaltyProgramId, String subledgerId, String profileIntegrationId, String loyaltyCardId, final ApiCallback _callback) throws ApiException {
- okhttp3.Call localVarCall = linkLoyaltyCardToProfileCall(loyaltyProgramId, loyaltyCardId, body, _callback);
+ okhttp3.Call localVarCall = integrationRewardsCatalogCall(pageSize, skip, pointsFrom, pointsTo, includeFree, loyaltyProgramId, subledgerId, profileIntegrationId, loyaltyCardId, _callback);
return localVarCall;
}
/**
- * Link customer profile to card
- * [Loyalty cards](https://docs.talon.one/docs/product/loyalty-programs/card-based/card-based-overview) allow customers to collect and spend loyalty points within a [card-based loyalty program](https://docs.talon.one/docs/product/loyalty-programs/overview#loyalty-program-types). They are useful to gamify loyalty programs and can be used with or without customer profiles linked to them. Link a customer profile to a given loyalty card for the card to be set as **Registered**. This affects how it can be used. See the [docs](https://docs.talon.one/docs/product/loyalty-programs/card-based/managing-loyalty-cards#linking-customer-profiles-to-a-loyalty-card). > [!note] You can link as many customer profiles to a given loyalty card as the > [**card user limit**](https://docs.talon.one/docs/product/loyalty-programs/card-based/creating-cb-programs) > allows.
- * @param loyaltyProgramId Identifier of the card-based loyalty program containing the loyalty card. You can get the ID with the [List loyalty programs](https://docs.talon.one/management-api#tag/Loyalty/operation/getLoyaltyPrograms) endpoint. (required)
- * @param loyaltyCardId Identifier of the loyalty card. You can get the identifier with the [List loyalty cards](https://docs.talon.one/management-api#tag/Loyalty-cards/operation/getLoyaltyCards) endpoint. **Important**: The loyalty card ID requires [URL encoding](https://www.w3schools.com/tags//ref_urlencode.asp) if it contains special characters. For example, you must encode `NewCard2026%` as `NewCard2026%25`. (required)
- * @param body body (required)
- * @return LoyaltyCard
+ * List rewards in the catalog
+ * Retrieve the rewards catalog for the Application. Returns a paginated list of rewards.
+ * @param pageSize The number of items in the response. (optional, default to 1000l)
+ * @param skip The number of items to skip when paging through large result sets. (optional)
+ * @param pointsFrom Return only rewards whose points required is greater than or equal to this value. (optional)
+ * @param pointsTo Return only rewards whose points required is less than or equal to this value. (optional)
+ * @param includeFree Whether to include rewards that have no `pointsRequired`. These rewards are treated as free and available to all customers. (optional, default to true)
+ * @param loyaltyProgramId Return only rewards available in this loyalty program. (optional)
+ * @param subledgerId Return only rewards available in this subledger. Must be combined with `loyaltyProgramId`. To specify the main ledger, provide an empty string (\"\"). (optional)
+ * @param profileIntegrationId The integration ID of the customer profile whose loyalty balances to include in the response. Balances are returned only when `loyaltyProgramId` is also provided. **Note:** `profileIntegrationId` and `loyaltyCardId` are mutually exclusive. Do not send both in the same request. (optional)
+ * @param loyaltyCardId The identifier of the loyalty card whose loyalty balances to include in the response. Balances are returned only when `loyaltyProgramId` is also provided. **Note:** `profileIntegrationId` and `loyaltyCardId` are mutually exclusive. Do not send both in the same request. (optional)
+ * @return InlineResponse20056
* @throws ApiException If fail to call the API, e.g. server error or cannot deserialize the response body
* @http.response.details
@@ -3698,18 +3879,24 @@ private okhttp3.Call linkLoyaltyCardToProfileValidateBeforeCall(Long loyaltyProg
| 404 | Not found | - |
*/
- public LoyaltyCard linkLoyaltyCardToProfile(Long loyaltyProgramId, String loyaltyCardId, LoyaltyCardRegistration body) throws ApiException {
- ApiResponse localVarResp = linkLoyaltyCardToProfileWithHttpInfo(loyaltyProgramId, loyaltyCardId, body);
+ public InlineResponse20056 integrationRewardsCatalog(Long pageSize, Long skip, BigDecimal pointsFrom, BigDecimal pointsTo, Boolean includeFree, Long loyaltyProgramId, String subledgerId, String profileIntegrationId, String loyaltyCardId) throws ApiException {
+ ApiResponse localVarResp = integrationRewardsCatalogWithHttpInfo(pageSize, skip, pointsFrom, pointsTo, includeFree, loyaltyProgramId, subledgerId, profileIntegrationId, loyaltyCardId);
return localVarResp.getData();
}
/**
- * Link customer profile to card
- * [Loyalty cards](https://docs.talon.one/docs/product/loyalty-programs/card-based/card-based-overview) allow customers to collect and spend loyalty points within a [card-based loyalty program](https://docs.talon.one/docs/product/loyalty-programs/overview#loyalty-program-types). They are useful to gamify loyalty programs and can be used with or without customer profiles linked to them. Link a customer profile to a given loyalty card for the card to be set as **Registered**. This affects how it can be used. See the [docs](https://docs.talon.one/docs/product/loyalty-programs/card-based/managing-loyalty-cards#linking-customer-profiles-to-a-loyalty-card). > [!note] You can link as many customer profiles to a given loyalty card as the > [**card user limit**](https://docs.talon.one/docs/product/loyalty-programs/card-based/creating-cb-programs) > allows.
- * @param loyaltyProgramId Identifier of the card-based loyalty program containing the loyalty card. You can get the ID with the [List loyalty programs](https://docs.talon.one/management-api#tag/Loyalty/operation/getLoyaltyPrograms) endpoint. (required)
- * @param loyaltyCardId Identifier of the loyalty card. You can get the identifier with the [List loyalty cards](https://docs.talon.one/management-api#tag/Loyalty-cards/operation/getLoyaltyCards) endpoint. **Important**: The loyalty card ID requires [URL encoding](https://www.w3schools.com/tags//ref_urlencode.asp) if it contains special characters. For example, you must encode `NewCard2026%` as `NewCard2026%25`. (required)
- * @param body body (required)
- * @return ApiResponse<LoyaltyCard>
+ * List rewards in the catalog
+ * Retrieve the rewards catalog for the Application. Returns a paginated list of rewards.
+ * @param pageSize The number of items in the response. (optional, default to 1000l)
+ * @param skip The number of items to skip when paging through large result sets. (optional)
+ * @param pointsFrom Return only rewards whose points required is greater than or equal to this value. (optional)
+ * @param pointsTo Return only rewards whose points required is less than or equal to this value. (optional)
+ * @param includeFree Whether to include rewards that have no `pointsRequired`. These rewards are treated as free and available to all customers. (optional, default to true)
+ * @param loyaltyProgramId Return only rewards available in this loyalty program. (optional)
+ * @param subledgerId Return only rewards available in this subledger. Must be combined with `loyaltyProgramId`. To specify the main ledger, provide an empty string (\"\"). (optional)
+ * @param profileIntegrationId The integration ID of the customer profile whose loyalty balances to include in the response. Balances are returned only when `loyaltyProgramId` is also provided. **Note:** `profileIntegrationId` and `loyaltyCardId` are mutually exclusive. Do not send both in the same request. (optional)
+ * @param loyaltyCardId The identifier of the loyalty card whose loyalty balances to include in the response. Balances are returned only when `loyaltyProgramId` is also provided. **Note:** `profileIntegrationId` and `loyaltyCardId` are mutually exclusive. Do not send both in the same request. (optional)
+ * @return ApiResponse<InlineResponse20056>
* @throws ApiException If fail to call the API, e.g. server error or cannot deserialize the response body
* @http.response.details
@@ -3720,18 +3907,24 @@ public LoyaltyCard linkLoyaltyCardToProfile(Long loyaltyProgramId, String loyalt
| 404 | Not found | - |
*/
- public ApiResponse linkLoyaltyCardToProfileWithHttpInfo(Long loyaltyProgramId, String loyaltyCardId, LoyaltyCardRegistration body) throws ApiException {
- okhttp3.Call localVarCall = linkLoyaltyCardToProfileValidateBeforeCall(loyaltyProgramId, loyaltyCardId, body, null);
- Type localVarReturnType = new TypeToken(){}.getType();
+ public ApiResponse integrationRewardsCatalogWithHttpInfo(Long pageSize, Long skip, BigDecimal pointsFrom, BigDecimal pointsTo, Boolean includeFree, Long loyaltyProgramId, String subledgerId, String profileIntegrationId, String loyaltyCardId) throws ApiException {
+ okhttp3.Call localVarCall = integrationRewardsCatalogValidateBeforeCall(pageSize, skip, pointsFrom, pointsTo, includeFree, loyaltyProgramId, subledgerId, profileIntegrationId, loyaltyCardId, null);
+ Type localVarReturnType = new TypeToken(){}.getType();
return localVarApiClient.execute(localVarCall, localVarReturnType);
}
/**
- * Link customer profile to card (asynchronously)
- * [Loyalty cards](https://docs.talon.one/docs/product/loyalty-programs/card-based/card-based-overview) allow customers to collect and spend loyalty points within a [card-based loyalty program](https://docs.talon.one/docs/product/loyalty-programs/overview#loyalty-program-types). They are useful to gamify loyalty programs and can be used with or without customer profiles linked to them. Link a customer profile to a given loyalty card for the card to be set as **Registered**. This affects how it can be used. See the [docs](https://docs.talon.one/docs/product/loyalty-programs/card-based/managing-loyalty-cards#linking-customer-profiles-to-a-loyalty-card). > [!note] You can link as many customer profiles to a given loyalty card as the > [**card user limit**](https://docs.talon.one/docs/product/loyalty-programs/card-based/creating-cb-programs) > allows.
- * @param loyaltyProgramId Identifier of the card-based loyalty program containing the loyalty card. You can get the ID with the [List loyalty programs](https://docs.talon.one/management-api#tag/Loyalty/operation/getLoyaltyPrograms) endpoint. (required)
- * @param loyaltyCardId Identifier of the loyalty card. You can get the identifier with the [List loyalty cards](https://docs.talon.one/management-api#tag/Loyalty-cards/operation/getLoyaltyCards) endpoint. **Important**: The loyalty card ID requires [URL encoding](https://www.w3schools.com/tags//ref_urlencode.asp) if it contains special characters. For example, you must encode `NewCard2026%` as `NewCard2026%25`. (required)
- * @param body body (required)
+ * List rewards in the catalog (asynchronously)
+ * Retrieve the rewards catalog for the Application. Returns a paginated list of rewards.
+ * @param pageSize The number of items in the response. (optional, default to 1000l)
+ * @param skip The number of items to skip when paging through large result sets. (optional)
+ * @param pointsFrom Return only rewards whose points required is greater than or equal to this value. (optional)
+ * @param pointsTo Return only rewards whose points required is less than or equal to this value. (optional)
+ * @param includeFree Whether to include rewards that have no `pointsRequired`. These rewards are treated as free and available to all customers. (optional, default to true)
+ * @param loyaltyProgramId Return only rewards available in this loyalty program. (optional)
+ * @param subledgerId Return only rewards available in this subledger. Must be combined with `loyaltyProgramId`. To specify the main ledger, provide an empty string (\"\"). (optional)
+ * @param profileIntegrationId The integration ID of the customer profile whose loyalty balances to include in the response. Balances are returned only when `loyaltyProgramId` is also provided. **Note:** `profileIntegrationId` and `loyaltyCardId` are mutually exclusive. Do not send both in the same request. (optional)
+ * @param loyaltyCardId The identifier of the loyalty card whose loyalty balances to include in the response. Balances are returned only when `loyaltyProgramId` is also provided. **Note:** `profileIntegrationId` and `loyaltyCardId` are mutually exclusive. Do not send both in the same request. (optional)
* @param _callback The callback to be executed when the API call finishes
* @return The request call
* @throws ApiException If fail to process the API call, e.g. serializing the request body object
@@ -3744,16 +3937,17 @@ public ApiResponse linkLoyaltyCardToProfileWithHttpInfo(Long loyalt
| 404 | Not found | - |
*/
- public okhttp3.Call linkLoyaltyCardToProfileAsync(Long loyaltyProgramId, String loyaltyCardId, LoyaltyCardRegistration body, final ApiCallback _callback) throws ApiException {
+ public okhttp3.Call integrationRewardsCatalogAsync(Long pageSize, Long skip, BigDecimal pointsFrom, BigDecimal pointsTo, Boolean includeFree, Long loyaltyProgramId, String subledgerId, String profileIntegrationId, String loyaltyCardId, final ApiCallback _callback) throws ApiException {
- okhttp3.Call localVarCall = linkLoyaltyCardToProfileValidateBeforeCall(loyaltyProgramId, loyaltyCardId, body, _callback);
- Type localVarReturnType = new TypeToken(){}.getType();
+ okhttp3.Call localVarCall = integrationRewardsCatalogValidateBeforeCall(pageSize, skip, pointsFrom, pointsTo, includeFree, loyaltyProgramId, subledgerId, profileIntegrationId, loyaltyCardId, _callback);
+ Type localVarReturnType = new TypeToken(){}.getType();
localVarApiClient.executeAsync(localVarCall, localVarReturnType, _callback);
return localVarCall;
}
/**
- * Build call for reopenCustomerSession
- * @param customerSessionId The `integration ID` of the customer session. You set this ID when you create a customer session. You can see existing customer session integration IDs in the Campaign Manager's **Sessions** menu, or via the [List Application session](https://docs.talon.one/management-api#tag/Customer-data/operation/getApplicationSessions) endpoint. (required)
+ * Build call for joinLoyaltyProgram
+ * @param loyaltyProgramId Identifier of the profile-based loyalty program. You can get the ID with the [List loyalty programs](https://docs.talon.one/management-api#tag/Loyalty/operation/getLoyaltyPrograms) endpoint. (required)
+ * @param integrationId The integration ID of the customer profile. You can get the `integrationId` of a profile using: - A customer session integration ID with the [Update customer session](https://docs.talon.one/integration-api#tag/Customer-sessions/operation/updateCustomerSessionV2) endpoint. - The Management API with the [List application's customers](https://docs.talon.one/management-api#tag/Customer-data/operation/getApplicationCustomers) endpoint. (required)
* @param _callback Callback for upload/download progress
* @return Call to execute
* @throws ApiException If fail to serialize the request body object
@@ -3762,15 +3956,17 @@ public okhttp3.Call linkLoyaltyCardToProfileAsync(Long loyaltyProgramId, String
| Status Code | Description | Response Headers |
| 200 | OK | - |
| 400 | Bad request | - |
- | 401 | Unauthorized - Invalid API key | - |
+ | 401 | Unauthorized | - |
+ | 404 | Not found | - |
*/
- public okhttp3.Call reopenCustomerSessionCall(String customerSessionId, final ApiCallback _callback) throws ApiException {
+ public okhttp3.Call joinLoyaltyProgramCall(Long loyaltyProgramId, String integrationId, final ApiCallback _callback) throws ApiException {
Object localVarPostBody = null;
// create path and map variables
- String localVarPath = "/v2/customer_sessions/{customerSessionId}/reopen"
- .replaceAll("\\{" + "customerSessionId" + "\\}", localVarApiClient.escapeString(customerSessionId.toString()));
+ String localVarPath = "/v1/loyalty_programs/{loyaltyProgramId}/profile/{integrationId}/join"
+ .replaceAll("\\{" + "loyaltyProgramId" + "\\}", localVarApiClient.escapeString(loyaltyProgramId.toString()))
+ .replaceAll("\\{" + "integrationId" + "\\}", localVarApiClient.escapeString(integrationId.toString()));
List localVarQueryParams = new ArrayList();
List localVarCollectionQueryParams = new ArrayList();
@@ -3792,47 +3988,315 @@ public okhttp3.Call reopenCustomerSessionCall(String customerSessionId, final Ap
localVarHeaderParams.put("Content-Type", localVarContentType);
String[] localVarAuthNames = new String[] { "api_key_v1" };
- return localVarApiClient.buildCall(localVarPath, "PUT", localVarQueryParams, localVarCollectionQueryParams, localVarPostBody, localVarHeaderParams, localVarCookieParams, localVarFormParams, localVarAuthNames, _callback);
+ return localVarApiClient.buildCall(localVarPath, "POST", localVarQueryParams, localVarCollectionQueryParams, localVarPostBody, localVarHeaderParams, localVarCookieParams, localVarFormParams, localVarAuthNames, _callback);
}
@SuppressWarnings("rawtypes")
- private okhttp3.Call reopenCustomerSessionValidateBeforeCall(String customerSessionId, final ApiCallback _callback) throws ApiException {
+ private okhttp3.Call joinLoyaltyProgramValidateBeforeCall(Long loyaltyProgramId, String integrationId, final ApiCallback _callback) throws ApiException {
- // verify the required parameter 'customerSessionId' is set
- if (customerSessionId == null) {
- throw new ApiException("Missing the required parameter 'customerSessionId' when calling reopenCustomerSession(Async)");
+ // verify the required parameter 'loyaltyProgramId' is set
+ if (loyaltyProgramId == null) {
+ throw new ApiException("Missing the required parameter 'loyaltyProgramId' when calling joinLoyaltyProgram(Async)");
+ }
+
+ // verify the required parameter 'integrationId' is set
+ if (integrationId == null) {
+ throw new ApiException("Missing the required parameter 'integrationId' when calling joinLoyaltyProgram(Async)");
}
- okhttp3.Call localVarCall = reopenCustomerSessionCall(customerSessionId, _callback);
+ okhttp3.Call localVarCall = joinLoyaltyProgramCall(loyaltyProgramId, integrationId, _callback);
return localVarCall;
}
/**
- * Reopen customer session
- * Reopen a closed [customer session](https://docs.talon.one/docs/dev/concepts/entities/customer-sessions). For example, if a session has been completed but still needs to be edited, you can reopen it with this endpoint. A reopen session is treated like a standard open session. When reopening a session: - The `talon_session_reopened` event is triggered. You can see it in the **Events** view in the Campaign Manager. - The session state is updated to `open`. - Any modified budgets and triggered effects are rolled back when the session closes. - Depending on the [return policy](https://docs.talon.one/docs/product/loyalty-programs/managing-loyalty-programs#return-policy) in your loyalty programs, points are rolled back in the following ways: - Pending points are rolled back automatically. - If **Active points deduction** setting is enabled, any points that were earned and activated when the session closed are rolled back. - If **Negative balance** is enabled, the rollback can create a negative points balance. <details> <summary><strong>Effects and budgets unimpacted by a session reopening</strong></summary> <div> <p>The following effects and budgets remain in the state they were in when the session closed:</p> <ul> <li>Add free item effect</li> <li>Award giveaway</li> <li>Coupon and referral creation</li> <li>Coupon reservation</li> <li>Custom effect</li> <li>Update attribute value</li> <li>Update cart item attribute value</li> </ul> </div> </details> To see an example of a rollback, see the [Cancelling a session with campaign budgets](https://docs.talon.one/docs/dev/tutorials/rolling-back-effects) tutorial. > [!note] If your order workflow requires you to create a new session > instead of reopening a session, use the > [Update customer session](https://docs.talon.one/integration-api#tag/Customer-sessions/operation/updateCustomerSessionV2) > endpoint to cancel a closed session and create a new one.
- * @param customerSessionId The `integration ID` of the customer session. You set this ID when you create a customer session. You can see existing customer session integration IDs in the Campaign Manager's **Sessions** menu, or via the [List Application session](https://docs.talon.one/management-api#tag/Customer-data/operation/getApplicationSessions) endpoint. (required)
- * @return ReopenSessionResponse
+ * Join customer profile to loyalty program
+ * Join a customer profile to the specified loyalty program. If the customer profile does not exist, it will be created first using the provided `integrationId`, then joined to the loyalty program. > [!note] This endpoint only works with profile-based loyalty programs. **Behavior**: - If the loyalty program does not exist, the request fails. - If the customer profile is already joined to the loyalty program, the request fails. - If the customer profile does not exist, it is created and then joined to the loyalty program.
+ * @param loyaltyProgramId Identifier of the profile-based loyalty program. You can get the ID with the [List loyalty programs](https://docs.talon.one/management-api#tag/Loyalty/operation/getLoyaltyPrograms) endpoint. (required)
+ * @param integrationId The integration ID of the customer profile. You can get the `integrationId` of a profile using: - A customer session integration ID with the [Update customer session](https://docs.talon.one/integration-api#tag/Customer-sessions/operation/updateCustomerSessionV2) endpoint. - The Management API with the [List application's customers](https://docs.talon.one/management-api#tag/Customer-data/operation/getApplicationCustomers) endpoint. (required)
* @throws ApiException If fail to call the API, e.g. server error or cannot deserialize the response body
* @http.response.details
| Status Code | Description | Response Headers |
| 200 | OK | - |
| 400 | Bad request | - |
- | 401 | Unauthorized - Invalid API key | - |
+ | 401 | Unauthorized | - |
+ | 404 | Not found | - |
*/
- public ReopenSessionResponse reopenCustomerSession(String customerSessionId) throws ApiException {
- ApiResponse localVarResp = reopenCustomerSessionWithHttpInfo(customerSessionId);
- return localVarResp.getData();
+ public void joinLoyaltyProgram(Long loyaltyProgramId, String integrationId) throws ApiException {
+ joinLoyaltyProgramWithHttpInfo(loyaltyProgramId, integrationId);
}
/**
- * Reopen customer session
- * Reopen a closed [customer session](https://docs.talon.one/docs/dev/concepts/entities/customer-sessions). For example, if a session has been completed but still needs to be edited, you can reopen it with this endpoint. A reopen session is treated like a standard open session. When reopening a session: - The `talon_session_reopened` event is triggered. You can see it in the **Events** view in the Campaign Manager. - The session state is updated to `open`. - Any modified budgets and triggered effects are rolled back when the session closes. - Depending on the [return policy](https://docs.talon.one/docs/product/loyalty-programs/managing-loyalty-programs#return-policy) in your loyalty programs, points are rolled back in the following ways: - Pending points are rolled back automatically. - If **Active points deduction** setting is enabled, any points that were earned and activated when the session closed are rolled back. - If **Negative balance** is enabled, the rollback can create a negative points balance. <details> <summary><strong>Effects and budgets unimpacted by a session reopening</strong></summary> <div> <p>The following effects and budgets remain in the state they were in when the session closed:</p> <ul> <li>Add free item effect</li> <li>Award giveaway</li> <li>Coupon and referral creation</li> <li>Coupon reservation</li> <li>Custom effect</li> <li>Update attribute value</li> <li>Update cart item attribute value</li> </ul> </div> </details> To see an example of a rollback, see the [Cancelling a session with campaign budgets](https://docs.talon.one/docs/dev/tutorials/rolling-back-effects) tutorial. > [!note] If your order workflow requires you to create a new session > instead of reopening a session, use the > [Update customer session](https://docs.talon.one/integration-api#tag/Customer-sessions/operation/updateCustomerSessionV2) > endpoint to cancel a closed session and create a new one.
- * @param customerSessionId The `integration ID` of the customer session. You set this ID when you create a customer session. You can see existing customer session integration IDs in the Campaign Manager's **Sessions** menu, or via the [List Application session](https://docs.talon.one/management-api#tag/Customer-data/operation/getApplicationSessions) endpoint. (required)
- * @return ApiResponse<ReopenSessionResponse>
+ * Join customer profile to loyalty program
+ * Join a customer profile to the specified loyalty program. If the customer profile does not exist, it will be created first using the provided `integrationId`, then joined to the loyalty program. > [!note] This endpoint only works with profile-based loyalty programs. **Behavior**: - If the loyalty program does not exist, the request fails. - If the customer profile is already joined to the loyalty program, the request fails. - If the customer profile does not exist, it is created and then joined to the loyalty program.
+ * @param loyaltyProgramId Identifier of the profile-based loyalty program. You can get the ID with the [List loyalty programs](https://docs.talon.one/management-api#tag/Loyalty/operation/getLoyaltyPrograms) endpoint. (required)
+ * @param integrationId The integration ID of the customer profile. You can get the `integrationId` of a profile using: - A customer session integration ID with the [Update customer session](https://docs.talon.one/integration-api#tag/Customer-sessions/operation/updateCustomerSessionV2) endpoint. - The Management API with the [List application's customers](https://docs.talon.one/management-api#tag/Customer-data/operation/getApplicationCustomers) endpoint. (required)
+ * @return ApiResponse<Void>
+ * @throws ApiException If fail to call the API, e.g. server error or cannot deserialize the response body
+ * @http.response.details
+
+ | Status Code | Description | Response Headers |
+ | 200 | OK | - |
+ | 400 | Bad request | - |
+ | 401 | Unauthorized | - |
+ | 404 | Not found | - |
+
+ */
+ public ApiResponse joinLoyaltyProgramWithHttpInfo(Long loyaltyProgramId, String integrationId) throws ApiException {
+ okhttp3.Call localVarCall = joinLoyaltyProgramValidateBeforeCall(loyaltyProgramId, integrationId, null);
+ return localVarApiClient.execute(localVarCall);
+ }
+
+ /**
+ * Join customer profile to loyalty program (asynchronously)
+ * Join a customer profile to the specified loyalty program. If the customer profile does not exist, it will be created first using the provided `integrationId`, then joined to the loyalty program. > [!note] This endpoint only works with profile-based loyalty programs. **Behavior**: - If the loyalty program does not exist, the request fails. - If the customer profile is already joined to the loyalty program, the request fails. - If the customer profile does not exist, it is created and then joined to the loyalty program.
+ * @param loyaltyProgramId Identifier of the profile-based loyalty program. You can get the ID with the [List loyalty programs](https://docs.talon.one/management-api#tag/Loyalty/operation/getLoyaltyPrograms) endpoint. (required)
+ * @param integrationId The integration ID of the customer profile. You can get the `integrationId` of a profile using: - A customer session integration ID with the [Update customer session](https://docs.talon.one/integration-api#tag/Customer-sessions/operation/updateCustomerSessionV2) endpoint. - The Management API with the [List application's customers](https://docs.talon.one/management-api#tag/Customer-data/operation/getApplicationCustomers) endpoint. (required)
+ * @param _callback The callback to be executed when the API call finishes
+ * @return The request call
+ * @throws ApiException If fail to process the API call, e.g. serializing the request body object
+ * @http.response.details
+
+ | Status Code | Description | Response Headers |
+ | 200 | OK | - |
+ | 400 | Bad request | - |
+ | 401 | Unauthorized | - |
+ | 404 | Not found | - |
+
+ */
+ public okhttp3.Call joinLoyaltyProgramAsync(Long loyaltyProgramId, String integrationId, final ApiCallback _callback) throws ApiException {
+
+ okhttp3.Call localVarCall = joinLoyaltyProgramValidateBeforeCall(loyaltyProgramId, integrationId, _callback);
+ localVarApiClient.executeAsync(localVarCall, _callback);
+ return localVarCall;
+ }
+ /**
+ * Build call for linkLoyaltyCardToProfile
+ * @param loyaltyProgramId Identifier of the card-based loyalty program containing the loyalty card. You can get the ID with the [List loyalty programs](https://docs.talon.one/management-api#tag/Loyalty/operation/getLoyaltyPrograms) endpoint. (required)
+ * @param loyaltyCardId Identifier of the loyalty card. You can get the identifier with the [List loyalty cards](https://docs.talon.one/management-api#tag/Loyalty-cards/operation/getLoyaltyCards) endpoint. **Important**: The loyalty card ID requires [URL encoding](https://www.w3schools.com/tags//ref_urlencode.asp) if it contains special characters. For example, you must encode `NewCard2026%` as `NewCard2026%25`. (required)
+ * @param body body (required)
+ * @param _callback Callback for upload/download progress
+ * @return Call to execute
+ * @throws ApiException If fail to serialize the request body object
+ * @http.response.details
+
+ | Status Code | Description | Response Headers |
+ | 200 | OK | - |
+ | 400 | Bad request | - |
+ | 401 | Unauthorized | - |
+ | 404 | Not found | - |
+
+ */
+ public okhttp3.Call linkLoyaltyCardToProfileCall(Long loyaltyProgramId, String loyaltyCardId, LoyaltyCardRegistration body, final ApiCallback _callback) throws ApiException {
+ Object localVarPostBody = body;
+
+ // create path and map variables
+ String localVarPath = "/v2/loyalty_programs/{loyaltyProgramId}/cards/{loyaltyCardId}/link_profile"
+ .replaceAll("\\{" + "loyaltyProgramId" + "\\}", localVarApiClient.escapeString(loyaltyProgramId.toString()))
+ .replaceAll("\\{" + "loyaltyCardId" + "\\}", localVarApiClient.escapeString(loyaltyCardId.toString()));
+
+ List localVarQueryParams = new ArrayList();
+ List localVarCollectionQueryParams = new ArrayList();
+ Map localVarHeaderParams = new HashMap();
+ Map localVarCookieParams = new HashMap();
+ Map localVarFormParams = new HashMap();
+ final String[] localVarAccepts = {
+ "application/json"
+ };
+ final String localVarAccept = localVarApiClient.selectHeaderAccept(localVarAccepts);
+ if (localVarAccept != null) {
+ localVarHeaderParams.put("Accept", localVarAccept);
+ }
+
+ final String[] localVarContentTypes = {
+ "application/json"
+ };
+ final String localVarContentType = localVarApiClient.selectHeaderContentType(localVarContentTypes);
+ localVarHeaderParams.put("Content-Type", localVarContentType);
+
+ String[] localVarAuthNames = new String[] { "api_key_v1" };
+ return localVarApiClient.buildCall(localVarPath, "POST", localVarQueryParams, localVarCollectionQueryParams, localVarPostBody, localVarHeaderParams, localVarCookieParams, localVarFormParams, localVarAuthNames, _callback);
+ }
+
+ @SuppressWarnings("rawtypes")
+ private okhttp3.Call linkLoyaltyCardToProfileValidateBeforeCall(Long loyaltyProgramId, String loyaltyCardId, LoyaltyCardRegistration body, final ApiCallback _callback) throws ApiException {
+
+ // verify the required parameter 'loyaltyProgramId' is set
+ if (loyaltyProgramId == null) {
+ throw new ApiException("Missing the required parameter 'loyaltyProgramId' when calling linkLoyaltyCardToProfile(Async)");
+ }
+
+ // verify the required parameter 'loyaltyCardId' is set
+ if (loyaltyCardId == null) {
+ throw new ApiException("Missing the required parameter 'loyaltyCardId' when calling linkLoyaltyCardToProfile(Async)");
+ }
+
+ // verify the required parameter 'body' is set
+ if (body == null) {
+ throw new ApiException("Missing the required parameter 'body' when calling linkLoyaltyCardToProfile(Async)");
+ }
+
+
+ okhttp3.Call localVarCall = linkLoyaltyCardToProfileCall(loyaltyProgramId, loyaltyCardId, body, _callback);
+ return localVarCall;
+
+ }
+
+ /**
+ * Link customer profile to card
+ * [Loyalty cards](https://docs.talon.one/docs/product/loyalty-programs/card-based/card-based-overview) allow customers to collect and spend loyalty points within a [card-based loyalty program](https://docs.talon.one/docs/product/loyalty-programs/overview#loyalty-program-types). They are useful to gamify loyalty programs and can be used with or without customer profiles linked to them. Link a customer profile to a given loyalty card for the card to be set as **Registered**. This affects how it can be used. See the [docs](https://docs.talon.one/docs/product/loyalty-programs/card-based/managing-loyalty-cards#linking-customer-profiles-to-a-loyalty-card). > [!note] You can link as many customer profiles to a given loyalty card as the > [**card user limit**](https://docs.talon.one/docs/product/loyalty-programs/card-based/creating-cb-programs) > allows.
+ * @param loyaltyProgramId Identifier of the card-based loyalty program containing the loyalty card. You can get the ID with the [List loyalty programs](https://docs.talon.one/management-api#tag/Loyalty/operation/getLoyaltyPrograms) endpoint. (required)
+ * @param loyaltyCardId Identifier of the loyalty card. You can get the identifier with the [List loyalty cards](https://docs.talon.one/management-api#tag/Loyalty-cards/operation/getLoyaltyCards) endpoint. **Important**: The loyalty card ID requires [URL encoding](https://www.w3schools.com/tags//ref_urlencode.asp) if it contains special characters. For example, you must encode `NewCard2026%` as `NewCard2026%25`. (required)
+ * @param body body (required)
+ * @return LoyaltyCard
+ * @throws ApiException If fail to call the API, e.g. server error or cannot deserialize the response body
+ * @http.response.details
+
+ | Status Code | Description | Response Headers |
+ | 200 | OK | - |
+ | 400 | Bad request | - |
+ | 401 | Unauthorized | - |
+ | 404 | Not found | - |
+
+ */
+ public LoyaltyCard linkLoyaltyCardToProfile(Long loyaltyProgramId, String loyaltyCardId, LoyaltyCardRegistration body) throws ApiException {
+ ApiResponse localVarResp = linkLoyaltyCardToProfileWithHttpInfo(loyaltyProgramId, loyaltyCardId, body);
+ return localVarResp.getData();
+ }
+
+ /**
+ * Link customer profile to card
+ * [Loyalty cards](https://docs.talon.one/docs/product/loyalty-programs/card-based/card-based-overview) allow customers to collect and spend loyalty points within a [card-based loyalty program](https://docs.talon.one/docs/product/loyalty-programs/overview#loyalty-program-types). They are useful to gamify loyalty programs and can be used with or without customer profiles linked to them. Link a customer profile to a given loyalty card for the card to be set as **Registered**. This affects how it can be used. See the [docs](https://docs.talon.one/docs/product/loyalty-programs/card-based/managing-loyalty-cards#linking-customer-profiles-to-a-loyalty-card). > [!note] You can link as many customer profiles to a given loyalty card as the > [**card user limit**](https://docs.talon.one/docs/product/loyalty-programs/card-based/creating-cb-programs) > allows.
+ * @param loyaltyProgramId Identifier of the card-based loyalty program containing the loyalty card. You can get the ID with the [List loyalty programs](https://docs.talon.one/management-api#tag/Loyalty/operation/getLoyaltyPrograms) endpoint. (required)
+ * @param loyaltyCardId Identifier of the loyalty card. You can get the identifier with the [List loyalty cards](https://docs.talon.one/management-api#tag/Loyalty-cards/operation/getLoyaltyCards) endpoint. **Important**: The loyalty card ID requires [URL encoding](https://www.w3schools.com/tags//ref_urlencode.asp) if it contains special characters. For example, you must encode `NewCard2026%` as `NewCard2026%25`. (required)
+ * @param body body (required)
+ * @return ApiResponse<LoyaltyCard>
+ * @throws ApiException If fail to call the API, e.g. server error or cannot deserialize the response body
+ * @http.response.details
+
+ | Status Code | Description | Response Headers |
+ | 200 | OK | - |
+ | 400 | Bad request | - |
+ | 401 | Unauthorized | - |
+ | 404 | Not found | - |
+
+ */
+ public ApiResponse linkLoyaltyCardToProfileWithHttpInfo(Long loyaltyProgramId, String loyaltyCardId, LoyaltyCardRegistration body) throws ApiException {
+ okhttp3.Call localVarCall = linkLoyaltyCardToProfileValidateBeforeCall(loyaltyProgramId, loyaltyCardId, body, null);
+ Type localVarReturnType = new TypeToken(){}.getType();
+ return localVarApiClient.execute(localVarCall, localVarReturnType);
+ }
+
+ /**
+ * Link customer profile to card (asynchronously)
+ * [Loyalty cards](https://docs.talon.one/docs/product/loyalty-programs/card-based/card-based-overview) allow customers to collect and spend loyalty points within a [card-based loyalty program](https://docs.talon.one/docs/product/loyalty-programs/overview#loyalty-program-types). They are useful to gamify loyalty programs and can be used with or without customer profiles linked to them. Link a customer profile to a given loyalty card for the card to be set as **Registered**. This affects how it can be used. See the [docs](https://docs.talon.one/docs/product/loyalty-programs/card-based/managing-loyalty-cards#linking-customer-profiles-to-a-loyalty-card). > [!note] You can link as many customer profiles to a given loyalty card as the > [**card user limit**](https://docs.talon.one/docs/product/loyalty-programs/card-based/creating-cb-programs) > allows.
+ * @param loyaltyProgramId Identifier of the card-based loyalty program containing the loyalty card. You can get the ID with the [List loyalty programs](https://docs.talon.one/management-api#tag/Loyalty/operation/getLoyaltyPrograms) endpoint. (required)
+ * @param loyaltyCardId Identifier of the loyalty card. You can get the identifier with the [List loyalty cards](https://docs.talon.one/management-api#tag/Loyalty-cards/operation/getLoyaltyCards) endpoint. **Important**: The loyalty card ID requires [URL encoding](https://www.w3schools.com/tags//ref_urlencode.asp) if it contains special characters. For example, you must encode `NewCard2026%` as `NewCard2026%25`. (required)
+ * @param body body (required)
+ * @param _callback The callback to be executed when the API call finishes
+ * @return The request call
+ * @throws ApiException If fail to process the API call, e.g. serializing the request body object
+ * @http.response.details
+
+ | Status Code | Description | Response Headers |
+ | 200 | OK | - |
+ | 400 | Bad request | - |
+ | 401 | Unauthorized | - |
+ | 404 | Not found | - |
+
+ */
+ public okhttp3.Call linkLoyaltyCardToProfileAsync(Long loyaltyProgramId, String loyaltyCardId, LoyaltyCardRegistration body, final ApiCallback _callback) throws ApiException {
+
+ okhttp3.Call localVarCall = linkLoyaltyCardToProfileValidateBeforeCall(loyaltyProgramId, loyaltyCardId, body, _callback);
+ Type localVarReturnType = new TypeToken(){}.getType();
+ localVarApiClient.executeAsync(localVarCall, localVarReturnType, _callback);
+ return localVarCall;
+ }
+ /**
+ * Build call for reopenCustomerSession
+ * @param customerSessionId The `integration ID` of the customer session. You set this ID when you create a customer session. You can see existing customer session integration IDs in the Campaign Manager's **Sessions** menu, or via the [List Application session](https://docs.talon.one/management-api#tag/Customer-data/operation/getApplicationSessions) endpoint. (required)
+ * @param _callback Callback for upload/download progress
+ * @return Call to execute
+ * @throws ApiException If fail to serialize the request body object
+ * @http.response.details
+
+ | Status Code | Description | Response Headers |
+ | 200 | OK | - |
+ | 400 | Bad request | - |
+ | 401 | Unauthorized - Invalid API key | - |
+
+ */
+ public okhttp3.Call reopenCustomerSessionCall(String customerSessionId, final ApiCallback _callback) throws ApiException {
+ Object localVarPostBody = null;
+
+ // create path and map variables
+ String localVarPath = "/v2/customer_sessions/{customerSessionId}/reopen"
+ .replaceAll("\\{" + "customerSessionId" + "\\}", localVarApiClient.escapeString(customerSessionId.toString()));
+
+ List localVarQueryParams = new ArrayList();
+ List localVarCollectionQueryParams = new ArrayList();
+ Map localVarHeaderParams = new HashMap();
+ Map localVarCookieParams = new HashMap();
+ Map localVarFormParams = new HashMap();
+ final String[] localVarAccepts = {
+ "application/json"
+ };
+ final String localVarAccept = localVarApiClient.selectHeaderAccept(localVarAccepts);
+ if (localVarAccept != null) {
+ localVarHeaderParams.put("Accept", localVarAccept);
+ }
+
+ final String[] localVarContentTypes = {
+
+ };
+ final String localVarContentType = localVarApiClient.selectHeaderContentType(localVarContentTypes);
+ localVarHeaderParams.put("Content-Type", localVarContentType);
+
+ String[] localVarAuthNames = new String[] { "api_key_v1" };
+ return localVarApiClient.buildCall(localVarPath, "PUT", localVarQueryParams, localVarCollectionQueryParams, localVarPostBody, localVarHeaderParams, localVarCookieParams, localVarFormParams, localVarAuthNames, _callback);
+ }
+
+ @SuppressWarnings("rawtypes")
+ private okhttp3.Call reopenCustomerSessionValidateBeforeCall(String customerSessionId, final ApiCallback _callback) throws ApiException {
+
+ // verify the required parameter 'customerSessionId' is set
+ if (customerSessionId == null) {
+ throw new ApiException("Missing the required parameter 'customerSessionId' when calling reopenCustomerSession(Async)");
+ }
+
+
+ okhttp3.Call localVarCall = reopenCustomerSessionCall(customerSessionId, _callback);
+ return localVarCall;
+
+ }
+
+ /**
+ * Reopen customer session
+ * Reopen a closed [customer session](https://docs.talon.one/docs/dev/concepts/entities/customer-sessions). For example, if a session has been completed but still needs to be edited, you can reopen it with this endpoint. A reopen session is treated like a standard open session. When reopening a session: - The `talon_session_reopened` event is triggered. You can see it in the **Events** view in the Campaign Manager. - The session state is updated to `open`. - Any modified budgets and triggered effects are rolled back when the session closes. - Depending on the [return policy](https://docs.talon.one/docs/product/loyalty-programs/managing-loyalty-programs#return-policy) in your loyalty programs, points are rolled back in the following ways: - Pending points are rolled back automatically. - If **Active points deduction** setting is enabled, any points that were earned and activated when the session closed are rolled back. - If **Negative balance** is enabled, the rollback can create a negative points balance. <details> <summary><strong>Effects and budgets unimpacted by a session reopening</strong></summary> <div> <p>The following effects and budgets remain in the state they were in when the session closed:</p> <ul> <li>Add free item effect</li> <li>Award giveaway</li> <li>Coupon and referral creation</li> <li>Coupon reservation</li> <li>Custom effect</li> <li>Update attribute value</li> <li>Update cart item attribute value</li> </ul> </div> </details> To see an example of a rollback, see the [Cancelling a session with campaign budgets](https://docs.talon.one/docs/dev/tutorials/rolling-back-effects) tutorial. > [!note] If your order workflow requires you to create a new session > instead of reopening a session, use the > [Update customer session](https://docs.talon.one/integration-api#tag/Customer-sessions/operation/updateCustomerSessionV2) > endpoint to cancel a closed session and create a new one.
+ * @param customerSessionId The `integration ID` of the customer session. You set this ID when you create a customer session. You can see existing customer session integration IDs in the Campaign Manager's **Sessions** menu, or via the [List Application session](https://docs.talon.one/management-api#tag/Customer-data/operation/getApplicationSessions) endpoint. (required)
+ * @return ReopenSessionResponse
+ * @throws ApiException If fail to call the API, e.g. server error or cannot deserialize the response body
+ * @http.response.details
+
+ | Status Code | Description | Response Headers |
+ | 200 | OK | - |
+ | 400 | Bad request | - |
+ | 401 | Unauthorized - Invalid API key | - |
+
+ */
+ public ReopenSessionResponse reopenCustomerSession(String customerSessionId) throws ApiException {
+ ApiResponse localVarResp = reopenCustomerSessionWithHttpInfo(customerSessionId);
+ return localVarResp.getData();
+ }
+
+ /**
+ * Reopen customer session
+ * Reopen a closed [customer session](https://docs.talon.one/docs/dev/concepts/entities/customer-sessions). For example, if a session has been completed but still needs to be edited, you can reopen it with this endpoint. A reopen session is treated like a standard open session. When reopening a session: - The `talon_session_reopened` event is triggered. You can see it in the **Events** view in the Campaign Manager. - The session state is updated to `open`. - Any modified budgets and triggered effects are rolled back when the session closes. - Depending on the [return policy](https://docs.talon.one/docs/product/loyalty-programs/managing-loyalty-programs#return-policy) in your loyalty programs, points are rolled back in the following ways: - Pending points are rolled back automatically. - If **Active points deduction** setting is enabled, any points that were earned and activated when the session closed are rolled back. - If **Negative balance** is enabled, the rollback can create a negative points balance. <details> <summary><strong>Effects and budgets unimpacted by a session reopening</strong></summary> <div> <p>The following effects and budgets remain in the state they were in when the session closed:</p> <ul> <li>Add free item effect</li> <li>Award giveaway</li> <li>Coupon and referral creation</li> <li>Coupon reservation</li> <li>Custom effect</li> <li>Update attribute value</li> <li>Update cart item attribute value</li> </ul> </div> </details> To see an example of a rollback, see the [Cancelling a session with campaign budgets](https://docs.talon.one/docs/dev/tutorials/rolling-back-effects) tutorial. > [!note] If your order workflow requires you to create a new session > instead of reopening a session, use the > [Update customer session](https://docs.talon.one/integration-api#tag/Customer-sessions/operation/updateCustomerSessionV2) > endpoint to cancel a closed session and create a new one.
+ * @param customerSessionId The `integration ID` of the customer session. You set this ID when you create a customer session. You can see existing customer session integration IDs in the Campaign Manager's **Sessions** menu, or via the [List Application session](https://docs.talon.one/management-api#tag/Customer-data/operation/getApplicationSessions) endpoint. (required)
+ * @return ApiResponse<ReopenSessionResponse>
* @throws ApiException If fail to call the API, e.g. server error or cannot deserialize the response body
* @http.response.details
@@ -3946,7 +4410,7 @@ private okhttp3.Call returnCartItemsValidateBeforeCall(String customerSessionId,
/**
* Return cart items
- * Create a new return request for the specified cart items. This endpoint automatically changes the session state from `closed` to `partially_returned`. > [!note] This will roll back any effects associated with these cart items. > For more information, see [our documentation on session > states](https://docs.talon.one/docs/dev/concepts/entities/customer-sessions#customer-session-states) > and [this tutorial](https://docs.talon.one/docs/dev/tutorials/partially-returning-a-session). > [!note] To make request processing idempotent for this endpoint, include the `Idempotency-Key` header with an idempotency key in requests. Also: > - Requests with the `Idempotency-Key` header are logged in the Talon.One access logs. > - Responses for idempotent requests are stored in the database and expire 24 hours after the request is sent. > - Idempotency keys are typically UUID keys and should not exceed 255 characters in length.
+ * Create a new return request for the specified cart items. This endpoint automatically changes the session state from `closed` to `partially_returned`. > [!note] This will roll back any effects associated with these cart items. > For more information, see [our documentation on session > states](https://docs.talon.one/docs/dev/concepts/entities/customer-sessions#customer-session-states) > and [this tutorial](https://docs.talon.one/docs/dev/tutorials/partially-returning-a-session).
* @param customerSessionId The `integration ID` of the customer session. You set this ID when you create a customer session. You can see existing customer session integration IDs in the Campaign Manager's **Sessions** menu, or via the [List Application session](https://docs.talon.one/management-api#tag/Customer-data/operation/getApplicationSessions) endpoint. (required)
* @param body body (required)
* @param dry Indicates whether to persist the changes. Changes are ignored when `dry=true`. (optional)
@@ -3968,7 +4432,7 @@ public IntegrationStateV2 returnCartItems(String customerSessionId, ReturnIntegr
/**
* Return cart items
- * Create a new return request for the specified cart items. This endpoint automatically changes the session state from `closed` to `partially_returned`. > [!note] This will roll back any effects associated with these cart items. > For more information, see [our documentation on session > states](https://docs.talon.one/docs/dev/concepts/entities/customer-sessions#customer-session-states) > and [this tutorial](https://docs.talon.one/docs/dev/tutorials/partially-returning-a-session). > [!note] To make request processing idempotent for this endpoint, include the `Idempotency-Key` header with an idempotency key in requests. Also: > - Requests with the `Idempotency-Key` header are logged in the Talon.One access logs. > - Responses for idempotent requests are stored in the database and expire 24 hours after the request is sent. > - Idempotency keys are typically UUID keys and should not exceed 255 characters in length.
+ * Create a new return request for the specified cart items. This endpoint automatically changes the session state from `closed` to `partially_returned`. > [!note] This will roll back any effects associated with these cart items. > For more information, see [our documentation on session > states](https://docs.talon.one/docs/dev/concepts/entities/customer-sessions#customer-session-states) > and [this tutorial](https://docs.talon.one/docs/dev/tutorials/partially-returning-a-session).
* @param customerSessionId The `integration ID` of the customer session. You set this ID when you create a customer session. You can see existing customer session integration IDs in the Campaign Manager's **Sessions** menu, or via the [List Application session](https://docs.talon.one/management-api#tag/Customer-data/operation/getApplicationSessions) endpoint. (required)
* @param body body (required)
* @param dry Indicates whether to persist the changes. Changes are ignored when `dry=true`. (optional)
@@ -3991,7 +4455,7 @@ public ApiResponse returnCartItemsWithHttpInfo(String custom
/**
* Return cart items (asynchronously)
- * Create a new return request for the specified cart items. This endpoint automatically changes the session state from `closed` to `partially_returned`. > [!note] This will roll back any effects associated with these cart items. > For more information, see [our documentation on session > states](https://docs.talon.one/docs/dev/concepts/entities/customer-sessions#customer-session-states) > and [this tutorial](https://docs.talon.one/docs/dev/tutorials/partially-returning-a-session). > [!note] To make request processing idempotent for this endpoint, include the `Idempotency-Key` header with an idempotency key in requests. Also: > - Requests with the `Idempotency-Key` header are logged in the Talon.One access logs. > - Responses for idempotent requests are stored in the database and expire 24 hours after the request is sent. > - Idempotency keys are typically UUID keys and should not exceed 255 characters in length.
+ * Create a new return request for the specified cart items. This endpoint automatically changes the session state from `closed` to `partially_returned`. > [!note] This will roll back any effects associated with these cart items. > For more information, see [our documentation on session > states](https://docs.talon.one/docs/dev/concepts/entities/customer-sessions#customer-session-states) > and [this tutorial](https://docs.talon.one/docs/dev/tutorials/partially-returning-a-session).
* @param customerSessionId The `integration ID` of the customer session. You set this ID when you create a customer session. You can see existing customer session integration IDs in the Campaign Manager's **Sessions** menu, or via the [List Application session](https://docs.talon.one/management-api#tag/Customer-data/operation/getApplicationSessions) endpoint. (required)
* @param body body (required)
* @param dry Indicates whether to persist the changes. Changes are ignored when `dry=true`. (optional)
@@ -4081,7 +4545,7 @@ private okhttp3.Call syncCatalogValidateBeforeCall(Long catalogId, CatalogSyncRe
/**
* Sync cart item catalog
- * Perform the following actions for a given cart item catalog: - Add an item to the catalog. - Add multiple items to the catalog. - Update the attributes of an item in the catalog. - Update the attributes of multiple items in the catalog. - Remove an item from the catalog. - Remove multiple items from the catalog. You can either add, update, or delete up to 1000 cart items in a single request. Each item synced to a catalog must have a unique `SKU`. > [!important] You can perform only one type of action in a single sync request. Syncing items with duplicate `SKU` values in a single request returns an error message with a `400` status code. For more information, read [managing cart item catalogs](https://docs.talon.one/docs/product/account/dev-tools/managing-cart-item-catalogs). ### Filtering cart items Use [cart item attributes](https://docs.talon.one/docs/product/account/dev-tools/managing-attributes) to filter items and select the ones you want to edit or delete when editing or deleting more than one item at a time. The `filters` array contains an object with the following properties: - `attr`: A [cart item attribute](https://docs.talon.one/docs/product/account/dev-tools/managing-attributes) connected to the catalog. It is applied to all items in the catalog. - `op`: The filtering operator indicating the relationship between the value of each cart item in the catalog and the value of the `value` property for the attribute selected in `attr`. The value of `op` can be one of the following: - `EQ`: Equal to `value` - `LT`: Less than `value` - `LE`: Less than or equal to `value` - `GT`: Greater than `value` - `GE`: Greater than or equal to `value` - `IN`: One of the comma-separated values that `value` is set to. **Note:** `GE`, `LE`, `GT`, `LT` are for numeric values only. - `value`: The value of the attribute selected in `attr`. ### Payload examples Synchronization actions are sent as `PUT` requests. See the structure for each action: <details> <summary><strong>Adding an item to the catalog</strong></summary> <div> ```json { \"actions\": [ { \"payload\": { \"attributes\": { \"color\": \"Navy blue\", \"type\": \"shoes\" }, \"replaceIfExists\": true, \"sku\": \"SKU1241028\", \"price\": 100, \"product\": { \"name\": \"sneakers\" } }, \"type\": \"ADD\" } ] } ``` </div> </details> <details> <summary><strong>Adding multiple items to the catalog</strong></summary> <div> ```json { \"actions\": [ { \"payload\": { \"attributes\": { \"color\": \"Navy blue\", \"type\": \"shoes\" }, \"replaceIfExists\": true, \"sku\": \"SKU1241027\", \"price\": 100, \"product\": { \"name\": \"sneakers\" } }, \"type\": \"ADD\" }, { \"payload\": { \"attributes\": { \"color\": \"Navy blue\", \"type\": \"shoes\" }, \"replaceIfExists\": true, \"sku\": \"SKU1241028\", \"price\": 100, \"product\": { \"name\": \"sneakers\" } }, \"type\": \"ADD\" } ] } ``` </div> </details> <details> <summary><strong>Updating the attributes of an item in the catalog</strong></summary> <div> ```json { \"actions\": [ { \"payload\": { \"attributes\": { \"age\": 11, \"origin\": \"germany\" }, \"createIfNotExists\": false, \"sku\": \"SKU1241028\", \"product\": { \"name\": \"sneakers\" } }, \"type\": \"PATCH\" } ] } ``` </div> </details> <details> <summary><strong>Updating the attributes of multiple items in the catalog</strong></summary> <div> ```json { \"actions\": [ { \"payload\": { \"attributes\": { \"color\": \"red\" }, \"filters\": [ { \"attr\": \"color\", \"op\": \"EQ\", \"value\": \"blue\" } ] }, \"type\": \"PATCH_MANY\" } ] } ``` </div> </details> <details> <summary><strong>Removing an item from the catalog</strong></summary> <div> ```json { \"actions\": [ { \"payload\": { \"sku\": \"SKU1241028\" }, \"type\": \"REMOVE\" } ] } ``` </div> </details> <details> <summary><strong>Removing multiple items from the catalog</strong></summary> <div> ```json { \"actions\": [ { \"payload\": { \"filters\": [ { \"attr\": \"color\", \"op\": \"EQ\", \"value\": \"blue\" } ] }, \"type\": \"REMOVE_MANY\" } ] } ``` </div> </details> <details> <summary><strong>Removing shoes of sizes above 45 from the catalog</strong></summary> <div> <p> Let's imagine that we have a shoe store and we have decided to stop selling shoes larger than size 45. We can remove from the catalog all the shoes of sizes above 45 with a single action:</p> ```json { \"actions\": [ { \"payload\": { \"filters\": [ { \"attr\": \"size\", \"op\": \"GT\", \"value\": \"45\" } ] }, \"type\": \"REMOVE_MANY\" } ] } ``` </div> </details>
+ * Perform the following actions for a given cart item catalog: - Add an item to the catalog. - Add multiple items to the catalog. - Update the attributes of an item in the catalog. - Update the attributes of multiple items in the catalog. - Remove an item from the catalog. - Remove multiple items from the catalog. You can either add, update, or delete up to 1000 cart items in a single request. Each item synced to a catalog must have a unique `SKU`. > [!important] You can perform only one type of action in a single sync request. Syncing items with duplicate `SKU` values in a single request returns an error message with a `400` status code. For more information, read [managing cart item catalogs](https://docs.talon.one/docs/product/account/dev-tools/managing-cart-item-catalogs). ### Filtering cart items Use [cart item attributes](https://docs.talon.one/docs/product/account/dev-tools/managing-attributes) to filter items and select the ones you want to edit or delete when editing or deleting more than one item at a time. The `filters` array contains an object with the following properties: - `attr`: A [cart item attribute](https://docs.talon.one/docs/product/account/dev-tools/managing-attributes) connected to the catalog. It is applied to all items in the catalog. - `op`: The filtering operator indicating the relationship between the value of each cart item in the catalog and the value of the `value` property for the attribute selected in `attr`. The value of `op` can be one of the following: - `EQ`: Equal to `value` - `LT`: Less than `value` - `LE`: Less than or equal to `value` - `GT`: Greater than `value` - `GE`: Greater than or equal to `value` - `IN`: One of the comma-separated values that `value` is set to. **Note:** `GE`, `LE`, `GT`, `LT` are for numeric values only. - `value`: The value of the attribute selected in `attr`. For request examples of each action, see the **Request Body** examples.
* @param catalogId The ID of the catalog. You can find the ID in the Campaign Manager in **Account** > **Tools** > **Cart item catalogs**. (required)
* @param body body (required)
* @return Catalog
@@ -4102,7 +4566,7 @@ public Catalog syncCatalog(Long catalogId, CatalogSyncRequest body) throws ApiEx
/**
* Sync cart item catalog
- * Perform the following actions for a given cart item catalog: - Add an item to the catalog. - Add multiple items to the catalog. - Update the attributes of an item in the catalog. - Update the attributes of multiple items in the catalog. - Remove an item from the catalog. - Remove multiple items from the catalog. You can either add, update, or delete up to 1000 cart items in a single request. Each item synced to a catalog must have a unique `SKU`. > [!important] You can perform only one type of action in a single sync request. Syncing items with duplicate `SKU` values in a single request returns an error message with a `400` status code. For more information, read [managing cart item catalogs](https://docs.talon.one/docs/product/account/dev-tools/managing-cart-item-catalogs). ### Filtering cart items Use [cart item attributes](https://docs.talon.one/docs/product/account/dev-tools/managing-attributes) to filter items and select the ones you want to edit or delete when editing or deleting more than one item at a time. The `filters` array contains an object with the following properties: - `attr`: A [cart item attribute](https://docs.talon.one/docs/product/account/dev-tools/managing-attributes) connected to the catalog. It is applied to all items in the catalog. - `op`: The filtering operator indicating the relationship between the value of each cart item in the catalog and the value of the `value` property for the attribute selected in `attr`. The value of `op` can be one of the following: - `EQ`: Equal to `value` - `LT`: Less than `value` - `LE`: Less than or equal to `value` - `GT`: Greater than `value` - `GE`: Greater than or equal to `value` - `IN`: One of the comma-separated values that `value` is set to. **Note:** `GE`, `LE`, `GT`, `LT` are for numeric values only. - `value`: The value of the attribute selected in `attr`. ### Payload examples Synchronization actions are sent as `PUT` requests. See the structure for each action: <details> <summary><strong>Adding an item to the catalog</strong></summary> <div> ```json { \"actions\": [ { \"payload\": { \"attributes\": { \"color\": \"Navy blue\", \"type\": \"shoes\" }, \"replaceIfExists\": true, \"sku\": \"SKU1241028\", \"price\": 100, \"product\": { \"name\": \"sneakers\" } }, \"type\": \"ADD\" } ] } ``` </div> </details> <details> <summary><strong>Adding multiple items to the catalog</strong></summary> <div> ```json { \"actions\": [ { \"payload\": { \"attributes\": { \"color\": \"Navy blue\", \"type\": \"shoes\" }, \"replaceIfExists\": true, \"sku\": \"SKU1241027\", \"price\": 100, \"product\": { \"name\": \"sneakers\" } }, \"type\": \"ADD\" }, { \"payload\": { \"attributes\": { \"color\": \"Navy blue\", \"type\": \"shoes\" }, \"replaceIfExists\": true, \"sku\": \"SKU1241028\", \"price\": 100, \"product\": { \"name\": \"sneakers\" } }, \"type\": \"ADD\" } ] } ``` </div> </details> <details> <summary><strong>Updating the attributes of an item in the catalog</strong></summary> <div> ```json { \"actions\": [ { \"payload\": { \"attributes\": { \"age\": 11, \"origin\": \"germany\" }, \"createIfNotExists\": false, \"sku\": \"SKU1241028\", \"product\": { \"name\": \"sneakers\" } }, \"type\": \"PATCH\" } ] } ``` </div> </details> <details> <summary><strong>Updating the attributes of multiple items in the catalog</strong></summary> <div> ```json { \"actions\": [ { \"payload\": { \"attributes\": { \"color\": \"red\" }, \"filters\": [ { \"attr\": \"color\", \"op\": \"EQ\", \"value\": \"blue\" } ] }, \"type\": \"PATCH_MANY\" } ] } ``` </div> </details> <details> <summary><strong>Removing an item from the catalog</strong></summary> <div> ```json { \"actions\": [ { \"payload\": { \"sku\": \"SKU1241028\" }, \"type\": \"REMOVE\" } ] } ``` </div> </details> <details> <summary><strong>Removing multiple items from the catalog</strong></summary> <div> ```json { \"actions\": [ { \"payload\": { \"filters\": [ { \"attr\": \"color\", \"op\": \"EQ\", \"value\": \"blue\" } ] }, \"type\": \"REMOVE_MANY\" } ] } ``` </div> </details> <details> <summary><strong>Removing shoes of sizes above 45 from the catalog</strong></summary> <div> <p> Let's imagine that we have a shoe store and we have decided to stop selling shoes larger than size 45. We can remove from the catalog all the shoes of sizes above 45 with a single action:</p> ```json { \"actions\": [ { \"payload\": { \"filters\": [ { \"attr\": \"size\", \"op\": \"GT\", \"value\": \"45\" } ] }, \"type\": \"REMOVE_MANY\" } ] } ``` </div> </details>
+ * Perform the following actions for a given cart item catalog: - Add an item to the catalog. - Add multiple items to the catalog. - Update the attributes of an item in the catalog. - Update the attributes of multiple items in the catalog. - Remove an item from the catalog. - Remove multiple items from the catalog. You can either add, update, or delete up to 1000 cart items in a single request. Each item synced to a catalog must have a unique `SKU`. > [!important] You can perform only one type of action in a single sync request. Syncing items with duplicate `SKU` values in a single request returns an error message with a `400` status code. For more information, read [managing cart item catalogs](https://docs.talon.one/docs/product/account/dev-tools/managing-cart-item-catalogs). ### Filtering cart items Use [cart item attributes](https://docs.talon.one/docs/product/account/dev-tools/managing-attributes) to filter items and select the ones you want to edit or delete when editing or deleting more than one item at a time. The `filters` array contains an object with the following properties: - `attr`: A [cart item attribute](https://docs.talon.one/docs/product/account/dev-tools/managing-attributes) connected to the catalog. It is applied to all items in the catalog. - `op`: The filtering operator indicating the relationship between the value of each cart item in the catalog and the value of the `value` property for the attribute selected in `attr`. The value of `op` can be one of the following: - `EQ`: Equal to `value` - `LT`: Less than `value` - `LE`: Less than or equal to `value` - `GT`: Greater than `value` - `GE`: Greater than or equal to `value` - `IN`: One of the comma-separated values that `value` is set to. **Note:** `GE`, `LE`, `GT`, `LT` are for numeric values only. - `value`: The value of the attribute selected in `attr`. For request examples of each action, see the **Request Body** examples.
* @param catalogId The ID of the catalog. You can find the ID in the Campaign Manager in **Account** > **Tools** > **Cart item catalogs**. (required)
* @param body body (required)
* @return ApiResponse<Catalog>
@@ -4124,7 +4588,7 @@ public ApiResponse syncCatalogWithHttpInfo(Long catalogId, CatalogSyncR
/**
* Sync cart item catalog (asynchronously)
- * Perform the following actions for a given cart item catalog: - Add an item to the catalog. - Add multiple items to the catalog. - Update the attributes of an item in the catalog. - Update the attributes of multiple items in the catalog. - Remove an item from the catalog. - Remove multiple items from the catalog. You can either add, update, or delete up to 1000 cart items in a single request. Each item synced to a catalog must have a unique `SKU`. > [!important] You can perform only one type of action in a single sync request. Syncing items with duplicate `SKU` values in a single request returns an error message with a `400` status code. For more information, read [managing cart item catalogs](https://docs.talon.one/docs/product/account/dev-tools/managing-cart-item-catalogs). ### Filtering cart items Use [cart item attributes](https://docs.talon.one/docs/product/account/dev-tools/managing-attributes) to filter items and select the ones you want to edit or delete when editing or deleting more than one item at a time. The `filters` array contains an object with the following properties: - `attr`: A [cart item attribute](https://docs.talon.one/docs/product/account/dev-tools/managing-attributes) connected to the catalog. It is applied to all items in the catalog. - `op`: The filtering operator indicating the relationship between the value of each cart item in the catalog and the value of the `value` property for the attribute selected in `attr`. The value of `op` can be one of the following: - `EQ`: Equal to `value` - `LT`: Less than `value` - `LE`: Less than or equal to `value` - `GT`: Greater than `value` - `GE`: Greater than or equal to `value` - `IN`: One of the comma-separated values that `value` is set to. **Note:** `GE`, `LE`, `GT`, `LT` are for numeric values only. - `value`: The value of the attribute selected in `attr`. ### Payload examples Synchronization actions are sent as `PUT` requests. See the structure for each action: <details> <summary><strong>Adding an item to the catalog</strong></summary> <div> ```json { \"actions\": [ { \"payload\": { \"attributes\": { \"color\": \"Navy blue\", \"type\": \"shoes\" }, \"replaceIfExists\": true, \"sku\": \"SKU1241028\", \"price\": 100, \"product\": { \"name\": \"sneakers\" } }, \"type\": \"ADD\" } ] } ``` </div> </details> <details> <summary><strong>Adding multiple items to the catalog</strong></summary> <div> ```json { \"actions\": [ { \"payload\": { \"attributes\": { \"color\": \"Navy blue\", \"type\": \"shoes\" }, \"replaceIfExists\": true, \"sku\": \"SKU1241027\", \"price\": 100, \"product\": { \"name\": \"sneakers\" } }, \"type\": \"ADD\" }, { \"payload\": { \"attributes\": { \"color\": \"Navy blue\", \"type\": \"shoes\" }, \"replaceIfExists\": true, \"sku\": \"SKU1241028\", \"price\": 100, \"product\": { \"name\": \"sneakers\" } }, \"type\": \"ADD\" } ] } ``` </div> </details> <details> <summary><strong>Updating the attributes of an item in the catalog</strong></summary> <div> ```json { \"actions\": [ { \"payload\": { \"attributes\": { \"age\": 11, \"origin\": \"germany\" }, \"createIfNotExists\": false, \"sku\": \"SKU1241028\", \"product\": { \"name\": \"sneakers\" } }, \"type\": \"PATCH\" } ] } ``` </div> </details> <details> <summary><strong>Updating the attributes of multiple items in the catalog</strong></summary> <div> ```json { \"actions\": [ { \"payload\": { \"attributes\": { \"color\": \"red\" }, \"filters\": [ { \"attr\": \"color\", \"op\": \"EQ\", \"value\": \"blue\" } ] }, \"type\": \"PATCH_MANY\" } ] } ``` </div> </details> <details> <summary><strong>Removing an item from the catalog</strong></summary> <div> ```json { \"actions\": [ { \"payload\": { \"sku\": \"SKU1241028\" }, \"type\": \"REMOVE\" } ] } ``` </div> </details> <details> <summary><strong>Removing multiple items from the catalog</strong></summary> <div> ```json { \"actions\": [ { \"payload\": { \"filters\": [ { \"attr\": \"color\", \"op\": \"EQ\", \"value\": \"blue\" } ] }, \"type\": \"REMOVE_MANY\" } ] } ``` </div> </details> <details> <summary><strong>Removing shoes of sizes above 45 from the catalog</strong></summary> <div> <p> Let's imagine that we have a shoe store and we have decided to stop selling shoes larger than size 45. We can remove from the catalog all the shoes of sizes above 45 with a single action:</p> ```json { \"actions\": [ { \"payload\": { \"filters\": [ { \"attr\": \"size\", \"op\": \"GT\", \"value\": \"45\" } ] }, \"type\": \"REMOVE_MANY\" } ] } ``` </div> </details>
+ * Perform the following actions for a given cart item catalog: - Add an item to the catalog. - Add multiple items to the catalog. - Update the attributes of an item in the catalog. - Update the attributes of multiple items in the catalog. - Remove an item from the catalog. - Remove multiple items from the catalog. You can either add, update, or delete up to 1000 cart items in a single request. Each item synced to a catalog must have a unique `SKU`. > [!important] You can perform only one type of action in a single sync request. Syncing items with duplicate `SKU` values in a single request returns an error message with a `400` status code. For more information, read [managing cart item catalogs](https://docs.talon.one/docs/product/account/dev-tools/managing-cart-item-catalogs). ### Filtering cart items Use [cart item attributes](https://docs.talon.one/docs/product/account/dev-tools/managing-attributes) to filter items and select the ones you want to edit or delete when editing or deleting more than one item at a time. The `filters` array contains an object with the following properties: - `attr`: A [cart item attribute](https://docs.talon.one/docs/product/account/dev-tools/managing-attributes) connected to the catalog. It is applied to all items in the catalog. - `op`: The filtering operator indicating the relationship between the value of each cart item in the catalog and the value of the `value` property for the attribute selected in `attr`. The value of `op` can be one of the following: - `EQ`: Equal to `value` - `LT`: Less than `value` - `LE`: Less than or equal to `value` - `GT`: Greater than `value` - `GE`: Greater than or equal to `value` - `IN`: One of the comma-separated values that `value` is set to. **Note:** `GE`, `LE`, `GT`, `LT` are for numeric values only. - `value`: The value of the attribute selected in `attr`. For request examples of each action, see the **Request Body** examples.
* @param catalogId The ID of the catalog. You can find the ID in the Campaign Manager in **Account** > **Tools** > **Cart item catalogs**. (required)
* @param body body (required)
* @param _callback The callback to be executed when the API call finishes
@@ -4159,9 +4623,10 @@ public okhttp3.Call syncCatalogAsync(Long catalogId, CatalogSyncRequest body, fi
| Status Code | Description | Response Headers |
| 200 | OK | - |
+ | 204 | No content | - |
| 400 | Bad request | - |
| 401 | Unauthorized - Invalid API key | - |
- | 409 | Too many requests or limit reached - Avoid parallel requests. See the [docs](https://docs.talon.one/docs/dev/tutorials/integrating-talon-one#managing-parallel-requests). | - |
+ | 409 | Too many requests or limit reached - Avoid parallel requests. See the [docs](https://docs.talon.one/docs/dev/tutorials/integrating-talon-one#manage-parallel-requests). | - |
*/
public okhttp3.Call trackEventV2Call(IntegrationEventV2Request body, String silent, Boolean dry, Boolean forceCompleteEvaluation, final ApiCallback _callback) throws ApiException {
@@ -4221,7 +4686,7 @@ private okhttp3.Call trackEventV2ValidateBeforeCall(IntegrationEventV2Request bo
/**
* Track event
- * Triggers a custom event. To use this endpoint: 1. Define a [custom event](https://docs.talon.one/docs/dev/concepts/entities/events#creating-a-custom-event) in the Campaign Manager. 1. Update or create a rule to check for this event. 1. Trigger the event with this endpoint. After you have successfully sent an event to Talon.One, you can list the received events in the **Events** view in the Campaign Manager. Talon.One also offers a set of [built-in events](https://docs.talon.one/docs/dev/concepts/entities/events). Ensure you do not create a custom event when you can use a built-in event. For example, use this endpoint to trigger an event when a customer shares a link to a product. See the [tutorial](https://docs.talon.one/docs/product/tutorials/referrals/incentivizing-product-link-sharing). > [!note] **Note** > - `profileId` is required even though the schema does not specify it. > - If the customer profile ID is new, a new profile is automatically created but the `customer_profile_created` [built-in event ](https://docs.talon.one/docs/dev/concepts/entities/events) is **not** triggered. > - We recommend sending requests sequentially. See [Managing parallel requests](https://docs.talon.one/docs/dev/getting-started/integration-tutorial#managing-parallel-requests). > - [Archived campaigns](https://docs.talon.one/docs/product/campaigns/managing-campaigns#archiving-a-campaign) are not considered in rule evaluation.
+ * Trigger a [custom event](https://docs.talon.one/docs/dev/concepts/entities/events#custom-events). To use this endpoint: 1. [Create](https://docs.talon.one/docs/dev/concepts/entities/events#create-an-event) an event in the Campaign Manager. 1. In a rule, add the **Check for event types** [condition](https://docs.talon.one/docs/dev/concepts/entities/events#use-an-event-in-a-rule) and select the event you created. 1. Trigger the event with this endpoint. You can [list](https://docs.talon.one/docs/product/applications/display-events#list-events) the received events in the **Events** view of the Campaign Manager. For example, you can use this endpoint to trigger an event when a customer shares a link to a product. See our [tutorial](https://docs.talon.one/docs/product/tutorials/referrals/incentivizing-product-link-sharing). > [!note] **Note** > - `profileId` is required even though the schema does not specify it. > - If the customer profile ID is new, a new profile is automatically created but the `customer_profile_created` [built-in event ](https://docs.talon.one/docs/dev/concepts/entities/events) is **not** triggered. > - We recommend sending requests sequentially. See [Manage parallel requests](https://docs.talon.one/docs/dev/getting-started/integration-tutorial#manage-parallel-requests). > - [Archived campaigns](https://docs.talon.one/docs/product/campaigns/managing-campaigns#archive-a-campaign) are not considered in rule evaluation.
* @param body body (required)
* @param silent Possible values: `yes` or `no`. - `yes`: Increases the performance of the API call by returning a 204 response. - `no`: Returns a 200 response that contains the updated customer profiles. (optional, default to "yes")
* @param dry Indicates whether to persist the changes. Changes are ignored when `dry=true`. (optional)
@@ -4232,9 +4697,10 @@ private okhttp3.Call trackEventV2ValidateBeforeCall(IntegrationEventV2Request bo
| Status Code | Description | Response Headers |
| 200 | OK | - |
+ | 204 | No content | - |
| 400 | Bad request | - |
| 401 | Unauthorized - Invalid API key | - |
- | 409 | Too many requests or limit reached - Avoid parallel requests. See the [docs](https://docs.talon.one/docs/dev/tutorials/integrating-talon-one#managing-parallel-requests). | - |
+ | 409 | Too many requests or limit reached - Avoid parallel requests. See the [docs](https://docs.talon.one/docs/dev/tutorials/integrating-talon-one#manage-parallel-requests). | - |
*/
public IntegrationEventV2Response trackEventV2(IntegrationEventV2Request body, String silent, Boolean dry, Boolean forceCompleteEvaluation) throws ApiException {
@@ -4244,7 +4710,7 @@ public IntegrationEventV2Response trackEventV2(IntegrationEventV2Request body, S
/**
* Track event
- * Triggers a custom event. To use this endpoint: 1. Define a [custom event](https://docs.talon.one/docs/dev/concepts/entities/events#creating-a-custom-event) in the Campaign Manager. 1. Update or create a rule to check for this event. 1. Trigger the event with this endpoint. After you have successfully sent an event to Talon.One, you can list the received events in the **Events** view in the Campaign Manager. Talon.One also offers a set of [built-in events](https://docs.talon.one/docs/dev/concepts/entities/events). Ensure you do not create a custom event when you can use a built-in event. For example, use this endpoint to trigger an event when a customer shares a link to a product. See the [tutorial](https://docs.talon.one/docs/product/tutorials/referrals/incentivizing-product-link-sharing). > [!note] **Note** > - `profileId` is required even though the schema does not specify it. > - If the customer profile ID is new, a new profile is automatically created but the `customer_profile_created` [built-in event ](https://docs.talon.one/docs/dev/concepts/entities/events) is **not** triggered. > - We recommend sending requests sequentially. See [Managing parallel requests](https://docs.talon.one/docs/dev/getting-started/integration-tutorial#managing-parallel-requests). > - [Archived campaigns](https://docs.talon.one/docs/product/campaigns/managing-campaigns#archiving-a-campaign) are not considered in rule evaluation.
+ * Trigger a [custom event](https://docs.talon.one/docs/dev/concepts/entities/events#custom-events). To use this endpoint: 1. [Create](https://docs.talon.one/docs/dev/concepts/entities/events#create-an-event) an event in the Campaign Manager. 1. In a rule, add the **Check for event types** [condition](https://docs.talon.one/docs/dev/concepts/entities/events#use-an-event-in-a-rule) and select the event you created. 1. Trigger the event with this endpoint. You can [list](https://docs.talon.one/docs/product/applications/display-events#list-events) the received events in the **Events** view of the Campaign Manager. For example, you can use this endpoint to trigger an event when a customer shares a link to a product. See our [tutorial](https://docs.talon.one/docs/product/tutorials/referrals/incentivizing-product-link-sharing). > [!note] **Note** > - `profileId` is required even though the schema does not specify it. > - If the customer profile ID is new, a new profile is automatically created but the `customer_profile_created` [built-in event ](https://docs.talon.one/docs/dev/concepts/entities/events) is **not** triggered. > - We recommend sending requests sequentially. See [Manage parallel requests](https://docs.talon.one/docs/dev/getting-started/integration-tutorial#manage-parallel-requests). > - [Archived campaigns](https://docs.talon.one/docs/product/campaigns/managing-campaigns#archive-a-campaign) are not considered in rule evaluation.
* @param body body (required)
* @param silent Possible values: `yes` or `no`. - `yes`: Increases the performance of the API call by returning a 204 response. - `no`: Returns a 200 response that contains the updated customer profiles. (optional, default to "yes")
* @param dry Indicates whether to persist the changes. Changes are ignored when `dry=true`. (optional)
@@ -4255,9 +4721,10 @@ public IntegrationEventV2Response trackEventV2(IntegrationEventV2Request body, S
| Status Code | Description | Response Headers |
| 200 | OK | - |
+ | 204 | No content | - |
| 400 | Bad request | - |
| 401 | Unauthorized - Invalid API key | - |
- | 409 | Too many requests or limit reached - Avoid parallel requests. See the [docs](https://docs.talon.one/docs/dev/tutorials/integrating-talon-one#managing-parallel-requests). | - |
+ | 409 | Too many requests or limit reached - Avoid parallel requests. See the [docs](https://docs.talon.one/docs/dev/tutorials/integrating-talon-one#manage-parallel-requests). | - |
*/
public ApiResponse trackEventV2WithHttpInfo(IntegrationEventV2Request body, String silent, Boolean dry, Boolean forceCompleteEvaluation) throws ApiException {
@@ -4268,7 +4735,7 @@ public ApiResponse trackEventV2WithHttpInfo(Integrat
/**
* Track event (asynchronously)
- * Triggers a custom event. To use this endpoint: 1. Define a [custom event](https://docs.talon.one/docs/dev/concepts/entities/events#creating-a-custom-event) in the Campaign Manager. 1. Update or create a rule to check for this event. 1. Trigger the event with this endpoint. After you have successfully sent an event to Talon.One, you can list the received events in the **Events** view in the Campaign Manager. Talon.One also offers a set of [built-in events](https://docs.talon.one/docs/dev/concepts/entities/events). Ensure you do not create a custom event when you can use a built-in event. For example, use this endpoint to trigger an event when a customer shares a link to a product. See the [tutorial](https://docs.talon.one/docs/product/tutorials/referrals/incentivizing-product-link-sharing). > [!note] **Note** > - `profileId` is required even though the schema does not specify it. > - If the customer profile ID is new, a new profile is automatically created but the `customer_profile_created` [built-in event ](https://docs.talon.one/docs/dev/concepts/entities/events) is **not** triggered. > - We recommend sending requests sequentially. See [Managing parallel requests](https://docs.talon.one/docs/dev/getting-started/integration-tutorial#managing-parallel-requests). > - [Archived campaigns](https://docs.talon.one/docs/product/campaigns/managing-campaigns#archiving-a-campaign) are not considered in rule evaluation.
+ * Trigger a [custom event](https://docs.talon.one/docs/dev/concepts/entities/events#custom-events). To use this endpoint: 1. [Create](https://docs.talon.one/docs/dev/concepts/entities/events#create-an-event) an event in the Campaign Manager. 1. In a rule, add the **Check for event types** [condition](https://docs.talon.one/docs/dev/concepts/entities/events#use-an-event-in-a-rule) and select the event you created. 1. Trigger the event with this endpoint. You can [list](https://docs.talon.one/docs/product/applications/display-events#list-events) the received events in the **Events** view of the Campaign Manager. For example, you can use this endpoint to trigger an event when a customer shares a link to a product. See our [tutorial](https://docs.talon.one/docs/product/tutorials/referrals/incentivizing-product-link-sharing). > [!note] **Note** > - `profileId` is required even though the schema does not specify it. > - If the customer profile ID is new, a new profile is automatically created but the `customer_profile_created` [built-in event ](https://docs.talon.one/docs/dev/concepts/entities/events) is **not** triggered. > - We recommend sending requests sequentially. See [Manage parallel requests](https://docs.talon.one/docs/dev/getting-started/integration-tutorial#manage-parallel-requests). > - [Archived campaigns](https://docs.talon.one/docs/product/campaigns/managing-campaigns#archive-a-campaign) are not considered in rule evaluation.
* @param body body (required)
* @param silent Possible values: `yes` or `no`. - `yes`: Increases the performance of the API call by returning a 204 response. - `no`: Returns a 200 response that contains the updated customer profiles. (optional, default to "yes")
* @param dry Indicates whether to persist the changes. Changes are ignored when `dry=true`. (optional)
@@ -4280,9 +4747,10 @@ public ApiResponse trackEventV2WithHttpInfo(Integrat
| Status Code | Description | Response Headers |
| 200 | OK | - |
+ | 204 | No content | - |
| 400 | Bad request | - |
| 401 | Unauthorized - Invalid API key | - |
- | 409 | Too many requests or limit reached - Avoid parallel requests. See the [docs](https://docs.talon.one/docs/dev/tutorials/integrating-talon-one#managing-parallel-requests). | - |
+ | 409 | Too many requests or limit reached - Avoid parallel requests. See the [docs](https://docs.talon.one/docs/dev/tutorials/integrating-talon-one#manage-parallel-requests). | - |
*/
public okhttp3.Call trackEventV2Async(IntegrationEventV2Request body, String silent, Boolean dry, Boolean forceCompleteEvaluation, final ApiCallback _callback) throws ApiException {
@@ -4292,6 +4760,152 @@ public okhttp3.Call trackEventV2Async(IntegrationEventV2Request body, String sil
localVarApiClient.executeAsync(localVarCall, localVarReturnType, _callback);
return localVarCall;
}
+ /**
+ * Build call for trackEventV3
+ * @param body body (required)
+ * @param silent Possible values: `yes` or `no`. - `yes`: Increases the performance of the API call by returning a 204 response. - `no`: Returns a 200 response that contains the updated customer profiles. (optional, default to "yes")
+ * @param dry Indicates whether to persist the changes. Changes are ignored when `dry=true`. (optional)
+ * @param forceCompleteEvaluation Forces evaluation for all matching campaigns regardless of the [campaign evaluation mode](https://docs.talon.one/docs/product/applications/managing-campaign-evaluation#setting-campaign-evaluation-mode). Requires `dry=true`. (optional, default to false)
+ * @param _callback Callback for upload/download progress
+ * @return Call to execute
+ * @throws ApiException If fail to serialize the request body object
+ * @http.response.details
+
+ | Status Code | Description | Response Headers |
+ | 200 | OK | - |
+ | 400 | Bad request | - |
+ | 401 | Unauthorized - Invalid API key | - |
+ | 409 | An advanced event already exists, too many requests, or limit reached. Avoid parallel requests. See the [docs](https://docs.talon.one/docs/dev/tutorials/integrating-talon-one#manage-parallel-requests). | - |
+
+ */
+ public okhttp3.Call trackEventV3Call(IntegrationEventV3Request body, String silent, Boolean dry, Boolean forceCompleteEvaluation, final ApiCallback _callback) throws ApiException {
+ Object localVarPostBody = body;
+
+ // create path and map variables
+ String localVarPath = "/v3/events";
+
+ List localVarQueryParams = new ArrayList();
+ List localVarCollectionQueryParams = new ArrayList();
+ if (silent != null) {
+ localVarQueryParams.addAll(localVarApiClient.parameterToPair("silent", silent));
+ }
+
+ if (dry != null) {
+ localVarQueryParams.addAll(localVarApiClient.parameterToPair("dry", dry));
+ }
+
+ if (forceCompleteEvaluation != null) {
+ localVarQueryParams.addAll(localVarApiClient.parameterToPair("forceCompleteEvaluation", forceCompleteEvaluation));
+ }
+
+ Map localVarHeaderParams = new HashMap();
+ Map localVarCookieParams = new HashMap();
+ Map localVarFormParams = new HashMap();
+ final String[] localVarAccepts = {
+ "application/json"
+ };
+ final String localVarAccept = localVarApiClient.selectHeaderAccept(localVarAccepts);
+ if (localVarAccept != null) {
+ localVarHeaderParams.put("Accept", localVarAccept);
+ }
+
+ final String[] localVarContentTypes = {
+ "application/json"
+ };
+ final String localVarContentType = localVarApiClient.selectHeaderContentType(localVarContentTypes);
+ localVarHeaderParams.put("Content-Type", localVarContentType);
+
+ String[] localVarAuthNames = new String[] { "api_key_v1" };
+ return localVarApiClient.buildCall(localVarPath, "POST", localVarQueryParams, localVarCollectionQueryParams, localVarPostBody, localVarHeaderParams, localVarCookieParams, localVarFormParams, localVarAuthNames, _callback);
+ }
+
+ @SuppressWarnings("rawtypes")
+ private okhttp3.Call trackEventV3ValidateBeforeCall(IntegrationEventV3Request body, String silent, Boolean dry, Boolean forceCompleteEvaluation, final ApiCallback _callback) throws ApiException {
+
+ // verify the required parameter 'body' is set
+ if (body == null) {
+ throw new ApiException("Missing the required parameter 'body' when calling trackEventV3(Async)");
+ }
+
+
+ okhttp3.Call localVarCall = trackEventV3Call(body, silent, dry, forceCompleteEvaluation, _callback);
+ return localVarCall;
+
+ }
+
+ /**
+ * Track advanced event
+ * Trigger an [advanced event](https://docs.talon.one/docs/dev/concepts/entities/events#advanced-events). Advanced events are idempotent, uniquely identifiable events. They can also reference a previously closed session to add more context for rule evaluation. To use this endpoint: 1. [Create](https://docs.talon.one/docs/dev/concepts/entities/events#create-an-event) an event in the Campaign Manager. 1. In a rule, add the **Check for event types** [condition](https://docs.talon.one/docs/dev/concepts/entities/events#use-an-event-in-a-rule) and select the event you created. 1. Trigger the event with this endpoint. You can [list](https://docs.talon.one/docs/product/applications/display-events#list-events) the received events in the **Events** view of the Campaign Manager. For example, you can use this endpoint to award loyalty points after an order is delivered. See our [tutorial](https://docs.talon.one/docs/dev/tutorials/award-loyalty-points-after-delivery). > [!note] **Note** > - If the customer profile does not exist, it will be created. However, the `customer_profile_created` [built-in event](https://docs.talon.one/docs/dev/concepts/entities/events#built-in-events) is **not** triggered. > - We recommend sending requests sequentially. See [Manage parallel requests](https://docs.talon.one/docs/dev/getting-started/integration-tutorial#manage-parallel-requests). > - [Archived campaigns](https://docs.talon.one/docs/product/campaigns/managing-campaigns#archive-a-campaign) are not considered in rule evaluation.
+ * @param body body (required)
+ * @param silent Possible values: `yes` or `no`. - `yes`: Increases the performance of the API call by returning a 204 response. - `no`: Returns a 200 response that contains the updated customer profiles. (optional, default to "yes")
+ * @param dry Indicates whether to persist the changes. Changes are ignored when `dry=true`. (optional)
+ * @param forceCompleteEvaluation Forces evaluation for all matching campaigns regardless of the [campaign evaluation mode](https://docs.talon.one/docs/product/applications/managing-campaign-evaluation#setting-campaign-evaluation-mode). Requires `dry=true`. (optional, default to false)
+ * @return IntegrationEventV3Response
+ * @throws ApiException If fail to call the API, e.g. server error or cannot deserialize the response body
+ * @http.response.details
+
+ | Status Code | Description | Response Headers |
+ | 200 | OK | - |
+ | 400 | Bad request | - |
+ | 401 | Unauthorized - Invalid API key | - |
+ | 409 | An advanced event already exists, too many requests, or limit reached. Avoid parallel requests. See the [docs](https://docs.talon.one/docs/dev/tutorials/integrating-talon-one#manage-parallel-requests). | - |
+
+ */
+ public IntegrationEventV3Response trackEventV3(IntegrationEventV3Request body, String silent, Boolean dry, Boolean forceCompleteEvaluation) throws ApiException {
+ ApiResponse localVarResp = trackEventV3WithHttpInfo(body, silent, dry, forceCompleteEvaluation);
+ return localVarResp.getData();
+ }
+
+ /**
+ * Track advanced event
+ * Trigger an [advanced event](https://docs.talon.one/docs/dev/concepts/entities/events#advanced-events). Advanced events are idempotent, uniquely identifiable events. They can also reference a previously closed session to add more context for rule evaluation. To use this endpoint: 1. [Create](https://docs.talon.one/docs/dev/concepts/entities/events#create-an-event) an event in the Campaign Manager. 1. In a rule, add the **Check for event types** [condition](https://docs.talon.one/docs/dev/concepts/entities/events#use-an-event-in-a-rule) and select the event you created. 1. Trigger the event with this endpoint. You can [list](https://docs.talon.one/docs/product/applications/display-events#list-events) the received events in the **Events** view of the Campaign Manager. For example, you can use this endpoint to award loyalty points after an order is delivered. See our [tutorial](https://docs.talon.one/docs/dev/tutorials/award-loyalty-points-after-delivery). > [!note] **Note** > - If the customer profile does not exist, it will be created. However, the `customer_profile_created` [built-in event](https://docs.talon.one/docs/dev/concepts/entities/events#built-in-events) is **not** triggered. > - We recommend sending requests sequentially. See [Manage parallel requests](https://docs.talon.one/docs/dev/getting-started/integration-tutorial#manage-parallel-requests). > - [Archived campaigns](https://docs.talon.one/docs/product/campaigns/managing-campaigns#archive-a-campaign) are not considered in rule evaluation.
+ * @param body body (required)
+ * @param silent Possible values: `yes` or `no`. - `yes`: Increases the performance of the API call by returning a 204 response. - `no`: Returns a 200 response that contains the updated customer profiles. (optional, default to "yes")
+ * @param dry Indicates whether to persist the changes. Changes are ignored when `dry=true`. (optional)
+ * @param forceCompleteEvaluation Forces evaluation for all matching campaigns regardless of the [campaign evaluation mode](https://docs.talon.one/docs/product/applications/managing-campaign-evaluation#setting-campaign-evaluation-mode). Requires `dry=true`. (optional, default to false)
+ * @return ApiResponse<IntegrationEventV3Response>
+ * @throws ApiException If fail to call the API, e.g. server error or cannot deserialize the response body
+ * @http.response.details
+
+ | Status Code | Description | Response Headers |
+ | 200 | OK | - |
+ | 400 | Bad request | - |
+ | 401 | Unauthorized - Invalid API key | - |
+ | 409 | An advanced event already exists, too many requests, or limit reached. Avoid parallel requests. See the [docs](https://docs.talon.one/docs/dev/tutorials/integrating-talon-one#manage-parallel-requests). | - |
+
+ */
+ public ApiResponse trackEventV3WithHttpInfo(IntegrationEventV3Request body, String silent, Boolean dry, Boolean forceCompleteEvaluation) throws ApiException {
+ okhttp3.Call localVarCall = trackEventV3ValidateBeforeCall(body, silent, dry, forceCompleteEvaluation, null);
+ Type localVarReturnType = new TypeToken(){}.getType();
+ return localVarApiClient.execute(localVarCall, localVarReturnType);
+ }
+
+ /**
+ * Track advanced event (asynchronously)
+ * Trigger an [advanced event](https://docs.talon.one/docs/dev/concepts/entities/events#advanced-events). Advanced events are idempotent, uniquely identifiable events. They can also reference a previously closed session to add more context for rule evaluation. To use this endpoint: 1. [Create](https://docs.talon.one/docs/dev/concepts/entities/events#create-an-event) an event in the Campaign Manager. 1. In a rule, add the **Check for event types** [condition](https://docs.talon.one/docs/dev/concepts/entities/events#use-an-event-in-a-rule) and select the event you created. 1. Trigger the event with this endpoint. You can [list](https://docs.talon.one/docs/product/applications/display-events#list-events) the received events in the **Events** view of the Campaign Manager. For example, you can use this endpoint to award loyalty points after an order is delivered. See our [tutorial](https://docs.talon.one/docs/dev/tutorials/award-loyalty-points-after-delivery). > [!note] **Note** > - If the customer profile does not exist, it will be created. However, the `customer_profile_created` [built-in event](https://docs.talon.one/docs/dev/concepts/entities/events#built-in-events) is **not** triggered. > - We recommend sending requests sequentially. See [Manage parallel requests](https://docs.talon.one/docs/dev/getting-started/integration-tutorial#manage-parallel-requests). > - [Archived campaigns](https://docs.talon.one/docs/product/campaigns/managing-campaigns#archive-a-campaign) are not considered in rule evaluation.
+ * @param body body (required)
+ * @param silent Possible values: `yes` or `no`. - `yes`: Increases the performance of the API call by returning a 204 response. - `no`: Returns a 200 response that contains the updated customer profiles. (optional, default to "yes")
+ * @param dry Indicates whether to persist the changes. Changes are ignored when `dry=true`. (optional)
+ * @param forceCompleteEvaluation Forces evaluation for all matching campaigns regardless of the [campaign evaluation mode](https://docs.talon.one/docs/product/applications/managing-campaign-evaluation#setting-campaign-evaluation-mode). Requires `dry=true`. (optional, default to false)
+ * @param _callback The callback to be executed when the API call finishes
+ * @return The request call
+ * @throws ApiException If fail to process the API call, e.g. serializing the request body object
+ * @http.response.details
+
+ | Status Code | Description | Response Headers |
+ | 200 | OK | - |
+ | 400 | Bad request | - |
+ | 401 | Unauthorized - Invalid API key | - |
+ | 409 | An advanced event already exists, too many requests, or limit reached. Avoid parallel requests. See the [docs](https://docs.talon.one/docs/dev/tutorials/integrating-talon-one#manage-parallel-requests). | - |
+
+ */
+ public okhttp3.Call trackEventV3Async(IntegrationEventV3Request body, String silent, Boolean dry, Boolean forceCompleteEvaluation, final ApiCallback _callback) throws ApiException {
+
+ okhttp3.Call localVarCall = trackEventV3ValidateBeforeCall(body, silent, dry, forceCompleteEvaluation, _callback);
+ Type localVarReturnType = new TypeToken(){}.getType();
+ localVarApiClient.executeAsync(localVarCall, localVarReturnType, _callback);
+ return localVarCall;
+ }
/**
* Build call for unlinkLoyaltyCardFromProfile
* @param loyaltyProgramId The identifier of the card-based loyalty program containing the loyalty card. You can get this ID using the [List loyalty programs](https://docs.talon.one/management-api#tag/Loyalty/operation/getLoyaltyPrograms) endpoint. (required)
@@ -4434,6 +5048,158 @@ public okhttp3.Call unlinkLoyaltyCardFromProfileAsync(Long loyaltyProgramId, Str
localVarApiClient.executeAsync(localVarCall, localVarReturnType, _callback);
return localVarCall;
}
+ /**
+ * Build call for unlockReward
+ * @param rewardId The ID of the reward. You can get the ID with the [List rewards](#tag/Rewards/operation/listRewards) endpoint. (required)
+ * @param body (required)
+ * @param dry When set to `true`, the rule evaluation is performed but no changes are persisted. Use this to preview the outcome of an unlocking. (optional)
+ * @param _callback Callback for upload/download progress
+ * @return Call to execute
+ * @throws ApiException If fail to serialize the request body object
+ * @http.response.details
+
+ | Status Code | Description | Response Headers |
+ | 200 | OK | - |
+ | 400 | Bad request | - |
+ | 401 | Unauthorized | - |
+ | 403 | Forbidden | - |
+ | 404 | Not found | - |
+ | 409 | Conflict. A reward unlock with this integration ID already exists. | - |
+ | 422 | Unprocessable entity. The reward unlock was rejected by the Rule Engine, for example because the customer already unlocked this reward, the customer has insufficient points, or the reward's eligibility conditions are not met. | - |
+
+ */
+ public okhttp3.Call unlockRewardCall(Long rewardId, IntegrationUnlockRewardRequest body, Boolean dry, final ApiCallback _callback) throws ApiException {
+ Object localVarPostBody = body;
+
+ // create path and map variables
+ String localVarPath = "/v1/rewards/{rewardId}/unlock"
+ .replaceAll("\\{" + "rewardId" + "\\}", localVarApiClient.escapeString(rewardId.toString()));
+
+ List localVarQueryParams = new ArrayList();
+ List localVarCollectionQueryParams = new ArrayList();
+ if (dry != null) {
+ localVarQueryParams.addAll(localVarApiClient.parameterToPair("dry", dry));
+ }
+
+ Map localVarHeaderParams = new HashMap();
+ Map localVarCookieParams = new HashMap();
+ Map localVarFormParams = new HashMap();
+ final String[] localVarAccepts = {
+ "application/json"
+ };
+ final String localVarAccept = localVarApiClient.selectHeaderAccept(localVarAccepts);
+ if (localVarAccept != null) {
+ localVarHeaderParams.put("Accept", localVarAccept);
+ }
+
+ final String[] localVarContentTypes = {
+ "application/json"
+ };
+ final String localVarContentType = localVarApiClient.selectHeaderContentType(localVarContentTypes);
+ localVarHeaderParams.put("Content-Type", localVarContentType);
+
+ String[] localVarAuthNames = new String[] { "api_key_v1" };
+ return localVarApiClient.buildCall(localVarPath, "POST", localVarQueryParams, localVarCollectionQueryParams, localVarPostBody, localVarHeaderParams, localVarCookieParams, localVarFormParams, localVarAuthNames, _callback);
+ }
+
+ @SuppressWarnings("rawtypes")
+ private okhttp3.Call unlockRewardValidateBeforeCall(Long rewardId, IntegrationUnlockRewardRequest body, Boolean dry, final ApiCallback _callback) throws ApiException {
+
+ // verify the required parameter 'rewardId' is set
+ if (rewardId == null) {
+ throw new ApiException("Missing the required parameter 'rewardId' when calling unlockReward(Async)");
+ }
+
+ // verify the required parameter 'body' is set
+ if (body == null) {
+ throw new ApiException("Missing the required parameter 'body' when calling unlockReward(Async)");
+ }
+
+
+ okhttp3.Call localVarCall = unlockRewardCall(rewardId, body, dry, _callback);
+ return localVarCall;
+
+ }
+
+ /**
+ * Unlock a reward
+ * Unlock a reward for a customer. If the reward has `pointsRequired` configured, the corresponding loyalty points are deducted from the customer's balance. To unlock a reward with the points of a loyalty card, provide the card in `cardIdentifier`. The points are then deducted from the card, and the unlocked reward belongs to the card, which makes it available to all customer profiles linked to that card.
+ * @param rewardId The ID of the reward. You can get the ID with the [List rewards](#tag/Rewards/operation/listRewards) endpoint. (required)
+ * @param body (required)
+ * @param dry When set to `true`, the rule evaluation is performed but no changes are persisted. Use this to preview the outcome of an unlocking. (optional)
+ * @return IntegrationStateV2
+ * @throws ApiException If fail to call the API, e.g. server error or cannot deserialize the response body
+ * @http.response.details
+
+ | Status Code | Description | Response Headers |
+ | 200 | OK | - |
+ | 400 | Bad request | - |
+ | 401 | Unauthorized | - |
+ | 403 | Forbidden | - |
+ | 404 | Not found | - |
+ | 409 | Conflict. A reward unlock with this integration ID already exists. | - |
+ | 422 | Unprocessable entity. The reward unlock was rejected by the Rule Engine, for example because the customer already unlocked this reward, the customer has insufficient points, or the reward's eligibility conditions are not met. | - |
+
+ */
+ public IntegrationStateV2 unlockReward(Long rewardId, IntegrationUnlockRewardRequest body, Boolean dry) throws ApiException {
+ ApiResponse localVarResp = unlockRewardWithHttpInfo(rewardId, body, dry);
+ return localVarResp.getData();
+ }
+
+ /**
+ * Unlock a reward
+ * Unlock a reward for a customer. If the reward has `pointsRequired` configured, the corresponding loyalty points are deducted from the customer's balance. To unlock a reward with the points of a loyalty card, provide the card in `cardIdentifier`. The points are then deducted from the card, and the unlocked reward belongs to the card, which makes it available to all customer profiles linked to that card.
+ * @param rewardId The ID of the reward. You can get the ID with the [List rewards](#tag/Rewards/operation/listRewards) endpoint. (required)
+ * @param body (required)
+ * @param dry When set to `true`, the rule evaluation is performed but no changes are persisted. Use this to preview the outcome of an unlocking. (optional)
+ * @return ApiResponse<IntegrationStateV2>
+ * @throws ApiException If fail to call the API, e.g. server error or cannot deserialize the response body
+ * @http.response.details
+
+ | Status Code | Description | Response Headers |
+ | 200 | OK | - |
+ | 400 | Bad request | - |
+ | 401 | Unauthorized | - |
+ | 403 | Forbidden | - |
+ | 404 | Not found | - |
+ | 409 | Conflict. A reward unlock with this integration ID already exists. | - |
+ | 422 | Unprocessable entity. The reward unlock was rejected by the Rule Engine, for example because the customer already unlocked this reward, the customer has insufficient points, or the reward's eligibility conditions are not met. | - |
+
+ */
+ public ApiResponse unlockRewardWithHttpInfo(Long rewardId, IntegrationUnlockRewardRequest body, Boolean dry) throws ApiException {
+ okhttp3.Call localVarCall = unlockRewardValidateBeforeCall(rewardId, body, dry, null);
+ Type localVarReturnType = new TypeToken(){}.getType();
+ return localVarApiClient.execute(localVarCall, localVarReturnType);
+ }
+
+ /**
+ * Unlock a reward (asynchronously)
+ * Unlock a reward for a customer. If the reward has `pointsRequired` configured, the corresponding loyalty points are deducted from the customer's balance. To unlock a reward with the points of a loyalty card, provide the card in `cardIdentifier`. The points are then deducted from the card, and the unlocked reward belongs to the card, which makes it available to all customer profiles linked to that card.
+ * @param rewardId The ID of the reward. You can get the ID with the [List rewards](#tag/Rewards/operation/listRewards) endpoint. (required)
+ * @param body (required)
+ * @param dry When set to `true`, the rule evaluation is performed but no changes are persisted. Use this to preview the outcome of an unlocking. (optional)
+ * @param _callback The callback to be executed when the API call finishes
+ * @return The request call
+ * @throws ApiException If fail to process the API call, e.g. serializing the request body object
+ * @http.response.details
+
+ | Status Code | Description | Response Headers |
+ | 200 | OK | - |
+ | 400 | Bad request | - |
+ | 401 | Unauthorized | - |
+ | 403 | Forbidden | - |
+ | 404 | Not found | - |
+ | 409 | Conflict. A reward unlock with this integration ID already exists. | - |
+ | 422 | Unprocessable entity. The reward unlock was rejected by the Rule Engine, for example because the customer already unlocked this reward, the customer has insufficient points, or the reward's eligibility conditions are not met. | - |
+
+ */
+ public okhttp3.Call unlockRewardAsync(Long rewardId, IntegrationUnlockRewardRequest body, Boolean dry, final ApiCallback _callback) throws ApiException {
+
+ okhttp3.Call localVarCall = unlockRewardValidateBeforeCall(rewardId, body, dry, _callback);
+ Type localVarReturnType = new TypeToken(){}.getType();
+ localVarApiClient.executeAsync(localVarCall, localVarReturnType, _callback);
+ return localVarCall;
+ }
/**
* Build call for updateAudienceCustomersAttributes
* @param audienceId The ID of the audience. (required)
@@ -4806,7 +5572,7 @@ public okhttp3.Call updateCustomerProfileAudiencesAsync(CustomerProfileAudienceR
}
/**
* Build call for updateCustomerProfileV2
- * @param integrationId The integration identifier for this customer profile. Must be: - Unique within the deployment. - Stable for the customer. Do not use an ID that the customer can update themselves. For example, you can use a database ID. Once set, you cannot update this identifier. (required)
+ * @param integrationId The integration identifier for this customer profile. Must be: - Unique within the deployment. - Stable for the customer. Do not use an ID that the customer can update themselves. For example, you can use a database ID. Once set, you cannot update this identifier. **Note**: It must be URL-encoded. For example, replace spaces with `%20`. [Learn more](https://www.w3schools.com/tags/ref_urlencode.asp). (required)
* @param body body (required)
* @param runRuleEngine Indicates whether to run the Rule Engine. If `true`, the response includes: - The effects generated by the triggered campaigns are returned in the `effects` property. - The created coupons and referral objects. If `false`: - The rules are not executed and the `effects` property is always empty. - The response time improves. - You cannot use `responseContent` in the body. (optional, default to false)
* @param dry (Only works when `runRuleEngine=true`) Indicates whether to persist the changes. Changes are ignored when `dry=true`. When set to `true`, you can use the `evaluableCampaignIds` body property to select specific campaigns to run. (optional)
@@ -4881,8 +5647,8 @@ private okhttp3.Call updateCustomerProfileV2ValidateBeforeCall(String integratio
/**
* Update customer profile
- * Update or create a [Customer Profile](https://docs.talon.one/docs/dev/concepts/entities/customer-profiles). This endpoint triggers the Rule Builder. You can use this endpoint to: - Set attributes on the given customer profile. Ensure you create the attributes in the Campaign Manager, first. - Modify the audience the customer profile is a member of. > [!note] **Note** > - Updating a customer profile returns a response with the requested integration state. > - You can use the `responseContent` property to save yourself extra API calls. For example, you can get > the customer profile details directly without extra requests. > - We recommend sending requests sequentially. > See [Managing parallel requests](https://docs.talon.one/docs/dev/getting-started/integration-tutorial#managing-parallel-requests). > - [Archived campaigns](https://docs.talon.one/docs/product/campaigns/managing-campaigns#archiving-a-campaign) are not considered in rule evaluation when `runRuleEngine` is `true`.
- * @param integrationId The integration identifier for this customer profile. Must be: - Unique within the deployment. - Stable for the customer. Do not use an ID that the customer can update themselves. For example, you can use a database ID. Once set, you cannot update this identifier. (required)
+ * Update or create a [Customer Profile](https://docs.talon.one/docs/dev/concepts/entities/customer-profiles). This endpoint triggers the Rule Builder. You can use this endpoint to: - Set attributes on the given customer profile. Ensure you create the attributes in the Campaign Manager, first. - Modify the audience the customer profile is a member of. > [!note] **Note** > - Updating a customer profile returns a response with the requested integration state. > - The [Has joined an audience](https://docs.talon.one/docs/product/rules/conditions/available-conditions#audience-conditions) and > [Has left an audience](https://docs.talon.one/docs/product/rules/conditions/available-conditions#audience-conditions) conditions > only trigger through this endpoint. > - You can use the `responseContent` property to save yourself extra API calls. For example, you can get > the customer profile details directly without extra requests. > - We recommend sending requests sequentially. > See [Managing parallel requests](https://docs.talon.one/docs/dev/getting-started/integration-tutorial#managing-parallel-requests). > - [Archived campaigns](https://docs.talon.one/docs/product/campaigns/managing-campaigns#archiving-a-campaign) are not considered in rule evaluation when `runRuleEngine` is `true`.
+ * @param integrationId The integration identifier for this customer profile. Must be: - Unique within the deployment. - Stable for the customer. Do not use an ID that the customer can update themselves. For example, you can use a database ID. Once set, you cannot update this identifier. **Note**: It must be URL-encoded. For example, replace spaces with `%20`. [Learn more](https://www.w3schools.com/tags/ref_urlencode.asp). (required)
* @param body body (required)
* @param runRuleEngine Indicates whether to run the Rule Engine. If `true`, the response includes: - The effects generated by the triggered campaigns are returned in the `effects` property. - The created coupons and referral objects. If `false`: - The rules are not executed and the `effects` property is always empty. - The response time improves. - You cannot use `responseContent` in the body. (optional, default to false)
* @param dry (Only works when `runRuleEngine=true`) Indicates whether to persist the changes. Changes are ignored when `dry=true`. When set to `true`, you can use the `evaluableCampaignIds` body property to select specific campaigns to run. (optional)
@@ -4904,8 +5670,8 @@ public CustomerProfileIntegrationResponseV2 updateCustomerProfileV2(String integ
/**
* Update customer profile
- * Update or create a [Customer Profile](https://docs.talon.one/docs/dev/concepts/entities/customer-profiles). This endpoint triggers the Rule Builder. You can use this endpoint to: - Set attributes on the given customer profile. Ensure you create the attributes in the Campaign Manager, first. - Modify the audience the customer profile is a member of. > [!note] **Note** > - Updating a customer profile returns a response with the requested integration state. > - You can use the `responseContent` property to save yourself extra API calls. For example, you can get > the customer profile details directly without extra requests. > - We recommend sending requests sequentially. > See [Managing parallel requests](https://docs.talon.one/docs/dev/getting-started/integration-tutorial#managing-parallel-requests). > - [Archived campaigns](https://docs.talon.one/docs/product/campaigns/managing-campaigns#archiving-a-campaign) are not considered in rule evaluation when `runRuleEngine` is `true`.
- * @param integrationId The integration identifier for this customer profile. Must be: - Unique within the deployment. - Stable for the customer. Do not use an ID that the customer can update themselves. For example, you can use a database ID. Once set, you cannot update this identifier. (required)
+ * Update or create a [Customer Profile](https://docs.talon.one/docs/dev/concepts/entities/customer-profiles). This endpoint triggers the Rule Builder. You can use this endpoint to: - Set attributes on the given customer profile. Ensure you create the attributes in the Campaign Manager, first. - Modify the audience the customer profile is a member of. > [!note] **Note** > - Updating a customer profile returns a response with the requested integration state. > - The [Has joined an audience](https://docs.talon.one/docs/product/rules/conditions/available-conditions#audience-conditions) and > [Has left an audience](https://docs.talon.one/docs/product/rules/conditions/available-conditions#audience-conditions) conditions > only trigger through this endpoint. > - You can use the `responseContent` property to save yourself extra API calls. For example, you can get > the customer profile details directly without extra requests. > - We recommend sending requests sequentially. > See [Managing parallel requests](https://docs.talon.one/docs/dev/getting-started/integration-tutorial#managing-parallel-requests). > - [Archived campaigns](https://docs.talon.one/docs/product/campaigns/managing-campaigns#archiving-a-campaign) are not considered in rule evaluation when `runRuleEngine` is `true`.
+ * @param integrationId The integration identifier for this customer profile. Must be: - Unique within the deployment. - Stable for the customer. Do not use an ID that the customer can update themselves. For example, you can use a database ID. Once set, you cannot update this identifier. **Note**: It must be URL-encoded. For example, replace spaces with `%20`. [Learn more](https://www.w3schools.com/tags/ref_urlencode.asp). (required)
* @param body body (required)
* @param runRuleEngine Indicates whether to run the Rule Engine. If `true`, the response includes: - The effects generated by the triggered campaigns are returned in the `effects` property. - The created coupons and referral objects. If `false`: - The rules are not executed and the `effects` property is always empty. - The response time improves. - You cannot use `responseContent` in the body. (optional, default to false)
* @param dry (Only works when `runRuleEngine=true`) Indicates whether to persist the changes. Changes are ignored when `dry=true`. When set to `true`, you can use the `evaluableCampaignIds` body property to select specific campaigns to run. (optional)
@@ -4928,8 +5694,8 @@ public ApiResponse updateCustomerProfileV2
/**
* Update customer profile (asynchronously)
- * Update or create a [Customer Profile](https://docs.talon.one/docs/dev/concepts/entities/customer-profiles). This endpoint triggers the Rule Builder. You can use this endpoint to: - Set attributes on the given customer profile. Ensure you create the attributes in the Campaign Manager, first. - Modify the audience the customer profile is a member of. > [!note] **Note** > - Updating a customer profile returns a response with the requested integration state. > - You can use the `responseContent` property to save yourself extra API calls. For example, you can get > the customer profile details directly without extra requests. > - We recommend sending requests sequentially. > See [Managing parallel requests](https://docs.talon.one/docs/dev/getting-started/integration-tutorial#managing-parallel-requests). > - [Archived campaigns](https://docs.talon.one/docs/product/campaigns/managing-campaigns#archiving-a-campaign) are not considered in rule evaluation when `runRuleEngine` is `true`.
- * @param integrationId The integration identifier for this customer profile. Must be: - Unique within the deployment. - Stable for the customer. Do not use an ID that the customer can update themselves. For example, you can use a database ID. Once set, you cannot update this identifier. (required)
+ * Update or create a [Customer Profile](https://docs.talon.one/docs/dev/concepts/entities/customer-profiles). This endpoint triggers the Rule Builder. You can use this endpoint to: - Set attributes on the given customer profile. Ensure you create the attributes in the Campaign Manager, first. - Modify the audience the customer profile is a member of. > [!note] **Note** > - Updating a customer profile returns a response with the requested integration state. > - The [Has joined an audience](https://docs.talon.one/docs/product/rules/conditions/available-conditions#audience-conditions) and > [Has left an audience](https://docs.talon.one/docs/product/rules/conditions/available-conditions#audience-conditions) conditions > only trigger through this endpoint. > - You can use the `responseContent` property to save yourself extra API calls. For example, you can get > the customer profile details directly without extra requests. > - We recommend sending requests sequentially. > See [Managing parallel requests](https://docs.talon.one/docs/dev/getting-started/integration-tutorial#managing-parallel-requests). > - [Archived campaigns](https://docs.talon.one/docs/product/campaigns/managing-campaigns#archiving-a-campaign) are not considered in rule evaluation when `runRuleEngine` is `true`.
+ * @param integrationId The integration identifier for this customer profile. Must be: - Unique within the deployment. - Stable for the customer. Do not use an ID that the customer can update themselves. For example, you can use a database ID. Once set, you cannot update this identifier. **Note**: It must be URL-encoded. For example, replace spaces with `%20`. [Learn more](https://www.w3schools.com/tags/ref_urlencode.asp). (required)
* @param body body (required)
* @param runRuleEngine Indicates whether to run the Rule Engine. If `true`, the response includes: - The effects generated by the triggered campaigns are returned in the `effects` property. - The created coupons and referral objects. If `false`: - The rules are not executed and the `effects` property is always empty. - The response time improves. - You cannot use `responseContent` in the body. (optional, default to false)
* @param dry (Only works when `runRuleEngine=true`) Indicates whether to persist the changes. Changes are ignored when `dry=true`. When set to `true`, you can use the `evaluableCampaignIds` body property to select specific campaigns to run. (optional)
@@ -4963,6 +5729,7 @@ public okhttp3.Call updateCustomerProfileV2Async(String integrationId, CustomerP