openapi: 3.2.0 info: title: MindCloud Public Workflows API version: 2.0.0 description: REST surface under /v2. Authenticate with a company-scoped API key sent as a bearer token. Each key holds a set of permissions; each operation lists the ones it requires as the apiKey security roles. A request may use a permission only while the user who created the key also holds it. servers: - url: https://connect.mindcloud.co security: - apiKey: [] tags: - name: Workflows paths: /v2/workflows: get: operationId: v2-list-workflows summary: List workflows for the company with filtering, sorting, and pagination description: 'List workflows for the company with filtering, sorting, and pagination. The workflow definition is only available on the detail endpoint. Each filterable field is also a query parameter: `status=active` matches it exactly, and bracket operators (eq, ne, gt, gte, lt, lte, contains, starts, ends, in, nin) compare, e.g. `createdOn[gte]=2026-01-01` or `status[in]=failed,cancelled`. contains, starts, and ends apply to text fields only. Requires the API key permission workflow:view.' tags: - Workflows security: - apiKey: - workflow:view parameters: - name: fields in: query required: false schema: type: string description: 'Comma-separated fields to return; all of them when left out, and id always. Each item then carries only those keys, whatever its schema requires. Fields: id, name, type, isActive, isTemplate, size, tags, createdOn, createdBy, updatedOn, updatedBy.' - $ref: '#/components/parameters/limit' - $ref: '#/components/parameters/offset' - name: sort in: query required: false schema: type: string description: 'Comma-separated sort fields; prefix one with - for descending. Sortable fields: id, name, type, isActive, isTemplate, size, tags, createdOn, createdBy, updatedOn, updatedBy. Default: -createdOn.' - name: where in: query required: false schema: type: string maxLength: 2048 description: 'RSQL filter expression. Filterable fields: id, name, type, isActive, isTemplate, size, tags, createdOn, createdBy, updatedOn, updatedBy. Operators: ==, !=, >, >=, <, <=, =in=, =out=, =like=. Logical: ; (AND), , (OR); AND binds tighter than OR. Example: "status==active;name=like=Sales*"' - name: id in: query required: false schema: type: string description: 'Filter on id: `id=value` matches it exactly. Bracket operators: `id[ne]`, `id[gt]`, `id[gte]`, `id[lt]`, `id[lte]`, `id[contains]`, `id[starts]`, `id[ends]`, and `id[in]` / `id[nin]` with comma-separated values.' - name: name in: query required: false schema: type: string description: 'Filter on name: `name=value` matches it exactly. Bracket operators: `name[ne]`, `name[gt]`, `name[gte]`, `name[lt]`, `name[lte]`, `name[contains]`, `name[starts]`, `name[ends]`, and `name[in]` / `name[nin]` with comma-separated values.' - name: type in: query required: false schema: type: string description: 'Filter on type: `type=value` matches it exactly. Bracket operators: `type[ne]`, `type[gt]`, `type[gte]`, `type[lt]`, `type[lte]`, `type[contains]`, `type[starts]`, `type[ends]`, and `type[in]` / `type[nin]` with comma-separated values.' - name: isActive in: query required: false schema: type: boolean description: 'Filter on isActive: `isActive=value` matches it exactly. Bracket operators: `isActive[ne]`, `isActive[gt]`, `isActive[gte]`, `isActive[lt]`, `isActive[lte]`, and `isActive[in]` / `isActive[nin]` with comma-separated values.' - name: isTemplate in: query required: false schema: type: boolean description: 'Filter on isTemplate: `isTemplate=value` matches it exactly. Bracket operators: `isTemplate[ne]`, `isTemplate[gt]`, `isTemplate[gte]`, `isTemplate[lt]`, `isTemplate[lte]`, and `isTemplate[in]` / `isTemplate[nin]` with comma-separated values.' - name: size in: query required: false schema: type: string description: 'Filter on size: `size=value` matches it exactly. Bracket operators: `size[ne]`, `size[gt]`, `size[gte]`, `size[lt]`, `size[lte]`, `size[contains]`, `size[starts]`, `size[ends]`, and `size[in]` / `size[nin]` with comma-separated values.' - name: tags in: query required: false schema: type: string description: 'Filter on tags: `tags=value` matches it exactly. Bracket operators: `tags[ne]`, `tags[gt]`, `tags[gte]`, `tags[lt]`, `tags[lte]`, `tags[contains]`, `tags[starts]`, `tags[ends]`, and `tags[in]` / `tags[nin]` with comma-separated values.' - name: createdOn in: query required: false schema: type: string description: 'Filter on createdOn: `createdOn=value` matches it exactly. A date or timestamp, such as 2026-10-01 or 2026-10-01T12:00:00Z. Bracket operators: `createdOn[ne]`, `createdOn[gt]`, `createdOn[gte]`, `createdOn[lt]`, `createdOn[lte]`, and `createdOn[in]` / `createdOn[nin]` with comma-separated values.' - name: createdBy in: query required: false schema: type: string description: 'Filter on createdBy: `createdBy=value` matches it exactly. Bracket operators: `createdBy[ne]`, `createdBy[gt]`, `createdBy[gte]`, `createdBy[lt]`, `createdBy[lte]`, `createdBy[contains]`, `createdBy[starts]`, `createdBy[ends]`, and `createdBy[in]` / `createdBy[nin]` with comma-separated values.' - name: updatedOn in: query required: false schema: type: string description: 'Filter on updatedOn: `updatedOn=value` matches it exactly. A date or timestamp, such as 2026-10-01 or 2026-10-01T12:00:00Z. Bracket operators: `updatedOn[ne]`, `updatedOn[gt]`, `updatedOn[gte]`, `updatedOn[lt]`, `updatedOn[lte]`, and `updatedOn[in]` / `updatedOn[nin]` with comma-separated values.' - name: updatedBy in: query required: false schema: type: string description: 'Filter on updatedBy: `updatedBy=value` matches it exactly. Bracket operators: `updatedBy[ne]`, `updatedBy[gt]`, `updatedBy[gte]`, `updatedBy[lt]`, `updatedBy[lte]`, `updatedBy[contains]`, `updatedBy[starts]`, `updatedBy[ends]`, and `updatedBy[in]` / `updatedBy[nin]` with comma-separated values.' - $ref: '#/components/parameters/CompanyId' responses: '200': description: Success. content: application/json: schema: type: object properties: success: type: boolean const: true data: type: array items: $ref: '#/components/schemas/Workflow' meta: $ref: '#/components/schemas/ListMeta' required: - success - data - meta default: description: Error. content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' post: operationId: v2-create-workflow summary: Create an empty workflow (metadata only) description: 'Create an empty workflow (metadata only). New workflows start disabled; add steps in the app, then enable via PATCH /v2/workflows/:workflowId. Requires the API key permission workflow:create.' tags: - Workflows security: - apiKey: - workflow:create parameters: - $ref: '#/components/parameters/CompanyId' requestBody: required: true content: application/json: schema: type: object properties: name: type: string minLength: 1 maxLength: 256 tags: default: [] maxItems: 50 type: array items: type: string minLength: 1 required: - name responses: '201': description: Success. content: application/json: schema: type: object properties: success: type: boolean const: true data: $ref: '#/components/schemas/Workflow' meta: type: object description: 'Response metadata, on endpoints that answer it: the usage window, a step count, or the provider paging of a Universal action run.' required: - success - data '400': description: The request body is invalid (INVALID_QUERY). content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' '500': description: The insert returned no row (WORKFLOW_CREATE_FAILED). content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' default: description: Error. content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' /v2/workflows/{workflowId}: get: operationId: v2-get-workflow summary: Get one workflow, including its full definition and summary description: 'Get one workflow, including its full definition and summary. Requires the API key permission workflow:view.' tags: - Workflows security: - apiKey: - workflow:view parameters: - name: workflowId in: path required: true schema: type: string minLength: 1 - $ref: '#/components/parameters/CompanyId' responses: '200': description: Success. content: application/json: schema: type: object properties: success: type: boolean const: true data: $ref: '#/components/schemas/WorkflowDetail' meta: type: object description: 'Response metadata, on endpoints that answer it: the usage window, a step count, or the provider paging of a Universal action run.' required: - success - data default: description: Error. content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' patch: operationId: v2-update-workflow summary: 'Update workflow metadata: rename, enable or disable through isActive, or…' description: 'Update workflow metadata: rename, enable or disable through isActive, or replace the assigned tags. Requires the API key permission workflow:edit.' tags: - Workflows security: - apiKey: - workflow:edit parameters: - name: workflowId in: path required: true schema: type: string minLength: 1 - $ref: '#/components/parameters/CompanyId' requestBody: required: false content: application/json: schema: type: object properties: name: type: string minLength: 1 maxLength: 256 isActive: type: boolean tags: maxItems: 50 type: array items: type: string minLength: 1 responses: '200': description: Success. content: application/json: schema: type: object properties: success: type: boolean const: true data: $ref: '#/components/schemas/Workflow' meta: type: object description: 'Response metadata, on endpoints that answer it: the usage window, a step count, or the provider paging of a Universal action run.' required: - success - data '400': description: The request is invalid, or none of "name", "isActive", or "tags" was provided (INVALID_QUERY, NO_FIELDS_TO_UPDATE). content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' '404': description: No workflow with this id belongs to the company (NOT_FOUND). content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' default: description: Error. content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' delete: operationId: v2-delete-workflow summary: Soft-delete a workflow description: 'Soft-delete a workflow. The workflow is disabled and disappears from the API, along with its recorded runs. Requires the API key permission workflow:delete.' tags: - Workflows security: - apiKey: - workflow:delete parameters: - name: workflowId in: path required: true schema: type: string minLength: 1 - $ref: '#/components/parameters/CompanyId' responses: '200': description: Success. content: application/json: schema: type: object properties: success: type: boolean const: true data: $ref: '#/components/schemas/DeletedResource' meta: type: object description: 'Response metadata, on endpoints that answer it: the usage window, a step count, or the provider paging of a Universal action run.' required: - success - data '400': description: The request is invalid (INVALID_QUERY). content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' '404': description: No workflow with this id belongs to the company (NOT_FOUND). content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' default: description: Error. content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' /v2/workflows/{workflowId}/duplicate: post: operationId: v2-duplicate-workflow summary: Duplicate a workflow within the company, including its steps and schedules description: 'Duplicate a workflow within the company, including its steps and schedules. The copy starts disabled and is named " (copy)" unless a name is provided. Requires the API key permission workflow:create.' tags: - Workflows security: - apiKey: - workflow:create parameters: - name: workflowId in: path required: true schema: type: string minLength: 1 - $ref: '#/components/parameters/CompanyId' requestBody: required: false content: application/json: schema: type: object properties: name: type: string minLength: 1 maxLength: 256 responses: '201': description: Success. content: application/json: schema: type: object properties: success: type: boolean const: true data: $ref: '#/components/schemas/Workflow' meta: type: object description: 'Response metadata, on endpoints that answer it: the usage window, a step count, or the provider paging of a Universal action run.' required: - success - data '400': description: The request is invalid (INVALID_QUERY). content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' '404': description: No workflow with this id is in the company (NOT_FOUND). content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' '409': description: The workflow step graph is invalid (WORKFLOW_GRAPH_INVALID). content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' '500': description: The duplicated workflow could not be loaded (WORKFLOW_DUPLICATE_FAILED). content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' default: description: Error. content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' /v2/workflows/{workflowId}/run: post: operationId: v2-run-workflow summary: Start a workflow run description: 'Start a workflow run. Execution is asynchronous: this returns the run id immediately; poll GET /v2/runs/:runId for the outcome. Runs the published version by default. Requires the API key permission workflow:run.' tags: - Workflows security: - apiKey: - workflow:run parameters: - name: workflowId in: path required: true schema: type: string minLength: 1 - $ref: '#/components/parameters/CompanyId' requestBody: required: false content: application/json: schema: type: object properties: version: default: published type: string enum: - published - draft environmentId: type: string minLength: 1 responses: '202': description: Success. content: application/json: schema: type: object properties: success: type: boolean const: true data: $ref: '#/components/schemas/QueuedRun' meta: type: object description: 'Response metadata, on endpoints that answer it: the usage window, a step count, or the provider paging of a Universal action run.' required: - success - data '400': description: The request is invalid, or the environment id is unknown to the company (INVALID_QUERY, UNKNOWN_ENVIRONMENT). content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' '404': description: No workflow with this id belongs to the company (NOT_FOUND). content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' '409': description: The workflow is disabled (WORKFLOW_DISABLED), or has no published version to run (WORKFLOW_NOT_PUBLISHED). content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' '503': description: The run could not be enqueued (RUN_ENQUEUE_FAILED). content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' default: description: Error. content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' /v2/workflows/{workflowId}/versions: get: operationId: v2-list-workflow-versions summary: 'List versions of a workflow: the mutable draft (version "draft") plus published…' description: 'List versions of a workflow: the mutable draft (version "draft") plus published and unpublished snapshots, newest first. Requires the API key permission workflow:view.' tags: - Workflows security: - apiKey: - workflow:view parameters: - name: workflowId in: path required: true schema: type: string minLength: 1 - $ref: '#/components/parameters/CompanyId' responses: '200': description: Success. content: application/json: schema: type: object properties: success: type: boolean const: true data: type: array items: $ref: '#/components/schemas/WorkflowVersion' meta: type: object description: 'Response metadata, on endpoints that answer it: the usage window, a step count, or the provider paging of a Universal action run.' required: - success - data default: description: Error. content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' /v2/workflows/{workflowId}/runs: get: operationId: v2-list-runs summary: List runs of one workflow with filtering, sorting, and pagination description: 'List runs of one workflow with filtering, sorting, and pagination. Filter by status, version, environmentId, startedOn range, endUserId, or installationId. Each filterable field is also a query parameter: `status=active` matches it exactly, and bracket operators (eq, ne, gt, gte, lt, lte, contains, starts, ends, in, nin) compare, e.g. `createdOn[gte]=2026-01-01` or `status[in]=failed,cancelled`. contains, starts, and ends apply to text fields only. Requires the API key permission log:view.' tags: - Workflows security: - apiKey: - log:view parameters: - name: workflowId in: path required: true schema: type: string - name: fields in: query required: false schema: type: string description: 'Comma-separated fields to return; all of them when left out, and id always. Each item then carries only those keys, whatever its schema requires. Fields: id, workflowId, status, version, environmentId, environmentName, startedOn, finishedOn, durationMs, operations, errorCount, warningCount, infoCount, endUserId, installationId, triggerAppSlug.' - $ref: '#/components/parameters/limit' - $ref: '#/components/parameters/offset' - name: sort in: query required: false schema: type: string description: 'Comma-separated sort fields; prefix one with - for descending. Sortable fields: id, workflowId, status, version, environmentId, environmentName, startedOn, finishedOn, durationMs, operations, errorCount, warningCount, infoCount, endUserId, installationId, triggerAppSlug. Default: -startedOn.' - name: where in: query required: false schema: type: string maxLength: 2048 description: 'RSQL filter expression. Filterable fields: id, workflowId, status, version, environmentId, environmentName, startedOn, finishedOn, durationMs, operations, errorCount, warningCount, infoCount, endUserId, installationId, triggerAppSlug. Operators: ==, !=, >, >=, <, <=, =in=, =out=, =like=. Logical: ; (AND), , (OR); AND binds tighter than OR. Example: "status==active;name=like=Sales*"' - name: id in: query required: false schema: type: string description: 'Filter on id: `id=value` matches it exactly. Bracket operators: `id[ne]`, `id[gt]`, `id[gte]`, `id[lt]`, `id[lte]`, `id[contains]`, `id[starts]`, `id[ends]`, and `id[in]` / `id[nin]` with comma-separated values.' - name: status in: query required: false schema: type: string description: 'Filter on status: `status=value` matches it exactly. Bracket operators: `status[ne]`, `status[gt]`, `status[gte]`, `status[lt]`, `status[lte]`, `status[contains]`, `status[starts]`, `status[ends]`, and `status[in]` / `status[nin]` with comma-separated values.' - name: version in: query required: false schema: type: string description: 'Filter on version: `version=value` matches it exactly. Bracket operators: `version[ne]`, `version[gt]`, `version[gte]`, `version[lt]`, `version[lte]`, `version[contains]`, `version[starts]`, `version[ends]`, and `version[in]` / `version[nin]` with comma-separated values.' - name: environmentId in: query required: false schema: type: string description: 'Filter on environmentId: `environmentId=value` matches it exactly. Bracket operators: `environmentId[ne]`, `environmentId[gt]`, `environmentId[gte]`, `environmentId[lt]`, `environmentId[lte]`, `environmentId[contains]`, `environmentId[starts]`, `environmentId[ends]`, and `environmentId[in]` / `environmentId[nin]` with comma-separated values.' - name: environmentName in: query required: false schema: type: string description: 'Filter on environmentName: `environmentName=value` matches it exactly. Bracket operators: `environmentName[ne]`, `environmentName[gt]`, `environmentName[gte]`, `environmentName[lt]`, `environmentName[lte]`, `environmentName[contains]`, `environmentName[starts]`, `environmentName[ends]`, and `environmentName[in]` / `environmentName[nin]` with comma-separated values.' - name: startedOn in: query required: false schema: type: string description: 'Filter on startedOn: `startedOn=value` matches it exactly. A date or timestamp, such as 2026-10-01 or 2026-10-01T12:00:00Z. Bracket operators: `startedOn[ne]`, `startedOn[gt]`, `startedOn[gte]`, `startedOn[lt]`, `startedOn[lte]`, and `startedOn[in]` / `startedOn[nin]` with comma-separated values.' - name: finishedOn in: query required: false schema: type: string description: 'Filter on finishedOn: `finishedOn=value` matches it exactly. A date or timestamp, such as 2026-10-01 or 2026-10-01T12:00:00Z. Bracket operators: `finishedOn[ne]`, `finishedOn[gt]`, `finishedOn[gte]`, `finishedOn[lt]`, `finishedOn[lte]`, and `finishedOn[in]` / `finishedOn[nin]` with comma-separated values.' - name: durationMs in: query required: false schema: type: number description: 'Filter on durationMs: `durationMs=value` matches it exactly. Bracket operators: `durationMs[ne]`, `durationMs[gt]`, `durationMs[gte]`, `durationMs[lt]`, `durationMs[lte]`, and `durationMs[in]` / `durationMs[nin]` with comma-separated values.' - name: operations in: query required: false schema: type: integer description: 'Filter on operations: `operations=value` matches it exactly. Bracket operators: `operations[ne]`, `operations[gt]`, `operations[gte]`, `operations[lt]`, `operations[lte]`, and `operations[in]` / `operations[nin]` with comma-separated values.' - name: errorCount in: query required: false schema: type: integer description: 'Filter on errorCount: `errorCount=value` matches it exactly. Bracket operators: `errorCount[ne]`, `errorCount[gt]`, `errorCount[gte]`, `errorCount[lt]`, `errorCount[lte]`, and `errorCount[in]` / `errorCount[nin]` with comma-separated values.' - name: warningCount in: query required: false schema: type: integer description: 'Filter on warningCount: `warningCount=value` matches it exactly. Bracket operators: `warningCount[ne]`, `warningCount[gt]`, `warningCount[gte]`, `warningCount[lt]`, `warningCount[lte]`, and `warningCount[in]` / `warningCount[nin]` with comma-separated values.' - name: infoCount in: query required: false schema: type: integer description: 'Filter on infoCount: `infoCount=value` matches it exactly. Bracket operators: `infoCount[ne]`, `infoCount[gt]`, `infoCount[gte]`, `infoCount[lt]`, `infoCount[lte]`, and `infoCount[in]` / `infoCount[nin]` with comma-separated values.' - name: endUserId in: query required: false schema: type: string description: 'Filter on endUserId: `endUserId=value` matches it exactly. Bracket operators: `endUserId[ne]`, `endUserId[gt]`, `endUserId[gte]`, `endUserId[lt]`, `endUserId[lte]`, `endUserId[contains]`, `endUserId[starts]`, `endUserId[ends]`, and `endUserId[in]` / `endUserId[nin]` with comma-separated values.' - name: installationId in: query required: false schema: type: string description: 'Filter on installationId: `installationId=value` matches it exactly. Bracket operators: `installationId[ne]`, `installationId[gt]`, `installationId[gte]`, `installationId[lt]`, `installationId[lte]`, `installationId[contains]`, `installationId[starts]`, `installationId[ends]`, and `installationId[in]` / `installationId[nin]` with comma-separated values.' - name: triggerAppSlug in: query required: false schema: type: string description: 'Filter on triggerAppSlug: `triggerAppSlug=value` matches it exactly. Bracket operators: `triggerAppSlug[ne]`, `triggerAppSlug[gt]`, `triggerAppSlug[gte]`, `triggerAppSlug[lt]`, `triggerAppSlug[lte]`, `triggerAppSlug[contains]`, `triggerAppSlug[starts]`, `triggerAppSlug[ends]`, and `triggerAppSlug[in]` / `triggerAppSlug[nin]` with comma-separated values.' - $ref: '#/components/parameters/CompanyId' responses: '200': description: Success. content: application/json: schema: type: object properties: success: type: boolean const: true data: type: array items: $ref: '#/components/schemas/Run' meta: $ref: '#/components/schemas/ListMeta' required: - success - data - meta default: description: Error. content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' components: schemas: QueuedRun: type: object properties: id: type: - string - 'null' description: The workflow log id. Poll GET /v2/runs/:runId with this id for the outcome. workflowId: type: string description: The workflow that was started. status: type: string enum: - waiting description: 'Always waiting: the run is queued.' version: type: string enum: - published - draft description: The version that runs. environmentId: type: - string - 'null' description: The environment it runs in, or null for the default. required: - id - workflowId - status - version - environmentId ErrorResponse: type: object properties: success: type: boolean const: false error: type: object properties: code: type: string description: 'Fixed by the status: 400 VALIDATION_FAILED, 401 UNAUTHORIZED, 403 FORBIDDEN, 404 NOT_FOUND, 409 CONFLICT, 410 GONE, 413 PAYLOAD_TOO_LARGE, 421 and 503 UNAVAILABLE, 429 RATE_LIMITED, 500 INTERNAL_ERROR, 502 PROVIDER_ERROR.' examples: - VALIDATION_FAILED - UNAUTHORIZED - FORBIDDEN - NOT_FOUND - CONFLICT - GONE - PAYLOAD_TOO_LARGE - RATE_LIMITED - INTERNAL_ERROR - PROVIDER_ERROR - UNAVAILABLE message: type: string details: type: object description: The specific cause (reason) and any evidence for it. Absent when the code says everything. properties: reason: type: string description: The specific cause, for example UNKNOWN_FILTER_FIELD or CONNECTION_IN_USE. field: type: string description: The parameter, filter, sort, or body field a 400 refused. accepted: type: array items: {} description: 'What a 400 would have accepted instead: parameter names, field names, or enum values.' provider: type: object description: 'On 502 PROVIDER_ERROR: the provider answer that failed.' properties: status: type: integer description: The provider's HTTP status. code: type: string description: The provider's own error code, when it sends one. required: - code - message required: - success - error Run: type: object properties: id: type: - string - 'null' description: Unique id of the run. workflowId: type: - string - 'null' description: The workflow this run belongs to. status: type: - string - 'null' description: 'Where the run stands or how it ended: waiting, running, finished, failed, cancelled, interrupted, limitExceeded, or cancelling.' version: type: - string - 'null' description: The workflow version that ran, or "draft". environmentId: type: - string - 'null' description: The environment the run targeted. environmentName: type: - string - 'null' description: That environment's name. startedOn: type: - string - 'null' format: date-time description: When the run started. finishedOn: type: - string - 'null' format: date-time description: When the run finished. Empty while it is still going. durationMs: type: - number - 'null' description: How long the run took, in milliseconds. operations: type: - integer - 'null' description: How many tasks the run used. This is the number that counts against your limit. errorCount: type: - integer - 'null' description: How many errors the run logged. warningCount: type: - integer - 'null' description: How many warnings the run logged. infoCount: type: - integer - 'null' description: How many info entries the run logged. endUserId: type: - string - 'null' description: The embedded end user the run belongs to, if any. installationId: type: - string - 'null' description: The embedded installation the run belongs to, if any. triggerAppSlug: type: - string - 'null' description: The app that triggered the run. required: - id - workflowId - status - version - environmentId - environmentName - startedOn - finishedOn - durationMs - operations - errorCount - warningCount - infoCount - endUserId - installationId - triggerAppSlug WorkflowVersion: type: object properties: version: type: - string - 'null' description: The version string, or "draft" for the current draft. isPublished: type: - boolean - 'null' description: True for the published version. createdOn: type: - string - 'null' format: date-time description: When this version was created. required: - version - isPublished - createdOn DeletedResource: type: object properties: id: type: string description: The id of the resource that was deleted. required: - id WorkflowDetail: type: object properties: id: type: - string - 'null' description: Unique id of the workflow. name: type: - string - 'null' description: The name your team gave the workflow. type: type: - string - 'null' description: The workflow's type. isActive: type: - boolean - 'null' description: True while the workflow is enabled and able to run. isTemplate: type: - boolean - 'null' description: True if this is a template rather than a live workflow. size: type: - string - 'null' description: 'The workflow''s runner size: xs, sm, md, lg, xl, or xxl. Empty when sized automatically.' tags: type: - array - 'null' items: type: string description: Ids of the tags on the workflow. The tag catalog is managed in the app. createdOn: type: - string - 'null' format: date-time description: When the workflow was created. createdBy: type: - string - 'null' description: Who created it. updatedOn: type: - string - 'null' format: date-time description: When it was last changed. updatedBy: type: - string - 'null' description: Who last changed it. workflow: description: The full workflow definition your team built. Its shape depends on the workflow. summary: description: The workflow's generated summary. Its shape depends on the workflow. required: - id - name - type - isActive - isTemplate - size - tags - createdOn - createdBy - updatedOn - updatedBy - workflow - summary ListMeta: type: object properties: pagination: type: object properties: totalCount: type: integer description: Matching records. A list read in SQL stops counting at 10000. totalCountExact: type: boolean description: False when totalCount stopped at that cap. hasNextPage: type: boolean description: True when another page follows. Page with this, not totalCount. hasPreviousPage: type: boolean required: - totalCount - totalCountExact - hasNextPage - hasPreviousPage required: - pagination Workflow: type: object properties: id: type: - string - 'null' description: Unique id of the workflow. name: type: - string - 'null' description: The name your team gave the workflow. type: type: - string - 'null' description: The workflow's type. isActive: type: - boolean - 'null' description: True while the workflow is enabled and able to run. isTemplate: type: - boolean - 'null' description: True if this is a template rather than a live workflow. size: type: - string - 'null' description: 'The workflow''s runner size: xs, sm, md, lg, xl, or xxl. Empty when sized automatically.' tags: type: - array - 'null' items: type: string description: Ids of the tags on the workflow. The tag catalog is managed in the app. createdOn: type: - string - 'null' format: date-time description: When the workflow was created. createdBy: type: - string - 'null' description: Who created it. updatedOn: type: - string - 'null' format: date-time description: When it was last changed. updatedBy: type: - string - 'null' description: Who last changed it. required: - id - name - type - isActive - isTemplate - size - tags - createdOn - createdBy - updatedOn - updatedBy parameters: offset: name: offset in: query required: false schema: type: integer minimum: 0 default: 0 description: Number of results to skip for pagination (default 0). CompanyId: name: X-Company-Id in: header required: false schema: type: string example: K3vX9qLm2RtA description: Optional. The id of a child organization of your API key's company to act on. Leave it out to act on the key's own company. See [Child organizations](https://mindcloud.co/docs/api/rest/introduction/child-organizations). limit: name: limit in: query required: false schema: type: integer minimum: 1 maximum: 1000 default: 100 description: Maximum number of results to return (1-1000, default 100). securitySchemes: apiKey: type: http scheme: bearer description: 'Company-scoped MindCloud API key sent as `Authorization: Bearer `. Each key holds permissions from the MindCloud roles catalog (workflow:view, workflow:run, universal:read, api_key:manage, ...), chosen when it is created; each operation lists the ones it requires as this scheme''s roles. A request may use a permission only while the user who created the key still holds it in the company the request acts on; a missing one answers 403 with details.reason API_KEY_PERMISSION_DENIED and details.required, and a key whose creator left the organization answers API_KEY_CREATOR_INACTIVE. The key''s accessLevel (full_access, run_workflows, read_only, or none) summarizes its permissions. Create a key at https://app.mindcloud.co/user/api-keys.'