Download OpenAPI specification:Download
| page | number >= 0 Example: page=0 The page number for pagination |
| limit | number [ 1 .. 100 ] Default: 25 Example: limit=10 The limit of items to return per page |
| order | string Order of columns in result in the format 'column,asc|desc?'. Samples: ?order=col1 or ?order=col1,asc |
| search | string Case-insensitive substring match across the coupon book's name, description, and externalId. |
| tags | string Filter by all of these tags (AND logic). Comma-separated. |
| tagsAny | string Filter by any of these tags (OR logic). Comma-separated. |
| status | Array of strings Items Enum: "draft" "published" "disabled" "archived" The status of the coupon book. Accepts a single value or comma-separated list (e.g. 'draft,disabled'). |
| locale | string Deprecated Translation locale requested for the coupon |
| audiences | string |
| locations | string |
| categories | string |
| productCategories | string |
| paymentMethods | string |
| channels | string |
| daysOfWeek | string |
| validFromDate | string <date-time> |
| validToDate | string <date-time> |
| validFromDateMin | string <date-time> Admin filter: return only books whose validFromDate >= this value (future start). NULL validFromDate values are excluded. |
| validToDateMax | string <date-time> Admin filter: return only books whose validToDate <= this value (already expired). Books with no validToDate are excluded. |
| tierKeys | Array of strings Filter by tier keys |
| loyaltyProgramKey | string |
| externalId | string |
| type | string Enum: "single" "list" "generated" "codeless" |
curl -X 'GET' \ 'https://api.sandbox.qurable.io/v2/coupon-books?page=0&limit=10' \ -H 'accept: application/json' \ -H 'Authorization: Bearer {YOUR_TOKEN}'
{- "totalCount": 0,
- "page": 0,
- "limit": 0,
- "results": [
- {
- "eligible": true,
- "exclusionReasons": [
- "validity_window"
], - "couponBookKey": "string",
- "externalId": "string",
- "rankingIndex": 0,
- "name": "string",
- "description": "string",
- "subtitle": "string",
- "pictureUrl": "string",
- "detailPictureUrl": "string",
- "images": { },
- "customAttributes": { },
- "type": "string",
- "tags": [
- "string"
], - "tiers": [
- 0
], - "loyaltyTiers": [
- {
- "loyaltyTierKey": "string",
- "name": "string",
- "active": true,
- "minRequiredPoints": 0,
- "tierOrder": 0,
- "isDefault": true
}
], - "audienceKeys": [
- "string"
], - "publishingStatus": "draft",
- "validFromDate": "2019-08-24T14:15:22Z",
- "validToDate": "2019-08-24T14:15:22Z",
- "maxAssignedPerMember": 0,
- "maxAssignedPerCoupon": 0,
- "maxCouponCount": 0,
- "totalAssigned": 0,
- "totalUsages": 0,
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z",
- "defaultLocale": "string",
- "assignmentRequiredPoints": 0,
- "usageRequiredPoints": 0,
- "requiredPointsConfig": {
- "ledgerId": 0,
- "ledgerAccountId": 0,
- "ledgerKey": "string",
- "ledgerAccountKey": "string",
- "txDescription": "string",
- "txTags": [
- "string"
]
}, - "discountAmount": 0,
- "discountType": "string",
- "locations": [
- "string"
], - "categories": [
- "string"
], - "productCategories": [
- "string"
], - "paymentMethods": [
- "string"
], - "channels": [
- "string"
], - "maxDiscountPerPeriod": 0,
- "discountPeriodType": "daily",
- "timezone": "string",
- "periodDiscountUsed": 0,
- "periodDiscountEndTime": "2019-08-24T14:15:22Z",
- "maxUsagesPerPeriod": 0,
- "usagePeriodType": "daily",
- "periodUsageCount": 0,
- "periodUsageEndTime": "2019-08-24T14:15:22Z",
- "daysOfWeek": [
- 0
], - "maxDiscountPerUse": 0
}
]
}| externalId | string |
| publishingStatus required | string Enum: "draft" "published" "disabled" "archived" Publishing status of the coupon book |
| maxCouponCount | number |
| currentVersionId | number |
| name required | string |
| description | string |
| subtitle | string |
| pictureUrl | string |
| detailPictureUrl | string |
| images | object Named image URLs as key-value pairs (e.g., main, detail, thumbnail) |
| rankingIndex | number |
| type required | string Enum: "single" "list" "generated" "codeless" Type of coupon book |
| discountAmount | number |
| discountType | string |
| maxAssignedPerMember | number |
| maxAssignedPerCoupon | number |
| validFromDate | string <date-time> |
| validToDate | string <date-time> |
| maxDiscountPerPeriod | number Maximum discount amount allowed per period |
| discountPeriodType | string Enum: "daily" "weekly" "monthly" Period type for discount limit |
| maxUsagesPerPeriod | number Maximum number of usages allowed per period |
| usagePeriodType | string Enum: "daily" "weekly" "monthly" Period type for usage limit |
| timezone | string IANA timezone string for period calculations (e.g., America/Argentina/Buenos_Aires, Europe/Madrid) |
| maxDiscountPerUse | number Maximum discount amount allowed per use |
| assignmentRequiredPoints | number |
| usageRequiredPoints | number |
| tags | Array of strings |
| audienceKeys | Array of strings |
| locations | Array of strings or null Locations for filtering coupon books by location |
| categories | Array of strings or null Categories for filtering coupon books by category |
| productCategories | Array of strings or null Product categories for filtering coupon books by product category |
| paymentMethods | Array of strings or null Payment methods for filtering coupon books by payment method |
| channels | Array of strings or null Channels for filtering coupon books by channel |
| daysOfWeek | Array of numbers Days of week when coupon book is available (1=Monday, 7=Sunday) |
| contentSchemaId | number |
| contentSchemaVersionId | number |
| customAttributes | object |
| condition | object |
| locale | string Deprecated Locale |
| content | object Deprecated Content of the coupon book |
| isDefaultLocale | boolean Deprecated Is the locale default |
| defaultLocale | string Deprecated Default locale |
object or null Required-points configuration (keys only). Required when assignmentRequiredPoints or usageRequiredPoints is set. | |
| tiers | Array of numbers Deprecated Tiers (deprecated, use tierKeys instead) |
| tierKeys | Array of strings Tier keys (use instead of tiers) |
| loyaltyProgramKey | string |
{- "externalId": "string",
- "publishingStatus": "draft",
- "maxCouponCount": 0,
- "currentVersionId": 0,
- "name": "string",
- "description": "string",
- "subtitle": "string",
- "pictureUrl": "string",
- "detailPictureUrl": "string",
- "images": {
}, - "rankingIndex": 0,
- "type": "single",
- "discountAmount": 0,
- "discountType": "string",
- "maxAssignedPerMember": 0,
- "maxAssignedPerCoupon": 0,
- "validFromDate": "2019-08-24T14:15:22Z",
- "validToDate": "2019-08-24T14:15:22Z",
- "maxDiscountPerPeriod": 0,
- "discountPeriodType": "daily",
- "maxUsagesPerPeriod": 0,
- "usagePeriodType": "daily",
- "timezone": "string",
- "maxDiscountPerUse": 1000,
- "assignmentRequiredPoints": 0,
- "usageRequiredPoints": 0,
- "tags": [
- "string"
], - "audienceKeys": [
- "string"
], - "locations": [
- "string"
], - "categories": [
- "string"
], - "productCategories": [
- "string"
], - "paymentMethods": [
- "string"
], - "channels": [
- "string"
], - "daysOfWeek": [
- 1,
- 2,
- 3,
- 4,
- 5
], - "contentSchemaId": 0,
- "contentSchemaVersionId": 0,
- "customAttributes": { },
- "condition": { },
- "locale": "string",
- "content": { },
- "isDefaultLocale": true,
- "defaultLocale": "string",
- "requiredPointsConfig": {
- "ledgerId": 0,
- "ledgerAccountId": 0,
- "ledgerKey": "string",
- "ledgerAccountKey": "string",
- "txDescription": "string",
- "txTags": [
- "string"
]
}, - "tiers": [
- 0
], - "tierKeys": [
- "string"
], - "loyaltyProgramKey": "string"
}{- "couponBook": {
- "eligible": true,
- "exclusionReasons": [
- "validity_window"
], - "couponBookKey": "string",
- "externalId": "string",
- "rankingIndex": 0,
- "name": "string",
- "description": "string",
- "subtitle": "string",
- "pictureUrl": "string",
- "detailPictureUrl": "string",
- "images": { },
- "customAttributes": { },
- "type": "string",
- "tags": [
- "string"
], - "tiers": [
- 0
], - "loyaltyTiers": [
- {
- "loyaltyTierKey": "string",
- "name": "string",
- "active": true,
- "minRequiredPoints": 0,
- "tierOrder": 0,
- "isDefault": true
}
], - "audienceKeys": [
- "string"
], - "publishingStatus": "draft",
- "validFromDate": "2019-08-24T14:15:22Z",
- "validToDate": "2019-08-24T14:15:22Z",
- "maxAssignedPerMember": 0,
- "maxAssignedPerCoupon": 0,
- "maxCouponCount": 0,
- "totalAssigned": 0,
- "totalUsages": 0,
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z",
- "defaultLocale": "string",
- "assignmentRequiredPoints": 0,
- "usageRequiredPoints": 0,
- "requiredPointsConfig": {
- "ledgerId": 0,
- "ledgerAccountId": 0,
- "ledgerKey": "string",
- "ledgerAccountKey": "string",
- "txDescription": "string",
- "txTags": [
- "string"
]
}, - "discountAmount": 0,
- "discountType": "string",
- "locations": [
- "string"
], - "categories": [
- "string"
], - "productCategories": [
- "string"
], - "paymentMethods": [
- "string"
], - "channels": [
- "string"
], - "maxDiscountPerPeriod": 0,
- "discountPeriodType": "daily",
- "timezone": "string",
- "periodDiscountUsed": 0,
- "periodDiscountEndTime": "2019-08-24T14:15:22Z",
- "maxUsagesPerPeriod": 0,
- "usagePeriodType": "daily",
- "periodUsageCount": 0,
- "periodUsageEndTime": "2019-08-24T14:15:22Z",
- "daysOfWeek": [
- 0
], - "maxDiscountPerUse": 0
}
}| couponBookKey required | string |
curl -X 'GET' \ 'https://api.sandbox.qurable.io/v2/coupon-books/{couponBookKey}' \ -H 'accept: application/json' \ -H 'Authorization: Bearer {YOUR_TOKEN}'
{- "couponBook": {
- "eligible": true,
- "exclusionReasons": [
- "validity_window"
], - "couponBookKey": "string",
- "externalId": "string",
- "rankingIndex": 0,
- "name": "string",
- "description": "string",
- "subtitle": "string",
- "pictureUrl": "string",
- "detailPictureUrl": "string",
- "images": { },
- "customAttributes": { },
- "type": "string",
- "tags": [
- "string"
], - "tiers": [
- 0
], - "loyaltyTiers": [
- {
- "loyaltyTierKey": "string",
- "name": "string",
- "active": true,
- "minRequiredPoints": 0,
- "tierOrder": 0,
- "isDefault": true
}
], - "audienceKeys": [
- "string"
], - "publishingStatus": "draft",
- "validFromDate": "2019-08-24T14:15:22Z",
- "validToDate": "2019-08-24T14:15:22Z",
- "maxAssignedPerMember": 0,
- "maxAssignedPerCoupon": 0,
- "maxCouponCount": 0,
- "totalAssigned": 0,
- "totalUsages": 0,
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z",
- "defaultLocale": "string",
- "assignmentRequiredPoints": 0,
- "usageRequiredPoints": 0,
- "requiredPointsConfig": {
- "ledgerId": 0,
- "ledgerAccountId": 0,
- "ledgerKey": "string",
- "ledgerAccountKey": "string",
- "txDescription": "string",
- "txTags": [
- "string"
]
}, - "discountAmount": 0,
- "discountType": "string",
- "locations": [
- "string"
], - "categories": [
- "string"
], - "productCategories": [
- "string"
], - "paymentMethods": [
- "string"
], - "channels": [
- "string"
], - "maxDiscountPerPeriod": 0,
- "discountPeriodType": "daily",
- "timezone": "string",
- "periodDiscountUsed": 0,
- "periodDiscountEndTime": "2019-08-24T14:15:22Z",
- "maxUsagesPerPeriod": 0,
- "usagePeriodType": "daily",
- "periodUsageCount": 0,
- "periodUsageEndTime": "2019-08-24T14:15:22Z",
- "daysOfWeek": [
- 0
], - "maxDiscountPerUse": 0
}
}| couponBookKey required | string |
| externalId | string |
| maxCouponCount | number |
| currentVersionId | number |
| description | string |
| subtitle | string |
| pictureUrl | string |
| detailPictureUrl | string |
| images | object Named image URLs as key-value pairs (e.g., main, detail, thumbnail) |
| rankingIndex | number |
| discountAmount | number |
| discountType | string |
| maxAssignedPerMember | number |
| maxAssignedPerCoupon | number |
| validFromDate | string <date-time> |
| validToDate | string <date-time> |
| maxDiscountPerPeriod | number Maximum discount amount allowed per period |
| discountPeriodType | string Enum: "daily" "weekly" "monthly" |
| maxUsagesPerPeriod | number Maximum number of usages allowed per period |
| usagePeriodType | string Enum: "daily" "weekly" "monthly" |
| timezone | string IANA timezone string for period calculations (e.g., America/Argentina/Buenos_Aires, Europe/Madrid) |
| maxDiscountPerUse | number Maximum discount amount allowed per use |
| assignmentRequiredPoints | number |
| usageRequiredPoints | number |
| tags | Array of strings |
| audienceKeys | Array of strings |
| locations | Array of strings or null Locations for filtering coupon books by location |
| categories | Array of strings or null Categories for filtering coupon books by category |
| productCategories | Array of strings or null Product categories for filtering coupon books by product category |
| paymentMethods | Array of strings or null Payment methods for filtering coupon books by payment method |
| channels | Array of strings or null Channels for filtering coupon books by channel |
| daysOfWeek | Array of numbers Days of week when coupon book is available (1=Monday, 7=Sunday) |
| contentSchemaId | number |
| contentSchemaVersionId | number |
| customAttributes | object |
| condition | object |
| locale | string Deprecated Locale |
| content | object Deprecated Content of the coupon book |
| isDefaultLocale | boolean Deprecated Is the locale default |
| defaultLocale | string Deprecated Default locale |
| name | string The name of the coupon book |
| extraFields | object content extra fields |
object or null Required-points configuration (keys only). Required when assignmentRequiredPoints or usageRequiredPoints is set. Pass | |
| tiers | Array of numbers Deprecated Tiers (deprecated, use tierKeys instead) |
| tierKeys | Array of strings Tier keys (use instead of tiers) |
| loyaltyProgramKey | string |
{- "externalId": "string",
- "maxCouponCount": 0,
- "currentVersionId": 0,
- "description": "string",
- "subtitle": "string",
- "pictureUrl": "string",
- "detailPictureUrl": "string",
- "images": {
}, - "rankingIndex": 0,
- "discountAmount": 0,
- "discountType": "string",
- "maxAssignedPerMember": 0,
- "maxAssignedPerCoupon": 0,
- "validFromDate": "2019-08-24T14:15:22Z",
- "validToDate": "2019-08-24T14:15:22Z",
- "maxDiscountPerPeriod": 0,
- "discountPeriodType": "daily",
- "maxUsagesPerPeriod": 0,
- "usagePeriodType": "daily",
- "timezone": "string",
- "maxDiscountPerUse": 1000,
- "assignmentRequiredPoints": 0,
- "usageRequiredPoints": 0,
- "tags": [
- "string"
], - "audienceKeys": [
- "string"
], - "locations": [
- "string"
], - "categories": [
- "string"
], - "productCategories": [
- "string"
], - "paymentMethods": [
- "string"
], - "channels": [
- "string"
], - "daysOfWeek": [
- 1,
- 2,
- 3,
- 4,
- 5
], - "contentSchemaId": 0,
- "contentSchemaVersionId": 0,
- "customAttributes": { },
- "condition": { },
- "locale": "string",
- "content": { },
- "isDefaultLocale": true,
- "defaultLocale": "string",
- "name": "string",
- "extraFields": { },
- "requiredPointsConfig": {
- "ledgerId": 0,
- "ledgerAccountId": 0,
- "ledgerKey": "string",
- "ledgerAccountKey": "string",
- "txDescription": "string",
- "txTags": [
- "string"
]
}, - "tiers": [
- 0
], - "tierKeys": [
- "string"
], - "loyaltyProgramKey": "string"
}{- "couponBook": {
- "eligible": true,
- "exclusionReasons": [
- "validity_window"
], - "couponBookKey": "string",
- "externalId": "string",
- "rankingIndex": 0,
- "name": "string",
- "description": "string",
- "subtitle": "string",
- "pictureUrl": "string",
- "detailPictureUrl": "string",
- "images": { },
- "customAttributes": { },
- "type": "string",
- "tags": [
- "string"
], - "tiers": [
- 0
], - "loyaltyTiers": [
- {
- "loyaltyTierKey": "string",
- "name": "string",
- "active": true,
- "minRequiredPoints": 0,
- "tierOrder": 0,
- "isDefault": true
}
], - "audienceKeys": [
- "string"
], - "publishingStatus": "draft",
- "validFromDate": "2019-08-24T14:15:22Z",
- "validToDate": "2019-08-24T14:15:22Z",
- "maxAssignedPerMember": 0,
- "maxAssignedPerCoupon": 0,
- "maxCouponCount": 0,
- "totalAssigned": 0,
- "totalUsages": 0,
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z",
- "defaultLocale": "string",
- "assignmentRequiredPoints": 0,
- "usageRequiredPoints": 0,
- "requiredPointsConfig": {
- "ledgerId": 0,
- "ledgerAccountId": 0,
- "ledgerKey": "string",
- "ledgerAccountKey": "string",
- "txDescription": "string",
- "txTags": [
- "string"
]
}, - "discountAmount": 0,
- "discountType": "string",
- "locations": [
- "string"
], - "categories": [
- "string"
], - "productCategories": [
- "string"
], - "paymentMethods": [
- "string"
], - "channels": [
- "string"
], - "maxDiscountPerPeriod": 0,
- "discountPeriodType": "daily",
- "timezone": "string",
- "periodDiscountUsed": 0,
- "periodDiscountEndTime": "2019-08-24T14:15:22Z",
- "maxUsagesPerPeriod": 0,
- "usagePeriodType": "daily",
- "periodUsageCount": 0,
- "periodUsageEndTime": "2019-08-24T14:15:22Z",
- "daysOfWeek": [
- 0
], - "maxDiscountPerUse": 0
}
}| couponBookKey required | string |
| publishingStatus required | string Enum: "draft" "published" "disabled" "archived" Status of the coupon book |
{- "publishingStatus": "draft"
}{- "couponBook": {
- "eligible": true,
- "exclusionReasons": [
- "validity_window"
], - "couponBookKey": "string",
- "externalId": "string",
- "rankingIndex": 0,
- "name": "string",
- "description": "string",
- "subtitle": "string",
- "pictureUrl": "string",
- "detailPictureUrl": "string",
- "images": { },
- "customAttributes": { },
- "type": "string",
- "tags": [
- "string"
], - "tiers": [
- 0
], - "loyaltyTiers": [
- {
- "loyaltyTierKey": "string",
- "name": "string",
- "active": true,
- "minRequiredPoints": 0,
- "tierOrder": 0,
- "isDefault": true
}
], - "audienceKeys": [
- "string"
], - "publishingStatus": "draft",
- "validFromDate": "2019-08-24T14:15:22Z",
- "validToDate": "2019-08-24T14:15:22Z",
- "maxAssignedPerMember": 0,
- "maxAssignedPerCoupon": 0,
- "maxCouponCount": 0,
- "totalAssigned": 0,
- "totalUsages": 0,
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z",
- "defaultLocale": "string",
- "assignmentRequiredPoints": 0,
- "usageRequiredPoints": 0,
- "requiredPointsConfig": {
- "ledgerId": 0,
- "ledgerAccountId": 0,
- "ledgerKey": "string",
- "ledgerAccountKey": "string",
- "txDescription": "string",
- "txTags": [
- "string"
]
}, - "discountAmount": 0,
- "discountType": "string",
- "locations": [
- "string"
], - "categories": [
- "string"
], - "productCategories": [
- "string"
], - "paymentMethods": [
- "string"
], - "channels": [
- "string"
], - "maxDiscountPerPeriod": 0,
- "discountPeriodType": "daily",
- "timezone": "string",
- "periodDiscountUsed": 0,
- "periodDiscountEndTime": "2019-08-24T14:15:22Z",
- "maxUsagesPerPeriod": 0,
- "usagePeriodType": "daily",
- "periodUsageCount": 0,
- "periodUsageEndTime": "2019-08-24T14:15:22Z",
- "daysOfWeek": [
- 0
], - "maxDiscountPerUse": 0
}
}| couponBookKey required | string |
| page | number >= 0 Example: page=0 The page number for pagination |
| limit | number [ 1 .. 25 ] Example: limit=10 The limit of items to return per page |
| order | string Order of columns in result in the format 'column,asc|desc?'. Samples: ?order=col1 or ?order=col1,asc |
curl -X GET https://api.sandbox.qurable.io/v2/coupon-books/{couponBookKey}/coupons
{- "totalCount": 0,
- "page": 0,
- "limit": 0,
- "results": [
- {
- "code": "string",
- "totalAssigned": 0,
- "totalUsages": 0,
- "customAttributes": { },
- "expiredAt": "2019-08-24T14:15:22Z",
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z"
}
]
}| couponBookKey required | string |
| codes required | Array of strings Codes to be added |
{- "codes": [
- "string"
]
}{- "codes": [
- {
- "code": "string",
- "totalAssigned": 0,
- "totalUsages": 0,
- "customAttributes": { },
- "expiredAt": "2019-08-24T14:15:22Z",
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z"
}
]
}| loyaltyMemberId required | string |
| page | number >= 0 Example: page=0 The page number for pagination |
| limit | number [ 1 .. 100 ] Default: 25 Example: limit=10 The limit of items to return per page |
| order | string Order of columns in result in the format 'column,asc|desc?'. Samples: ?order=col1 or ?order=col1,asc |
| tags | string Filter by all of these tags (AND logic). Comma-separated. |
| tagsAny | string Filter by any of these tags (OR logic). Comma-separated. |
| validFromDate | string <date-time> |
| validToDate | string <date-time> |
| locale | string Deprecated Translation locale requested for the coupon |
| locations | string |
| categories | string |
| productCategories | string |
| paymentMethods | string |
| channels | string |
| daysOfWeek | string |
| dryRun | boolean When true, returns every candidate coupon book (skipping eligibility filtering) with |
| couponBookKey | string |
| withStockOnly | boolean |
| externalId | string |
| type | string Enum: "single" "list" "generated" "codeless" |
curl -X 'GET' \ 'https://api.sandbox.qurable.io/v2/members/{loyaltyMemberId}/coupon-books?page=0&limit=10' \ -H 'accept: application/json' \ -H 'Authorization: Bearer {YOUR_TOKEN}'
{- "totalCount": 0,
- "page": 0,
- "limit": 0,
- "results": [
- {
- "eligible": true,
- "exclusionReasons": [
- "validity_window"
], - "couponBookKey": "string",
- "externalId": "string",
- "rankingIndex": 0,
- "name": "string",
- "description": "string",
- "subtitle": "string",
- "pictureUrl": "string",
- "detailPictureUrl": "string",
- "images": { },
- "customAttributes": { },
- "type": "string",
- "tags": [
- "string"
], - "tiers": [
- 0
], - "loyaltyTiers": [
- {
- "loyaltyTierKey": "string",
- "name": "string",
- "active": true,
- "minRequiredPoints": 0,
- "tierOrder": 0,
- "isDefault": true
}
], - "audienceKeys": [
- "string"
], - "publishingStatus": "draft",
- "validFromDate": "2019-08-24T14:15:22Z",
- "validToDate": "2019-08-24T14:15:22Z",
- "maxAssignedPerMember": 0,
- "maxAssignedPerCoupon": 0,
- "maxCouponCount": 0,
- "totalAssigned": 0,
- "totalUsages": 0,
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z",
- "defaultLocale": "string",
- "assignmentRequiredPoints": 0,
- "usageRequiredPoints": 0,
- "requiredPointsConfig": {
- "ledgerId": 0,
- "ledgerAccountId": 0,
- "ledgerKey": "string",
- "ledgerAccountKey": "string",
- "txDescription": "string",
- "txTags": [
- "string"
]
}, - "discountAmount": 0,
- "discountType": "string",
- "locations": [
- "string"
], - "categories": [
- "string"
], - "productCategories": [
- "string"
], - "paymentMethods": [
- "string"
], - "channels": [
- "string"
], - "maxDiscountPerPeriod": 0,
- "discountPeriodType": "daily",
- "timezone": "string",
- "periodDiscountUsed": 0,
- "periodDiscountEndTime": "2019-08-24T14:15:22Z",
- "maxUsagesPerPeriod": 0,
- "usagePeriodType": "daily",
- "periodUsageCount": 0,
- "periodUsageEndTime": "2019-08-24T14:15:22Z",
- "daysOfWeek": [
- 0
], - "maxDiscountPerUse": 0
}
]
}| loyaltyMemberId required | string |
| couponBookKey required | string |
| systemUniqueKey | string System Unique Key by Organization ID |
| code | string Code to be used |
| pendingCaptureLedgerTransactionId | string Ledger transaction ID |
| externalId | string External ID for tracking |
| pointsOverride | number Optional points override. Positive values burn points, negative values mint points, zero skips point transaction. When absent, uses coupon book configured points. |
| amountDiscounted | number The actual discount amount applied in this usage |
| description | string Description for the ledger transaction |
| tags | Array of strings Tags for the ledger transaction |
| bypassUsageRestrictions | boolean Default: false Bypass time-based usage restrictions for late-arriving reports of real-world events. Ignores: coupon expiredAt, period usage limit, and period discount limit. Stock caps, per-member quota, coupon-must-exist, and ledger point requirements still apply. |
| usageData | object |
| autoAssign | boolean |
{- "systemUniqueKey": "string",
- "code": "string",
- "pendingCaptureLedgerTransactionId": "1234",
- "externalId": "ext-123",
- "pointsOverride": 100,
- "amountDiscounted": 0,
- "description": "string",
- "tags": [
- "string"
], - "bypassUsageRestrictions": false,
- "usageData": { },
- "autoAssign": true
}{- "status": "success",
- "message": "string",
- "couponUsage": {
- "couponUsageKey": "string",
- "couponCode": "string",
- "couponBook": {
- "eligible": true,
- "exclusionReasons": [
- "validity_window"
], - "couponBookKey": "string",
- "externalId": "string",
- "rankingIndex": 0,
- "name": "string",
- "description": "string",
- "subtitle": "string",
- "pictureUrl": "string",
- "detailPictureUrl": "string",
- "images": { },
- "customAttributes": { },
- "type": "string",
- "tags": [
- "string"
], - "tiers": [
- 0
], - "loyaltyTiers": [
- {
- "loyaltyTierKey": "string",
- "name": "string",
- "active": true,
- "minRequiredPoints": 0,
- "tierOrder": 0,
- "isDefault": true
}
], - "audienceKeys": [
- "string"
], - "publishingStatus": "draft",
- "validFromDate": "2019-08-24T14:15:22Z",
- "validToDate": "2019-08-24T14:15:22Z",
- "maxAssignedPerMember": 0,
- "maxAssignedPerCoupon": 0,
- "maxCouponCount": 0,
- "totalAssigned": 0,
- "totalUsages": 0,
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z",
- "defaultLocale": "string",
- "assignmentRequiredPoints": 0,
- "usageRequiredPoints": 0,
- "requiredPointsConfig": {
- "ledgerId": 0,
- "ledgerAccountId": 0,
- "ledgerKey": "string",
- "ledgerAccountKey": "string",
- "txDescription": "string",
- "txTags": [
- "string"
]
}, - "discountAmount": 0,
- "discountType": "string",
- "locations": [
- "string"
], - "categories": [
- "string"
], - "productCategories": [
- "string"
], - "paymentMethods": [
- "string"
], - "channels": [
- "string"
], - "maxDiscountPerPeriod": 0,
- "discountPeriodType": "daily",
- "timezone": "string",
- "periodDiscountUsed": 0,
- "periodDiscountEndTime": "2019-08-24T14:15:22Z",
- "maxUsagesPerPeriod": 0,
- "usagePeriodType": "daily",
- "periodUsageCount": 0,
- "periodUsageEndTime": "2019-08-24T14:15:22Z",
- "daysOfWeek": [
- 0
], - "maxDiscountPerUse": 0
}, - "couponBookKey": "string",
- "systemUniqueKey": "string",
- "usageData": { },
- "amountUsed": 0,
- "amountAssigned": 0,
- "amountDiscounted": 0,
- "updatedTotalUsages": 0,
- "updatedTotalAssigned": 0,
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z"
}
}| loyaltyMemberId required | string |
| couponBookKey required | string |
| amount | object Default: 1 Amount to be assigned for each code |
| pendingCaptureLedgerTransactionId | string Ledger transaction ID |
| externalId | string External ID for tracking |
| pointsOverride | number Optional points override. Positive values burn points, negative values mint points, zero skips point transaction. When absent, uses coupon book configured points. |
| description | string Description for the ledger transaction |
| tags | Array of strings Tags for the ledger transaction |
| systemUniqueKey | string |
| code | string |
| couponData | object |
| usageData | object |
| expiresAt | string <date-time> |
{- "amount": 1,
- "pendingCaptureLedgerTransactionId": "1234",
- "externalId": "ext-456",
- "pointsOverride": 50,
- "description": "string",
- "tags": [
- "string"
], - "systemUniqueKey": "string",
- "code": "string",
- "couponData": { },
- "usageData": { },
- "expiresAt": "2019-08-24T14:15:22Z"
}{- "status": "success",
- "message": "string",
- "couponUsage": {
- "couponUsageKey": "string",
- "couponCode": "string",
- "couponBook": {
- "eligible": true,
- "exclusionReasons": [
- "validity_window"
], - "couponBookKey": "string",
- "externalId": "string",
- "rankingIndex": 0,
- "name": "string",
- "description": "string",
- "subtitle": "string",
- "pictureUrl": "string",
- "detailPictureUrl": "string",
- "images": { },
- "customAttributes": { },
- "type": "string",
- "tags": [
- "string"
], - "tiers": [
- 0
], - "loyaltyTiers": [
- {
- "loyaltyTierKey": "string",
- "name": "string",
- "active": true,
- "minRequiredPoints": 0,
- "tierOrder": 0,
- "isDefault": true
}
], - "audienceKeys": [
- "string"
], - "publishingStatus": "draft",
- "validFromDate": "2019-08-24T14:15:22Z",
- "validToDate": "2019-08-24T14:15:22Z",
- "maxAssignedPerMember": 0,
- "maxAssignedPerCoupon": 0,
- "maxCouponCount": 0,
- "totalAssigned": 0,
- "totalUsages": 0,
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z",
- "defaultLocale": "string",
- "assignmentRequiredPoints": 0,
- "usageRequiredPoints": 0,
- "requiredPointsConfig": {
- "ledgerId": 0,
- "ledgerAccountId": 0,
- "ledgerKey": "string",
- "ledgerAccountKey": "string",
- "txDescription": "string",
- "txTags": [
- "string"
]
}, - "discountAmount": 0,
- "discountType": "string",
- "locations": [
- "string"
], - "categories": [
- "string"
], - "productCategories": [
- "string"
], - "paymentMethods": [
- "string"
], - "channels": [
- "string"
], - "maxDiscountPerPeriod": 0,
- "discountPeriodType": "daily",
- "timezone": "string",
- "periodDiscountUsed": 0,
- "periodDiscountEndTime": "2019-08-24T14:15:22Z",
- "maxUsagesPerPeriod": 0,
- "usagePeriodType": "daily",
- "periodUsageCount": 0,
- "periodUsageEndTime": "2019-08-24T14:15:22Z",
- "daysOfWeek": [
- 0
], - "maxDiscountPerUse": 0
}, - "couponBookKey": "string",
- "systemUniqueKey": "string",
- "usageData": { },
- "amountUsed": 0,
- "amountAssigned": 0,
- "amountDiscounted": 0,
- "updatedTotalUsages": 0,
- "updatedTotalAssigned": 0,
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z"
}
}| loyaltyMemberId required | string |
| page | number >= 0 Example: page=0 The page number for pagination |
| limit | number [ 1 .. 25 ] Example: limit=10 The limit of items to return per page |
| order | string Order of columns in result in the format 'column,asc|desc?'. Samples: ?order=col1 or ?order=col1,asc |
| notUsedOnly | boolean |
| couponBookTags | string Filter by coupon books with all of these tags (AND logic). Comma-separated. |
| couponBookTagsAny | string Filter by coupon books with any of these tags (OR logic). Comma-separated. |
| couponCode | string |
| couponBookKey | string |
curl -X 'GET' \ 'https://api.sandbox.qurable.io/v2/members/{loyaltyMemberId}/coupons?page=0&limit=10' \ -H 'accept: application/json' \ -H 'Authorization: Bearer {YOUR_TOKEN}'
{- "totalCount": 0,
- "page": 0,
- "limit": 0,
- "results": [
- {
- "code": "string",
- "amountAssigned": 0,
- "amountUsed": 0,
- "couponData": { },
- "expiredAt": "2019-08-24T14:15:22Z",
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z",
- "couponBook": {
- "eligible": true,
- "exclusionReasons": [
- "validity_window"
], - "couponBookKey": "string",
- "externalId": "string",
- "rankingIndex": 0,
- "name": "string",
- "description": "string",
- "subtitle": "string",
- "pictureUrl": "string",
- "detailPictureUrl": "string",
- "images": { },
- "customAttributes": { },
- "type": "string",
- "tags": [
- "string"
], - "tiers": [
- 0
], - "loyaltyTiers": [
- {
- "loyaltyTierKey": "string",
- "name": "string",
- "active": true,
- "minRequiredPoints": 0,
- "tierOrder": 0,
- "isDefault": true
}
], - "audienceKeys": [
- "string"
], - "publishingStatus": "draft",
- "validFromDate": "2019-08-24T14:15:22Z",
- "validToDate": "2019-08-24T14:15:22Z",
- "maxAssignedPerMember": 0,
- "maxAssignedPerCoupon": 0,
- "maxCouponCount": 0,
- "totalAssigned": 0,
- "totalUsages": 0,
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z",
- "defaultLocale": "string",
- "assignmentRequiredPoints": 0,
- "usageRequiredPoints": 0,
- "requiredPointsConfig": {
- "ledgerId": 0,
- "ledgerAccountId": 0,
- "ledgerKey": "string",
- "ledgerAccountKey": "string",
- "txDescription": "string",
- "txTags": [
- "string"
]
}, - "discountAmount": 0,
- "discountType": "string",
- "locations": [
- "string"
], - "categories": [
- "string"
], - "productCategories": [
- "string"
], - "paymentMethods": [
- "string"
], - "channels": [
- "string"
], - "maxDiscountPerPeriod": 0,
- "discountPeriodType": "daily",
- "timezone": "string",
- "periodDiscountUsed": 0,
- "periodDiscountEndTime": "2019-08-24T14:15:22Z",
- "maxUsagesPerPeriod": 0,
- "usagePeriodType": "daily",
- "periodUsageCount": 0,
- "periodUsageEndTime": "2019-08-24T14:15:22Z",
- "daysOfWeek": [
- 0
], - "maxDiscountPerUse": 0
}
}
]
}| loyaltyMemberId required | string |
| page | number >= 0 Example: page=0 The page number for pagination |
| limit | number [ 1 .. 25 ] Example: limit=10 The limit of items to return per page |
| order | string Order of columns in result in the format 'column,asc|desc?'. Samples: ?order=col1 or ?order=col1,asc |
| codes | Array of a[ items ] Filter coupon usages by coupon codes (exact match). Maximum 100 codes allowed. |
| fromCreatedAt | string <date-time> Filter coupon usages created from this date |
| toCreatedAt | string <date-time> Filter coupon usages created up to this date |
| unusedOnly | boolean Default: false When true, returns only assignation records (amountAssigned > 0) for coupon codes where the member still has available balance |
| couponBookTags | string Filter by coupon books with all of these tags (AND logic). Comma-separated. |
| couponBookTagsAny | string Filter by coupon books with any of these tags (OR logic). Comma-separated. |
| couponBookKey | string |
curl -X 'GET' \ 'https://api.sandbox.qurable.io/v2/members/CL-RUT-90892932/coupon-usages?page=0&limit=10&couponBookKey={couponBookKey}' \ -H 'accept: application/json' \ -H 'Authorization: Bearer {YOUR_TOKEN}'
{- "totalCount": 0,
- "page": 0,
- "limit": 0,
- "results": [
- {
- "couponUsageKey": "string",
- "couponCode": "string",
- "couponBook": {
- "eligible": true,
- "exclusionReasons": [
- "validity_window"
], - "couponBookKey": "string",
- "externalId": "string",
- "rankingIndex": 0,
- "name": "string",
- "description": "string",
- "subtitle": "string",
- "pictureUrl": "string",
- "detailPictureUrl": "string",
- "images": { },
- "customAttributes": { },
- "type": "string",
- "tags": [
- "string"
], - "tiers": [
- 0
], - "loyaltyTiers": [
- {
- "loyaltyTierKey": "string",
- "name": "string",
- "active": true,
- "minRequiredPoints": 0,
- "tierOrder": 0,
- "isDefault": true
}
], - "audienceKeys": [
- "string"
], - "publishingStatus": "draft",
- "validFromDate": "2019-08-24T14:15:22Z",
- "validToDate": "2019-08-24T14:15:22Z",
- "maxAssignedPerMember": 0,
- "maxAssignedPerCoupon": 0,
- "maxCouponCount": 0,
- "totalAssigned": 0,
- "totalUsages": 0,
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z",
- "defaultLocale": "string",
- "assignmentRequiredPoints": 0,
- "usageRequiredPoints": 0,
- "requiredPointsConfig": {
- "ledgerId": 0,
- "ledgerAccountId": 0,
- "ledgerKey": "string",
- "ledgerAccountKey": "string",
- "txDescription": "string",
- "txTags": [
- "string"
]
}, - "discountAmount": 0,
- "discountType": "string",
- "locations": [
- "string"
], - "categories": [
- "string"
], - "productCategories": [
- "string"
], - "paymentMethods": [
- "string"
], - "channels": [
- "string"
], - "maxDiscountPerPeriod": 0,
- "discountPeriodType": "daily",
- "timezone": "string",
- "periodDiscountUsed": 0,
- "periodDiscountEndTime": "2019-08-24T14:15:22Z",
- "maxUsagesPerPeriod": 0,
- "usagePeriodType": "daily",
- "periodUsageCount": 0,
- "periodUsageEndTime": "2019-08-24T14:15:22Z",
- "daysOfWeek": [
- 0
], - "maxDiscountPerUse": 0
}, - "couponBookKey": "string",
- "systemUniqueKey": "string",
- "usageData": { },
- "amountUsed": 0,
- "amountAssigned": 0,
- "amountDiscounted": 0,
- "updatedTotalUsages": 0,
- "updatedTotalAssigned": 0,
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z"
}
]
}| loyaltyMemberId required | string |
| couponUsageKey required | string |
curl -X 'GET' \ 'https://api.sandbox.qurable.io/v2/members/{loyaltyMemberId}/coupon-usages/{couponUsageKey}' \ -H 'accept: application/json' \ -H 'Authorization: Bearer {YOUR_TOKEN}'
{- "status": "success",
- "message": "string",
- "couponUsage": {
- "couponUsageKey": "string",
- "couponCode": "string",
- "couponBook": {
- "eligible": true,
- "exclusionReasons": [
- "validity_window"
], - "couponBookKey": "string",
- "externalId": "string",
- "rankingIndex": 0,
- "name": "string",
- "description": "string",
- "subtitle": "string",
- "pictureUrl": "string",
- "detailPictureUrl": "string",
- "images": { },
- "customAttributes": { },
- "type": "string",
- "tags": [
- "string"
], - "tiers": [
- 0
], - "loyaltyTiers": [
- {
- "loyaltyTierKey": "string",
- "name": "string",
- "active": true,
- "minRequiredPoints": 0,
- "tierOrder": 0,
- "isDefault": true
}
], - "audienceKeys": [
- "string"
], - "publishingStatus": "draft",
- "validFromDate": "2019-08-24T14:15:22Z",
- "validToDate": "2019-08-24T14:15:22Z",
- "maxAssignedPerMember": 0,
- "maxAssignedPerCoupon": 0,
- "maxCouponCount": 0,
- "totalAssigned": 0,
- "totalUsages": 0,
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z",
- "defaultLocale": "string",
- "assignmentRequiredPoints": 0,
- "usageRequiredPoints": 0,
- "requiredPointsConfig": {
- "ledgerId": 0,
- "ledgerAccountId": 0,
- "ledgerKey": "string",
- "ledgerAccountKey": "string",
- "txDescription": "string",
- "txTags": [
- "string"
]
}, - "discountAmount": 0,
- "discountType": "string",
- "locations": [
- "string"
], - "categories": [
- "string"
], - "productCategories": [
- "string"
], - "paymentMethods": [
- "string"
], - "channels": [
- "string"
], - "maxDiscountPerPeriod": 0,
- "discountPeriodType": "daily",
- "timezone": "string",
- "periodDiscountUsed": 0,
- "periodDiscountEndTime": "2019-08-24T14:15:22Z",
- "maxUsagesPerPeriod": 0,
- "usagePeriodType": "daily",
- "periodUsageCount": 0,
- "periodUsageEndTime": "2019-08-24T14:15:22Z",
- "daysOfWeek": [
- 0
], - "maxDiscountPerUse": 0
}, - "couponBookKey": "string",
- "systemUniqueKey": "string",
- "usageData": { },
- "amountUsed": 0,
- "amountAssigned": 0,
- "amountDiscounted": 0,
- "updatedTotalUsages": 0,
- "updatedTotalAssigned": 0,
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z"
}
}| loyaltyMemberId required | string |
| couponUsageKey required | string |
curl -X 'POST' \ 'https://api.sandbox.qurable.io/v2/members/{loyaltyMemberId}/coupon-usages/{couponUsageKey}/revert' \ -H 'accept: application/json' \ -H 'Authorization: Bearer {YOUR_TOKEN}'
{- "status": "success",
- "message": "string",
- "couponUsage": {
- "couponUsageKey": "string",
- "couponCode": "string",
- "couponBook": {
- "eligible": true,
- "exclusionReasons": [
- "validity_window"
], - "couponBookKey": "string",
- "externalId": "string",
- "rankingIndex": 0,
- "name": "string",
- "description": "string",
- "subtitle": "string",
- "pictureUrl": "string",
- "detailPictureUrl": "string",
- "images": { },
- "customAttributes": { },
- "type": "string",
- "tags": [
- "string"
], - "tiers": [
- 0
], - "loyaltyTiers": [
- {
- "loyaltyTierKey": "string",
- "name": "string",
- "active": true,
- "minRequiredPoints": 0,
- "tierOrder": 0,
- "isDefault": true
}
], - "audienceKeys": [
- "string"
], - "publishingStatus": "draft",
- "validFromDate": "2019-08-24T14:15:22Z",
- "validToDate": "2019-08-24T14:15:22Z",
- "maxAssignedPerMember": 0,
- "maxAssignedPerCoupon": 0,
- "maxCouponCount": 0,
- "totalAssigned": 0,
- "totalUsages": 0,
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z",
- "defaultLocale": "string",
- "assignmentRequiredPoints": 0,
- "usageRequiredPoints": 0,
- "requiredPointsConfig": {
- "ledgerId": 0,
- "ledgerAccountId": 0,
- "ledgerKey": "string",
- "ledgerAccountKey": "string",
- "txDescription": "string",
- "txTags": [
- "string"
]
}, - "discountAmount": 0,
- "discountType": "string",
- "locations": [
- "string"
], - "categories": [
- "string"
], - "productCategories": [
- "string"
], - "paymentMethods": [
- "string"
], - "channels": [
- "string"
], - "maxDiscountPerPeriod": 0,
- "discountPeriodType": "daily",
- "timezone": "string",
- "periodDiscountUsed": 0,
- "periodDiscountEndTime": "2019-08-24T14:15:22Z",
- "maxUsagesPerPeriod": 0,
- "usagePeriodType": "daily",
- "periodUsageCount": 0,
- "periodUsageEndTime": "2019-08-24T14:15:22Z",
- "daysOfWeek": [
- 0
], - "maxDiscountPerUse": 0
}, - "couponBookKey": "string",
- "systemUniqueKey": "string",
- "usageData": { },
- "amountUsed": 0,
- "amountAssigned": 0,
- "amountDiscounted": 0,
- "updatedTotalUsages": 0,
- "updatedTotalAssigned": 0,
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z"
}
}By default reverts the most recent unreverted usage. Use revertAll=true to revert all unreverted usages for this code. WARNING: revertAll=true can revert up to 100 usages - use with caution. Partial failures in batch mode will return a warning status with details.
| loyaltyMemberId required | string |
| couponBookKey required | string |
| couponCode required | string |
| revertAll | boolean Default: false When true, revert all unreverted usages for this coupon code (max 100 usages). Default: false |
{- "status": "success",
- "message": "string",
- "couponUsage": {
- "couponUsageKey": "string",
- "couponCode": "string",
- "couponBook": {
- "eligible": true,
- "exclusionReasons": [
- "validity_window"
], - "couponBookKey": "string",
- "externalId": "string",
- "rankingIndex": 0,
- "name": "string",
- "description": "string",
- "subtitle": "string",
- "pictureUrl": "string",
- "detailPictureUrl": "string",
- "images": { },
- "customAttributes": { },
- "type": "string",
- "tags": [
- "string"
], - "tiers": [
- 0
], - "loyaltyTiers": [
- {
- "loyaltyTierKey": "string",
- "name": "string",
- "active": true,
- "minRequiredPoints": 0,
- "tierOrder": 0,
- "isDefault": true
}
], - "audienceKeys": [
- "string"
], - "publishingStatus": "draft",
- "validFromDate": "2019-08-24T14:15:22Z",
- "validToDate": "2019-08-24T14:15:22Z",
- "maxAssignedPerMember": 0,
- "maxAssignedPerCoupon": 0,
- "maxCouponCount": 0,
- "totalAssigned": 0,
- "totalUsages": 0,
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z",
- "defaultLocale": "string",
- "assignmentRequiredPoints": 0,
- "usageRequiredPoints": 0,
- "requiredPointsConfig": {
- "ledgerId": 0,
- "ledgerAccountId": 0,
- "ledgerKey": "string",
- "ledgerAccountKey": "string",
- "txDescription": "string",
- "txTags": [
- "string"
]
}, - "discountAmount": 0,
- "discountType": "string",
- "locations": [
- "string"
], - "categories": [
- "string"
], - "productCategories": [
- "string"
], - "paymentMethods": [
- "string"
], - "channels": [
- "string"
], - "maxDiscountPerPeriod": 0,
- "discountPeriodType": "daily",
- "timezone": "string",
- "periodDiscountUsed": 0,
- "periodDiscountEndTime": "2019-08-24T14:15:22Z",
- "maxUsagesPerPeriod": 0,
- "usagePeriodType": "daily",
- "periodUsageCount": 0,
- "periodUsageEndTime": "2019-08-24T14:15:22Z",
- "daysOfWeek": [
- 0
], - "maxDiscountPerUse": 0
}, - "couponBookKey": "string",
- "systemUniqueKey": "string",
- "usageData": { },
- "amountUsed": 0,
- "amountAssigned": 0,
- "amountDiscounted": 0,
- "updatedTotalUsages": 0,
- "updatedTotalAssigned": 0,
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z"
}
}| page | number >= 0 Example: page=0 The page number for pagination |
| limit | number [ 1 .. 25 ] Example: limit=10 The limit of items to return per page |
| code | string |
| couponBookKey | string |
| loyaltyMemberId | string |
| expired | boolean |
curl -X 'GET' \ 'https://api.sandbox.qurable.io/v2/coupons?code={code}?page=0&limit=10' \ -H 'accept: application/json' \ -H 'Authorization: Bearer {YOUR_TOKEN}'
{- "totalCount": 0,
- "page": 0,
- "limit": 0,
- "results": [
- {
- "code": "string",
- "amountAssigned": 0,
- "assignments": [
- {
- "loyaltyMemberId": "string"
}
], - "amountUsed": 0,
- "customAttributes": { },
- "expiredAt": "2019-08-24T14:15:22Z",
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z",
- "couponBook": {
- "couponBookKey": "string",
- "externalId": "string",
- "name": "string",
- "description": "string",
- "pictureUrl": "string",
- "customAttributes": { },
- "type": "string",
- "tags": [
- "string"
], - "loyaltyTiers": [
- {
- "loyaltyTierKey": "string",
- "name": "string",
- "active": true,
- "minRequiredPoints": 0,
- "tierOrder": 0,
- "isDefault": true
}
], - "validFromDate": "2019-08-24T14:15:22Z",
- "validToDate": "2019-08-24T14:15:22Z",
- "discountAmount": 0,
- "discountType": "string"
}
}
]
}| page | number >= 0 Example: page=0 The page number for pagination |
| limit | number [ 1 .. 25 ] Example: limit=10 The limit of items to return per page |
| order | string Order of columns in result in the format 'column,asc|desc?'. Samples: ?order=col1 or ?order=col1,asc |
| active | boolean Filter by active status |
| tags | string Filter by all of these tags (AND logic). Comma-separated. |
{- "totalCount": 0,
- "page": 0,
- "limit": 0,
- "results": [
- {
- "badgeKey": "string",
- "name": "string",
- "description": "string",
- "pictureUrl": "string",
- "maxAmount": 0,
- "active": true,
- "tags": [
- "string"
], - "customAttributes": { },
- "totalAssigned": 0,
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z"
}
]
}| name required | string |
| description | string |
| pictureUrl | string |
| maxAmount required | number |
| active required | boolean |
| tags | Array of strings |
| customAttributes | object |
{- "name": "string",
- "description": "string",
- "pictureUrl": "string",
- "maxAmount": 0,
- "active": true,
- "tags": [
- "string"
], - "customAttributes": { }
}{- "badge": {
- "badgeKey": "string",
- "name": "string",
- "description": "string",
- "pictureUrl": "string",
- "maxAmount": 0,
- "active": true,
- "tags": [
- "string"
], - "customAttributes": { },
- "totalAssigned": 0,
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z"
}
}{- "badge": {
- "badgeKey": "string",
- "name": "string",
- "description": "string",
- "pictureUrl": "string",
- "maxAmount": 0,
- "active": true,
- "tags": [
- "string"
], - "customAttributes": { },
- "totalAssigned": 0,
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z"
}
}| badgeKey required | string |
| name | string |
| description | string |
| pictureUrl | string |
| maxAmount | number |
| active | boolean |
| tags | Array of strings |
| customAttributes | object |
{- "name": "string",
- "description": "string",
- "pictureUrl": "string",
- "maxAmount": 0,
- "active": true,
- "tags": [
- "string"
], - "customAttributes": { }
}{- "badge": {
- "badgeKey": "string",
- "name": "string",
- "description": "string",
- "pictureUrl": "string",
- "maxAmount": 0,
- "active": true,
- "tags": [
- "string"
], - "customAttributes": { },
- "totalAssigned": 0,
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z"
}
}| loyaltyMemberId required | string |
| page | number >= 0 Example: page=0 The page number for pagination |
| limit | number [ 1 .. 25 ] Example: limit=10 The limit of items to return per page |
| order | string Order of columns in result in the format 'column,asc|desc?'. Samples: ?order=col1 or ?order=col1,asc |
| active | boolean Filter by active status |
| tags | string Filter by all of these tags (AND logic). Comma-separated. |
| badgeKeys | string Filter by a specific list of badge keys (comma-separated). When provided, requested badges are returned even if the member's assignedBalance is 0. |
curl -X 'GET' \ 'https://api.sandbox.qurable.io/v2/members/{loyaltyMemberId}/badges?page=1&limit=10' \ -H 'accept: application/json' \ -H 'Authorization: Bearer {YOUR_TOKEN}'
{- "totalCount": 0,
- "page": 0,
- "limit": 0,
- "results": [
- {
- "badgeKey": "string",
- "name": "string",
- "description": "string",
- "pictureUrl": "string",
- "maxAmount": 0,
- "active": true,
- "tags": [
- "string"
], - "customAttributes": { },
- "totalAssigned": 0,
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z",
- "assignedBalance": 0
}
]
}| loyaltyMemberId required | string |
| badgeKey required | string |
curl -X 'GET' \ 'https://api.sandbox.qurable.io/v2/members/{loyaltyMemberId}/badges/{badgeKey}/balance' \ -H 'accept: application/json' \ -H 'Authorization: Bearer {YOUR_TOKEN}'
{- "balance": {
- "badgeKey": "string",
- "loyaltyMemberId": "string",
- "assignedBalance": 0
}
}| loyaltyMemberId required | string |
| badgeKey required | string |
| amount | number >= 1 Default: 1 Amount to assign |
| systemUniqueKey | string System unique key for idempotency |
| customAttributes | object Custom attributes |
| externalId | string External ID for tracking |
{- "amount": 1,
- "systemUniqueKey": "string",
- "customAttributes": { },
- "externalId": "string"
}{- "badgeTracking": {
- "badgeTrackingKey": "string",
- "badgeKey": "string",
- "amountAssigned": 0,
- "updatedTotalAssigned": 0,
- "systemUniqueKey": "string",
- "customAttributes": { },
- "externalId": "string",
- "createdAt": "2019-08-24T14:15:22Z"
}
}| loyaltyMemberId required | string |
| badgeKey required | string |
| amount | number >= 1 Default: 1 Amount to unassign |
| systemUniqueKey | string System unique key for idempotency |
| customAttributes | object Custom attributes |
| externalId | string External ID for tracking |
{- "amount": 1,
- "systemUniqueKey": "string",
- "customAttributes": { },
- "externalId": "string"
}{- "badgeTracking": {
- "badgeTrackingKey": "string",
- "badgeKey": "string",
- "amountAssigned": 0,
- "updatedTotalAssigned": 0,
- "systemUniqueKey": "string",
- "customAttributes": { },
- "externalId": "string",
- "createdAt": "2019-08-24T14:15:22Z"
}
}| loyaltyMemberId required | string |
| badgeTrackingKey required | string |
curl -X 'POST' \ 'https://api.sandbox.qurable.io/v2/members/{loyaltyMemberId}/badge-trackings/{badgeTrackingKey}/revert' \ -H 'accept: application/json' \ -H 'Authorization: Bearer {YOUR_TOKEN}'
{- "badgeTracking": {
- "badgeTrackingKey": "string",
- "badgeKey": "string",
- "amountAssigned": 0,
- "updatedTotalAssigned": 0,
- "systemUniqueKey": "string",
- "customAttributes": { },
- "externalId": "string",
- "createdAt": "2019-08-24T14:15:22Z"
}
}| contentType | string Example: contentType=static Filter by content type |
| tags | Array of strings Filter by tags |
| page | number Default: 0 Example: page=0 Page number |
| limit | number Default: 20 Example: limit=20 Results per page |
| sort | string Example: sort=createdAt:desc Sort field and direction |
{- "results": [
- {
- "collectionKey": "products",
- "name": "products",
- "description": "Lorem ipsum",
- "slug": "string",
- "ftsFields": [
- "title",
- "brand"
], - "facetFields": {
- "price": "number"
}, - "jsonschema": { },
- "tags": [
- "promotion",
- "seasonal"
], - "contentType": "static",
- "customAttributes": {
- "theme": "dark",
- "region": "us"
}, - "createdAt": "2022-01-01T00:00:00.000Z",
- "updatedAt": "2022-01-01T00:00:00.000Z"
}
], - "totalCount": 0,
- "page": 0,
- "limit": 0
}| name required | string Collection name |
| description required | string Collection description |
| slug | string Slug (auto-generated from name if omitted) |
| ftsFields | Array of strings FTS fields |
| facetFields | object Facet fields map |
| jsonschema | object JSON Schema for documents |
| tags | Array of strings Tags for categorization |
| contentType | string Enum: "static" "coupon" Content type |
| customAttributes | object Custom attributes for the collection |
{- "name": "products",
- "description": "Lorem ipsum",
- "slug": "string",
- "ftsFields": [
- "title",
- "brand"
], - "facetFields": {
- "price": "number"
}, - "jsonschema": { },
- "tags": [
- "promotion",
- "seasonal"
], - "contentType": "static",
- "customAttributes": {
- "theme": "dark",
- "region": "us"
}
}{- "collection": {
- "collectionKey": "products",
- "name": "products",
- "description": "Lorem ipsum",
- "slug": "string",
- "ftsFields": [
- "title",
- "brand"
], - "facetFields": {
- "price": "number"
}, - "jsonschema": { },
- "tags": [
- "promotion",
- "seasonal"
], - "contentType": "static",
- "customAttributes": {
- "theme": "dark",
- "region": "us"
}, - "createdAt": "2022-01-01T00:00:00.000Z",
- "updatedAt": "2022-01-01T00:00:00.000Z"
}
}| collectionKeyOrSlug required | string |
{- "collectionKey": "products",
- "name": "products",
- "description": "Lorem ipsum",
- "slug": "string",
- "ftsFields": [
- "title",
- "brand"
], - "facetFields": {
- "price": "number"
}, - "jsonschema": { },
- "tags": [
- "promotion",
- "seasonal"
], - "contentType": "static",
- "customAttributes": {
- "theme": "dark",
- "region": "us"
}, - "createdAt": "2022-01-01T00:00:00.000Z",
- "updatedAt": "2022-01-01T00:00:00.000Z"
}| collectionKeyOrSlug required | string |
| name | string Collection name |
| description | string Collection description |
| slug | string Slug (auto-generated from name if omitted) |
| ftsFields | Array of strings FTS fields |
| facetFields | object Facet fields map |
| jsonschema | object JSON Schema for documents |
| tags | Array of strings Tags for categorization |
| contentType | string Enum: "static" "coupon" Content type |
| customAttributes | object Custom attributes for the collection |
{- "name": "products",
- "description": "Lorem ipsum",
- "slug": "string",
- "ftsFields": [
- "title",
- "brand"
], - "facetFields": {
- "price": "number"
}, - "jsonschema": { },
- "tags": [
- "promotion",
- "seasonal"
], - "contentType": "static",
- "customAttributes": {
- "theme": "dark",
- "region": "us"
}
}{- "collection": {
- "collectionKey": "products",
- "name": "products",
- "description": "Lorem ipsum",
- "slug": "string",
- "ftsFields": [
- "title",
- "brand"
], - "facetFields": {
- "price": "number"
}, - "jsonschema": { },
- "tags": [
- "promotion",
- "seasonal"
], - "contentType": "static",
- "customAttributes": {
- "theme": "dark",
- "region": "us"
}, - "createdAt": "2022-01-01T00:00:00.000Z",
- "updatedAt": "2022-01-01T00:00:00.000Z"
}
}| collectionKeyOrSlug required | string |
| q | string Example: q=auriculares Free text for full-text search |
| range | string Example: range=range.price.min=10&range.price.max=100 Range filters (numeric or date). Use dot notation in query string: range.{field}.min=value&range.{field}.max=value |
| facet | string Example: facet=facet.audienceKeys=['aud_00000'] Facet filters for exact matches. Use dot notation: facets.{field}=value or facets.{field}=['val1','val2'] |
| locale | string Default: "" Locale filter (empty string for default) |
| status | string Enum: "draft" "published" Example: status=published Document status filter (default: published) |
| sort | string Example: sort=price:asc,createdAt:desc Sort field and direction (e.g. "price:asc", "createdAt:desc") |
| page | number Example: page=0 Page number (starting at 0) |
| limit | number Example: limit=20 Result limit (1–200) |
{- "collection": {
- "collectionKey": "123e4567-e89b-12d3-a456-426614174000",
- "name": "products"
}, - "query": {
- "q": "auriculares",
- "sort": "price:asc",
- "page": 0,
- "limit": 20
}, - "totalCount": 10,
- "items": [
- {
- "documentKey": "123e4567-e89b-12d3-a456-426614174000",
- "attrs": {
- "name": "Product 1",
- "price": 100
}, - "createdAt": "2022-01-01T00:00:00.000Z",
- "updatedAt": "2022-01-01T00:00:00.000Z",
- "score": 1
}
], - "facets": {
- "brand": [
- {
- "value": "Sony",
- "count": 5
}
]
}
}Creates or updates multiple documents in a collection. Each document must include a documentKey. Existing documents will be updated, new documents will be created.
| collectionKeyOrSlug required | string |
required | Array of objects (CmsBatchUpsertDocumentItemDto) Documents to create or update | ||||||||||||||||||
Array
| |||||||||||||||||||
{- "documents": [
- {
- "documentKey": "string",
- "slug": "string",
- "attrs": { },
- "status": "draft",
- "locale": "",
- "fromDate": "2019-08-24T14:15:22Z",
- "toDate": "2019-08-24T14:15:22Z",
- "audienceKeys": [
- "vip",
- "premium"
], - "daysOfWeek": [
- 1,
- 2,
- 3,
- 4,
- 5
]
}
]
}{- "upserted": [
- {
- "documentKey": "string",
- "collectionKey": "string",
- "slug": "string",
- "attrs": { },
- "status": "draft",
- "publishedAt": "2019-08-24T14:15:22Z",
- "deletedAt": "2019-08-24T14:15:22Z",
- "locale": "",
- "fromDate": "2019-08-24T14:15:22Z",
- "toDate": "2019-08-24T14:15:22Z",
- "audienceKeys": [
- "vip",
- "premium"
], - "daysOfWeek": [
- 1,
- 2,
- 3,
- 4,
- 5
], - "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z"
}
], - "failed": [
- {
- "documentKey": "string",
- "locale": "string",
- "reason": "schema_validation_error",
- "message": "string"
}
], - "total": 0,
- "successCount": 0,
- "failureCount": 0
}Get document for a specific locale using either documentKey (UUID) or slug. Use empty string or omit locale query param for default locale.
| collectionKeyOrSlug required | string |
| documentKeyOrSlug required | string |
| locale required | string |
{- "document": {
- "documentKey": "string",
- "collectionKey": "string",
- "slug": "string",
- "attrs": { },
- "status": "draft",
- "publishedAt": "2019-08-24T14:15:22Z",
- "deletedAt": "2019-08-24T14:15:22Z",
- "locale": "",
- "fromDate": "2019-08-24T14:15:22Z",
- "toDate": "2019-08-24T14:15:22Z",
- "audienceKeys": [
- "vip",
- "premium"
], - "daysOfWeek": [
- 1,
- 2,
- 3,
- 4,
- 5
], - "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z"
}
}Update document for a specific locale. Use empty string or omit locale query param for default locale.
| collectionKeyOrSlug required | string |
| documentKeyOrSlug required | string |
| locale required | string |
| slug | string Slug (optional, duplicates allowed) |
| attrs | object Document attributes |
| status | string Enum: "draft" "published" |
| fromDate | string or null <date-time> Start date for content visibility |
| toDate | string <date-time> End date for content visibility |
| audienceKeys | Array of strings Audience segment keys |
| daysOfWeek | Array of strings Days of week the document is valid (1=Monday, 7=Sunday). Empty or null means all days. |
| locale | string Default: "" Locale code (empty string for default) |
{- "slug": "string",
- "attrs": { },
- "status": "draft",
- "fromDate": "2019-08-24T14:15:22Z",
- "toDate": "2019-08-24T14:15:22Z",
- "audienceKeys": [
- "vip",
- "premium"
], - "daysOfWeek": [
- 1,
- 2,
- 3,
- 4,
- 5
], - "locale": ""
}{- "document": {
- "documentKey": "string",
- "collectionKey": "string",
- "slug": "string",
- "attrs": { },
- "status": "draft",
- "publishedAt": "2019-08-24T14:15:22Z",
- "deletedAt": "2019-08-24T14:15:22Z",
- "locale": "",
- "fromDate": "2019-08-24T14:15:22Z",
- "toDate": "2019-08-24T14:15:22Z",
- "audienceKeys": [
- "vip",
- "premium"
], - "daysOfWeek": [
- 1,
- 2,
- 3,
- 4,
- 5
], - "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z"
}
}Deletes a single document by documentKey or slug. Returns the deleted document details.
| collectionKeyOrSlug required | string |
| documentKeyOrSlug required | string |
| locale required | string |
{- "document": {
- "documentKey": "string",
- "collectionKey": "string",
- "slug": "string",
- "attrs": { },
- "status": "draft",
- "publishedAt": "2019-08-24T14:15:22Z",
- "deletedAt": "2019-08-24T14:15:22Z",
- "locale": "",
- "fromDate": "2019-08-24T14:15:22Z",
- "toDate": "2019-08-24T14:15:22Z",
- "audienceKeys": [
- "vip",
- "premium"
], - "daysOfWeek": [
- 1,
- 2,
- 3,
- 4,
- 5
], - "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z"
}
}Returns all translations (locales) for a given documentKey or slug.
| collectionKeyOrSlug required | string |
| documentKeyOrSlug required | string |
{- "documentKeyOrSlug": "string",
- "locales": [
- {
- "documentKey": "string",
- "collectionKey": "string",
- "slug": "string",
- "attrs": { },
- "status": "draft",
- "publishedAt": "2019-08-24T14:15:22Z",
- "deletedAt": "2019-08-24T14:15:22Z",
- "locale": "",
- "fromDate": "2019-08-24T14:15:22Z",
- "toDate": "2019-08-24T14:15:22Z",
- "audienceKeys": [
- "vip",
- "premium"
], - "daysOfWeek": [
- 1,
- 2,
- 3,
- 4,
- 5
], - "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z"
}
]
}Upsert a translation for a specific locale. The documentKey groups all translations together.
| collectionKeyOrSlug required | string |
| documentKeyOrSlug required | string |
| locale required | string |
| slug | string Slug (optional, duplicates allowed) |
| attrs required | object Document attributes |
| status required | string Enum: "draft" "published" |
| fromDate | string or null <date-time> Start date for content visibility |
| toDate | string <date-time> End date for content visibility |
| audienceKeys | Array of strings Audience segment keys |
| daysOfWeek | Array of strings Days of week the document is valid (1=Monday, 7=Sunday). Empty or null means all days. |
{- "slug": "string",
- "attrs": { },
- "status": "draft",
- "fromDate": "2019-08-24T14:15:22Z",
- "toDate": "2019-08-24T14:15:22Z",
- "audienceKeys": [
- "vip",
- "premium"
], - "daysOfWeek": [
- 1,
- 2,
- 3,
- 4,
- 5
]
}{- "document": {
- "documentKey": "string",
- "collectionKey": "string",
- "slug": "string",
- "attrs": { },
- "status": "draft",
- "publishedAt": "2019-08-24T14:15:22Z",
- "deletedAt": "2019-08-24T14:15:22Z",
- "locale": "",
- "fromDate": "2019-08-24T14:15:22Z",
- "toDate": "2019-08-24T14:15:22Z",
- "audienceKeys": [
- "vip",
- "premium"
], - "daysOfWeek": [
- 1,
- 2,
- 3,
- 4,
- 5
], - "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z"
}
}| page | number >= 0 Example: page=0 The page number for pagination |
| limit | number [ 1 .. 25 ] Example: limit=10 The limit of items to return per page |
| order | string Order of columns in result in the format 'column,asc|desc?'. Samples: ?order=col1 or ?order=col1,asc |
string Filter by email | |
| loyaltyMemberId | string Filter by loyalty member id |
| fromCreatedAt | string <date-time> Filter members created from this date |
| toCreatedAt | string <date-time> Filter members created up to this date |
{- "results": [
- {
- "loyaltyMemberId": "11111-11111",
- "publicLoyaltyMemberId": "11111-11111",
- "profile": {
- "name": "string",
- "lastName": "string",
- "email": "string",
- "govId": {
- "id": "string",
- "type": "string",
- "issuingCountry": "string"
}, - "birthdate": "2019-08-24T14:15:22Z",
- "phoneNumber": "string",
- "pictureUrl": "string",
- "nickname": "string",
- "emails": [
- "string"
], - "locations": [
- "string"
], - "gender": "string",
- "country": "string",
- "state": "string",
- "city": "string",
- "address": {
- "addressLine": "string",
- "floor": "string",
- "apartment": "string",
- "zipCode": "string"
}, - "tags": [
- "string"
]
}, - "active": true,
- "tiers": [
- {
- "loyaltyTierKey": "string",
- "expiresAt": "2024-02-26T02:18:13.117Z",
- "loyaltyProgramKey": "string",
- "loyaltyTierName": "string",
- "details": {
- "loyaltyManualTierId": 0,
- "loyaltySystemTierId": 0
}
}
], - "ledgerWalletKey": "wal_2iNSGK6kGqEsZ2tPGgIu1a1nRaO",
- "customAttributes": {
- "address1": "Some address and street number",
- "phone": "+1-1234-56789"
}, - "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z",
- "ledgerBalances": [
- {
- "ledgerKey": "ldg_2iNSGK6kGqEsZ2tPGgIu1a1nRaO",
- "ledgerAccountKey": "acc_2iNSGK6kGqEsZ2tPGgIu1a1nRaO",
- "balance": 13400,
- "isDefaultAccount": true,
- "lastTransactionDate": "2019-08-24T14:15:22Z"
}
], - "memberType": "organization",
- "channelAcquisition": "mobile_app",
- "notifications": {
- "email": true,
- "phone": false,
- "push": true
}
}
], - "total": 100,
- "page": 1,
- "limit": 10
}| loyaltyMemberId required | string Loyalty Member Id within Organization and Loyalty Program |
| publicLoyaltyMemberId | string Optional Public Loyalty Member Id within Organization and Loyalty Program |
object Member's Profile Info. | |
| active | boolean Member's Active Status. |
| customAttributes | object Custom dynamic attributes for organization member. |
| memberType | string Type of the member. |
| channelAcquisition | string Channel through which the member was acquired. |
| notifications | object Notification preferences |
| referralCode | string An Optional Referral Code |
{- "loyaltyMemberId": "11111-11111",
- "publicLoyaltyMemberId": "11111-11111",
- "profile": {
- "name": "string",
- "lastName": "string",
- "email": "string",
- "govId": {
- "id": "string",
- "type": "string",
- "issuingCountry": "string"
}, - "birthdate": "2019-08-24T14:15:22Z",
- "phoneNumber": "string",
- "pictureUrl": "string",
- "nickname": "string",
- "emails": [
- "string"
], - "locations": [
- "string"
], - "gender": "string",
- "country": "string",
- "state": "string",
- "city": "string",
- "address": {
- "addressLine": "string",
- "floor": "string",
- "apartment": "string",
- "zipCode": "string"
}, - "tags": [
- "string"
]
}, - "active": true,
- "customAttributes": {
- "address1": "Some address and street number",
- "phone": "+1-1234-56789"
}, - "memberType": "organization",
- "channelAcquisition": "mobile_app",
- "notifications": {
- "email": true,
- "phone": false,
- "push": true
}, - "referralCode": "ref-24fAdsa"
}{- "loyaltyMember": {
- "loyaltyMemberId": "11111-11111",
- "publicLoyaltyMemberId": "11111-11111",
- "profile": {
- "name": "string",
- "lastName": "string",
- "email": "string",
- "govId": {
- "id": "string",
- "type": "string",
- "issuingCountry": "string"
}, - "birthdate": "2019-08-24T14:15:22Z",
- "phoneNumber": "string",
- "pictureUrl": "string",
- "nickname": "string",
- "emails": [
- "string"
], - "locations": [
- "string"
], - "gender": "string",
- "country": "string",
- "state": "string",
- "city": "string",
- "address": {
- "addressLine": "string",
- "floor": "string",
- "apartment": "string",
- "zipCode": "string"
}, - "tags": [
- "string"
]
}, - "active": true,
- "tiers": [
- {
- "loyaltyTierKey": "string",
- "expiresAt": "2024-02-26T02:18:13.117Z",
- "loyaltyProgramKey": "string",
- "loyaltyTierName": "string",
- "details": {
- "loyaltyManualTierId": 0,
- "loyaltySystemTierId": 0
}
}
], - "ledgerWalletKey": "wal_2iNSGK6kGqEsZ2tPGgIu1a1nRaO",
- "customAttributes": {
- "address1": "Some address and street number",
- "phone": "+1-1234-56789"
}, - "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z",
- "ledgerBalances": [
- {
- "ledgerKey": "ldg_2iNSGK6kGqEsZ2tPGgIu1a1nRaO",
- "ledgerAccountKey": "acc_2iNSGK6kGqEsZ2tPGgIu1a1nRaO",
- "balance": 13400,
- "isDefaultAccount": true,
- "lastTransactionDate": "2019-08-24T14:15:22Z"
}
], - "memberType": "organization",
- "channelAcquisition": "mobile_app",
- "notifications": {
- "email": true,
- "phone": false,
- "push": true
}
}
}| loyaltyMemberId required | string |
{- "loyaltyMember": {
- "loyaltyMemberId": "11111-11111",
- "publicLoyaltyMemberId": "11111-11111",
- "profile": {
- "name": "string",
- "lastName": "string",
- "email": "string",
- "govId": {
- "id": "string",
- "type": "string",
- "issuingCountry": "string"
}, - "birthdate": "2019-08-24T14:15:22Z",
- "phoneNumber": "string",
- "pictureUrl": "string",
- "nickname": "string",
- "emails": [
- "string"
], - "locations": [
- "string"
], - "gender": "string",
- "country": "string",
- "state": "string",
- "city": "string",
- "address": {
- "addressLine": "string",
- "floor": "string",
- "apartment": "string",
- "zipCode": "string"
}, - "tags": [
- "string"
]
}, - "active": true,
- "tiers": [
- {
- "loyaltyTierKey": "string",
- "expiresAt": "2024-02-26T02:18:13.117Z",
- "loyaltyProgramKey": "string",
- "loyaltyTierName": "string",
- "details": {
- "loyaltyManualTierId": 0,
- "loyaltySystemTierId": 0
}
}
], - "ledgerWalletKey": "wal_2iNSGK6kGqEsZ2tPGgIu1a1nRaO",
- "customAttributes": {
- "address1": "Some address and street number",
- "phone": "+1-1234-56789"
}, - "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z",
- "ledgerBalances": [
- {
- "ledgerKey": "ldg_2iNSGK6kGqEsZ2tPGgIu1a1nRaO",
- "ledgerAccountKey": "acc_2iNSGK6kGqEsZ2tPGgIu1a1nRaO",
- "balance": 13400,
- "isDefaultAccount": true,
- "lastTransactionDate": "2019-08-24T14:15:22Z"
}
], - "memberType": "organization",
- "channelAcquisition": "mobile_app",
- "notifications": {
- "email": true,
- "phone": false,
- "push": true
}
}
}| loyaltyMemberId required | string |
| loyaltyMemberId | string Loyalty Member Id within Organization and Loyalty Program |
| publicLoyaltyMemberId | string Optional Public Loyalty Member Id within Organization and Loyalty Program |
object Member's Profile Info. | |
| active | boolean Member's Active Status. |
| customAttributes | object Custom dynamic attributes for organization member. |
| memberType | string Type of the member. |
| notifications | object Notification preferences |
| updateReason | string Reason for updating the member |
| emitEvent | boolean Default: true If |
{- "loyaltyMemberId": "11111-11111",
- "publicLoyaltyMemberId": "11111-11111",
- "profile": {
- "name": "string",
- "lastName": "string",
- "email": "string",
- "govId": {
- "id": "string",
- "type": "string",
- "issuingCountry": "string"
}, - "birthdate": "2019-08-24T14:15:22Z",
- "phoneNumber": "string",
- "pictureUrl": "string",
- "nickname": "string",
- "emails": [
- "string"
], - "locations": [
- "string"
], - "gender": "string",
- "country": "string",
- "state": "string",
- "city": "string",
- "address": {
- "addressLine": "string",
- "floor": "string",
- "apartment": "string",
- "zipCode": "string"
}, - "tags": [
- "string"
]
}, - "active": true,
- "customAttributes": {
- "address1": "Some address and street number",
- "phone": "+1-1234-56789"
}, - "memberType": "organization",
- "notifications": {
- "email": true,
- "phone": false,
- "push": true
}, - "updateReason": "Updated member profile information",
- "emitEvent": true
}{- "loyaltyMember": {
- "loyaltyMemberId": "11111-11111",
- "publicLoyaltyMemberId": "11111-11111",
- "profile": {
- "name": "string",
- "lastName": "string",
- "email": "string",
- "govId": {
- "id": "string",
- "type": "string",
- "issuingCountry": "string"
}, - "birthdate": "2019-08-24T14:15:22Z",
- "phoneNumber": "string",
- "pictureUrl": "string",
- "nickname": "string",
- "emails": [
- "string"
], - "locations": [
- "string"
], - "gender": "string",
- "country": "string",
- "state": "string",
- "city": "string",
- "address": {
- "addressLine": "string",
- "floor": "string",
- "apartment": "string",
- "zipCode": "string"
}, - "tags": [
- "string"
]
}, - "active": true,
- "tiers": [
- {
- "loyaltyTierKey": "string",
- "expiresAt": "2024-02-26T02:18:13.117Z",
- "loyaltyProgramKey": "string",
- "loyaltyTierName": "string",
- "details": {
- "loyaltyManualTierId": 0,
- "loyaltySystemTierId": 0
}
}
], - "ledgerWalletKey": "wal_2iNSGK6kGqEsZ2tPGgIu1a1nRaO",
- "customAttributes": {
- "address1": "Some address and street number",
- "phone": "+1-1234-56789"
}, - "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z",
- "ledgerBalances": [
- {
- "ledgerKey": "ldg_2iNSGK6kGqEsZ2tPGgIu1a1nRaO",
- "ledgerAccountKey": "acc_2iNSGK6kGqEsZ2tPGgIu1a1nRaO",
- "balance": 13400,
- "isDefaultAccount": true,
- "lastTransactionDate": "2019-08-24T14:15:22Z"
}
], - "memberType": "organization",
- "channelAcquisition": "mobile_app",
- "notifications": {
- "email": true,
- "phone": false,
- "push": true
}
}
}| loyaltyMemberId required | string |
| audienceIds required | Array of numbers |
{- "audienceIds": [
- 0
]
}{- "audienceIds": [
- [
- 0
]
]
}| loyaltyMemberIds required | Array of strings List of loyaltyMemberId |
{- "loyaltyMemberIds": [
- "string"
]
}{- "loyaltyMembers": [
- {
- "loyaltyMemberId": "11111-11111",
- "exists": true
}
]
}| loyaltyMemberId required | string |
| loyaltyProgramKey required | string |
| loyaltyTierKey | string The key of the loyalty tier. If not specified, tier is unassigned |
| expiresAt | string <date-time> Optional expiration date of the tier. At that expiration the tier will be re-evaluated. |
| externalId | string The ID of the external event |
| systemUniqueKey | string A unique key for the system |
| description | string Description associated with the tier change |
| tags | Array of strings Tags associated with the tier change |
{- "loyaltyTierKey": "string",
- "expiresAt": "2027-02-26T02:18:13.117Z",
- "externalId": "string",
- "systemUniqueKey": "string",
- "description": "string",
- "tags": [
- "string"
]
}{- "loyaltyTierKey": "string"
}| loyaltyMemberId required | string |
| page | number >= 0 Example: page=0 The page number for pagination |
| limit | number [ 1 .. 25 ] Example: limit=10 The limit of items to return per page |
| order | string Order of columns in result in the format 'column,asc|desc?'. Samples: ?order=col1 or ?order=col1,asc |
| fromCreatedAt | string <date-time> Filter events created from this date |
| toCreatedAt | string <date-time> Filter events created up to this date |
| eventType | string Enum: "member-purchase-order-created" "member-purchase-order-confirmed" "member-purchase-order-cancelled" "member-purchase-order-rejected" "member-purchase-order-returned" "member-purchase-order-partially-returned" "member-created" "member-updated" "member-profile-completed" "member-tier-set" "member-tier-removed" "member-profile-deactivated" "member-generic-event" "benefit-used" "coupon-code-assigned" "coupon-code-used" "badge-assigned" "badge-unassigned" "mission-status-updated" "ledger-transaction-created" "member-payment-confirmed" Filter events by type |
| status | string Enum: "pending" "running" "failed" "success" Filter events by status |
{- "totalCount": 0,
- "page": 0,
- "limit": 0,
- "results": [
- {
- "loyaltyEventKey": "string",
- "externalId": "string",
- "externalEventDate": "2019-08-24T14:15:22Z",
- "eventType": "string",
- "lastError": "string",
- "description": "string",
- "reason": "string",
- "systemUniqueKey": "string",
- "tags": [
- "string"
], - "location": "string",
- "e2eTrackingId": "string",
- "revertedLoyaltyEventId": "string",
- "reversalLoyaltyEventId": "string",
- "evaluationStatus": 0,
- "status": "pending",
- "limitDiscardedTotalAmount": 0,
- "limitCounters": { },
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z",
- "payload": { },
- "evaluationResults": { },
- "executionResults": { }
}
]
}| loyaltyMemberId required | string |
| page | number >= 0 Example: page=0 The page number for pagination |
| limit | number [ 1 .. 25 ] Example: limit=10 The limit of items to return per page |
| order | string Order of columns in result in the format 'column,asc|desc?'. Samples: ?order=col1 or ?order=col1,asc |
| fromExternalEventDate | string <date-time> Optional Reference From Event Date |
| toExternalEventDate | string <date-time> Optional Reference To Event Date |
| ledgerAccountKey | string Optional Ledger Account Key |
| systemUniqueKey | string Optional System Unique Key for tracking |
| tags | string |
{- "totalCount": 0,
- "page": 0,
- "limit": 0,
- "results": [
- {
- "ledgerTransactionId": "string",
- "externalEventDate": "2019-08-24T14:15:22Z",
- "systemUniqueKey": "string",
- "transactionType": [
- "0",
- "1",
- "2",
- "3",
- "transfer",
- "mint",
- "burn",
- "revert"
], - "status": [
- 0,
- 1,
- 2
], - "externalId": "string",
- "description": "string",
- "ledgerAccountKey": "string",
- "ledgerAccountName": "string",
- "amount": 0,
- "updatedBalance": 0,
- "tags": [
- [
- "tag1",
- "tag2"
]
], - "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z"
}
]
}| loyaltyMemberId required | string |
| collectionKeyOrSlug required | string |
| page | number >= 0 Default: 0 Example: page=0 Page number (0-indexed) |
| limit | number [ 1 .. 200 ] Default: 20 Example: limit=20 Number of results per page |
| sort | string Example: sort=createdAt:desc Sort field and direction (e.g., 'createdAt:desc', 'name:asc') |
{- "collection": {
- "collectionKey": "123e4567-e89b-12d3-a456-426614174000",
- "name": "products"
}, - "query": {
- "q": "auriculares",
- "sort": "price:asc",
- "page": 0,
- "limit": 20
}, - "totalCount": 10,
- "items": [
- {
- "documentKey": "123e4567-e89b-12d3-a456-426614174000",
- "attrs": {
- "name": "Product 1",
- "price": 100
}, - "createdAt": "2022-01-01T00:00:00.000Z",
- "updatedAt": "2022-01-01T00:00:00.000Z",
- "score": 1
}
], - "facets": {
- "brand": [
- {
- "value": "Sony",
- "count": 5
}
]
}
}Track loyalty events for members with configurable execution modes:
Execution Modes:
full (default): Complete evaluation and execution of all effects (points, tiers, missions, etc.)dryRun: Simulation mode - evaluates effects without executing any changescaptureOnly: Persistence mode - skips effects evaluation, only creates event record and associated order/transaction dataUse Cases:
full for normal event processing with loyalty rewardsdryRun for testing and preview of what effects would be triggeredcaptureOnly for recording transactions without triggering loyalty effects (useful for historical data import or delayed processing)Note: The dryRun parameter is deprecated. Use executionMode instead.
required | Array of objects (TrackOrganizationLoyaltyEventDto) Array of loyalty events to track |
| campaignKeys | Array of strings Array of campaign keys to filter campaigns for evaluation |
| executionMode | string Default: "full" Enum: "full" "dryRun" "captureOnly" "authorize" Execution mode for event processing |
| dryRun | boolean Deprecated DEPRECATED: Use executionMode instead. If true, the events will be processed but no actual changes will be made |
{- "events": [
- {
- "loyaltyMemberId": "string",
- "sponsorLoyaltyMemberId": "string",
- "systemUniqueKey": "string",
- "externalId": "string",
- "eventType": "member-purchase-order-confirmed",
- "description": "string",
- "payload": {
- "items": [
- {
- "productCode": "PROD123",
- "description": "Premium Coffee Beans",
- "total": 200000,
- "amount": 2,
- "subTotal": 100000,
- "customAttributes": {
- "origin": "Colombia",
- "roastLevel": "medium"
}, - "discountedTotal": 180000
}, - {
- "productCode": "PROD456",
- "description": "Coffee Grinder",
- "total": 500000,
- "amount": 1,
- "subTotal": 500000,
- "discountedTotal": 450000
}
], - "customAttributes": {
- "orderSource": "mobile_app",
- "promoApplied": "SUMMER2023"
}, - "discountedTotal": 630000,
- "description": "Coffee equipment purchase",
- "total": 700000,
- "type": "retail_purchase",
- "referralCode": "REF1234567890",
- "coupons": [
- "CODE-1",
- "CODE-2",
- "CODE-3"
], - "location": "store-001"
}, - "externalEventDate": "2019-08-24T14:15:22Z",
- "tags": [
- "coffee",
- "equipment",
- "premium"
]
}
], - "campaignKeys": [
- "cpg_01JGH08G0CT5WRTRQN4HYD2WZW",
- "cpg_01JGH08G0CT5WRTRQN4HYD2XX"
], - "executionMode": "full",
- "dryRun": false
}{- "results": [
- {
- "loyaltyEventKey": "ev_01JG29AJQAQ3NB706GFCHS91H5",
- "systemUniqueKey": "67b2394f-0d24-417e-aeba-ec47b3ecc2e7",
- "error": "string",
- "effects": [
- {
- "actionKey": "act_01JGH0352DFYC56XC16NGAC3T9",
- "actionIndex": 0,
- "actionName": "Mission Update test name",
- "campaignCode": "POINTS-ACCRUAL-WEEKENDS",
- "campaignKey": "cpg_01JGH08G0CT5WRTRQN4HYD2WZW",
- "exclusiveGroup": "tier-upgrade-group",
- "effectId": "add-loyalty-points",
- "effectIndex": 0,
- "status": "success",
- "error": "Error message",
- "results": {
- "amount": 1250,
- "beneficiaryMemberType": "member",
- "systemUniqueKey": "f93d8b2c-25ae-47f9-ae12-d94b23ec8a71_103_189_add-loyalty-points_0",
- "ledgerWalletKey": "wal_01KJ9C8G6U0VSRC6RHDMRH4K70",
- "ledgerKey": "ldg_01KJ43CLSCS5ND928IHEJU03J7",
- "ledgerAccountKey": "acc_01KJ43CLTMGRHNX8A5BXHAS4UM",
- "ledgerAccountName": "Standard Rewards Account",
- "tags": [
- "campaign-code:SUMMER-BONUS"
], - "description": "Warning: this is only an example and can be different for each effect",
- "ledgerTransactionId": "937445"
}
}
], - "state": {
- "ledgerBalances": [
- {
- "currentBalance": 13321000,
- "endingBalance": 14021000,
- "isDefaultAccount": false,
- "ledgerAccountName": "Spend Account",
- "ledgerKey": "string",
- "ledgerAccountKey": "string",
- "ledgerWalletKey": "string"
}
]
}, - "organizationKey": "org_01JG29AJQAQ3NB706GFCHS91H5",
- "status": "ok"
}
], - "executionMode": "full",
- "dryRun": false
}Cancel a loyalty event and its effects (ledger transactions and limits/counters).
Cancellation Modes:
amount and items to cancel all effects of the eventamount and/or items to cancel specific effects (coming soon)The endpoint currently returns a discovery of child events with ledger transactions that would be cancelled.
| loyaltyEventKey required | string |
| description | string <= 255 characters Optional description for the cancellation event |
{- "description": "Order refunded by customer request"
}{- "results": [
- {
- "loyaltyEventKey": "ev_01JG29AJQAQ3NB706GFCHS91H5",
- "systemUniqueKey": "67b2394f-0d24-417e-aeba-ec47b3ecc2e7",
- "error": "string",
- "effects": [
- {
- "actionKey": "act_01JGH0352DFYC56XC16NGAC3T9",
- "actionIndex": 0,
- "actionName": "Mission Update test name",
- "campaignCode": "POINTS-ACCRUAL-WEEKENDS",
- "campaignKey": "cpg_01JGH08G0CT5WRTRQN4HYD2WZW",
- "exclusiveGroup": "tier-upgrade-group",
- "effectId": "add-loyalty-points",
- "effectIndex": 0,
- "status": "success",
- "error": "Error message",
- "results": {
- "amount": 1250,
- "beneficiaryMemberType": "member",
- "systemUniqueKey": "f93d8b2c-25ae-47f9-ae12-d94b23ec8a71_103_189_add-loyalty-points_0",
- "ledgerWalletKey": "wal_01KJ9C8G6U0VSRC6RHDMRH4K70",
- "ledgerKey": "ldg_01KJ43CLSCS5ND928IHEJU03J7",
- "ledgerAccountKey": "acc_01KJ43CLTMGRHNX8A5BXHAS4UM",
- "ledgerAccountName": "Standard Rewards Account",
- "tags": [
- "campaign-code:SUMMER-BONUS"
], - "description": "Warning: this is only an example and can be different for each effect",
- "ledgerTransactionId": "937445"
}
}
], - "state": {
- "ledgerBalances": [
- {
- "currentBalance": 13321000,
- "endingBalance": 14021000,
- "isDefaultAccount": false,
- "ledgerAccountName": "Spend Account",
- "ledgerKey": "string",
- "ledgerAccountKey": "string",
- "ledgerWalletKey": "string"
}
]
}, - "organizationKey": "org_01JG29AJQAQ3NB706GFCHS91H5",
- "status": "ok"
}
], - "executionMode": "full",
- "dryRun": false
}{- "results": [
- {
- "name": "string",
- "apiCode": "string",
- "customAttributes": { },
- "description": "string",
- "active": true,
- "isCustomType": true,
- "schemaType": "builtin"
}
]
}| page | number >= 0 Example: page=0 The page number for pagination |
| limit | number [ 1 .. 25 ] Example: limit=10 The limit of items to return per page |
| order | string Order of columns in result in the format 'column,asc|desc?'. Samples: ?order=col1 or ?order=col1,asc |
{- "totalCount": 0,
- "page": 0,
- "limit": 0,
- "results": [
- {
- "organizationId": 0,
- "name": "string",
- "apiCode": "string",
- "customAttributes": { },
- "description": "string",
- "active": true,
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z",
- "schemaType": "builtin"
}
]
}| name required | string |
| customAttributes | object |
| description | string |
| active | boolean |
| schemaType required | string Enum: "builtin" "string" "number" "url" "custom" The type of schema that this event type uses. |
| apiCode required | string [ 1 .. 255 ] characters /^[a-z0-9\-_.]+$/ Unique identifier within the organization. Must be non-empty and contain only lowercase alphanumeric characters, hyphens, underscores, and periods. |
{- "name": "string",
- "customAttributes": { },
- "description": "string",
- "active": true,
- "schemaType": "builtin",
- "apiCode": "app-install"
}{- "eventType": {
- "organizationId": 0,
- "name": "string",
- "apiCode": "string",
- "customAttributes": { },
- "description": "string",
- "active": true,
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z",
- "schemaType": "builtin"
}
}| apiCode required | string |
{- "eventType": {
- "organizationId": 0,
- "name": "string",
- "apiCode": "string",
- "customAttributes": { },
- "description": "string",
- "active": true,
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z",
- "schemaType": "builtin"
}
}| apiCode required | string |
| name | string |
| customAttributes | object |
| description | string |
| active | boolean |
| schemaType | string Enum: "builtin" "string" "number" "url" "custom" The type of schema that this event type uses. |
{- "name": "string",
- "customAttributes": { },
- "description": "string",
- "active": true,
- "schemaType": "builtin"
}{- "eventType": {
- "organizationId": 0,
- "name": "string",
- "apiCode": "string",
- "customAttributes": { },
- "description": "string",
- "active": true,
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z",
- "schemaType": "builtin"
}
}| loyaltyMemberId required | string |
| amount required | number >= 1 The amount of points to mint |
| systemUniqueKey | string <= 255 characters The system unique key for the loyalty program |
| externalEventDate | string <date-time> The date of the external event |
| description | string <= 255 characters The description of the external event |
| tags | Array of strings Optional tags for the event |
| fiatValue | number Fiat value associated with the transaction |
| fiatGrossAmount | number Fiat gross amount associated with the transaction |
| fiatCurrency | string <= 10 characters Fiat currency code (e.g. USD, EUR) |
| force | boolean If true, bypasses the inactive-member validation and allows minting/burning on a member whose organization-association is |
{- "amount": 1,
- "systemUniqueKey": "string",
- "externalEventDate": "2019-08-24T14:15:22Z",
- "description": "string",
- "tags": [
- "string"
], - "fiatValue": 0,
- "fiatGrossAmount": 0,
- "fiatCurrency": "string",
- "force": false
}{- "result": {
- "ledgerTransactionId": "string",
- "ledgerAccountKey": "string",
- "updatedBalance": 0,
- "status": 0
}
}| loyaltyMemberId required | string |
| toLoyaltyMemberId required | string >= 2 characters The loyalty member ID to transfer points to |
| amount required | number >= 1 The amount of points to transfer |
| systemUniqueKey | string <= 255 characters The system unique key for the loyalty program |
| externalEventDate | string <date-time> The date of the external event |
| description | string <= 255 characters The description of the external event |
| tags | Array of strings Optional tags for the event |
| fiatValue | number Fiat value associated with the transaction |
| fiatGrossAmount | number Fiat gross amount associated with the transaction |
| fiatCurrency | string <= 10 characters Fiat currency code (e.g. USD, EUR) |
{- "toLoyaltyMemberId": "string",
- "amount": 1,
- "systemUniqueKey": "string",
- "externalEventDate": "2019-08-24T14:15:22Z",
- "description": "string",
- "tags": [
- "string"
], - "fiatValue": 0,
- "fiatGrossAmount": 0,
- "fiatCurrency": "string"
}{- "result": {
- "ledgerTransactionId": "string",
- "ledgerAccountKey": "string",
- "updatedBalance": 0,
- "status": 0
}
}| loyaltyMemberId required | string |
| amount required | number >= 1 The amount of points to mint |
| systemUniqueKey | string <= 255 characters The system unique key for the loyalty program |
| externalEventDate | string <date-time> The date of the external event |
| description | string <= 255 characters The description of the external event |
| tags | Array of strings Optional tags for the event |
| fiatValue | number Fiat value associated with the transaction |
| fiatGrossAmount | number Fiat gross amount associated with the transaction |
| fiatCurrency | string <= 10 characters Fiat currency code (e.g. USD, EUR) |
| force | boolean If true, bypasses the inactive-member validation and allows minting/burning on a member whose organization-association is |
| captureMethod | string Enum: "manual" "auto" The capture method: manual or auto. Default is auto |
{- "amount": 1,
- "systemUniqueKey": "string",
- "externalEventDate": "2019-08-24T14:15:22Z",
- "description": "string",
- "tags": [
- "string"
], - "fiatValue": 0,
- "fiatGrossAmount": 0,
- "fiatCurrency": "string",
- "force": false,
- "captureMethod": "auto"
}{- "result": {
- "ledgerTransactionId": "string",
- "ledgerAccountKey": "string",
- "updatedBalance": 0,
- "status": 0
}
}Capture loyalty points from default account. Points must have been burned with captureMethod = manual
required | Array of objects (TransactionCaptureDto) The transactions to capture | ||||
Array
| |||||
{- "transactions": [
- {
- "captureAmount": 100,
- "ledgerTransactionId": "string"
}
]
}{- "ok": true
}Revert loyalty points from default account. Can only revert debit transactions and batch is processed as an atomic set.
required | Array of objects (RevertLoyaltyPointsDto) The transactions to revert | ||||||||||
Array
| |||||||||||
{- "transactions": [
- {
- "ledgerTransactionId": "string",
- "systemUniqueKey": "string",
- "externalEventDate": "2019-08-24T14:15:22Z",
- "description": "string",
- "tags": [
- "string"
]
}
]
}{- "results": [
- {
- "ledgerTransactionId": "string",
- "ledgerAccountKey": "string",
- "updatedBalance": 0,
- "status": 0
}
]
}Get all member transactions
| loyaltyMemberId required | string |
| page | number >= 0 Example: page=0 The page number for pagination |
| limit | number [ 1 .. 25 ] Example: limit=10 The limit of items to return per page |
| order | string Order of columns in result in the format 'column,asc|desc?'. Samples: ?order=col1 or ?order=col1,asc |
| fromDate | string <date-time> Optional Reference From Event Date |
| toDate | string <date-time> Optional Reference To Event Date |
curl -X 'GET' \ 'https://api.sandbox.qurable.io/v2/members/{loyaltyMemberId}/points/txs?page=0&limit=10' \ -H 'accept: application/json' \ -H 'Authorization: Bearer {YOUR_TOKEN}'
{- "totalCount": 0,
- "page": 0,
- "limit": 0,
- "results": [
- {
- "ledgerTransactionId": 1,
- "revertedLedgerTransactionId": 1,
- "ledgerAccountKey": "string",
- "transactionType": 2,
- "status": 0,
- "amount": 0,
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z",
- "externalEventDate": "2019-08-24T14:15:22Z",
- "systemUniqueKey": "string",
- "externalId": "string",
- "description": "string",
- "walletKey": "string",
- "fromWalletKey": "string",
- "toWalletKey": "string",
- "updatedBalance": 0,
- "tags": [
- "string"
]
}
]
}| loyaltyMemberId required | string |
| amount required | number >= 1 The amount of points to mint |
| systemUniqueKey | string <= 255 characters The system unique key for the loyalty program |
| externalEventDate | string <date-time> The date of the external event |
| description | string <= 255 characters The description of the external event |
| tags | Array of strings Optional tags for the event |
| fiatValue | number Fiat value associated with the transaction |
| fiatGrossAmount | number Fiat gross amount associated with the transaction |
| fiatCurrency | string <= 10 characters Fiat currency code (e.g. USD, EUR) |
| force | boolean If true, bypasses the inactive-member validation and allows minting/burning on a member whose organization-association is |
{- "amount": 1,
- "systemUniqueKey": "string",
- "externalEventDate": "2019-08-24T14:15:22Z",
- "description": "string",
- "tags": [
- "string"
], - "fiatValue": 0,
- "fiatGrossAmount": 0,
- "fiatCurrency": "string",
- "force": false
}{- "result": {
- "ledgerTransactionId": "string",
- "ledgerAccountKey": "string",
- "updatedBalance": 0,
- "status": 0
}
}| loyaltyMemberId required | string |
| amount required | number >= 1 The amount of points to mint |
| systemUniqueKey | string <= 255 characters The system unique key for the loyalty program |
| externalEventDate | string <date-time> The date of the external event |
| description | string <= 255 characters The description of the external event |
| tags | Array of strings Optional tags for the event |
| fiatValue | number Fiat value associated with the transaction |
| fiatGrossAmount | number Fiat gross amount associated with the transaction |
| fiatCurrency | string <= 10 characters Fiat currency code (e.g. USD, EUR) |
| force | boolean If true, bypasses the inactive-member validation and allows minting/burning on a member whose organization-association is |
| captureMethod | string Enum: "manual" "auto" The capture method: manual or auto. Default is auto |
{- "amount": 1,
- "systemUniqueKey": "string",
- "externalEventDate": "2019-08-24T14:15:22Z",
- "description": "string",
- "tags": [
- "string"
], - "fiatValue": 0,
- "fiatGrossAmount": 0,
- "fiatCurrency": "string",
- "force": false,
- "captureMethod": "auto"
}{- "result": {
- "ledgerTransactionId": "string",
- "ledgerAccountKey": "string",
- "updatedBalance": 0,
- "status": 0
}
}Get all member cashback transactions
| loyaltyMemberId required | string |
| page | number >= 0 Example: page=0 The page number for pagination |
| limit | number [ 1 .. 25 ] Example: limit=10 The limit of items to return per page |
| order | string Order of columns in result in the format 'column,asc|desc?'. Samples: ?order=col1 or ?order=col1,asc |
| fromDate | string <date-time> Optional Reference From Event Date |
| toDate | string <date-time> Optional Reference To Event Date |
{- "totalCount": 0,
- "page": 0,
- "limit": 0,
- "results": [
- {
- "ledgerTransactionId": 1,
- "revertedLedgerTransactionId": 1,
- "ledgerAccountKey": "string",
- "transactionType": 2,
- "status": 0,
- "amount": 0,
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z",
- "externalEventDate": "2019-08-24T14:15:22Z",
- "systemUniqueKey": "string",
- "externalId": "string",
- "description": "string",
- "walletKey": "string",
- "fromWalletKey": "string",
- "toWalletKey": "string",
- "updatedBalance": 0,
- "tags": [
- "string"
]
}
]
}Capture loyalty points from specified account. Points must have been burned with captureMethod = manual
| accountKeyOrAlias required | string |
required | Array of objects (TransactionCaptureDto) The transactions to capture | ||||
Array
| |||||
{- "transactions": [
- {
- "captureAmount": 100,
- "ledgerTransactionId": "string"
}
]
}{- "ok": true
}Revert loyalty points from specified account. Can only revert debit transactions and batch is processed as an atomic set.
| accountKeyOrAlias required | string |
required | Array of objects (RevertLoyaltyPointsDto) The transactions to revert | ||||||||||
Array
| |||||||||||
{- "transactions": [
- {
- "ledgerTransactionId": "string",
- "systemUniqueKey": "string",
- "externalEventDate": "2019-08-24T14:15:22Z",
- "description": "string",
- "tags": [
- "string"
]
}
]
}{- "results": [
- {
- "ledgerTransactionId": "string",
- "ledgerAccountKey": "string",
- "updatedBalance": 0,
- "status": 0
}
]
}| page | number >= 0 Example: page=0 The page number for pagination |
| limit | number [ 1 .. 25 ] Example: limit=10 The limit of items to return per page |
| order | string Order of columns in result in the format 'column,asc|desc?'. Samples: ?order=col1 or ?order=col1,asc |
{- "totalCount": 0,
- "page": 0,
- "limit": 0,
- "results": [
- {
- "referralProgramKey": "string",
- "campaignKey": "string",
- "name": "string",
- "description": "string",
- "maxReferralsPerMember": 1,
- "pictureUrl": "string",
- "customAttributes": { },
- "active": true,
- "tags": [
- "string"
], - "code": "string",
- "eventType": "string",
- "referrerPointsAccrual": 0,
- "referredPointsAccrual": 0,
- "validFromDate": "2019-08-24T14:15:22Z",
- "validToDate": "2019-08-24T14:15:22Z",
- "maxPerCode": 1,
- "maxRedeemsPerReferredMemberPerCode": 1,
- "totalCodes": 0,
- "totalLogs": 0,
- "referrerLedgerKey": "string",
- "referrerLedgerAccountKey": "string",
- "referredLedgerKey": "string",
- "referredLedgerAccountKey": "string",
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z"
}
]
}| loyaltyProgramKey | string <= 255 characters Loyalty program key |
| name required | string <= 255 characters Name of the referral program |
| description | string <= 255 characters Description |
| pictureUrl | string <= 255 characters Picture URL |
| customAttributes | object Custom attributes |
| active required | boolean Whether the program is active |
| tags | Array of strings Tags |
| code required | string <= 255 characters Unique code for the campaign |
| eventType required | string <= 255 characters Event type that triggers the referral |
| referrerPointsAccrual | number >= 0 Points accrual for the referrer |
| referrerLedgerKey | string <= 255 characters Ledger key for the referrer reward |
| referrerLedgerAccountKey | string <= 255 characters Ledger account key for the referrer reward |
| referrerCouponBookKey | string <= 255 characters Coupon book key for the referrer reward |
| referredCount | number >= 1 Number of referred members required before the referrer is rewarded |
| referredPointsAccrual | number >= 0 Points accrual for the referred member |
| referredLedgerKey | string <= 255 characters Ledger key for the referred member reward |
| referredLedgerAccountKey | string <= 255 characters Ledger account key for the referred member reward |
| referredCouponBookKey | string <= 255 characters Coupon book key for the referred member reward |
| validFromDate | string <date-time> Valid from date |
| validToDate | string <date-time> Valid to date |
| maxPerCode required | number >= 1 Maximum number of times a code can be used |
| maxReferralsPerMember | number >= 1 Maximum referrals per member |
| maxRedeemsPerReferredMemberPerCode | number >= 1 Maximum times a referred member can redeem codes from this program |
{- "loyaltyProgramKey": "string",
- "name": "string",
- "description": "string",
- "pictureUrl": "string",
- "customAttributes": { },
- "active": true,
- "tags": [
- "string"
], - "code": "string",
- "eventType": "string",
- "referrerPointsAccrual": 0,
- "referrerLedgerKey": "string",
- "referrerLedgerAccountKey": "string",
- "referrerCouponBookKey": "string",
- "referredCount": 1,
- "referredPointsAccrual": 0,
- "referredLedgerKey": "string",
- "referredLedgerAccountKey": "string",
- "referredCouponBookKey": "string",
- "validFromDate": "2019-08-24T14:15:22Z",
- "validToDate": "2019-08-24T14:15:22Z",
- "maxPerCode": 1,
- "maxReferralsPerMember": 1,
- "maxRedeemsPerReferredMemberPerCode": 1
}{- "referralProgram": {
- "referralProgramKey": "string",
- "campaignKey": "string",
- "name": "string",
- "description": "string",
- "maxReferralsPerMember": 1,
- "pictureUrl": "string",
- "customAttributes": { },
- "active": true,
- "tags": [
- "string"
], - "code": "string",
- "eventType": "string",
- "referrerPointsAccrual": 0,
- "referredPointsAccrual": 0,
- "validFromDate": "2019-08-24T14:15:22Z",
- "validToDate": "2019-08-24T14:15:22Z",
- "maxPerCode": 1,
- "maxRedeemsPerReferredMemberPerCode": 1,
- "totalCodes": 0,
- "totalLogs": 0,
- "referrerLedgerKey": "string",
- "referrerLedgerAccountKey": "string",
- "referredLedgerKey": "string",
- "referredLedgerAccountKey": "string",
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z"
}
}| referralProgramKey required | string |
{- "referralProgram": {
- "referralProgramKey": "string",
- "campaignKey": "string",
- "name": "string",
- "description": "string",
- "maxReferralsPerMember": 1,
- "pictureUrl": "string",
- "customAttributes": { },
- "active": true,
- "tags": [
- "string"
], - "code": "string",
- "eventType": "string",
- "referrerPointsAccrual": 0,
- "referredPointsAccrual": 0,
- "validFromDate": "2019-08-24T14:15:22Z",
- "validToDate": "2019-08-24T14:15:22Z",
- "maxPerCode": 1,
- "maxRedeemsPerReferredMemberPerCode": 1,
- "totalCodes": 0,
- "totalLogs": 0,
- "referrerLedgerKey": "string",
- "referrerLedgerAccountKey": "string",
- "referredLedgerKey": "string",
- "referredLedgerAccountKey": "string",
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z"
}
}| referralProgramKey required | string |
| loyaltyProgramKey | string <= 255 characters Loyalty program key |
| name required | string <= 255 characters Name of the referral program |
| description | string <= 255 characters Description |
| pictureUrl | string <= 255 characters Picture URL |
| customAttributes | object Custom attributes |
| active required | boolean Whether the program is active |
| tags | Array of strings Tags |
| code required | string <= 255 characters Unique code for the campaign |
| eventType required | string <= 255 characters Event type that triggers the referral |
| referrerPointsAccrual | number >= 0 Points accrual for the referrer |
| referrerLedgerKey | string <= 255 characters Ledger key for the referrer reward |
| referrerLedgerAccountKey | string <= 255 characters Ledger account key for the referrer reward |
| referrerCouponBookKey | string <= 255 characters Coupon book key for the referrer reward |
| referredCount | number >= 1 Number of referred members required before the referrer is rewarded |
| referredPointsAccrual | number >= 0 Points accrual for the referred member |
| referredLedgerKey | string <= 255 characters Ledger key for the referred member reward |
| referredLedgerAccountKey | string <= 255 characters Ledger account key for the referred member reward |
| referredCouponBookKey | string <= 255 characters Coupon book key for the referred member reward |
| validFromDate | string <date-time> Valid from date |
| validToDate | string <date-time> Valid to date |
| maxPerCode required | number >= 1 Maximum number of times a code can be used |
| maxReferralsPerMember | number >= 1 Maximum referrals per member |
| maxRedeemsPerReferredMemberPerCode | number >= 1 Maximum times a referred member can redeem codes from this program |
{- "loyaltyProgramKey": "string",
- "name": "string",
- "description": "string",
- "pictureUrl": "string",
- "customAttributes": { },
- "active": true,
- "tags": [
- "string"
], - "code": "string",
- "eventType": "string",
- "referrerPointsAccrual": 0,
- "referrerLedgerKey": "string",
- "referrerLedgerAccountKey": "string",
- "referrerCouponBookKey": "string",
- "referredCount": 1,
- "referredPointsAccrual": 0,
- "referredLedgerKey": "string",
- "referredLedgerAccountKey": "string",
- "referredCouponBookKey": "string",
- "validFromDate": "2019-08-24T14:15:22Z",
- "validToDate": "2019-08-24T14:15:22Z",
- "maxPerCode": 1,
- "maxReferralsPerMember": 1,
- "maxRedeemsPerReferredMemberPerCode": 1
}{- "referralProgram": {
- "referralProgramKey": "string",
- "campaignKey": "string",
- "name": "string",
- "description": "string",
- "maxReferralsPerMember": 1,
- "pictureUrl": "string",
- "customAttributes": { },
- "active": true,
- "tags": [
- "string"
], - "code": "string",
- "eventType": "string",
- "referrerPointsAccrual": 0,
- "referredPointsAccrual": 0,
- "validFromDate": "2019-08-24T14:15:22Z",
- "validToDate": "2019-08-24T14:15:22Z",
- "maxPerCode": 1,
- "maxRedeemsPerReferredMemberPerCode": 1,
- "totalCodes": 0,
- "totalLogs": 0,
- "referrerLedgerKey": "string",
- "referrerLedgerAccountKey": "string",
- "referredLedgerKey": "string",
- "referredLedgerAccountKey": "string",
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z"
}
}Create a new referral code for a given loyalty member
| referralProgramKey required | string |
| codes required | Array of strings[ items <= 255 characters ] The codes to be created |
| loyaltyMemberId required | string <= 255 characters The loyalty member to be associated with the code |
{- "codes": [
- "string"
], - "loyaltyMemberId": "string"
}{- "codes": [
- {
- "loyaltyMemberId": "string",
- "code": "string",
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z"
}
]
}Optionally filter by loyalty member id
| referralProgramKey required | string |
| page | number >= 0 Example: page=0 The page number for pagination |
| limit | number [ 1 .. 25 ] Example: limit=10 The limit of items to return per page |
| order | string Order of columns in result in the format 'column,asc|desc?'. Samples: ?order=col1 or ?order=col1,asc |
| loyaltyMemberId | string <= 255 characters Filter codes by loyalty member id |
{- "totalCount": 0,
- "page": 0,
- "limit": 0,
- "results": [
- {
- "loyaltyMemberId": "string",
- "code": "string",
- "totalUsages": 0,
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z"
}
]
}Returns up to 50 referral codes owned by the given member. Used by dry-run testers to pre-populate the referral code field.
| referralProgramKey required | string |
| loyaltyMemberId required | string |
{- "codes": [
- "string"
]
}| referralProgramKey required | string |
| code required | string |
| page | number >= 0 Example: page=0 The page number for pagination |
| limit | number [ 1 .. 25 ] Example: limit=10 The limit of items to return per page |
| order | string Order of columns in result in the format 'column,asc|desc?'. Samples: ?order=col1 or ?order=col1,asc |
{- "totalCount": 0,
- "page": 0,
- "limit": 0,
- "results": [
- {
- "loyaltyMemberId": "string",
- "customAttributes": { },
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z"
}
]
}Check if a referral code exists and has usages left
| referralProgramKey required | string |
| code required | string |
{- "isValid": true,
- "code": "string",
- "totalUsages": 0,
- "maxUsages": 0,
- "usagesLeft": 0,
- "reason": "string"
}| referralProgramKey required | string |
| page | number >= 0 Example: page=0 The page number for pagination |
| limit | number [ 1 .. 25 ] Example: limit=10 The limit of items to return per page |
| order | string Order of columns in result in the format 'column,asc|desc?'. Samples: ?order=col1 or ?order=col1,asc |
{- "totalCount": 0,
- "page": 0,
- "limit": 0,
- "results": [
- {
- "loyaltyMemberId": "string",
- "name": "string",
- "email": "string",
- "invites": 0,
- "acceptedInvites": 0,
- "pointsAccumulated": 0
}
]
}| page | number >= 0 Example: page=0 The page number for pagination |
| limit | number [ 1 .. 25 ] Example: limit=10 The limit of items to return per page |
| order | string Order of columns in result in the format 'column,asc|desc?'. Samples: ?order=col1 or ?order=col1,asc |
| type | string |
| codes | string |
| tags | string |
| loyaltyProgramKey | string |
curl -X 'GET' \ 'https://api.sandbox.qurable.io/v2/missions?page=0&limit=10' \ -H 'accept: application/json' \ -H 'Authorization: Bearer {YOUR_TOKEN}'
{- "totalCount": 0,
- "page": 0,
- "limit": 0,
- "results": [
- {
- "missionKey": "string",
- "campaignKey": "string",
- "organizationKey": "string",
- "loyaltyProgramKey": "string",
- "name": "string",
- "description": "string",
- "shortDescription": "string",
- "pictureUrl": "string",
- "customAttributes": { },
- "type": "string",
- "tags": [
- "string"
], - "code": "string",
- "eventType": "string",
- "active": true,
- "validFrom": "2019-08-24T14:15:22Z",
- "validTo": "2019-08-24T14:15:22Z",
- "maxRepetitions": 0,
- "goalCount": 0,
- "pointsAccrual": 0,
- "ledgerKey": "string",
- "ledgerAccountKey": "string",
- "matcherKey": "string",
- "couponBookKey": "string",
- "badgeKey": "string",
- "ledgerTransactionDescription": "string",
- "inlineMatcher": { },
- "badgeMatcher": { },
- "minSpendValue": 0,
- "manualExpiration": { },
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z"
}
]
}| name required | string |
| shortDescription | string |
| description | string |
| pictureUrl | string |
| customAttributes | object |
| type | string |
| tags | Array of strings |
| code required | string |
| active | boolean |
| validFrom | string <date-time> |
| validTo | string <date-time> |
| repetitionPeriod | string |
| periodLimit | number |
| pointsAccrual | number |
| couponBookKey | string |
| badgeKey | string Badge key to assign to the member when the mission is achieved |
| ledgerTransactionDescription | string Custom ledger transaction description used when mission accrues points |
Array of strings or InlineMatcherDto (object) Inline matcher. Can be a simple array of category codes (e.g. ['bebidas', 'snacks']) which means at least 1 of each (AND), or a full object with operator and conditions. Cannot be used together with matcherId. | |
object Badge matcher. Only supported for badge-assigned / badge-unassigned event types. Defines badge balance conditions combined with AND/OR. Cannot be used together with matcherId or inlineMatcher. | |
| minSpendValue | number >= 0 Minimum order total (payload.total) required for an event to count towards mission progress. Only supported for purchase-order and member-payment-confirmed event types. Matches the |
object Optional manual expiration applied to every mint produced by the mission's points reward. Same shape and semantics as the campaign-level manualExpiration: | |
| eventType required | string <= 255 characters Event Type to match. Accepts built-in event types (e.g. member-purchase-order-confirmed) and organization-scoped custom event apiCodes. |
| maxRepetitions required | number >= 1 Max number of repetitions |
| goalCount required | number >= 1 Goal count |
| loyaltyProgramKey required | string |
| matcherKey | string |
| ledgerKey | string |
| ledgerAccountKey | string |
{- "name": "string",
- "shortDescription": "string",
- "description": "string",
- "pictureUrl": "string",
- "customAttributes": { },
- "type": "string",
- "tags": [
- "string"
], - "code": "string",
- "active": true,
- "validFrom": "2019-08-24T14:15:22Z",
- "validTo": "2019-08-24T14:15:22Z",
- "repetitionPeriod": "string",
- "periodLimit": 0,
- "pointsAccrual": 0,
- "couponBookKey": "string",
- "badgeKey": "string",
- "ledgerTransactionDescription": "string",
- "inlineMatcher": [
- "string"
], - "badgeMatcher": {
- "operator": "AND",
- "conditions": [
- {
- "badgeKey": "string",
- "value": 0,
- "operator": "="
}
]
}, - "minSpendValue": 50,
- "manualExpiration": {
- "value": 30,
- "unit": "days"
}, - "eventType": "member-purchase-order-confirmed",
- "maxRepetitions": 10,
- "goalCount": 3,
- "loyaltyProgramKey": "string",
- "matcherKey": "string",
- "ledgerKey": "string",
- "ledgerAccountKey": "string"
}{- "mission": {
- "missionKey": "string",
- "campaignKey": "string",
- "organizationKey": "string",
- "loyaltyProgramKey": "string",
- "name": "string",
- "description": "string",
- "shortDescription": "string",
- "pictureUrl": "string",
- "customAttributes": { },
- "type": "string",
- "tags": [
- "string"
], - "code": "string",
- "eventType": "string",
- "active": true,
- "validFrom": "2019-08-24T14:15:22Z",
- "validTo": "2019-08-24T14:15:22Z",
- "maxRepetitions": 0,
- "goalCount": 0,
- "pointsAccrual": 0,
- "ledgerKey": "string",
- "ledgerAccountKey": "string",
- "matcherKey": "string",
- "couponBookKey": "string",
- "badgeKey": "string",
- "ledgerTransactionDescription": "string",
- "inlineMatcher": { },
- "badgeMatcher": { },
- "minSpendValue": 0,
- "manualExpiration": { },
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z"
}
}curl -X 'GET' \ 'https://api.sandbox.qurable.io/v2/missions/{missionKey}' \ -H 'accept: application/json' \ -H 'Authorization: Bearer {YOUR_TOKEN}'
{- "mission": {
- "missionKey": "string",
- "campaignKey": "string",
- "organizationKey": "string",
- "loyaltyProgramKey": "string",
- "name": "string",
- "description": "string",
- "shortDescription": "string",
- "pictureUrl": "string",
- "customAttributes": { },
- "type": "string",
- "tags": [
- "string"
], - "code": "string",
- "eventType": "string",
- "active": true,
- "validFrom": "2019-08-24T14:15:22Z",
- "validTo": "2019-08-24T14:15:22Z",
- "maxRepetitions": 0,
- "goalCount": 0,
- "pointsAccrual": 0,
- "ledgerKey": "string",
- "ledgerAccountKey": "string",
- "matcherKey": "string",
- "couponBookKey": "string",
- "badgeKey": "string",
- "ledgerTransactionDescription": "string",
- "inlineMatcher": { },
- "badgeMatcher": { },
- "minSpendValue": 0,
- "manualExpiration": { },
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z"
}
}| missionKey required | string |
| name required | string |
| shortDescription | string |
| description | string |
| pictureUrl | string |
| customAttributes | object |
| type | string |
| tags | Array of strings |
| code required | string |
| active | boolean |
| validFrom | string <date-time> |
| validTo | string <date-time> |
| pointsAccrual | number |
| couponBookKey | string |
| badgeKey | string Badge key to assign to the member when the mission is achieved |
| ledgerTransactionDescription | string Custom ledger transaction description used when mission accrues points |
Array of strings or InlineMatcherDto (object) Inline matcher. Can be a simple array of category codes (e.g. ['bebidas', 'snacks']) which means at least 1 of each (AND), or a full object with operator and conditions. Cannot be used together with matcherId. | |
object Badge matcher. Only supported for badge-assigned / badge-unassigned event types. Defines badge balance conditions combined with AND/OR. Cannot be used together with matcherId or inlineMatcher. | |
| minSpendValue | number >= 0 Minimum order total (payload.total) required for an event to count towards mission progress. Only supported for purchase-order and member-payment-confirmed event types. Matches the |
object Optional manual expiration applied to every mint produced by the mission's points reward. Same shape and semantics as the campaign-level manualExpiration: | |
| eventType required | string <= 255 characters Event Type to match. Accepts built-in event types (e.g. member-purchase-order-confirmed) and organization-scoped custom event apiCodes. |
| maxRepetitions required | number >= 1 Max number of repetitions |
| goalCount required | number >= 1 Goal count |
| loyaltyProgramKey required | string |
| matcherKey | string |
| ledgerKey | string |
| ledgerAccountKey | string |
{- "name": "string",
- "shortDescription": "string",
- "description": "string",
- "pictureUrl": "string",
- "customAttributes": { },
- "type": "string",
- "tags": [
- "string"
], - "code": "string",
- "active": true,
- "validFrom": "2019-08-24T14:15:22Z",
- "validTo": "2019-08-24T14:15:22Z",
- "pointsAccrual": 0,
- "couponBookKey": "string",
- "badgeKey": "string",
- "ledgerTransactionDescription": "string",
- "inlineMatcher": [
- "string"
], - "badgeMatcher": {
- "operator": "AND",
- "conditions": [
- {
- "badgeKey": "string",
- "value": 0,
- "operator": "="
}
]
}, - "minSpendValue": 50,
- "manualExpiration": {
- "value": 30,
- "unit": "days"
}, - "eventType": "member-purchase-order-confirmed",
- "maxRepetitions": 10,
- "goalCount": 3,
- "loyaltyProgramKey": "string",
- "matcherKey": "string",
- "ledgerKey": "string",
- "ledgerAccountKey": "string"
}{- "mission": {
- "missionKey": "string",
- "campaignKey": "string",
- "organizationKey": "string",
- "loyaltyProgramKey": "string",
- "name": "string",
- "description": "string",
- "shortDescription": "string",
- "pictureUrl": "string",
- "customAttributes": { },
- "type": "string",
- "tags": [
- "string"
], - "code": "string",
- "eventType": "string",
- "active": true,
- "validFrom": "2019-08-24T14:15:22Z",
- "validTo": "2019-08-24T14:15:22Z",
- "maxRepetitions": 0,
- "goalCount": 0,
- "pointsAccrual": 0,
- "ledgerKey": "string",
- "ledgerAccountKey": "string",
- "matcherKey": "string",
- "couponBookKey": "string",
- "badgeKey": "string",
- "ledgerTransactionDescription": "string",
- "inlineMatcher": { },
- "badgeMatcher": { },
- "minSpendValue": 0,
- "manualExpiration": { },
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z"
}
}| loyaltyMemberId required | string |
| page | number >= 0 Example: page=0 The page number for pagination |
| limit | number [ 1 .. 25 ] Example: limit=10 The limit of items to return per page |
| order | string Order of columns in result in the format 'column,asc|desc?'. Samples: ?order=col1 or ?order=col1,asc |
| type | string |
| codes | string |
| tags | string |
| minTimesAchieved | number >= 0 Min number of times it has been achieved |
| minCounterCount | number >= 0 Min number of times the event has been triggered |
| available | boolean Filter available missions |
| inProgress | boolean If member started the mission but has not achieved it yet (even if she completed it in the past) |
| active | boolean Filter missions with active status |
| validFrom | string <date-time> Filter missions with valid from date |
| validTo | string <date-time> Filter missions with valid to date |
| missionKey | string |
| loyaltyProgramKey | string |
curl -X 'GET' \ 'https://api.sandbox.qurable.io/v2/members/{loyaltyMemberId}/missions?page=0&limit=10' \ -H 'accept: application/json' \ -H 'Authorization: Bearer {YOUR_TOKEN}'
{- "totalCount": 0,
- "page": 0,
- "limit": 0,
- "results": [
- {
- "missionKey": "string",
- "campaignKey": "string",
- "organizationKey": "string",
- "loyaltyProgramKey": "string",
- "name": "string",
- "description": "string",
- "shortDescription": "string",
- "pictureUrl": "string",
- "customAttributes": { },
- "type": "string",
- "tags": [
- "string"
], - "code": "string",
- "eventType": "string",
- "active": true,
- "validFrom": "2019-08-24T14:15:22Z",
- "validTo": "2019-08-24T14:15:22Z",
- "maxRepetitions": 0,
- "goalCount": 0,
- "pointsAccrual": 0,
- "ledgerKey": "string",
- "ledgerAccountKey": "string",
- "matcherKey": "string",
- "couponBookKey": "string",
- "badgeKey": "string",
- "ledgerTransactionDescription": "string",
- "inlineMatcher": { },
- "badgeMatcher": { },
- "minSpendValue": 0,
- "manualExpiration": { },
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z",
- "balance": {
- "timesAchieved": 0,
- "lastCounterCountWhenAchieved": 0,
- "currentCounterCount": 0,
- "lastAchievedAt": "2019-08-24T14:15:22Z"
}, - "badges": [
- {
- "badgeKey": "string",
- "name": "string",
- "description": "string",
- "pictureUrl": "string",
- "tags": [
- "string"
], - "customAttributes": { },
- "assignedBalance": 0,
- "maxAmount": 0
}
]
}
]
}| page | number >= 0 Example: page=0 The page number for pagination |
| limit | number [ 1 .. 25 ] Example: limit=10 The limit of items to return per page |
| order | string Order of columns in result in the format 'column,asc|desc?'. Samples: ?order=col1 or ?order=col1,asc |
| type | string |
| codes | string |
| tags | string |
| loyaltyProgramKey | string |
'https://api.sandbox.qurable.io/v2/campaigns?page=0&limit=10' \
-H 'accept: application/json' \
-H 'Authorization: Bearer {YOUR_TOKEN}'{- "totalCount": 0,
- "page": 0,
- "limit": 0,
- "results": [
- {
- "campaignKey": "string",
- "campaignVersionKey": "string",
- "organizationKey": "string",
- "loyaltyProgramKey": "string",
- "name": "string",
- "description": "string",
- "pictureUrl": "string",
- "customAttributes": { },
- "type": "string",
- "tags": [
- "string"
], - "enabledTopics": [
- "string"
], - "code": "string",
- "active": true,
- "audienceKeys": [
- "string"
], - "validFrom": "2019-08-24T14:15:22Z",
- "validTo": "2019-08-24T14:15:22Z",
- "pointsMonthlyLimitPerMember": 0,
- "allowPartialApplicationOnLimit": true,
- "maxTransactionsPerMember": 0,
- "limitRules": [
- {
- "scope": "member",
- "type": "transactions",
- "period": "monthly",
- "limit": 3
}
], - "daysOfWeek": [
- 0
], - "locationCodes": [
- "string"
], - "eventType": "string",
- "minSpendValue": 0,
- "loyaltyTierKeys": [
- "string"
], - "smartRewards": [
- { }
], - "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z",
- "actions": [
- {
- "actionKey": "string",
- "organizationKey": "string",
- "campaignKey": "string",
- "actionIndex": 0,
- "name": "string",
- "rules": { },
- "effects": [
- { }
], - "abortEvaluationIfFalse": true,
- "abortEvaluationOnError": true,
- "priority": 0,
- "exclusiveGroup": "string",
- "status": "string",
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z"
}
]
}
]
}| code required | string |
| active | boolean |
| name required | string |
| description | string |
| pictureUrl | string |
| type | string |
| tags | Array of strings |
| enabledTopics | Array of strings |
| audienceKeys | Array of strings |
| daysOfWeek | Array of strings |
| locationCodes | Array of strings |
| loyaltyTierKeys | Array of strings |
| eventType | string |
| pointsMonthlyLimitPerMember | number |
| allowPartialApplicationOnLimit | boolean |
| maxTransactionsPerMember | number |
Array of objects (CampaignLimitRuleDto) Unified campaign limit rules — one entry per | |
| minSpendValue | number |
| customAttributes | object |
| smartRewards | object |
| validFrom | string <date-time> |
| validTo | string <date-time> |
| loyaltyProgramKey | string |
Array of objects (CreateActionDto) |
{- "code": "string",
- "active": true,
- "name": "string",
- "description": "string",
- "pictureUrl": "string",
- "type": "string",
- "tags": [
- "string"
], - "enabledTopics": [
- "string"
], - "audienceKeys": [
- "string"
], - "daysOfWeek": [
- "string"
], - "locationCodes": [
- "string"
], - "loyaltyTierKeys": [
- "string"
], - "eventType": "string",
- "pointsMonthlyLimitPerMember": 0,
- "allowPartialApplicationOnLimit": true,
- "maxTransactionsPerMember": 0,
- "limitRules": [
- {
- "scope": "member",
- "type": "transactions",
- "period": "monthly",
- "limit": 3
}
], - "minSpendValue": 0,
- "customAttributes": { },
- "smartRewards": { },
- "validFrom": "2019-08-24T14:15:22Z",
- "validTo": "2019-08-24T14:15:22Z",
- "loyaltyProgramKey": "string",
- "actions": [
- {
- "campaignVersionId": 0,
- "actionIndex": 0,
- "abortEvaluationIfFalse": true,
- "abortEvaluationOnError": true,
- "name": "string",
- "rules": { },
- "effects": { },
- "status": "disabled",
- "priority": 0,
- "exclusiveGroup": "string"
}
]
}{- "campaign": {
- "campaignKey": "string",
- "campaignVersionKey": "string",
- "organizationKey": "string",
- "loyaltyProgramKey": "string",
- "name": "string",
- "description": "string",
- "pictureUrl": "string",
- "customAttributes": { },
- "type": "string",
- "tags": [
- "string"
], - "enabledTopics": [
- "string"
], - "code": "string",
- "active": true,
- "audienceKeys": [
- "string"
], - "validFrom": "2019-08-24T14:15:22Z",
- "validTo": "2019-08-24T14:15:22Z",
- "pointsMonthlyLimitPerMember": 0,
- "allowPartialApplicationOnLimit": true,
- "maxTransactionsPerMember": 0,
- "limitRules": [
- {
- "scope": "member",
- "type": "transactions",
- "period": "monthly",
- "limit": 3
}
], - "daysOfWeek": [
- 0
], - "locationCodes": [
- "string"
], - "eventType": "string",
- "minSpendValue": 0,
- "loyaltyTierKeys": [
- "string"
], - "smartRewards": [
- { }
], - "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z",
- "actions": [
- {
- "actionKey": "string",
- "organizationKey": "string",
- "campaignKey": "string",
- "actionIndex": 0,
- "name": "string",
- "rules": { },
- "effects": [
- { }
], - "abortEvaluationIfFalse": true,
- "abortEvaluationOnError": true,
- "priority": 0,
- "exclusiveGroup": "string",
- "status": "string",
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z"
}
]
}
}
curl -X 'GET' \
'https://api.sandbox.qurable.io/v2/campaigns/{campaignKey}' \
-H 'accept: application/json' \
-H 'Authorization: Bearer {YOUR_TOKEN}'{- "campaign": {
- "campaignKey": "string",
- "campaignVersionKey": "string",
- "organizationKey": "string",
- "loyaltyProgramKey": "string",
- "name": "string",
- "description": "string",
- "pictureUrl": "string",
- "customAttributes": { },
- "type": "string",
- "tags": [
- "string"
], - "enabledTopics": [
- "string"
], - "code": "string",
- "active": true,
- "audienceKeys": [
- "string"
], - "validFrom": "2019-08-24T14:15:22Z",
- "validTo": "2019-08-24T14:15:22Z",
- "pointsMonthlyLimitPerMember": 0,
- "allowPartialApplicationOnLimit": true,
- "maxTransactionsPerMember": 0,
- "limitRules": [
- {
- "scope": "member",
- "type": "transactions",
- "period": "monthly",
- "limit": 3
}
], - "daysOfWeek": [
- 0
], - "locationCodes": [
- "string"
], - "eventType": "string",
- "minSpendValue": 0,
- "loyaltyTierKeys": [
- "string"
], - "smartRewards": [
- { }
], - "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z",
- "actions": [
- {
- "actionKey": "string",
- "organizationKey": "string",
- "campaignKey": "string",
- "actionIndex": 0,
- "name": "string",
- "rules": { },
- "effects": [
- { }
], - "abortEvaluationIfFalse": true,
- "abortEvaluationOnError": true,
- "priority": 0,
- "exclusiveGroup": "string",
- "status": "string",
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z"
}
]
}
}| campaignKey required | string |
| code required | string |
| active | boolean |
| name required | string |
| description | string |
| pictureUrl | string |
| type | string |
| tags | Array of strings |
| enabledTopics | Array of strings |
| audienceKeys | Array of strings |
| daysOfWeek | Array of strings |
| locationCodes | Array of strings |
| loyaltyTierKeys | Array of strings |
| eventType | string |
| pointsMonthlyLimitPerMember | number |
| allowPartialApplicationOnLimit | boolean |
| maxTransactionsPerMember | number |
Array of objects (CampaignLimitRuleDto) Unified campaign limit rules — one entry per | |
| minSpendValue | number |
| customAttributes | object |
| smartRewards | object |
| validFrom | string <date-time> |
| validTo | string <date-time> |
Array of objects (UpdateActionWithKeyDtoV2) | |
| loyaltyProgramKey | string |
{- "code": "string",
- "active": true,
- "name": "string",
- "description": "string",
- "pictureUrl": "string",
- "type": "string",
- "tags": [
- "string"
], - "enabledTopics": [
- "string"
], - "audienceKeys": [
- "string"
], - "daysOfWeek": [
- "string"
], - "locationCodes": [
- "string"
], - "loyaltyTierKeys": [
- "string"
], - "eventType": "string",
- "pointsMonthlyLimitPerMember": 0,
- "allowPartialApplicationOnLimit": true,
- "maxTransactionsPerMember": 0,
- "limitRules": [
- {
- "scope": "member",
- "type": "transactions",
- "period": "monthly",
- "limit": 3
}
], - "minSpendValue": 0,
- "customAttributes": { },
- "smartRewards": { },
- "validFrom": "2019-08-24T14:15:22Z",
- "validTo": "2019-08-24T14:15:22Z",
- "actions": [
- {
- "campaignVersionId": 0,
- "actionIndex": 0,
- "abortEvaluationIfFalse": true,
- "abortEvaluationOnError": true,
- "name": "string",
- "rules": { },
- "effects": { },
- "status": "disabled",
- "priority": 0,
- "exclusiveGroup": "string",
- "actionKey": "string"
}
], - "loyaltyProgramKey": "string"
}{- "campaign": {
- "campaignKey": "string",
- "campaignVersionKey": "string",
- "organizationKey": "string",
- "loyaltyProgramKey": "string",
- "name": "string",
- "description": "string",
- "pictureUrl": "string",
- "customAttributes": { },
- "type": "string",
- "tags": [
- "string"
], - "enabledTopics": [
- "string"
], - "code": "string",
- "active": true,
- "audienceKeys": [
- "string"
], - "validFrom": "2019-08-24T14:15:22Z",
- "validTo": "2019-08-24T14:15:22Z",
- "pointsMonthlyLimitPerMember": 0,
- "allowPartialApplicationOnLimit": true,
- "maxTransactionsPerMember": 0,
- "limitRules": [
- {
- "scope": "member",
- "type": "transactions",
- "period": "monthly",
- "limit": 3
}
], - "daysOfWeek": [
- 0
], - "locationCodes": [
- "string"
], - "eventType": "string",
- "minSpendValue": 0,
- "loyaltyTierKeys": [
- "string"
], - "smartRewards": [
- { }
], - "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z",
- "actions": [
- {
- "actionKey": "string",
- "organizationKey": "string",
- "campaignKey": "string",
- "actionIndex": 0,
- "name": "string",
- "rules": { },
- "effects": [
- { }
], - "abortEvaluationIfFalse": true,
- "abortEvaluationOnError": true,
- "priority": 0,
- "exclusiveGroup": "string",
- "status": "string",
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z"
}
]
}
}| campaignKey required | string |
| page | number >= 0 Example: page=0 The page number for pagination |
| limit | number [ 1 .. 25 ] Example: limit=10 The limit of items to return per page |
| order | string Order of columns in result in the format 'column,asc|desc?'. Samples: ?order=col1 or ?order=col1,asc |
| status | string Enum: "disabled" "running" "draft" The status of the action |
| campaignKey | string |
curl -X GET "https://api.qurable.com/v2/campaigns/{campaignKey}/actions" \ -H "Authorization: Bearer YOUR_API_TOKEN" \ -H "Content-Type: application/json"
{- "totalCount": 0,
- "page": 0,
- "limit": 0,
- "results": [
- {
- "actionKey": "string",
- "organizationKey": "string",
- "campaignKey": "string",
- "actionIndex": 0,
- "name": "string",
- "rules": { },
- "effects": [
- { }
], - "abortEvaluationIfFalse": true,
- "abortEvaluationOnError": true,
- "priority": 0,
- "exclusiveGroup": "string",
- "status": "string",
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z"
}
]
}| campaignKey required | string |
| campaignVersionId | number |
| actionIndex | number |
| abortEvaluationIfFalse | boolean |
| abortEvaluationOnError | boolean |
| name required | string |
| rules | object |
| effects required | object |
| status required | string Enum: "disabled" "running" "draft" |
| priority required | number |
| exclusiveGroup | string |
{- "campaignVersionId": 0,
- "actionIndex": 0,
- "abortEvaluationIfFalse": true,
- "abortEvaluationOnError": true,
- "name": "string",
- "rules": { },
- "effects": { },
- "status": "disabled",
- "priority": 0,
- "exclusiveGroup": "string"
}{- "action": {
- "actionKey": "string",
- "organizationKey": "string",
- "campaignKey": "string",
- "actionIndex": 0,
- "name": "string",
- "rules": { },
- "effects": [
- { }
], - "abortEvaluationIfFalse": true,
- "abortEvaluationOnError": true,
- "priority": 0,
- "exclusiveGroup": "string",
- "status": "string",
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z"
}
}| campaignKey required | string |
| actionKey required | string |
curl -X GET "https://api.qurable.com/v2/campaigns/{campaignKey}/actions/{actionKey}" \ -H "Authorization: Bearer YOUR_API_TOKEN" \ -H "Content-Type: application/json"
{- "action": {
- "actionKey": "string",
- "organizationKey": "string",
- "campaignKey": "string",
- "actionIndex": 0,
- "name": "string",
- "rules": { },
- "effects": [
- { }
], - "abortEvaluationIfFalse": true,
- "abortEvaluationOnError": true,
- "priority": 0,
- "exclusiveGroup": "string",
- "status": "string",
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z"
}
}| campaignKey required | string |
| actionKey required | string |
| campaignVersionId | number |
| actionIndex | number |
| abortEvaluationIfFalse | boolean |
| abortEvaluationOnError | boolean |
| name required | string |
| rules | object |
| effects required | object |
| status required | string Enum: "disabled" "running" "draft" |
| priority required | number |
| exclusiveGroup | string |
{- "campaignVersionId": 0,
- "actionIndex": 0,
- "abortEvaluationIfFalse": true,
- "abortEvaluationOnError": true,
- "name": "string",
- "rules": { },
- "effects": { },
- "status": "disabled",
- "priority": 0,
- "exclusiveGroup": "string"
}{- "action": {
- "actionKey": "string",
- "organizationKey": "string",
- "campaignKey": "string",
- "actionIndex": 0,
- "name": "string",
- "rules": { },
- "effects": [
- { }
], - "abortEvaluationIfFalse": true,
- "abortEvaluationOnError": true,
- "priority": 0,
- "exclusiveGroup": "string",
- "status": "string",
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z"
}
}| type | string Value: "item-matcher" |
| page | number Default: 0 |
| limit | number Default: 10 |
curl -X 'GET' \
'https://api.sandbox.qurable.io/v2/action-matchers?page=0&limit=10' \
-H 'accept: application/json' \
-H 'Authorization: Bearer {YOUR_TOKEN}'{- "matchers": [
- {
- "organizationKey": "string",
- "name": "string",
- "matcherKey": "string",
- "type": "item-matcher",
- "matcher": { },
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z"
}
], - "totalCount": 0,
- "page": 0,
- "limit": 0
}| name required | string <= 255 characters The name of the action matcher |
| type required | string Value: "item-matcher" The type of the action matcher |
| matcher required | object The matcher configuration |
{- "name": "string",
- "type": "item-matcher",
- "matcher": { }
}{- "matcher": {
- "organizationKey": "string",
- "name": "string",
- "matcherKey": "string",
- "type": "item-matcher",
- "matcher": { },
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z"
}
}
curl -X 'GET' \
'https://api.sandbox.qurable.io/v2/action-matchers/{matcherKey}' \
-H 'accept: application/json' \
-H 'Authorization: Bearer {YOUR_TOKEN}'{- "matcher": {
- "organizationKey": "string",
- "name": "string",
- "matcherKey": "string",
- "type": "item-matcher",
- "matcher": { },
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z"
}
}| matcherKey required | string |
| name | string <= 255 characters The name of the action matcher |
| type | string Value: "item-matcher" The type of the action matcher |
| matcher | object The matcher configuration |
{- "name": "string",
- "type": "item-matcher",
- "matcher": { }
}{- "matcher": {
- "organizationKey": "string",
- "name": "string",
- "matcherKey": "string",
- "type": "item-matcher",
- "matcher": { },
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z"
}
}| eventType | string Example: eventType=member-payment-confirmed Filter conditions by event type compatibility |
curl -X 'GET' \ 'https://api.sandbox.qurable.io/v2/smart-campaigns/conditions?page=1&limit=10&category=Member&search=tier' \ -H 'accept: application/json' \ -H 'Authorization: Bearer {YOUR_TOKEN}'
{- "results": [
- {
- "smartConditionKey": "member-tier-check",
- "ruleFunctionId": "memberTier",
- "inputType": "tier",
- "label": "Member Tier",
- "description": "Check if member belongs to specific tier(s)",
- "category": "member",
- "isCurrency": true,
- "isMultiple": true,
- "decimals": 2,
- "values": [
- {
- "value": "credit",
- "label": "Credit"
}
], - "loyaltyProgramKey": "main-program",
- "ledgerKey": "main-ledger",
- "ledgerAccountKey": "earn-points",
- "ledgerAccountName": "points",
- "attributePath": "customAttributes.cardType",
- "eventTypes": [
- "member-payment-confirmed"
], - "inputSchema": {
- "minNumberValue": {
- "type": "number",
- "description": "Minimum value (inclusive)"
}, - "maxNumberValue": {
- "type": "number",
- "description": "Maximum value (inclusive)"
}
}
}
]
}| eventType | string Example: eventType=member-payment-confirmed Filter effects by event type compatibility and compute supported accrual types |
curl -X 'GET' \ 'https://api.sandbox.qurable.io/v2/smart-campaigns/effects?page=1&limit=10&category=Rewards&search=points' \ -H 'accept: application/json' \ -H 'Authorization: Bearer {YOUR_TOKEN}'
{- "results": [
- {
- "smartEffectKey": "add-earn-points",
- "effectId": "add-loyalty-points",
- "inputType": "numberWithType",
- "label": "Add Earn Points",
- "description": "Add points to member's earn points account",
- "category": "member",
- "ledgerKey": "main-ledger",
- "ledgerAccountKey": "earn-points",
- "loyaltyProgramKey": "main-program",
- "decimals": 2,
- "pointTrackingEnabled": true,
- "eventTypes": [
- "member-purchase-order-confirmed"
], - "excludedEventTypes": [
- "member-purchase-order-confirmed"
], - "supportedAccrualTypes": [
- "fixed",
- "percentage",
- "pointsPerAmount",
- "fromPayload"
]
}
], - "totalCount": 0
}| code required | string |
| active | boolean |
| name required | string |
| description | string |
| pictureUrl | string |
| type | string |
| tags | Array of strings |
| enabledTopics | Array of strings Deprecated Deprecated: enabledTopics is automatically derived from eventType. |
| audienceKeys | Array of strings |
| daysOfWeek | Array of strings[ items [ 1 .. 7 ] ] Days of week when campaign is active (1=Monday, 7=Sunday) |
| locationCodes | Array of strings Location codes where campaign is active |
| loyaltyTierKeys | Array of strings |
| eventType | string |
| pointsMonthlyLimitPerMember | number |
| allowPartialApplicationOnLimit | boolean |
| maxTransactionsPerMember | number |
Array of objects (CampaignLimitRuleDto) Unified campaign limit rules — one entry per | |
| minSpendValue | number |
| customAttributes | object |
| smartRewards | object |
| validFrom | string <date-time> |
| validTo | string <date-time> |
required | Array of objects (RewardConfigurationDto) Array of reward configurations |
| loyaltyProgramKey | string |
{- "code": "string",
- "active": true,
- "name": "string",
- "description": "string",
- "pictureUrl": "string",
- "type": "string",
- "tags": [
- "string"
], - "enabledTopics": [
- "string"
], - "audienceKeys": [
- "string"
], - "daysOfWeek": [
- 1,
- 2,
- 3,
- 4,
- 5
], - "locationCodes": [
- "main-store",
- "downtown-branch"
], - "loyaltyTierKeys": [
- "string"
], - "eventType": "string",
- "pointsMonthlyLimitPerMember": 0,
- "allowPartialApplicationOnLimit": true,
- "maxTransactionsPerMember": 0,
- "limitRules": [
- {
- "scope": "member",
- "type": "transactions",
- "period": "monthly",
- "limit": 3
}
], - "minSpendValue": 0,
- "customAttributes": { },
- "smartRewards": { },
- "validFrom": "2019-08-24T14:15:22Z",
- "validTo": "2019-08-24T14:15:22Z",
- "rewards": [
- {
- "conditions": [
- {
- "smartConditionKey": "member-tier-check",
- "loyaltyTierKeys": [
- "bronze",
- "silver",
- "gold"
], - "minNumberValue": 100,
- "maxNumberValue": 1000,
- "daysOfWeek": [
- 1,
- 2,
- 3,
- 4,
- 5
], - "categoriesKeys": [
- "category-electronics",
- "product-123"
], - "inlineMatcher": {
- "operator": "AND",
- "conditions": [
- {
- "categoryCodes": [
- "electronics",
- "accessories"
], - "productCodes": [
- "SKU-123",
- "SKU-456"
], - "customAttributes": {
- "color": [
- "red",
- "blue"
], - "size": [
- "L"
]
}, - "quantityOperator": "=",
- "quantity": 0
}
]
}, - "matcherKey": "my-product-filter",
- "values": [
- "value1",
- "value2"
], - "includes": [
- "AR",
- "BR"
], - "excludes": [
- "AMEX"
], - "attributePath": "skyTier",
- "badgeKey": "bdg_01KN089K87K5BX28M4ECXG0VR4",
- "timeRanges": [
- {
- "from": "09:00",
- "to": "18:00",
- "timezone": "America/Argentina/Buenos_Aires"
}
], - "period": "string",
- "periodCount": 30
}
], - "effects": [
- {
- "smartEffectKey": "add-earn-points",
- "description": "string",
- "loyaltyTierKey": "gold",
- "couponBookKey": "coupon-book-123",
- "badgeKey": "bdg_01KN089K87K5BX28M4ECXG0VR4",
- "tagValue": "vip-customer",
- "numberValue": {
- "rate": 10,
- "accrualType": "percentage"
}, - "categoryValues": [
- {
- "rate": 10,
- "accrualType": "percentage",
- "categoryCode": "electronics"
}, - {
- "rate": 5,
- "accrualType": "percentage"
}
], - "manualExpiration": {
- "value": 30,
- "unit": "days"
}
}
], - "priority": 1,
- "exclusiveGroup": "tier-bonus"
}
], - "loyaltyProgramKey": "string"
}{- "campaign": {
- "daysOfWeek": [
- 1,
- 2,
- 3,
- 4,
- 5
], - "locationCodes": [
- "main-store",
- "downtown-branch"
], - "rewards": [
- {
- "conditions": [
- {
- "smartConditionKey": "member-tier-check",
- "loyaltyTierKeys": [
- "bronze",
- "silver",
- "gold"
], - "minNumberValue": 100,
- "maxNumberValue": 1000,
- "daysOfWeek": [
- 1,
- 2,
- 3,
- 4,
- 5
], - "categoriesKeys": [
- "category-electronics",
- "product-123"
], - "inlineMatcher": {
- "operator": "AND",
- "conditions": [
- {
- "categoryCodes": [
- "electronics",
- "accessories"
], - "productCodes": [
- "SKU-123",
- "SKU-456"
], - "customAttributes": {
- "color": [
- "red",
- "blue"
], - "size": [
- "L"
]
}, - "quantityOperator": "=",
- "quantity": 0
}
]
}, - "matcherKey": "my-product-filter",
- "values": [
- "value1",
- "value2"
], - "includes": [
- "AR",
- "BR"
], - "excludes": [
- "AMEX"
], - "attributePath": "skyTier",
- "badgeKey": "bdg_01KN089K87K5BX28M4ECXG0VR4",
- "timeRanges": [
- {
- "from": "09:00",
- "to": "18:00",
- "timezone": "America/Argentina/Buenos_Aires"
}
], - "period": "string",
- "periodCount": 30
}
], - "effects": [
- {
- "smartEffectKey": "add-earn-points",
- "description": "string",
- "loyaltyTierKey": "gold",
- "couponBookKey": "coupon-book-123",
- "badgeKey": "bdg_01KN089K87K5BX28M4ECXG0VR4",
- "tagValue": "vip-customer",
- "numberValue": {
- "rate": 10,
- "accrualType": "percentage"
}, - "categoryValues": [
- {
- "rate": 10,
- "accrualType": "percentage",
- "categoryCode": "electronics"
}, - {
- "rate": 5,
- "accrualType": "percentage"
}
], - "manualExpiration": {
- "value": 30,
- "unit": "days"
}
}
], - "priority": 1,
- "exclusiveGroup": "tier-bonus"
}
], - "campaignKey": "string",
- "campaignVersionKey": "string",
- "organizationKey": "string",
- "loyaltyProgramKey": "string",
- "name": "string",
- "description": "string",
- "pictureUrl": "string",
- "customAttributes": { },
- "type": "string",
- "tags": [
- "string"
], - "enabledTopics": [
- "string"
], - "code": "string",
- "active": true,
- "audienceKeys": [
- "string"
], - "validFrom": "2019-08-24T14:15:22Z",
- "validTo": "2019-08-24T14:15:22Z",
- "pointsMonthlyLimitPerMember": 0,
- "allowPartialApplicationOnLimit": true,
- "maxTransactionsPerMember": 0,
- "limitRules": [
- {
- "scope": "member",
- "type": "transactions",
- "period": "monthly",
- "limit": 3
}
], - "eventType": "string",
- "minSpendValue": 0,
- "loyaltyTierKeys": [
- "string"
], - "smartRewards": [
- { }
], - "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z"
}
}curl -X 'GET' \ 'https://api.sandbox.qurable.io/v2/smart-campaigns/{campaignKey}' \ -H 'accept: application/json' \ -H 'Authorization: Bearer {YOUR_TOKEN}'
{- "campaign": {
- "daysOfWeek": [
- 1,
- 2,
- 3,
- 4,
- 5
], - "locationCodes": [
- "main-store",
- "downtown-branch"
], - "rewards": [
- {
- "conditions": [
- {
- "smartConditionKey": "member-tier-check",
- "loyaltyTierKeys": [
- "bronze",
- "silver",
- "gold"
], - "minNumberValue": 100,
- "maxNumberValue": 1000,
- "daysOfWeek": [
- 1,
- 2,
- 3,
- 4,
- 5
], - "categoriesKeys": [
- "category-electronics",
- "product-123"
], - "inlineMatcher": {
- "operator": "AND",
- "conditions": [
- {
- "categoryCodes": [
- "electronics",
- "accessories"
], - "productCodes": [
- "SKU-123",
- "SKU-456"
], - "customAttributes": {
- "color": [
- "red",
- "blue"
], - "size": [
- "L"
]
}, - "quantityOperator": "=",
- "quantity": 0
}
]
}, - "matcherKey": "my-product-filter",
- "values": [
- "value1",
- "value2"
], - "includes": [
- "AR",
- "BR"
], - "excludes": [
- "AMEX"
], - "attributePath": "skyTier",
- "badgeKey": "bdg_01KN089K87K5BX28M4ECXG0VR4",
- "timeRanges": [
- {
- "from": "09:00",
- "to": "18:00",
- "timezone": "America/Argentina/Buenos_Aires"
}
], - "period": "string",
- "periodCount": 30
}
], - "effects": [
- {
- "smartEffectKey": "add-earn-points",
- "description": "string",
- "loyaltyTierKey": "gold",
- "couponBookKey": "coupon-book-123",
- "badgeKey": "bdg_01KN089K87K5BX28M4ECXG0VR4",
- "tagValue": "vip-customer",
- "numberValue": {
- "rate": 10,
- "accrualType": "percentage"
}, - "categoryValues": [
- {
- "rate": 10,
- "accrualType": "percentage",
- "categoryCode": "electronics"
}, - {
- "rate": 5,
- "accrualType": "percentage"
}
], - "manualExpiration": {
- "value": 30,
- "unit": "days"
}
}
], - "priority": 1,
- "exclusiveGroup": "tier-bonus"
}
], - "campaignKey": "string",
- "campaignVersionKey": "string",
- "organizationKey": "string",
- "loyaltyProgramKey": "string",
- "name": "string",
- "description": "string",
- "pictureUrl": "string",
- "customAttributes": { },
- "type": "string",
- "tags": [
- "string"
], - "enabledTopics": [
- "string"
], - "code": "string",
- "active": true,
- "audienceKeys": [
- "string"
], - "validFrom": "2019-08-24T14:15:22Z",
- "validTo": "2019-08-24T14:15:22Z",
- "pointsMonthlyLimitPerMember": 0,
- "allowPartialApplicationOnLimit": true,
- "maxTransactionsPerMember": 0,
- "limitRules": [
- {
- "scope": "member",
- "type": "transactions",
- "period": "monthly",
- "limit": 3
}
], - "eventType": "string",
- "minSpendValue": 0,
- "loyaltyTierKeys": [
- "string"
], - "smartRewards": [
- { }
], - "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z"
}
}| campaignKey required | string |
| code required | string |
| active | boolean |
| name required | string |
| description | string |
| pictureUrl | string |
| type | string |
| tags | Array of strings |
| enabledTopics | Array of strings Deprecated Deprecated: enabledTopics is automatically derived from eventType. |
| audienceKeys | Array of strings |
| daysOfWeek | Array of strings[ items [ 1 .. 7 ] ] Days of week when campaign is active (1=Monday, 7=Sunday) |
| locationCodes | Array of strings Location codes where campaign is active |
| loyaltyTierKeys | Array of strings |
| eventType | string |
| pointsMonthlyLimitPerMember | number |
| allowPartialApplicationOnLimit | boolean |
| maxTransactionsPerMember | number |
Array of objects (CampaignLimitRuleDto) Unified campaign limit rules — one entry per | |
| minSpendValue | number |
| customAttributes | object |
| smartRewards | object |
| validFrom | string <date-time> |
| validTo | string <date-time> |
required | Array of objects (RewardConfigurationDto) Array of reward configurations |
| loyaltyProgramKey | string |
{- "code": "string",
- "active": true,
- "name": "string",
- "description": "string",
- "pictureUrl": "string",
- "type": "string",
- "tags": [
- "string"
], - "enabledTopics": [
- "string"
], - "audienceKeys": [
- "string"
], - "daysOfWeek": [
- 1,
- 2,
- 3,
- 4,
- 5
], - "locationCodes": [
- "main-store",
- "downtown-branch"
], - "loyaltyTierKeys": [
- "string"
], - "eventType": "string",
- "pointsMonthlyLimitPerMember": 0,
- "allowPartialApplicationOnLimit": true,
- "maxTransactionsPerMember": 0,
- "limitRules": [
- {
- "scope": "member",
- "type": "transactions",
- "period": "monthly",
- "limit": 3
}
], - "minSpendValue": 0,
- "customAttributes": { },
- "smartRewards": { },
- "validFrom": "2019-08-24T14:15:22Z",
- "validTo": "2019-08-24T14:15:22Z",
- "rewards": [
- {
- "conditions": [
- {
- "smartConditionKey": "member-tier-check",
- "loyaltyTierKeys": [
- "bronze",
- "silver",
- "gold"
], - "minNumberValue": 100,
- "maxNumberValue": 1000,
- "daysOfWeek": [
- 1,
- 2,
- 3,
- 4,
- 5
], - "categoriesKeys": [
- "category-electronics",
- "product-123"
], - "inlineMatcher": {
- "operator": "AND",
- "conditions": [
- {
- "categoryCodes": [
- "electronics",
- "accessories"
], - "productCodes": [
- "SKU-123",
- "SKU-456"
], - "customAttributes": {
- "color": [
- "red",
- "blue"
], - "size": [
- "L"
]
}, - "quantityOperator": "=",
- "quantity": 0
}
]
}, - "matcherKey": "my-product-filter",
- "values": [
- "value1",
- "value2"
], - "includes": [
- "AR",
- "BR"
], - "excludes": [
- "AMEX"
], - "attributePath": "skyTier",
- "badgeKey": "bdg_01KN089K87K5BX28M4ECXG0VR4",
- "timeRanges": [
- {
- "from": "09:00",
- "to": "18:00",
- "timezone": "America/Argentina/Buenos_Aires"
}
], - "period": "string",
- "periodCount": 30
}
], - "effects": [
- {
- "smartEffectKey": "add-earn-points",
- "description": "string",
- "loyaltyTierKey": "gold",
- "couponBookKey": "coupon-book-123",
- "badgeKey": "bdg_01KN089K87K5BX28M4ECXG0VR4",
- "tagValue": "vip-customer",
- "numberValue": {
- "rate": 10,
- "accrualType": "percentage"
}, - "categoryValues": [
- {
- "rate": 10,
- "accrualType": "percentage",
- "categoryCode": "electronics"
}, - {
- "rate": 5,
- "accrualType": "percentage"
}
], - "manualExpiration": {
- "value": 30,
- "unit": "days"
}
}
], - "priority": 1,
- "exclusiveGroup": "tier-bonus"
}
], - "loyaltyProgramKey": "string"
}{- "campaign": {
- "daysOfWeek": [
- 1,
- 2,
- 3,
- 4,
- 5
], - "locationCodes": [
- "main-store",
- "downtown-branch"
], - "rewards": [
- {
- "conditions": [
- {
- "smartConditionKey": "member-tier-check",
- "loyaltyTierKeys": [
- "bronze",
- "silver",
- "gold"
], - "minNumberValue": 100,
- "maxNumberValue": 1000,
- "daysOfWeek": [
- 1,
- 2,
- 3,
- 4,
- 5
], - "categoriesKeys": [
- "category-electronics",
- "product-123"
], - "inlineMatcher": {
- "operator": "AND",
- "conditions": [
- {
- "categoryCodes": [
- "electronics",
- "accessories"
], - "productCodes": [
- "SKU-123",
- "SKU-456"
], - "customAttributes": {
- "color": [
- "red",
- "blue"
], - "size": [
- "L"
]
}, - "quantityOperator": "=",
- "quantity": 0
}
]
}, - "matcherKey": "my-product-filter",
- "values": [
- "value1",
- "value2"
], - "includes": [
- "AR",
- "BR"
], - "excludes": [
- "AMEX"
], - "attributePath": "skyTier",
- "badgeKey": "bdg_01KN089K87K5BX28M4ECXG0VR4",
- "timeRanges": [
- {
- "from": "09:00",
- "to": "18:00",
- "timezone": "America/Argentina/Buenos_Aires"
}
], - "period": "string",
- "periodCount": 30
}
], - "effects": [
- {
- "smartEffectKey": "add-earn-points",
- "description": "string",
- "loyaltyTierKey": "gold",
- "couponBookKey": "coupon-book-123",
- "badgeKey": "bdg_01KN089K87K5BX28M4ECXG0VR4",
- "tagValue": "vip-customer",
- "numberValue": {
- "rate": 10,
- "accrualType": "percentage"
}, - "categoryValues": [
- {
- "rate": 10,
- "accrualType": "percentage",
- "categoryCode": "electronics"
}, - {
- "rate": 5,
- "accrualType": "percentage"
}
], - "manualExpiration": {
- "value": 30,
- "unit": "days"
}
}
], - "priority": 1,
- "exclusiveGroup": "tier-bonus"
}
], - "campaignKey": "string",
- "campaignVersionKey": "string",
- "organizationKey": "string",
- "loyaltyProgramKey": "string",
- "name": "string",
- "description": "string",
- "pictureUrl": "string",
- "customAttributes": { },
- "type": "string",
- "tags": [
- "string"
], - "enabledTopics": [
- "string"
], - "code": "string",
- "active": true,
- "audienceKeys": [
- "string"
], - "validFrom": "2019-08-24T14:15:22Z",
- "validTo": "2019-08-24T14:15:22Z",
- "pointsMonthlyLimitPerMember": 0,
- "allowPartialApplicationOnLimit": true,
- "maxTransactionsPerMember": 0,
- "limitRules": [
- {
- "scope": "member",
- "type": "transactions",
- "period": "monthly",
- "limit": 3
}
], - "eventType": "string",
- "minSpendValue": 0,
- "loyaltyTierKeys": [
- "string"
], - "smartRewards": [
- { }
], - "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z"
}
}{- "results": [
- {
- "smartEffectKey": "add-earn-points",
- "effectId": "add-loyalty-points",
- "inputType": "numberWithType",
- "label": "Add Earn Points",
- "description": "Add points to member's earn points account",
- "category": "member",
- "ledgerKey": "main-ledger",
- "ledgerAccountKey": "earn-points",
- "loyaltyProgramKey": "main-program",
- "decimals": 2,
- "pointTrackingEnabled": true,
- "eventTypes": [
- "member-purchase-order-confirmed"
], - "excludedEventTypes": [
- "member-purchase-order-confirmed"
], - "supportedAccrualTypes": [
- "fixed",
- "percentage",
- "pointsPerAmount",
- "fromPayload"
]
}
], - "totalCount": 0
}| name required | string <= 255 characters Display name of the custom effect |
| description | string Optional description |
| smartEffectKey required | string <= 255 characters /^[a-z0-9]+(?:-[a-z0-9]+)*$/ Slugified key (kebab-case lowercase, auto-generated from name but user-editable) |
{- "name": "string",
- "description": "string",
- "smartEffectKey": "string"
}{- "result": {
- "smartEffectKey": "add-earn-points",
- "effectId": "add-loyalty-points",
- "inputType": "numberWithType",
- "label": "Add Earn Points",
- "description": "Add points to member's earn points account",
- "category": "member",
- "ledgerKey": "main-ledger",
- "ledgerAccountKey": "earn-points",
- "loyaltyProgramKey": "main-program",
- "decimals": 2,
- "pointTrackingEnabled": true,
- "eventTypes": [
- "member-purchase-order-confirmed"
], - "excludedEventTypes": [
- "member-purchase-order-confirmed"
], - "supportedAccrualTypes": [
- "fixed",
- "percentage",
- "pointsPerAmount",
- "fromPayload"
]
}
}| smartEffectKey required | string |
{- "result": {
- "smartEffectKey": "add-earn-points",
- "effectId": "add-loyalty-points",
- "inputType": "numberWithType",
- "label": "Add Earn Points",
- "description": "Add points to member's earn points account",
- "category": "member",
- "ledgerKey": "main-ledger",
- "ledgerAccountKey": "earn-points",
- "loyaltyProgramKey": "main-program",
- "decimals": 2,
- "pointTrackingEnabled": true,
- "eventTypes": [
- "member-purchase-order-confirmed"
], - "excludedEventTypes": [
- "member-purchase-order-confirmed"
], - "supportedAccrualTypes": [
- "fixed",
- "percentage",
- "pointsPerAmount",
- "fromPayload"
]
}
}| smartEffectKey required | string |
| name | string <= 255 characters |
| description | string |
| active | boolean |
{- "name": "string",
- "description": "string",
- "active": true
}{- "result": {
- "smartEffectKey": "add-earn-points",
- "effectId": "add-loyalty-points",
- "inputType": "numberWithType",
- "label": "Add Earn Points",
- "description": "Add points to member's earn points account",
- "category": "member",
- "ledgerKey": "main-ledger",
- "ledgerAccountKey": "earn-points",
- "loyaltyProgramKey": "main-program",
- "decimals": 2,
- "pointTrackingEnabled": true,
- "eventTypes": [
- "member-purchase-order-confirmed"
], - "excludedEventTypes": [
- "member-purchase-order-confirmed"
], - "supportedAccrualTypes": [
- "fixed",
- "percentage",
- "pointsPerAmount",
- "fromPayload"
]
}
}| loyaltyMemberId required | string |
| page | number >= 0 Example: page=0 The page number for pagination |
| limit | number [ 1 .. 25 ] Example: limit=10 The limit of items to return per page |
| fromDate | string <date-time> Filter purchase orders from this date |
| toDate | string <date-time> Filter purchase orders up to this date |
| includeItems | boolean Include purchase order items in the response |
curl -X 'GET' \ 'https://api.sandbox.qurable.io/v2/members/{loyaltyMemberId}/purchase-orders?page=0&limit=10' \ -H 'accept: application/json' \ -H 'Authorization: Bearer {YOUR_TOKEN}'
{- "totalCount": 0,
- "page": 0,
- "limit": 0,
- "results": [
- {
- "orderId": "string",
- "externalEventDate": "2019-08-24T14:15:22Z",
- "externalId": "string",
- "description": "string",
- "loyaltyEventId": "string",
- "customAttributes": { },
- "type": "string",
- "tags": [
- "string"
], - "total": 0,
- "discountedTotal": 0,
- "subTotal": 0,
- "merchantId": "string",
- "paymentMethod": "string",
- "locationCode": "string",
- "referralCode": "string",
- "channel": "string",
- "coupons": { },
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z",
- "status": "created",
- "items": [
- {
- "orderItemId": "string",
- "productCode": "string",
- "description": "string",
- "customAttributes": { },
- "total": 0,
- "amount": { },
- "quantity": { },
- "discountedTotal": 0,
- "subTotal": 0,
- "categoryCode": "string"
}
]
}
]
}| loyaltyMemberId required | string |
| period required | string Enum: "days" "weeks" "months" "current-week" "current-month" "current-quarter" "current-year" "previous-week" "previous-month" "previous-quarter" "previous-year" "last-month" "last-year" Period type. Relative: days, weeks, months (require periodCount). Current (to date): current-week, current-month, current-quarter, current-year. Previous (full period): previous-week, previous-month, previous-quarter, previous-year, last-month, last-year. |
| last | number Default: 30 Number of periods to look back (only for relative periods: days, weeks, months). Ignored for absolute periods. Max 6 months equivalent. |
{- "period": "string",
- "last": 0,
- "totals": {
- "ordersCount": 0,
- "grossAmount": 0,
- "itemsQuantity": 0
}, - "daily": [
- {
- "date": "string",
- "ordersCount": 0,
- "grossAmount": 0,
- "itemsQuantity": 0
}
]
}| loyaltyMemberId required | string |
| orderId required | string |
curl -X 'GET' \ 'https://api.sandbox.qurable.io/v2/members/{loyaltyMemberId}/purchase-orders/{orderId}' \ -H 'accept: application/json' \ -H 'Authorization: Bearer {YOUR_TOKEN}'
{- "order": {
- "orderId": "string",
- "externalEventDate": "2019-08-24T14:15:22Z",
- "externalId": "string",
- "description": "string",
- "loyaltyEventId": "string",
- "customAttributes": { },
- "type": "string",
- "tags": [
- "string"
], - "total": 0,
- "discountedTotal": 0,
- "subTotal": 0,
- "merchantId": "string",
- "paymentMethod": "string",
- "locationCode": "string",
- "referralCode": "string",
- "channel": "string",
- "coupons": { },
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z",
- "status": "created",
- "items": [
- {
- "orderItemId": "string",
- "productCode": "string",
- "description": "string",
- "customAttributes": { },
- "total": 0,
- "amount": { },
- "quantity": { },
- "discountedTotal": 0,
- "subTotal": 0,
- "categoryCode": "string"
}
], - "eventResults": {
- "campaigns": [
- {
- "campaignName": "string",
- "campaignKey": "string",
- "effects": [
- {
- "effectId": "string",
- "actionName": "string",
- "actionKey": "string",
- "status": "string",
- "error": "string",
- "amount": 0,
- "ledgerAccountKey": "string",
- "ledgerAccountName": "string",
- "couponBookKey": "string",
- "loyaltyTierName": "string",
- "loyaltyTierKey": "string",
- "badgeKey": "string"
}
]
}
], - "ledgerBalances": [
- {
- "ledgerKey": "string",
- "ledgerAccountKey": "string",
- "ledgerAccountName": "string",
- "currentBalance": 0,
- "endingBalance": 0
}
], - "missionUpdates": [
- {
- "missionId": 0,
- "name": "string",
- "timesAchieved": 0,
- "currentCounterCount": 0,
- "goalCount": 0,
- "lastGoalsAchieved": 0
}
], - "tierUpdates": [
- {
- "loyaltyTierKey": "string",
- "loyaltyTierName": "string"
}
]
}
}
}| loyaltyMemberId required | string |
| period required | string Enum: "days" "weeks" "months" "current-week" "current-month" "current-quarter" "current-year" "previous-week" "previous-month" "previous-quarter" "previous-year" "last-month" "last-year" Period type. Relative: days, weeks, months (require periodCount). Current (to date): current-week, current-month, current-quarter, current-year. Previous (full period): previous-week, previous-month, previous-quarter, previous-year, last-month, last-year. |
| last | number Default: 30 Number of periods to look back (only for relative periods: days, weeks, months). Ignored for absolute periods. Max 6 months equivalent. |
{- "period": "string",
- "last": 0,
- "totals": {
- "paymentsCount": 0,
- "totalAmount": 0
}, - "daily": [
- {
- "date": "string",
- "paymentsCount": 0,
- "totalAmount": 0
}
]
}Validates that each tier's segment BigQuery window aligns with the configured schedules. Use ?validation=strict (default) to block invalid configs, ?validation=loose to save with warnings, or ?validation=skip to bypass.
| validation | string Enum: "strict" "loose" "skip" Segment/schedule alignment validation. Default: strict. strict = errors block, warnings returned; loose = errors downgraded to warnings; skip = no validation. |
object (TierAudienceScheduleDto) | |
object (TierAudienceScheduleDto) | |
| downgradeGraceCycle | boolean Default: false Give members one full downgrade cycle to re-qualify before downgrading |
| evaluationReference | string Default: "calendar" Enum: "calendar" "enrollment" |
| active | boolean Default: true |
| upgradePaused | boolean Default: false |
| downgradePaused | boolean Default: false |
required | Array of objects (TierAudienceMappingDto) Segment mapping for each non-base tier |
{- "upgradeSchedule": {
- "frequency": "daily",
- "dayOfWeek": 1,
- "dayOfMonth": { },
- "monthOfYear": 1,
- "quarterMonth": 1
}, - "downgradeSchedule": {
- "frequency": "daily",
- "dayOfWeek": 1,
- "dayOfMonth": { },
- "monthOfYear": 1,
- "quarterMonth": 1
}, - "downgradeGraceCycle": false,
- "evaluationReference": "calendar",
- "active": true,
- "upgradePaused": false,
- "downgradePaused": false,
- "tiers": [
- {
- "loyaltyTierKey": "string",
- "audienceKey": "string"
}
]
}| status | string Enum: "pending" "completed" "skipped" "failed" |
| mode | string Enum: "upgrade" "downgrade" "requalified" |
| currentTierKey | string |
| calculatedTierKey | string |
| fromDate | string ISO date (default: 30 days ago) |
| toDate | string ISO date (default: today) |
| sortBy | string Enum: "date" "currentTier" "calculatedTier" Default: date |
| sortOrder | string Enum: "asc" "desc" Default: desc |
| page | number |
| limit | number |
| loyaltyMemberId required | string |
| lockedUntil | string Auto-unlock date. Omit for indefinite lock |
| reason | string Reason for locking |
{- "lockedUntil": "string",
- "reason": "string"
}Projects arbitrary dimensions and metrics with user-defined aliases. Supports filtering, time windows, pagination, estimation, and validate (dry-run) modes. Organization scope is always derived from the authenticated token.
required | object Insights definition (unified audience DSL). | ||||||||||||||||||||||||||||
| |||||||||||||||||||||||||||||
{- "definition": {
- "from": "members",
- "audience": { },
- "logic": { },
- "projectedDimension": "member",
- "projections": [
- { }
], - "havingFilters": [
- { }
], - "projectedVia": {
- "fact": "string",
- "connection": "string"
}, - "window": { },
- "orderBy": [
- { }
], - "pageSize": 100,
- "pageToken": "string",
- "mode": "execute",
- "samplingPercent": 1,
- "approximate": false
}
}{- "columns": [
- {
- "alias": "current_balance",
- "type": "decimal"
}
], - "rows": [
- [
- "M-001",
- "a@b.co",
- "Gold",
- 1234.56
], - [
- "M-002",
- "c@d.co",
- "Silver",
- null
]
], - "metadata": {
- "mode": "execute",
- "pageSize": 100,
- "rowCount": 50,
- "estimatedCount": 1847,
- "valid": true,
- "error": "string",
- "estimatedBytesProcessed": "12345",
- "nextPageToken": "M-04829"
}
}Model Context Protocol server for building insights queries. Accepts a single JSON-RPC request and returns a single JSON-RPC response (200). A JSON-RPC notification (no id) is accepted with 202 and no body, per the Streamable HTTP transport. Supported methods: initialize, ping, tools/list, tools/call.
| jsonrpc required | string |
| method required | string |
| id | object |
| params | object |
{- "jsonrpc": "string",
- "method": "string",
- "id": { },
- "params": { }
}Creates a new segment with an automatically linked list-matcher audience. The segment defines membership refresh schedules and configuration.
| name required | string [ 1 .. 255 ] characters Name of the segment |
| description | string <= 1000 characters Description of the segment |
| refreshType | string (SegmentRefreshType) Default: "once" Enum: "once" "daily" "weekly" "monthly" The refresh schedule for BigQuery segments. ONCE: run once, then stop. DAILY/WEEKLY/MONTHLY: recurring. Ignored for CSV import segments. |
| autoRefreshEnabled | boolean Default: true Whether scheduled auto-refresh is enabled for the new BigQuery segment. Defaults to |
| isActive | boolean Deprecated Default: true Deprecated: use |
| disableList | boolean Deprecated Default: false Deprecated: toggle the audience directly via |
| tags | string Tags associated with the segment |
| definition | object DSL-based audience definition for complex segmentation queries |
{- "name": "VIP Customers",
- "description": "High-value customers with over $1000 in purchases",
- "refreshType": "once",
- "autoRefreshEnabled": true,
- "isActive": true,
- "disableList": false,
- "tags": "VIP,High-value",
- "definition": {
- "logic": {
- "op": "AND",
- "children": [
- {
- "type": "dimension",
- "dimension": "tier",
- "attribute": "name",
- "operator": "=",
- "value": "gold"
}
]
}
}
}{- "segment": {
- "segmentKey": "seg_01ARZ3NDEKTSV4RRFFQ69G5FAV",
- "name": "VIP Customers",
- "description": "High-value customers with over $1000 in purchases",
- "refreshType": "monthly",
- "segmentType": "bigquery",
- "autoRefreshEnabled": true,
- "isActive": true,
- "audienceKey": "audience_01ARZ3NDEKTSV4RRFFQ69G5FAV",
- "tags": "VIP,High-value",
- "createdAt": "2023-12-01T10:00:00Z",
- "updatedAt": "2023-12-01T12:00:00Z",
- "definition": {
- "logic": {
- "op": "AND",
- "children": [
- {
- "type": "dimension",
- "dimension": "tier",
- "attribute": "name",
- "operator": "=",
- "value": "gold"
}
]
}
}, - "audience": {
- "audienceKey": "aud_01ARZ3NDEKTSV4RRFFQ69G5FAV",
- "active": true,
- "memberCount": 150,
- "refreshedAt": "2023-12-01T15:00:00Z",
- "expiresAt": "2026-12-01T15:00:00Z"
}
}
}Retrieves a paginated list of segments with support for filtering by active status and searching by name/description.
| page | number >= 0 Example: page=0 The page number for pagination |
| limit | number [ 1 .. 25 ] Example: limit=10 The limit of items to return per page |
| order | string Order of columns in result in the format 'column,asc|desc?'. Samples: ?order=col1 or ?order=col1,asc |
| isActive | boolean Deprecated Example: isActive=true Deprecated: use |
| autoRefreshEnabled | boolean Example: autoRefreshEnabled=true Filter by whether scheduled auto-refresh is enabled. Excludes CSV imports (auto-refresh is not applicable). |
| refreshType | string Enum: "once" "daily" "weekly" "monthly" Filter by exact refresh type (once, daily, weekly, monthly) |
| search | string Example: search=VIP Search segments by name or description |
| tags | string Example: tags=VIP,High-value Filter segments that contain any of the provided tags |
| segmentType | string Enum: "bigquery" "csv_import" Filter by segment type |
{- "totalCount": 0,
- "page": 0,
- "limit": 0,
- "results": [
- {
- "segmentKey": "seg_01ARZ3NDEKTSV4RRFFQ69G5FAV",
- "name": "VIP Customers",
- "description": "High-value customers with over $1000 in purchases",
- "refreshType": "monthly",
- "segmentType": "bigquery",
- "autoRefreshEnabled": true,
- "isActive": true,
- "audienceKey": "audience_01ARZ3NDEKTSV4RRFFQ69G5FAV",
- "tags": "VIP,High-value",
- "createdAt": "2023-12-01T10:00:00Z",
- "updatedAt": "2023-12-01T12:00:00Z",
- "definition": {
- "logic": {
- "op": "AND",
- "children": [
- {
- "type": "dimension",
- "dimension": "tier",
- "attribute": "name",
- "operator": "=",
- "value": "gold"
}
]
}
}, - "audience": {
- "audienceKey": "aud_01ARZ3NDEKTSV4RRFFQ69G5FAV",
- "active": true,
- "memberCount": 150,
- "refreshedAt": "2023-12-01T15:00:00Z",
- "expiresAt": "2026-12-01T15:00:00Z"
}
}
]
}| segmentKey required | string Segment key |
{- "segment": {
- "segmentKey": "seg_01ARZ3NDEKTSV4RRFFQ69G5FAV",
- "name": "VIP Customers",
- "description": "High-value customers with over $1000 in purchases",
- "refreshType": "monthly",
- "segmentType": "bigquery",
- "autoRefreshEnabled": true,
- "isActive": true,
- "audienceKey": "audience_01ARZ3NDEKTSV4RRFFQ69G5FAV",
- "tags": "VIP,High-value",
- "createdAt": "2023-12-01T10:00:00Z",
- "updatedAt": "2023-12-01T12:00:00Z",
- "definition": {
- "logic": {
- "op": "AND",
- "children": [
- {
- "type": "dimension",
- "dimension": "tier",
- "attribute": "name",
- "operator": "=",
- "value": "gold"
}
]
}
}, - "audience": {
- "audienceKey": "aud_01ARZ3NDEKTSV4RRFFQ69G5FAV",
- "active": true,
- "memberCount": 150,
- "refreshedAt": "2023-12-01T15:00:00Z",
- "expiresAt": "2026-12-01T15:00:00Z"
}
}
}Updates segment properties. Changes to name and description are automatically synchronized to the linked audience.
| segmentKey required | string Example: seg_01H9X8Y7Z6P5Q4R3S2T1V0W9 Unique segment identifier |
| version | number >= 1 Segment version number for optimistic locking |
{- "version": 2
}{- "segment": {
- "segmentKey": "seg_01ARZ3NDEKTSV4RRFFQ69G5FAV",
- "name": "VIP Customers",
- "description": "High-value customers with over $1000 in purchases",
- "refreshType": "monthly",
- "segmentType": "bigquery",
- "autoRefreshEnabled": true,
- "isActive": true,
- "audienceKey": "audience_01ARZ3NDEKTSV4RRFFQ69G5FAV",
- "tags": "VIP,High-value",
- "createdAt": "2023-12-01T10:00:00Z",
- "updatedAt": "2023-12-01T12:00:00Z",
- "definition": {
- "logic": {
- "op": "AND",
- "children": [
- {
- "type": "dimension",
- "dimension": "tier",
- "attribute": "name",
- "operator": "=",
- "value": "gold"
}
]
}
}, - "audience": {
- "audienceKey": "aud_01ARZ3NDEKTSV4RRFFQ69G5FAV",
- "active": true,
- "memberCount": 150,
- "refreshedAt": "2023-12-01T15:00:00Z",
- "expiresAt": "2026-12-01T15:00:00Z"
}
}
}| audienceKey required | string Audience key |
| limit | number [ 1 .. 1000 ] Default: 100 Example: limit=100 Maximum number of members to return (1-1000) |
| lastEvaluatedKey | string Example: lastEvaluatedKey=eyJtZW1iZXJJZCI6MTIzLCJhdWRpZW5jZUtleSI6ImF1ZF8wMUFSWjNOREVLVFNWNFJSRkZRNjlHNUZBViJ9 Pagination token from previous response to get next page of results (base64 encoded) |
{- "members": [
- {
- "loyaltyMemberId": "member_123",
- "updatedAt": "2023-12-01T10:00:00Z"
}
], - "lastEvaluatedKey": "eyJtZW1iZXJJZCI6MTIzLCJhdWRpZW5jZUtleSI6ImF1ZF8wMUFSWjNOREVLVFNWNFJSRkZRNjlHNUZBViJ9",
- "count": 100
}| page | number >= 0 Example: page=0 The page number for pagination |
| limit | number [ 1 .. 25 ] Example: limit=10 The limit of items to return per page |
| order | string Order of columns in result in the format 'column,asc|desc?'. Samples: ?order=col1 or ?order=col1,asc |
| matcherType | string Enum: "attribute-matcher" "list-matcher" "null-matcher" Filter by matcher type |
| active | boolean Filter audiences by active status. When |
| search | string Example: search=VIP customers Search audiences by name or description |
| audienceKeys | string Example: audienceKeys=aud_123,aud_456,aud_789 Filter audiences by specific audience keys (comma-separated) |
| includeSegmentData | boolean Include segment data (segmentType) in the response |
curl -X 'GET' \
'https://api.sandbox.qurable.io/v2/audiences?page=0&limit=10' \
-H 'accept: application/json' \
-H 'Authorization: Bearer {YOUR_TOKEN}'{- "totalCount": 0,
- "page": 0,
- "limit": 0,
- "results": [
- {
- "audienceKey": "string",
- "organizationKey": "string",
- "active": true,
- "name": "string",
- "description": "string",
- "matcherType": "attribute-matcher",
- "matcher": { },
- "segmentKey": "string",
- "segmentType": "bigquery",
- "refreshedAt": "2019-08-24T14:15:22Z",
- "expiresAt": "2019-08-24T14:15:22Z",
- "memberCount": 0,
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z"
}
]
}| active required | boolean |
| name required | string |
| description | string |
| matcherType required | string Enum: "attribute-matcher" "list-matcher" "null-matcher" |
AttributeMatcherDto (object) Matcher configuration. Required when matcherType is attribute-matcher. | |
| segmentKey | string |
| refreshedAt | string <date-time> |
| expiresAt | string <date-time> |
| memberCount | number |
{- "active": true,
- "name": "string",
- "description": "string",
- "matcherType": "attribute-matcher",
- "matcher": {
- "customAttributes": {
- "tier": "gold"
}, - "tags": [
- "vip"
], - "locations": [
- "new york"
], - "emailDomains": [
- "example.com"
], - "memberTypes": {
- "values": [
- "premium"
], - "notInclude": false
}, - "createdAt": {
- "since": "2023-01-01",
- "until": "2023-12-31"
}, - "tierKeys": [
- "tir_123",
- "tir_456",
- "tir_789"
]
}, - "segmentKey": "string",
- "refreshedAt": "2019-08-24T14:15:22Z",
- "expiresAt": "2019-08-24T14:15:22Z",
- "memberCount": 0
}{- "audience": {
- "audienceKey": "string",
- "organizationKey": "string",
- "active": true,
- "name": "string",
- "description": "string",
- "matcherType": "attribute-matcher",
- "matcher": { },
- "segmentKey": "string",
- "segmentType": "bigquery",
- "refreshedAt": "2019-08-24T14:15:22Z",
- "expiresAt": "2019-08-24T14:15:22Z",
- "memberCount": 0,
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z"
}
}
curl -X 'GET' \
'https://api.sandbox.qurable.io/v2/audiences/{audienceKey}' \
-H 'accept: application/json' \
-H 'Authorization: Bearer {YOUR_TOKEN}'{- "audience": {
- "audienceKey": "string",
- "organizationKey": "string",
- "active": true,
- "name": "string",
- "description": "string",
- "matcherType": "attribute-matcher",
- "matcher": { },
- "segmentKey": "string",
- "segmentType": "bigquery",
- "refreshedAt": "2019-08-24T14:15:22Z",
- "expiresAt": "2019-08-24T14:15:22Z",
- "memberCount": 0,
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z"
}
}| audienceKey required | string |
| active | boolean |
| name | string |
| description | string |
| matcherType | string Enum: "attribute-matcher" "list-matcher" "null-matcher" |
AttributeMatcherDto (object) Matcher configuration. Required when matcherType is attribute-matcher. | |
| segmentKey | string |
| refreshedAt | string <date-time> |
| expiresAt | string <date-time> |
| memberCount | number |
{- "active": true,
- "name": "string",
- "description": "string",
- "matcherType": "attribute-matcher",
- "matcher": {
- "customAttributes": {
- "tier": "gold"
}, - "tags": [
- "vip"
], - "locations": [
- "new york"
], - "emailDomains": [
- "example.com"
], - "memberTypes": {
- "values": [
- "premium"
], - "notInclude": false
}, - "createdAt": {
- "since": "2023-01-01",
- "until": "2023-12-31"
}, - "tierKeys": [
- "tir_123",
- "tir_456",
- "tir_789"
]
}, - "segmentKey": "string",
- "refreshedAt": "2019-08-24T14:15:22Z",
- "expiresAt": "2019-08-24T14:15:22Z",
- "memberCount": 0
}{- "audience": {
- "audienceKey": "string",
- "organizationKey": "string",
- "active": true,
- "name": "string",
- "description": "string",
- "matcherType": "attribute-matcher",
- "matcher": { },
- "segmentKey": "string",
- "segmentType": "bigquery",
- "refreshedAt": "2019-08-24T14:15:22Z",
- "expiresAt": "2019-08-24T14:15:22Z",
- "memberCount": 0,
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z"
}
}Returns the semantic data model definition including available facts, dimensions, and their attributes. This model can be used to construct segment definitions. The model may be customized per organization based on custom semantic model configuration.
{- "model": {
- "facts": {
- "purchase": {
- "label": "Purchase",
- "timeColumns": {
- "ts": {
- "kind": "timestamp"
}, - "month_year": {
- "kind": "month_year"
}
}, - "fields": {
- "total": {
- "type": "number",
- "label": "Total Amount"
}, - "count": {
- "type": "number",
- "label": "Purchase Count"
}
}, - "connectsTo": [
- "member",
- "purchaseLocation"
]
}
}, - "dimensions": {
- "member": {
- "label": "Member",
- "attributes": {
- "name": {
- "type": "string",
- "label": "Name"
}, - "email": {
- "type": "string",
- "label": "Email"
}
}, - "isEntity": true
}, - "tier": {
- "label": "Member Tier",
- "attributes": {
- "name": {
- "type": "string",
- "label": "Tier Name"
}
}
}
}
}
}Estimates the number of members that would match the given segment definition. Also returns the total organization member count and the percentage of members that match.
| definition required | object Unified audience DSL. Estimate is intentionally projection-free: the endpoint always produces member-keyed rows and rejects any request that includes |
{- "definition": {
- "from": "members",
- "audience": {
- "op": "AND",
- "children": [
- {
- "type": "dimension",
- "dimension": "tier",
- "attribute": "loyaltyTierName",
- "operator": "=",
- "value": "Gold"
}
]
}
}
}{- "estimation": {
- "estimatedCount": 1250,
- "totalOrgMembers": 5000,
- "percentage": 25,
- "isValid": true,
- "error": "Invalid field reference in metric condition"
}
}Returns paginated and searchable values for a specific dimension within the organization context. Supported dimensions: memberGender, memberType, memberTag, tier, purchaseLocation, purchaseTag. Supports pagination (page, limit) and case-insensitive search by name.
| dimensionKey required | string |
| page | number >= 1 Default: 1 Example: page=1 Page number (1-indexed) |
| limit | number [ 1 .. 1000 ] Default: 100 Example: limit=100 Items per page |
| search | string Example: search=gold Search term for dimension value names (case-insensitive) |
{- "dimensionValues": {
- "values": [
- {
- "id": 1,
- "label": "Gold"
}
], - "totalCount": 150,
- "page": 1,
- "limit": 100,
- "count": 100
}
}Creates a new CSV import segment and returns a presigned S3 URL for uploading the CSV file
| name required | string <= 255 characters Segment name |
| description | string <= 1000 characters Segment description |
| fileName required | string CSV file name |
| fileSize required | number [ 1 .. 104857600 ] File size in bytes |
| identifierColumn required | string CSV column name containing member identifiers |
| identifierType required | string Enum: "loyaltyMemberId" "publicLoyaltyMemberId" "email" "memberId" "govId" Type of identifier in the CSV column |
{- "name": "Employee List Q1 2025",
- "description": "Quarterly employee list update",
- "fileName": "employees.csv",
- "fileSize": 1048576,
- "identifierColumn": "email",
- "identifierType": "email"
}{- "jobId": "sjob_01HQZX...",
- "expiresAt": "2025-01-15T11:00:00Z",
- "segment": { }
}Generates a presigned S3 URL for uploading a new CSV file to an existing CSV import segment
| segmentKey required | string Segment key |
| fileName required | string CSV file name |
| fileSize required | number [ 1 .. 104857600 ] File size in bytes |
| identifierColumn required | string CSV column name containing member identifiers |
| identifierType required | string Enum: "loyaltyMemberId" "publicLoyaltyMemberId" "email" "memberId" "govId" Type of identifier in the CSV column |
{- "fileName": "employees.csv",
- "fileSize": 1048576,
- "identifierColumn": "email",
- "identifierType": "email"
}{- "jobId": "sjob_01HQZX...",
- "expiresAt": "2025-01-15T11:00:00Z",
- "segment": { }
}Returns all import jobs for the given segment, ordered by creation date (newest first)
| segmentKey required | string Segment key |
| page | number >= 0 Example: page=0 The page number for pagination |
| limit | number [ 1 .. 25 ] Example: limit=10 The limit of items to return per page |
| order | string Order of columns in result in the format 'column,asc|desc?'. Samples: ?order=col1 or ?order=col1,asc |
{- "totalCount": 0,
- "page": 0,
- "limit": 0,
- "results": [
- {
- "jobId": "string",
- "segmentKey": "string",
- "status": "PENDING",
- "fileName": "string",
- "fileSize": 0,
- "targetVersion": 0,
- "processedRows": 0,
- "totalRows": 0,
- "validRows": 0,
- "foundMembers": 0,
- "notFoundMembers": 0,
- "notFoundIdentifiers": 0,
- "multipleMatchIdentifiers": 0,
- "startedAt": "2019-08-24T14:15:22Z",
- "completedAt": "2019-08-24T14:15:22Z",
- "errorMessage": "string",
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z"
}
]
}Returns the current status and progress of a CSV import job
| segmentKey required | string Segment key |
| jobId required | string Job ID |
{- "segment": {
- "segmentKey": "seg_01ARZ3NDEKTSV4RRFFQ69G5FAV",
- "name": "VIP Customers",
- "description": "High-value customers with over $1000 in purchases",
- "refreshType": "monthly",
- "segmentType": "bigquery",
- "autoRefreshEnabled": true,
- "isActive": true,
- "audienceKey": "audience_01ARZ3NDEKTSV4RRFFQ69G5FAV",
- "tags": "VIP,High-value",
- "createdAt": "2023-12-01T10:00:00Z",
- "updatedAt": "2023-12-01T12:00:00Z",
- "definition": {
- "logic": {
- "op": "AND",
- "children": [
- {
- "type": "dimension",
- "dimension": "tier",
- "attribute": "name",
- "operator": "=",
- "value": "gold"
}
]
}
}, - "audience": {
- "audienceKey": "aud_01ARZ3NDEKTSV4RRFFQ69G5FAV",
- "active": true,
- "memberCount": 150,
- "refreshedAt": "2023-12-01T15:00:00Z",
- "expiresAt": "2026-12-01T15:00:00Z"
}
}, - "job": {
- "jobId": "string",
- "segmentKey": "string",
- "status": "PENDING",
- "fileName": "string",
- "fileSize": 0,
- "targetVersion": 0,
- "processedRows": 0,
- "totalRows": 0,
- "validRows": 0,
- "foundMembers": 0,
- "notFoundMembers": 0,
- "notFoundIdentifiers": 0,
- "multipleMatchIdentifiers": 0,
- "startedAt": "2019-08-24T14:15:22Z",
- "completedAt": "2019-08-24T14:15:22Z",
- "errorMessage": "string",
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z"
}
}| page | number >= 0 Example: page=0 The page number for pagination |
| limit | number [ 1 .. 25 ] Example: limit=10 The limit of items to return per page |
| order | string Order of columns in result in the format 'column,asc|desc?'. Samples: ?order=col1 or ?order=col1,asc |
| activeOnly | boolean When true, only active (non-deleted) targets are returned. Defaults to true. |
{- "totalCount": 0,
- "page": 0,
- "limit": 0,
- "results": [
- {
- "id": "string",
- "name": "string",
- "targetType": "webhook",
- "config": { },
- "projectionFields": [
- "string"
], - "active": true,
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z"
}
]
}| name required | string [ 1 .. 120 ] characters Display name for the target. Unique per organization. |
| targetType required | string Value: "webhook" Target type. V1 supports |
required | object Type-specific configuration. Validated by the target type registry on the server side; reject as 422 with field-level details on mismatch. |
| projectionFields | Array of strings Optional projection contract: list of member-attribute paths this receiver supports (e.g. |
{- "name": "string",
- "targetType": "webhook",
- "config": { },
- "projectionFields": [
- "string"
]
}{- "target": {
- "id": "string",
- "name": "string",
- "targetType": "webhook",
- "config": { },
- "projectionFields": [
- "string"
], - "active": true,
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z"
}
}| id required | string |
{- "target": {
- "id": "string",
- "name": "string",
- "targetType": "webhook",
- "config": { },
- "projectionFields": [
- "string"
], - "active": true,
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z"
}
}| id required | string |
| name | string [ 1 .. 120 ] characters Display name for the target. Unique per organization. |
object Type-specific configuration. Validated by the target type registry on the server side; reject as 422 with field-level details on mismatch. | |
| projectionFields | Array of strings Optional projection contract: list of member-attribute paths this receiver supports (e.g. |
{- "name": "string",
- "config": { },
- "projectionFields": [
- "string"
]
}{- "target": {
- "id": "string",
- "name": "string",
- "targetType": "webhook",
- "config": { },
- "projectionFields": [
- "string"
], - "active": true,
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z"
}
}| page | number >= 0 Example: page=0 The page number for pagination |
| limit | number [ 1 .. 25 ] Example: limit=10 The limit of items to return per page |
| order | string Order of columns in result in the format 'column,asc|desc?'. Samples: ?order=col1 or ?order=col1,asc |
| targetId | string Filter by activation target id. |
| active | boolean Filter by active state (defaults to all). |
{- "totalCount": 0,
- "page": 0,
- "limit": 0,
- "results": [
- {
- "id": "string",
- "targetId": "string",
- "targetName": "string",
- "name": "string",
- "source": {
- "type": "AUDIENCE",
- "audienceKey": "string"
}, - "scheduleConfig": { },
- "projectionFields": [
- "string"
], - "runConfig": { },
- "active": true,
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z",
- "latestExecution": {
- "id": "string",
- "jobId": "string",
- "status": "PENDING_MATERIALIZATION",
- "triggeredBy": "MANUAL",
- "scheduledAt": "2019-08-24T14:15:22Z",
- "snapshotId": "string",
- "requestedAudienceVersion": "string",
- "materializationRetryCount": 0,
- "nextMaterializationAttemptAt": "2019-08-24T14:15:22Z",
- "materializationError": "string",
- "startedAt": "2019-08-24T14:15:22Z",
- "lastCheckpointAt": "2019-08-24T14:15:22Z",
- "completedAt": "2019-08-24T14:15:22Z",
- "totalMembers": 0,
- "delivered": 0,
- "failed": 0,
- "skipped": 0,
- "errorMessage": "string",
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z"
}
}
]
}| targetId required | string |
| name required | string [ 1 .. 120 ] characters |
required | object Where the member list comes from. |
object | |
| projectionFields | Array of strings Flat list of projection paths. Must be a subset of the target's |
object |
{- "targetId": "string",
- "name": "string",
- "source": {
- "type": "AUDIENCE",
- "audienceKey": "string"
}, - "scheduleConfig": { },
- "projectionFields": [
- "string"
], - "runConfig": { }
}{- "job": {
- "id": "string",
- "targetId": "string",
- "targetName": "string",
- "name": "string",
- "source": {
- "type": "AUDIENCE",
- "audienceKey": "string"
}, - "scheduleConfig": { },
- "projectionFields": [
- "string"
], - "runConfig": { },
- "active": true,
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z",
- "latestExecution": {
- "id": "string",
- "jobId": "string",
- "status": "PENDING_MATERIALIZATION",
- "triggeredBy": "MANUAL",
- "scheduledAt": "2019-08-24T14:15:22Z",
- "snapshotId": "string",
- "requestedAudienceVersion": "string",
- "materializationRetryCount": 0,
- "nextMaterializationAttemptAt": "2019-08-24T14:15:22Z",
- "materializationError": "string",
- "startedAt": "2019-08-24T14:15:22Z",
- "lastCheckpointAt": "2019-08-24T14:15:22Z",
- "completedAt": "2019-08-24T14:15:22Z",
- "totalMembers": 0,
- "delivered": 0,
- "failed": 0,
- "skipped": 0,
- "errorMessage": "string",
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z"
}
}
}| id required | string |
| memberIds required | Array of strings [ 1 .. 1000 ] items Loyalty member ids to deliver in this execution. Duplicates are deduplicated server-side. Inactive members are marked SKIPPED on the first claim; members missing from the read replica are retried up to the target's |
{- "memberIds": [
- "string"
]
}{- "execution": {
- "id": "string",
- "jobId": "string",
- "status": "PENDING_MATERIALIZATION",
- "triggeredBy": "MANUAL",
- "scheduledAt": "2019-08-24T14:15:22Z",
- "snapshotId": "string",
- "requestedAudienceVersion": "string",
- "materializationRetryCount": 0,
- "nextMaterializationAttemptAt": "2019-08-24T14:15:22Z",
- "materializationError": "string",
- "startedAt": "2019-08-24T14:15:22Z",
- "lastCheckpointAt": "2019-08-24T14:15:22Z",
- "completedAt": "2019-08-24T14:15:22Z",
- "totalMembers": 0,
- "delivered": 0,
- "failed": 0,
- "skipped": 0,
- "errorMessage": "string",
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z"
}
}{- "job": {
- "id": "string",
- "targetId": "string",
- "targetName": "string",
- "name": "string",
- "source": {
- "type": "AUDIENCE",
- "audienceKey": "string"
}, - "scheduleConfig": { },
- "projectionFields": [
- "string"
], - "runConfig": { },
- "active": true,
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z",
- "latestExecution": {
- "id": "string",
- "jobId": "string",
- "status": "PENDING_MATERIALIZATION",
- "triggeredBy": "MANUAL",
- "scheduledAt": "2019-08-24T14:15:22Z",
- "snapshotId": "string",
- "requestedAudienceVersion": "string",
- "materializationRetryCount": 0,
- "nextMaterializationAttemptAt": "2019-08-24T14:15:22Z",
- "materializationError": "string",
- "startedAt": "2019-08-24T14:15:22Z",
- "lastCheckpointAt": "2019-08-24T14:15:22Z",
- "completedAt": "2019-08-24T14:15:22Z",
- "totalMembers": 0,
- "delivered": 0,
- "failed": 0,
- "skipped": 0,
- "errorMessage": "string",
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z"
}
}
}| id required | string |
| name | string [ 1 .. 120 ] characters |
object Update the membership source. Changing | |
object | |
| projectionFields | Array of strings Flat list of projection paths. Must be a subset of the target's contract; otherwise 422. |
object | |
| active | boolean |
{- "name": "string",
- "source": {
- "type": "AUDIENCE",
- "audienceKey": "string"
}, - "scheduleConfig": { },
- "projectionFields": [
- "string"
], - "runConfig": { },
- "active": true
}{- "job": {
- "id": "string",
- "targetId": "string",
- "targetName": "string",
- "name": "string",
- "source": {
- "type": "AUDIENCE",
- "audienceKey": "string"
}, - "scheduleConfig": { },
- "projectionFields": [
- "string"
], - "runConfig": { },
- "active": true,
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z",
- "latestExecution": {
- "id": "string",
- "jobId": "string",
- "status": "PENDING_MATERIALIZATION",
- "triggeredBy": "MANUAL",
- "scheduledAt": "2019-08-24T14:15:22Z",
- "snapshotId": "string",
- "requestedAudienceVersion": "string",
- "materializationRetryCount": 0,
- "nextMaterializationAttemptAt": "2019-08-24T14:15:22Z",
- "materializationError": "string",
- "startedAt": "2019-08-24T14:15:22Z",
- "lastCheckpointAt": "2019-08-24T14:15:22Z",
- "completedAt": "2019-08-24T14:15:22Z",
- "totalMembers": 0,
- "delivered": 0,
- "failed": 0,
- "skipped": 0,
- "errorMessage": "string",
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z"
}
}
}| id required | string |
| page | number >= 0 Example: page=0 The page number for pagination |
| limit | number [ 1 .. 100 ] Default: 100 Example: limit=10 The limit of items to return per page |
| order | string Order of columns in result in the format 'column,asc|desc?'. Samples: ?order=col1 or ?order=col1,asc |
| status | Array of strings Items Enum: "PENDING_MATERIALIZATION" "READY" "RUNNING" "COMPLETED" "PARTIALLY_FAILED" "FAILED" "CANCELLED" Filter by status. Repeat to combine: |
{- "totalCount": 0,
- "page": 0,
- "limit": 0,
- "results": [
- {
- "id": "string",
- "jobId": "string",
- "status": "PENDING_MATERIALIZATION",
- "triggeredBy": "MANUAL",
- "scheduledAt": "2019-08-24T14:15:22Z",
- "snapshotId": "string",
- "requestedAudienceVersion": "string",
- "materializationRetryCount": 0,
- "nextMaterializationAttemptAt": "2019-08-24T14:15:22Z",
- "materializationError": "string",
- "startedAt": "2019-08-24T14:15:22Z",
- "lastCheckpointAt": "2019-08-24T14:15:22Z",
- "completedAt": "2019-08-24T14:15:22Z",
- "totalMembers": 0,
- "delivered": 0,
- "failed": 0,
- "skipped": 0,
- "errorMessage": "string",
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z"
}
]
}| id required | string |
| executionId required | string |
{- "execution": {
- "id": "string",
- "jobId": "string",
- "status": "PENDING_MATERIALIZATION",
- "triggeredBy": "MANUAL",
- "scheduledAt": "2019-08-24T14:15:22Z",
- "snapshotId": "string",
- "requestedAudienceVersion": "string",
- "materializationRetryCount": 0,
- "nextMaterializationAttemptAt": "2019-08-24T14:15:22Z",
- "materializationError": "string",
- "startedAt": "2019-08-24T14:15:22Z",
- "lastCheckpointAt": "2019-08-24T14:15:22Z",
- "completedAt": "2019-08-24T14:15:22Z",
- "totalMembers": 0,
- "delivered": 0,
- "failed": 0,
- "skipped": 0,
- "errorMessage": "string",
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z"
}
}| id required | string |
| executionId required | string |
| page | number >= 0 Example: page=0 The page number for pagination |
| limit | number [ 1 .. 500 ] Default: 100 Example: limit=10 The limit of items to return per page |
| order | string Order of columns in result in the format 'column,asc|desc?'. Samples: ?order=col1 or ?order=col1,asc |
| status | Array of strings Items Enum: "PENDING" "IN_FLIGHT" "DELIVERED" "FAILED" "SKIPPED" Filter by tracking status. Most useful as |
{- "totalCount": 0,
- "page": 0,
- "limit": 0,
- "results": [
- {
- "loyaltyMemberId": "string",
- "status": "PENDING",
- "attempts": 0,
- "httpStatus": 0,
- "lastError": "string",
- "claimedAt": "2019-08-24T14:15:22Z",
- "sentAt": "2019-08-24T14:15:22Z",
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z"
}
]
}| ledgerKey required | string |
| X-Q-Forwarded-Org | string Organization Key |
| X-Q-Forwarded-User | string User Key |
{- "ledger": {
- "ledgerKey": "string",
- "name": "Main Loyalty Program Ledger",
- "description": "This is the main Loyalty Program Ledger",
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z",
- "defaultAccountId": 0,
- "organizationKey": "string"
}
}| ledgerKey required | string |
| X-Q-Forwarded-Org | string Organization Key |
| X-Q-Forwarded-User | string User Key |
| name required | string |
| description | string |
{- "name": "Main Loyalty Program Ledger",
- "description": "This is the main Loyalty Program Ledger"
}{- "ledger": {
- "ledgerKey": "string",
- "name": "Main Loyalty Program Ledger",
- "description": "This is the main Loyalty Program Ledger",
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z",
- "defaultAccountId": 0,
- "organizationKey": "string"
}
}| page | number >= 0 The page number for pagination |
| limit | number [ 1 .. 25 ] Example: limit=10 The limit of items to return per page |
| order | string Order of columns in result in the format 'column,asc|desc?'. Samples: ?order=col1 or ?order=col1,asc |
| X-Q-Forwarded-Org | string Organization Key |
| X-Q-Forwarded-User | string User Key |
{- "totalCount": 0,
- "page": 0,
- "limit": 0,
- "results": [
- {
- "ledgerKey": "string",
- "name": "Main Loyalty Program Ledger",
- "description": "This is the main Loyalty Program Ledger",
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z",
- "defaultAccountId": 0,
- "organizationKey": "string"
}
]
}| X-Q-Forwarded-Org | string Organization Key |
| X-Q-Forwarded-User | string User Key |
| name required | string |
| description | string |
{- "name": "Main Loyalty Program Ledger",
- "description": "This is the main Loyalty Program Ledger"
}{- "ledger": {
- "ledgerKey": "string",
- "name": "Main Loyalty Program Ledger",
- "description": "This is the main Loyalty Program Ledger",
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z",
- "defaultAccountId": 0,
- "organizationKey": "string"
}
}| ledgerKey required | string |
| page | number >= 0 The page number for pagination |
| limit | number [ 1 .. 25 ] Example: limit=10 The limit of items to return per page |
| order | string Order of columns in result in the format 'column,asc|desc?'. Samples: ?order=col1 or ?order=col1,asc |
| name | string |
| ledgerAccountKey | string Ledger Account Key |
| alias | string Account Alias |
| X-Q-Forwarded-Org | string Organization Key |
| X-Q-Forwarded-User | string User Key |
{- "totalCount": 0,
- "page": 0,
- "limit": 0,
- "results": [
- {
- "ledgerKey": "string",
- "ledgerAccountKey": "string",
- "alias": "string",
- "name": "Main Ledger Account",
- "active": true,
- "isCurrency": true,
- "decimals": 0,
- "formatString": "string",
- "algorandAssetId": "string",
- "maxSupply": 0,
- "isRevolving": true,
- "pointTrackingEnabled": true,
- "syncAlgorand": true,
- "expiresInMonths": 0,
- "expirationPolicies": [
- {
- "expirationType": "lastTransaction",
- "period": 0
}
], - "issued": 0,
- "isDefaultAccount": true
}
]
}| ledgerKey required | string |
| X-Q-Forwarded-Org | string Organization Key |
| X-Q-Forwarded-User | string User Key |
| alias | string Account alias for easier lookup |
| name required | string |
| active required | boolean |
| isCurrency | boolean Optional Is a currency? for account |
| decimals | number Optional decimals |
| formatString | string Optional Format string for points |
| maxSupply | number Max points supply available (max allowed 18446744073709) |
| isRevolving required | boolean |
| pointTrackingEnabled | boolean |
| syncAlgorand required | boolean Enable algorand blockchain syncing |
| expiresInMonths | number Points expiration in months |
Array of objects (ExpirationPolicyDto) Expiration policies for the account | |
| isDefaultAccount | boolean Is default account for ledger |
{- "alias": "string",
- "name": "Main Ledger Account",
- "active": true,
- "isCurrency": true,
- "decimals": 0,
- "formatString": "string",
- "maxSupply": 0,
- "isRevolving": true,
- "pointTrackingEnabled": true,
- "syncAlgorand": true,
- "expiresInMonths": 0,
- "expirationPolicies": [
- {
- "expirationType": "lastTransaction",
- "period": 0
}
], - "isDefaultAccount": true
}{- "ledgerAccount": {
- "ledgerKey": "string",
- "ledgerAccountKey": "string",
- "alias": "string",
- "name": "Main Ledger Account",
- "active": true,
- "isCurrency": true,
- "decimals": 0,
- "formatString": "string",
- "algorandAssetId": "string",
- "maxSupply": 0,
- "isRevolving": true,
- "pointTrackingEnabled": true,
- "syncAlgorand": true,
- "expiresInMonths": 0,
- "expirationPolicies": [
- {
- "expirationType": "lastTransaction",
- "period": 0
}
], - "issued": 0,
- "isDefaultAccount": true
}
}| ledgerKey required | string |
| ledgerAccountKey required | string |
| X-Q-Forwarded-Org | string Organization Key |
| X-Q-Forwarded-User | string User Key |
{- "ledgerAccount": {
- "ledgerKey": "string",
- "ledgerAccountKey": "string",
- "alias": "string",
- "name": "Main Ledger Account",
- "active": true,
- "isCurrency": true,
- "decimals": 0,
- "formatString": "string",
- "algorandAssetId": "string",
- "maxSupply": 0,
- "isRevolving": true,
- "pointTrackingEnabled": true,
- "syncAlgorand": true,
- "expiresInMonths": 0,
- "expirationPolicies": [
- {
- "expirationType": "lastTransaction",
- "period": 0
}
], - "issued": 0,
- "isDefaultAccount": true
}
}| ledgerKey required | string |
| ledgerAccountKey required | string |
| X-Q-Forwarded-Org | string Organization Key |
| X-Q-Forwarded-User | string User Key |
| alias | string Account alias for easier lookup |
| name required | string |
| active required | boolean |
| isCurrency | boolean Optional Is a currency? for account |
| decimals | number Optional decimals |
| formatString | string Optional Format string for points |
| isRevolving required | boolean |
| pointTrackingEnabled | boolean |
| syncAlgorand required | boolean Enable algorand blockchain syncing |
| expiresInMonths | number Points expiration in months |
Array of objects (ExpirationPolicyDto) Expiration policies for the account | |
| isDefaultAccount | boolean Is default account for ledger |
{- "alias": "string",
- "name": "Main Ledger Account",
- "active": true,
- "isCurrency": true,
- "decimals": 0,
- "formatString": "string",
- "isRevolving": true,
- "pointTrackingEnabled": true,
- "syncAlgorand": true,
- "expiresInMonths": 0,
- "expirationPolicies": [
- {
- "expirationType": "lastTransaction",
- "period": 0
}
], - "isDefaultAccount": true
}{- "ledgerAccount": {
- "ledgerKey": "string",
- "ledgerAccountKey": "string",
- "alias": "string",
- "name": "Main Ledger Account",
- "active": true,
- "isCurrency": true,
- "decimals": 0,
- "formatString": "string",
- "algorandAssetId": "string",
- "maxSupply": 0,
- "isRevolving": true,
- "pointTrackingEnabled": true,
- "syncAlgorand": true,
- "expiresInMonths": 0,
- "expirationPolicies": [
- {
- "expirationType": "lastTransaction",
- "period": 0
}
], - "issued": 0,
- "isDefaultAccount": true
}
}Use an empty maxSupply or body {} to increase to an infinite supply.
| ledgerKey required | string |
| ledgerAccountKey required | string |
| X-Q-Forwarded-Org | string Organization Key |
| X-Q-Forwarded-User | string User Key |
| externalEventDate | string <date-time> Optional Reference Event Date |
| systemUniqueKey | string System Unique Key for tracking |
| externalId | string Event Id for tracking |
| description | string |
| tags | Array of arrays |
| maxSupply | number Max points supply available (max allowed 18446744073709) |
{- "externalEventDate": "2019-08-24T14:15:22Z",
- "systemUniqueKey": "string",
- "externalId": "string",
- "description": "string",
- "tags": [
- "tag1",
- "tag2"
], - "maxSupply": 0
}{- "transactions": [
- {
- "externalEventDate": "2019-08-24T14:15:22Z",
- "systemUniqueKey": "string",
- "externalId": "string",
- "description": "string",
- "tags": [
- "tag1",
- "tag2"
], - "ledgerTransactionId": 1,
- "revertedLedgerTransactionId": 0,
- "reversalLedgerTransactionId": 0,
- "ledgerAccountId": 0,
- "ledgerAccountKey": "string",
- "transactionType": [
- "0",
- "1",
- "2",
- "3",
- "transfer",
- "mint",
- "burn",
- "revert"
], - "status": [
- 0,
- 1,
- 2
], - "amount": 0,
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z",
- "walletId": 0,
- "fromWalletId": 0,
- "ledgerTransactionDetailIndex": 0,
- "toWalletId": 0,
- "updatedBalance": 0,
- "fiatValue": 0,
- "fiatGrossAmount": 0,
- "fiatCurrency": "string"
}
]
}| page | number >= 0 The page number for pagination |
| limit | number [ 1 .. 25 ] Example: limit=10 The limit of items to return per page |
| order | string Order of columns in result in the format 'column,asc|desc?'. Samples: ?order=col1 or ?order=col1,asc |
| loyaltyTierKey | string Loyalty Tier Key |
| onlyActive | boolean Only active loyalty tiers |
| loyaltyProgramKey | string Loyalty Program Key |
{- "totalCount": 0,
- "page": 0,
- "limit": 0,
- "results": [
- {
- "loyaltyTierKey": "string",
- "name": "Silver",
- "loyaltyProgramKey": "string",
- "active": true,
- "minRequiredPoints": 1000,
- "customAttributes": {
- "someAttr": "some value",
- "someOtherAttr": 1
}, - "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z",
- "tierOrder": 1,
- "isDefault": true
}
]
}| name required | string Descriptive name for this Level. |
| active required | boolean |
| minRequiredPoints required | number Minimun balance in Point Accrual Account to move to this Tier Level |
| tierOrder required | number Order between all the program tiers. |
| customAttributes | object |
| pictureUrl | string Descriptive image url for this tier. |
| isDefault | boolean Boolean to set tier as default |
| loyaltyProgramKey | string Loyalty Program Key. Defaults to the default program if omitted. |
{- "name": "Silver",
- "active": true,
- "minRequiredPoints": 1000,
- "tierOrder": 1,
- "customAttributes": {
- "someAttr": "some value",
- "someOtherAttr": 1
}, - "isDefault": true,
- "loyaltyProgramKey": "string"
}{- "tier": {
- "loyaltyTierKey": "string",
- "name": "Silver",
- "loyaltyProgramKey": "string",
- "active": true,
- "minRequiredPoints": 1000,
- "customAttributes": {
- "someAttr": "some value",
- "someOtherAttr": 1
}, - "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z",
- "tierOrder": 1,
- "isDefault": true
}
}{- "tier": {
- "loyaltyTierKey": "string",
- "name": "Silver",
- "loyaltyProgramKey": "string",
- "active": true,
- "minRequiredPoints": 1000,
- "customAttributes": {
- "someAttr": "some value",
- "someOtherAttr": 1
}, - "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z",
- "tierOrder": 1,
- "isDefault": true
}
}{- "tier": {
- "loyaltyTierKey": "string",
- "name": "Silver",
- "loyaltyProgramKey": "string",
- "active": true,
- "minRequiredPoints": 1000,
- "customAttributes": {
- "someAttr": "some value",
- "someOtherAttr": 1
}, - "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z",
- "tierOrder": 1,
- "isDefault": true
}
}| loyaltyTierKey required | string |
| name required | string Descriptive name for this Level. |
| active required | boolean |
| minRequiredPoints required | number Minimun balance in Point Accrual Account to move to this Tier Level |
| tierOrder required | number Order between all the program tiers. |
| customAttributes | object |
| pictureUrl | string Descriptive image url for this tier. |
| isDefault | boolean Boolean to set tier as default |
{- "name": "Silver",
- "active": true,
- "minRequiredPoints": 1000,
- "tierOrder": 1,
- "customAttributes": {
- "someAttr": "some value",
- "someOtherAttr": 1
}, - "isDefault": true
}{- "tier": {
- "loyaltyTierKey": "string",
- "name": "Silver",
- "loyaltyProgramKey": "string",
- "active": true,
- "minRequiredPoints": 1000,
- "customAttributes": {
- "someAttr": "some value",
- "someOtherAttr": 1
}, - "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z",
- "tierOrder": 1,
- "isDefault": true
}
}| page | number >= 0 The page number for pagination |
| limit | number [ 1 .. 25 ] Example: limit=10 The limit of items to return per page |
| order | string Order of columns in result in the format 'column,asc|desc?'. Samples: ?order=col1 or ?order=col1,asc |
| orderLocationCodes | string Filter by location codes (comma-separated) |
| orderLocationLabel | string Filter by order location label (partial match, case insensitive) |
| tags | string Filter by tags (comma-separated, returns locations that contain any of the specified tags) |
| type | string Enum: "location" "group" Filter by location type |
{- "totalCount": 0,
- "page": 0,
- "limit": 0,
- "results": [
- {
- "orderLocationCode": "argentina",
- "orderLocationLabel": "Argentina",
- "type": "location",
- "tags": [
- "ar",
- "buenos-aires"
], - "filterTags": [
- "ar",
- "buenos-aires"
], - "filterLabelPattern": "%aires%",
- "filterExcludedCodes": [
- "excluded-code-1"
], - "createdAt": "2024-01-15T10:30:00Z",
- "updatedAt": "2024-01-15T10:30:00Z",
- "organizationKey": "org_abc123"
}
]
}| orderLocationCode required | string Unique order location code identifier |
| orderLocationLabel required | string Display label for the order location |
| type | string Enum: "location" "group" Type of order location. Defaults to 'location'. |
| tags | Array of strings Order location tags |
| filterTags | Array of strings Tags filter for group membership (only for type 'group') |
| filterLabelPattern | string Label ILIKE pattern filter for matching locations (only for type 'group') |
| filterExcludedCodes | Array of strings Location codes to explicitly exclude from the group (only for type 'group') |
{- "orderLocationCode": "argentina",
- "orderLocationLabel": "Argentina",
- "type": "location",
- "tags": [
- "ar",
- "buenos-aires"
], - "filterTags": [
- "ar",
- "br"
], - "filterLabelPattern": "%aires%",
- "filterExcludedCodes": [
- "excluded-code-1"
]
}{- "orderLocation": {
- "orderLocationCode": "argentina",
- "orderLocationLabel": "Argentina",
- "type": "location",
- "tags": [
- "ar",
- "buenos-aires"
], - "filterTags": [
- "ar",
- "buenos-aires"
], - "filterLabelPattern": "%aires%",
- "filterExcludedCodes": [
- "excluded-code-1"
], - "createdAt": "2024-01-15T10:30:00Z",
- "updatedAt": "2024-01-15T10:30:00Z",
- "organizationKey": "org_abc123"
}
}| orderLocationCode required | string |
{- "orderLocation": {
- "orderLocationCode": "argentina",
- "orderLocationLabel": "Argentina",
- "type": "location",
- "tags": [
- "ar",
- "buenos-aires"
], - "filterTags": [
- "ar",
- "buenos-aires"
], - "filterLabelPattern": "%aires%",
- "filterExcludedCodes": [
- "excluded-code-1"
], - "createdAt": "2024-01-15T10:30:00Z",
- "updatedAt": "2024-01-15T10:30:00Z",
- "organizationKey": "org_abc123"
}
}| orderLocationCode required | string |
| type | string Enum: "location" "group" Type cannot be changed after creation. Sending a different type will return 400. |
| orderLocationLabel | string Display label for the order location |
| tags | Array of strings Order location tags |
| filterTags | Array of strings Tags filter for group membership (only for type 'group') |
| filterLabelPattern | string Label ILIKE pattern filter for matching locations (only for type 'group') |
| filterExcludedCodes | Array of strings Location codes to explicitly exclude from the group (only for type 'group') |
{- "type": "location",
- "orderLocationLabel": "Argentina",
- "tags": [
- "ar",
- "buenos-aires"
], - "filterTags": [
- "ar",
- "br"
], - "filterLabelPattern": "%aires%",
- "filterExcludedCodes": [
- "excluded-code-1"
]
}{- "orderLocation": {
- "orderLocationCode": "argentina",
- "orderLocationLabel": "Argentina",
- "type": "location",
- "tags": [
- "ar",
- "buenos-aires"
], - "filterTags": [
- "ar",
- "buenos-aires"
], - "filterLabelPattern": "%aires%",
- "filterExcludedCodes": [
- "excluded-code-1"
], - "createdAt": "2024-01-15T10:30:00Z",
- "updatedAt": "2024-01-15T10:30:00Z",
- "organizationKey": "org_abc123"
}
}| codes required | Array of strings List of order location codes to resolve. Each code must be unique. |
{- "codes": [
- "argentina",
- "latam-group"
]
}{- "resolvedCodes": [
- "argentina",
- "latam-group",
- "brazil"
]
}| page | number >= 0 The page number for pagination |
| limit | number [ 1 .. 25 ] Example: limit=10 The limit of items to return per page |
| order | string Order of columns in result in the format 'column,asc|desc?'. Samples: ?order=col1 or ?order=col1,asc |
| productCategoryCodes | Array of strings Example: productCategoryCodes=electronics&productCategoryCodes=clothing&productCategoryCodes=food Filter by product category codes |
| search | string Filter by code, label or tags |
{- "totalCount": 0,
- "page": 0,
- "limit": 0,
- "results": [
- {
- "productCategoryCode": "electronics",
- "productCategoryLabel": "Electronics",
- "tags": [
- "tech",
- "gadgets"
], - "createdAt": "2024-01-15T10:30:00Z",
- "updatedAt": "2024-01-15T10:30:00Z"
}
]
}| productCategoryCode required | string Unique product category code |
| productCategoryLabel required | string Human-readable product category label |
| tags | Array of strings Product category tags |
{- "productCategoryCode": "electronics",
- "productCategoryLabel": "Electronics",
- "tags": [
- "tech",
- "gadgets"
]
}{- "productCategory": {
- "productCategoryCode": "electronics",
- "productCategoryLabel": "Electronics",
- "tags": [
- "tech",
- "gadgets"
], - "createdAt": "2024-01-15T10:30:00Z",
- "updatedAt": "2024-01-15T10:30:00Z"
}
}| productCategoryCode required | string |
{- "productCategory": {
- "productCategoryCode": "electronics",
- "productCategoryLabel": "Electronics",
- "tags": [
- "tech",
- "gadgets"
], - "createdAt": "2024-01-15T10:30:00Z",
- "updatedAt": "2024-01-15T10:30:00Z"
}
}| productCategoryCode required | string |
| productCategoryLabel | string Human-readable product category label |
| tags | Array of strings Product category tags |
{- "productCategoryLabel": "Electronics",
- "tags": [
- "tech",
- "gadgets"
]
}{- "productCategory": {
- "productCategoryCode": "electronics",
- "productCategoryLabel": "Electronics",
- "tags": [
- "tech",
- "gadgets"
], - "createdAt": "2024-01-15T10:30:00Z",
- "updatedAt": "2024-01-15T10:30:00Z"
}
}| page | number >= 0 The page number for pagination |
| limit | number [ 1 .. 25 ] Example: limit=10 The limit of items to return per page |
| order | string Order of columns in result in the format 'column,asc|desc?'. Samples: ?order=col1 or ?order=col1,asc |
| dashboardKey | string |
| status | string Enum: "draft" "published" "archived" |
{- "totalCount": 0,
- "page": 0,
- "limit": 0,
- "results": [
- {
- "organizationKey": "string",
- "dashboardKey": "string",
- "name": "string",
- "description": "string",
- "status": "draft",
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z"
}
]
}| name required | string |
| description | string |
| status | string Default: "draft" Enum: "draft" "published" "archived" |
{- "name": "Customer engagement overview",
- "description": "Tracks weekly engagement KPIs.",
- "status": "draft"
}{- "dashboard": {
- "organizationKey": "string",
- "dashboardKey": "string",
- "name": "string",
- "description": "string",
- "status": "draft",
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z"
}
}| dashboardKey required | string |
{- "dashboard": {
- "organizationKey": "string",
- "dashboardKey": "string",
- "name": "string",
- "description": "string",
- "status": "draft",
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z"
}, - "widgets": [
- {
- "organizationKey": "string",
- "widgetKey": "string",
- "name": "string",
- "description": "string",
- "status": "published",
- "type": "string",
- "source": "live",
- "params": { },
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z",
- "query": { },
- "widgetOrder": 0
}
], - "widgetQueryParameters": { }
}| dashboardKey required | string |
| name | string |
| description | string |
| status | string Enum: "draft" "published" "archived" |
{- "name": "string",
- "description": "string",
- "status": "draft"
}{- "dashboard": {
- "organizationKey": "string",
- "dashboardKey": "string",
- "name": "string",
- "description": "string",
- "status": "draft",
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z"
}
}| dashboardKey required | string |
| widgetKey required | string |
| widgetOrder | number Optional 0-based position. If omitted, the widget is appended. |
{- "widgetKey": "string",
- "widgetOrder": 0
}{- "widget": {
- "organizationKey": "string",
- "widgetKey": "string",
- "name": "string",
- "description": "string",
- "status": "published",
- "type": "string",
- "source": "live",
- "params": { },
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z",
- "query": { },
- "widgetOrder": 0
}
}| dashboardKey required | string |
required | Array of objects (DashboardWidgetEntryDto) | ||||
Array
| |||||
{- "widgets": [
- {
- "widgetKey": "string",
- "widgetOrder": 0
}
]
}{- "widgets": [
- {
- "organizationKey": "string",
- "widgetKey": "string",
- "name": "string",
- "description": "string",
- "status": "published",
- "type": "string",
- "source": "live",
- "params": { },
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z",
- "query": { },
- "widgetOrder": 0
}
]
}| page | number >= 0 The page number for pagination |
| limit | number [ 1 .. 25 ] Example: limit=10 The limit of items to return per page |
| order | string Order of columns in result in the format 'column,asc|desc?'. Samples: ?order=col1 or ?order=col1,asc |
| widgetKey | string |
| status | string Enum: "published" "archived" |
| type | string |
| source | string Enum: "live" "warehouse" |
{- "totalCount": 0,
- "page": 0,
- "limit": 0,
- "results": [
- {
- "organizationKey": "string",
- "widgetKey": "string",
- "name": "string",
- "description": "string",
- "status": "published",
- "type": "string",
- "source": "live",
- "params": { },
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z",
- "query": { }
}
]
}| name required | string |
| description | string |
| type required | string Widget visualization type. Free string for now. |
| source required | string Enum: "live" "warehouse" How the |
| query required | object Query payload. Shape depends on |
| params | object Visualization params, depends on type. |
| status | string Default: "published" Enum: "published" "archived" |
{- "name": "Active members per day",
- "description": "string",
- "type": "chart",
- "source": "live",
- "query": { },
- "params": { },
- "status": "published"
}{- "widget": {
- "organizationKey": "string",
- "widgetKey": "string",
- "name": "string",
- "description": "string",
- "status": "published",
- "type": "string",
- "source": "live",
- "params": { },
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z",
- "query": { }
}
}{- "widget": {
- "organizationKey": "string",
- "widgetKey": "string",
- "name": "string",
- "description": "string",
- "status": "published",
- "type": "string",
- "source": "live",
- "params": { },
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z",
- "query": { }
}
}| widgetKey required | string |
| name | string |
| description | string |
| type | string |
| source | string Enum: "live" "warehouse" |
| query | object |
| params | object |
| status | string Enum: "published" "archived" |
{- "name": "string",
- "description": "string",
- "type": "string",
- "source": "live",
- "query": { },
- "params": { },
- "status": "published"
}{- "widget": {
- "organizationKey": "string",
- "widgetKey": "string",
- "name": "string",
- "description": "string",
- "status": "published",
- "type": "string",
- "source": "live",
- "params": { },
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z",
- "query": { }
}
}| source required | string Enum: "live" "warehouse" Widget source. Only 'warehouse' is accepted — 'live' is rejected (live SQL is internal). |
| query required | object Query payload — same shape as create. |
| parameters | object Override values for the parameters declared in |
| pageSize | number [ 1 .. 100 ] Number of rows to preview. Default 100. Must be between 1 and 100. Preview is single-page — pagination is not supported. |
{- "source": "live",
- "query": { },
- "parameters": { },
- "pageSize": 1
}{- "columns": [
- {
- "alias": "string",
- "type": "string"
}
], - "rows": [ ],
- "metadata": {
- "pageSize": 0,
- "rowCount": 0,
- "estimatedCount": 0,
- "valid": true,
- "error": "string"
}
}| widgetKey required | string |
| pageSize | number [ 1 .. 100 ] Number of rows per page. Default 100. Must be between 1 and 100. |
| pageToken | string Cursor returned by the previous response in |
| parameters | object Override values for the parameters declared in |
{- "pageSize": 1,
- "pageToken": "string",
- "parameters": { }
}{- "columns": [
- {
- "alias": "string",
- "type": "string"
}
], - "rows": [ ],
- "metadata": {
- "pageSize": 0,
- "rowCount": 0,
- "estimatedCount": 0,
- "valid": true,
- "error": "string",
- "nextPageToken": "string"
}
}| widgetKey required | string |
{- "dashboards": [
- {
- "organizationKey": "string",
- "dashboardKey": "string",
- "name": "string",
- "description": "string",
- "status": "draft",
- "widgetOrder": 0,
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z"
}
]
}