Integración de API

Integrar una API de terceros cuando la documentación no alcanza

Notas de campo sobre autenticación, reintentos y manejo de errores en integraciones con proveedores externos

Lectura de 8 minutos Soldier Dev Studio
Diagrama de flujo de integración de API junto a una terminal con logs

La documentación de una API rara vez cubre los casos que aparecen en producción. Límites de tasa que no coinciden con lo publicado, respuestas de error con formatos distintos según el endpoint, campos que cambian de nombre sin aviso en una versión menor. Cuando integras un proveedor de logística o una pasarela de pagos para una pyme, ese desfase entre lo documentado y lo real termina costando horas de soporte.

En este artículo repasamos cómo estructuramos una capa de integración en Node que aísla al resto del sistema de esas variaciones. La idea central es simple: el código de negocio no debería saber que existe un proveedor externo con sus rarezas. Todo lo que hable con el exterior pasa por un adaptador propio.

Reintentos con backoff exponencial

No todos los errores merecen un reintento. Un 400 por payload mal formado no se arregla repitiendo la llamada. Un 429 o un timeout de red sí. Distinguimos entre fallos transitorios y definitivos antes de decidir si volvemos a intentar, y aplicamos un backoff exponencial con jitter para no sincronizar reintentos entre workers.

Claves de idempotencia para no duplicar

Cuando un reintento llega después de que el proveedor ya procesó la operación original, el resultado puede ser un pedido duplicado o un cobro doble. Enviamos una clave de idempotencia generada por nosotros en cada request y la persistimos junto al estado de la operación. Si el proveedor la respeta, perfecto. Si no, al menos tenemos con qué reconciliar manualmente.

Logs que sirven a las tres de la mañana

Un log útil no es el que imprime el stack trace completo. Es el que permite reconstruir qué pasó sin abrir el código. Registramos el identificador de correlación, el endpoint, el código de respuesta, el tiempo de la llamada y el cuerpo de la respuesta cuando hay error. Nada de datos sensibles en claro, pero sí lo suficiente para saber si el problema fue nuestro, del proveedor o de la red.

Cuándo vale la pena un adaptador propio

Envolver una API externa en una capa propia tiene un costo: más código, más superficie que mantener. Vale la pena cuando el proveedor cambia con frecuencia, cuando hay varios consumidores internos del mismo servicio o cuando necesitamos traducir su modelo de datos al nuestro. No vale la pena cuando es una llamada puntual, aislada y sin probabilidad de repetirse. En ese caso, un cliente HTTP directo con manejo de errores básico es suficiente.

Autor del artículo

Integrar una API de terceros cuando la documentación no alcanza

Llevo once años construyendo y manteniendo capas de integración para equipos de operaciones. Empecé con scripts de sincronización entre ERPs y pasarelas de pago, y desde entonces casi todo mi trabajo gira alrededor de lo mismo: hacer que dos sistemas que no se conocen se hablen sin romperse cuando uno de los dos cambia.

En Soldier Dev Studio trabajo sobre todo con Node, Python y PostgreSQL, y dedico buena parte del tiempo a escribir adaptadores que aíslen al resto del sistema de las rarezas de cada proveedor externo. Este artículo salió de notas reales de proyectos con APIs de logística y cobros donde la documentación se quedaba corta.

Áreas donde suelo intervenir

  • Integración de APIs de terceros con reintentos y claves de idempotencia.
  • Auditorías de código y refactorización de módulos críticos.
  • Soporte técnico continuo con acuerdos de tiempo de respuesta.

Configuracion de cookiesUsamos cookies para mantener el sitio estable, recordar opciones basicas y entender que paginas resultan utiles. Puedes aceptar, rechazar o revisar la configuracion antes de continuar.