{"openapi":"3.1.0","info":{"title":"Horato Unified API","version":"1.0.0","description":"Static API reference generated from specs.json for email, calendar, contacts, tasks, scheduling, webhooks, admin, SDK, and MCP surfaces."},"servers":[{"url":"https://api.hora.to"}],"security":[{"HoratoApiKey":[]}],"paths":{"/v1/auth/connectors/{provider}/authorize":{"post":{"summary":"OAuth, least privilege, PKCE, re-auth","description":"Security/Compliance: OAuth, least privilege, PKCE, re-auth. Priority: MVP.","tags":["Security/Compliance"],"security":[{"HoratoApiKey":[]}],"responses":{"200":{"description":"Successful response"},"201":{"description":"Created"},"202":{"description":"Accepted"},"204":{"description":"No content"},"400":{"description":"Bad request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}}},"401":{"description":"Invalid or missing API key"},"409":{"description":"Conflict or stale etag"},"429":{"description":"Rate limit exceeded"}},"x-horato-priority":"MVP"}},"/v1/auth/connectors/{provider}/callback":{"get":{"summary":"OAuth, least privilege, PKCE, re-auth","description":"Security/Compliance: OAuth, least privilege, PKCE, re-auth. Priority: MVP.","tags":["Security/Compliance"],"security":[{"HoratoApiKey":[]}],"responses":{"200":{"description":"Successful response"},"201":{"description":"Created"},"202":{"description":"Accepted"},"204":{"description":"No content"},"400":{"description":"Bad request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}}},"401":{"description":"Invalid or missing API key"},"409":{"description":"Conflict or stale etag"},"429":{"description":"Rate limit exceeded"}},"x-horato-priority":"MVP"}},"/v1/connections":{"post":{"summary":"Authentication","description":"common_auth. Priority: Common.","tags":["Common auth"],"security":[{"HoratoApiKey":[]}],"responses":{"200":{"description":"Successful response"},"201":{"description":"Created"},"202":{"description":"Accepted"},"204":{"description":"No content"},"400":{"description":"Bad request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}}},"401":{"description":"Invalid or missing API key"},"409":{"description":"Conflict or stale etag"},"429":{"description":"Rate limit exceeded"}},"x-horato-priority":"Common"},"get":{"summary":"Minimal operational surfaces","description":"UX minimal UI requirements: Minimal operational surfaces. Priority: MVP.","tags":["UX minimal UI requirements"],"security":[{"HoratoApiKey":[]}],"responses":{"200":{"description":"Successful response"},"201":{"description":"Created"},"202":{"description":"Accepted"},"204":{"description":"No content"},"400":{"description":"Bad request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}}},"401":{"description":"Invalid or missing API key"},"409":{"description":"Conflict or stale etag"},"429":{"description":"Rate limit exceeded"}},"x-horato-priority":"MVP"}},"/v1/connections/{connectionId}":{"get":{"summary":"Authentication","description":"common_auth. Priority: Common.","tags":["Common auth"],"security":[{"HoratoApiKey":[]}],"responses":{"200":{"description":"Successful response"},"201":{"description":"Created"},"202":{"description":"Accepted"},"204":{"description":"No content"},"400":{"description":"Bad request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}}},"401":{"description":"Invalid or missing API key"},"409":{"description":"Conflict or stale etag"},"429":{"description":"Rate limit exceeded"}},"x-horato-priority":"Common"},"delete":{"summary":"Authentication","description":"common_auth. Priority: Common.","tags":["Common auth"],"security":[{"HoratoApiKey":[]}],"responses":{"200":{"description":"Successful response"},"201":{"description":"Created"},"202":{"description":"Accepted"},"204":{"description":"No content"},"400":{"description":"Bad request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}}},"401":{"description":"Invalid or missing API key"},"409":{"description":"Conflict or stale etag"},"429":{"description":"Rate limit exceeded"}},"x-horato-priority":"Common"}},"/v1/connections/{connectionId}/refresh":{"post":{"summary":"OAuth, least privilege, PKCE, re-auth","description":"Security/Compliance: OAuth, least privilege, PKCE, re-auth. Priority: MVP.","tags":["Security/Compliance"],"security":[{"HoratoApiKey":[]}],"responses":{"200":{"description":"Successful response"},"201":{"description":"Created"},"202":{"description":"Accepted"},"204":{"description":"No content"},"400":{"description":"Bad request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}}},"401":{"description":"Invalid or missing API key"},"409":{"description":"Conflict or stale etag"},"429":{"description":"Rate limit exceeded"}},"x-horato-priority":"MVP"}},"/v1/api-keys":{"post":{"summary":"Authentication","description":"common_auth. Priority: Common.","tags":["Common auth"],"security":[{"HoratoApiKey":[]}],"responses":{"200":{"description":"Successful response"},"201":{"description":"Created"},"202":{"description":"Accepted"},"204":{"description":"No content"},"400":{"description":"Bad request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}}},"401":{"description":"Invalid or missing API key"},"409":{"description":"Conflict or stale etag"},"429":{"description":"Rate limit exceeded"}},"x-horato-priority":"Common"}},"/v1/oauth/token":{"post":{"summary":"Authentication","description":"common_auth. Priority: Common.","tags":["Common auth"],"security":[{"HoratoApiKey":[]}],"responses":{"200":{"description":"Successful response"},"201":{"description":"Created"},"202":{"description":"Accepted"},"204":{"description":"No content"},"400":{"description":"Bad request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}}},"401":{"description":"Invalid or missing API key"},"409":{"description":"Conflict or stale etag"},"429":{"description":"Rate limit exceeded"}},"x-horato-priority":"Common"}},"/v1/webhooks":{"post":{"summary":"Customer webhook subscriptions","description":"Webhooks/Realtime: Customer webhook subscriptions. Priority: MVP.","tags":["Webhooks/Realtime"],"security":[{"HoratoApiKey":[]}],"responses":{"200":{"description":"Successful response"},"201":{"description":"Created"},"202":{"description":"Accepted"},"204":{"description":"No content"},"400":{"description":"Bad request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}}},"401":{"description":"Invalid or missing API key"},"409":{"description":"Conflict or stale etag"},"429":{"description":"Rate limit exceeded"}},"x-horato-priority":"MVP"},"get":{"summary":"Minimal operational surfaces","description":"UX minimal UI requirements: Minimal operational surfaces. Priority: MVP.","tags":["UX minimal UI requirements"],"security":[{"HoratoApiKey":[]}],"responses":{"200":{"description":"Successful response"},"201":{"description":"Created"},"202":{"description":"Accepted"},"204":{"description":"No content"},"400":{"description":"Bad request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}}},"401":{"description":"Invalid or missing API key"},"409":{"description":"Conflict or stale etag"},"429":{"description":"Rate limit exceeded"}},"x-horato-priority":"MVP"}},"/v1/webhooks/{webhookId}":{"patch":{"summary":"Customer webhook subscriptions","description":"Webhooks/Realtime: Customer webhook subscriptions. Priority: MVP.","tags":["Webhooks/Realtime"],"security":[{"HoratoApiKey":[]}],"responses":{"200":{"description":"Successful response"},"201":{"description":"Created"},"202":{"description":"Accepted"},"204":{"description":"No content"},"400":{"description":"Bad request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}}},"401":{"description":"Invalid or missing API key"},"409":{"description":"Conflict or stale etag"},"429":{"description":"Rate limit exceeded"}},"x-horato-priority":"MVP"},"delete":{"summary":"Customer webhook subscriptions","description":"Webhooks/Realtime: Customer webhook subscriptions. Priority: MVP.","tags":["Webhooks/Realtime"],"security":[{"HoratoApiKey":[]}],"responses":{"200":{"description":"Successful response"},"201":{"description":"Created"},"202":{"description":"Accepted"},"204":{"description":"No content"},"400":{"description":"Bad request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}}},"401":{"description":"Invalid or missing API key"},"409":{"description":"Conflict or stale etag"},"429":{"description":"Rate limit exceeded"}},"x-horato-priority":"MVP"},"get":{"summary":"Customer webhook subscriptions","description":"Webhooks/Realtime: Customer webhook subscriptions. Priority: MVP.","tags":["Webhooks/Realtime"],"security":[{"HoratoApiKey":[]}],"responses":{"200":{"description":"Successful response"},"201":{"description":"Created"},"202":{"description":"Accepted"},"204":{"description":"No content"},"400":{"description":"Bad request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}}},"401":{"description":"Invalid or missing API key"},"409":{"description":"Conflict or stale etag"},"429":{"description":"Rate limit exceeded"}},"x-horato-priority":"MVP"}},"/v1/email/capabilities/{connectionId}":{"get":{"summary":"Mailbox connection and capability discovery","description":"Email: Mailbox connection and capability discovery. Priority: MVP.","tags":["Email"],"security":[{"HoratoApiKey":[]}],"responses":{"200":{"description":"Successful response"},"201":{"description":"Created"},"202":{"description":"Accepted"},"204":{"description":"No content"},"400":{"description":"Bad request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}}},"401":{"description":"Invalid or missing API key"},"409":{"description":"Conflict or stale etag"},"429":{"description":"Rate limit exceeded"}},"x-horato-priority":"MVP"}},"/v1/email/messages":{"get":{"summary":"Search, folders, labels, attachments","description":"Email: Search, folders, labels, attachments. Priority: MVP.","tags":["Email"],"security":[{"HoratoApiKey":[]}],"responses":{"200":{"description":"Successful response"},"201":{"description":"Created"},"202":{"description":"Accepted"},"204":{"description":"No content"},"400":{"description":"Bad request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}}},"401":{"description":"Invalid or missing API key"},"409":{"description":"Conflict or stale etag"},"429":{"description":"Rate limit exceeded"}},"x-horato-priority":"MVP"},"post":{"summary":"Messages CRUD and threads","description":"Email: Messages CRUD and threads. Priority: MVP.","tags":["Email"],"security":[{"HoratoApiKey":[]}],"responses":{"200":{"description":"Successful response"},"201":{"description":"Created"},"202":{"description":"Accepted"},"204":{"description":"No content"},"400":{"description":"Bad request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}}},"401":{"description":"Invalid or missing API key"},"409":{"description":"Conflict or stale etag"},"429":{"description":"Rate limit exceeded"}},"x-horato-priority":"MVP"}},"/v1/email/messages/{messageId}":{"get":{"summary":"Messages CRUD and threads","description":"Email: Messages CRUD and threads. Priority: MVP.","tags":["Email"],"security":[{"HoratoApiKey":[]}],"responses":{"200":{"description":"Successful response"},"201":{"description":"Created"},"202":{"description":"Accepted"},"204":{"description":"No content"},"400":{"description":"Bad request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}}},"401":{"description":"Invalid or missing API key"},"409":{"description":"Conflict or stale etag"},"429":{"description":"Rate limit exceeded"}},"x-horato-priority":"MVP"},"patch":{"summary":"Messages CRUD and threads","description":"Email: Messages CRUD and threads. Priority: MVP.","tags":["Email"],"security":[{"HoratoApiKey":[]}],"responses":{"200":{"description":"Successful response"},"201":{"description":"Created"},"202":{"description":"Accepted"},"204":{"description":"No content"},"400":{"description":"Bad request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}}},"401":{"description":"Invalid or missing API key"},"409":{"description":"Conflict or stale etag"},"429":{"description":"Rate limit exceeded"}},"x-horato-priority":"MVP"},"delete":{"summary":"Messages CRUD and threads","description":"Email: Messages CRUD and threads. Priority: MVP.","tags":["Email"],"security":[{"HoratoApiKey":[]}],"responses":{"200":{"description":"Successful response"},"201":{"description":"Created"},"202":{"description":"Accepted"},"204":{"description":"No content"},"400":{"description":"Bad request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}}},"401":{"description":"Invalid or missing API key"},"409":{"description":"Conflict or stale etag"},"429":{"description":"Rate limit exceeded"}},"x-horato-priority":"MVP"}},"/v1/email/threads/{threadId}":{"get":{"summary":"Messages CRUD and threads","description":"Email: Messages CRUD and threads. Priority: MVP.","tags":["Email"],"security":[{"HoratoApiKey":[]}],"responses":{"200":{"description":"Successful response"},"201":{"description":"Created"},"202":{"description":"Accepted"},"204":{"description":"No content"},"400":{"description":"Bad request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}}},"401":{"description":"Invalid or missing API key"},"409":{"description":"Conflict or stale etag"},"429":{"description":"Rate limit exceeded"}},"x-horato-priority":"MVP"}},"/v1/email/folders":{"get":{"summary":"Search, folders, labels, attachments","description":"Email: Search, folders, labels, attachments. Priority: MVP.","tags":["Email"],"security":[{"HoratoApiKey":[]}],"responses":{"200":{"description":"Successful response"},"201":{"description":"Created"},"202":{"description":"Accepted"},"204":{"description":"No content"},"400":{"description":"Bad request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}}},"401":{"description":"Invalid or missing API key"},"409":{"description":"Conflict or stale etag"},"429":{"description":"Rate limit exceeded"}},"x-horato-priority":"MVP"}},"/v1/email/labels":{"get":{"summary":"Search, folders, labels, attachments","description":"Email: Search, folders, labels, attachments. Priority: MVP.","tags":["Email"],"security":[{"HoratoApiKey":[]}],"responses":{"200":{"description":"Successful response"},"201":{"description":"Created"},"202":{"description":"Accepted"},"204":{"description":"No content"},"400":{"description":"Bad request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}}},"401":{"description":"Invalid or missing API key"},"409":{"description":"Conflict or stale etag"},"429":{"description":"Rate limit exceeded"}},"x-horato-priority":"MVP"}},"/v1/email/messages/{messageId}/attachments/{attachmentId}":{"get":{"summary":"Search, folders, labels, attachments","description":"Email: Search, folders, labels, attachments. Priority: MVP.","tags":["Email"],"security":[{"HoratoApiKey":[]}],"responses":{"200":{"description":"Successful response"},"201":{"description":"Created"},"202":{"description":"Accepted"},"204":{"description":"No content"},"400":{"description":"Bad request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}}},"401":{"description":"Invalid or missing API key"},"409":{"description":"Conflict or stale etag"},"429":{"description":"Rate limit exceeded"}},"x-horato-priority":"MVP"}},"/v1/email/drafts":{"post":{"summary":"Drafts, send, replies, tracking","description":"Email: Drafts, send, replies, tracking. Priority: MVP.","tags":["Email"],"security":[{"HoratoApiKey":[]}],"responses":{"200":{"description":"Successful response"},"201":{"description":"Created"},"202":{"description":"Accepted"},"204":{"description":"No content"},"400":{"description":"Bad request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}}},"401":{"description":"Invalid or missing API key"},"409":{"description":"Conflict or stale etag"},"429":{"description":"Rate limit exceeded"}},"x-horato-priority":"MVP"}},"/v1/email/drafts/{draftId}":{"get":{"summary":"Drafts, send, replies, tracking","description":"Email: Drafts, send, replies, tracking. Priority: MVP.","tags":["Email"],"security":[{"HoratoApiKey":[]}],"responses":{"200":{"description":"Successful response"},"201":{"description":"Created"},"202":{"description":"Accepted"},"204":{"description":"No content"},"400":{"description":"Bad request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}}},"401":{"description":"Invalid or missing API key"},"409":{"description":"Conflict or stale etag"},"429":{"description":"Rate limit exceeded"}},"x-horato-priority":"MVP"},"patch":{"summary":"Drafts, send, replies, tracking","description":"Email: Drafts, send, replies, tracking. Priority: MVP.","tags":["Email"],"security":[{"HoratoApiKey":[]}],"responses":{"200":{"description":"Successful response"},"201":{"description":"Created"},"202":{"description":"Accepted"},"204":{"description":"No content"},"400":{"description":"Bad request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}}},"401":{"description":"Invalid or missing API key"},"409":{"description":"Conflict or stale etag"},"429":{"description":"Rate limit exceeded"}},"x-horato-priority":"MVP"}},"/v1/email/drafts/{draftId}/send":{"post":{"summary":"Drafts, send, replies, tracking","description":"Email: Drafts, send, replies, tracking. Priority: MVP.","tags":["Email"],"security":[{"HoratoApiKey":[]}],"responses":{"200":{"description":"Successful response"},"201":{"description":"Created"},"202":{"description":"Accepted"},"204":{"description":"No content"},"400":{"description":"Bad request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}}},"401":{"description":"Invalid or missing API key"},"409":{"description":"Conflict or stale etag"},"429":{"description":"Rate limit exceeded"}},"x-horato-priority":"MVP"}},"/v1/email/send":{"post":{"summary":"Drafts, send, replies, tracking","description":"Email: Drafts, send, replies, tracking. Priority: MVP.","tags":["Email"],"security":[{"HoratoApiKey":[]}],"responses":{"200":{"description":"Successful response"},"201":{"description":"Created"},"202":{"description":"Accepted"},"204":{"description":"No content"},"400":{"description":"Bad request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}}},"401":{"description":"Invalid or missing API key"},"409":{"description":"Conflict or stale etag"},"429":{"description":"Rate limit exceeded"}},"x-horato-priority":"MVP"}},"/v1/email/tracking/{trackingId}":{"get":{"summary":"Drafts, send, replies, tracking","description":"Email: Drafts, send, replies, tracking. Priority: MVP.","tags":["Email"],"security":[{"HoratoApiKey":[]}],"responses":{"200":{"description":"Successful response"},"201":{"description":"Created"},"202":{"description":"Accepted"},"204":{"description":"No content"},"400":{"description":"Bad request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}}},"401":{"description":"Invalid or missing API key"},"409":{"description":"Conflict or stale etag"},"429":{"description":"Rate limit exceeded"}},"x-horato-priority":"MVP"}},"/v1/email/sync/start":{"post":{"summary":"Incremental sync and mailbox repair","description":"Email: Incremental sync and mailbox repair. Priority: MVP.","tags":["Email"],"security":[{"HoratoApiKey":[]}],"responses":{"200":{"description":"Successful response"},"201":{"description":"Created"},"202":{"description":"Accepted"},"204":{"description":"No content"},"400":{"description":"Bad request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}}},"401":{"description":"Invalid or missing API key"},"409":{"description":"Conflict or stale etag"},"429":{"description":"Rate limit exceeded"}},"x-horato-priority":"MVP"}},"/v1/email/sync/changes":{"get":{"summary":"Incremental sync and mailbox repair","description":"Email: Incremental sync and mailbox repair. Priority: MVP.","tags":["Email"],"security":[{"HoratoApiKey":[]}],"responses":{"200":{"description":"Successful response"},"201":{"description":"Created"},"202":{"description":"Accepted"},"204":{"description":"No content"},"400":{"description":"Bad request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}}},"401":{"description":"Invalid or missing API key"},"409":{"description":"Conflict or stale etag"},"429":{"description":"Rate limit exceeded"}},"x-horato-priority":"MVP"}},"/v1/email/sync/reset":{"post":{"summary":"Incremental sync and mailbox repair","description":"Email: Incremental sync and mailbox repair. Priority: MVP.","tags":["Email"],"security":[{"HoratoApiKey":[]}],"responses":{"200":{"description":"Successful response"},"201":{"description":"Created"},"202":{"description":"Accepted"},"204":{"description":"No content"},"400":{"description":"Bad request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}}},"401":{"description":"Invalid or missing API key"},"409":{"description":"Conflict or stale etag"},"429":{"description":"Rate limit exceeded"}},"x-horato-priority":"MVP"}},"/v1/email/sync/status/{connectionId}":{"get":{"summary":"Incremental sync and mailbox repair","description":"Email: Incremental sync and mailbox repair. Priority: MVP.","tags":["Email"],"security":[{"HoratoApiKey":[]}],"responses":{"200":{"description":"Successful response"},"201":{"description":"Created"},"202":{"description":"Accepted"},"204":{"description":"No content"},"400":{"description":"Bad request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}}},"401":{"description":"Invalid or missing API key"},"409":{"description":"Conflict or stale etag"},"429":{"description":"Rate limit exceeded"}},"x-horato-priority":"MVP"}},"/v1/calendars":{"get":{"summary":"Calendars and events CRUD","description":"Calendar: Calendars and events CRUD. Priority: MVP.","tags":["Calendar"],"security":[{"HoratoApiKey":[]}],"responses":{"200":{"description":"Successful response"},"201":{"description":"Created"},"202":{"description":"Accepted"},"204":{"description":"No content"},"400":{"description":"Bad request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}}},"401":{"description":"Invalid or missing API key"},"409":{"description":"Conflict or stale etag"},"429":{"description":"Rate limit exceeded"}},"x-horato-priority":"MVP"},"post":{"summary":"Calendars and events CRUD","description":"Calendar: Calendars and events CRUD. Priority: MVP.","tags":["Calendar"],"security":[{"HoratoApiKey":[]}],"responses":{"200":{"description":"Successful response"},"201":{"description":"Created"},"202":{"description":"Accepted"},"204":{"description":"No content"},"400":{"description":"Bad request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}}},"401":{"description":"Invalid or missing API key"},"409":{"description":"Conflict or stale etag"},"429":{"description":"Rate limit exceeded"}},"x-horato-priority":"MVP"}},"/v1/calendars/{calendarId}":{"get":{"summary":"Calendars and events CRUD","description":"Calendar: Calendars and events CRUD. Priority: MVP.","tags":["Calendar"],"security":[{"HoratoApiKey":[]}],"responses":{"200":{"description":"Successful response"},"201":{"description":"Created"},"202":{"description":"Accepted"},"204":{"description":"No content"},"400":{"description":"Bad request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}}},"401":{"description":"Invalid or missing API key"},"409":{"description":"Conflict or stale etag"},"429":{"description":"Rate limit exceeded"}},"x-horato-priority":"MVP"}},"/v1/calendars/{calendarId}/events":{"get":{"summary":"Calendars and events CRUD","description":"Calendar: Calendars and events CRUD. Priority: MVP.","tags":["Calendar"],"security":[{"HoratoApiKey":[]}],"responses":{"200":{"description":"Successful response"},"201":{"description":"Created"},"202":{"description":"Accepted"},"204":{"description":"No content"},"400":{"description":"Bad request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}}},"401":{"description":"Invalid or missing API key"},"409":{"description":"Conflict or stale etag"},"429":{"description":"Rate limit exceeded"}},"x-horato-priority":"MVP"},"post":{"summary":"Calendars and events CRUD","description":"Calendar: Calendars and events CRUD. Priority: MVP.","tags":["Calendar"],"security":[{"HoratoApiKey":[]}],"responses":{"200":{"description":"Successful response"},"201":{"description":"Created"},"202":{"description":"Accepted"},"204":{"description":"No content"},"400":{"description":"Bad request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}}},"401":{"description":"Invalid or missing API key"},"409":{"description":"Conflict or stale etag"},"429":{"description":"Rate limit exceeded"}},"x-horato-priority":"MVP"}},"/v1/calendars/{calendarId}/events/{eventId}":{"get":{"summary":"Calendars and events CRUD","description":"Calendar: Calendars and events CRUD. Priority: MVP.","tags":["Calendar"],"security":[{"HoratoApiKey":[]}],"responses":{"200":{"description":"Successful response"},"201":{"description":"Created"},"202":{"description":"Accepted"},"204":{"description":"No content"},"400":{"description":"Bad request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}}},"401":{"description":"Invalid or missing API key"},"409":{"description":"Conflict or stale etag"},"429":{"description":"Rate limit exceeded"}},"x-horato-priority":"MVP"},"patch":{"summary":"Calendars and events CRUD","description":"Calendar: Calendars and events CRUD. Priority: MVP.","tags":["Calendar"],"security":[{"HoratoApiKey":[]}],"responses":{"200":{"description":"Successful response"},"201":{"description":"Created"},"202":{"description":"Accepted"},"204":{"description":"No content"},"400":{"description":"Bad request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}}},"401":{"description":"Invalid or missing API key"},"409":{"description":"Conflict or stale etag"},"429":{"description":"Rate limit exceeded"}},"x-horato-priority":"MVP"},"delete":{"summary":"Calendars and events CRUD","description":"Calendar: Calendars and events CRUD. Priority: MVP.","tags":["Calendar"],"security":[{"HoratoApiKey":[]}],"responses":{"200":{"description":"Successful response"},"201":{"description":"Created"},"202":{"description":"Accepted"},"204":{"description":"No content"},"400":{"description":"Bad request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}}},"401":{"description":"Invalid or missing API key"},"409":{"description":"Conflict or stale etag"},"429":{"description":"Rate limit exceeded"}},"x-horato-priority":"MVP"}},"/v1/calendars/freebusy/query":{"post":{"summary":"Availability and free/busy","description":"Calendar: Availability and free/busy. Priority: MVP.","tags":["Calendar"],"security":[{"HoratoApiKey":[]}],"responses":{"200":{"description":"Successful response"},"201":{"description":"Created"},"202":{"description":"Accepted"},"204":{"description":"No content"},"400":{"description":"Bad request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}}},"401":{"description":"Invalid or missing API key"},"409":{"description":"Conflict or stale etag"},"429":{"description":"Rate limit exceeded"}},"x-horato-priority":"MVP"}},"/v1/calendars/availability/query":{"post":{"summary":"Availability and free/busy","description":"Calendar: Availability and free/busy. Priority: MVP.","tags":["Calendar"],"security":[{"HoratoApiKey":[]}],"responses":{"200":{"description":"Successful response"},"201":{"description":"Created"},"202":{"description":"Accepted"},"204":{"description":"No content"},"400":{"description":"Bad request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}}},"401":{"description":"Invalid or missing API key"},"409":{"description":"Conflict or stale etag"},"429":{"description":"Rate limit exceeded"}},"x-horato-priority":"MVP"}},"/v1/calendars/{calendarId}/events/{eventId}/accept":{"post":{"summary":"Recurrence, RSVP, reminders, conferencing","description":"Calendar: Recurrence, RSVP, reminders, conferencing. Priority: MVP.","tags":["Calendar"],"security":[{"HoratoApiKey":[]}],"responses":{"200":{"description":"Successful response"},"201":{"description":"Created"},"202":{"description":"Accepted"},"204":{"description":"No content"},"400":{"description":"Bad request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}}},"401":{"description":"Invalid or missing API key"},"409":{"description":"Conflict or stale etag"},"429":{"description":"Rate limit exceeded"}},"x-horato-priority":"MVP"}},"/v1/calendars/{calendarId}/events/{eventId}/tentative":{"post":{"summary":"Recurrence, RSVP, reminders, conferencing","description":"Calendar: Recurrence, RSVP, reminders, conferencing. Priority: MVP.","tags":["Calendar"],"security":[{"HoratoApiKey":[]}],"responses":{"200":{"description":"Successful response"},"201":{"description":"Created"},"202":{"description":"Accepted"},"204":{"description":"No content"},"400":{"description":"Bad request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}}},"401":{"description":"Invalid or missing API key"},"409":{"description":"Conflict or stale etag"},"429":{"description":"Rate limit exceeded"}},"x-horato-priority":"MVP"}},"/v1/calendars/{calendarId}/events/{eventId}/decline":{"post":{"summary":"Recurrence, RSVP, reminders, conferencing","description":"Calendar: Recurrence, RSVP, reminders, conferencing. Priority: MVP.","tags":["Calendar"],"security":[{"HoratoApiKey":[]}],"responses":{"200":{"description":"Successful response"},"201":{"description":"Created"},"202":{"description":"Accepted"},"204":{"description":"No content"},"400":{"description":"Bad request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}}},"401":{"description":"Invalid or missing API key"},"409":{"description":"Conflict or stale etag"},"429":{"description":"Rate limit exceeded"}},"x-horato-priority":"MVP"}},"/v1/calendars/{calendarId}/events/{eventId}/conference":{"post":{"summary":"Recurrence, RSVP, reminders, conferencing","description":"Calendar: Recurrence, RSVP, reminders, conferencing. Priority: MVP.","tags":["Calendar"],"security":[{"HoratoApiKey":[]}],"responses":{"200":{"description":"Successful response"},"201":{"description":"Created"},"202":{"description":"Accepted"},"204":{"description":"No content"},"400":{"description":"Bad request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}}},"401":{"description":"Invalid or missing API key"},"409":{"description":"Conflict or stale etag"},"429":{"description":"Rate limit exceeded"}},"x-horato-priority":"MVP"}},"/v1/calendars/{calendarId}/sync/start":{"post":{"summary":"Incremental sync and watch renewal","description":"Calendar: Incremental sync and watch renewal. Priority: MVP.","tags":["Calendar"],"security":[{"HoratoApiKey":[]}],"responses":{"200":{"description":"Successful response"},"201":{"description":"Created"},"202":{"description":"Accepted"},"204":{"description":"No content"},"400":{"description":"Bad request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}}},"401":{"description":"Invalid or missing API key"},"409":{"description":"Conflict or stale etag"},"429":{"description":"Rate limit exceeded"}},"x-horato-priority":"MVP"}},"/v1/calendars/{calendarId}/sync/changes":{"get":{"summary":"Incremental sync and watch renewal","description":"Calendar: Incremental sync and watch renewal. Priority: MVP.","tags":["Calendar"],"security":[{"HoratoApiKey":[]}],"responses":{"200":{"description":"Successful response"},"201":{"description":"Created"},"202":{"description":"Accepted"},"204":{"description":"No content"},"400":{"description":"Bad request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}}},"401":{"description":"Invalid or missing API key"},"409":{"description":"Conflict or stale etag"},"429":{"description":"Rate limit exceeded"}},"x-horato-priority":"MVP"}},"/v1/calendars/{calendarId}/sync/renew":{"post":{"summary":"Incremental sync and watch renewal","description":"Calendar: Incremental sync and watch renewal. Priority: MVP.","tags":["Calendar"],"security":[{"HoratoApiKey":[]}],"responses":{"200":{"description":"Successful response"},"201":{"description":"Created"},"202":{"description":"Accepted"},"204":{"description":"No content"},"400":{"description":"Bad request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}}},"401":{"description":"Invalid or missing API key"},"409":{"description":"Conflict or stale etag"},"429":{"description":"Rate limit exceeded"}},"x-horato-priority":"MVP"}},"/v1/calendars/{calendarId}/sync/reset":{"post":{"summary":"Incremental sync and watch renewal","description":"Calendar: Incremental sync and watch renewal. Priority: MVP.","tags":["Calendar"],"security":[{"HoratoApiKey":[]}],"responses":{"200":{"description":"Successful response"},"201":{"description":"Created"},"202":{"description":"Accepted"},"204":{"description":"No content"},"400":{"description":"Bad request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}}},"401":{"description":"Invalid or missing API key"},"409":{"description":"Conflict or stale etag"},"429":{"description":"Rate limit exceeded"}},"x-horato-priority":"MVP"}},"/v1/contacts":{"get":{"summary":"Contacts CRUD","description":"Contacts: Contacts CRUD. Priority: MVP.","tags":["Contacts"],"security":[{"HoratoApiKey":[]}],"responses":{"200":{"description":"Successful response"},"201":{"description":"Created"},"202":{"description":"Accepted"},"204":{"description":"No content"},"400":{"description":"Bad request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}}},"401":{"description":"Invalid or missing API key"},"409":{"description":"Conflict or stale etag"},"429":{"description":"Rate limit exceeded"}},"x-horato-priority":"MVP"},"post":{"summary":"Contacts CRUD","description":"Contacts: Contacts CRUD. Priority: MVP.","tags":["Contacts"],"security":[{"HoratoApiKey":[]}],"responses":{"200":{"description":"Successful response"},"201":{"description":"Created"},"202":{"description":"Accepted"},"204":{"description":"No content"},"400":{"description":"Bad request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}}},"401":{"description":"Invalid or missing API key"},"409":{"description":"Conflict or stale etag"},"429":{"description":"Rate limit exceeded"}},"x-horato-priority":"MVP"}},"/v1/contacts/{contactId}":{"get":{"summary":"Contacts CRUD","description":"Contacts: Contacts CRUD. Priority: MVP.","tags":["Contacts"],"security":[{"HoratoApiKey":[]}],"responses":{"200":{"description":"Successful response"},"201":{"description":"Created"},"202":{"description":"Accepted"},"204":{"description":"No content"},"400":{"description":"Bad request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}}},"401":{"description":"Invalid or missing API key"},"409":{"description":"Conflict or stale etag"},"429":{"description":"Rate limit exceeded"}},"x-horato-priority":"MVP"},"patch":{"summary":"Contacts CRUD","description":"Contacts: Contacts CRUD. Priority: MVP.","tags":["Contacts"],"security":[{"HoratoApiKey":[]}],"responses":{"200":{"description":"Successful response"},"201":{"description":"Created"},"202":{"description":"Accepted"},"204":{"description":"No content"},"400":{"description":"Bad request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}}},"401":{"description":"Invalid or missing API key"},"409":{"description":"Conflict or stale etag"},"429":{"description":"Rate limit exceeded"}},"x-horato-priority":"MVP"},"delete":{"summary":"Contacts CRUD","description":"Contacts: Contacts CRUD. Priority: MVP.","tags":["Contacts"],"security":[{"HoratoApiKey":[]}],"responses":{"200":{"description":"Successful response"},"201":{"description":"Created"},"202":{"description":"Accepted"},"204":{"description":"No content"},"400":{"description":"Bad request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}}},"401":{"description":"Invalid or missing API key"},"409":{"description":"Conflict or stale etag"},"429":{"description":"Rate limit exceeded"}},"x-horato-priority":"MVP"}},"/v1/contact-books":{"get":{"summary":"Address books, groups, and directories","description":"Contacts: Address books, groups, and directories. Priority: Phase2.","tags":["Contacts"],"security":[{"HoratoApiKey":[]}],"responses":{"200":{"description":"Successful response"},"201":{"description":"Created"},"202":{"description":"Accepted"},"204":{"description":"No content"},"400":{"description":"Bad request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}}},"401":{"description":"Invalid or missing API key"},"409":{"description":"Conflict or stale etag"},"429":{"description":"Rate limit exceeded"}},"x-horato-priority":"Phase2"},"post":{"summary":"Address books, groups, and directories","description":"Contacts: Address books, groups, and directories. Priority: Phase2.","tags":["Contacts"],"security":[{"HoratoApiKey":[]}],"responses":{"200":{"description":"Successful response"},"201":{"description":"Created"},"202":{"description":"Accepted"},"204":{"description":"No content"},"400":{"description":"Bad request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}}},"401":{"description":"Invalid or missing API key"},"409":{"description":"Conflict or stale etag"},"429":{"description":"Rate limit exceeded"}},"x-horato-priority":"Phase2"}},"/v1/contact-books/{bookId}":{"patch":{"summary":"Address books, groups, and directories","description":"Contacts: Address books, groups, and directories. Priority: Phase2.","tags":["Contacts"],"security":[{"HoratoApiKey":[]}],"responses":{"200":{"description":"Successful response"},"201":{"description":"Created"},"202":{"description":"Accepted"},"204":{"description":"No content"},"400":{"description":"Bad request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}}},"401":{"description":"Invalid or missing API key"},"409":{"description":"Conflict or stale etag"},"429":{"description":"Rate limit exceeded"}},"x-horato-priority":"Phase2"},"delete":{"summary":"Address books, groups, and directories","description":"Contacts: Address books, groups, and directories. Priority: Phase2.","tags":["Contacts"],"security":[{"HoratoApiKey":[]}],"responses":{"200":{"description":"Successful response"},"201":{"description":"Created"},"202":{"description":"Accepted"},"204":{"description":"No content"},"400":{"description":"Bad request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}}},"401":{"description":"Invalid or missing API key"},"409":{"description":"Conflict or stale etag"},"429":{"description":"Rate limit exceeded"}},"x-horato-priority":"Phase2"}},"/v1/contact-groups":{"post":{"summary":"Address books, groups, and directories","description":"Contacts: Address books, groups, and directories. Priority: Phase2.","tags":["Contacts"],"security":[{"HoratoApiKey":[]}],"responses":{"200":{"description":"Successful response"},"201":{"description":"Created"},"202":{"description":"Accepted"},"204":{"description":"No content"},"400":{"description":"Bad request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}}},"401":{"description":"Invalid or missing API key"},"409":{"description":"Conflict or stale etag"},"429":{"description":"Rate limit exceeded"}},"x-horato-priority":"Phase2"}},"/v1/contact-groups/{groupId}":{"patch":{"summary":"Address books, groups, and directories","description":"Contacts: Address books, groups, and directories. Priority: Phase2.","tags":["Contacts"],"security":[{"HoratoApiKey":[]}],"responses":{"200":{"description":"Successful response"},"201":{"description":"Created"},"202":{"description":"Accepted"},"204":{"description":"No content"},"400":{"description":"Bad request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}}},"401":{"description":"Invalid or missing API key"},"409":{"description":"Conflict or stale etag"},"429":{"description":"Rate limit exceeded"}},"x-horato-priority":"Phase2"},"delete":{"summary":"Address books, groups, and directories","description":"Contacts: Address books, groups, and directories. Priority: Phase2.","tags":["Contacts"],"security":[{"HoratoApiKey":[]}],"responses":{"200":{"description":"Successful response"},"201":{"description":"Created"},"202":{"description":"Accepted"},"204":{"description":"No content"},"400":{"description":"Bad request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}}},"401":{"description":"Invalid or missing API key"},"409":{"description":"Conflict or stale etag"},"429":{"description":"Rate limit exceeded"}},"x-horato-priority":"Phase2"}},"/v1/contacts/sync/start":{"post":{"summary":"Incremental sync and dedupe assistance","description":"Contacts: Incremental sync and dedupe assistance. Priority: MVP.","tags":["Contacts"],"security":[{"HoratoApiKey":[]}],"responses":{"200":{"description":"Successful response"},"201":{"description":"Created"},"202":{"description":"Accepted"},"204":{"description":"No content"},"400":{"description":"Bad request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}}},"401":{"description":"Invalid or missing API key"},"409":{"description":"Conflict or stale etag"},"429":{"description":"Rate limit exceeded"}},"x-horato-priority":"MVP"}},"/v1/contacts/sync/changes":{"get":{"summary":"Incremental sync and dedupe assistance","description":"Contacts: Incremental sync and dedupe assistance. Priority: MVP.","tags":["Contacts"],"security":[{"HoratoApiKey":[]}],"responses":{"200":{"description":"Successful response"},"201":{"description":"Created"},"202":{"description":"Accepted"},"204":{"description":"No content"},"400":{"description":"Bad request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}}},"401":{"description":"Invalid or missing API key"},"409":{"description":"Conflict or stale etag"},"429":{"description":"Rate limit exceeded"}},"x-horato-priority":"MVP"}},"/v1/contacts/merge-suggestions/query":{"post":{"summary":"Incremental sync and dedupe assistance","description":"Contacts: Incremental sync and dedupe assistance. Priority: MVP.","tags":["Contacts"],"security":[{"HoratoApiKey":[]}],"responses":{"200":{"description":"Successful response"},"201":{"description":"Created"},"202":{"description":"Accepted"},"204":{"description":"No content"},"400":{"description":"Bad request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}}},"401":{"description":"Invalid or missing API key"},"409":{"description":"Conflict or stale etag"},"429":{"description":"Rate limit exceeded"}},"x-horato-priority":"MVP"}},"/v1/task-lists":{"get":{"summary":"Task lists and tasks CRUD","description":"Tasks: Task lists and tasks CRUD. Priority: MVP.","tags":["Tasks"],"security":[{"HoratoApiKey":[]}],"responses":{"200":{"description":"Successful response"},"201":{"description":"Created"},"202":{"description":"Accepted"},"204":{"description":"No content"},"400":{"description":"Bad request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}}},"401":{"description":"Invalid or missing API key"},"409":{"description":"Conflict or stale etag"},"429":{"description":"Rate limit exceeded"}},"x-horato-priority":"MVP"},"post":{"summary":"Task lists and tasks CRUD","description":"Tasks: Task lists and tasks CRUD. Priority: MVP.","tags":["Tasks"],"security":[{"HoratoApiKey":[]}],"responses":{"200":{"description":"Successful response"},"201":{"description":"Created"},"202":{"description":"Accepted"},"204":{"description":"No content"},"400":{"description":"Bad request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}}},"401":{"description":"Invalid or missing API key"},"409":{"description":"Conflict or stale etag"},"429":{"description":"Rate limit exceeded"}},"x-horato-priority":"MVP"}},"/v1/task-lists/{taskListId}":{"get":{"summary":"Task lists and tasks CRUD","description":"Tasks: Task lists and tasks CRUD. Priority: MVP.","tags":["Tasks"],"security":[{"HoratoApiKey":[]}],"responses":{"200":{"description":"Successful response"},"201":{"description":"Created"},"202":{"description":"Accepted"},"204":{"description":"No content"},"400":{"description":"Bad request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}}},"401":{"description":"Invalid or missing API key"},"409":{"description":"Conflict or stale etag"},"429":{"description":"Rate limit exceeded"}},"x-horato-priority":"MVP"},"patch":{"summary":"Task lists and tasks CRUD","description":"Tasks: Task lists and tasks CRUD. Priority: MVP.","tags":["Tasks"],"security":[{"HoratoApiKey":[]}],"responses":{"200":{"description":"Successful response"},"201":{"description":"Created"},"202":{"description":"Accepted"},"204":{"description":"No content"},"400":{"description":"Bad request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}}},"401":{"description":"Invalid or missing API key"},"409":{"description":"Conflict or stale etag"},"429":{"description":"Rate limit exceeded"}},"x-horato-priority":"MVP"},"delete":{"summary":"Task lists and tasks CRUD","description":"Tasks: Task lists and tasks CRUD. Priority: MVP.","tags":["Tasks"],"security":[{"HoratoApiKey":[]}],"responses":{"200":{"description":"Successful response"},"201":{"description":"Created"},"202":{"description":"Accepted"},"204":{"description":"No content"},"400":{"description":"Bad request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}}},"401":{"description":"Invalid or missing API key"},"409":{"description":"Conflict or stale etag"},"429":{"description":"Rate limit exceeded"}},"x-horato-priority":"MVP"}},"/v1/task-lists/{taskListId}/tasks":{"get":{"summary":"Task lists and tasks CRUD","description":"Tasks: Task lists and tasks CRUD. Priority: MVP.","tags":["Tasks"],"security":[{"HoratoApiKey":[]}],"responses":{"200":{"description":"Successful response"},"201":{"description":"Created"},"202":{"description":"Accepted"},"204":{"description":"No content"},"400":{"description":"Bad request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}}},"401":{"description":"Invalid or missing API key"},"409":{"description":"Conflict or stale etag"},"429":{"description":"Rate limit exceeded"}},"x-horato-priority":"MVP"},"post":{"summary":"Task lists and tasks CRUD","description":"Tasks: Task lists and tasks CRUD. Priority: MVP.","tags":["Tasks"],"security":[{"HoratoApiKey":[]}],"responses":{"200":{"description":"Successful response"},"201":{"description":"Created"},"202":{"description":"Accepted"},"204":{"description":"No content"},"400":{"description":"Bad request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}}},"401":{"description":"Invalid or missing API key"},"409":{"description":"Conflict or stale etag"},"429":{"description":"Rate limit exceeded"}},"x-horato-priority":"MVP"}},"/v1/task-lists/{taskListId}/tasks/{taskId}":{"get":{"summary":"Task lists and tasks CRUD","description":"Tasks: Task lists and tasks CRUD. Priority: MVP.","tags":["Tasks"],"security":[{"HoratoApiKey":[]}],"responses":{"200":{"description":"Successful response"},"201":{"description":"Created"},"202":{"description":"Accepted"},"204":{"description":"No content"},"400":{"description":"Bad request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}}},"401":{"description":"Invalid or missing API key"},"409":{"description":"Conflict or stale etag"},"429":{"description":"Rate limit exceeded"}},"x-horato-priority":"MVP"},"patch":{"summary":"Task lists and tasks CRUD","description":"Tasks: Task lists and tasks CRUD. Priority: MVP.","tags":["Tasks"],"security":[{"HoratoApiKey":[]}],"responses":{"200":{"description":"Successful response"},"201":{"description":"Created"},"202":{"description":"Accepted"},"204":{"description":"No content"},"400":{"description":"Bad request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}}},"401":{"description":"Invalid or missing API key"},"409":{"description":"Conflict or stale etag"},"429":{"description":"Rate limit exceeded"}},"x-horato-priority":"MVP"},"delete":{"summary":"Task lists and tasks CRUD","description":"Tasks: Task lists and tasks CRUD. Priority: MVP.","tags":["Tasks"],"security":[{"HoratoApiKey":[]}],"responses":{"200":{"description":"Successful response"},"201":{"description":"Created"},"202":{"description":"Accepted"},"204":{"description":"No content"},"400":{"description":"Bad request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}}},"401":{"description":"Invalid or missing API key"},"409":{"description":"Conflict or stale etag"},"429":{"description":"Rate limit exceeded"}},"x-horato-priority":"MVP"}},"/v1/task-lists/{taskListId}/tasks/{taskId}/checklist-items":{"post":{"summary":"Subtasks, checklist items, linked resources","description":"Tasks: Subtasks, checklist items, linked resources. Priority: Phase2.","tags":["Tasks"],"security":[{"HoratoApiKey":[]}],"responses":{"200":{"description":"Successful response"},"201":{"description":"Created"},"202":{"description":"Accepted"},"204":{"description":"No content"},"400":{"description":"Bad request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}}},"401":{"description":"Invalid or missing API key"},"409":{"description":"Conflict or stale etag"},"429":{"description":"Rate limit exceeded"}},"x-horato-priority":"Phase2"}},"/v1/task-lists/{taskListId}/tasks/{taskId}/checklist-items/{itemId}":{"patch":{"summary":"Subtasks, checklist items, linked resources","description":"Tasks: Subtasks, checklist items, linked resources. Priority: Phase2.","tags":["Tasks"],"security":[{"HoratoApiKey":[]}],"responses":{"200":{"description":"Successful response"},"201":{"description":"Created"},"202":{"description":"Accepted"},"204":{"description":"No content"},"400":{"description":"Bad request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}}},"401":{"description":"Invalid or missing API key"},"409":{"description":"Conflict or stale etag"},"429":{"description":"Rate limit exceeded"}},"x-horato-priority":"Phase2"},"delete":{"summary":"Subtasks, checklist items, linked resources","description":"Tasks: Subtasks, checklist items, linked resources. Priority: Phase2.","tags":["Tasks"],"security":[{"HoratoApiKey":[]}],"responses":{"200":{"description":"Successful response"},"201":{"description":"Created"},"202":{"description":"Accepted"},"204":{"description":"No content"},"400":{"description":"Bad request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}}},"401":{"description":"Invalid or missing API key"},"409":{"description":"Conflict or stale etag"},"429":{"description":"Rate limit exceeded"}},"x-horato-priority":"Phase2"}},"/v1/task-lists/{taskListId}/tasks/{taskId}/links":{"post":{"summary":"Subtasks, checklist items, linked resources","description":"Tasks: Subtasks, checklist items, linked resources. Priority: Phase2.","tags":["Tasks"],"security":[{"HoratoApiKey":[]}],"responses":{"200":{"description":"Successful response"},"201":{"description":"Created"},"202":{"description":"Accepted"},"204":{"description":"No content"},"400":{"description":"Bad request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}}},"401":{"description":"Invalid or missing API key"},"409":{"description":"Conflict or stale etag"},"429":{"description":"Rate limit exceeded"}},"x-horato-priority":"Phase2"}},"/v1/task-lists/{taskListId}/sync/start":{"post":{"summary":"Task sync and reconciliation","description":"Tasks: Task sync and reconciliation. Priority: MVP.","tags":["Tasks"],"security":[{"HoratoApiKey":[]}],"responses":{"200":{"description":"Successful response"},"201":{"description":"Created"},"202":{"description":"Accepted"},"204":{"description":"No content"},"400":{"description":"Bad request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}}},"401":{"description":"Invalid or missing API key"},"409":{"description":"Conflict or stale etag"},"429":{"description":"Rate limit exceeded"}},"x-horato-priority":"MVP"}},"/v1/task-lists/{taskListId}/sync/changes":{"get":{"summary":"Task sync and reconciliation","description":"Tasks: Task sync and reconciliation. Priority: MVP.","tags":["Tasks"],"security":[{"HoratoApiKey":[]}],"responses":{"200":{"description":"Successful response"},"201":{"description":"Created"},"202":{"description":"Accepted"},"204":{"description":"No content"},"400":{"description":"Bad request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}}},"401":{"description":"Invalid or missing API key"},"409":{"description":"Conflict or stale etag"},"429":{"description":"Rate limit exceeded"}},"x-horato-priority":"MVP"}},"/v1/task-lists/{taskListId}/sync/reset":{"post":{"summary":"Task sync and reconciliation","description":"Tasks: Task sync and reconciliation. Priority: MVP.","tags":["Tasks"],"security":[{"HoratoApiKey":[]}],"responses":{"200":{"description":"Successful response"},"201":{"description":"Created"},"202":{"description":"Accepted"},"204":{"description":"No content"},"400":{"description":"Bad request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}}},"401":{"description":"Invalid or missing API key"},"409":{"description":"Conflict or stale etag"},"429":{"description":"Rate limit exceeded"}},"x-horato-priority":"MVP"}},"/v1/scheduling/event-types":{"get":{"summary":"Event types, booking profiles, booking links","description":"Scheduling/Booking: Event types, booking profiles, booking links. Priority: MVP.","tags":["Scheduling/Booking"],"security":[{"HoratoApiKey":[]}],"responses":{"200":{"description":"Successful response"},"201":{"description":"Created"},"202":{"description":"Accepted"},"204":{"description":"No content"},"400":{"description":"Bad request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}}},"401":{"description":"Invalid or missing API key"},"409":{"description":"Conflict or stale etag"},"429":{"description":"Rate limit exceeded"}},"x-horato-priority":"MVP"},"post":{"summary":"Event types, booking profiles, booking links","description":"Scheduling/Booking: Event types, booking profiles, booking links. Priority: MVP.","tags":["Scheduling/Booking"],"security":[{"HoratoApiKey":[]}],"responses":{"200":{"description":"Successful response"},"201":{"description":"Created"},"202":{"description":"Accepted"},"204":{"description":"No content"},"400":{"description":"Bad request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}}},"401":{"description":"Invalid or missing API key"},"409":{"description":"Conflict or stale etag"},"429":{"description":"Rate limit exceeded"}},"x-horato-priority":"MVP"}},"/v1/scheduling/event-types/{eventTypeId}":{"get":{"summary":"Event types, booking profiles, booking links","description":"Scheduling/Booking: Event types, booking profiles, booking links. Priority: MVP.","tags":["Scheduling/Booking"],"security":[{"HoratoApiKey":[]}],"responses":{"200":{"description":"Successful response"},"201":{"description":"Created"},"202":{"description":"Accepted"},"204":{"description":"No content"},"400":{"description":"Bad request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}}},"401":{"description":"Invalid or missing API key"},"409":{"description":"Conflict or stale etag"},"429":{"description":"Rate limit exceeded"}},"x-horato-priority":"MVP"},"patch":{"summary":"Event types, booking profiles, booking links","description":"Scheduling/Booking: Event types, booking profiles, booking links. Priority: MVP.","tags":["Scheduling/Booking"],"security":[{"HoratoApiKey":[]}],"responses":{"200":{"description":"Successful response"},"201":{"description":"Created"},"202":{"description":"Accepted"},"204":{"description":"No content"},"400":{"description":"Bad request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}}},"401":{"description":"Invalid or missing API key"},"409":{"description":"Conflict or stale etag"},"429":{"description":"Rate limit exceeded"}},"x-horato-priority":"MVP"},"delete":{"summary":"Event types, booking profiles, booking links","description":"Scheduling/Booking: Event types, booking profiles, booking links. Priority: MVP.","tags":["Scheduling/Booking"],"security":[{"HoratoApiKey":[]}],"responses":{"200":{"description":"Successful response"},"201":{"description":"Created"},"202":{"description":"Accepted"},"204":{"description":"No content"},"400":{"description":"Bad request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}}},"401":{"description":"Invalid or missing API key"},"409":{"description":"Conflict or stale etag"},"429":{"description":"Rate limit exceeded"}},"x-horato-priority":"MVP"}},"/v1/scheduling/booking-links/{slug}":{"get":{"summary":"Embedded booking widget","description":"UX minimal UI requirements: Embedded booking widget. Priority: MVP.","tags":["UX minimal UI requirements"],"security":[{"HoratoApiKey":[]}],"responses":{"200":{"description":"Successful response"},"201":{"description":"Created"},"202":{"description":"Accepted"},"204":{"description":"No content"},"400":{"description":"Bad request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}}},"401":{"description":"Invalid or missing API key"},"409":{"description":"Conflict or stale etag"},"429":{"description":"Rate limit exceeded"}},"x-horato-priority":"MVP"}},"/v1/scheduling/availability/query":{"post":{"summary":"Availability search and slot generation","description":"Scheduling/Booking: Availability search and slot generation. Priority: MVP.","tags":["Scheduling/Booking"],"security":[{"HoratoApiKey":[]}],"responses":{"200":{"description":"Successful response"},"201":{"description":"Created"},"202":{"description":"Accepted"},"204":{"description":"No content"},"400":{"description":"Bad request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}}},"401":{"description":"Invalid or missing API key"},"409":{"description":"Conflict or stale etag"},"429":{"description":"Rate limit exceeded"}},"x-horato-priority":"MVP"}},"/v1/scheduling/holds":{"post":{"summary":"Availability search and slot generation","description":"Scheduling/Booking: Availability search and slot generation. Priority: MVP.","tags":["Scheduling/Booking"],"security":[{"HoratoApiKey":[]}],"responses":{"200":{"description":"Successful response"},"201":{"description":"Created"},"202":{"description":"Accepted"},"204":{"description":"No content"},"400":{"description":"Bad request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}}},"401":{"description":"Invalid or missing API key"},"409":{"description":"Conflict or stale etag"},"429":{"description":"Rate limit exceeded"}},"x-horato-priority":"MVP"}},"/v1/scheduling/holds/{holdId}":{"delete":{"summary":"Availability search and slot generation","description":"Scheduling/Booking: Availability search and slot generation. Priority: MVP.","tags":["Scheduling/Booking"],"security":[{"HoratoApiKey":[]}],"responses":{"200":{"description":"Successful response"},"201":{"description":"Created"},"202":{"description":"Accepted"},"204":{"description":"No content"},"400":{"description":"Bad request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}}},"401":{"description":"Invalid or missing API key"},"409":{"description":"Conflict or stale etag"},"429":{"description":"Rate limit exceeded"}},"x-horato-priority":"MVP"}},"/v1/scheduling/bookings":{"post":{"summary":"Embedded booking widget","description":"UX minimal UI requirements: Embedded booking widget. Priority: MVP.","tags":["UX minimal UI requirements"],"security":[{"HoratoApiKey":[]}],"responses":{"200":{"description":"Successful response"},"201":{"description":"Created"},"202":{"description":"Accepted"},"204":{"description":"No content"},"400":{"description":"Bad request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}}},"401":{"description":"Invalid or missing API key"},"409":{"description":"Conflict or stale etag"},"429":{"description":"Rate limit exceeded"}},"x-horato-priority":"MVP"}},"/v1/scheduling/bookings/{bookingId}":{"get":{"summary":"Create, confirm, reschedule, cancel bookings","description":"Scheduling/Booking: Create, confirm, reschedule, cancel bookings. Priority: MVP.","tags":["Scheduling/Booking"],"security":[{"HoratoApiKey":[]}],"responses":{"200":{"description":"Successful response"},"201":{"description":"Created"},"202":{"description":"Accepted"},"204":{"description":"No content"},"400":{"description":"Bad request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}}},"401":{"description":"Invalid or missing API key"},"409":{"description":"Conflict or stale etag"},"429":{"description":"Rate limit exceeded"}},"x-horato-priority":"MVP"}},"/v1/scheduling/bookings/{bookingId}/confirm":{"post":{"summary":"Create, confirm, reschedule, cancel bookings","description":"Scheduling/Booking: Create, confirm, reschedule, cancel bookings. Priority: MVP.","tags":["Scheduling/Booking"],"security":[{"HoratoApiKey":[]}],"responses":{"200":{"description":"Successful response"},"201":{"description":"Created"},"202":{"description":"Accepted"},"204":{"description":"No content"},"400":{"description":"Bad request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}}},"401":{"description":"Invalid or missing API key"},"409":{"description":"Conflict or stale etag"},"429":{"description":"Rate limit exceeded"}},"x-horato-priority":"MVP"}},"/v1/scheduling/bookings/{bookingId}/reschedule":{"post":{"summary":"Create, confirm, reschedule, cancel bookings","description":"Scheduling/Booking: Create, confirm, reschedule, cancel bookings. Priority: MVP.","tags":["Scheduling/Booking"],"security":[{"HoratoApiKey":[]}],"responses":{"200":{"description":"Successful response"},"201":{"description":"Created"},"202":{"description":"Accepted"},"204":{"description":"No content"},"400":{"description":"Bad request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}}},"401":{"description":"Invalid or missing API key"},"409":{"description":"Conflict or stale etag"},"429":{"description":"Rate limit exceeded"}},"x-horato-priority":"MVP"}},"/v1/scheduling/bookings/{bookingId}/cancel":{"post":{"summary":"Create, confirm, reschedule, cancel bookings","description":"Scheduling/Booking: Create, confirm, reschedule, cancel bookings. Priority: MVP.","tags":["Scheduling/Booking"],"security":[{"HoratoApiKey":[]}],"responses":{"200":{"description":"Successful response"},"201":{"description":"Created"},"202":{"description":"Accepted"},"204":{"description":"No content"},"400":{"description":"Bad request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}}},"401":{"description":"Invalid or missing API key"},"409":{"description":"Conflict or stale etag"},"429":{"description":"Rate limit exceeded"}},"x-horato-priority":"MVP"}},"/v1/scheduling/pools":{"post":{"summary":"Round-robin, pooled, group, routing forms","description":"Scheduling/Booking: Round-robin, pooled, group, routing forms. Priority: Phase2.","tags":["Scheduling/Booking"],"security":[{"HoratoApiKey":[]}],"responses":{"200":{"description":"Successful response"},"201":{"description":"Created"},"202":{"description":"Accepted"},"204":{"description":"No content"},"400":{"description":"Bad request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}}},"401":{"description":"Invalid or missing API key"},"409":{"description":"Conflict or stale etag"},"429":{"description":"Rate limit exceeded"}},"x-horato-priority":"Phase2"}},"/v1/scheduling/pools/{poolId}":{"patch":{"summary":"Round-robin, pooled, group, routing forms","description":"Scheduling/Booking: Round-robin, pooled, group, routing forms. Priority: Phase2.","tags":["Scheduling/Booking"],"security":[{"HoratoApiKey":[]}],"responses":{"200":{"description":"Successful response"},"201":{"description":"Created"},"202":{"description":"Accepted"},"204":{"description":"No content"},"400":{"description":"Bad request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}}},"401":{"description":"Invalid or missing API key"},"409":{"description":"Conflict or stale etag"},"429":{"description":"Rate limit exceeded"}},"x-horato-priority":"Phase2"}},"/v1/scheduling/routing-forms":{"post":{"summary":"Round-robin, pooled, group, routing forms","description":"Scheduling/Booking: Round-robin, pooled, group, routing forms. Priority: Phase2.","tags":["Scheduling/Booking"],"security":[{"HoratoApiKey":[]}],"responses":{"200":{"description":"Successful response"},"201":{"description":"Created"},"202":{"description":"Accepted"},"204":{"description":"No content"},"400":{"description":"Bad request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}}},"401":{"description":"Invalid or missing API key"},"409":{"description":"Conflict or stale etag"},"429":{"description":"Rate limit exceeded"}},"x-horato-priority":"Phase2"}},"/v1/scheduling/routing-forms/{routingFormId}":{"patch":{"summary":"Round-robin, pooled, group, routing forms","description":"Scheduling/Booking: Round-robin, pooled, group, routing forms. Priority: Phase2.","tags":["Scheduling/Booking"],"security":[{"HoratoApiKey":[]}],"responses":{"200":{"description":"Successful response"},"201":{"description":"Created"},"202":{"description":"Accepted"},"204":{"description":"No content"},"400":{"description":"Bad request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}}},"401":{"description":"Invalid or missing API key"},"409":{"description":"Conflict or stale etag"},"429":{"description":"Rate limit exceeded"}},"x-horato-priority":"Phase2"}},"/v1/scheduling/routing-forms/{routingFormId}/responses":{"post":{"summary":"Round-robin, pooled, group, routing forms","description":"Scheduling/Booking: Round-robin, pooled, group, routing forms. Priority: Phase2.","tags":["Scheduling/Booking"],"security":[{"HoratoApiKey":[]}],"responses":{"200":{"description":"Successful response"},"201":{"description":"Created"},"202":{"description":"Accepted"},"204":{"description":"No content"},"400":{"description":"Bad request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}}},"401":{"description":"Invalid or missing API key"},"409":{"description":"Conflict or stale etag"},"429":{"description":"Rate limit exceeded"}},"x-horato-priority":"Phase2"}},"/v1/scheduling/group-bookings":{"post":{"summary":"Round-robin, pooled, group, routing forms","description":"Scheduling/Booking: Round-robin, pooled, group, routing forms. Priority: Phase2.","tags":["Scheduling/Booking"],"security":[{"HoratoApiKey":[]}],"responses":{"200":{"description":"Successful response"},"201":{"description":"Created"},"202":{"description":"Accepted"},"204":{"description":"No content"},"400":{"description":"Bad request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}}},"401":{"description":"Invalid or missing API key"},"409":{"description":"Conflict or stale etag"},"429":{"description":"Rate limit exceeded"}},"x-horato-priority":"Phase2"}},"/v1/scheduling/workflows":{"post":{"summary":"Scheduling workflows and reminders","description":"Scheduling/Booking: Scheduling workflows and reminders. Priority: Phase2.","tags":["Scheduling/Booking"],"security":[{"HoratoApiKey":[]}],"responses":{"200":{"description":"Successful response"},"201":{"description":"Created"},"202":{"description":"Accepted"},"204":{"description":"No content"},"400":{"description":"Bad request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}}},"401":{"description":"Invalid or missing API key"},"409":{"description":"Conflict or stale etag"},"429":{"description":"Rate limit exceeded"}},"x-horato-priority":"Phase2"}},"/v1/scheduling/workflows/{workflowId}":{"patch":{"summary":"Scheduling workflows and reminders","description":"Scheduling/Booking: Scheduling workflows and reminders. Priority: Phase2.","tags":["Scheduling/Booking"],"security":[{"HoratoApiKey":[]}],"responses":{"200":{"description":"Successful response"},"201":{"description":"Created"},"202":{"description":"Accepted"},"204":{"description":"No content"},"400":{"description":"Bad request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}}},"401":{"description":"Invalid or missing API key"},"409":{"description":"Conflict or stale etag"},"429":{"description":"Rate limit exceeded"}},"x-horato-priority":"Phase2"},"delete":{"summary":"Scheduling workflows and reminders","description":"Scheduling/Booking: Scheduling workflows and reminders. Priority: Phase2.","tags":["Scheduling/Booking"],"security":[{"HoratoApiKey":[]}],"responses":{"200":{"description":"Successful response"},"201":{"description":"Created"},"202":{"description":"Accepted"},"204":{"description":"No content"},"400":{"description":"Bad request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}}},"401":{"description":"Invalid or missing API key"},"409":{"description":"Conflict or stale etag"},"429":{"description":"Rate limit exceeded"}},"x-horato-priority":"Phase2"}},"/v1/webhooks/{webhookId}/test":{"post":{"summary":"Customer webhook subscriptions","description":"Webhooks/Realtime: Customer webhook subscriptions. Priority: MVP.","tags":["Webhooks/Realtime"],"security":[{"HoratoApiKey":[]}],"responses":{"200":{"description":"Successful response"},"201":{"description":"Created"},"202":{"description":"Accepted"},"204":{"description":"No content"},"400":{"description":"Bad request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}}},"401":{"description":"Invalid or missing API key"},"409":{"description":"Conflict or stale etag"},"429":{"description":"Rate limit exceeded"}},"x-horato-priority":"MVP"}},"/v1/events/catalog":{"get":{"summary":"Unified event catalog and idempotent delivery","description":"Webhooks/Realtime: Unified event catalog and idempotent delivery. Priority: MVP.","tags":["Webhooks/Realtime"],"security":[{"HoratoApiKey":[]}],"responses":{"200":{"description":"Successful response"},"201":{"description":"Created"},"202":{"description":"Accepted"},"204":{"description":"No content"},"400":{"description":"Bad request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}}},"401":{"description":"Invalid or missing API key"},"409":{"description":"Conflict or stale etag"},"429":{"description":"Rate limit exceeded"}},"x-horato-priority":"MVP"}},"/v1/webhooks/deliveries/{deliveryId}":{"get":{"summary":"Unified event catalog and idempotent delivery","description":"Webhooks/Realtime: Unified event catalog and idempotent delivery. Priority: MVP.","tags":["Webhooks/Realtime"],"security":[{"HoratoApiKey":[]}],"responses":{"200":{"description":"Successful response"},"201":{"description":"Created"},"202":{"description":"Accepted"},"204":{"description":"No content"},"400":{"description":"Bad request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}}},"401":{"description":"Invalid or missing API key"},"409":{"description":"Conflict or stale etag"},"429":{"description":"Rate limit exceeded"}},"x-horato-priority":"MVP"}},"/v1/webhooks/deliveries/{deliveryId}/replay":{"post":{"summary":"Unified event catalog and idempotent delivery","description":"Webhooks/Realtime: Unified event catalog and idempotent delivery. Priority: MVP.","tags":["Webhooks/Realtime"],"security":[{"HoratoApiKey":[]}],"responses":{"200":{"description":"Successful response"},"201":{"description":"Created"},"202":{"description":"Accepted"},"204":{"description":"No content"},"400":{"description":"Bad request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}}},"401":{"description":"Invalid or missing API key"},"409":{"description":"Conflict or stale etag"},"429":{"description":"Rate limit exceeded"}},"x-horato-priority":"MVP"}},"/v1/webhooks/dead-letter":{"get":{"summary":"Retry, dead letter, lifecycle management","description":"Webhooks/Realtime: Retry, dead letter, lifecycle management. Priority: MVP.","tags":["Webhooks/Realtime"],"security":[{"HoratoApiKey":[]}],"responses":{"200":{"description":"Successful response"},"201":{"description":"Created"},"202":{"description":"Accepted"},"204":{"description":"No content"},"400":{"description":"Bad request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}}},"401":{"description":"Invalid or missing API key"},"409":{"description":"Conflict or stale etag"},"429":{"description":"Rate limit exceeded"}},"x-horato-priority":"MVP"}},"/v1/webhooks/dead-letter/{deliveryId}/requeue":{"post":{"summary":"Retry, dead letter, lifecycle management","description":"Webhooks/Realtime: Retry, dead letter, lifecycle management. Priority: MVP.","tags":["Webhooks/Realtime"],"security":[{"HoratoApiKey":[]}],"responses":{"200":{"description":"Successful response"},"201":{"description":"Created"},"202":{"description":"Accepted"},"204":{"description":"No content"},"400":{"description":"Bad request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}}},"401":{"description":"Invalid or missing API key"},"409":{"description":"Conflict or stale etag"},"429":{"description":"Rate limit exceeded"}},"x-horato-priority":"MVP"}},"/v1/provider-subscriptions":{"get":{"summary":"Retry, dead letter, lifecycle management","description":"Webhooks/Realtime: Retry, dead letter, lifecycle management. Priority: MVP.","tags":["Webhooks/Realtime"],"security":[{"HoratoApiKey":[]}],"responses":{"200":{"description":"Successful response"},"201":{"description":"Created"},"202":{"description":"Accepted"},"204":{"description":"No content"},"400":{"description":"Bad request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}}},"401":{"description":"Invalid or missing API key"},"409":{"description":"Conflict or stale etag"},"429":{"description":"Rate limit exceeded"}},"x-horato-priority":"MVP"}},"/v1/meta/openapi":{"get":{"summary":"OpenAPI, examples, quickstarts","description":"Developer Experience: OpenAPI, examples, quickstarts. Priority: MVP.","tags":["Developer Experience"],"security":[{"HoratoApiKey":[]}],"responses":{"200":{"description":"Successful response"},"201":{"description":"Created"},"202":{"description":"Accepted"},"204":{"description":"No content"},"400":{"description":"Bad request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}}},"401":{"description":"Invalid or missing API key"},"409":{"description":"Conflict or stale etag"},"429":{"description":"Rate limit exceeded"}},"x-horato-priority":"MVP"}},"/v1/meta/providers":{"get":{"summary":"Provider adapter registry","description":"Migration/Provider adapters: Provider adapter registry. Priority: MVP.","tags":["Migration/Provider adapters"],"security":[{"HoratoApiKey":[]}],"responses":{"200":{"description":"Successful response"},"201":{"description":"Created"},"202":{"description":"Accepted"},"204":{"description":"No content"},"400":{"description":"Bad request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}}},"401":{"description":"Invalid or missing API key"},"409":{"description":"Conflict or stale etag"},"429":{"description":"Rate limit exceeded"}},"x-horato-priority":"MVP"}},"/v1/meta/capabilities":{"get":{"summary":"Versioned REST surface","description":"API: Versioned REST surface. Priority: MVP.","tags":["API"],"security":[{"HoratoApiKey":[]}],"responses":{"200":{"description":"Successful response"},"201":{"description":"Created"},"202":{"description":"Accepted"},"204":{"description":"No content"},"400":{"description":"Bad request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}}},"401":{"description":"Invalid or missing API key"},"409":{"description":"Conflict or stale etag"},"429":{"description":"Rate limit exceeded"}},"x-horato-priority":"MVP"}},"/v1/connections/{connectionId}/capabilities":{"get":{"summary":"Capability introspection and raw passthrough","description":"API: Capability introspection and raw passthrough. Priority: MVP.","tags":["API"],"security":[{"HoratoApiKey":[]}],"responses":{"200":{"description":"Successful response"},"201":{"description":"Created"},"202":{"description":"Accepted"},"204":{"description":"No content"},"400":{"description":"Bad request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}}},"401":{"description":"Invalid or missing API key"},"409":{"description":"Conflict or stale etag"},"429":{"description":"Rate limit exceeded"}},"x-horato-priority":"MVP"}},"/v1/{resource}/{id}/raw":{"get":{"summary":"Capability introspection and raw passthrough","description":"API: Capability introspection and raw passthrough. Priority: MVP.","tags":["API"],"security":[{"HoratoApiKey":[]}],"responses":{"200":{"description":"Successful response"},"201":{"description":"Created"},"202":{"description":"Accepted"},"204":{"description":"No content"},"400":{"description":"Bad request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}}},"401":{"description":"Invalid or missing API key"},"409":{"description":"Conflict or stale etag"},"429":{"description":"Rate limit exceeded"}},"x-horato-priority":"MVP"}},"/v1/provider-actions/{provider}/{action}":{"post":{"summary":"Capability introspection and raw passthrough","description":"API: Capability introspection and raw passthrough. Priority: MVP.","tags":["API"],"security":[{"HoratoApiKey":[]}],"responses":{"200":{"description":"Successful response"},"201":{"description":"Created"},"202":{"description":"Accepted"},"204":{"description":"No content"},"400":{"description":"Bad request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}}},"401":{"description":"Invalid or missing API key"},"409":{"description":"Conflict or stale etag"},"429":{"description":"Rate limit exceeded"}},"x-horato-priority":"MVP"}},"/v1/dev/simulate/event":{"post":{"summary":"Sandbox, mocks, webhook inspector","description":"Developer Experience: Sandbox, mocks, webhook inspector. Priority: MVP.","tags":["Developer Experience"],"security":[{"HoratoApiKey":[]}],"responses":{"200":{"description":"Successful response"},"201":{"description":"Created"},"202":{"description":"Accepted"},"204":{"description":"No content"},"400":{"description":"Bad request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}}},"401":{"description":"Invalid or missing API key"},"409":{"description":"Conflict or stale etag"},"429":{"description":"Rate limit exceeded"}},"x-horato-priority":"MVP"}},"/v1/dev/fake-connection":{"post":{"summary":"Sandbox, mocks, webhook inspector","description":"Developer Experience: Sandbox, mocks, webhook inspector. Priority: MVP.","tags":["Developer Experience"],"security":[{"HoratoApiKey":[]}],"responses":{"200":{"description":"Successful response"},"201":{"description":"Created"},"202":{"description":"Accepted"},"204":{"description":"No content"},"400":{"description":"Bad request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}}},"401":{"description":"Invalid or missing API key"},"409":{"description":"Conflict or stale etag"},"429":{"description":"Rate limit exceeded"}},"x-horato-priority":"MVP"}},"/v1/mcp/tools":{"get":{"summary":"Official MCP server with resource-safe tools","description":"MCP/agentic orchestration: Official MCP server with resource-safe tools. Priority: MVP.","tags":["MCP/agentic orchestration"],"security":[{"HoratoApiKey":[]}],"responses":{"200":{"description":"Successful response"},"201":{"description":"Created"},"202":{"description":"Accepted"},"204":{"description":"No content"},"400":{"description":"Bad request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}}},"401":{"description":"Invalid or missing API key"},"409":{"description":"Conflict or stale etag"},"429":{"description":"Rate limit exceeded"}},"x-horato-priority":"MVP"}},"/v1/mcp/sessions":{"post":{"summary":"Official MCP server with resource-safe tools","description":"MCP/agentic orchestration: Official MCP server with resource-safe tools. Priority: MVP.","tags":["MCP/agentic orchestration"],"security":[{"HoratoApiKey":[]}],"responses":{"200":{"description":"Successful response"},"201":{"description":"Created"},"202":{"description":"Accepted"},"204":{"description":"No content"},"400":{"description":"Bad request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}}},"401":{"description":"Invalid or missing API key"},"409":{"description":"Conflict or stale etag"},"429":{"description":"Rate limit exceeded"}},"x-horato-priority":"MVP"}},"/v1/mcp/sessions/{sessionId}":{"delete":{"summary":"Official MCP server with resource-safe tools","description":"MCP/agentic orchestration: Official MCP server with resource-safe tools. Priority: MVP.","tags":["MCP/agentic orchestration"],"security":[{"HoratoApiKey":[]}],"responses":{"200":{"description":"Successful response"},"201":{"description":"Created"},"202":{"description":"Accepted"},"204":{"description":"No content"},"400":{"description":"Bad request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}}},"401":{"description":"Invalid or missing API key"},"409":{"description":"Conflict or stale etag"},"429":{"description":"Rate limit exceeded"}},"x-horato-priority":"MVP"}},"/v1/approvals":{"post":{"summary":"Approvals and policy-aware actions","description":"MCP/agentic orchestration: Approvals and policy-aware actions. Priority: MVP.","tags":["MCP/agentic orchestration"],"security":[{"HoratoApiKey":[]}],"responses":{"200":{"description":"Successful response"},"201":{"description":"Created"},"202":{"description":"Accepted"},"204":{"description":"No content"},"400":{"description":"Bad request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}}},"401":{"description":"Invalid or missing API key"},"409":{"description":"Conflict or stale etag"},"429":{"description":"Rate limit exceeded"}},"x-horato-priority":"MVP"}},"/v1/approvals/{approvalId}/approve":{"post":{"summary":"Approvals and policy-aware actions","description":"MCP/agentic orchestration: Approvals and policy-aware actions. Priority: MVP.","tags":["MCP/agentic orchestration"],"security":[{"HoratoApiKey":[]}],"responses":{"200":{"description":"Successful response"},"201":{"description":"Created"},"202":{"description":"Accepted"},"204":{"description":"No content"},"400":{"description":"Bad request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}}},"401":{"description":"Invalid or missing API key"},"409":{"description":"Conflict or stale etag"},"429":{"description":"Rate limit exceeded"}},"x-horato-priority":"MVP"}},"/v1/approvals/{approvalId}/reject":{"post":{"summary":"Approvals and policy-aware actions","description":"MCP/agentic orchestration: Approvals and policy-aware actions. Priority: MVP.","tags":["MCP/agentic orchestration"],"security":[{"HoratoApiKey":[]}],"responses":{"200":{"description":"Successful response"},"201":{"description":"Created"},"202":{"description":"Accepted"},"204":{"description":"No content"},"400":{"description":"Bad request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}}},"401":{"description":"Invalid or missing API key"},"409":{"description":"Conflict or stale etag"},"429":{"description":"Rate limit exceeded"}},"x-horato-priority":"MVP"}},"/v1/mcp/runs":{"get":{"summary":"Durable run history and provenance","description":"MCP/agentic orchestration: Durable run history and provenance. Priority: Phase2.","tags":["MCP/agentic orchestration"],"security":[{"HoratoApiKey":[]}],"responses":{"200":{"description":"Successful response"},"201":{"description":"Created"},"202":{"description":"Accepted"},"204":{"description":"No content"},"400":{"description":"Bad request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}}},"401":{"description":"Invalid or missing API key"},"409":{"description":"Conflict or stale etag"},"429":{"description":"Rate limit exceeded"}},"x-horato-priority":"Phase2"}},"/v1/mcp/runs/{runId}":{"get":{"summary":"Durable run history and provenance","description":"MCP/agentic orchestration: Durable run history and provenance. Priority: Phase2.","tags":["MCP/agentic orchestration"],"security":[{"HoratoApiKey":[]}],"responses":{"200":{"description":"Successful response"},"201":{"description":"Created"},"202":{"description":"Accepted"},"204":{"description":"No content"},"400":{"description":"Bad request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}}},"401":{"description":"Invalid or missing API key"},"409":{"description":"Conflict or stale etag"},"429":{"description":"Rate limit exceeded"}},"x-horato-priority":"Phase2"}},"/v1/mcp/runs/{runId}/replay":{"post":{"summary":"Durable run history and provenance","description":"MCP/agentic orchestration: Durable run history and provenance. Priority: Phase2.","tags":["MCP/agentic orchestration"],"security":[{"HoratoApiKey":[]}],"responses":{"200":{"description":"Successful response"},"201":{"description":"Created"},"202":{"description":"Accepted"},"204":{"description":"No content"},"400":{"description":"Bad request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}}},"401":{"description":"Invalid or missing API key"},"409":{"description":"Conflict or stale etag"},"429":{"description":"Rate limit exceeded"}},"x-horato-priority":"Phase2"}},"/v1/admin/keys/rotate":{"post":{"summary":"Token vaulting, encryption, tenant isolation","description":"Security/Compliance: Token vaulting, encryption, tenant isolation. Priority: MVP.","tags":["Security/Compliance"],"security":[{"HoratoApiKey":[]}],"responses":{"200":{"description":"Successful response"},"201":{"description":"Created"},"202":{"description":"Accepted"},"204":{"description":"No content"},"400":{"description":"Bad request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}}},"401":{"description":"Invalid or missing API key"},"409":{"description":"Conflict or stale etag"},"429":{"description":"Rate limit exceeded"}},"x-horato-priority":"MVP"}},"/v1/admin/audit-logs":{"get":{"summary":"Minimal operational surfaces","description":"UX minimal UI requirements: Minimal operational surfaces. Priority: MVP.","tags":["UX minimal UI requirements"],"security":[{"HoratoApiKey":[]}],"responses":{"200":{"description":"Successful response"},"201":{"description":"Created"},"202":{"description":"Accepted"},"204":{"description":"No content"},"400":{"description":"Bad request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}}},"401":{"description":"Invalid or missing API key"},"409":{"description":"Conflict or stale etag"},"429":{"description":"Rate limit exceeded"}},"x-horato-priority":"MVP"}},"/v1/admin/retention-policies":{"post":{"summary":"Retention, export, deletion, compliance ops","description":"Security/Compliance: Retention, export, deletion, compliance ops. Priority: Phase2.","tags":["Security/Compliance"],"security":[{"HoratoApiKey":[]}],"responses":{"200":{"description":"Successful response"},"201":{"description":"Created"},"202":{"description":"Accepted"},"204":{"description":"No content"},"400":{"description":"Bad request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}}},"401":{"description":"Invalid or missing API key"},"409":{"description":"Conflict or stale etag"},"429":{"description":"Rate limit exceeded"}},"x-horato-priority":"Phase2"}},"/v1/admin/export-jobs":{"post":{"summary":"Retention, export, deletion, compliance ops","description":"Security/Compliance: Retention, export, deletion, compliance ops. Priority: Phase2.","tags":["Security/Compliance"],"security":[{"HoratoApiKey":[]}],"responses":{"200":{"description":"Successful response"},"201":{"description":"Created"},"202":{"description":"Accepted"},"204":{"description":"No content"},"400":{"description":"Bad request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}}},"401":{"description":"Invalid or missing API key"},"409":{"description":"Conflict or stale etag"},"429":{"description":"Rate limit exceeded"}},"x-horato-priority":"Phase2"}},"/v1/admin/delete-jobs":{"post":{"summary":"Retention, export, deletion, compliance ops","description":"Security/Compliance: Retention, export, deletion, compliance ops. Priority: Phase2.","tags":["Security/Compliance"],"security":[{"HoratoApiKey":[]}],"responses":{"200":{"description":"Successful response"},"201":{"description":"Created"},"202":{"description":"Accepted"},"204":{"description":"No content"},"400":{"description":"Bad request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}}},"401":{"description":"Invalid or missing API key"},"409":{"description":"Conflict or stale etag"},"429":{"description":"Rate limit exceeded"}},"x-horato-priority":"Phase2"}},"/v1/orgs":{"get":{"summary":"Organizations, users, roles","description":"Admin/Org: Organizations, users, roles. Priority: MVP.","tags":["Admin/Org"],"security":[{"HoratoApiKey":[]}],"responses":{"200":{"description":"Successful response"},"201":{"description":"Created"},"202":{"description":"Accepted"},"204":{"description":"No content"},"400":{"description":"Bad request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}}},"401":{"description":"Invalid or missing API key"},"409":{"description":"Conflict or stale etag"},"429":{"description":"Rate limit exceeded"}},"x-horato-priority":"MVP"},"post":{"summary":"Organizations, users, roles","description":"Admin/Org: Organizations, users, roles. Priority: MVP.","tags":["Admin/Org"],"security":[{"HoratoApiKey":[]}],"responses":{"200":{"description":"Successful response"},"201":{"description":"Created"},"202":{"description":"Accepted"},"204":{"description":"No content"},"400":{"description":"Bad request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}}},"401":{"description":"Invalid or missing API key"},"409":{"description":"Conflict or stale etag"},"429":{"description":"Rate limit exceeded"}},"x-horato-priority":"MVP"}},"/v1/orgs/{orgId}/users":{"get":{"summary":"Organizations, users, roles","description":"Admin/Org: Organizations, users, roles. Priority: MVP.","tags":["Admin/Org"],"security":[{"HoratoApiKey":[]}],"responses":{"200":{"description":"Successful response"},"201":{"description":"Created"},"202":{"description":"Accepted"},"204":{"description":"No content"},"400":{"description":"Bad request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}}},"401":{"description":"Invalid or missing API key"},"409":{"description":"Conflict or stale etag"},"429":{"description":"Rate limit exceeded"}},"x-horato-priority":"MVP"},"post":{"summary":"Organizations, users, roles","description":"Admin/Org: Organizations, users, roles. Priority: MVP.","tags":["Admin/Org"],"security":[{"HoratoApiKey":[]}],"responses":{"200":{"description":"Successful response"},"201":{"description":"Created"},"202":{"description":"Accepted"},"204":{"description":"No content"},"400":{"description":"Bad request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}}},"401":{"description":"Invalid or missing API key"},"409":{"description":"Conflict or stale etag"},"429":{"description":"Rate limit exceeded"}},"x-horato-priority":"MVP"}},"/v1/orgs/{orgId}/users/{userId}":{"patch":{"summary":"Organizations, users, roles","description":"Admin/Org: Organizations, users, roles. Priority: MVP.","tags":["Admin/Org"],"security":[{"HoratoApiKey":[]}],"responses":{"200":{"description":"Successful response"},"201":{"description":"Created"},"202":{"description":"Accepted"},"204":{"description":"No content"},"400":{"description":"Bad request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}}},"401":{"description":"Invalid or missing API key"},"409":{"description":"Conflict or stale etag"},"429":{"description":"Rate limit exceeded"}},"x-horato-priority":"MVP"},"delete":{"summary":"Organizations, users, roles","description":"Admin/Org: Organizations, users, roles. Priority: MVP.","tags":["Admin/Org"],"security":[{"HoratoApiKey":[]}],"responses":{"200":{"description":"Successful response"},"201":{"description":"Created"},"202":{"description":"Accepted"},"204":{"description":"No content"},"400":{"description":"Bad request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}}},"401":{"description":"Invalid or missing API key"},"409":{"description":"Conflict or stale etag"},"429":{"description":"Rate limit exceeded"}},"x-horato-priority":"MVP"}},"/v1/orgs/{orgId}/roles":{"get":{"summary":"Organizations, users, roles","description":"Admin/Org: Organizations, users, roles. Priority: MVP.","tags":["Admin/Org"],"security":[{"HoratoApiKey":[]}],"responses":{"200":{"description":"Successful response"},"201":{"description":"Created"},"202":{"description":"Accepted"},"204":{"description":"No content"},"400":{"description":"Bad request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}}},"401":{"description":"Invalid or missing API key"},"409":{"description":"Conflict or stale etag"},"429":{"description":"Rate limit exceeded"}},"x-horato-priority":"MVP"},"post":{"summary":"Organizations, users, roles","description":"Admin/Org: Organizations, users, roles. Priority: MVP.","tags":["Admin/Org"],"security":[{"HoratoApiKey":[]}],"responses":{"200":{"description":"Successful response"},"201":{"description":"Created"},"202":{"description":"Accepted"},"204":{"description":"No content"},"400":{"description":"Bad request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}}},"401":{"description":"Invalid or missing API key"},"409":{"description":"Conflict or stale etag"},"429":{"description":"Rate limit exceeded"}},"x-horato-priority":"MVP"}},"/v1/orgs/{orgId}/policies":{"get":{"summary":"Connection policies and domain installs","description":"Admin/Org: Connection policies and domain installs. Priority: Phase2.","tags":["Admin/Org"],"security":[{"HoratoApiKey":[]}],"responses":{"200":{"description":"Successful response"},"201":{"description":"Created"},"202":{"description":"Accepted"},"204":{"description":"No content"},"400":{"description":"Bad request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}}},"401":{"description":"Invalid or missing API key"},"409":{"description":"Conflict or stale etag"},"429":{"description":"Rate limit exceeded"}},"x-horato-priority":"Phase2"},"patch":{"summary":"Connection policies and domain installs","description":"Admin/Org: Connection policies and domain installs. Priority: Phase2.","tags":["Admin/Org"],"security":[{"HoratoApiKey":[]}],"responses":{"200":{"description":"Successful response"},"201":{"description":"Created"},"202":{"description":"Accepted"},"204":{"description":"No content"},"400":{"description":"Bad request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}}},"401":{"description":"Invalid or missing API key"},"409":{"description":"Conflict or stale etag"},"429":{"description":"Rate limit exceeded"}},"x-horato-priority":"Phase2"}},"/v1/orgs/{orgId}/domain-installs":{"post":{"summary":"Connection policies and domain installs","description":"Admin/Org: Connection policies and domain installs. Priority: Phase2.","tags":["Admin/Org"],"security":[{"HoratoApiKey":[]}],"responses":{"200":{"description":"Successful response"},"201":{"description":"Created"},"202":{"description":"Accepted"},"204":{"description":"No content"},"400":{"description":"Bad request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}}},"401":{"description":"Invalid or missing API key"},"409":{"description":"Conflict or stale etag"},"429":{"description":"Rate limit exceeded"}},"x-horato-priority":"Phase2"}},"/v1/branding":{"get":{"summary":"Themes, assets, localized copy","description":"White-labeling/Branding controls: Themes, assets, localized copy. Priority: MVP.","tags":["White-labeling/Branding controls"],"security":[{"HoratoApiKey":[]}],"responses":{"200":{"description":"Successful response"},"201":{"description":"Created"},"202":{"description":"Accepted"},"204":{"description":"No content"},"400":{"description":"Bad request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}}},"401":{"description":"Invalid or missing API key"},"409":{"description":"Conflict or stale etag"},"429":{"description":"Rate limit exceeded"}},"x-horato-priority":"MVP"},"patch":{"summary":"Themes, assets, localized copy","description":"White-labeling/Branding controls: Themes, assets, localized copy. Priority: MVP.","tags":["White-labeling/Branding controls"],"security":[{"HoratoApiKey":[]}],"responses":{"200":{"description":"Successful response"},"201":{"description":"Created"},"202":{"description":"Accepted"},"204":{"description":"No content"},"400":{"description":"Bad request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}}},"401":{"description":"Invalid or missing API key"},"409":{"description":"Conflict or stale etag"},"429":{"description":"Rate limit exceeded"}},"x-horato-priority":"MVP"}},"/v1/custom-domains":{"post":{"summary":"Custom domains and sender identities","description":"White-labeling/Branding controls: Custom domains and sender identities. Priority: Phase2.","tags":["White-labeling/Branding controls"],"security":[{"HoratoApiKey":[]}],"responses":{"200":{"description":"Successful response"},"201":{"description":"Created"},"202":{"description":"Accepted"},"204":{"description":"No content"},"400":{"description":"Bad request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}}},"401":{"description":"Invalid or missing API key"},"409":{"description":"Conflict or stale etag"},"429":{"description":"Rate limit exceeded"}},"x-horato-priority":"Phase2"},"get":{"summary":"Custom domains and sender identities","description":"White-labeling/Branding controls: Custom domains and sender identities. Priority: Phase2.","tags":["White-labeling/Branding controls"],"security":[{"HoratoApiKey":[]}],"responses":{"200":{"description":"Successful response"},"201":{"description":"Created"},"202":{"description":"Accepted"},"204":{"description":"No content"},"400":{"description":"Bad request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}}},"401":{"description":"Invalid or missing API key"},"409":{"description":"Conflict or stale etag"},"429":{"description":"Rate limit exceeded"}},"x-horato-priority":"Phase2"}},"/v1/sender-identities":{"post":{"summary":"Custom domains and sender identities","description":"White-labeling/Branding controls: Custom domains and sender identities. Priority: Phase2.","tags":["White-labeling/Branding controls"],"security":[{"HoratoApiKey":[]}],"responses":{"200":{"description":"Successful response"},"201":{"description":"Created"},"202":{"description":"Accepted"},"204":{"description":"No content"},"400":{"description":"Bad request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}}},"401":{"description":"Invalid or missing API key"},"409":{"description":"Conflict or stale etag"},"429":{"description":"Rate limit exceeded"}},"x-horato-priority":"Phase2"},"get":{"summary":"Custom domains and sender identities","description":"White-labeling/Branding controls: Custom domains and sender identities. Priority: Phase2.","tags":["White-labeling/Branding controls"],"security":[{"HoratoApiKey":[]}],"responses":{"200":{"description":"Successful response"},"201":{"description":"Created"},"202":{"description":"Accepted"},"204":{"description":"No content"},"400":{"description":"Bad request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}}},"401":{"description":"Invalid or missing API key"},"409":{"description":"Conflict or stale etag"},"429":{"description":"Rate limit exceeded"}},"x-horato-priority":"Phase2"}},"/v1/embed/config/{componentId}":{"get":{"summary":"Embeddable components","description":"White-labeling/Branding controls: Embeddable components. Priority: MVP.","tags":["White-labeling/Branding controls"],"security":[{"HoratoApiKey":[]}],"responses":{"200":{"description":"Successful response"},"201":{"description":"Created"},"202":{"description":"Accepted"},"204":{"description":"No content"},"400":{"description":"Bad request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}}},"401":{"description":"Invalid or missing API key"},"409":{"description":"Conflict or stale etag"},"429":{"description":"Rate limit exceeded"}},"x-horato-priority":"MVP"}},"/v1/admin/metrics":{"get":{"summary":"Core operational metrics","description":"Monitoring/Observability: Core operational metrics. Priority: MVP.","tags":["Monitoring/Observability"],"security":[{"HoratoApiKey":[]}],"responses":{"200":{"description":"Successful response"},"201":{"description":"Created"},"202":{"description":"Accepted"},"204":{"description":"No content"},"400":{"description":"Bad request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}}},"401":{"description":"Invalid or missing API key"},"409":{"description":"Conflict or stale etag"},"429":{"description":"Rate limit exceeded"}},"x-horato-priority":"MVP"}},"/v1/admin/traces/{traceId}":{"get":{"summary":"Tracing and provider correlation","description":"Monitoring/Observability: Tracing and provider correlation. Priority: MVP.","tags":["Monitoring/Observability"],"security":[{"HoratoApiKey":[]}],"responses":{"200":{"description":"Successful response"},"201":{"description":"Created"},"202":{"description":"Accepted"},"204":{"description":"No content"},"400":{"description":"Bad request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}}},"401":{"description":"Invalid or missing API key"},"409":{"description":"Conflict or stale etag"},"429":{"description":"Rate limit exceeded"}},"x-horato-priority":"MVP"}},"/v1/usage":{"get":{"summary":"Minimal operational surfaces","description":"UX minimal UI requirements: Minimal operational surfaces. Priority: MVP.","tags":["UX minimal UI requirements"],"security":[{"HoratoApiKey":[]}],"responses":{"200":{"description":"Successful response"},"201":{"description":"Created"},"202":{"description":"Accepted"},"204":{"description":"No content"},"400":{"description":"Bad request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}}},"401":{"description":"Invalid or missing API key"},"409":{"description":"Conflict or stale etag"},"429":{"description":"Rate limit exceeded"}},"x-horato-priority":"MVP"}},"/v1/usage/limits":{"get":{"summary":"Tenant/app quotas","description":"Rate limits/Throttling: Tenant/app quotas. Priority: MVP.","tags":["Rate limits/Throttling"],"security":[{"HoratoApiKey":[]}],"responses":{"200":{"description":"Successful response"},"201":{"description":"Created"},"202":{"description":"Accepted"},"204":{"description":"No content"},"400":{"description":"Bad request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}}},"401":{"description":"Invalid or missing API key"},"409":{"description":"Conflict or stale etag"},"429":{"description":"Rate limit exceeded"}},"x-horato-priority":"MVP"},"patch":{"summary":"Tenant/app quotas","description":"Rate limits/Throttling: Tenant/app quotas. Priority: MVP.","tags":["Rate limits/Throttling"],"security":[{"HoratoApiKey":[]}],"responses":{"200":{"description":"Successful response"},"201":{"description":"Created"},"202":{"description":"Accepted"},"204":{"description":"No content"},"400":{"description":"Bad request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}}},"401":{"description":"Invalid or missing API key"},"409":{"description":"Conflict or stale etag"},"429":{"description":"Rate limit exceeded"}},"x-horato-priority":"MVP"}},"/v1/billing/plans":{"get":{"summary":"Plans, invoices, entitlements","description":"Billing/Usage: Plans, invoices, entitlements. Priority: Phase2.","tags":["Billing/Usage"],"security":[{"HoratoApiKey":[]}],"responses":{"200":{"description":"Successful response"},"201":{"description":"Created"},"202":{"description":"Accepted"},"204":{"description":"No content"},"400":{"description":"Bad request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}}},"401":{"description":"Invalid or missing API key"},"409":{"description":"Conflict or stale etag"},"429":{"description":"Rate limit exceeded"}},"x-horato-priority":"Phase2"}},"/v1/billing/subscriptions":{"post":{"summary":"Plans, invoices, entitlements","description":"Billing/Usage: Plans, invoices, entitlements. Priority: Phase2.","tags":["Billing/Usage"],"security":[{"HoratoApiKey":[]}],"responses":{"200":{"description":"Successful response"},"201":{"description":"Created"},"202":{"description":"Accepted"},"204":{"description":"No content"},"400":{"description":"Bad request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}}},"401":{"description":"Invalid or missing API key"},"409":{"description":"Conflict or stale etag"},"429":{"description":"Rate limit exceeded"}},"x-horato-priority":"Phase2"}},"/v1/billing/invoices":{"get":{"summary":"Plans, invoices, entitlements","description":"Billing/Usage: Plans, invoices, entitlements. Priority: Phase2.","tags":["Billing/Usage"],"security":[{"HoratoApiKey":[]}],"responses":{"200":{"description":"Successful response"},"201":{"description":"Created"},"202":{"description":"Accepted"},"204":{"description":"No content"},"400":{"description":"Bad request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}}},"401":{"description":"Invalid or missing API key"},"409":{"description":"Conflict or stale etag"},"429":{"description":"Rate limit exceeded"}},"x-horato-priority":"Phase2"}},"/v1/meta/providers/{provider}":{"get":{"summary":"Provider adapter registry","description":"Migration/Provider adapters: Provider adapter registry. Priority: MVP.","tags":["Migration/Provider adapters"],"security":[{"HoratoApiKey":[]}],"responses":{"200":{"description":"Successful response"},"201":{"description":"Created"},"202":{"description":"Accepted"},"204":{"description":"No content"},"400":{"description":"Bad request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}}},"401":{"description":"Invalid or missing API key"},"409":{"description":"Conflict or stale etag"},"429":{"description":"Rate limit exceeded"}},"x-horato-priority":"MVP"}},"/v1/migrations/import-jobs":{"post":{"summary":"Import/export helpers","description":"Migration/Provider adapters: Import/export helpers. Priority: Phase2.","tags":["Migration/Provider adapters"],"security":[{"HoratoApiKey":[]}],"responses":{"200":{"description":"Successful response"},"201":{"description":"Created"},"202":{"description":"Accepted"},"204":{"description":"No content"},"400":{"description":"Bad request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}}},"401":{"description":"Invalid or missing API key"},"409":{"description":"Conflict or stale etag"},"429":{"description":"Rate limit exceeded"}},"x-horato-priority":"Phase2"}},"/v1/migrations/import-jobs/{jobId}":{"get":{"summary":"Import/export helpers","description":"Migration/Provider adapters: Import/export helpers. Priority: Phase2.","tags":["Migration/Provider adapters"],"security":[{"HoratoApiKey":[]}],"responses":{"200":{"description":"Successful response"},"201":{"description":"Created"},"202":{"description":"Accepted"},"204":{"description":"No content"},"400":{"description":"Bad request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}}},"401":{"description":"Invalid or missing API key"},"409":{"description":"Conflict or stale etag"},"429":{"description":"Rate limit exceeded"}},"x-horato-priority":"Phase2"}},"/v1/migrations/export-jobs":{"post":{"summary":"Import/export helpers","description":"Migration/Provider adapters: Import/export helpers. Priority: Phase2.","tags":["Migration/Provider adapters"],"security":[{"HoratoApiKey":[]}],"responses":{"200":{"description":"Successful response"},"201":{"description":"Created"},"202":{"description":"Accepted"},"204":{"description":"No content"},"400":{"description":"Bad request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}}},"401":{"description":"Invalid or missing API key"},"409":{"description":"Conflict or stale etag"},"429":{"description":"Rate limit exceeded"}},"x-horato-priority":"Phase2"}},"/v1/sync/status/{connectionId}":{"get":{"summary":"Durable cursors and checkpoints","description":"Offline/Sync: Durable cursors and checkpoints. Priority: MVP.","tags":["Offline/Sync"],"security":[{"HoratoApiKey":[]}],"responses":{"200":{"description":"Successful response"},"201":{"description":"Created"},"202":{"description":"Accepted"},"204":{"description":"No content"},"400":{"description":"Bad request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}}},"401":{"description":"Invalid or missing API key"},"409":{"description":"Conflict or stale etag"},"429":{"description":"Rate limit exceeded"}},"x-horato-priority":"MVP"}},"/v1/sync/reset/{connectionId}":{"post":{"summary":"Durable cursors and checkpoints","description":"Offline/Sync: Durable cursors and checkpoints. Priority: MVP.","tags":["Offline/Sync"],"security":[{"HoratoApiKey":[]}],"responses":{"200":{"description":"Successful response"},"201":{"description":"Created"},"202":{"description":"Accepted"},"204":{"description":"No content"},"400":{"description":"Bad request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}}},"401":{"description":"Invalid or missing API key"},"409":{"description":"Conflict or stale etag"},"429":{"description":"Rate limit exceeded"}},"x-horato-priority":"MVP"}},"/v1/sync/repair/{connectionId}":{"post":{"summary":"Repair and reconciliation jobs","description":"Offline/Sync: Repair and reconciliation jobs. Priority: MVP.","tags":["Offline/Sync"],"security":[{"HoratoApiKey":[]}],"responses":{"200":{"description":"Successful response"},"201":{"description":"Created"},"202":{"description":"Accepted"},"204":{"description":"No content"},"400":{"description":"Bad request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}}},"401":{"description":"Invalid or missing API key"},"409":{"description":"Conflict or stale etag"},"429":{"description":"Rate limit exceeded"}},"x-horato-priority":"MVP"}},"/v1/meta/postman":{"get":{"summary":"OpenAPI, examples, quickstarts","description":"Developer Experience: OpenAPI, examples, quickstarts. Priority: MVP.","tags":["Developer Experience"],"security":[{"HoratoApiKey":[]}],"responses":{"200":{"description":"Successful response"},"201":{"description":"Created"},"202":{"description":"Accepted"},"204":{"description":"No content"},"400":{"description":"Bad request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}}},"401":{"description":"Invalid or missing API key"},"409":{"description":"Conflict or stale etag"},"429":{"description":"Rate limit exceeded"}},"x-horato-priority":"MVP"}},"/v1/dev/webhook-inspector":{"get":{"summary":"Sandbox, mocks, webhook inspector","description":"Developer Experience: Sandbox, mocks, webhook inspector. Priority: MVP.","tags":["Developer Experience"],"security":[{"HoratoApiKey":[]}],"responses":{"200":{"description":"Successful response"},"201":{"description":"Created"},"202":{"description":"Accepted"},"204":{"description":"No content"},"400":{"description":"Bad request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}}},"401":{"description":"Invalid or missing API key"},"409":{"description":"Conflict or stale etag"},"429":{"description":"Rate limit exceeded"}},"x-horato-priority":"MVP"}},"/v1/meta/changelog":{"get":{"summary":"Changelog and migration guides","description":"Developer Experience: Changelog and migration guides. Priority: MVP.","tags":["Developer Experience"],"security":[{"HoratoApiKey":[]}],"responses":{"200":{"description":"Successful response"},"201":{"description":"Created"},"202":{"description":"Accepted"},"204":{"description":"No content"},"400":{"description":"Bad request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}}},"401":{"description":"Invalid or missing API key"},"409":{"description":"Conflict or stale etag"},"429":{"description":"Rate limit exceeded"}},"x-horato-priority":"MVP"}}},"components":{"securitySchemes":{"HoratoApiKey":{"type":"http","scheme":"bearer","bearerFormat":"Horato API key"}},"schemas":{"ErrorEnvelope":{"type":"object","required":["error"],"properties":{"error":{"type":"object","required":["code","message"],"properties":{"code":{"type":"string"},"message":{"type":"string"},"request_id":{"type":"string"}}}}}}}}