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

# Class: RedemptionApi

Platform-Agnostic Redemption API Client (UPDATED - RESTful Design)

Updated to work with the new RESTful controller structure:

- /redemptions (main redemption management)
- /redemption-types (redemption type management)
- /redemption-tokens (token unit management)
- /redemption-redeems (redemption execution and history)


Handles redemption operations using the PERS backend with intelligent access detection.
Uses @explorins/pers-shared DTOs for consistency with backend.

## Table of contents

### Constructors

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


### Methods

- [getRedemptions](/sdk-reference/classes/redemptionapi#getredemptions)
- [getRedemptionTypes](/sdk-reference/classes/redemptionapi#getredemptiontypes)
- [getRedemptionById](/sdk-reference/classes/redemptionapi#getredemptionbyid)
- [getRedemptionAvailableSupply](/sdk-reference/classes/redemptionapi#getredemptionavailablesupply)
- [redeemRedemption](/sdk-reference/classes/redemptionapi#redeemredemption)
- [getRedemptionRedeems](/sdk-reference/classes/redemptionapi#getredemptionredeems)
- [getRedemptionRedeemById](/sdk-reference/classes/redemptionapi#getredemptionredeembyid)
- [getUserRedeems](/sdk-reference/classes/redemptionapi#getuserredeems)
- [createRedemption](/sdk-reference/classes/redemptionapi#createredemption)
- [updateRedemption](/sdk-reference/classes/redemptionapi#updateredemption)
- [toggleRedemptionActive](/sdk-reference/classes/redemptionapi#toggleredemptionactive)
- [deleteRedemption](/sdk-reference/classes/redemptionapi#deleteredemption)
- [createRedemptionType](/sdk-reference/classes/redemptionapi#createredemptiontype)
- [updateRedemptionType](/sdk-reference/classes/redemptionapi#updateredemptiontype)
- [deleteRedemptionType](/sdk-reference/classes/redemptionapi#deleteredemptiontype)
- [createRedemptionTokenUnit](/sdk-reference/classes/redemptionapi#createredemptiontokenunit)
- [updateRedemptionTokenUnit](/sdk-reference/classes/redemptionapi#updateredemptiontokenunit)
- [deleteRedemptionTokenUnit](/sdk-reference/classes/redemptionapi#deleteredemptiontokenunit)
- [getActiveRedemptions](/sdk-reference/classes/redemptionapi#getactiveredemptions)
- [exportCSV](/sdk-reference/classes/redemptionapi#exportcsv)
- [exportRedeemsCSV](/sdk-reference/classes/redemptionapi#exportredeemscsv)
- [setRedemptionApproval](/sdk-reference/classes/redemptionapi#setredemptionapproval)


## Constructors

### constructor

• **new RedemptionApi**(`apiClient`): [`RedemptionApi`](/sdk-reference/classes/redemptionapi)

#### Parameters

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


#### Returns

[`RedemptionApi`](/sdk-reference/classes/redemptionapi)

#### Defined in

[redemption/api/redemption-api.ts:27](https://github.com/eXplorins/PERS-sdks/blob/main/packages/pers-sdk/packages/pers-sdk/src/redemption/api/redemption-api.ts#L27)

## Methods

### getRedemptions

▸ **getRedemptions**(`options?`): `Promise`<`PaginatedResponseDTO`<`RedemptionDTO`>>

UNIFIED: Get redemptions with intelligent access control

Intelligent endpoint that adapts based on authentication:

- Public users: Get active redemptions only
- Admin users: Get all redemptions with optional filtering


#### Parameters

| Name | Type | Description |
|  --- | --- | --- |
| `options?` | `RedemptionQueryParams` & { `adminAccess?`: `boolean`  } | Filter and pagination options (active, search, adminAccess, startDate, endDate, include, page, limit, sortBy, sortOrder) |


#### Returns

`Promise`<`PaginatedResponseDTO`<`RedemptionDTO`>>

Paginated response with redemptions

**`Example`**

```typescript
// Get redemptions with redeem count included
const redemptions = await api.getRedemptions({ include: ['redeemCount'] });

// Filter by date range
const dateFiltered = await api.getRedemptions({ 
  startDate: new Date('2026-05-01'), 
  endDate: new Date('2026-06-30') 
});
```

#### Defined in

[redemption/api/redemption-api.ts:58](https://github.com/eXplorins/PERS-sdks/blob/main/packages/pers-sdk/packages/pers-sdk/src/redemption/api/redemption-api.ts#L58)

### getRedemptionTypes

▸ **getRedemptionTypes**(`options?`): `Promise`<`PaginatedResponseDTO`<`RedemptionTypeDTO`>>

PUBLIC: Get redemption types

Updated: /redemption/type Ã¢â€ â€™ /redemption-types

#### Parameters

| Name | Type | Description |
|  --- | --- | --- |
| `options?` | `PaginationOptions` | Pagination options (page, limit, sortBy, sortOrder) |


#### Returns

`Promise`<`PaginatedResponseDTO`<`RedemptionTypeDTO`>>

Paginated response with redemption types

#### Defined in

[redemption/api/redemption-api.ts:88](https://github.com/eXplorins/PERS-sdks/blob/main/packages/pers-sdk/packages/pers-sdk/src/redemption/api/redemption-api.ts#L88)

### getRedemptionById

▸ **getRedemptionById**(`id`, `include?`): `Promise`<`RedemptionDTO`>

PUBLIC: Get redemption by ID

Updated: /redemption/:id Ã¢â€ â€™ /redemptions/:id

#### Parameters

| Name | Type | Description |
|  --- | --- | --- |
| `id` | `string` | Redemption UUID |
| `include?` | `RedemptionIncludeRelation`[] | Relations to include: 'redeemCount' |


#### Returns

`Promise`<`RedemptionDTO`>

**`Example`**

```typescript
// Get redemption with redeem count
const redemption = await api.getRedemptionById('123', ['redeemCount']);
console.log(redemption.redeemCount);
```

#### Defined in

[redemption/api/redemption-api.ts:109](https://github.com/eXplorins/PERS-sdks/blob/main/packages/pers-sdk/packages/pers-sdk/src/redemption/api/redemption-api.ts#L109)

### getRedemptionAvailableSupply

▸ **getRedemptionAvailableSupply**(`id`): `Promise`<`number`>

PUBLIC: Get available supply for redemption

Updated: /redemption/:id/available-supply Ã¢â€ â€™ /redemptions/:id/supply

#### Parameters

| Name | Type |
|  --- | --- |
| `id` | `string` |


#### Returns

`Promise`<`number`>

#### Defined in

[redemption/api/redemption-api.ts:119](https://github.com/eXplorins/PERS-sdks/blob/main/packages/pers-sdk/packages/pers-sdk/src/redemption/api/redemption-api.ts#L119)

### redeemRedemption

▸ **redeemRedemption**(`request`): `Promise`<`RedemptionRedeemRequestResponseDTO`>

Execute redemption (unified endpoint)

NEW: POST /redemption-redeems - Role-based processing

- USER: Direct user redemption processing
- ADMIN: Can process redemptions for any account type
- BUSINESS: Process redemptions for customers


#### Parameters

| Name | Type | Description |
|  --- | --- | --- |
| `request` | `RedemptionRedeemRequestDTO` | Redemption request with optional context for dynamic NFT generation |


#### Returns

`Promise`<`RedemptionRedeemRequestResponseDTO`>

#### Defined in

[redemption/api/redemption-api.ts:138](https://github.com/eXplorins/PERS-sdks/blob/main/packages/pers-sdk/packages/pers-sdk/src/redemption/api/redemption-api.ts#L138)

### getRedemptionRedeems

▸ **getRedemptionRedeems**(`filters?`, `include?`): `Promise`<`PaginatedResponseDTO`<`RedemptionRedeemDTO`>>

UNIFIED: Get redemption redeems with filtering and intelligent access

Role-based access with unified filtering:

- Users: See only their own redeems (userId/businessId filters ignored)
- Admins: Can filter by userId, businessId, redemptionId, or status


#### Parameters

| Name | Type | Description |
|  --- | --- | --- |
| `filters?` | { `redemptionId?`: `string` ; `userId?`: `string` ; `businessId?`: `string` ; `status?`: `ProcessRecordStatus` ; `dateFrom?`: `string` | `Date` ; `dateTo?`: `string` | `Date` ; `myRedeems?`: `boolean`  } & `PaginationOptions` | Filter and pagination options (redemptionId, userId, businessId, status, dateFrom, dateTo, myRedeems, page, limit, sortBy, sortOrder) |
| `include?` | `RedemptionRedeemIncludeRelation`[] | Optional relations to include (redemption, user, business, transactions) |


#### Returns

`Promise`<`PaginatedResponseDTO`<`RedemptionRedeemDTO`>>

Paginated response with redemption redeems

#### Defined in

[redemption/api/redemption-api.ts:157](https://github.com/eXplorins/PERS-sdks/blob/main/packages/pers-sdk/packages/pers-sdk/src/redemption/api/redemption-api.ts#L157)

### getRedemptionRedeemById

▸ **getRedemptionRedeemById**(`id`, `include?`): `Promise`<`RedemptionRedeemDTO`>

UNIFIED: Get specific redemption redeem by ID

#### Parameters

| Name | Type | Description |
|  --- | --- | --- |
| `id` | `string` | Redemption redeem ID |
| `include?` | `RedemptionRedeemIncludeRelation`[] | Optional relations to include (redemption, user, business) |


#### Returns

`Promise`<`RedemptionRedeemDTO`>

#### Defined in

[redemption/api/redemption-api.ts:218](https://github.com/eXplorins/PERS-sdks/blob/main/packages/pers-sdk/packages/pers-sdk/src/redemption/api/redemption-api.ts#L218)

### getUserRedeems

▸ **getUserRedeems**(`filters?`, `options?`, `include?`): `Promise`<`PaginatedResponseDTO`<`RedemptionRedeemDTO`>>

UNIFIED: Get user redemption history

Uses convenience endpoint /redemption-redeems/me with optional filtering

#### Parameters

| Name | Type | Description |
|  --- | --- | --- |
| `filters?` | `Object` | Optional filters (redemptionId, status) |
| `filters.redemptionId?` | `string` | - |
| `filters.status?` | `ProcessRecordStatus` | - |
| `options?` | `PaginationOptions` | Pagination options (page, limit, sortBy, sortOrder) |
| `include?` | `RedemptionRedeemIncludeRelation`[] | Optional relations to include (redemption, user, business, transactions) |


#### Returns

`Promise`<`PaginatedResponseDTO`<`RedemptionRedeemDTO`>>

Paginated response with user's redemption redeems

#### Defined in

[redemption/api/redemption-api.ts:246](https://github.com/eXplorins/PERS-sdks/blob/main/packages/pers-sdk/packages/pers-sdk/src/redemption/api/redemption-api.ts#L246)

### createRedemption

▸ **createRedemption**(`redemption`): `Promise`<`RedemptionDTO`>

ADMIN: Create redemption

Updated: /redemption/admin Ã¢â€ â€™ /redemptions

#### Parameters

| Name | Type |
|  --- | --- |
| `redemption` | `RedemptionCreateRequestDTO` |


#### Returns

`Promise`<`RedemptionDTO`>

#### Defined in

[redemption/api/redemption-api.ts:263](https://github.com/eXplorins/PERS-sdks/blob/main/packages/pers-sdk/packages/pers-sdk/src/redemption/api/redemption-api.ts#L263)

### updateRedemption

▸ **updateRedemption**(`id`, `redemptionCreateRequest`): `Promise`<`RedemptionDTO`>

ADMIN: Update redemption

Updated: /redemption/admin/:id Ã¢â€ â€™ /redemptions/:id

#### Parameters

| Name | Type |
|  --- | --- |
| `id` | `string` |
| `redemptionCreateRequest` | `RedemptionCreateRequestDTO` |


#### Returns

`Promise`<`RedemptionDTO`>

#### Defined in

[redemption/api/redemption-api.ts:272](https://github.com/eXplorins/PERS-sdks/blob/main/packages/pers-sdk/packages/pers-sdk/src/redemption/api/redemption-api.ts#L272)

### toggleRedemptionActive

▸ **toggleRedemptionActive**(`redemptionId`): `Promise`<`RedemptionDTO`>

UNIFIED: Toggle redemption active status

Updated: /redemption/admin/:id/toggle-active Ã¢â€ â€™ /redemptions/:id/status
Following standard /status pattern used across domains

#### Parameters

| Name | Type |
|  --- | --- |
| `redemptionId` | `string` |


#### Returns

`Promise`<`RedemptionDTO`>

#### Defined in

[redemption/api/redemption-api.ts:282](https://github.com/eXplorins/PERS-sdks/blob/main/packages/pers-sdk/packages/pers-sdk/src/redemption/api/redemption-api.ts#L282)

### deleteRedemption

▸ **deleteRedemption**(`id`): `Promise`<`boolean`>

ADMIN: Delete redemption

Updated: /redemption/admin/:id Ã¢â€ â€™ /redemptions/:id

#### Parameters

| Name | Type |
|  --- | --- |
| `id` | `string` |


#### Returns

`Promise`<`boolean`>

#### Defined in

[redemption/api/redemption-api.ts:291](https://github.com/eXplorins/PERS-sdks/blob/main/packages/pers-sdk/packages/pers-sdk/src/redemption/api/redemption-api.ts#L291)

### createRedemptionType

▸ **createRedemptionType**(`redemptionType`): `Promise`<`RedemptionTypeDTO`>

ADMIN: Create redemption type

Updated: /redemption/admin/type Ã¢â€ â€™ /redemption-types

#### Parameters

| Name | Type |
|  --- | --- |
| `redemptionType` | `RedemptionTypeCreateRequestDTO` |


#### Returns

`Promise`<`RedemptionTypeDTO`>

#### Defined in

[redemption/api/redemption-api.ts:300](https://github.com/eXplorins/PERS-sdks/blob/main/packages/pers-sdk/packages/pers-sdk/src/redemption/api/redemption-api.ts#L300)

### updateRedemptionType

▸ **updateRedemptionType**(`redemptionType`): `Promise`<`RedemptionTypeDTO`>

ADMIN: Update redemption type

#### Parameters

| Name | Type | Description |
|  --- | --- | --- |
| `redemptionType` | `RedemptionTypeDTO` | Updated redemption type data (must include id) |


#### Returns

`Promise`<`RedemptionTypeDTO`>

#### Defined in

[redemption/api/redemption-api.ts:309](https://github.com/eXplorins/PERS-sdks/blob/main/packages/pers-sdk/packages/pers-sdk/src/redemption/api/redemption-api.ts#L309)

### deleteRedemptionType

▸ **deleteRedemptionType**(`id`): `Promise`<`boolean`>

ADMIN: Delete redemption type

#### Parameters

| Name | Type | Description |
|  --- | --- | --- |
| `id` | `number` | Redemption type ID to delete |


#### Returns

`Promise`<`boolean`>

#### Defined in

[redemption/api/redemption-api.ts:318](https://github.com/eXplorins/PERS-sdks/blob/main/packages/pers-sdk/packages/pers-sdk/src/redemption/api/redemption-api.ts#L318)

### createRedemptionTokenUnit

▸ **createRedemptionTokenUnit**(`redemptionId`, `redemptionTokenUnit`): `Promise`<`RedemptionDTO`>

ADMIN: Create redemption token unit

Updated: /redemption/admin/:id/token-units Ã¢â€ â€™ /redemption-tokens/:id/

#### Parameters

| Name | Type |
|  --- | --- |
| `redemptionId` | `string` |
| `redemptionTokenUnit` | `TokenUnitCreateRequestDTO` |


#### Returns

`Promise`<`RedemptionDTO`>

#### Defined in

[redemption/api/redemption-api.ts:331](https://github.com/eXplorins/PERS-sdks/blob/main/packages/pers-sdk/packages/pers-sdk/src/redemption/api/redemption-api.ts#L331)

### updateRedemptionTokenUnit

▸ **updateRedemptionTokenUnit**(`redemptionId`, `tokenUnitId`, `redemptionTokenUnit`): `Promise`<`RedemptionDTO`>

ADMIN: Update redemption token unit

Updated: /redemption/admin/:id/token-units/:tokenUnitId Ã¢â€ â€™ /redemption-tokens/:id/:tokenUnitId

#### Parameters

| Name | Type |
|  --- | --- |
| `redemptionId` | `string` |
| `tokenUnitId` | `string` |
| `redemptionTokenUnit` | `TokenUnitCreateRequestDTO` |


#### Returns

`Promise`<`RedemptionDTO`>

#### Defined in

[redemption/api/redemption-api.ts:340](https://github.com/eXplorins/PERS-sdks/blob/main/packages/pers-sdk/packages/pers-sdk/src/redemption/api/redemption-api.ts#L340)

### deleteRedemptionTokenUnit

▸ **deleteRedemptionTokenUnit**(`redemptionId`, `redemptionTokenUnitId`): `Promise`<`RedemptionDTO`>

ADMIN: Delete redemption token unit

Updated: /redemption/admin/:id/token-units/:tokenUnitId Ã¢â€ â€™ /redemption-tokens/:id/:tokenUnitId

#### Parameters

| Name | Type |
|  --- | --- |
| `redemptionId` | `string` |
| `redemptionTokenUnitId` | `string` |


#### Returns

`Promise`<`RedemptionDTO`>

#### Defined in

[redemption/api/redemption-api.ts:349](https://github.com/eXplorins/PERS-sdks/blob/main/packages/pers-sdk/packages/pers-sdk/src/redemption/api/redemption-api.ts#L349)

### getActiveRedemptions

▸ **getActiveRedemptions**(): `Promise`<`RedemptionDTO`[]>

Convenience: Get active redemptions (public access)

#### Returns

`Promise`<`RedemptionDTO`[]>

**`Deprecated`**

Use getRedemptions({ active: true }) instead for paginated results

#### Defined in

[redemption/api/redemption-api.ts:362](https://github.com/eXplorins/PERS-sdks/blob/main/packages/pers-sdk/packages/pers-sdk/src/redemption/api/redemption-api.ts#L362)

### exportCSV

▸ **exportCSV**(`options?`): `Promise`<`Blob`>

ADMIN: Export redemptions to CSV

Returns a CSV file with redemption data for the tenant.
Supports date range filtering.

#### Parameters

| Name | Type | Description |
|  --- | --- | --- |
| `options?` | `Object` | Export options (dateFrom, dateTo) |
| `options.dateFrom?` | `string` | - |
| `options.dateTo?` | `string` | - |


#### Returns

`Promise`<`Blob`>

CSV blob

#### Defined in

[redemption/api/redemption-api.ts:380](https://github.com/eXplorins/PERS-sdks/blob/main/packages/pers-sdk/packages/pers-sdk/src/redemption/api/redemption-api.ts#L380)

### exportRedeemsCSV

▸ **exportRedeemsCSV**(`options?`): `Promise`<`Blob`>

ADMIN: Export redemption redeems to CSV

Returns a CSV file with all redemption redeem data.
Supports date range filtering.

#### Parameters

| Name | Type | Description |
|  --- | --- | --- |
| `options?` | `Object` | Export options (dateFrom, dateTo) |
| `options.dateFrom?` | `string` | - |
| `options.dateTo?` | `string` | - |


#### Returns

`Promise`<`Blob`>

CSV blob

#### Defined in

[redemption/api/redemption-api.ts:398](https://github.com/eXplorins/PERS-sdks/blob/main/packages/pers-sdk/packages/pers-sdk/src/redemption/api/redemption-api.ts#L398)

### setRedemptionApproval

▸ **setRedemptionApproval**(`redemptionId`, `status`, `reason?`): `Promise`<`RedemptionDTO`>

ADMIN: Approve a redemption

Approves a redemption that is pending approval, changing its status to 'approved'.

Endpoint: PATCH /admin/redemptions/:id/approve
Auth: @TenantAdmin()

#### Parameters

| Name | Type | Description |
|  --- | --- | --- |
| `redemptionId` | `string` | ID of the redemption to approve |
| `status` | `"approved"` | `"rejected"` | - |
| `reason?` | `string` | - |


#### Returns

`Promise`<`RedemptionDTO`>

Updated redemption with approval metadata

#### Defined in

[redemption/api/redemption-api.ts:422](https://github.com/eXplorins/PERS-sdks/blob/main/packages/pers-sdk/packages/pers-sdk/src/redemption/api/redemption-api.ts#L422)