Raw schema
{
"type": "object",
"properties": {
"rooms": {
"minItems": 1,
"maxItems": 16,
"type": "array",
"items": {
"type": "object",
"properties": {
"roomId": {
"type": "string",
"minLength": 1
},
"slot": {
"type": "string",
"enum": [
"VORMITTAG",
"NACHMITTAG",
"GANZTAGS",
"ZEITFENSTER"
]
},
"date": {
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$"
}
},
"required": [
"roomId",
"slot",
"date"
]
},
"description": "Gewünschte Räume mit Slot und Datum (Raum-IDs aus list_rooms)"
},
"services": {
"default": [],
"description": "Optionale Zusatzservices (Service-IDs aus list_services)",
"maxItems": 20,
"type": "array",
"items": {
"type": "object",
"properties": {
"serviceId": {
"type": "string",
"minLength": 1
},
"quantity": {
"default": 1,
"type": "integer",
"minimum": 1,
"maximum": 100
},
"notes": {
"type": "string",
"maxLength": 2000
}
},
"required": [
"serviceId"
]
}
},
"title": {
"description": "Optionaler Titel des Anlasses",
"type": "string",
"maxLength": 200
},
"notes": {
"description": "Optionale Bemerkungen",
"type": "string",
"maxLength": 2000
},
"participants": {
"description": "Anzahl Personen — Pflicht, wenn Verpflegung pro Person verrechnet wird",
"anyOf": [
{
"type": "integer",
"minimum": 1,
"maximum": 500
},
{
"type": "null"
}
]
},
"duration": {
"type": "string",
"enum": [
"EIN_TAG",
"ZWEI_TAGE",
"DREI_TAGE",
"VIER_TAGE"
],
"description": "Buchungsdauer; bei Mehrtagen buchen alle Räume GANZTAGS"
},
"startTime": {
"description": "Startzeit 'HH:00' (08–17) — Pflicht bei EIN_TAG, verboten bei Mehrtagen",
"anyOf": [
{
"type": "string",
"pattern": "^(0[89]|1[0-7]):00$"
},
{
"type": "null"
}
]
},
"endTime": {
"description": "Endzeit 'HH:00' (09–18) — Pflicht bei EIN_TAG, verboten bei Mehrtagen",
"anyOf": [
{
"type": "string",
"pattern": "^(09|1[0-8]):00$"
},
{
"type": "null"
}
]
},
"contactName": {
"type": "string",
"minLength": 2,
"maxLength": 200,
"description": "Name der Kontaktperson"
},
"contactEmail": {
"type": "string",
"format": "email",
"pattern": "^(?!\\.)(?!.*\\.\\.)([A-Za-z0-9_'+\\-\\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$",
"description": "E-Mail der Kontaktperson — hierhin geht die Bestätigung"
},
"contactPhone": {
"description": "Optionale Telefonnummer",
"type": "string",
"maxLength": 50
}
},
"required": [
"rooms",
"duration",
"contactName",
"contactEmail"
],
"$schema": "http://json-schema.org/draft-07/schema#"
}