{"openapi":"3.1.0","info":{"title":"Nutrali Public API","version":"1.0.0","summary":"Consultório online para nutricionistas: página profissional, agendamento, planos alimentares e acompanhamento.","description":"Página profissional, agenda, leads, plano alimentar e CRM do consultório num só lugar. Implementação na hora e suporte humanizado. Menos WhatsApp, mais consulta marcada.\n\nSuperfície **pública** (sem login). Painel e `/api/org/*` exigem sessão.\n\n## Versionamento\n- Canônico: `/api/v1/public/*` + header opcional `API-Version: 1`\n- Legado: `/api/public/*` (deprecated, mesmo contrato)\n- Breaking → `/api/v2` com ≥90 dias + headers Deprecation/Sunset\n\n## Rate limits\nHeaders `RateLimit-*`, `X-RateLimit-*` e `Retry-After` (429).\n\n## Paginação\nListas usam cursor-based: `items` + `nextCursor` (null = fim).\n\nDocs: https://nutrali.co/docs · CLI: https://www.npmjs.com/package/@nutrali/cli\nCatalog: https://nutrali.co/.well-known/api-catalog","contact":{"name":"Nutrali","email":"contato@nutrali.com.br","url":"https://nutrali.co"},"license":{"name":"Proprietary","url":"https://nutrali.co/privacidade"}},"servers":[{"url":"https://nutrali.co","description":"Produção (paths /api/v1/…)"},{"url":"http://localhost:3000","description":"Desenvolvimento local"}],"tags":[{"name":"public","description":"API pública sem autenticação (rate-limited)"},{"name":"meta","description":"Descoberta para agentes e SEO"}],"paths":{"/api/v1/public/saas-plans":{"get":{"tags":["public"],"summary":"Listar planos SaaS públicos","description":"Retorna planos comerciais visíveis na landing. Paginação cursor-based (`items` + `nextCursor`).","operationId":"listSaasPlans","parameters":[{"name":"cursor","in":"query","required":false,"description":"Cursor opaco da página seguinte (paginação cursor-based). Omitir na primeira página.","schema":{"type":"string","maxLength":256}},{"name":"limit","in":"query","required":false,"description":"Tamanho da página (padrão 50, máx. 100).","schema":{"type":"integer","minimum":1,"maximum":100,"default":50}},{"name":"API-Version","in":"header","required":false,"description":"Versão da API. Valor atual: 1. Preferir path /api/v1/…","schema":{"type":"string","enum":["1"],"default":"1"}}],"responses":{"200":{"description":"Lista paginada de planos","headers":{"API-Version":{"schema":{"type":"string","example":"1"},"description":"Versão da API"},"RateLimit-Limit":{"schema":{"type":"integer"},"description":"Limite da janela"},"RateLimit-Remaining":{"schema":{"type":"integer"},"description":"Requisições restantes"},"RateLimit-Reset":{"schema":{"type":"integer"},"description":"Segundos até reset"},"X-RateLimit-Limit":{"schema":{"type":"integer"}},"X-RateLimit-Remaining":{"schema":{"type":"integer"}},"X-RateLimit-Reset":{"schema":{"type":"integer"}},"Retry-After":{"schema":{"type":"integer"},"description":"Presente em 429"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SaasPlanList"}}}},"400":{"description":"Pedido inválido","headers":{"API-Version":{"schema":{"type":"string","example":"1"},"description":"Versão da API"},"RateLimit-Limit":{"schema":{"type":"integer"},"description":"Limite da janela"},"RateLimit-Remaining":{"schema":{"type":"integer"},"description":"Requisições restantes"},"RateLimit-Reset":{"schema":{"type":"integer"},"description":"Segundos até reset"},"X-RateLimit-Limit":{"schema":{"type":"integer"}},"X-RateLimit-Remaining":{"schema":{"type":"integer"}},"X-RateLimit-Reset":{"schema":{"type":"integer"}},"Retry-After":{"schema":{"type":"integer"},"description":"Presente em 429"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"404":{"description":"Não encontrado","headers":{"API-Version":{"schema":{"type":"string","example":"1"},"description":"Versão da API"},"RateLimit-Limit":{"schema":{"type":"integer"},"description":"Limite da janela"},"RateLimit-Remaining":{"schema":{"type":"integer"},"description":"Requisições restantes"},"RateLimit-Reset":{"schema":{"type":"integer"},"description":"Segundos até reset"},"X-RateLimit-Limit":{"schema":{"type":"integer"}},"X-RateLimit-Remaining":{"schema":{"type":"integer"}},"X-RateLimit-Reset":{"schema":{"type":"integer"}},"Retry-After":{"schema":{"type":"integer"},"description":"Presente em 429"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"429":{"description":"Rate limit","headers":{"API-Version":{"schema":{"type":"string","example":"1"},"description":"Versão da API"},"RateLimit-Limit":{"schema":{"type":"integer"},"description":"Limite da janela"},"RateLimit-Remaining":{"schema":{"type":"integer"},"description":"Requisições restantes"},"RateLimit-Reset":{"schema":{"type":"integer"},"description":"Segundos até reset"},"X-RateLimit-Limit":{"schema":{"type":"integer"}},"X-RateLimit-Remaining":{"schema":{"type":"integer"}},"X-RateLimit-Reset":{"schema":{"type":"integer"}},"Retry-After":{"schema":{"type":"integer"},"description":"Presente em 429"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"503":{"description":"Serviço indisponível","headers":{"API-Version":{"schema":{"type":"string","example":"1"},"description":"Versão da API"},"RateLimit-Limit":{"schema":{"type":"integer"},"description":"Limite da janela"},"RateLimit-Remaining":{"schema":{"type":"integer"},"description":"Requisições restantes"},"RateLimit-Reset":{"schema":{"type":"integer"},"description":"Segundos até reset"},"X-RateLimit-Limit":{"schema":{"type":"integer"}},"X-RateLimit-Remaining":{"schema":{"type":"integer"}},"X-RateLimit-Reset":{"schema":{"type":"integer"}},"Retry-After":{"schema":{"type":"integer"},"description":"Presente em 429"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}}},"/api/public/saas-plans":{"get":{"tags":["public"],"summary":"Listar planos SaaS públicos","description":"Retorna planos comerciais visíveis na landing. Paginação cursor-based (`items` + `nextCursor`).\n\n**Deprecated path.** Use `/api/v1/public/saas-plans` (mesmo contrato).","operationId":"listSaasPlansLegacy","parameters":[{"name":"cursor","in":"query","required":false,"description":"Cursor opaco da página seguinte (paginação cursor-based). Omitir na primeira página.","schema":{"type":"string","maxLength":256}},{"name":"limit","in":"query","required":false,"description":"Tamanho da página (padrão 50, máx. 100).","schema":{"type":"integer","minimum":1,"maximum":100,"default":50}},{"name":"API-Version","in":"header","required":false,"description":"Versão da API. Valor atual: 1. Preferir path /api/v1/…","schema":{"type":"string","enum":["1"],"default":"1"}}],"responses":{"200":{"description":"Lista paginada de planos","headers":{"API-Version":{"schema":{"type":"string","example":"1"},"description":"Versão da API"},"RateLimit-Limit":{"schema":{"type":"integer"},"description":"Limite da janela"},"RateLimit-Remaining":{"schema":{"type":"integer"},"description":"Requisições restantes"},"RateLimit-Reset":{"schema":{"type":"integer"},"description":"Segundos até reset"},"X-RateLimit-Limit":{"schema":{"type":"integer"}},"X-RateLimit-Remaining":{"schema":{"type":"integer"}},"X-RateLimit-Reset":{"schema":{"type":"integer"}},"Retry-After":{"schema":{"type":"integer"},"description":"Presente em 429"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SaasPlanList"}}}},"400":{"description":"Pedido inválido","headers":{"API-Version":{"schema":{"type":"string","example":"1"},"description":"Versão da API"},"RateLimit-Limit":{"schema":{"type":"integer"},"description":"Limite da janela"},"RateLimit-Remaining":{"schema":{"type":"integer"},"description":"Requisições restantes"},"RateLimit-Reset":{"schema":{"type":"integer"},"description":"Segundos até reset"},"X-RateLimit-Limit":{"schema":{"type":"integer"}},"X-RateLimit-Remaining":{"schema":{"type":"integer"}},"X-RateLimit-Reset":{"schema":{"type":"integer"}},"Retry-After":{"schema":{"type":"integer"},"description":"Presente em 429"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"404":{"description":"Não encontrado","headers":{"API-Version":{"schema":{"type":"string","example":"1"},"description":"Versão da API"},"RateLimit-Limit":{"schema":{"type":"integer"},"description":"Limite da janela"},"RateLimit-Remaining":{"schema":{"type":"integer"},"description":"Requisições restantes"},"RateLimit-Reset":{"schema":{"type":"integer"},"description":"Segundos até reset"},"X-RateLimit-Limit":{"schema":{"type":"integer"}},"X-RateLimit-Remaining":{"schema":{"type":"integer"}},"X-RateLimit-Reset":{"schema":{"type":"integer"}},"Retry-After":{"schema":{"type":"integer"},"description":"Presente em 429"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"429":{"description":"Rate limit","headers":{"API-Version":{"schema":{"type":"string","example":"1"},"description":"Versão da API"},"RateLimit-Limit":{"schema":{"type":"integer"},"description":"Limite da janela"},"RateLimit-Remaining":{"schema":{"type":"integer"},"description":"Requisições restantes"},"RateLimit-Reset":{"schema":{"type":"integer"},"description":"Segundos até reset"},"X-RateLimit-Limit":{"schema":{"type":"integer"}},"X-RateLimit-Remaining":{"schema":{"type":"integer"}},"X-RateLimit-Reset":{"schema":{"type":"integer"}},"Retry-After":{"schema":{"type":"integer"},"description":"Presente em 429"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"503":{"description":"Serviço indisponível","headers":{"API-Version":{"schema":{"type":"string","example":"1"},"description":"Versão da API"},"RateLimit-Limit":{"schema":{"type":"integer"},"description":"Limite da janela"},"RateLimit-Remaining":{"schema":{"type":"integer"},"description":"Requisições restantes"},"RateLimit-Reset":{"schema":{"type":"integer"},"description":"Segundos até reset"},"X-RateLimit-Limit":{"schema":{"type":"integer"}},"X-RateLimit-Remaining":{"schema":{"type":"integer"}},"X-RateLimit-Reset":{"schema":{"type":"integer"}},"Retry-After":{"schema":{"type":"integer"},"description":"Presente em 429"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}},"deprecated":true}},"/api/v1/public/u/{slug}":{"get":{"tags":["public"],"summary":"Obter página pública publicada","description":"Conteúdo publicado da landing. 404 se o slug não existir ou não estiver publicado.","operationId":"getPublicPage","parameters":[{"name":"slug","in":"path","required":true,"description":"Slug público da organização (página do nutricionista).","schema":{"type":"string","minLength":2,"maxLength":64,"example":"clinica-exemplo"}},{"name":"API-Version","in":"header","required":false,"description":"Versão da API. Valor atual: 1. Preferir path /api/v1/…","schema":{"type":"string","enum":["1"],"default":"1"}}],"responses":{"200":{"description":"Página publicada","headers":{"API-Version":{"schema":{"type":"string","example":"1"},"description":"Versão da API"},"RateLimit-Limit":{"schema":{"type":"integer"},"description":"Limite da janela"},"RateLimit-Remaining":{"schema":{"type":"integer"},"description":"Requisições restantes"},"RateLimit-Reset":{"schema":{"type":"integer"},"description":"Segundos até reset"},"X-RateLimit-Limit":{"schema":{"type":"integer"}},"X-RateLimit-Remaining":{"schema":{"type":"integer"}},"X-RateLimit-Reset":{"schema":{"type":"integer"}},"Retry-After":{"schema":{"type":"integer"},"description":"Presente em 429"}},"content":{"application/json":{"schema":{"type":"object","required":["page","apiVersion"],"additionalProperties":false,"properties":{"page":{"$ref":"#/components/schemas/PublicPage"},"apiVersion":{"type":"string","enum":["1"]}}}}}},"400":{"description":"Pedido inválido","headers":{"API-Version":{"schema":{"type":"string","example":"1"},"description":"Versão da API"},"RateLimit-Limit":{"schema":{"type":"integer"},"description":"Limite da janela"},"RateLimit-Remaining":{"schema":{"type":"integer"},"description":"Requisições restantes"},"RateLimit-Reset":{"schema":{"type":"integer"},"description":"Segundos até reset"},"X-RateLimit-Limit":{"schema":{"type":"integer"}},"X-RateLimit-Remaining":{"schema":{"type":"integer"}},"X-RateLimit-Reset":{"schema":{"type":"integer"}},"Retry-After":{"schema":{"type":"integer"},"description":"Presente em 429"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"404":{"description":"Não encontrado","headers":{"API-Version":{"schema":{"type":"string","example":"1"},"description":"Versão da API"},"RateLimit-Limit":{"schema":{"type":"integer"},"description":"Limite da janela"},"RateLimit-Remaining":{"schema":{"type":"integer"},"description":"Requisições restantes"},"RateLimit-Reset":{"schema":{"type":"integer"},"description":"Segundos até reset"},"X-RateLimit-Limit":{"schema":{"type":"integer"}},"X-RateLimit-Remaining":{"schema":{"type":"integer"}},"X-RateLimit-Reset":{"schema":{"type":"integer"}},"Retry-After":{"schema":{"type":"integer"},"description":"Presente em 429"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"429":{"description":"Rate limit","headers":{"API-Version":{"schema":{"type":"string","example":"1"},"description":"Versão da API"},"RateLimit-Limit":{"schema":{"type":"integer"},"description":"Limite da janela"},"RateLimit-Remaining":{"schema":{"type":"integer"},"description":"Requisições restantes"},"RateLimit-Reset":{"schema":{"type":"integer"},"description":"Segundos até reset"},"X-RateLimit-Limit":{"schema":{"type":"integer"}},"X-RateLimit-Remaining":{"schema":{"type":"integer"}},"X-RateLimit-Reset":{"schema":{"type":"integer"}},"Retry-After":{"schema":{"type":"integer"},"description":"Presente em 429"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"503":{"description":"Serviço indisponível","headers":{"API-Version":{"schema":{"type":"string","example":"1"},"description":"Versão da API"},"RateLimit-Limit":{"schema":{"type":"integer"},"description":"Limite da janela"},"RateLimit-Remaining":{"schema":{"type":"integer"},"description":"Requisições restantes"},"RateLimit-Reset":{"schema":{"type":"integer"},"description":"Segundos até reset"},"X-RateLimit-Limit":{"schema":{"type":"integer"}},"X-RateLimit-Remaining":{"schema":{"type":"integer"}},"X-RateLimit-Reset":{"schema":{"type":"integer"}},"Retry-After":{"schema":{"type":"integer"},"description":"Presente em 429"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}}},"/api/public/u/{slug}":{"get":{"tags":["public"],"summary":"Obter página pública publicada","description":"Conteúdo publicado da landing. 404 se o slug não existir ou não estiver publicado.\n\n**Deprecated path.** Use `/api/v1/public/u/{slug}` (mesmo contrato).","operationId":"getPublicPageLegacy","parameters":[{"name":"slug","in":"path","required":true,"description":"Slug público da organização (página do nutricionista).","schema":{"type":"string","minLength":2,"maxLength":64,"example":"clinica-exemplo"}},{"name":"API-Version","in":"header","required":false,"description":"Versão da API. Valor atual: 1. Preferir path /api/v1/…","schema":{"type":"string","enum":["1"],"default":"1"}}],"responses":{"200":{"description":"Página publicada","headers":{"API-Version":{"schema":{"type":"string","example":"1"},"description":"Versão da API"},"RateLimit-Limit":{"schema":{"type":"integer"},"description":"Limite da janela"},"RateLimit-Remaining":{"schema":{"type":"integer"},"description":"Requisições restantes"},"RateLimit-Reset":{"schema":{"type":"integer"},"description":"Segundos até reset"},"X-RateLimit-Limit":{"schema":{"type":"integer"}},"X-RateLimit-Remaining":{"schema":{"type":"integer"}},"X-RateLimit-Reset":{"schema":{"type":"integer"}},"Retry-After":{"schema":{"type":"integer"},"description":"Presente em 429"}},"content":{"application/json":{"schema":{"type":"object","required":["page","apiVersion"],"additionalProperties":false,"properties":{"page":{"$ref":"#/components/schemas/PublicPage"},"apiVersion":{"type":"string","enum":["1"]}}}}}},"400":{"description":"Pedido inválido","headers":{"API-Version":{"schema":{"type":"string","example":"1"},"description":"Versão da API"},"RateLimit-Limit":{"schema":{"type":"integer"},"description":"Limite da janela"},"RateLimit-Remaining":{"schema":{"type":"integer"},"description":"Requisições restantes"},"RateLimit-Reset":{"schema":{"type":"integer"},"description":"Segundos até reset"},"X-RateLimit-Limit":{"schema":{"type":"integer"}},"X-RateLimit-Remaining":{"schema":{"type":"integer"}},"X-RateLimit-Reset":{"schema":{"type":"integer"}},"Retry-After":{"schema":{"type":"integer"},"description":"Presente em 429"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"404":{"description":"Não encontrado","headers":{"API-Version":{"schema":{"type":"string","example":"1"},"description":"Versão da API"},"RateLimit-Limit":{"schema":{"type":"integer"},"description":"Limite da janela"},"RateLimit-Remaining":{"schema":{"type":"integer"},"description":"Requisições restantes"},"RateLimit-Reset":{"schema":{"type":"integer"},"description":"Segundos até reset"},"X-RateLimit-Limit":{"schema":{"type":"integer"}},"X-RateLimit-Remaining":{"schema":{"type":"integer"}},"X-RateLimit-Reset":{"schema":{"type":"integer"}},"Retry-After":{"schema":{"type":"integer"},"description":"Presente em 429"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"429":{"description":"Rate limit","headers":{"API-Version":{"schema":{"type":"string","example":"1"},"description":"Versão da API"},"RateLimit-Limit":{"schema":{"type":"integer"},"description":"Limite da janela"},"RateLimit-Remaining":{"schema":{"type":"integer"},"description":"Requisições restantes"},"RateLimit-Reset":{"schema":{"type":"integer"},"description":"Segundos até reset"},"X-RateLimit-Limit":{"schema":{"type":"integer"}},"X-RateLimit-Remaining":{"schema":{"type":"integer"}},"X-RateLimit-Reset":{"schema":{"type":"integer"}},"Retry-After":{"schema":{"type":"integer"},"description":"Presente em 429"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"503":{"description":"Serviço indisponível","headers":{"API-Version":{"schema":{"type":"string","example":"1"},"description":"Versão da API"},"RateLimit-Limit":{"schema":{"type":"integer"},"description":"Limite da janela"},"RateLimit-Remaining":{"schema":{"type":"integer"},"description":"Requisições restantes"},"RateLimit-Reset":{"schema":{"type":"integer"},"description":"Segundos até reset"},"X-RateLimit-Limit":{"schema":{"type":"integer"}},"X-RateLimit-Remaining":{"schema":{"type":"integer"}},"X-RateLimit-Reset":{"schema":{"type":"integer"}},"Retry-After":{"schema":{"type":"integer"},"description":"Presente em 429"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}},"deprecated":true}},"/api/v1/public/u/{slug}/leads":{"post":{"tags":["public"],"summary":"Capturar lead da landing","description":"Registra interesse comercial. Rate-limited. Não cria prontuário.","operationId":"createPublicLead","parameters":[{"name":"slug","in":"path","required":true,"description":"Slug público da organização (página do nutricionista).","schema":{"type":"string","minLength":2,"maxLength":64,"example":"clinica-exemplo"}},{"name":"API-Version","in":"header","required":false,"description":"Versão da API. Valor atual: 1. Preferir path /api/v1/…","schema":{"type":"string","enum":["1"],"default":"1"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/LeadInput"}}}},"responses":{"201":{"description":"Lead aceito","headers":{"API-Version":{"schema":{"type":"string","example":"1"},"description":"Versão da API"},"RateLimit-Limit":{"schema":{"type":"integer"},"description":"Limite da janela"},"RateLimit-Remaining":{"schema":{"type":"integer"},"description":"Requisições restantes"},"RateLimit-Reset":{"schema":{"type":"integer"},"description":"Segundos até reset"},"X-RateLimit-Limit":{"schema":{"type":"integer"}},"X-RateLimit-Remaining":{"schema":{"type":"integer"}},"X-RateLimit-Reset":{"schema":{"type":"integer"}},"Retry-After":{"schema":{"type":"integer"},"description":"Presente em 429"}},"content":{"application/json":{"schema":{"type":"object","required":["ok","id","apiVersion"],"additionalProperties":false,"properties":{"ok":{"type":"boolean"},"id":{"type":"string"},"apiVersion":{"type":"string","enum":["1"]}}}}}},"400":{"description":"Pedido inválido","headers":{"API-Version":{"schema":{"type":"string","example":"1"},"description":"Versão da API"},"RateLimit-Limit":{"schema":{"type":"integer"},"description":"Limite da janela"},"RateLimit-Remaining":{"schema":{"type":"integer"},"description":"Requisições restantes"},"RateLimit-Reset":{"schema":{"type":"integer"},"description":"Segundos até reset"},"X-RateLimit-Limit":{"schema":{"type":"integer"}},"X-RateLimit-Remaining":{"schema":{"type":"integer"}},"X-RateLimit-Reset":{"schema":{"type":"integer"}},"Retry-After":{"schema":{"type":"integer"},"description":"Presente em 429"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"404":{"description":"Não encontrado","headers":{"API-Version":{"schema":{"type":"string","example":"1"},"description":"Versão da API"},"RateLimit-Limit":{"schema":{"type":"integer"},"description":"Limite da janela"},"RateLimit-Remaining":{"schema":{"type":"integer"},"description":"Requisições restantes"},"RateLimit-Reset":{"schema":{"type":"integer"},"description":"Segundos até reset"},"X-RateLimit-Limit":{"schema":{"type":"integer"}},"X-RateLimit-Remaining":{"schema":{"type":"integer"}},"X-RateLimit-Reset":{"schema":{"type":"integer"}},"Retry-After":{"schema":{"type":"integer"},"description":"Presente em 429"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"429":{"description":"Rate limit","headers":{"API-Version":{"schema":{"type":"string","example":"1"},"description":"Versão da API"},"RateLimit-Limit":{"schema":{"type":"integer"},"description":"Limite da janela"},"RateLimit-Remaining":{"schema":{"type":"integer"},"description":"Requisições restantes"},"RateLimit-Reset":{"schema":{"type":"integer"},"description":"Segundos até reset"},"X-RateLimit-Limit":{"schema":{"type":"integer"}},"X-RateLimit-Remaining":{"schema":{"type":"integer"}},"X-RateLimit-Reset":{"schema":{"type":"integer"}},"Retry-After":{"schema":{"type":"integer"},"description":"Presente em 429"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"503":{"description":"Serviço indisponível","headers":{"API-Version":{"schema":{"type":"string","example":"1"},"description":"Versão da API"},"RateLimit-Limit":{"schema":{"type":"integer"},"description":"Limite da janela"},"RateLimit-Remaining":{"schema":{"type":"integer"},"description":"Requisições restantes"},"RateLimit-Reset":{"schema":{"type":"integer"},"description":"Segundos até reset"},"X-RateLimit-Limit":{"schema":{"type":"integer"}},"X-RateLimit-Remaining":{"schema":{"type":"integer"}},"X-RateLimit-Reset":{"schema":{"type":"integer"}},"Retry-After":{"schema":{"type":"integer"},"description":"Presente em 429"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}}},"/api/public/u/{slug}/leads":{"post":{"tags":["public"],"summary":"Capturar lead da landing","description":"Registra interesse comercial. Rate-limited. Não cria prontuário.\n\n**Deprecated path.** Use `/api/v1/public/u/{slug}/leads` (mesmo contrato).","operationId":"createPublicLeadLegacy","parameters":[{"name":"slug","in":"path","required":true,"description":"Slug público da organização (página do nutricionista).","schema":{"type":"string","minLength":2,"maxLength":64,"example":"clinica-exemplo"}},{"name":"API-Version","in":"header","required":false,"description":"Versão da API. Valor atual: 1. Preferir path /api/v1/…","schema":{"type":"string","enum":["1"],"default":"1"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/LeadInput"}}}},"responses":{"201":{"description":"Lead aceito","headers":{"API-Version":{"schema":{"type":"string","example":"1"},"description":"Versão da API"},"RateLimit-Limit":{"schema":{"type":"integer"},"description":"Limite da janela"},"RateLimit-Remaining":{"schema":{"type":"integer"},"description":"Requisições restantes"},"RateLimit-Reset":{"schema":{"type":"integer"},"description":"Segundos até reset"},"X-RateLimit-Limit":{"schema":{"type":"integer"}},"X-RateLimit-Remaining":{"schema":{"type":"integer"}},"X-RateLimit-Reset":{"schema":{"type":"integer"}},"Retry-After":{"schema":{"type":"integer"},"description":"Presente em 429"}},"content":{"application/json":{"schema":{"type":"object","required":["ok","id","apiVersion"],"additionalProperties":false,"properties":{"ok":{"type":"boolean"},"id":{"type":"string"},"apiVersion":{"type":"string","enum":["1"]}}}}}},"400":{"description":"Pedido inválido","headers":{"API-Version":{"schema":{"type":"string","example":"1"},"description":"Versão da API"},"RateLimit-Limit":{"schema":{"type":"integer"},"description":"Limite da janela"},"RateLimit-Remaining":{"schema":{"type":"integer"},"description":"Requisições restantes"},"RateLimit-Reset":{"schema":{"type":"integer"},"description":"Segundos até reset"},"X-RateLimit-Limit":{"schema":{"type":"integer"}},"X-RateLimit-Remaining":{"schema":{"type":"integer"}},"X-RateLimit-Reset":{"schema":{"type":"integer"}},"Retry-After":{"schema":{"type":"integer"},"description":"Presente em 429"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"404":{"description":"Não encontrado","headers":{"API-Version":{"schema":{"type":"string","example":"1"},"description":"Versão da API"},"RateLimit-Limit":{"schema":{"type":"integer"},"description":"Limite da janela"},"RateLimit-Remaining":{"schema":{"type":"integer"},"description":"Requisições restantes"},"RateLimit-Reset":{"schema":{"type":"integer"},"description":"Segundos até reset"},"X-RateLimit-Limit":{"schema":{"type":"integer"}},"X-RateLimit-Remaining":{"schema":{"type":"integer"}},"X-RateLimit-Reset":{"schema":{"type":"integer"}},"Retry-After":{"schema":{"type":"integer"},"description":"Presente em 429"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"429":{"description":"Rate limit","headers":{"API-Version":{"schema":{"type":"string","example":"1"},"description":"Versão da API"},"RateLimit-Limit":{"schema":{"type":"integer"},"description":"Limite da janela"},"RateLimit-Remaining":{"schema":{"type":"integer"},"description":"Requisições restantes"},"RateLimit-Reset":{"schema":{"type":"integer"},"description":"Segundos até reset"},"X-RateLimit-Limit":{"schema":{"type":"integer"}},"X-RateLimit-Remaining":{"schema":{"type":"integer"}},"X-RateLimit-Reset":{"schema":{"type":"integer"}},"Retry-After":{"schema":{"type":"integer"},"description":"Presente em 429"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"503":{"description":"Serviço indisponível","headers":{"API-Version":{"schema":{"type":"string","example":"1"},"description":"Versão da API"},"RateLimit-Limit":{"schema":{"type":"integer"},"description":"Limite da janela"},"RateLimit-Remaining":{"schema":{"type":"integer"},"description":"Requisições restantes"},"RateLimit-Reset":{"schema":{"type":"integer"},"description":"Segundos até reset"},"X-RateLimit-Limit":{"schema":{"type":"integer"}},"X-RateLimit-Remaining":{"schema":{"type":"integer"}},"X-RateLimit-Reset":{"schema":{"type":"integer"}},"Retry-After":{"schema":{"type":"integer"},"description":"Presente em 429"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}},"deprecated":true}},"/api/v1/public/u/{slug}/slots":{"get":{"tags":["public"],"summary":"Listar horários disponíveis","description":"Locais e slots para agendamento público (plano Pro+).","operationId":"listPublicSlots","parameters":[{"name":"slug","in":"path","required":true,"description":"Slug público da organização (página do nutricionista).","schema":{"type":"string","minLength":2,"maxLength":64,"example":"clinica-exemplo"}},{"name":"kind","in":"query","required":false,"schema":{"type":"string","enum":["in_person","online"]}},{"name":"locationId","in":"query","required":false,"schema":{"type":"string"}},{"name":"cursor","in":"query","required":false,"description":"Cursor opaco da página seguinte (paginação cursor-based). Omitir na primeira página.","schema":{"type":"string","maxLength":256}},{"name":"limit","in":"query","required":false,"description":"Tamanho da página (padrão 50, máx. 100).","schema":{"type":"integer","minimum":1,"maximum":100,"default":50}},{"name":"API-Version","in":"header","required":false,"description":"Versão da API. Valor atual: 1. Preferir path /api/v1/…","schema":{"type":"string","enum":["1"],"default":"1"}}],"responses":{"200":{"description":"Slots","headers":{"API-Version":{"schema":{"type":"string","example":"1"},"description":"Versão da API"},"RateLimit-Limit":{"schema":{"type":"integer"},"description":"Limite da janela"},"RateLimit-Remaining":{"schema":{"type":"integer"},"description":"Requisições restantes"},"RateLimit-Reset":{"schema":{"type":"integer"},"description":"Segundos até reset"},"X-RateLimit-Limit":{"schema":{"type":"integer"}},"X-RateLimit-Remaining":{"schema":{"type":"integer"}},"X-RateLimit-Reset":{"schema":{"type":"integer"}},"Retry-After":{"schema":{"type":"integer"},"description":"Presente em 429"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SlotsResponse"}}}},"400":{"description":"Pedido inválido","headers":{"API-Version":{"schema":{"type":"string","example":"1"},"description":"Versão da API"},"RateLimit-Limit":{"schema":{"type":"integer"},"description":"Limite da janela"},"RateLimit-Remaining":{"schema":{"type":"integer"},"description":"Requisições restantes"},"RateLimit-Reset":{"schema":{"type":"integer"},"description":"Segundos até reset"},"X-RateLimit-Limit":{"schema":{"type":"integer"}},"X-RateLimit-Remaining":{"schema":{"type":"integer"}},"X-RateLimit-Reset":{"schema":{"type":"integer"}},"Retry-After":{"schema":{"type":"integer"},"description":"Presente em 429"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"404":{"description":"Não encontrado","headers":{"API-Version":{"schema":{"type":"string","example":"1"},"description":"Versão da API"},"RateLimit-Limit":{"schema":{"type":"integer"},"description":"Limite da janela"},"RateLimit-Remaining":{"schema":{"type":"integer"},"description":"Requisições restantes"},"RateLimit-Reset":{"schema":{"type":"integer"},"description":"Segundos até reset"},"X-RateLimit-Limit":{"schema":{"type":"integer"}},"X-RateLimit-Remaining":{"schema":{"type":"integer"}},"X-RateLimit-Reset":{"schema":{"type":"integer"}},"Retry-After":{"schema":{"type":"integer"},"description":"Presente em 429"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"429":{"description":"Rate limit","headers":{"API-Version":{"schema":{"type":"string","example":"1"},"description":"Versão da API"},"RateLimit-Limit":{"schema":{"type":"integer"},"description":"Limite da janela"},"RateLimit-Remaining":{"schema":{"type":"integer"},"description":"Requisições restantes"},"RateLimit-Reset":{"schema":{"type":"integer"},"description":"Segundos até reset"},"X-RateLimit-Limit":{"schema":{"type":"integer"}},"X-RateLimit-Remaining":{"schema":{"type":"integer"}},"X-RateLimit-Reset":{"schema":{"type":"integer"}},"Retry-After":{"schema":{"type":"integer"},"description":"Presente em 429"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"503":{"description":"Serviço indisponível","headers":{"API-Version":{"schema":{"type":"string","example":"1"},"description":"Versão da API"},"RateLimit-Limit":{"schema":{"type":"integer"},"description":"Limite da janela"},"RateLimit-Remaining":{"schema":{"type":"integer"},"description":"Requisições restantes"},"RateLimit-Reset":{"schema":{"type":"integer"},"description":"Segundos até reset"},"X-RateLimit-Limit":{"schema":{"type":"integer"}},"X-RateLimit-Remaining":{"schema":{"type":"integer"}},"X-RateLimit-Reset":{"schema":{"type":"integer"}},"Retry-After":{"schema":{"type":"integer"},"description":"Presente em 429"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}}},"/api/public/u/{slug}/slots":{"get":{"tags":["public"],"summary":"Listar horários disponíveis","description":"Locais e slots para agendamento público (plano Pro+).\n\n**Deprecated path.** Use `/api/v1/public/u/{slug}/slots` (mesmo contrato).","operationId":"listPublicSlotsLegacy","parameters":[{"name":"slug","in":"path","required":true,"description":"Slug público da organização (página do nutricionista).","schema":{"type":"string","minLength":2,"maxLength":64,"example":"clinica-exemplo"}},{"name":"kind","in":"query","required":false,"schema":{"type":"string","enum":["in_person","online"]}},{"name":"locationId","in":"query","required":false,"schema":{"type":"string"}},{"name":"cursor","in":"query","required":false,"description":"Cursor opaco da página seguinte (paginação cursor-based). Omitir na primeira página.","schema":{"type":"string","maxLength":256}},{"name":"limit","in":"query","required":false,"description":"Tamanho da página (padrão 50, máx. 100).","schema":{"type":"integer","minimum":1,"maximum":100,"default":50}},{"name":"API-Version","in":"header","required":false,"description":"Versão da API. Valor atual: 1. Preferir path /api/v1/…","schema":{"type":"string","enum":["1"],"default":"1"}}],"responses":{"200":{"description":"Slots","headers":{"API-Version":{"schema":{"type":"string","example":"1"},"description":"Versão da API"},"RateLimit-Limit":{"schema":{"type":"integer"},"description":"Limite da janela"},"RateLimit-Remaining":{"schema":{"type":"integer"},"description":"Requisições restantes"},"RateLimit-Reset":{"schema":{"type":"integer"},"description":"Segundos até reset"},"X-RateLimit-Limit":{"schema":{"type":"integer"}},"X-RateLimit-Remaining":{"schema":{"type":"integer"}},"X-RateLimit-Reset":{"schema":{"type":"integer"}},"Retry-After":{"schema":{"type":"integer"},"description":"Presente em 429"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SlotsResponse"}}}},"400":{"description":"Pedido inválido","headers":{"API-Version":{"schema":{"type":"string","example":"1"},"description":"Versão da API"},"RateLimit-Limit":{"schema":{"type":"integer"},"description":"Limite da janela"},"RateLimit-Remaining":{"schema":{"type":"integer"},"description":"Requisições restantes"},"RateLimit-Reset":{"schema":{"type":"integer"},"description":"Segundos até reset"},"X-RateLimit-Limit":{"schema":{"type":"integer"}},"X-RateLimit-Remaining":{"schema":{"type":"integer"}},"X-RateLimit-Reset":{"schema":{"type":"integer"}},"Retry-After":{"schema":{"type":"integer"},"description":"Presente em 429"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"404":{"description":"Não encontrado","headers":{"API-Version":{"schema":{"type":"string","example":"1"},"description":"Versão da API"},"RateLimit-Limit":{"schema":{"type":"integer"},"description":"Limite da janela"},"RateLimit-Remaining":{"schema":{"type":"integer"},"description":"Requisições restantes"},"RateLimit-Reset":{"schema":{"type":"integer"},"description":"Segundos até reset"},"X-RateLimit-Limit":{"schema":{"type":"integer"}},"X-RateLimit-Remaining":{"schema":{"type":"integer"}},"X-RateLimit-Reset":{"schema":{"type":"integer"}},"Retry-After":{"schema":{"type":"integer"},"description":"Presente em 429"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"429":{"description":"Rate limit","headers":{"API-Version":{"schema":{"type":"string","example":"1"},"description":"Versão da API"},"RateLimit-Limit":{"schema":{"type":"integer"},"description":"Limite da janela"},"RateLimit-Remaining":{"schema":{"type":"integer"},"description":"Requisições restantes"},"RateLimit-Reset":{"schema":{"type":"integer"},"description":"Segundos até reset"},"X-RateLimit-Limit":{"schema":{"type":"integer"}},"X-RateLimit-Remaining":{"schema":{"type":"integer"}},"X-RateLimit-Reset":{"schema":{"type":"integer"}},"Retry-After":{"schema":{"type":"integer"},"description":"Presente em 429"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"503":{"description":"Serviço indisponível","headers":{"API-Version":{"schema":{"type":"string","example":"1"},"description":"Versão da API"},"RateLimit-Limit":{"schema":{"type":"integer"},"description":"Limite da janela"},"RateLimit-Remaining":{"schema":{"type":"integer"},"description":"Requisições restantes"},"RateLimit-Reset":{"schema":{"type":"integer"},"description":"Segundos até reset"},"X-RateLimit-Limit":{"schema":{"type":"integer"}},"X-RateLimit-Remaining":{"schema":{"type":"integer"}},"X-RateLimit-Reset":{"schema":{"type":"integer"}},"Retry-After":{"schema":{"type":"integer"},"description":"Presente em 429"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}},"deprecated":true}},"/api/v1/public/u/{slug}/bookings":{"post":{"tags":["public"],"summary":"Solicitar agendamento público","description":"Cria pedido de consulta. Rate-limited.","operationId":"createPublicBooking","parameters":[{"name":"slug","in":"path","required":true,"description":"Slug público da organização (página do nutricionista).","schema":{"type":"string","minLength":2,"maxLength":64,"example":"clinica-exemplo"}},{"name":"API-Version","in":"header","required":false,"description":"Versão da API. Valor atual: 1. Preferir path /api/v1/…","schema":{"type":"string","enum":["1"],"default":"1"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/BookingInput"}}}},"responses":{"200":{"description":"Pedido criado","headers":{"API-Version":{"schema":{"type":"string","example":"1"},"description":"Versão da API"},"RateLimit-Limit":{"schema":{"type":"integer"},"description":"Limite da janela"},"RateLimit-Remaining":{"schema":{"type":"integer"},"description":"Requisições restantes"},"RateLimit-Reset":{"schema":{"type":"integer"},"description":"Segundos até reset"},"X-RateLimit-Limit":{"schema":{"type":"integer"}},"X-RateLimit-Remaining":{"schema":{"type":"integer"}},"X-RateLimit-Reset":{"schema":{"type":"integer"}},"Retry-After":{"schema":{"type":"integer"},"description":"Presente em 429"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/BookingResult"}}}},"400":{"description":"Pedido inválido","headers":{"API-Version":{"schema":{"type":"string","example":"1"},"description":"Versão da API"},"RateLimit-Limit":{"schema":{"type":"integer"},"description":"Limite da janela"},"RateLimit-Remaining":{"schema":{"type":"integer"},"description":"Requisições restantes"},"RateLimit-Reset":{"schema":{"type":"integer"},"description":"Segundos até reset"},"X-RateLimit-Limit":{"schema":{"type":"integer"}},"X-RateLimit-Remaining":{"schema":{"type":"integer"}},"X-RateLimit-Reset":{"schema":{"type":"integer"}},"Retry-After":{"schema":{"type":"integer"},"description":"Presente em 429"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"404":{"description":"Não encontrado","headers":{"API-Version":{"schema":{"type":"string","example":"1"},"description":"Versão da API"},"RateLimit-Limit":{"schema":{"type":"integer"},"description":"Limite da janela"},"RateLimit-Remaining":{"schema":{"type":"integer"},"description":"Requisições restantes"},"RateLimit-Reset":{"schema":{"type":"integer"},"description":"Segundos até reset"},"X-RateLimit-Limit":{"schema":{"type":"integer"}},"X-RateLimit-Remaining":{"schema":{"type":"integer"}},"X-RateLimit-Reset":{"schema":{"type":"integer"}},"Retry-After":{"schema":{"type":"integer"},"description":"Presente em 429"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"429":{"description":"Rate limit","headers":{"API-Version":{"schema":{"type":"string","example":"1"},"description":"Versão da API"},"RateLimit-Limit":{"schema":{"type":"integer"},"description":"Limite da janela"},"RateLimit-Remaining":{"schema":{"type":"integer"},"description":"Requisições restantes"},"RateLimit-Reset":{"schema":{"type":"integer"},"description":"Segundos até reset"},"X-RateLimit-Limit":{"schema":{"type":"integer"}},"X-RateLimit-Remaining":{"schema":{"type":"integer"}},"X-RateLimit-Reset":{"schema":{"type":"integer"}},"Retry-After":{"schema":{"type":"integer"},"description":"Presente em 429"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"503":{"description":"Serviço indisponível","headers":{"API-Version":{"schema":{"type":"string","example":"1"},"description":"Versão da API"},"RateLimit-Limit":{"schema":{"type":"integer"},"description":"Limite da janela"},"RateLimit-Remaining":{"schema":{"type":"integer"},"description":"Requisições restantes"},"RateLimit-Reset":{"schema":{"type":"integer"},"description":"Segundos até reset"},"X-RateLimit-Limit":{"schema":{"type":"integer"}},"X-RateLimit-Remaining":{"schema":{"type":"integer"}},"X-RateLimit-Reset":{"schema":{"type":"integer"}},"Retry-After":{"schema":{"type":"integer"},"description":"Presente em 429"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}}},"/api/public/u/{slug}/bookings":{"post":{"tags":["public"],"summary":"Solicitar agendamento público","description":"Cria pedido de consulta. Rate-limited.\n\n**Deprecated path.** Use `/api/v1/public/u/{slug}/bookings` (mesmo contrato).","operationId":"createPublicBookingLegacy","parameters":[{"name":"slug","in":"path","required":true,"description":"Slug público da organização (página do nutricionista).","schema":{"type":"string","minLength":2,"maxLength":64,"example":"clinica-exemplo"}},{"name":"API-Version","in":"header","required":false,"description":"Versão da API. Valor atual: 1. Preferir path /api/v1/…","schema":{"type":"string","enum":["1"],"default":"1"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/BookingInput"}}}},"responses":{"200":{"description":"Pedido criado","headers":{"API-Version":{"schema":{"type":"string","example":"1"},"description":"Versão da API"},"RateLimit-Limit":{"schema":{"type":"integer"},"description":"Limite da janela"},"RateLimit-Remaining":{"schema":{"type":"integer"},"description":"Requisições restantes"},"RateLimit-Reset":{"schema":{"type":"integer"},"description":"Segundos até reset"},"X-RateLimit-Limit":{"schema":{"type":"integer"}},"X-RateLimit-Remaining":{"schema":{"type":"integer"}},"X-RateLimit-Reset":{"schema":{"type":"integer"}},"Retry-After":{"schema":{"type":"integer"},"description":"Presente em 429"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/BookingResult"}}}},"400":{"description":"Pedido inválido","headers":{"API-Version":{"schema":{"type":"string","example":"1"},"description":"Versão da API"},"RateLimit-Limit":{"schema":{"type":"integer"},"description":"Limite da janela"},"RateLimit-Remaining":{"schema":{"type":"integer"},"description":"Requisições restantes"},"RateLimit-Reset":{"schema":{"type":"integer"},"description":"Segundos até reset"},"X-RateLimit-Limit":{"schema":{"type":"integer"}},"X-RateLimit-Remaining":{"schema":{"type":"integer"}},"X-RateLimit-Reset":{"schema":{"type":"integer"}},"Retry-After":{"schema":{"type":"integer"},"description":"Presente em 429"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"404":{"description":"Não encontrado","headers":{"API-Version":{"schema":{"type":"string","example":"1"},"description":"Versão da API"},"RateLimit-Limit":{"schema":{"type":"integer"},"description":"Limite da janela"},"RateLimit-Remaining":{"schema":{"type":"integer"},"description":"Requisições restantes"},"RateLimit-Reset":{"schema":{"type":"integer"},"description":"Segundos até reset"},"X-RateLimit-Limit":{"schema":{"type":"integer"}},"X-RateLimit-Remaining":{"schema":{"type":"integer"}},"X-RateLimit-Reset":{"schema":{"type":"integer"}},"Retry-After":{"schema":{"type":"integer"},"description":"Presente em 429"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"429":{"description":"Rate limit","headers":{"API-Version":{"schema":{"type":"string","example":"1"},"description":"Versão da API"},"RateLimit-Limit":{"schema":{"type":"integer"},"description":"Limite da janela"},"RateLimit-Remaining":{"schema":{"type":"integer"},"description":"Requisições restantes"},"RateLimit-Reset":{"schema":{"type":"integer"},"description":"Segundos até reset"},"X-RateLimit-Limit":{"schema":{"type":"integer"}},"X-RateLimit-Remaining":{"schema":{"type":"integer"}},"X-RateLimit-Reset":{"schema":{"type":"integer"}},"Retry-After":{"schema":{"type":"integer"},"description":"Presente em 429"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"503":{"description":"Serviço indisponível","headers":{"API-Version":{"schema":{"type":"string","example":"1"},"description":"Versão da API"},"RateLimit-Limit":{"schema":{"type":"integer"},"description":"Limite da janela"},"RateLimit-Remaining":{"schema":{"type":"integer"},"description":"Requisições restantes"},"RateLimit-Reset":{"schema":{"type":"integer"},"description":"Segundos até reset"},"X-RateLimit-Limit":{"schema":{"type":"integer"}},"X-RateLimit-Remaining":{"schema":{"type":"integer"}},"X-RateLimit-Reset":{"schema":{"type":"integer"}},"Retry-After":{"schema":{"type":"integer"},"description":"Presente em 429"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}},"deprecated":true}},"/api/v1/public/u/{slug}/anamnesis":{"post":{"tags":["public"],"summary":"Enviar anamnese pública","description":"Submete respostas de anamnese autorizada. Rate-limited.","operationId":"submitPublicAnamnesis","parameters":[{"name":"slug","in":"path","required":true,"description":"Slug público da organização (página do nutricionista).","schema":{"type":"string","minLength":2,"maxLength":64,"example":"clinica-exemplo"}},{"name":"API-Version","in":"header","required":false,"description":"Versão da API. Valor atual: 1. Preferir path /api/v1/…","schema":{"type":"string","enum":["1"],"default":"1"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AnamnesisInput"}}}},"responses":{"200":{"description":"Anamnese recebida","headers":{"API-Version":{"schema":{"type":"string","example":"1"},"description":"Versão da API"},"RateLimit-Limit":{"schema":{"type":"integer"},"description":"Limite da janela"},"RateLimit-Remaining":{"schema":{"type":"integer"},"description":"Requisições restantes"},"RateLimit-Reset":{"schema":{"type":"integer"},"description":"Segundos até reset"},"X-RateLimit-Limit":{"schema":{"type":"integer"}},"X-RateLimit-Remaining":{"schema":{"type":"integer"}},"X-RateLimit-Reset":{"schema":{"type":"integer"}},"Retry-After":{"schema":{"type":"integer"},"description":"Presente em 429"}},"content":{"application/json":{"schema":{"type":"object","required":["ok"],"additionalProperties":false,"properties":{"ok":{"type":"boolean"},"apiVersion":{"type":"string","enum":["1"]}}}}}},"400":{"description":"Pedido inválido","headers":{"API-Version":{"schema":{"type":"string","example":"1"},"description":"Versão da API"},"RateLimit-Limit":{"schema":{"type":"integer"},"description":"Limite da janela"},"RateLimit-Remaining":{"schema":{"type":"integer"},"description":"Requisições restantes"},"RateLimit-Reset":{"schema":{"type":"integer"},"description":"Segundos até reset"},"X-RateLimit-Limit":{"schema":{"type":"integer"}},"X-RateLimit-Remaining":{"schema":{"type":"integer"}},"X-RateLimit-Reset":{"schema":{"type":"integer"}},"Retry-After":{"schema":{"type":"integer"},"description":"Presente em 429"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"404":{"description":"Não encontrado","headers":{"API-Version":{"schema":{"type":"string","example":"1"},"description":"Versão da API"},"RateLimit-Limit":{"schema":{"type":"integer"},"description":"Limite da janela"},"RateLimit-Remaining":{"schema":{"type":"integer"},"description":"Requisições restantes"},"RateLimit-Reset":{"schema":{"type":"integer"},"description":"Segundos até reset"},"X-RateLimit-Limit":{"schema":{"type":"integer"}},"X-RateLimit-Remaining":{"schema":{"type":"integer"}},"X-RateLimit-Reset":{"schema":{"type":"integer"}},"Retry-After":{"schema":{"type":"integer"},"description":"Presente em 429"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"429":{"description":"Rate limit","headers":{"API-Version":{"schema":{"type":"string","example":"1"},"description":"Versão da API"},"RateLimit-Limit":{"schema":{"type":"integer"},"description":"Limite da janela"},"RateLimit-Remaining":{"schema":{"type":"integer"},"description":"Requisições restantes"},"RateLimit-Reset":{"schema":{"type":"integer"},"description":"Segundos até reset"},"X-RateLimit-Limit":{"schema":{"type":"integer"}},"X-RateLimit-Remaining":{"schema":{"type":"integer"}},"X-RateLimit-Reset":{"schema":{"type":"integer"}},"Retry-After":{"schema":{"type":"integer"},"description":"Presente em 429"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"503":{"description":"Serviço indisponível","headers":{"API-Version":{"schema":{"type":"string","example":"1"},"description":"Versão da API"},"RateLimit-Limit":{"schema":{"type":"integer"},"description":"Limite da janela"},"RateLimit-Remaining":{"schema":{"type":"integer"},"description":"Requisições restantes"},"RateLimit-Reset":{"schema":{"type":"integer"},"description":"Segundos até reset"},"X-RateLimit-Limit":{"schema":{"type":"integer"}},"X-RateLimit-Remaining":{"schema":{"type":"integer"}},"X-RateLimit-Reset":{"schema":{"type":"integer"}},"Retry-After":{"schema":{"type":"integer"},"description":"Presente em 429"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}}},"/api/public/u/{slug}/anamnesis":{"post":{"tags":["public"],"summary":"Enviar anamnese pública","description":"Submete respostas de anamnese autorizada. Rate-limited.\n\n**Deprecated path.** Use `/api/v1/public/u/{slug}/anamnesis` (mesmo contrato).","operationId":"submitPublicAnamnesisLegacy","parameters":[{"name":"slug","in":"path","required":true,"description":"Slug público da organização (página do nutricionista).","schema":{"type":"string","minLength":2,"maxLength":64,"example":"clinica-exemplo"}},{"name":"API-Version","in":"header","required":false,"description":"Versão da API. Valor atual: 1. Preferir path /api/v1/…","schema":{"type":"string","enum":["1"],"default":"1"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AnamnesisInput"}}}},"responses":{"200":{"description":"Anamnese recebida","headers":{"API-Version":{"schema":{"type":"string","example":"1"},"description":"Versão da API"},"RateLimit-Limit":{"schema":{"type":"integer"},"description":"Limite da janela"},"RateLimit-Remaining":{"schema":{"type":"integer"},"description":"Requisições restantes"},"RateLimit-Reset":{"schema":{"type":"integer"},"description":"Segundos até reset"},"X-RateLimit-Limit":{"schema":{"type":"integer"}},"X-RateLimit-Remaining":{"schema":{"type":"integer"}},"X-RateLimit-Reset":{"schema":{"type":"integer"}},"Retry-After":{"schema":{"type":"integer"},"description":"Presente em 429"}},"content":{"application/json":{"schema":{"type":"object","required":["ok"],"additionalProperties":false,"properties":{"ok":{"type":"boolean"},"apiVersion":{"type":"string","enum":["1"]}}}}}},"400":{"description":"Pedido inválido","headers":{"API-Version":{"schema":{"type":"string","example":"1"},"description":"Versão da API"},"RateLimit-Limit":{"schema":{"type":"integer"},"description":"Limite da janela"},"RateLimit-Remaining":{"schema":{"type":"integer"},"description":"Requisições restantes"},"RateLimit-Reset":{"schema":{"type":"integer"},"description":"Segundos até reset"},"X-RateLimit-Limit":{"schema":{"type":"integer"}},"X-RateLimit-Remaining":{"schema":{"type":"integer"}},"X-RateLimit-Reset":{"schema":{"type":"integer"}},"Retry-After":{"schema":{"type":"integer"},"description":"Presente em 429"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"404":{"description":"Não encontrado","headers":{"API-Version":{"schema":{"type":"string","example":"1"},"description":"Versão da API"},"RateLimit-Limit":{"schema":{"type":"integer"},"description":"Limite da janela"},"RateLimit-Remaining":{"schema":{"type":"integer"},"description":"Requisições restantes"},"RateLimit-Reset":{"schema":{"type":"integer"},"description":"Segundos até reset"},"X-RateLimit-Limit":{"schema":{"type":"integer"}},"X-RateLimit-Remaining":{"schema":{"type":"integer"}},"X-RateLimit-Reset":{"schema":{"type":"integer"}},"Retry-After":{"schema":{"type":"integer"},"description":"Presente em 429"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"429":{"description":"Rate limit","headers":{"API-Version":{"schema":{"type":"string","example":"1"},"description":"Versão da API"},"RateLimit-Limit":{"schema":{"type":"integer"},"description":"Limite da janela"},"RateLimit-Remaining":{"schema":{"type":"integer"},"description":"Requisições restantes"},"RateLimit-Reset":{"schema":{"type":"integer"},"description":"Segundos até reset"},"X-RateLimit-Limit":{"schema":{"type":"integer"}},"X-RateLimit-Remaining":{"schema":{"type":"integer"}},"X-RateLimit-Reset":{"schema":{"type":"integer"}},"Retry-After":{"schema":{"type":"integer"},"description":"Presente em 429"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"503":{"description":"Serviço indisponível","headers":{"API-Version":{"schema":{"type":"string","example":"1"},"description":"Versão da API"},"RateLimit-Limit":{"schema":{"type":"integer"},"description":"Limite da janela"},"RateLimit-Remaining":{"schema":{"type":"integer"},"description":"Requisições restantes"},"RateLimit-Reset":{"schema":{"type":"integer"},"description":"Segundos até reset"},"X-RateLimit-Limit":{"schema":{"type":"integer"}},"X-RateLimit-Remaining":{"schema":{"type":"integer"}},"X-RateLimit-Reset":{"schema":{"type":"integer"}},"Retry-After":{"schema":{"type":"integer"},"description":"Presente em 429"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}},"deprecated":true}},"/api/v1/public/u/{slug}/challenges/{challengeSlug}/enroll":{"post":{"tags":["public"],"summary":"Inscrever em desafio público","description":"Inscrição em desafio publicado. Rate-limited.","operationId":"enrollPublicChallenge","parameters":[{"name":"slug","in":"path","required":true,"description":"Slug público da organização (página do nutricionista).","schema":{"type":"string","minLength":2,"maxLength":64,"example":"clinica-exemplo"}},{"name":"challengeSlug","in":"path","required":true,"schema":{"type":"string","minLength":2,"maxLength":64}},{"name":"API-Version","in":"header","required":false,"description":"Versão da API. Valor atual: 1. Preferir path /api/v1/…","schema":{"type":"string","enum":["1"],"default":"1"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ChallengeEnrollInput"}}}},"responses":{"200":{"description":"Inscrição criada","headers":{"API-Version":{"schema":{"type":"string","example":"1"},"description":"Versão da API"},"RateLimit-Limit":{"schema":{"type":"integer"},"description":"Limite da janela"},"RateLimit-Remaining":{"schema":{"type":"integer"},"description":"Requisições restantes"},"RateLimit-Reset":{"schema":{"type":"integer"},"description":"Segundos até reset"},"X-RateLimit-Limit":{"schema":{"type":"integer"}},"X-RateLimit-Remaining":{"schema":{"type":"integer"}},"X-RateLimit-Reset":{"schema":{"type":"integer"}},"Retry-After":{"schema":{"type":"integer"},"description":"Presente em 429"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ChallengeEnrollResult"}}}},"400":{"description":"Pedido inválido","headers":{"API-Version":{"schema":{"type":"string","example":"1"},"description":"Versão da API"},"RateLimit-Limit":{"schema":{"type":"integer"},"description":"Limite da janela"},"RateLimit-Remaining":{"schema":{"type":"integer"},"description":"Requisições restantes"},"RateLimit-Reset":{"schema":{"type":"integer"},"description":"Segundos até reset"},"X-RateLimit-Limit":{"schema":{"type":"integer"}},"X-RateLimit-Remaining":{"schema":{"type":"integer"}},"X-RateLimit-Reset":{"schema":{"type":"integer"}},"Retry-After":{"schema":{"type":"integer"},"description":"Presente em 429"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"404":{"description":"Não encontrado","headers":{"API-Version":{"schema":{"type":"string","example":"1"},"description":"Versão da API"},"RateLimit-Limit":{"schema":{"type":"integer"},"description":"Limite da janela"},"RateLimit-Remaining":{"schema":{"type":"integer"},"description":"Requisições restantes"},"RateLimit-Reset":{"schema":{"type":"integer"},"description":"Segundos até reset"},"X-RateLimit-Limit":{"schema":{"type":"integer"}},"X-RateLimit-Remaining":{"schema":{"type":"integer"}},"X-RateLimit-Reset":{"schema":{"type":"integer"}},"Retry-After":{"schema":{"type":"integer"},"description":"Presente em 429"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"429":{"description":"Rate limit","headers":{"API-Version":{"schema":{"type":"string","example":"1"},"description":"Versão da API"},"RateLimit-Limit":{"schema":{"type":"integer"},"description":"Limite da janela"},"RateLimit-Remaining":{"schema":{"type":"integer"},"description":"Requisições restantes"},"RateLimit-Reset":{"schema":{"type":"integer"},"description":"Segundos até reset"},"X-RateLimit-Limit":{"schema":{"type":"integer"}},"X-RateLimit-Remaining":{"schema":{"type":"integer"}},"X-RateLimit-Reset":{"schema":{"type":"integer"}},"Retry-After":{"schema":{"type":"integer"},"description":"Presente em 429"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"503":{"description":"Serviço indisponível","headers":{"API-Version":{"schema":{"type":"string","example":"1"},"description":"Versão da API"},"RateLimit-Limit":{"schema":{"type":"integer"},"description":"Limite da janela"},"RateLimit-Remaining":{"schema":{"type":"integer"},"description":"Requisições restantes"},"RateLimit-Reset":{"schema":{"type":"integer"},"description":"Segundos até reset"},"X-RateLimit-Limit":{"schema":{"type":"integer"}},"X-RateLimit-Remaining":{"schema":{"type":"integer"}},"X-RateLimit-Reset":{"schema":{"type":"integer"}},"Retry-After":{"schema":{"type":"integer"},"description":"Presente em 429"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}}},"/api/public/u/{slug}/challenges/{challengeSlug}/enroll":{"post":{"tags":["public"],"summary":"Inscrever em desafio público","description":"Inscrição em desafio publicado. Rate-limited.\n\n**Deprecated path.** Use `/api/v1/public/u/{slug}/challenges/{challengeSlug}/enroll` (mesmo contrato).","operationId":"enrollPublicChallengeLegacy","parameters":[{"name":"slug","in":"path","required":true,"description":"Slug público da organização (página do nutricionista).","schema":{"type":"string","minLength":2,"maxLength":64,"example":"clinica-exemplo"}},{"name":"challengeSlug","in":"path","required":true,"schema":{"type":"string","minLength":2,"maxLength":64}},{"name":"API-Version","in":"header","required":false,"description":"Versão da API. Valor atual: 1. Preferir path /api/v1/…","schema":{"type":"string","enum":["1"],"default":"1"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ChallengeEnrollInput"}}}},"responses":{"200":{"description":"Inscrição criada","headers":{"API-Version":{"schema":{"type":"string","example":"1"},"description":"Versão da API"},"RateLimit-Limit":{"schema":{"type":"integer"},"description":"Limite da janela"},"RateLimit-Remaining":{"schema":{"type":"integer"},"description":"Requisições restantes"},"RateLimit-Reset":{"schema":{"type":"integer"},"description":"Segundos até reset"},"X-RateLimit-Limit":{"schema":{"type":"integer"}},"X-RateLimit-Remaining":{"schema":{"type":"integer"}},"X-RateLimit-Reset":{"schema":{"type":"integer"}},"Retry-After":{"schema":{"type":"integer"},"description":"Presente em 429"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ChallengeEnrollResult"}}}},"400":{"description":"Pedido inválido","headers":{"API-Version":{"schema":{"type":"string","example":"1"},"description":"Versão da API"},"RateLimit-Limit":{"schema":{"type":"integer"},"description":"Limite da janela"},"RateLimit-Remaining":{"schema":{"type":"integer"},"description":"Requisições restantes"},"RateLimit-Reset":{"schema":{"type":"integer"},"description":"Segundos até reset"},"X-RateLimit-Limit":{"schema":{"type":"integer"}},"X-RateLimit-Remaining":{"schema":{"type":"integer"}},"X-RateLimit-Reset":{"schema":{"type":"integer"}},"Retry-After":{"schema":{"type":"integer"},"description":"Presente em 429"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"404":{"description":"Não encontrado","headers":{"API-Version":{"schema":{"type":"string","example":"1"},"description":"Versão da API"},"RateLimit-Limit":{"schema":{"type":"integer"},"description":"Limite da janela"},"RateLimit-Remaining":{"schema":{"type":"integer"},"description":"Requisições restantes"},"RateLimit-Reset":{"schema":{"type":"integer"},"description":"Segundos até reset"},"X-RateLimit-Limit":{"schema":{"type":"integer"}},"X-RateLimit-Remaining":{"schema":{"type":"integer"}},"X-RateLimit-Reset":{"schema":{"type":"integer"}},"Retry-After":{"schema":{"type":"integer"},"description":"Presente em 429"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"429":{"description":"Rate limit","headers":{"API-Version":{"schema":{"type":"string","example":"1"},"description":"Versão da API"},"RateLimit-Limit":{"schema":{"type":"integer"},"description":"Limite da janela"},"RateLimit-Remaining":{"schema":{"type":"integer"},"description":"Requisições restantes"},"RateLimit-Reset":{"schema":{"type":"integer"},"description":"Segundos até reset"},"X-RateLimit-Limit":{"schema":{"type":"integer"}},"X-RateLimit-Remaining":{"schema":{"type":"integer"}},"X-RateLimit-Reset":{"schema":{"type":"integer"}},"Retry-After":{"schema":{"type":"integer"},"description":"Presente em 429"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"503":{"description":"Serviço indisponível","headers":{"API-Version":{"schema":{"type":"string","example":"1"},"description":"Versão da API"},"RateLimit-Limit":{"schema":{"type":"integer"},"description":"Limite da janela"},"RateLimit-Remaining":{"schema":{"type":"integer"},"description":"Requisições restantes"},"RateLimit-Reset":{"schema":{"type":"integer"},"description":"Segundos até reset"},"X-RateLimit-Limit":{"schema":{"type":"integer"}},"X-RateLimit-Remaining":{"schema":{"type":"integer"}},"X-RateLimit-Reset":{"schema":{"type":"integer"}},"Retry-After":{"schema":{"type":"integer"},"description":"Presente em 429"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}},"deprecated":true}},"/api/v1/openapi.json":{"get":{"tags":["meta"],"summary":"OpenAPI 3.1 (versionado)","description":"Spec OpenAPI da superfície pública Nutrali v1.","operationId":"getOpenApiDocumentV1","parameters":[{"name":"API-Version","in":"header","required":false,"description":"Versão da API. Valor atual: 1. Preferir path /api/v1/…","schema":{"type":"string","enum":["1"],"default":"1"}}],"responses":{"200":{"description":"OpenAPI document","headers":{"API-Version":{"schema":{"type":"string","example":"1"},"description":"Versão da API"},"RateLimit-Limit":{"schema":{"type":"integer"},"description":"Limite da janela"},"RateLimit-Remaining":{"schema":{"type":"integer"},"description":"Requisições restantes"},"RateLimit-Reset":{"schema":{"type":"integer"},"description":"Segundos até reset"},"X-RateLimit-Limit":{"schema":{"type":"integer"}},"X-RateLimit-Remaining":{"schema":{"type":"integer"}},"X-RateLimit-Reset":{"schema":{"type":"integer"}},"Retry-After":{"schema":{"type":"integer"},"description":"Presente em 429"}},"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}}}}},"/openapi.json":{"get":{"tags":["meta"],"summary":"OpenAPI 3.1","description":"Spec OpenAPI 3.1 da superfície pública Nutrali.","operationId":"getOpenApiDocument","parameters":[{"name":"API-Version","in":"header","required":false,"description":"Versão da API. Valor atual: 1. Preferir path /api/v1/…","schema":{"type":"string","enum":["1"],"default":"1"}}],"responses":{"200":{"description":"OpenAPI document","headers":{"API-Version":{"schema":{"type":"string","example":"1"},"description":"Versão da API"},"RateLimit-Limit":{"schema":{"type":"integer"},"description":"Limite da janela"},"RateLimit-Remaining":{"schema":{"type":"integer"},"description":"Requisições restantes"},"RateLimit-Reset":{"schema":{"type":"integer"},"description":"Segundos até reset"},"X-RateLimit-Limit":{"schema":{"type":"integer"}},"X-RateLimit-Remaining":{"schema":{"type":"integer"}},"X-RateLimit-Reset":{"schema":{"type":"integer"}},"Retry-After":{"schema":{"type":"integer"},"description":"Presente em 429"}},"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}}}}},"/llms.txt":{"get":{"tags":["meta"],"summary":"Brief Markdown para LLMs","description":"Inclui When to use this e links de descoberta.","operationId":"getLlmsTxt","responses":{"200":{"description":"text/markdown","content":{"text/markdown":{"schema":{"type":"string"}}}}}}},"/llms-full.txt":{"get":{"tags":["meta"],"summary":"Brief longo para LLMs","description":"Descrição longa da Nutrali para LLMs.","operationId":"getLlmsFullTxt","responses":{"200":{"description":"text/markdown","content":{"text/markdown":{"schema":{"type":"string"}}}}}}},"/docs":{"get":{"tags":["meta"],"summary":"Nutrali API Docs","description":"Documentação HTML/Markdown da API pública.","operationId":"getDocsPage","responses":{"200":{"description":"HTML ou Markdown via Accept"}}}}},"components":{"schemas":{"ApiError":{"type":"object","required":["error"],"additionalProperties":false,"properties":{"error":{"type":"object","required":["code","message"],"additionalProperties":false,"properties":{"code":{"type":"string"},"message":{"type":"string"},"hint":{"type":"string"}}}}},"CursorPageMeta":{"type":"object","required":["nextCursor"],"additionalProperties":false,"properties":{"nextCursor":{"type":["string","null"],"description":"Cursor da próxima página; null se não houver mais itens"}}},"SaasPlan":{"type":"object","required":["id","name","productPlan","features"],"additionalProperties":false,"properties":{"id":{"type":"string"},"name":{"type":"string"},"productPlan":{"type":"string"},"features":{"type":"array","items":{"type":"string"}},"priceMonthly":{"type":["number","null"]},"priceAnnual":{"type":["number","null"]},"annualMonthlyEquivalent":{"type":["number","null"]},"annualSavingsPercent":{"type":["number","null"]},"marketingPitch":{"type":["string","null"]},"marketingBadge":{"type":["string","null"]},"marketingCta":{"type":["string","null"]},"marketingHighlight":{"type":"boolean"},"sortOrder":{"type":"integer"}}},"SaasPlanList":{"type":"object","required":["items","nextCursor","trialDays","apiVersion"],"additionalProperties":false,"properties":{"items":{"type":"array","items":{"$ref":"#/components/schemas/SaasPlan"}},"nextCursor":{"type":["string","null"]},"trialDays":{"type":"integer"},"apiVersion":{"type":"string","enum":["1"]},"plans":{"type":"array","items":{"$ref":"#/components/schemas/SaasPlan"},"deprecated":true}}},"PublicPage":{"type":"object","required":["organizationId"],"additionalProperties":false,"properties":{"organizationId":{"type":"string"},"orgName":{"type":"string"},"ownerName":{"type":"string"},"headline":{"type":"string"},"subheadline":{"type":"string"},"about":{"type":"string"},"whatsapp":{"type":"string"},"published":{"type":"boolean"},"socials":{"type":"object","additionalProperties":{"type":"string"}}}},"LeadInput":{"type":"object","required":["name","email"],"additionalProperties":false,"properties":{"name":{"type":"string","minLength":1,"maxLength":200},"email":{"type":"string","format":"email"},"phone":{"type":"string","maxLength":40},"message":{"type":"string","maxLength":2000}}},"BookingInput":{"type":"object","required":["name","email","startsAt"],"additionalProperties":false,"properties":{"name":{"type":"string"},"email":{"type":"string","format":"email"},"phone":{"type":"string"},"startsAt":{"type":"string","format":"date-time"},"locationId":{"type":"string"},"attendanceKind":{"type":"string","enum":["in_person","online"]},"notes":{"type":"string"}}},"BookingResult":{"type":"object","required":["ok"],"additionalProperties":false,"properties":{"ok":{"type":"boolean"},"id":{"type":"string"},"apiVersion":{"type":"string","enum":["1"]}}},"Slot":{"type":"object","additionalProperties":false,"properties":{"startsAt":{"type":"string","format":"date-time"},"endsAt":{"type":"string","format":"date-time"},"locationId":{"type":"string"}}},"Location":{"type":"object","additionalProperties":false,"properties":{"id":{"type":"string"},"name":{"type":"string"},"kind":{"type":"string"}}},"SlotsResponse":{"type":"object","required":["items","nextCursor","bookingEnabled"],"additionalProperties":false,"properties":{"items":{"type":"array","items":{"$ref":"#/components/schemas/Slot"}},"nextCursor":{"type":["string","null"]},"locations":{"type":"array","items":{"$ref":"#/components/schemas/Location"}},"slots":{"type":"array","items":{"$ref":"#/components/schemas/Slot"},"deprecated":true},"bookingEnabled":{"type":"boolean"},"apiVersion":{"type":"string","enum":["1"]}}},"AnamnesisInput":{"type":"object","required":["answers"],"additionalProperties":false,"properties":{"answers":{"type":"object","additionalProperties":true},"accessToken":{"type":"string"},"patientSlug":{"type":"string"}}},"ChallengeEnrollInput":{"type":"object","required":["name","email"],"additionalProperties":false,"properties":{"name":{"type":"string"},"email":{"type":"string","format":"email"},"phone":{"type":"string"}}},"ChallengeEnrollResult":{"type":"object","required":["ok"],"additionalProperties":false,"properties":{"ok":{"type":"boolean"},"enrollmentId":{"type":"string"},"anamnesisPath":{"type":"string"},"apiVersion":{"type":"string","enum":["1"]}}}}}}