Nfse.Adn (nfse v0.1.0)

Copy Markdown View Source

Distribuição de documentos pelo ADN (Ambiente de Dados Nacional). As funções são expostas por Nfse.

O ADN entrega ao contribuinte todo documento fiscal em que o CNPJ dele aparece (notas emitidas, notas recebidas e eventos como o cancelamento) numa fila numerada por NSU, em lotes de até 50. GET /contribuintes/DFe/{NSU} devolve os documentos depois do NSU pedido, então o next_nsu de um lote é o NSU da próxima chamada. Para importar notas, guarde o último next_nsu e continue dele.

O fim da fila pode chegar como 404 com NENHUM_DOCUMENTO_LOCALIZADO no corpo. Isso é sucesso (status: :no_documents); um 404 sem esse status é :not_found. O status do processamento vem do corpo: REJEICAO vira :rejected, com as mensagens de Erros.

Um documento do lote que não se consegue ler não derruba o lote nem trava o NSU: ele volta com document: nil e o motivo em error (veja Nfse.DistributedDocument). Um item cujo NSU não é inteiro volta do mesmo jeito, com error em {:invalid_nsu, valor}, e fica fora do next_nsu.

Um lote DOCUMENTOS_LOCALIZADOS sem nenhum NSU inteiro acima do pedido volta como %Nfse.Error{kind: :unexpected, details: {:stalled_nsu, nsu}}: seguir o next_nsu dele pediria o mesmo lote para sempre. stream_distribution/3 levanta esse erro como qualquer outro.

As chaves da resposta chegam em PascalCase (medido em produção em 25/10/2026) e a leitura aceita também camelCase.

O que não está confirmado

  • a resposta de GET /contribuintes/NFSe/{chave}/Eventos: o swagger só diz que devolve os eventos da chave, e a biblioteca assume o mesmo formato do lote da distribuição