API history
Every contract change, dated, with what integrators must do.
The history below is the same file the platform publishes, read from live code. Rows flagged "action required" need a change in your integration.
| Date | Version | Change | Action required | What to do |
|---|---|---|---|---|
| 2026-10-17 | 1.99.0 | Objetos têxteis na v1: leitura (offset e incremental por desde/depoisDe) de /rolos, /lotes, /remessas, /ordens-producao, /fichas-tecnicas e /taloes, sem valor monetário; escrita POST /remessas (rolos da empresa para o beneficiador) e POST /apontamentos (produção boa, refugo e horas numa ordem de produção), com Idempotency-Key. A leitura e a escrita desses recursos exigem que o dono da chave tenha acesso à tela correspondente (403 com o motivo). Webhooks novos: remessa.criada e apontamento.criado. Referência de outra empresa = 422; POST /remessas com rolo que já saiu em outra remessa (inclusive na corrida de duas chamadas) = 409, sem nada gravado (ADR-0275). | Opcional. Para sincronizar rolos ou OPs, use GET /rolos?desde=<ISO> e repita com proximoDesde/proximoId. Se receber 403, conceda ao dono da chave o acesso à tela indicada. | |
| 2026-09-29 | 1.90.0 | GET /api/v1/analitico/{dataset} sem `colunas` passa a devolver só as colunas do dataset: os campos criados pela empresa (chave cc_*, marcados `campoDaEmpresa=true` no catálogo) só vêm quando pedidos pelo nome em `colunas`. Campo sensível segue a regra da tela: sem Ver Valores fica fora da resposta e também não filtra nem agrupa (volta em `ignorados`). O MCP (consultar_dataset_bi) segue a mesma regra. | Action required | Se a sua integração lia campos da empresa (cc_*) sem informar `colunas`, passe a pedi-los pelo nome: colunas=cliente,valor,cc_centro_de_custo. |
| 2026-09-19 | 1.79.0 | GET /api/v1/analitico/{dataset} aceita formato=csv, colunas, filtros (campo=valor;campo2>valor2;campo3~contem), agrupamento, funcao, pagina e tamanho (paginação sobre o conjunto consultado: a resposta traz pagina, tamanho, totalNaConsulta e temMais), e fonte=snapshot; o catálogo /analitico inclui os datasets criados pela empresa e declara `filtravel`. As regras de LINHA do grupo do dono da chave passam a ser aplicadas antes de qualquer filtro (a resposta declara `regrasDeLinhaAplicadas`), e cada consulta entra na trilha de auditoria. O MCP ganhou listar_datasets_bi, consultar_dataset_bi e metricas_do_dataset_bi. | Opcional. Se o dono da chave tiver regras de linha no BI, o dataset pela API passa a vir recortado como no painel — confira `regrasDeLinhaAplicadas` se um total mudar. | |
| 2026-09-01 | 1.71.0 | POST sem cabeçalho Idempotency-Key passa a ser RECUSADO com 400 a partir de 01/12/2026. Até lá a resposta traz os cabeçalhos Warning e X-Api-Aviso. | Action required | Envie Idempotency-Key (um UUID por operação) em todo POST. Retry com a mesma chave é seguro — o servidor deduplica. |
| 2026-09-01 | 1.71.0 | Novo endpoint GET /api/v1/changelog — este histórico, legível por máquina. | Opcional: monitore breaking=true no seu pipeline de integração. | |
| 2026-08-23 | 1.69.0 | Datasets analíticos curados em GET /api/v1/analitico (catálogo) e /api/v1/analitico/{dataset} — para BI externo sem data warehouse paralelo. Colunas monetárias não saem (a chave de API não tem identidade para a governança Ver Valores). | — | |
| 2026-08-23 | 1.69.0 | Leitura incremental por cursor em todos os recursos de leitura (?cursor=), além do offset compatível. | Prefira cursor para sincronizações — offset em coleção que cresce pula/duplica páginas. |