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

# Class: BusinessManager

Business Manager - Clean, high-level interface for business operations

Provides a simplified API for business directory management including retrieving
active businesses, managing business types, and administrative operations for
business creation and updates. Maintains access to the full business SDK
for advanced partnership and integration features.

**`Example`**

```typescript
// Get all active businesses in the network
const businesses = await sdk.business.getActiveBusinesses();
console.log(`Found ${businesses.length} active businesses`);

// Get specific business details
const business = await sdk.business.getBusinessById('business-123');
console.log('Business:', business.displayName);

// Search business by account address
const partnerBusiness = await sdk.business.getBusinessByAccount('0x123...');
```

**`Example`**

```typescript
// Get all business categories/types
const types = await sdk.business.getBusinessTypes();

// Filter businesses by type
const restaurants = await sdk.business.getBusinessesByType('restaurant-type-id');

console.log('Restaurant partners:', restaurants.length);
restaurants.forEach(restaurant => {
  console.log(`- ${restaurant.displayName}`);
});
```

**`Example`**

```typescript
// Admin: Create new business partner
const newBusiness = await sdk.business.createBusiness('New Partner Hotel');

// Admin: Update business information
await sdk.business.updateBusiness('business-123', {
  displayName: 'Updated Business Name',
  description: 'New business description',
  contactEmail: 'contact@business.com'
});

// Admin: Toggle business status
await sdk.business.toggleBusinessStatus('business-123', { isActive: false });
```

## Table of contents

### Constructors

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


### Methods

