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
refactor(config): unifica addressApiKey e cteApiKey em dataApiKey
Consolida as chaves de API separadas para serviços de consulta
(addressApiKey e cteApiKey) em uma única propriedade dataApiKey,
simplificando a configuração do SDK e refletindo a arquitetura
real da API NFE.io (duas categorias: fiscal e consulta).
Motivação:
- A API NFE.io utiliza apenas duas categorias de chave: uma para
operações fiscais (NFS-e, Companies, etc.) e outra para todos
os serviços de consulta (Endereços, CT-e, CNPJ, CPF)
- Ter chaves separadas (addressApiKey, cteApiKey) adicionava
complexidade desnecessária sem benefício real
- A unificação prepara o SDK para futuros serviços de consulta
que usarão a mesma chave
Alterações em tipos (src/core/types.ts):
- NfeConfig: remove addressApiKey e cteApiKey, adiciona dataApiKey
- RequiredNfeConfig: idem, mantendo tipagem string | undefined
Alterações no client (src/core/client.ts):
- Remove resolveAddressApiKey() e resolveCteApiKey()
- Adiciona resolveDataApiKey() com cadeia de fallback:
config.dataApiKey → config.apiKey → NFE_DATA_API_KEY → NFE_API_KEY
- getAddressHttpClient() e getCteHttpClient() usam resolveDataApiKey()
- validateAndNormalizeConfig() normaliza dataApiKey ao invés de duas
- updateConfig() preserva cache de dataApiKey ao invés de duas
- Mensagens de erro atualizadas para referenciar dataApiKey
- JSDoc atualizado nos getters addresses e transportationInvoices
Alterações em resources:
- addresses.ts: JSDoc atualizado para referenciar dataApiKey
- transportation-invoices.ts: JSDoc atualizado para referenciar dataApiKey
Alterações em testes:
- tests/unit/client-multikey.test.ts: reescrito (38 testes)
- Testa cadeia de fallback para Addresses e CT-e via dataApiKey
- Testa que ambos services resolvem a mesma chave
- Testa uso isolado de dataApiKey sem apiKey
- Testa que NFE_ADDRESS_API_KEY e NFE_CTE_API_KEY não são mais
reconhecidas (breaking change documentada)
- tests/integration/addresses.integration.test.ts: atualizado
Alterações em documentação:
- README.md: config examples, tabela env vars (2 vars ao invés de 3),
notas sobre Address API e CT-e
- docs/API.md: NfeConfig type, nota do recurso CT-e
Alterações em exemplos:
- examples/setup.js: template .env.test usa NFE_DATA_API_KEY
- examples/address-lookup.js: config e env vars atualizados
- examples/transportation-invoices.js: config e env vars atualizados
Arquivos gerados (src/generated/):
- Timestamps atualizados pela regeneração do openapi-typescript
Validação:
- TypeScript: zero erros (npx tsc --noEmit)
- Testes: 381 passed, 47 skipped (integration)
- Build: ESM + CJS + DTS gerados com sucesso
BREAKING CHANGE: addressApiKey e cteApiKey foram removidos de NfeConfig.
Use dataApiKey para configurar a chave de serviços de consulta.
As variáveis de ambiente NFE_ADDRESS_API_KEY e NFE_CTE_API_KEY foram
substituídas por NFE_DATA_API_KEY.
> **Nota:** A API de Endereços usa um host separado (`address.api.nfe.io`). Você pode configurar uma chave API específica com `addressApiKey`, ou o SDK usará `apiKey` como fallback.
363
+
> **Nota:** A API de Endereços usa um host separado (`address.api.nfe.io`). Você pode configurar uma chave API específica com `dataApiKey`, ou o SDK usará `apiKey` como fallback.
364
364
365
365
#### 🚚 Notas de Transporte - CT-e (`nfe.transportationInvoices`)
> **Nota:** A API de CT-e usa um host separado (`api.nfse.io`). Você pode configurar uma chave API específica com `cteApiKey`, ou o SDK usará `apiKey` como fallback.
423
+
> **Nota:** A API de CT-e usa um host separado (`api.nfse.io`). Você pode configurar uma chave API específica com `dataApiKey`, ou o SDK usará `apiKey` como fallback.
424
424
425
425
**Pré-requisitos:**
426
426
- Empresa deve estar cadastrada com certificado digital A1 válido
Manage CT-e (Conhecimento de Transporte Eletrônico) documents via SEFAZ Distribuição DFe.
1515
1515
1516
-
> **Note:** This resource uses a separate API host (`api.nfse.io`). You can configure a specific API key with `cteApiKey`, or the SDK will use `apiKey` as fallback.
1516
+
> **Note:** This resource uses a separate API host (`api.nfse.io`). You can configure a specific API key with `dataApiKey`, or the SDK will use `apiKey` as fallback.
1517
1517
1518
1518
**Prerequisites:**
1519
1519
- Company must be registered with a valid A1 digital certificate
0 commit comments