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.coderesource_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.