# SchedulableResource

object type

A SchedulableResource — a bookable entity at a LogicalFacility: the staff member / station / equipment Appointments book against. capacity = concurrent bookings (default 1); the confirm gate checks CAPACITY ONLY. workingHours are ADVISORY v1 — naive wall-clock weekly windows (the estate carries no timezone — the map disclosed boundary): the availability read returns them, NO gate consumes them. The OPERATIONAL lifecycle verbatim. The gate: a RESERVED booking (a confirmed/in_progress Appointment) blocks deactivate AND doom, CONFLICT/REFERENCED naming the appointments; requested Appointments deliberately do NOT block (they refuse honestly at confirm via the ACTIVE re-read).

## Fields

| Field | Type | Notes |
| --- | --- | --- |
| `id` | [ID](/types/#scalars) `ID!` | The record’s id — a UUID the platform assigned when the record was created; every reference to this record uses it. |
| `sysId` | [String](/types/#scalars) `String!` | The group-scoped human-facing system id (SR-…). |
| `type` | [String](/types/#scalars) `String!` | The kind of record — always `SchedulableResource` here. |
| `caption` | [String](/types/#scalars) `String!` | The record’s display name — what people see it called. |
| `status` | [String](/types/#scalars) `String!` | The FSM state: active \| inactive \| doomed. |
| `parentId` | [ID](/types/#scalars) `ID!` | The parent LogicalFacility; rootId = the org group; parentId!== rootId always. |
| `rootId` | [ID](/types/#scalars) `ID!` | The org-group family root. |
| `createdAt` | [String](/types/#scalars) `String!` | When the record was created, as a UTC timestamp. |
| `updatedAt` | [String](/types/#scalars) `String!` | When the record last changed, as a UTC timestamp. |
| `revisionNum` | [Int](/types/#scalars) `Int!` | How many times this record has been edited; the first save is 0. |
| `revision` | [ID](/types/#scalars) `ID!` | The OCC revision token — supply it on every mutation of this record; rotates on every write. |
| `refCaptions` | [RefCaption](/types/RefCaption/) `[RefCaption!]!` | The server-composed captions of this record's declared references (the referenced-caption rule) — one row per referenced id; see RefCaption. |
| `resourceType` | [SchedulableResourceType](/types/SchedulableResourceType/) `SchedulableResourceType!` | The canned resource kind — set at creation, IMMUTABLE (re-kind = create + doom). |
| `userId` | [ID](/types/#scalars) | The optional staff link — staff-kind resources only; in-tenant + ACTIVE at set; editable (re-staffing is operational reality); null = no link. |
| `capacity` | [Int](/types/#scalars) `Int!` | Concurrent-booking capacity (1..100; default 1) — the confirm gate refuses CONFLICT/DOUBLE_BOOKED at this ceiling unless the appointment.overbook_allowed policy admits. |
| `workingHours` | [WorkingHoursWindow](/types/WorkingHoursWindow/) `[WorkingHoursWindow!]!` | The weekly working-hours calendar (≤28 windows; split shifts legal; empty = none declared) — ADVISORY v1: naive wall-clock minutes at the facility, returned by the availability read, consumed by NO gate. |
| `code` | [String](/types/#scalars) | Optional mutable merchant reference code; uniqueness NOT enforced. |

## Used by

- [createSchedulableResource](/reference/schedulable-resource/createSchedulableResource/)
- [deactivateSchedulableResource](/reference/schedulable-resource/deactivateSchedulableResource/)
- [doomSchedulableResource](/reference/schedulable-resource/doomSchedulableResource/)
- [reactivateSchedulableResource](/reference/schedulable-resource/reactivateSchedulableResource/)
- [schedulableResource](/reference/schedulable-resource/schedulableResource/)
- [updateSchedulableResource](/reference/schedulable-resource/updateSchedulableResource/)
