Contratos HTTP — caso de uso Reservas
Índice del grafo de dependencias del caso de uso Reservas (implementación UnoSportClub). La documentación detallada de cada dominio vive en docs/ del repo del plugin (cortex-plugin-{id}).
Fuente canónica del grafo: products/unosportclub/cortex_product_unosportclub/composition.py
ADR: 025-product-composition
Frontera doc: Documentación framework vs plugins
clients
| Campo | Valor |
| provides | clients |
| requires | — |
| optional_requires | — |
| namespace | /api/v1/clients |
| consume | GET /api/v1/booking/bookings?client_ref={id} (expediente, si booking enabled) |
| events | — |
resources
| Campo | Valor |
| provides | resources |
| requires | — |
| namespace | /api/v1/resources |
| consume | — |
| events | — |
pricing
| Campo | Valor |
| provides | pricing |
| requires | resources |
| namespace | /api/v1/pricing |
| consume | GET /api/v1/resources/resources (lookup tipos) |
| events | — |
booking
| Campo | Valor |
| provides | booking |
| requires | resources |
| optional_requires | clients, pricing, payments, discounts |
| namespace | /api/v1/booking |
| consume | GET /api/v1/resources/resources, GET /api/v1/clients/clients/{id}, POST /api/v1/payments/payments |
| events | emite booking.confirmed (ADR 021, planificado) |
payments
| Campo | Valor |
| provides | payments |
| requires | — |
| namespace | /api/v1/payments |
| consume | — |
| events | — |
sales
| Campo | Valor |
| provides | sales |
| requires | clients, payments |
| optional_requires | pricing, discounts |
| namespace | /api/v1/sales |
| consume | GET /api/v1/clients/clients, GET /api/v1/pricing/tariffs |
| events | — |
events
| Campo | Valor |
| provides | events |
| requires | booking, clients |
| optional_requires | sales |
| namespace | /api/v1/events |
| consume | GET /api/v1/booking/bookings, GET /api/v1/clients/clients |
| events | — |
discounts
| Campo | Valor |
| provides | discounts |
| requires | — |
| namespace | /api/v1/discounts |
| consume | — |
| events | — |
accounting
| Campo | Valor |
| provides | accounting |
| optional_requires | payments, sales |
| namespace | /api/v1/accounting |
| consume | vía events payment.completed, sale.completed (planificado) |
| events | escucha hechos de dominio financiero |
| docs | plugins/accounting/docs/ en cortex-plugin-accounting |
store
| Campo | Valor |
| provides | store |
| optional_requires | sales |
| namespace | /api/v1/store |
| consume | GET /api/v1/sales/sales |
| events | — |
subscriptions
| Campo | Valor |
| provides | subscriptions |
| requires | clients |
| optional_requires | payments |
| namespace | /api/v1/subscriptions |
| consume | GET /api/v1/clients/clients, POST /api/v1/payments/payments |
| events | — |
billing
| Campo | Valor |
| provides | billing |
| requires | clients |
| optional_requires | payments, accounting |
| namespace | /api/v1/billing |
| consume | GET /api/v1/clients/clients, GET /api/v1/accounting/entries |
| events | — |
ai-agents
| Campo | Valor |
| provides | ai-agents |
| optional_requires | booking, clients, payments |
| namespace | /api/v1/ai-agents |
| consume | MCP tools de plugins enabled |
| events | — |
| docs | plugins/ai-agents/docs/ en cortex-plugin-ai-agents |
template
| Campo | Valor |
| provides | template |
| stateless | true |
| namespace | /api/v1/template |
| consume | — |
| events | — |
| docs | plugins/_template/docs/ — plantilla del handbook |
Namespaces de panel (convención caso Reservas)
panel_id | Origen | Plugins típicos en nav |
control | Framework embebido | metadatos de plataforma |
operations | Generativo (ensure_panel) | booking, clients, resources |
admin | Generativo | sales, payments, pricing, billing |
accounting | Plugin + cortex.panels opcional | accounting |
trainer | Plugin dedicado | booking, clients, resources |
Los namespaces generativos existen cuando plugins habilitados inyectan contenido con ese panel_id. No uses requires de dominio para forzar un namespace.