{ "$schema": "https://json-schema.org/draft/2020-12/schema", "title": "Reservation", "description": "A created reservation.", "$id": "https://raw.githubusercontent.com/api-evangelist/spoton/refs/heads/main/json-schema/reserve-reservation-schema.json", "type": "object", "properties": { "reservationId": { "type": "string", "description": "The unique identifier for the reservation." }, "restaurantId": { "type": "integer", "format": "int32", "description": "The restaurant the reservation belongs to." }, "customerInformation": { "type": "object", "description": "Guest contact and identity details for a reservation or waitlist entry.", "properties": { "customerId": { "type": "string", "description": "Optional existing customer identifier." }, "firstName": { "type": "string", "description": "Guest first name." }, "lastName": { "type": "string", "description": "Guest last name." }, "phoneNumber": { "type": "string", "description": "Guest phone number." }, "email": { "type": "string", "format": "email", "description": "Guest email address." }, "imageUrl": { "type": "string", "format": "uri", "description": "Optional URL of a guest image." }, "memberNumber": { "type": "string", "description": "Optional loyalty member number." }, "memberTier": { "type": "string", "description": "Optional loyalty member tier." } }, "required": [ "firstName", "phoneNumber" ] }, "time": { "type": "string", "format": "date-time", "description": "The reserved date and time, in RFC 3339 format." }, "partySize": { "type": "integer", "format": "int32", "description": "The number of guests in the party." }, "status": { "type": "string", "description": "The current status of the reservation.", "enum": [ "booked", "confirmed", "checked_in", "cancelled" ] }, "notes": { "type": "string", "description": "Notes attached to the reservation." } } }