TypeScript SDK
Installation
npm install @nexspace/sdk
Quick Start
import { NexSpace } from '@nexspace/sdk';
const client = new NexSpace({
apiKey: process.env.NEXSPACE_API_KEY!,
});
// List facilities
const facilities = await client.facilities.list();
// Search staff
const staff = await client.staff.search({
query: 'Jane',
specialty: 'RN',
facilityId: 12,
});
// Get shift details
const shift = await client.shifts.get(456);
Configuration
const client = new NexSpace({
apiKey: 'nex_live_...',
baseUrl: 'https://api.nexspace365.com', // default
version: '2026-05-10', // pin API version
maxRetries: 3, // default
timeout: 30_000, // 30s default
});
Resources
Facilities
const facilities = await client.facilities.list();
const facility = await client.facilities.get(12);
Staff
const results = await client.staff.search({ query: 'Smith', limit: 10 });
const member = await client.staff.get(789);
Shifts
const shifts = await client.shifts.list({ facilityId: 12, status: 'open' });
const assigned = await client.shifts.assign(456, { staffIds: [789] });
API Keys
const keys = await client.apiKeys.list();
const newKey = await client.apiKeys.create({
name: 'CI Pipeline',
scopes: ['shifts:read', 'staff:read'],
});
Credentials
const expiring = await client.credentials.listExpiring({ daysAhead: 30 });
Error Handling
import { NexSpaceError } from '@nexspace/sdk';
try {
await client.shifts.assign(456, { staffIds: [789] });
} catch (err) {
if (err instanceof NexSpaceError) {
console.error(err.code); // 'FORBIDDEN'
console.error(err.suggestion); // 'Rotate your API key to include...'
console.error(err.retryable); // false
}
}
Idempotency
Mutation methods automatically generate idempotency keys. Override with:await client.shifts.assign(456, { staffIds: [789] }, {
idempotencyKey: 'my-custom-key-123',
});