{
  "info": {
    "name": "Soma BPMN Studio API",
    "description": "API para BPMN Studio: generar BPMN desde texto, CRUD de diagramas, API key y más.\n\nConfigura las variables de colección:\n- **baseUrl**: raíz del servidor (ej. http://localhost:3000)\n- **apiKey**: tu API key (soma_...) desde Configuración en la web.",
    "schema": "https://schema.postman.com/json/collection/v2.1.0/collection.json"
  },
  "variable": [
    { "key": "baseUrl", "value": "http://localhost:3000" },
    { "key": "apiKey", "value": "soma_your_api_key_here" }
  ],
  "item": [
    {
      "name": "Health",
      "item": [
        {
          "name": "Health check",
          "request": {
            "method": "GET",
            "header": [],
            "url": "{{baseUrl}}/api/health",
            "description": "Comprueba que el servidor responde. No requiere autenticación."
          }
        }
      ]
    },
    {
      "name": "Generate",
      "item": [
        {
          "name": "Generate BPMN from transcript",
          "request": {
            "method": "POST",
            "header": [
              { "key": "Content-Type", "value": "application/json" },
              { "key": "X-API-Key", "value": "{{apiKey}}", "disabled": false }
            ],
            "body": {
              "mode": "raw",
              "raw": "{\n  \"transcript\": \"Cuando recibimos una factura, la validamos. Si es válida la aprobamos, si no la rechazamos.\",\n  \"redesign\": false\n}"
            },
            "url": "{{baseUrl}}/api/generate",
            "description": "Genera un proceso BPMN a partir de una descripción en texto. Respuesta: bpmnXml, processName, processDescription, recommendations."
          }
        }
      ]
    },
    {
      "name": "Diagramas",
      "item": [
        {
          "name": "List diagrams",
          "request": {
            "method": "GET",
            "header": [
              { "key": "X-API-Key", "value": "{{apiKey}}" }
            ],
            "url": {
              "raw": "{{baseUrl}}/api/diagrams?tag=&projectId=",
              "host": ["{{baseUrl}}"],
              "path": ["api", "diagrams"],
              "query": [
                { "key": "tag", "value": "" },
                { "key": "projectId", "value": "" }
              ]
            },
            "description": "Lista los diagramas del usuario. Query opcional: tag, projectId."
          }
        },
        {
          "name": "Get diagram",
          "request": {
            "method": "GET",
            "header": [
              { "key": "X-API-Key", "value": "{{apiKey}}" }
            ],
            "url": {
              "raw": "{{baseUrl}}/api/diagrams/:diagramId",
              "host": ["{{baseUrl}}"],
              "path": ["api", "diagrams", ":diagramId"],
              "variable": [{ "key": "diagramId", "value": "" }]
            },
            "description": "Obtiene un diagrama por ID. Configura la variable diagramId (path)."
          }
        },
        {
          "name": "Create diagram",
          "request": {
            "method": "POST",
            "header": [
              { "key": "Content-Type", "value": "application/json" },
              { "key": "X-API-Key", "value": "{{apiKey}}" }
            ],
            "body": {
              "mode": "raw",
              "raw": "{\n  \"name\": \"Mi proceso\",\n  \"bpmnXml\": \"<?xml version=\\\"1.0\\\" encoding=\\\"UTF-8\\\"?>\\n<bpmn:definitions>...</bpmn:definitions>\",\n  \"processDescription\": \"Descripción opcional\",\n  \"recommendations\": [],\n  \"projectId\": null,\n  \"tags\": [\"ventas\"]\n}"
            },
            "url": "{{baseUrl}}/api/diagrams",
            "description": "Crea un nuevo diagrama. bpmnXml es obligatorio."
          }
        },
        {
          "name": "Update diagram",
          "request": {
            "method": "PUT",
            "header": [
              { "key": "Content-Type", "value": "application/json" },
              { "key": "X-API-Key", "value": "{{apiKey}}" }
            ],
            "body": {
              "mode": "raw",
              "raw": "{\n  \"name\": \"Nombre actualizado\",\n  \"processDescription\": \"Nueva descripción\"\n}"
            },
            "url": {
              "raw": "{{baseUrl}}/api/diagrams/:diagramId",
              "host": ["{{baseUrl}}"],
              "path": ["api", "diagrams", ":diagramId"],
              "variable": [{ "key": "diagramId", "value": "" }]
            },
            "description": "Actualiza un diagrama (campos parciales). Configura diagramId."
          }
        },
        {
          "name": "Delete diagram",
          "request": {
            "method": "DELETE",
            "header": [
              { "key": "X-API-Key", "value": "{{apiKey}}" }
            ],
            "url": {
              "raw": "{{baseUrl}}/api/diagrams/:diagramId",
              "host": ["{{baseUrl}}"],
              "path": ["api", "diagrams", ":diagramId"],
              "variable": [{ "key": "diagramId", "value": "" }]
            },
            "description": "Elimina un diagrama. Configura diagramId."
          }
        },
        {
          "name": "Diagram chat",
          "request": {
            "method": "POST",
            "header": [
              { "key": "Content-Type", "value": "application/json" },
              { "key": "X-API-Key", "value": "{{apiKey}}" }
            ],
            "body": {
              "mode": "raw",
              "raw": "{\n  \"message\": \"Añade un paso de validación después de recibir la factura\",\n  \"history\": []\n}"
            },
            "url": {
              "raw": "{{baseUrl}}/api/diagrams/:diagramId/chat",
              "host": ["{{baseUrl}}"],
              "path": ["api", "diagrams", ":diagramId", "chat"],
              "variable": [{ "key": "diagramId", "value": "" }]
            },
            "description": "Chat con el diagrama (asistente). Configura diagramId. Respuesta puede incluir bpmnXml actualizado."
          }
        }
      ]
    },
    {
      "name": "Projects",
      "item": [
        {
          "name": "List projects",
          "request": {
            "method": "GET",
            "header": [{ "key": "X-API-Key", "value": "{{apiKey}}" }],
            "url": "{{baseUrl}}/api/projects",
            "description": "Lista los proyectos del usuario. Respuesta: { projects: [...] }."
          }
        },
        {
          "name": "Create project",
          "request": {
            "method": "POST",
            "header": [
              { "key": "Content-Type", "value": "application/json" },
              { "key": "X-API-Key", "value": "{{apiKey}}" }
            ],
            "body": {
              "mode": "raw",
              "raw": "{\n  \"name\": \"Mi proyecto\"\n}"
            },
            "url": "{{baseUrl}}/api/projects",
            "description": "Crea un proyecto. Body: { name }. Respuesta: { project }."
          }
        },
        {
          "name": "Get project",
          "request": {
            "method": "GET",
            "header": [{ "key": "X-API-Key", "value": "{{apiKey}}" }],
            "url": {
              "raw": "{{baseUrl}}/api/projects/:projectId",
              "host": ["{{baseUrl}}"],
              "path": ["api", "projects", ":projectId"],
              "variable": [{ "key": "projectId", "value": "" }]
            },
            "description": "Obtiene un proyecto por ID con diagramCount. Configura projectId."
          }
        },
        {
          "name": "Update project",
          "request": {
            "method": "PUT",
            "header": [
              { "key": "Content-Type", "value": "application/json" },
              { "key": "X-API-Key", "value": "{{apiKey}}" }
            ],
            "body": {
              "mode": "raw",
              "raw": "{\n  \"name\": \"Nombre actualizado\"\n}"
            },
            "url": {
              "raw": "{{baseUrl}}/api/projects/:projectId",
              "host": ["{{baseUrl}}"],
              "path": ["api", "projects", ":projectId"],
              "variable": [{ "key": "projectId", "value": "" }]
            },
            "description": "Actualiza un proyecto. Body: { name }. Configura projectId."
          }
        },
        {
          "name": "Delete project",
          "request": {
            "method": "DELETE",
            "header": [{ "key": "X-API-Key", "value": "{{apiKey}}" }],
            "url": {
              "raw": "{{baseUrl}}/api/projects/:projectId",
              "host": ["{{baseUrl}}"],
              "path": ["api", "projects", ":projectId"],
              "variable": [{ "key": "projectId", "value": "" }]
            },
            "description": "Elimina un proyecto. Los diagramas pasan a Sin proyecto. Respuesta: { success, unassignedCount }."
          }
        }
      ]
    },
    {
      "name": "Settings (API key)",
      "item": [
        {
          "name": "Get API key status",
          "request": {
            "method": "GET",
            "header": [
              { "key": "X-API-Key", "value": "{{apiKey}}" }
            ],
            "url": "{{baseUrl}}/api/settings/api-key",
            "description": "Indica si el usuario tiene una API key. Respuesta: { hasKey: true|false }."
          }
        },
        {
          "name": "Generate API key",
          "request": {
            "method": "POST",
            "header": [
              { "key": "X-API-Key", "value": "{{apiKey}}" }
            ],
            "url": "{{baseUrl}}/api/settings/api-key/generate",
            "description": "Genera una nueva API key. La respuesta contiene apiKey (solo se muestra una vez)."
          }
        },
        {
          "name": "Revoke API key",
          "request": {
            "method": "POST",
            "header": [
              { "key": "X-API-Key", "value": "{{apiKey}}" }
            ],
            "url": "{{baseUrl}}/api/settings/api-key/revoke",
            "description": "Revoca la API key actual."
          }
        }
      ]
    },
    {
      "name": "Otros",
      "item": [
        {
          "name": "Analyze BPMN",
          "request": {
            "method": "POST",
            "header": [
              { "key": "Content-Type", "value": "application/json" },
              { "key": "X-API-Key", "value": "{{apiKey}}" }
            ],
            "body": {
              "mode": "raw",
              "raw": "{\n  \"bpmnXml\": \"<?xml version=\\\"1.0\\\"?>\\n<bpmn:definitions>...</bpmn:definitions>\"\n}"
            },
            "url": "{{baseUrl}}/api/analyze-bpmn",
            "description": "Analiza el proceso (requiere auth)."
          }
        },
        {
          "name": "Redesign BPMN",
          "request": {
            "method": "POST",
            "header": [
              { "key": "Content-Type", "value": "application/json" },
              { "key": "X-API-Key", "value": "{{apiKey}}" }
            ],
            "body": {
              "mode": "raw",
              "raw": "{\n  \"bpmnXml\": \"<?xml ...>\",\n  \"instructions\": \"Opcional: instrucciones de rediseño\"\n}"
            },
            "url": "{{baseUrl}}/api/redesign-bpmn",
            "description": "Rediseña el BPMN (requiere auth)."
          }
        }
      ]
    }
  ]
}
