API · platform
platform operations in the OpenAPI contract that accept an API key.
Updated:
GET /connection/projects
Proyectos a los que llega la credencial
FIU-498 (ADR 0054). Con un token OAuth del MCP del dueño, los proyectos vigentes de la conexión (los que pasan la revalidación de rol y estado en cada pedido), sin necesitar X-Wagend-Project. Con una API key, su único proyecto. Respalda la herramienta list_projects del MCP.
- Authentication: API key or dashboard session
- Scopes: None
Responses
| Status | Description |
|---|---|
200 | Proyectos de la credencial (ConnectionProjectList) |
default | Error (RFC 9457) (Problem) |
GET /demo/restore
Estado del botón «Restaurar demo»
FIU-483. Owner, manager o colaborador del demo de la credencial (nunca un id del path). Dice si el demo tiene foto base (available), de cuándo es, desde cuándo se puede volver a usar el botón (uno cada 10 minutos por demo) y la última restauración a demanda. 404 not_a_demo si el proyecto no es un demo de la suite con la marca de demo (o tiene cobros reales). Cache-Control no-store.
- Authentication: API key or dashboard session
- Scopes:
config:read
Responses
| Status | Description |
|---|---|
200 | Estado del botón (DemoRestoreStatus) |
401 | Error (RFC 9457) (Problem) |
403 | Error (RFC 9457) (Problem) |
404 | Error (RFC 9457) (Problem) |
POST /demo/restore
Restaurar el demo a su foto base
FIU-483. El reset liviano de ESTE demo, en segundos (cookie con X-Csrf-Token o API key, p. ej. Wagy por el MCP). Borra todo lo creado desde la foto (tareas, clientes, cobros, conversaciones, gastos, archivos…), vuelve a la foto lo editado o borrado y mueve sus fechas al día; conserva el proyecto, los canales e integraciones, el MCP, las API keys, los miembros con cuenta y la IA. Un demo por vez (409 demo_reset_busy, también mientras corre la limpieza de la noche) y uno cada 10 minutos (429 demo_restore_cooldown, con Retry-After). Si no se puede (sin foto o no quedó igual a la foto) no cambia nada (409 demo_restore_unavailable) y la noche corre el reset completo. Audita demo.restored.
- Authentication: API key or dashboard session
- Scopes:
settings:write
Responses
| Status | Description |
|---|---|
200 | Demo restaurado (DemoRestoreResult) |
401 | Error (RFC 9457) (Problem) |
403 | Error (RFC 9457) (Problem) |
404 | Error (RFC 9457) (Problem) |
409 | Error (RFC 9457) (Problem) |
429 | Error (RFC 9457) (Problem) |
GET /demo/status
¿El proyecto es un demo de la suite? (chip «Demo»)
FIU-514. Solo lectura, para cualquier miembro del proyecto (el panel muestra el chip «Demo» a todos; los controles siguen detrás de demo:restore en /demo/restore). Devuelve is_demo (siempre true) y si el demo tiene foto base (available); sin fechas ni historial. 404 not_a_demo si el proyecto no es un demo de la suite con la marca de demo (o tiene cobros reales). Cache-Control no-store.
- Authentication: API key or dashboard session
- Scopes:
config:read
Responses
| Status | Description |
|---|---|
200 | Estado del demo (DemoStatus) |
401 | Error (RFC 9457) (Problem) |
403 | Error (RFC 9457) (Problem) |
404 | Error (RFC 9457) (Problem) |
GET /me
Workspace y scopes de la credencial actual
- Authentication: API key or dashboard session
- Scopes: None
Responses
| Status | Description |
|---|---|
200 | OK (Me) |
default | Error (RFC 9457) (Problem) |
GET /partner/activity
Actividad de la cartera del partner
Sesión de panel del partner (FIU-434). Hitos de sus clientes, del más nuevo al más viejo: alta, canal conectado, primera tarea (reserva o pedido), primer cobro del plan (solo la fecha, sin monto), prueba que empieza a vencer (a 7 días, con due_at) y cliente que se apagó (14 días sin uso). Paginado por cursor; sin contenido. Con Bearer (FIU-439) exige partner:read y el partner es quien emitió la credencial. Sin caché.
- Authentication: API key or dashboard session
- Scopes:
partner:read
Parameters
| Name | In | Required | Type | Description |
|---|---|---|---|---|
limit | query | No | integer default 30 | |
cursor | query | No | string / null (null) |
Responses
| Status | Description |
|---|---|
200 | Actividad de la cartera del partner (ActivityPage) |
403 | Error (RFC 9457) (Problem) |
422 | Error (RFC 9457) (Problem) |
GET /partner/clients
Mis clientes (cartera del partner)
Sesión de panel del partner (FIU-434). El directorio del superadmin (FIU-430) acotado a los proyectos con la etiqueta del partner de la sesión: plan o prueba, semáforo de salud con sus motivos, último uso, tareas y conversaciones en 30 días, canales conectados y alertas (prueba que vence, canal caído, sin uso hace 14 días). Conteos y estados, sin costos ni contenido: el contenido se ve al entrar al proyecto. Orden estable por columna e ID con cursor (otro orden da 422); filtros rápidos como el directorio. Con Bearer (FIU-439) exige partner:read y el partner es quien emitió la credencial. Sin caché.
- Authentication: API key or dashboard session
- Scopes:
partner:read
Parameters
| Name | In | Required | Type | Description |
|---|---|---|---|---|
sort | query | No | string last_activity, name, created_at, tasks_30d, conversations_30d default last_activity | |
order | query | No | string asc, desc default desc | |
limit | query | No | integer default 50 | |
cursor | query | No | string / null (null) | |
quick | query | No | string / null (null) |
Responses
| Status | Description |
|---|---|
200 | Mis clientes (cartera del partner) (PartnerClientPage) |
403 | Error (RFC 9457) (Problem) |
422 | Error (RFC 9457) (Problem) |
GET /partner/clients/{workspace_id}
Un cliente de la cartera del partner
Sesión de panel del partner o Bearer con partner:read (FIU-439). La fila del cliente en «Mis clientes» (mismos conteos, estados y alertas, sin costos ni contenido) y sus hitos de Actividad, del más nuevo al más viejo. Un proyecto que no es de la cartera del partner da 404 client_not_found, igual que uno inexistente. Sin caché.
- Authentication: API key or dashboard session
- Scopes:
partner:read
Parameters
| Name | In | Required | Type | Description |
|---|---|---|---|---|
workspace_id | path | Yes | string (uuid) |
Responses
| Status | Description |
|---|---|
200 | Un cliente de la cartera del partner (PartnerClientDetail) |
403 | Error (RFC 9457) (Problem) |
404 | Error (RFC 9457) (Problem) |
422 | Error (RFC 9457) (Problem) |
GET /partner/clients/{workspace_id}/audit
Puntaje de puesta a punto de un cliente de la cartera
Sesión de panel del partner o Bearer con partner:read (FIU-524). Misma auditoría que GET /v1/workspace/audit, solo lectura, del proyecto indicado. Un proyecto que no es de la cartera del partner da 404, igual que uno inexistente. Sin caché.
- Authentication: API key or dashboard session
- Scopes:
partner:read
Parameters
| Name | In | Required | Type | Description |
|---|---|---|---|---|
workspace_id | path | Yes | string (uuid) | |
lang | query | No | string pt, es, en |
Responses
| Status | Description |
|---|---|
200 | Puntaje y lo que falta (SetupAudit) |
403 | Error (RFC 9457) (Problem) |
404 | Error (RFC 9457) (Problem) |
default | Error (RFC 9457) (Problem) |
GET /partner/courses
Cursos del partner (Aprendé)
Cursos revisados por Javier. Sin ninguno la lista va vacía y el panel no muestra la sección. Con Bearer (API key u OAuth del MCP) exige partner:read y el partner es quien emitió la credencial, mientras siga siendo miembro activo del proyecto de la credencial (si no, 403).
- Authentication: API key or dashboard session
- Scopes:
partner:read
Parameters
| Name | In | Required | Type | Description |
|---|---|---|---|---|
lang | query | No | string pt, es, en default pt |
Responses
| Status | Description |
|---|---|
200 | Contenido del panel del partner (CourseList) |
403 | Error (RFC 9457) (Problem) |
422 | Error (RFC 9457) (Problem) |
GET /partner/kit
Kit para vender del partner
Kit para vender: mensajes por rubro y plantillas de proyecto, con el link ?ref del partner ya puesto. Con Bearer (API key u OAuth del MCP) exige partner:read y el partner es quien emitió la credencial, mientras siga siendo miembro activo del proyecto de la credencial (si no, 403).
- Authentication: API key or dashboard session
- Scopes:
partner:read
Parameters
| Name | In | Required | Type | Description |
|---|---|---|---|---|
lang | query | No | string pt, es, en default pt |
Responses
| Status | Description |
|---|---|
200 | Contenido del panel del partner (PartnerKit) |
403 | Error (RFC 9457) (Problem) |
422 | Error (RFC 9457) (Problem) |
GET /partner/news
Novedades para el partner
Novedades del sitio con la etiqueta partners primero y la última para negocios, lista para compartir. Con Bearer (API key u OAuth del MCP) exige partner:read y el partner es quien emitió la credencial, mientras siga siendo miembro activo del proyecto de la credencial (si no, 403).
- Authentication: API key or dashboard session
- Scopes:
partner:read
Parameters
| Name | In | Required | Type | Description |
|---|---|---|---|---|
lang | query | No | string pt, es, en default pt |
Responses
| Status | Description |
|---|---|
200 | Contenido del panel del partner (PartnerNews) |
403 | Error (RFC 9457) (Problem) |
422 | Error (RFC 9457) (Problem) |
GET /partner/today
Hoy del panel del partner
Sesión de panel del partner (FIU-434). Saludo con el nombre de la cuenta, el partner (sin comisión ni contacto), progreso de la cartera (clientes, activos en 30 días y fecha del primero), una sola próxima acción (canal caído, prueba que vence, conectar un canal, cliente que se apaga o, sin clientes, crear el primero) y las alertas con algún cliente (las vacías no vienen). 403 partner_required si la cuenta no es de un partner. Con Bearer (API key u OAuth del MCP, FIU-439) exige partner:read y el partner es quien emitió la credencial, mientras siga siendo miembro activo del proyecto de la credencial (si no, 403). Sin caché.
- Authentication: API key or dashboard session
- Scopes:
partner:read
Responses
| Status | Description |
|---|---|
200 | Hoy del panel del partner (PartnerToday) |
403 | Error (RFC 9457) (Problem) |
GET /webhook-endpoints
Listar endpoints de webhooks (owner/manager o scope webhooks:manage)
- Authentication: API key or dashboard session
- Scopes:
webhooks:manage
Responses
| Status | Description |
|---|---|
200 | OK (object) |
default | Error (RFC 9457) (Problem) |
POST /webhook-endpoints
Crear endpoint (webhooks:manage). El secreto se devuelve una sola vez.
URL https obligatoria; se resuelve el DNS y se rechazan IPs privadas, loopback, link-local y metadatos
de nube (422 unsafe_webhook_url). Máximo 10 por workspace (409 webhook_limit_reached). No admite
Idempotency-Key (400 idempotency_not_supported): la respuesta contiene el secreto. Cache-Control: no-store.
Solo los tipos de EventType se pueden suscribir: un tipo desconocido responde 422 invalid_webhook
con unsupported_events y supported_events. Las entregas usan data.booking, data.payment,
data.message, data.conversation o data.action según la familia del evento; no incluyen texto de mensajes.
- Authentication: API key or dashboard session
- Scopes:
webhooks:manage
Request body (required)
application/json: object
Responses
| Status | Description |
|---|---|
201 | Creado (``WebhookEndpoint / object) |
422 | Error (RFC 9457) (Problem) |
default | Error (RFC 9457) (Problem) |
GET /webhook-endpoints/{id}
Ver un endpoint
- Authentication: API key or dashboard session
- Scopes: None
Parameters
| Name | In | Required | Type | Description |
|---|---|---|---|---|
id | path | Yes | string |
Responses
| Status | Description |
|---|---|
200 | OK (WebhookEndpoint) |
default | Error (RFC 9457) (Problem) |
PATCH /webhook-endpoints/{id}
Cambiar URL, eventos o activar/desactivar (reactivar pone en cero los fallos)
- Authentication: API key or dashboard session
- Scopes: None
Parameters
| Name | In | Required | Type | Description |
|---|---|---|---|---|
id | path | Yes | string |
Request body (required)
application/json: object
Responses
| Status | Description |
|---|---|
200 | OK (WebhookEndpoint) |
422 | Error (RFC 9457) (Problem) |
default | Error (RFC 9457) (Problem) |
DELETE /webhook-endpoints/{id}
Borrar el endpoint y su log de entregas
- Authentication: API key or dashboard session
- Scopes: None
Parameters
| Name | In | Required | Type | Description |
|---|---|---|---|---|
id | path | Yes | string |
Responses
| Status | Description |
|---|---|
204 | Borrado |
default | Error (RFC 9457) (Problem) |
GET /webhook-endpoints/{id}/deliveries
Log de entregas del endpoint (más nueva primero)
- Authentication: API key or dashboard session
- Scopes: None
Parameters
| Name | In | Required | Type | Description |
|---|---|---|---|---|
id | path | Yes | string | |
limit | query | No | integer default 25 | |
cursor | query | No | string |
Responses
| Status | Description |
|---|---|
200 | Página (object) |
default | Error (RFC 9457) (Problem) |
POST /webhook-endpoints/{id}/deliveries/{delivery_id}/resend
Reenviar una entrega (vuelve a la cola con los intentos en cero)
- Authentication: API key or dashboard session
- Scopes: None
Parameters
| Name | In | Required | Type | Description |
|---|---|---|---|---|
id | path | Yes | string | |
delivery_id | path | Yes | string |
Responses
| Status | Description |
|---|---|
202 | Reencolada (WebhookDelivery) |
409 | El endpoint está deshabilitado |
default | Error (RFC 9457) (Problem) |
POST /webhook-endpoints/{id}/ping
Encolar un evento de prueba webhook.ping (un solo intento)
- Authentication: API key or dashboard session
- Scopes: None
Parameters
| Name | In | Required | Type | Description |
|---|---|---|---|---|
id | path | Yes | string |
Responses
| Status | Description |
|---|---|
202 | Entrega encolada (WebhookDelivery) |
default | Error (RFC 9457) (Problem) |
POST /webhook-endpoints/{id}/rotate-secret
Rotar el secreto de firma (el anterior deja de valer; se muestra una sola vez)
- Authentication: API key or dashboard session
- Scopes: None
Parameters
| Name | In | Required | Type | Description |
|---|---|---|---|---|
id | path | Yes | string |
Responses
| Status | Description |
|---|---|
200 | Endpoint con el secreto nuevo (Cache-Control: no-store) (``WebhookEndpoint / object) |
default | Error (RFC 9457) (Problem) |
POST /workspace/examples
Componer de 1 a 3 ejemplos por parte (owner; requiere X-Csrf-Token)
F3-407 (ADR 0036 fase 2). Aplica las partes pedidas (vocabulary, flows, automations, catalog; todas por defecto) de cada ejemplo, idempotente por ejemplo y parte (lo ya aplicado devuelve already_applied) y sin duplicar por nombre. Nunca crea personas ni recursos (decisiones 1, 12 y 13 del dueño); el catálogo son servicios y productos inactivos y sin precio sobre la agenda que el negocio ya tiene (resource_group_id o, si hay uno solo, ese grupo); sin agenda queda skipped con needs_agenda. El vocabulario suma términos ausentes conservando el primer preset y los términos existentes; no modifica uno editado por el negocio (vocabulary_already_set). Tope de 3 ejemplos distintos por proyecto (409 examples_limit); ejemplo desconocido 409 unknown_example. La parte flows del taller y del lavadero activa además Vehículos (created.asset_type, FIU-610; nunca crea bienes) y su deshacer lo desactiva, sin borrarlo, si nadie lo tocó y no tiene bienes (si no, kept.asset_type). Serializa con la fila del workspace y audita workspace.blueprint_applied y workspace.example_applied por parte. Permiso workspace:blueprint; sin API key.
- Authentication: API key or dashboard session
- Scopes:
settings:write
Parameters
| Name | In | Required | Type | Description |
|---|---|---|---|---|
X-Csrf-Token | header | Yes | string |
Request body (required)
application/json: ExamplesInput
Responses
| Status | Description |
|---|---|
200 | Resultado por ejemplo y parte, y estado de rasgos y ejemplos aplicados (ExamplesResult) |
409 | Error (RFC 9457) (Problem) |
default | Error (RFC 9457) (Problem) |
DELETE /workspace/examples/{key}
Deshacer una parte (o todas) de un ejemplo (owner; requiere X-Csrf-Token)
F3-407. Vocabulario, vuelve al anterior si nadie lo cambió; flujos, desactiva los que nadie editó ni usa; automatizaciones, retira las que siguen inactivas y sin uso; catálogo, borra los servicios que siguen sin ediciones y sin tareas (los productos nunca se borran, ya nacen inactivos). Lo que se queda sale en kept y deja de ser del ejemplo. Una parte no aplicada devuelve not_applied. Audita workspace.example_undone. Permiso workspace:blueprint; sin API key.
- Authentication: API key or dashboard session
- Scopes:
settings:write
Parameters
| Name | In | Required | Type | Description |
|---|---|---|---|---|
key | path | Yes | string | |
part | query | No | ExamplePart / null (null) | |
X-Csrf-Token | header | Yes | string |
Responses
| Status | Description |
|---|---|
200 | Resultado por parte y estado de rasgos y ejemplos aplicados (ExamplesResult) |
default | Error (RFC 9457) (Problem) |
GET /workspace/template
Exportar la configuración del proyecto como plantilla (owner)
La configuración del proyecto como plantilla JSON (ADR 0042, FIU-523): flujos con la raíz de atención y las intenciones, servicios, productos, planes, base de ayuda, textos del bot, automatizaciones, encadenamientos, vocabulario y tipos de bien del cliente activos (customer_asset_types, FIU-610: uno de fábrica viaja como {key, preset}), todo por ref y sin ids. Nunca clientes ni sus bienes, tareas, cobros, canales, credenciales, API keys ni secretos. Audita template.exported en el origen. Se descarga como archivo (Content-Disposition). Permiso workspace:template_export; con API key, config:read.
- Authentication: API key or dashboard session
- Scopes:
config:read
Responses
| Status | Description |
|---|---|
200 | Plantilla del proyecto (ProjectTemplate) |
403 | Error (RFC 9457) (Problem) |
default | Error (RFC 9457) (Problem) |