Changeset 0.26.0 (#165)
This commit is contained in:
102
src/js/workflow-api.js
Normal file
102
src/js/workflow-api.js
Normal file
@@ -0,0 +1,102 @@
|
||||
// ==========================================
|
||||
// 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.
|
||||
|
||||
(function() {
|
||||
'use strict';
|
||||
if (typeof API === 'undefined') return;
|
||||
|
||||
// ── 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`, {});
|
||||
};
|
||||
})();
|
||||
Reference in New Issue
Block a user