@explorins/pers-sdk 2.1.2 → 2.1.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/analytics/api/analytics-api.d.ts +175 -1
- package/dist/analytics/api/analytics-api.d.ts.map +1 -1
- package/dist/analytics/models/index.d.ts +2 -5
- package/dist/analytics/models/index.d.ts.map +1 -1
- package/dist/analytics/services/analytics-service.d.ts +32 -1
- package/dist/analytics/services/analytics-service.d.ts.map +1 -1
- package/dist/analytics.cjs +9 -44
- package/dist/analytics.cjs.map +1 -1
- package/dist/analytics.js +2 -45
- package/dist/analytics.js.map +1 -1
- package/dist/campaign/api/campaign-api.d.ts +59 -4
- package/dist/campaign/api/campaign-api.d.ts.map +1 -1
- package/dist/campaign/services/campaign-service.d.ts +49 -7
- package/dist/campaign/services/campaign-service.d.ts.map +1 -1
- package/dist/campaign.cjs +150 -14
- package/dist/campaign.cjs.map +1 -1
- package/dist/campaign.js +150 -14
- package/dist/campaign.js.map +1 -1
- package/dist/chunks/analytics-service-B9IfG6ox.js +271 -0
- package/dist/chunks/analytics-service-B9IfG6ox.js.map +1 -0
- package/dist/chunks/analytics-service-DwkeBB08.cjs +274 -0
- package/dist/chunks/analytics-service-DwkeBB08.cjs.map +1 -0
- package/dist/chunks/{pers-sdk-DnLw822h.js → pers-sdk-CAM0iQyK.js} +1203 -267
- package/dist/chunks/pers-sdk-CAM0iQyK.js.map +1 -0
- package/dist/chunks/{pers-sdk-D5lE9ZFW.cjs → pers-sdk-Di_R6AiT.cjs} +1207 -268
- package/dist/chunks/pers-sdk-Di_R6AiT.cjs.map +1 -0
- package/dist/chunks/{redemption-service-D-hBqh42.js → redemption-service-CQtTLdic.js} +32 -10
- package/dist/chunks/redemption-service-CQtTLdic.js.map +1 -0
- package/dist/chunks/{redemption-service-rMB6T2W5.cjs → redemption-service-DsH7sRdv.cjs} +32 -10
- package/dist/chunks/redemption-service-DsH7sRdv.cjs.map +1 -0
- package/dist/chunks/{transaction-request.builder-C1vVVFto.js → transaction-request.builder-C8ahJYwi.js} +122 -70
- package/dist/chunks/transaction-request.builder-C8ahJYwi.js.map +1 -0
- package/dist/chunks/{transaction-request.builder-BpgtuMMq.cjs → transaction-request.builder-CkYd5bl6.cjs} +122 -70
- package/dist/chunks/transaction-request.builder-CkYd5bl6.cjs.map +1 -0
- package/dist/core/auth/auth-provider.interface.d.ts +1 -0
- package/dist/core/auth/auth-provider.interface.d.ts.map +1 -1
- package/dist/core/auth/default-auth-provider.d.ts +2 -0
- package/dist/core/auth/default-auth-provider.d.ts.map +1 -1
- package/dist/core/auth/refresh-manager.d.ts +2 -0
- package/dist/core/auth/refresh-manager.d.ts.map +1 -1
- package/dist/core/auth/services/auth-service.d.ts.map +1 -1
- package/dist/core/auth/token-storage.d.ts +2 -1
- package/dist/core/auth/token-storage.d.ts.map +1 -1
- package/dist/core/pers-api-client.d.ts.map +1 -1
- package/dist/core/pers-config.d.ts +0 -18
- package/dist/core/pers-config.d.ts.map +1 -1
- package/dist/core.cjs +5 -4
- package/dist/core.cjs.map +1 -1
- package/dist/core.js +4 -4
- package/dist/index.cjs +13 -6
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.ts +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +5 -5
- package/dist/managers/analytics-manager.d.ts +165 -2
- package/dist/managers/analytics-manager.d.ts.map +1 -1
- package/dist/managers/campaign-manager.d.ts +180 -30
- package/dist/managers/campaign-manager.d.ts.map +1 -1
- package/dist/managers/index.d.ts +1 -0
- package/dist/managers/index.d.ts.map +1 -1
- package/dist/managers/redemption-manager.d.ts +52 -2
- package/dist/managers/redemption-manager.d.ts.map +1 -1
- package/dist/managers/transaction-manager.d.ts +66 -131
- package/dist/managers/transaction-manager.d.ts.map +1 -1
- package/dist/managers/trigger-source-manager.d.ts +194 -0
- package/dist/managers/trigger-source-manager.d.ts.map +1 -0
- package/dist/managers/user-manager.d.ts +38 -7
- package/dist/managers/user-manager.d.ts.map +1 -1
- package/dist/node.cjs +4 -4
- package/dist/node.js +4 -4
- package/dist/package.json +2 -2
- package/dist/pers-sdk.d.ts +68 -23
- package/dist/pers-sdk.d.ts.map +1 -1
- package/dist/redemption/api/redemption-api.d.ts +8 -4
- package/dist/redemption/api/redemption-api.d.ts.map +1 -1
- package/dist/redemption/services/redemption-service.d.ts +7 -3
- package/dist/redemption/services/redemption-service.d.ts.map +1 -1
- package/dist/redemption.cjs +1 -1
- package/dist/redemption.js +1 -1
- package/dist/transaction/api/transaction-api.d.ts +37 -42
- package/dist/transaction/api/transaction-api.d.ts.map +1 -1
- package/dist/transaction/models/index.d.ts +21 -0
- package/dist/transaction/models/index.d.ts.map +1 -1
- package/dist/transaction/services/transaction-service.d.ts +10 -15
- package/dist/transaction/services/transaction-service.d.ts.map +1 -1
- package/dist/transaction.cjs +1 -1
- package/dist/transaction.js +1 -1
- package/dist/trigger-source/api/trigger-source-api.d.ts +86 -0
- package/dist/trigger-source/api/trigger-source-api.d.ts.map +1 -0
- package/dist/trigger-source/index.d.ts +9 -0
- package/dist/trigger-source/index.d.ts.map +1 -0
- package/dist/trigger-source/services/trigger-source-service.d.ts +42 -0
- package/dist/trigger-source/services/trigger-source-service.d.ts.map +1 -0
- package/dist/user/api/user-api.d.ts +26 -1
- package/dist/user/api/user-api.d.ts.map +1 -1
- package/dist/user/services/user-service.d.ts +3 -1
- package/dist/user/services/user-service.d.ts.map +1 -1
- package/dist/user.cjs +34 -4
- package/dist/user.cjs.map +1 -1
- package/dist/user.js +34 -4
- package/dist/user.js.map +1 -1
- package/package.json +2 -2
- package/dist/chunks/pers-sdk-D5lE9ZFW.cjs.map +0 -1
- package/dist/chunks/pers-sdk-DnLw822h.js.map +0 -1
- package/dist/chunks/redemption-service-D-hBqh42.js.map +0 -1
- package/dist/chunks/redemption-service-rMB6T2W5.cjs.map +0 -1
- package/dist/chunks/transaction-request.builder-BpgtuMMq.cjs.map +0 -1
- package/dist/chunks/transaction-request.builder-C1vVVFto.js.map +0 -1
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
import { PaginatedResponseDTO, SortOrder } from '@explorins/pers-shared';
|
|
1
|
+
import { PaginatedResponseDTO, SortOrder, CampaignClaimIncludeRelation, CampaignIncludeRelation } from '@explorins/pers-shared';
|
|
2
2
|
import { PersApiClient } from '../core/pers-api-client';
|
|
3
3
|
import { PersEventEmitter } from '../core/events';
|
|
4
4
|
import { CampaignService } from '../campaign';
|
|
5
5
|
import { PaginationOptions } from '../shared/utils/pagination-utils';
|
|
6
|
-
import type { CampaignDTO, CampaignCreateRequestDTO, CampaignClaimRequestDTO, CampaignClaimDTO, TokenUnitCreateRequestDTO, CampaignBusinessEngagementCreateRequestDTO, CampaignTriggerDTO } from '../shared/interfaces/pers-shared-lib.interfaces';
|
|
6
|
+
import type { CampaignDTO, CampaignCreateRequestDTO, CampaignClaimRequestDTO, CampaignClaimDTO, TokenUnitCreateRequestDTO, CampaignBusinessEngagementCreateRequestDTO, CampaignTriggerDTO, CampaignTriggerCreateRequestDTO } from '../shared/interfaces/pers-shared-lib.interfaces';
|
|
7
7
|
/**
|
|
8
8
|
* Campaign Manager - Clean, high-level interface for campaign operations
|
|
9
9
|
*
|
|
@@ -82,6 +82,7 @@ export declare class CampaignManager {
|
|
|
82
82
|
* business partnerships, eligibility criteria, and claiming requirements.
|
|
83
83
|
*
|
|
84
84
|
* @param campaignId - Unique campaign identifier
|
|
85
|
+
* @param include - Relations to include: 'triggerSources', 'businesses'
|
|
85
86
|
* @returns Promise resolving to campaign data with complete details
|
|
86
87
|
* @throws {PersApiError} When campaign with specified ID is not found
|
|
87
88
|
*
|
|
@@ -110,8 +111,16 @@ export declare class CampaignManager {
|
|
|
110
111
|
* console.log('Campaign not found:', error.message);
|
|
111
112
|
* }
|
|
112
113
|
* ```
|
|
114
|
+
*
|
|
115
|
+
* @example With Include Relations
|
|
116
|
+
* ```typescript
|
|
117
|
+
* // Get campaign with trigger sources and businesses included
|
|
118
|
+
* const campaign = await sdk.campaigns.getCampaignById('campaign-123', ['triggerSources', 'businesses']);
|
|
119
|
+
* console.log('Trigger sources:', campaign.included?.triggerSources);
|
|
120
|
+
* console.log('Businesses:', campaign.included?.businesses);
|
|
121
|
+
* ```
|
|
113
122
|
*/
|
|
114
|
-
getCampaignById(campaignId: string): Promise<CampaignDTO>;
|
|
123
|
+
getCampaignById(campaignId: string, include?: CampaignIncludeRelation[]): Promise<CampaignDTO>;
|
|
115
124
|
/**
|
|
116
125
|
* Claim a campaign reward
|
|
117
126
|
*
|
|
@@ -244,6 +253,11 @@ export declare class CampaignManager {
|
|
|
244
253
|
* page: 1,
|
|
245
254
|
* limit: 25
|
|
246
255
|
* });
|
|
256
|
+
*
|
|
257
|
+
* // Include related data (trigger sources and businesses)
|
|
258
|
+
* const campaignsWithRelations = await sdk.campaigns.getCampaigns({
|
|
259
|
+
* include: ['triggerSources', 'businesses']
|
|
260
|
+
* });
|
|
247
261
|
* ```
|
|
248
262
|
*/
|
|
249
263
|
getCampaigns(options?: {
|
|
@@ -253,6 +267,7 @@ export declare class CampaignManager {
|
|
|
253
267
|
limit?: number;
|
|
254
268
|
sortBy?: 'name' | 'createdAt' | 'startDate';
|
|
255
269
|
sortOrder?: SortOrder;
|
|
270
|
+
include?: CampaignIncludeRelation[];
|
|
256
271
|
}): Promise<PaginatedResponseDTO<CampaignDTO>>;
|
|
257
272
|
/**
|
|
258
273
|
* Admin: Create new campaign
|
|
@@ -359,52 +374,131 @@ export declare class CampaignManager {
|
|
|
359
374
|
*/
|
|
360
375
|
toggleCampaignTestnet(campaignId: string): Promise<CampaignDTO>;
|
|
361
376
|
/**
|
|
362
|
-
* Admin: Get campaign triggers
|
|
377
|
+
* Admin: Get all campaign triggers (paginated)
|
|
363
378
|
*
|
|
364
|
-
* Retrieves all
|
|
365
|
-
*
|
|
366
|
-
* Requires administrator privileges.
|
|
379
|
+
* Retrieves all campaign trigger rules that define rate limits, geo-validation,
|
|
380
|
+
* conditions, and trigger types for campaign activation.
|
|
367
381
|
*
|
|
368
|
-
* @
|
|
382
|
+
* @param options - Pagination options
|
|
383
|
+
* @returns Promise resolving to paginated list of campaign triggers
|
|
369
384
|
*
|
|
370
385
|
* @example
|
|
371
386
|
* ```typescript
|
|
372
|
-
*
|
|
373
|
-
*
|
|
374
|
-
*
|
|
375
|
-
*
|
|
376
|
-
* triggers.forEach(trigger => {
|
|
377
|
-
* console.log(`- ${trigger.name}: ${trigger.description}`);
|
|
378
|
-
* console.log(` Type: ${trigger.type}`);
|
|
379
|
-
* console.log(` Parameters: ${JSON.stringify(trigger.parameters)}`);
|
|
387
|
+
* const triggers = await sdk.campaigns.getCampaignTriggers({ page: 1, limit: 20 });
|
|
388
|
+
* console.log(`Found ${triggers.total} triggers`);
|
|
389
|
+
* triggers.data.forEach(trigger => {
|
|
390
|
+
* console.log(`- ${trigger.name}: max ${trigger.maxPerDayPerUser}/day`);
|
|
380
391
|
* });
|
|
381
392
|
* ```
|
|
382
393
|
*/
|
|
383
394
|
getCampaignTriggers(options?: PaginationOptions): Promise<PaginatedResponseDTO<CampaignTriggerDTO>>;
|
|
384
395
|
/**
|
|
385
|
-
* Admin:
|
|
396
|
+
* Admin: Get campaign trigger by ID
|
|
397
|
+
*
|
|
398
|
+
* @param triggerId - The campaign trigger ID
|
|
399
|
+
* @returns Promise resolving to the campaign trigger
|
|
400
|
+
*
|
|
401
|
+
* @example
|
|
402
|
+
* ```typescript
|
|
403
|
+
* const trigger = await sdk.campaigns.getCampaignTriggerById('trigger-123');
|
|
404
|
+
* console.log('Max per day:', trigger.maxPerDayPerUser);
|
|
405
|
+
* ```
|
|
406
|
+
*/
|
|
407
|
+
getCampaignTriggerById(triggerId: string): Promise<CampaignTriggerDTO>;
|
|
408
|
+
/**
|
|
409
|
+
* Admin: Create a new campaign trigger
|
|
410
|
+
*
|
|
411
|
+
* Creates a trigger rule that defines rate limits, geo-validation, and conditions
|
|
412
|
+
* for campaign activation. Triggers are created independently and then assigned
|
|
413
|
+
* to campaigns via `setCampaignTrigger()`.
|
|
414
|
+
*
|
|
415
|
+
* @param data - Trigger configuration
|
|
416
|
+
* @returns Promise resolving to created trigger
|
|
386
417
|
*
|
|
387
|
-
*
|
|
388
|
-
*
|
|
418
|
+
* @example
|
|
419
|
+
* ```typescript
|
|
420
|
+
* const trigger = await sdk.campaigns.createCampaignTrigger({
|
|
421
|
+
* name: 'Daily Check-in',
|
|
422
|
+
* maxPerDayPerUser: 1,
|
|
423
|
+
* maxPerUser: 100,
|
|
424
|
+
* minCooldownSeconds: 3600,
|
|
425
|
+
* maxGeoDistanceInMeters: 50,
|
|
426
|
+
* triggerType: 'CLAIM_BY_USER'
|
|
427
|
+
* });
|
|
428
|
+
*
|
|
429
|
+
* // Then assign to campaign
|
|
430
|
+
* await sdk.campaigns.setCampaignTrigger(campaignId, trigger.id);
|
|
431
|
+
* ```
|
|
432
|
+
*/
|
|
433
|
+
createCampaignTrigger(data: CampaignTriggerCreateRequestDTO): Promise<CampaignTriggerDTO>;
|
|
434
|
+
/**
|
|
435
|
+
* Admin: Update an existing campaign trigger
|
|
436
|
+
*
|
|
437
|
+
* @param triggerId - The campaign trigger ID
|
|
438
|
+
* @param data - Updated trigger configuration (partial)
|
|
439
|
+
* @returns Promise resolving to updated trigger
|
|
440
|
+
*
|
|
441
|
+
* @example
|
|
442
|
+
* ```typescript
|
|
443
|
+
* const updated = await sdk.campaigns.updateCampaignTrigger('trigger-123', {
|
|
444
|
+
* maxPerDayPerUser: 5,
|
|
445
|
+
* minCooldownSeconds: 1800
|
|
446
|
+
* });
|
|
447
|
+
* ```
|
|
448
|
+
*/
|
|
449
|
+
updateCampaignTrigger(triggerId: string, data: Partial<CampaignTriggerCreateRequestDTO>): Promise<CampaignTriggerDTO>;
|
|
450
|
+
/**
|
|
451
|
+
* Admin: Delete a campaign trigger
|
|
452
|
+
*
|
|
453
|
+
* @param triggerId - The campaign trigger ID
|
|
454
|
+
* @returns Promise resolving to success status
|
|
455
|
+
*
|
|
456
|
+
* @example
|
|
457
|
+
* ```typescript
|
|
458
|
+
* await sdk.campaigns.deleteCampaignTrigger('trigger-123');
|
|
459
|
+
* ```
|
|
460
|
+
*/
|
|
461
|
+
deleteCampaignTrigger(triggerId: string): Promise<boolean>;
|
|
462
|
+
/**
|
|
463
|
+
* Admin: Assign a trigger to a campaign
|
|
464
|
+
*
|
|
465
|
+
* Associates a trigger rule with a campaign. A campaign can have only one trigger
|
|
466
|
+
* at a time. Assigning a new trigger replaces any existing trigger.
|
|
389
467
|
*
|
|
390
468
|
* @param campaignId - ID of the campaign
|
|
391
469
|
* @param triggerId - ID of the trigger to associate
|
|
392
|
-
* @returns Promise resolving to updated campaign
|
|
393
|
-
* @throws {PersApiError} When not authenticated as admin or entities not found
|
|
470
|
+
* @returns Promise resolving to updated campaign
|
|
394
471
|
*
|
|
395
472
|
* @example
|
|
396
473
|
* ```typescript
|
|
397
|
-
* // Admin operation - set up automatic campaign trigger
|
|
398
474
|
* const updated = await sdk.campaigns.setCampaignTrigger(
|
|
399
|
-
* '
|
|
400
|
-
* '
|
|
475
|
+
* 'campaign-123',
|
|
476
|
+
* 'trigger-456'
|
|
401
477
|
* );
|
|
402
|
-
*
|
|
403
|
-
* console.log('Trigger set for campaign:', updated.title);
|
|
404
|
-
* console.log('Trigger will activate on user registration');
|
|
478
|
+
* console.log('Trigger assigned:', updated.trigger?.name);
|
|
405
479
|
* ```
|
|
406
480
|
*/
|
|
407
481
|
setCampaignTrigger(campaignId: string, triggerId: string): Promise<CampaignDTO>;
|
|
482
|
+
/**
|
|
483
|
+
* Admin: Remove a trigger from a campaign
|
|
484
|
+
*
|
|
485
|
+
* Removes the trigger rule from a campaign. The trigger itself is not deleted
|
|
486
|
+
* and can be reassigned to other campaigns.
|
|
487
|
+
*
|
|
488
|
+
* @param campaignId - ID of the campaign
|
|
489
|
+
* @param triggerId - ID of the trigger to remove
|
|
490
|
+
* @returns Promise resolving to updated campaign
|
|
491
|
+
*
|
|
492
|
+
* @example
|
|
493
|
+
* ```typescript
|
|
494
|
+
* const updated = await sdk.campaigns.removeCampaignTrigger(
|
|
495
|
+
* 'campaign-123',
|
|
496
|
+
* 'trigger-456'
|
|
497
|
+
* );
|
|
498
|
+
* console.log('Trigger removed:', updated.trigger === null);
|
|
499
|
+
* ```
|
|
500
|
+
*/
|
|
501
|
+
removeCampaignTrigger(campaignId: string, triggerId: string): Promise<CampaignDTO>;
|
|
408
502
|
/**
|
|
409
503
|
* Admin: Create campaign token unit
|
|
410
504
|
*
|
|
@@ -611,7 +705,7 @@ export declare class CampaignManager {
|
|
|
611
705
|
limit?: number;
|
|
612
706
|
sortBy?: string;
|
|
613
707
|
sortOrder?: any;
|
|
614
|
-
}): Promise<PaginatedResponseDTO<CampaignClaimDTO>>;
|
|
708
|
+
}, include?: CampaignClaimIncludeRelation[]): Promise<PaginatedResponseDTO<CampaignClaimDTO>>;
|
|
615
709
|
/**
|
|
616
710
|
* Admin: Get campaign claims by user ID
|
|
617
711
|
*
|
|
@@ -645,7 +739,7 @@ export declare class CampaignManager {
|
|
|
645
739
|
* console.log(`\nTotal rewards earned: ${totalRewards}`);
|
|
646
740
|
* ```
|
|
647
741
|
*/
|
|
648
|
-
getCampaignClaimsByUserId(userId: string, options?: PaginationOptions): Promise<PaginatedResponseDTO<CampaignClaimDTO>>;
|
|
742
|
+
getCampaignClaimsByUserId(userId: string, options?: PaginationOptions, include?: CampaignClaimIncludeRelation[]): Promise<PaginatedResponseDTO<CampaignClaimDTO>>;
|
|
649
743
|
/**
|
|
650
744
|
* Admin: Get campaign claims by business ID
|
|
651
745
|
*
|
|
@@ -684,7 +778,63 @@ export declare class CampaignManager {
|
|
|
684
778
|
* console.log(`\nTotal rewards distributed: ${totalRewardsDistributed}`);
|
|
685
779
|
* ```
|
|
686
780
|
*/
|
|
687
|
-
getCampaignClaimsByBusinessId(businessId: string, options?: PaginationOptions): Promise<PaginatedResponseDTO<CampaignClaimDTO>>;
|
|
781
|
+
getCampaignClaimsByBusinessId(businessId: string, options?: PaginationOptions, include?: CampaignClaimIncludeRelation[]): Promise<PaginatedResponseDTO<CampaignClaimDTO>>;
|
|
782
|
+
/**
|
|
783
|
+
* Admin: Assign a trigger source to a campaign
|
|
784
|
+
*
|
|
785
|
+
* Associates a trigger source with a campaign, enabling the trigger source
|
|
786
|
+
* to activate campaign rewards when triggered. A campaign can have multiple
|
|
787
|
+
* trigger sources. Requires administrator privileges.
|
|
788
|
+
*
|
|
789
|
+
* Note: To create/update/delete trigger sources, use `sdk.triggerSources`.
|
|
790
|
+
*
|
|
791
|
+
* @param campaignId - Campaign UUID
|
|
792
|
+
* @param triggerSourceId - Trigger source UUID
|
|
793
|
+
* @returns Promise resolving to updated campaign with trigger source assigned
|
|
794
|
+
* @throws {PersApiError} When not authenticated as admin or entities not found
|
|
795
|
+
*
|
|
796
|
+
* @example
|
|
797
|
+
* ```typescript
|
|
798
|
+
* // Create trigger source first
|
|
799
|
+
* const source = await sdk.triggerSources.create({
|
|
800
|
+
* type: 'QR_CODE',
|
|
801
|
+
* name: 'Store Entrance QR'
|
|
802
|
+
* });
|
|
803
|
+
*
|
|
804
|
+
* // Then assign to campaign
|
|
805
|
+
* const updated = await sdk.campaigns.assignTriggerSource(
|
|
806
|
+
* 'campaign-123',
|
|
807
|
+
* source.id
|
|
808
|
+
* );
|
|
809
|
+
*
|
|
810
|
+
* console.log('Trigger source assigned:', updated.triggerSourceIds.length);
|
|
811
|
+
* ```
|
|
812
|
+
*/
|
|
813
|
+
assignTriggerSource(campaignId: string, triggerSourceId: string): Promise<CampaignDTO>;
|
|
814
|
+
/**
|
|
815
|
+
* Admin: Remove a trigger source from a campaign
|
|
816
|
+
*
|
|
817
|
+
* Removes the association between a trigger source and a campaign. The trigger
|
|
818
|
+
* source itself is not deleted and can be reassigned to other campaigns.
|
|
819
|
+
* Requires administrator privileges.
|
|
820
|
+
*
|
|
821
|
+
* @param campaignId - Campaign UUID
|
|
822
|
+
* @param triggerSourceId - Trigger source UUID
|
|
823
|
+
* @returns Promise resolving to updated campaign with trigger source removed
|
|
824
|
+
* @throws {PersApiError} When not authenticated as admin or entities not found
|
|
825
|
+
*
|
|
826
|
+
* @example
|
|
827
|
+
* ```typescript
|
|
828
|
+
* // Remove a trigger source from a campaign
|
|
829
|
+
* const updated = await sdk.campaigns.removeTriggerSource(
|
|
830
|
+
* 'campaign-123',
|
|
831
|
+
* 'source-456'
|
|
832
|
+
* );
|
|
833
|
+
*
|
|
834
|
+
* console.log('Remaining trigger source IDs:', updated.triggerSourceIds.length);
|
|
835
|
+
* ```
|
|
836
|
+
*/
|
|
837
|
+
removeTriggerSource(campaignId: string, triggerSourceId: string): Promise<CampaignDTO>;
|
|
688
838
|
/**
|
|
689
839
|
* Get the full campaign service for advanced operations
|
|
690
840
|
*
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"campaign-manager.d.ts","sourceRoot":"","sources":["../../src/managers/campaign-manager.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"campaign-manager.d.ts","sourceRoot":"","sources":["../../src/managers/campaign-manager.ts"],"names":[],"mappings":"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"}
|
package/dist/managers/index.d.ts
CHANGED
|
@@ -18,4 +18,5 @@ export { TenantManager } from './tenant-manager';
|
|
|
18
18
|
export { ApiKeyManager } from './api-key-manager';
|
|
19
19
|
export { AnalyticsManager } from './analytics-manager';
|
|
20
20
|
export { DonationManager } from './donation-manager';
|
|
21
|
+
export { TriggerSourceManager } from './trigger-source-manager';
|
|
21
22
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/managers/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAC7C,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAC7C,OAAO,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAC1D,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAC/C,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AACrD,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AACrD,OAAO,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AACzD,OAAO,EAAE,kBAAkB,EAAE,MAAM,uBAAuB,CAAC;AAC3D,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AACrD,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAC7C,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AACjD,OAAO,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAClD,OAAO,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AACvD,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/managers/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAC7C,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAC7C,OAAO,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAC1D,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAC/C,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AACrD,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AACrD,OAAO,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AACzD,OAAO,EAAE,kBAAkB,EAAE,MAAM,uBAAuB,CAAC;AAC3D,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AACrD,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAC7C,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AACjD,OAAO,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAClD,OAAO,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AACvD,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AACrD,OAAO,EAAE,oBAAoB,EAAE,MAAM,0BAA0B,CAAC"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { PaginatedResponseDTO } from '@explorins/pers-shared';
|
|
1
|
+
import { PaginatedResponseDTO, RedemptionRedeemIncludeRelation } from '@explorins/pers-shared';
|
|
2
2
|
import { PersApiClient } from '../core/pers-api-client';
|
|
3
3
|
import { PersEventEmitter } from '../core/events';
|
|
4
4
|
import { RedemptionService } from '../redemption';
|
|
@@ -342,7 +342,57 @@ export declare class RedemptionManager {
|
|
|
342
342
|
* });
|
|
343
343
|
* ```
|
|
344
344
|
*/
|
|
345
|
-
getUserRedemptions(options?: PaginationOptions): Promise<PaginatedResponseDTO<RedemptionRedeemDTO>>;
|
|
345
|
+
getUserRedemptions(options?: PaginationOptions, include?: RedemptionRedeemIncludeRelation[]): Promise<PaginatedResponseDTO<RedemptionRedeemDTO>>;
|
|
346
|
+
/**
|
|
347
|
+
* Admin: Get all redemption redeems with filtering and enriched data
|
|
348
|
+
*
|
|
349
|
+
* Retrieves all redemption redeems across the platform with filtering capabilities.
|
|
350
|
+
* This is an admin-level operation that allows monitoring and analytics of redemption
|
|
351
|
+
* activity. Supports filtering by user, redemption offer, and enrichment of related entities.
|
|
352
|
+
*
|
|
353
|
+
* @param filters - Filter options (userId, redemptionId, pagination)
|
|
354
|
+
* @param include - Optional relations to include for enrichment
|
|
355
|
+
* @returns Promise resolving to paginated list of redemption redeems
|
|
356
|
+
* @throws {PersApiError} When not authenticated as admin
|
|
357
|
+
*
|
|
358
|
+
* @example Get All Redeems
|
|
359
|
+
* ```typescript
|
|
360
|
+
* // Admin operation - get all redemption redeems
|
|
361
|
+
* const { data: allRedeems, pagination } = await sdk.redemptions.getRedemptionRedeems();
|
|
362
|
+
*
|
|
363
|
+
* console.log(`Total redeems: ${pagination.total}`);
|
|
364
|
+
* console.log(`Page ${pagination.page} of ${pagination.pages}`);
|
|
365
|
+
* ```
|
|
366
|
+
*
|
|
367
|
+
* @example Filter by User
|
|
368
|
+
* ```typescript
|
|
369
|
+
* // Get redeems for specific user
|
|
370
|
+
* const { data: userRedeems } = await sdk.redemptions.getRedemptionRedeems({
|
|
371
|
+
* userId: 'user-123',
|
|
372
|
+
* limit: 50
|
|
373
|
+
* });
|
|
374
|
+
*
|
|
375
|
+
* console.log(`User has ${userRedeems.length} redemptions`);
|
|
376
|
+
* ```
|
|
377
|
+
*
|
|
378
|
+
* @example With Enriched Data
|
|
379
|
+
* ```typescript
|
|
380
|
+
* const { data: redeems } = await sdk.redemptions.getRedemptionRedeems(
|
|
381
|
+
* { page: 1, limit: 20 },
|
|
382
|
+
* ['redemption', 'user', 'business']
|
|
383
|
+
* );
|
|
384
|
+
*
|
|
385
|
+
* redeems.forEach(redeem => {
|
|
386
|
+
* const redemptionName = redeem.included?.redemption?.name || 'Unknown';
|
|
387
|
+
* const userEmail = redeem.included?.user?.email || redeem.userId;
|
|
388
|
+
* console.log(`${redemptionName} - ${userEmail}`);
|
|
389
|
+
* });
|
|
390
|
+
* ```
|
|
391
|
+
*/
|
|
392
|
+
getRedemptionRedeems(filters?: {
|
|
393
|
+
userId?: string;
|
|
394
|
+
redemptionId?: string;
|
|
395
|
+
} & PaginationOptions, include?: RedemptionRedeemIncludeRelation[]): Promise<PaginatedResponseDTO<RedemptionRedeemDTO>>;
|
|
346
396
|
/**
|
|
347
397
|
* Admin: Create new redemption offer
|
|
348
398
|
*
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"redemption-manager.d.ts","sourceRoot":"","sources":["../../src/managers/redemption-manager.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;
|
|
1
|
+
{"version":3,"file":"redemption-manager.d.ts","sourceRoot":"","sources":["../../src/managers/redemption-manager.ts"],"names":[],"mappings":"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"}
|