{"openapi":"3.1.0","info":{"title":"Taxi Cortina Dolomiti — Preventivi gruppi","version":"1.0.0","description":"Richieste di preventivo per gruppi da 4 a 30 persone. Invia solo su richiesta dell'utente e con dati da lui forniti. Non conferma una prenotazione."},"servers":[{"url":"/"}],"paths":{"/api/preventivi":{"post":{"operationId":"richiediPreventivoGruppo","summary":"Invia una richiesta di preventivo per un gruppo","description":"Data non nel passato e ora locale Europe/Rome. Nessuna autenticazione pubblica. Limite corpo: 16 KiB. Non ritentare automaticamente dopo timeout o 502: la consegna potrebbe essere avvenuta.","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/QuoteRequest"}}}},"responses":{"201":{"description":"Richiesta accettata dal servizio email; recapito in casella e prenotazione non confermati.","content":{"application/json":{"schema":{"type":"object","required":["requestId","status","message"],"properties":{"requestId":{"type":"string","format":"uuid"},"status":{"type":"string","const":"submitted"},"message":{"type":"string"}}}}}},"400":{"description":"Corpo non valido","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"413":{"description":"Corpo superiore a 16 KiB","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"415":{"description":"Content-Type non supportato","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"422":{"description":"Dati non validi; correggi i campi indicati in fields","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"502":{"description":"Consegna non confermata; evitare tentativi automatici","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"503":{"description":"Servizio di invio non configurato","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}}}},"components":{"schemas":{"QuoteRequest":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"nome":{"type":"string","minLength":1,"maxLength":100},"cognome":{"type":"string","minLength":1,"maxLength":100},"email":{"type":"string","maxLength":254,"format":"email","pattern":"^(?:[A-Za-z0-9_'+\\-]+\\.)*[A-Za-z0-9_'+\\-]*[A-Za-z0-9_+-]@(?:[A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$"},"telefono":{"type":"string","maxLength":50},"persone":{"type":"integer","minimum":4,"maximum":30},"partenza":{"type":"string","minLength":1,"maxLength":300},"destinazione":{"type":"string","minLength":1,"maxLength":300},"data":{"type":"string","format":"date","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$"},"ora":{"anyOf":[{"type":"string","pattern":"^([01]\\d|2[0-3]):[0-5]\\d$"},{"type":"string","const":""}]},"note":{"type":"string","maxLength":3000}},"required":["nome","cognome","email","persone","partenza","destinazione","data"],"additionalProperties":false},"ApiError":{"type":"object","required":["error","message"],"properties":{"error":{"type":"string"},"message":{"type":"string"},"fields":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}}}}}}}