UNPKG

voyageai-cli

Version:

CLI for Voyage AI embeddings, reranking, and MongoDB Atlas Vector Search

216 lines (159 loc) 4.36 kB
# JavaScript SDK The official JavaScript SDK provides a type-safe, easy-to-use interface for the SaaS platform API. It works in Node.js and modern browsers with built-in authentication handling and error management. ## Installation Install via npm or yarn: ```bash npm install @saasplatform/sdk # or yarn add @saasplatform/sdk ``` ## Authentication Initialize the SDK with an API key or JWT token: ```javascript const SaaS = require('@saasplatform/sdk'); const client = new SaaS.Client({ apiKey: 'sk_live_abc123', // API key authentication environment: 'production' // or 'sandbox' }); ``` For OAuth authentication: ```javascript const client = new SaaS.Client({ accessToken: 'your_access_token', tokenRefresher: async (refreshToken) => { // Return new access token } }); ``` The SDK automatically refreshes expired tokens using the provided refresher function. ## Basic Usage Create, read, update, delete operations: ```javascript // Create a user const user = await client.users.create({ name: 'Alice', email: 'alice@example.com' }); // Read a user const user = await client.users.get('user_123'); // Update a user const updated = await client.users.update('user_123', { name: 'Alice Smith' }); // Delete a user await client.users.delete('user_123'); ``` ## Pagination and Filtering List resources with pagination and filtering: ```javascript const users = await client.users.list({ page: 1, per_page: 50, filter: {status: 'active'}, sort: '-created_at' }); for (const user of users.data) { console.log(user.name); } // Iterate all pages for await (const user of client.users.list({per_page: 100})) { console.log(user.name); } ``` ## Error Handling The SDK throws typed errors for different failure modes: ```javascript try { const user = await client.users.get('nonexistent'); } catch (error) { if (error instanceof SaaS.NotFoundError) { console.log('User not found'); } else if (error instanceof SaaS.ValidationError) { console.log('Invalid parameters:', error.details); } else if (error instanceof SaaS.AuthenticationError) { console.log('Authentication failed'); } else { console.log('Unexpected error:', error.message); } } ``` ## Batch Operations Create or update multiple resources efficiently: ```javascript const users = await client.users.batch.create([ {name: 'Alice', email: 'alice@example.com'}, {name: 'Bob', email: 'bob@example.com'} ]); console.log(users.data); // Array of created users ``` ## Streaming Large Datasets Stream large result sets without loading everything into memory: ```javascript const stream = client.events.stream({ startDate: '2026-01-01', batchSize: 1000 }); stream.on('data', (event) => { console.log(event); }); stream.on('error', (error) => { console.error('Stream error:', error); }); stream.on('end', () => { console.log('Stream complete'); }); ``` ## Webhooks Register and manage webhooks: ```javascript const webhook = await client.webhooks.create({ url: 'https://yourapp.com/webhooks', events: ['user.created', 'user.deleted'] }); // Verify webhook signature const verified = SaaS.Webhooks.verify( payload, signature, timestamp, webhookSecret ); if (!verified) { throw new Error('Invalid webhook signature'); } ``` ## Advanced Features **Retries and Timeouts**: ```javascript const client = new SaaS.Client({ apiKey: 'sk_live_abc123', maxRetries: 3, timeout: 30000, // 30 seconds retryStrategy: 'exponential' }); ``` **Custom Headers**: ```javascript const user = await client.users.get('user_123', { headers: {'X-Custom-Header': 'value'} }); ``` **Request Logging**: ```javascript const client = new SaaS.Client({ apiKey: 'sk_live_abc123', logger: (method, url, body, response) => { console.log(`${method} ${url}`, response.status); } }); ``` ## Version Compatibility The SDK targets the API v2. For v1, use `@saasplatform/sdk@1.x`. Check the [SDK Versioning](sdk-versioning.md) guide for upgrade information. ## TypeScript Support Full TypeScript support with auto-generated types: ```typescript import { SaaS, User, ValidationError } from '@saasplatform/sdk'; const client = new SaaS.Client({apiKey: 'sk_live_abc123'}); const user: User = await client.users.get('user_123'); ``` See [TypeScript Support](typescript-support.md) for details.