# SCHEDULING

scheduling endpoints.

**Base URL:** `https://api.trustpager.com/functions/v1/api/v1`

## Endpoints

### GET /scheduling/event-types

List the workspace scheduled event types (meeting templates). Use to find event_type_id for get_available_slots and create_booking.

**Scopes:** `scheduling:read` — [full detail](./scheduling/get-scheduling-event-types.md)

### POST /scheduling/event-types

Create a new scheduled event type (meeting template).

**Scopes:** `scheduling:write` — [full detail](./scheduling/post-scheduling-event-types.md)

### GET /scheduling/event-types/:event_type_id

Fetch a single scheduled event type by UUID.

**Scopes:** `scheduling:read` — [full detail](./scheduling/get-scheduling-event-types-event-type-id.md)

### PATCH /scheduling/event-types/:event_type_id

Update a scheduled event type.

**Scopes:** `scheduling:write` — [full detail](./scheduling/patch-scheduling-event-types-event-type-id.md)

### DELETE /scheduling/event-types/:event_type_id

Delete a scheduled event type by UUID. Destructive.

**Scopes:** `scheduling:delete` — [full detail](./scheduling/delete-scheduling-event-types-event-type-id.md)

### GET /scheduling/availability

Get the workspace working-hours availability and overrides.

**Scopes:** `scheduling:read` — [full detail](./scheduling/get-scheduling-availability.md)

### PUT /scheduling/availability

Update workspace working hours and date overrides.

**Scopes:** `scheduling:write` — [full detail](./scheduling/put-scheduling-availability.md)

### POST /scheduling/available-slots

Get available booking slots for a scheduled event type within a date range. Returns slot start times in host timezone.

**Scopes:** `scheduling:read` — [full detail](./scheduling/post-scheduling-available-slots.md)

### POST /scheduling/check-availability

Quick check whether a specific slot is available. Returns nearest available alternatives if not.

**Scopes:** `scheduling:read` — [full detail](./scheduling/post-scheduling-check-availability.md)

### POST /scheduling/voice/cancel-booking

AI voice agent — cancel a booking keyed by caller phone.

**Scopes:** `scheduling:write` — [full detail](./scheduling/post-scheduling-voice-cancel-booking.md)

### POST /scheduling/voice/schedule-callback

AI voice agent — schedule an automatic AI callback at the time the caller requested. Rings them back from the agent's outbound number; phone is auto-resolved from the call. Pass callback_day + callback_time + state; the server works out the absolute date in the caller's timezone, so never compute a date yourself.

**Scopes:** `scheduling:write` — [full detail](./scheduling/post-scheduling-voice-schedule-callback.md)

### POST /scheduling/voice/reschedule-booking

AI voice agent — reschedule a booking keyed by caller phone.

**Scopes:** `scheduling:write` — [full detail](./scheduling/post-scheduling-voice-reschedule-booking.md)

### POST /scheduling/voice/:event_type_id/slots

AI voice agent — get available slots for an event type.

**Scopes:** `scheduling:read` — [full detail](./scheduling/post-scheduling-voice-event-type-id-slots.md)

### POST /scheduling/voice/:event_type_id/book

AI voice agent — create a booking from voice flow.

**Scopes:** `scheduling:write` — [full detail](./scheduling/post-scheduling-voice-event-type-id-book.md)

### GET /scheduling/bookings

List bookings (calendar appointments). Filter by date, contact, host, status.

**Scopes:** `scheduling:read` — [full detail](./scheduling/get-scheduling-bookings.md)

### POST /scheduling/bookings

Create a calendar booking. Use get_available_slots first to find a valid start_time.

**Scopes:** `scheduling:write` — [full detail](./scheduling/post-scheduling-bookings.md)

### GET /scheduling/bookings/:booking_id

Fetch a single booking by UUID with event details, invitee, host, status, linked records.

**Scopes:** `scheduling:read` — [full detail](./scheduling/get-scheduling-bookings-booking-id.md)

### POST /scheduling/bookings/:booking_id/cancel

Cancel a booking. Invitee gets cancellation notice.

**Scopes:** `scheduling:write` — [full detail](./scheduling/post-scheduling-bookings-booking-id-cancel.md)

### POST /scheduling/bookings/:booking_id/reschedule

Reschedule a booking. Use get_available_slots to find a valid new slot.

**Scopes:** `scheduling:write` — [full detail](./scheduling/post-scheduling-bookings-booking-id-reschedule.md)

### POST /scheduling/bookings/:booking_id/mark-attended

Mark a booking as attended.

**Scopes:** `scheduling:write` — [full detail](./scheduling/post-scheduling-bookings-booking-id-mark-attended.md)

### POST /scheduling/bookings/:booking_id/mark-late

Mark a booking as late.

**Scopes:** `scheduling:write` — [full detail](./scheduling/post-scheduling-bookings-booking-id-mark-late.md)

### POST /scheduling/bookings/:booking_id/mark-no-show

Mark a booking as no-show.

**Scopes:** `scheduling:write` — [full detail](./scheduling/post-scheduling-bookings-booking-id-mark-no-show.md)

### POST /scheduling/bookings/:booking_id/notetaker

Schedule the TrustPager Notetaker to join a booking.

**Scopes:** `scheduling:write` — [full detail](./scheduling/post-scheduling-bookings-booking-id-notetaker.md)
