# API e documentação do Doutor Fiscal

> Tudo o que https://www.doutorfiscal.com publica para máquinas: uma API JSON somente leitura, a
> especificação OpenAPI que a descreve, markdown de cada página e os arquivos de
> raiz que agentes procuram. Sem chave, sem cadastro, sem limite aplicado.

## O que existe — e o que não existe

A API é **somente leitura**. Ela publica os mesmos fatos das páginas do 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, e o produto
em si ainda não está em operação — o Doutor Fiscal está em lista de espera (pré-lançamento).
Qualquer método diferente de `GET` responde `405` com um corpo JSON explicando
isso. Erros nunca são HTML.

## Especificação

- [openapi.json](https://www.doutorfiscal.com/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, que é o formato que `function calling` consome direto.
- [openapi.yaml](https://www.doutorfiscal.com/openapi.yaml): a mesma
  especificação em YAML.
- Espelhos em `/api/openapi.json` e `/api/openapi.yaml`, para
  clientes que só procuram sob `/api`.

## Endpoints

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

Base da versão corrente: `https://www.doutorfiscal.com/api/v1`. Comece por
`https://www.doutorfiscal.com/api` se só souber o domínio.

## Erros

Toda resposta de erro tem o mesmo formato, com um código estável em
`error.code` (`resource_not_found`, `method_not_allowed`, `not_acceptable`),
uma mensagem, uma dica de recuperação e o endereço desta documentação:

```json
{
  "error": {
    "status": 404,
    "code": "resource_not_found",
    "message": "O recurso /api/v1/xyz não existe nesta API.",
    "hint": "Consulte https://www.doutorfiscal.com/api/v1 para a lista de recursos.",
    "documentation": "https://www.doutorfiscal.com/desenvolvedores",
    "specification": "https://www.doutorfiscal.com/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.

## Arquivos de raiz

- [llms.txt](https://www.doutorfiscal.com/llms.txt): guia para agentes, com quando usar cada página.
- [sitemap.xml](https://www.doutorfiscal.com/sitemap.xml): todas as URLs indexáveis.
- [robots.txt](https://www.doutorfiscal.com/robots.txt): regras de rastreamento (tudo liberado).

## Uso justo

Nenhum limite de requisições é aplicado hoje, e `https://www.doutorfiscal.com/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.

## Empresa responsável

- **UNFLD** (UNFOLDING THE FUTURE LTDA) — CNPJ 62.855.761/0001-82
- Rua Avanhandava, 126, 10º andar, Edifício Cambuí — Bela Vista, São Paulo/SP, 01306-901, Brasil
- (43) 3422-8348 · hello@unfld.com.br
- WhatsApp Business: [(53) 99995-4138](https://wa.link/03wpz4)
- [UNFLD](https://www.unfld.com.br) · [Doutor Fiscal na UNFLD](https://www.unfld.com.br/doutor-fiscal)
