You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
This commit was created on GitHub.com and signed with GitHub’s verified signature.
Adicionado
Nfe::Client.new(api_key:) — entrypoint por instância (estilo Stripe), com fallback de
credencial via ENV["NFE_API_KEY"] / ENV["NFE_DATA_API_KEY"] (o argumento explícito vence).
Modelos imutáveis Data.define gerados a partir das specs OpenAPI, com assinaturas RBS
(sig/**/*.rbs) verificáveis pelo Steep e empacotadas na gem para type-check no consumidor.
Contrato assíncrono 202 discriminado: create retorna um *Pending
(pending? -> true/issued? -> false) ou um *Issued (issued? -> true); polling via retrieve até Nfe::FlowStatus.terminal?(flow_status).
Emissão RTC com tributos IBS/CBS/IS (service_invoices_rtc, product_invoices_rtc).
Verificação de webhook HMAC-SHA1 sobre os bytes crus da requisição
(Nfe::Webhook.verify_signature, comparação timing-safe, nunca levanta exceção) e Nfe::Webhook.construct_event.
Retry com backoff configurável (max_retries) para falhas transitórias.
Downloads binários (String ASCII-8BIT) para a maioria dos recursos; exceção: product_invoices e product_invoices_rtc retornam Nfe::NfeFileResource (value object {uri}).
Nfe::DateNormalizer para normalização consistente de datas.
Modelo de duas chaves (api_key + data_api_key) com seleção automática por família de recurso.
Alterado
Namespace unificado em Nfe.
Piso de Ruby elevado para 3.2+.
Paginação suporta os dois estilos da API: por página (service_invoices) e por cursor
(product/consumer/state_taxes), via Nfe::ListResponse/Nfe::ListPage.
Configuração migrada da API global para Nfe::Client por instância — ver MIGRATION.md.
Removido
Dependência de runtime rest-client.
Configuração global Nfe.api_key.
Classes achatadas da série 0.3.x (ex.: Nfe::ServiceInvoice.company_id(...).create),
preservadas no branch 0.x-legacy.