Integraciones
Integración de APIs de terceros: autenticación, reintentos y mantenimiento
Conectar con la API de una pasarela de pago, un transportista, un proveedor de firma o una administración pública parece sencillo en la documentación. Lo difícil llega después: credenciales que caducan, límites de uso, respuestas lentas, versiones que se retiran y cambios que nadie avisó. Esta guía repasa las decisiones técnicas que hacen que una integración con un tercero siga funcionando dentro de unos años.
- Publicado
- Revisado
- Lectura
- 6 min
- Por
- colectivedata
Una dependencia que no controlas
Cuando integras dos sistemas propios, puedes coordinar cambios entre ellos. Con un tercero no: su API evoluciona según su calendario, sus incidencias afectan a tu servicio y sus condiciones pueden cambiar. Por eso el diseño debe partir de dos ideas. La primera, que la API externa fallará en algún momento y tu sistema debe degradarse con dignidad. La segunda, que los datos que devuelve no son de fiar por el mero hecho de venir de un proveedor conocido.
Esa segunda idea aparece de forma explícita en el OWASP API Security Top 10 de 2023, que incluye el riesgo «consumo inseguro de APIs»: los equipos tienden a confiar más en los datos de integraciones de terceros que en la entrada de los usuarios, y eso relaja controles que deberían mantenerse. Validar formato, tamaño y contenido de cada respuesta es tan necesario como validar un formulario.
Autenticación y secretos
Cada proveedor elige su mecanismo: claves de API estáticas, OAuth 2.0 con credenciales de cliente, certificados de cliente o firmas de cada petición. En OAuth 2.0, el marco descrito en la RFC 6749, la concesión por credenciales de cliente es la habitual para integraciones entre servidores, y los tokens de acceso caducan, de modo que tu sistema tiene que obtener uno nuevo sin intervención humana. Sea cual sea el mecanismo, las decisiones de diseño son parecidas.
- Guardar credenciales en un gestor de secretos o almacén cifrado, nunca en el código ni en ficheros del repositorio.
- Usar credenciales distintas para pruebas y producción, y si el proveedor lo permite, una por integración.
- Pedir los permisos mínimos: si solo consultas envíos, la credencial no debería poder crear ni cancelar.
- Planificar la rotación: quién la hace, con qué periodicidad y cómo se despliega sin cortar el servicio.
- Vigilar fechas de caducidad de certificados y avisar con antelación suficiente.
- Registrar el uso de cada credencial para detectar llamadas inesperadas.
Límites de uso: respetar las cuotas del proveedor
Casi todas las APIs públicas imponen límites: peticiones por segundo, por minuto o por día, tamaño máximo de lote o número de conexiones simultáneas. Cuando se superan, el estándar HTTP prevé el código 429, definido en la RFC 6585, que puede acompañarse de una cabecera Retry-After indicando cuánto esperar. Algunos proveedores además facturan por llamada, por lo que un bucle descontrolado puede costar dinero, algo que OWASP también señala en su riesgo de consumo de recursos sin restricciones.
- Leer las cuotas en la documentación y en el contrato, y diseñar el volumen previsto por debajo con margen.
- Aplicar un limitador en tu lado para no depender de que el proveedor te frene.
- Agrupar operaciones cuando la API ofrece endpoints por lotes.
- Guardar en caché las respuestas que cambian poco, como catálogos o tablas de códigos.
- Separar el tráfico urgente del diferible para que una sincronización masiva no bloquee operaciones de usuario.
Reintentos e idempotencia
Un fallo temporal, como un tiempo de espera agotado o un error 503, invita a reintentar. Pero reintentar sin criterio puede empeorar las cosas: saturar a un proveedor que ya tiene problemas, o duplicar una operación que en realidad sí se completó. La guía sobre cómo conectar un MES con un ERP explica la idempotencia en mensajes internos; con terceros, la diferencia es que dependes de lo que ofrezca su API.
| Situación | ¿Reintentar? | Cómo |
|---|---|---|
| Error de red o tiempo agotado | Sí, con cuidado | Esperas crecientes con variación aleatoria y número máximo de intentos |
| 429 demasiadas peticiones | Sí | Respetar Retry-After si existe; si no, espera creciente |
| Errores 5xx del servidor | Normalmente sí | Límite de intentos y paso a cola de errores al agotarlos |
| 400 petición incorrecta o 422 | No | Registrar, avisar y corregir los datos de origen |
| 401 o 403 sin autorización | No, salvo renovar token | Renovar el token una vez; si persiste, alertar |
| Respuesta ambigua en una operación con efecto | Solo si es idempotente | Consultar antes el estado o usar una clave de idempotencia si el proveedor la admite |
Para operaciones con efecto económico o legal, como un cobro o el envío de un documento a una administración, lo prudente es asignar un identificador propio a cada operación, guardarlo antes de llamar y, ante una respuesta dudosa, consultar al proveedor si esa operación ya existe. Si su API no permite consultarlo, conviene dejar el caso en una bandeja de revisión en lugar de reintentar a ciegas.
Cambios de versión: la API de hoy no será la de mañana
Los proveedores publican versiones nuevas, marcan las antiguas como obsoletas y acaban retirándolas. También hacen cambios menores que consideran compatibles, como añadir campos o nuevos valores en un estado, y que pueden romper un cliente que no los esperaba. La defensa principal es aislar la integración detrás de un adaptador propio: el resto de tu sistema trabaja con tu modelo de datos y solo el adaptador conoce la API externa.
- Fijar explícitamente la versión de la API que se usa, si el proveedor lo permite.
- Tolerar campos desconocidos y valores nuevos en enumeraciones sin romper el procesamiento.
- Suscribirse a los avisos de cambios del proveedor y asignar a alguien su lectura.
- Mantener pruebas automáticas contra el entorno de pruebas del proveedor y ejecutarlas periódicamente, no solo al desplegar.
- Anotar en el inventario de integraciones la fecha de retirada anunciada de cada versión en uso.
Monitorización: enterarse antes que el usuario
Una integración con un tercero puede fallar en silencio: el proveedor responde, pero con datos vacíos, o un webhook deja de llegar sin error alguno. La monitorización debe vigilar tanto los fallos visibles como las ausencias.
- Tasa de errores y latencia por endpoint, con umbrales de alerta razonables.
- Tiempo desde el último mensaje o webhook recibido, para detectar silencios anómalos.
- Tamaño de la cola de reintentos y de la bandeja de errores pendientes de revisión.
- Consumo frente a la cuota contratada.
- Registro de cada petición y respuesta con un identificador de correlación, cuidando no guardar datos sensibles innecesarios.
Contratos y condiciones: lo que no está en la documentación técnica
Parte del riesgo de una integración se gestiona en el contrato, no en el código. Antes de depender de un proveedor para una función crítica conviene revisar qué compromete por escrito y qué no.
- Nivel de servicio comprometido, si existe, y qué compensación o recurso hay si no se cumple.
- Plazo de preaviso ante cambios incompatibles o retirada de versiones.
- Condiciones de uso de los datos que envías: finalidad, retención, ubicación y subencargados, especialmente si son datos personales.
- Límites de uso incluidos y coste de superarlos.
- Qué ocurre al terminar la relación: exportación de datos y periodo de transición.
La valoración jurídica corresponde a vuestra asesoría, pero conviene que el equipo técnico participe: sabe qué compromisos son relevantes para el diseño y cuáles no.
Criterios de decisión
- ¿Qué ocurre en tu negocio si la API no responde durante una hora? ¿Hay un modo degradado definido?
- ¿Están las credenciales en un almacén seguro, con permisos mínimos y rotación planificada?
- ¿Se conocen las cuotas y hay un limitador propio por debajo de ellas?
- ¿Las operaciones con efecto tienen identificador propio y una regla clara ante respuestas ambiguas?
- ¿La integración está aislada tras un adaptador y cubierta por pruebas periódicas?
- ¿Alguien lee los avisos de cambios del proveedor y vigila los silencios, no solo los errores?
- ¿El contrato cubre preaviso, tratamiento de datos y salida?
Cada «no» es una partida de mantenimiento futura. No siempre hay que resolverlas todas al principio, pero sí saber cuáles se aceptan y quién se ocupará de ellas.
Fuentes
- OWASP Top 10 API Security Risks – 2023 — OWASP Foundation
- RFC 6749: The OAuth 2.0 Authorization Framework — IETF
- RFC 6585: Additional HTTP Status Codes — IETF
Contenido informativo elaborado por colectivedata. No sustituye un análisis específico de tu caso.
Relacionado
- CapacidadIntegración de sistemasConexiones entre aplicaciones que mueven datos con reglas claras, detectan errores y permiten saber qué versión de cada dato es la buena.
- ServicioIntegraciones y automatizaciónConectamos aplicaciones, datos y tareas para que la información circule sin depender de procesos manuales.
Más sobre integraciones
Todo el conocimiento- Cómo calcular el coste de una integración entre sistemas«Conectar el ERP con la tienda» puede ser una tarea de pocos días o un proyecto de meses, y la diferencia rara vez está en la tecnología elegida.
- Cómo conectar un MES con un ERPEl ERP decide qué hay que fabricar y cuánto cuesta; el MES sabe qué se está fabricando de verdad, con qué material y con qué incidencias.
- ERP a medida frente a ERP comercial: cómo decidirLa pregunta casi nunca es «a medida o comercial» en abstracto, sino qué parte de vuestra operación es estándar y qué parte os distingue.
¿Tienes un proyecto parecido? Cuéntanos qué necesitas.