Início/API e documentação
API e documentação do Doutor Fiscal
Tudo o que o Doutor Fiscal publica para máquinas: uma API JSON somente leitura, a especificação OpenAPI que a descreve, uma versão markdown de cada página e os arquivos que agentes procuram na raiz do domínio. Sem chave, sem cadastro.
O que existe — e o que não existe
A API é somente leitura. Ela publica em JSON os mesmos fatos das páginas deste site: identidade, empresa responsável, canais de contato, páginas, planos e perguntas frequentes. Não há endpoint de escrita, webhook ou criação de lead — a lista de espera é um formulário que grava a inscrição no próprio navegador de quem se inscreve.
Qualquer método diferente de GET responde 405, com um corpo JSON dizendo isso. O produto em si ainda não está em operação: veja em que estágio ele está antes de prometer uma integração a alguém.
Especificação
- /openapi.json
- OpenAPI 3.1, com operationId, descrição, parâmetros tipados e schema de resposta em toda operação. O dialeto de schema do 3.1 é o JSON Schema 2020-12 — o mesmo que function calling consome.
- /openapi.yaml
- A mesma especificação em YAML, servida como application/yaml.
- /api/openapi.json · /api/openapi.yaml
- Espelhos sob /api, para clientes que procuram a especificação ao lado dos endpoints.
Endpoints
Base da versão corrente: /api/v1. Se você só conhece o domínio, comece por /api — ele devolve as versões disponíveis e o endereço da especificação.
- GET /api
- getApiIndex — Ponto de entrada da API.
- GET /api/v1
- getApiV1Index — Recursos da versão 1.
- GET /api/v1/site
- getSite — Identidade do site e estágio do produto.
- GET /api/v1/company
- getCompany — Empresa responsável pelo produto.
- GET /api/v1/contact
- listContactChannels — Canais de contato, por assunto.
- GET /api/v1/contact/{channelId}
- getContactChannel — Um canal de contato.
- GET /api/v1/pages
- listPages — Páginas indexáveis do site.
- GET /api/v1/plans
- listPlans — Planos e preços da lista de espera.
- GET /api/v1/plans/{planId}
- getPlan — Um plano.
- GET /api/v1/faq
- listFaqEntries — Perguntas frequentes.
Erros
Erros nunca são HTML. Toda resposta de erro tem o mesmo formato, com um código estável em error.code — resource_not_found, method_not_allowed ou not_acceptable — uma mensagem, uma dica de recuperação e o endereço desta página.
{
"error": {
"status": 404,
"code": "resource_not_found",
"message": "O recurso /api/v1/xyz não existe nesta API.",
"hint": "Consulte /api/v1 para a lista de recursos.",
"documentation": "/desenvolvedores",
"specification": "/openapi.json"
}
}Markdown de qualquer página
Acrescente .md ao caminho (/sobre → /sobre.md) ou envie Accept: text/markdown na URL original. As duas respostas mandam Vary: Accept e um Link canônico de volta para a página em HTML. Um caminho inexistente responde 404 com um corpo markdown listando o site inteiro, em vez do shell da aplicação.
Arquivos de raiz
- /llms.txt
- Guia para agentes: quando usar cada página, no formato llms.txt v2.
- /sitemap.xml
- Todas as URLs indexáveis, com data da última alteração.
- /robots.txt
- Regras de rastreamento. Tudo liberado.
Uso justo
Nenhum limite de requisições é aplicado hoje, e /api/v1/site publica esse estado em capabilities.rateLimit. Se um limite passar a valer, ele aparece ali antes de valer. Dúvidas de integração: hello@unfld.com.br.