- [getActiveBusinesses](/sdk-reference/classes/businessmanager#getactivebusinesses)
- [getBusinessById](/sdk-reference/classes/businessmanager#getbusinessbyid)
- [getBusinessByAccount](/sdk-reference/classes/businessmanager#getbusinessbyaccount)
- [getBusinessTypes](/sdk-reference/classes/businessmanager#getbusinesstypes)
- [createBusinessType](/sdk-reference/classes/businessmanager#createbusinesstype)
- [updateBusinessType](/sdk-reference/classes/businessmanager#updatebusinesstype)
- [deleteBusinessType](/sdk-reference/classes/businessmanager#deletebusinesstype)
- [getBusinessesByType](/sdk-reference/classes/businessmanager#getbusinessesbytype)
- [getBusinesses](/sdk-reference/classes/businessmanager#getbusinesses)
- [createBusiness](/sdk-reference/classes/businessmanager#createbusiness)
- [updateBusiness](/sdk-reference/classes/businessmanager#updatebusiness)
- [toggleBusinessStatus](/sdk-reference/classes/businessmanager#togglebusinessstatus)
- [getBusinessService](/sdk-reference/classes/businessmanager#getbusinessservice)
- [getMembers](/sdk-reference/classes/businessmanager#getmembers)
- [getMembersByRole](/sdk-reference/classes/businessmanager#getmembersbyrole)
- [addMember](/sdk-reference/classes/businessmanager#addmember)
- [updateMemberRole](/sdk-reference/classes/businessmanager#updatememberrole)
- [removeMember](/sdk-reference/classes/businessmanager#removemember)
- [getPermissions](/sdk-reference/classes/businessmanager#getpermissions)
- [addMemberByEmail](/sdk-reference/classes/businessmanager#addmemberbyemail)
- [getMembershipService](/sdk-reference/classes/businessmanager#getmembershipservice)
- [setBusinessApproval](/sdk-reference/classes/businessmanager#setbusinessapproval)
- [exportCSV](/sdk-reference/classes/businessmanager#exportcsv)


## Constructors

### constructor

• **new BusinessManager**(`apiClient`, `events?`): [`BusinessManager`](/sdk-reference/classes/businessmanager)

#### Parameters

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


#### Returns

[`BusinessManager`](/sdk-reference/classes/businessmanager)

#### Defined in

[managers/business-manager.ts:81](https://github.com/eXplorins/PERS-sdks/blob/main/packages/pers-sdk/packages/pers-sdk/src/managers/business-manager.ts#L81)

## Methods

### getActiveBusinesses

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

Get all active businesses

Retrieves all currently active businesses in the loyalty network.
Active businesses are available for partnerships, campaigns, and transactions.

#### Parameters

| Name | Type |
|  --- | --- |
| `options?` | `BusinessFilterOptions` |


#### Returns

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

Promise resolving to array of active business data

**`Example`**

```typescript
const activeBusinesses = await sdk.business.getActiveBusinesses();

console.log('Active Business Partners:');
activeBusinesses.forEach(business => {
  console.log(`- ${business.displayName}`);
  console.log(`  Type: ${business.businessType?.name || 'N/A'}`);
  console.log(`  Account: ${business.accountAddress}`);
});

// Use for partnership displays or campaign targeting
const hotelPartners = activeBusinesses.filter(b => 
  b.businessType?.name?.toLowerCase().includes('hotel')
);
```

#### Defined in

[managers/business-manager.ts:117](https://github.com/eXplorins/PERS-sdks/blob/main/packages/pers-sdk/packages/pers-sdk/src/managers/business-manager.ts#L117)

### getBusinessById

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

Get business by ID

Retrieves detailed information for a specific business using its unique identifier.
Includes business profile, contact information, and partnership status.

#### Parameters

| Name | Type | Description |
|  --- | --- | --- |
| `businessId` | `string` | Unique business identifier |


#### Returns

`Promise`<`BusinessDTO`>

Promise resolving to business data

**`Throws`**

When business with specified ID is not found

**`Example`**

```typescript
try {
  const business = await sdk.business.getBusinessById('partner-hotel-123');
  
  console.log('Business Details:');
  console.log('Name:', business.displayName);
  console.log('Description:', business.description);
  console.log('Contact:', business.contactEmail);
  console.log('Active:', business.isActive);
  console.log('Account Address:', business.accountAddress);
  
} catch (error) {
  console.log('Business not found:', error.message);
}
```

#### Defined in

[managers/business-manager.ts:148](https://github.com/eXplorins/PERS-sdks/blob/main/packages/pers-sdk/packages/pers-sdk/src/managers/business-manager.ts#L148)

### getBusinessByAccount

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

Get business by account address

Retrieves business information using the blockchain account address.
Useful for Web3 integrations and blockchain transaction verification.

#### Parameters

| Name | Type | Description |
|  --- | --- | --- |
| `accountAddress` | `string` | Blockchain account address of the business |


#### Returns

`Promise`<`BusinessDTO`>

Promise resolving to business data

**`Throws`**

When business with specified account address is not found

**`Example`**

```typescript
// Get business associated with blockchain address
const business = await sdk.business.getBusinessByAccount('0x742d35Cc6634C0532925a3b8D94B309e32ad75c6');

console.log('Business for address:', business.displayName);
console.log('Verified partner:', business.isActive);

// Use for transaction verification
if (business.isActive) {
  console.log('Verified business partner');
}
```

#### Defined in

[managers/business-manager.ts:176](https://github.com/eXplorins/PERS-sdks/blob/main/packages/pers-sdk/packages/pers-sdk/src/managers/business-manager.ts#L176)

### getBusinessTypes

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

Get all business types

Retrieves all available business type categories and their configurations.
Business types help classify partners and determine available features.

#### Parameters

| Name | Type |
|  --- | --- |
| `options?` | `PaginationOptions` |


#### Returns

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

Promise resolving to array of business type definitions

**`Example`**

```typescript
const businessTypes = await sdk.business.getBusinessTypes();

console.log('Available Business Categories:');
businessTypes.forEach(type => {
  console.log(`- ${type.name}: ${type.description}`);
});

// Use for business registration forms
const typeOptions = businessTypes.map(type => ({
  value: type.id,
  label: type.name
}));
```

#### Defined in

[managers/business-manager.ts:204](https://github.com/eXplorins/PERS-sdks/blob/main/packages/pers-sdk/packages/pers-sdk/src/managers/business-manager.ts#L204)

### createBusinessType

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

Admin: Create a new business type

Creates a new business type category in the system.
Requires administrator privileges.

#### Parameters

| Name | Type | Description |
|  --- | --- | --- |
| `data` | `BusinessTypeCreateRequestDTO` | Business type data (name, description, code, iconUrl) |


#### Returns

`Promise`<`BusinessTypeDTO`>

Promise resolving to the created business type

**`Throws`**

When not authenticated as admin or validation fails

**`Example`**

```typescript
const newType = await sdk.business.createBusinessType({
  name: 'Restaurant',
  description: 'Food service establishments',
  code: 'RESTAURANT',
  iconUrl: 'https://example.com/restaurant-icon.png'
});
```

#### Defined in

[managers/business-manager.ts:228](https://github.com/eXplorins/PERS-sdks/blob/main/packages/pers-sdk/packages/pers-sdk/src/managers/business-manager.ts#L228)

### updateBusinessType

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

Admin: Update an existing business type

Updates a business type's properties.
Requires administrator privileges.

#### Parameters

| Name | Type | Description |
|  --- | --- | --- |
| `data` | `BusinessTypeDTO` | Updated business type data (must include id) |


#### Returns

`Promise`<`BusinessTypeDTO`>

Promise resolving to the updated business type

**`Throws`**

When not authenticated as admin or type not found

**`Example`**

```typescript
const updated = await sdk.business.updateBusinessType({
  id: 123,
  name: 'Fine Dining Restaurant',
  description: 'Upscale dining establishments'
});
```

#### Defined in

[managers/business-manager.ts:251](https://github.com/eXplorins/PERS-sdks/blob/main/packages/pers-sdk/packages/pers-sdk/src/managers/business-manager.ts#L251)

### deleteBusinessType

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

Admin: Delete a business type

Deletes a business type. Will fail if type is in use by businesses.
Requires administrator privileges.

#### Parameters

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


#### Returns

`Promise`<`boolean`>

Promise resolving to true if deleted successfully

**`Throws`**

When not authenticated as admin or type not found/in use

**`Example`**

```typescript
const success = await sdk.business.deleteBusinessType(123);
```

#### Defined in

[managers/business-manager.ts:270](https://github.com/eXplorins/PERS-sdks/blob/main/packages/pers-sdk/packages/pers-sdk/src/managers/business-manager.ts#L270)

### getBusinessesByType

▸ **getBusinessesByType**(`typeId`, `options?`): `Promise`<`PaginatedResponseDTO`<`BusinessDTO`>>

Get businesses by type

Retrieves all businesses that belong to a specific business type category.
Useful for creating category-specific partner directories or targeted campaigns.

#### Parameters

| Name | Type | Description |
|  --- | --- | --- |
| `typeId` | `string` | Business type identifier to filter by |
| `options?` | `BusinessFilterOptions` | - |


#### Returns

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

Promise resolving to array of businesses in the specified type

**`Example`**

```typescript
// Get all restaurant partners
const restaurants = await sdk.business.getBusinessesByType('restaurant-type-id');

console.log(`Found ${restaurants.length} restaurant partners:`);
restaurants.forEach(restaurant => {
  console.log(`- ${restaurant.displayName}`);
  if (restaurant.description) {
    console.log(`  ${restaurant.description}`);
  }
});

// Use for category-specific campaigns
const restaurantCampaign = {
  targetBusinesses: restaurants.map(r => r.id),
  category: 'Dining Rewards'
};
```

#### Defined in

[managers/business-manager.ts:303](https://github.com/eXplorins/PERS-sdks/blob/main/packages/pers-sdk/packages/pers-sdk/src/managers/business-manager.ts#L303)

### getBusinesses

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

Admin: Get all businesses (including inactive)

Retrieves all businesses in the system regardless of active status.
This operation requires administrator privileges and is used for
comprehensive business management and reporting.

#### Parameters

| Name | Type |
|  --- | --- |
| `options?` | `BusinessFilterOptions` |


#### Returns

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

Promise resolving to array of all businesses

**`Throws`**

When not authenticated as administrator

**`Example`**

```typescript
// Admin operation - get complete business directory
const allBusinesses = await sdk.business.getBusinesses();

const activeCount = allBusinesses.filter(b => b.isActive).length;
const inactiveCount = allBusinesses.length - activeCount;

console.log(`Total businesses: ${allBusinesses.length}`);
console.log(`Active: ${activeCount}, Inactive: ${inactiveCount}`);

// Generate business status report
const statusReport = allBusinesses.map(business => ({
  name: business.displayName,
  status: business.isActive ? 'Active' : 'Inactive',
  type: business.businessType?.name || 'Unspecified'
}));
```

#### Defined in

[managers/business-manager.ts:336](https://github.com/eXplorins/PERS-sdks/blob/main/packages/pers-sdk/packages/pers-sdk/src/managers/business-manager.ts#L336)

### createBusiness

▸ **createBusiness**(`dto`): `Promise`<`BusinessDTO`>

Admin: Create new business

Creates a new business partner in the loyalty network. This operation
requires administrator privileges and establishes a new business entity
with a blockchain account and initial configuration.

#### Parameters

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


#### Returns

`Promise`<`BusinessDTO`>

Promise resolving to created business data

**`Throws`**

When not authenticated as admin or validation fails

**`Example`**

```typescript
// Admin operation - onboard new business partner
const newBusiness = await sdk.business.createBusiness('Grand Palace Hotel');

console.log('New business created:');
console.log('ID:', newBusiness.id);
console.log('Name:', newBusiness.displayName);
console.log('Account Address:', newBusiness.accountAddress);
console.log('Status:', newBusiness.isActive ? 'Active' : 'Pending');

// Follow up with additional configuration
await sdk.business.updateBusiness(newBusiness.id, {
  description: 'Luxury hotel in downtown area',
  contactEmail: 'partnerships@grandpalace.com',
  businessTypeId: 'hotel-type-id'
});
```

#### Defined in

[managers/business-manager.ts:370](https://github.com/eXplorins/PERS-sdks/blob/main/packages/pers-sdk/packages/pers-sdk/src/managers/business-manager.ts#L370)

### updateBusiness

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

Admin: Update business

Updates an existing business's information and configuration. This operation
requires administrator privileges and can modify business profile data,
contact information, and operational settings.

#### Parameters

| Name | Type | Description |
|  --- | --- | --- |
| `businessId` | `string` | ID of the business to update |
| `businessData` | `BusinessUpdateRequestDTO` | Business update data (partial updates supported) |


#### Returns

`Promise`<`BusinessDTO`>

Promise resolving to updated business data

**`Throws`**

When not authenticated as admin or business not found

**`Example`**

```typescript
// Admin operation - update business profile
const updated = await sdk.business.updateBusiness('business-123', {
  displayName: 'Grand Palace Hotel & Spa',
  description: 'Luxury hotel with spa services and conference facilities',
  contactEmail: 'partnerships@grandpalacespa.com',
  businessTypeId: 'hotel-spa-type-id'
});

console.log('Business updated:', updated.displayName);
```

#### Defined in

[managers/business-manager.ts:408](https://github.com/eXplorins/PERS-sdks/blob/main/packages/pers-sdk/packages/pers-sdk/src/managers/business-manager.ts#L408)

### toggleBusinessStatus

▸ **toggleBusinessStatus**(`businessId`, `toggleData`): `Promise`<`BusinessDTO`>

Admin: Toggle business active status

Toggles the active/inactive status of a business partner. Inactive businesses
are not available for new campaigns or transactions but existing relationships
are preserved. Requires administrator privileges.

#### Parameters

| Name | Type | Description |
|  --- | --- | --- |
| `businessId` | `string` | ID of the business to toggle |
| `toggleData` | `BusinessToggleActiveRequestDTO` | Toggle request data specifying the desired active state |


#### Returns

`Promise`<`BusinessDTO`>

Promise resolving to updated business data

**`Throws`**

When not authenticated as admin or business not found

**`Example`**

```typescript
// Admin operation - deactivate problematic business
const updated = await sdk.business.toggleBusinessStatus('business-123', {
  isActive: false,
  reason: 'Temporary suspension for policy review'
});

if (updated.isActive) {
  console.log('Business reactivated');
} else {
  console.log('Business temporarily deactivated');
}
```

#### Defined in

[managers/business-manager.ts:448](https://github.com/eXplorins/PERS-sdks/blob/main/packages/pers-sdk/packages/pers-sdk/src/managers/business-manager.ts#L448)

### getBusinessService

▸ **getBusinessService**(): [`BusinessService`](/sdk-reference/classes/businessservice)

Get the full business SDK for advanced operations

Provides access to the complete BusinessSDK instance for advanced partnership
operations, integration management, and operations not covered by the
high-level manager methods.

#### Returns

[`BusinessService`](/sdk-reference/classes/businessservice)

BusinessSDK instance with full API access

**`Example`**

```typescript
const businessSDK = sdk.business.getBusinessSDK();

// Access partnership management
const partnerships = await businessSDK.getPartnershipAgreements();

// Access integration features
const integrationStatus = await businessSDK.getIntegrationStatus('business-123');

// Access business API directly
const businessApi = businessSDK.api;
```

#### Defined in

[managers/business-manager.ts:475](https://github.com/eXplorins/PERS-sdks/blob/main/packages/pers-sdk/packages/pers-sdk/src/managers/business-manager.ts#L475)

### getMembers

▸ **getMembers**(`businessId`, `options?`): `Promise`<`PaginatedResponseDTO`<`BusinessMembershipDTO`>>

Get all members of a business

Retrieves all users who have access to the specified business with their roles.
Any member of the business can view the member list.

#### Parameters

| Name | Type | Description |
|  --- | --- | --- |
| `businessId` | `string` | The business UUID |
| `options?` | [`GetBusinessMembersOptions`](/sdk-reference/interfaces/getbusinessmembersoptions) | Pagination and include options |


#### Returns

`Promise`<`PaginatedResponseDTO`<`BusinessMembershipDTO`>>

Promise resolving to paginated business memberships

**`Throws`**

401 - Not authenticated

**`Throws`**

403 - Not a member of this business

**`Example`**

```typescript
// Get members with user data for display
const { data: members } = await sdk.business.getMembers('business-123', {
  include: ['user']
});

console.log('Business Members:');
members.forEach(member => {
  const email = member.included?.user?.email || member.userId;
  console.log(`- ${email}: ${member.role}`);
});
```

#### Defined in

[managers/business-manager.ts:509](https://github.com/eXplorins/PERS-sdks/blob/main/packages/pers-sdk/packages/pers-sdk/src/managers/business-manager.ts#L509)

### getMembersByRole

▸ **getMembersByRole**(`businessId`, `role`, `options?`): `Promise`<`PaginatedResponseDTO`<`BusinessMembershipDTO`>>

Get members filtered by role

#### Parameters

| Name | Type | Description |
|  --- | --- | --- |
| `businessId` | `string` | The business UUID |
| `role` | `MembershipRole` | The role to filter by |
| `options?` | `PaginationOptions` | - |


#### Returns

`Promise`<`PaginatedResponseDTO`<`BusinessMembershipDTO`>>

Promise resolving to array of memberships with the specified role

**`Example`**

```typescript
const { data: owners } = await sdk.business.getMembersByRole('business-123', 'OWNER');
console.log(`Business has ${owners.length} owner(s)`);
```

#### Defined in

[managers/business-manager.ts:526](https://github.com/eXplorins/PERS-sdks/blob/main/packages/pers-sdk/packages/pers-sdk/src/managers/business-manager.ts#L526)

### addMember

▸ **addMember**(`businessId`, `userId`, `role?`): `Promise`<`BusinessMembershipDTO`>

Add a new member to a business

Adds a user as a member of the business with the specified role.
Requires ADMIN role or higher.

#### Parameters

| Name | Type | Default value | Description |
|  --- | --- | --- | --- |
| `businessId` | `string` | `undefined` | The business UUID |
| `userId` | `string` | `undefined` | The user UUID to add |
| `role` | `MembershipRole` | `MembershipRole.VIEWER` | The role to assign (defaults to VIEWER) |


#### Returns

`Promise`<`BusinessMembershipDTO`>

Promise resolving to the created membership

**`Throws`**

401 - Not authenticated

**`Throws`**

403 - Insufficient role (requires ADMIN)

**`Throws`**

404 - User not found

**`Throws`**

409 - User is already a member

**`Example`**

```typescript
// Add a new editor to the business
const newMember = await sdk.business.addMember(
  'business-123',
  'user-456',
  'EDITOR'
);

console.log(`Added ${newMember.userId} as ${newMember.role}`);
```

#### Defined in

[managers/business-manager.ts:557](https://github.com/eXplorins/PERS-sdks/blob/main/packages/pers-sdk/packages/pers-sdk/src/managers/business-manager.ts#L557)

### updateMemberRole

▸ **updateMemberRole**(`businessId`, `userId`, `newRole`): `Promise`<`BusinessMembershipDTO`>

Update a member's role

Changes the role of an existing business member.
Requires ADMIN role or higher. Cannot demote the last OWNER.
Can only assign roles up to your own level (ADMIN cannot create OWNER).

#### Parameters

| Name | Type | Description |
|  --- | --- | --- |
| `businessId` | `string` | The business UUID |
| `userId` | `string` | The user UUID to update |
| `newRole` | `MembershipRole` | The new role to assign |


#### Returns

`Promise`<`BusinessMembershipDTO`>

Promise resolving to the updated membership

**`Throws`**

401 - Not authenticated

**`Throws`**

403 - Insufficient role (requires ADMIN)

**`Throws`**

404 - Membership not found

**`Throws`**

400 - Cannot demote last OWNER

**`Example`**

```typescript
// Promote an editor to admin
const updated = await sdk.business.updateMemberRole(
  'business-123',
  'user-456',
  'ADMIN'
);

console.log(`${updated.userId} is now ${updated.role}`);
```

#### Defined in

[managers/business-manager.ts:593](https://github.com/eXplorins/PERS-sdks/blob/main/packages/pers-sdk/packages/pers-sdk/src/managers/business-manager.ts#L593)

### removeMember

▸ **removeMember**(`businessId`, `userId`): `Promise`<{ `success`: `boolean`  }>

Remove a member from a business

Removes a user's access to the business.
Requires ADMIN role or higher. Cannot remove the last OWNER.

#### Parameters

| Name | Type | Description |
|  --- | --- | --- |
| `businessId` | `string` | The business UUID |
| `userId` | `string` | The user UUID to remove |


#### Returns

`Promise`<{ `success`: `boolean`  }>

Promise resolving to success confirmation

**`Throws`**

401 - Not authenticated

**`Throws`**

403 - Insufficient role (requires ADMIN)

**`Throws`**

404 - Membership not found

**`Throws`**

400 - Cannot remove last OWNER

**`Example`**

```typescript
const result = await sdk.business.removeMember('business-123', 'user-456');

if (result.success) {
  console.log('Member removed successfully');
}
```

#### Defined in

[managers/business-manager.ts:633](https://github.com/eXplorins/PERS-sdks/blob/main/packages/pers-sdk/packages/pers-sdk/src/managers/business-manager.ts#L633)

### getPermissions

▸ **getPermissions**(`role`): `Object`

Get permission flags for a role

Returns an object with boolean flags indicating what actions
a user with the given role can perform. Useful for UI rendering.

#### Parameters

| Name | Type | Description |
|  --- | --- | --- |
| `role` | `null` | `MembershipRole` | The membership role (or null if not a member) |


#### Returns

`Object`

Object with permission flags

| Name | Type |
|  --- | --- |
| `canViewMembers` | `boolean` |
| `canManageMembers` | `boolean` |
| `canEditContent` | `boolean` |
| `canDeleteBusiness` | `boolean` |


**`Example`**

```typescript
const permissions = sdk.business.getPermissions('EDITOR');
// { canViewMembers: true, canManageMembers: false, canEditContent: true, canDeleteBusiness: false }

if (permissions.canManageMembers) {
  showAddMemberButton();
}
```

#### Defined in

[managers/business-manager.ts:659](https://github.com/eXplorins/PERS-sdks/blob/main/packages/pers-sdk/packages/pers-sdk/src/managers/business-manager.ts#L659)

### addMemberByEmail

▸ **addMemberByEmail**(`businessId`, `email`, `role?`): `Promise`<`BusinessMembershipDTO`>

Add a member to a business by email address

Convenience method that creates or retrieves a user by email and adds them
as a member of the business. If the user doesn't exist, they will be created.
Requires ADMIN role or higher.

#### Parameters

| Name | Type | Default value | Description |
|  --- | --- | --- | --- |
| `businessId` | `string` | `undefined` | The business UUID |
| `email` | `string` | `undefined` | The email address of the user to add |
| `role` | `MembershipRole` | `MembershipRole.VIEWER` | The role to assign (defaults to VIEWER) |


#### Returns

`Promise`<`BusinessMembershipDTO`>

Promise resolving to the created membership

**`Throws`**

401 - Not authenticated

**`Throws`**

403 - Insufficient role (requires ADMIN)

**`Throws`**

409 - User is already a member

**`Example`**

```typescript
// Add a new editor by email - user is created if they don't exist
const membership = await sdk.business.addMemberByEmail(
  'business-123',
  'newuser@example.com',
  'EDITOR'
);

console.log(`Added user ${membership.userId} as ${membership.role}`);
```

#### Defined in

[managers/business-manager.ts:690](https://github.com/eXplorins/PERS-sdks/blob/main/packages/pers-sdk/packages/pers-sdk/src/managers/business-manager.ts#L690)

### getMembershipService

▸ **getMembershipService**(): [`BusinessMembershipService`](/sdk-reference/classes/businessmembershipservice)

Get the membership service for advanced operations

#### Returns

[`BusinessMembershipService`](/sdk-reference/classes/businessmembershipservice)

BusinessMembershipService instance

#### Defined in

[managers/business-manager.ts:705](https://github.com/eXplorins/PERS-sdks/blob/main/packages/pers-sdk/packages/pers-sdk/src/managers/business-manager.ts#L705)

### setBusinessApproval

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

Admin: Approve a business

Approves a business that is pending approval. This operation is only available
when the tenant has business approval enabled in their approval settings.

#### Parameters

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


#### Returns

`Promise`<`BusinessDTO`>

Promise resolving to updated business with approval metadata

**`Throws`**

When not authenticated as tenant admin or business not found

**`Example`**

```ts
`	ypescript
// Approve pending business
const approvedBusiness = await sdk.businesses.approveBusiness('business-123');

console.log('Business approved!');
console.log('Approved by:', approvedBusiness.approval?.approvedBy);
console.log('Approved at:', approvedBusiness.approval?.approvedAt);
console.log('Status:', approvedBusiness.approval?.status); // 'approved'
`
```

#### Defined in

[managers/business-manager.ts:768](https://github.com/eXplorins/PERS-sdks/blob/main/packages/pers-sdk/packages/pers-sdk/src/managers/business-manager.ts#L768)

### exportCSV

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

#### Parameters

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


#### Returns

`Promise`<`Blob`>

#### Defined in

[managers/business-manager.ts:772](https://github.com/eXplorins/PERS-sdks/blob/main/packages/pers-sdk/packages/pers-sdk/src/managers/business-manager.ts#L772)