WorkflowsResource ================= Introduction ------------ Workflows Resource. Manages SNAP workflows represented as XML graph files. Main capabilities: - Upload and update workflow XML files - Read workflow XML and workflow metadata - Manage workflow sharing permissions - Run workflows in a workspace - Download workflow XML file All endpoints are under base path /workflows. Authentication: - Most endpoints require x-session-token. - Download supports token query parameter for browser-driven downloads. Common Models ------------- - PrimitiveResult: - IntValue, StringValue, DoubleValue, BoolValue - SnapWorkflowViewModel: - workflowId, name, description, isPublic, userId, nodeUrl, sharedWithMe, readOnly, inputNodeNames, inputFileNames, outputNodeNames, outputFileNames, templateParams, lastUpdate - WorkflowSharingViewModel: - userId, permissions APIs ---- POST /workflows/uploadfile ^^^^^^^^^^^^^^^^^^^^^^^^^^ - Description: Uploads and saves a new SNAP workflow XML file and creates workflow DB metadata. - Consumes: multipart/form-data - Form field: file - Query params: workspace (optional), name (required), description (optional), public (optional boolean) - Success: 200 OK - Return codes: 200, 400, 401, 500 - Notes: parses XML and auto-detects input/output node ids (Read/Write operators). POST /workflows/updatefile ^^^^^^^^^^^^^^^^^^^^^^^^^^ - Description: Replaces workflow XML file for an existing workflow id. - Consumes: multipart/form-data - Form field: file - Query params: workflowid (required) - Success: 200 OK - Return codes: 200, 401, 403, 304, 500 - Notes: updates detected input/output node ids in DB metadata. GET /workflows/getxml ^^^^^^^^^^^^^^^^^^^^^ - Description: Returns workflow XML content. - Query params: workflowId (required) - Produces: application/xml - Success: 200 OK, body: XML string - Return codes: 200, 401, 403, 400, 304, 500 POST /workflows/updatexml ^^^^^^^^^^^^^^^^^^^^^^^^^ - Description: Updates workflow XML by passing XML text body (wrapper over updatefile). - Query params: workflowId (required) - Consumes: application/xml - Produces: application/xml - Body: workflow XML string - Success: 200 OK - Return codes: inherited from updatefile POST /workflows/updateparams ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - Description: Updates workflow metadata parameters. - Query params: workflowid (required), name (optional), description (optional), public (optional boolean) - Consumes: multipart/form-data - Success: 200 OK - Return codes: 200, 401, 403, 400 GET /workflows/getbyuser ^^^^^^^^^^^^^^^^^^^^^^^^ - Description: Returns workflows visible to current user (own, public, shared). - Success: 200 OK, body: array of SnapWorkflowViewModel - Notes: - Sets sharedWithMe and readOnly according to ownership/sharing rights. - Includes lastUpdate from underlying XML file timestamp when available. GET /workflows/delete ^^^^^^^^^^^^^^^^^^^^^ - Description: Deletes workflow; if caller is not owner but has sharing, removes only their sharing entry. - Query params: workflowId (required) - Success: 200 OK - Return codes: 200, 401, 403, 400, 500 PUT /workflows/share/add ^^^^^^^^^^^^^^^^^^^^^^^^ - Description: Shares a workflow with another user. - Query params: workflowId (required), userId (required), rights (optional; defaults to READ if invalid) - Success: 200 OK, body: PrimitiveResult - Notes: - Prevents auto-share for non-admin. - Sends notification email on success. DELETE /workflows/share/delete ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - Description: Removes one workflow sharing entry. - Query params: workflowId (required), userId (required) - Success: 200 OK, body: PrimitiveResult - Notes: allowed for owner, shared user itself, or admin access flow. GET /workflows/share/byworkflow ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - Description: Lists active sharings for a workflow. - Query params: workflowId (required) - Success: 200 OK, body: array of WorkflowSharingViewModel - Notes: returns empty list on invalid session/no access/errors. POST /workflows/run ^^^^^^^^^^^^^^^^^^^ - Description: Executes workflow as GRAPH launcher operation in target workspace. - Query params: workspace (required), parent (optional parent process workspace id) - Body: SnapWorkflowViewModel (input/output files/nodes and optional templateParams) - Success: 200 OK, body: PrimitiveResult - Notes: - Requires valid user session and valid subscription. - Requires workflow access and workspace write permission. - If workflow XML is not present on current node, it attempts remote download from workflow node. GET /workflows/download ^^^^^^^^^^^^^^^^^^^^^^^ - Description: Downloads workflow XML file by workflow id. - Query params: workflowId (required), token (optional if x-session-token header is provided) - Produces: application/octet-stream - Success: 200 OK, streaming attachment - Return codes: 200, 204, 401, 403, 500 GET /workflows/byname ^^^^^^^^^^^^^^^^^^^^^ - Description: Returns workflow metadata by workflow name. - Query params: name (required) - Success: 200 OK, body: SnapWorkflowViewModel - Return codes: 200, 401, 403, 400, 304, 500 - Notes: includes lastUpdate from XML file timestamp.