AlmondTill/G3N API

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

FieldTypeRequiredNotes
captionStringnoOptional: when omitted the per-type default applies — the purpose + LF coordinate ('service appointment at <LF caption>'); when supplied it must be non-blank.
logicalFacilityIdID ID!yesThe parent LogicalFacility (the booking site) — tenant-scoped + ACTIVE. Immutable after birth.
purposeAppointmentPurpose AppointmentPurpose!yesIMMUTABLE at birth.
variantIdIDnoREQUIRED on service (a service-type variant); FORBIDDEN on pickup.
orderIdIDnoREQUIRED on pickup; optional on service (the sold-together pattern).
resourceIdsID [ID!]!yesThe resources to book (1..8, distinct).
startAtString String!yesThe UTC start instant.
durationMinutesInt Int!yes1..1440.
customerOrderCustomerInputnoOptional — the Order customer-capture grammar verbatim.

Used by