Documentación de la API
Base URL: /api
Rutas que requieren usuario aceptan:
| Método | Descripción |
|---|---|
Sesión | Cookie (navegador) |
Authorization: Bearer <idToken> | Token Firebase (web) |
X-API-Key o Authorization: Bearer <soma_...> | API key — se genera en Configuración |
Health
Comprueba que el servidor responde. Sin autenticación.
| Code | Schema |
|---|---|
200 | { "ok": true } |
Generate
Genera un proceso BPMN desde texto. Acepta JSON o multipart (.txt, .pdf, .docx, .xlsx).
| Nombre | Tipo | Requerido | Descripción |
|---|---|---|---|
transcript | string | Sí | Descripción o transcripción del proceso |
redesign | boolean | No | Si true, aplica mejores prácticas BPMN |
{
"transcript": "Cuando recibimos una factura, la validamos...",
"redesign": false
}
| Code | Schema |
|---|---|
200 | { "bpmnXml", "processName", "processDescription", "recommendations", "transcript" } |
400 | { "error", "suggestion" } |
Diagramas
Todas las rutas requieren autenticación.
Lista los diagramas del usuario.
| Nombre | Tipo | Descripción |
|---|---|---|
projectId | string | Filtrar por proyecto |
tag | string | Filtrar por etiqueta |
200 → { "diagrams": [ { "id", "name", "processDescription", "bpmnXml", "createdAt", ... } ] }
Obtiene un diagrama por ID.
| Nombre | Descripción |
|---|---|
id | ID del diagrama |
200 → { "diagram": { ... } }
Crea un nuevo diagrama.
| Nombre | Tipo | Requerido |
|---|---|---|
name | string | Sí |
bpmnXml | string | Sí |
transcript | string | No |
processDescription | string | No |
recommendations | array | No |
projectId | string | No |
tags | array | No |
200 → { "diagram": { "id", "name", ... } }
Actualiza un diagrama (campos parciales).
200 → { "diagram": { ... } }
Elimina un diagrama.
200 sin cuerpo
Lista versiones del diagrama. Query: limit (opcional).
Chat con el diagrama (asistente). Body: { "message", "history?", "bpmnXml?" }. Respuesta puede incluir bpmnXml actualizado.
Projects
Lista los proyectos del usuario.
200 → { "projects": [ { "id", "name", "createdAt", "updatedAt" }, ... ] }
Crea un proyecto. Body: { "name" }.
201 → { "project": { "id", "name", ... } }
Obtiene un proyecto por ID con el número de diagramas asignados.
200 → { "project": { ... }, "diagramCount": number }
Actualiza un proyecto. Body: { "name" }.
200 → { "project": { ... } }
Elimina un proyecto. Los diagramas asignados pasan a "Sin proyecto".
200 → { "success": true, "unassignedCount": number }
Settings (API key)
Indica si el usuario tiene API key. 200 → { "hasKey": true|false }
Genera una nueva API key. 200 → { "apiKey": "soma_..." } (solo una vez).
Revoca la API key actual. 200 → { "ok": true }
Otros
Analiza el proceso. Body: { "bpmnXml" }. Requiere auth.
Rediseña el BPMN. Body: { "bpmnXml", "instructions?" }. Requiere auth.
Transcribe audio (Whisper). Body: { "audio": "base64..." }.
Extrae texto de archivo. Multipart: .pdf, .docx, .xlsx.
Configuración · Genera tu API key para scripts o el servidor MCP (Cursor).