Skip to content

Release v5.1.0#40

Merged
andrenfe merged 6 commits into
masterfrom
release/v5.1.0
Jul 3, 2026
Merged

Release v5.1.0#40
andrenfe merged 6 commits into
masterfrom
release/v5.1.0

Conversation

@andrenfe

@andrenfe andrenfe commented Jul 3, 2026

Copy link
Copy Markdown
Member

Release v5.1.0 (minor)

Reúne tudo desde a v5.0.0 e faz a bump de versão. Publicação não é automática por merge — o publish.yml dispara ao criar a GitHub Release (com a tag v5.1.0); este PR só prepara o código.

Destaque — fix do contrato de webhooks de conta

Sonda ao vivo (2026-07-02/03, 3 contas) provou que o contrato de webhooks divergia da API:

  • /v1/companies/{id}/webhooks (company-scoped) retorna 404 em todas as contas — contrato alucinado no rewrite v3, nunca existiu na API, nos specs ou no SDK legado v2. Métodos marcados @deprecated (comportamento inalterado; remoção na próxima major).
  • createAccountWebhook funcionava 0% das vezes: faltava o envelope { "webHook": {...} } exigido no request (a API respondia 400 incondicional). Corrigido nos dois sentidos (wrap no request, unwrap na resposta, com fallback defensivo) em create/update/retrieve.
  • Tipo AccountWebhook novo com o shape real (uri/contentType/secret/filters/insecureSsl/headers/properties/status) — já presente nos specs oficiais e nos tipos gerados; o resource manuscrito só não os consultava.
  • Tipo WebhookEventType substitui os literais invoice.* (inexistentes) pelos 46 event types reais (service_invoice.*, product_invoice.*, consumer_invoice.*).
  • Achado da contraprova: PUT /v2/webhooks/{id} é substituição integral — update sem status desativa o webhook. Documentado no JSDoc do updateAccountWebhook.
  • Teste de alinhamento amarrando AccountWebhook ao schema gerado do spec — sync de spec que mude o contrato quebra o build em vez de driftar.

Docs, exemplos e a skill nfeio-node-sdk atualizados para o fluxo account-scoped.

Semver — minor

Adiciona tipos exportados novos + deprecations não-quebráveis. A troca de assinatura de createAccountWebhook é breaking só no papel (o método respondia 400 sempre; nenhum consumidor funcional existe). Nada de major.

Commits neste PR

  • chore(release): v5.1.0 — bump nos 4 pontos (package.json, VERSION, PACKAGE_VERSION, @version) + datação e links do CHANGELOG
  • fix(webhooks): corrigir contrato de webhooks de conta contra a API real
  • chore de higiene (.gitignore, remoção de config/context obsoletos) — já commitados na master local, sobem junto

Verificação

  • typecheck limpo · type-tests 2/2 · build ESM+CJS OK
  • suíte completa: 3470 passed, 0 falhas
  • dist/ expõe 5.1.0

Pós-merge (manual — gatilho do publish)

git tag v5.1.0 <sha-do-merge> && git push --tags
# criar a GitHub Release apontando pra v5.1.0 → dispara publish.yml (npm publish com provenance)

andrenfe added 6 commits July 3, 2026 12:29
Sonda ao vivo (2026-07-02/03, 3 contas) provou que o contrato de webhooks
divergia da API em dois pontos:

- /v1/companies/{id}/webhooks (métodos company-scoped) retorna 404 em
  todas as contas testadas. Contrato alucinado no rewrite v3, nunca
  existiu na API, nos specs ou no SDK legado v2. Métodos marcados
  @deprecated (comportamento inalterado, remoção na próxima major).
- createAccountWebhook/updateAccountWebhook/retrieveAccountWebhook
  (v5.0.0) ignoravam o envelope { "webHook": {...} } exigido pela API:
  create sem envelope sempre respondia 400. Corrigido nos dois sentidos
  (wrap no request, unwrap na resposta, com fallback defensivo).

Tipo AccountWebhook novo com o shape real (uri/contentType/secret/
filters/insecureSsl/headers/properties/status), já presente nos specs
oficiais (nf-servico-v1.yaml e equivalentes) e nos tipos gerados —
o resource manuscrito só não os consultava. WebhookEventType substitui
os literais invoice.* (inexistentes na API) pelos 46 event types reais
(service_invoice.*, product_invoice.*, consumer_invoice.*).

Achado da contraprova: PUT /v2/webhooks/{id} é substituição integral —
update sem `status` desativa o webhook. Documentado no JSDoc do
updateAccountWebhook com exemplo partindo do retrieve.

Teste de alinhamento (tests/types/account-webhook-alignment.test-d.ts)
amarra o AccountWebhook ao schema gerado do spec, para que um sync de
spec que mude o contrato quebre o build em vez de driftar em silêncio.

Docs, exemplos e a skill nfeio-node-sdk atualizados para o fluxo
account-scoped.
Bump de versão para 5.1.0 (minor) nos 4 pontos (package.json, VERSION, PACKAGE_VERSION, @Version) e datação do CHANGELOG.

Conteúdo da release: fix do contrato de webhooks de conta (3ffe83f) — envelope webHook no request/response, tipos AccountWebhook/WebhookEventType, deprecation dos métodos company-scoped (404 confirmado em 3 contas), teste de alinhamento com o spec gerado.
@github-actions

github-actions Bot commented Jul 3, 2026

Copy link
Copy Markdown

📋 OpenAPI Spec Validation

✅ All specs validated and types generated successfully

Specs processed:

  • calculo-impostos-v1.yaml - 27.90 KB, 853 lines
  • consulta-cnpj.yaml - 34.28 KB, 1128 lines
  • consulta-cpf.yaml - 3.39 KB, 83 lines
  • consulta-cte-v2.yaml - 18.33 KB, 578 lines
  • consulta-endereco.yaml - 11.17 KB, 343 lines
  • consulta-nf-consumidor.yaml - 43.41 KB, 1279 lines
  • consulta-nf.yaml - 137.87 KB, 3119 lines
  • consulta-nfe-distribuicao-v1.yaml - 53.07 KB, 1775 lines
  • nf-consumidor-v2.yaml - 293.87 KB, 7609 lines
  • nf-produto-v2.yaml - 309.41 KB, 8204 lines
  • nf-servico-v1.yaml - 257.42 KB, 6252 lines
  • nfeio.yaml - 15.86 KB, 630 lines
  • product-invoice-rtc-v1.yaml - 198.88 KB, 5084 lines
  • service-invoice-rtc-v1.yaml - 95.30 KB, 1728 lines

Generated types available as artifact in src/generated/.

@andrenfe andrenfe self-assigned this Jul 3, 2026
@andrenfe andrenfe merged commit cb6dab0 into master Jul 3, 2026
13 checks passed
@andrenfe andrenfe deleted the release/v5.1.0 branch July 3, 2026 15:54
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant