Get Details of all Loyalty Promotions

Recent Requests
Log in to see full request history
TimeStatusUser Agent
Retrieving recent requests…
LoadingLoading…

This endpoint retrieves a paginated list of all unified promotions within the organization, allowing filtering and sorting.

Example request

curl --location 'https://{Host}/v3/promotions' \
--header 'Authorization: Basic Z2VvcmdlLmJ1a2w6NzYzNDkxOGF4ZjU4ZjY3MmNhZjY1ZmY=' \
--header 'Cookie: _cfuvid=FpP1pTKDZjT_pAkTzJBGUZqKDqpA-1761801071752-0.0.1.1-604800000'
curl --location 'https://eu.api.capillarytech.com/v3/promotions?searchText=sign%20up' \
--header 'Authorization: Basic Z2VvcmdlLmRvY2RlbW86NjYjk1MWY5MGY1NTY5NDk1YmNkNzUxYmJiY2U=' \
--header 'Cookie: _cfuvid=FpP1pTKkTzJBGUZqKDqpA-1761801071752-0.0.1.1-604800000; _cfuvid=jnGbtvnNJI85qRcw7Ho7SDPv5sP0HLx9pom2SRZtKoQ-1765204446635-0.0.1.1-604800000'

Prerequisites

  • Authentication: Basic or OAuth authentication.
  • Default access group

Resource information

PaginationYes
Batch supportNo

Query parameters

FieldTypeRequiredDescription
searchTextstringOptionalSpecifies a search term to filter promotions by name or description. Use this to quickly find promotions containing specific keywords, like "Holiday Bonus". Supported Values: String. Example: "Holiday Bonus"
statusStringOptional

Specifies an array of statuses to filter by, allowing retrieval of only promotions in specific states.
You can specify multiple values, separated by commas.

Supported Values: DRAFT, ACTIVE, PAUSED, PENDING_APPROVAL, LIVE, UPCOMING.

Example: ACTIVE, UPCOMING

pageintegerOptionalSpecifies the page number to retrieve (0-indexed) for pagination. Use 0 for the first page, 1 for the second, etc.
sizeintegerOptionalSpecifies the number of promotions to return per page. Set to 20 to retrieve 20 promotions at a time. Supported Values: Positive integer.
Default value: 10
includeDraftDetailsbooleanOptionalIndicates whether to include details about the draft version if a promotion exists as both a live version and a draft. true includes extra draft info.
Default is false

Example response

