PERS SDK - v2.3.26 / Exports / CampaignManager
Campaign Manager - Clean, high-level interface for campaign operations
Provides a comprehensive API for loyalty campaign management including campaign discovery, reward claiming, business engagement tracking, and administrative campaign lifecycle operations. Campaigns are the core promotional mechanisms that drive user engagement and reward distribution in the loyalty ecosystem.
Example
// Get all available campaigns (paginated)
const result = await sdk.campaigns.getCampaigns({ page: 1, limit: 20 });
console.log(`${result.data.length} of ${result.total} campaigns`);
// Get specific campaign details
const campaign = await sdk.campaigns.getCampaignById('summer-promo-2024');
console.log('Campaign:', campaign.name);
// User claims campaign reward
const claim = await sdk.campaigns.claimCampaign({
campaignId: 'summer-promo-2024',
businessId: 'partner-hotel-123'
});Example
// Get user's claimed campaigns
const userClaims = await sdk.campaigns.getUserClaims();
console.log('My Campaign Claims:');
userClaims.forEach(claim => {
console.log(`- ${claim.campaign.name}`);
console.log(` Rewards: ${claim.rewards?.length || 0} tokens`);
console.log(` Date: ${claim.claimedAt}`);
});
// Check if user can claim specific campaign
const campaigns = await sdk.campaigns.getCampaigns({ active: true });
const eligibleCampaigns = campaigns.data.filter(c =>
!userClaims.some(claim => claim.campaignId === c.id)
);Example
// Admin: Create seasonal campaign
const newCampaign = await sdk.campaigns.createCampaign({
name: 'Holiday Rewards',
description: 'Special holiday loyalty bonuses',
startDate: '2024-12-01',
endDate: '2024-12-31',
isActive: true
});
// Admin: Set up campaign rewards
await sdk.campaigns.createCampaignTokenUnit(newCampaign.id, {
tokenId: 'loyalty-points',
amount: 500,
type: 'REWARD'
});- getCampaignById
- claimCampaign
- getUserClaims
- getCampaigns
- createCampaign
- updateCampaign
- toggleCampaignStatus
- toggleCampaignTestnet
- getCampaignTriggers
- getCampaignTriggerById
- createCampaignTrigger
- updateCampaignTrigger
- deleteCampaignTrigger
- setCampaignTrigger
- removeCampaignTrigger
- createCampaignTokenUnit
- deleteCampaignTokenUnit
- addBusinessEngagementToCampaign
- updateCampaignBusinessEngagement
- deleteCampaignBusinessEngagement
- getCampaignClaims
- getCampaignClaimsByUserId
- getCampaignClaimsByBusinessId
- assignTriggerSource
- removeTriggerSource
- exportCSV
- exportClaimsCSV
- getCampaignService
- setCampaignApproval
• new CampaignManager(apiClient, events?): CampaignManager
| Name | Type |
|---|---|
apiClient | PersApiClient |
events? | PersEventEmitter |
managers/campaign-manager.ts:91
▸ getCampaignById(campaignId, include?): Promise<CampaignDTO>
Get campaign by ID
Retrieves detailed information for a specific campaign including rewards, business partnerships, eligibility criteria, and claiming requirements.
| Name | Type | Description |
|---|---|---|
campaignId | string | Unique campaign identifier |
include? | CampaignIncludeRelation[] | Relations to include: 'triggerSources', 'businesses' |
Promise<CampaignDTO>
Promise resolving to campaign data with complete details
Throws
When campaign with specified ID is not found
Example
try {
const campaign = await sdk.campaigns.getCampaignById('summer-promo-2024');
console.log('Campaign Details:');
console.log('Name:', campaign.name);
console.log('Description:', campaign.description);
console.log('Active:', campaign.isActive);
console.log('Period:', `${campaign.startDate} to ${campaign.endDate}`);
console.log('\nRewards:');
campaign.tokenUnits?.forEach(unit => {
console.log(`- ${unit.amount} ${unit.token.symbol} (${unit.token.name})`);
});
console.log('\nPartner Businesses:');
campaign.businessEngagements?.forEach(engagement => {
console.log(`- ${engagement.business.displayName}`);
});
} catch (error) {
console.log('Campaign not found:', error.message);
}Example
// Get campaign with trigger sources and businesses included
const campaign = await sdk.campaigns.getCampaignById('campaign-123', ['triggerSources', 'businesses']);
console.log('Trigger sources:', campaign.included?.triggerSources);
console.log('Businesses:', campaign.included?.businesses);managers/campaign-manager.ts:144
▸ claimCampaign(claimRequest): Promise<CampaignClaimDTO>
Claim a campaign reward
Claims rewards from a campaign for the authenticated user. This action validates eligibility, processes reward distribution, and creates a permanent claim record. Users can typically claim each campaign only once.
| Name | Type | Description |
|---|---|---|
claimRequest | CampaignClaimRequestDTO | Campaign claim request with campaign and business context |
Promise<CampaignClaimDTO>
Promise resolving to claim result with reward details
Throws
When campaign is not claimable or user is not eligible
Example
try {
const claim = await sdk.campaigns.claimCampaign({
campaignId: 'welcome-bonus',
businessId: 'partner-hotel-123'
});
console.log('Campaign claimed successfully!');
console.log('Claim ID:', claim.id);
console.log('Claimed at:', claim.claimedAt);
if (claim.rewards?.length) {
console.log('\nRewards received:');
claim.rewards.forEach(reward => {
console.log(`- ${reward.amount} ${reward.token.symbol}`);
});
}
} catch (error) {
console.log('Claim failed:', error.message);
}Example
// Check if campaign is still active
const campaign = await sdk.campaigns.getCampaignById('limited-time-offer');
if (campaign.isActive && new Date() <= new Date(campaign.endDate)) {
// Check if user already claimed
const userClaims = await sdk.campaigns.getUserClaims();
const alreadyClaimed = userClaims.some(c => c.campaignId === campaign.id);
if (!alreadyClaimed) {
const claim = await sdk.campaigns.claimCampaign({
campaignId: campaign.id,
businessId: 'partner-business-id'
});
console.log('Claim successful:', claim.id);
} else {
console.log('Campaign already claimed');
}
}managers/campaign-manager.ts:205
▸ getUserClaims(options?): Promise<PaginatedResponseDTO<CampaignClaimDTO>>
Get user's campaign claims
Retrieves all campaigns that the authenticated user has successfully claimed. Includes claim timestamps, received rewards, and associated business context. Useful for user reward history and campaign participation tracking.
| Name | Type |
|---|---|
options? | PaginationOptions & { include?: CampaignClaimIncludeRelation[] } |
Promise<PaginatedResponseDTO<CampaignClaimDTO>>
Promise resolving to array of user's campaign claims
Example
const userClaims = await sdk.campaigns.getUserClaims();
console.log(`Campaign History (${userClaims.length} claims):`);
userClaims.forEach((claim, index) => {
console.log(`\n${index + 1}. ${claim.campaign.name}`);
console.log(` Claimed: ${new Date(claim.claimedAt).toLocaleDateString()}`);
console.log(` Business: ${claim.business?.displayName || 'N/A'}`);
if (claim.rewards?.length) {
console.log(` Rewards:`);
claim.rewards.forEach(reward => {
console.log(` • ${reward.amount} ${reward.token.symbol}`);
});
}
});
// Calculate total rewards earned
const totalRewards = userClaims.reduce((total, claim) => {
return total + (claim.rewards?.length || 0);
}, 0);
console.log(`\nTotal reward items earned: ${totalRewards}`);managers/campaign-manager.ts:254
▸ getCampaigns(options?): Promise<PaginatedResponseDTO<CampaignDTO>>
Get campaigns with pagination support
Returns campaigns with pagination metadata for efficient data loading. Intelligent access: Public gets active only, Business gets own campaigns, Admin gets all.
| Name | Type | Description |
|---|---|---|
options? | PaginationOptions & { active?: boolean ; tag?: string ; search?: string ; businessId?: string ; startDate?: string | Date ; endDate?: string | Date ; sortBy?: "startDate" | "name" | "createdAt" ; sortOrder?: SortOrder ; include?: CampaignIncludeRelation[] } | Pagination and filter options (page, limit, sortBy, sortOrder, active, tag, search, businessId, startDate, endDate, include) |
Promise<PaginatedResponseDTO<CampaignDTO>>
Promise resolving to paginated campaigns with metadata
Example
// Get first page of campaigns
const result = await sdk.campaigns.getCampaigns({ page: 1, limit: 10 });
console.log(`Showing ${result.data.length} of ${result.total} campaigns`);
console.log(`Has more pages: ${result.hasMore}`);
// Get campaigns for a specific business
const businessCampaigns = await sdk.campaigns.getCampaigns({
businessId: 'business-123',
page: 1,
limit: 20
});
// Search campaigns by name or description
const searchResults = await sdk.campaigns.getCampaigns({
search: 'summer rewards',
page: 1,
limit: 20
});
// Filter by tag
const taggedCampaigns = await sdk.campaigns.getCampaigns({
tag: 'seasonal',
active: true
});
// Filter by date range
const dateFiltered = await sdk.campaigns.getCampaigns({
startDate: new Date('2026-05-01'),
endDate: new Date('2026-12-31'),
active: true
});
// Get campaigns with claim count
const withCounts = await sdk.campaigns.getCampaigns({
include: ['claimCount']
});
withCounts.data.forEach(c => console.log(`${c.name}: ${c.claimCount} claims`));
// Include related data (trigger sources, businesses, and claim count)
const campaignsWithRelations = await sdk.campaigns.getCampaigns({
include: ['triggerSources', 'businesses', 'claimCount']
});managers/campaign-manager.ts:316
▸ createCampaign(campaignData): Promise<CampaignDTO>
Admin: Create new campaign
Creates a new loyalty campaign with specified configuration, rewards, and business partnerships. This operation requires administrator privileges and establishes a new promotional mechanism for user engagement.
| Name | Type | Description |
|---|---|---|
campaignData | CampaignCreateRequestDTO | Campaign configuration including title, dates, and settings |
Promise<CampaignDTO>
Promise resolving to created campaign data
Throws
When not authenticated as admin or validation fails
Example
// Admin operation - create seasonal campaign
const campaign = await sdk.campaigns.createCampaign({
name: 'Summer Travel Rewards',
description: 'Earn bonus points for summer bookings',
startDate: '2024-06-01T00:00:00Z',
endDate: '2024-08-31T23:59:59Z',
isActive: true,
isTestnet: false,
campaignType: 'SEASONAL'
});
console.log('Campaign created:', campaign.name);
console.log('Campaign ID:', campaign.id);
// Set up campaign rewards
await sdk.campaigns.createCampaignTokenUnit(campaign.id, {
tokenId: 'loyalty-points',
amount: 1000,
type: 'BONUS'
});managers/campaign-manager.ts:371
▸ updateCampaign(campaignId, campaignData): Promise<CampaignDTO>
Admin: Update campaign
Updates an existing campaign's configuration, dates, or status. This operation requires administrator privileges and can modify most campaign properties while preserving existing claims and relationships.
| Name | Type | Description |
|---|---|---|
campaignId | string | ID of the campaign to update |
campaignData | CampaignCreateRequestDTO | Updated campaign configuration |
Promise<CampaignDTO>
Promise resolving to updated campaign data
Throws
When not authenticated as admin or campaign not found
Example
// Admin operation - extend campaign duration
const updated = await sdk.campaigns.updateCampaign('summer-2024', {
name: 'Extended Summer Travel Rewards',
description: 'Earn bonus points for summer and early fall bookings',
endDate: '2024-09-30T23:59:59Z', // Extended end date
isActive: true
});
console.log('Campaign updated:', updated.name);
console.log('New end date:', updated.endDate);managers/campaign-manager.ts:401
▸ toggleCampaignStatus(campaignId): Promise<CampaignDTO>
Admin: Toggle campaign active status
Toggles the active/inactive status of a campaign. Inactive campaigns are not available for new claims but existing claims remain valid. Requires administrator privileges.
| Name | Type | Description |
|---|---|---|
campaignId | string | ID of the campaign to toggle |
Promise<CampaignDTO>
Promise resolving to updated campaign data
Throws
When not authenticated as admin or campaign not found
Example
// Admin operation - temporarily disable campaign
const updated = await sdk.campaigns.toggleCampaignStatus('problematic-campaign');
console.log(`Campaign ${updated.isActive ? 'activated' : 'deactivated'}`);
console.log('Status:', updated.isActive ? 'Active' : 'Inactive');managers/campaign-manager.ts:425
▸ toggleCampaignTestnet(campaignId): Promise<CampaignDTO>
Admin: Toggle campaign testnet environment
Toggles the testnet/mainnet environment for a campaign. Testnet campaigns operate with test tokens and are used for validation before production deployment. Requires administrator privileges.
| Name | Type | Description |
|---|---|---|
campaignId | string | ID of the campaign to toggle |
Promise<CampaignDTO>
Promise resolving to updated campaign data
Throws
When not authenticated as admin or campaign not found
Example
// Admin operation - move campaign to production
const updated = await sdk.campaigns.toggleCampaignTestnet('test-campaign');
console.log(`Campaign moved to ${updated.isTestnet ? 'testnet' : 'mainnet'}`);managers/campaign-manager.ts:448
▸ getCampaignTriggers(options?): Promise<PaginatedResponseDTO<CampaignTriggerDTO>>
Admin: Get all campaign triggers (paginated)
Retrieves all campaign trigger rules that define rate limits, geo-validation, conditions, and trigger types for campaign activation.
| Name | Type | Description |
|---|---|---|
options? | PaginationOptions | Pagination options |
Promise<PaginatedResponseDTO<CampaignTriggerDTO>>
Promise resolving to paginated list of campaign triggers
Example
const triggers = await sdk.campaigns.getCampaignTriggers({ page: 1, limit: 20 });
console.log(`Found ${triggers.total} triggers`);
triggers.data.forEach(trigger => {
console.log(`- ${trigger.name}: max ${trigger.maxPerDayPerUser}/day`);
});managers/campaign-manager.ts:475
▸ getCampaignTriggerById(triggerId): Promise<CampaignTriggerDTO>
Admin: Get campaign trigger by ID
| Name | Type | Description |
|---|---|---|
triggerId | string | The campaign trigger ID |
Promise<CampaignTriggerDTO>
Promise resolving to the campaign trigger
Example
const trigger = await sdk.campaigns.getCampaignTriggerById('trigger-123');
console.log('Max per day:', trigger.maxPerDayPerUser);managers/campaign-manager.ts:491
▸ createCampaignTrigger(data): Promise<CampaignTriggerDTO>
Admin: Create a new campaign trigger
Creates a trigger rule that defines rate limits, geo-validation, and conditions for campaign activation. Triggers are created independently and then assigned to campaigns via setCampaignTrigger().
| Name | Type | Description |
|---|---|---|
data | CampaignTriggerCreateRequestDTO | Trigger configuration |
Promise<CampaignTriggerDTO>
Promise resolving to created trigger
Example
const trigger = await sdk.campaigns.createCampaignTrigger({
name: 'Daily Check-in',
maxPerDayPerUser: 1,
maxPerUser: 100,
minCooldownSeconds: 3600,
maxGeoDistanceInMeters: 50,
triggerType: 'CLAIM_BY_USER'
});
// Then assign to campaign
await sdk.campaigns.setCampaignTrigger(campaignId, trigger.id);managers/campaign-manager.ts:520
▸ updateCampaignTrigger(triggerId, data): Promise<CampaignTriggerDTO>
Admin: Update an existing campaign trigger
| Name | Type | Description |
|---|---|---|
triggerId | string | The campaign trigger ID |
data | Partial<CampaignTriggerCreateRequestDTO> | Updated trigger configuration (partial) |
Promise<CampaignTriggerDTO>
Promise resolving to updated trigger
Example
const updated = await sdk.campaigns.updateCampaignTrigger('trigger-123', {
maxPerDayPerUser: 5,
minCooldownSeconds: 1800
});managers/campaign-manager.ts:548
▸ deleteCampaignTrigger(triggerId): Promise<boolean>
Admin: Delete a campaign trigger
| Name | Type | Description |
|---|---|---|
triggerId | string | The campaign trigger ID |
Promise<boolean>
Promise resolving to success status
Example
await sdk.campaigns.deleteCampaignTrigger('trigger-123');managers/campaign-manager.ts:575
▸ setCampaignTrigger(campaignId, triggerId): Promise<CampaignDTO>
Admin: Assign a trigger to a campaign
Associates a trigger rule with a campaign. A campaign can have only one trigger at a time. Assigning a new trigger replaces any existing trigger.
| Name | Type | Description |
|---|---|---|
campaignId | string | ID of the campaign |
triggerId | string | ID of the trigger to associate |
Promise<CampaignDTO>
Promise resolving to updated campaign
Example
const updated = await sdk.campaigns.setCampaignTrigger(
'campaign-123',
'trigger-456'
);
console.log('Trigger assigned:', updated.trigger?.name);managers/campaign-manager.ts:607
▸ removeCampaignTrigger(campaignId, triggerId): Promise<CampaignDTO>
Admin: Remove a trigger from a campaign
Removes the trigger rule from a campaign. The trigger itself is not deleted and can be reassigned to other campaigns.
| Name | Type | Description |
|---|---|---|
campaignId | string | ID of the campaign |
triggerId | string | ID of the trigger to remove |
Promise<CampaignDTO>
Promise resolving to updated campaign
Example
const updated = await sdk.campaigns.removeCampaignTrigger(
'campaign-123',
'trigger-456'
);
console.log('Trigger removed:', updated.trigger === null);managers/campaign-manager.ts:639
▸ createCampaignTokenUnit(campaignId, tokenUnit): Promise<CampaignDTO>
Admin: Create campaign token unit
Adds a token reward unit to a campaign, specifying the token type and amount that users will receive when claiming the campaign. Multiple token units can be added to create multi-reward campaigns. Requires administrator privileges.
| Name | Type | Description |
|---|---|---|
campaignId | string | ID of the campaign |
tokenUnit | TokenUnitCreateRequestDTO | Token unit configuration including token type and amount |
Promise<CampaignDTO>
Promise resolving to updated campaign data
Throws
When not authenticated as admin or validation fails
Example
// Admin operation - add loyalty points reward
const updated = await sdk.campaigns.createCampaignTokenUnit('summer-promo', {
tokenId: 'loyalty-points',
amount: 500,
type: 'REWARD'
});
console.log('Token unit added to campaign');
console.log('Reward units:', updated.tokenUnits?.length);
// Add multiple reward types
await sdk.campaigns.createCampaignTokenUnit('summer-promo', {
tokenId: 'bonus-credits',
amount: 100,
type: 'BONUS'
});managers/campaign-manager.ts:688
▸ deleteCampaignTokenUnit(campaignId, tokenUnitId): Promise<CampaignDTO>
Admin: Delete campaign token unit
Removes a token reward unit from a campaign. This affects future claims but does not impact rewards that have already been distributed. Requires administrator privileges.
| Name | Type | Description |
|---|---|---|
campaignId | string | ID of the campaign |
tokenUnitId | string | ID of the token unit to remove |
Promise<CampaignDTO>
Promise resolving to updated campaign data
Throws
When not authenticated as admin or entities not found
Example
// Admin operation - remove token unit from campaign
const updated = await sdk.campaigns.deleteCampaignTokenUnit(
'summer-promo',
'token-unit-123'
);
console.log('Token unit removed from campaign');
console.log('Remaining reward units:', updated.tokenUnits?.length);managers/campaign-manager.ts:716
▸ addBusinessEngagementToCampaign(campaignId, engagement): Promise<CampaignDTO>
Admin: Add business engagement to campaign
Associates a business partner with a campaign, enabling the business to participate in the campaign and allowing users to claim rewards through that business. Requires administrator privileges.
| Name | Type | Description |
|---|---|---|
campaignId | string | ID of the campaign |
engagement | CampaignBusinessEngagementCreateRequestDTO | Business engagement configuration |
Promise<CampaignDTO>
Promise resolving to updated campaign data
Throws
When not authenticated as admin or validation fails
Example
// Admin operation - add business partner to campaign
const updated = await sdk.campaigns.addBusinessEngagementToCampaign('summer-promo', {
businessId: 'partner-hotel-123',
engagementType: 'PROMOTION_PARTNER',
isActive: true,
startDate: '2024-06-01',
endDate: '2024-08-31'
});
console.log('Business partner added to campaign');
console.log('Partner businesses:', updated.businessEngagements?.length);managers/campaign-manager.ts:747
▸ updateCampaignBusinessEngagement(campaignId, engagementId, engagement): Promise<CampaignDTO>
Admin: Update campaign business engagement
Updates an existing business engagement within a campaign, modifying participation parameters, dates, or status. Requires administrator privileges.
| Name | Type | Description |
|---|---|---|
campaignId | string | ID of the campaign |
engagementId | string | ID of the engagement to update |
engagement | CampaignBusinessEngagementCreateRequestDTO | Updated engagement configuration |
Promise<CampaignDTO>
Promise resolving to updated campaign data
Throws
When not authenticated as admin or entities not found
Example
// Admin operation - update business engagement terms
const updated = await sdk.campaigns.updateCampaignBusinessEngagement(
'summer-promo',
'engagement-456',
{
engagementType: 'PREMIUM_PARTNER',
isActive: true,
endDate: '2024-09-30' // Extended participation
}
);
console.log('Business engagement updated');managers/campaign-manager.ts:779
▸ deleteCampaignBusinessEngagement(campaignId, engagementId): Promise<CampaignDTO>
Admin: Delete campaign business engagement
Removes a business engagement from a campaign, ending the business's participation in the campaign. Existing claims through this business remain valid. Requires administrator privileges.
| Name | Type | Description |
|---|---|---|
campaignId | string | ID of the campaign |
engagementId | string | ID of the engagement to remove |
Promise<CampaignDTO>
Promise resolving to updated campaign data
Throws
When not authenticated as admin or entities not found
Example
// Admin operation - remove business from campaign
const updated = await sdk.campaigns.deleteCampaignBusinessEngagement(
'summer-promo',
'engagement-456'
);
console.log('Business engagement removed');
console.log('Remaining partners:', updated.businessEngagements?.length);managers/campaign-manager.ts:807
▸ getCampaignClaims(filters?, include?): Promise<PaginatedResponseDTO<CampaignClaimDTO>>
Admin: Get campaign claims with optional filters
Retrieves campaign claims with optional filtering by campaign, user, business, or date range. This operation requires administrator privileges and provides system-wide visibility into campaign performance and user engagement.
| Name | Type | Description |
|---|---|---|
filters? | CampaignClaimQueryParams | Optional filters and pagination options |
include? | CampaignClaimIncludeRelation[] | Optional relations to include for enrichment |
Promise<PaginatedResponseDTO<CampaignClaimDTO>>
Promise resolving to paginated campaign claims
Throws
When not authenticated as administrator
Example
const { data: allClaims, pagination } = await sdk.campaigns.getCampaignClaims();
console.log(`Total: ${pagination.total}`);Example
const { data: userClaims } = await sdk.campaigns.getCampaignClaims({ userId: 'user-123' });Example
// Get claims within a specific date range
const { data: monthClaims } = await sdk.campaigns.getCampaignClaims({
dateFrom: new Date('2024-01-01'),
dateTo: new Date('2024-01-31'),
limit: 100
});
console.log(`${monthClaims.length} claims in January 2024`);Example
const { data: page1 } = await sdk.campaigns.getCampaignClaims({
campaignId: 'campaign-456',
page: 1,
limit: 50
});managers/campaign-manager.ts:863
▸ getCampaignClaimsByUserId(userId, options?, include?): Promise<PaginatedResponseDTO<CampaignClaimDTO>>
Admin: Get campaign claims by user ID
Retrieves all campaign claims for a specific user. This operation requires administrator privileges and is used for user support, account analysis, and individual user engagement tracking.
| Name | Type | Description |
|---|---|---|
userId | string | ID of the user to get claims for |
options? | PaginationOptions | - |
include? | CampaignClaimIncludeRelation[] | - |
Promise<PaginatedResponseDTO<CampaignClaimDTO>>
Promise resolving to array of user's campaign claims
Throws
When not authenticated as admin or user not found
Example
// Admin operation - analyze user's campaign participation
const userClaims = await sdk.campaigns.getCampaignClaimsByUserId('user-123');
console.log(`User Campaign Activity:`);
console.log(`Total campaigns claimed: ${userClaims.length}`);
userClaims.forEach((claim, index) => {
console.log(`\n${index + 1}. ${claim.campaign.name}`);
console.log(` Date: ${claim.claimedAt}`);
console.log(` Business: ${claim.business?.displayName || 'Direct'}`);
console.log(` Rewards: ${claim.rewards?.length || 0} items`);
});
// Calculate user engagement metrics
const totalRewards = userClaims.reduce((sum, claim) =>
sum + (claim.rewards?.length || 0), 0
);
console.log(`\nTotal rewards earned: ${totalRewards}`);managers/campaign-manager.ts:903
▸ getCampaignClaimsByBusinessId(businessId, options?, include?): Promise<PaginatedResponseDTO<CampaignClaimDTO>>
Admin: Get campaign claims by business ID
Retrieves all campaign claims processed through a specific business partner. This operation requires administrator privileges and is used for business partnership analysis and performance tracking.
| Name | Type | Description |
|---|---|---|
businessId | string | ID of the business to get claims for |
options? | PaginationOptions | - |
include? | CampaignClaimIncludeRelation[] | - |
Promise<PaginatedResponseDTO<CampaignClaimDTO>>
Promise resolving to array of business's campaign claims
Throws
When not authenticated as admin or business not found
Example
// Admin operation - analyze business partnership performance
const businessClaims = await sdk.campaigns.getCampaignClaimsByBusinessId('partner-hotel-123');
console.log(`Business Partnership Analysis:`);
console.log(`Claims processed: ${businessClaims.length}`);
// Analyze claims by campaign
const claimsByCampaign = businessClaims.reduce((acc, claim) => {
const campaignName = claim.campaign.name;
acc[campaignName] = (acc[campaignName] || 0) + 1;
return acc;
}, {});
console.log('\nCampaign Performance:');
Object.entries(claimsByCampaign).forEach(([campaign, count]) => {
console.log(`${campaign}: ${count} claims`);
});
// Calculate partnership value
const totalRewardsDistributed = businessClaims.reduce((sum, claim) =>
sum + (claim.rewards?.length || 0), 0
);
console.log(`\nTotal rewards distributed: ${totalRewardsDistributed}`);managers/campaign-manager.ts:949
▸ assignTriggerSource(campaignId, triggerSourceId): Promise<CampaignDTO>
Admin: Assign a trigger source to a campaign
Associates a trigger source with a campaign, enabling the trigger source to activate campaign rewards when triggered. A campaign can have multiple trigger sources. Requires administrator privileges.
Note: To create/update/delete trigger sources, use sdk.triggerSources.
| Name | Type | Description |
|---|---|---|
campaignId | string | Campaign UUID |
triggerSourceId | string | Trigger source UUID |
Promise<CampaignDTO>
Promise resolving to updated campaign with trigger source assigned
Throws
When not authenticated as admin or entities not found
Example
// Create trigger source first
const source = await sdk.triggerSources.create({
type: 'QR_CODE',
name: 'Store Entrance QR'
});
// Then assign to campaign
const updated = await sdk.campaigns.assignTriggerSource(
'campaign-123',
source.id
);
console.log('Trigger source assigned:', updated.triggerSourceIds.length);managers/campaign-manager.ts:993
▸ removeTriggerSource(campaignId, triggerSourceId): Promise<CampaignDTO>
Admin: Remove a trigger source from a campaign
Removes the association between a trigger source and a campaign. The trigger source itself is not deleted and can be reassigned to other campaigns. Requires administrator privileges.
| Name | Type | Description |
|---|---|---|
campaignId | string | Campaign UUID |
triggerSourceId | string | Trigger source UUID |
Promise<CampaignDTO>
Promise resolving to updated campaign with trigger source removed
Throws
When not authenticated as admin or entities not found
Example
// Remove a trigger source from a campaign
const updated = await sdk.campaigns.removeTriggerSource(
'campaign-123',
'source-456'
);
console.log('Remaining trigger source IDs:', updated.triggerSourceIds.length);managers/campaign-manager.ts:1029
▸ exportCSV(options?): Promise<Blob>
Admin: Export campaigns as CSV
Generates a comprehensive CSV export of all tenant campaigns for external analysis, reporting, or compliance purposes. This operation requires administrator privileges and creates a downloadable file.
| Name | Type | Description |
|---|---|---|
options? | Object | Optional date range filters |
options.dateFrom? | string | Start date filter (ISO date string) |
options.dateTo? | string | End date filter (ISO date string) |
Promise<Blob>
Promise resolving to CSV blob for download
Throws
When not authenticated as administrator or export fails
Example
const csvBlob = await sdk.campaigns.exportCSV();
const downloadUrl = URL.createObjectURL(csvBlob);Example
const csvBlob = await sdk.campaigns.exportCSV({
dateFrom: '2024-01-01',
dateTo: '2024-12-31'
});managers/campaign-manager.ts:1060
▸ exportClaimsCSV(options?): Promise<Blob>
Admin: Export campaign claims as CSV
Generates a comprehensive CSV export of all campaign claim records for external analysis, reporting, or compliance purposes. This operation requires administrator privileges and creates a downloadable file.
| Name | Type | Description |
|---|---|---|
options? | Object | Optional date range filters |
options.dateFrom? | string | Start date filter (ISO date string) |
options.dateTo? | string | End date filter (ISO date string) |
Promise<Blob>
Promise resolving to CSV blob for download
Throws
When not authenticated as administrator or export fails
Example
const csvBlob = await sdk.campaigns.exportClaimsCSV();
const downloadUrl = URL.createObjectURL(csvBlob);managers/campaign-manager.ts:1084
▸ getCampaignService(): CampaignService
Get the full campaign service for advanced operations
Provides access to the complete CampaignService instance for advanced campaign operations, custom triggers, analytics, and operations not covered by the high-level manager methods.
CampaignService instance with full API access
Example
const campaignService = sdk.campaigns.getCampaignService();
// Access advanced campaign analytics
const analytics = await campaignService.getCampaignAnalytics('campaign-123');
// Access custom trigger management
const customTriggers = await campaignService.getCustomTriggers();
// Access campaign API directly
const campaignApi = campaignService.api;
// Use advanced claim validation
const eligibility = await campaignService.validateClaimEligibility('user-123', 'campaign-456');managers/campaign-manager.ts:1115
▸ setCampaignApproval(campaignId, status, reason?): Promise<CampaignDTO>
Admin: Approve a campaign
Approves a campaign that is pending approval. This operation is only available when the tenant has campaign approval enabled in their approval settings.
| Name | Type | Description |
|---|---|---|
campaignId | string | ID of the campaign to approve |
status | "approved" | "rejected" | - |
reason? | string | - |
Promise<CampaignDTO>
Promise resolving to updated campaign with approval metadata
Throws
When not authenticated as tenant admin or campaign not found
Example
` ypescript
const approvedCampaign = await sdk.campaigns.approveCampaign('campaign-123');
console.log('Campaign approved at:', approvedCampaign.approval?.approvedAt);
`