NewAppointmentInput
input type
Create-input for an Appointment. The tenant is derived SERVER-SIDE; logicalFacilityId is tenant-scoped + ACTIVE; every resourceId in-tenant + ACTIVE + at the SAME LF; the purpose arms: service ⇒ variantId REQUIRED (the service-type walk), pickup ⇒ orderId REQUIRED + variantId FORBIDDEN; a named orderId must be a non-doomed-class in-tenant Order; the customer ref arms gate like the Order block. The create gates: startAt ≥ now + appointment.lead_time_minutes AND ≤ now + appointment.max_advance_days (VALIDATION/INVALID naming the key).
Fields
| Field | Type | Required | Notes |
|---|---|---|---|
caption | String | no | Optional: when omitted the per-type default applies — the purpose + LF coordinate ('service appointment at <LF caption>'); when supplied it must be non-blank. |
logicalFacilityId | ID ID! | yes | The parent LogicalFacility (the booking site) — tenant-scoped + ACTIVE. Immutable after birth. |
purpose | AppointmentPurpose AppointmentPurpose! | yes | IMMUTABLE at birth. |
variantId | ID | no | REQUIRED on service (a service-type variant); FORBIDDEN on pickup. |
orderId | ID | no | REQUIRED on pickup; optional on service (the sold-together pattern). |
resourceIds | ID [ID!]! | yes | The resources to book (1..8, distinct). |
startAt | String String! | yes | The UTC start instant. |
durationMinutes | Int Int! | yes | 1..1440. |
customer | OrderCustomerInput | no | Optional — the Order customer-capture grammar verbatim. |