{
    "data": {
        "content": [
            {
                "metadata": {
                    "name": "Efd Activity Based Prom",
                    "description": "Enrollment for all members, requires activity-based opt-in.",
                    "programId": "HiddenGemDefaultProgram_ID",
                    "orgId": 100458,
                    "startDate": "2025-11-27T00:00:00Z",
                    "endDate": "2025-12-27T23:59:59Z",
                    "timezoneName": "Asia/Kolkata",
                    "promotionType": "LOYALTY",
                    "status": "DRAFT",
                    "promoIdentifier": null,
                    "promotionId": 0,
                    "createdOn": "2025-10-30T08:43:29Z",
                    "lastModifiedOn": "2025-10-30T08:43:29Z",
                    "createdBy": 0,
                    "lastModifiedBy": 0,
                    "loyaltyEarningType": null,
                    "version": null,
                    "draftDetails": null,
                    "loyaltyConfigMetaData": {
                        "isStackable": false,
                        "isConsideredForRanking": false,
                        "isExclusive": false,
                        "isAlwaysApply": false,
                        "skipEarnedDateCheckOnRedeem": null
                    },
                    "promotionMetadata": null,
                    "commonStrategies": null,
                    "promotionMode": "UNIFIED"
                },
                "customerEnrolment": {
                    "enrolmentMethod": "TRANSACTION"
                    "enrolmentMethod": "TRANSACTION",
                    "customerEligibilityType": "ALL"
                },
                "activities": [
                    {
                        "type": "SINGLE",
                        "id": "activity_reward_trigger",
                        "type": "SINGLE",
                        "name": "Main Reward Activity",
                        "commonCycleActionMapping": [
                            {
                                "cycle": "cycle_promo_period",
                                "actions": [
                                    {
                                        "id": "action_award_points",
                                        "actionName": "AWARD_CURRENCY",
                                        "actionClass": "com.capillary.loyalty.engine.actor.promotion.actions.AwardCurrency",
                                        "mandatoryPropertiesValues": {
                                            "POINTS_TO_AWARD": "100",
                                            "CURRENCY_IDENTIFIER": "POINTS"
                                        }
                                    }
                                ],
                                "startDate": "2025-11-27",
                                "endDate": "2025-12-27"
                            }
                        ],
                        "event": "TransactionAdd",
                        "allCycles": []
                    }
                ],
                "comments": null,
                "parentId": null,
                "parentDetails": null,
                "version": 1,
                "limits": [],
                "liabilityOwnerSplitInfo": [],
                "id": "6903253184daf5486232dec9",
                "workflowMetadata": {
                    "enrolment": {
                        "basedOn": null,
                        "activities": null,
                        "audienceMapping": null,
                        "restrictions": null
                    },
                    "optin": {
                        "basedOn": "ACTIVITY",
                        "audienceMapping": null,
                        "activities": [
                            {
                                "type": "SINGLE",
                                "id": "activity_optin_trigger",
                                "type": "SINGLE",
                                "name": "Opt-in Trigger Activity",
                                "event": "TransactionAdd",
                                "allCycles": []
                            }
                        ],
                        "restrictions": null
                    }
                },
                "communicationApprovalStatus": null
            }
        ],
        "pageable": {
            "pageNumber": 0,
            "pageSize": 10,
            "sort": {
                "empty": true,
                "sorted": false,
                "unsorted": true
            },
            "offset": 0,
            "unpaged": false,
            "paged": true
        },
        "totalElements": 1,
        "totalPages": 1,
        "last": true,
        "size": 10,
        "number": 0,
        "sort": {
            "empty": true,
            "sorted": false,
            "unsorted": true
        },
        "numberOfElements": 1,
        "first": true,
        "empty": false
    },
    "errors": null,
    "warnings": null
}

Response parameters

