{"openapi":"3.1.0","info":{"title":"FastCal API","description":"Team scheduling, availability, round-robin assignment, and public bookings.","version":"0.2.0"},"servers":[{"url":"https://cal.fastsme.com/api"}],"paths":{"/v1/health":{"get":{"tags":["System"],"summary":"Health","operationId":"health_v1_health_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":{"type":"string"},"type":"object","title":"Response Health V1 Health Get"}}}}}}},"/v1/event-types/{organisation_slug}/{event_type_slug}":{"get":{"tags":["Event types"],"summary":"Get Event Type","operationId":"get_event_type_v1_event_types__organisation_slug___event_type_slug__get","parameters":[{"name":"organisation_slug","in":"path","required":true,"schema":{"type":"string","title":"Organisation Slug"}},{"name":"event_type_slug","in":"path","required":true,"schema":{"type":"string","title":"Event Type Slug"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Get Event Type V1 Event Types  Organisation Slug   Event Type Slug  Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/event-types/{organisation_slug}/{event_type_slug}/slots":{"get":{"tags":["Availability"],"summary":"Get Slots","operationId":"get_slots_v1_event_types__organisation_slug___event_type_slug__slots_get","parameters":[{"name":"organisation_slug","in":"path","required":true,"schema":{"type":"string","title":"Organisation Slug"}},{"name":"event_type_slug","in":"path","required":true,"schema":{"type":"string","title":"Event Type Slug"}},{"name":"days","in":"query","required":false,"schema":{"type":"integer","maximum":60,"minimum":1,"default":21,"title":"Days"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Get Slots V1 Event Types  Organisation Slug   Event Type Slug  Slots Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/bookings":{"get":{"tags":["Bookings"],"summary":"List Bookings","operationId":"list_bookings_v1_bookings_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response List Bookings V1 Bookings Get"}}}}},"security":[{"HTTPBearer":[]}]},"post":{"tags":["Bookings"],"summary":"Post Booking","operationId":"post_booking_v1_bookings_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/BookingCreate"}}},"required":true},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Post Booking V1 Bookings Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}}},"components":{"schemas":{"BookingCreate":{"properties":{"organisation_slug":{"type":"string","title":"Organisation Slug"},"event_type_slug":{"type":"string","title":"Event Type Slug"},"starts_at":{"type":"string","format":"date-time","title":"Starts At"},"ends_at":{"type":"string","format":"date-time","title":"Ends At"},"guest_name":{"type":"string","maxLength":160,"minLength":1,"title":"Guest Name"},"guest_email":{"type":"string","maxLength":320,"minLength":3,"title":"Guest Email"},"guest_timezone":{"type":"string","title":"Guest Timezone","default":"Europe/Tallinn"},"responses":{"additionalProperties":true,"type":"object","title":"Responses"},"attendees":{"items":{"additionalProperties":true,"type":"object"},"type":"array","title":"Attendees"},"idempotency_key":{"anyOf":[{"type":"string","maxLength":160},{"type":"null"}],"title":"Idempotency Key"}},"type":"object","required":["organisation_slug","event_type_slug","starts_at","ends_at","guest_name","guest_email"],"title":"BookingCreate"},"HTTPValidationError":{"properties":{"detail":{"items":{"$ref":"#/components/schemas/ValidationError"},"type":"array","title":"Detail"}},"type":"object","title":"HTTPValidationError"},"ValidationError":{"properties":{"loc":{"items":{"anyOf":[{"type":"string"},{"type":"integer"}]},"type":"array","title":"Location"},"msg":{"type":"string","title":"Message"},"type":{"type":"string","title":"Error Type"},"input":{"title":"Input"},"ctx":{"type":"object","title":"Context"}},"type":"object","required":["loc","msg","type"],"title":"ValidationError"}},"securitySchemes":{"HTTPBearer":{"type":"http","scheme":"bearer"}}}}