[PERS SDK - v2.3.26](/sdk-reference/readme) / [Exports](/sdk-reference/modules) / TriggerSourceApi

# Class: TriggerSourceApi

Platform-Agnostic TriggerSource API Client

Handles all trigger source operations:

- CRUD operations for trigger sources (QR codes, NFC tags, GPS geofences, webhooks, etc.)
- Trigger sources are independent entities that can be assigned to campaigns


Uses @explorins/pers-shared DTOs for consistency with backend.

## Table of contents

### Constructors

- [constructor](/sdk-reference/classes/triggersourceapi#constructor)


### Methods

- [getTriggerSources](/sdk-reference/classes/triggersourceapi#gettriggersources)
- [getTriggerSourceById](/sdk-reference/classes/triggersourceapi#gettriggersourcebyid)
- [createTriggerSource](/sdk-reference/classes/triggersourceapi#createtriggersource)
- [updateTriggerSource](/sdk-reference/classes/triggersourceapi#updatetriggersource)
- [deleteTriggerSource](/sdk-reference/classes/triggersourceapi#deletetriggersource)


## Constructors

### constructor

• **new TriggerSourceApi**(`apiClient`): [`TriggerSourceApi`](/sdk-reference/classes/triggersourceapi)

#### Parameters

| Name | Type |
|  --- | --- |
| `apiClient` | [`PersApiClient`](/sdk-reference/classes/persapiclient) |


#### Returns

[`TriggerSourceApi`](/sdk-reference/classes/triggersourceapi)

#### Defined in

[trigger-source/api/trigger-source-api.ts:22](https://github.com/eXplorins/PERS-sdks/blob/main/packages/pers-sdk/packages/pers-sdk/src/trigger-source/api/trigger-source-api.ts#L22)

## Methods

### getTriggerSources

▸ **getTriggerSources**(`options?`): `Promise`<`PaginatedResponseDTO`<`TriggerSourceDTO`>>

PUBLIC: Get trigger sources with optional filters and pagination

#### Parameters

| Name | Type | Description |
|  --- | --- | --- |
| `options?` | `TriggerSourceFilterOptions` & { `campaignId?`: `string`  } | Filter and pagination options (includes location filters) |


#### Returns

`Promise`<`PaginatedResponseDTO`<`TriggerSourceDTO`>>

Paginated list of trigger sources

**`Example`**

```typescript
// Get all QR code trigger sources
const qrSources = await triggerSourceApi.getTriggerSources({ type: 'QR_CODE' });

// Get trigger sources for a specific campaign
const campaignSources = await triggerSourceApi.getTriggerSources({ 
  campaignId: 'campaign-123',
  page: 1,
  limit: 20
});

// Filter by location (geocoding)
const dubaiSources = await triggerSourceApi.getTriggerSources({ 
  city: 'Dubai', 
  countryCode: 'AE' 
});
```

#### Defined in

[trigger-source/api/trigger-source-api.ts:49](https://github.com/eXplorins/PERS-sdks/blob/main/packages/pers-sdk/packages/pers-sdk/src/trigger-source/api/trigger-source-api.ts#L49)

### getTriggerSourceById

▸ **getTriggerSourceById**(`triggerSourceId`): `Promise`<`TriggerSourceDTO`>

PUBLIC: Get trigger source by ID

#### Parameters

| Name | Type | Description |
|  --- | --- | --- |
| `triggerSourceId` | `string` | UUID of the trigger source |


#### Returns

`Promise`<`TriggerSourceDTO`>

Trigger source details

#### Defined in

[trigger-source/api/trigger-source-api.ts:79](https://github.com/eXplorins/PERS-sdks/blob/main/packages/pers-sdk/packages/pers-sdk/src/trigger-source/api/trigger-source-api.ts#L79)

### createTriggerSource

▸ **createTriggerSource**(`triggerSource`): `Promise`<`TriggerSourceDTO`>

ADMIN: Create a new trigger source

#### Parameters

| Name | Type | Description |
|  --- | --- | --- |
| `triggerSource` | `TriggerSourceCreateRequestDTO` | Trigger source creation data |


#### Returns

`Promise`<`TriggerSourceDTO`>

Created trigger source

**`Example`**

```typescript
const qrSource = await triggerSourceApi.createTriggerSource({
  type: 'QR_CODE',
  name: 'Store Entrance QR',
  description: 'QR code at main entrance',
  businessId: 'business-123',
  coordsLatitude: 47.6062,
  coordsLongitude: -122.3321
});
```

#### Defined in

[trigger-source/api/trigger-source-api.ts:101](https://github.com/eXplorins/PERS-sdks/blob/main/packages/pers-sdk/packages/pers-sdk/src/trigger-source/api/trigger-source-api.ts#L101)

### updateTriggerSource

▸ **updateTriggerSource**(`triggerSourceId`, `triggerSource`): `Promise`<`TriggerSourceDTO`>

ADMIN: Update a trigger source

#### Parameters

| Name | Type | Description |
|  --- | --- | --- |
| `triggerSourceId` | `string` | UUID of the trigger source to update |
| `triggerSource` | `Partial`<`TriggerSourceCreateRequestDTO`> | Updated trigger source data (partial) |


#### Returns

`Promise`<`TriggerSourceDTO`>

Updated trigger source

#### Defined in

[trigger-source/api/trigger-source-api.ts:112](https://github.com/eXplorins/PERS-sdks/blob/main/packages/pers-sdk/packages/pers-sdk/src/trigger-source/api/trigger-source-api.ts#L112)

### deleteTriggerSource

▸ **deleteTriggerSource**(`triggerSourceId`): `Promise`<`boolean`>

ADMIN: Delete (soft delete) a trigger source

#### Parameters

| Name | Type | Description |
|  --- | --- | --- |
| `triggerSourceId` | `string` | UUID of the trigger source to delete |


#### Returns

`Promise`<`boolean`>

Success status

#### Defined in

[trigger-source/api/trigger-source-api.ts:125](https://github.com/eXplorins/PERS-sdks/blob/main/packages/pers-sdk/packages/pers-sdk/src/trigger-source/api/trigger-source-api.ts#L125)