Documentação › Ferramentas
SDKs
SDKs de TypeScript e PHP e o que cada um cobre.
SDKs oficiais
| Linguagem | Pacote | Situação |
|---|---|---|
| Node.js / TypeScript | @sudrel/sdk (com a CLI sudrel) |
npm: npm install @sudrel/sdk |
| PHP 8.1+ | sudrel/sdk |
Packagist: composer require sudrel/sdk |
A API é REST simples e não exige SDK. O guia
Sua primeira nota tem exemplos em curl, C# e Delphi,
e Webhooks tem a verificação da assinatura em TypeScript,
PHP, Python e C#. Não há SDK de C#, Delphi, Python ou Ruby.
O que cada SDK cobre
| Recurso | TypeScript | PHP | Sem SDK (REST) |
|---|---|---|---|
| Emitir, validar, consultar e listar NFS-e | Sim | Sim | Sim |
Esperar a nota sair de transmitindo |
Sim (nfse.esperar) |
Sim (esperar) |
Consultando GET /v1/nfse/{id} |
| Cancelar, confirmar, XML, PDF | Sim | Sim | Sim |
| Substituir | Pelo bloco substituicao em emitir |
Pelo bloco substituicao em emitir |
Sim |
| Lotes: criar (JSON ou planilha), consultar, itens, emitir, reprocessar | Sim | Sim | Sim |
| Lotes: listar e relatório | Sim | Não | Sim |
| Empresas: listar e prontidão | Sim | Sim | Sim |
| Empresas: detalhar | Sim | Não | Sim |
| Empresas: criar, certificado, pausar, retomar, remover | Não | Não | Sim |
| Webhooks: criar, listar, alterar, remover, trocar segredo, testar, entregas, reenviar | Sim | Sim | Sim |
| Webhooks: detalhar um | Sim | Não | Sim |
| Verificar a assinatura do webhook | Sim | Sim | Exemplos em Webhooks |
| Log de eventos | Sim | Sim | Sim |
| Documentos recebidos, conta, consumo, NBS, parâmetros do município | Não | Não | Sim |
Os SDKs geram e reaproveitam a Idempotency-Key sozinhos, seguem a
paginação por cursor e devolvem a nota também quando o Sistema Nacional
rejeita (o 422 com nfse).
TypeScript
import { Sudrel } from '@sudrel/sdk';
const sudrel = new Sudrel(); // lê SUDREL_API_KEY
const nota = await sudrel.nfse.emitir({
empresa_id: process.env.EMPRESA!,
referencia: 'PED-1001',
tomador: { documento: '11222333000181' },
valor: '1500.00',
servico: { descricao: 'Consultoria em sistemas' },
});
console.log((await sudrel.nfse.esperar(nota.id!)).status);
A CLI do mesmo pacote encaminha os eventos da conta para um recebedor local, assinados como uma entrega de verdade, sem expor porta e sem cadastrar webhook:
npx -p @sudrel/sdk sudrel eventos seguir --encaminhar http://localhost:3000/webhook