Documentação

API pública da CHOFF

A CHOFF publica duas APIs de escrita: a do formulário de contato e a da candidatura de Motorista fundador. Esta página é o service-doc anunciado no catálogo de APIs.

Catálogo de APIs

O catálogo segue a RFC 9727 e fica em /.well-known/api-catalog, servido como application/linkset+json. Cada entrada traz a descrição OpenAPI (service-desc), esta página (service-doc) e o endpoint de saúde (status).

POST /api/contato

Registra um contato de passageiro, empresa ou motorista. O corpo é JSON e todos os campos são obrigatórios, inclusive o turnstileToken: o endpoint valida o token no Cloudflare Turnstile antes de gravar qualquer coisa. O token só é emitido pelo widget da página de contato, então não há como chamar a API fora do site.

POST /api/contato HTTP/1.1
Host: choff.com.br
Content-Type: application/json

{
  "nome": "Ana Ribeiro",
  "telefone": "+55 61 99999-0000",
  "email": "ana@empresa.com.br",
  "perfil": "empresa",
  "motivo": "Mobilidade executiva para a diretoria.",
  "turnstileToken": "<token emitido pelo widget Turnstile>"
}

Resposta de sucesso:

{ "ok": true }

Em caso de erro, a resposta usa application/problem+json e o formato RFC 9457. Ela traz type, title, status, code, detail e resolution. O endpoint aceita somente POST com JSON de até 16 KiB. Os códigos atuais são json_invalido, media_type_nao_suportado, corpo_muito_grande, captcha_invalido, captcha_indisponivel, campos_invalidos, metodo_nao_permitido, erro_interno, api_nao_encontrada e api_indisponivel. Campos inválidos retornam HTTP 422; falhas de dependência retornam HTTP 503. O campo perfil aceita passageiro, empresa ou motorista.

POST /api/motorista

Registra uma candidatura de Motorista fundador na lista de espera para contato manual da equipe — não cria conta nem garante contratação. Assim como o contato, exige o turnstileToken, emitido só pelo widget da página de motoristas, e segue os mesmos limites e erros. Com veiculo igual a sim, os campos tipoVeiculo, blindado, modelo, ano e cor são obrigatórios; com nao, ficam de fora. idiomas, cursos, origem e observacao são opcionais. Os valores aceitos em cada lista estão no OpenAPI. Quando as candidaturas estão fechadas, o endpoint responde HTTP 404.

POST /api/motorista HTTP/1.1
Host: choff.com.br
Content-Type: application/json

{
  "nome": "Ana Ribeiro",
  "telefone": "+55 61 99999-0000",
  "email": "ana@exemplo.com",
  "uf": "DF",
  "cidade": "Brasília",
  "cnhCategoria": "D",
  "cnhEar": "sim",
  "cnpj": "mei",
  "veiculo": "sim",
  "tipoVeiculo": "suv",
  "blindado": "nao",
  "modelo": "Corolla Cross",
  "ano": 2023,
  "cor": "Preto",
  "experiencia": "2_a_5_anos",
  "disponibilidade": "parcial",
  "idiomas": ["ingles"],
  "cursos": ["direcao_defensiva"],
  "turnstileToken": "<token emitido pelo widget Turnstile>"
}

GET /api/status

Responde { "status": "ok" } com HTTP 200 enquanto a API e o banco respondem, e { "status": "degradado" } com HTTP 503 quando o banco está indisponível.

Descrição OpenAPI

O documento OpenAPI 3.1 completo está em /api/openapi.json.

Para agentes

Para conversar com a CHOFF, prefira o WhatsApp +55 11 93623-8436 — a API de contato existe para o formulário do site. O conteúdo das páginas está disponível em Markdown: basta enviar Accept: text/markdown, ou consultar o /llms.txt — inclusive as páginas de motorista particular, mobilidade para empresas e parceria com motoristas.