stackin
Volver al blog
Integración

SDK Node

Una clase, cuatro métodos — issue, consult, cancel, reissue — tipados de extremo a extremo en TypeScript.

El SDK oficial de Node/TypeScript (npm install @stackin-io/stackin-node-sdk) envuelve la API REST en una sola clase Invoice. No hay nada más que instanciar: issue(), consult(), cancel() y reissue() son toda la superficie, y cada uno devuelve la respuesta de la propia API, no un modelo paralelo de ella.

Incluye sus propias declaraciones de tipos, así que DocumentType.NFE es un miembro de enum real y un tipo de documento mal escrito es un error de compilación, no un 422 de la API. Lo mismo aplica a br.Product y Address — los campos que exige la NF-e están en el tipo, así que un ncm ausente o una dirección de destinatario incompleta se detecta con tsc o con la validación local antes de enviar la petición.

La autenticación es una clave de API, idéntica a la API cruda, así que pasar del SDK a llamadas HTTP directas no requiere una credencial aparte. La clave resuelve la empresa emisora por completo — CNPJ, estado, certificado y entorno fiscal — y nada sobre el emisor se pasa nunca en una llamada.

Los errores llegan como tres clases distintas en lugar de un fallo genérico: ValidationError para lo que el SDK rechazó localmente, APIError con el código de estado y el detail de la propia API, y ConnectionFailedError cuando la petición nunca obtuvo respuesta. Las tres extienden InvoiceError, así que un solo catch sigue funcionando cuando no necesitas distinguirlas.

reissue() merece mención aparte porque su argumento no es una clave de acceso. Un envío fallido nunca recibió una, así que toma el id local de la factura — y consume cuota igual que una emisión nueva, razón por la cual el SDK deliberadamente no envuelve el método en un bucle de reintentos.

Requiere Node 18 o superior, ya que usa el fetch de la plataforma en vez de incluir un cliente HTTP. Cada petición respeta un timeout configurable, y la propia implementación de fetch es inyectable, que es lo que usa la suite de pruebas para ejecutarse sin red.

Consulta la sección de SDKs de la referencia de la API para comandos de instalación y ejemplos lado a lado, o el código en GitHub.