@meeting-baas/sdk
Version:
Official SDK for Meeting BaaS API - https://meetingbaas.com
707 lines (497 loc) • 18.2 kB
Markdown
# Meeting BaaS SDK
<p align="center">
<img src="https://meetingbaas.com/static/a3e9f3dbde935920a3558317a514ff1a/b5380/preview.png" alt="Meeting BaaS" width="720">
</p>
Official SDK for interacting with the [Meeting BaaS](https://meetingbaas.com) API - The unified API for Google Meet, Zoom, and Microsoft Teams.
> **Note**: This package is automatically generated from the Meeting BaaS OpenAPI specification. For development and contribution guidelines, see [DEVELOPMENT.md](https://github.com/meeting-baas/sdk-generator/blob/HEAD/DEVELOPMENT.md). For the official API reference, visit [docs.meetingbaas.com](https://docs.meetingbaas.com).
## Features
- **BaaS API Client**: Strongly typed functions for interacting with the Meeting BaaS API
- **Bot Management**: Create, join, and manage meeting bots across platforms
- **Calendar Integration**: Connect calendars and automatically schedule meeting recordings
- **Complete API Coverage**: Access to all Meeting BaaS API endpoints
- **TypeScript Support**: Full TypeScript definitions for all APIs
- **MPC Tool Registration**: Simple way to register client tools with an MPC server
- **CLI Interface**: Command-line tools for common operations
- **Automatic MPC Tool Generation**: Pre-generated MPC tools for all SDK methods
- **Combined Package Mode**: Special bundle for MPC server installations
## Installation
```bash
# With npm
npm install -baas/sdk
# With yarn
yarn add -baas/sdk
# With pnpm
pnpm add -baas/sdk
```
## Quick Start
```typescript
import { BaasClient } from "@meeting-baas/sdk";
// Create a BaaS client
const client = new BaasClient({
apiKey: "your-api-key", // Get yours at https://meetingbaas.com
});
// Join a meeting
const botId = await client.joinMeeting({
botName: "Meeting Assistant",
meetingUrl: "https://meet.google.com/abc-def-ghi",
reserved: true,
});
// Get meeting data
const meetingData = await client.getMeetingData(botId);
console.log("Meeting data:", meetingData);
```
## Usage Examples
### Basic Usage
```typescript
import { BaasClient } from "@meeting-baas/sdk";
// Create a BaaS client
const client = new BaasClient({
apiKey: "your-api-key",
});
// Join a meeting
const botId = await client.joinMeeting({
botName: "My Assistant",
meetingUrl: "https://meet.google.com/abc-def-ghi",
reserved: true,
});
// Get meeting data
const meetingData = await client.getMeetingData(botId);
console.log("Meeting data:", meetingData);
// Delete meeting data
await client.deleteData(botId);
```
### Using MPC Tools
```typescript
import { register_tool } from "your-mpc-server";
import {
join_meeting_tool,
get_meeting_data_tool,
delete_data_tool,
} from "@meeting-baas/sdk/tools";
// Register tools with your MPC server
register_tool(join_meeting_tool);
register_tool(get_meeting_data_tool);
register_tool(delete_data_tool);
// Or import all tools at once
import { allTools, registerTools } from "@meeting-baas/sdk/tools";
await registerTools(allTools, register_tool);
```
### MPC Server Bundle Mode
For MPC server deployments, use the combined package mode:
```typescript
import { BaasClient, registerTools, SDK_MODE } from "@meeting-baas/sdk/tools";
import { allTools } from "@meeting-baas/sdk/tools";
// Verify we're using the MPC tools package
console.log(`SDK Mode: ${SDK_MODE}`); // Outputs: SDK Mode: MPC_TOOLS
// Create a BaaS client
const client = new BaasClient({
apiKey: "your-api-key",
});
// Register all tools with your MPC server
import { register_tool } from "your-mpc-server";
await registerTools(allTools, register_tool);
```
### Calendar Integration
```typescript
import { BaasClient, Provider } from "@meeting-baas/sdk";
const client = new BaasClient({
apiKey: "your-api-key",
});
// Create a calendar integration
const calendar = await client.createCalendar({
oauthClientId: "your-oauth-client-id",
oauthClientSecret: "your-oauth-client-secret",
oauthRefreshToken: "your-oauth-refresh-token",
platform: Provider.Google,
});
// List all calendars
const calendars = await client.listCalendars();
// List events from a calendar
const events = await client.listEvents(calendar.uuid);
// Schedule a recording for an event
await client.scheduleRecordEvent(events[0].uuid, {
botName: "Event Recording Bot",
extra: { customId: "my-event-123" },
});
```
## MPC Server Integration
The Meeting BaaS SDK comes with pre-generated MPC (Model Context Protocol) tools that can be easily integrated with any MPC server implementation. These tools are bundled by default and can be imported directly.
### Simple Integration
The simplest way to use the MPC tools:
```typescript
import { allTools, registerTools } from "@meeting-baas/sdk/tools";
import { BaasClient } from "@meeting-baas/sdk";
// Create a BaaS client with your API key
const client = new BaasClient({
apiKey: process.env.MEETING_BAAS_API_KEY,
});
// Register all tools with your MPC server
// Replace registerTool with your server's registration function
registerTools(allTools, (tool) => {
server.registerTool(tool);
});
```
### One-Line Setup
For even simpler integration, use the `setupBaasTools` convenience function:
```typescript
import { allTools, setupBaasTools } from "@meeting-baas/sdk/tools";
// Create a client and register all tools in one step
const client = setupBaasTools(
allTools,
server.registerTool,
process.env.MEETING_BAAS_API_KEY
);
```
### Using Specific Tools
If you only need specific tools:
```typescript
import {
join_meeting_tool,
get_meeting_data_tool,
registerTools,
} from "@meeting-baas/sdk/tools";
// Register only the tools you need
registerTools([join_meeting_tool, get_meeting_data_tool], server.registerTool);
```
### Accessing Tool Definitions
The tool definitions include detailed parameter schemas and metadata:
```typescript
import { getToolByName } from "@meeting-baas/sdk/tools";
// Get a specific tool by name
const joinMeetingTool = getToolByName("join_meeting");
console.log(joinMeetingTool.parameters); // View parameter schema
```
### Next.js API Route Example
For Next.js applications:
```typescript
// app/api/mcp/route.ts
import { allTools, registerTools } from "@meeting-baas/sdk/tools";
import { BaasClient } from "@meeting-baas/sdk";
import { McpServer } from "your-mcp-server-library";
export async function POST(req: Request) {
const { messages } = await req.json();
// Initialize your MPC server
const server = new McpServer();
// Create BaaS client
const client = new BaasClient({
apiKey: process.env.MEETING_BAAS_API_KEY,
});
// Register tools
await registerTools(allTools, server.registerTool);
// Process the request with your MPC server
const result = await server.processRequest(messages);
return Response.json(result);
}
```
## Available MPC Tools
The SDK includes pre-generated MPC tools for all API endpoints that can be directly imported and used in your MPC server implementation.
### Using MPC Tools
The Meeting BaaS SDK provides MPC tools with zero configuration. You can import and use them directly:
```typescript
// Import specific tools
import {
join_meeting_tool,
leave_meeting_tool,
get_meeting_data_tool,
} from "@meeting-baas/sdk/tools";
// Import all tools
import { allTools } from "@meeting-baas/sdk/tools";
// Register with your MPC server
import { register_tool } from "your-mpc-server";
// Register individual tools
register_tool(join_meeting_tool);
register_tool(get_meeting_data_tool);
// Or register all tools at once
import { registerTools } from "@meeting-baas/sdk/tools";
await registerTools(allTools, register_tool);
```
### MPC Server Bundle Mode
For MPC server deployments, use the combined package mode:
```typescript
import { BaasClient, registerTools, SDK_MODE } from "@meeting-baas/sdk/tools";
import { allTools } from "@meeting-baas/sdk/tools";
// Verify we're using the MPC tools package
console.log(`SDK Mode: ${SDK_MODE}`); // Outputs: SDK Mode: MPC_TOOLS
// Create a BaaS client
const client = new BaasClient({
apiKey: "your-api-key",
});
// Register all tools with your MPC server
import { register_tool } from "your-mpc-server";
await registerTools(allTools, register_tool);
```
## Generated MPC Tools List
All SDK methods are automatically converted to snake_case MPC tools. Here's the complete list:
### Bots API Tools
- `join_meeting`
- `leave_meeting`
- `get_meeting_data`
- `delete_data`
- `bots_with_metadata`
- `list_recent_bots`
- `retranscribe_bot`
### Calendars API Tools
- `create_calendar`
- `delete_calendar`
- `get_calendar`
- `get_event`
- `list_calendars`
- `list_events`
- `list_raw_calendars`
- `patch_bot`
- `resync_all_calendars`
- `schedule_record_event`
- `unschedule_record_event`
- `update_calendar`
### Webhooks API Tools
- `bot_webhook_documentation`
- `calendar_webhook_documentation`
- `webhook_documentation`
Each tool accepts parameters matching the SDK method's signature, converted to snake_case. For example:
```typescript
join_meeting({
bot_name: "Meeting Assistant",
meeting_url: "https://meet.google.com/abc-def-ghi",
reserved: true,
});
```
## Available Methods
The SDK provides a simple interface for interacting with Meeting BaaS. Initialize the client with your API key:
```typescript
import { BaasClient } from "@meeting-baas/sdk";
const client = new BaasClient({
apiKey: "your-api-key"
});
```
### Calendars API
#### `createCalendar(createCalendarParams: CreateCalendarParams)`
*Some*CalendarsApi
<details>
<summary>Example</summary>
```typescript
import { CreateCalendarParams } from "@meeting-baas/sdk";
// Returns: Promise<(axios?: AxiosInstance, basePath?: string) =>
await client.calendars.createCalendar({
// ... CreateCalendarParams properties
});
```
</details>
#### `createCalendar(createCalendarParams: CreateCalendarParams)`
CalendarsApi
<details>
<summary>Example</summary>
```typescript
import { CreateCalendarParams } from "@meeting-baas/sdk";
// Returns: Promise<CreateCalendarResponse>
await client.calendars.createCalendar({
// ... CreateCalendarParams properties
});
```
</details>
#### `deleteCalendar(uuid: string)`
Permanently removes a calendar integration by its UUID, including all associated events and bot configurations
<details>
<summary>Example</summary>
```typescript
// Returns: Promise<(axios?: AxiosInstance, basePath?: string) =>
await client.calendars.deleteCalendar('example');
```
</details>
#### `deleteCalendar(uuid: string)`
Permanently removes a calendar integration by its UUID, including all associated events and bot configurations
<details>
<summary>Example</summary>
```typescript
// Returns: Promise<void>
await client.calendars.deleteCalendar('example');
```
</details>
#### `getCalendar(uuid: string)`
Retrieves detailed information about a specific calendar integration by its UUID
<details>
<summary>Example</summary>
```typescript
// Returns: Promise<(axios?: AxiosInstance, basePath?: string) =>
await client.calendars.getCalendar('example');
```
</details>
#### `getCalendar(uuid: string)`
Retrieves detailed information about a specific calendar integration by its UUID
<details>
<summary>Example</summary>
```typescript
// Returns: Promise<Calendar>
await client.calendars.getCalendar('example');
```
</details>
#### `getEvent(uuid: string)`
Retrieves comprehensive details about a specific calendar event by its UUID
<details>
<summary>Example</summary>
```typescript
// Returns: Promise<(axios?: AxiosInstance, basePath?: string) =>
await client.calendars.getEvent('example');
```
</details>
#### `getEvent(uuid: string)`
Retrieves comprehensive details about a specific calendar event by its UUID
<details>
<summary>Example</summary>
```typescript
// Returns: Promise<Event>
await client.calendars.getEvent('example');
```
</details>
#### `listCalendars()`
Retrieves all calendars that have been integrated with the system for the authenticated user
#### `listCalendars()`
Retrieves all calendars that have been integrated with the system for the authenticated user
#### `listEvents(calendarId: string, attendeeEmail?: string?, cursor?: string?, organizerEmail?: string?, startDateGte?: string?, startDateLte?: string?, status?: string?, updatedAtGte?: string?)`
Retrieves a paginated list of calendar events with comprehensive filtering options
<details>
<summary>Example</summary>
```typescript
// Returns: Promise<(axios?: AxiosInstance, basePath?: string) =>
await client.calendars.listEvents('example', 'example', 'example', 'example', 'example', 'example', 'example', 'example');
```
</details>
#### `listEvents(calendarId: string, attendeeEmail?: string?, cursor?: string?, organizerEmail?: string?, startDateGte?: string?, startDateLte?: string?, status?: string?, updatedAtGte?: string?)`
Retrieves a paginated list of calendar events with comprehensive filtering options
<details>
<summary>Example</summary>
```typescript
// Returns: Promise<ListEventResponse>
await client.calendars.listEvents('example', 'example', 'example', 'example', 'example', 'example', 'example', 'example');
```
</details>
#### `listRawCalendars(listRawCalendarsParams: ListRawCalendarsParams)`
Retrieves unprocessed calendar data directly from the provider (Google, Microsoft) using provided OAuth credentials
<details>
<summary>Example</summary>
```typescript
import { ListRawCalendarsParams } from "@meeting-baas/sdk";
// Returns: Promise<(axios?: AxiosInstance, basePath?: string) =>
await client.calendars.listRawCalendars({
// ... ListRawCalendarsParams properties
});
```
</details>
#### `listRawCalendars(listRawCalendarsParams: ListRawCalendarsParams)`
Retrieves unprocessed calendar data directly from the provider (Google, Microsoft) using provided OAuth credentials
<details>
<summary>Example</summary>
```typescript
import { ListRawCalendarsParams } from "@meeting-baas/sdk";
// Returns: Promise<ListRawCalendarsResponse>
await client.calendars.listRawCalendars({
// ... ListRawCalendarsParams properties
});
```
</details>
#### `patchBot(uuid: string, botParam3: BotParam3, allOccurrences?: boolean?)`
Updates the configuration of a bot already scheduled to record an event
<details>
<summary>Example</summary>
```typescript
import { BotParam3 } from "@meeting-baas/sdk";
// Returns: Promise<(axios?: AxiosInstance, basePath?: string) =>
await client.calendars.patchBot('example', {
// ... BotParam3 properties
}, true);
```
</details>
#### `patchBot(uuid: string, botParam3: BotParam3, allOccurrences?: boolean?)`
Updates the configuration of a bot already scheduled to record an event
<details>
<summary>Example</summary>
```typescript
import { BotParam3 } from "@meeting-baas/sdk";
// Returns: Promise<Array<Event>
await client.calendars.patchBot('example', {
// ... BotParam3 properties
}, true);
```
</details>
#### `resyncAll()`
Forces a sync of all your connected calendars with their providers (Google, Microsoft)
#### `resyncAll()`
Forces a sync of all your connected calendars with their providers (Google, Microsoft)
#### `scheduleRecordEvent(uuid: string, botParam2: BotParam2, allOccurrences?: boolean?)`
Configures a bot to automatically join and record a specific calendar event at its scheduled time
<details>
<summary>Example</summary>
```typescript
import { BotParam2 } from "@meeting-baas/sdk";
// Returns: Promise<(axios?: AxiosInstance, basePath?: string) =>
await client.calendars.scheduleRecordEvent('example', {
// ... BotParam2 properties
}, true);
```
</details>
#### `scheduleRecordEvent(uuid: string, botParam2: BotParam2, allOccurrences?: boolean?)`
Configures a bot to automatically join and record a specific calendar event at its scheduled time
<details>
<summary>Example</summary>
```typescript
import { BotParam2 } from "@meeting-baas/sdk";
// Returns: Promise<Array<Event>
await client.calendars.scheduleRecordEvent('example', {
// ... BotParam2 properties
}, true);
```
</details>
#### `unscheduleRecordEvent(uuid: string, allOccurrences?: boolean?)`
Cancels a previously scheduled recording for a calendar event and releases associated bot resources
<details>
<summary>Example</summary>
```typescript
// Returns: Promise<(axios?: AxiosInstance, basePath?: string) =>
await client.calendars.unscheduleRecordEvent('example', true);
```
</details>
#### `unscheduleRecordEvent(uuid: string, allOccurrences?: boolean?)`
Cancels a previously scheduled recording for a calendar event and releases associated bot resources
<details>
<summary>Example</summary>
```typescript
// Returns: Promise<Array<Event>
await client.calendars.unscheduleRecordEvent('example', true);
```
</details>
#### `updateCalendar(uuid: string, updateCalendarParams: UpdateCalendarParams)`
Updates a calendar integration with new credentials or platform while maintaining the same UUID
<details>
<summary>Example</summary>
```typescript
import { UpdateCalendarParams } from "@meeting-baas/sdk";
// Returns: Promise<(axios?: AxiosInstance, basePath?: string) =>
await client.calendars.updateCalendar('example', {
// ... UpdateCalendarParams properties
});
```
</details>
#### `updateCalendar(uuid: string, updateCalendarParams: UpdateCalendarParams)`
Updates a calendar integration with new credentials or platform while maintaining the same UUID
<details>
<summary>Example</summary>
```typescript
import { UpdateCalendarParams } from "@meeting-baas/sdk";
// Returns: Promise<CreateCalendarResponse>
await client.calendars.updateCalendar('example', {
// ... UpdateCalendarParams properties
});
```
</details>
### Webhooks API
#### `botWebhookDocumentation()`
*Some*WebhooksApi
#### `botWebhookDocumentation()`
WebhooksApi
#### `calendarWebhookDocumentation()`
Meeting BaaS sends the following webhook events related to calendar integrations
#### `calendarWebhookDocumentation()`
Meeting BaaS sends the following webhook events related to calendar integrations
#### `webhookDocumentation()`
Meeting BaaS sends webhook events to your configured webhook URL when specific events occur
#### `webhookDocumentation()`
Meeting BaaS sends webhook events to your configured webhook URL when specific events occur