¿Hay una spec OpenAPI?+
Sí. Entregamos una spec OpenAPI 3.1 que cubre todos los endpoints públicos más los payloads de webhooks. Se entrega como parte del pack completo de integración después de que revisamos el request — importala a Postman, Insomnia, openapi-generator, oapi-codegen o cualquier herramienta que consuma OpenAPI. El pack completo se entrega solo a integradores cualificados; pedí acceso por el formulario de contacto.
¿Necesito un SDK o puedo usar HTTP crudo?+
HTTP crudo está soportado completo y es el path recomendado. Sin SDK lock-in. El pack trae code samples ejecutables en curl, Node.js, Python, Go (verificación de firma) y PHP — copialos en tu proyecto y deployás. Cualquier cliente HTTP (axios, fetch, requests, httpx, Guzzle, Go net/http) funciona.
¿Cómo recibo webhooks durante desarrollo local?+
Usá ngrok, Cloudflare Tunnel o localtunnel para exponer tu localhost por HTTPS. Para testing offline repetible, el pack incluye un script `replay-firma.sh` que re-firma un payload capturado con tu secret de dev, así iterás sin esperar un dispatch real.
¿Qué pasa si mi endpoint webhook está caído por horas?+
BD-API reintenta con backoff exponencial (1s / 2s / 4s, 3 intentos) por dispatch. Después del fallo completo, la fila del dispatch queda en el pool de fallidos y el próximo tick del CRON la reevalúa mientras `retry_count < 3`. Después del fallo permanente, el evento queda queryable via REST API para que hagas backfill manual. Los receivers deben ser idempotentes — el mismo `event_id` puede llegar más de una vez.
¿Cómo se scopea la license key?+
Cada license key autentica exactamente una instalación. Queries cross-installation no son direccionables. Para integraciones multi-tenant, pedí una key por tenant si necesitás aislamiento del lado BD-API, o una key con atribución de tenant manejada dentro de tu aplicación.
¿Y los rate limits en los endpoints /api/versions/*?+
Diseñados para polling diario por instalación. No hay rate limit hostil en esta superficie hoy — polling de mayor frecuencia está soportado (hasta una vez por minuto está bien para integration testing) pero patrones de producción deberían quedar cerca del diario, porque la fuente CosIng upstream no se actualiza más rápido.
¿Cuántas fuentes regulatorias cubre BD-API?+
Cinco fuentes activas, dos canales de integración. CosIng se entrega como patches SQL firmados incrementales via REST pull. EC Publications (Diario Oficial UE via EC Drupal), opiniones SCCS, alertas Safety Gate y actos EUR-Lex se entregan como webhooks firmados HMAC. Te suscribís por fuente — no hace falta tomar todas para tomar una. Cómo encaja cada fuente en el playbook de monitorización regulatoria →
¿Cuánto tarda una integración típica?+
Una integración funcional contra una license key de test — receiver de webhook verificando HMAC, cron diario de patches CosIng aplicando dentro de una sola transacción PostgreSQL, feedback loop cerrado — son 4 a 12 horas de ingeniería con el pack que entregamos. El hardening de producción (alerting, audit logging, atribución multi-tenant) va encima y depende de tu stack.
¿Hay sandbox o licencia de test?+
Sí. Las license keys de test se provisionan manualmente a pedido. Las keys de producción y de test apuntan al mismo entorno productivo pero el flag de modo test atenúa los efectos colaterales (sin impacto en métricas comerciales, audit trail separado). No corremos una instalación sandbox aparte — eso te da una señal más honesta: todo lo que testees se comporta igual en prod.
¿Qué pasa si BD-API deja de operar?+
La data CosIng que ya aplicaste vive en tu propio PostgreSQL — te queda. Los patches son SQL puro sin runtime propietario. Los eventos de webhook que recibiste están en tu base. No hay runtime vendor-managed que se apague, no hay SDK que deje de funcionar, no hay protocolo binario opaco que te haga lock-in. Durabilidad por diseño, no por promesa.
¿Por qué firmar webhooks con HMAC si ya uso HTTPS?+
HTTPS protege el transporte — impide que alguien en la red lea o manipule el payload en tránsito. HMAC protege el origen — permite a tu receptor probar que el payload vino realmente de BD-API y no de alguien que descubrió la URL del endpoint. Sin HMAC, cualquier atacante que adivine o descubra tu URL puede fabricar eventos. HTTPS sin HMAC es cifrado sin autenticación, y la autenticación es lo que importa para evidencia de cumplimiento. Guía de verificación HMAC de 5 minutos con ejemplos de código →
¿Qué es un timing attack y por qué importa al verificar firmas HMAC?+
Un timing attack explota el hecho de que una comparación de cadenas ingenua (== o ===) devuelve resultado en cuanto encuentra un carácter que no coincide. Un atacante que pueda medir tiempos de respuesta puede deducir bytes de la firma uno a uno hasta forjar una válida. La solución es comparación en tiempo constante — crypto.timingSafeEqual en Node, hmac.compare_digest en Python, hash_equals en PHP. El coste es idéntico al de una comparación normal; la ganancia de seguridad es total. Errores comunes de verificación HMAC — incluida la comparación temporal →