{"openapi":"3.1.0","info":{"title":"Meetvanta Developer API","version":"1.0.0","description":"Server-side workspace APIs and public scheduling endpoints. Keep API keys off browsers. Appointment payments are deferred. Availability fails closed when configured calendars cannot be verified."},"servers":[{"url":"/api/v1"}],"paths":{"/audit":{"get":{"summary":"Search immutable workspace audit records","description":"Required API-key scope: audit:read.","security":[{"bearerAuth":[]}],"parameters":[{"name":"start","in":"query","required":true,"schema":{"type":"string"},"description":"UTC start inclusive/end exclusive; at most 366 days. Exact optional action/resource filters. Offset pagination."},{"name":"end","in":"query","required":true,"schema":{"type":"string"},"description":"UTC start inclusive/end exclusive; at most 366 days. Exact optional action/resource filters. Offset pagination."},{"name":"action","in":"query","required":false,"schema":{"type":"string"},"description":"UTC start inclusive/end exclusive; at most 366 days. Exact optional action/resource filters. Offset pagination."},{"name":"resourceType","in":"query","required":false,"schema":{"type":"string"},"description":"UTC start inclusive/end exclusive; at most 366 days. Exact optional action/resource filters. Offset pagination."},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","minimum":1,"maximum":500},"description":"UTC start inclusive/end exclusive; at most 366 days. Exact optional action/resource filters. Offset pagination."},{"name":"offset","in":"query","required":false,"schema":{"type":"integer","minimum":0,"maximum":100000},"description":"UTC start inclusive/end exclusive; at most 366 days. Exact optional action/resource filters. Offset pagination."}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AuditPage"}}}},"400":{"description":"Safe RFC problem response; no contacts, secrets or internal exception text.","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"401":{"description":"Safe RFC problem response; no contacts, secrets or internal exception text.","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"403":{"description":"Safe RFC problem response; no contacts, secrets or internal exception text.","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"404":{"description":"Safe RFC problem response; no contacts, secrets or internal exception text.","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"409":{"description":"Safe RFC problem response; no contacts, secrets or internal exception text.","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"413":{"description":"Safe RFC problem response; no contacts, secrets or internal exception text.","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"415":{"description":"Safe RFC problem response; no contacts, secrets or internal exception text.","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"429":{"description":"Safe RFC problem response; no contacts, secrets or internal exception text.","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"503":{"description":"Safe RFC problem response; no contacts, secrets or internal exception text.","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}}}}},"/audit/export":{"get":{"summary":"Export audit NDJSON with digest manifest","description":"Required API-key scope: audit:read.","security":[{"bearerAuth":[]}],"parameters":[{"name":"start","in":"query","required":true,"schema":{"type":"string"},"description":"At most 366 days and 10,000 records; narrow window rather than accept truncation. Export is audited. SHA-256 detects file changes, not a trusted signature."},{"name":"end","in":"query","required":true,"schema":{"type":"string"},"description":"At most 366 days and 10,000 records; narrow window rather than accept truncation. Export is audited. SHA-256 detects file changes, not a trusted signature."},{"name":"action","in":"query","required":false,"schema":{"type":"string"},"description":"At most 366 days and 10,000 records; narrow window rather than accept truncation. Export is audited. SHA-256 detects file changes, not a trusted signature."},{"name":"resourceType","in":"query","required":false,"schema":{"type":"string"},"description":"At most 366 days and 10,000 records; narrow window rather than accept truncation. Export is audited. SHA-256 detects file changes, not a trusted signature."}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AuditExport"}}}},"400":{"description":"Safe RFC problem response; no contacts, secrets or internal exception text.","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"401":{"description":"Safe RFC problem response; no contacts, secrets or internal exception text.","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"403":{"description":"Safe RFC problem response; no contacts, secrets or internal exception text.","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"404":{"description":"Safe RFC problem response; no contacts, secrets or internal exception text.","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"409":{"description":"Safe RFC problem response; no contacts, secrets or internal exception text.","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"413":{"description":"Safe RFC problem response; no contacts, secrets or internal exception text.","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"415":{"description":"Safe RFC problem response; no contacts, secrets or internal exception text.","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"429":{"description":"Safe RFC problem response; no contacts, secrets or internal exception text.","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"503":{"description":"Safe RFC problem response; no contacts, secrets or internal exception text.","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}}}}},"/event-types":{"get":{"summary":"List workspace event types","description":"Required API-key scope: events:read.","security":[{"bearerAuth":[]}],"parameters":[{"name":"limit","in":"query","required":false,"schema":{"type":"integer","minimum":1,"maximum":100,"default":25}},{"name":"cursor","in":"query","required":false,"schema":{"type":"string","maxLength":256},"description":"Opaque nextCursor returned for this workspace and resource. Never construct your own."}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EventPage"}}}},"400":{"description":"Safe RFC problem response; no contacts, secrets or internal exception text.","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"401":{"description":"Safe RFC problem response; no contacts, secrets or internal exception text.","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"403":{"description":"Safe RFC problem response; no contacts, secrets or internal exception text.","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"404":{"description":"Safe RFC problem response; no contacts, secrets or internal exception text.","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"409":{"description":"Safe RFC problem response; no contacts, secrets or internal exception text.","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"413":{"description":"Safe RFC problem response; no contacts, secrets or internal exception text.","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"415":{"description":"Safe RFC problem response; no contacts, secrets or internal exception text.","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"429":{"description":"Safe RFC problem response; no contacts, secrets or internal exception text.","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"503":{"description":"Safe RFC problem response; no contacts, secrets or internal exception text.","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}}}}},"/event-types/{id}":{"get":{"summary":"Read active event metadata","description":"Required API-key scope: events:read.","security":[{"bearerAuth":[]}],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Event"}}}},"400":{"description":"Safe RFC problem response; no contacts, secrets or internal exception text.","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"401":{"description":"Safe RFC problem response; no contacts, secrets or internal exception text.","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"403":{"description":"Safe RFC problem response; no contacts, secrets or internal exception text.","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"404":{"description":"Safe RFC problem response; no contacts, secrets or internal exception text.","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"409":{"description":"Safe RFC problem response; no contacts, secrets or internal exception text.","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"413":{"description":"Safe RFC problem response; no contacts, secrets or internal exception text.","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"415":{"description":"Safe RFC problem response; no contacts, secrets or internal exception text.","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"429":{"description":"Safe RFC problem response; no contacts, secrets or internal exception text.","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"503":{"description":"Safe RFC problem response; no contacts, secrets or internal exception text.","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}}}}},"/event-types/{id}/availability":{"get":{"summary":"Read event availability","description":"Required API-key scope: availability:read.","security":[{"bearerAuth":[]}],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"startDate","in":"query","required":true,"schema":{"type":"string"},"description":"Inclusive YYYY-MM-DD"},{"name":"endDate","in":"query","required":true,"schema":{"type":"string"},"description":"Exclusive YYYY-MM-DD, at most 31 days after startDate"},{"name":"timezone","in":"query","required":true,"schema":{"type":"string"},"description":"IANA time zone"}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Availability"}}}},"400":{"description":"Safe RFC problem response; no contacts, secrets or internal exception text.","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"401":{"description":"Safe RFC problem response; no contacts, secrets or internal exception text.","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"403":{"description":"Safe RFC problem response; no contacts, secrets or internal exception text.","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"404":{"description":"Safe RFC problem response; no contacts, secrets or internal exception text.","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"409":{"description":"Safe RFC problem response; no contacts, secrets or internal exception text.","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"413":{"description":"Safe RFC problem response; no contacts, secrets or internal exception text.","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"415":{"description":"Safe RFC problem response; no contacts, secrets or internal exception text.","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"429":{"description":"Safe RFC problem response; no contacts, secrets or internal exception text.","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"503":{"description":"Safe RFC problem response; no contacts, secrets or internal exception text.","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}}}}},"/bookings":{"get":{"summary":"List safe workspace bookings","description":"Required API-key scope: bookings:read.","security":[{"bearerAuth":[]}],"parameters":[{"name":"limit","in":"query","required":false,"schema":{"type":"integer","minimum":1,"maximum":100,"default":25}},{"name":"cursor","in":"query","required":false,"schema":{"type":"string","maxLength":256},"description":"Opaque nextCursor returned for this workspace and resource. Never construct your own."}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BookingPage"}}}},"400":{"description":"Safe RFC problem response; no contacts, secrets or internal exception text.","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"401":{"description":"Safe RFC problem response; no contacts, secrets or internal exception text.","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"403":{"description":"Safe RFC problem response; no contacts, secrets or internal exception text.","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"404":{"description":"Safe RFC problem response; no contacts, secrets or internal exception text.","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"409":{"description":"Safe RFC problem response; no contacts, secrets or internal exception text.","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"413":{"description":"Safe RFC problem response; no contacts, secrets or internal exception text.","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"415":{"description":"Safe RFC problem response; no contacts, secrets or internal exception text.","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"429":{"description":"Safe RFC problem response; no contacts, secrets or internal exception text.","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"503":{"description":"Safe RFC problem response; no contacts, secrets or internal exception text.","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}}}},"post":{"summary":"Confirm a booking atomically","description":"Required API-key scope: bookings:write.","security":[{"bearerAuth":[]}],"parameters":[{"name":"Idempotency-Key","in":"header","required":true,"schema":{"type":"string","minLength":8,"maxLength":200},"description":"Reuse exactly the same key and JSON content after a timeout. Different content returns 409. Replay is workspace/resource scoped; completed results are retained, not reused for a new request."}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/BookingInput"}}}},"responses":{"201":{"description":"Success","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Confirmation"}}}},"400":{"description":"Safe RFC problem response; no contacts, secrets or internal exception text.","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"401":{"description":"Safe RFC problem response; no contacts, secrets or internal exception text.","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"403":{"description":"Safe RFC problem response; no contacts, secrets or internal exception text.","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"404":{"description":"Safe RFC problem response; no contacts, secrets or internal exception text.","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"409":{"description":"Safe RFC problem response; no contacts, secrets or internal exception text.","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"413":{"description":"Safe RFC problem response; no contacts, secrets or internal exception text.","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"415":{"description":"Safe RFC problem response; no contacts, secrets or internal exception text.","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"429":{"description":"Safe RFC problem response; no contacts, secrets or internal exception text.","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"503":{"description":"Safe RFC problem response; no contacts, secrets or internal exception text.","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}}}}},"/bookings/{id}":{"get":{"summary":"Read a safe workspace booking","description":"Required API-key scope: bookings:read.","security":[{"bearerAuth":[]}],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Booking"}}}},"400":{"description":"Safe RFC problem response; no contacts, secrets or internal exception text.","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"401":{"description":"Safe RFC problem response; no contacts, secrets or internal exception text.","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"403":{"description":"Safe RFC problem response; no contacts, secrets or internal exception text.","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"404":{"description":"Safe RFC problem response; no contacts, secrets or internal exception text.","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"409":{"description":"Safe RFC problem response; no contacts, secrets or internal exception text.","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"413":{"description":"Safe RFC problem response; no contacts, secrets or internal exception text.","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"415":{"description":"Safe RFC problem response; no contacts, secrets or internal exception text.","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"429":{"description":"Safe RFC problem response; no contacts, secrets or internal exception text.","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"503":{"description":"Safe RFC problem response; no contacts, secrets or internal exception text.","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}}}}},"/bookings/{id}/cancel":{"post":{"summary":"Cancel booking idempotently","description":"Required API-key scope: bookings:write.","security":[{"bearerAuth":[]}],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"Idempotency-Key","in":"header","required":true,"schema":{"type":"string","minLength":8,"maxLength":200},"description":"Reuse exactly the same key and JSON content after a timeout. Different content returns 409. Replay is workspace/resource scoped; completed results are retained, not reused for a new request."}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CancellationInput"}}}},"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Cancellation"}}}},"400":{"description":"Safe RFC problem response; no contacts, secrets or internal exception text.","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"401":{"description":"Safe RFC problem response; no contacts, secrets or internal exception text.","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"403":{"description":"Safe RFC problem response; no contacts, secrets or internal exception text.","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"404":{"description":"Safe RFC problem response; no contacts, secrets or internal exception text.","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"409":{"description":"Safe RFC problem response; no contacts, secrets or internal exception text.","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"413":{"description":"Safe RFC problem response; no contacts, secrets or internal exception text.","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"415":{"description":"Safe RFC problem response; no contacts, secrets or internal exception text.","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"429":{"description":"Safe RFC problem response; no contacts, secrets or internal exception text.","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"503":{"description":"Safe RFC problem response; no contacts, secrets or internal exception text.","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}}}}},"/bookings/{id}/reschedule":{"post":{"summary":"Confirm replacement before changing original","description":"Required API-key scope: bookings:write.","security":[{"bearerAuth":[]}],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"Idempotency-Key","in":"header","required":true,"schema":{"type":"string","minLength":8,"maxLength":200},"description":"Reuse exactly the same key and JSON content after a timeout. Different content returns 409. Replay is workspace/resource scoped; completed results are retained, not reused for a new request."}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RescheduleInput"}}}},"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Booking"}}}},"400":{"description":"Safe RFC problem response; no contacts, secrets or internal exception text.","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"401":{"description":"Safe RFC problem response; no contacts, secrets or internal exception text.","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"403":{"description":"Safe RFC problem response; no contacts, secrets or internal exception text.","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"404":{"description":"Safe RFC problem response; no contacts, secrets or internal exception text.","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"409":{"description":"Safe RFC problem response; no contacts, secrets or internal exception text.","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"413":{"description":"Safe RFC problem response; no contacts, secrets or internal exception text.","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"415":{"description":"Safe RFC problem response; no contacts, secrets or internal exception text.","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"429":{"description":"Safe RFC problem response; no contacts, secrets or internal exception text.","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"503":{"description":"Safe RFC problem response; no contacts, secrets or internal exception text.","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}}}}},"/analytics/booking-funnel":{"get":{"summary":"Read aggregate funnel and workflow states","description":"Required API-key scope: analytics:read.","security":[{"bearerAuth":[]}],"parameters":[{"name":"start","in":"query","required":false,"schema":{"type":"string","format":"date-time"},"description":"UTC instants; inclusive start, exclusive end, at most 366 days. Defaults to last 30 days."},{"name":"end","in":"query","required":false,"schema":{"type":"string","format":"date-time"},"description":"UTC instants; inclusive start, exclusive end, at most 366 days. Defaults to last 30 days."}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Funnel"}}}},"400":{"description":"Safe RFC problem response; no contacts, secrets or internal exception text.","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"401":{"description":"Safe RFC problem response; no contacts, secrets or internal exception text.","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"403":{"description":"Safe RFC problem response; no contacts, secrets or internal exception text.","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"404":{"description":"Safe RFC problem response; no contacts, secrets or internal exception text.","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"409":{"description":"Safe RFC problem response; no contacts, secrets or internal exception text.","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"413":{"description":"Safe RFC problem response; no contacts, secrets or internal exception text.","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"415":{"description":"Safe RFC problem response; no contacts, secrets or internal exception text.","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"429":{"description":"Safe RFC problem response; no contacts, secrets or internal exception text.","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"503":{"description":"Safe RFC problem response; no contacts, secrets or internal exception text.","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}}}}},"/public/{workspaceSlug}/{eventSlug}":{"get":{"summary":"Read public/secret-link event metadata","security":[],"parameters":[{"name":"workspaceSlug","in":"path","required":true,"schema":{"type":"string","pattern":"^[a-z0-9]+(?:-[a-z0-9]+)*$"}},{"name":"eventSlug","in":"path","required":true,"schema":{"type":"string","pattern":"^[a-z0-9]+(?:-[a-z0-9]+)*$"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Event"}}}},"400":{"description":"Safe RFC problem response; no contacts, secrets or internal exception text.","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"401":{"description":"Safe RFC problem response; no contacts, secrets or internal exception text.","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"403":{"description":"Safe RFC problem response; no contacts, secrets or internal exception text.","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"404":{"description":"Safe RFC problem response; no contacts, secrets or internal exception text.","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"409":{"description":"Safe RFC problem response; no contacts, secrets or internal exception text.","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"413":{"description":"Safe RFC problem response; no contacts, secrets or internal exception text.","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"415":{"description":"Safe RFC problem response; no contacts, secrets or internal exception text.","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"429":{"description":"Safe RFC problem response; no contacts, secrets or internal exception text.","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"503":{"description":"Safe RFC problem response; no contacts, secrets or internal exception text.","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}}}}},"/public/{workspaceSlug}/{eventSlug}/availability":{"get":{"summary":"Read available UTC starts","security":[],"parameters":[{"name":"workspaceSlug","in":"path","required":true,"schema":{"type":"string","pattern":"^[a-z0-9]+(?:-[a-z0-9]+)*$"}},{"name":"eventSlug","in":"path","required":true,"schema":{"type":"string","pattern":"^[a-z0-9]+(?:-[a-z0-9]+)*$"}},{"name":"startDate","in":"query","required":true,"schema":{"type":"string"},"description":"Inclusive YYYY-MM-DD"},{"name":"endDate","in":"query","required":true,"schema":{"type":"string"},"description":"Exclusive YYYY-MM-DD, at most 31 days after startDate"},{"name":"timezone","in":"query","required":true,"schema":{"type":"string"},"description":"IANA time zone"}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Availability"}}}},"400":{"description":"Safe RFC problem response; no contacts, secrets or internal exception text.","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"401":{"description":"Safe RFC problem response; no contacts, secrets or internal exception text.","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"403":{"description":"Safe RFC problem response; no contacts, secrets or internal exception text.","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"404":{"description":"Safe RFC problem response; no contacts, secrets or internal exception text.","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"409":{"description":"Safe RFC problem response; no contacts, secrets or internal exception text.","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"413":{"description":"Safe RFC problem response; no contacts, secrets or internal exception text.","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"415":{"description":"Safe RFC problem response; no contacts, secrets or internal exception text.","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"429":{"description":"Safe RFC problem response; no contacts, secrets or internal exception text.","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"503":{"description":"Safe RFC problem response; no contacts, secrets or internal exception text.","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}}}}},"/public/{workspaceSlug}/{eventSlug}/bookings":{"post":{"summary":"Confirm invitee booking","description":"Rate-limited public booking; no API key required.","security":[],"parameters":[{"name":"workspaceSlug","in":"path","required":true,"schema":{"type":"string","pattern":"^[a-z0-9]+(?:-[a-z0-9]+)*$"}},{"name":"eventSlug","in":"path","required":true,"schema":{"type":"string","pattern":"^[a-z0-9]+(?:-[a-z0-9]+)*$"}},{"name":"Idempotency-Key","in":"header","required":true,"schema":{"type":"string","minLength":8,"maxLength":200},"description":"Reuse exactly the same key and JSON content after a timeout. Different content returns 409. Replay is workspace/resource scoped; completed results are retained, not reused for a new request."}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicBookingInput"}}}},"responses":{"201":{"description":"Success","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Confirmation"}}}},"400":{"description":"Safe RFC problem response; no contacts, secrets or internal exception text.","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"401":{"description":"Safe RFC problem response; no contacts, secrets or internal exception text.","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"403":{"description":"Safe RFC problem response; no contacts, secrets or internal exception text.","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"404":{"description":"Safe RFC problem response; no contacts, secrets or internal exception text.","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"409":{"description":"Safe RFC problem response; no contacts, secrets or internal exception text.","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"413":{"description":"Safe RFC problem response; no contacts, secrets or internal exception text.","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"415":{"description":"Safe RFC problem response; no contacts, secrets or internal exception text.","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"429":{"description":"Safe RFC problem response; no contacts, secrets or internal exception text.","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"503":{"description":"Safe RFC problem response; no contacts, secrets or internal exception text.","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}}}}}},"components":{"securitySchemes":{"bearerAuth":{"type":"http","scheme":"bearer","bearerFormat":"mv_live_…"}},"schemas":{"AuditPage":{"type":"object","properties":{"data":{"type":"array","items":{"type":"object"}},"nextOffset":{"type":["integer","null"]},"retention":{"const":"indefinite"}}},"AuditExport":{"type":"object","properties":{"manifest":{"type":"object","properties":{"workspaceId":{"type":"string","format":"uuid"},"count":{"type":"integer"},"sha256":{"type":"string"},"retention":{"const":"indefinite"}}},"ndjson":{"type":"string"}}},"Problem":{"type":"object","required":["type","title","status","detail"],"properties":{"type":{"type":"string"},"title":{"type":"string"},"status":{"type":"integer"},"detail":{"type":"string"}}},"RescheduleInput":{"type":"object","required":["start","timezone"],"properties":{"start":{"type":"string","format":"date-time"},"timezone":{"type":"string","description":"IANA time zone"}}},"PublicBookingInput":{"allOf":[{"$ref":"#/components/schemas/RescheduleInput"},{"type":"object","required":["invitee","answers"],"properties":{"invitee":{"type":"object","required":["name","email"],"properties":{"name":{"type":"string","maxLength":200},"email":{"type":"string","format":"email","maxLength":320},"phone":{"type":["string","null"],"maxLength":50}}},"answers":{"type":"array","items":{"type":"object","required":["questionId","value"],"properties":{"questionId":{"type":"string","format":"uuid"},"value":{"type":"string","maxLength":5000}}}}}}]},"BookingInput":{"allOf":[{"$ref":"#/components/schemas/PublicBookingInput"},{"type":"object","required":["eventTypeId"],"properties":{"eventTypeId":{"type":"string","format":"uuid"}}}]},"CancellationInput":{"type":"object","properties":{"reason":{"type":"string","maxLength":500}}},"Booking":{"type":"object","required":["id","startAt","endAt","status","timezone"],"properties":{"id":{"type":"string","format":"uuid"},"startAt":{"type":"string","format":"date-time"},"endAt":{"type":"string","format":"date-time"},"timezone":{"type":"string"},"status":{"type":"string"},"eventTypeId":{"type":"string","format":"uuid"},"rescheduledFromId":{"type":["string","null"],"format":"uuid"}}},"Confirmation":{"allOf":[{"$ref":"#/components/schemas/Booking"},{"type":"object","required":["cancelUrl","rescheduleUrl"],"properties":{"cancelUrl":{"type":"string","format":"uri","description":"Invitee capability; treat as a secret"},"rescheduleUrl":{"type":"string","format":"uri","description":"Invitee capability; treat as a secret"}}}]},"Cancellation":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"status":{"const":"canceled"},"canceledAt":{"type":["string","null"],"format":"date-time"}}},"EventSummary":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"slug":{"type":"string"},"title":{"type":"string"},"durationMinutes":{"type":"integer"},"kind":{"enum":["one_to_one","round_robin","collective","group"]},"visibility":{"enum":["public","secret"]},"status":{"enum":["active","archived"]}}},"Event":{"type":"object","properties":{"title":{"type":"string"},"description":{"type":"string"},"durationMinutes":{"type":"integer"},"kind":{"type":"string"},"timezone":{"type":"string"},"visibility":{"type":"string"},"host":{"type":"object","properties":{"name":{"type":"string"}}},"workspace":{"type":"object","properties":{"name":{"type":"string"},"slug":{"type":"string"}}},"location":{"type":"object","properties":{"type":{"type":"string"},"value":{"type":["string","null"]}}},"questions":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"prompt":{"type":"string"},"type":{"type":"string"},"required":{"type":"boolean"},"options":{"type":["array","null"],"items":{"type":"string"}}}}}}},"EventPage":{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/EventSummary"}},"nextCursor":{"type":["string","null"]}}},"BookingPage":{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/Booking"}},"nextCursor":{"type":["string","null"]}}},"Availability":{"type":"object","properties":{"availabilityStatus":{"enum":["verified","unverified"]},"timezone":{"type":"string"},"visibility":{"type":"string"},"slots":{"type":"array","items":{"type":"object","properties":{"start":{"type":"string","format":"date-time"},"inviteeLocal":{"type":"string"}}}}}},"Funnel":{"type":"object","properties":{"start":{"type":"string","format":"date-time"},"end":{"type":"string","format":"date-time"},"stages":{"type":"object","additionalProperties":{"type":"integer"}},"bookings":{"type":"integer"},"workflows":{"type":"array","items":{"type":"object","properties":{"status":{"type":"string"},"total":{"type":"integer"}}}},"payments":{"type":"object","properties":{"status":{"const":"deferred"},"events":{"const":0}}},"measurement":{"type":"string"}}}}}}