simcapture-sdk
Paquete npm que envuelve la API REST de SimCapture, plataforma de grabación y evaluación de simulación clínica, en un cliente tipado. Evita que cada servicio que la consume rehaga a mano el login, el manejo de axios y la forma de las respuestas.
Características
- Recursos tipados: organizaciones, reservas, cursos, escenarios, ubicaciones y simuladores
- Autenticación con caché del token y reintento transparente ante
401 SimCaptureErrorcon el estado real del upstream, no un400genérico para todo- Entradas simplificadas que se mapean a la forma real del API (
start→startTs,title→privateTitle, …) reservations.isAvailablepara comprobar disponibilidad por ventana de tiempo, ambiente, curso u organización- Build dual ESM/CJS con tsup y tipos
.d.tsgenerados - Publicación automatizada en npm mediante GitHub Actions
Tecnologías
TypeScript, Bun, axios, tsup, GitHub Actions.
Instalación
npm install simcapture-sdk
Ejemplo de Uso
import { SimCaptureClient, SimCaptureError } from "simcapture-sdk";
const sc = new SimCaptureClient({
apiUrl: process.env.SIMCAPTURE_API!,
inventoryUrl: process.env.SIMCAPTURE_INVENTORY_API!,
credentials: {
username: process.env.SIMCAPTURE_USER!,
password: process.env.SIMCAPTURE_PASSWORD!,
clientSubdomain: process.env.SIMCAPTURE_SUBDOMAIN!,
},
});
const reservations = await sc.reservations.findAll({
start: "2026-07-01T05:00:00.000Z",
end: "2026-12-31T05:00:00.000Z",
});
try {
await sc.reservations.findOne("bad-id");
} catch (error) {
if (error instanceof SimCaptureError) {
console.error(error.status, error.code, error.body);
}
}
Motivación
La integración bidireccional entre la plataforma del Centro Interdisciplinario de Simulación Avanzada y SimCapture necesitaba el mismo cliente en varios microservicios. Extraerlo a un paquete versionado eliminó la duplicación de la lógica de autenticación y dejó las respuestas del API tipadas en un solo lugar.