Changelog
Formato baseado em Keep a Changelog e versionamento em SemVer.
[Unreleased]
[1.0.1] - 2026-07-03
Documentação
- Adiciona badges no
README(versão da gem, CI, versão do Ruby e licença).
Schemas
- Atualiza o schema da NFS-e Nacional com o campo
codigo_cib_obra(CIB da obra) e ajusta ocodigo_cib_imovelconforme a reforma tributária.
[1.0.0] - 2026-07-03
Primeira versão pública. Cliente Ruby não-oficial para a API da Focus NFe, sem dependências de runtime (apenas a stdlib).
Cliente e configuração
FocusNfe::Clientcom dois modos que coexistem: configuração global (FocusNfe.configure) para aplicações de uma empresa só, e instâncias independentes para cenários multi-empresa.- Dois tokens da Focus NFe separados:
Configuration#token_empresa(emissão/consulta de documentos e gestão por empresa) eConfiguration#token_conta(consultas auxiliares e gestão de empresas). O cliente mantém uma conexão por token e roteia cada recurso para a correta; acessar um recurso sem o token exigido levantaConfigurationErrorantes de qualquer ida à rede. - Ambientes
:homologacaoe:producao, resolvidos para a URL base correta. timeout,loggere adaptador HTTP configuráveis; adaptador padrão sobrenet/http, sem gems externas.- Erros tipados por status HTTP (
FocusNfe::Errors::*) a partir deFocusNfe::Error, com o corpo da resposta preservado.
Documentos emitidos
- Recursos
nfe,nfce,nfse,nfse_nacional,cte,cte_os,mdfe,nfcom,dceenfgas. - Operações fiscais conforme cada documento:
emitir,consultar,cancelar,inutilizar, carta de correção e demais eventos, além de download dos XMLs e do DANFE/DACTE quando disponível. - Eventos próprios do MDF-e:
Mdfe#encerrar,Mdfe#incluir_condutoreMdfe#incluir_dfe, devolvendoModelos::Documento. - Respostas devolvidas como
Modelos::Documento(eModelos::Inutilizacaopara inutilizações).
Documentos recebidos
- Recursos
nfes_recebidas,ctes_recebidasenfses_nacionais_recebidas. - Listagem com sincronização incremental paginada (
Modelos::Pagina), consulta, manifestação do destinatário, eventos e download dos XMLs (documento e eventos).
APIs auxiliares (token da conta)
- Consultas somente leitura
ceps,municipios,cfops,cnaes,ncmsecnpjs.
APIs de gestão
empresas(token da conta) para cadastro e manutenção de empresas.webhooks,emails_bloqueadosebackups(token da empresa).
Webhooks inbound
FocusNfe::Webhook.parse(raw_body)devolve umModelos::Documento.FocusNfe::Webhook.autenticado?(headers:, authorization:, authorization_header:)valida a chamada comparando o header recebido com oauthorizationdo gatilho em tempo constante. IncluiModelos::Documento.from_payloade o erroErrors::WebhookError.
Validação client-side (opt-in)
- Esquemas de campos (
FocusNfe::Esquemas::*) derivados decampos.focusnfe.com.bre empacotados emdata/schemas/, com validação opcional na emissão (emitir(..., validar: true)).
Qualidade
- Assinaturas de tipo RBS (
sig/) verificadas por Steep e documentação YARD em português nas APIs públicas.