{"name":"LUMA — Developer Portal","portal":{"url":"/developers","rendering":"client-side SPA","machine_readable":false,"note":"Un GET a /developers devuelve un cascarón vacío. Para leer el contrato usa /api/v1/developers/llms-full.txt o las superficies JSON de esta lista."},"generated_from":"live platform code (catálogos MCP, scopes, eventos, OpenAPI)","environment":"production","runtime":{"mcp":{"enabled":false,"endpoint":"/api/mcp/","transport":"HTTP POST + JSON-RPC 2.0","note":"NO montado en este entorno (MCP_ENABLED=false): /api/mcp/ responde 404. El catálogo sigue publicándose para que puedas diseñar contra él, pero no lo puedes llamar aquí."},"integration_api":{"enabled":true,"base":"/api/integrations/v1","token_url":"/api/integrations/oauth/token","note":"API pública M2M."},"agentic":{"control_plane":"/api/v1/platform/companies/{company_id}/agentic-license","snapshot":"/api/integrations/v1/agentic/entitlement","usage":"/api/integrations/v1/agentic/usage/reservations","gating":"per_company","note":"La IA de un POS no se enciende con un flag global: depende de la política Ala de CADA empresa (company_agentic_policies), que el superadmin edita desde el plano de control. Sin política, activar el módulo `agentic` devuelve 409 agentic_policy_required."}},"count":28,"surfaces":[{"id":"index","title":"Índice de superficies","url":"/api/v1/developers/index","media_type":"application/json","description":"Este documento. Lista todas las superficies públicas del portal con su URL.","requires_auth":null,"live_in_this_environment":true},{"id":"llms","title":"llms.txt","url":"/api/v1/developers/llms.txt","media_type":"text/plain","description":"Fichero de descubrimiento para agentes IA (convención llms.txt).","requires_auth":null,"live_in_this_environment":true},{"id":"llms-full","title":"Referencia completa (Markdown)","url":"/api/v1/developers/llms-full.txt","media_type":"text/markdown","description":"TODA la documentación del portal en Markdown plano, generada del código vivo. Es el documento que debe leer una IA que vaya a construir una integración.","requires_auth":null,"live_in_this_environment":true},{"id":"openapi","title":"OpenAPI de la API pública","url":"/api/v1/developers/openapi","media_type":"application/json","description":"Documento OpenAPI 3 de la Integration API (V1–V5): el contrato exacto de cada endpoint.","requires_auth":null,"live_in_this_environment":true},{"id":"scopes","title":"Catálogo de scopes OAuth2","url":"/api/v1/developers/scopes","media_type":"application/json","description":"Los 59 scopes que entiende la API, con descripción, módulo del que dependen y ejemplos por vertical.","requires_auth":null,"live_in_this_environment":true},{"id":"build-order","title":"Orden de construcción de un POS vertical","url":"/api/v1/developers/build-order","media_type":"application/json","description":"EMPIEZA AQUÍ si vas a construir. Las fases en orden, con la dependencia real de cada una, el fallo que evita y los requisitos de certificación que cubre.","requires_auth":null,"live_in_this_environment":true},{"id":"downloads","title":"Artefactos descargables","url":"/api/v1/developers/downloads","media_type":"application/json","description":"Índice de lo que puedes descargar para probar sin escribir código: la colección Postman/Bruno y el brief para asistentes de IA.","requires_auth":null,"live_in_this_environment":true},{"id":"collection-postman","title":"Colección Postman / Bruno","url":"/api/v1/developers/collection/postman","media_type":"application/json","description":"Importable. Token OAuth2 automático y cacheado, Idempotency-Key prerrellenada en cada mutador y cuerpos de ejemplo con los campos obligatorios. Generada del OpenAPI vivo.","requires_auth":null,"live_in_this_environment":true},{"id":"agent-skill","title":"Skill para asistentes de IA","url":"/api/v1/developers/agent-skill","media_type":"text/markdown","description":"Brief corto para adjuntar a tu asistente: qué leer, en qué orden, y las cinco reglas cuya violación cuesta más caro.","requires_auth":null,"live_in_this_environment":true},{"id":"errors","title":"Catálogo canónico de errores de negocio","url":"/api/v1/developers/errors","media_type":"application/json","description":"Los códigos que tu POS debe distinguir, con la acción que exige cada uno y cuáles son reintentables. Incluye los dos 403 opuestos (module_not_entitled vs module_disabled) y por qué un 409 de idempotencia nunca se reintenta.","requires_auth":null,"live_in_this_environment":true},{"id":"events","title":"Catálogo de eventos y contrato de entrega","url":"/api/v1/developers/events","media_type":"application/json","description":"Los 21 eventos públicos suscribibles por webhook, con el esquema de firma HMAC, cabeceras, reintentos y validación de destino.","requires_auth":null,"live_in_this_environment":true},{"id":"credentials","title":"Credenciales, autenticación y multitenancy","url":"/api/v1/developers/credentials","media_type":"application/json","description":"Cómo un sistema externo obtiene y gestiona credenciales M2M, y las garantías de aislamiento por empresa.","requires_auth":null,"live_in_this_environment":true},{"id":"mcp-catalog","title":"Catálogo de herramientas MCP","url":"/api/v1/developers/mcp-catalog","media_type":"application/json","description":"Las herramientas que un agente IA puede invocar vía MCP, con su JSON Schema, scope y módulo.","requires_auth":null,"live_in_this_environment":false},{"id":"agentic","title":"Contrato de agentes IA (licencia, entitlement y consumo)","url":"/api/v1/developers/agentic","media_type":"application/json","description":"Cómo LUMA autoriza la IA de un POS por empresa, cómo el POS consulta esa autorización, cómo reserva y reporta consumo, y cómo le llega un corte.","requires_auth":null,"live_in_this_environment":true},{"id":"identity","title":"Los cuatro planos de identidad","url":"/api/v1/developers/identity","media_type":"application/json","description":"Login de usuario del tenant, credencial M2M del POS, superadmin de plataforma y tokens de un solo uso: qué es cada uno y cuál necesita un POS.","requires_auth":null,"live_in_this_environment":true},{"id":"agent-contracts","title":"Contratos entre el agente del POS y los agentes del ERP","url":"/api/v1/developers/agent-contracts","media_type":"application/json","description":"Los 43 contratos cerrados que un agente de POS puede ejecutar contra CEO, Fina e Inés, con su carril, campos obligatorios y si exigen aprobación humana.","requires_auth":null,"live_in_this_environment":true},{"id":"playbooks","title":"Playbooks operativos","url":"/api/v1/developers/playbooks","media_type":"application/json","description":"Inventario, finanzas, testeo y panel del suministrador: en qué orden llamar las cosas y qué error evita cada paso.","requires_auth":null,"live_in_this_environment":true},{"id":"certification","title":"Checklist de certificación del POS","url":"/api/v1/developers/certification","media_type":"application/json","description":"Lo que tu POS debe cumplir para conectarse en producción, con cómo probar cada punto y quién lo verifica.","requires_auth":null,"live_in_this_environment":true},{"id":"pos-manifest-schema","title":"JSON Schema del manifiesto POS","url":"/api/v1/developers/pos-manifest-schema","media_type":"application/json","description":"El esquema que debe cumplir el manifiesto de una app POS, con un ejemplo válido.","requires_auth":null,"live_in_this_environment":true},{"id":"vertical-pos-sandbox","title":"Sandbox y dataset de prueba","url":"/api/v1/developers/vertical-pos-sandbox","media_type":"application/json","description":"Quickstart del sandbox y datos demo para probar un POS vertical sin tocar producción.","requires_auth":null,"live_in_this_environment":true},{"id":"vertical-pos-capabilities","title":"Clasificación de capacidades POS","url":"/api/v1/developers/vertical-pos-capabilities","media_type":"application/json","description":"Qué capacidades puede declarar un POS vertical y cómo se clasifican.","requires_auth":null,"live_in_this_environment":true},{"id":"vertical-pos-observability","title":"Observabilidad y runbook","url":"/api/v1/developers/vertical-pos-observability","media_type":"application/json","description":"Contrato de trazabilidad, métricas y runbook operativo que debe cumplir un POS vertical.","requires_auth":null,"live_in_this_environment":true},{"id":"tenant-isolation-audit","title":"Auditoría estructural de aislamiento","url":"/api/v1/developers/tenant-isolation-audit","media_type":"application/json","description":"Auditoría del aislamiento multi-tenant del núcleo (estructural, sin datos de ningún tenant).","requires_auth":null,"live_in_this_environment":true},{"id":"oauth-token","title":"Intercambio de token OAuth2 M2M","url":"/api/integrations/oauth/token","media_type":"application/x-www-form-urlencoded","description":"POST client_credentials. Devuelve el access token con el que se llama a toda la API pública.","requires_auth":"client_id + client_secret","live_in_this_environment":true},{"id":"integration-api","title":"API pública (Integration API)","url":"/api/integrations/v1","media_type":"application/json","description":"La API que consume tu POS/módulo. El company_id sale del token, nunca del cuerpo.","requires_auth":"Bearer M2M","live_in_this_environment":true},{"id":"mcp-endpoint","title":"Endpoint MCP (JSON-RPC)","url":"/api/mcp/","media_type":"application/json","description":"Transporte JSON-RPC 2.0 para exponer/consumir herramientas de agentes IA.","requires_auth":"Bearer M2M","live_in_this_environment":false},{"id":"pos-manifest-validate","title":"Validación de manifiesto POS","url":"/api/v1/developers/pos-manifest/validate","media_type":"application/json","description":"POST tu manifiesto y recibe los errores de validación antes de registrarte.","requires_auth":"publisher key (opcional)","live_in_this_environment":true},{"id":"pos-registration","title":"Registro de una app POS","url":"/api/v1/developers/pos-registration-requests","media_type":"application/json","description":"POST la solicitud de registro de tu app POS para revisión y aprobación.","requires_auth":"publisher key","live_in_this_environment":true}]}