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

# Class: BusinessApi

Platform-Agnostic Business API Client

Updated to match the actual RESTful endpoints:

- /businesses for business operations
- /business-types for business type operations (separate controller)


## Table of contents

### Constructors

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


### Methods

- [getBusinessTypes](/sdk-reference/classes/businessapi#getbusinesstypes)
- [createBusinessType](/sdk-reference/classes/businessapi#createbusinesstype)
- [updateBusinessType](/sdk-reference/classes/businessapi#updatebusinesstype)
- [deleteBusinessType](/sdk-reference/classes/businessapi#deletebusinesstype)
- [getCurrentBusiness](/sdk-reference/classes/businessapi#getcurrentbusiness)
- [getBusinesses](/sdk-reference/classes/businessapi#getbusinesses)
- [getBusinessById](/sdk-reference/classes/businessapi#getbusinessbyid)
- [getBusinessByAccount](/sdk-reference/classes/businessapi#getbusinessbyaccount)
- [createBusiness](/sdk-reference/classes/businessapi#createbusiness)
- [createBusinessByDisplayName](/sdk-reference/classes/businessapi#createbusinessbydisplayname)
- [createBusinessesFromUrl](/sdk-reference/classes/businessapi#createbusinessesfromurl)
- [updateBusiness](/sdk-reference/classes/businessapi#updatebusiness)
- [toggleBusinessStatus](/sdk-reference/classes/businessapi#togglebusinessstatus)
- [setBusinessApproval](/sdk-reference/classes/businessapi#setbusinessapproval)
- [exportCSV](/sdk-reference/classes/businessapi#exportcsv)


## Constructors

### constructor

• **new BusinessApi**(`apiClient`): [`BusinessApi`](/sdk-reference/classes/businessapi)

#### Parameters

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


#### Returns

[`BusinessApi`](/sdk-reference/classes/businessapi)

#### Defined in

[business/api/business-api.ts:23](https://github.com/eXplorins/PERS-sdks/blob/main/packages/pers-sdk/packages/pers-sdk/src/business/api/business-api.ts#L23)

## Methods

### getBusinessTypes

▸ **getBusinessTypes**(`options?`): `Promise`<`PaginatedResponseDTO`<`BusinessTypeDTO`>>

Get all business types (project key required)

Endpoint: GET /business-types
Auth: @ApiSecurity('projectKey')

#### Parameters

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


#### Returns

`Promise`<`PaginatedResponseDTO`<`BusinessTypeDTO`>>

Paginated response with business types

#### Defined in

[business/api/business-api.ts:41](https://github.com/eXplorins/PERS-sdks/blob/main/packages/pers-sdk/packages/pers-sdk/src/business/api/business-api.ts#L41)

### createBusinessType

▸ **createBusinessType**(`dto`): `Promise`<`BusinessTypeDTO`>

ADMIN: Create business type

Endpoint: POST /business-types
Auth: @TenantAdmin()

#### Parameters

| Name | Type |
|  --- | --- |
| `dto` | `BusinessTypeCreateRequestDTO` |


#### Returns

`Promise`<`BusinessTypeDTO`>

#### Defined in

[business/api/business-api.ts:53](https://github.com/eXplorins/PERS-sdks/blob/main/packages/pers-sdk/packages/pers-sdk/src/business/api/business-api.ts#L53)

### updateBusinessType

▸ **updateBusinessType**(`dto`): `Promise`<`BusinessTypeDTO`>

ADMIN: Update business type

Endpoint: PUT /business-types
Auth: @TenantAdmin()

#### Parameters

| Name | Type |
|  --- | --- |
| `dto` | `BusinessTypeDTO` |


#### Returns

`Promise`<`BusinessTypeDTO`>

#### Defined in

[business/api/business-api.ts:63](https://github.com/eXplorins/PERS-sdks/blob/main/packages/pers-sdk/packages/pers-sdk/src/business/api/business-api.ts#L63)

### deleteBusinessType

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

ADMIN: Delete business type

Endpoint: DELETE /business-types/{id}
Auth: @TenantAdmin()

#### Parameters

| Name | Type |
|  --- | --- |
| `id` | `number` |


#### Returns

`Promise`<`boolean`>

#### Defined in

[business/api/business-api.ts:73](https://github.com/eXplorins/PERS-sdks/blob/main/packages/pers-sdk/packages/pers-sdk/src/business/api/business-api.ts#L73)

### getCurrentBusiness

▸ **getCurrentBusiness**(): `Promise`<`BusinessTokenBalancesDTO`>

Get current business info (business authentication required)

Endpoint: GET /businesses/me
Auth: @Business()

#### Returns

`Promise`<`BusinessTokenBalancesDTO`>

#### Defined in

[business/api/business-api.ts:87](https://github.com/eXplorins/PERS-sdks/blob/main/packages/pers-sdk/packages/pers-sdk/src/business/api/business-api.ts#L87)

### getBusinesses

▸ **getBusinesses**(`options?`): `Promise`<`PaginatedResponseDTO`<`BusinessDTO`>>

Get all businesses with role-based filtering and pagination

Endpoint: GET /businesses?active={boolean}&sanitize={mode}&page={number}&limit={number}&businessTypeId={number}
Auth: @ApiSecurity('projectKey') (enhanced with role-based filtering)

Note:

- Project API Key users: Active businesses only (automatically filtered)
- Admin JWT users: Full access with all query parameters


#### Parameters

| Name | Type | Description |
|  --- | --- | --- |
| `options?` | `BusinessFilterOptions` | Filter and pagination options |


#### Returns

`Promise`<`PaginatedResponseDTO`<`BusinessDTO`>>

Paginated list of businesses

**`Example`**

```typescript
// Get first page of active businesses
const page1 = await businessApi.getBusinesses({ active: true });

// Get all businesses (admin only) with pagination
const page2 = await businessApi.getBusinesses({ 
  page: 2, 
  limit: 25,
  sanitize: 'soft'
});

// Filter by tag(s)
const tagged = await businessApi.getBusinesses({ tags: 'restaurant' });
const multiTag = await businessApi.getBusinesses({ tags: ['restaurant', 'cafe'] });

// Filter by business type
const hotels = await businessApi.getBusinesses({ businessTypeId: 1 });

// Filter by location (geocoding)
const dohaBusinesses = await businessApi.getBusinesses({ city: 'Doha', countryCode: 'QA' });
const westBay = await businessApi.getBusinesses({ neighborhood: 'West Bay' });
```

#### Defined in

[business/api/business-api.ts:128](https://github.com/eXplorins/PERS-sdks/blob/main/packages/pers-sdk/packages/pers-sdk/src/business/api/business-api.ts#L128)

### getBusinessById

▸ **getBusinessById**(`businessId`): `Promise`<`BusinessDTO`>

Get business by ID

Endpoint: GET /businesses/{id}
Auth: @ApiSecurity('projectKey')

#### Parameters

| Name | Type |
|  --- | --- |
| `businessId` | `string` |


#### Returns

`Promise`<`BusinessDTO`>

#### Defined in

[business/api/business-api.ts:211](https://github.com/eXplorins/PERS-sdks/blob/main/packages/pers-sdk/packages/pers-sdk/src/business/api/business-api.ts#L211)

### getBusinessByAccount

▸ **getBusinessByAccount**(`accountAddress`): `Promise`<`BusinessDTO`>

Get business by account address

Endpoint: GET /businesses/account/{accountAddress}
Auth: @ApiSecurity('projectKey')

#### Parameters

| Name | Type |
|  --- | --- |
| `accountAddress` | `string` |


#### Returns

`Promise`<`BusinessDTO`>

#### Defined in

[business/api/business-api.ts:221](https://github.com/eXplorins/PERS-sdks/blob/main/packages/pers-sdk/packages/pers-sdk/src/business/api/business-api.ts#L221)

### createBusiness

▸ **createBusiness**(`dto`): `Promise`<`BusinessTokenBalancesDTO` | `BusinessApiKeyDTO`>

ADMIN: Create business

Endpoint: POST /businesses
Auth: @TenantAdmin()
Returns: BusinessApiKeyDTO | BusinessTokenBalancesDTO

#### Parameters

| Name | Type |
|  --- | --- |
| `dto` | `BusinessCreateRequestDTO` |


#### Returns

`Promise`<`BusinessTokenBalancesDTO` | `BusinessApiKeyDTO`>

#### Defined in

[business/api/business-api.ts:236](https://github.com/eXplorins/PERS-sdks/blob/main/packages/pers-sdk/packages/pers-sdk/src/business/api/business-api.ts#L236)

### createBusinessByDisplayName

▸ **createBusinessByDisplayName**(`displayName`): `Promise`<`BusinessTokenBalancesDTO` | `BusinessApiKeyDTO`>

ADMIN: Create business by display name (convenience method)

#### Parameters

| Name | Type |
|  --- | --- |
| `displayName` | `string` |


#### Returns

`Promise`<`BusinessTokenBalancesDTO` | `BusinessApiKeyDTO`>

#### Defined in

[business/api/business-api.ts:243](https://github.com/eXplorins/PERS-sdks/blob/main/packages/pers-sdk/packages/pers-sdk/src/business/api/business-api.ts#L243)

### createBusinessesFromUrl

▸ **createBusinessesFromUrl**(`url`): `Promise`<`BusinessDTO`[]>

ADMIN: Create businesses from URL

Endpoint: POST /businesses/bulk/url
Auth: @TenantAdmin()

#### Parameters

| Name | Type |
|  --- | --- |
| `url` | `string` |


#### Returns

`Promise`<`BusinessDTO`[]>

#### Defined in

[business/api/business-api.ts:257](https://github.com/eXplorins/PERS-sdks/blob/main/packages/pers-sdk/packages/pers-sdk/src/business/api/business-api.ts#L257)

### updateBusiness

▸ **updateBusiness**(`id`, `businessData`): `Promise`<`BusinessDTO`>

ADMIN: Update business

Endpoint: PUT /businesses/{id}
Auth: @TenantAdmin()

#### Parameters

| Name | Type |
|  --- | --- |
| `id` | `string` |
| `businessData` | `BusinessUpdateRequestDTO` |


#### Returns

`Promise`<`BusinessDTO`>

#### Defined in

[business/api/business-api.ts:267](https://github.com/eXplorins/PERS-sdks/blob/main/packages/pers-sdk/packages/pers-sdk/src/business/api/business-api.ts#L267)

### toggleBusinessStatus

▸ **toggleBusinessStatus**(`id`, `dto`): `Promise`<`BusinessDTO`>

ADMIN: Toggle business active status

Endpoint: PUT /businesses/{id}/status
Auth: @TenantAdmin()

#### Parameters

| Name | Type |
|  --- | --- |
| `id` | `string` |
| `dto` | `BusinessToggleActiveRequestDTO` |


#### Returns

`Promise`<`BusinessDTO`>

#### Defined in

[business/api/business-api.ts:277](https://github.com/eXplorins/PERS-sdks/blob/main/packages/pers-sdk/packages/pers-sdk/src/business/api/business-api.ts#L277)

### setBusinessApproval

▸ **setBusinessApproval**(`businessId`, `status`, `reason?`): `Promise`<`BusinessDTO`>

ADMIN: Approve a business

Approves a business that is pending approval, changing its status to 'approved'.
Only businesses with approval status 'pending_approval' can be approved.

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

#### Parameters

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


#### Returns

`Promise`<`BusinessDTO`>

Updated business with approval metadata

**`Example`**

```ts
`	ypescript
const approvedBusiness = await businessApi.approveBusiness('business-123');
console.log('Approved by:', approvedBusiness.approval?.approvedBy);
console.log('Approved at:', approvedBusiness.approval?.approvedAt);
`
```

#### Defined in

[business/api/business-api.ts:347](https://github.com/eXplorins/PERS-sdks/blob/main/packages/pers-sdk/packages/pers-sdk/src/business/api/business-api.ts#L347)

### exportCSV

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

#### Parameters

| Name | Type |
|  --- | --- |
| `options?` | `Object` |
| `options.dateFrom?` | `string` |
| `options.dateTo?` | `string` |


#### Returns

`Promise`<`Blob`>

#### Defined in

[business/api/business-api.ts:351](https://github.com/eXplorins/PERS-sdks/blob/main/packages/pers-sdk/packages/pers-sdk/src/business/api/business-api.ts#L351)