Skip to content

Availability API

API for managing available slots and bookable times

Endpoints

Get Available Slots

Get available time slots for booking

http
GET /api/rpc/provider/availability/slots

Parameters

NameTypeDescription
providerIdUUIDProvider ID
serviceIdUUIDService ID
datestringDate (YYYY-MM-DD)
staffIdUUIDStaff ID (optional)

Response

json
{
  "slots": [
    { "time": "09:00", "available": true },
    { "time": "09:30", "available": true },
    { "time": "10:00", "available": false },
    { "time": "10:30", "available": true }
  ]
}

Get Schedule

Get work schedule

http
GET /api/rpc/provider/availability/schedule

Update Schedule

Update work schedule

http
PATCH /api/rpc/provider/availability/schedule

Body

json
{
  "monday": { "start": "09:00", "end": "18:00" },
  "tuesday": { "start": "09:00", "end": "18:00" },
  "wednesday": null,
  "thursday": { "start": "09:00", "end": "18:00" },
  "friday": { "start": "09:00", "end": "18:00" },
  "saturday": { "start": "10:00", "end": "16:00" },
  "sunday": null
}

Set Time Off

Set time off

http
POST /api/rpc/provider/availability/timeOff

Body

json
{
  "startDate": "2025-02-01",
  "endDate": "2025-02-05",
  "reason": "Temporary closure"
}

Calendar Sync

Sync with external calendars

http
GET /api/rpc/provider/calendarSync/status
POST /api/rpc/provider/calendarSync/connect
DELETE /api/rpc/provider/calendarSync/disconnect

Example Code

typescript
// Get available slots
const slots = await fetch(
  '/api/rpc/provider/availability/slots?providerId=provider_123&serviceId=svc_456&date=2025-01-20',
  { headers: { 'Authorization': 'Bearer YOUR_API_KEY' } },
);

// Update schedule
await fetch('/api/rpc/provider/availability/schedule', {
  method: 'PATCH',
  headers: {
    'Authorization': 'Bearer YOUR_API_KEY',
    'Content-Type': 'application/json',
  },
  body: JSON.stringify({
    monday: { start: '09:00', end: '18:00' },
  }),
});

Released under the MIT License.