> ## Documentation Index
> Fetch the complete documentation index at: https://docs.fusiondesk.dev/llms.txt
> Use this file to discover all available pages before exploring further.

# FusionDesk JavaScript and TypeScript SDK Reference

> Integrate ticketing, Knowledge Base retrieval, and real-time live chat into your JavaScript and TypeScript projects.

The `fusiondesk-sdk` package is a fully typed TypeScript/JavaScript client library for integrating with FusionDesk's REST API and real-time WebSocket chat service.

***

## Installation

Install the package via npm:

```bash theme={null}
npm install fusiondesk-sdk
```

***

## Initialization

Unlike standard class-based clients, the FusionDesk SDK utilizes a global configuration state initialized once at the start of your application lifecycle.

```typescript theme={null}
import { initializeSdk } from 'fusiondesk-sdk';

initializeSdk('org.pk.0123456789abcdef0123456789abcdef', {
  baseUrl: 'https://api.fusiondesk.dev',
  debounceTimeout: 300,
  cacheArticles: true,
  searchCacheEnabled: true,
  searchCacheCapacity: 50
});
```

***

## Ticketing API Reference

### List Tickets

```typescript theme={null}
import { getTickets } from 'fusiondesk-sdk';

const page = await getTickets(null, 50); // getTickets(parentId, limit)
console.log('Tickets count:', page.count());
page.items().forEach(ticket => {
  console.log(`[${ticket.status}] ${ticket.subject}`);
});
```

### Submit a New Ticket

```typescript theme={null}
import { submitTicket } from 'fusiondesk-sdk';

const ticket = await submitTicket({
  subject: 'SSO Login Failure',
  message: 'SSO returns 500 when logging in from Chrome.'
});
console.log('Ticket submitted:', ticket.id);
```

### Post a Reply or Update

```typescript theme={null}
import { postUpdate } from 'fusiondesk-sdk';

const update = await postUpdate('tkt_12345', {
  message: 'We are investigating the logs now.',
  sender: {
    uid: 'agent_99',
    name: 'Alex Rivera',
    type: 'agent'
  }
});
```

***

## Customer Directory Reference

### Create Customer

```typescript theme={null}
import { createCustomer } from 'fusiondesk-sdk';

const customer = await createCustomer({
  firstName: 'John',
  lastName: 'Doe',
  email: 'john.doe@example.com',
  phone: '+15555555555'
});
```

***

## Knowledge Base Reference

### Search Articles

```typescript theme={null}
import { searchArticles } from 'fusiondesk-sdk';

const results = await searchArticles('password reset', 10);
results.items().forEach(article => {
  console.log(article.name, article.content);
});
```

***

## Live Chat WebSocket Client

Establish real-time interactive chat sessions using WebSockets.

```typescript theme={null}
import { startChat, sendMessage, endChat } from 'fusiondesk-sdk';

// 1. Establish connection and listen for incoming messages
const session = startChat(
  { uid: 'visitor_123', name: 'John Doe', type: 'customer' }, // Sender details
  { url: 'https://chat.fusiondesk.dev', resumeSession: true }, // Chat options
  (message) => {
    console.log(`Received message: ${message.message} from ${message.sender.name}`);
  }
);

session.onConnect(() => console.log('Connected to support chat!'));

// 2. Send messages
sendMessage('Hello, is anyone online?');

// 3. Close the chat session
endChat();
```
