Saltearse al contenido

Control de versiones de workflows

Cada cambio en un workflow puede generar una version, creando un historial completo de modificaciones con capacidad de comparar y restaurar versiones anteriores.

  • Al guardar un workflow, se puede crear una version manualmente
  • Antes de un rollback, el sistema crea automaticamente una version de respaldo
  • Cada version almacena el workflow_json completo (nodos, conexiones, configuracion)
POST /api/versions/workflow/:workflowId
Body: { "description": "Agregado nodo de validacion de stock" }

Se guarda:

  • Numero de version (secuencial)
  • Workflow JSON completo
  • Descripcion del cambio
  • Quien lo creo
  • Cantidad de nodos y conexiones
GET /api/versions/workflow/:workflowId

Devuelve la lista de versiones ordenadas de mas reciente a mas antigua:

[
{
"id": 45,
"version_number": 5,
"name": "Mi Workflow",
"description": "Agregado nodo de validacion",
"is_auto": false,
"nodes_count": 8,
"edges_count": 9,
"created_at": "2026-03-23T10:30:00Z"
},
{
"id": 42,
"version_number": 4,
"description": "Auto-backup antes de rollback",
"is_auto": true,
...
}
]
POST /api/versions/workflow/:workflowId/rollback/:versionId
  • Restaura el workflow_json de la version seleccionada
  • Crea automaticamente un backup de la version actual antes de restaurar
  • Actualiza la fecha de modificacion del workflow
GET /api/versions/workflow/:workflowId/diff/:version1Id/:version2Id

Devuelve las diferencias entre dos versiones:

{
"added_nodes": [
{ "id": "node_8", "type": "decision", "label": "Validar stock" }
],
"removed_nodes": [],
"modified_nodes": [
{ "id": "node_3", "changes": ["position", "config"] }
],
"added_edges": [
{ "source": "node_7", "target": "node_8" }
],
"removed_edges": [],
"summary": {
"total_changes": 3,
"nodes_added": 1,
"nodes_removed": 0,
"nodes_modified": 1,
"edges_added": 1,
"edges_removed": 0
}
}
DELETE /api/versions/:versionId

No se puede eliminar si es la unica version existente.

TipoCuando se creaCampo is_auto
ManualEl usuario guarda una version explicitamentefalse
AutomaticaAntes de un rollback (backup de seguridad)true