FieldTypeDescription
dataObjectDefines the main data object containing pagination details and the list of promotions.
.totalElementsintegerSpecifies the total number of promotions found matching the filter criteria across all pages.
.totalPagesintegerSpecifies the total number of pages available based on the size parameter.
.sizeintegerSpecifies the number of items requested per page.
.contentObjectDefines the list of UnifiedPromotion objects for the current page.
..idStringSpecifies the unique system-generated identifier for the unified promotion.
..metadataObjectDefines the object containing all metadata for the promotion.
...nameStringSpecifies the display name of the promotion.
...descriptionStringSpecifies the description of the promotion.
...programIdStringSpecifies the unique ID of the loyalty program this promotion belongs to.
...orgIdIntegerSpecifies the unique ID of the organization that owns this promotion.
...startDateString (date-time)Specifies the date and time from which the promotion becomes active, in ISO 8601 format.
...endDateString (date-time)Specifies the end date and time of the promotion in ISO 8601 format.
...timezoneNameStringSpecifies the timezone name for the promotion's schedule.
...promotionTypeStringSpecifies the type of the promotion, which determines how rewards are issued to customers.
...statusStringIndicates the current lifecycle status of the promotion.
...promoIdentifierStringSpecifies the external identifier configured for the promotion. Unlike the system-generated promotionId, this is a human-readable or externally assigned string used to reference the promotion across systems.
...promotionIdInteger (int32)Specifies the legacy numerical promotion ID.
...createdOnString (date-time)Specifies the creation timestamp, in ISO time format.
...lastModifiedOnString (date-time)Specifies the date and time when the promotion was last modified, in ISO time format.
...createdByInteger (int32)Specifies the user ID of the creator.
...lastModifiedByInteger (int32)Specifies the user ID of the user who has last modified the promotion.
...loyaltyEarningTypeStringIndicates how customers earn rewards under this promotion — whether points are issued automatically on a qualifying event, or whether the customer must first opt in before earning.
...versionStringSpecifies the version label of the promotion configuration, which increments each time the promotion is significantly updated.
...draftDetailsObjectDefines details if the promotion is a draft. Included if includeDraftDetails is true.
....idStringSpecifies the draft's unique ID.
....statusStringSpecifies the current status of the draft version.
....versionInteger (int32)Specifies the draft version number.
....lastModifiedByInteger (int32)Specifies the user who last modified the draft.
....lastModifiedOnString (date-time)Specifies when the draft was last modified. Possible Values: ISO 8601 date-time string.
...loyaltyConfigMetaDataObjectDefines loyalty-specific configurations.
....isStackableBooleanIndicates if the promotion can be applied alongside other active promotions within the same transaction.
....isConsideredForRankingBooleanIndicates if the promotion is included in priority ranking, which controls which promotions take precedence when multiple are applicable to the same transaction.
....isExclusiveBooleanIndicates if the promotion is evaluated in isolation, preventing any other promotion from being applied in the same transaction.
....isAlwaysApplyBooleanIndicates if the promotion is applied unconditionally, bypassing the ranking and stacking rules configured for the org.
....skipEarnedDateCheckOnRedeemBooleanIndicates if customers can redeem rewards from this promotion outside its active earning period.
...promotionMetadataArray (Object)Defines a list of custom key-value metadata pairs.
....isBrandDefinedStringIndicates if this metadata key-value pair was configured by the brand, as opposed to being system-generated.
....keyStringSpecifies the metadata key.
....valueStringSpecifies the value associated with the metadata key.
...commonStrategiesObjectDefines shared configuration strategies applied across the promotion, such as how issued points or benefits expire.
....expiryArray (Object)Defines the expiry rules that determine when points or benefits issued under this promotion become invalid.
.....strategyTypeIdInteger (int32)Specifies the unique identifier of the expiry strategy type applied to this promotion.
.....propertyValuesStringSpecifies the configuration parameters of the expiry strategy as a JSON string, such as the expiry duration.
.....ownerStringSpecifies the entity responsible for managing this expiry strategy.
.....updatedViaNewUIBooleanIndicates if this expiry strategy was last updated using the Loyalty+ UI.
.....useCommonExpiryStrategyBooleanIndicates if the promotion uses the org-level expiry strategy instead of a promotion-level configuration.
.....strategyRefStringSpecifies the reference ID that links this expiry configuration to its strategy definition.
.....strategySubTypeStringIndicates the sub-type of the expiry strategy, such as a fixed expiry date or a rolling window from the date of issue.
...promotionModeStringIndicates the mode under which the promotion was created.
..customerEnrolmentObjectDefines the customer enrollment rules.
...enrolmentMethodStringIndicates how customers are enrolled into the promotion.
...customerEligibilityTypeStringRestricts which customers are eligible based on loyalty enrollment status. Values: LOYAL, NON_LOYAL, ALL.
...audienceGroupsArray (Object)Defines a list of audience groups for enrollment.
....audienceGroupIdInteger (int64)Specifies the unique ID for the audience group.
....audienceGroupNameStringSpecifies the name of the audience group.
....descriptionStringSpecifies the description of the audience group.
..activitiesArray (Object)Defines a list of activities.
...idStringSpecifies the unique ID for the activity.
...typeStringSpecifies the type of the activity.
...nameStringSpecifies the name of the activity.
...refIdStringSpecifies the reference ID for the activity.
...parentIdStringSpecifies the parent activity's ID.
...commonCycleActionMappingArray (Object)Defines action mappings for common cycles.
....cycleStringSpecifies the cycle name/ID.
....defaultValueNumber (double)Specifies the default value for the action.
....actionsArray (Object)Defines a list of actions.
.....idStringSpecifies the action ID.
.....actionNameStringIdentifies the type of reward action. Supported values: AWARD_POINTS_ACTION (award points), AWARD_CURRENCY (award currency like points), AWARD_BADGE (award badge), PE_ISSUE_VOUCHER_ACTION (issue coupon), EARN_PROMOTION_ACTION (earn promotion for opt-in workflows), UPGRADE_SLAB_ACTION_SLAB (upgrade tier), INITIATE_SUPPLEMENTARY_MEMBERSHIP (enroll in secondary program).
.....actionClassStringFully qualified Java class name that implements the action. Example: com.capillary.shopbook.pointsengine.endpoint.impl.action.AwardPointsActionImpl for awarding points, or com.capillary.loyalty.engine.actor.promotion.actions.AwardCurrency for unified promotions.
.....descriptionStringSpecifies the action description.
.....mandatoryPropertiesValuesObjectDefines key-value pairs for mandatory properties.
.....mandatoryComplexPropertiesValuesObjectDefines key-value pairs for mandatory complex properties.
.....embeddedStrategiesArray (Object)Defines a list of embedded StrategyInfo objects.
....startDateString (date-time)Specifies the cycle mapping start date, in ISO 8601 date-time.
....endDateString (date-time)Specifies the cycle mapping end date, in ISO 8601 date-time.
....rulesetIdStringSpecifies the cycle mapping ruleset ID.
...rulesetIdStringSpecifies the ruleset ID for the activity.
...cyclesArray (Object)Defines a list of general cycles.
...eventStringSpecifies the event associated with the single activity.
...ruleExpressionStringSpecifies the rule expression for the single activity.
...expJSONStringSpecifies the rule expression in JSON format.
...frequencyTypeStringSpecifies the frequency type.
...targetEvaluationTypeStringSpecifies the target evaluation type.
...targetCycleStartDateString (date-time)Specifies the target cycle start date, in ISO 8601 date-time.
...targetCycleEndDateString (date-time)Specifies the target cycle end date, in ISO 8601 date-time.
...activityCyclesArray (Object)Defines activity-specific cycles.
...milestonesArray (Object)Defines milestones.
...allCyclesArray (Object)Defines a list of all cycles.
...eventStringSpecifies the event associated with the group activity.
...combinationTypeStringIndicates how child activities are combined.
...childrenArray (Object)Defines a nested list of child GroupActivity or SingleActivity objects.
...ruleExpressionStringSpecifies the rule expression for the group activity.
...expJSONStringSpecifies the rule expression in JSON format.
..commentsStringSpecifies any comments on the promotion.
..parentIdStringSpecifies the ID of the parent promotion.
..parentDetailsObjectDefines details of the parent promotion.
...idStringSpecifies the parent promotion ID.
...statusStringSpecifies the parent promotion status.
...versionInteger (int32)Specifies the parent promotion version.
...lastModifiedByInteger (int32)Specifies the user who last modified the parent.
...lastModifiedOnString (date-time)Specifies when the parent was last modified.
..versionInteger (int32)Specifies the version number of the promotion.
..limitsArray (Object)Defines a list of limits for the promotion.
...idInteger (int64)Specifies the limit ID.
...entityScopeStringIndicates whether the limit applies to each individual customer or across the promotion as a whole.
...granularityStringIndicates the time-based frequency at which the limit resets and is re-evaluated.
...entityIdInteger (int64)Specifies the entity ID the limit applies to.
...actionTypeStringIndicates the action type being limited.
...actionSubTypeIdStringSpecifies the action sub-type ID.
...limitTypeStringIndicates what the limit controls — the number of times the promotion can be applied, or the total points that can be awarded.
...limitValueNumberSpecifies the value of the limit.
...periodObjectDefines the time period for the limit.
....idInteger (int64)Specifies the period ID.
....periodTypeStringIndicates whether the limit resets on a rolling schedule or applies across the full duration of the promotion.
....periodUnitStringIndicates the time unit of the rolling window over which the limit is enforced.
....periodValueInteger (int32)Specifies the value for the period.
....periodStartDayStringIndicates the start day for weekly periods.
....startDateString (date-time)Specifies the fixed start date for the period, in ISO 8601 date-time.
....endDateString (date-time)Specifies the fixed end date for the period, in ISO 8601 date-time.
...createdOnString (date-time)Specifies the creation timestamp of the limit, in ISO 8601 date-time.
...createdByInteger (int64)Specifies the user ID of the limit creator. Possible Values: Integer user ID (system-set).
...lastUpdatedOnString (date-time)Specifies the last update timestamp of the limit, in ISO 8601 date-time.
...lastUpdatedByInteger (int64)Specifies the user ID of the last updater.
...activeBooleanIndicates if the limit is active. Possible Values: true, false.
..liabilityOwnerSplitInfoArray (Object)Defines how liability is split.
...orgIdInteger (int32)Specifies the organization ID.
...liabilityOwnerIdInteger (int32)Specifies the liability owner ID.
...componentIdInteger (int32)Specifies the component ID.
...componentTypeStringIndicates the component type. Possible Values: PROGRAM, PROMOTION.
...createdByInteger (int32)Specifies the user ID of the creator.
...ratioNumber (double)Specifies the liability split ratio. Possible Values: Number between 0 and 1.
...liabilityOwnerNameStringSpecifies the liability owner's name.
...liabilityOwnerTypeStringIndicates the liability owner's type. Possible Values: PARTNER, PROGRAM.
...activeBooleanIndicates if the split info is active. Possible Values: true, false.
..workflowMetadataObjectDefines workflow metadata for enrolment and opt-in.
...enrolmentObjectDefines enrolment workflow details (Enrolment). Possible Values: A valid Enrolment object or empty object {}.
....basedOnStringIndicates the basis for enrolment. Possible Values: ACTIVITY, AUDIENCE, EXTERNAL_TRIGGER.
....activitiesArray (Object)Defines activities triggering enrolment.
....audienceMappingArray (Object)Defines audience mappings for enrolment.
.....groupIdInteger (int64)Specifies the group ID.
.....groupNameStringSpecifies the group name.
....restrictionsObjectDefines enrolment restrictions.
.....optinExpiryBasedOnObjectDefines when a customer's opt-in eligibility expires, after which they can no longer opt in to the promotion.
.....enrolmentExpiryBasedOnObjectDefines when a customer's enrolment expires, after which they are no longer eligible for rewards under this promotion.
.....optinLimitPerCustomerObjectDefines the maximum number of times a single customer can opt in to the promotion.
.....maxRedemptionsPerEarnPerCustomerObjectDefines the maximum number of times a customer can redeem the promotion after each earning event.
.....enrolmentLimitPerPromotionObjectDefines the maximum total number of customer enrolments allowed for the promotion.
.....enrolmentLimitPerCustomerObjectDefines the maximum number of times a single customer can enrol in the promotion.
.....maxPointsPerEarnPerCustomerObjectDefines the maximum points a customer can earn in a single earning event under this promotion.
...optinObjectDefines opt-in workflow details (Optin). Possible Values: A valid Optin object or empty object {}.
....basedOnStringIndicates the basis for opt-in. Possible Values: ACTIVITY, AUDIENCE, EXTERNAL_TRIGGER.
....activitiesArray (Object)Defines activities (SingleActivity/GroupActivity) triggering opt-in.
....audienceMappingArray (Object)Defines audience mappings.
.....groupIdInteger (int64)Specifies the group ID.
.....groupNameStringSpecifies the group name.
....restrictionsObjectDefines opt-in restrictions.
.....optinExpiryBasedOnObjectDefines when a customer's opt-in eligibility expires, after which they can no longer opt in to the promotion.
.....enrolmentExpiryBasedOnObjectDefines when a customer's enrolment expires, after which they are no longer eligible for rewards under this promotion.
.....optinLimitPerCustomerObjectDefines the maximum number of times a single customer can opt in to the promotion.
.....maxRedemptionsPerEarnPerCustomerObjectDefines the maximum number of times a customer can redeem the promotion after each earning event.
.....enrolmentLimitPerPromotionObjectDefines the maximum total number of customer enrolments allowed for the promotion.
.....enrolmentLimitPerCustomerObjectDefines the maximum number of times a single customer can enrol in the promotion.
.....maxPointsPerEarnPerCustomerObjectDefines the maximum points a customer can earn in a single earning event under this promotion.
..communicationApprovalStatusObjectDefines the status of communication approval.
...successBooleanIndicates if the approval status check was successful.
...messageStringSpecifies the status message.
...responseObjectDefines the nested response object.
...statusCodeInteger (int32)Specifies the status code.
.numberinteger (int32)Specifies the current page number.
.sortObject or Array (Object)Defines the sorting rules applied.
..emptyBooleanSpecifies if the sort criteria are empty.
..sortedBooleanSpecifies if the results are sorted.
..unsortedBooleanSpecifies if the results are unsorted.
..directionStringSpecifies the sort direction for a property.
..nullHandlingStringSpecifies how null values are handled during sorting.
..ascendingBooleanIndicates if the sort direction is ascending. Possible Values: true, false.
..propertyStringSpecifies the field name used for sorting.
..ignoreCaseBooleanIndicates if case should be ignored during sorting.
.pageableObjectDefines pagination details.
..offsetinteger (int64)Specifies the offset of the first element returned on the page.
..sortObject or Array (Object)Defines the sorting rules applied.
...emptyBooleanSpecifies if the sort criteria are empty.
...sortedBooleanSpecifies if the results are sorted.
...unsortedBooleanSpecifies if the results are unsorted.
...directionStringSpecifies the sort direction.
...nullHandlingStringSpecifies how null values are handled.
...ascendingBooleanIndicates if the sort direction is ascending.
...propertyStringSpecifies the field name used for sorting.
...ignoreCaseBooleanIndicates if case should be ignored during sorting.
..pageNumberinteger (int32)Specifies the current page number (0-indexed).
..pageSizeinteger (int32)Specifies the number of items requested per page.
..pagedBooleanIndicates if pagination is applied.
..unpagedBooleanIndicates if pagination is not applied.
.numberOfElementsinteger (int32)Specifies the number of promotions returned on the current page.
.lastbooleanIndicates if the current page is the last page.
.firstbooleanIndicates if the current page is the first page.
.emptybooleanIndicates if the current page is empty.
errorsArray (Object)Defines a list of errors that occurred, if any.
.codeInteger (int64)Specifies the error code. Possible Values: Integer error code.
.messageStringSpecifies the error message.
warningsArray (Object)Defines a list of warnings, if any.
.messageStringSpecifies the warning message.

Warning messages

Warning messageDescription
Unable to enroll in promotions. Customer already enrolled or limit reached.The customer is already enrolled in the promotion or the maximum enrollment limit has been reached.
Partial Success: Milestone enrollment failed.The main promotion enrollment was successful, but one or more milestone enrollments failed.
No upload details found for file: fileName.The promotion list was retrieved, but the latest upload status for an individual milestone file could not be fetched.
Something went wrong. Unable to enroll in promotions.A connection issue occurred with a downstream service (EMF), resulting in an uncertain enrollment state.

Error codes

Error CodeDescription
300004Invalid input. Ensure the page is non-negative and size is between 1 and 100.
300005Access denied. Your account does not have the necessary permissions to list promotions for this organization.
300006Service operation failed. An unexpected internal error occurred while processing the search/list request.
310151Invalid Status. One or more values in the status filter are not recognized by the system.
498Token Expired. Your authentication session has expired. Please log in again to refresh your token.
999999Generic Validation Error. Check the error metadata for specific details on invalid filter formats (e.g., date formats).
Headers
string
string
Response

Language
LoadingLoading…
Response
Click Try It! to start a request and see the response here! Or choose an example:
application/json