// ========================================== // Chat Switchboard — Workflow API Methods // ========================================== // Extends the global API object with workflow CRUD, stage management, // publishing, instance lifecycle, and assignment queue operations. // Loaded after api.js on the chat and admin surfaces. // ── Workflow Definitions ──────────────── API.listWorkflows = function(teamId) { const q = teamId ? `?team_id=${teamId}` : ''; return this._get('/api/v1/workflows' + q); }; API.getWorkflow = function(id) { return this._get(`/api/v1/workflows/${id}`); }; API.createWorkflow = function(data) { return this._post('/api/v1/workflows', data); }; API.updateWorkflow = function(id, patch) { return this._patch(`/api/v1/workflows/${id}`, patch); }; API.deleteWorkflow = function(id) { return this._del(`/api/v1/workflows/${id}`); }; // ── Stages ────────────────────────────── API.listStages = function(workflowId) { return this._get(`/api/v1/workflows/${workflowId}/stages`); }; API.createStage = function(workflowId, data) { return this._post(`/api/v1/workflows/${workflowId}/stages`, data); }; API.updateStage = function(workflowId, stageId, data) { return this._put(`/api/v1/workflows/${workflowId}/stages/${stageId}`, data); }; API.deleteStage = function(workflowId, stageId) { return this._del(`/api/v1/workflows/${workflowId}/stages/${stageId}`); }; API.reorderStages = function(workflowId, orderedIds) { return this._patch(`/api/v1/workflows/${workflowId}/stages/reorder`, { ordered_ids: orderedIds }); }; // ── Versioning ────────────────────────── API.publishWorkflow = function(workflowId) { return this._post(`/api/v1/workflows/${workflowId}/publish`, {}); }; API.getWorkflowVersion = function(workflowId, version) { return this._get(`/api/v1/workflows/${workflowId}/versions/${version}`); }; // ── Instances ─────────────────────────── API.startWorkflow = function(workflowId) { return this._post(`/api/v1/workflows/${workflowId}/start`, {}); }; API.getWorkflowStatus = function(channelId) { return this._get(`/api/v1/channels/${channelId}/workflow/status`); }; API.advanceWorkflow = function(channelId, data) { return this._post(`/api/v1/channels/${channelId}/workflow/advance`, { data }); }; API.rejectWorkflow = function(channelId, reason) { return this._post(`/api/v1/channels/${channelId}/workflow/reject`, { reason }); }; // ── Assignments ───────────────────────── API.listMyAssignments = function() { return this._get('/api/v1/workflow-assignments/mine'); }; API.listTeamAssignments = function(teamId, status) { return this._get(`/api/v1/teams/${teamId}/assignments?status=${status || 'unassigned'}`); }; API.claimAssignment = function(id) { return this._post(`/api/v1/workflow-assignments/${id}/claim`, {}); }; API.completeAssignment = function(id) { return this._post(`/api/v1/workflow-assignments/${id}/complete`, {}); };