SDK TypeScript / JavaScript
SDK completamente tipado construido con openapi-typescript y openapi-fetch. Compatible con Node.js 18+, Deno, Bun y navegadores modernos (usa fetch estándar).
npm: @ssddo/ecf-sdkGitHub
Instalación
bash
npm install @ssddo/ecf-sdk
Uso rápido
typescript
import { EcfClient } from "@ssddo/ecf-sdk";const client = new EcfClient({baseUrl: "https://api.test.ecfx.ssd.com.do",apiKey: "tu-api-key" // o usa la variable ECF_API_KEY});// Enviar un ECF con polling automáticoconst result = await client.sendEcf("rnc-empresa", ecfData);console.log(result.ImpresionUrl); // URL del QRconsole.log(result.CodSec); // Código de seguridadconsole.log(result.FechaFirma); // Fecha de firma
Opciones de Polling
El método sendEcf realiza polling automático con backoff exponencial. Puede personalizar el comportamiento:
typescript
const result = await client.sendEcf("rnc", ecfData, {initialDelay: 1000, // Delay inicial en msmaxDelay: 10000, // Delay máximo en msmaxRetries: 20, // Intentos máximosbackoffMultiplier: 1.5, // Multiplicador de backofftimeout: 120000, // Timeout total en mssignal: abortController.signal // AbortSignal opcional});
Cliente Frontend (Solo lectura)
Para aplicaciones frontend, use createFrontendClient que solo expone endpoints GET y maneja el ciclo de vida del token automáticamente (usa localStorage por defecto).
typescript
import { createFrontendClient } from "@ssddo/ecf-sdk";const frontend = createFrontendClient({baseUrl: "https://api.prod.ecfx.ssd.com.do",getToken: async () => {// Obtener token desde tu backendconst res = await fetch("/api/ecf-token");return (await res.json()).token;}});// Consultar estado de un ECFconst status = await frontend.raw.GET("/ecf/{trackId}", {params: { path: { trackId: "abc-123" } }});
Acceso directo a la API
Además del método sendEcf, puede acceder a cualquier endpoint directamente con tipado completo:
typescript
// GET con tipado de rutaconst { data } = await client.raw.GET("/company/{rnc}", {params: { path: { rnc: "123456789" } }});// POST con body tipadoconst { data: result } = await client.raw.POST("/ecf/send", {body: ecfPayload});
Métodos de conveniencia
El SDK incluye métodos de conveniencia para todas las operaciones: compañías, certificados, consultas ECF, DGII, recepción y API keys.