/api/v1) y requieren autenticación. El broker está gated: apagado por defecto en producción, con un rollout de lane externa aparte y grants por principal (ver Broker). Las lecturas necesitan broker:read; invoke necesita broker:invoke o work:write; grants y criterion necesitan broker:admin. El setup (connect/disconnect) no está aquí; vive bajo integraciones.
Disponibilidad
Cuando el broker está deshabilitado, toda la superficie devuelve503. Cuando la lane externa está cerrada o ningún grant coincide, las lecturas de un caller externo devuelven un resultado vacío en vez de un error. Los callers internos (una API key propia o una sesión del dashboard) se gobiernan por identidad y scopes; un caller OAuth sin rostro además necesita el rollout encendido y un grant que coincida.
Descubrir y leer
| Método | Ruta | Perm | Propósito |
|---|---|---|---|
GET | /workspaces/:slug/broker/connections | member (broker:read) | Lista connections |
GET | /workspaces/:slug/broker/operations | member (broker:read) | Busca operaciones entre providers (cursor) |
GET | /workspaces/:slug/broker/connections/:provider/operations | member (broker:read) | Operaciones de un provider |
GET | /workspaces/:slug/broker/connections/:provider/capabilities | member (broker:read) | El capability directory |
GET | /workspaces/:slug/broker/connections/:provider/operations/:operation | member (broker:read) | Inspecciona una operación |
GET | /workspaces/:slug/broker/connections/:provider/models | member (broker:read) | Record models importables |
GET | /workspaces/:slug/broker/connections/:provider/records | member (broker:read) | Records desde el mirror (cursor) |
GET | /workspaces/:slug/broker/connections/notion/pages/:pageId/content | member (broker:read) | Contenido de página en vivo, acotado |
GET | /workspaces/:slug/broker/events | member (broker:read) | Eventos entrantes del provider |
Invocar y materializar
| Método | Ruta | Perm | Propósito |
|---|---|---|---|
POST | /workspaces/:slug/broker/connections/:provider/invoke | member (broker:invoke / work:write) | Ejecuta una operación inline |
POST | /workspaces/:slug/broker/connections/:provider/criterion | member (broker:admin / work:write) | Adjunta un slug de criterion |
DELETE | /workspaces/:slug/broker/connections/:provider/criterion/:topic | member (broker:admin / work:write) | Quita un slug de criterion |
POST | /workspaces/:slug/broker/connections/:provider/index/preview | member (API key / sesión) | Index en seco |
POST | /workspaces/:slug/broker/connections/:provider/index | member (API key / sesión) | Materializa connector documents |
POST | /workspaces/:slug/broker/connections/:provider/import | member (broker:invoke / work:write) | Importa records del mirror a Records de Collection |
invoke ejecuta inline (no hay cola de aprobación). Para un efecto de escritura, pasa idempotency_key para un replay seguro; las escrituras nunca se reintentan solas. index e index/preview no están mapeados para OAuth, así que un bearer OAuth sin rostro no puede llamarlos; una API key propia o una sesión sí.
Grants
| Método | Ruta | Perm | Propósito |
|---|---|---|---|
GET | /workspaces/:slug/broker/grants | member (broker:read) | Lista grants |
POST | /workspaces/:slug/broker/grants | owner/admin (broker:admin / work:write) | Concede { principal, provider, effect } |
DELETE | /workspaces/:slug/broker/grants/:id | owner/admin | Revoca un grant |
Errores
El controller tiene rate limit por principal;invoke, preview y page-content tienen throttle más estricto, e index / import aún más. Los errores mapean a códigos estables: RATE_LIMITED, INVALID_VALUE (corrige la petición) y un INTERNAL transitorio para 5xx del proveedor. Ver errores para el sobre.
Relacionado
- Broker - acciones, gates y semántica de lectura/escritura.
- Integraciones y Connections - setup y disponibilidad por provider.
