Conceitos

Convenções

Como os dados se escrevem: JSON, identificadores, datas, valores monetários, enumerações e campos nulos.

AssuntoConvenção
FormatoJSON em UTF-8, nos pedidos (Content-Type: application/json) e nas respostas. Um corpo noutro formato dá 415.
Nomes dos camposcamelCase («numeroContribuinte»). Os campos desconhecidos de um pedido são ignorados.
IdentificadoresUUID («01a12f68-f692-7d4d-8f54-377d674d730a»). São opacos: não os interprete nem os ordene.
Datas e horasISO 8601, em UTC nas respostas («2026-10-12T09:09:56.005Z»). Nos pedidos aceita-se um fuso («2026-10-12T10:09:56+01:00»).
DiasAAAA-MM-DD, sem hora, para vencimentos, períodos de relatório e datas de documento fiscal.
Valores monetáriosNúmeros decimais em Kwanzas (AOA), sem símbolo nem separador de milhares («14820.00» é 14 820 Kz). Aceita-se um número ou um texto numérico («"14820.00"»).
PercentagensDe 0 a 100 («14» é 14 %). O desconto de uma linha vai de 0 a 99.
QuantidadesNúmeros decimais; podem ter casas decimais nos artigos vendidos a peso ou a volume.
EnumeraçõesTexto, nunca números («"FacturaRecibo"», «"Pvp1"»). Cada pedido documenta os valores aceites.
Campos nulosPresentes e null nas respostas, nunca omitidos. Nos pedidos, um campo opcional pode omitir-se ou ir null.
TextoEm português de Portugal. As mensagens de erro podem mudar; o codigo é a parte estável.
CompressãoAs respostas vão comprimidas (gzip ou brotli) se o cabeçalho Accept-Encoding o pedir.
CacheTodas as respostas levam Cache-Control: no-store: são dados da empresa e não se guardam em caches intermédios.

#Tamanhos

  • Corpo de um pedido: até 2 MB.
  • Um documento: até 500 linhas e 10 pagamentos.
  • Uma página de uma listagem: de 1 a 200 itens (ver Paginação).
  • Mais limites em Limites.

#Cabeçalhos úteis

CabeçalhoSentidoPara que serve
X-Api-KeypedidoA chave de API.
Idempotency-KeypedidoTorna um pedido que cria algo seguro de repetir. Idempotência.
Idempotency-Replayedrespostatrue quando a resposta é a de um pedido anterior com a mesma Idempotency-Key.
X-Mucanda-Api-VersionrespostaA versão da API que respondeu (1). Versões.
Retry-AfterrespostaEm 429, os segundos a esperar antes de repetir.
LocationrespostaEm 201, o endereço do recurso criado (quando existe).
ETag / If-None-Matchresposta / pedidoSó em GET /api/catalogos: a versão do pacote e a pergunta «mudou?» (resposta 304).