{"openapi":"3.1.0","info":{"title":"DDIB AI Presence Platform API","version":"0.1.0","description":"Contratos REST para gestionar perfiles ricos de negocio, diagnósticos, monitoreo, reportes, clientes, pagos y activos generados para Visibilidad para IA's."},"servers":[{"url":"https://www.ddib.com.mx"}],"tags":[{"name":"Business"},{"name":"Platform"},{"name":"Commerce"},{"name":"Developer"},{"name":"Onboarding"},{"name":"Diagnostics"},{"name":"Generated Assets"},{"name":"Signals"},{"name":"Content"}],"components":{"securitySchemes":{"platformSession":{"type":"apiKey","in":"cookie","name":"authjs.session-token","description":"Sesión NextAuth de la plataforma."},"platformApiKey":{"type":"apiKey","in":"header","name":"X-DDIB-API-Key","description":"API key para integraciones autorizadas de DDIB AI Presence Platform."}}},"paths":{"/api/business":{"get":{"tags":["Business"],"summary":"Describe el contrato de perfil de negocio.","security":[],"responses":{"200":{"description":"Respuesta JSON","content":{"application/json":{"schema":{"type":"object"}}}}}},"post":{"tags":["Business"],"summary":"Valida un perfil de negocio de 189 campos.","security":[],"responses":{"200":{"description":"Respuesta JSON","content":{"application/json":{"schema":{"type":"object"}}}}}}},"/api/business/{id}":{"get":{"tags":["Business"],"summary":"Devuelve handles relacionados para una empresa.","security":[],"responses":{"200":{"description":"Respuesta JSON","content":{"application/json":{"schema":{"type":"object"}}}}}}},"/api/clients":{"get":{"tags":["Platform"],"summary":"Lista clientes del workspace.","security":[{"platformSession":[]},{"platformApiKey":[]}],"responses":{"200":{"description":"Respuesta JSON","content":{"application/json":{"schema":{"type":"object"}}}},"401":{"description":"Sesión requerida","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean","example":false},"status":{"type":"string","example":"unauthorized"}}}}}}}},"post":{"tags":["Platform"],"summary":"Crea o actualiza un cliente del workspace.","security":[{"platformSession":[]},{"platformApiKey":[]}],"responses":{"200":{"description":"Respuesta JSON","content":{"application/json":{"schema":{"type":"object"}}}},"401":{"description":"Sesión requerida","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean","example":false},"status":{"type":"string","example":"unauthorized"}}}}}}}}},"/api/clients/{id}/profile":{"get":{"tags":["Platform"],"summary":"Devuelve el perfil rico de 189 campos de una empresa.","security":[{"platformSession":[]},{"platformApiKey":[]}],"responses":{"200":{"description":"Respuesta JSON","content":{"application/json":{"schema":{"type":"object"}}}},"401":{"description":"Sesión requerida","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean","example":false},"status":{"type":"string","example":"unauthorized"}}}}}}}},"patch":{"tags":["Platform"],"summary":"Actualiza parcialmente el perfil rico y regenera metadata de activos IA.","security":[{"platformSession":[]},{"platformApiKey":[]}],"responses":{"200":{"description":"Respuesta JSON","content":{"application/json":{"schema":{"type":"object"}}}},"401":{"description":"Sesión requerida","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean","example":false},"status":{"type":"string","example":"unauthorized"}}}}}}}}},"/api/plans":{"get":{"tags":["Commerce"],"summary":"Lista planes activos de suscripción.","security":[],"responses":{"200":{"description":"Respuesta JSON","content":{"application/json":{"schema":{"type":"object"}}}}}}},"/api/payments":{"get":{"tags":["Commerce"],"summary":"Lista facturas pagables.","security":[{"platformSession":[]},{"platformApiKey":[]}],"responses":{"200":{"description":"Respuesta JSON","content":{"application/json":{"schema":{"type":"object"}}}},"401":{"description":"Sesión requerida","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean","example":false},"status":{"type":"string","example":"unauthorized"}}}}}}}},"post":{"tags":["Commerce"],"summary":"Prepara una sesión de pago.","security":[{"platformSession":[]},{"platformApiKey":[]}],"responses":{"200":{"description":"Respuesta JSON","content":{"application/json":{"schema":{"type":"object"}}}},"401":{"description":"Sesión requerida","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean","example":false},"status":{"type":"string","example":"unauthorized"}}}}}}}}},"/api/payments/webhook":{"post":{"tags":["Commerce"],"summary":"Registra evento de pago, marca factura pagada y activa suscripcion.","security":[],"responses":{"200":{"description":"Respuesta JSON","content":{"application/json":{"schema":{"type":"object"}}}}}}},"/api/entitlements":{"get":{"tags":["Commerce"],"summary":"Devuelve limites, features y consumo permitido por planes activos.","security":[{"platformSession":[]},{"platformApiKey":[]}],"responses":{"200":{"description":"Respuesta JSON","content":{"application/json":{"schema":{"type":"object"}}}},"401":{"description":"Sesión requerida","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean","example":false},"status":{"type":"string","example":"unauthorized"}}}}}}}}},"/api/api-keys":{"get":{"tags":["Developer"],"summary":"Lista API keys del usuario autenticado.","security":[{"platformSession":[]},{"platformApiKey":[]}],"responses":{"200":{"description":"Respuesta JSON","content":{"application/json":{"schema":{"type":"object"}}}},"401":{"description":"Sesión requerida","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean","example":false},"status":{"type":"string","example":"unauthorized"}}}}}}}},"post":{"tags":["Developer"],"summary":"Crea una API key y devuelve el secreto una sola vez.","security":[{"platformSession":[]},{"platformApiKey":[]}],"responses":{"200":{"description":"Respuesta JSON","content":{"application/json":{"schema":{"type":"object"}}}},"401":{"description":"Sesión requerida","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean","example":false},"status":{"type":"string","example":"unauthorized"}}}}}}}},"delete":{"tags":["Developer"],"summary":"Revoca una API key del usuario autenticado.","security":[{"platformSession":[]},{"platformApiKey":[]}],"responses":{"200":{"description":"Respuesta JSON","content":{"application/json":{"schema":{"type":"object"}}}},"401":{"description":"Sesión requerida","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean","example":false},"status":{"type":"string","example":"unauthorized"}}}}}}}}},"/api/usage":{"get":{"tags":["Developer"],"summary":"Resume uso de API por usuario, API key, ruta, errores y latencia.","security":[{"platformSession":[]},{"platformApiKey":[]}],"responses":{"200":{"description":"Respuesta JSON","content":{"application/json":{"schema":{"type":"object"}}}},"401":{"description":"Sesión requerida","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean","example":false},"status":{"type":"string","example":"unauthorized"}}}}}}}}},"/api/health/db":{"get":{"tags":["Developer"],"summary":"Verifica conexion operativa con PostgreSQL sin exponer credenciales.","security":[],"responses":{"200":{"description":"Respuesta JSON","content":{"application/json":{"schema":{"type":"object"}}}}}}},"/api/health/openai":{"get":{"tags":["Developer"],"summary":"Verifica si el entorno tiene OPENAI_KEY u OPENAI_API_KEY sin exponer secretos.","security":[],"responses":{"200":{"description":"Respuesta JSON","content":{"application/json":{"schema":{"type":"object"}}}}}}},"/api/cache":{"get":{"tags":["Developer"],"summary":"Describe estado de cache Redis y permite probe operativo sin exponer secretos.","security":[],"responses":{"200":{"description":"Respuesta JSON","content":{"application/json":{"schema":{"type":"object"}}}}}}},"/api/capabilities":{"get":{"tags":["Developer"],"summary":"Describe capacidades, modulos, workflows y readiness de API publica.","security":[],"responses":{"200":{"description":"Respuesta JSON","content":{"application/json":{"schema":{"type":"object"}}}}}}},"/api/dashboard":{"get":{"tags":["Platform"],"summary":"Devuelve snapshot del dashboard.","security":[{"platformSession":[]},{"platformApiKey":[]}],"responses":{"200":{"description":"Respuesta JSON","content":{"application/json":{"schema":{"type":"object"}}}},"401":{"description":"Sesión requerida","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean","example":false},"status":{"type":"string","example":"unauthorized"}}}}}}}}},"/api/leads":{"get":{"tags":["Platform"],"summary":"Lista solicitudes de diagnóstico capturadas.","security":[{"platformSession":[]},{"platformApiKey":[]}],"responses":{"200":{"description":"Respuesta JSON","content":{"application/json":{"schema":{"type":"object"}}}},"401":{"description":"Sesión requerida","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean","example":false},"status":{"type":"string","example":"unauthorized"}}}}}}}},"patch":{"tags":["Platform"],"summary":"Actualiza estado de una solicitud de diagnóstico.","security":[{"platformSession":[]},{"platformApiKey":[]}],"responses":{"200":{"description":"Respuesta JSON","content":{"application/json":{"schema":{"type":"object"}}}},"401":{"description":"Sesión requerida","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean","example":false},"status":{"type":"string","example":"unauthorized"}}}}}}}}},"/api/alerts":{"get":{"tags":["Platform"],"summary":"Lista alertas del workspace.","security":[{"platformSession":[]},{"platformApiKey":[]}],"responses":{"200":{"description":"Respuesta JSON","content":{"application/json":{"schema":{"type":"object"}}}},"401":{"description":"Sesión requerida","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean","example":false},"status":{"type":"string","example":"unauthorized"}}}}}}}},"patch":{"tags":["Platform"],"summary":"Actualiza estado de una alerta.","security":[{"platformSession":[]},{"platformApiKey":[]}],"responses":{"200":{"description":"Respuesta JSON","content":{"application/json":{"schema":{"type":"object"}}}},"401":{"description":"Sesión requerida","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean","example":false},"status":{"type":"string","example":"unauthorized"}}}}}}}}},"/api/history":{"get":{"tags":["Platform"],"summary":"Devuelve línea de tiempo del workspace.","security":[{"platformSession":[]},{"platformApiKey":[]}],"responses":{"200":{"description":"Respuesta JSON","content":{"application/json":{"schema":{"type":"object"}}}},"401":{"description":"Sesión requerida","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean","example":false},"status":{"type":"string","example":"unauthorized"}}}}}}}}},"/api/reports":{"get":{"tags":["Platform"],"summary":"Lista reportes del workspace.","security":[{"platformSession":[]},{"platformApiKey":[]}],"responses":{"200":{"description":"Respuesta JSON","content":{"application/json":{"schema":{"type":"object"}}}},"401":{"description":"Sesión requerida","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean","example":false},"status":{"type":"string","example":"unauthorized"}}}}}}}},"post":{"tags":["Platform"],"summary":"Genera un reporte de monitor.","security":[{"platformSession":[]},{"platformApiKey":[]}],"responses":{"200":{"description":"Respuesta JSON","content":{"application/json":{"schema":{"type":"object"}}}},"401":{"description":"Sesión requerida","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean","example":false},"status":{"type":"string","example":"unauthorized"}}}}}}}}},"/api/billing":{"get":{"tags":["Commerce"],"summary":"Devuelve facturación resumida.","security":[{"platformSession":[]},{"platformApiKey":[]}],"responses":{"200":{"description":"Respuesta JSON","content":{"application/json":{"schema":{"type":"object"}}}},"401":{"description":"Sesión requerida","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean","example":false},"status":{"type":"string","example":"unauthorized"}}}}}}}}},"/api/notifications":{"get":{"tags":["Platform"],"summary":"Lista notificaciones.","security":[{"platformSession":[]},{"platformApiKey":[]}],"responses":{"200":{"description":"Respuesta JSON","content":{"application/json":{"schema":{"type":"object"}}}},"401":{"description":"Sesión requerida","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean","example":false},"status":{"type":"string","example":"unauthorized"}}}}}}}},"post":{"tags":["Platform"],"summary":"Cola una notificación.","security":[{"platformSession":[]},{"platformApiKey":[]}],"responses":{"200":{"description":"Respuesta JSON","content":{"application/json":{"schema":{"type":"object"}}}},"401":{"description":"Sesión requerida","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean","example":false},"status":{"type":"string","example":"unauthorized"}}}}}}}}},"/api/notifications/dispatch":{"post":{"tags":["Platform"],"summary":"Procesa cola de notificaciones queued/retry con CRON_SECRET.","security":[],"responses":{"200":{"description":"Respuesta JSON","content":{"application/json":{"schema":{"type":"object"}}}}}}},"/api/register":{"get":{"tags":["Onboarding"],"summary":"Describe el contrato de onboarding.","security":[],"responses":{"200":{"description":"Respuesta JSON","content":{"application/json":{"schema":{"type":"object"}}}}}},"post":{"tags":["Onboarding"],"summary":"Inicia onboarding de cuenta, empresa y plan.","security":[],"responses":{"200":{"description":"Respuesta JSON","content":{"application/json":{"schema":{"type":"object"}}}}}}},"/api/contact":{"get":{"tags":["Onboarding"],"summary":"Describe el contrato de contacto.","security":[],"responses":{"200":{"description":"Respuesta JSON","content":{"application/json":{"schema":{"type":"object"}}}}}},"post":{"tags":["Onboarding"],"summary":"Prepara solicitud de diagnóstico.","security":[],"responses":{"200":{"description":"Respuesta JSON","content":{"application/json":{"schema":{"type":"object"}}}}}}},"/api/score":{"get":{"tags":["Diagnostics"],"summary":"Describe cómo calcular el score.","security":[],"responses":{"200":{"description":"Respuesta JSON","content":{"application/json":{"schema":{"type":"object"}}}}}},"post":{"tags":["Diagnostics"],"summary":"Calcula Score de Visibilidad para IA's.","security":[],"responses":{"200":{"description":"Respuesta JSON","content":{"application/json":{"schema":{"type":"object"}}}}}}},"/api/crawl":{"get":{"tags":["Diagnostics"],"summary":"Describe rastreo de señales públicas.","security":[],"responses":{"200":{"description":"Respuesta JSON","content":{"application/json":{"schema":{"type":"object"}}}}}},"post":{"tags":["Diagnostics"],"summary":"Rastrea señales públicas básicas.","security":[],"responses":{"200":{"description":"Respuesta JSON","content":{"application/json":{"schema":{"type":"object"}}}}}}},"/api/audit":{"get":{"tags":["Diagnostics"],"summary":"Describe auditoría técnica.","security":[],"responses":{"200":{"description":"Respuesta JSON","content":{"application/json":{"schema":{"type":"object"}}}}}},"post":{"tags":["Diagnostics"],"summary":"Genera auditoría técnica inicial.","security":[],"responses":{"200":{"description":"Respuesta JSON","content":{"application/json":{"schema":{"type":"object"}}}}}}},"/api/monitor":{"get":{"tags":["Diagnostics"],"summary":"Lista planes del monitor.","security":[],"responses":{"200":{"description":"Respuesta JSON","content":{"application/json":{"schema":{"type":"object"}}}}}},"post":{"tags":["Diagnostics"],"summary":"Ejecuta monitor semanal.","security":[],"responses":{"200":{"description":"Respuesta JSON","content":{"application/json":{"schema":{"type":"object"}}}}}}},"/api/schema":{"get":{"tags":["Generated Assets"],"summary":"Describe generación de Schema.org.","security":[],"responses":{"200":{"description":"Respuesta JSON","content":{"application/json":{"schema":{"type":"object"}}}}}},"post":{"tags":["Generated Assets"],"summary":"Genera Schema.org desde perfil de negocio.","security":[],"responses":{"200":{"description":"Respuesta JSON","content":{"application/json":{"schema":{"type":"object"}}}}}}},"/api/faq":{"get":{"tags":["Generated Assets"],"summary":"Describe generación de FAQ.","security":[],"responses":{"200":{"description":"Respuesta JSON","content":{"application/json":{"schema":{"type":"object"}}}}}},"post":{"tags":["Generated Assets"],"summary":"Genera FAQ desde perfil de negocio.","security":[],"responses":{"200":{"description":"Respuesta JSON","content":{"application/json":{"schema":{"type":"object"}}}}}}},"/api/generated-assets":{"get":{"tags":["Generated Assets"],"summary":"Describe generación completa de activos.","security":[],"responses":{"200":{"description":"Respuesta JSON","content":{"application/json":{"schema":{"type":"object"}}}}}},"post":{"tags":["Generated Assets"],"summary":"Genera schema, FAQ, llms.txt, robots, sitemap, RSS y Knowledge Graph.","security":[],"responses":{"200":{"description":"Respuesta JSON","content":{"application/json":{"schema":{"type":"object"}}}}}}},"/api/knowledge-graph":{"get":{"tags":["Generated Assets"],"summary":"Devuelve grafo agregado de negocios, contenido, casos y recursos.","security":[],"responses":{"200":{"description":"Respuesta JSON","content":{"application/json":{"schema":{"type":"object"}}}}}}},"/api/reviews":{"get":{"tags":["Signals"],"summary":"Describe señales de reseñas.","security":[],"responses":{"200":{"description":"Respuesta JSON","content":{"application/json":{"schema":{"type":"object"}}}}}},"post":{"tags":["Signals"],"summary":"Calcula métricas de reseñas.","security":[],"responses":{"200":{"description":"Respuesta JSON","content":{"application/json":{"schema":{"type":"object"}}}}}}},"/api/recommendations":{"get":{"tags":["Diagnostics"],"summary":"Describe recomendaciones.","security":[],"responses":{"200":{"description":"Respuesta JSON","content":{"application/json":{"schema":{"type":"object"}}}}}},"post":{"tags":["Diagnostics"],"summary":"Prioriza recomendaciones por score.","security":[],"responses":{"200":{"description":"Respuesta JSON","content":{"application/json":{"schema":{"type":"object"}}}}}}},"/api/radar":{"get":{"tags":["Diagnostics"],"summary":"Describe Radar de IA.","security":[],"responses":{"200":{"description":"Respuesta JSON","content":{"application/json":{"schema":{"type":"object"}}}}}},"post":{"tags":["Diagnostics"],"summary":"Simula recomendabilidad por intención local.","security":[],"responses":{"200":{"description":"Respuesta JSON","content":{"application/json":{"schema":{"type":"object"}}}}}}},"/api/competitors":{"get":{"tags":["Diagnostics"],"summary":"Describe monitor de competencia.","security":[],"responses":{"200":{"description":"Respuesta JSON","content":{"application/json":{"schema":{"type":"object"}}}}}},"post":{"tags":["Diagnostics"],"summary":"Compara señales contra hasta tres competidores.","security":[],"responses":{"200":{"description":"Respuesta JSON","content":{"application/json":{"schema":{"type":"object"}}}}}}},"/api/post-ideas":{"get":{"tags":["Content"],"summary":"Describe generador de publicaciones SEO.","security":[],"responses":{"200":{"description":"Respuesta JSON","content":{"application/json":{"schema":{"type":"object"}}}}}},"post":{"tags":["Content"],"summary":"Genera ideas para Google Business, FAQ y contenido local.","security":[],"responses":{"200":{"description":"Respuesta JSON","content":{"application/json":{"schema":{"type":"object"}}}}}}},"/api/resources":{"get":{"tags":["Content"],"summary":"Lista recursos de marketing, academia, casos, comparadores y calculadoras.","security":[],"responses":{"200":{"description":"Respuesta JSON","content":{"application/json":{"schema":{"type":"object"}}}}}}},"/api/case-studies":{"get":{"tags":["Content"],"summary":"Lista casos de exito estructurados y permite filtrarlos por slug.","security":[],"responses":{"200":{"description":"Respuesta JSON","content":{"application/json":{"schema":{"type":"object"}}}}}}},"/api/articles":{"get":{"tags":["Content"],"summary":"Lista roadmap editorial.","security":[],"responses":{"200":{"description":"Respuesta JSON","content":{"application/json":{"schema":{"type":"object"}}}}}},"post":{"tags":["Content"],"summary":"Genera estructura de artículo.","security":[],"responses":{"200":{"description":"Respuesta JSON","content":{"application/json":{"schema":{"type":"object"}}}}}}},"/api/articles/{slug}":{"get":{"tags":["Content"],"summary":"Devuelve blueprint, enlaces internos y JSON-LD de un artículo.","security":[],"responses":{"200":{"description":"Respuesta JSON","content":{"application/json":{"schema":{"type":"object"}}}}}}},"/api/search":{"get":{"tags":["Content"],"summary":"Busca artículos, negocios, casos de éxito y recursos por intención.","security":[],"responses":{"200":{"description":"Respuesta JSON","content":{"application/json":{"schema":{"type":"object"}}}}}}},"/api/openapi":{"get":{"tags":["Developer"],"summary":"Devuelve especificación OpenAPI.","security":[],"responses":{"200":{"description":"Respuesta JSON","content":{"application/json":{"schema":{"type":"object"}}}}}}}}}