{"openapi":"3.1.0","info":{"title":"Process Street Public API","version":"1.1","description":"The Process Street API is organized around REST. Our API has predictable resource-oriented URLs,\naccepts JSON-encoded request bodies, returns JSON-encoded responses, and uses standard HTTP response\ncodes, authentication, and verbs.\n\nAn [MCP server](https://www.process.st/help/docs/mcp-server/) is also available for integrating with AI agents and tools.\n\n## Core concepts\n\n**Workflow vs Workflow Run.** A **Workflow** (sometimes called a \"playbook\" or template) is the reusable\ndefinition — tasks, form fields, logic, automations. A **Workflow Run** (sometimes called a \"checklist\")\nis one *instance* of running a Workflow. You list available templates via `listWorkflows`; you start one\nvia `createWorkflowRun` (or by scheduling); and you read or update the live state of an in-progress run\nvia the Workflow Runs / Tasks / Form Field Values endpoints. The two are easy to confuse — when in doubt,\n\"Workflow\" is the *blueprint*, \"Workflow Run\" is *one execution*.\n\n**Pages** are similar but standalone: a Page is a content document (no tasks/form fields). A\n**Page Revision** is a versioned snapshot of its content.\n\n## IDs\n\nAll resource IDs are opaque 22-character URL-safe strings (Muids — a base64-encoded UUID). Treat them\nas opaque tokens. Do not parse them, attempt to sort by them, or assume any internal structure. You can\ncompare two IDs for equality with a plain string comparison.\n\n## Dates and times\n\nAll timestamps in requests and responses are ISO-8601, UTC, with millisecond precision\n(e.g. `2024-09-15T14:32:00.000Z`). For date-only fields (typically due dates), use a calendar date\n(`2024-09-15`).\n\n## Pagination\n\nList endpoints page through results using an opaque cursor named `_` (yes, just an underscore).\nThe flow:\n\n1. Call the list endpoint without `_` to get the first page.\n2. Each response includes a `links[]` array. If there are more pages, you'll find an entry with\n   `name: \"next\"` whose `href` is a fully-formed URL you can `GET` directly.\n3. Keep following `next.href` until the `next` link is absent — that's the end.\n\nYou can also reuse the `_` value from one response by passing it as the `_` query parameter on the\nnext request, but **following the `href` is simpler and forward-compatible**.\n\n## Authentication\n\nEvery request must include an API key as `X-API-KEY: <your-key>`. Generate keys from your\norganization settings in the Process Street app. Each key carries the permissions of the user that\ncreated it.\n\n## Idempotency and retries\n\n- `GET` requests are safe to retry on any error.\n- `PUT` requests are idempotent — calling them twice with the same body is equivalent to calling once.\n  Safe to retry on `5xx`.\n- `DELETE` is idempotent (deleting an already-deleted resource returns `404`, which is fine to ignore).\n- `POST` is generally **not** safe to blindly retry. For workflow runs, attach a `referenceId`\n  on create — calling `createWorkflowRun` twice with the same `referenceId` will return the existing\n  run instead of creating a duplicate.\n\n## Errors\n\nErrors are returned as a JSON object with this shape:\n\n```json\n{\n  \"error\": \"human-readable message\",\n  \"errorCode\": \"NotFound\",\n  \"requestId\": \"abc123…\",\n  \"details\": { \"fieldPath\": \"what went wrong\" }\n}\n```\n\n**When present**, branch on `errorCode` rather than regex'ing `error` (we may rewrite the wording). Include\n`requestId` if you contact support so we can find the request in our logs.\n\n`errorCode` and `requestId` are populated on responses generated by the public API exception handler, which\ncovers the great majority of errors. A few low-level failures (e.g. JSON parse failures caught before the\nhandler runs, framework-level routing errors) may return an `ErrorInfo` without these fields. In that case,\nfall back to the HTTP status code (`400`/`401`/`403`/`404`/`409`/`422`/`429`/`5xx`) — its semantics match\nthe corresponding `errorCode` value.\n\n## Rate limits\n\nAll requests are subject to rate limits. If you receive a `429` response, wait for the duration\nspecified in the `Retry-After` header before retrying.\n"},"tags":[{"name":"Attachments","description":"An attachment is a file uploaded to a task within a workflow run.\nUse these endpoints to list, upload, and delete task-level attachments.","externalDocs":{"url":"https://www.process.st/help/docs/api-attachments/","description":"Process Street help article"}},{"name":"Comments","description":"A comment is a discussion message on a task within a workflow run.\nUse these endpoints to create, list, update, and delete comments.","externalDocs":{"url":"https://www.process.st/help/docs/api-comments/","description":"Process Street help article"}},{"name":"Data Set Incoming Webhooks","description":"An incoming webhook triggers data set row creation or updates from external systems.\nUse these endpoints to create, view, update, and delete incoming webhooks for a data set.","externalDocs":{"url":"https://www.process.st/help/docs/data-sets-incoming-webhooks/","description":"Process Street help article"}},{"name":"File Uploads","description":"A file upload is a two-step upload for large files. Create one to get an upload URL and a\n`fileUploadId`, send the file's bytes to that URL, then attach the upload to a target (form field\nvalue, attachment, or page/workflow widget) via that target's `/upload` endpoint. The `fileUploadId`\nis single-use — attaching it consumes it."},{"name":"Folders","description":"A folder organizes workflows, pages, and other templates within your organization.\nUse these endpoints to create and manage folders.","externalDocs":{"url":"https://www.process.st/help/docs/folders/","description":"Process Street help article"}},{"name":"Workflows","description":"A workflow is a reusable process template that defines the structure, tasks,\nand form fields for a repeatable process. Use these endpoints to browse and\ninspect your organization's workflows.","externalDocs":{"url":"https://www.process.st/help/docs/workflows/","description":"Process Street help article"}},{"name":"Workflow Revisions","description":"A workflow revision is a versioned snapshot of a workflow's structure.\nUse these endpoints to list, inspect, and manage revisions.","externalDocs":{"url":"https://www.process.st/help/docs/workflow-revisions/","description":"Process Street help article"}},{"name":"Workflow Runs","description":"A workflow run is an active instance of a workflow. Each run tracks its own\nprogress, assignees, and form field values as it moves through the process.\nUse these endpoints to create, update, and manage workflow runs.","externalDocs":{"url":"https://www.process.st/help/docs/workflow-runs/","description":"Process Street help article"}},{"name":"Tasks","description":"A task is a step within a workflow run. Tasks can be checked off, assigned\nto users, and may contain form fields for collecting data. Use these endpoints\nto view and update tasks within a workflow run.","externalDocs":{"url":"https://www.process.st/help/docs/tasks/","description":"Process Street help article"}},{"name":"Form Fields","description":"A form field is a data-collection element defined on a workflow template.\nUse these endpoints to inspect the form fields and their available options\non a workflow.","externalDocs":{"url":"https://www.process.st/help/docs/form-fields/","description":"Process Street help article"}},{"name":"Form Field Values","description":"A form field value is the data entered into a form field within a workflow\nrun. Use these endpoints to read and update form field values for a specific\nworkflow run.","externalDocs":{"url":"https://www.process.st/help/docs/form-fields/","description":"Process Street help article"}},{"name":"Data Sets","description":"A data set is a structured collection of records that can be linked to\nworkflow form fields. Use these endpoints to manage data sets and their\nrecords.","externalDocs":{"url":"https://www.process.st/help/docs/data-sets/","description":"Process Street help article"}},{"name":"One-Off Tasks","description":"A one-off task is a standalone task that can optionally be linked to a\nworkflow run. Use these endpoints to create, view, and manage one-off tasks.","externalDocs":{"url":"https://www.process.st/help/docs/one-off-tasks/","description":"Process Street help article"}},{"name":"Pages","description":"A page is a document template for sharing information. Use these endpoints\nto create and manage pages.","externalDocs":{"url":"https://www.process.st/help/docs/pages/","description":"Process Street help article"}},{"name":"Page Revisions","description":"A page revision is a versioned snapshot of a page's content.\nUse these endpoints to list, inspect, and manage revisions.","externalDocs":{"url":"https://www.process.st/help/docs/pages/","description":"Process Street help article"}},{"name":"Page Widgets","description":"A page widget is a content element (text, image, video, file, embed, cross-link, or table)\non a page revision. Use these endpoints to create and manage widgets on draft revisions.","externalDocs":{"url":"https://www.process.st/help/docs/pages/","description":"Process Street help article"}},{"name":"Workflow Logic Rules","description":"Workflow logic rules are conditional rules that control the visibility of tasks\nand form fields within a workflow revision. Use these endpoints to create, view,\nand manage logic rules.","externalDocs":{"url":"https://www.process.st/help/docs/conditional-logic/","description":"Process Street help article"}},{"name":"Workflow Tasks","description":"A workflow task is a task template within a workflow revision.\nUse these endpoints to create, view, update, and delete task templates\non draft revisions.\n\n> 💡 Notes for MCP clients:\n> - Don't prefix task names with numbers — the UI already shows a position next to each task and order can change.\n> - Consider adding content widgets with instructions, context, or guidance to make processes easier to follow.","externalDocs":{"url":"https://www.process.st/help/docs/tasks/","description":"Process Street help article"}},{"name":"Workflow Incoming Webhooks","description":"An incoming webhook triggers workflow runs from external systems.\nUse these endpoints to create, view, update, and delete incoming webhooks for a workflow.","externalDocs":{"url":"https://www.process.st/help/docs/run-via-webhook/","description":"Process Street help article"}},{"name":"Workflow Task Assignment Rules","description":"A workflow task assignment rule assigns a task template on a draft workflow\nrevision to a specific user (static) or derives assignees from a source such\nas the workflow run initiator, a Members form field, or the source document's\nowner/author (dynamic). Use these endpoints to replace the full set of\nassignment rules on a task template.","externalDocs":{"url":"https://www.process.st/help/docs/task-assignments/","description":"Process Street help article"}},{"name":"Workflow Widgets","description":"A workflow widget is a form field or content element on a task within a workflow revision.\nUse these endpoints to create and manage widgets on draft revisions.","externalDocs":{"url":"https://www.process.st/help/docs/form-fields/","description":"Process Street help article"}},{"name":"Workflow Due Date Rules","description":"A workflow due date rule defines how the checklist-level due date is calculated\nfor workflow runs — either relative to the run's start date or derived from a\nDate form field value. Use these endpoints to set or clear the checklist due\ndate rule on a draft workflow revision.","externalDocs":{"url":"https://www.process.st/help/docs/dynamic-due-dates/","description":"Process Street help article"}},{"name":"Workflow Task Due Date Rules","description":"A task due date rule defines how an individual task's due date is calculated\nwithin a workflow run — relative to the run's start/due date, a form field\nvalue, or another task. Use these endpoints to set or clear the due date rule\non a task within a draft workflow revision.","externalDocs":{"url":"https://www.process.st/help/docs/dynamic-due-dates/","description":"Process Street help article"}},{"name":"Scheduled Workflows","description":"A scheduled workflow is a recurring schedule that automatically creates workflow runs.\nUse these endpoints to list scheduled workflows and their recurrence rules.","externalDocs":{"url":"https://www.process.st/help/docs/scheduled-workflows/","description":"Process Street help article"}},{"name":"Users","description":"These endpoints let you list the users in your organization.","externalDocs":{"url":"https://www.process.st/help/docs/users/","description":"Process Street help article"}},{"name":"Webhooks","description":"A webhook delivers real-time notifications to your application when events\noccur in Process Street. Use these endpoints to create and manage webhook\nsubscriptions.","externalDocs":{"url":"https://www.process.st/help/docs/webhooks/","description":"Process Street help article"}},{"name":"Utilities","description":"Helper endpoints for testing authentication and checking rate limits.","externalDocs":{"url":"https://www.process.st/help/category/api/","description":"Process Street help article"}},{"name":"My Work","description":"My Work is your personal task inbox — a consolidated view of all tasks and checklist items\nassigned to you across all workflows. Use these endpoints to list, search, and manage\nyour assigned work items.","externalDocs":{"url":"https://www.process.st/help/docs/my-work/","description":"Process Street help article"}}],"servers":[{"url":"https://public-api.process.st/api/v1.1"}],"paths":{"/attachments":{"get":{"tags":["Attachments"],"summary":"List attachments","description":"Returns task-level attachments, ordered by creation date (newest first). Supports filtering by workflow, workflow run, task, or creator.","operationId":"listAttachments","parameters":[{"name":"workflowId","in":"query","description":"Filter by workflow.","required":false,"schema":{"type":"string"}},{"name":"workflowRunId","in":"query","description":"Filter by workflow run.","required":false,"schema":{"type":"string"}},{"name":"taskId","in":"query","description":"Filter by task.","required":false,"schema":{"type":"string"}},{"name":"createdById","in":"query","description":"Filter by creator.","required":false,"schema":{"type":"string"}},{"name":"_","in":"query","description":"Opaque pagination cursor. Take this value from the previous response's `links[]` entry whose `name`\nis `\"next\"` (typically just follow that link's `href` instead of reading this value).\nOmit on the first page. If the previous response had no `next` link, there are no more pages.","required":false,"schema":{"type":"string"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicApiAttachmentListResponse"}}}},"default":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorInfo"}}}}},"security":[{"apiKeyAuth":[]},{"httpAuth":[]}],"x-mcp-tool":{"annotations":{"readOnlyHint":true,"destructiveHint":false,"openWorldHint":false},"justifications":{"read_only_justification":"It only reads data and changes nothing.","destructive_justification":"It changes nothing, so it cannot have an irreversible outcome.","open_world_justification":"It acts only on data in a Process Street organization the signed-in user belongs to, with that user's own permissions there. It does not access the public internet or contact anyone outside that organization."}}},"post":{"tags":["Attachments"],"summary":"Upload an attachment","description":"Uploads a file as a task-level attachment.\n\nRequires `workflowRunId` and `taskId` to identify the target task.\nAccepts multipart form data (fields `workflowRunId` + `taskId` + `file`) or JSON with base64-encoded content\n(fields `workflowRunId` + `taskId` + `fileBase64`). Maximum file size: 20 MB for multipart, 10 MB for base64.\nYou can also send `workflowRunId` + `taskId` + `fileUploadId` to attach a file you uploaded with\n`createFileUpload`; the `fileUploadId` is single-use.","operationId":"uploadAttachment","requestBody":{"content":{"multipart/form-data":{"schema":{"$ref":"#/components/schemas/UploadAttachmentRequest"}},"application/json":{"schema":{"$ref":"#/components/schemas/UploadAttachmentRequest"}}},"required":true},"responses":{"201":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicApiAttachmentResponse"}}}},"400":{"description":"Invalid value","content":{"text/plain":{"schema":{"type":"string"}}}},"default":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorInfo"}}}}},"security":[{"apiKeyAuth":[]},{"httpAuth":[]}],"x-mcp-tool":{"annotations":{"readOnlyHint":false,"destructiveHint":false,"openWorldHint":false},"justifications":{"read_only_justification":"It creates something new, which is a change of state.","destructive_justification":"It only adds something new. It changes and removes nothing that already exists, and what it creates can be deleted again.","open_world_justification":"It acts only on data in a Process Street organization the signed-in user belongs to, with that user's own permissions there. It does not access the public internet or contact anyone outside that organization."}}}},"/attachments/{attachmentId}":{"delete":{"tags":["Attachments"],"summary":"Delete an attachment","description":"Deletes a task-level attachment.","operationId":"deleteAttachment","parameters":[{"name":"attachmentId","in":"path","description":"The attachment ID.","required":true,"schema":{"type":"string"}}],"responses":{"204":{"description":""},"default":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorInfo"}}}}},"security":[{"apiKeyAuth":[]},{"httpAuth":[]}],"x-mcp-tool":{"annotations":{"readOnlyHint":false,"destructiveHint":true,"openWorldHint":false},"justifications":{"read_only_justification":"It deletes data.","destructive_justification":"It deletes data, and the public API has no way to restore it.","open_world_justification":"It acts only on data in a Process Street organization the signed-in user belongs to, with that user's own permissions there. It does not access the public internet or contact anyone outside that organization."}}}},"/comments":{"get":{"tags":["Comments"],"summary":"List all comments","description":"Returns a paginated list of comments sorted by creation date (newest first). Provide either `workflowId`, or `workflowRunId` with optional `taskId`.","operationId":"listComments","parameters":[{"name":"workflowId","in":"query","description":"Filter by workflow.","required":false,"schema":{"type":"string"}},{"name":"workflowRunId","in":"query","description":"Filter by workflow run.","required":false,"schema":{"type":"string"}},{"name":"taskId","in":"query","description":"Filter by task.","required":false,"schema":{"type":"string"}},{"name":"_","in":"query","description":"Opaque pagination cursor. Take this value from the previous response's `links[]` entry whose `name`\nis `\"next\"` (typically just follow that link's `href` instead of reading this value).\nOmit on the first page. If the previous response had no `next` link, there are no more pages.","required":false,"schema":{"type":"string"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicApiCommentListResponse"}}}},"default":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorInfo"}}}}},"security":[{"apiKeyAuth":[]},{"httpAuth":[]}],"x-mcp-tool":{"annotations":{"readOnlyHint":true,"destructiveHint":false,"openWorldHint":false},"justifications":{"read_only_justification":"It only reads data and changes nothing.","destructive_justification":"It changes nothing, so it cannot have an irreversible outcome.","open_world_justification":"It acts only on data in a Process Street organization the signed-in user belongs to, with that user's own permissions there. It does not access the public internet or contact anyone outside that organization."}}},"post":{"tags":["Comments"],"summary":"Create a comment","description":"Creates a comment on a task within a workflow run.","operationId":"createComment","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateCommentRequest"},"examples":{"Reconciliation note":{"summary":"An auditor leaving a reconciliation note on a compliance task","value":{"workflowRunId":"kCbo6MbLnqoBoX6ZoUp-Eg","taskId":"i5QRnGpy1uoBoX6ZoUp46w","text":"Verified the bank details against ATO records. Balance matches within $0.02 - marking this as reconciled."}},"Escalation request":{"summary":"A team member requesting escalation on a blocked procurement task","value":{"workflowRunId":"uRsljCcbcrwBoX6ZoUp--A","taskId":"jWmkweSdmrIBoX6ZoUpwwA","text":"@sarah The supplier has not responded to our follow-up from last week. Can you escalate this before the Friday deadline?"}}}}},"required":true},"responses":{"201":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicApiCommentResponse"}}}},"400":{"description":"Invalid value for: body","content":{"text/plain":{"schema":{"type":"string"}}}},"default":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorInfo"}}}}},"security":[{"apiKeyAuth":[]},{"httpAuth":[]}],"x-mcp-tool":{"annotations":{"readOnlyHint":false,"destructiveHint":false,"openWorldHint":false},"justifications":{"read_only_justification":"It creates something new, which is a change of state.","destructive_justification":"It only adds something new. It changes and removes nothing that already exists, and what it creates can be deleted again.","open_world_justification":"It acts only on data in a Process Street organization the signed-in user belongs to, with that user's own permissions there. It does not access the public internet or contact anyone outside that organization."}}}},"/comments/{commentId}":{"get":{"tags":["Comments"],"summary":"Get a comment","description":"Returns a comment by its ID.","operationId":"getComment","parameters":[{"name":"commentId","in":"path","description":"The ID of the Comment","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicApiCommentResponse"}}}},"default":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorInfo"}}}}},"security":[{"apiKeyAuth":[]},{"httpAuth":[]}],"x-mcp-tool":{"annotations":{"readOnlyHint":true,"destructiveHint":false,"openWorldHint":false},"justifications":{"read_only_justification":"It only reads data and changes nothing.","destructive_justification":"It changes nothing, so it cannot have an irreversible outcome.","open_world_justification":"It acts only on data in a Process Street organization the signed-in user belongs to, with that user's own permissions there. It does not access the public internet or contact anyone outside that organization."}}},"put":{"tags":["Comments"],"summary":"Update a comment","description":"Updates the text of an existing comment.","operationId":"updateComment","parameters":[{"name":"commentId","in":"path","description":"The ID of the Comment","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateCommentRequest"},"examples":{"Fix a typo":{"summary":"Correcting a factual error in a previously posted comment","value":{"text":"Correction: the balance discrepancy was $0.02, not $0.20. Reconciliation is still valid."}}}}},"required":true},"responses":{"204":{"description":""},"400":{"description":"Invalid value for: body","content":{"text/plain":{"schema":{"type":"string"}}}},"default":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorInfo"}}}}},"security":[{"apiKeyAuth":[]},{"httpAuth":[]}],"x-mcp-tool":{"annotations":{"readOnlyHint":false,"destructiveHint":true,"openWorldHint":false},"justifications":{"read_only_justification":"It changes existing data.","destructive_justification":"It overwrites existing values and does not keep the ones it replaces, so undoing it means knowing what they were.","open_world_justification":"It acts only on data in a Process Street organization the signed-in user belongs to, with that user's own permissions there. It does not access the public internet or contact anyone outside that organization."}}},"delete":{"tags":["Comments"],"summary":"Delete a comment","description":"Deletes an existing comment.","operationId":"deleteComment","parameters":[{"name":"commentId","in":"path","description":"The ID of the Comment","required":true,"schema":{"type":"string"}}],"responses":{"204":{"description":""},"default":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorInfo"}}}}},"security":[{"apiKeyAuth":[]},{"httpAuth":[]}],"x-mcp-tool":{"annotations":{"readOnlyHint":false,"destructiveHint":true,"openWorldHint":false},"justifications":{"read_only_justification":"It deletes data.","destructive_justification":"It deletes data, and the public API has no way to restore it.","open_world_justification":"It acts only on data in a Process Street organization the signed-in user belongs to, with that user's own permissions there. It does not access the public internet or contact anyone outside that organization."}}}},"/data-sets/{dataSetId}/incoming-webhooks":{"get":{"tags":["Data Set Incoming Webhooks"],"summary":"List incoming webhooks for a data set","description":"Returns all non-deleted incoming webhooks for a data set.","operationId":"listDataSetIncomingWebhooks","parameters":[{"name":"dataSetId","in":"path","description":"The ID of the Data Set","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicApiDataSetIncomingWebhookListResponse"}}}},"default":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorInfo"}}}}},"security":[{"apiKeyAuth":[]},{"httpAuth":[]}],"x-mcp-tool":{"annotations":{"readOnlyHint":true,"destructiveHint":false,"openWorldHint":false},"justifications":{"read_only_justification":"It only reads data and changes nothing.","destructive_justification":"It changes nothing, so it cannot have an irreversible outcome.","open_world_justification":"It acts only on data in a Process Street organization the signed-in user belongs to, with that user's own permissions there. It does not access the public internet or contact anyone outside that organization."}}},"post":{"tags":["Data Set Incoming Webhooks"],"summary":"Create an incoming webhook for a data set","description":"Creates an incoming webhook for a data set. When the webhook URL receives a JSON payload,\nit creates or updates data set rows using the configured column mappings.\n\n**config.columns** maps data set column IDs to JSON path expressions in the incoming payload.\nEach key is a column ID (Muid), each value is a JSON path (e.g. `$.contact.email`).\n\n**config.keyColumn** (optional) specifies a column used as a unique key for upserts.\nWhen set, incoming payloads update existing rows matching the key value.\nWhen absent, every payload creates a new row.","operationId":"createDataSetIncomingWebhook","parameters":[{"name":"dataSetId","in":"path","description":"The ID of the Data Set","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateDataSetIncomingWebhookRequest"},"examples":{"Create new rows":{"summary":"Webhook that always creates new data set rows from incoming payloads","value":{"name":"CRM Contact Sync","automationApp":"Make","config":{"columns":{"gcWPxsRjNNTeZqaTsBpLhg":"$.contact.name","ocsAkBEFkTih7YpuSfJEnw":"$.contact.email","kR5mHvDdCCqh3YpuSfJEnw":"$.contact.company"}}}},"Upsert by email":{"summary":"Webhook that updates existing rows matching the key column value, or creates new rows","value":{"name":"CRM Contact Upsert","automationApp":"Make","config":{"columns":{"columnId1":"$.contact.name","columnId2":"$.contact.email","columnId3":"$.contact.company"},"keyColumn":"ocsAkBEFkTih7YpuSfJEnw"}}}}}},"required":true},"responses":{"201":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicApiDataSetIncomingWebhookResponse"}}}},"400":{"description":"Invalid value for: body","content":{"text/plain":{"schema":{"type":"string"}}}},"default":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorInfo"}}}}},"security":[{"apiKeyAuth":[]},{"httpAuth":[]}],"x-mcp-tool":{"annotations":{"readOnlyHint":false,"destructiveHint":false,"openWorldHint":true},"justifications":{"read_only_justification":"It creates something new, which is a change of state.","destructive_justification":"It only adds something new. It changes and removes nothing that already exists, and what it creates can be deleted again.","open_world_justification":"It creates a URL that anyone on the internet who has it can call to add or update records in the data set."}}}},"/data-sets/{dataSetId}/incoming-webhooks/{webhookId}":{"get":{"tags":["Data Set Incoming Webhooks"],"summary":"Get an incoming webhook for a data set","description":"Returns an incoming webhook by its ID for a data set.","operationId":"getDataSetIncomingWebhook","parameters":[{"name":"dataSetId","in":"path","description":"The ID of the Data Set","required":true,"schema":{"type":"string"}},{"name":"webhookId","in":"path","description":"The ID of the Webhook","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicApiDataSetIncomingWebhookResponse"}}}},"default":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorInfo"}}}}},"security":[{"apiKeyAuth":[]},{"httpAuth":[]}],"x-mcp-tool":{"annotations":{"readOnlyHint":true,"destructiveHint":false,"openWorldHint":false},"justifications":{"read_only_justification":"It only reads data and changes nothing.","destructive_justification":"It changes nothing, so it cannot have an irreversible outcome.","open_world_justification":"It acts only on data in a Process Street organization the signed-in user belongs to, with that user's own permissions there. It does not access the public internet or contact anyone outside that organization."}}},"put":{"tags":["Data Set Incoming Webhooks"],"summary":"Update an incoming webhook for a data set","description":"Updates an incoming webhook for a data set. PUT semantics: all fields must be provided. Returns the updated webhook.\n\nSee the create endpoint for details on `config.columns` and `config.keyColumn`.","operationId":"updateDataSetIncomingWebhook","parameters":[{"name":"dataSetId","in":"path","description":"The ID of the Data Set","required":true,"schema":{"type":"string"}},{"name":"webhookId","in":"path","description":"The ID of the Webhook","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateDataSetIncomingWebhookRequest"}}},"required":true},"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicApiDataSetIncomingWebhookResponse"}}}},"400":{"description":"Invalid value for: body","content":{"text/plain":{"schema":{"type":"string"}}}},"default":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorInfo"}}}}},"security":[{"apiKeyAuth":[]},{"httpAuth":[]}],"x-mcp-tool":{"annotations":{"readOnlyHint":false,"destructiveHint":true,"openWorldHint":true},"justifications":{"read_only_justification":"It changes existing data.","destructive_justification":"It overwrites existing values and does not keep the ones it replaces, so undoing it means knowing what they were.","open_world_justification":"It configures a URL that anyone on the internet who has it can call to add or update records in the data set, and can re-enable a disabled one."}}},"delete":{"tags":["Data Set Incoming Webhooks"],"summary":"Delete an incoming webhook for a data set","description":"Soft-deletes an incoming webhook for a data set. Subsequent GET requests will return 404.","operationId":"deleteDataSetIncomingWebhook","parameters":[{"name":"dataSetId","in":"path","description":"The ID of the Data Set","required":true,"schema":{"type":"string"}},{"name":"webhookId","in":"path","description":"The ID of the Webhook","required":true,"schema":{"type":"string"}}],"responses":{"204":{"description":""},"default":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorInfo"}}}}},"security":[{"apiKeyAuth":[]},{"httpAuth":[]}],"x-mcp-tool":{"annotations":{"readOnlyHint":false,"destructiveHint":true,"openWorldHint":false},"justifications":{"read_only_justification":"It deletes data.","destructive_justification":"It deletes data, and the public API has no way to restore it.","open_world_justification":"It acts only on data in a Process Street organization the signed-in user belongs to, with that user's own permissions there. It does not access the public internet or contact anyone outside that organization."}}}},"/file-uploads":{"post":{"tags":["File Uploads"],"summary":"Create a file upload","description":"Returns a single-use upload URL and a `fileUploadId`. Upload the file's bytes to `uploadUrl` with an HTTP `PUT` (sending the same `Content-Type` you declared), then attach the upload to a target by passing the `fileUploadId` to one of the `/upload` endpoints. Lets you upload large files without sending them through the API.","operationId":"createFileUpload","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateFileUploadRequest"},"examples":{"PDF document":{"summary":"Uploading a quarterly invoice to later attach to a form field value","value":{"filename":"invoice-2026-Q1.pdf","contentType":"application/pdf","sizeBytes":248173}},"Image file":{"summary":"Uploading a photo to later attach as a task attachment","value":{"filename":"site-photo.jpg","contentType":"image/jpeg","sizeBytes":1048576}}}}},"required":true},"responses":{"201":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicApiFileUploadResponse"}}}},"400":{"description":"Invalid value for: body","content":{"text/plain":{"schema":{"type":"string"}}}},"default":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorInfo"}}}}},"security":[{"apiKeyAuth":[]},{"httpAuth":[]}],"x-mcp-tool":{"annotations":{"readOnlyHint":false,"destructiveHint":false,"openWorldHint":false},"justifications":{"read_only_justification":"It creates something new, which is a change of state.","destructive_justification":"It only creates an upload URL that expires after 15 minutes, and a single-use handle for attaching the file. It changes and removes nothing that already exists, and nothing is stored until a file is uploaded.","open_world_justification":"It acts only on data in a Process Street organization the signed-in user belongs to, with that user's own permissions there. It does not access the public internet or contact anyone outside that organization."}}}},"/folders":{"get":{"tags":["Folders"],"summary":"List all folders","description":"Returns a paginated list of folders in your organization that you have permission to read. Excludes system folders (Home and Private).","operationId":"listFolders","parameters":[{"name":"_","in":"query","description":"Opaque pagination cursor. Take this value from the previous response's `links[]` entry whose `name`\nis `\"next\"` (typically just follow that link's `href` instead of reading this value).\nOmit on the first page. If the previous response had no `next` link, there are no more pages.","required":false,"schema":{"type":"string"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicApiFolderListResponse"}}}},"default":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorInfo"}}}}},"security":[{"apiKeyAuth":[]},{"httpAuth":[]}],"x-mcp-tool":{"annotations":{"readOnlyHint":true,"destructiveHint":false,"openWorldHint":false},"justifications":{"read_only_justification":"It only reads data and changes nothing.","destructive_justification":"It changes nothing, so it cannot have an irreversible outcome.","open_world_justification":"It acts only on data in a Process Street organization the signed-in user belongs to, with that user's own permissions there. It does not access the public internet or contact anyone outside that organization."}}},"post":{"tags":["Folders"],"summary":"Create a folder","description":"Creates a folder in your organization. If `parentFolderId` is omitted, the folder is created directly under the organization's Home folder.","operationId":"createFolder","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateFolderRequest"},"examples":{"Nested folder":{"summary":"A compliance team creating a quarterly folder under an existing parent folder.","value":{"name":"Q4 Compliance Reviews","parentFolderId":"lmvFn0DWLgMBoX6Zobd1fg"}},"Top-level folder":{"summary":"A new folder created directly under the organization's Home folder (no parent provided).","value":{"name":"Onboarding Workflows"}}}}},"required":true},"responses":{"201":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicApiFolderResponse"}}}},"400":{"description":"Invalid value for: body","content":{"text/plain":{"schema":{"type":"string"}}}},"default":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorInfo"}}}}},"security":[{"apiKeyAuth":[]},{"httpAuth":[]}],"x-mcp-tool":{"annotations":{"readOnlyHint":false,"destructiveHint":false,"openWorldHint":false},"justifications":{"read_only_justification":"It creates something new, which is a change of state.","destructive_justification":"It only adds something new. It changes and removes nothing that already exists, and what it creates can be deleted again.","open_world_justification":"It acts only on data in a Process Street organization the signed-in user belongs to, with that user's own permissions there. It does not access the public internet or contact anyone outside that organization."}}}},"/folders/{folderId}":{"put":{"tags":["Folders"],"summary":"Update a folder","description":"Updates the name of an existing folder.","operationId":"updateFolder","parameters":[{"name":"folderId","in":"path","description":"The ID of the Folder","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateFolderRequest"},"examples":{"Rename a folder":{"summary":"Renaming a folder to better reflect its contents.","value":{"name":"Q4 Compliance Reviews (Renamed)"}}}}},"required":true},"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicApiFolderResponse"}}}},"400":{"description":"Invalid value for: body","content":{"text/plain":{"schema":{"type":"string"}}}},"default":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorInfo"}}}}},"security":[{"apiKeyAuth":[]},{"httpAuth":[]}],"x-mcp-tool":{"annotations":{"readOnlyHint":false,"destructiveHint":true,"openWorldHint":false},"justifications":{"read_only_justification":"It changes existing data.","destructive_justification":"It overwrites existing values and does not keep the ones it replaces, so undoing it means knowing what they were.","open_world_justification":"It acts only on data in a Process Street organization the signed-in user belongs to, with that user's own permissions there. It does not access the public internet or contact anyone outside that organization."}}},"delete":{"tags":["Folders"],"summary":"Delete a folder","description":"Deletes an empty folder. The folder must contain no subfolders or templates.","operationId":"deleteFolder","parameters":[{"name":"folderId","in":"path","description":"The ID of the Folder","required":true,"schema":{"type":"string"}}],"responses":{"204":{"description":""},"default":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorInfo"}}}}},"security":[{"apiKeyAuth":[]},{"httpAuth":[]}],"x-mcp-tool":{"annotations":{"readOnlyHint":false,"destructiveHint":true,"openWorldHint":false},"justifications":{"read_only_justification":"It deletes data.","destructive_justification":"It deletes data, and the public API has no way to restore it.","open_world_justification":"It acts only on data in a Process Street organization the signed-in user belongs to, with that user's own permissions there. It does not access the public internet or contact anyone outside that organization."}}}},"/folders/{folderId}/permissions":{"get":{"tags":["Folders"],"summary":"Get permissions for a folder","description":"Returns the complete list of permissions on a folder, one entry per user or group. `accessLevel` is `Custom` when the atom combination does not match a predefined level. Groups appear with synthetic `group-<id>@process.st` emails on the embedded user.","operationId":"getFolderPermissions","parameters":[{"name":"folderId","in":"path","description":"The ID of the Folder","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicApiFolderPermissionListResponse"}}}},"default":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorInfo"}}}}},"security":[{"apiKeyAuth":[]},{"httpAuth":[]}],"x-mcp-tool":{"annotations":{"readOnlyHint":true,"destructiveHint":false,"openWorldHint":false},"justifications":{"read_only_justification":"It only reads data and changes nothing.","destructive_justification":"It changes nothing, so it cannot have an irreversible outcome.","open_world_justification":"It acts only on data in a Process Street organization the signed-in user belongs to, with that user's own permissions there. It does not access the public internet or contact anyone outside that organization."}}},"put":{"tags":["Folders"],"summary":"Set permissions for a folder","description":"Replaces the full set of permissions for a folder. PUT semantics: send the complete list to replace all existing permissions. Send an empty array to remove all user-addressable permissions. Accepts both user emails and group emails (groups appear in other endpoints with synthetic `group-<id>@process.st` emails). Note: the AllFreeMembers system group is managed automatically by the AllMembers system group and cannot be modified directly. Returns the resulting permissions.","operationId":"updateFolderPermissions","parameters":[{"name":"folderId","in":"path","description":"The ID of the Folder","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/FolderPermissionEntry"}},"examples":{"Replace all permissions":{"summary":"Grant Jane edit access and John view access","value":[{"email":"jane@example.com","accessLevel":"Edit"},{"email":"john@example.com","accessLevel":"View"}]},"Clear all user permissions":{"summary":"Remove all user-addressable permissions (system-managed permits are preserved)","value":[]}}}},"required":false},"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicApiFolderPermissionListResponse"}}}},"400":{"description":"Invalid value for: body","content":{"text/plain":{"schema":{"type":"string"}}}},"default":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorInfo"}}}}},"security":[{"apiKeyAuth":[]},{"httpAuth":[]}],"x-mcp-tool":{"annotations":{"readOnlyHint":false,"destructiveHint":true,"openWorldHint":false},"justifications":{"read_only_justification":"It changes existing data.","destructive_justification":"It overwrites existing values and does not keep the ones it replaces, so undoing it means knowing what they were.","open_world_justification":"It acts only on data in a Process Street organization the signed-in user belongs to, with that user's own permissions there. It does not access the public internet or contact anyone outside that organization."}}}},"/workflows":{"get":{"tags":["Workflows"],"summary":"List all workflows","description":"Returns a list of active workflows.\nThe workflows are returned 20 at a time, sorted by name.\nYou must use the links section to get the next 20 results.","operationId":"listWorkflows","parameters":[{"name":"name","in":"query","description":"The partial name of the Workflow to search for (will match any part of the name in a case-insensitive manner)","required":false,"schema":{"type":"string"}},{"name":"_","in":"query","description":"Opaque pagination cursor. Take this value from the previous response's `links[]` entry whose `name`\nis `\"next\"` (typically just follow that link's `href` instead of reading this value).\nOmit on the first page. If the previous response had no `next` link, there are no more pages.","required":false,"schema":{"type":"string"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListWorkflowsResponse"}}}},"default":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorInfo"}}}}},"security":[{"apiKeyAuth":[]},{"httpAuth":[]}],"x-mcp-tool":{"annotations":{"readOnlyHint":true,"destructiveHint":false,"openWorldHint":false},"justifications":{"read_only_justification":"It only reads data and changes nothing.","destructive_justification":"It changes nothing, so it cannot have an irreversible outcome.","open_world_justification":"It acts only on data in a Process Street organization the signed-in user belongs to, with that user's own permissions there. It does not access the public internet or contact anyone outside that organization."}}},"post":{"tags":["Workflows"],"summary":"Create a workflow","description":"Creates a new workflow with the specified properties. Only name and folderId are required.\n\n> 💡 Notes for MCP clients:\n> - Don't default `shareLevel` to `Overview`/`View`/`Run` or `runLinkShareLevel` to `Public`. Only set them when the user explicitly asks for a shareable or public link.","operationId":"createWorkflow","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateWorkflowRequest"},"examples":{"Create a workflow":{"summary":"Creates a new workflow with all properties specified","value":{"name":"Employee Onboarding","description":"Standard onboarding workflow for new hires","folderId":"hRyruZbuUpcBoX6Zoeh8Sg","shareLevel":"View","runLinkShareLevel":"Organization","allowComments":true,"sharedRunsByDefault":false,"referenceId":"ONB"}},"Minimal workflow":{"summary":"Creates a workflow with only the required fields; optional fields use defaults","value":{"name":"Vendor Approval","folderId":"qOk81X3ICcMBoX6Zoeh18w","shareLevel":"None","runLinkShareLevel":"Organization","allowComments":true,"sharedRunsByDefault":false}}}}},"required":true},"responses":{"201":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicApiWorkflowResponse"}}}},"400":{"description":"Invalid value for: body","content":{"text/plain":{"schema":{"type":"string"}}}},"default":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorInfo"}}}}},"security":[{"apiKeyAuth":[]},{"httpAuth":[]}],"x-mcp-tool":{"annotations":{"readOnlyHint":false,"destructiveHint":false,"openWorldHint":true},"justifications":{"read_only_justification":"It creates something new, which is a change of state.","destructive_justification":"It only adds something new. It changes and removes nothing that already exists, and what it creates can be deleted again.","open_world_justification":"Its sharing settings can let anyone on the internet who has a link view the workflow, run it or work on its runs, without a Process Street account."}}}},"/workflows/{workflowId}":{"get":{"tags":["Workflows"],"summary":"Get a workflow","description":"Returns a workflow by its ID.","operationId":"getWorkflow","parameters":[{"name":"workflowId","in":"path","description":"The ID of the Workflow","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicApiWorkflowResponse"}}}},"default":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorInfo"}}}}},"security":[{"apiKeyAuth":[]},{"httpAuth":[]}],"x-mcp-tool":{"annotations":{"readOnlyHint":true,"destructiveHint":false,"openWorldHint":false},"justifications":{"read_only_justification":"It only reads data and changes nothing.","destructive_justification":"It changes nothing, so it cannot have an irreversible outcome.","open_world_justification":"It acts only on data in a Process Street organization the signed-in user belongs to, with that user's own permissions there. It does not access the public internet or contact anyone outside that organization."}}},"put":{"tags":["Workflows"],"summary":"Update a workflow","description":"Updates all properties of a workflow. All fields are required (PUT semantics).\n\n> 💡 Notes for MCP clients:\n> - Don't default `shareLevel` to `Overview`/`View`/`Run` or `runLinkShareLevel` to `Public`. Only set them when the user explicitly asks for a shareable or public link.\n\nReturns the updated workflow.","operationId":"updateWorkflow","parameters":[{"name":"workflowId","in":"path","description":"The ID of the Workflow","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateWorkflowRequest"},"examples":{"Update all fields":{"summary":"Sets all properties of a workflow including description and reference ID","value":{"name":"Employee Onboarding","description":"Standard onboarding workflow for new hires","folderId":"mQVrta9S7SkBoX6Zoft5Fg","shareLevel":"View","runLinkShareLevel":"Organization","allowComments":true,"sharedRunsByDefault":false,"referenceId":"ONB"}},"Clear nullable fields":{"summary":"Sets all properties and clears the description and reference ID","value":{"name":"Employee Onboarding","folderId":"vyW5XRmHJZsBoX6Zoftxpw","shareLevel":"View","runLinkShareLevel":"Organization","allowComments":true,"sharedRunsByDefault":false}}}}},"required":true},"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicApiWorkflowResponse"}}}},"400":{"description":"Invalid value for: body","content":{"text/plain":{"schema":{"type":"string"}}}},"default":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorInfo"}}}}},"security":[{"apiKeyAuth":[]},{"httpAuth":[]}],"x-mcp-tool":{"annotations":{"readOnlyHint":false,"destructiveHint":true,"openWorldHint":true},"justifications":{"read_only_justification":"It changes existing data.","destructive_justification":"It overwrites existing values and does not keep the ones it replaces, so undoing it means knowing what they were.","open_world_justification":"Its sharing settings can let anyone on the internet who has a link view the workflow, run it or work on its runs, without a Process Street account."}}},"delete":{"tags":["Workflows"],"summary":"Delete a workflow","description":"Soft deletes a workflow by its ID.","operationId":"deleteWorkflow","parameters":[{"name":"workflowId","in":"path","description":"The ID of the Workflow","required":true,"schema":{"type":"string"}}],"responses":{"204":{"description":""},"default":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorInfo"}}}}},"security":[{"apiKeyAuth":[]},{"httpAuth":[]}],"x-mcp-tool":{"annotations":{"readOnlyHint":false,"destructiveHint":true,"openWorldHint":false},"justifications":{"read_only_justification":"It deletes data.","destructive_justification":"It deletes data, and the public API has no way to restore it.","open_world_justification":"It acts only on data in a Process Street organization the signed-in user belongs to, with that user's own permissions there. It does not access the public internet or contact anyone outside that organization."}}}},"/workflows/{workflowId}/tasks":{"get":{"tags":["Workflows"],"summary":"List all tasks in a workflow","description":"Returns a list of tasks for a workflow.\nThe task templates are returned 20 at a time, sorted in order.\nYou must use the links section to get the next 20 results.","operationId":"listWorkflowTasks","parameters":[{"name":"workflowId","in":"path","description":"The ID of the Workflow","required":true,"schema":{"type":"string"}},{"name":"_","in":"query","description":"Opaque pagination cursor. Take this value from the previous response's `links[]` entry whose `name`\nis `\"next\"` (typically just follow that link's `href` instead of reading this value).\nOmit on the first page. If the previous response had no `next` link, there are no more pages.","required":false,"schema":{"type":"string"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListTaskTemplatesResponse"}}}},"default":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorInfo"}}}}},"security":[{"apiKeyAuth":[]},{"httpAuth":[]}],"x-mcp-tool":{"annotations":{"readOnlyHint":true,"destructiveHint":false,"openWorldHint":false},"justifications":{"read_only_justification":"It only reads data and changes nothing.","destructive_justification":"It changes nothing, so it cannot have an irreversible outcome.","open_world_justification":"It acts only on data in a Process Street organization the signed-in user belongs to, with that user's own permissions there. It does not access the public internet or contact anyone outside that organization."}}}},"/workflows/{workflowId}/duplicate":{"post":{"tags":["Workflows"],"summary":"Duplicate a workflow","description":"Creates a new workflow as a copy of the source workflow at a given revision. All body fields are optional — send `{}` to use defaults. `revisionId` defaults to the source workflow's latest published revision; `name` defaults to `\"Copy of <original>\"`; `folderId` defaults to the source workflow's folder.","operationId":"duplicateWorkflow","parameters":[{"name":"workflowId","in":"path","description":"The ID of the Workflow","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DuplicateWorkflowRequest"},"examples":{"Custom name and destination":{"summary":"Duplicates the source workflow's latest published revision into the given folder with a custom name","value":{"name":"Compliance review (template)","folderId":"sKJEpqzNj84BoX6Zoft_0A"}},"Defaults":{"summary":"Duplicates the source workflow's latest published revision into the source's folder, named \"Copy of <original>\"","value":{}},"Specific revision":{"summary":"Duplicates a specific revision of the source workflow","value":{"revisionId":"oBfwViqasW8BoX6Zoftw5A"}}}}},"required":true},"responses":{"201":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicApiWorkflowResponse"}}}},"400":{"description":"Invalid value for: body","content":{"text/plain":{"schema":{"type":"string"}}}},"default":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorInfo"}}}}},"security":[{"apiKeyAuth":[]},{"httpAuth":[]}],"x-mcp-tool":{"annotations":{"readOnlyHint":false,"destructiveHint":false,"openWorldHint":false},"justifications":{"read_only_justification":"It creates something new, which is a change of state.","destructive_justification":"It only adds something new. It changes and removes nothing that already exists, and what it creates can be deleted again.","open_world_justification":"It acts only on data in a Process Street organization the signed-in user belongs to, with that user's own permissions there. It does not access the public internet or contact anyone outside that organization."}}}},"/workflows/{workflowId}/permissions":{"get":{"tags":["Workflows"],"summary":"Get permissions for a workflow","description":"Returns the complete list of permissions on a workflow, one entry per user or group. `accessLevel` is `Custom` when the atom combination does not match a predefined level. Groups appear with synthetic `group-<id>@process.st` emails.","operationId":"getWorkflowPermissions","parameters":[{"name":"workflowId","in":"path","description":"The ID of the Workflow","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicApiWorkflowPermissionListResponse"}}}},"default":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorInfo"}}}}},"security":[{"apiKeyAuth":[]},{"httpAuth":[]}],"x-mcp-tool":{"annotations":{"readOnlyHint":true,"destructiveHint":false,"openWorldHint":false},"justifications":{"read_only_justification":"It only reads data and changes nothing.","destructive_justification":"It changes nothing, so it cannot have an irreversible outcome.","open_world_justification":"It acts only on data in a Process Street organization the signed-in user belongs to, with that user's own permissions there. It does not access the public internet or contact anyone outside that organization."}}},"put":{"tags":["Workflows"],"summary":"Set permissions for a workflow","description":"Replaces the full set of permissions for a workflow. PUT semantics: send the complete list to replace all existing permissions. Send an empty array to remove all user-addressable permissions. Accepts both user emails and group emails (groups appear in other endpoints with synthetic `group-<id>@process.st` emails). Note: the AllFreeMembers system group is managed automatically by the AllMembers system group and cannot be modified directly. Returns the resulting permissions.","operationId":"updateWorkflowPermissions","parameters":[{"name":"workflowId","in":"path","description":"The ID of the Workflow","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/WorkflowPermissionEntry"}},"examples":{"Replace all permissions":{"summary":"Grant Jane edit access and John run access","value":[{"email":"jane@example.com","accessLevel":"Edit"},{"email":"john@example.com","accessLevel":"Run"}]},"Clear all user permissions":{"summary":"Remove all user-addressable permissions (system-managed permits are preserved)","value":[]}}}},"required":false},"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicApiWorkflowPermissionListResponse"}}}},"400":{"description":"Invalid value for: body","content":{"text/plain":{"schema":{"type":"string"}}}},"default":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorInfo"}}}}},"security":[{"apiKeyAuth":[]},{"httpAuth":[]}],"x-mcp-tool":{"annotations":{"readOnlyHint":false,"destructiveHint":true,"openWorldHint":false},"justifications":{"read_only_justification":"It changes existing data.","destructive_justification":"It overwrites existing values and does not keep the ones it replaces, so undoing it means knowing what they were.","open_world_justification":"It acts only on data in a Process Street organization the signed-in user belongs to, with that user's own permissions there. It does not access the public internet or contact anyone outside that organization."}}}},"/workflows/{workflowId}/revisions":{"get":{"tags":["Workflow Revisions"],"summary":"List workflow revisions","description":"Returns a paginated list of revisions for a workflow, optionally filtered by status.","operationId":"listWorkflowRevisions","parameters":[{"name":"workflowId","in":"path","description":"The ID of the Workflow","required":true,"schema":{"type":"string"}},{"name":"status","in":"query","description":"Filter by status: Draft, Finished, or Revised.","required":false,"schema":{"type":"string"}},{"name":"_","in":"query","description":"Opaque pagination cursor. Take this value from the previous response's `links[]` entry whose `name`\nis `\"next\"` (typically just follow that link's `href` instead of reading this value).\nOmit on the first page. If the previous response had no `next` link, there are no more pages.","required":false,"schema":{"type":"string"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicApiWorkflowRevisionListResponse"}}}},"default":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorInfo"}}}}},"security":[{"apiKeyAuth":[]},{"httpAuth":[]}],"x-mcp-tool":{"annotations":{"readOnlyHint":true,"destructiveHint":false,"openWorldHint":false},"justifications":{"read_only_justification":"It only reads data and changes nothing.","destructive_justification":"It changes nothing, so it cannot have an irreversible outcome.","open_world_justification":"It acts only on data in a Process Street organization the signed-in user belongs to, with that user's own permissions there. It does not access the public internet or contact anyone outside that organization."}}},"post":{"tags":["Workflow Revisions"],"summary":"Create a workflow revision","description":"Creates a new draft revision for a workflow from its current finished revision. Only one draft can exist at a time.","operationId":"createWorkflowRevision","parameters":[{"name":"workflowId","in":"path","description":"The ID of the Workflow","required":true,"schema":{"type":"string"}}],"responses":{"201":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicApiWorkflowRevisionResponse"}}}},"default":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorInfo"}}}}},"security":[{"apiKeyAuth":[]},{"httpAuth":[]}],"x-mcp-tool":{"annotations":{"readOnlyHint":false,"destructiveHint":false,"openWorldHint":false},"justifications":{"read_only_justification":"It creates something new, which is a change of state.","destructive_justification":"It only adds something new. It changes and removes nothing that already exists, and what it creates can be deleted again.","open_world_justification":"It acts only on data in a Process Street organization the signed-in user belongs to, with that user's own permissions there. It does not access the public internet or contact anyone outside that organization."}}}},"/workflows/{workflowId}/revisions/{revisionId}":{"get":{"tags":["Workflow Revisions"],"summary":"Get a workflow revision","description":"Returns a workflow revision by its ID.","operationId":"getWorkflowRevision","parameters":[{"name":"workflowId","in":"path","description":"The ID of the Workflow","required":true,"schema":{"type":"string"}},{"name":"revisionId","in":"path","description":"The ID of the Revision","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicApiWorkflowRevisionResponse"}}}},"default":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorInfo"}}}}},"security":[{"apiKeyAuth":[]},{"httpAuth":[]}],"x-mcp-tool":{"annotations":{"readOnlyHint":true,"destructiveHint":false,"openWorldHint":false},"justifications":{"read_only_justification":"It only reads data and changes nothing.","destructive_justification":"It changes nothing, so it cannot have an irreversible outcome.","open_world_justification":"It acts only on data in a Process Street organization the signed-in user belongs to, with that user's own permissions there. It does not access the public internet or contact anyone outside that organization."}}},"put":{"tags":["Workflow Revisions"],"summary":"Update a workflow revision","description":"Updates a draft workflow revision. Only revisions in Draft status can be updated. PUT semantics: send all fields; optional fields omitted or set to null are cleared.\nThe checklist name template can include merge tag variables (e.g. `{{workflow.name}}`).\nUse the listWorkflowRevisionVariables endpoint to discover available variables.\nReturns the updated revision.","operationId":"updateWorkflowRevision","parameters":[{"name":"workflowId","in":"path","description":"The ID of the Workflow","required":true,"schema":{"type":"string"}},{"name":"revisionId","in":"path","description":"The ID of the Revision","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateWorkflowRevisionRequest"},"examples":{"Update all fields":{"summary":"Sets the change type, explanation, and default run name of a draft revision","value":{"changeType":"Material","changeExplanation":"Added new approval step","defaultChecklistName":"Onboarding - {{date}}"}},"Clear nullable fields":{"summary":"Sets the change type and clears the explanation and default run name","value":{"changeType":"NonMaterial"}}}}},"required":true},"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicApiWorkflowRevisionResponse"}}}},"400":{"description":"Invalid value for: body","content":{"text/plain":{"schema":{"type":"string"}}}},"default":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorInfo"}}}}},"security":[{"apiKeyAuth":[]},{"httpAuth":[]}],"x-mcp-tool":{"annotations":{"readOnlyHint":false,"destructiveHint":true,"openWorldHint":false},"justifications":{"read_only_justification":"It changes existing data.","destructive_justification":"It overwrites existing values and does not keep the ones it replaces, so undoing it means knowing what they were.","open_world_justification":"It acts only on data in a Process Street organization the signed-in user belongs to, with that user's own permissions there. It does not access the public internet or contact anyone outside that organization."}}},"delete":{"tags":["Workflow Revisions"],"summary":"Delete a workflow revision","description":"Deletes a draft workflow revision. Only revisions in Draft status can be deleted.","operationId":"deleteWorkflowRevision","parameters":[{"name":"workflowId","in":"path","description":"The ID of the Workflow","required":true,"schema":{"type":"string"}},{"name":"revisionId","in":"path","description":"The ID of the Revision","required":true,"schema":{"type":"string"}}],"responses":{"204":{"description":""},"default":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorInfo"}}}}},"security":[{"apiKeyAuth":[]},{"httpAuth":[]}],"x-mcp-tool":{"annotations":{"readOnlyHint":false,"destructiveHint":true,"openWorldHint":false},"justifications":{"read_only_justification":"It deletes data.","destructive_justification":"It deletes data, and the public API has no way to restore it.","open_world_justification":"It acts only on data in a Process Street organization the signed-in user belongs to, with that user's own permissions there. It does not access the public internet or contact anyone outside that organization."}}}},"/workflows/{workflowId}/revisions/{revisionId}/publish":{"post":{"tags":["Workflow Revisions"],"summary":"Publish a workflow revision","description":"Publishes a draft workflow revision, transitioning it to Finished status. The previously finished revision becomes Revised.","operationId":"publishWorkflowRevision","parameters":[{"name":"workflowId","in":"path","description":"The ID of the Workflow","required":true,"schema":{"type":"string"}},{"name":"revisionId","in":"path","description":"The ID of the Revision","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicApiWorkflowRevisionResponse"}}}},"default":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorInfo"}}}}},"security":[{"apiKeyAuth":[]},{"httpAuth":[]}],"x-mcp-tool":{"annotations":{"readOnlyHint":false,"destructiveHint":true,"openWorldHint":false},"justifications":{"read_only_justification":"It changes existing data.","destructive_justification":"It makes this revision the live version of the workflow, which every new run uses. The public API cannot switch back to the previous version, so undoing it means editing a new draft back by hand.","open_world_justification":"It acts only on data in a Process Street organization the signed-in user belongs to, with that user's own permissions there. It does not access the public internet or contact anyone outside that organization."}}}},"/workflows/{workflowId}/revisions/{revisionId}/variables":{"get":{"tags":["Workflow Revisions"],"summary":"List workflow revision variables","description":"Returns merge tag variables available in a workflow revision, filtered by type. Variables are returned in alphabetical order by label.","operationId":"listWorkflowRevisionVariables","parameters":[{"name":"workflowId","in":"path","description":"The ID of the Workflow","required":true,"schema":{"type":"string"}},{"name":"revisionId","in":"path","description":"The ID of the Revision","required":true,"schema":{"type":"string"}},{"name":"type","in":"query","description":"Filter by variable type: Standard, FormField, DataSet, EmailTrigger, or DocumentReview.","required":true,"schema":{"$ref":"#/components/schemas/VariableType"}},{"name":"_","in":"query","description":"Opaque pagination cursor. Take this value from the previous response's `links[]` entry whose `name`\nis `\"next\"` (typically just follow that link's `href` instead of reading this value).\nOmit on the first page. If the previous response had no `next` link, there are no more pages.","required":false,"schema":{"type":"string"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicApiWorkflowRevisionVariableListResponse"}}}},"400":{"description":"Invalid value for: query parameter type","content":{"text/plain":{"schema":{"type":"string"}}}},"default":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorInfo"}}}}},"security":[{"apiKeyAuth":[]},{"httpAuth":[]}],"x-mcp-tool":{"annotations":{"readOnlyHint":true,"destructiveHint":false,"openWorldHint":false},"justifications":{"read_only_justification":"It only reads data and changes nothing.","destructive_justification":"It changes nothing, so it cannot have an irreversible outcome.","open_world_justification":"It acts only on data in a Process Street organization the signed-in user belongs to, with that user's own permissions there. It does not access the public internet or contact anyone outside that organization."}}}},"/workflow-runs/{workflowRunId}/assignees/{email}":{"post":{"tags":["Workflow Runs"],"summary":"Assign a user to a workflow run","description":"Assigns a user to a workflow run. If the user does not exist in your organization they will be invited as a Guest (Internal).","operationId":"assignWorkflowRun","parameters":[{"name":"workflowRunId","in":"path","description":"The ID of the Workflow Run","required":true,"schema":{"type":"string"}},{"name":"email","in":"path","description":"Email","required":true,"schema":{"type":"string"}}],"responses":{"204":{"description":""},"default":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorInfo"}}}}},"security":[{"apiKeyAuth":[]},{"httpAuth":[]}],"x-mcp-tool":{"annotations":{"readOnlyHint":false,"destructiveHint":true,"openWorldHint":true},"justifications":{"read_only_justification":"It changes existing data.","destructive_justification":"unassignWorkflowRun removes the assignment, but an email address that is not a member's is also invited as a guest and sent an invitation email, and unassigning undoes neither.","open_world_justification":"An email address that does not belong to a member of the organization is invited as a guest and sent an invitation email, which reaches someone outside the organization."}}},"delete":{"tags":["Workflow Runs"],"summary":"Unassign a user from a workflow run","description":"Unassigns a user from a workflow run.","operationId":"unassignWorkflowRun","parameters":[{"name":"workflowRunId","in":"path","description":"The ID of the Workflow Run","required":true,"schema":{"type":"string"}},{"name":"email","in":"path","description":"Email","required":true,"schema":{"type":"string"}}],"responses":{"204":{"description":""},"default":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorInfo"}}}}},"security":[{"apiKeyAuth":[]},{"httpAuth":[]}],"x-mcp-tool":{"annotations":{"readOnlyHint":false,"destructiveHint":false,"openWorldHint":false},"justifications":{"read_only_justification":"It changes data.","destructive_justification":"assignWorkflowRun assigns the same user again.","open_world_justification":"It acts only on data in a Process Street organization the signed-in user belongs to, with that user's own permissions there. It does not access the public internet or contact anyone outside that organization."}}}},"/workflow-runs/{workflowRunId}/assignees":{"get":{"tags":["Workflow Runs"],"summary":"List all assignees in a workflow run","description":"\nReturns a list of workflow run assignees for the given workflow run.\nThe results are returned 20 at a time.\nYou must use the links section to get the next 20 results.\n","operationId":"listWorkflowRunAssignees","parameters":[{"name":"workflowRunId","in":"path","description":"The ID of the Workflow Run","required":true,"schema":{"type":"string"}},{"name":"_","in":"query","description":"Opaque pagination cursor. Take this value from the previous response's `links[]` entry whose `name`\nis `\"next\"` (typically just follow that link's `href` instead of reading this value).\nOmit on the first page. If the previous response had no `next` link, there are no more pages.","required":false,"schema":{"type":"string"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListChecklistAssigneesResponse"}}}},"default":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorInfo"}}}}},"security":[{"apiKeyAuth":[]},{"httpAuth":[]}],"x-mcp-tool":{"annotations":{"readOnlyHint":true,"destructiveHint":false,"openWorldHint":false},"justifications":{"read_only_justification":"It only reads data and changes nothing.","destructive_justification":"It changes nothing, so it cannot have an irreversible outcome.","open_world_justification":"It acts only on data in a Process Street organization the signed-in user belongs to, with that user's own permissions there. It does not access the public internet or contact anyone outside that organization."}}}},"/workflow-runs":{"get":{"tags":["Workflow Runs"],"summary":"Search workflow runs","description":"Returns the latest 200 workflow runs of a workflow, showing the most recently updated first.","operationId":"searchWorkflowRuns","parameters":[{"name":"workflowId","in":"query","description":"The ID of the Workflow (can be copied from the Workflow URL in the web app)","required":false,"schema":{"type":"string"}},{"name":"name","in":"query","description":"The partial name of the Workflow Run to search for (will match any part of the name in a case-insensitive manner)","required":false,"schema":{"type":"string"}},{"name":"status","in":"query","description":"\nThe status (or statuses) to filter by (Active, Completed or Archived).\nIf no status is provided, it will default to Active.\nMultiple statuses can be provided as a comma-separated list.\n","required":false,"schema":{"type":"string"}},{"name":"fields","in":"query","description":"\nThe partial values of form field values to search for.\nIt will match any part of the value in a case-insensitive manner.\nIf there are multiple form field values, then Workflow Runs that match any of them will be returned.<br>\n<br>\nExample (before being URL-encoded):\n<code>?fields[lD7FTF9R63xNCLn8w_xMdw]=value_1&fields[lD7FTF9R63xNCLn8w_xMab]=value_2</code>\n","required":false,"schema":{"type":"string"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListWorkflowRunsResponse"}}}},"400":{"description":"Invalid value for: query parameters","content":{"text/plain":{"schema":{"type":"string"}}}},"default":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorInfo"}}}}},"security":[{"apiKeyAuth":[]},{"httpAuth":[]}],"x-mcp-tool":{"annotations":{"readOnlyHint":true,"destructiveHint":false,"openWorldHint":false},"justifications":{"read_only_justification":"It only reads data and changes nothing.","destructive_justification":"It changes nothing, so it cannot have an irreversible outcome.","open_world_justification":"It acts only on data in a Process Street organization the signed-in user belongs to, with that user's own permissions there. It does not access the public internet or contact anyone outside that organization."}}},"post":{"tags":["Workflow Runs"],"summary":"Create a workflow run","description":"Creates a new workflow run for the specified workflow.","operationId":"createWorkflowRun","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateWorkflowRunRequest"},"examples":{"Without a due date":{"value":{"workflowId":"tVc3xwmnljwBoX6Zogt_EQ","name":"Project Kickoff"}},"With a due date":{"value":{"workflowId":"g-z1459Ak4UBoX6ZogxxjQ","name":"Q1 Inventory Audit","dueDate":"2026-04-01T18:22:40.140Z"}},"Shared":{"value":{"workflowId":"ibxwn88xeeQBoX6Zogx3Iw","name":"Q1 Inventory Audit","shared":true}}}}},"required":true},"responses":{"201":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateWorkflowRunResponse"}}}},"400":{"description":"Invalid value for: body","content":{"text/plain":{"schema":{"type":"string"}}}},"default":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorInfo"}}}}},"security":[{"apiKeyAuth":[]},{"httpAuth":[]}],"x-mcp-tool":{"annotations":{"readOnlyHint":false,"destructiveHint":false,"openWorldHint":true},"justifications":{"read_only_justification":"It creates something new, which is a change of state.","destructive_justification":"It only adds something new. It changes and removes nothing that already exists, and what it creates can be deleted again.","open_world_justification":"It can share the run by link, so that anyone on the internet who has the link can see it, fill in its form fields and complete its tasks without a Process Street account."}}}},"/workflow-runs/{workflowRunId}":{"get":{"tags":["Workflow Runs"],"summary":"Get a workflow run","description":"Returns a workflow run by its ID.","operationId":"getWorkflowRun","parameters":[{"name":"workflowRunId","in":"path","description":"The ID of the Workflow Run","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetWorkflowRunResponse"}}}},"default":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorInfo"}}}}},"security":[{"apiKeyAuth":[]},{"httpAuth":[]}],"x-mcp-tool":{"annotations":{"readOnlyHint":true,"destructiveHint":false,"openWorldHint":false},"justifications":{"read_only_justification":"It only reads data and changes nothing.","destructive_justification":"It changes nothing, so it cannot have an irreversible outcome.","open_world_justification":"It acts only on data in a Process Street organization the signed-in user belongs to, with that user's own permissions there. It does not access the public internet or contact anyone outside that organization."}}},"put":{"tags":["Workflow Runs"],"summary":"Update a workflow run","description":"A PUT request replaces all values, so all fields must be supplied in each request.\nTo remove a due date, you may send a null value or omit the field. See the examples for more.","operationId":"updateWorkflowRun","parameters":[{"name":"workflowRunId","in":"path","description":"The ID of the Workflow Run","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateWorkflowRunRequest"},"examples":{"Update name only":{"value":{"name":"New Name","status":"Active","shared":false,"dueDate":"2026-10-27T00:00:00.000Z"}},"Removing the due date":{"value":{"name":"Existing Name","status":"Active","shared":false}},"Update status only":{"value":{"name":"Existing Name","status":"Completed","shared":false,"dueDate":"2026-10-27T00:00:00.000Z"}},"Update shared status only":{"value":{"name":"Existing Name","status":"Active","shared":true,"dueDate":"2026-10-27T00:00:00.000Z"}},"Update all fields":{"value":{"name":"New Name","status":"Active","shared":false,"dueDate":"2026-11-10T00:00:00.000Z"}}}}},"required":true},"responses":{"204":{"description":""},"400":{"description":"Invalid value for: body","content":{"text/plain":{"schema":{"type":"string"}}}},"default":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorInfo"}}}}},"security":[{"apiKeyAuth":[]},{"httpAuth":[]}],"x-mcp-tool":{"annotations":{"readOnlyHint":false,"destructiveHint":true,"openWorldHint":true},"justifications":{"read_only_justification":"It changes existing data.","destructive_justification":"It overwrites existing values and does not keep the ones it replaces, so undoing it means knowing what they were.","open_world_justification":"It can share the run by link, so that anyone on the internet who has the link can see it, fill in its form fields and complete its tasks without a Process Street account."}}},"delete":{"tags":["Workflow Runs"],"summary":"Delete a workflow run","description":"Deletes a workflow run by its ID.","operationId":"deleteWorkflowRun","parameters":[{"name":"workflowRunId","in":"path","description":"The ID of the Workflow Run","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":""},"default":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorInfo"}}}}},"security":[{"apiKeyAuth":[]},{"httpAuth":[]}],"x-mcp-tool":{"annotations":{"readOnlyHint":false,"destructiveHint":true,"openWorldHint":false},"justifications":{"read_only_justification":"It deletes data.","destructive_justification":"It deletes the workflow run. undeleteWorkflowRun can restore it, but it is marked destructive so the user confirms before a run disappears for everyone working on it.","open_world_justification":"It acts only on data in a Process Street organization the signed-in user belongs to, with that user's own permissions there. It does not access the public internet or contact anyone outside that organization."}}}},"/workflow-runs/list":{"get":{"tags":["Workflow Runs"],"summary":"List all workflow runs","description":"Returns a paginated list of workflow runs accessible to the calling user, sorted by creation date (newest first). Soft-deleted runs are excluded; only runs of workflow-type templates are returned (runs of page-type templates are out of scope).","operationId":"listWorkflowRuns","parameters":[{"name":"workflowId","in":"query","description":"Filter results to runs of a specific workflow. If the workflow does not exist or is inaccessible, the response is an empty page rather than an error.","required":false,"schema":{"type":"string"}},{"name":"status","in":"query","description":"Filter results by workflow run status.\n\n- `Active` — the run is in progress.\n- `Completed` — all tasks were completed and the run was finalised.\n- `Archived` — the run was archived from the active list.\n\nThe internal `Deleted` status is hidden from the public API surface and rejected here.\nOmit this filter to include all non-deleted runs.\n","required":false,"schema":{"type":"string"}},{"name":"_","in":"query","description":"Opaque pagination cursor. Take this value from the previous response's `links[]` entry whose `name`\nis `\"next\"` (typically just follow that link's `href` instead of reading this value).\nOmit on the first page. If the previous response had no `next` link, there are no more pages.","required":false,"schema":{"type":"string"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicApiWorkflowRunListResponse"}}}},"default":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorInfo"}}}}},"security":[{"apiKeyAuth":[]},{"httpAuth":[]}],"x-mcp-tool":{"annotations":{"readOnlyHint":true,"destructiveHint":false,"openWorldHint":false},"justifications":{"read_only_justification":"It only reads data and changes nothing.","destructive_justification":"It changes nothing, so it cannot have an irreversible outcome.","open_world_justification":"It acts only on data in a Process Street organization the signed-in user belongs to, with that user's own permissions there. It does not access the public internet or contact anyone outside that organization."}}}},"/workflow-runs/{workflowRunId}/undelete":{"post":{"tags":["Workflow Runs"],"summary":"Undelete a workflow run","description":"Restores a previously deleted workflow run by its ID.","operationId":"undeleteWorkflowRun","parameters":[{"name":"workflowRunId","in":"path","description":"The ID of the Workflow Run","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":""},"default":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorInfo"}}}}},"security":[{"apiKeyAuth":[]},{"httpAuth":[]}],"x-mcp-tool":{"annotations":{"readOnlyHint":false,"destructiveHint":false,"openWorldHint":false},"justifications":{"read_only_justification":"It changes data.","destructive_justification":"It restores a deleted workflow run, and deleteWorkflowRun can delete it again.","open_world_justification":"It acts only on data in a Process Street organization the signed-in user belongs to, with that user's own permissions there. It does not access the public internet or contact anyone outside that organization."}}}},"/workflow-runs/{workflowRunId}/approvals":{"get":{"tags":["Tasks"],"summary":"List all approvals in a workflow run","description":"Returns a list of approved or rejected approvals for a workflow run. It will not return pending approvals\nthat have not yet been acted upon.\nThe approvals are returned 20 at a time, sorted in task order.\nYou must use the links section to get the next 20 results.","operationId":"listApprovals","parameters":[{"name":"workflowRunId","in":"path","description":"The ID of the Workflow Run","required":true,"schema":{"type":"string"}},{"name":"_","in":"query","description":"Opaque pagination cursor. Take this value from the previous response's `links[]` entry whose `name`\nis `\"next\"` (typically just follow that link's `href` instead of reading this value).\nOmit on the first page. If the previous response had no `next` link, there are no more pages.","required":false,"schema":{"type":"string"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListApprovalsResponse"}}}},"default":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorInfo"}}}}},"security":[{"apiKeyAuth":[]},{"httpAuth":[]}],"x-mcp-tool":{"annotations":{"readOnlyHint":true,"destructiveHint":false,"openWorldHint":false},"justifications":{"read_only_justification":"It only reads data and changes nothing.","destructive_justification":"It changes nothing, so it cannot have an irreversible outcome.","open_world_justification":"It acts only on data in a Process Street organization the signed-in user belongs to, with that user's own permissions there. It does not access the public internet or contact anyone outside that organization."}}},"put":{"tags":["Tasks"],"summary":"Approve or reject a task","description":"The <code>approvalTaskId</code> is the ID of the approval task and the <code>subjectTaskId</code> is the\nID of the task being approved or rejected. If you don't include a subject task, all pending subject tasks\nof the approval task will be approved or rejected.<br>\n<br>\nA PUT request replaces all values, so all fields must be supplied in each request.\nTo not have a comment, you may send a null value or omit the field. See the examples for more.","operationId":"upsertApproval","parameters":[{"name":"workflowRunId","in":"path","description":"The ID of the Workflow Run","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpsertApprovalRequest"},"examples":{"Approve subject task":{"value":{"approvalTaskId":"lCHXfAig9B4BoX6ZoT17MQ","subjectTaskId":"jmKiqkLA2WIBoX6ZoT140A","status":"Approved"}},"Approve all subject tasks with comment":{"value":{"approvalTaskId":"j2TDXKyPjqIBoX6ZoT11aw","status":"Approved","comment":"Looks good to me!"}},"Reject subject task with comment":{"value":{"approvalTaskId":"szkEubhp0c0BoX6ZoT1wdA","subjectTaskId":"sO3GoVLbISQBoX6ZoT18kQ","status":"Rejected","comment":"The customer name is misspelled."}}}}},"required":true},"responses":{"204":{"description":""},"400":{"description":"Invalid value for: body","content":{"text/plain":{"schema":{"type":"string"}}}},"default":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorInfo"}}}}},"security":[{"apiKeyAuth":[]},{"httpAuth":[]}],"x-mcp-tool":{"annotations":{"readOnlyHint":false,"destructiveHint":true,"openWorldHint":false},"justifications":{"read_only_justification":"It changes existing data.","destructive_justification":"It overwrites existing values and does not keep the ones it replaces, so undoing it means knowing what they were.","open_world_justification":"It acts only on data in a Process Street organization the signed-in user belongs to, with that user's own permissions there. It does not access the public internet or contact anyone outside that organization."}}}},"/workflow-runs/{workflowRunId}/tasks/{taskId}/assignees/{email}":{"put":{"tags":["Tasks"],"summary":"Assign a user to a task","description":"Assigns a user by email to a task in a workflow run.","operationId":"assignTask","parameters":[{"name":"workflowRunId","in":"path","description":"The ID of the Workflow Run","required":true,"schema":{"type":"string"}},{"name":"taskId","in":"path","description":"The ID of the Task","required":true,"schema":{"type":"string"}},{"name":"email","in":"path","description":"Email","required":true,"schema":{"type":"string"}}],"responses":{"204":{"description":""},"default":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorInfo"}}}}},"security":[{"apiKeyAuth":[]},{"httpAuth":[]}],"x-mcp-tool":{"annotations":{"readOnlyHint":false,"destructiveHint":true,"openWorldHint":true},"justifications":{"read_only_justification":"It changes existing data.","destructive_justification":"unassignTask removes the assignment, but an email address that is not a member's is also invited as a guest and sent an invitation email, and unassigning undoes neither.","open_world_justification":"An email address that does not belong to a member of the organization is invited as a guest and sent an invitation email, which reaches someone outside the organization."}}},"delete":{"tags":["Tasks"],"summary":"Unassign a user from a task","description":"Unassigns a user by email from a task in a workflow run.","operationId":"unassignTask","parameters":[{"name":"workflowRunId","in":"path","description":"The ID of the Workflow Run","required":true,"schema":{"type":"string"}},{"name":"taskId","in":"path","description":"The ID of the Task","required":true,"schema":{"type":"string"}},{"name":"email","in":"path","description":"Email","required":true,"schema":{"type":"string"}}],"responses":{"204":{"description":""},"default":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorInfo"}}}}},"security":[{"apiKeyAuth":[]},{"httpAuth":[]}],"x-mcp-tool":{"annotations":{"readOnlyHint":false,"destructiveHint":false,"openWorldHint":false},"justifications":{"read_only_justification":"It changes data.","destructive_justification":"assignTask assigns the same user again.","open_world_justification":"It acts only on data in a Process Street organization the signed-in user belongs to, with that user's own permissions there. It does not access the public internet or contact anyone outside that organization."}}}},"/workflow-runs/{workflowRunId}/tasks/{taskId}":{"get":{"tags":["Tasks"],"summary":"Get a task","description":"Returns a task in a workflow run by its ID.","operationId":"getTask","parameters":[{"name":"workflowRunId","in":"path","description":"The ID of the Workflow Run","required":true,"schema":{"type":"string"}},{"name":"taskId","in":"path","description":"The ID of the Task","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetTaskResponse"}}}},"default":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorInfo"}}}}},"security":[{"apiKeyAuth":[]},{"httpAuth":[]}],"x-mcp-tool":{"annotations":{"readOnlyHint":true,"destructiveHint":false,"openWorldHint":false},"justifications":{"read_only_justification":"It only reads data and changes nothing.","destructive_justification":"It changes nothing, so it cannot have an irreversible outcome.","open_world_justification":"It acts only on data in a Process Street organization the signed-in user belongs to, with that user's own permissions there. It does not access the public internet or contact anyone outside that organization."}}},"put":{"tags":["Tasks"],"summary":"Update a task","description":"A PUT request replaces all values, so all fields must be supplied in each request.\nTo remove a due date, you may send a null value or omit the field. See the examples for more.","operationId":"updateTask","parameters":[{"name":"workflowRunId","in":"path","description":"The ID of the Workflow Run","required":true,"schema":{"type":"string"}},{"name":"taskId","in":"path","description":"The ID of the Task","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateTaskRequest"},"examples":{"Complete task":{"value":{"status":"Completed"}},"Update due date":{"value":{"status":"NotCompleted","dueDate":"2026-10-27T00:00:00.000Z"}},"Clear due date":{"value":{"status":"NotCompleted"}}}}},"required":true},"responses":{"204":{"description":""},"400":{"description":"Invalid value for: body","content":{"text/plain":{"schema":{"type":"string"}}}},"default":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorInfo"}}}}},"security":[{"apiKeyAuth":[]},{"httpAuth":[]}],"x-mcp-tool":{"annotations":{"readOnlyHint":false,"destructiveHint":true,"openWorldHint":false},"justifications":{"read_only_justification":"It changes existing data.","destructive_justification":"It overwrites existing values and does not keep the ones it replaces, so undoing it means knowing what they were.","open_world_justification":"It acts only on data in a Process Street organization the signed-in user belongs to, with that user's own permissions there. It does not access the public internet or contact anyone outside that organization."}}}},"/tasks":{"get":{"tags":["Tasks"],"summary":"List all tasks","description":"\nReturns a list of tasks for the given query.\nThe tasks are returned 20 at a time, sorted in order of due date.\nYou must use the links section to get the next 20 results.\n","operationId":"listTasks","parameters":[{"name":"assigneeEmail","in":"query","description":"The email of the assigned user to filter the tasks by (will match in a case-insensitive manner)","required":true,"schema":{"type":"string"}},{"name":"workflowId","in":"query","description":"The ID of the workflow to filter by.","required":false,"schema":{"type":"string"}},{"name":"_","in":"query","description":"Opaque pagination cursor. Take this value from the previous response's `links[]` entry whose `name`\nis `\"next\"` (typically just follow that link's `href` instead of reading this value).\nOmit on the first page. If the previous response had no `next` link, there are no more pages.","required":false,"schema":{"type":"string"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListTasksResponse"}}}},"400":{"description":"Invalid value for: query parameter assigneeEmail","content":{"text/plain":{"schema":{"type":"string"}}}},"default":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorInfo"}}}}},"security":[{"apiKeyAuth":[]},{"httpAuth":[]}],"x-mcp-tool":{"annotations":{"readOnlyHint":true,"destructiveHint":false,"openWorldHint":false},"justifications":{"read_only_justification":"It only reads data and changes nothing.","destructive_justification":"It changes nothing, so it cannot have an irreversible outcome.","open_world_justification":"It acts only on data in a Process Street organization the signed-in user belongs to, with that user's own permissions there. It does not access the public internet or contact anyone outside that organization."}}}},"/workflow-runs/{workflowRunId}/tasks":{"get":{"tags":["Tasks"],"summary":"List all tasks in a workflow run","description":"Returns a list of tasks for a workflow run.\nThe tasks are returned 20 at a time, sorted in order.\nYou must use the links section to get the next 20 results.","operationId":"listTasksByWorkflowRun","parameters":[{"name":"workflowRunId","in":"path","description":"The ID of the Workflow Run","required":true,"schema":{"type":"string"}},{"name":"_","in":"query","description":"Opaque pagination cursor. Take this value from the previous response's `links[]` entry whose `name`\nis `\"next\"` (typically just follow that link's `href` instead of reading this value).\nOmit on the first page. If the previous response had no `next` link, there are no more pages.","required":false,"schema":{"type":"string"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListTasksResponse"}}}},"default":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorInfo"}}}}},"security":[{"apiKeyAuth":[]},{"httpAuth":[]}],"x-mcp-tool":{"annotations":{"readOnlyHint":true,"destructiveHint":false,"openWorldHint":false},"justifications":{"read_only_justification":"It only reads data and changes nothing.","destructive_justification":"It changes nothing, so it cannot have an irreversible outcome.","open_world_justification":"It acts only on data in a Process Street organization the signed-in user belongs to, with that user's own permissions there. It does not access the public internet or contact anyone outside that organization."}}}},"/workflow-runs/{workflowRunId}/tasks/{taskId}/assignees":{"get":{"tags":["Tasks"],"summary":"List all assignees in a task","description":"Returns all the assignees of a given task of a workflow run.","operationId":"listTaskAssignees","parameters":[{"name":"workflowRunId","in":"path","description":"The ID of the Workflow Run","required":true,"schema":{"type":"string"}},{"name":"taskId","in":"path","description":"The ID of the Task","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListTaskAssigneesResponse"}}}},"default":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorInfo"}}}}},"security":[{"apiKeyAuth":[]},{"httpAuth":[]}],"x-mcp-tool":{"annotations":{"readOnlyHint":true,"destructiveHint":false,"openWorldHint":false},"justifications":{"read_only_justification":"It only reads data and changes nothing.","destructive_justification":"It changes nothing, so it cannot have an irreversible outcome.","open_world_justification":"It acts only on data in a Process Street organization the signed-in user belongs to, with that user's own permissions there. It does not access the public internet or contact anyone outside that organization."}}}},"/workflows/{workflowId}/form-fields":{"get":{"tags":["Form Fields"],"summary":"List all form fields in a workflow","description":"Gets a page of form fields for a workflow.\nForm fields are paged, meaning the links section in the\nresponse must be used to get the next/previous batch of form fields.","operationId":"listFormFields","parameters":[{"name":"workflowId","in":"path","description":"The ID of the Workflow","required":true,"schema":{"type":"string"}},{"name":"_","in":"query","description":"Opaque pagination cursor. Take this value from the previous response's `links[]` entry whose `name`\nis `\"next\"` (typically just follow that link's `href` instead of reading this value).\nOmit on the first page. If the previous response had no `next` link, there are no more pages.","required":false,"schema":{"type":"string"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListFormFieldsResponse"}}}},"default":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorInfo"}}}}},"security":[{"apiKeyAuth":[]},{"httpAuth":[]}],"x-mcp-tool":{"annotations":{"readOnlyHint":true,"destructiveHint":false,"openWorldHint":false},"justifications":{"read_only_justification":"It only reads data and changes nothing.","destructive_justification":"It changes nothing, so it cannot have an irreversible outcome.","open_world_justification":"It acts only on data in a Process Street organization the signed-in user belongs to, with that user's own permissions there. It does not access the public internet or contact anyone outside that organization."}}}},"/workflows/{workflowId}/form-fields/{formFieldId}/options":{"get":{"tags":["Form Fields"],"summary":"List all options for a form field","description":"Gets a page of form field options.<br>\nOptions are paged, meaning the links section in the response must be used to get the next/previous\nbatch of form field options.\nIf the field is linked to a Data Set Saved View, then the Row IDs are\nalso listed in the response.","operationId":"listFormFieldOptions","parameters":[{"name":"workflowId","in":"path","description":"The ID of the Workflow","required":true,"schema":{"type":"string"}},{"name":"formFieldId","in":"path","description":"Form Field ID","required":true,"schema":{"type":"string"}},{"name":"_","in":"query","description":"Opaque pagination cursor. Take this value from the previous response's `links[]` entry whose `name`\nis `\"next\"` (typically just follow that link's `href` instead of reading this value).\nOmit on the first page. If the previous response had no `next` link, there are no more pages.","required":false,"schema":{"type":"string"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListFormFieldOptionsResponse"}}}},"default":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorInfo"}}}}},"security":[{"apiKeyAuth":[]},{"httpAuth":[]}],"x-mcp-tool":{"annotations":{"readOnlyHint":true,"destructiveHint":false,"openWorldHint":false},"justifications":{"read_only_justification":"It only reads data and changes nothing.","destructive_justification":"It changes nothing, so it cannot have an irreversible outcome.","open_world_justification":"It acts only on data in a Process Street organization the signed-in user belongs to, with that user's own permissions there. It does not access the public internet or contact anyone outside that organization."}}}},"/workflow-runs/{workflowRunId}/tasks/{taskId}/form-fields":{"get":{"tags":["Form Field Values"],"summary":"List all form field values in a task","description":"Gets a page of form field values for a task of a workflow run.\nForm field values are paged, meaning the links section in the\nresponse must be used to get the next/previous batch of form field values.","operationId":"listFormFieldValuesByTask","parameters":[{"name":"workflowRunId","in":"path","description":"The ID of the Workflow Run","required":true,"schema":{"type":"string"}},{"name":"taskId","in":"path","description":"The ID of the Task","required":true,"schema":{"type":"string"}},{"name":"_","in":"query","description":"Opaque pagination cursor. Take this value from the previous response's `links[]` entry whose `name`\nis `\"next\"` (typically just follow that link's `href` instead of reading this value).\nOmit on the first page. If the previous response had no `next` link, there are no more pages.","required":false,"schema":{"type":"string"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListFormFieldValuesResponse"}}}},"default":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorInfo"}}}}},"security":[{"apiKeyAuth":[]},{"httpAuth":[]}],"x-mcp-tool":{"annotations":{"readOnlyHint":true,"destructiveHint":false,"openWorldHint":false},"justifications":{"read_only_justification":"It only reads data and changes nothing.","destructive_justification":"It changes nothing, so it cannot have an irreversible outcome.","open_world_justification":"It acts only on data in a Process Street organization the signed-in user belongs to, with that user's own permissions there. It does not access the public internet or contact anyone outside that organization."}}}},"/workflow-runs/{workflowRunId}/form-fields":{"get":{"tags":["Form Field Values"],"summary":"List all form field values","description":"Gets a page of form field values for a workflow run.\nForm field values are paged, meaning the links section in the\nresponse must be used to get the next/previous batch of form field values.","operationId":"listFormFieldValues","parameters":[{"name":"workflowRunId","in":"path","description":"The ID of the Workflow Run","required":true,"schema":{"type":"string"}},{"name":"_","in":"query","description":"Opaque pagination cursor. Take this value from the previous response's `links[]` entry whose `name`\nis `\"next\"` (typically just follow that link's `href` instead of reading this value).\nOmit on the first page. If the previous response had no `next` link, there are no more pages.","required":false,"schema":{"type":"string"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListFormFieldValuesResponse"}}}},"default":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorInfo"}}}}},"security":[{"apiKeyAuth":[]},{"httpAuth":[]}],"x-mcp-tool":{"annotations":{"readOnlyHint":true,"destructiveHint":false,"openWorldHint":false},"justifications":{"read_only_justification":"It only reads data and changes nothing.","destructive_justification":"It changes nothing, so it cannot have an irreversible outcome.","open_world_justification":"It acts only on data in a Process Street organization the signed-in user belongs to, with that user's own permissions there. It does not access the public internet or contact anyone outside that organization."}}},"post":{"tags":["Form Field Values"],"summary":"Batch update form field values","description":"Updates multiple form field values (i.e the values for the form fields present in a workflow run).\nA value may consist of a simple string, may accept multiple values as an array, or it may accept multiple\nproperties.<br>\n<br>\nSee the examples for a complete reference on setting form field values.<br>\n<br>\nNote: File Upload form fields cannot be updated using this endpoint. Use the upload endpoint instead.","operationId":"batchUpdateFormFieldValues","parameters":[{"name":"workflowRunId","in":"path","description":"The ID of the Workflow Run","required":true,"schema":{"type":"string"}}],"requestBody":{"description":"List of form fields to set a new value for within a workflow run.\nForm field IDs included in the request will have their values created or updated.\nForm field IDs not included in the request will be left unchanged.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateMultipleFormFieldValuesRequest"},"examples":{"updatingSimpleFields":{"summary":"Updating a simple field: Short Text, Long Text, Email, Website, Members (User) and Dropdown fields","description":"Requires specifying only a 'value' key with a String associated.\n                This structure must be used for the following fields: Short Text, Long Text, Email, Website, Members (User) and Dropdown.","value":{"fields":[{"id":"vR9hcYL6mq4BoX6ZmvZ1Gw","value":"It's over Anakin, I have the high ground"}]}},"updatingMultiValueFields":{"summary":"Updating a field that accepts multiple values: Members, Multi Select (Subtasks) and Multi Choice fields","description":"Requires specifying only a 'values' key with a list of Strings associated.\n                  This structure must be used for the following fields: Multi Select and Multi Choice.","value":{"fields":[{"id":"rRXpDIgQgE0BoX6ZmvZ4Nw","values":["It's over Anakin","I have the high ground"]}]}},"dataSetConnectedDropdown":{"summary":"Updating a Data Set Linked Dropdown field","description":"Requires specifying a 'value' or a 'dataSetRowId' key with a Muid associated.","value":{"fields":[{"id":"slwjg2vsqagBoX6ZmvZ0fw","value":"rHgzq1ngK-cBoX6ZmvZ9cg"}]}},"updatingDateFields":{"summary":"Updating the Date field","description":"Requires specifying only a 'value' key, but may optionally add a 'timeHidden' key.\n                  This structure must be used for the Date field.","value":{"fields":[{"id":"hXMCmnJPEbABoX6ZmvZ3Zg","value":"2026-10-27T18:22:38.326Z","timeHidden":true}]}},"updatingTableFields":{"summary":"Updating the Table field","description":"Requires specifying only a 'value' key with a CSV associated.","value":{"fields":[{"id":"it7Lt9BLfzQBoX6ZmvZ-Tg","value":"Alice,Bob\nJon,Natalie"}]}},"updatingMultipleFields":{"summary":"Updating multiple fields at the same time","description":"Updating multiple fields at the same time","value":{"fields":[{"id":"s9VthnsUxrUBoX6ZmvVydg","value":"2026-10-27T18:22:38.325Z","timeHidden":true},{"id":"qmyLfnfCvRABoX6ZmvZ6tA","values":["It's over Anakin","I have the high ground"]},{"id":"kgs6aC7Bzz8BoX6ZmvZwXg","value":"https://www.process.st"},{"id":"mitkQGEGFAwBoX6ZmvZ39w","value":"Alice,Bob\nJon,Natalie"}]}}}}},"required":true},"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateMultipleFormFieldValuesResponse"}}}},"400":{"description":"Invalid value for: body","content":{"text/plain":{"schema":{"type":"string"}}}},"default":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorInfo"}}}}},"security":[{"apiKeyAuth":[]},{"httpAuth":[]}],"x-mcp-tool":{"annotations":{"readOnlyHint":false,"destructiveHint":true,"openWorldHint":false},"justifications":{"read_only_justification":"It changes existing data.","destructive_justification":"It overwrites existing values and does not keep the ones it replaces, so undoing it means knowing what they were.","open_world_justification":"It acts only on data in a Process Street organization the signed-in user belongs to, with that user's own permissions there. It does not access the public internet or contact anyone outside that organization."}}}},"/workflow-runs/{workflowRunId}/form-fields/{formFieldId}/upload":{"post":{"tags":["Form Field Values"],"summary":"Upload a form field value","description":"Uploads one or more files to a File or MultiFile form field in a workflow run.\n\nNote:<br>\nThis endpoint supports both single-file and multi-file form fields.<br>\nFile fields can accept exactly one file and it will replace the current file.<br>\nMultiFile fields can accept multiple files per request, up to 10 files total, subject to the field's configuration.\nThese files will be appended to the field.<br>\nThe maximum file size supported by this endpoint is 20 MB per file for multipart uploads and 10 MB per file for Base64 uploads.\n\nAlternatively, send JSON `{ \"fileUploadId\": \"...\" }` to attach a file you uploaded with the `createFileUpload` endpoint. The `fileUploadId` is single-use.","operationId":"uploadFormFieldValue","parameters":[{"name":"workflowRunId","in":"path","description":"The ID of the Workflow Run","required":true,"schema":{"type":"string"}},{"name":"formFieldId","in":"path","description":"Form Field ID","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"multipart/form-data":{"schema":{"$ref":"#/components/schemas/UploadFormFieldValueRequest"}},"application/json":{"schema":{"$ref":"#/components/schemas/UploadFormFieldValueRequest"}}},"required":true},"responses":{"204":{"description":""},"400":{"description":"Invalid value","content":{"text/plain":{"schema":{"type":"string"}}}},"default":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorInfo"}}}}},"security":[{"apiKeyAuth":[]},{"httpAuth":[]}],"x-mcp-tool":{"annotations":{"readOnlyHint":false,"destructiveHint":true,"openWorldHint":false},"justifications":{"read_only_justification":"It changes existing data.","destructive_justification":"On a single-file field it replaces the current file, which is not kept. On a multi-file field it only adds files.","open_world_justification":"It acts only on data in a Process Street organization the signed-in user belongs to, with that user's own permissions there. It does not access the public internet or contact anyone outside that organization."}}},"delete":{"tags":["Form Field Values"],"summary":"Delete all files from a form field","description":"Deletes all files from a File or MultiFile form field in a workflow run.","operationId":"deleteFormFieldAllFiles","parameters":[{"name":"workflowRunId","in":"path","description":"The ID of the Workflow Run","required":true,"schema":{"type":"string"}},{"name":"formFieldId","in":"path","description":"Form Field ID","required":true,"schema":{"type":"string"}}],"responses":{"204":{"description":""},"default":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorInfo"}}}}},"security":[{"apiKeyAuth":[]},{"httpAuth":[]}],"x-mcp-tool":{"annotations":{"readOnlyHint":false,"destructiveHint":true,"openWorldHint":false},"justifications":{"read_only_justification":"It deletes data.","destructive_justification":"It deletes data, and the public API has no way to restore it.","open_world_justification":"It acts only on data in a Process Street organization the signed-in user belongs to, with that user's own permissions there. It does not access the public internet or contact anyone outside that organization."}}}},"/workflow-runs/{workflowRunId}/form-fields/{formFieldId}/upload/{fileId}":{"delete":{"tags":["Form Field Values"],"summary":"Delete a specific file from a form field","description":"Deletes a specific file from a File or MultiFile form field in a workflow run.\nFor File fields, the `fileId` parameter is ignored since there is only one file.\nFor MultiFile fields, the specified file is removed. If it was the last file, the field value is deleted entirely.","operationId":"deleteFormFieldFileById","parameters":[{"name":"workflowRunId","in":"path","description":"The ID of the Workflow Run","required":true,"schema":{"type":"string"}},{"name":"formFieldId","in":"path","description":"Form Field ID","required":true,"schema":{"type":"string"}},{"name":"fileId","in":"path","description":"File ID","required":true,"schema":{"type":"string"}}],"responses":{"204":{"description":""},"default":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorInfo"}}}}},"security":[{"apiKeyAuth":[]},{"httpAuth":[]}],"x-mcp-tool":{"annotations":{"readOnlyHint":false,"destructiveHint":true,"openWorldHint":false},"justifications":{"read_only_justification":"It deletes data.","destructive_justification":"It deletes data, and the public API has no way to restore it.","open_world_justification":"It acts only on data in a Process Street organization the signed-in user belongs to, with that user's own permissions there. It does not access the public internet or contact anyone outside that organization."}}}},"/data-sets":{"get":{"tags":["Data Sets"],"summary":"List all data sets","description":"\nReturns a list of data sets.\nThe results are returned 20 at a time, sorted in order of creation date.\nYou must use the links section to get the next 20 results.\n","operationId":"listDataSets","parameters":[{"name":"_","in":"query","description":"Opaque pagination cursor. Take this value from the previous response's `links[]` entry whose `name`\nis `\"next\"` (typically just follow that link's `href` instead of reading this value).\nOmit on the first page. If the previous response had no `next` link, there are no more pages.","required":false,"schema":{"type":"string"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListDataSetsResponse"}}}},"default":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorInfo"}}}}},"security":[{"apiKeyAuth":[]},{"httpAuth":[]}],"x-mcp-tool":{"annotations":{"readOnlyHint":true,"destructiveHint":false,"openWorldHint":false},"justifications":{"read_only_justification":"It only reads data and changes nothing.","destructive_justification":"It changes nothing, so it cannot have an irreversible outcome.","open_world_justification":"It acts only on data in a Process Street organization the signed-in user belongs to, with that user's own permissions there. It does not access the public internet or contact anyone outside that organization."}}},"post":{"tags":["Data Sets"],"summary":"Create a data set","description":"Creates a new data set with the given name and field definitions.","operationId":"createDataSet","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateDataSetRequest"},"examples":{"Create a data set":{"summary":"Creates a data set with three columns","value":{"name":"Customers","fields":[{"name":"Company","fieldType":"Text"},{"name":"Revenue","fieldType":"Number"},{"name":"Region","fieldType":"Text"}]}}}}},"required":true},"responses":{"201":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicApiDataSetResponse"}}}},"400":{"description":"Invalid value for: body","content":{"text/plain":{"schema":{"type":"string"}}}},"default":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorInfo"}}}}},"security":[{"apiKeyAuth":[]},{"httpAuth":[]}],"x-mcp-tool":{"annotations":{"readOnlyHint":false,"destructiveHint":false,"openWorldHint":false},"justifications":{"read_only_justification":"It creates something new, which is a change of state.","destructive_justification":"It only adds something new. It changes and removes nothing that already exists, and what it creates can be deleted again.","open_world_justification":"It acts only on data in a Process Street organization the signed-in user belongs to, with that user's own permissions there. It does not access the public internet or contact anyone outside that organization."}}}},"/data-sets/{dataSetId}":{"get":{"tags":["Data Sets"],"summary":"Get a data set","description":"Returns a data set by its ID, including its field definitions.","operationId":"getDataSet","parameters":[{"name":"dataSetId","in":"path","description":"The ID of the Data Set","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicApiDataSetResponse"}}}},"default":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorInfo"}}}}},"security":[{"apiKeyAuth":[]},{"httpAuth":[]}],"x-mcp-tool":{"annotations":{"readOnlyHint":true,"destructiveHint":false,"openWorldHint":false},"justifications":{"read_only_justification":"It only reads data and changes nothing.","destructive_justification":"It changes nothing, so it cannot have an irreversible outcome.","open_world_justification":"It acts only on data in a Process Street organization the signed-in user belongs to, with that user's own permissions there. It does not access the public internet or contact anyone outside that organization."}}},"put":{"tags":["Data Sets"],"summary":"Update a data set","description":"Updates a data set's name and field definitions. Uses PUT semantics: the full field list is replaced. Returns the updated data set.","operationId":"updateDataSet","parameters":[{"name":"dataSetId","in":"path","description":"The ID of the Data Set","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateDataSetRequest"},"examples":{"Update a data set":{"summary":"Rename a field and add a new one","value":{"name":"Customers","fields":[{"id":"vaBToNtRn6gBoX6ZoW9_kg","name":"Company Name","fieldType":"Text"},{"id":"jPJE2YC9H1sBoX6ZoW90Kw","name":"Revenue","fieldType":"Number"},{"name":"Region","fieldType":"Text"}]}}}}},"required":true},"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicApiDataSetResponse"}}}},"400":{"description":"Invalid value for: body","content":{"text/plain":{"schema":{"type":"string"}}}},"default":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorInfo"}}}}},"security":[{"apiKeyAuth":[]},{"httpAuth":[]}],"x-mcp-tool":{"annotations":{"readOnlyHint":false,"destructiveHint":true,"openWorldHint":false},"justifications":{"read_only_justification":"It changes existing data.","destructive_justification":"It overwrites existing values and does not keep the ones it replaces, so undoing it means knowing what they were.","open_world_justification":"It acts only on data in a Process Street organization the signed-in user belongs to, with that user's own permissions there. It does not access the public internet or contact anyone outside that organization."}}},"delete":{"tags":["Data Sets"],"summary":"Delete a data set","description":"Deletes a data set and all of its records permanently.","operationId":"deleteDataSet","parameters":[{"name":"dataSetId","in":"path","description":"The ID of the Data Set","required":true,"schema":{"type":"string"}}],"responses":{"204":{"description":""},"default":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorInfo"}}}}},"security":[{"apiKeyAuth":[]},{"httpAuth":[]}],"x-mcp-tool":{"annotations":{"readOnlyHint":false,"destructiveHint":true,"openWorldHint":false},"justifications":{"read_only_justification":"It deletes data.","destructive_justification":"It deletes data, and the public API has no way to restore it.","open_world_justification":"It acts only on data in a Process Street organization the signed-in user belongs to, with that user's own permissions there. It does not access the public internet or contact anyone outside that organization."}}}},"/data-sets/{dataSetId}/records/import":{"post":{"tags":["Data Sets"],"summary":"Import data set records","description":"Imports data set records from an external source via CSV upload.\n\nThe data set must already exist and must not contain any duplicate column names.","operationId":"importDataSetRecords","parameters":[{"name":"dataSetId","in":"path","description":"The ID of the Data Set","required":true,"schema":{"type":"string"}}],"requestBody":{"description":"`strategy`: Defines how data is imported into the system. Possible values are:\n - `Append`: Always append new rows, never touch existing ones\n - `Upsert`: Insert new rows or update existing ones based on matching keys, never delete existing rows.\n - `Sync`: Same as `Upsert`, but also delete any existing rows that are not present in the import file.\n\n`file`: The CSV file to import. The first row must contain the column names. Must not contain duplicate column names.\nThe maximum size for the file is 20 MB.\n\n`key`: The column name to use as the unique identifier for\nthe `Upsert` and `Sync` strategies. This field is required when using\nthe `Upsert` or `Sync` strategies, and must not be provided when using\nthe `Append` strategy.","content":{"multipart/form-data":{"schema":{"$ref":"#/components/schemas/ImportDataSetRowsRequest"}}},"required":true},"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ImportDataSetRowsResponse"}}}},"400":{"description":"Invalid value for: body","content":{"text/plain":{"schema":{"type":"string"}}}},"default":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorInfo"}}}}},"security":[{"apiKeyAuth":[]},{"httpAuth":[]}],"x-mcp-tool":{"annotations":{"readOnlyHint":false,"destructiveHint":true,"openWorldHint":false},"justifications":{"read_only_justification":"It changes existing data.","destructive_justification":"The Sync strategy deletes every record missing from the CSV and Upsert overwrites matching ones, and the public API cannot restore either.","open_world_justification":"It acts only on data in a Process Street organization the signed-in user belongs to, with that user's own permissions there. It does not access the public internet or contact anyone outside that organization."}}}},"/data-sets/{dataSetId}/records":{"get":{"tags":["Data Sets"],"summary":"List all data set records","description":"\nReturns a list of data set records for the given query.\nThe results are returned 20 at a time, sorted in order of data set record ID.\nYou must use the links section to get the next 20 results.\n","operationId":"listDataSetRecords","parameters":[{"name":"dataSetId","in":"path","description":"The ID of the Data Set","required":true,"schema":{"type":"string"}},{"name":"columns","in":"query","description":"\nThe values of columns to search for.\nIt will match them exactly in a case-insensitive manner.\nIf there are multiple columns, then the records that match all of them will be returned.\n\nExample (before being URL-encoded):\n`?columns[lD7FTF9R63xNCLn8w_xMdw]=value_1&columns[iJozi9Lbu_vC2igAV1NLWQ]=value_2`\n","required":false,"style":"deepObject","explode":true,"schema":{"type":"object","additionalProperties":{"type":"string"}}},{"name":"_","in":"query","description":"Opaque pagination cursor. Take this value from the previous response's `links[]` entry whose `name`\nis `\"next\"` (typically just follow that link's `href` instead of reading this value).\nOmit on the first page. If the previous response had no `next` link, there are no more pages.","required":false,"schema":{"type":"string"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListDataSetRowsResponse"}}}},"400":{"description":"Invalid value for: query parameters","content":{"text/plain":{"schema":{"type":"string"}}}},"default":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorInfo"}}}}},"security":[{"apiKeyAuth":[]},{"httpAuth":[]}],"x-mcp-tool":{"annotations":{"readOnlyHint":true,"destructiveHint":false,"openWorldHint":false},"justifications":{"read_only_justification":"It only reads data and changes nothing.","destructive_justification":"It changes nothing, so it cannot have an irreversible outcome.","open_world_justification":"It acts only on data in a Process Street organization the signed-in user belongs to, with that user's own permissions there. It does not access the public internet or contact anyone outside that organization."}}},"post":{"tags":["Data Sets"],"summary":"Create a data set record","description":"Creates a new record in the specified data set.","operationId":"createDataSetRecord","parameters":[{"name":"dataSetId","in":"path","description":"The ID of the Data Set","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateDataSetRowRequest"},"examples":{"Create Data Set row":{"value":{"cells":[{"fieldId":"oLGgapDnduoBoX6ZoZpwFQ","value":"cell 1"},{"fieldId":"lwCmM369rMEBoX6ZoZpxMA","value":"cell 2"}]}}}}},"required":true},"responses":{"201":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateDataSetRowResponse"}}}},"400":{"description":"Invalid value for: body","content":{"text/plain":{"schema":{"type":"string"}}}},"default":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorInfo"}}}}},"security":[{"apiKeyAuth":[]},{"httpAuth":[]}],"x-mcp-tool":{"annotations":{"readOnlyHint":false,"destructiveHint":false,"openWorldHint":false},"justifications":{"read_only_justification":"It creates something new, which is a change of state.","destructive_justification":"It only adds something new. It changes and removes nothing that already exists, and what it creates can be deleted again.","open_world_justification":"It acts only on data in a Process Street organization the signed-in user belongs to, with that user's own permissions there. It does not access the public internet or contact anyone outside that organization."}}}},"/data-sets/{dataSetId}/records/{dataSetRecordId}":{"get":{"tags":["Data Sets"],"summary":"Get a data set record","description":"Returns a data set record by its ID.","operationId":"getDataSetRecord","parameters":[{"name":"dataSetId","in":"path","description":"The ID of the Data Set","required":true,"schema":{"type":"string"}},{"name":"dataSetRecordId","in":"path","description":"The ID of the Data Set Record","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SimplifiedRow"}}}},"default":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorInfo"}}}}},"security":[{"apiKeyAuth":[]},{"httpAuth":[]}],"x-mcp-tool":{"annotations":{"readOnlyHint":true,"destructiveHint":false,"openWorldHint":false},"justifications":{"read_only_justification":"It only reads data and changes nothing.","destructive_justification":"It changes nothing, so it cannot have an irreversible outcome.","open_world_justification":"It acts only on data in a Process Street organization the signed-in user belongs to, with that user's own permissions there. It does not access the public internet or contact anyone outside that organization."}}},"put":{"tags":["Data Sets"],"summary":"Update a data set record","description":"Updates an existing record in a data set.","operationId":"updateDataSetRecord","parameters":[{"name":"dataSetId","in":"path","description":"The ID of the Data Set","required":true,"schema":{"type":"string"}},{"name":"dataSetRecordId","in":"path","description":"The ID of the Data Set Record","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateDataSetRowRequest"},"examples":{"Update Data Set row":{"value":{"cells":[{"fieldId":"o8My3rZ2nKUBoX6ZoatyZg","value":"cell 1"},{"fieldId":"otK69-TmNPMBoX6ZoatzRA","value":"cell 2"}]}}}}},"required":true},"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SimplifiedRow"}}}},"400":{"description":"Invalid value for: body","content":{"text/plain":{"schema":{"type":"string"}}}},"default":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorInfo"}}}}},"security":[{"apiKeyAuth":[]},{"httpAuth":[]}],"x-mcp-tool":{"annotations":{"readOnlyHint":false,"destructiveHint":true,"openWorldHint":false},"justifications":{"read_only_justification":"It changes existing data.","destructive_justification":"It overwrites existing values and does not keep the ones it replaces, so undoing it means knowing what they were.","open_world_justification":"It acts only on data in a Process Street organization the signed-in user belongs to, with that user's own permissions there. It does not access the public internet or contact anyone outside that organization."}}},"delete":{"tags":["Data Sets"],"summary":"Delete a data set record","description":"Deletes a data set record by its ID.","operationId":"deleteDataSetRecord","parameters":[{"name":"dataSetId","in":"path","description":"The ID of the Data Set","required":true,"schema":{"type":"string"}},{"name":"dataSetRecordId","in":"path","description":"The ID of the Data Set Record","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SimplifiedRow"}}}},"default":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorInfo"}}}}},"security":[{"apiKeyAuth":[]},{"httpAuth":[]}],"x-mcp-tool":{"annotations":{"readOnlyHint":false,"destructiveHint":true,"openWorldHint":false},"justifications":{"read_only_justification":"It deletes data.","destructive_justification":"It deletes data, and the public API has no way to restore it.","open_world_justification":"It acts only on data in a Process Street organization the signed-in user belongs to, with that user's own permissions there. It does not access the public internet or contact anyone outside that organization."}}}},"/work/tasks":{"post":{"tags":["One-Off Tasks"],"summary":"Create a one-off task","description":"Creates a new one-off task, optionally linked to a workflow run.","operationId":"createOneOffTask","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateOneOffTaskRequest"},"examples":{"Create a one-off task":{"summary":"Creates a task with two subtasks assigned to a user","value":{"name":"Review contract","description":"Check the terms and conditions","dueDate":"2026-04-01T09:00:00.000Z","required":false,"assigneeEmails":["jane@example.com"],"subtasks":[{"name":"Check terms"},{"name":"Verify dates"}]}}}}},"required":true},"responses":{"201":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicApiOneOffTaskResponse"}}}},"400":{"description":"Invalid value for: body","content":{"text/plain":{"schema":{"type":"string"}}}},"default":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorInfo"}}}}},"security":[{"apiKeyAuth":[]},{"httpAuth":[]}],"x-mcp-tool":{"annotations":{"readOnlyHint":false,"destructiveHint":false,"openWorldHint":false},"justifications":{"read_only_justification":"It creates something new, which is a change of state.","destructive_justification":"It only adds something new. It changes and removes nothing that already exists, and what it creates can be deleted again.","open_world_justification":"It acts only on data in a Process Street organization the signed-in user belongs to, with that user's own permissions there. It does not access the public internet or contact anyone outside that organization."}}}},"/work/tasks/{taskId}":{"get":{"tags":["One-Off Tasks"],"summary":"Get a one-off task","description":"Returns a one-off task by its ID, including assignments and subtasks.","operationId":"getOneOffTask","parameters":[{"name":"taskId","in":"path","description":"The ID of the One-Off Task","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicApiOneOffTaskResponse"}}}},"default":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorInfo"}}}}},"security":[{"apiKeyAuth":[]},{"httpAuth":[]}],"x-mcp-tool":{"annotations":{"readOnlyHint":true,"destructiveHint":false,"openWorldHint":false},"justifications":{"read_only_justification":"It only reads data and changes nothing.","destructive_justification":"It changes nothing, so it cannot have an irreversible outcome.","open_world_justification":"It acts only on data in a Process Street organization the signed-in user belongs to, with that user's own permissions there. It does not access the public internet or contact anyone outside that organization."}}},"put":{"tags":["One-Off Tasks"],"summary":"Update a one-off task","description":"Updates a one-off task. PUT semantics: all fields must be provided. Returns the updated task.","operationId":"updateOneOffTask","parameters":[{"name":"taskId","in":"path","description":"The ID of the One-Off Task","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateOneOffTaskRequest"},"examples":{"Update a one-off task":{"summary":"Update task details, reassign, and modify subtasks","value":{"name":"Review contract","description":"Check the terms and conditions","dueDate":"2026-04-02T09:00:00.000Z","required":true,"assigneeEmails":["jane@example.com","john@example.com"],"subtasks":[{"id":"ofMMXt9K8b0BoX6Zobh9tA","name":"Check terms","status":"Completed"},{"name":"Contact lawyer","status":"NotCompleted"}]}}}}},"required":true},"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicApiOneOffTaskResponse"}}}},"400":{"description":"Invalid value for: body","content":{"text/plain":{"schema":{"type":"string"}}}},"default":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorInfo"}}}}},"security":[{"apiKeyAuth":[]},{"httpAuth":[]}],"x-mcp-tool":{"annotations":{"readOnlyHint":false,"destructiveHint":true,"openWorldHint":false},"justifications":{"read_only_justification":"It changes existing data.","destructive_justification":"It overwrites existing values and does not keep the ones it replaces, so undoing it means knowing what they were.","open_world_justification":"It acts only on data in a Process Street organization the signed-in user belongs to, with that user's own permissions there. It does not access the public internet or contact anyone outside that organization."}}},"delete":{"tags":["One-Off Tasks"],"summary":"Delete a one-off task","description":"Deletes a one-off task permanently.","operationId":"deleteOneOffTask","parameters":[{"name":"taskId","in":"path","description":"The ID of the One-Off Task","required":true,"schema":{"type":"string"}}],"responses":{"204":{"description":""},"default":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorInfo"}}}}},"security":[{"apiKeyAuth":[]},{"httpAuth":[]}],"x-mcp-tool":{"annotations":{"readOnlyHint":false,"destructiveHint":true,"openWorldHint":false},"justifications":{"read_only_justification":"It deletes data.","destructive_justification":"It deletes data, and the public API has no way to restore it.","open_world_justification":"It acts only on data in a Process Street organization the signed-in user belongs to, with that user's own permissions there. It does not access the public internet or contact anyone outside that organization."}}}},"/work/tasks/{taskId}/complete":{"post":{"tags":["One-Off Tasks"],"summary":"Complete a one-off task","description":"Sets the task status to Completed. No-op if already completed. Returns the updated task.","operationId":"completeOneOffTask","parameters":[{"name":"taskId","in":"path","description":"The ID of the One-Off Task","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicApiOneOffTaskResponse"}}}},"default":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorInfo"}}}}},"security":[{"apiKeyAuth":[]},{"httpAuth":[]}],"x-mcp-tool":{"annotations":{"readOnlyHint":false,"destructiveHint":false,"openWorldHint":false},"justifications":{"read_only_justification":"It changes data.","destructive_justification":"uncompleteOneOffTask reopens the task.","open_world_justification":"It acts only on data in a Process Street organization the signed-in user belongs to, with that user's own permissions there. It does not access the public internet or contact anyone outside that organization."}}}},"/work/tasks/{taskId}/uncomplete":{"post":{"tags":["One-Off Tasks"],"summary":"Uncomplete a one-off task","description":"Sets the task status to NotCompleted. No-op if already not completed. Returns the updated task.","operationId":"uncompleteOneOffTask","parameters":[{"name":"taskId","in":"path","description":"The ID of the One-Off Task","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicApiOneOffTaskResponse"}}}},"default":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorInfo"}}}}},"security":[{"apiKeyAuth":[]},{"httpAuth":[]}],"x-mcp-tool":{"annotations":{"readOnlyHint":false,"destructiveHint":false,"openWorldHint":false},"justifications":{"read_only_justification":"It changes data.","destructive_justification":"completeOneOffTask completes the task again.","open_world_justification":"It acts only on data in a Process Street organization the signed-in user belongs to, with that user's own permissions there. It does not access the public internet or contact anyone outside that organization."}}}},"/pages":{"get":{"tags":["Pages"],"summary":"List pages","description":"Returns a paginated list of pages, sorted by name.","operationId":"listPages","parameters":[{"name":"name","in":"query","description":"Filter by page name.","required":false,"schema":{"type":"string"}},{"name":"folderId","in":"query","description":"Filter by folder ID.","required":false,"schema":{"type":"string"}},{"name":"_","in":"query","description":"Opaque pagination cursor. Take this value from the previous response's `links[]` entry whose `name`\nis `\"next\"` (typically just follow that link's `href` instead of reading this value).\nOmit on the first page. If the previous response had no `next` link, there are no more pages.","required":false,"schema":{"type":"string"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicApiPageListResponse"}}}},"default":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorInfo"}}}}},"security":[{"apiKeyAuth":[]},{"httpAuth":[]}],"x-mcp-tool":{"annotations":{"readOnlyHint":true,"destructiveHint":false,"openWorldHint":false},"justifications":{"read_only_justification":"It only reads data and changes nothing.","destructive_justification":"It changes nothing, so it cannot have an irreversible outcome.","open_world_justification":"It acts only on data in a Process Street organization the signed-in user belongs to, with that user's own permissions there. It does not access the public internet or contact anyone outside that organization."}}},"post":{"tags":["Pages"],"summary":"Create a page","description":"Creates a new page in the specified folder.","operationId":"createPage","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreatePageRequest"},"examples":{"Create a page":{"summary":"Creates a page in the specified folder","value":{"name":"Employee Handbook","description":"Company policies and procedures","folderId":"qGS1v2PiHsYBoX6Zobh5Uw","shareLevel":"None","referenceId":"EH"}}}}},"required":true},"responses":{"201":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicApiPageResponse"}}}},"400":{"description":"Invalid value for: body","content":{"text/plain":{"schema":{"type":"string"}}}},"default":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorInfo"}}}}},"security":[{"apiKeyAuth":[]},{"httpAuth":[]}],"x-mcp-tool":{"annotations":{"readOnlyHint":false,"destructiveHint":false,"openWorldHint":true},"justifications":{"read_only_justification":"It creates something new, which is a change of state.","destructive_justification":"It only adds something new. It changes and removes nothing that already exists, and what it creates can be deleted again.","open_world_justification":"It can share the page by link, so that anyone on the internet who has the link can read it without a Process Street account."}}}},"/pages/{pageId}":{"get":{"tags":["Pages"],"summary":"Get a page","description":"Returns a page by its ID.","operationId":"getPage","parameters":[{"name":"pageId","in":"path","description":"The ID of the Page","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicApiPageResponse"}}}},"default":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorInfo"}}}}},"security":[{"apiKeyAuth":[]},{"httpAuth":[]}],"x-mcp-tool":{"annotations":{"readOnlyHint":true,"destructiveHint":false,"openWorldHint":false},"justifications":{"read_only_justification":"It only reads data and changes nothing.","destructive_justification":"It changes nothing, so it cannot have an irreversible outcome.","open_world_justification":"It acts only on data in a Process Street organization the signed-in user belongs to, with that user's own permissions there. It does not access the public internet or contact anyone outside that organization."}}},"put":{"tags":["Pages"],"summary":"Update a page","description":"Updates a page. PUT semantics: all fields must be provided. Returns the updated page.","operationId":"updatePage","parameters":[{"name":"pageId","in":"path","description":"The ID of the Page","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdatePageRequest"},"examples":{"Update a page":{"summary":"Updates a page with new values","value":{"name":"Employee Handbook","description":"Company policies and procedures","folderId":"hqjYIW51KtEBoX6Zobl8eg","shareLevel":"None","referenceId":"EH"}}}}},"required":true},"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicApiPageResponse"}}}},"400":{"description":"Invalid value for: body","content":{"text/plain":{"schema":{"type":"string"}}}},"default":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorInfo"}}}}},"security":[{"apiKeyAuth":[]},{"httpAuth":[]}],"x-mcp-tool":{"annotations":{"readOnlyHint":false,"destructiveHint":true,"openWorldHint":true},"justifications":{"read_only_justification":"It changes existing data.","destructive_justification":"It overwrites existing values and does not keep the ones it replaces, so undoing it means knowing what they were.","open_world_justification":"It can share the page by link, so that anyone on the internet who has the link can read it without a Process Street account."}}},"delete":{"tags":["Pages"],"summary":"Delete a page","description":"Soft deletes a page by its ID.","operationId":"deletePage","parameters":[{"name":"pageId","in":"path","description":"The ID of the Page","required":true,"schema":{"type":"string"}}],"responses":{"204":{"description":""},"default":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorInfo"}}}}},"security":[{"apiKeyAuth":[]},{"httpAuth":[]}],"x-mcp-tool":{"annotations":{"readOnlyHint":false,"destructiveHint":true,"openWorldHint":false},"justifications":{"read_only_justification":"It deletes data.","destructive_justification":"It deletes data, and the public API has no way to restore it.","open_world_justification":"It acts only on data in a Process Street organization the signed-in user belongs to, with that user's own permissions there. It does not access the public internet or contact anyone outside that organization."}}}},"/pages/{pageId}/markdown":{"get":{"tags":["Pages"],"summary":"Export page as Markdown","description":"Returns the content of the latest published page revision as Markdown.","operationId":"getPageMarkdown","parameters":[{"name":"pageId","in":"path","description":"The ID of the Page","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"","headers":{"Content-Type":{"required":true,"schema":{"type":"string"}},"Cache-Control":{"required":true,"schema":{"type":"string"}}},"content":{"text/markdown":{"schema":{"type":"string"}}}},"default":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorInfo"}}}}},"security":[{"apiKeyAuth":[]},{"httpAuth":[]}],"x-mcp-tool":{"annotations":{"readOnlyHint":true,"destructiveHint":false,"openWorldHint":false},"justifications":{"read_only_justification":"It only reads data and changes nothing.","destructive_justification":"It changes nothing, so it cannot have an irreversible outcome.","open_world_justification":"It acts only on data in a Process Street organization the signed-in user belongs to, with that user's own permissions there. It does not access the public internet or contact anyone outside that organization."}}}},"/pages/{pageId}/permissions":{"get":{"tags":["Pages"],"summary":"Get permissions for a page","description":"Returns the complete list of permissions on a page, one entry per user or group. `accessLevel` is `Custom` when the atom combination does not match a predefined level. Groups appear with synthetic `group-<id>@process.st` emails.","operationId":"getPagePermissions","parameters":[{"name":"pageId","in":"path","description":"The ID of the Page","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicApiPagePermissionListResponse"}}}},"default":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorInfo"}}}}},"security":[{"apiKeyAuth":[]},{"httpAuth":[]}],"x-mcp-tool":{"annotations":{"readOnlyHint":true,"destructiveHint":false,"openWorldHint":false},"justifications":{"read_only_justification":"It only reads data and changes nothing.","destructive_justification":"It changes nothing, so it cannot have an irreversible outcome.","open_world_justification":"It acts only on data in a Process Street organization the signed-in user belongs to, with that user's own permissions there. It does not access the public internet or contact anyone outside that organization."}}},"put":{"tags":["Pages"],"summary":"Set permissions for a page","description":"Replaces the full set of permissions for a page. PUT semantics: send the complete list to replace all existing permissions. Send an empty array to remove all user-addressable permissions. Accepts both user emails and group emails (groups appear in other endpoints with synthetic `group-<id>@process.st` emails). Note: only the AllMembers system group is user-addressable; AllAdmins, AllFreeMembers, AllGuests, and AllAnonymous are managed automatically and cannot be set directly. Returns the resulting permissions.","operationId":"updatePagePermissions","parameters":[{"name":"pageId","in":"path","description":"The ID of the Page","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/PagePermissionEntry"}},"examples":{"Replace all permissions":{"summary":"Grant Jane edit access and John view access","value":[{"email":"jane@example.com","accessLevel":"Edit"},{"email":"john@example.com","accessLevel":"View"}]},"Clear all user permissions":{"summary":"Remove all user-addressable permissions (system-managed permits are preserved)","value":[]}}}},"required":false},"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicApiPagePermissionListResponse"}}}},"400":{"description":"Invalid value for: body","content":{"text/plain":{"schema":{"type":"string"}}}},"default":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorInfo"}}}}},"security":[{"apiKeyAuth":[]},{"httpAuth":[]}],"x-mcp-tool":{"annotations":{"readOnlyHint":false,"destructiveHint":true,"openWorldHint":false},"justifications":{"read_only_justification":"It changes existing data.","destructive_justification":"It overwrites existing values and does not keep the ones it replaces, so undoing it means knowing what they were.","open_world_justification":"It acts only on data in a Process Street organization the signed-in user belongs to, with that user's own permissions there. It does not access the public internet or contact anyone outside that organization."}}}},"/pages/{pageId}/duplicate":{"post":{"tags":["Pages"],"summary":"Duplicate a page","description":"Creates a new page as a copy of the source page at a given revision. All body fields are optional — send `{}` to use defaults. `revisionId` defaults to the source page's latest published revision; `name` defaults to `\"Copy of <original>\"`; `folderId` defaults to the source page's folder.","operationId":"duplicatePage","parameters":[{"name":"pageId","in":"path","description":"The ID of the Page","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DuplicatePageRequest"},"examples":{"Custom name and destination":{"summary":"Duplicates the source page's latest published revision into the given folder with a custom name","value":{"name":"Onboarding guide (draft)","folderId":"uVaiE1SfBAcBoX6Zoblw2g"}},"Defaults":{"summary":"Duplicates the source page's latest published revision into the source's folder, named \"Copy of <original>\"","value":{}},"Specific revision":{"summary":"Duplicates a specific revision of the source page","value":{"revisionId":"tRmPWJLZCl0BoX6Zobl8pw"}}}}},"required":true},"responses":{"201":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicApiPageResponse"}}}},"400":{"description":"Invalid value for: body","content":{"text/plain":{"schema":{"type":"string"}}}},"default":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorInfo"}}}}},"security":[{"apiKeyAuth":[]},{"httpAuth":[]}],"x-mcp-tool":{"annotations":{"readOnlyHint":false,"destructiveHint":false,"openWorldHint":false},"justifications":{"read_only_justification":"It creates something new, which is a change of state.","destructive_justification":"It only adds something new. It changes and removes nothing that already exists, and what it creates can be deleted again.","open_world_justification":"It acts only on data in a Process Street organization the signed-in user belongs to, with that user's own permissions there. It does not access the public internet or contact anyone outside that organization."}}}},"/pages/{pageId}/revisions":{"get":{"tags":["Page Revisions"],"summary":"List page revisions","description":"Returns a paginated list of revisions for a page.","operationId":"listPageRevisions","parameters":[{"name":"pageId","in":"path","description":"The ID of the Page","required":true,"schema":{"type":"string"}},{"name":"status","in":"query","description":"Filter by status: Draft, Finished, or Revised.","required":false,"schema":{"type":"string"}},{"name":"_","in":"query","description":"Opaque pagination cursor. Take this value from the previous response's `links[]` entry whose `name`\nis `\"next\"` (typically just follow that link's `href` instead of reading this value).\nOmit on the first page. If the previous response had no `next` link, there are no more pages.","required":false,"schema":{"type":"string"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicApiPageRevisionListResponse"}}}},"default":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorInfo"}}}}},"security":[{"apiKeyAuth":[]},{"httpAuth":[]}],"x-mcp-tool":{"annotations":{"readOnlyHint":true,"destructiveHint":false,"openWorldHint":false},"justifications":{"read_only_justification":"It only reads data and changes nothing.","destructive_justification":"It changes nothing, so it cannot have an irreversible outcome.","open_world_justification":"It acts only on data in a Process Street organization the signed-in user belongs to, with that user's own permissions there. It does not access the public internet or contact anyone outside that organization."}}},"post":{"tags":["Page Revisions"],"summary":"Create a page revision","description":"Creates a new draft revision for a page from its current finished revision. Only one draft can exist at a time.","operationId":"createPageRevision","parameters":[{"name":"pageId","in":"path","description":"The ID of the Page","required":true,"schema":{"type":"string"}}],"responses":{"201":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicApiPageRevisionResponse"}}}},"default":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorInfo"}}}}},"security":[{"apiKeyAuth":[]},{"httpAuth":[]}],"x-mcp-tool":{"annotations":{"readOnlyHint":false,"destructiveHint":false,"openWorldHint":false},"justifications":{"read_only_justification":"It creates something new, which is a change of state.","destructive_justification":"It only adds something new. It changes and removes nothing that already exists, and what it creates can be deleted again.","open_world_justification":"It acts only on data in a Process Street organization the signed-in user belongs to, with that user's own permissions there. It does not access the public internet or contact anyone outside that organization."}}}},"/pages/{pageId}/revisions/{revisionId}":{"get":{"tags":["Page Revisions"],"summary":"Get a page revision","description":"Returns a page revision by its ID.","operationId":"getPageRevision","parameters":[{"name":"pageId","in":"path","description":"The ID of the Page","required":true,"schema":{"type":"string"}},{"name":"revisionId","in":"path","description":"The ID of the Revision","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicApiPageRevisionResponse"}}}},"default":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorInfo"}}}}},"security":[{"apiKeyAuth":[]},{"httpAuth":[]}],"x-mcp-tool":{"annotations":{"readOnlyHint":true,"destructiveHint":false,"openWorldHint":false},"justifications":{"read_only_justification":"It only reads data and changes nothing.","destructive_justification":"It changes nothing, so it cannot have an irreversible outcome.","open_world_justification":"It acts only on data in a Process Street organization the signed-in user belongs to, with that user's own permissions there. It does not access the public internet or contact anyone outside that organization."}}},"put":{"tags":["Page Revisions"],"summary":"Update a page revision","description":"Updates a draft page revision. Only revisions in Draft status can be updated. Returns the updated revision.","operationId":"updatePageRevision","parameters":[{"name":"pageId","in":"path","description":"The ID of the Page","required":true,"schema":{"type":"string"}},{"name":"revisionId","in":"path","description":"The ID of the Revision","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdatePageRevisionRequest"}}},"required":true},"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicApiPageRevisionResponse"}}}},"400":{"description":"Invalid value for: body","content":{"text/plain":{"schema":{"type":"string"}}}},"default":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorInfo"}}}}},"security":[{"apiKeyAuth":[]},{"httpAuth":[]}],"x-mcp-tool":{"annotations":{"readOnlyHint":false,"destructiveHint":true,"openWorldHint":false},"justifications":{"read_only_justification":"It changes existing data.","destructive_justification":"It overwrites existing values and does not keep the ones it replaces, so undoing it means knowing what they were.","open_world_justification":"It acts only on data in a Process Street organization the signed-in user belongs to, with that user's own permissions there. It does not access the public internet or contact anyone outside that organization."}}},"delete":{"tags":["Page Revisions"],"summary":"Delete a page revision","description":"Discards a draft page revision. Only revisions in Draft status can be deleted.","operationId":"deletePageRevision","parameters":[{"name":"pageId","in":"path","description":"The ID of the Page","required":true,"schema":{"type":"string"}},{"name":"revisionId","in":"path","description":"The ID of the Revision","required":true,"schema":{"type":"string"}}],"responses":{"204":{"description":""},"default":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorInfo"}}}}},"security":[{"apiKeyAuth":[]},{"httpAuth":[]}],"x-mcp-tool":{"annotations":{"readOnlyHint":false,"destructiveHint":true,"openWorldHint":false},"justifications":{"read_only_justification":"It deletes data.","destructive_justification":"It deletes data, and the public API has no way to restore it.","open_world_justification":"It acts only on data in a Process Street organization the signed-in user belongs to, with that user's own permissions there. It does not access the public internet or contact anyone outside that organization."}}}},"/pages/{pageId}/revisions/{revisionId}/markdown":{"get":{"tags":["Page Revisions"],"summary":"Export page revision as Markdown","description":"Returns the content of a specific page revision as Markdown.","operationId":"getPageRevisionMarkdown","parameters":[{"name":"pageId","in":"path","description":"The ID of the Page","required":true,"schema":{"type":"string"}},{"name":"revisionId","in":"path","description":"The ID of the Revision","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"","headers":{"Content-Type":{"required":true,"schema":{"type":"string"}},"Cache-Control":{"required":true,"schema":{"type":"string"}}},"content":{"text/markdown":{"schema":{"type":"string"}}}},"default":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorInfo"}}}}},"security":[{"apiKeyAuth":[]},{"httpAuth":[]}],"x-mcp-tool":{"annotations":{"readOnlyHint":true,"destructiveHint":false,"openWorldHint":false},"justifications":{"read_only_justification":"It only reads data and changes nothing.","destructive_justification":"It changes nothing, so it cannot have an irreversible outcome.","open_world_justification":"It acts only on data in a Process Street organization the signed-in user belongs to, with that user's own permissions there. It does not access the public internet or contact anyone outside that organization."}}}},"/pages/{pageId}/revisions/{revisionId}/publish":{"post":{"tags":["Page Revisions"],"summary":"Publish a page revision","description":"Publishes a draft page revision, transitioning it to Finished status. The previously finished revision becomes Revised.","operationId":"publishPageRevision","parameters":[{"name":"pageId","in":"path","description":"The ID of the Page","required":true,"schema":{"type":"string"}},{"name":"revisionId","in":"path","description":"The ID of the Revision","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicApiPageRevisionResponse"}}}},"default":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorInfo"}}}}},"security":[{"apiKeyAuth":[]},{"httpAuth":[]}],"x-mcp-tool":{"annotations":{"readOnlyHint":false,"destructiveHint":true,"openWorldHint":false},"justifications":{"read_only_justification":"It changes existing data.","destructive_justification":"It makes this revision the live version of the page, which its readers see. The public API cannot switch back to the previous version, so undoing it means editing a new draft back by hand.","open_world_justification":"It acts only on data in a Process Street organization the signed-in user belongs to, with that user's own permissions there. It does not access the public internet or contact anyone outside that organization."}}}},"/pages/{pageId}/revisions/{revisionId}/widgets/{widgetId}":{"get":{"tags":["Page Widgets"],"summary":"Get a page widget","description":"Returns a widget by its ID on a page revision.","operationId":"getPageRevisionWidget","parameters":[{"name":"pageId","in":"path","description":"The ID of the Page","required":true,"schema":{"type":"string"}},{"name":"revisionId","in":"path","description":"The ID of the Revision","required":true,"schema":{"type":"string"}},{"name":"widgetId","in":"path","description":"The ID of the Widget","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicApiWidgetResponse"}}}},"default":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorInfo"}}}}},"security":[{"apiKeyAuth":[]},{"httpAuth":[]}],"x-mcp-tool":{"annotations":{"readOnlyHint":true,"destructiveHint":false,"openWorldHint":false},"justifications":{"read_only_justification":"It only reads data and changes nothing.","destructive_justification":"It changes nothing, so it cannot have an irreversible outcome.","open_world_justification":"It acts only on data in a Process Street organization the signed-in user belongs to, with that user's own permissions there. It does not access the public internet or contact anyone outside that organization."}}},"put":{"tags":["Page Widgets"],"summary":"Update a page widget","description":"Updates a widget on a draft page revision. PUT semantics: all mutable fields must be provided.\nReturns the updated widget.","operationId":"updatePageRevisionWidget","parameters":[{"name":"pageId","in":"path","description":"The ID of the Page","required":true,"schema":{"type":"string"}},{"name":"revisionId","in":"path","description":"The ID of the Revision","required":true,"schema":{"type":"string"}},{"name":"widgetId","in":"path","description":"The ID of the Widget","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdatePageWidgetRequest"},"examples":{"Text content widget":{"summary":"Update a text content widget","value":{"hiddenByDefault":false,"content":"## Heading\n\nSome text content.","type":"Text"}},"Image widget":{"summary":"Update an image widget's caption and position","value":{"hiddenByDefault":false,"caption":"Architecture diagram","type":"Image"}},"File widget":{"summary":"Update a file widget's description and position","value":{"hiddenByDefault":false,"description":"Project report","type":"File"}},"Video content widget":{"summary":"Update a video content widget","value":{"hiddenByDefault":false,"description":"Product demo","url":"https://www.youtube.com/watch?v=dQw4w9WgXcQ","type":"Video"}},"Embed widget":{"summary":"Update an embed widget's URL","value":{"hiddenByDefault":false,"url":"https://www.google.com/maps/embed?pb=example","type":"Embed"}},"CrossLink widget":{"summary":"Update a cross-link widget","value":{"hiddenByDefault":false,"type":"CrossLink"}}}}},"required":true},"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicApiWidgetResponse"}}}},"400":{"description":"Invalid value for: body","content":{"text/plain":{"schema":{"type":"string"}}}},"default":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorInfo"}}}}},"security":[{"apiKeyAuth":[]},{"httpAuth":[]}],"x-mcp-tool":{"annotations":{"readOnlyHint":false,"destructiveHint":true,"openWorldHint":false},"justifications":{"read_only_justification":"It changes existing data.","destructive_justification":"It overwrites existing values and does not keep the ones it replaces, so undoing it means knowing what they were.","open_world_justification":"It acts only on data in a Process Street organization the signed-in user belongs to, with that user's own permissions there. It does not access the public internet or contact anyone outside that organization."}}},"delete":{"tags":["Page Widgets"],"summary":"Delete a page widget","description":"Deletes a widget from a draft page revision.","operationId":"deletePageRevisionWidget","parameters":[{"name":"pageId","in":"path","description":"The ID of the Page","required":true,"schema":{"type":"string"}},{"name":"revisionId","in":"path","description":"The ID of the Revision","required":true,"schema":{"type":"string"}},{"name":"widgetId","in":"path","description":"The ID of the Widget","required":true,"schema":{"type":"string"}}],"responses":{"204":{"description":""},"default":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorInfo"}}}}},"security":[{"apiKeyAuth":[]},{"httpAuth":[]}],"x-mcp-tool":{"annotations":{"readOnlyHint":false,"destructiveHint":true,"openWorldHint":false},"justifications":{"read_only_justification":"It deletes data.","destructive_justification":"It deletes data, and the public API has no way to restore it.","open_world_justification":"It acts only on data in a Process Street organization the signed-in user belongs to, with that user's own permissions there. It does not access the public internet or contact anyone outside that organization."}}}},"/pages/{pageId}/revisions/{revisionId}/widgets":{"get":{"tags":["Page Widgets"],"summary":"List page widgets","description":"Returns widgets on a page revision, ordered by position.","operationId":"listPageRevisionWidgets","parameters":[{"name":"pageId","in":"path","description":"The ID of the Page","required":true,"schema":{"type":"string"}},{"name":"revisionId","in":"path","description":"The ID of the Revision","required":true,"schema":{"type":"string"}},{"name":"type","in":"query","description":"Filter by widget type.","required":false,"schema":{"$ref":"#/components/schemas/Type","description":"Widget kind discriminator (pages do not support FormField widgets).\n\n- `Text` — rich text content.\n- `Image` — image content.\n- `File` — downloadable file.\n- `Video` — video content (uploaded or linked).\n- `Embed` — embedded external content via URL.\n- `CrossLink` — link to another workflow or page.\n"}},{"name":"_","in":"query","description":"Opaque pagination cursor. Take this value from the previous response's `links[]` entry whose `name`\nis `\"next\"` (typically just follow that link's `href` instead of reading this value).\nOmit on the first page. If the previous response had no `next` link, there are no more pages.","required":false,"schema":{"type":"string"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicApiWidgetListResponse"}}}},"400":{"description":"Invalid value for: query parameter type","content":{"text/plain":{"schema":{"type":"string"}}}},"default":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorInfo"}}}}},"security":[{"apiKeyAuth":[]},{"httpAuth":[]}],"x-mcp-tool":{"annotations":{"readOnlyHint":true,"destructiveHint":false,"openWorldHint":false},"justifications":{"read_only_justification":"It only reads data and changes nothing.","destructive_justification":"It changes nothing, so it cannot have an irreversible outcome.","open_world_justification":"It acts only on data in a Process Street organization the signed-in user belongs to, with that user's own permissions there. It does not access the public internet or contact anyone outside that organization."}}},"post":{"tags":["Page Widgets"],"summary":"Create a page widget","description":"Creates a widget on a draft page revision.","operationId":"createPageRevisionWidget","parameters":[{"name":"pageId","in":"path","description":"The ID of the Page","required":true,"schema":{"type":"string"}},{"name":"revisionId","in":"path","description":"The ID of the Revision","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreatePageWidgetRequest"},"examples":{"Text content widget":{"summary":"Create a text content widget","value":{"hiddenByDefault":false,"content":"## Heading\n\nSome text content.","type":"Text"}},"Image widget":{"summary":"Create an image widget. The image file is uploaded via a separate endpoint.","value":{"hiddenByDefault":false,"caption":"Architecture diagram","type":"Image"}},"File widget":{"summary":"Create a file widget. The file is uploaded via a separate endpoint.","value":{"hiddenByDefault":false,"description":"Project report","type":"File"}},"Video content widget":{"summary":"Create a video content widget with a YouTube embed","value":{"hiddenByDefault":false,"description":"Product demo","url":"https://www.youtube.com/watch?v=dQw4w9WgXcQ","type":"Video"}},"Video content widget (empty, for upload)":{"summary":"Create an empty video content widget. Upload the video file via the widget upload endpoint.","value":{"hiddenByDefault":false,"description":"Training recording","type":"Video"}},"Embed widget":{"summary":"Create an embed widget that renders a URL in an iframe","value":{"hiddenByDefault":false,"url":"https://www.google.com/maps/embed?pb=example","type":"Embed"}},"CrossLink widget":{"summary":"Create a cross-link widget that links to another workflow or page","value":{"hiddenByDefault":false,"type":"CrossLink"}}}}},"required":true},"responses":{"201":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicApiWidgetResponse"}}}},"400":{"description":"Invalid value for: body","content":{"text/plain":{"schema":{"type":"string"}}}},"default":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorInfo"}}}}},"security":[{"apiKeyAuth":[]},{"httpAuth":[]}],"x-mcp-tool":{"annotations":{"readOnlyHint":false,"destructiveHint":false,"openWorldHint":false},"justifications":{"read_only_justification":"It creates something new, which is a change of state.","destructive_justification":"It only adds something new. It changes and removes nothing that already exists, and what it creates can be deleted again.","open_world_justification":"It acts only on data in a Process Street organization the signed-in user belongs to, with that user's own permissions there. It does not access the public internet or contact anyone outside that organization."}}}},"/pages/{pageId}/revisions/{revisionId}/widgets/{widgetId}/upload":{"post":{"tags":["Page Widgets"],"summary":"Upload a file to a page widget","description":"Uploads a file to an Image or File widget on a draft page revision. Replaces the existing file, if any.\n\nAccepts multipart form data (field `file`) or JSON with base64-encoded content (field `fileBase64`).\nMaximum file size: 20 MB for multipart, 10 MB for base64.\nYou can also send JSON `{ \"fileUploadId\": \"...\" }` to attach a file you uploaded with\n`createFileUpload`; the `fileUploadId` is single-use.\nFor Image widgets, only image/* content types are accepted.","operationId":"uploadPageRevisionWidgetFile","parameters":[{"name":"pageId","in":"path","description":"The ID of the Page","required":true,"schema":{"type":"string"}},{"name":"revisionId","in":"path","description":"The ID of the Revision","required":true,"schema":{"type":"string"}},{"name":"widgetId","in":"path","description":"The ID of the Widget","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"multipart/form-data":{"schema":{"$ref":"#/components/schemas/UploadWidgetFileRequest"}},"application/json":{"schema":{"$ref":"#/components/schemas/UploadWidgetFileRequest"}}},"required":true},"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicApiWidgetResponse"}}}},"400":{"description":"Invalid value","content":{"text/plain":{"schema":{"type":"string"}}}},"default":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorInfo"}}}}},"security":[{"apiKeyAuth":[]},{"httpAuth":[]}],"x-mcp-tool":{"annotations":{"readOnlyHint":false,"destructiveHint":true,"openWorldHint":false},"justifications":{"read_only_justification":"It changes existing data.","destructive_justification":"It replaces the widget's current file, which is not kept. On a widget with no file yet it only adds one.","open_world_justification":"It acts only on data in a Process Street organization the signed-in user belongs to, with that user's own permissions there. It does not access the public internet or contact anyone outside that organization."}}}},"/workflows/{workflowId}/revisions/{revisionId}/logic-rules":{"get":{"tags":["Workflow Logic Rules"],"summary":"List all conditional logic rules","description":"Returns a paginated list of conditional logic rules for a workflow revision, sorted by order tree.","operationId":"listWorkflowRevisionLogicRules","parameters":[{"name":"workflowId","in":"path","description":"The ID of the Workflow","required":true,"schema":{"type":"string"}},{"name":"revisionId","in":"path","description":"The ID of the Revision","required":true,"schema":{"type":"string"}},{"name":"_","in":"query","description":"Opaque pagination cursor. Take this value from the previous response's `links[]` entry whose `name`\nis `\"next\"` (typically just follow that link's `href` instead of reading this value).\nOmit on the first page. If the previous response had no `next` link, there are no more pages.","required":false,"schema":{"type":"string"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicApiLogicRuleListResponse"}}}},"default":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorInfo"}}}}},"security":[{"apiKeyAuth":[]},{"httpAuth":[]}],"x-mcp-tool":{"annotations":{"readOnlyHint":true,"destructiveHint":false,"openWorldHint":false},"justifications":{"read_only_justification":"It only reads data and changes nothing.","destructive_justification":"It changes nothing, so it cannot have an irreversible outcome.","open_world_justification":"It acts only on data in a Process Street organization the signed-in user belongs to, with that user's own permissions there. It does not access the public internet or contact anyone outside that organization."}}},"post":{"tags":["Workflow Logic Rules"],"summary":"Create a conditional logic rule","description":"Creates a conditional logic rule on a draft workflow revision.","operationId":"createWorkflowRevisionLogicRule","parameters":[{"name":"workflowId","in":"path","description":"The ID of the Workflow","required":true,"schema":{"type":"string"}},{"name":"revisionId","in":"path","description":"The ID of the Revision","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateWorkflowLogicRuleRequest"},"examples":{"Simple condition":{"summary":"Show a task when a form field value is Active","value":{"condition":{"or":[{"and":[{"widgetId":"sOL9Dlwm4Q8BoX6Zoft7MA","operator":"Is","value":"Active"}]}]},"action":"Show","targets":{"taskIds":["gGVd2VeKyZwBoX6Zoft9dg"],"widgetIds":[]},"description":"Show task when Status is Active"}}}}},"required":true},"responses":{"201":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicApiLogicRuleResponse"}}}},"400":{"description":"Invalid value for: body","content":{"text/plain":{"schema":{"type":"string"}}}},"default":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorInfo"}}}}},"security":[{"apiKeyAuth":[]},{"httpAuth":[]}],"x-mcp-tool":{"annotations":{"readOnlyHint":false,"destructiveHint":false,"openWorldHint":false},"justifications":{"read_only_justification":"It creates something new, which is a change of state.","destructive_justification":"It only adds something new. It changes and removes nothing that already exists, and what it creates can be deleted again.","open_world_justification":"It acts only on data in a Process Street organization the signed-in user belongs to, with that user's own permissions there. It does not access the public internet or contact anyone outside that organization."}}}},"/workflows/{workflowId}/revisions/{revisionId}/logic-rules/{ruleId}":{"get":{"tags":["Workflow Logic Rules"],"summary":"Get a conditional logic rule","description":"Returns a conditional logic rule by its ID.","operationId":"getWorkflowRevisionLogicRule","parameters":[{"name":"workflowId","in":"path","description":"The ID of the Workflow","required":true,"schema":{"type":"string"}},{"name":"revisionId","in":"path","description":"The ID of the Revision","required":true,"schema":{"type":"string"}},{"name":"ruleId","in":"path","description":"The ID of the Logic Rule","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicApiLogicRuleResponse"}}}},"default":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorInfo"}}}}},"security":[{"apiKeyAuth":[]},{"httpAuth":[]}],"x-mcp-tool":{"annotations":{"readOnlyHint":true,"destructiveHint":false,"openWorldHint":false},"justifications":{"read_only_justification":"It only reads data and changes nothing.","destructive_justification":"It changes nothing, so it cannot have an irreversible outcome.","open_world_justification":"It acts only on data in a Process Street organization the signed-in user belongs to, with that user's own permissions there. It does not access the public internet or contact anyone outside that organization."}}},"put":{"tags":["Workflow Logic Rules"],"summary":"Update a conditional logic rule","description":"Updates a conditional logic rule on a draft workflow revision. PUT semantics: all fields must be provided. Returns the updated rule.","operationId":"updateWorkflowRevisionLogicRule","parameters":[{"name":"workflowId","in":"path","description":"The ID of the Workflow","required":true,"schema":{"type":"string"}},{"name":"revisionId","in":"path","description":"The ID of the Revision","required":true,"schema":{"type":"string"}},{"name":"ruleId","in":"path","description":"The ID of the Logic Rule","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateWorkflowLogicRuleRequest"}}},"required":true},"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicApiLogicRuleResponse"}}}},"400":{"description":"Invalid value for: body","content":{"text/plain":{"schema":{"type":"string"}}}},"default":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorInfo"}}}}},"security":[{"apiKeyAuth":[]},{"httpAuth":[]}],"x-mcp-tool":{"annotations":{"readOnlyHint":false,"destructiveHint":true,"openWorldHint":false},"justifications":{"read_only_justification":"It changes existing data.","destructive_justification":"It overwrites existing values and does not keep the ones it replaces, so undoing it means knowing what they were.","open_world_justification":"It acts only on data in a Process Street organization the signed-in user belongs to, with that user's own permissions there. It does not access the public internet or contact anyone outside that organization."}}},"delete":{"tags":["Workflow Logic Rules"],"summary":"Delete a conditional logic rule","description":"Deletes a conditional logic rule from a draft workflow revision.","operationId":"deleteWorkflowRevisionLogicRule","parameters":[{"name":"workflowId","in":"path","description":"The ID of the Workflow","required":true,"schema":{"type":"string"}},{"name":"revisionId","in":"path","description":"The ID of the Revision","required":true,"schema":{"type":"string"}},{"name":"ruleId","in":"path","description":"The ID of the Logic Rule","required":true,"schema":{"type":"string"}}],"responses":{"204":{"description":""},"default":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorInfo"}}}}},"security":[{"apiKeyAuth":[]},{"httpAuth":[]}],"x-mcp-tool":{"annotations":{"readOnlyHint":false,"destructiveHint":true,"openWorldHint":false},"justifications":{"read_only_justification":"It deletes data.","destructive_justification":"It deletes data, and the public API has no way to restore it.","open_world_justification":"It acts only on data in a Process Street organization the signed-in user belongs to, with that user's own permissions there. It does not access the public internet or contact anyone outside that organization."}}}},"/workflows/{workflowId}/revisions/{revisionId}/tasks":{"get":{"tags":["Workflow Tasks"],"summary":"List workflow tasks","description":"Returns a paginated list of workflow tasks for a workflow revision, ordered by position.","operationId":"listWorkflowRevisionTasks","parameters":[{"name":"workflowId","in":"path","description":"The ID of the Workflow","required":true,"schema":{"type":"string"}},{"name":"revisionId","in":"path","description":"The ID of the Revision","required":true,"schema":{"type":"string"}},{"name":"taskType","in":"query","description":"Filter by task type: Standard, Approval, AI, or Code.","required":false,"schema":{"$ref":"#/components/schemas/TaskType"}},{"name":"_","in":"query","description":"Opaque pagination cursor. Take this value from the previous response's `links[]` entry whose `name`\nis `\"next\"` (typically just follow that link's `href` instead of reading this value).\nOmit on the first page. If the previous response had no `next` link, there are no more pages.","required":false,"schema":{"type":"string"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicApiTaskTemplateListResponse"}}}},"400":{"description":"Invalid value for: query parameter taskType","content":{"text/plain":{"schema":{"type":"string"}}}},"default":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorInfo"}}}}},"security":[{"apiKeyAuth":[]},{"httpAuth":[]}],"x-mcp-tool":{"annotations":{"readOnlyHint":true,"destructiveHint":false,"openWorldHint":false},"justifications":{"read_only_justification":"It only reads data and changes nothing.","destructive_justification":"It changes nothing, so it cannot have an irreversible outcome.","open_world_justification":"It acts only on data in a Process Street organization the signed-in user belongs to, with that user's own permissions there. It does not access the public internet or contact anyone outside that organization."}}},"post":{"tags":["Workflow Tasks"],"summary":"Create a workflow task","description":"Creates a workflow task on a draft workflow revision. AI and Code tasks cannot have due date offsets or stop flags.\nTask names can include merge tag variables (e.g. `{{workflow.name}}`).\nUse the listWorkflowRevisionVariables endpoint to discover available variables.\n\n> 💡 Notes for MCP clients:\n> - Don't prefix task names with numbers (e.g. \"1. \", \"Task 1:\"). The UI already shows a position number next to each task, and task order can change — hard-coded numbers go stale.\n> - Consider adding content widgets to tasks with instructions, context, or guidance for the person running the workflow. Well-explained tasks make processes easier to follow.","operationId":"createWorkflowRevisionTask","parameters":[{"name":"workflowId","in":"path","description":"The ID of the Workflow","required":true,"schema":{"type":"string"}},{"name":"revisionId","in":"path","description":"The ID of the Revision","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateWorkflowTaskRequest"},"examples":{"Standard task":{"summary":"Create a standard task at the bottom of the revision with a 3-day due offset","value":{"name":"Review document","taskType":"Standard","stop":false,"hiddenByDefault":false,"dueOffset":"P3D","position":{"type":"Bottom"}}}}}},"required":true},"responses":{"201":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicApiTaskTemplateResponse"}}}},"400":{"description":"Invalid value for: body","content":{"text/plain":{"schema":{"type":"string"}}}},"default":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorInfo"}}}}},"security":[{"apiKeyAuth":[]},{"httpAuth":[]}],"x-mcp-tool":{"annotations":{"readOnlyHint":false,"destructiveHint":false,"openWorldHint":false},"justifications":{"read_only_justification":"It creates something new, which is a change of state.","destructive_justification":"It only adds something new. It changes and removes nothing that already exists, and what it creates can be deleted again.","open_world_justification":"It acts only on data in a Process Street organization the signed-in user belongs to, with that user's own permissions there. It does not access the public internet or contact anyone outside that organization."}}}},"/workflows/{workflowId}/revisions/{revisionId}/tasks/{taskId}":{"get":{"tags":["Workflow Tasks"],"summary":"Get a workflow task","description":"Returns a workflow task by its ID within a workflow revision.","operationId":"getWorkflowRevisionTask","parameters":[{"name":"workflowId","in":"path","description":"The ID of the Workflow","required":true,"schema":{"type":"string"}},{"name":"revisionId","in":"path","description":"The ID of the Revision","required":true,"schema":{"type":"string"}},{"name":"taskId","in":"path","description":"The ID of the Task","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicApiTaskTemplateResponse"}}}},"default":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorInfo"}}}}},"security":[{"apiKeyAuth":[]},{"httpAuth":[]}],"x-mcp-tool":{"annotations":{"readOnlyHint":true,"destructiveHint":false,"openWorldHint":false},"justifications":{"read_only_justification":"It only reads data and changes nothing.","destructive_justification":"It changes nothing, so it cannot have an irreversible outcome.","open_world_justification":"It acts only on data in a Process Street organization the signed-in user belongs to, with that user's own permissions there. It does not access the public internet or contact anyone outside that organization."}}},"put":{"tags":["Workflow Tasks"],"summary":"Update a workflow task","description":"Updates a workflow task on a draft workflow revision. PUT semantics: all fields must be provided. AI and Code tasks cannot have due date offsets or stop flags.\nTask names can include merge tag variables (e.g. `{{workflow.name}}`).\nUse the listWorkflowRevisionVariables endpoint to discover available variables.\n\n> 💡 Notes for MCP clients:\n> - Don't prefix task names with numbers (e.g. \"1. \", \"Task 1:\"). The UI already shows a position number next to each task, and task order can change — hard-coded numbers go stale.\n> - Consider adding content widgets to tasks with instructions, context, or guidance for the person running the workflow. Well-explained tasks make processes easier to follow.\n\nReturns the updated task.","operationId":"updateWorkflowRevisionTask","parameters":[{"name":"workflowId","in":"path","description":"The ID of the Workflow","required":true,"schema":{"type":"string"}},{"name":"revisionId","in":"path","description":"The ID of the Revision","required":true,"schema":{"type":"string"}},{"name":"taskId","in":"path","description":"The ID of the Task","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateWorkflowTaskRequest"},"examples":{"Update all fields":{"summary":"Sets the task name, flags, due offset, and moves it to the bottom","value":{"name":"Review document","stop":false,"hiddenByDefault":false,"dueOffset":"P3D","position":{"type":"Bottom"}}},"Clear nullable fields":{"summary":"Clears the task name and due offset, and moves it to the top","value":{"stop":false,"hiddenByDefault":false,"position":{"type":"Top"}}}}}},"required":true},"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicApiTaskTemplateResponse"}}}},"400":{"description":"Invalid value for: body","content":{"text/plain":{"schema":{"type":"string"}}}},"default":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorInfo"}}}}},"security":[{"apiKeyAuth":[]},{"httpAuth":[]}],"x-mcp-tool":{"annotations":{"readOnlyHint":false,"destructiveHint":true,"openWorldHint":false},"justifications":{"read_only_justification":"It changes existing data.","destructive_justification":"It overwrites existing values and does not keep the ones it replaces, so undoing it means knowing what they were.","open_world_justification":"It acts only on data in a Process Street organization the signed-in user belongs to, with that user's own permissions there. It does not access the public internet or contact anyone outside that organization."}}},"delete":{"tags":["Workflow Tasks"],"summary":"Delete a workflow task","description":"Deletes a workflow task from a draft workflow revision.","operationId":"deleteWorkflowRevisionTask","parameters":[{"name":"workflowId","in":"path","description":"The ID of the Workflow","required":true,"schema":{"type":"string"}},{"name":"revisionId","in":"path","description":"The ID of the Revision","required":true,"schema":{"type":"string"}},{"name":"taskId","in":"path","description":"The ID of the Task","required":true,"schema":{"type":"string"}}],"responses":{"204":{"description":""},"default":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorInfo"}}}}},"security":[{"apiKeyAuth":[]},{"httpAuth":[]}],"x-mcp-tool":{"annotations":{"readOnlyHint":false,"destructiveHint":true,"openWorldHint":false},"justifications":{"read_only_justification":"It deletes data.","destructive_justification":"It deletes data, and the public API has no way to restore it.","open_world_justification":"It acts only on data in a Process Street organization the signed-in user belongs to, with that user's own permissions there. It does not access the public internet or contact anyone outside that organization."}}}},"/workflows/{workflowId}/revisions/{revisionId}/tasks/{taskId}/permission-rules":{"get":{"tags":["Workflow Tasks"],"summary":"Get task permission rules","description":"Returns the static and dynamic permission rules for a task template on a workflow revision.","operationId":"getWorkflowRevisionTaskPermissionRules","parameters":[{"name":"workflowId","in":"path","description":"The ID of the Workflow","required":true,"schema":{"type":"string"}},{"name":"revisionId","in":"path","description":"The ID of the Revision","required":true,"schema":{"type":"string"}},{"name":"taskId","in":"path","description":"The ID of the Task","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicApiPermissionRuleListResponse"}}}},"default":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorInfo"}}}}},"security":[{"apiKeyAuth":[]},{"httpAuth":[]}],"x-mcp-tool":{"annotations":{"readOnlyHint":true,"destructiveHint":false,"openWorldHint":false},"justifications":{"read_only_justification":"It only reads data and changes nothing.","destructive_justification":"It changes nothing, so it cannot have an irreversible outcome.","open_world_justification":"It acts only on data in a Process Street organization the signed-in user belongs to, with that user's own permissions there. It does not access the public internet or contact anyone outside that organization."}}},"put":{"tags":["Workflow Tasks"],"summary":"Update task permission rules","description":"Replaces the client-configurable permission rules for a task on a draft workflow revision. PUT semantics: send the full list of desired rules to replace all existing ones. Send an empty array to remove all client-configurable rules. Note: system-managed permits (e.g. for all-members groups) are preserved and not affected by this endpoint. Returns the resulting permission rules.","operationId":"updateWorkflowRevisionTaskPermissionRules","parameters":[{"name":"workflowId","in":"path","description":"The ID of the Workflow","required":true,"schema":{"type":"string"}},{"name":"revisionId","in":"path","description":"The ID of the Revision","required":true,"schema":{"type":"string"}},{"name":"taskId","in":"path","description":"The ID of the Task","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/UpdateTaskPermissionRuleRequest"}}}},"required":false},"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicApiPermissionRuleListResponse"}}}},"400":{"description":"Invalid value for: body","content":{"text/plain":{"schema":{"type":"string"}}}},"default":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorInfo"}}}}},"security":[{"apiKeyAuth":[]},{"httpAuth":[]}],"x-mcp-tool":{"annotations":{"readOnlyHint":false,"destructiveHint":true,"openWorldHint":false},"justifications":{"read_only_justification":"It changes existing data.","destructive_justification":"It overwrites existing values and does not keep the ones it replaces, so undoing it means knowing what they were.","open_world_justification":"It acts only on data in a Process Street organization the signed-in user belongs to, with that user's own permissions there. It does not access the public internet or contact anyone outside that organization."}}}},"/workflows/{workflowId}/revisions/{revisionId}/tasks/{taskId}/config":{"get":{"tags":["Workflow Tasks"],"summary":"Get workflow task configuration","description":"Returns the configuration for a workflow task. Shape varies by task type: Approval returns subject task IDs, AI returns prompt and output mapping, Code returns code with input/output mappings. Standard tasks have no configuration (returns 400).","operationId":"getWorkflowRevisionTaskConfig","parameters":[{"name":"workflowId","in":"path","description":"The ID of the Workflow","required":true,"schema":{"type":"string"}},{"name":"revisionId","in":"path","description":"The ID of the Revision","required":true,"schema":{"type":"string"}},{"name":"taskId","in":"path","description":"The ID of the Task","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicApiTaskConfigResponse"},"examples":{"Approval task":{"summary":"Approval task configuration","value":{"data":{"subjectTaskIds":["mN23COkPc3gBoX6ZkVhy0A","i4dku3x6728BoX6ZkVhzkw"],"type":"Approval"},"links":[]}},"AI task":{"summary":"AI task configuration","value":{"data":{"prompt":"Summarize the form field values","systemPrompt":"You are a helpful assistant","outputMapping":{"output":"mN23COkPc3gBoX6ZkVhy0A"},"type":"Ai"},"links":[]}},"Code task":{"summary":"Code task configuration","value":{"data":{"code":"outputData['result'] = String(Number(inputData['value']) * 2); outputData['summary'] = inputData['name'];","inputMapping":{"value":"mN23COkPc3gBoX6ZkVhy0A","name":"i4dku3x6728BoX6ZkVhzkw"},"outputMapping":{"result":"mN23COkPc3gBoX6ZkVhy0A","summary":"i4dku3x6728BoX6ZkVhzkw"},"type":"Code"},"links":[]}}}}}},"default":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorInfo"}}}}},"security":[{"apiKeyAuth":[]},{"httpAuth":[]}],"x-mcp-tool":{"annotations":{"readOnlyHint":true,"destructiveHint":false,"openWorldHint":false},"justifications":{"read_only_justification":"It only reads data and changes nothing.","destructive_justification":"It changes nothing, so it cannot have an irreversible outcome.","open_world_justification":"It acts only on data in a Process Street organization the signed-in user belongs to, with that user's own permissions there. It does not access the public internet or contact anyone outside that organization."}}},"put":{"tags":["Workflow Tasks"],"summary":"Update workflow task configuration","description":"Sets the configuration for a workflow task on a draft revision. PUT semantics: send all fields for the task type; optional fields omitted or set to null are cleared. Standard tasks have no configuration (returns 400). Returns the updated configuration.","operationId":"updateWorkflowRevisionTaskConfig","parameters":[{"name":"workflowId","in":"path","description":"The ID of the Workflow","required":true,"schema":{"type":"string"}},{"name":"revisionId","in":"path","description":"The ID of the Revision","required":true,"schema":{"type":"string"}},{"name":"taskId","in":"path","description":"The ID of the Task","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicApiTaskConfig"},"examples":{"Approval task":{"summary":"Set which tasks this approval gates","value":{"subjectTaskIds":["mN23COkPc3gBoX6ZkVhy0A","i4dku3x6728BoX6ZkVhzkw"],"type":"Approval"}},"AI task":{"summary":"Set the prompt and output mapping for an AI task","value":{"prompt":"Summarize the form field values","systemPrompt":"You are a helpful assistant","outputMapping":{"output":"mN23COkPc3gBoX6ZkVhy0A"},"type":"Ai"}},"Code task":{"summary":"Set the code, input mapping, and output mapping for a code task","value":{"code":"outputData['result'] = String(Number(inputData['value']) * 2); outputData['summary'] = inputData['name'];","inputMapping":{"value":"mN23COkPc3gBoX6ZkVhy0A","name":"i4dku3x6728BoX6ZkVhzkw"},"outputMapping":{"result":"mN23COkPc3gBoX6ZkVhy0A","summary":"i4dku3x6728BoX6ZkVhzkw"},"type":"Code"}}}}},"required":true},"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicApiTaskConfigResponse"},"examples":{"Approval task":{"summary":"Approval task configuration","value":{"data":{"subjectTaskIds":["mN23COkPc3gBoX6ZkVhy0A","i4dku3x6728BoX6ZkVhzkw"],"type":"Approval"},"links":[]}},"AI task":{"summary":"AI task configuration","value":{"data":{"prompt":"Summarize the form field values","systemPrompt":"You are a helpful assistant","outputMapping":{"output":"mN23COkPc3gBoX6ZkVhy0A"},"type":"Ai"},"links":[]}},"Code task":{"summary":"Code task configuration","value":{"data":{"code":"outputData['result'] = String(Number(inputData['value']) * 2); outputData['summary'] = inputData['name'];","inputMapping":{"value":"mN23COkPc3gBoX6ZkVhy0A","name":"i4dku3x6728BoX6ZkVhzkw"},"outputMapping":{"result":"mN23COkPc3gBoX6ZkVhy0A","summary":"i4dku3x6728BoX6ZkVhzkw"},"type":"Code"},"links":[]}}}}}},"400":{"description":"Invalid value for: body","content":{"text/plain":{"schema":{"type":"string"}}}},"default":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorInfo"}}}}},"security":[{"apiKeyAuth":[]},{"httpAuth":[]}],"x-mcp-tool":{"annotations":{"readOnlyHint":false,"destructiveHint":true,"openWorldHint":false},"justifications":{"read_only_justification":"It changes existing data.","destructive_justification":"It overwrites existing values and does not keep the ones it replaces, so undoing it means knowing what they were.","open_world_justification":"It acts only on data in a Process Street organization the signed-in user belongs to, with that user's own permissions there. It does not access the public internet or contact anyone outside that organization."}}}},"/workflows/{workflowId}/incoming-webhooks":{"get":{"tags":["Workflow Incoming Webhooks"],"summary":"List incoming webhooks","description":"Returns all non-deleted incoming webhooks for a workflow, including disabled ones.","operationId":"listWorkflowIncomingWebhooks","parameters":[{"name":"workflowId","in":"path","description":"The ID of the Workflow","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicApiIncomingWebhookListResponse"}}}},"default":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorInfo"}}}}},"security":[{"apiKeyAuth":[]},{"httpAuth":[]}],"x-mcp-tool":{"annotations":{"readOnlyHint":true,"destructiveHint":false,"openWorldHint":false},"justifications":{"read_only_justification":"It only reads data and changes nothing.","destructive_justification":"It changes nothing, so it cannot have an irreversible outcome.","open_world_justification":"It acts only on data in a Process Street organization the signed-in user belongs to, with that user's own permissions there. It does not access the public internet or contact anyone outside that organization."}}},"post":{"tags":["Workflow Incoming Webhooks"],"summary":"Create an incoming webhook","description":"Creates an incoming webhook for a workflow. When the webhook URL receives a JSON payload,\nit creates a workflow run and populates it using the configured mappings.\n\n**config.properties** maps workflow run properties to JSON paths in the incoming payload:\n- `Name` — run name (string)\n- `DueDate` — due date (ISO 8601 date string)\n- `Shared` — whether the run is shared (boolean)\n- `Assignees` — assignee email addresses (string or array of strings)\n- `Runner` — runner email address (string)\n\n**config.formFields** maps form field widget IDs to JSON paths for populating form field values\non the created run. Keys are widget IDs (Muid), values are JSON path expressions (e.g. `$.user.name`).","operationId":"createWorkflowIncomingWebhook","parameters":[{"name":"workflowId","in":"path","description":"The ID of the Workflow","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateWorkflowIncomingWebhookRequest"},"examples":{"Full config":{"summary":"Webhook with run properties and form field mappings","value":{"name":"New Employee Onboarding","automationApp":"Zapier","config":{"properties":{"Name":"$.employee.name","DueDate":"$.employee.start_date","Assignees":"$.employee.manager_email"},"formFields":{"gcWPxsRjNNTeZqaTsBpLhg":"$.employee.department","ocsAkBEFkTih7YpuSfJEnw":"$.employee.role"}}}},"Minimal":{"summary":"Webhook with no mappings — creates a blank workflow run","value":{"name":"Simple trigger","automationApp":"Custom","config":{}}}}}},"required":true},"responses":{"201":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicApiIncomingWebhookResponse"}}}},"400":{"description":"Invalid value for: body","content":{"text/plain":{"schema":{"type":"string"}}}},"default":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorInfo"}}}}},"security":[{"apiKeyAuth":[]},{"httpAuth":[]}],"x-mcp-tool":{"annotations":{"readOnlyHint":false,"destructiveHint":false,"openWorldHint":true},"justifications":{"read_only_justification":"It creates something new, which is a change of state.","destructive_justification":"It only adds something new. It changes and removes nothing that already exists, and what it creates can be deleted again.","open_world_justification":"It creates a URL that anyone on the internet who has it can call to start runs of the workflow."}}}},"/workflows/{workflowId}/incoming-webhooks/{webhookId}":{"get":{"tags":["Workflow Incoming Webhooks"],"summary":"Get an incoming webhook","description":"Returns an incoming webhook by its ID for a workflow.","operationId":"getWorkflowIncomingWebhook","parameters":[{"name":"workflowId","in":"path","description":"The ID of the Workflow","required":true,"schema":{"type":"string"}},{"name":"webhookId","in":"path","description":"The ID of the Webhook","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicApiIncomingWebhookResponse"}}}},"default":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorInfo"}}}}},"security":[{"apiKeyAuth":[]},{"httpAuth":[]}],"x-mcp-tool":{"annotations":{"readOnlyHint":true,"destructiveHint":false,"openWorldHint":false},"justifications":{"read_only_justification":"It only reads data and changes nothing.","destructive_justification":"It changes nothing, so it cannot have an irreversible outcome.","open_world_justification":"It acts only on data in a Process Street organization the signed-in user belongs to, with that user's own permissions there. It does not access the public internet or contact anyone outside that organization."}}},"put":{"tags":["Workflow Incoming Webhooks"],"summary":"Update an incoming webhook","description":"Updates an incoming webhook for a workflow. PUT semantics: all fields must be provided. Returns the updated webhook.\n\nSee the create endpoint for details on `config.properties` and `config.formFields`.","operationId":"updateWorkflowIncomingWebhook","parameters":[{"name":"workflowId","in":"path","description":"The ID of the Workflow","required":true,"schema":{"type":"string"}},{"name":"webhookId","in":"path","description":"The ID of the Webhook","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateWorkflowIncomingWebhookRequest"},"examples":{"Update with active status":{"summary":"Update webhook mappings while keeping it active","value":{"name":"New Employee Onboarding (v2)","automationApp":"Zapier","status":"Active","config":{"properties":{"Name":"$.employee.full_name","DueDate":"$.employee.start_date","Assignees":"$.employee.manager_email"},"formFields":{"gcWPxsRjNNTeZqaTsBpLhg":"$.employee.department","ocsAkBEFkTih7YpuSfJEnw":"$.employee.role"}}}},"Disable webhook":{"summary":"Disable a webhook to stop processing incoming payloads","value":{"name":"Paused webhook","automationApp":"Custom","status":"Disabled","config":{}}}}}},"required":true},"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicApiIncomingWebhookResponse"}}}},"400":{"description":"Invalid value for: body","content":{"text/plain":{"schema":{"type":"string"}}}},"default":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorInfo"}}}}},"security":[{"apiKeyAuth":[]},{"httpAuth":[]}],"x-mcp-tool":{"annotations":{"readOnlyHint":false,"destructiveHint":true,"openWorldHint":true},"justifications":{"read_only_justification":"It changes existing data.","destructive_justification":"It overwrites existing values and does not keep the ones it replaces, so undoing it means knowing what they were.","open_world_justification":"It configures a URL that anyone on the internet who has it can call to start runs of the workflow, and can re-enable a disabled one."}}},"delete":{"tags":["Workflow Incoming Webhooks"],"summary":"Delete an incoming webhook","description":"Soft-deletes an incoming webhook for a workflow. Subsequent GET requests will return 404.","operationId":"deleteWorkflowIncomingWebhook","parameters":[{"name":"workflowId","in":"path","description":"The ID of the Workflow","required":true,"schema":{"type":"string"}},{"name":"webhookId","in":"path","description":"The ID of the Webhook","required":true,"schema":{"type":"string"}}],"responses":{"204":{"description":""},"default":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorInfo"}}}}},"security":[{"apiKeyAuth":[]},{"httpAuth":[]}],"x-mcp-tool":{"annotations":{"readOnlyHint":false,"destructiveHint":true,"openWorldHint":false},"justifications":{"read_only_justification":"It deletes data.","destructive_justification":"It deletes data, and the public API has no way to restore it.","open_world_justification":"It acts only on data in a Process Street organization the signed-in user belongs to, with that user's own permissions there. It does not access the public internet or contact anyone outside that organization."}}}},"/workflows/{workflowId}/revisions/{revisionId}/tasks/{taskId}/assignment-rules":{"get":{"tags":["Workflow Task Assignment Rules"],"summary":"Get task assignment rules","description":"Returns the assignment rules for a task on a workflow revision. Each rule has a `type` discriminator: `Static` includes the assignee's `email`; `Dynamic` includes a `sourceType` (one of `ChecklistInitiator`, `FormField`, `DocumentOwner`, `DocumentAuthor`), and when `sourceType` is `FormField`, also a `sourceWidgetId` pointing to a Members or Email form field widget in the same revision.","operationId":"getWorkflowRevisionTaskAssignmentRules","parameters":[{"name":"workflowId","in":"path","description":"The ID of the Workflow","required":true,"schema":{"type":"string"}},{"name":"revisionId","in":"path","description":"The ID of the Revision","required":true,"schema":{"type":"string"}},{"name":"taskId","in":"path","description":"The ID of the Task","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicApiAssignmentRuleListResponse"}}}},"default":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorInfo"}}}}},"security":[{"apiKeyAuth":[]},{"httpAuth":[]}],"x-mcp-tool":{"annotations":{"readOnlyHint":true,"destructiveHint":false,"openWorldHint":false},"justifications":{"read_only_justification":"It only reads data and changes nothing.","destructive_justification":"It changes nothing, so it cannot have an irreversible outcome.","open_world_justification":"It acts only on data in a Process Street organization the signed-in user belongs to, with that user's own permissions there. It does not access the public internet or contact anyone outside that organization."}}},"put":{"tags":["Workflow Task Assignment Rules"],"summary":"Update task assignment rules","description":"Replaces the assignment rules for a task on a draft workflow revision. PUT semantics: send the full list of desired rules to replace all existing ones; send an empty array to remove all assignments. Each rule has a `type` discriminator: `Static` requires an `email`; `Dynamic` requires a `sourceType` (one of `ChecklistInitiator`, `FormField`, `DocumentOwner`, `DocumentAuthor`), and when `sourceType` is `FormField`, also a `sourceWidgetId` pointing to a Members or Email form field widget in the same revision. Returns the resulting assignment rules.","operationId":"updateWorkflowRevisionTaskAssignmentRules","parameters":[{"name":"workflowId","in":"path","description":"The ID of the Workflow","required":true,"schema":{"type":"string"}},{"name":"revisionId","in":"path","description":"The ID of the Revision","required":true,"schema":{"type":"string"}},{"name":"taskId","in":"path","description":"The ID of the Task","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/UpdateTaskAssignmentRuleRequest"}}}},"required":false},"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicApiAssignmentRuleListResponse"}}}},"400":{"description":"Invalid value for: body","content":{"text/plain":{"schema":{"type":"string"}}}},"default":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorInfo"}}}}},"security":[{"apiKeyAuth":[]},{"httpAuth":[]}],"x-mcp-tool":{"annotations":{"readOnlyHint":false,"destructiveHint":true,"openWorldHint":false},"justifications":{"read_only_justification":"It changes existing data.","destructive_justification":"It overwrites existing values and does not keep the ones it replaces, so undoing it means knowing what they were.","open_world_justification":"It acts only on data in a Process Street organization the signed-in user belongs to, with that user's own permissions there. It does not access the public internet or contact anyone outside that organization."}}}},"/workflows/{workflowId}/revisions/{revisionId}/tasks/{taskId}/widgets":{"get":{"tags":["Workflow Widgets"],"summary":"List widgets","description":"Returns widgets for a task on a workflow revision, ordered by position.","operationId":"listWorkflowRevisionTaskWidgets","parameters":[{"name":"workflowId","in":"path","description":"The ID of the Workflow","required":true,"schema":{"type":"string"}},{"name":"revisionId","in":"path","description":"The ID of the Revision","required":true,"schema":{"type":"string"}},{"name":"taskId","in":"path","description":"The ID of the Task","required":true,"schema":{"type":"string"}},{"name":"type","in":"query","description":"Filter by widget type.","required":false,"schema":{"$ref":"#/components/schemas/Type","description":"Widget kind discriminator.\n\n- `FormField` — collects user input (Text, Number, Date, etc.).\n- `Text` — rich text content displayed on the task.\n- `Image` — image content displayed on the task.\n- `File` — downloadable file attached to the task.\n- `Video` — video content (uploaded or linked from a hosting service).\n- `Embed` — embedded external content via URL.\n- `CrossLink` — link to another workflow or page.\n"}},{"name":"_","in":"query","description":"Opaque pagination cursor. Take this value from the previous response's `links[]` entry whose `name`\nis `\"next\"` (typically just follow that link's `href` instead of reading this value).\nOmit on the first page. If the previous response had no `next` link, there are no more pages.","required":false,"schema":{"type":"string"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicApiWidgetListResponse"}}}},"400":{"description":"Invalid value for: query parameter type","content":{"text/plain":{"schema":{"type":"string"}}}},"default":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorInfo"}}}}},"security":[{"apiKeyAuth":[]},{"httpAuth":[]}],"x-mcp-tool":{"annotations":{"readOnlyHint":true,"destructiveHint":false,"openWorldHint":false},"justifications":{"read_only_justification":"It only reads data and changes nothing.","destructive_justification":"It changes nothing, so it cannot have an irreversible outcome.","open_world_justification":"It acts only on data in a Process Street organization the signed-in user belongs to, with that user's own permissions there. It does not access the public internet or contact anyone outside that organization."}}},"post":{"tags":["Workflow Widgets"],"summary":"Create a widget","description":"Creates a widget on a task within a draft workflow revision.\nText content can include merge tag variables (e.g. `{{workflow.name}}`).\nUse the listWorkflowRevisionVariables endpoint to discover available variables.","operationId":"createWorkflowRevisionTaskWidget","parameters":[{"name":"workflowId","in":"path","description":"The ID of the Workflow","required":true,"schema":{"type":"string"}},{"name":"revisionId","in":"path","description":"The ID of the Revision","required":true,"schema":{"type":"string"}},{"name":"taskId","in":"path","description":"The ID of the Task","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateWorkflowWidgetRequest"},"examples":{"Text form field":{"summary":"Create a Text form field widget","value":{"label":"Customer Name","config":{"placeholder":"Enter name..."},"constraints":{"min":1,"max":100},"fieldType":"Text","type":"FormField"}},"Textarea form field":{"summary":"Create a Textarea form field widget","value":{"label":"Description","fieldType":"Textarea","type":"FormField"}},"Email form field":{"summary":"Create a Email form field widget","value":{"label":"Contact Email","fieldType":"Email","type":"FormField"}},"Number form field":{"summary":"Create a Number form field widget","value":{"label":"Quantity","fieldType":"Number","type":"FormField"}},"URL form field":{"summary":"Create a URL form field widget","value":{"label":"Website","fieldType":"Url","type":"FormField"}},"Hidden form field":{"summary":"Create a Hidden form field widget","value":{"hiddenByDefault":true,"label":"Internal ID","fieldType":"Hidden","type":"FormField"}},"MultiFile form field":{"summary":"Create a MultiFile form field widget","value":{"label":"Attachments","fieldType":"MultiFile","type":"FormField"}},"Select form field":{"summary":"Create a Select form field widget","value":{"label":"Status","fieldType":"Select","type":"FormField"}},"MultiChoice form field":{"summary":"Create a MultiChoice form field widget","value":{"label":"Options","fieldType":"MultiChoice","type":"FormField"}},"MultiSelect form field":{"summary":"Create a MultiSelect form field widget","value":{"label":"Subtasks","fieldType":"MultiSelect","type":"FormField"}},"Date form field":{"summary":"Create a Date form field widget","value":{"label":"Due Date","fieldType":"Date","type":"FormField"}},"Members form field":{"summary":"Create a Members form field widget","value":{"label":"Assignee","fieldType":"Members","type":"FormField"}},"Document form field":{"summary":"Create a Document form field widget","value":{"label":"Contract","fieldType":"Document","type":"FormField"}},"Table form field":{"summary":"Create a Table form field widget","value":{"label":"Inventory","fieldType":"Table","type":"FormField"}},"Snippet form field":{"summary":"Create a Snippet form field widget","value":{"label":"Reusable Snippet","fieldType":"Snippet","type":"FormField"}},"SendRichEmail form field":{"summary":"Create a SendRichEmail form field widget","value":{"label":"Notification Email","fieldType":"SendRichEmail","type":"FormField"}},"Text content widget":{"summary":"Create a text content widget","value":{"hiddenByDefault":false,"content":"## Heading\n\nSome text content.","type":"Text"}},"Image widget":{"summary":"Create an image widget. The file is uploaded via a separate endpoint.","value":{"hiddenByDefault":false,"caption":"Architecture diagram","type":"Image"}},"File widget":{"summary":"Create a file widget. The file is uploaded via a separate endpoint.","value":{"hiddenByDefault":false,"description":"Project report","type":"File"}},"Video content widget":{"summary":"Create a video content widget with a YouTube embed","value":{"hiddenByDefault":false,"description":"Product demo","url":"https://www.youtube.com/watch?v=dQw4w9WgXcQ","type":"Video"}},"Video content widget (empty, for upload)":{"summary":"Create an empty video content widget. Upload the video file via the widget upload endpoint.","value":{"hiddenByDefault":false,"description":"Training recording","type":"Video"}},"Embed widget":{"summary":"Create an embed widget that renders a URL in an iframe","value":{"hiddenByDefault":false,"url":"https://www.google.com/maps/embed?pb=example","type":"Embed"}},"CrossLink widget":{"summary":"Create a cross-link widget that links to another workflow or page","value":{"hiddenByDefault":false,"type":"CrossLink"}}}}},"required":true},"responses":{"201":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicApiWidgetResponse"}}}},"400":{"description":"Invalid value for: body","content":{"text/plain":{"schema":{"type":"string"}}}},"default":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorInfo"}}}}},"security":[{"apiKeyAuth":[]},{"httpAuth":[]}],"x-mcp-tool":{"annotations":{"readOnlyHint":false,"destructiveHint":false,"openWorldHint":false},"justifications":{"read_only_justification":"It creates something new, which is a change of state.","destructive_justification":"It only adds something new. It changes and removes nothing that already exists, and what it creates can be deleted again.","open_world_justification":"It acts only on data in a Process Street organization the signed-in user belongs to, with that user's own permissions there. It does not access the public internet or contact anyone outside that organization."}}}},"/workflows/{workflowId}/revisions/{revisionId}/tasks/{taskId}/widgets/{widgetId}":{"get":{"tags":["Workflow Widgets"],"summary":"Get a widget","description":"Returns a widget by its ID within a workflow revision task.","operationId":"getWorkflowRevisionTaskWidget","parameters":[{"name":"workflowId","in":"path","description":"The ID of the Workflow","required":true,"schema":{"type":"string"}},{"name":"revisionId","in":"path","description":"The ID of the Revision","required":true,"schema":{"type":"string"}},{"name":"taskId","in":"path","description":"The ID of the Task","required":true,"schema":{"type":"string"}},{"name":"widgetId","in":"path","description":"The ID of the Widget","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicApiWidgetResponse"}}}},"default":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorInfo"}}}}},"security":[{"apiKeyAuth":[]},{"httpAuth":[]}],"x-mcp-tool":{"annotations":{"readOnlyHint":true,"destructiveHint":false,"openWorldHint":false},"justifications":{"read_only_justification":"It only reads data and changes nothing.","destructive_justification":"It changes nothing, so it cannot have an irreversible outcome.","open_world_justification":"It acts only on data in a Process Street organization the signed-in user belongs to, with that user's own permissions there. It does not access the public internet or contact anyone outside that organization."}}},"put":{"tags":["Workflow Widgets"],"summary":"Update a widget","description":"Updates a widget on a task within a draft workflow revision. PUT semantics: all mutable fields must be provided.\nEach field type has different config and constraints — refer to the request examples for the specific shape per type.\nText content can include merge tag variables (e.g. `{{workflow.name}}`).\nUse the listWorkflowRevisionVariables endpoint to discover available variables.\nReturns the updated widget.","operationId":"updateWorkflowRevisionTaskWidget","parameters":[{"name":"workflowId","in":"path","description":"The ID of the Workflow","required":true,"schema":{"type":"string"}},{"name":"revisionId","in":"path","description":"The ID of the Revision","required":true,"schema":{"type":"string"}},{"name":"taskId","in":"path","description":"The ID of the Task","required":true,"schema":{"type":"string"}},{"name":"widgetId","in":"path","description":"The ID of the Widget","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateWidgetRequest"},"examples":{"Text form field":{"summary":"Update a text form field widget","value":{"hiddenByDefault":false,"position":{"type":"After","widgetId":"psGMFl3MiSMBoX6ZlpJwFw"},"label":"Customer Name","required":true,"config":{"placeholder":"Enter name...","defaultValue":"John"},"constraints":{"min":1,"max":100},"fieldType":"Text","type":"FormField"}},"Textarea form field":{"summary":"Update a textarea form field widget","value":{"hiddenByDefault":false,"label":"Description","required":false,"config":{"placeholder":"Enter description...","defaultValue":"","format":"RichText"},"constraints":{"min":1,"max":500},"fieldType":"Textarea","type":"FormField"}},"Email form field":{"summary":"Update an email form field widget","value":{"hiddenByDefault":false,"label":"Contact Email","required":true,"config":{"placeholder":"Enter email...","defaultValue":""},"constraints":{"domains":["company.com"],"restriction":"Allow"},"fieldType":"Email","type":"FormField"}},"Number form field":{"summary":"Update a number form field widget","value":{"hiddenByDefault":false,"label":"Quantity","required":true,"config":{"placeholder":"Enter number...","defaultValue":"0","unit":"kg","unitLocation":"suffix"},"constraints":{"minDigits":1,"maxDigits":5,"minValue":0,"maxValue":1000,"decimalPlaces":2,"allowNegative":false},"fieldType":"Number","type":"FormField"}},"URL form field":{"summary":"Update a URL form field widget","value":{"hiddenByDefault":false,"label":"Website","required":false,"config":{"defaultValue":"https://example.com"},"fieldType":"Url","type":"FormField"}},"Hidden form field":{"summary":"Update a hidden form field widget","value":{"hiddenByDefault":true,"label":"Internal ID","required":false,"config":{"defaultValue":"default-value"},"fieldType":"Hidden","type":"FormField"}},"File form field":{"summary":"Update a (legacy) file form field widget","value":{"hiddenByDefault":false,"label":"Attachment","required":true,"config":{"placeholder":"Upload a file...","extractTextContent":false},"constraints":{"extensions":[".pdf",".docx"]},"fieldType":"File","type":"FormField"}},"MultiFile form field":{"summary":"Update a multi-file form field widget","value":{"hiddenByDefault":false,"label":"Attachments","required":true,"config":{"placeholder":"Upload files...","extractTextContent":true},"constraints":{"extensions":[".pdf",".docx"],"mode":"Multiple"},"fieldType":"MultiFile","type":"FormField"}},"Select form field":{"summary":"Update a select (dropdown) form field widget","value":{"hiddenByDefault":false,"label":"Status","required":false,"config":{"items":[{"id":"q2BdoLnHeO8BoX6Zlp1wUg","name":"Option 1"},{"id":"o9vE9f5tHJEBoX6Zlp19dQ","name":"Option 2"},{"id":"qiofoq--pDIBoX6Zlp134w","name":"Option 3"}]},"fieldType":"Select","type":"FormField"}},"MultiChoice form field":{"summary":"Update a multi-choice form field widget","value":{"hiddenByDefault":false,"label":"Options","required":false,"config":{"items":[{"id":"uLgjfJmFLGwBoX6Zlp51Sg","name":"Choice A"},{"id":"t5ESOO_T8JoBoX6Zlp59Wg","name":"Choice B"},{"id":"kmaFVocd1S8BoX6Zlp54Dw","name":"Choice C"}]},"fieldType":"MultiChoice","type":"FormField"}},"MultiSelect form field":{"summary":"Update a multi-select (subtasks) form field widget","value":{"hiddenByDefault":false,"label":"Subtasks","required":false,"config":{"items":[{"id":"r7_-y20fDVIBoX6Zlp9y9g","name":"Task 1"},{"id":"hInuFEJPHJIBoX6Zlp9wJA","name":"Task 2"},{"id":"qcjIsWTCyVgBoX6Zlp94BA","name":"Task 3"}]},"fieldType":"MultiSelect","type":"FormField"}},"Date form field":{"summary":"Update a date form field widget","value":{"hiddenByDefault":false,"label":"Due Date","required":false,"config":{"timeOption":"Included"},"constraints":{},"fieldType":"Date","type":"FormField"}},"Members form field":{"summary":"Update a members form field widget","value":{"hiddenByDefault":false,"label":"Assignee","required":false,"config":{},"fieldType":"Members","type":"FormField"}},"Document form field":{"summary":"Update a document form field widget","value":{"hiddenByDefault":false,"label":"Contract","required":false,"config":{"reviewRequest":true,"defaultValue":"{{document_review.document.id}}"},"fieldType":"Document","type":"FormField"}},"Table form field":{"summary":"Update a table form field widget","value":{"hiddenByDefault":false,"label":"Inventory","required":false,"config":{"columnDefs":[{"id":"i8vU3wRE_98BoX6ZlqJ3hw","name":"Name","columnType":"Text"},{"id":"lFYmci07fMIBoX6ZlqN9GQ","name":"Quantity","columnType":"Number"}]},"fieldType":"Table","type":"FormField"}},"Snippet form field":{"summary":"Update a snippet form field widget","value":{"hiddenByDefault":false,"label":"Reusable Snippet","required":false,"config":{"value":"This is reusable text content."},"fieldType":"Snippet","type":"FormField"}},"SendRichEmail form field":{"summary":"Update a send rich email form field widget","value":{"hiddenByDefault":false,"label":"Notification Email","required":false,"config":{"to":["recipient@example.com"],"subject":"Task completed","body":"<p>The task has been completed.</p>","bodyEditor":"RichText","editAllowed":true},"fieldType":"SendRichEmail","type":"FormField"}},"Text content widget":{"summary":"Update a text content widget","value":{"hiddenByDefault":false,"content":"## Heading\n\nSome text content.","type":"Text"}},"Image widget":{"summary":"Update an image widget's caption and position","value":{"hiddenByDefault":false,"caption":"Architecture diagram","type":"Image"}},"File widget":{"summary":"Update a file widget's description and position","value":{"hiddenByDefault":false,"description":"Project report","type":"File"}},"Video content widget":{"summary":"Update a video content widget","value":{"hiddenByDefault":false,"description":"Product demo","url":"https://www.youtube.com/watch?v=dQw4w9WgXcQ","type":"Video"}},"Embed widget":{"summary":"Update an embed widget's URL","value":{"hiddenByDefault":false,"url":"https://www.google.com/maps/embed?pb=example","type":"Embed"}},"CrossLink widget":{"summary":"Update a cross-link widget","value":{"hiddenByDefault":false,"type":"CrossLink"}}}}},"required":true},"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicApiWidgetResponse"}}}},"400":{"description":"Invalid value for: body","content":{"text/plain":{"schema":{"type":"string"}}}},"default":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorInfo"}}}}},"security":[{"apiKeyAuth":[]},{"httpAuth":[]}],"x-mcp-tool":{"annotations":{"readOnlyHint":false,"destructiveHint":true,"openWorldHint":false},"justifications":{"read_only_justification":"It changes existing data.","destructive_justification":"It overwrites existing values and does not keep the ones it replaces, so undoing it means knowing what they were.","open_world_justification":"It acts only on data in a Process Street organization the signed-in user belongs to, with that user's own permissions there. It does not access the public internet or contact anyone outside that organization."}}},"delete":{"tags":["Workflow Widgets"],"summary":"Delete a widget","description":"Deletes a widget from a task within a draft workflow revision.","operationId":"deleteWorkflowRevisionTaskWidget","parameters":[{"name":"workflowId","in":"path","description":"The ID of the Workflow","required":true,"schema":{"type":"string"}},{"name":"revisionId","in":"path","description":"The ID of the Revision","required":true,"schema":{"type":"string"}},{"name":"taskId","in":"path","description":"The ID of the Task","required":true,"schema":{"type":"string"}},{"name":"widgetId","in":"path","description":"The ID of the Widget","required":true,"schema":{"type":"string"}}],"responses":{"204":{"description":""},"default":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorInfo"}}}}},"security":[{"apiKeyAuth":[]},{"httpAuth":[]}],"x-mcp-tool":{"annotations":{"readOnlyHint":false,"destructiveHint":true,"openWorldHint":false},"justifications":{"read_only_justification":"It deletes data.","destructive_justification":"It deletes data, and the public API has no way to restore it.","open_world_justification":"It acts only on data in a Process Street organization the signed-in user belongs to, with that user's own permissions there. It does not access the public internet or contact anyone outside that organization."}}}},"/workflows/{workflowId}/revisions/{revisionId}/tasks/{taskId}/widgets/{widgetId}/upload":{"post":{"tags":["Workflow Widgets"],"summary":"Upload a file to a widget","description":"Uploads a file to an Image or File widget on a task within a draft workflow revision. Replaces the existing file, if any.\n\nAccepts multipart form data (field `file`) or JSON with base64-encoded content (field `fileBase64`).\nMaximum file size: 20 MB for multipart, 10 MB for base64.\nYou can also send JSON `{ \"fileUploadId\": \"...\" }` to attach a file you uploaded with\n`createFileUpload`; the `fileUploadId` is single-use.\nFor Image widgets, only image/* content types are accepted.","operationId":"uploadWorkflowRevisionTaskWidgetFile","parameters":[{"name":"workflowId","in":"path","description":"The ID of the Workflow","required":true,"schema":{"type":"string"}},{"name":"revisionId","in":"path","description":"The ID of the Revision","required":true,"schema":{"type":"string"}},{"name":"taskId","in":"path","description":"The ID of the Task","required":true,"schema":{"type":"string"}},{"name":"widgetId","in":"path","description":"The ID of the Widget","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"multipart/form-data":{"schema":{"$ref":"#/components/schemas/UploadWidgetFileRequest"}},"application/json":{"schema":{"$ref":"#/components/schemas/UploadWidgetFileRequest"}}},"required":true},"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicApiWidgetResponse"}}}},"400":{"description":"Invalid value","content":{"text/plain":{"schema":{"type":"string"}}}},"default":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorInfo"}}}}},"security":[{"apiKeyAuth":[]},{"httpAuth":[]}],"x-mcp-tool":{"annotations":{"readOnlyHint":false,"destructiveHint":true,"openWorldHint":false},"justifications":{"read_only_justification":"It changes existing data.","destructive_justification":"It replaces the widget's current file, which is not kept. On a widget with no file yet it only adds one.","open_world_justification":"It acts only on data in a Process Street organization the signed-in user belongs to, with that user's own permissions there. It does not access the public internet or contact anyone outside that organization."}}}},"/workflows/{workflowId}/revisions/{revisionId}/due-date-rule":{"get":{"tags":["Workflow Due Date Rules"],"summary":"Get the checklist due date rule","description":"Returns the checklist-level due date rule for a workflow revision. The `rule` field is `null` when no rule is set.","operationId":"getChecklistDueDateRule","parameters":[{"name":"workflowId","in":"path","description":"The ID of the Workflow","required":true,"schema":{"type":"string"}},{"name":"revisionId","in":"path","description":"The ID of the Revision","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetChecklistDueDateRuleResponseResponse"}}}},"default":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorInfo"}}}}},"security":[{"apiKeyAuth":[]},{"httpAuth":[]}],"x-mcp-tool":{"annotations":{"readOnlyHint":true,"destructiveHint":false,"openWorldHint":false},"justifications":{"read_only_justification":"It only reads data and changes nothing.","destructive_justification":"It changes nothing, so it cannot have an irreversible outcome.","open_world_justification":"It acts only on data in a Process Street organization the signed-in user belongs to, with that user's own permissions there. It does not access the public internet or contact anyone outside that organization."}}},"put":{"tags":["Workflow Due Date Rules"],"summary":"Set the checklist due date rule","description":"Sets the single checklist-level due date rule on a draft workflow revision, replacing any existing rule. Send `rule: null` (or omit the field) to clear the existing rule. When `sourceType` is `FormFieldValue`, `sourceWidgetId` must reference a Date form field widget in the same revision. Returns the resulting rule.","operationId":"setChecklistDueDateRule","parameters":[{"name":"workflowId","in":"path","description":"The ID of the Workflow","required":true,"schema":{"type":"string"}},{"name":"revisionId","in":"path","description":"The ID of the Revision","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateChecklistDueDateRuleRequest"},"examples":{"Offset from start date":{"summary":"Sets the due date 7 days after the workflow run's start date, shifted if it falls on a weekend.","value":{"rule":{"sourceType":"ChecklistStartDate","offsetDirection":"After","dueOffset":"P7D","businessDaysHandlingMode":"ShiftToNextBusinessDay"}}},"Offset from form field value":{"summary":"Sets the due date 2 hours before a Date form field value. `sourceWidgetId` must reference a Date form field widget in the same revision.","value":{"rule":{"sourceType":"FormFieldValue","sourceWidgetId":"mTQwctg5TNYBoX6ZoipySw","offsetDirection":"Before","dueOffset":"PT2H","businessDaysHandlingMode":"AllDays"}}},"Clear the rule":{"summary":"Removes the existing checklist due date rule from the revision.","value":{}}}}},"required":true},"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetChecklistDueDateRuleResponseResponse"}}}},"400":{"description":"Invalid value for: body","content":{"text/plain":{"schema":{"type":"string"}}}},"default":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorInfo"}}}}},"security":[{"apiKeyAuth":[]},{"httpAuth":[]}],"x-mcp-tool":{"annotations":{"readOnlyHint":false,"destructiveHint":true,"openWorldHint":false},"justifications":{"read_only_justification":"It changes existing data.","destructive_justification":"It overwrites existing values and does not keep the ones it replaces, so undoing it means knowing what they were.","open_world_justification":"It acts only on data in a Process Street organization the signed-in user belongs to, with that user's own permissions there. It does not access the public internet or contact anyone outside that organization."}}}},"/workflows/{workflowId}/revisions/{revisionId}/tasks/{taskId}/due-date-rule":{"get":{"tags":["Workflow Task Due Date Rules"],"summary":"Get the task due date rule","description":"Returns the due date rule for a task on a workflow revision. The `rule` field is `null` when no rule is set.","operationId":"getTaskDueDateRule","parameters":[{"name":"workflowId","in":"path","description":"The ID of the Workflow","required":true,"schema":{"type":"string"}},{"name":"revisionId","in":"path","description":"The ID of the Revision","required":true,"schema":{"type":"string"}},{"name":"taskId","in":"path","description":"The ID of the Task","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetTaskDueDateRuleResponseResponse"}}}},"default":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorInfo"}}}}},"security":[{"apiKeyAuth":[]},{"httpAuth":[]}],"x-mcp-tool":{"annotations":{"readOnlyHint":true,"destructiveHint":false,"openWorldHint":false},"justifications":{"read_only_justification":"It only reads data and changes nothing.","destructive_justification":"It changes nothing, so it cannot have an irreversible outcome.","open_world_justification":"It acts only on data in a Process Street organization the signed-in user belongs to, with that user's own permissions there. It does not access the public internet or contact anyone outside that organization."}}},"put":{"tags":["Workflow Task Due Date Rules"],"summary":"Set the task due date rule","description":"Sets the single due date rule for a task on a draft workflow revision, replacing any existing rule. Send `rule: null` (or omit the field) to clear the existing rule. Due date rules cannot be **set** on headings, AI tasks, or Code tasks — but clearing is always permitted so stale rules left over from prior task edits can be removed. `sourceWidgetId` is required when `sourceType` is `FormFieldValue` and must reference a Date form field widget in the same revision. `sourceTaskId` is required when `sourceType` is `TaskCompletedDate` or `TaskDueDate`; it must reference a task earlier than the target task in the same revision and cannot be the target task itself. Returns the resulting rule.","operationId":"setTaskDueDateRule","parameters":[{"name":"workflowId","in":"path","description":"The ID of the Workflow","required":true,"schema":{"type":"string"}},{"name":"revisionId","in":"path","description":"The ID of the Revision","required":true,"schema":{"type":"string"}},{"name":"taskId","in":"path","description":"The ID of the Task","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateTaskDueDateRuleRequest"},"examples":{"Offset from workflow run start":{"summary":"Task is due 3 days after the workflow run starts.","value":{"rule":{"sourceType":"ChecklistStartDate","offsetDirection":"After","dueOffset":"P3D","businessDaysHandlingMode":"AllDays"}}},"Offset from previous task":{"summary":"Task is due 1 day after the previous task is completed.","value":{"rule":{"sourceType":"PreviousTaskCompletedDate","offsetDirection":"After","dueOffset":"P1D","businessDaysHandlingMode":"ShiftToNextBusinessDay"}}},"Offset from another task":{"summary":"Task is due 2 days after the source task is completed. `sourceTaskId` must reference a task that appears before the target task in the same revision.","value":{"rule":{"sourceType":"TaskCompletedDate","sourceTaskId":"heIIuUHni08BoX6ZknR8dA","offsetDirection":"After","dueOffset":"P2D","businessDaysHandlingMode":"AllDays"}}},"Offset from a date form field value":{"summary":"Task is due 1 business day before a Date form field value.","value":{"rule":{"sourceType":"FormFieldValue","sourceWidgetId":"m2_K22Bt5I4BoX6ZknRzdQ","offsetDirection":"Before","dueOffset":"P1D","businessDaysHandlingMode":"BusinessDaysOnly"}}},"Clear the rule":{"summary":"Removes the existing task due date rule.","value":{}}}}},"required":true},"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetTaskDueDateRuleResponseResponse"}}}},"400":{"description":"Invalid value for: body","content":{"text/plain":{"schema":{"type":"string"}}}},"default":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorInfo"}}}}},"security":[{"apiKeyAuth":[]},{"httpAuth":[]}],"x-mcp-tool":{"annotations":{"readOnlyHint":false,"destructiveHint":true,"openWorldHint":false},"justifications":{"read_only_justification":"It changes existing data.","destructive_justification":"It overwrites existing values and does not keep the ones it replaces, so undoing it means knowing what they were.","open_world_justification":"It acts only on data in a Process Street organization the signed-in user belongs to, with that user's own permissions there. It does not access the public internet or contact anyone outside that organization."}}}},"/scheduled-workflows":{"get":{"tags":["Scheduled Workflows"],"summary":"List scheduled workflows","description":"Returns a paginated list of scheduled workflows, ordered by next run date.","operationId":"listScheduledWorkflows","parameters":[{"name":"workflowId","in":"query","description":"Filter by workflow.","required":false,"schema":{"type":"string"}},{"name":"search","in":"query","description":"Case-insensitive substring match on name.","required":false,"schema":{"type":"string"}},{"name":"_","in":"query","description":"Opaque pagination cursor. Take this value from the previous response's `links[]` entry whose `name`\nis `\"next\"` (typically just follow that link's `href` instead of reading this value).\nOmit on the first page. If the previous response had no `next` link, there are no more pages.","required":false,"schema":{"type":"string"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicApiScheduledWorkflowListResponse"}}}},"default":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorInfo"}}}}},"security":[{"apiKeyAuth":[]},{"httpAuth":[]}],"x-mcp-tool":{"annotations":{"readOnlyHint":true,"destructiveHint":false,"openWorldHint":false},"justifications":{"read_only_justification":"It only reads data and changes nothing.","destructive_justification":"It changes nothing, so it cannot have an irreversible outcome.","open_world_justification":"It acts only on data in a Process Street organization the signed-in user belongs to, with that user's own permissions there. It does not access the public internet or contact anyone outside that organization."}}},"post":{"tags":["Scheduled Workflows"],"summary":"Create a scheduled workflow","description":"Creates a scheduled workflow that runs a workflow on a recurring schedule.","operationId":"createScheduledWorkflow","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateScheduledWorkflowRequest"},"examples":{"Weekly schedule":{"summary":"Create a weekly scheduled workflow that runs every Monday","value":{"workflowId":"gQtogjGP_UABoX6Zoit6IQ","name":"Weekly compliance review","startDate":"2026-10-28T18:22:40.171Z","timeZone":"America/New_York","duePeriod":"P7D","rules":[{"interval":1,"weekDay":"Monday","frequency":"Weekly"}],"assigneeEmails":["alice@example.com"]}},"Daily schedule":{"summary":"Create a daily scheduled workflow with no due period","value":{"workflowId":"pN9kHByXXbgBoX6Zoit-9w","name":"Daily standup checklist","startDate":"2026-10-28T18:22:40.171Z","timeZone":"Europe/London","rules":[{"interval":1,"frequency":"Daily"}],"assigneeEmails":[]}}}}},"required":true},"responses":{"201":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicApiScheduledWorkflowResponse"}}}},"400":{"description":"Invalid value for: body","content":{"text/plain":{"schema":{"type":"string"}}}},"default":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorInfo"}}}}},"security":[{"apiKeyAuth":[]},{"httpAuth":[]}],"x-mcp-tool":{"annotations":{"readOnlyHint":false,"destructiveHint":false,"openWorldHint":false},"justifications":{"read_only_justification":"It creates something new, which is a change of state.","destructive_justification":"It only adds something new. It changes and removes nothing that already exists, and what it creates can be deleted again.","open_world_justification":"It acts only on data in a Process Street organization the signed-in user belongs to, with that user's own permissions there. It does not access the public internet or contact anyone outside that organization."}}}},"/scheduled-workflows/{scheduledWorkflowId}":{"get":{"tags":["Scheduled Workflows"],"summary":"Get a scheduled workflow","description":"Returns a scheduled workflow by its ID.","operationId":"getScheduledWorkflow","parameters":[{"name":"scheduledWorkflowId","in":"path","description":"The ID of the scheduled workflow.","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicApiScheduledWorkflowResponse"}}}},"default":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorInfo"}}}}},"security":[{"apiKeyAuth":[]},{"httpAuth":[]}],"x-mcp-tool":{"annotations":{"readOnlyHint":true,"destructiveHint":false,"openWorldHint":false},"justifications":{"read_only_justification":"It only reads data and changes nothing.","destructive_justification":"It changes nothing, so it cannot have an irreversible outcome.","open_world_justification":"It acts only on data in a Process Street organization the signed-in user belongs to, with that user's own permissions there. It does not access the public internet or contact anyone outside that organization."}}},"put":{"tags":["Scheduled Workflows"],"summary":"Update a scheduled workflow","description":"Updates a scheduled workflow. PUT semantics: all mutable fields must be provided. Rules and assignees are fully replaced.","operationId":"updateScheduledWorkflow","parameters":[{"name":"scheduledWorkflowId","in":"path","description":"The ID of the scheduled workflow.","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateScheduledWorkflowRequest"},"examples":{"Weekly schedule":{"summary":"Create a weekly scheduled workflow that runs every Monday","value":{"workflowId":"l_-aD3szucIBoX6Zoit_Og","name":"Weekly compliance review","startDate":"2026-10-28T18:22:40.171Z","timeZone":"America/New_York","duePeriod":"P7D","rules":[{"interval":1,"weekDay":"Monday","frequency":"Weekly"}],"assigneeEmails":["alice@example.com"]}},"Daily schedule":{"summary":"Create a daily scheduled workflow with no due period","value":{"workflowId":"pQ8TthPrvcwBoX6Zoitx2g","name":"Daily standup checklist","startDate":"2026-10-28T18:22:40.171Z","timeZone":"Europe/London","rules":[{"interval":1,"frequency":"Daily"}],"assigneeEmails":[]}}}}},"required":true},"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicApiScheduledWorkflowResponse"}}}},"400":{"description":"Invalid value for: body","content":{"text/plain":{"schema":{"type":"string"}}}},"default":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorInfo"}}}}},"security":[{"apiKeyAuth":[]},{"httpAuth":[]}],"x-mcp-tool":{"annotations":{"readOnlyHint":false,"destructiveHint":true,"openWorldHint":false},"justifications":{"read_only_justification":"It changes existing data.","destructive_justification":"It overwrites existing values and does not keep the ones it replaces, so undoing it means knowing what they were.","open_world_justification":"It acts only on data in a Process Street organization the signed-in user belongs to, with that user's own permissions there. It does not access the public internet or contact anyone outside that organization."}}},"delete":{"tags":["Scheduled Workflows"],"summary":"Delete a scheduled workflow","description":"Deletes a scheduled workflow and unschedules all future runs.","operationId":"deleteScheduledWorkflow","parameters":[{"name":"scheduledWorkflowId","in":"path","description":"The ID of the scheduled workflow.","required":true,"schema":{"type":"string"}}],"responses":{"204":{"description":""},"default":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorInfo"}}}}},"security":[{"apiKeyAuth":[]},{"httpAuth":[]}],"x-mcp-tool":{"annotations":{"readOnlyHint":false,"destructiveHint":true,"openWorldHint":false},"justifications":{"read_only_justification":"It deletes data.","destructive_justification":"It deletes data, and the public API has no way to restore it.","open_world_justification":"It acts only on data in a Process Street organization the signed-in user belongs to, with that user's own permissions there. It does not access the public internet or contact anyone outside that organization."}}}},"/users":{"get":{"tags":["Users"],"summary":"List all users","description":"Returns a list of users.\nThe users are returned 20 at a time, sorted by name.\nYou must use the links section to get the next 20 results.","operationId":"listUsers","parameters":[{"name":"_","in":"query","description":"Opaque pagination cursor. Take this value from the previous response's `links[]` entry whose `name`\nis `\"next\"` (typically just follow that link's `href` instead of reading this value).\nOmit on the first page. If the previous response had no `next` link, there are no more pages.","required":false,"schema":{"type":"string"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListUsersResponse"}}}},"default":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorInfo"}}}}},"security":[{"apiKeyAuth":[]},{"httpAuth":[]}],"x-mcp-tool":{"annotations":{"readOnlyHint":true,"destructiveHint":false,"openWorldHint":false},"justifications":{"read_only_justification":"It only reads data and changes nothing.","destructive_justification":"It changes nothing, so it cannot have an irreversible outcome.","open_world_justification":"It acts only on data in a Process Street organization the signed-in user belongs to, with that user's own permissions there. It does not access the public internet or contact anyone outside that organization."}}}},"/webhooks":{"get":{"tags":["Webhooks"],"summary":"List webhooks","description":"Returns webhook subscriptions for the authenticated organization, paginated.","operationId":"listWebhooks","parameters":[{"name":"_","in":"query","description":"Opaque pagination cursor. Take this value from the previous response's `links[]` entry whose `name`\nis `\"next\"` (typically just follow that link's `href` instead of reading this value).\nOmit on the first page. If the previous response had no `next` link, there are no more pages.","required":false,"schema":{"type":"string"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicApiWebhookListResponse"}}}},"default":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorInfo"}}}}},"security":[{"apiKeyAuth":[]},{"httpAuth":[]}],"x-mcp-tool":{"annotations":{"readOnlyHint":true,"destructiveHint":false,"openWorldHint":false},"justifications":{"read_only_justification":"It only reads data and changes nothing.","destructive_justification":"It changes nothing, so it cannot have an irreversible outcome.","open_world_justification":"It acts only on data in a Process Street organization the signed-in user belongs to, with that user's own permissions there. It does not access the public internet or contact anyone outside that organization."}}},"post":{"tags":["Webhooks"],"summary":"Create a webhook","description":"Creates a webhook subscription for a specified event.","operationId":"createWebhook","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateWebhookRequest"},"examples":{"Task Checked/Unchecked Webhook":{"value":{"url":"https://example.com/api","triggers":["TaskCheckedUnchecked"]}},"Task Checked and Workflow Run Completed Webhook":{"value":{"url":"https://example.com/api","triggers":["TaskChecked","WorkflowRunCompleted"]}}}}},"required":true},"responses":{"201":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/WebhookResponse"}}}},"400":{"description":"Invalid value for: body","content":{"text/plain":{"schema":{"type":"string"}}}},"default":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorInfo"}}}}},"security":[{"apiKeyAuth":[]},{"httpAuth":[]}],"x-mcp-tool":{"annotations":{"readOnlyHint":false,"destructiveHint":false,"openWorldHint":true},"justifications":{"read_only_justification":"It creates something new, which is a change of state.","destructive_justification":"It only adds something new. It changes and removes nothing that already exists, and what it creates can be deleted again.","open_world_justification":"It subscribes a URL outside Process Street to the organization's events, which are then sent to it with their data."}}}},"/webhooks/{webhookId}":{"get":{"tags":["Webhooks"],"summary":"Get a webhook","description":"Returns a webhook subscription by its ID.","operationId":"getWebhook","parameters":[{"name":"webhookId","in":"path","description":"The ID of the Webhook","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicApiWebhookResponse"}}}},"default":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorInfo"}}}}},"security":[{"apiKeyAuth":[]},{"httpAuth":[]}],"x-mcp-tool":{"annotations":{"readOnlyHint":true,"destructiveHint":false,"openWorldHint":false},"justifications":{"read_only_justification":"It only reads data and changes nothing.","destructive_justification":"It changes nothing, so it cannot have an irreversible outcome.","open_world_justification":"It acts only on data in a Process Street organization the signed-in user belongs to, with that user's own permissions there. It does not access the public internet or contact anyone outside that organization."}}},"put":{"tags":["Webhooks"],"summary":"Update a webhook","description":"Updates a webhook subscription. PUT semantics: all fields must be provided. Returns the updated webhook.","operationId":"updateWebhook","parameters":[{"name":"webhookId","in":"path","description":"The ID of the Webhook","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateWebhookRequest"}}},"required":true},"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicApiWebhookResponse"}}}},"400":{"description":"Invalid value for: body","content":{"text/plain":{"schema":{"type":"string"}}}},"default":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorInfo"}}}}},"security":[{"apiKeyAuth":[]},{"httpAuth":[]}],"x-mcp-tool":{"annotations":{"readOnlyHint":false,"destructiveHint":true,"openWorldHint":true},"justifications":{"read_only_justification":"It changes existing data.","destructive_justification":"It overwrites existing values and does not keep the ones it replaces, so undoing it means knowing what they were.","open_world_justification":"It can change the URL outside Process Street that the organization's events are sent to with their data."}}},"delete":{"tags":["Webhooks"],"summary":"Delete a webhook","description":"Deletes a webhook subscription by its ID.","operationId":"deleteWebhook","parameters":[{"name":"webhookId","in":"path","description":"The ID of the Webhook","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":""},"default":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorInfo"}}}}},"security":[{"apiKeyAuth":[]},{"httpAuth":[]}],"x-mcp-tool":{"annotations":{"readOnlyHint":false,"destructiveHint":true,"openWorldHint":false},"justifications":{"read_only_justification":"It deletes data.","destructive_justification":"It deletes data, and the public API has no way to restore it.","open_world_justification":"It acts only on data in a Process Street organization the signed-in user belongs to, with that user's own permissions there. It does not access the public internet or contact anyone outside that organization."}}}},"/testAuth":{"get":{"tags":["Utilities"],"summary":"Test authentication","description":"\nReturns the API key's label.\n","operationId":"testAuth","responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TestAuthResponse"}}}},"default":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorInfo"}}}}},"security":[{"apiKeyAuth":[]},{"httpAuth":[]}],"x-mcp-tool":{"annotations":{"readOnlyHint":true,"destructiveHint":false,"openWorldHint":false},"justifications":{"read_only_justification":"It only reads data and changes nothing.","destructive_justification":"It changes nothing, so it cannot have an irreversible outcome.","open_world_justification":"It acts only on data in a Process Street organization the signed-in user belongs to, with that user's own permissions there. It does not access the public internet or contact anyone outside that organization."}}}},"/work/items":{"get":{"tags":["My Work"],"summary":"List My Work items","description":"Returns a paginated list of work items assigned to the authenticated user.\nUse `assigneeEmail` to filter by a specific user, or omit to default to the authenticated user.","operationId":"listMyWorkItems","parameters":[{"name":"assigneeEmail","in":"query","description":"Filter by assignee email. Defaults to the authenticated user.","required":false,"schema":{"type":"string"}},{"name":"type","in":"query","description":"Filter by item type.\n\n- `Checklist` — a workflow run assigned to the user.\n- `StandardTask` — a regular task within a workflow run.\n- `ApprovalTask` — an approval task awaiting the user's review.\n- `OneOffTask` — a standalone one-off task.\n- `Acknowledgment` — a revision-acknowledgment request after a workflow update.\n","required":false,"schema":{"$ref":"#/components/schemas/InboxItemType"}},{"name":"workflowId","in":"query","description":"Filter to a specific workflow. If the workflow does not exist or is inaccessible, the response is an empty page rather than an error.","required":false,"schema":{"type":"string"}},{"name":"dueDateFrom","in":"query","description":"Due date range start (ISO-8601, e.g. 2024-01-15).","required":false,"schema":{"type":"string"}},{"name":"dueDateTo","in":"query","description":"Due date range end (ISO-8601, e.g. 2024-01-31).","required":false,"schema":{"type":"string"}},{"name":"snoozeStatus","in":"query","description":"Filter by snooze status.\n\n- `Active` — non-snoozed items only.\n- `Snoozed` — items currently snoozed.\n\nOmit this filter to include both.\n","required":false,"schema":{"$ref":"#/components/schemas/SnoozeStatus"}},{"name":"includeCompleted","in":"query","description":"Include completed items. Defaults to false.","required":false,"schema":{"type":"boolean"}},{"name":"_","in":"query","description":"Opaque pagination cursor. Take this value from the previous response's `links[]` entry whose `name`\nis `\"next\"` (typically just follow that link's `href` instead of reading this value).\nOmit on the first page. If the previous response had no `next` link, there are no more pages.","required":false,"schema":{"type":"string"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicApiMyWorkItemListResponse"}}}},"400":{"description":"Invalid value for: query parameter type, Invalid value for: query parameter snoozeStatus, Invalid value for: query parameter includeCompleted","content":{"text/plain":{"schema":{"type":"string"}}}},"default":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorInfo"}}}}},"security":[{"apiKeyAuth":[]},{"httpAuth":[]}],"x-mcp-tool":{"annotations":{"readOnlyHint":true,"destructiveHint":false,"openWorldHint":false},"justifications":{"read_only_justification":"It only reads data and changes nothing.","destructive_justification":"It changes nothing, so it cannot have an irreversible outcome.","open_world_justification":"It acts only on data in a Process Street organization the signed-in user belongs to, with that user's own permissions there. It does not access the public internet or contact anyone outside that organization."}}}},"/work/items/search":{"post":{"tags":["My Work"],"summary":"Search My Work items","description":"Searches work items with complex filtering.\nSupports multi-value filters for assignees, types, and workflows, plus free-text search and sorting.","operationId":"searchMyWorkItems","parameters":[{"name":"_","in":"query","description":"Opaque pagination cursor. Take this value from the previous response's `links[]` entry whose `name`\nis `\"next\"` (typically just follow that link's `href` instead of reading this value).\nOmit on the first page. If the previous response had no `next` link, there are no more pages.","required":false,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SearchMyWorkItemsRequest"}}},"required":true},"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicApiMyWorkItemListResponse"}}}},"400":{"description":"Invalid value for: body","content":{"text/plain":{"schema":{"type":"string"}}}},"default":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorInfo"}}}}},"security":[{"apiKeyAuth":[]},{"httpAuth":[]}],"x-mcp-tool":{"annotations":{"readOnlyHint":true,"destructiveHint":false,"openWorldHint":false},"justifications":{"read_only_justification":"It only reads data and changes nothing.","destructive_justification":"It changes nothing, so it cannot have an irreversible outcome.","open_world_justification":"It acts only on data in a Process Street organization the signed-in user belongs to, with that user's own permissions there. It does not access the public internet or contact anyone outside that organization."}}}},"/work/items/{itemId}/snooze":{"post":{"tags":["My Work"],"summary":"Snooze a My Work item","description":"Snoozes the My Work item until the specified date. If already snoozed, updates the snooze date.","operationId":"snoozeMyWorkItem","parameters":[{"name":"itemId","in":"path","description":"The ID of the My Work item to snooze.","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SnoozeMyWorkItemRequest"}}},"required":true},"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicApiSnoozedAssignmentResponse"}}}},"400":{"description":"Invalid value for: body","content":{"text/plain":{"schema":{"type":"string"}}}},"default":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorInfo"}}}}},"security":[{"apiKeyAuth":[]},{"httpAuth":[]}],"x-mcp-tool":{"annotations":{"readOnlyHint":false,"destructiveHint":false,"openWorldHint":false},"justifications":{"read_only_justification":"It changes data.","destructive_justification":"unsnoozeMyWorkItem returns the item to My Work.","open_world_justification":"It acts only on data in a Process Street organization the signed-in user belongs to, with that user's own permissions there. It does not access the public internet or contact anyone outside that organization."}}},"delete":{"tags":["My Work"],"summary":"Unsnooze a My Work item","description":"Removes the snooze from the My Work item.","operationId":"unsnoozeMyWorkItem","parameters":[{"name":"itemId","in":"path","description":"The ID of the My Work item to unsnooze.","required":true,"schema":{"type":"string"}}],"responses":{"204":{"description":""},"default":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorInfo"}}}}},"security":[{"apiKeyAuth":[]},{"httpAuth":[]}],"x-mcp-tool":{"annotations":{"readOnlyHint":false,"destructiveHint":false,"openWorldHint":false},"justifications":{"read_only_justification":"It changes data.","destructive_justification":"snoozeMyWorkItem can snooze the item again.","open_world_justification":"It acts only on data in a Process Street organization the signed-in user belongs to, with that user's own permissions there. It does not access the public internet or contact anyone outside that organization."}}}},"/work/stats":{"get":{"tags":["My Work"],"summary":"Get My Work stats","description":"Returns total, upcoming, and overdue counts of work items assigned to the authenticated user.\nUse `assigneeEmail` to filter by a specific user, or omit to default to the authenticated user.","operationId":"getMyWorkStats","parameters":[{"name":"assigneeEmail","in":"query","description":"Filter by assignee email. Defaults to the authenticated user.","required":false,"schema":{"type":"string"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicApiMyWorkStatsResponse"}}}},"default":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorInfo"}}}}},"security":[{"apiKeyAuth":[]},{"httpAuth":[]}],"x-mcp-tool":{"annotations":{"readOnlyHint":true,"destructiveHint":false,"openWorldHint":false},"justifications":{"read_only_justification":"It only reads data and changes nothing.","destructive_justification":"It changes nothing, so it cannot have an irreversible outcome.","open_world_justification":"It acts only on data in a Process Street organization the signed-in user belongs to, with that user's own permissions there. It does not access the public internet or contact anyone outside that organization."}}}}},"components":{"schemas":{"AndGroup":{"title":"AndGroup","type":"object","properties":{"and":{"description":"List of conditions that must all match (AND combined within a group).","type":"array","items":{"title":"LeafCondition","type":"object","required":["widgetId","operator"],"properties":{"widgetId":{"title":"EntityID","description":"The ID of the widget.","type":"string"},"operator":{"description":"Comparison operator (e.g. `Is`, `IsNot`, `Contains`, `IsEmpty`).","type":"string"},"value":{"description":"The option's stored value.","type":"string"}}}}}},"AuditInfo":{"title":"AuditInfo","type":"object","required":["createdDate","createdById","updatedDate","updatedById"],"properties":{"createdDate":{"description":"When the resource was first created. ISO-8601 UTC.","type":"string","format":"date-time"},"createdById":{"title":"EntityID","description":"ID of the user who created the resource.","type":"string"},"updatedDate":{"description":"When the resource was last modified. ISO-8601 UTC.","type":"string","format":"date-time"},"updatedById":{"title":"EntityID","description":"ID of the user who last modified the resource.","type":"string"}}},"BusinessDaysHandlingMode":{"title":"BusinessDaysHandlingMode","description":"How non-business days are handled when calculating the due date. `AllDays` counts every day. `BusinessDaysOnly` counts only Monday–Friday. `ShiftToNextBusinessDay` calculates using all days then moves a Saturday/Sunday result to the next Monday.","type":"string","enum":["AllDays","BusinessDaysOnly","ShiftToNextBusinessDay"]},"ChangeType":{"title":"ChangeType","description":"Whether the changes in this revision are significant. `Material` — substantial changes; bumps the major version (e.g. `1.3` → `2.0`). `NonMaterial` — minor edits like wording or typo fixes; bumps the minor version (e.g. `1.3` → `1.4`).","type":"string","enum":["Material","NonMaterial"]},"ColumnType":{"title":"ColumnType","description":"Data type of the column.\n\n- `Text` — free-form string.\n- `Number` — numeric value.\n- `DateTime` — ISO-8601 date-time.\n","type":"string","enum":["Text","DateTime","Number"]},"CreateCommentRequest":{"title":"CreateCommentRequest","type":"object","required":["workflowRunId","taskId","text"],"properties":{"workflowRunId":{"description":"The ID of the Workflow Run","examples":["rKOAGyx093YBoX6ZoUR73Q"],"type":"string"},"taskId":{"description":"The ID of the Task","examples":["rKOAGyx093YBoX6ZoUR73Q"],"type":"string"},"text":{"type":"string","minLength":1}}},"CreateDataSetFieldRequest":{"title":"CreateDataSetFieldRequest","type":"object","required":["name","fieldType"],"properties":{"name":{"description":"Display name.","type":"string","minLength":1},"fieldType":{"title":"ColumnType","description":"Data type of the column.\n\n- `Text` — free-form string.\n- `Number` — numeric value.\n- `DateTime` — ISO-8601 date-time.\n","type":"string","enum":["Text","DateTime","Number"]}}},"CreateDataSetIncomingWebhookRequest":{"title":"CreateDataSetIncomingWebhookRequest","type":"object","required":["name","automationApp","config"],"properties":{"name":{"description":"Display name.","type":"string"},"automationApp":{"type":"string"},"config":{"title":"DataSetIncomingWebhookConfigRequest","description":"Field-specific configuration. Shape depends on `fieldType`.","type":"object","required":["columns"],"properties":{"columns":{"description":"Cell values keyed by column ID.","type":"object","additionalProperties":{"type":"string"}},"keyColumn":{"description":"Name of the column used as the unique key when reconciling rows on upsert.","type":"string"}}}}},"CreateDataSetRequest":{"title":"CreateDataSetRequest","type":"object","required":["name"],"properties":{"name":{"description":"Display name.","type":"string","minLength":1},"fields":{"description":"Form field definitions or column definitions, depending on context.","type":"array","minItems":1,"items":{"title":"CreateDataSetFieldRequest","type":"object","required":["name","fieldType"],"properties":{"name":{"description":"Display name.","type":"string","minLength":1},"fieldType":{"title":"ColumnType","description":"Data type of the column.\n\n- `Text` — free-form string.\n- `Number` — numeric value.\n- `DateTime` — ISO-8601 date-time.\n","type":"string","enum":["Text","DateTime","Number"]}}}}}},"CreateDataSetRowRequest":{"title":"CreateDataSetRowRequest","type":"object","properties":{"cells":{"type":"array","items":{"title":"SimplifiedCell","type":"object","required":["fieldId","value"],"properties":{"fieldId":{"title":"EntityID","description":"The ID of the form field.","type":"string"},"value":{"description":"The option's stored value.","oneOf":[{"type":"null"},{"type":"number"},{"type":"string"}]}}}}}},"CreateDataSetRowResponse":{"title":"CreateDataSetRowResponse","type":"object","required":["id"],"properties":{"id":{"description":"The ID of the Data Set Record","examples":["qjq3yF1Fb_4BoX6ZoZ1y5w"],"type":"string"}}},"CreateDateFormFieldRequest":{"title":"CreateDateFormFieldRequest","type":"object","required":["type","fieldType"],"properties":{"hiddenByDefault":{"description":"When `true`, the widget is hidden by default; conditional logic rules can reveal it at runtime. Defaults to `false`.","type":"boolean"},"position":{"title":"WidgetPosition","description":"Where to place this widget on the task. `Top` — before all existing widgets. `Bottom` — after all existing widgets (default when `position` is omitted). `After` — immediately after the widget identified by `widgetId`.","oneOf":[{"title":"WidgetPositionAfter","type":"object","required":["widgetId","type"],"properties":{"widgetId":{"title":"EntityID","description":"The ID of the widget.","type":"string"},"type":{"description":"Discriminator value for this variant. See the parent oneOf for the full set of values.","type":"string","const":"After"}}},{"title":"WidgetPositionBottom","type":"object","required":["type"],"properties":{"type":{"description":"Discriminator value for this variant. See the parent oneOf for the full set of values.","type":"string","const":"Bottom"}}},{"title":"WidgetPositionTop","type":"object","required":["type"],"properties":{"type":{"description":"Discriminator value for this variant. See the parent oneOf for the full set of values.","type":"string","const":"Top"}}}],"required":["type"],"discriminator":{"propertyName":"type","mapping":{"After":"#/components/schemas/WidgetPositionAfter","Bottom":"#/components/schemas/WidgetPositionBottom","Top":"#/components/schemas/WidgetPositionTop"}}},"label":{"description":"Display label shown to the end user.","type":"string","maxLength":255},"config":{"title":"PublicApiDateFormFieldConfig","description":"Field-specific configuration. Shape depends on `fieldType`.","type":"object","properties":{"defaultValue":{"description":"Default value pre-filled when a new workflow run is created.","type":"string"},"timeOption":{"description":"How time-of-day is handled on this Date field.\n\n- `Included` — the field always captures both date and time.\n- `Excluded` — date only; time is never captured.\n- `Optional` — the user picks whether to include a time.\n","type":"string","enum":["Included","Excluded","Optional"]}}},"constraints":{"title":"PublicApiDateFormFieldConstraints","description":"Field-specific validation constraints. Shape depends on `fieldType`.","type":"object","properties":{"afterDate":{"description":"Earliest accepted date (inclusive). Pair with `afterDateSourceType`.","type":"string","format":"date-time"},"beforeDate":{"description":"Latest accepted date (inclusive). Pair with `beforeDateSourceType`.","type":"string","format":"date-time"},"afterDateFormFieldWidgetGroupId":{"title":"EntityID","description":"When `afterDateSourceType=FormField`, the ID of the Date form field whose value is the lower bound.","type":"string"},"beforeDateFormFieldWidgetGroupId":{"title":"EntityID","description":"When `beforeDateSourceType=FormField`, the ID of the Date form field whose value is the upper bound.","type":"string"},"afterDateSourceType":{"description":"How the before/after constraint date is derived.\n\n- `SpecificDate` — an absolute date supplied as `afterDate` / `beforeDate`.\n- `FormFieldValue` — derived from another Date form field (`afterDateField` / `beforeDateField`).\n- `TaskDueDate` — relative to the containing task's due date.\n- `ChecklistStartDate` / `ChecklistDueDate` — relative to the workflow run's start or due date.\n","type":"string","enum":["SpecificDate","FormFieldValue","TaskDueDate","ChecklistStartDate","ChecklistDueDate"]},"beforeDateSourceType":{"description":"How the before/after constraint date is derived.\n\n- `SpecificDate` — an absolute date supplied as `afterDate` / `beforeDate`.\n- `FormFieldValue` — derived from another Date form field (`afterDateField` / `beforeDateField`).\n- `TaskDueDate` — relative to the containing task's due date.\n- `ChecklistStartDate` / `ChecklistDueDate` — relative to the workflow run's start or due date.\n","type":"string","enum":["SpecificDate","FormFieldValue","TaskDueDate","ChecklistStartDate","ChecklistDueDate"]},"afterDateOffset":{"description":"ISO 8601 duration (e.g. `P7D`, `P1Y2M`).","type":"string"},"beforeDateOffset":{"description":"ISO 8601 duration (e.g. `P7D`, `P1Y2M`).","type":"string"}}},"type":{"description":"Discriminator value for this variant. See the parent oneOf for the full set of values.","examples":["FormField"],"type":"string","enum":["FormField"]},"fieldType":{"description":"Form-field subtype discriminator (only relevant when widget `type` is `FormField`).\n\n- `Text` — short text input (≤255 characters).\n- `Textarea` — long-form text.\n- `Email` — email address.\n- `Url` — website / URL.\n- `Number` — numeric input with optional unit and constraints.\n- `Date` — date or date+time picker.\n- `Select` — dropdown; user picks one option.\n- `MultiChoice` — checkboxes; user picks one or more options.\n- `MultiSelect` — Subtasks: a checklist of sub-items inside the task.\n- `Members` — assignee picker (selects organization users).\n- `File` — single file upload.\n- `MultiFile` — multi-file upload (in-app \"File Upload\").\n- `Document` — document approval field; links the task to a document review.\n- `Table` — rows × columns of cells; users fill cell values.\n- `SendRichEmail` — pre-written email embedded in the task; sent manually by the user or\n  automatically when the task is completed.\n- `Hidden` — only visible when editing the workflow; populated by integrations or default values.\n- `Snippet` — only visible when editing; passes static text or merge tags into automations.\n","type":"string","enum":["Date","Document","Email","File","Hidden","Members","MultiChoice","MultiFile","MultiSelect","Number","Select","SendRichEmail","Snippet","Table","Text","Textarea","Url"],"const":"Date"}}},"CreateDocumentFormFieldRequest":{"title":"CreateDocumentFormFieldRequest","type":"object","required":["type","fieldType"],"properties":{"hiddenByDefault":{"description":"When `true`, the widget is hidden by default; conditional logic rules can reveal it at runtime. Defaults to `false`.","type":"boolean"},"position":{"title":"WidgetPosition","description":"Where to place this widget on the task. `Top` — before all existing widgets. `Bottom` — after all existing widgets (default when `position` is omitted). `After` — immediately after the widget identified by `widgetId`.","oneOf":[{"title":"WidgetPositionAfter","type":"object","required":["widgetId","type"],"properties":{"widgetId":{"title":"EntityID","description":"The ID of the widget.","type":"string"},"type":{"description":"Discriminator value for this variant. See the parent oneOf for the full set of values.","type":"string","const":"After"}}},{"title":"WidgetPositionBottom","type":"object","required":["type"],"properties":{"type":{"description":"Discriminator value for this variant. See the parent oneOf for the full set of values.","type":"string","const":"Bottom"}}},{"title":"WidgetPositionTop","type":"object","required":["type"],"properties":{"type":{"description":"Discriminator value for this variant. See the parent oneOf for the full set of values.","type":"string","const":"Top"}}}],"required":["type"],"discriminator":{"propertyName":"type","mapping":{"After":"#/components/schemas/WidgetPositionAfter","Bottom":"#/components/schemas/WidgetPositionBottom","Top":"#/components/schemas/WidgetPositionTop"}}},"label":{"description":"Display label shown to the end user.","type":"string","maxLength":255},"config":{"title":"PublicApiDocumentFormFieldConfig","description":"Field-specific configuration. Shape depends on `fieldType`.","type":"object","required":["reviewRequest"],"properties":{"reviewRequest":{"description":"When `true`, the email requires explicit user review/send rather than auto-send.","type":"boolean"},"defaultValue":{"description":"Default value pre-filled when a new workflow run is created.","type":"string"}}},"type":{"description":"Discriminator value for this variant. See the parent oneOf for the full set of values.","examples":["FormField"],"type":"string","enum":["FormField"]},"fieldType":{"description":"Form-field subtype discriminator (only relevant when widget `type` is `FormField`).\n\n- `Text` — short text input (≤255 characters).\n- `Textarea` — long-form text.\n- `Email` — email address.\n- `Url` — website / URL.\n- `Number` — numeric input with optional unit and constraints.\n- `Date` — date or date+time picker.\n- `Select` — dropdown; user picks one option.\n- `MultiChoice` — checkboxes; user picks one or more options.\n- `MultiSelect` — Subtasks: a checklist of sub-items inside the task.\n- `Members` — assignee picker (selects organization users).\n- `File` — single file upload.\n- `MultiFile` — multi-file upload (in-app \"File Upload\").\n- `Document` — document approval field; links the task to a document review.\n- `Table` — rows × columns of cells; users fill cell values.\n- `SendRichEmail` — pre-written email embedded in the task; sent manually by the user or\n  automatically when the task is completed.\n- `Hidden` — only visible when editing the workflow; populated by integrations or default values.\n- `Snippet` — only visible when editing; passes static text or merge tags into automations.\n","type":"string","enum":["Date","Document","Email","File","Hidden","Members","MultiChoice","MultiFile","MultiSelect","Number","Select","SendRichEmail","Snippet","Table","Text","Textarea","Url"],"const":"Document"}}},"CreateEmailFormFieldRequest":{"title":"CreateEmailFormFieldRequest","type":"object","required":["type","fieldType"],"properties":{"hiddenByDefault":{"description":"When `true`, the widget is hidden by default; conditional logic rules can reveal it at runtime. Defaults to `false`.","type":"boolean"},"position":{"title":"WidgetPosition","description":"Where to place this widget on the task. `Top` — before all existing widgets. `Bottom` — after all existing widgets (default when `position` is omitted). `After` — immediately after the widget identified by `widgetId`.","oneOf":[{"title":"WidgetPositionAfter","type":"object","required":["widgetId","type"],"properties":{"widgetId":{"title":"EntityID","description":"The ID of the widget.","type":"string"},"type":{"description":"Discriminator value for this variant. See the parent oneOf for the full set of values.","type":"string","const":"After"}}},{"title":"WidgetPositionBottom","type":"object","required":["type"],"properties":{"type":{"description":"Discriminator value for this variant. See the parent oneOf for the full set of values.","type":"string","const":"Bottom"}}},{"title":"WidgetPositionTop","type":"object","required":["type"],"properties":{"type":{"description":"Discriminator value for this variant. See the parent oneOf for the full set of values.","type":"string","const":"Top"}}}],"required":["type"],"discriminator":{"propertyName":"type","mapping":{"After":"#/components/schemas/WidgetPositionAfter","Bottom":"#/components/schemas/WidgetPositionBottom","Top":"#/components/schemas/WidgetPositionTop"}}},"label":{"description":"Display label shown to the end user.","type":"string","maxLength":255},"config":{"title":"PublicApiEmailFormFieldConfig","description":"Field-specific configuration. Shape depends on `fieldType`.","type":"object","properties":{"placeholder":{"description":"Placeholder hint shown in the input when no value has been entered.","type":"string"},"defaultValue":{"description":"Default value pre-filled when a new workflow run is created.","type":"string"}}},"constraints":{"title":"PublicApiEmailFormFieldConstraints","description":"Field-specific validation constraints. Shape depends on `fieldType`.","type":"object","properties":{"domains":{"description":"Allowed (or blocked, depending on `restriction`) email domains for this field.","type":"array","items":{"type":"string"}},"restriction":{"description":"How the `domains` list filters allowed email addresses.\n\n- `Allow` — only emails whose domain is in the list are accepted.\n- `Block` — emails whose domain is in the list are rejected; all others accepted.\n","type":"string","enum":["Allow","Block"]}}},"type":{"description":"Discriminator value for this variant. See the parent oneOf for the full set of values.","examples":["FormField"],"type":"string","enum":["FormField"]},"fieldType":{"description":"Form-field subtype discriminator (only relevant when widget `type` is `FormField`).\n\n- `Text` — short text input (≤255 characters).\n- `Textarea` — long-form text.\n- `Email` — email address.\n- `Url` — website / URL.\n- `Number` — numeric input with optional unit and constraints.\n- `Date` — date or date+time picker.\n- `Select` — dropdown; user picks one option.\n- `MultiChoice` — checkboxes; user picks one or more options.\n- `MultiSelect` — Subtasks: a checklist of sub-items inside the task.\n- `Members` — assignee picker (selects organization users).\n- `File` — single file upload.\n- `MultiFile` — multi-file upload (in-app \"File Upload\").\n- `Document` — document approval field; links the task to a document review.\n- `Table` — rows × columns of cells; users fill cell values.\n- `SendRichEmail` — pre-written email embedded in the task; sent manually by the user or\n  automatically when the task is completed.\n- `Hidden` — only visible when editing the workflow; populated by integrations or default values.\n- `Snippet` — only visible when editing; passes static text or merge tags into automations.\n","type":"string","enum":["Date","Document","Email","File","Hidden","Members","MultiChoice","MultiFile","MultiSelect","Number","Select","SendRichEmail","Snippet","Table","Text","Textarea","Url"],"const":"Email"}}},"CreateFileUploadRequest":{"title":"CreateFileUploadRequest","type":"object","required":["filename","contentType","sizeBytes"],"properties":{"filename":{"description":"The original file name, including its extension.","type":"string","maxLength":255,"minLength":1},"contentType":{"description":"The MIME type of the file (e.g. `application/pdf`). You must send this exact value as the `Content-Type` header when uploading to `uploadUrl`.","type":"string","minLength":1},"sizeBytes":{"description":"The size of the file in bytes.","type":"integer","format":"int64","minimum":1}}},"CreateFolderRequest":{"title":"CreateFolderRequest","type":"object","required":["name"],"properties":{"name":{"description":"Display name.","type":"string","minLength":1},"parentFolderId":{"title":"EntityID","type":"string"}}},"CreateFormFieldWidgetRequest":{"title":"CreateFormFieldWidgetRequest","description":"A form field widget. The `fieldType` discriminator selects the variant — see `fieldType` for what each value collects.","oneOf":[{"title":"CreateDateFormFieldRequest","type":"object","required":["type","fieldType"],"properties":{"hiddenByDefault":{"description":"When `true`, the widget is hidden by default; conditional logic rules can reveal it at runtime. Defaults to `false`.","type":"boolean"},"position":{"title":"WidgetPosition","description":"Where to place this widget on the task. `Top` — before all existing widgets. `Bottom` — after all existing widgets (default when `position` is omitted). `After` — immediately after the widget identified by `widgetId`.","oneOf":[{"title":"WidgetPositionAfter","type":"object","required":["widgetId","type"],"properties":{"widgetId":{"title":"EntityID","description":"The ID of the widget.","type":"string"},"type":{"description":"Discriminator value for this variant. See the parent oneOf for the full set of values.","type":"string","const":"After"}}},{"title":"WidgetPositionBottom","type":"object","required":["type"],"properties":{"type":{"description":"Discriminator value for this variant. See the parent oneOf for the full set of values.","type":"string","const":"Bottom"}}},{"title":"WidgetPositionTop","type":"object","required":["type"],"properties":{"type":{"description":"Discriminator value for this variant. See the parent oneOf for the full set of values.","type":"string","const":"Top"}}}],"required":["type"],"discriminator":{"propertyName":"type","mapping":{"After":"#/components/schemas/WidgetPositionAfter","Bottom":"#/components/schemas/WidgetPositionBottom","Top":"#/components/schemas/WidgetPositionTop"}}},"label":{"description":"Display label shown to the end user.","type":"string","maxLength":255},"config":{"title":"PublicApiDateFormFieldConfig","description":"Field-specific configuration. Shape depends on `fieldType`.","type":"object","properties":{"defaultValue":{"description":"Default value pre-filled when a new workflow run is created.","type":"string"},"timeOption":{"description":"How time-of-day is handled on this Date field.\n\n- `Included` — the field always captures both date and time.\n- `Excluded` — date only; time is never captured.\n- `Optional` — the user picks whether to include a time.\n","type":"string","enum":["Included","Excluded","Optional"]}}},"constraints":{"title":"PublicApiDateFormFieldConstraints","description":"Field-specific validation constraints. Shape depends on `fieldType`.","type":"object","properties":{"afterDate":{"description":"Earliest accepted date (inclusive). Pair with `afterDateSourceType`.","type":"string","format":"date-time"},"beforeDate":{"description":"Latest accepted date (inclusive). Pair with `beforeDateSourceType`.","type":"string","format":"date-time"},"afterDateFormFieldWidgetGroupId":{"title":"EntityID","description":"When `afterDateSourceType=FormField`, the ID of the Date form field whose value is the lower bound.","type":"string"},"beforeDateFormFieldWidgetGroupId":{"title":"EntityID","description":"When `beforeDateSourceType=FormField`, the ID of the Date form field whose value is the upper bound.","type":"string"},"afterDateSourceType":{"description":"How the before/after constraint date is derived.\n\n- `SpecificDate` — an absolute date supplied as `afterDate` / `beforeDate`.\n- `FormFieldValue` — derived from another Date form field (`afterDateField` / `beforeDateField`).\n- `TaskDueDate` — relative to the containing task's due date.\n- `ChecklistStartDate` / `ChecklistDueDate` — relative to the workflow run's start or due date.\n","type":"string","enum":["SpecificDate","FormFieldValue","TaskDueDate","ChecklistStartDate","ChecklistDueDate"]},"beforeDateSourceType":{"description":"How the before/after constraint date is derived.\n\n- `SpecificDate` — an absolute date supplied as `afterDate` / `beforeDate`.\n- `FormFieldValue` — derived from another Date form field (`afterDateField` / `beforeDateField`).\n- `TaskDueDate` — relative to the containing task's due date.\n- `ChecklistStartDate` / `ChecklistDueDate` — relative to the workflow run's start or due date.\n","type":"string","enum":["SpecificDate","FormFieldValue","TaskDueDate","ChecklistStartDate","ChecklistDueDate"]},"afterDateOffset":{"description":"ISO 8601 duration (e.g. `P7D`, `P1Y2M`).","type":"string"},"beforeDateOffset":{"description":"ISO 8601 duration (e.g. `P7D`, `P1Y2M`).","type":"string"}}},"type":{"description":"Discriminator value for this variant. See the parent oneOf for the full set of values.","examples":["FormField"],"type":"string","enum":["FormField"]},"fieldType":{"description":"Form-field subtype discriminator (only relevant when widget `type` is `FormField`).\n\n- `Text` — short text input (≤255 characters).\n- `Textarea` — long-form text.\n- `Email` — email address.\n- `Url` — website / URL.\n- `Number` — numeric input with optional unit and constraints.\n- `Date` — date or date+time picker.\n- `Select` — dropdown; user picks one option.\n- `MultiChoice` — checkboxes; user picks one or more options.\n- `MultiSelect` — Subtasks: a checklist of sub-items inside the task.\n- `Members` — assignee picker (selects organization users).\n- `File` — single file upload.\n- `MultiFile` — multi-file upload (in-app \"File Upload\").\n- `Document` — document approval field; links the task to a document review.\n- `Table` — rows × columns of cells; users fill cell values.\n- `SendRichEmail` — pre-written email embedded in the task; sent manually by the user or\n  automatically when the task is completed.\n- `Hidden` — only visible when editing the workflow; populated by integrations or default values.\n- `Snippet` — only visible when editing; passes static text or merge tags into automations.\n","type":"string","enum":["Date","Document","Email","File","Hidden","Members","MultiChoice","MultiFile","MultiSelect","Number","Select","SendRichEmail","Snippet","Table","Text","Textarea","Url"],"const":"Date"}}},{"title":"CreateDocumentFormFieldRequest","type":"object","required":["type","fieldType"],"properties":{"hiddenByDefault":{"description":"When `true`, the widget is hidden by default; conditional logic rules can reveal it at runtime. Defaults to `false`.","type":"boolean"},"position":{"title":"WidgetPosition","description":"Where to place this widget on the task. `Top` — before all existing widgets. `Bottom` — after all existing widgets (default when `position` is omitted). `After` — immediately after the widget identified by `widgetId`.","oneOf":[{"title":"WidgetPositionAfter","type":"object","required":["widgetId","type"],"properties":{"widgetId":{"title":"EntityID","description":"The ID of the widget.","type":"string"},"type":{"description":"Discriminator value for this variant. See the parent oneOf for the full set of values.","type":"string","const":"After"}}},{"title":"WidgetPositionBottom","type":"object","required":["type"],"properties":{"type":{"description":"Discriminator value for this variant. See the parent oneOf for the full set of values.","type":"string","const":"Bottom"}}},{"title":"WidgetPositionTop","type":"object","required":["type"],"properties":{"type":{"description":"Discriminator value for this variant. See the parent oneOf for the full set of values.","type":"string","const":"Top"}}}],"required":["type"],"discriminator":{"propertyName":"type","mapping":{"After":"#/components/schemas/WidgetPositionAfter","Bottom":"#/components/schemas/WidgetPositionBottom","Top":"#/components/schemas/WidgetPositionTop"}}},"label":{"description":"Display label shown to the end user.","type":"string","maxLength":255},"config":{"title":"PublicApiDocumentFormFieldConfig","description":"Field-specific configuration. Shape depends on `fieldType`.","type":"object","required":["reviewRequest"],"properties":{"reviewRequest":{"description":"When `true`, the email requires explicit user review/send rather than auto-send.","type":"boolean"},"defaultValue":{"description":"Default value pre-filled when a new workflow run is created.","type":"string"}}},"type":{"description":"Discriminator value for this variant. See the parent oneOf for the full set of values.","examples":["FormField"],"type":"string","enum":["FormField"]},"fieldType":{"description":"Form-field subtype discriminator (only relevant when widget `type` is `FormField`).\n\n- `Text` — short text input (≤255 characters).\n- `Textarea` — long-form text.\n- `Email` — email address.\n- `Url` — website / URL.\n- `Number` — numeric input with optional unit and constraints.\n- `Date` — date or date+time picker.\n- `Select` — dropdown; user picks one option.\n- `MultiChoice` — checkboxes; user picks one or more options.\n- `MultiSelect` — Subtasks: a checklist of sub-items inside the task.\n- `Members` — assignee picker (selects organization users).\n- `File` — single file upload.\n- `MultiFile` — multi-file upload (in-app \"File Upload\").\n- `Document` — document approval field; links the task to a document review.\n- `Table` — rows × columns of cells; users fill cell values.\n- `SendRichEmail` — pre-written email embedded in the task; sent manually by the user or\n  automatically when the task is completed.\n- `Hidden` — only visible when editing the workflow; populated by integrations or default values.\n- `Snippet` — only visible when editing; passes static text or merge tags into automations.\n","type":"string","enum":["Date","Document","Email","File","Hidden","Members","MultiChoice","MultiFile","MultiSelect","Number","Select","SendRichEmail","Snippet","Table","Text","Textarea","Url"],"const":"Document"}}},{"title":"CreateEmailFormFieldRequest","type":"object","required":["type","fieldType"],"properties":{"hiddenByDefault":{"description":"When `true`, the widget is hidden by default; conditional logic rules can reveal it at runtime. Defaults to `false`.","type":"boolean"},"position":{"title":"WidgetPosition","description":"Where to place this widget on the task. `Top` — before all existing widgets. `Bottom` — after all existing widgets (default when `position` is omitted). `After` — immediately after the widget identified by `widgetId`.","oneOf":[{"title":"WidgetPositionAfter","type":"object","required":["widgetId","type"],"properties":{"widgetId":{"title":"EntityID","description":"The ID of the widget.","type":"string"},"type":{"description":"Discriminator value for this variant. See the parent oneOf for the full set of values.","type":"string","const":"After"}}},{"title":"WidgetPositionBottom","type":"object","required":["type"],"properties":{"type":{"description":"Discriminator value for this variant. See the parent oneOf for the full set of values.","type":"string","const":"Bottom"}}},{"title":"WidgetPositionTop","type":"object","required":["type"],"properties":{"type":{"description":"Discriminator value for this variant. See the parent oneOf for the full set of values.","type":"string","const":"Top"}}}],"required":["type"],"discriminator":{"propertyName":"type","mapping":{"After":"#/components/schemas/WidgetPositionAfter","Bottom":"#/components/schemas/WidgetPositionBottom","Top":"#/components/schemas/WidgetPositionTop"}}},"label":{"description":"Display label shown to the end user.","type":"string","maxLength":255},"config":{"title":"PublicApiEmailFormFieldConfig","description":"Field-specific configuration. Shape depends on `fieldType`.","type":"object","properties":{"placeholder":{"description":"Placeholder hint shown in the input when no value has been entered.","type":"string"},"defaultValue":{"description":"Default value pre-filled when a new workflow run is created.","type":"string"}}},"constraints":{"title":"PublicApiEmailFormFieldConstraints","description":"Field-specific validation constraints. Shape depends on `fieldType`.","type":"object","properties":{"domains":{"description":"Allowed (or blocked, depending on `restriction`) email domains for this field.","type":"array","items":{"type":"string"}},"restriction":{"description":"How the `domains` list filters allowed email addresses.\n\n- `Allow` — only emails whose domain is in the list are accepted.\n- `Block` — emails whose domain is in the list are rejected; all others accepted.\n","type":"string","enum":["Allow","Block"]}}},"type":{"description":"Discriminator value for this variant. See the parent oneOf for the full set of values.","examples":["FormField"],"type":"string","enum":["FormField"]},"fieldType":{"description":"Form-field subtype discriminator (only relevant when widget `type` is `FormField`).\n\n- `Text` — short text input (≤255 characters).\n- `Textarea` — long-form text.\n- `Email` — email address.\n- `Url` — website / URL.\n- `Number` — numeric input with optional unit and constraints.\n- `Date` — date or date+time picker.\n- `Select` — dropdown; user picks one option.\n- `MultiChoice` — checkboxes; user picks one or more options.\n- `MultiSelect` — Subtasks: a checklist of sub-items inside the task.\n- `Members` — assignee picker (selects organization users).\n- `File` — single file upload.\n- `MultiFile` — multi-file upload (in-app \"File Upload\").\n- `Document` — document approval field; links the task to a document review.\n- `Table` — rows × columns of cells; users fill cell values.\n- `SendRichEmail` — pre-written email embedded in the task; sent manually by the user or\n  automatically when the task is completed.\n- `Hidden` — only visible when editing the workflow; populated by integrations or default values.\n- `Snippet` — only visible when editing; passes static text or merge tags into automations.\n","type":"string","enum":["Date","Document","Email","File","Hidden","Members","MultiChoice","MultiFile","MultiSelect","Number","Select","SendRichEmail","Snippet","Table","Text","Textarea","Url"],"const":"Email"}}},{"title":"CreateHiddenFormFieldRequest","type":"object","required":["type","fieldType"],"properties":{"hiddenByDefault":{"description":"When `true`, the widget is hidden by default; conditional logic rules can reveal it at runtime. Defaults to `false`.","type":"boolean"},"position":{"title":"WidgetPosition","description":"Where to place this widget on the task. `Top` — before all existing widgets. `Bottom` — after all existing widgets (default when `position` is omitted). `After` — immediately after the widget identified by `widgetId`.","oneOf":[{"title":"WidgetPositionAfter","type":"object","required":["widgetId","type"],"properties":{"widgetId":{"title":"EntityID","description":"The ID of the widget.","type":"string"},"type":{"description":"Discriminator value for this variant. See the parent oneOf for the full set of values.","type":"string","const":"After"}}},{"title":"WidgetPositionBottom","type":"object","required":["type"],"properties":{"type":{"description":"Discriminator value for this variant. See the parent oneOf for the full set of values.","type":"string","const":"Bottom"}}},{"title":"WidgetPositionTop","type":"object","required":["type"],"properties":{"type":{"description":"Discriminator value for this variant. See the parent oneOf for the full set of values.","type":"string","const":"Top"}}}],"required":["type"],"discriminator":{"propertyName":"type","mapping":{"After":"#/components/schemas/WidgetPositionAfter","Bottom":"#/components/schemas/WidgetPositionBottom","Top":"#/components/schemas/WidgetPositionTop"}}},"label":{"description":"Display label shown to the end user.","type":"string","maxLength":255},"config":{"title":"PublicApiHiddenFormFieldConfig","description":"Field-specific configuration. Shape depends on `fieldType`.","type":"object","properties":{"defaultValue":{"description":"Default value pre-filled when a new workflow run is created.","type":"string"}}},"type":{"description":"Discriminator value for this variant. See the parent oneOf for the full set of values.","examples":["FormField"],"type":"string","enum":["FormField"]},"fieldType":{"description":"Form-field subtype discriminator (only relevant when widget `type` is `FormField`).\n\n- `Text` — short text input (≤255 characters).\n- `Textarea` — long-form text.\n- `Email` — email address.\n- `Url` — website / URL.\n- `Number` — numeric input with optional unit and constraints.\n- `Date` — date or date+time picker.\n- `Select` — dropdown; user picks one option.\n- `MultiChoice` — checkboxes; user picks one or more options.\n- `MultiSelect` — Subtasks: a checklist of sub-items inside the task.\n- `Members` — assignee picker (selects organization users).\n- `File` — single file upload.\n- `MultiFile` — multi-file upload (in-app \"File Upload\").\n- `Document` — document approval field; links the task to a document review.\n- `Table` — rows × columns of cells; users fill cell values.\n- `SendRichEmail` — pre-written email embedded in the task; sent manually by the user or\n  automatically when the task is completed.\n- `Hidden` — only visible when editing the workflow; populated by integrations or default values.\n- `Snippet` — only visible when editing; passes static text or merge tags into automations.\n","type":"string","enum":["Date","Document","Email","File","Hidden","Members","MultiChoice","MultiFile","MultiSelect","Number","Select","SendRichEmail","Snippet","Table","Text","Textarea","Url"],"const":"Hidden"}}},{"title":"CreateMembersFormFieldRequest","type":"object","required":["type","fieldType"],"properties":{"hiddenByDefault":{"description":"When `true`, the widget is hidden by default; conditional logic rules can reveal it at runtime. Defaults to `false`.","type":"boolean"},"position":{"title":"WidgetPosition","description":"Where to place this widget on the task. `Top` — before all existing widgets. `Bottom` — after all existing widgets (default when `position` is omitted). `After` — immediately after the widget identified by `widgetId`.","oneOf":[{"title":"WidgetPositionAfter","type":"object","required":["widgetId","type"],"properties":{"widgetId":{"title":"EntityID","description":"The ID of the widget.","type":"string"},"type":{"description":"Discriminator value for this variant. See the parent oneOf for the full set of values.","type":"string","const":"After"}}},{"title":"WidgetPositionBottom","type":"object","required":["type"],"properties":{"type":{"description":"Discriminator value for this variant. See the parent oneOf for the full set of values.","type":"string","const":"Bottom"}}},{"title":"WidgetPositionTop","type":"object","required":["type"],"properties":{"type":{"description":"Discriminator value for this variant. See the parent oneOf for the full set of values.","type":"string","const":"Top"}}}],"required":["type"],"discriminator":{"propertyName":"type","mapping":{"After":"#/components/schemas/WidgetPositionAfter","Bottom":"#/components/schemas/WidgetPositionBottom","Top":"#/components/schemas/WidgetPositionTop"}}},"label":{"description":"Display label shown to the end user.","type":"string","maxLength":255},"config":{"title":"PublicApiMembersFormFieldConfig","description":"Field-specific configuration. Shape depends on `fieldType`.","type":"object","properties":{"defaultValue":{"description":"Default value pre-filled when a new workflow run is created.","type":"string"},"groupId":{"title":"EntityID","description":"The ID of an organization group.","type":"string"}}},"type":{"description":"Discriminator value for this variant. See the parent oneOf for the full set of values.","examples":["FormField"],"type":"string","enum":["FormField"]},"fieldType":{"description":"Form-field subtype discriminator (only relevant when widget `type` is `FormField`).\n\n- `Text` — short text input (≤255 characters).\n- `Textarea` — long-form text.\n- `Email` — email address.\n- `Url` — website / URL.\n- `Number` — numeric input with optional unit and constraints.\n- `Date` — date or date+time picker.\n- `Select` — dropdown; user picks one option.\n- `MultiChoice` — checkboxes; user picks one or more options.\n- `MultiSelect` — Subtasks: a checklist of sub-items inside the task.\n- `Members` — assignee picker (selects organization users).\n- `File` — single file upload.\n- `MultiFile` — multi-file upload (in-app \"File Upload\").\n- `Document` — document approval field; links the task to a document review.\n- `Table` — rows × columns of cells; users fill cell values.\n- `SendRichEmail` — pre-written email embedded in the task; sent manually by the user or\n  automatically when the task is completed.\n- `Hidden` — only visible when editing the workflow; populated by integrations or default values.\n- `Snippet` — only visible when editing; passes static text or merge tags into automations.\n","type":"string","enum":["Date","Document","Email","File","Hidden","Members","MultiChoice","MultiFile","MultiSelect","Number","Select","SendRichEmail","Snippet","Table","Text","Textarea","Url"],"const":"Members"}}},{"title":"CreateMultiChoiceFormFieldRequest","type":"object","required":["type","fieldType"],"properties":{"hiddenByDefault":{"description":"When `true`, the widget is hidden by default; conditional logic rules can reveal it at runtime. Defaults to `false`.","type":"boolean"},"position":{"title":"WidgetPosition","description":"Where to place this widget on the task. `Top` — before all existing widgets. `Bottom` — after all existing widgets (default when `position` is omitted). `After` — immediately after the widget identified by `widgetId`.","oneOf":[{"title":"WidgetPositionAfter","type":"object","required":["widgetId","type"],"properties":{"widgetId":{"title":"EntityID","description":"The ID of the widget.","type":"string"},"type":{"description":"Discriminator value for this variant. See the parent oneOf for the full set of values.","type":"string","const":"After"}}},{"title":"WidgetPositionBottom","type":"object","required":["type"],"properties":{"type":{"description":"Discriminator value for this variant. See the parent oneOf for the full set of values.","type":"string","const":"Bottom"}}},{"title":"WidgetPositionTop","type":"object","required":["type"],"properties":{"type":{"description":"Discriminator value for this variant. See the parent oneOf for the full set of values.","type":"string","const":"Top"}}}],"required":["type"],"discriminator":{"propertyName":"type","mapping":{"After":"#/components/schemas/WidgetPositionAfter","Bottom":"#/components/schemas/WidgetPositionBottom","Top":"#/components/schemas/WidgetPositionTop"}}},"label":{"description":"Display label shown to the end user.","type":"string","maxLength":255},"config":{"title":"PublicApiMultiChoiceFormFieldConfig","description":"Field-specific configuration. Shape depends on `fieldType`.","type":"object","properties":{"items":{"description":"Available options for selection-style form fields.","type":"array","items":{"title":"PublicApiFormFieldItem","type":"object","required":["name"],"properties":{"id":{"title":"EntityID","description":"The resource's ID.","type":"string"},"name":{"description":"Display name.","type":"string"}}}}}},"type":{"description":"Discriminator value for this variant. See the parent oneOf for the full set of values.","examples":["FormField"],"type":"string","enum":["FormField"]},"fieldType":{"description":"Form-field subtype discriminator (only relevant when widget `type` is `FormField`).\n\n- `Text` — short text input (≤255 characters).\n- `Textarea` — long-form text.\n- `Email` — email address.\n- `Url` — website / URL.\n- `Number` — numeric input with optional unit and constraints.\n- `Date` — date or date+time picker.\n- `Select` — dropdown; user picks one option.\n- `MultiChoice` — checkboxes; user picks one or more options.\n- `MultiSelect` — Subtasks: a checklist of sub-items inside the task.\n- `Members` — assignee picker (selects organization users).\n- `File` — single file upload.\n- `MultiFile` — multi-file upload (in-app \"File Upload\").\n- `Document` — document approval field; links the task to a document review.\n- `Table` — rows × columns of cells; users fill cell values.\n- `SendRichEmail` — pre-written email embedded in the task; sent manually by the user or\n  automatically when the task is completed.\n- `Hidden` — only visible when editing the workflow; populated by integrations or default values.\n- `Snippet` — only visible when editing; passes static text or merge tags into automations.\n","type":"string","enum":["Date","Document","Email","File","Hidden","Members","MultiChoice","MultiFile","MultiSelect","Number","Select","SendRichEmail","Snippet","Table","Text","Textarea","Url"],"const":"MultiChoice"}}},{"title":"CreateMultiFileFormFieldRequest","type":"object","required":["type","fieldType"],"properties":{"hiddenByDefault":{"description":"When `true`, the widget is hidden by default; conditional logic rules can reveal it at runtime. Defaults to `false`.","type":"boolean"},"position":{"title":"WidgetPosition","description":"Where to place this widget on the task. `Top` — before all existing widgets. `Bottom` — after all existing widgets (default when `position` is omitted). `After` — immediately after the widget identified by `widgetId`.","oneOf":[{"title":"WidgetPositionAfter","type":"object","required":["widgetId","type"],"properties":{"widgetId":{"title":"EntityID","description":"The ID of the widget.","type":"string"},"type":{"description":"Discriminator value for this variant. See the parent oneOf for the full set of values.","type":"string","const":"After"}}},{"title":"WidgetPositionBottom","type":"object","required":["type"],"properties":{"type":{"description":"Discriminator value for this variant. See the parent oneOf for the full set of values.","type":"string","const":"Bottom"}}},{"title":"WidgetPositionTop","type":"object","required":["type"],"properties":{"type":{"description":"Discriminator value for this variant. See the parent oneOf for the full set of values.","type":"string","const":"Top"}}}],"required":["type"],"discriminator":{"propertyName":"type","mapping":{"After":"#/components/schemas/WidgetPositionAfter","Bottom":"#/components/schemas/WidgetPositionBottom","Top":"#/components/schemas/WidgetPositionTop"}}},"label":{"description":"Display label shown to the end user.","type":"string","maxLength":255},"config":{"title":"PublicApiMultiFileFormFieldConfig","description":"Field-specific configuration. Shape depends on `fieldType`.","type":"object","properties":{"placeholder":{"description":"Placeholder hint shown in the input when no value has been entered.","type":"string"},"extractTextContent":{"description":"When `true`, server extracts text from uploaded documents for use in merge tags.","type":"boolean"}}},"constraints":{"title":"PublicApiMultiFileFormFieldConstraints","description":"Field-specific validation constraints. Shape depends on `fieldType`.","type":"object","properties":{"extensions":{"description":"Allowed file extensions, including the leading dot (e.g. `.pdf`, `.docx`).","type":"array","items":{"type":"string"}},"mode":{"description":"Whether the field accepts a single file or multiple files.\n\n- `Single` — only one file may be uploaded.\n- `Multiple` — multiple files may be uploaded.\n","type":"string","enum":["Multiple","Single"]}}},"type":{"description":"Discriminator value for this variant. See the parent oneOf for the full set of values.","examples":["FormField"],"type":"string","enum":["FormField"]},"fieldType":{"description":"Form-field subtype discriminator (only relevant when widget `type` is `FormField`).\n\n- `Text` — short text input (≤255 characters).\n- `Textarea` — long-form text.\n- `Email` — email address.\n- `Url` — website / URL.\n- `Number` — numeric input with optional unit and constraints.\n- `Date` — date or date+time picker.\n- `Select` — dropdown; user picks one option.\n- `MultiChoice` — checkboxes; user picks one or more options.\n- `MultiSelect` — Subtasks: a checklist of sub-items inside the task.\n- `Members` — assignee picker (selects organization users).\n- `File` — single file upload.\n- `MultiFile` — multi-file upload (in-app \"File Upload\").\n- `Document` — document approval field; links the task to a document review.\n- `Table` — rows × columns of cells; users fill cell values.\n- `SendRichEmail` — pre-written email embedded in the task; sent manually by the user or\n  automatically when the task is completed.\n- `Hidden` — only visible when editing the workflow; populated by integrations or default values.\n- `Snippet` — only visible when editing; passes static text or merge tags into automations.\n","type":"string","enum":["Date","Document","Email","File","Hidden","Members","MultiChoice","MultiFile","MultiSelect","Number","Select","SendRichEmail","Snippet","Table","Text","Textarea","Url"],"const":"MultiFile"}}},{"title":"CreateMultiSelectFormFieldRequest","type":"object","required":["type","fieldType"],"properties":{"hiddenByDefault":{"description":"When `true`, the widget is hidden by default; conditional logic rules can reveal it at runtime. Defaults to `false`.","type":"boolean"},"position":{"title":"WidgetPosition","description":"Where to place this widget on the task. `Top` — before all existing widgets. `Bottom` — after all existing widgets (default when `position` is omitted). `After` — immediately after the widget identified by `widgetId`.","oneOf":[{"title":"WidgetPositionAfter","type":"object","required":["widgetId","type"],"properties":{"widgetId":{"title":"EntityID","description":"The ID of the widget.","type":"string"},"type":{"description":"Discriminator value for this variant. See the parent oneOf for the full set of values.","type":"string","const":"After"}}},{"title":"WidgetPositionBottom","type":"object","required":["type"],"properties":{"type":{"description":"Discriminator value for this variant. See the parent oneOf for the full set of values.","type":"string","const":"Bottom"}}},{"title":"WidgetPositionTop","type":"object","required":["type"],"properties":{"type":{"description":"Discriminator value for this variant. See the parent oneOf for the full set of values.","type":"string","const":"Top"}}}],"required":["type"],"discriminator":{"propertyName":"type","mapping":{"After":"#/components/schemas/WidgetPositionAfter","Bottom":"#/components/schemas/WidgetPositionBottom","Top":"#/components/schemas/WidgetPositionTop"}}},"label":{"description":"Display label shown to the end user.","type":"string","maxLength":255},"config":{"title":"PublicApiMultiSelectFormFieldConfig","description":"Field-specific configuration. Shape depends on `fieldType`.","type":"object","properties":{"items":{"description":"Available options for selection-style form fields.","type":"array","items":{"title":"PublicApiFormFieldItem","type":"object","required":["name"],"properties":{"id":{"title":"EntityID","description":"The resource's ID.","type":"string"},"name":{"description":"Display name.","type":"string"}}}}}},"type":{"description":"Discriminator value for this variant. See the parent oneOf for the full set of values.","examples":["FormField"],"type":"string","enum":["FormField"]},"fieldType":{"description":"Form-field subtype discriminator (only relevant when widget `type` is `FormField`).\n\n- `Text` — short text input (≤255 characters).\n- `Textarea` — long-form text.\n- `Email` — email address.\n- `Url` — website / URL.\n- `Number` — numeric input with optional unit and constraints.\n- `Date` — date or date+time picker.\n- `Select` — dropdown; user picks one option.\n- `MultiChoice` — checkboxes; user picks one or more options.\n- `MultiSelect` — Subtasks: a checklist of sub-items inside the task.\n- `Members` — assignee picker (selects organization users).\n- `File` — single file upload.\n- `MultiFile` — multi-file upload (in-app \"File Upload\").\n- `Document` — document approval field; links the task to a document review.\n- `Table` — rows × columns of cells; users fill cell values.\n- `SendRichEmail` — pre-written email embedded in the task; sent manually by the user or\n  automatically when the task is completed.\n- `Hidden` — only visible when editing the workflow; populated by integrations or default values.\n- `Snippet` — only visible when editing; passes static text or merge tags into automations.\n","type":"string","enum":["Date","Document","Email","File","Hidden","Members","MultiChoice","MultiFile","MultiSelect","Number","Select","SendRichEmail","Snippet","Table","Text","Textarea","Url"],"const":"MultiSelect"}}},{"title":"CreateNumberFormFieldRequest","type":"object","required":["type","fieldType"],"properties":{"hiddenByDefault":{"description":"When `true`, the widget is hidden by default; conditional logic rules can reveal it at runtime. Defaults to `false`.","type":"boolean"},"position":{"title":"WidgetPosition","description":"Where to place this widget on the task. `Top` — before all existing widgets. `Bottom` — after all existing widgets (default when `position` is omitted). `After` — immediately after the widget identified by `widgetId`.","oneOf":[{"title":"WidgetPositionAfter","type":"object","required":["widgetId","type"],"properties":{"widgetId":{"title":"EntityID","description":"The ID of the widget.","type":"string"},"type":{"description":"Discriminator value for this variant. See the parent oneOf for the full set of values.","type":"string","const":"After"}}},{"title":"WidgetPositionBottom","type":"object","required":["type"],"properties":{"type":{"description":"Discriminator value for this variant. See the parent oneOf for the full set of values.","type":"string","const":"Bottom"}}},{"title":"WidgetPositionTop","type":"object","required":["type"],"properties":{"type":{"description":"Discriminator value for this variant. See the parent oneOf for the full set of values.","type":"string","const":"Top"}}}],"required":["type"],"discriminator":{"propertyName":"type","mapping":{"After":"#/components/schemas/WidgetPositionAfter","Bottom":"#/components/schemas/WidgetPositionBottom","Top":"#/components/schemas/WidgetPositionTop"}}},"label":{"description":"Display label shown to the end user.","type":"string","maxLength":255},"config":{"title":"PublicApiNumberFormFieldConfig","description":"Field-specific configuration. Shape depends on `fieldType`.","type":"object","properties":{"placeholder":{"description":"Placeholder hint shown in the input when no value has been entered.","type":"string"},"defaultValue":{"description":"Default value pre-filled when a new workflow run is created.","type":"string"},"unit":{"description":"Unit label rendered next to the numeric value (e.g. `kg`, `$`, `%`).","type":"string"},"unitLocation":{"description":"Where the unit symbol appears relative to the number.\n\n- `prefix` — before the number (e.g. `$100`).\n- `suffix` — after the number (e.g. `100 USD`).\n","type":"string","enum":["prefix","suffix"]}}},"constraints":{"title":"PublicApiNumberFormFieldConstraints","description":"Field-specific validation constraints. Shape depends on `fieldType`.","type":"object","properties":{"minDigits":{"description":"Minimum number of digits.","type":"integer","format":"int32"},"maxDigits":{"description":"Maximum number of digits.","type":"integer","format":"int32"},"minValue":{"description":"Minimum numeric value.","type":"integer","format":"int32"},"maxValue":{"description":"Maximum numeric value.","type":"integer","format":"int32"},"decimalPlaces":{"description":"Number of decimal places to accept (0 means integers only).","type":"integer","format":"int32"},"allowNegative":{"description":"When `true`, negative numbers are accepted.","type":"boolean"}}},"type":{"description":"Discriminator value for this variant. See the parent oneOf for the full set of values.","examples":["FormField"],"type":"string","enum":["FormField"]},"fieldType":{"description":"Form-field subtype discriminator (only relevant when widget `type` is `FormField`).\n\n- `Text` — short text input (≤255 characters).\n- `Textarea` — long-form text.\n- `Email` — email address.\n- `Url` — website / URL.\n- `Number` — numeric input with optional unit and constraints.\n- `Date` — date or date+time picker.\n- `Select` — dropdown; user picks one option.\n- `MultiChoice` — checkboxes; user picks one or more options.\n- `MultiSelect` — Subtasks: a checklist of sub-items inside the task.\n- `Members` — assignee picker (selects organization users).\n- `File` — single file upload.\n- `MultiFile` — multi-file upload (in-app \"File Upload\").\n- `Document` — document approval field; links the task to a document review.\n- `Table` — rows × columns of cells; users fill cell values.\n- `SendRichEmail` — pre-written email embedded in the task; sent manually by the user or\n  automatically when the task is completed.\n- `Hidden` — only visible when editing the workflow; populated by integrations or default values.\n- `Snippet` — only visible when editing; passes static text or merge tags into automations.\n","type":"string","enum":["Date","Document","Email","File","Hidden","Members","MultiChoice","MultiFile","MultiSelect","Number","Select","SendRichEmail","Snippet","Table","Text","Textarea","Url"],"const":"Number"}}},{"title":"CreateSelectFormFieldRequest","type":"object","required":["type","fieldType"],"properties":{"hiddenByDefault":{"description":"When `true`, the widget is hidden by default; conditional logic rules can reveal it at runtime. Defaults to `false`.","type":"boolean"},"position":{"title":"WidgetPosition","description":"Where to place this widget on the task. `Top` — before all existing widgets. `Bottom` — after all existing widgets (default when `position` is omitted). `After` — immediately after the widget identified by `widgetId`.","oneOf":[{"title":"WidgetPositionAfter","type":"object","required":["widgetId","type"],"properties":{"widgetId":{"title":"EntityID","description":"The ID of the widget.","type":"string"},"type":{"description":"Discriminator value for this variant. See the parent oneOf for the full set of values.","type":"string","const":"After"}}},{"title":"WidgetPositionBottom","type":"object","required":["type"],"properties":{"type":{"description":"Discriminator value for this variant. See the parent oneOf for the full set of values.","type":"string","const":"Bottom"}}},{"title":"WidgetPositionTop","type":"object","required":["type"],"properties":{"type":{"description":"Discriminator value for this variant. See the parent oneOf for the full set of values.","type":"string","const":"Top"}}}],"required":["type"],"discriminator":{"propertyName":"type","mapping":{"After":"#/components/schemas/WidgetPositionAfter","Bottom":"#/components/schemas/WidgetPositionBottom","Top":"#/components/schemas/WidgetPositionTop"}}},"label":{"description":"Display label shown to the end user.","type":"string","maxLength":255},"config":{"title":"PublicApiSelectFormFieldConfig","description":"Field-specific configuration. Shape depends on `fieldType`.","type":"object","properties":{"items":{"description":"Available options for selection-style form fields.","type":"array","items":{"title":"PublicApiFormFieldItem","type":"object","required":["name"],"properties":{"id":{"title":"EntityID","description":"The resource's ID.","type":"string"},"name":{"description":"Display name.","type":"string"}}}},"defaultValue":{"description":"Default value pre-filled when a new workflow run is created.","type":"string"}}},"type":{"description":"Discriminator value for this variant. See the parent oneOf for the full set of values.","examples":["FormField"],"type":"string","enum":["FormField"]},"fieldType":{"description":"Form-field subtype discriminator (only relevant when widget `type` is `FormField`).\n\n- `Text` — short text input (≤255 characters).\n- `Textarea` — long-form text.\n- `Email` — email address.\n- `Url` — website / URL.\n- `Number` — numeric input with optional unit and constraints.\n- `Date` — date or date+time picker.\n- `Select` — dropdown; user picks one option.\n- `MultiChoice` — checkboxes; user picks one or more options.\n- `MultiSelect` — Subtasks: a checklist of sub-items inside the task.\n- `Members` — assignee picker (selects organization users).\n- `File` — single file upload.\n- `MultiFile` — multi-file upload (in-app \"File Upload\").\n- `Document` — document approval field; links the task to a document review.\n- `Table` — rows × columns of cells; users fill cell values.\n- `SendRichEmail` — pre-written email embedded in the task; sent manually by the user or\n  automatically when the task is completed.\n- `Hidden` — only visible when editing the workflow; populated by integrations or default values.\n- `Snippet` — only visible when editing; passes static text or merge tags into automations.\n","type":"string","enum":["Date","Document","Email","File","Hidden","Members","MultiChoice","MultiFile","MultiSelect","Number","Select","SendRichEmail","Snippet","Table","Text","Textarea","Url"],"const":"Select"}}},{"title":"CreateSendRichEmailFormFieldRequest","type":"object","required":["type","fieldType"],"properties":{"hiddenByDefault":{"description":"When `true`, the widget is hidden by default; conditional logic rules can reveal it at runtime. Defaults to `false`.","type":"boolean"},"position":{"title":"WidgetPosition","description":"Where to place this widget on the task. `Top` — before all existing widgets. `Bottom` — after all existing widgets (default when `position` is omitted). `After` — immediately after the widget identified by `widgetId`.","oneOf":[{"title":"WidgetPositionAfter","type":"object","required":["widgetId","type"],"properties":{"widgetId":{"title":"EntityID","description":"The ID of the widget.","type":"string"},"type":{"description":"Discriminator value for this variant. See the parent oneOf for the full set of values.","type":"string","const":"After"}}},{"title":"WidgetPositionBottom","type":"object","required":["type"],"properties":{"type":{"description":"Discriminator value for this variant. See the parent oneOf for the full set of values.","type":"string","const":"Bottom"}}},{"title":"WidgetPositionTop","type":"object","required":["type"],"properties":{"type":{"description":"Discriminator value for this variant. See the parent oneOf for the full set of values.","type":"string","const":"Top"}}}],"required":["type"],"discriminator":{"propertyName":"type","mapping":{"After":"#/components/schemas/WidgetPositionAfter","Bottom":"#/components/schemas/WidgetPositionBottom","Top":"#/components/schemas/WidgetPositionTop"}}},"label":{"description":"Display label shown to the end user.","type":"string","maxLength":255},"config":{"title":"PublicApiSendRichEmailFormFieldConfig","description":"Field-specific configuration. Shape depends on `fieldType`.","type":"object","required":["bodyEditor"],"properties":{"to":{"description":"Default recipient list (To). Comma-separated email addresses or merge tags.","type":"array","items":{"type":"string"}},"cc":{"description":"Default CC list. Comma-separated email addresses or merge tags.","type":"array","items":{"type":"string"}},"bcc":{"description":"Default BCC list. Comma-separated email addresses or merge tags.","type":"array","items":{"type":"string"}},"replyTo":{"description":"Default Reply-To address. An email address or merge tag.","type":"array","items":{"type":"string"}},"subject":{"description":"Default email subject. May contain merge tags.","type":"string"},"body":{"description":"Default email body. May contain merge tags.","type":"string"},"bodyEditor":{"description":"Editor used to author the email body.\n\n- `RichText` — rich-text editor with formatting.\n- `HTML` — raw HTML editor.\n- `PlainText` — plain text editor.\n","type":"string","enum":["RichText","HTML","PlainText"]},"editAllowed":{"description":"When `true`, users running the workflow can edit the email before sending.","type":"boolean"}}},"type":{"description":"Discriminator value for this variant. See the parent oneOf for the full set of values.","examples":["FormField"],"type":"string","enum":["FormField"]},"fieldType":{"description":"Form-field subtype discriminator (only relevant when widget `type` is `FormField`).\n\n- `Text` — short text input (≤255 characters).\n- `Textarea` — long-form text.\n- `Email` — email address.\n- `Url` — website / URL.\n- `Number` — numeric input with optional unit and constraints.\n- `Date` — date or date+time picker.\n- `Select` — dropdown; user picks one option.\n- `MultiChoice` — checkboxes; user picks one or more options.\n- `MultiSelect` — Subtasks: a checklist of sub-items inside the task.\n- `Members` — assignee picker (selects organization users).\n- `File` — single file upload.\n- `MultiFile` — multi-file upload (in-app \"File Upload\").\n- `Document` — document approval field; links the task to a document review.\n- `Table` — rows × columns of cells; users fill cell values.\n- `SendRichEmail` — pre-written email embedded in the task; sent manually by the user or\n  automatically when the task is completed.\n- `Hidden` — only visible when editing the workflow; populated by integrations or default values.\n- `Snippet` — only visible when editing; passes static text or merge tags into automations.\n","type":"string","enum":["Date","Document","Email","File","Hidden","Members","MultiChoice","MultiFile","MultiSelect","Number","Select","SendRichEmail","Snippet","Table","Text","Textarea","Url"],"const":"SendRichEmail"}}},{"title":"CreateSnippetFormFieldRequest","type":"object","required":["type","fieldType"],"properties":{"hiddenByDefault":{"description":"When `true`, the widget is hidden by default; conditional logic rules can reveal it at runtime. Defaults to `false`.","type":"boolean"},"position":{"title":"WidgetPosition","description":"Where to place this widget on the task. `Top` — before all existing widgets. `Bottom` — after all existing widgets (default when `position` is omitted). `After` — immediately after the widget identified by `widgetId`.","oneOf":[{"title":"WidgetPositionAfter","type":"object","required":["widgetId","type"],"properties":{"widgetId":{"title":"EntityID","description":"The ID of the widget.","type":"string"},"type":{"description":"Discriminator value for this variant. See the parent oneOf for the full set of values.","type":"string","const":"After"}}},{"title":"WidgetPositionBottom","type":"object","required":["type"],"properties":{"type":{"description":"Discriminator value for this variant. See the parent oneOf for the full set of values.","type":"string","const":"Bottom"}}},{"title":"WidgetPositionTop","type":"object","required":["type"],"properties":{"type":{"description":"Discriminator value for this variant. See the parent oneOf for the full set of values.","type":"string","const":"Top"}}}],"required":["type"],"discriminator":{"propertyName":"type","mapping":{"After":"#/components/schemas/WidgetPositionAfter","Bottom":"#/components/schemas/WidgetPositionBottom","Top":"#/components/schemas/WidgetPositionTop"}}},"label":{"description":"Display label shown to the end user.","type":"string","maxLength":255},"config":{"title":"PublicApiSnippetFormFieldConfig","description":"Field-specific configuration. Shape depends on `fieldType`.","type":"object","properties":{"value":{"description":"The option's stored value.","type":"string"}}},"type":{"description":"Discriminator value for this variant. See the parent oneOf for the full set of values.","examples":["FormField"],"type":"string","enum":["FormField"]},"fieldType":{"description":"Form-field subtype discriminator (only relevant when widget `type` is `FormField`).\n\n- `Text` — short text input (≤255 characters).\n- `Textarea` — long-form text.\n- `Email` — email address.\n- `Url` — website / URL.\n- `Number` — numeric input with optional unit and constraints.\n- `Date` — date or date+time picker.\n- `Select` — dropdown; user picks one option.\n- `MultiChoice` — checkboxes; user picks one or more options.\n- `MultiSelect` — Subtasks: a checklist of sub-items inside the task.\n- `Members` — assignee picker (selects organization users).\n- `File` — single file upload.\n- `MultiFile` — multi-file upload (in-app \"File Upload\").\n- `Document` — document approval field; links the task to a document review.\n- `Table` — rows × columns of cells; users fill cell values.\n- `SendRichEmail` — pre-written email embedded in the task; sent manually by the user or\n  automatically when the task is completed.\n- `Hidden` — only visible when editing the workflow; populated by integrations or default values.\n- `Snippet` — only visible when editing; passes static text or merge tags into automations.\n","type":"string","enum":["Date","Document","Email","File","Hidden","Members","MultiChoice","MultiFile","MultiSelect","Number","Select","SendRichEmail","Snippet","Table","Text","Textarea","Url"],"const":"Snippet"}}},{"title":"CreateTableFormFieldRequest","type":"object","required":["type","fieldType"],"properties":{"hiddenByDefault":{"description":"When `true`, the widget is hidden by default; conditional logic rules can reveal it at runtime. Defaults to `false`.","type":"boolean"},"position":{"title":"WidgetPosition","description":"Where to place this widget on the task. `Top` — before all existing widgets. `Bottom` — after all existing widgets (default when `position` is omitted). `After` — immediately after the widget identified by `widgetId`.","oneOf":[{"title":"WidgetPositionAfter","type":"object","required":["widgetId","type"],"properties":{"widgetId":{"title":"EntityID","description":"The ID of the widget.","type":"string"},"type":{"description":"Discriminator value for this variant. See the parent oneOf for the full set of values.","type":"string","const":"After"}}},{"title":"WidgetPositionBottom","type":"object","required":["type"],"properties":{"type":{"description":"Discriminator value for this variant. See the parent oneOf for the full set of values.","type":"string","const":"Bottom"}}},{"title":"WidgetPositionTop","type":"object","required":["type"],"properties":{"type":{"description":"Discriminator value for this variant. See the parent oneOf for the full set of values.","type":"string","const":"Top"}}}],"required":["type"],"discriminator":{"propertyName":"type","mapping":{"After":"#/components/schemas/WidgetPositionAfter","Bottom":"#/components/schemas/WidgetPositionBottom","Top":"#/components/schemas/WidgetPositionTop"}}},"label":{"description":"Display label shown to the end user.","type":"string","maxLength":255},"config":{"title":"PublicApiTableFormFieldConfig","description":"Field-specific configuration. Shape depends on `fieldType`.","type":"object","properties":{"columnDefs":{"description":"Data set column definitions (name + type per column).","type":"array","items":{"title":"PublicApiTableFormFieldColumn","type":"object","required":["id","name","columnType"],"properties":{"id":{"title":"EntityID","description":"The resource's ID.","type":"string"},"name":{"description":"Display name.","type":"string"},"columnType":{"description":"Data type a Table column accepts.\n\n- `Text` — free-form short text.\n","type":"string","enum":["Text"]}}}},"defaultValue":{"description":"Default value pre-filled when a new workflow run is created.","type":"string"}}},"type":{"description":"Discriminator value for this variant. See the parent oneOf for the full set of values.","examples":["FormField"],"type":"string","enum":["FormField"]},"fieldType":{"description":"Form-field subtype discriminator (only relevant when widget `type` is `FormField`).\n\n- `Text` — short text input (≤255 characters).\n- `Textarea` — long-form text.\n- `Email` — email address.\n- `Url` — website / URL.\n- `Number` — numeric input with optional unit and constraints.\n- `Date` — date or date+time picker.\n- `Select` — dropdown; user picks one option.\n- `MultiChoice` — checkboxes; user picks one or more options.\n- `MultiSelect` — Subtasks: a checklist of sub-items inside the task.\n- `Members` — assignee picker (selects organization users).\n- `File` — single file upload.\n- `MultiFile` — multi-file upload (in-app \"File Upload\").\n- `Document` — document approval field; links the task to a document review.\n- `Table` — rows × columns of cells; users fill cell values.\n- `SendRichEmail` — pre-written email embedded in the task; sent manually by the user or\n  automatically when the task is completed.\n- `Hidden` — only visible when editing the workflow; populated by integrations or default values.\n- `Snippet` — only visible when editing; passes static text or merge tags into automations.\n","type":"string","enum":["Date","Document","Email","File","Hidden","Members","MultiChoice","MultiFile","MultiSelect","Number","Select","SendRichEmail","Snippet","Table","Text","Textarea","Url"],"const":"Table"}}},{"title":"CreateTextFormFieldRequest","type":"object","required":["type","fieldType"],"properties":{"hiddenByDefault":{"description":"When `true`, the widget is hidden by default; conditional logic rules can reveal it at runtime. Defaults to `false`.","type":"boolean"},"position":{"title":"WidgetPosition","description":"Where to place this widget on the task. `Top` — before all existing widgets. `Bottom` — after all existing widgets (default when `position` is omitted). `After` — immediately after the widget identified by `widgetId`.","oneOf":[{"title":"WidgetPositionAfter","type":"object","required":["widgetId","type"],"properties":{"widgetId":{"title":"EntityID","description":"The ID of the widget.","type":"string"},"type":{"description":"Discriminator value for this variant. See the parent oneOf for the full set of values.","type":"string","const":"After"}}},{"title":"WidgetPositionBottom","type":"object","required":["type"],"properties":{"type":{"description":"Discriminator value for this variant. See the parent oneOf for the full set of values.","type":"string","const":"Bottom"}}},{"title":"WidgetPositionTop","type":"object","required":["type"],"properties":{"type":{"description":"Discriminator value for this variant. See the parent oneOf for the full set of values.","type":"string","const":"Top"}}}],"required":["type"],"discriminator":{"propertyName":"type","mapping":{"After":"#/components/schemas/WidgetPositionAfter","Bottom":"#/components/schemas/WidgetPositionBottom","Top":"#/components/schemas/WidgetPositionTop"}}},"label":{"description":"Display label shown to the end user.","type":"string","maxLength":255},"config":{"title":"PublicApiTextFormFieldConfig","description":"Field-specific configuration. Shape depends on `fieldType`.","type":"object","properties":{"placeholder":{"description":"Placeholder hint shown in the input when no value has been entered.","type":"string"},"defaultValue":{"description":"Default value pre-filled when a new workflow run is created.","type":"string"}}},"constraints":{"title":"PublicApiTextFormFieldConstraints","description":"Field-specific validation constraints. Shape depends on `fieldType`.","type":"object","properties":{"min":{"description":"Inclusive lower bound.","type":"integer","format":"int32"},"max":{"description":"Inclusive upper bound.","type":"integer","format":"int32"}}},"type":{"description":"Discriminator value for this variant. See the parent oneOf for the full set of values.","examples":["FormField"],"type":"string","enum":["FormField"]},"fieldType":{"description":"Form-field subtype discriminator (only relevant when widget `type` is `FormField`).\n\n- `Text` — short text input (≤255 characters).\n- `Textarea` — long-form text.\n- `Email` — email address.\n- `Url` — website / URL.\n- `Number` — numeric input with optional unit and constraints.\n- `Date` — date or date+time picker.\n- `Select` — dropdown; user picks one option.\n- `MultiChoice` — checkboxes; user picks one or more options.\n- `MultiSelect` — Subtasks: a checklist of sub-items inside the task.\n- `Members` — assignee picker (selects organization users).\n- `File` — single file upload.\n- `MultiFile` — multi-file upload (in-app \"File Upload\").\n- `Document` — document approval field; links the task to a document review.\n- `Table` — rows × columns of cells; users fill cell values.\n- `SendRichEmail` — pre-written email embedded in the task; sent manually by the user or\n  automatically when the task is completed.\n- `Hidden` — only visible when editing the workflow; populated by integrations or default values.\n- `Snippet` — only visible when editing; passes static text or merge tags into automations.\n","type":"string","enum":["Date","Document","Email","File","Hidden","Members","MultiChoice","MultiFile","MultiSelect","Number","Select","SendRichEmail","Snippet","Table","Text","Textarea","Url"],"const":"Text"}}},{"title":"CreateTextareaFormFieldRequest","type":"object","required":["type","fieldType"],"properties":{"hiddenByDefault":{"description":"When `true`, the widget is hidden by default; conditional logic rules can reveal it at runtime. Defaults to `false`.","type":"boolean"},"position":{"title":"WidgetPosition","description":"Where to place this widget on the task. `Top` — before all existing widgets. `Bottom` — after all existing widgets (default when `position` is omitted). `After` — immediately after the widget identified by `widgetId`.","oneOf":[{"title":"WidgetPositionAfter","type":"object","required":["widgetId","type"],"properties":{"widgetId":{"title":"EntityID","description":"The ID of the widget.","type":"string"},"type":{"description":"Discriminator value for this variant. See the parent oneOf for the full set of values.","type":"string","const":"After"}}},{"title":"WidgetPositionBottom","type":"object","required":["type"],"properties":{"type":{"description":"Discriminator value for this variant. See the parent oneOf for the full set of values.","type":"string","const":"Bottom"}}},{"title":"WidgetPositionTop","type":"object","required":["type"],"properties":{"type":{"description":"Discriminator value for this variant. See the parent oneOf for the full set of values.","type":"string","const":"Top"}}}],"required":["type"],"discriminator":{"propertyName":"type","mapping":{"After":"#/components/schemas/WidgetPositionAfter","Bottom":"#/components/schemas/WidgetPositionBottom","Top":"#/components/schemas/WidgetPositionTop"}}},"label":{"description":"Display label shown to the end user.","type":"string","maxLength":255},"config":{"title":"PublicApiTextareaFormFieldConfig","description":"Field-specific configuration. Shape depends on `fieldType`.","type":"object","properties":{"placeholder":{"description":"Placeholder hint shown in the input when no value has been entered.","type":"string"},"defaultValue":{"description":"Default value pre-filled when a new workflow run is created.","type":"string"},"format":{"description":"Editor style for this Textarea field.\n\n- `PlainText` — plain text.\n- `RichText` — rich-text editor with formatting (bold, lists, links, etc.).\n","type":"string","enum":["PlainText","RichText"]}}},"constraints":{"title":"PublicApiTextareaFormFieldConstraints","description":"Field-specific validation constraints. Shape depends on `fieldType`.","type":"object","properties":{"min":{"description":"Inclusive lower bound.","type":"integer","format":"int32"},"max":{"description":"Inclusive upper bound.","type":"integer","format":"int32"}}},"type":{"description":"Discriminator value for this variant. See the parent oneOf for the full set of values.","examples":["FormField"],"type":"string","enum":["FormField"]},"fieldType":{"description":"Form-field subtype discriminator (only relevant when widget `type` is `FormField`).\n\n- `Text` — short text input (≤255 characters).\n- `Textarea` — long-form text.\n- `Email` — email address.\n- `Url` — website / URL.\n- `Number` — numeric input with optional unit and constraints.\n- `Date` — date or date+time picker.\n- `Select` — dropdown; user picks one option.\n- `MultiChoice` — checkboxes; user picks one or more options.\n- `MultiSelect` — Subtasks: a checklist of sub-items inside the task.\n- `Members` — assignee picker (selects organization users).\n- `File` — single file upload.\n- `MultiFile` — multi-file upload (in-app \"File Upload\").\n- `Document` — document approval field; links the task to a document review.\n- `Table` — rows × columns of cells; users fill cell values.\n- `SendRichEmail` — pre-written email embedded in the task; sent manually by the user or\n  automatically when the task is completed.\n- `Hidden` — only visible when editing the workflow; populated by integrations or default values.\n- `Snippet` — only visible when editing; passes static text or merge tags into automations.\n","type":"string","enum":["Date","Document","Email","File","Hidden","Members","MultiChoice","MultiFile","MultiSelect","Number","Select","SendRichEmail","Snippet","Table","Text","Textarea","Url"],"const":"Textarea"}}},{"title":"CreateUrlFormFieldRequest","type":"object","required":["type","fieldType"],"properties":{"hiddenByDefault":{"description":"When `true`, the widget is hidden by default; conditional logic rules can reveal it at runtime. Defaults to `false`.","type":"boolean"},"position":{"title":"WidgetPosition","description":"Where to place this widget on the task. `Top` — before all existing widgets. `Bottom` — after all existing widgets (default when `position` is omitted). `After` — immediately after the widget identified by `widgetId`.","oneOf":[{"title":"WidgetPositionAfter","type":"object","required":["widgetId","type"],"properties":{"widgetId":{"title":"EntityID","description":"The ID of the widget.","type":"string"},"type":{"description":"Discriminator value for this variant. See the parent oneOf for the full set of values.","type":"string","const":"After"}}},{"title":"WidgetPositionBottom","type":"object","required":["type"],"properties":{"type":{"description":"Discriminator value for this variant. See the parent oneOf for the full set of values.","type":"string","const":"Bottom"}}},{"title":"WidgetPositionTop","type":"object","required":["type"],"properties":{"type":{"description":"Discriminator value for this variant. See the parent oneOf for the full set of values.","type":"string","const":"Top"}}}],"required":["type"],"discriminator":{"propertyName":"type","mapping":{"After":"#/components/schemas/WidgetPositionAfter","Bottom":"#/components/schemas/WidgetPositionBottom","Top":"#/components/schemas/WidgetPositionTop"}}},"label":{"description":"Display label shown to the end user.","type":"string","maxLength":255},"config":{"title":"PublicApiUrlFormFieldConfig","description":"Field-specific configuration. Shape depends on `fieldType`.","type":"object","properties":{"defaultValue":{"description":"Default value pre-filled when a new workflow run is created.","type":"string"}}},"type":{"description":"Discriminator value for this variant. See the parent oneOf for the full set of values.","examples":["FormField"],"type":"string","enum":["FormField"]},"fieldType":{"description":"Form-field subtype discriminator (only relevant when widget `type` is `FormField`).\n\n- `Text` — short text input (≤255 characters).\n- `Textarea` — long-form text.\n- `Email` — email address.\n- `Url` — website / URL.\n- `Number` — numeric input with optional unit and constraints.\n- `Date` — date or date+time picker.\n- `Select` — dropdown; user picks one option.\n- `MultiChoice` — checkboxes; user picks one or more options.\n- `MultiSelect` — Subtasks: a checklist of sub-items inside the task.\n- `Members` — assignee picker (selects organization users).\n- `File` — single file upload.\n- `MultiFile` — multi-file upload (in-app \"File Upload\").\n- `Document` — document approval field; links the task to a document review.\n- `Table` — rows × columns of cells; users fill cell values.\n- `SendRichEmail` — pre-written email embedded in the task; sent manually by the user or\n  automatically when the task is completed.\n- `Hidden` — only visible when editing the workflow; populated by integrations or default values.\n- `Snippet` — only visible when editing; passes static text or merge tags into automations.\n","type":"string","enum":["Date","Document","Email","File","Hidden","Members","MultiChoice","MultiFile","MultiSelect","Number","Select","SendRichEmail","Snippet","Table","Text","Textarea","Url"],"const":"Url"}}}],"required":["fieldType"],"discriminator":{"propertyName":"fieldType","mapping":{"Date":"#/components/schemas/CreateDateFormFieldRequest","Document":"#/components/schemas/CreateDocumentFormFieldRequest","Email":"#/components/schemas/CreateEmailFormFieldRequest","Hidden":"#/components/schemas/CreateHiddenFormFieldRequest","Members":"#/components/schemas/CreateMembersFormFieldRequest","MultiChoice":"#/components/schemas/CreateMultiChoiceFormFieldRequest","MultiFile":"#/components/schemas/CreateMultiFileFormFieldRequest","MultiSelect":"#/components/schemas/CreateMultiSelectFormFieldRequest","Number":"#/components/schemas/CreateNumberFormFieldRequest","Select":"#/components/schemas/CreateSelectFormFieldRequest","SendRichEmail":"#/components/schemas/CreateSendRichEmailFormFieldRequest","Snippet":"#/components/schemas/CreateSnippetFormFieldRequest","Table":"#/components/schemas/CreateTableFormFieldRequest","Text":"#/components/schemas/CreateTextFormFieldRequest","Textarea":"#/components/schemas/CreateTextareaFormFieldRequest","Url":"#/components/schemas/CreateUrlFormFieldRequest"}},"properties":{"type":{"description":"Discriminator value for this variant. See the parent oneOf for the full set of values.","type":"string","const":"FormField"},"hiddenByDefault":{"description":"When `true`, the widget is hidden by default; conditional logic rules can reveal it at runtime. Defaults to `false`.","type":"boolean"},"position":{"title":"WidgetPosition","description":"Where to place this widget on the task. `Top` — before all existing widgets. `Bottom` — after all existing widgets (default when `position` is omitted). `After` — immediately after the widget identified by `widgetId`.","oneOf":[{"title":"WidgetPositionAfter","type":"object","required":["widgetId","type"],"properties":{"widgetId":{"title":"EntityID","description":"The ID of the widget.","type":"string"},"type":{"description":"Discriminator value for this variant. See the parent oneOf for the full set of values.","type":"string","const":"After"}}},{"title":"WidgetPositionBottom","type":"object","required":["type"],"properties":{"type":{"description":"Discriminator value for this variant. See the parent oneOf for the full set of values.","type":"string","const":"Bottom"}}},{"title":"WidgetPositionTop","type":"object","required":["type"],"properties":{"type":{"description":"Discriminator value for this variant. See the parent oneOf for the full set of values.","type":"string","const":"Top"}}}],"required":["type"],"discriminator":{"propertyName":"type","mapping":{"After":"#/components/schemas/WidgetPositionAfter","Bottom":"#/components/schemas/WidgetPositionBottom","Top":"#/components/schemas/WidgetPositionTop"}}},"label":{"description":"Display label shown to the end user.","type":"string","maxLength":255},"config":{"description":"Field-specific configuration. Shape depends on `fieldType`.","anyOf":[{"title":"PublicApiDateFormFieldConfig","type":"object","properties":{"defaultValue":{"description":"Default value pre-filled when a new workflow run is created.","type":"string"},"timeOption":{"description":"How time-of-day is handled on this Date field.\n\n- `Included` — the field always captures both date and time.\n- `Excluded` — date only; time is never captured.\n- `Optional` — the user picks whether to include a time.\n","type":"string","enum":["Included","Excluded","Optional"]}}},{"title":"PublicApiDocumentFormFieldConfig","type":"object","required":["reviewRequest"],"properties":{"reviewRequest":{"description":"When `true`, the email requires explicit user review/send rather than auto-send.","type":"boolean"},"defaultValue":{"description":"Default value pre-filled when a new workflow run is created.","type":"string"}}},{"title":"PublicApiEmailFormFieldConfig","type":"object","properties":{"placeholder":{"description":"Placeholder hint shown in the input when no value has been entered.","type":"string"},"defaultValue":{"description":"Default value pre-filled when a new workflow run is created.","type":"string"}}},{"title":"PublicApiHiddenFormFieldConfig","type":"object","properties":{"defaultValue":{"description":"Default value pre-filled when a new workflow run is created.","type":"string"}}},{"title":"PublicApiMembersFormFieldConfig","type":"object","properties":{"defaultValue":{"description":"Default value pre-filled when a new workflow run is created.","type":"string"},"groupId":{"title":"EntityID","description":"The ID of an organization group.","type":"string"}}},{"title":"PublicApiMultiChoiceFormFieldConfig","type":"object","properties":{"items":{"description":"Available options for selection-style form fields.","type":"array","items":{"title":"PublicApiFormFieldItem","type":"object","required":["name"],"properties":{"id":{"title":"EntityID","description":"The resource's ID.","type":"string"},"name":{"description":"Display name.","type":"string"}}}}}},{"title":"PublicApiMultiFileFormFieldConfig","type":"object","properties":{"placeholder":{"description":"Placeholder hint shown in the input when no value has been entered.","type":"string"},"extractTextContent":{"description":"When `true`, server extracts text from uploaded documents for use in merge tags.","type":"boolean"}}},{"title":"PublicApiMultiSelectFormFieldConfig","type":"object","properties":{"items":{"description":"Available options for selection-style form fields.","type":"array","items":{"title":"PublicApiFormFieldItem","type":"object","required":["name"],"properties":{"id":{"title":"EntityID","description":"The resource's ID.","type":"string"},"name":{"description":"Display name.","type":"string"}}}}}},{"title":"PublicApiNumberFormFieldConfig","type":"object","properties":{"placeholder":{"description":"Placeholder hint shown in the input when no value has been entered.","type":"string"},"defaultValue":{"description":"Default value pre-filled when a new workflow run is created.","type":"string"},"unit":{"description":"Unit label rendered next to the numeric value (e.g. `kg`, `$`, `%`).","type":"string"},"unitLocation":{"description":"Where the unit symbol appears relative to the number.\n\n- `prefix` — before the number (e.g. `$100`).\n- `suffix` — after the number (e.g. `100 USD`).\n","type":"string","enum":["prefix","suffix"]}}},{"title":"PublicApiSelectFormFieldConfig","type":"object","properties":{"items":{"description":"Available options for selection-style form fields.","type":"array","items":{"title":"PublicApiFormFieldItem","type":"object","required":["name"],"properties":{"id":{"title":"EntityID","description":"The resource's ID.","type":"string"},"name":{"description":"Display name.","type":"string"}}}},"defaultValue":{"description":"Default value pre-filled when a new workflow run is created.","type":"string"}}},{"title":"PublicApiSendRichEmailFormFieldConfig","type":"object","required":["bodyEditor"],"properties":{"to":{"description":"Default recipient list (To). Comma-separated email addresses or merge tags.","type":"array","items":{"type":"string"}},"cc":{"description":"Default CC list. Comma-separated email addresses or merge tags.","type":"array","items":{"type":"string"}},"bcc":{"description":"Default BCC list. Comma-separated email addresses or merge tags.","type":"array","items":{"type":"string"}},"replyTo":{"description":"Default Reply-To address. An email address or merge tag.","type":"array","items":{"type":"string"}},"subject":{"description":"Default email subject. May contain merge tags.","type":"string"},"body":{"description":"Default email body. May contain merge tags.","type":"string"},"bodyEditor":{"description":"Editor used to author the email body.\n\n- `RichText` — rich-text editor with formatting.\n- `HTML` — raw HTML editor.\n- `PlainText` — plain text editor.\n","type":"string","enum":["RichText","HTML","PlainText"]},"editAllowed":{"description":"When `true`, users running the workflow can edit the email before sending.","type":"boolean"}}},{"title":"PublicApiSnippetFormFieldConfig","type":"object","properties":{"value":{"description":"The option's stored value.","type":"string"}}},{"title":"PublicApiTableFormFieldConfig","type":"object","properties":{"columnDefs":{"description":"Data set column definitions (name + type per column).","type":"array","items":{"title":"PublicApiTableFormFieldColumn","type":"object","required":["id","name","columnType"],"properties":{"id":{"title":"EntityID","description":"The resource's ID.","type":"string"},"name":{"description":"Display name.","type":"string"},"columnType":{"description":"Data type a Table column accepts.\n\n- `Text` — free-form short text.\n","type":"string","enum":["Text"]}}}},"defaultValue":{"description":"Default value pre-filled when a new workflow run is created.","type":"string"}}},{"title":"PublicApiTextFormFieldConfig","type":"object","properties":{"placeholder":{"description":"Placeholder hint shown in the input when no value has been entered.","type":"string"},"defaultValue":{"description":"Default value pre-filled when a new workflow run is created.","type":"string"}}},{"title":"PublicApiTextareaFormFieldConfig","type":"object","properties":{"placeholder":{"description":"Placeholder hint shown in the input when no value has been entered.","type":"string"},"defaultValue":{"description":"Default value pre-filled when a new workflow run is created.","type":"string"},"format":{"description":"Editor style for this Textarea field.\n\n- `PlainText` — plain text.\n- `RichText` — rich-text editor with formatting (bold, lists, links, etc.).\n","type":"string","enum":["PlainText","RichText"]}}},{"title":"PublicApiUrlFormFieldConfig","type":"object","properties":{"defaultValue":{"description":"Default value pre-filled when a new workflow run is created.","type":"string"}}}]},"constraints":{"description":"Field-specific validation constraints. Shape depends on `fieldType`.","anyOf":[{"title":"PublicApiDateFormFieldConstraints","type":"object","properties":{"afterDate":{"description":"Earliest accepted date (inclusive). Pair with `afterDateSourceType`.","type":"string","format":"date-time"},"beforeDate":{"description":"Latest accepted date (inclusive). Pair with `beforeDateSourceType`.","type":"string","format":"date-time"},"afterDateFormFieldWidgetGroupId":{"title":"EntityID","description":"When `afterDateSourceType=FormField`, the ID of the Date form field whose value is the lower bound.","type":"string"},"beforeDateFormFieldWidgetGroupId":{"title":"EntityID","description":"When `beforeDateSourceType=FormField`, the ID of the Date form field whose value is the upper bound.","type":"string"},"afterDateSourceType":{"description":"How the before/after constraint date is derived.\n\n- `SpecificDate` — an absolute date supplied as `afterDate` / `beforeDate`.\n- `FormFieldValue` — derived from another Date form field (`afterDateField` / `beforeDateField`).\n- `TaskDueDate` — relative to the containing task's due date.\n- `ChecklistStartDate` / `ChecklistDueDate` — relative to the workflow run's start or due date.\n","type":"string","enum":["SpecificDate","FormFieldValue","TaskDueDate","ChecklistStartDate","ChecklistDueDate"]},"beforeDateSourceType":{"description":"How the before/after constraint date is derived.\n\n- `SpecificDate` — an absolute date supplied as `afterDate` / `beforeDate`.\n- `FormFieldValue` — derived from another Date form field (`afterDateField` / `beforeDateField`).\n- `TaskDueDate` — relative to the containing task's due date.\n- `ChecklistStartDate` / `ChecklistDueDate` — relative to the workflow run's start or due date.\n","type":"string","enum":["SpecificDate","FormFieldValue","TaskDueDate","ChecklistStartDate","ChecklistDueDate"]},"afterDateOffset":{"description":"ISO 8601 duration (e.g. `P7D`, `P1Y2M`).","type":"string"},"beforeDateOffset":{"description":"ISO 8601 duration (e.g. `P7D`, `P1Y2M`).","type":"string"}}},{"title":"PublicApiEmailFormFieldConstraints","type":"object","properties":{"domains":{"description":"Allowed (or blocked, depending on `restriction`) email domains for this field.","type":"array","items":{"type":"string"}},"restriction":{"description":"How the `domains` list filters allowed email addresses.\n\n- `Allow` — only emails whose domain is in the list are accepted.\n- `Block` — emails whose domain is in the list are rejected; all others accepted.\n","type":"string","enum":["Allow","Block"]}}},{"title":"PublicApiMultiFileFormFieldConstraints","type":"object","properties":{"extensions":{"description":"Allowed file extensions, including the leading dot (e.g. `.pdf`, `.docx`).","type":"array","items":{"type":"string"}},"mode":{"description":"Whether the field accepts a single file or multiple files.\n\n- `Single` — only one file may be uploaded.\n- `Multiple` — multiple files may be uploaded.\n","type":"string","enum":["Multiple","Single"]}}},{"title":"PublicApiNumberFormFieldConstraints","type":"object","properties":{"minDigits":{"description":"Minimum number of digits.","type":"integer","format":"int32"},"maxDigits":{"description":"Maximum number of digits.","type":"integer","format":"int32"},"minValue":{"description":"Minimum numeric value.","type":"integer","format":"int32"},"maxValue":{"description":"Maximum numeric value.","type":"integer","format":"int32"},"decimalPlaces":{"description":"Number of decimal places to accept (0 means integers only).","type":"integer","format":"int32"},"allowNegative":{"description":"When `true`, negative numbers are accepted.","type":"boolean"}}},{"title":"PublicApiTextFormFieldConstraints","type":"object","properties":{"min":{"description":"Inclusive lower bound.","type":"integer","format":"int32"},"max":{"description":"Inclusive upper bound.","type":"integer","format":"int32"}}},{"title":"PublicApiTextareaFormFieldConstraints","type":"object","properties":{"min":{"description":"Inclusive lower bound.","type":"integer","format":"int32"},"max":{"description":"Inclusive upper bound.","type":"integer","format":"int32"}}}]},"fieldType":{"description":"Form-field subtype discriminator (only relevant when widget `type` is `FormField`).\n\n- `Text` — short text input (≤255 characters).\n- `Textarea` — long-form text.\n- `Email` — email address.\n- `Url` — website / URL.\n- `Number` — numeric input with optional unit and constraints.\n- `Date` — date or date+time picker.\n- `Select` — dropdown; user picks one option.\n- `MultiChoice` — checkboxes; user picks one or more options.\n- `MultiSelect` — Subtasks: a checklist of sub-items inside the task.\n- `Members` — assignee picker (selects organization users).\n- `File` — single file upload.\n- `MultiFile` — multi-file upload (in-app \"File Upload\").\n- `Document` — document approval field; links the task to a document review.\n- `Table` — rows × columns of cells; users fill cell values.\n- `SendRichEmail` — pre-written email embedded in the task; sent manually by the user or\n  automatically when the task is completed.\n- `Hidden` — only visible when editing the workflow; populated by integrations or default values.\n- `Snippet` — only visible when editing; passes static text or merge tags into automations.\n","type":"string","enum":["Date","Document","Email","Hidden","Members","MultiChoice","MultiFile","MultiSelect","Number","Select","SendRichEmail","Snippet","Table","Text","Textarea","Url"]}}},"CreateHiddenFormFieldRequest":{"title":"CreateHiddenFormFieldRequest","type":"object","required":["type","fieldType"],"properties":{"hiddenByDefault":{"description":"When `true`, the widget is hidden by default; conditional logic rules can reveal it at runtime. Defaults to `false`.","type":"boolean"},"position":{"title":"WidgetPosition","description":"Where to place this widget on the task. `Top` — before all existing widgets. `Bottom` — after all existing widgets (default when `position` is omitted). `After` — immediately after the widget identified by `widgetId`.","oneOf":[{"title":"WidgetPositionAfter","type":"object","required":["widgetId","type"],"properties":{"widgetId":{"title":"EntityID","description":"The ID of the widget.","type":"string"},"type":{"description":"Discriminator value for this variant. See the parent oneOf for the full set of values.","type":"string","const":"After"}}},{"title":"WidgetPositionBottom","type":"object","required":["type"],"properties":{"type":{"description":"Discriminator value for this variant. See the parent oneOf for the full set of values.","type":"string","const":"Bottom"}}},{"title":"WidgetPositionTop","type":"object","required":["type"],"properties":{"type":{"description":"Discriminator value for this variant. See the parent oneOf for the full set of values.","type":"string","const":"Top"}}}],"required":["type"],"discriminator":{"propertyName":"type","mapping":{"After":"#/components/schemas/WidgetPositionAfter","Bottom":"#/components/schemas/WidgetPositionBottom","Top":"#/components/schemas/WidgetPositionTop"}}},"label":{"description":"Display label shown to the end user.","type":"string","maxLength":255},"config":{"title":"PublicApiHiddenFormFieldConfig","description":"Field-specific configuration. Shape depends on `fieldType`.","type":"object","properties":{"defaultValue":{"description":"Default value pre-filled when a new workflow run is created.","type":"string"}}},"type":{"description":"Discriminator value for this variant. See the parent oneOf for the full set of values.","examples":["FormField"],"type":"string","enum":["FormField"]},"fieldType":{"description":"Form-field subtype discriminator (only relevant when widget `type` is `FormField`).\n\n- `Text` — short text input (≤255 characters).\n- `Textarea` — long-form text.\n- `Email` — email address.\n- `Url` — website / URL.\n- `Number` — numeric input with optional unit and constraints.\n- `Date` — date or date+time picker.\n- `Select` — dropdown; user picks one option.\n- `MultiChoice` — checkboxes; user picks one or more options.\n- `MultiSelect` — Subtasks: a checklist of sub-items inside the task.\n- `Members` — assignee picker (selects organization users).\n- `File` — single file upload.\n- `MultiFile` — multi-file upload (in-app \"File Upload\").\n- `Document` — document approval field; links the task to a document review.\n- `Table` — rows × columns of cells; users fill cell values.\n- `SendRichEmail` — pre-written email embedded in the task; sent manually by the user or\n  automatically when the task is completed.\n- `Hidden` — only visible when editing the workflow; populated by integrations or default values.\n- `Snippet` — only visible when editing; passes static text or merge tags into automations.\n","type":"string","enum":["Date","Document","Email","File","Hidden","Members","MultiChoice","MultiFile","MultiSelect","Number","Select","SendRichEmail","Snippet","Table","Text","Textarea","Url"],"const":"Hidden"}}},"CreateMembersFormFieldRequest":{"title":"CreateMembersFormFieldRequest","type":"object","required":["type","fieldType"],"properties":{"hiddenByDefault":{"description":"When `true`, the widget is hidden by default; conditional logic rules can reveal it at runtime. Defaults to `false`.","type":"boolean"},"position":{"title":"WidgetPosition","description":"Where to place this widget on the task. `Top` — before all existing widgets. `Bottom` — after all existing widgets (default when `position` is omitted). `After` — immediately after the widget identified by `widgetId`.","oneOf":[{"title":"WidgetPositionAfter","type":"object","required":["widgetId","type"],"properties":{"widgetId":{"title":"EntityID","description":"The ID of the widget.","type":"string"},"type":{"description":"Discriminator value for this variant. See the parent oneOf for the full set of values.","type":"string","const":"After"}}},{"title":"WidgetPositionBottom","type":"object","required":["type"],"properties":{"type":{"description":"Discriminator value for this variant. See the parent oneOf for the full set of values.","type":"string","const":"Bottom"}}},{"title":"WidgetPositionTop","type":"object","required":["type"],"properties":{"type":{"description":"Discriminator value for this variant. See the parent oneOf for the full set of values.","type":"string","const":"Top"}}}],"required":["type"],"discriminator":{"propertyName":"type","mapping":{"After":"#/components/schemas/WidgetPositionAfter","Bottom":"#/components/schemas/WidgetPositionBottom","Top":"#/components/schemas/WidgetPositionTop"}}},"label":{"description":"Display label shown to the end user.","type":"string","maxLength":255},"config":{"title":"PublicApiMembersFormFieldConfig","description":"Field-specific configuration. Shape depends on `fieldType`.","type":"object","properties":{"defaultValue":{"description":"Default value pre-filled when a new workflow run is created.","type":"string"},"groupId":{"title":"EntityID","description":"The ID of an organization group.","type":"string"}}},"type":{"description":"Discriminator value for this variant. See the parent oneOf for the full set of values.","examples":["FormField"],"type":"string","enum":["FormField"]},"fieldType":{"description":"Form-field subtype discriminator (only relevant when widget `type` is `FormField`).\n\n- `Text` — short text input (≤255 characters).\n- `Textarea` — long-form text.\n- `Email` — email address.\n- `Url` — website / URL.\n- `Number` — numeric input with optional unit and constraints.\n- `Date` — date or date+time picker.\n- `Select` — dropdown; user picks one option.\n- `MultiChoice` — checkboxes; user picks one or more options.\n- `MultiSelect` — Subtasks: a checklist of sub-items inside the task.\n- `Members` — assignee picker (selects organization users).\n- `File` — single file upload.\n- `MultiFile` — multi-file upload (in-app \"File Upload\").\n- `Document` — document approval field; links the task to a document review.\n- `Table` — rows × columns of cells; users fill cell values.\n- `SendRichEmail` — pre-written email embedded in the task; sent manually by the user or\n  automatically when the task is completed.\n- `Hidden` — only visible when editing the workflow; populated by integrations or default values.\n- `Snippet` — only visible when editing; passes static text or merge tags into automations.\n","type":"string","enum":["Date","Document","Email","File","Hidden","Members","MultiChoice","MultiFile","MultiSelect","Number","Select","SendRichEmail","Snippet","Table","Text","Textarea","Url"],"const":"Members"}}},"CreateMultiChoiceFormFieldRequest":{"title":"CreateMultiChoiceFormFieldRequest","type":"object","required":["type","fieldType"],"properties":{"hiddenByDefault":{"description":"When `true`, the widget is hidden by default; conditional logic rules can reveal it at runtime. Defaults to `false`.","type":"boolean"},"position":{"title":"WidgetPosition","description":"Where to place this widget on the task. `Top` — before all existing widgets. `Bottom` — after all existing widgets (default when `position` is omitted). `After` — immediately after the widget identified by `widgetId`.","oneOf":[{"title":"WidgetPositionAfter","type":"object","required":["widgetId","type"],"properties":{"widgetId":{"title":"EntityID","description":"The ID of the widget.","type":"string"},"type":{"description":"Discriminator value for this variant. See the parent oneOf for the full set of values.","type":"string","const":"After"}}},{"title":"WidgetPositionBottom","type":"object","required":["type"],"properties":{"type":{"description":"Discriminator value for this variant. See the parent oneOf for the full set of values.","type":"string","const":"Bottom"}}},{"title":"WidgetPositionTop","type":"object","required":["type"],"properties":{"type":{"description":"Discriminator value for this variant. See the parent oneOf for the full set of values.","type":"string","const":"Top"}}}],"required":["type"],"discriminator":{"propertyName":"type","mapping":{"After":"#/components/schemas/WidgetPositionAfter","Bottom":"#/components/schemas/WidgetPositionBottom","Top":"#/components/schemas/WidgetPositionTop"}}},"label":{"description":"Display label shown to the end user.","type":"string","maxLength":255},"config":{"title":"PublicApiMultiChoiceFormFieldConfig","description":"Field-specific configuration. Shape depends on `fieldType`.","type":"object","properties":{"items":{"description":"Available options for selection-style form fields.","type":"array","items":{"title":"PublicApiFormFieldItem","type":"object","required":["name"],"properties":{"id":{"title":"EntityID","description":"The resource's ID.","type":"string"},"name":{"description":"Display name.","type":"string"}}}}}},"type":{"description":"Discriminator value for this variant. See the parent oneOf for the full set of values.","examples":["FormField"],"type":"string","enum":["FormField"]},"fieldType":{"description":"Form-field subtype discriminator (only relevant when widget `type` is `FormField`).\n\n- `Text` — short text input (≤255 characters).\n- `Textarea` — long-form text.\n- `Email` — email address.\n- `Url` — website / URL.\n- `Number` — numeric input with optional unit and constraints.\n- `Date` — date or date+time picker.\n- `Select` — dropdown; user picks one option.\n- `MultiChoice` — checkboxes; user picks one or more options.\n- `MultiSelect` — Subtasks: a checklist of sub-items inside the task.\n- `Members` — assignee picker (selects organization users).\n- `File` — single file upload.\n- `MultiFile` — multi-file upload (in-app \"File Upload\").\n- `Document` — document approval field; links the task to a document review.\n- `Table` — rows × columns of cells; users fill cell values.\n- `SendRichEmail` — pre-written email embedded in the task; sent manually by the user or\n  automatically when the task is completed.\n- `Hidden` — only visible when editing the workflow; populated by integrations or default values.\n- `Snippet` — only visible when editing; passes static text or merge tags into automations.\n","type":"string","enum":["Date","Document","Email","File","Hidden","Members","MultiChoice","MultiFile","MultiSelect","Number","Select","SendRichEmail","Snippet","Table","Text","Textarea","Url"],"const":"MultiChoice"}}},"CreateMultiFileFormFieldRequest":{"title":"CreateMultiFileFormFieldRequest","type":"object","required":["type","fieldType"],"properties":{"hiddenByDefault":{"description":"When `true`, the widget is hidden by default; conditional logic rules can reveal it at runtime. Defaults to `false`.","type":"boolean"},"position":{"title":"WidgetPosition","description":"Where to place this widget on the task. `Top` — before all existing widgets. `Bottom` — after all existing widgets (default when `position` is omitted). `After` — immediately after the widget identified by `widgetId`.","oneOf":[{"title":"WidgetPositionAfter","type":"object","required":["widgetId","type"],"properties":{"widgetId":{"title":"EntityID","description":"The ID of the widget.","type":"string"},"type":{"description":"Discriminator value for this variant. See the parent oneOf for the full set of values.","type":"string","const":"After"}}},{"title":"WidgetPositionBottom","type":"object","required":["type"],"properties":{"type":{"description":"Discriminator value for this variant. See the parent oneOf for the full set of values.","type":"string","const":"Bottom"}}},{"title":"WidgetPositionTop","type":"object","required":["type"],"properties":{"type":{"description":"Discriminator value for this variant. See the parent oneOf for the full set of values.","type":"string","const":"Top"}}}],"required":["type"],"discriminator":{"propertyName":"type","mapping":{"After":"#/components/schemas/WidgetPositionAfter","Bottom":"#/components/schemas/WidgetPositionBottom","Top":"#/components/schemas/WidgetPositionTop"}}},"label":{"description":"Display label shown to the end user.","type":"string","maxLength":255},"config":{"title":"PublicApiMultiFileFormFieldConfig","description":"Field-specific configuration. Shape depends on `fieldType`.","type":"object","properties":{"placeholder":{"description":"Placeholder hint shown in the input when no value has been entered.","type":"string"},"extractTextContent":{"description":"When `true`, server extracts text from uploaded documents for use in merge tags.","type":"boolean"}}},"constraints":{"title":"PublicApiMultiFileFormFieldConstraints","description":"Field-specific validation constraints. Shape depends on `fieldType`.","type":"object","properties":{"extensions":{"description":"Allowed file extensions, including the leading dot (e.g. `.pdf`, `.docx`).","type":"array","items":{"type":"string"}},"mode":{"description":"Whether the field accepts a single file or multiple files.\n\n- `Single` — only one file may be uploaded.\n- `Multiple` — multiple files may be uploaded.\n","type":"string","enum":["Multiple","Single"]}}},"type":{"description":"Discriminator value for this variant. See the parent oneOf for the full set of values.","examples":["FormField"],"type":"string","enum":["FormField"]},"fieldType":{"description":"Form-field subtype discriminator (only relevant when widget `type` is `FormField`).\n\n- `Text` — short text input (≤255 characters).\n- `Textarea` — long-form text.\n- `Email` — email address.\n- `Url` — website / URL.\n- `Number` — numeric input with optional unit and constraints.\n- `Date` — date or date+time picker.\n- `Select` — dropdown; user picks one option.\n- `MultiChoice` — checkboxes; user picks one or more options.\n- `MultiSelect` — Subtasks: a checklist of sub-items inside the task.\n- `Members` — assignee picker (selects organization users).\n- `File` — single file upload.\n- `MultiFile` — multi-file upload (in-app \"File Upload\").\n- `Document` — document approval field; links the task to a document review.\n- `Table` — rows × columns of cells; users fill cell values.\n- `SendRichEmail` — pre-written email embedded in the task; sent manually by the user or\n  automatically when the task is completed.\n- `Hidden` — only visible when editing the workflow; populated by integrations or default values.\n- `Snippet` — only visible when editing; passes static text or merge tags into automations.\n","type":"string","enum":["Date","Document","Email","File","Hidden","Members","MultiChoice","MultiFile","MultiSelect","Number","Select","SendRichEmail","Snippet","Table","Text","Textarea","Url"],"const":"MultiFile"}}},"CreateMultiSelectFormFieldRequest":{"title":"CreateMultiSelectFormFieldRequest","type":"object","required":["type","fieldType"],"properties":{"hiddenByDefault":{"description":"When `true`, the widget is hidden by default; conditional logic rules can reveal it at runtime. Defaults to `false`.","type":"boolean"},"position":{"title":"WidgetPosition","description":"Where to place this widget on the task. `Top` — before all existing widgets. `Bottom` — after all existing widgets (default when `position` is omitted). `After` — immediately after the widget identified by `widgetId`.","oneOf":[{"title":"WidgetPositionAfter","type":"object","required":["widgetId","type"],"properties":{"widgetId":{"title":"EntityID","description":"The ID of the widget.","type":"string"},"type":{"description":"Discriminator value for this variant. See the parent oneOf for the full set of values.","type":"string","const":"After"}}},{"title":"WidgetPositionBottom","type":"object","required":["type"],"properties":{"type":{"description":"Discriminator value for this variant. See the parent oneOf for the full set of values.","type":"string","const":"Bottom"}}},{"title":"WidgetPositionTop","type":"object","required":["type"],"properties":{"type":{"description":"Discriminator value for this variant. See the parent oneOf for the full set of values.","type":"string","const":"Top"}}}],"required":["type"],"discriminator":{"propertyName":"type","mapping":{"After":"#/components/schemas/WidgetPositionAfter","Bottom":"#/components/schemas/WidgetPositionBottom","Top":"#/components/schemas/WidgetPositionTop"}}},"label":{"description":"Display label shown to the end user.","type":"string","maxLength":255},"config":{"title":"PublicApiMultiSelectFormFieldConfig","description":"Field-specific configuration. Shape depends on `fieldType`.","type":"object","properties":{"items":{"description":"Available options for selection-style form fields.","type":"array","items":{"title":"PublicApiFormFieldItem","type":"object","required":["name"],"properties":{"id":{"title":"EntityID","description":"The resource's ID.","type":"string"},"name":{"description":"Display name.","type":"string"}}}}}},"type":{"description":"Discriminator value for this variant. See the parent oneOf for the full set of values.","examples":["FormField"],"type":"string","enum":["FormField"]},"fieldType":{"description":"Form-field subtype discriminator (only relevant when widget `type` is `FormField`).\n\n- `Text` — short text input (≤255 characters).\n- `Textarea` — long-form text.\n- `Email` — email address.\n- `Url` — website / URL.\n- `Number` — numeric input with optional unit and constraints.\n- `Date` — date or date+time picker.\n- `Select` — dropdown; user picks one option.\n- `MultiChoice` — checkboxes; user picks one or more options.\n- `MultiSelect` — Subtasks: a checklist of sub-items inside the task.\n- `Members` — assignee picker (selects organization users).\n- `File` — single file upload.\n- `MultiFile` — multi-file upload (in-app \"File Upload\").\n- `Document` — document approval field; links the task to a document review.\n- `Table` — rows × columns of cells; users fill cell values.\n- `SendRichEmail` — pre-written email embedded in the task; sent manually by the user or\n  automatically when the task is completed.\n- `Hidden` — only visible when editing the workflow; populated by integrations or default values.\n- `Snippet` — only visible when editing; passes static text or merge tags into automations.\n","type":"string","enum":["Date","Document","Email","File","Hidden","Members","MultiChoice","MultiFile","MultiSelect","Number","Select","SendRichEmail","Snippet","Table","Text","Textarea","Url"],"const":"MultiSelect"}}},"CreateNumberFormFieldRequest":{"title":"CreateNumberFormFieldRequest","type":"object","required":["type","fieldType"],"properties":{"hiddenByDefault":{"description":"When `true`, the widget is hidden by default; conditional logic rules can reveal it at runtime. Defaults to `false`.","type":"boolean"},"position":{"title":"WidgetPosition","description":"Where to place this widget on the task. `Top` — before all existing widgets. `Bottom` — after all existing widgets (default when `position` is omitted). `After` — immediately after the widget identified by `widgetId`.","oneOf":[{"title":"WidgetPositionAfter","type":"object","required":["widgetId","type"],"properties":{"widgetId":{"title":"EntityID","description":"The ID of the widget.","type":"string"},"type":{"description":"Discriminator value for this variant. See the parent oneOf for the full set of values.","type":"string","const":"After"}}},{"title":"WidgetPositionBottom","type":"object","required":["type"],"properties":{"type":{"description":"Discriminator value for this variant. See the parent oneOf for the full set of values.","type":"string","const":"Bottom"}}},{"title":"WidgetPositionTop","type":"object","required":["type"],"properties":{"type":{"description":"Discriminator value for this variant. See the parent oneOf for the full set of values.","type":"string","const":"Top"}}}],"required":["type"],"discriminator":{"propertyName":"type","mapping":{"After":"#/components/schemas/WidgetPositionAfter","Bottom":"#/components/schemas/WidgetPositionBottom","Top":"#/components/schemas/WidgetPositionTop"}}},"label":{"description":"Display label shown to the end user.","type":"string","maxLength":255},"config":{"title":"PublicApiNumberFormFieldConfig","description":"Field-specific configuration. Shape depends on `fieldType`.","type":"object","properties":{"placeholder":{"description":"Placeholder hint shown in the input when no value has been entered.","type":"string"},"defaultValue":{"description":"Default value pre-filled when a new workflow run is created.","type":"string"},"unit":{"description":"Unit label rendered next to the numeric value (e.g. `kg`, `$`, `%`).","type":"string"},"unitLocation":{"description":"Where the unit symbol appears relative to the number.\n\n- `prefix` — before the number (e.g. `$100`).\n- `suffix` — after the number (e.g. `100 USD`).\n","type":"string","enum":["prefix","suffix"]}}},"constraints":{"title":"PublicApiNumberFormFieldConstraints","description":"Field-specific validation constraints. Shape depends on `fieldType`.","type":"object","properties":{"minDigits":{"description":"Minimum number of digits.","type":"integer","format":"int32"},"maxDigits":{"description":"Maximum number of digits.","type":"integer","format":"int32"},"minValue":{"description":"Minimum numeric value.","type":"integer","format":"int32"},"maxValue":{"description":"Maximum numeric value.","type":"integer","format":"int32"},"decimalPlaces":{"description":"Number of decimal places to accept (0 means integers only).","type":"integer","format":"int32"},"allowNegative":{"description":"When `true`, negative numbers are accepted.","type":"boolean"}}},"type":{"description":"Discriminator value for this variant. See the parent oneOf for the full set of values.","examples":["FormField"],"type":"string","enum":["FormField"]},"fieldType":{"description":"Form-field subtype discriminator (only relevant when widget `type` is `FormField`).\n\n- `Text` — short text input (≤255 characters).\n- `Textarea` — long-form text.\n- `Email` — email address.\n- `Url` — website / URL.\n- `Number` — numeric input with optional unit and constraints.\n- `Date` — date or date+time picker.\n- `Select` — dropdown; user picks one option.\n- `MultiChoice` — checkboxes; user picks one or more options.\n- `MultiSelect` — Subtasks: a checklist of sub-items inside the task.\n- `Members` — assignee picker (selects organization users).\n- `File` — single file upload.\n- `MultiFile` — multi-file upload (in-app \"File Upload\").\n- `Document` — document approval field; links the task to a document review.\n- `Table` — rows × columns of cells; users fill cell values.\n- `SendRichEmail` — pre-written email embedded in the task; sent manually by the user or\n  automatically when the task is completed.\n- `Hidden` — only visible when editing the workflow; populated by integrations or default values.\n- `Snippet` — only visible when editing; passes static text or merge tags into automations.\n","type":"string","enum":["Date","Document","Email","File","Hidden","Members","MultiChoice","MultiFile","MultiSelect","Number","Select","SendRichEmail","Snippet","Table","Text","Textarea","Url"],"const":"Number"}}},"CreateOneOffTaskRequest":{"title":"CreateOneOffTaskRequest","type":"object","required":["name","required"],"properties":{"name":{"description":"Display name.","type":"string","minLength":1},"description":{"description":"Optional long-form description.","type":"string"},"dueDate":{"description":"Due date. ISO-8601 UTC.","type":"string","format":"date-time"},"required":{"description":"When `true`, the form field must have a value before its task can be completed.","type":"boolean"},"linkedWorkflowRunId":{"title":"EntityID","type":"string"},"assigneeEmails":{"type":"array","minItems":1,"items":{"type":"string"}},"subtasks":{"type":"array","items":{"title":"CreateSubtaskRequest","type":"object","required":["name"],"properties":{"name":{"description":"Display name.","type":"string","minLength":1}}}}}},"CreatePageCrossLinkWidgetRequest":{"title":"CreatePageCrossLinkWidgetRequest","type":"object","required":["type"],"properties":{"hiddenByDefault":{"description":"When `true`, the widget is hidden by default; conditional logic rules can reveal it at runtime. Defaults to `false`.","type":"boolean"},"position":{"title":"WidgetPosition","description":"Where to place this widget on the task. `Top` — before all existing widgets. `Bottom` — after all existing widgets (default when `position` is omitted). `After` — immediately after the widget identified by `widgetId`.","oneOf":[{"title":"WidgetPositionAfter","type":"object","required":["widgetId","type"],"properties":{"widgetId":{"title":"EntityID","description":"The ID of the widget.","type":"string"},"type":{"description":"Discriminator value for this variant. See the parent oneOf for the full set of values.","type":"string","const":"After"}}},{"title":"WidgetPositionBottom","type":"object","required":["type"],"properties":{"type":{"description":"Discriminator value for this variant. See the parent oneOf for the full set of values.","type":"string","const":"Bottom"}}},{"title":"WidgetPositionTop","type":"object","required":["type"],"properties":{"type":{"description":"Discriminator value for this variant. See the parent oneOf for the full set of values.","type":"string","const":"Top"}}}],"required":["type"],"discriminator":{"propertyName":"type","mapping":{"After":"#/components/schemas/WidgetPositionAfter","Bottom":"#/components/schemas/WidgetPositionBottom","Top":"#/components/schemas/WidgetPositionTop"}}},"linkedTemplateId":{"title":"EntityID","description":"The ID of the linked workflow or page that this CrossLink widget points to.","type":"string"},"type":{"description":"Discriminator value for this variant. See the parent oneOf for the full set of values.","type":"string","enum":["Text","Image","File","Video","Embed","CrossLink"],"const":"CrossLink"}}},"CreatePageEmbedWidgetRequest":{"title":"CreatePageEmbedWidgetRequest","type":"object","required":["type"],"properties":{"hiddenByDefault":{"description":"When `true`, the widget is hidden by default; conditional logic rules can reveal it at runtime. Defaults to `false`.","type":"boolean"},"position":{"title":"WidgetPosition","description":"Where to place this widget on the task. `Top` — before all existing widgets. `Bottom` — after all existing widgets (default when `position` is omitted). `After` — immediately after the widget identified by `widgetId`.","oneOf":[{"title":"WidgetPositionAfter","type":"object","required":["widgetId","type"],"properties":{"widgetId":{"title":"EntityID","description":"The ID of the widget.","type":"string"},"type":{"description":"Discriminator value for this variant. See the parent oneOf for the full set of values.","type":"string","const":"After"}}},{"title":"WidgetPositionBottom","type":"object","required":["type"],"properties":{"type":{"description":"Discriminator value for this variant. See the parent oneOf for the full set of values.","type":"string","const":"Bottom"}}},{"title":"WidgetPositionTop","type":"object","required":["type"],"properties":{"type":{"description":"Discriminator value for this variant. See the parent oneOf for the full set of values.","type":"string","const":"Top"}}}],"required":["type"],"discriminator":{"propertyName":"type","mapping":{"After":"#/components/schemas/WidgetPositionAfter","Bottom":"#/components/schemas/WidgetPositionBottom","Top":"#/components/schemas/WidgetPositionTop"}}},"url":{"description":"Target URL.","type":"string","maxLength":4000},"type":{"description":"Discriminator value for this variant. See the parent oneOf for the full set of values.","type":"string","enum":["Text","Image","File","Video","Embed","CrossLink"],"const":"Embed"}}},"CreatePageFileWidgetRequest":{"title":"CreatePageFileWidgetRequest","type":"object","required":["type"],"properties":{"hiddenByDefault":{"description":"When `true`, the widget is hidden by default; conditional logic rules can reveal it at runtime. Defaults to `false`.","type":"boolean"},"position":{"title":"WidgetPosition","description":"Where to place this widget on the task. `Top` — before all existing widgets. `Bottom` — after all existing widgets (default when `position` is omitted). `After` — immediately after the widget identified by `widgetId`.","oneOf":[{"title":"WidgetPositionAfter","type":"object","required":["widgetId","type"],"properties":{"widgetId":{"title":"EntityID","description":"The ID of the widget.","type":"string"},"type":{"description":"Discriminator value for this variant. See the parent oneOf for the full set of values.","type":"string","const":"After"}}},{"title":"WidgetPositionBottom","type":"object","required":["type"],"properties":{"type":{"description":"Discriminator value for this variant. See the parent oneOf for the full set of values.","type":"string","const":"Bottom"}}},{"title":"WidgetPositionTop","type":"object","required":["type"],"properties":{"type":{"description":"Discriminator value for this variant. See the parent oneOf for the full set of values.","type":"string","const":"Top"}}}],"required":["type"],"discriminator":{"propertyName":"type","mapping":{"After":"#/components/schemas/WidgetPositionAfter","Bottom":"#/components/schemas/WidgetPositionBottom","Top":"#/components/schemas/WidgetPositionTop"}}},"description":{"description":"Optional long-form description.","type":"string"},"type":{"description":"Discriminator value for this variant. See the parent oneOf for the full set of values.","type":"string","enum":["Text","Image","File","Video","Embed","CrossLink"],"const":"File"}}},"CreatePageImageWidgetRequest":{"title":"CreatePageImageWidgetRequest","type":"object","required":["type"],"properties":{"hiddenByDefault":{"description":"When `true`, the widget is hidden by default; conditional logic rules can reveal it at runtime. Defaults to `false`.","type":"boolean"},"position":{"title":"WidgetPosition","description":"Where to place this widget on the task. `Top` — before all existing widgets. `Bottom` — after all existing widgets (default when `position` is omitted). `After` — immediately after the widget identified by `widgetId`.","oneOf":[{"title":"WidgetPositionAfter","type":"object","required":["widgetId","type"],"properties":{"widgetId":{"title":"EntityID","description":"The ID of the widget.","type":"string"},"type":{"description":"Discriminator value for this variant. See the parent oneOf for the full set of values.","type":"string","const":"After"}}},{"title":"WidgetPositionBottom","type":"object","required":["type"],"properties":{"type":{"description":"Discriminator value for this variant. See the parent oneOf for the full set of values.","type":"string","const":"Bottom"}}},{"title":"WidgetPositionTop","type":"object","required":["type"],"properties":{"type":{"description":"Discriminator value for this variant. See the parent oneOf for the full set of values.","type":"string","const":"Top"}}}],"required":["type"],"discriminator":{"propertyName":"type","mapping":{"After":"#/components/schemas/WidgetPositionAfter","Bottom":"#/components/schemas/WidgetPositionBottom","Top":"#/components/schemas/WidgetPositionTop"}}},"caption":{"description":"Caption text rendered with the image.","type":"string"},"type":{"description":"Discriminator value for this variant. See the parent oneOf for the full set of values.","type":"string","enum":["Text","Image","File","Video","Embed","CrossLink"],"const":"Image"}}},"CreatePageRequest":{"title":"CreatePageRequest","type":"object","required":["name","folderId"],"properties":{"name":{"description":"Display name.","type":"string","maxLength":255,"minLength":1},"description":{"description":"Optional free-form description of the page.","type":"string","maxLength":255},"folderId":{"title":"EntityID","description":"The ID of the Folder.","type":"string"},"shareLevel":{"description":"Controls who can view this page. `None` — only organization members can view this page. `View` — anyone with the link can view this page.","type":"string","enum":["None","View"]},"referenceId":{"description":"Version prefix used when version control is enabled on this page. Combined with the version number to form the full version identifier.","type":"string"}}},"CreatePageTextWidgetRequest":{"title":"CreatePageTextWidgetRequest","type":"object","required":["type"],"properties":{"hiddenByDefault":{"description":"When `true`, the widget is hidden by default; conditional logic rules can reveal it at runtime. Defaults to `false`.","type":"boolean"},"position":{"title":"WidgetPosition","description":"Where to place this widget on the task. `Top` — before all existing widgets. `Bottom` — after all existing widgets (default when `position` is omitted). `After` — immediately after the widget identified by `widgetId`.","oneOf":[{"title":"WidgetPositionAfter","type":"object","required":["widgetId","type"],"properties":{"widgetId":{"title":"EntityID","description":"The ID of the widget.","type":"string"},"type":{"description":"Discriminator value for this variant. See the parent oneOf for the full set of values.","type":"string","const":"After"}}},{"title":"WidgetPositionBottom","type":"object","required":["type"],"properties":{"type":{"description":"Discriminator value for this variant. See the parent oneOf for the full set of values.","type":"string","const":"Bottom"}}},{"title":"WidgetPositionTop","type":"object","required":["type"],"properties":{"type":{"description":"Discriminator value for this variant. See the parent oneOf for the full set of values.","type":"string","const":"Top"}}}],"required":["type"],"discriminator":{"propertyName":"type","mapping":{"After":"#/components/schemas/WidgetPositionAfter","Bottom":"#/components/schemas/WidgetPositionBottom","Top":"#/components/schemas/WidgetPositionTop"}}},"content":{"description":"Rich text content. May contain merge tags.","type":"string"},"type":{"description":"Discriminator value for this variant. See the parent oneOf for the full set of values.","type":"string","enum":["Text","Image","File","Video","Embed","CrossLink"],"const":"Text"}}},"CreatePageVideoWidgetRequest":{"title":"CreatePageVideoWidgetRequest","type":"object","required":["type"],"properties":{"hiddenByDefault":{"description":"When `true`, the widget is hidden by default; conditional logic rules can reveal it at runtime. Defaults to `false`.","type":"boolean"},"position":{"title":"WidgetPosition","description":"Where to place this widget on the task. `Top` — before all existing widgets. `Bottom` — after all existing widgets (default when `position` is omitted). `After` — immediately after the widget identified by `widgetId`.","oneOf":[{"title":"WidgetPositionAfter","type":"object","required":["widgetId","type"],"properties":{"widgetId":{"title":"EntityID","description":"The ID of the widget.","type":"string"},"type":{"description":"Discriminator value for this variant. See the parent oneOf for the full set of values.","type":"string","const":"After"}}},{"title":"WidgetPositionBottom","type":"object","required":["type"],"properties":{"type":{"description":"Discriminator value for this variant. See the parent oneOf for the full set of values.","type":"string","const":"Bottom"}}},{"title":"WidgetPositionTop","type":"object","required":["type"],"properties":{"type":{"description":"Discriminator value for this variant. See the parent oneOf for the full set of values.","type":"string","const":"Top"}}}],"required":["type"],"discriminator":{"propertyName":"type","mapping":{"After":"#/components/schemas/WidgetPositionAfter","Bottom":"#/components/schemas/WidgetPositionBottom","Top":"#/components/schemas/WidgetPositionTop"}}},"description":{"description":"Optional long-form description.","type":"string"},"url":{"description":"Target URL.","type":"string"},"type":{"description":"Discriminator value for this variant. See the parent oneOf for the full set of values.","type":"string","enum":["Text","Image","File","Video","Embed","CrossLink"],"const":"Video"}}},"CreatePageWidgetRequest":{"title":"CreatePageWidgetRequest","description":"A widget on a page. The `type` discriminator selects the widget kind — `Text`, `Image`, `File`, `Video`, `Embed`, or `CrossLink`. Pages do not support form-field widgets.","oneOf":[{"title":"CreatePageCrossLinkWidgetRequest","type":"object","required":["type"],"properties":{"hiddenByDefault":{"description":"When `true`, the widget is hidden by default; conditional logic rules can reveal it at runtime. Defaults to `false`.","type":"boolean"},"position":{"title":"WidgetPosition","description":"Where to place this widget on the task. `Top` — before all existing widgets. `Bottom` — after all existing widgets (default when `position` is omitted). `After` — immediately after the widget identified by `widgetId`.","oneOf":[{"title":"WidgetPositionAfter","type":"object","required":["widgetId","type"],"properties":{"widgetId":{"title":"EntityID","description":"The ID of the widget.","type":"string"},"type":{"description":"Discriminator value for this variant. See the parent oneOf for the full set of values.","type":"string","const":"After"}}},{"title":"WidgetPositionBottom","type":"object","required":["type"],"properties":{"type":{"description":"Discriminator value for this variant. See the parent oneOf for the full set of values.","type":"string","const":"Bottom"}}},{"title":"WidgetPositionTop","type":"object","required":["type"],"properties":{"type":{"description":"Discriminator value for this variant. See the parent oneOf for the full set of values.","type":"string","const":"Top"}}}],"required":["type"],"discriminator":{"propertyName":"type","mapping":{"After":"#/components/schemas/WidgetPositionAfter","Bottom":"#/components/schemas/WidgetPositionBottom","Top":"#/components/schemas/WidgetPositionTop"}}},"linkedTemplateId":{"title":"EntityID","description":"The ID of the linked workflow or page that this CrossLink widget points to.","type":"string"},"type":{"description":"Discriminator value for this variant. See the parent oneOf for the full set of values.","type":"string","enum":["Text","Image","File","Video","Embed","CrossLink"],"const":"CrossLink"}}},{"title":"CreatePageEmbedWidgetRequest","type":"object","required":["type"],"properties":{"hiddenByDefault":{"description":"When `true`, the widget is hidden by default; conditional logic rules can reveal it at runtime. Defaults to `false`.","type":"boolean"},"position":{"title":"WidgetPosition","description":"Where to place this widget on the task. `Top` — before all existing widgets. `Bottom` — after all existing widgets (default when `position` is omitted). `After` — immediately after the widget identified by `widgetId`.","oneOf":[{"title":"WidgetPositionAfter","type":"object","required":["widgetId","type"],"properties":{"widgetId":{"title":"EntityID","description":"The ID of the widget.","type":"string"},"type":{"description":"Discriminator value for this variant. See the parent oneOf for the full set of values.","type":"string","const":"After"}}},{"title":"WidgetPositionBottom","type":"object","required":["type"],"properties":{"type":{"description":"Discriminator value for this variant. See the parent oneOf for the full set of values.","type":"string","const":"Bottom"}}},{"title":"WidgetPositionTop","type":"object","required":["type"],"properties":{"type":{"description":"Discriminator value for this variant. See the parent oneOf for the full set of values.","type":"string","const":"Top"}}}],"required":["type"],"discriminator":{"propertyName":"type","mapping":{"After":"#/components/schemas/WidgetPositionAfter","Bottom":"#/components/schemas/WidgetPositionBottom","Top":"#/components/schemas/WidgetPositionTop"}}},"url":{"description":"Target URL.","type":"string","maxLength":4000},"type":{"description":"Discriminator value for this variant. See the parent oneOf for the full set of values.","type":"string","enum":["Text","Image","File","Video","Embed","CrossLink"],"const":"Embed"}}},{"title":"CreatePageFileWidgetRequest","type":"object","required":["type"],"properties":{"hiddenByDefault":{"description":"When `true`, the widget is hidden by default; conditional logic rules can reveal it at runtime. Defaults to `false`.","type":"boolean"},"position":{"title":"WidgetPosition","description":"Where to place this widget on the task. `Top` — before all existing widgets. `Bottom` — after all existing widgets (default when `position` is omitted). `After` — immediately after the widget identified by `widgetId`.","oneOf":[{"title":"WidgetPositionAfter","type":"object","required":["widgetId","type"],"properties":{"widgetId":{"title":"EntityID","description":"The ID of the widget.","type":"string"},"type":{"description":"Discriminator value for this variant. See the parent oneOf for the full set of values.","type":"string","const":"After"}}},{"title":"WidgetPositionBottom","type":"object","required":["type"],"properties":{"type":{"description":"Discriminator value for this variant. See the parent oneOf for the full set of values.","type":"string","const":"Bottom"}}},{"title":"WidgetPositionTop","type":"object","required":["type"],"properties":{"type":{"description":"Discriminator value for this variant. See the parent oneOf for the full set of values.","type":"string","const":"Top"}}}],"required":["type"],"discriminator":{"propertyName":"type","mapping":{"After":"#/components/schemas/WidgetPositionAfter","Bottom":"#/components/schemas/WidgetPositionBottom","Top":"#/components/schemas/WidgetPositionTop"}}},"description":{"description":"Optional long-form description.","type":"string"},"type":{"description":"Discriminator value for this variant. See the parent oneOf for the full set of values.","type":"string","enum":["Text","Image","File","Video","Embed","CrossLink"],"const":"File"}}},{"title":"CreatePageImageWidgetRequest","type":"object","required":["type"],"properties":{"hiddenByDefault":{"description":"When `true`, the widget is hidden by default; conditional logic rules can reveal it at runtime. Defaults to `false`.","type":"boolean"},"position":{"title":"WidgetPosition","description":"Where to place this widget on the task. `Top` — before all existing widgets. `Bottom` — after all existing widgets (default when `position` is omitted). `After` — immediately after the widget identified by `widgetId`.","oneOf":[{"title":"WidgetPositionAfter","type":"object","required":["widgetId","type"],"properties":{"widgetId":{"title":"EntityID","description":"The ID of the widget.","type":"string"},"type":{"description":"Discriminator value for this variant. See the parent oneOf for the full set of values.","type":"string","const":"After"}}},{"title":"WidgetPositionBottom","type":"object","required":["type"],"properties":{"type":{"description":"Discriminator value for this variant. See the parent oneOf for the full set of values.","type":"string","const":"Bottom"}}},{"title":"WidgetPositionTop","type":"object","required":["type"],"properties":{"type":{"description":"Discriminator value for this variant. See the parent oneOf for the full set of values.","type":"string","const":"Top"}}}],"required":["type"],"discriminator":{"propertyName":"type","mapping":{"After":"#/components/schemas/WidgetPositionAfter","Bottom":"#/components/schemas/WidgetPositionBottom","Top":"#/components/schemas/WidgetPositionTop"}}},"caption":{"description":"Caption text rendered with the image.","type":"string"},"type":{"description":"Discriminator value for this variant. See the parent oneOf for the full set of values.","type":"string","enum":["Text","Image","File","Video","Embed","CrossLink"],"const":"Image"}}},{"title":"CreatePageTextWidgetRequest","type":"object","required":["type"],"properties":{"hiddenByDefault":{"description":"When `true`, the widget is hidden by default; conditional logic rules can reveal it at runtime. Defaults to `false`.","type":"boolean"},"position":{"title":"WidgetPosition","description":"Where to place this widget on the task. `Top` — before all existing widgets. `Bottom` — after all existing widgets (default when `position` is omitted). `After` — immediately after the widget identified by `widgetId`.","oneOf":[{"title":"WidgetPositionAfter","type":"object","required":["widgetId","type"],"properties":{"widgetId":{"title":"EntityID","description":"The ID of the widget.","type":"string"},"type":{"description":"Discriminator value for this variant. See the parent oneOf for the full set of values.","type":"string","const":"After"}}},{"title":"WidgetPositionBottom","type":"object","required":["type"],"properties":{"type":{"description":"Discriminator value for this variant. See the parent oneOf for the full set of values.","type":"string","const":"Bottom"}}},{"title":"WidgetPositionTop","type":"object","required":["type"],"properties":{"type":{"description":"Discriminator value for this variant. See the parent oneOf for the full set of values.","type":"string","const":"Top"}}}],"required":["type"],"discriminator":{"propertyName":"type","mapping":{"After":"#/components/schemas/WidgetPositionAfter","Bottom":"#/components/schemas/WidgetPositionBottom","Top":"#/components/schemas/WidgetPositionTop"}}},"content":{"description":"Rich text content. May contain merge tags.","type":"string"},"type":{"description":"Discriminator value for this variant. See the parent oneOf for the full set of values.","type":"string","enum":["Text","Image","File","Video","Embed","CrossLink"],"const":"Text"}}},{"title":"CreatePageVideoWidgetRequest","type":"object","required":["type"],"properties":{"hiddenByDefault":{"description":"When `true`, the widget is hidden by default; conditional logic rules can reveal it at runtime. Defaults to `false`.","type":"boolean"},"position":{"title":"WidgetPosition","description":"Where to place this widget on the task. `Top` — before all existing widgets. `Bottom` — after all existing widgets (default when `position` is omitted). `After` — immediately after the widget identified by `widgetId`.","oneOf":[{"title":"WidgetPositionAfter","type":"object","required":["widgetId","type"],"properties":{"widgetId":{"title":"EntityID","description":"The ID of the widget.","type":"string"},"type":{"description":"Discriminator value for this variant. See the parent oneOf for the full set of values.","type":"string","const":"After"}}},{"title":"WidgetPositionBottom","type":"object","required":["type"],"properties":{"type":{"description":"Discriminator value for this variant. See the parent oneOf for the full set of values.","type":"string","const":"Bottom"}}},{"title":"WidgetPositionTop","type":"object","required":["type"],"properties":{"type":{"description":"Discriminator value for this variant. See the parent oneOf for the full set of values.","type":"string","const":"Top"}}}],"required":["type"],"discriminator":{"propertyName":"type","mapping":{"After":"#/components/schemas/WidgetPositionAfter","Bottom":"#/components/schemas/WidgetPositionBottom","Top":"#/components/schemas/WidgetPositionTop"}}},"description":{"description":"Optional long-form description.","type":"string"},"url":{"description":"Target URL.","type":"string"},"type":{"description":"Discriminator value for this variant. See the parent oneOf for the full set of values.","type":"string","enum":["Text","Image","File","Video","Embed","CrossLink"],"const":"Video"}}}],"required":["type"],"discriminator":{"propertyName":"type","mapping":{"CrossLink":"#/components/schemas/CreatePageCrossLinkWidgetRequest","Embed":"#/components/schemas/CreatePageEmbedWidgetRequest","File":"#/components/schemas/CreatePageFileWidgetRequest","Image":"#/components/schemas/CreatePageImageWidgetRequest","Text":"#/components/schemas/CreatePageTextWidgetRequest","Video":"#/components/schemas/CreatePageVideoWidgetRequest"}}},"CreateScheduledWorkflowRequest":{"title":"CreateScheduledWorkflowRequest","type":"object","required":["workflowId","startDate","timeZone"],"properties":{"workflowId":{"description":"The ID of the Workflow","examples":["ve244vipYIABoX6Zlwl-TQ"],"type":"string"},"name":{"description":"Display name.","type":"string"},"startDate":{"type":"string","format":"date-time"},"timeZone":{"type":"string"},"duePeriod":{"type":"string"},"rules":{"type":"array","items":{"title":"PublicApiScheduledWorkflowRule","oneOf":[{"title":"Daily","type":"object","required":["interval","frequency"],"properties":{"interval":{"description":"Recurrence interval. For a Weekly schedule with `interval=2`, fires every other week.","type":"integer","format":"int32"},"frequency":{"description":"How often the workflow runs. The other fields on the rule depend on this value:\n`Daily` uses only `interval`, `Weekly` adds `weekDay`, `Monthly` adds `by`, `Yearly` uses only `interval`.","type":"string","enum":["Daily","Weekly","Monthly","Yearly"],"const":"Daily"}}},{"title":"Monthly","type":"object","required":["interval","by","frequency"],"properties":{"interval":{"description":"Recurrence interval. For a Weekly schedule with `interval=2`, fires every other week.","type":"integer","format":"int32"},"by":{"description":"How a `Monthly` rule recurs:\n`DayOfMonth` repeats on the same calendar date each month (e.g. the 15th);\n`DayOfWeek` repeats on the same weekday-of-month pattern (e.g. the second Tuesday).","type":"string","enum":["DayOfMonth","DayOfWeek"]},"frequency":{"description":"How often the workflow runs. The other fields on the rule depend on this value:\n`Daily` uses only `interval`, `Weekly` adds `weekDay`, `Monthly` adds `by`, `Yearly` uses only `interval`.","type":"string","enum":["Daily","Weekly","Monthly","Yearly"],"const":"Monthly"}}},{"title":"Weekly","type":"object","required":["interval","weekDay","frequency"],"properties":{"interval":{"description":"Recurrence interval. For a Weekly schedule with `interval=2`, fires every other week.","type":"integer","format":"int32"},"weekDay":{"description":"Day of the week the workflow runs on. Only used by `Weekly` rules.","type":"string","enum":["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"]},"frequency":{"description":"How often the workflow runs. The other fields on the rule depend on this value:\n`Daily` uses only `interval`, `Weekly` adds `weekDay`, `Monthly` adds `by`, `Yearly` uses only `interval`.","type":"string","enum":["Daily","Weekly","Monthly","Yearly"],"const":"Weekly"}}},{"title":"Yearly","type":"object","required":["interval","frequency"],"properties":{"interval":{"description":"Recurrence interval. For a Weekly schedule with `interval=2`, fires every other week.","type":"integer","format":"int32"},"frequency":{"description":"How often the workflow runs. The other fields on the rule depend on this value:\n`Daily` uses only `interval`, `Weekly` adds `weekDay`, `Monthly` adds `by`, `Yearly` uses only `interval`.","type":"string","enum":["Daily","Weekly","Monthly","Yearly"],"const":"Yearly"}}}],"required":["frequency"],"discriminator":{"propertyName":"frequency","mapping":{"Daily":"#/components/schemas/Daily","Monthly":"#/components/schemas/Monthly","Weekly":"#/components/schemas/Weekly","Yearly":"#/components/schemas/Yearly"}}}},"assigneeEmails":{"type":"array","items":{"type":"string"}}}},"CreateSelectFormFieldRequest":{"title":"CreateSelectFormFieldRequest","type":"object","required":["type","fieldType"],"properties":{"hiddenByDefault":{"description":"When `true`, the widget is hidden by default; conditional logic rules can reveal it at runtime. Defaults to `false`.","type":"boolean"},"position":{"title":"WidgetPosition","description":"Where to place this widget on the task. `Top` — before all existing widgets. `Bottom` — after all existing widgets (default when `position` is omitted). `After` — immediately after the widget identified by `widgetId`.","oneOf":[{"title":"WidgetPositionAfter","type":"object","required":["widgetId","type"],"properties":{"widgetId":{"title":"EntityID","description":"The ID of the widget.","type":"string"},"type":{"description":"Discriminator value for this variant. See the parent oneOf for the full set of values.","type":"string","const":"After"}}},{"title":"WidgetPositionBottom","type":"object","required":["type"],"properties":{"type":{"description":"Discriminator value for this variant. See the parent oneOf for the full set of values.","type":"string","const":"Bottom"}}},{"title":"WidgetPositionTop","type":"object","required":["type"],"properties":{"type":{"description":"Discriminator value for this variant. See the parent oneOf for the full set of values.","type":"string","const":"Top"}}}],"required":["type"],"discriminator":{"propertyName":"type","mapping":{"After":"#/components/schemas/WidgetPositionAfter","Bottom":"#/components/schemas/WidgetPositionBottom","Top":"#/components/schemas/WidgetPositionTop"}}},"label":{"description":"Display label shown to the end user.","type":"string","maxLength":255},"config":{"title":"PublicApiSelectFormFieldConfig","description":"Field-specific configuration. Shape depends on `fieldType`.","type":"object","properties":{"items":{"description":"Available options for selection-style form fields.","type":"array","items":{"title":"PublicApiFormFieldItem","type":"object","required":["name"],"properties":{"id":{"title":"EntityID","description":"The resource's ID.","type":"string"},"name":{"description":"Display name.","type":"string"}}}},"defaultValue":{"description":"Default value pre-filled when a new workflow run is created.","type":"string"}}},"type":{"description":"Discriminator value for this variant. See the parent oneOf for the full set of values.","examples":["FormField"],"type":"string","enum":["FormField"]},"fieldType":{"description":"Form-field subtype discriminator (only relevant when widget `type` is `FormField`).\n\n- `Text` — short text input (≤255 characters).\n- `Textarea` — long-form text.\n- `Email` — email address.\n- `Url` — website / URL.\n- `Number` — numeric input with optional unit and constraints.\n- `Date` — date or date+time picker.\n- `Select` — dropdown; user picks one option.\n- `MultiChoice` — checkboxes; user picks one or more options.\n- `MultiSelect` — Subtasks: a checklist of sub-items inside the task.\n- `Members` — assignee picker (selects organization users).\n- `File` — single file upload.\n- `MultiFile` — multi-file upload (in-app \"File Upload\").\n- `Document` — document approval field; links the task to a document review.\n- `Table` — rows × columns of cells; users fill cell values.\n- `SendRichEmail` — pre-written email embedded in the task; sent manually by the user or\n  automatically when the task is completed.\n- `Hidden` — only visible when editing the workflow; populated by integrations or default values.\n- `Snippet` — only visible when editing; passes static text or merge tags into automations.\n","type":"string","enum":["Date","Document","Email","File","Hidden","Members","MultiChoice","MultiFile","MultiSelect","Number","Select","SendRichEmail","Snippet","Table","Text","Textarea","Url"],"const":"Select"}}},"CreateSendRichEmailFormFieldRequest":{"title":"CreateSendRichEmailFormFieldRequest","type":"object","required":["type","fieldType"],"properties":{"hiddenByDefault":{"description":"When `true`, the widget is hidden by default; conditional logic rules can reveal it at runtime. Defaults to `false`.","type":"boolean"},"position":{"title":"WidgetPosition","description":"Where to place this widget on the task. `Top` — before all existing widgets. `Bottom` — after all existing widgets (default when `position` is omitted). `After` — immediately after the widget identified by `widgetId`.","oneOf":[{"title":"WidgetPositionAfter","type":"object","required":["widgetId","type"],"properties":{"widgetId":{"title":"EntityID","description":"The ID of the widget.","type":"string"},"type":{"description":"Discriminator value for this variant. See the parent oneOf for the full set of values.","type":"string","const":"After"}}},{"title":"WidgetPositionBottom","type":"object","required":["type"],"properties":{"type":{"description":"Discriminator value for this variant. See the parent oneOf for the full set of values.","type":"string","const":"Bottom"}}},{"title":"WidgetPositionTop","type":"object","required":["type"],"properties":{"type":{"description":"Discriminator value for this variant. See the parent oneOf for the full set of values.","type":"string","const":"Top"}}}],"required":["type"],"discriminator":{"propertyName":"type","mapping":{"After":"#/components/schemas/WidgetPositionAfter","Bottom":"#/components/schemas/WidgetPositionBottom","Top":"#/components/schemas/WidgetPositionTop"}}},"label":{"description":"Display label shown to the end user.","type":"string","maxLength":255},"config":{"title":"PublicApiSendRichEmailFormFieldConfig","description":"Field-specific configuration. Shape depends on `fieldType`.","type":"object","required":["bodyEditor"],"properties":{"to":{"description":"Default recipient list (To). Comma-separated email addresses or merge tags.","type":"array","items":{"type":"string"}},"cc":{"description":"Default CC list. Comma-separated email addresses or merge tags.","type":"array","items":{"type":"string"}},"bcc":{"description":"Default BCC list. Comma-separated email addresses or merge tags.","type":"array","items":{"type":"string"}},"replyTo":{"description":"Default Reply-To address. An email address or merge tag.","type":"array","items":{"type":"string"}},"subject":{"description":"Default email subject. May contain merge tags.","type":"string"},"body":{"description":"Default email body. May contain merge tags.","type":"string"},"bodyEditor":{"description":"Editor used to author the email body.\n\n- `RichText` — rich-text editor with formatting.\n- `HTML` — raw HTML editor.\n- `PlainText` — plain text editor.\n","type":"string","enum":["RichText","HTML","PlainText"]},"editAllowed":{"description":"When `true`, users running the workflow can edit the email before sending.","type":"boolean"}}},"type":{"description":"Discriminator value for this variant. See the parent oneOf for the full set of values.","examples":["FormField"],"type":"string","enum":["FormField"]},"fieldType":{"description":"Form-field subtype discriminator (only relevant when widget `type` is `FormField`).\n\n- `Text` — short text input (≤255 characters).\n- `Textarea` — long-form text.\n- `Email` — email address.\n- `Url` — website / URL.\n- `Number` — numeric input with optional unit and constraints.\n- `Date` — date or date+time picker.\n- `Select` — dropdown; user picks one option.\n- `MultiChoice` — checkboxes; user picks one or more options.\n- `MultiSelect` — Subtasks: a checklist of sub-items inside the task.\n- `Members` — assignee picker (selects organization users).\n- `File` — single file upload.\n- `MultiFile` — multi-file upload (in-app \"File Upload\").\n- `Document` — document approval field; links the task to a document review.\n- `Table` — rows × columns of cells; users fill cell values.\n- `SendRichEmail` — pre-written email embedded in the task; sent manually by the user or\n  automatically when the task is completed.\n- `Hidden` — only visible when editing the workflow; populated by integrations or default values.\n- `Snippet` — only visible when editing; passes static text or merge tags into automations.\n","type":"string","enum":["Date","Document","Email","File","Hidden","Members","MultiChoice","MultiFile","MultiSelect","Number","Select","SendRichEmail","Snippet","Table","Text","Textarea","Url"],"const":"SendRichEmail"}}},"CreateSnippetFormFieldRequest":{"title":"CreateSnippetFormFieldRequest","type":"object","required":["type","fieldType"],"properties":{"hiddenByDefault":{"description":"When `true`, the widget is hidden by default; conditional logic rules can reveal it at runtime. Defaults to `false`.","type":"boolean"},"position":{"title":"WidgetPosition","description":"Where to place this widget on the task. `Top` — before all existing widgets. `Bottom` — after all existing widgets (default when `position` is omitted). `After` — immediately after the widget identified by `widgetId`.","oneOf":[{"title":"WidgetPositionAfter","type":"object","required":["widgetId","type"],"properties":{"widgetId":{"title":"EntityID","description":"The ID of the widget.","type":"string"},"type":{"description":"Discriminator value for this variant. See the parent oneOf for the full set of values.","type":"string","const":"After"}}},{"title":"WidgetPositionBottom","type":"object","required":["type"],"properties":{"type":{"description":"Discriminator value for this variant. See the parent oneOf for the full set of values.","type":"string","const":"Bottom"}}},{"title":"WidgetPositionTop","type":"object","required":["type"],"properties":{"type":{"description":"Discriminator value for this variant. See the parent oneOf for the full set of values.","type":"string","const":"Top"}}}],"required":["type"],"discriminator":{"propertyName":"type","mapping":{"After":"#/components/schemas/WidgetPositionAfter","Bottom":"#/components/schemas/WidgetPositionBottom","Top":"#/components/schemas/WidgetPositionTop"}}},"label":{"description":"Display label shown to the end user.","type":"string","maxLength":255},"config":{"title":"PublicApiSnippetFormFieldConfig","description":"Field-specific configuration. Shape depends on `fieldType`.","type":"object","properties":{"value":{"description":"The option's stored value.","type":"string"}}},"type":{"description":"Discriminator value for this variant. See the parent oneOf for the full set of values.","examples":["FormField"],"type":"string","enum":["FormField"]},"fieldType":{"description":"Form-field subtype discriminator (only relevant when widget `type` is `FormField`).\n\n- `Text` — short text input (≤255 characters).\n- `Textarea` — long-form text.\n- `Email` — email address.\n- `Url` — website / URL.\n- `Number` — numeric input with optional unit and constraints.\n- `Date` — date or date+time picker.\n- `Select` — dropdown; user picks one option.\n- `MultiChoice` — checkboxes; user picks one or more options.\n- `MultiSelect` — Subtasks: a checklist of sub-items inside the task.\n- `Members` — assignee picker (selects organization users).\n- `File` — single file upload.\n- `MultiFile` — multi-file upload (in-app \"File Upload\").\n- `Document` — document approval field; links the task to a document review.\n- `Table` — rows × columns of cells; users fill cell values.\n- `SendRichEmail` — pre-written email embedded in the task; sent manually by the user or\n  automatically when the task is completed.\n- `Hidden` — only visible when editing the workflow; populated by integrations or default values.\n- `Snippet` — only visible when editing; passes static text or merge tags into automations.\n","type":"string","enum":["Date","Document","Email","File","Hidden","Members","MultiChoice","MultiFile","MultiSelect","Number","Select","SendRichEmail","Snippet","Table","Text","Textarea","Url"],"const":"Snippet"}}},"CreateSubtaskRequest":{"title":"CreateSubtaskRequest","type":"object","required":["name"],"properties":{"name":{"description":"Display name.","type":"string","minLength":1}}},"CreateTableFormFieldRequest":{"title":"CreateTableFormFieldRequest","type":"object","required":["type","fieldType"],"properties":{"hiddenByDefault":{"description":"When `true`, the widget is hidden by default; conditional logic rules can reveal it at runtime. Defaults to `false`.","type":"boolean"},"position":{"title":"WidgetPosition","description":"Where to place this widget on the task. `Top` — before all existing widgets. `Bottom` — after all existing widgets (default when `position` is omitted). `After` — immediately after the widget identified by `widgetId`.","oneOf":[{"title":"WidgetPositionAfter","type":"object","required":["widgetId","type"],"properties":{"widgetId":{"title":"EntityID","description":"The ID of the widget.","type":"string"},"type":{"description":"Discriminator value for this variant. See the parent oneOf for the full set of values.","type":"string","const":"After"}}},{"title":"WidgetPositionBottom","type":"object","required":["type"],"properties":{"type":{"description":"Discriminator value for this variant. See the parent oneOf for the full set of values.","type":"string","const":"Bottom"}}},{"title":"WidgetPositionTop","type":"object","required":["type"],"properties":{"type":{"description":"Discriminator value for this variant. See the parent oneOf for the full set of values.","type":"string","const":"Top"}}}],"required":["type"],"discriminator":{"propertyName":"type","mapping":{"After":"#/components/schemas/WidgetPositionAfter","Bottom":"#/components/schemas/WidgetPositionBottom","Top":"#/components/schemas/WidgetPositionTop"}}},"label":{"description":"Display label shown to the end user.","type":"string","maxLength":255},"config":{"title":"PublicApiTableFormFieldConfig","description":"Field-specific configuration. Shape depends on `fieldType`.","type":"object","properties":{"columnDefs":{"description":"Data set column definitions (name + type per column).","type":"array","items":{"title":"PublicApiTableFormFieldColumn","type":"object","required":["id","name","columnType"],"properties":{"id":{"title":"EntityID","description":"The resource's ID.","type":"string"},"name":{"description":"Display name.","type":"string"},"columnType":{"description":"Data type a Table column accepts.\n\n- `Text` — free-form short text.\n","type":"string","enum":["Text"]}}}},"defaultValue":{"description":"Default value pre-filled when a new workflow run is created.","type":"string"}}},"type":{"description":"Discriminator value for this variant. See the parent oneOf for the full set of values.","examples":["FormField"],"type":"string","enum":["FormField"]},"fieldType":{"description":"Form-field subtype discriminator (only relevant when widget `type` is `FormField`).\n\n- `Text` — short text input (≤255 characters).\n- `Textarea` — long-form text.\n- `Email` — email address.\n- `Url` — website / URL.\n- `Number` — numeric input with optional unit and constraints.\n- `Date` — date or date+time picker.\n- `Select` — dropdown; user picks one option.\n- `MultiChoice` — checkboxes; user picks one or more options.\n- `MultiSelect` — Subtasks: a checklist of sub-items inside the task.\n- `Members` — assignee picker (selects organization users).\n- `File` — single file upload.\n- `MultiFile` — multi-file upload (in-app \"File Upload\").\n- `Document` — document approval field; links the task to a document review.\n- `Table` — rows × columns of cells; users fill cell values.\n- `SendRichEmail` — pre-written email embedded in the task; sent manually by the user or\n  automatically when the task is completed.\n- `Hidden` — only visible when editing the workflow; populated by integrations or default values.\n- `Snippet` — only visible when editing; passes static text or merge tags into automations.\n","type":"string","enum":["Date","Document","Email","File","Hidden","Members","MultiChoice","MultiFile","MultiSelect","Number","Select","SendRichEmail","Snippet","Table","Text","Textarea","Url"],"const":"Table"}}},"CreateTextFormFieldRequest":{"title":"CreateTextFormFieldRequest","type":"object","required":["type","fieldType"],"properties":{"hiddenByDefault":{"description":"When `true`, the widget is hidden by default; conditional logic rules can reveal it at runtime. Defaults to `false`.","type":"boolean"},"position":{"title":"WidgetPosition","description":"Where to place this widget on the task. `Top` — before all existing widgets. `Bottom` — after all existing widgets (default when `position` is omitted). `After` — immediately after the widget identified by `widgetId`.","oneOf":[{"title":"WidgetPositionAfter","type":"object","required":["widgetId","type"],"properties":{"widgetId":{"title":"EntityID","description":"The ID of the widget.","type":"string"},"type":{"description":"Discriminator value for this variant. See the parent oneOf for the full set of values.","type":"string","const":"After"}}},{"title":"WidgetPositionBottom","type":"object","required":["type"],"properties":{"type":{"description":"Discriminator value for this variant. See the parent oneOf for the full set of values.","type":"string","const":"Bottom"}}},{"title":"WidgetPositionTop","type":"object","required":["type"],"properties":{"type":{"description":"Discriminator value for this variant. See the parent oneOf for the full set of values.","type":"string","const":"Top"}}}],"required":["type"],"discriminator":{"propertyName":"type","mapping":{"After":"#/components/schemas/WidgetPositionAfter","Bottom":"#/components/schemas/WidgetPositionBottom","Top":"#/components/schemas/WidgetPositionTop"}}},"label":{"description":"Display label shown to the end user.","type":"string","maxLength":255},"config":{"title":"PublicApiTextFormFieldConfig","description":"Field-specific configuration. Shape depends on `fieldType`.","type":"object","properties":{"placeholder":{"description":"Placeholder hint shown in the input when no value has been entered.","type":"string"},"defaultValue":{"description":"Default value pre-filled when a new workflow run is created.","type":"string"}}},"constraints":{"title":"PublicApiTextFormFieldConstraints","description":"Field-specific validation constraints. Shape depends on `fieldType`.","type":"object","properties":{"min":{"description":"Inclusive lower bound.","type":"integer","format":"int32"},"max":{"description":"Inclusive upper bound.","type":"integer","format":"int32"}}},"type":{"description":"Discriminator value for this variant. See the parent oneOf for the full set of values.","examples":["FormField"],"type":"string","enum":["FormField"]},"fieldType":{"description":"Form-field subtype discriminator (only relevant when widget `type` is `FormField`).\n\n- `Text` — short text input (≤255 characters).\n- `Textarea` — long-form text.\n- `Email` — email address.\n- `Url` — website / URL.\n- `Number` — numeric input with optional unit and constraints.\n- `Date` — date or date+time picker.\n- `Select` — dropdown; user picks one option.\n- `MultiChoice` — checkboxes; user picks one or more options.\n- `MultiSelect` — Subtasks: a checklist of sub-items inside the task.\n- `Members` — assignee picker (selects organization users).\n- `File` — single file upload.\n- `MultiFile` — multi-file upload (in-app \"File Upload\").\n- `Document` — document approval field; links the task to a document review.\n- `Table` — rows × columns of cells; users fill cell values.\n- `SendRichEmail` — pre-written email embedded in the task; sent manually by the user or\n  automatically when the task is completed.\n- `Hidden` — only visible when editing the workflow; populated by integrations or default values.\n- `Snippet` — only visible when editing; passes static text or merge tags into automations.\n","type":"string","enum":["Date","Document","Email","File","Hidden","Members","MultiChoice","MultiFile","MultiSelect","Number","Select","SendRichEmail","Snippet","Table","Text","Textarea","Url"],"const":"Text"}}},"CreateTextareaFormFieldRequest":{"title":"CreateTextareaFormFieldRequest","type":"object","required":["type","fieldType"],"properties":{"hiddenByDefault":{"description":"When `true`, the widget is hidden by default; conditional logic rules can reveal it at runtime. Defaults to `false`.","type":"boolean"},"position":{"title":"WidgetPosition","description":"Where to place this widget on the task. `Top` — before all existing widgets. `Bottom` — after all existing widgets (default when `position` is omitted). `After` — immediately after the widget identified by `widgetId`.","oneOf":[{"title":"WidgetPositionAfter","type":"object","required":["widgetId","type"],"properties":{"widgetId":{"title":"EntityID","description":"The ID of the widget.","type":"string"},"type":{"description":"Discriminator value for this variant. See the parent oneOf for the full set of values.","type":"string","const":"After"}}},{"title":"WidgetPositionBottom","type":"object","required":["type"],"properties":{"type":{"description":"Discriminator value for this variant. See the parent oneOf for the full set of values.","type":"string","const":"Bottom"}}},{"title":"WidgetPositionTop","type":"object","required":["type"],"properties":{"type":{"description":"Discriminator value for this variant. See the parent oneOf for the full set of values.","type":"string","const":"Top"}}}],"required":["type"],"discriminator":{"propertyName":"type","mapping":{"After":"#/components/schemas/WidgetPositionAfter","Bottom":"#/components/schemas/WidgetPositionBottom","Top":"#/components/schemas/WidgetPositionTop"}}},"label":{"description":"Display label shown to the end user.","type":"string","maxLength":255},"config":{"title":"PublicApiTextareaFormFieldConfig","description":"Field-specific configuration. Shape depends on `fieldType`.","type":"object","properties":{"placeholder":{"description":"Placeholder hint shown in the input when no value has been entered.","type":"string"},"defaultValue":{"description":"Default value pre-filled when a new workflow run is created.","type":"string"},"format":{"description":"Editor style for this Textarea field.\n\n- `PlainText` — plain text.\n- `RichText` — rich-text editor with formatting (bold, lists, links, etc.).\n","type":"string","enum":["PlainText","RichText"]}}},"constraints":{"title":"PublicApiTextareaFormFieldConstraints","description":"Field-specific validation constraints. Shape depends on `fieldType`.","type":"object","properties":{"min":{"description":"Inclusive lower bound.","type":"integer","format":"int32"},"max":{"description":"Inclusive upper bound.","type":"integer","format":"int32"}}},"type":{"description":"Discriminator value for this variant. See the parent oneOf for the full set of values.","examples":["FormField"],"type":"string","enum":["FormField"]},"fieldType":{"description":"Form-field subtype discriminator (only relevant when widget `type` is `FormField`).\n\n- `Text` — short text input (≤255 characters).\n- `Textarea` — long-form text.\n- `Email` — email address.\n- `Url` — website / URL.\n- `Number` — numeric input with optional unit and constraints.\n- `Date` — date or date+time picker.\n- `Select` — dropdown; user picks one option.\n- `MultiChoice` — checkboxes; user picks one or more options.\n- `MultiSelect` — Subtasks: a checklist of sub-items inside the task.\n- `Members` — assignee picker (selects organization users).\n- `File` — single file upload.\n- `MultiFile` — multi-file upload (in-app \"File Upload\").\n- `Document` — document approval field; links the task to a document review.\n- `Table` — rows × columns of cells; users fill cell values.\n- `SendRichEmail` — pre-written email embedded in the task; sent manually by the user or\n  automatically when the task is completed.\n- `Hidden` — only visible when editing the workflow; populated by integrations or default values.\n- `Snippet` — only visible when editing; passes static text or merge tags into automations.\n","type":"string","enum":["Date","Document","Email","File","Hidden","Members","MultiChoice","MultiFile","MultiSelect","Number","Select","SendRichEmail","Snippet","Table","Text","Textarea","Url"],"const":"Textarea"}}},"CreateUrlFormFieldRequest":{"title":"CreateUrlFormFieldRequest","type":"object","required":["type","fieldType"],"properties":{"hiddenByDefault":{"description":"When `true`, the widget is hidden by default; conditional logic rules can reveal it at runtime. Defaults to `false`.","type":"boolean"},"position":{"title":"WidgetPosition","description":"Where to place this widget on the task. `Top` — before all existing widgets. `Bottom` — after all existing widgets (default when `position` is omitted). `After` — immediately after the widget identified by `widgetId`.","oneOf":[{"title":"WidgetPositionAfter","type":"object","required":["widgetId","type"],"properties":{"widgetId":{"title":"EntityID","description":"The ID of the widget.","type":"string"},"type":{"description":"Discriminator value for this variant. See the parent oneOf for the full set of values.","type":"string","const":"After"}}},{"title":"WidgetPositionBottom","type":"object","required":["type"],"properties":{"type":{"description":"Discriminator value for this variant. See the parent oneOf for the full set of values.","type":"string","const":"Bottom"}}},{"title":"WidgetPositionTop","type":"object","required":["type"],"properties":{"type":{"description":"Discriminator value for this variant. See the parent oneOf for the full set of values.","type":"string","const":"Top"}}}],"required":["type"],"discriminator":{"propertyName":"type","mapping":{"After":"#/components/schemas/WidgetPositionAfter","Bottom":"#/components/schemas/WidgetPositionBottom","Top":"#/components/schemas/WidgetPositionTop"}}},"label":{"description":"Display label shown to the end user.","type":"string","maxLength":255},"config":{"title":"PublicApiUrlFormFieldConfig","description":"Field-specific configuration. Shape depends on `fieldType`.","type":"object","properties":{"defaultValue":{"description":"Default value pre-filled when a new workflow run is created.","type":"string"}}},"type":{"description":"Discriminator value for this variant. See the parent oneOf for the full set of values.","examples":["FormField"],"type":"string","enum":["FormField"]},"fieldType":{"description":"Form-field subtype discriminator (only relevant when widget `type` is `FormField`).\n\n- `Text` — short text input (≤255 characters).\n- `Textarea` — long-form text.\n- `Email` — email address.\n- `Url` — website / URL.\n- `Number` — numeric input with optional unit and constraints.\n- `Date` — date or date+time picker.\n- `Select` — dropdown; user picks one option.\n- `MultiChoice` — checkboxes; user picks one or more options.\n- `MultiSelect` — Subtasks: a checklist of sub-items inside the task.\n- `Members` — assignee picker (selects organization users).\n- `File` — single file upload.\n- `MultiFile` — multi-file upload (in-app \"File Upload\").\n- `Document` — document approval field; links the task to a document review.\n- `Table` — rows × columns of cells; users fill cell values.\n- `SendRichEmail` — pre-written email embedded in the task; sent manually by the user or\n  automatically when the task is completed.\n- `Hidden` — only visible when editing the workflow; populated by integrations or default values.\n- `Snippet` — only visible when editing; passes static text or merge tags into automations.\n","type":"string","enum":["Date","Document","Email","File","Hidden","Members","MultiChoice","MultiFile","MultiSelect","Number","Select","SendRichEmail","Snippet","Table","Text","Textarea","Url"],"const":"Url"}}},"CreateWebhookRequest":{"title":"CreateWebhookRequest","type":"object","required":["url"],"properties":{"url":{"description":"Target URL.","type":"string"},"triggers":{"type":"array","uniqueItems":true,"items":{"description":"Event that fires this webhook. `TaskChecked` — a task was checked off. `TaskUnchecked` — a previously checked task was unchecked. `TaskCheckedUnchecked` — either of the above. `TaskReady` — a task became ready to be worked on (no longer hidden or blocked by an earlier stop). `WorkflowRunCreated` — a new workflow run was created. `WorkflowRunCompleted` — a workflow run was marked complete.","type":"string","enum":["TaskChecked","TaskUnchecked","TaskCheckedUnchecked","TaskReady","WorkflowRunCreated","WorkflowRunCompleted"]}},"workflowId":{"title":"EntityID","description":"The ID of the Workflow.","type":"string"},"taskId":{"title":"EntityID","description":"The ID of the Task.","type":"string"}}},"CreateWorkflowCrossLinkWidgetRequest":{"title":"CreateWorkflowCrossLinkWidgetRequest","type":"object","required":["type"],"properties":{"hiddenByDefault":{"description":"When `true`, the widget is hidden by default; conditional logic rules can reveal it at runtime. Defaults to `false`.","type":"boolean"},"position":{"title":"WidgetPosition","description":"Where to place this widget on the task. `Top` — before all existing widgets. `Bottom` — after all existing widgets (default when `position` is omitted). `After` — immediately after the widget identified by `widgetId`.","oneOf":[{"title":"WidgetPositionAfter","type":"object","required":["widgetId","type"],"properties":{"widgetId":{"title":"EntityID","description":"The ID of the widget.","type":"string"},"type":{"description":"Discriminator value for this variant. See the parent oneOf for the full set of values.","type":"string","const":"After"}}},{"title":"WidgetPositionBottom","type":"object","required":["type"],"properties":{"type":{"description":"Discriminator value for this variant. See the parent oneOf for the full set of values.","type":"string","const":"Bottom"}}},{"title":"WidgetPositionTop","type":"object","required":["type"],"properties":{"type":{"description":"Discriminator value for this variant. See the parent oneOf for the full set of values.","type":"string","const":"Top"}}}],"required":["type"],"discriminator":{"propertyName":"type","mapping":{"After":"#/components/schemas/WidgetPositionAfter","Bottom":"#/components/schemas/WidgetPositionBottom","Top":"#/components/schemas/WidgetPositionTop"}}},"linkedTemplateId":{"title":"EntityID","description":"The ID of the linked workflow or page that this CrossLink widget points to.","type":"string"},"type":{"description":"Discriminator value for this variant. See the parent oneOf for the full set of values.","type":"string","enum":["FormField","Text","Image","File","Video","Embed","CrossLink"],"const":"CrossLink"}}},"CreateWorkflowEmbedWidgetRequest":{"title":"CreateWorkflowEmbedWidgetRequest","type":"object","required":["type"],"properties":{"hiddenByDefault":{"description":"When `true`, the widget is hidden by default; conditional logic rules can reveal it at runtime. Defaults to `false`.","type":"boolean"},"position":{"title":"WidgetPosition","description":"Where to place this widget on the task. `Top` — before all existing widgets. `Bottom` — after all existing widgets (default when `position` is omitted). `After` — immediately after the widget identified by `widgetId`.","oneOf":[{"title":"WidgetPositionAfter","type":"object","required":["widgetId","type"],"properties":{"widgetId":{"title":"EntityID","description":"The ID of the widget.","type":"string"},"type":{"description":"Discriminator value for this variant. See the parent oneOf for the full set of values.","type":"string","const":"After"}}},{"title":"WidgetPositionBottom","type":"object","required":["type"],"properties":{"type":{"description":"Discriminator value for this variant. See the parent oneOf for the full set of values.","type":"string","const":"Bottom"}}},{"title":"WidgetPositionTop","type":"object","required":["type"],"properties":{"type":{"description":"Discriminator value for this variant. See the parent oneOf for the full set of values.","type":"string","const":"Top"}}}],"required":["type"],"discriminator":{"propertyName":"type","mapping":{"After":"#/components/schemas/WidgetPositionAfter","Bottom":"#/components/schemas/WidgetPositionBottom","Top":"#/components/schemas/WidgetPositionTop"}}},"url":{"description":"Target URL.","type":"string","maxLength":4000},"type":{"description":"Discriminator value for this variant. See the parent oneOf for the full set of values.","type":"string","enum":["FormField","Text","Image","File","Video","Embed","CrossLink"],"const":"Embed"}}},"CreateWorkflowFileWidgetRequest":{"title":"CreateWorkflowFileWidgetRequest","type":"object","required":["type"],"properties":{"hiddenByDefault":{"description":"When `true`, the widget is hidden by default; conditional logic rules can reveal it at runtime. Defaults to `false`.","type":"boolean"},"position":{"title":"WidgetPosition","description":"Where to place this widget on the task. `Top` — before all existing widgets. `Bottom` — after all existing widgets (default when `position` is omitted). `After` — immediately after the widget identified by `widgetId`.","oneOf":[{"title":"WidgetPositionAfter","type":"object","required":["widgetId","type"],"properties":{"widgetId":{"title":"EntityID","description":"The ID of the widget.","type":"string"},"type":{"description":"Discriminator value for this variant. See the parent oneOf for the full set of values.","type":"string","const":"After"}}},{"title":"WidgetPositionBottom","type":"object","required":["type"],"properties":{"type":{"description":"Discriminator value for this variant. See the parent oneOf for the full set of values.","type":"string","const":"Bottom"}}},{"title":"WidgetPositionTop","type":"object","required":["type"],"properties":{"type":{"description":"Discriminator value for this variant. See the parent oneOf for the full set of values.","type":"string","const":"Top"}}}],"required":["type"],"discriminator":{"propertyName":"type","mapping":{"After":"#/components/schemas/WidgetPositionAfter","Bottom":"#/components/schemas/WidgetPositionBottom","Top":"#/components/schemas/WidgetPositionTop"}}},"description":{"description":"Optional long-form description.","type":"string"},"type":{"description":"Discriminator value for this variant. See the parent oneOf for the full set of values.","type":"string","enum":["FormField","Text","Image","File","Video","Embed","CrossLink"],"const":"File"}}},"CreateWorkflowImageWidgetRequest":{"title":"CreateWorkflowImageWidgetRequest","type":"object","required":["type"],"properties":{"hiddenByDefault":{"description":"When `true`, the widget is hidden by default; conditional logic rules can reveal it at runtime. Defaults to `false`.","type":"boolean"},"position":{"title":"WidgetPosition","description":"Where to place this widget on the task. `Top` — before all existing widgets. `Bottom` — after all existing widgets (default when `position` is omitted). `After` — immediately after the widget identified by `widgetId`.","oneOf":[{"title":"WidgetPositionAfter","type":"object","required":["widgetId","type"],"properties":{"widgetId":{"title":"EntityID","description":"The ID of the widget.","type":"string"},"type":{"description":"Discriminator value for this variant. See the parent oneOf for the full set of values.","type":"string","const":"After"}}},{"title":"WidgetPositionBottom","type":"object","required":["type"],"properties":{"type":{"description":"Discriminator value for this variant. See the parent oneOf for the full set of values.","type":"string","const":"Bottom"}}},{"title":"WidgetPositionTop","type":"object","required":["type"],"properties":{"type":{"description":"Discriminator value for this variant. See the parent oneOf for the full set of values.","type":"string","const":"Top"}}}],"required":["type"],"discriminator":{"propertyName":"type","mapping":{"After":"#/components/schemas/WidgetPositionAfter","Bottom":"#/components/schemas/WidgetPositionBottom","Top":"#/components/schemas/WidgetPositionTop"}}},"caption":{"description":"Caption text rendered with the image.","type":"string"},"type":{"description":"Discriminator value for this variant. See the parent oneOf for the full set of values.","type":"string","enum":["FormField","Text","Image","File","Video","Embed","CrossLink"],"const":"Image"}}},"CreateWorkflowIncomingWebhookConfigRequest":{"title":"CreateWorkflowIncomingWebhookConfigRequest","type":"object","properties":{"properties":{"description":"Mapping from workflow-run property names (e.g. `Name`, `DueDate`, `Assignees`) to JSONPath expressions in the incoming payload.","type":"object","additionalProperties":{"type":"string"}},"formFields":{"description":"Mapping from form-field IDs to JSONPath expressions in the incoming payload.","type":"object","additionalProperties":{"type":"string"}}}},"CreateWorkflowIncomingWebhookRequest":{"title":"CreateWorkflowIncomingWebhookRequest","type":"object","required":["name","automationApp","config"],"properties":{"name":{"description":"Display name.","type":"string"},"automationApp":{"type":"string"},"config":{"title":"CreateWorkflowIncomingWebhookConfigRequest","description":"Field-specific configuration. Shape depends on `fieldType`.","type":"object","properties":{"properties":{"description":"Mapping from workflow-run property names (e.g. `Name`, `DueDate`, `Assignees`) to JSONPath expressions in the incoming payload.","type":"object","additionalProperties":{"type":"string"}},"formFields":{"description":"Mapping from form-field IDs to JSONPath expressions in the incoming payload.","type":"object","additionalProperties":{"type":"string"}}}}}},"CreateWorkflowLogicRuleRequest":{"title":"CreateWorkflowLogicRuleRequest","type":"object","required":["condition","action","targets"],"properties":{"condition":{"title":"OrCondition","type":"object","properties":{"or":{"description":"List of AND-groups; the OR-condition matches if any group matches.","type":"array","items":{"title":"AndGroup","type":"object","properties":{"and":{"description":"List of conditions that must all match (AND combined within a group).","type":"array","items":{"title":"LeafCondition","type":"object","required":["widgetId","operator"],"properties":{"widgetId":{"title":"EntityID","description":"The ID of the widget.","type":"string"},"operator":{"description":"Comparison operator (e.g. `Is`, `IsNot`, `Contains`, `IsEmpty`).","type":"string"},"value":{"description":"The option's stored value.","type":"string"}}}}}}}}},"action":{"title":"WorkflowLogicRuleAction","description":"What the rule does to its targets when conditions match. `Show` reveals tasks/widgets that are hidden by default. `Hide` conceals tasks/widgets that are visible by default.","type":"string","enum":["Show","Hide"]},"targets":{"title":"PublicApiTargets","type":"object","properties":{"taskIds":{"description":"IDs of the tasks this rule applies to.","type":"array","items":{"title":"EntityID","type":"string"}},"widgetIds":{"description":"IDs of the widgets (form fields) this rule applies to.","type":"array","items":{"title":"EntityID","type":"string"}}}},"position":{"title":"RulePosition","description":"Where to place this logic rule in the workflow revision. `Top` — before all existing rules. `Bottom` — after all existing rules (default when `position` is omitted). `After` — immediately after the rule identified by `ruleId`.","oneOf":[{"title":"RulePositionAfter","type":"object","required":["ruleId","type"],"properties":{"ruleId":{"title":"EntityID","type":"string"},"type":{"description":"Discriminator value for this variant. See the parent oneOf for the full set of values.","type":"string","const":"After"}}},{"title":"RulePositionBottom","type":"object","required":["type"],"properties":{"type":{"description":"Discriminator value for this variant. See the parent oneOf for the full set of values.","type":"string","const":"Bottom"}}},{"title":"RulePositionTop","type":"object","required":["type"],"properties":{"type":{"description":"Discriminator value for this variant. See the parent oneOf for the full set of values.","type":"string","const":"Top"}}}],"required":["type"],"discriminator":{"propertyName":"type","mapping":{"After":"#/components/schemas/RulePositionAfter","Bottom":"#/components/schemas/RulePositionBottom","Top":"#/components/schemas/RulePositionTop"}}},"description":{"description":"Optional long-form description.","type":"string","maxLength":255}}},"CreateWorkflowRequest":{"title":"CreateWorkflowRequest","type":"object","required":["name","folderId","shareLevel","runLinkShareLevel","allowComments","sharedRunsByDefault"],"properties":{"name":{"description":"Display name.","type":"string","maxLength":255,"minLength":1},"description":{"description":"Optional free-form description of the workflow.","type":"string","maxLength":255},"folderId":{"description":"The ID of the Folder","examples":["pfwU_IfdcTYBoX6Zj110lg"],"type":"string"},"shareLevel":{"description":"Controls who can access this workflow. `None` — only organization members can view and run this workflow (when permitted). `Overview` — used only for Forms; viewers see the form name and background image but not the content. `View` — anyone with the link can view this workflow. `Run` — anyone with the link can view and run this workflow. Setting this to any value other than `None` may return `403 Forbidden` (\"too new\") — anti-spam protection blocks organizations without an eligible paid subscription outright, and blocks startup-plan organizations younger than 7 days.","type":"string","enum":["None","Overview","View","Run"]},"runLinkShareLevel":{"description":"Controls who can run this workflow via a run link. `Organization` — only authenticated organization members with run permission can use the run link. `Public` — anyone with the link can run the workflow without a Process Street account; all runs created from a public link are automatically shared. Setting this to `Public` may return `403 Forbidden` (\"too new\") — anti-spam protection blocks organizations without an eligible paid subscription outright, and blocks startup-plan organizations younger than 7 days.","type":"string","enum":["Organization","Public"]},"allowComments":{"description":"When `true`, comments are enabled on workflow runs created from this workflow.","type":"boolean"},"sharedRunsByDefault":{"description":"When `true`, new workflow runs created from this workflow have their share link enabled by default. Recipients of the share link can fill in form fields and complete tasks without a Process Street account.","type":"boolean"},"referenceId":{"description":"Version prefix used when version control is enabled on this workflow. Combined with the version number to form the full version identifier.","type":"string","maxLength":100}}},"CreateWorkflowRunRequest":{"title":"CreateWorkflowRunRequest","type":"object","maxLength":1024,"required":["workflowId"],"properties":{"workflowId":{"description":"The ID of the Workflow","examples":["r9fMbmUNkXsBoX6ZoGF5tw"],"type":"string"},"name":{"description":"The name of the new Workflow Run","type":"string"},"dueDate":{"description":"The due date of the new Workflow Run (Optional)","type":"string","format":"date-time"},"shared":{"type":"boolean"}}},"CreateWorkflowRunResponse":{"title":"CreateWorkflowRunResponse","type":"object","required":["id"],"properties":{"id":{"description":"The ID of the Workflow Run","examples":["oqBa3EFLXnEBoX6Zog53bg"],"type":"string"},"links":{"description":"Navigable HATEOAS links to related resources. Each entry has a `name` (RFC-5988 relation), an `href` URL, and a `type` (`Api` or `App`).","type":"array","items":{"title":"Link","description":"A HATEOAS link to a related resource. Use these to navigate between resources without constructing URLs by hand.","type":"object","required":["name","href","type"],"properties":{"name":{"description":"Standard link relation name (RFC 5988) indicating this link's role. Common values include `self`, `edit`, `related`, `previous`, `next`.","type":"string"},"href":{"title":"Uri","description":"URL of the linked resource.","examples":["https://api.process.st/api/v1.1/resource/XXX"],"type":"string"},"rel":{"description":"Optional. The kind of resource this link points to (e.g. `Workflow`, `Task`, `Comment`).","type":"string","enum":["Approval Task","Approvals","Assignees","Comment","Data Set Records","Data Sets","Form Field Values","Subject Task","Task","Tasks","Users","Webhook","Workflow","Workflow Run"]},"type":{"description":"Whether this link targets an API endpoint or a Process Street app URL. `Api` — a callable API endpoint you can fetch directly. `App` — a browser-facing URL in the Process Street UI.","type":"string","enum":["Api","App"]}}}}}},"CreateWorkflowTaskRequest":{"title":"CreateWorkflowTaskRequest","type":"object","properties":{"name":{"description":"Display name.","type":"string","maxLength":255},"taskType":{"title":"TaskType","description":"What the task does.\n\n- `Standard` — a regular task that a user manually checks off when done.\n- `Approval` — an approval task; a reviewer approves or rejects it, gating subsequent tasks.\n- `AI` — an automated task that runs an AI prompt to populate form field values.\n- `Code` — an automated task that runs a custom code snippet.\n","type":"string","enum":["Standard","Approval","AI","Code"]},"stop":{"type":"boolean"},"hiddenByDefault":{"description":"When `true`, the widget is hidden by default; conditional logic rules can reveal it at runtime. Defaults to `false`.","type":"boolean"},"dueOffset":{"type":"string"},"position":{"title":"TaskPosition","description":"Where to place this task in the workflow revision. `Top` — before all existing tasks. `Bottom` — after all existing tasks (default when `position` is omitted). `After` — immediately after the task identified by `taskId`.","oneOf":[{"title":"TaskPositionAfter","type":"object","required":["taskId","type"],"properties":{"taskId":{"title":"EntityID","description":"The ID of the Task.","type":"string"},"type":{"description":"Discriminator value for this variant. See the parent oneOf for the full set of values.","type":"string","const":"After"}}},{"title":"TaskPositionBottom","type":"object","required":["type"],"properties":{"type":{"description":"Discriminator value for this variant. See the parent oneOf for the full set of values.","type":"string","const":"Bottom"}}},{"title":"TaskPositionTop","type":"object","required":["type"],"properties":{"type":{"description":"Discriminator value for this variant. See the parent oneOf for the full set of values.","type":"string","const":"Top"}}}],"required":["type"],"discriminator":{"propertyName":"type","mapping":{"After":"#/components/schemas/TaskPositionAfter","Bottom":"#/components/schemas/TaskPositionBottom","Top":"#/components/schemas/TaskPositionTop"}}}}},"CreateWorkflowTextWidgetRequest":{"title":"CreateWorkflowTextWidgetRequest","type":"object","required":["type"],"properties":{"hiddenByDefault":{"description":"When `true`, the widget is hidden by default; conditional logic rules can reveal it at runtime. Defaults to `false`.","type":"boolean"},"position":{"title":"WidgetPosition","description":"Where to place this widget on the task. `Top` — before all existing widgets. `Bottom` — after all existing widgets (default when `position` is omitted). `After` — immediately after the widget identified by `widgetId`.","oneOf":[{"title":"WidgetPositionAfter","type":"object","required":["widgetId","type"],"properties":{"widgetId":{"title":"EntityID","description":"The ID of the widget.","type":"string"},"type":{"description":"Discriminator value for this variant. See the parent oneOf for the full set of values.","type":"string","const":"After"}}},{"title":"WidgetPositionBottom","type":"object","required":["type"],"properties":{"type":{"description":"Discriminator value for this variant. See the parent oneOf for the full set of values.","type":"string","const":"Bottom"}}},{"title":"WidgetPositionTop","type":"object","required":["type"],"properties":{"type":{"description":"Discriminator value for this variant. See the parent oneOf for the full set of values.","type":"string","const":"Top"}}}],"required":["type"],"discriminator":{"propertyName":"type","mapping":{"After":"#/components/schemas/WidgetPositionAfter","Bottom":"#/components/schemas/WidgetPositionBottom","Top":"#/components/schemas/WidgetPositionTop"}}},"content":{"description":"Rich text content. May contain merge tags.","type":"string"},"type":{"description":"Discriminator value for this variant. See the parent oneOf for the full set of values.","type":"string","enum":["FormField","Text","Image","File","Video","Embed","CrossLink"],"const":"Text"}}},"CreateWorkflowVideoWidgetRequest":{"title":"CreateWorkflowVideoWidgetRequest","type":"object","required":["type"],"properties":{"hiddenByDefault":{"description":"When `true`, the widget is hidden by default; conditional logic rules can reveal it at runtime. Defaults to `false`.","type":"boolean"},"position":{"title":"WidgetPosition","description":"Where to place this widget on the task. `Top` — before all existing widgets. `Bottom` — after all existing widgets (default when `position` is omitted). `After` — immediately after the widget identified by `widgetId`.","oneOf":[{"title":"WidgetPositionAfter","type":"object","required":["widgetId","type"],"properties":{"widgetId":{"title":"EntityID","description":"The ID of the widget.","type":"string"},"type":{"description":"Discriminator value for this variant. See the parent oneOf for the full set of values.","type":"string","const":"After"}}},{"title":"WidgetPositionBottom","type":"object","required":["type"],"properties":{"type":{"description":"Discriminator value for this variant. See the parent oneOf for the full set of values.","type":"string","const":"Bottom"}}},{"title":"WidgetPositionTop","type":"object","required":["type"],"properties":{"type":{"description":"Discriminator value for this variant. See the parent oneOf for the full set of values.","type":"string","const":"Top"}}}],"required":["type"],"discriminator":{"propertyName":"type","mapping":{"After":"#/components/schemas/WidgetPositionAfter","Bottom":"#/components/schemas/WidgetPositionBottom","Top":"#/components/schemas/WidgetPositionTop"}}},"description":{"description":"Optional long-form description.","type":"string"},"url":{"description":"Target URL.","type":"string"},"type":{"description":"Discriminator value for this variant. See the parent oneOf for the full set of values.","type":"string","enum":["FormField","Text","Image","File","Video","Embed","CrossLink"],"const":"Video"}}},"CreateWorkflowWidgetRequest":{"title":"CreateWorkflowWidgetRequest","description":"A widget on a workflow task. The `type` discriminator selects the widget kind — `FormField` (collects user input — further discriminated by `fieldType`), `Text`, `Image`, `File`, `Video`, `Embed`, or `CrossLink`.","oneOf":[{"title":"CreateFormFieldWidgetRequest","description":"A form field widget. The `fieldType` discriminator selects the variant — see `fieldType` for what each value collects.","oneOf":[{"title":"CreateDateFormFieldRequest","type":"object","required":["type","fieldType"],"properties":{"hiddenByDefault":{"description":"When `true`, the widget is hidden by default; conditional logic rules can reveal it at runtime. Defaults to `false`.","type":"boolean"},"position":{"title":"WidgetPosition","description":"Where to place this widget on the task. `Top` — before all existing widgets. `Bottom` — after all existing widgets (default when `position` is omitted). `After` — immediately after the widget identified by `widgetId`.","oneOf":[{"title":"WidgetPositionAfter","type":"object","required":["widgetId","type"],"properties":{"widgetId":{"title":"EntityID","description":"The ID of the widget.","type":"string"},"type":{"description":"Discriminator value for this variant. See the parent oneOf for the full set of values.","type":"string","const":"After"}}},{"title":"WidgetPositionBottom","type":"object","required":["type"],"properties":{"type":{"description":"Discriminator value for this variant. See the parent oneOf for the full set of values.","type":"string","const":"Bottom"}}},{"title":"WidgetPositionTop","type":"object","required":["type"],"properties":{"type":{"description":"Discriminator value for this variant. See the parent oneOf for the full set of values.","type":"string","const":"Top"}}}],"required":["type"],"discriminator":{"propertyName":"type","mapping":{"After":"#/components/schemas/WidgetPositionAfter","Bottom":"#/components/schemas/WidgetPositionBottom","Top":"#/components/schemas/WidgetPositionTop"}}},"label":{"description":"Display label shown to the end user.","type":"string","maxLength":255},"config":{"title":"PublicApiDateFormFieldConfig","description":"Field-specific configuration. Shape depends on `fieldType`.","type":"object","properties":{"defaultValue":{"description":"Default value pre-filled when a new workflow run is created.","type":"string"},"timeOption":{"description":"How time-of-day is handled on this Date field.\n\n- `Included` — the field always captures both date and time.\n- `Excluded` — date only; time is never captured.\n- `Optional` — the user picks whether to include a time.\n","type":"string","enum":["Included","Excluded","Optional"]}}},"constraints":{"title":"PublicApiDateFormFieldConstraints","description":"Field-specific validation constraints. Shape depends on `fieldType`.","type":"object","properties":{"afterDate":{"description":"Earliest accepted date (inclusive). Pair with `afterDateSourceType`.","type":"string","format":"date-time"},"beforeDate":{"description":"Latest accepted date (inclusive). Pair with `beforeDateSourceType`.","type":"string","format":"date-time"},"afterDateFormFieldWidgetGroupId":{"title":"EntityID","description":"When `afterDateSourceType=FormField`, the ID of the Date form field whose value is the lower bound.","type":"string"},"beforeDateFormFieldWidgetGroupId":{"title":"EntityID","description":"When `beforeDateSourceType=FormField`, the ID of the Date form field whose value is the upper bound.","type":"string"},"afterDateSourceType":{"description":"How the before/after constraint date is derived.\n\n- `SpecificDate` — an absolute date supplied as `afterDate` / `beforeDate`.\n- `FormFieldValue` — derived from another Date form field (`afterDateField` / `beforeDateField`).\n- `TaskDueDate` — relative to the containing task's due date.\n- `ChecklistStartDate` / `ChecklistDueDate` — relative to the workflow run's start or due date.\n","type":"string","enum":["SpecificDate","FormFieldValue","TaskDueDate","ChecklistStartDate","ChecklistDueDate"]},"beforeDateSourceType":{"description":"How the before/after constraint date is derived.\n\n- `SpecificDate` — an absolute date supplied as `afterDate` / `beforeDate`.\n- `FormFieldValue` — derived from another Date form field (`afterDateField` / `beforeDateField`).\n- `TaskDueDate` — relative to the containing task's due date.\n- `ChecklistStartDate` / `ChecklistDueDate` — relative to the workflow run's start or due date.\n","type":"string","enum":["SpecificDate","FormFieldValue","TaskDueDate","ChecklistStartDate","ChecklistDueDate"]},"afterDateOffset":{"description":"ISO 8601 duration (e.g. `P7D`, `P1Y2M`).","type":"string"},"beforeDateOffset":{"description":"ISO 8601 duration (e.g. `P7D`, `P1Y2M`).","type":"string"}}},"type":{"description":"Discriminator value for this variant. See the parent oneOf for the full set of values.","examples":["FormField"],"type":"string","enum":["FormField"]},"fieldType":{"description":"Form-field subtype discriminator (only relevant when widget `type` is `FormField`).\n\n- `Text` — short text input (≤255 characters).\n- `Textarea` — long-form text.\n- `Email` — email address.\n- `Url` — website / URL.\n- `Number` — numeric input with optional unit and constraints.\n- `Date` — date or date+time picker.\n- `Select` — dropdown; user picks one option.\n- `MultiChoice` — checkboxes; user picks one or more options.\n- `MultiSelect` — Subtasks: a checklist of sub-items inside the task.\n- `Members` — assignee picker (selects organization users).\n- `File` — single file upload.\n- `MultiFile` — multi-file upload (in-app \"File Upload\").\n- `Document` — document approval field; links the task to a document review.\n- `Table` — rows × columns of cells; users fill cell values.\n- `SendRichEmail` — pre-written email embedded in the task; sent manually by the user or\n  automatically when the task is completed.\n- `Hidden` — only visible when editing the workflow; populated by integrations or default values.\n- `Snippet` — only visible when editing; passes static text or merge tags into automations.\n","type":"string","enum":["Date","Document","Email","File","Hidden","Members","MultiChoice","MultiFile","MultiSelect","Number","Select","SendRichEmail","Snippet","Table","Text","Textarea","Url"],"const":"Date"}}},{"title":"CreateDocumentFormFieldRequest","type":"object","required":["type","fieldType"],"properties":{"hiddenByDefault":{"description":"When `true`, the widget is hidden by default; conditional logic rules can reveal it at runtime. Defaults to `false`.","type":"boolean"},"position":{"title":"WidgetPosition","description":"Where to place this widget on the task. `Top` — before all existing widgets. `Bottom` — after all existing widgets (default when `position` is omitted). `After` — immediately after the widget identified by `widgetId`.","oneOf":[{"title":"WidgetPositionAfter","type":"object","required":["widgetId","type"],"properties":{"widgetId":{"title":"EntityID","description":"The ID of the widget.","type":"string"},"type":{"description":"Discriminator value for this variant. See the parent oneOf for the full set of values.","type":"string","const":"After"}}},{"title":"WidgetPositionBottom","type":"object","required":["type"],"properties":{"type":{"description":"Discriminator value for this variant. See the parent oneOf for the full set of values.","type":"string","const":"Bottom"}}},{"title":"WidgetPositionTop","type":"object","required":["type"],"properties":{"type":{"description":"Discriminator value for this variant. See the parent oneOf for the full set of values.","type":"string","const":"Top"}}}],"required":["type"],"discriminator":{"propertyName":"type","mapping":{"After":"#/components/schemas/WidgetPositionAfter","Bottom":"#/components/schemas/WidgetPositionBottom","Top":"#/components/schemas/WidgetPositionTop"}}},"label":{"description":"Display label shown to the end user.","type":"string","maxLength":255},"config":{"title":"PublicApiDocumentFormFieldConfig","description":"Field-specific configuration. Shape depends on `fieldType`.","type":"object","required":["reviewRequest"],"properties":{"reviewRequest":{"description":"When `true`, the email requires explicit user review/send rather than auto-send.","type":"boolean"},"defaultValue":{"description":"Default value pre-filled when a new workflow run is created.","type":"string"}}},"type":{"description":"Discriminator value for this variant. See the parent oneOf for the full set of values.","examples":["FormField"],"type":"string","enum":["FormField"]},"fieldType":{"description":"Form-field subtype discriminator (only relevant when widget `type` is `FormField`).\n\n- `Text` — short text input (≤255 characters).\n- `Textarea` — long-form text.\n- `Email` — email address.\n- `Url` — website / URL.\n- `Number` — numeric input with optional unit and constraints.\n- `Date` — date or date+time picker.\n- `Select` — dropdown; user picks one option.\n- `MultiChoice` — checkboxes; user picks one or more options.\n- `MultiSelect` — Subtasks: a checklist of sub-items inside the task.\n- `Members` — assignee picker (selects organization users).\n- `File` — single file upload.\n- `MultiFile` — multi-file upload (in-app \"File Upload\").\n- `Document` — document approval field; links the task to a document review.\n- `Table` — rows × columns of cells; users fill cell values.\n- `SendRichEmail` — pre-written email embedded in the task; sent manually by the user or\n  automatically when the task is completed.\n- `Hidden` — only visible when editing the workflow; populated by integrations or default values.\n- `Snippet` — only visible when editing; passes static text or merge tags into automations.\n","type":"string","enum":["Date","Document","Email","File","Hidden","Members","MultiChoice","MultiFile","MultiSelect","Number","Select","SendRichEmail","Snippet","Table","Text","Textarea","Url"],"const":"Document"}}},{"title":"CreateEmailFormFieldRequest","type":"object","required":["type","fieldType"],"properties":{"hiddenByDefault":{"description":"When `true`, the widget is hidden by default; conditional logic rules can reveal it at runtime. Defaults to `false`.","type":"boolean"},"position":{"title":"WidgetPosition","description":"Where to place this widget on the task. `Top` — before all existing widgets. `Bottom` — after all existing widgets (default when `position` is omitted). `After` — immediately after the widget identified by `widgetId`.","oneOf":[{"title":"WidgetPositionAfter","type":"object","required":["widgetId","type"],"properties":{"widgetId":{"title":"EntityID","description":"The ID of the widget.","type":"string"},"type":{"description":"Discriminator value for this variant. See the parent oneOf for the full set of values.","type":"string","const":"After"}}},{"title":"WidgetPositionBottom","type":"object","required":["type"],"properties":{"type":{"description":"Discriminator value for this variant. See the parent oneOf for the full set of values.","type":"string","const":"Bottom"}}},{"title":"WidgetPositionTop","type":"object","required":["type"],"properties":{"type":{"description":"Discriminator value for this variant. See the parent oneOf for the full set of values.","type":"string","const":"Top"}}}],"required":["type"],"discriminator":{"propertyName":"type","mapping":{"After":"#/components/schemas/WidgetPositionAfter","Bottom":"#/components/schemas/WidgetPositionBottom","Top":"#/components/schemas/WidgetPositionTop"}}},"label":{"description":"Display label shown to the end user.","type":"string","maxLength":255},"config":{"title":"PublicApiEmailFormFieldConfig","description":"Field-specific configuration. Shape depends on `fieldType`.","type":"object","properties":{"placeholder":{"description":"Placeholder hint shown in the input when no value has been entered.","type":"string"},"defaultValue":{"description":"Default value pre-filled when a new workflow run is created.","type":"string"}}},"constraints":{"title":"PublicApiEmailFormFieldConstraints","description":"Field-specific validation constraints. Shape depends on `fieldType`.","type":"object","properties":{"domains":{"description":"Allowed (or blocked, depending on `restriction`) email domains for this field.","type":"array","items":{"type":"string"}},"restriction":{"description":"How the `domains` list filters allowed email addresses.\n\n- `Allow` — only emails whose domain is in the list are accepted.\n- `Block` — emails whose domain is in the list are rejected; all others accepted.\n","type":"string","enum":["Allow","Block"]}}},"type":{"description":"Discriminator value for this variant. See the parent oneOf for the full set of values.","examples":["FormField"],"type":"string","enum":["FormField"]},"fieldType":{"description":"Form-field subtype discriminator (only relevant when widget `type` is `FormField`).\n\n- `Text` — short text input (≤255 characters).\n- `Textarea` — long-form text.\n- `Email` — email address.\n- `Url` — website / URL.\n- `Number` — numeric input with optional unit and constraints.\n- `Date` — date or date+time picker.\n- `Select` — dropdown; user picks one option.\n- `MultiChoice` — checkboxes; user picks one or more options.\n- `MultiSelect` — Subtasks: a checklist of sub-items inside the task.\n- `Members` — assignee picker (selects organization users).\n- `File` — single file upload.\n- `MultiFile` — multi-file upload (in-app \"File Upload\").\n- `Document` — document approval field; links the task to a document review.\n- `Table` — rows × columns of cells; users fill cell values.\n- `SendRichEmail` — pre-written email embedded in the task; sent manually by the user or\n  automatically when the task is completed.\n- `Hidden` — only visible when editing the workflow; populated by integrations or default values.\n- `Snippet` — only visible when editing; passes static text or merge tags into automations.\n","type":"string","enum":["Date","Document","Email","File","Hidden","Members","MultiChoice","MultiFile","MultiSelect","Number","Select","SendRichEmail","Snippet","Table","Text","Textarea","Url"],"const":"Email"}}},{"title":"CreateHiddenFormFieldRequest","type":"object","required":["type","fieldType"],"properties":{"hiddenByDefault":{"description":"When `true`, the widget is hidden by default; conditional logic rules can reveal it at runtime. Defaults to `false`.","type":"boolean"},"position":{"title":"WidgetPosition","description":"Where to place this widget on the task. `Top` — before all existing widgets. `Bottom` — after all existing widgets (default when `position` is omitted). `After` — immediately after the widget identified by `widgetId`.","oneOf":[{"title":"WidgetPositionAfter","type":"object","required":["widgetId","type"],"properties":{"widgetId":{"title":"EntityID","description":"The ID of the widget.","type":"string"},"type":{"description":"Discriminator value for this variant. See the parent oneOf for the full set of values.","type":"string","const":"After"}}},{"title":"WidgetPositionBottom","type":"object","required":["type"],"properties":{"type":{"description":"Discriminator value for this variant. See the parent oneOf for the full set of values.","type":"string","const":"Bottom"}}},{"title":"WidgetPositionTop","type":"object","required":["type"],"properties":{"type":{"description":"Discriminator value for this variant. See the parent oneOf for the full set of values.","type":"string","const":"Top"}}}],"required":["type"],"discriminator":{"propertyName":"type","mapping":{"After":"#/components/schemas/WidgetPositionAfter","Bottom":"#/components/schemas/WidgetPositionBottom","Top":"#/components/schemas/WidgetPositionTop"}}},"label":{"description":"Display label shown to the end user.","type":"string","maxLength":255},"config":{"title":"PublicApiHiddenFormFieldConfig","description":"Field-specific configuration. Shape depends on `fieldType`.","type":"object","properties":{"defaultValue":{"description":"Default value pre-filled when a new workflow run is created.","type":"string"}}},"type":{"description":"Discriminator value for this variant. See the parent oneOf for the full set of values.","examples":["FormField"],"type":"string","enum":["FormField"]},"fieldType":{"description":"Form-field subtype discriminator (only relevant when widget `type` is `FormField`).\n\n- `Text` — short text input (≤255 characters).\n- `Textarea` — long-form text.\n- `Email` — email address.\n- `Url` — website / URL.\n- `Number` — numeric input with optional unit and constraints.\n- `Date` — date or date+time picker.\n- `Select` — dropdown; user picks one option.\n- `MultiChoice` — checkboxes; user picks one or more options.\n- `MultiSelect` — Subtasks: a checklist of sub-items inside the task.\n- `Members` — assignee picker (selects organization users).\n- `File` — single file upload.\n- `MultiFile` — multi-file upload (in-app \"File Upload\").\n- `Document` — document approval field; links the task to a document review.\n- `Table` — rows × columns of cells; users fill cell values.\n- `SendRichEmail` — pre-written email embedded in the task; sent manually by the user or\n  automatically when the task is completed.\n- `Hidden` — only visible when editing the workflow; populated by integrations or default values.\n- `Snippet` — only visible when editing; passes static text or merge tags into automations.\n","type":"string","enum":["Date","Document","Email","File","Hidden","Members","MultiChoice","MultiFile","MultiSelect","Number","Select","SendRichEmail","Snippet","Table","Text","Textarea","Url"],"const":"Hidden"}}},{"title":"CreateMembersFormFieldRequest","type":"object","required":["type","fieldType"],"properties":{"hiddenByDefault":{"description":"When `true`, the widget is hidden by default; conditional logic rules can reveal it at runtime. Defaults to `false`.","type":"boolean"},"position":{"title":"WidgetPosition","description":"Where to place this widget on the task. `Top` — before all existing widgets. `Bottom` — after all existing widgets (default when `position` is omitted). `After` — immediately after the widget identified by `widgetId`.","oneOf":[{"title":"WidgetPositionAfter","type":"object","required":["widgetId","type"],"properties":{"widgetId":{"title":"EntityID","description":"The ID of the widget.","type":"string"},"type":{"description":"Discriminator value for this variant. See the parent oneOf for the full set of values.","type":"string","const":"After"}}},{"title":"WidgetPositionBottom","type":"object","required":["type"],"properties":{"type":{"description":"Discriminator value for this variant. See the parent oneOf for the full set of values.","type":"string","const":"Bottom"}}},{"title":"WidgetPositionTop","type":"object","required":["type"],"properties":{"type":{"description":"Discriminator value for this variant. See the parent oneOf for the full set of values.","type":"string","const":"Top"}}}],"required":["type"],"discriminator":{"propertyName":"type","mapping":{"After":"#/components/schemas/WidgetPositionAfter","Bottom":"#/components/schemas/WidgetPositionBottom","Top":"#/components/schemas/WidgetPositionTop"}}},"label":{"description":"Display label shown to the end user.","type":"string","maxLength":255},"config":{"title":"PublicApiMembersFormFieldConfig","description":"Field-specific configuration. Shape depends on `fieldType`.","type":"object","properties":{"defaultValue":{"description":"Default value pre-filled when a new workflow run is created.","type":"string"},"groupId":{"title":"EntityID","description":"The ID of an organization group.","type":"string"}}},"type":{"description":"Discriminator value for this variant. See the parent oneOf for the full set of values.","examples":["FormField"],"type":"string","enum":["FormField"]},"fieldType":{"description":"Form-field subtype discriminator (only relevant when widget `type` is `FormField`).\n\n- `Text` — short text input (≤255 characters).\n- `Textarea` — long-form text.\n- `Email` — email address.\n- `Url` — website / URL.\n- `Number` — numeric input with optional unit and constraints.\n- `Date` — date or date+time picker.\n- `Select` — dropdown; user picks one option.\n- `MultiChoice` — checkboxes; user picks one or more options.\n- `MultiSelect` — Subtasks: a checklist of sub-items inside the task.\n- `Members` — assignee picker (selects organization users).\n- `File` — single file upload.\n- `MultiFile` — multi-file upload (in-app \"File Upload\").\n- `Document` — document approval field; links the task to a document review.\n- `Table` — rows × columns of cells; users fill cell values.\n- `SendRichEmail` — pre-written email embedded in the task; sent manually by the user or\n  automatically when the task is completed.\n- `Hidden` — only visible when editing the workflow; populated by integrations or default values.\n- `Snippet` — only visible when editing; passes static text or merge tags into automations.\n","type":"string","enum":["Date","Document","Email","File","Hidden","Members","MultiChoice","MultiFile","MultiSelect","Number","Select","SendRichEmail","Snippet","Table","Text","Textarea","Url"],"const":"Members"}}},{"title":"CreateMultiChoiceFormFieldRequest","type":"object","required":["type","fieldType"],"properties":{"hiddenByDefault":{"description":"When `true`, the widget is hidden by default; conditional logic rules can reveal it at runtime. Defaults to `false`.","type":"boolean"},"position":{"title":"WidgetPosition","description":"Where to place this widget on the task. `Top` — before all existing widgets. `Bottom` — after all existing widgets (default when `position` is omitted). `After` — immediately after the widget identified by `widgetId`.","oneOf":[{"title":"WidgetPositionAfter","type":"object","required":["widgetId","type"],"properties":{"widgetId":{"title":"EntityID","description":"The ID of the widget.","type":"string"},"type":{"description":"Discriminator value for this variant. See the parent oneOf for the full set of values.","type":"string","const":"After"}}},{"title":"WidgetPositionBottom","type":"object","required":["type"],"properties":{"type":{"description":"Discriminator value for this variant. See the parent oneOf for the full set of values.","type":"string","const":"Bottom"}}},{"title":"WidgetPositionTop","type":"object","required":["type"],"properties":{"type":{"description":"Discriminator value for this variant. See the parent oneOf for the full set of values.","type":"string","const":"Top"}}}],"required":["type"],"discriminator":{"propertyName":"type","mapping":{"After":"#/components/schemas/WidgetPositionAfter","Bottom":"#/components/schemas/WidgetPositionBottom","Top":"#/components/schemas/WidgetPositionTop"}}},"label":{"description":"Display label shown to the end user.","type":"string","maxLength":255},"config":{"title":"PublicApiMultiChoiceFormFieldConfig","description":"Field-specific configuration. Shape depends on `fieldType`.","type":"object","properties":{"items":{"description":"Available options for selection-style form fields.","type":"array","items":{"title":"PublicApiFormFieldItem","type":"object","required":["name"],"properties":{"id":{"title":"EntityID","description":"The resource's ID.","type":"string"},"name":{"description":"Display name.","type":"string"}}}}}},"type":{"description":"Discriminator value for this variant. See the parent oneOf for the full set of values.","examples":["FormField"],"type":"string","enum":["FormField"]},"fieldType":{"description":"Form-field subtype discriminator (only relevant when widget `type` is `FormField`).\n\n- `Text` — short text input (≤255 characters).\n- `Textarea` — long-form text.\n- `Email` — email address.\n- `Url` — website / URL.\n- `Number` — numeric input with optional unit and constraints.\n- `Date` — date or date+time picker.\n- `Select` — dropdown; user picks one option.\n- `MultiChoice` — checkboxes; user picks one or more options.\n- `MultiSelect` — Subtasks: a checklist of sub-items inside the task.\n- `Members` — assignee picker (selects organization users).\n- `File` — single file upload.\n- `MultiFile` — multi-file upload (in-app \"File Upload\").\n- `Document` — document approval field; links the task to a document review.\n- `Table` — rows × columns of cells; users fill cell values.\n- `SendRichEmail` — pre-written email embedded in the task; sent manually by the user or\n  automatically when the task is completed.\n- `Hidden` — only visible when editing the workflow; populated by integrations or default values.\n- `Snippet` — only visible when editing; passes static text or merge tags into automations.\n","type":"string","enum":["Date","Document","Email","File","Hidden","Members","MultiChoice","MultiFile","MultiSelect","Number","Select","SendRichEmail","Snippet","Table","Text","Textarea","Url"],"const":"MultiChoice"}}},{"title":"CreateMultiFileFormFieldRequest","type":"object","required":["type","fieldType"],"properties":{"hiddenByDefault":{"description":"When `true`, the widget is hidden by default; conditional logic rules can reveal it at runtime. Defaults to `false`.","type":"boolean"},"position":{"title":"WidgetPosition","description":"Where to place this widget on the task. `Top` — before all existing widgets. `Bottom` — after all existing widgets (default when `position` is omitted). `After` — immediately after the widget identified by `widgetId`.","oneOf":[{"title":"WidgetPositionAfter","type":"object","required":["widgetId","type"],"properties":{"widgetId":{"title":"EntityID","description":"The ID of the widget.","type":"string"},"type":{"description":"Discriminator value for this variant. See the parent oneOf for the full set of values.","type":"string","const":"After"}}},{"title":"WidgetPositionBottom","type":"object","required":["type"],"properties":{"type":{"description":"Discriminator value for this variant. See the parent oneOf for the full set of values.","type":"string","const":"Bottom"}}},{"title":"WidgetPositionTop","type":"object","required":["type"],"properties":{"type":{"description":"Discriminator value for this variant. See the parent oneOf for the full set of values.","type":"string","const":"Top"}}}],"required":["type"],"discriminator":{"propertyName":"type","mapping":{"After":"#/components/schemas/WidgetPositionAfter","Bottom":"#/components/schemas/WidgetPositionBottom","Top":"#/components/schemas/WidgetPositionTop"}}},"label":{"description":"Display label shown to the end user.","type":"string","maxLength":255},"config":{"title":"PublicApiMultiFileFormFieldConfig","description":"Field-specific configuration. Shape depends on `fieldType`.","type":"object","properties":{"placeholder":{"description":"Placeholder hint shown in the input when no value has been entered.","type":"string"},"extractTextContent":{"description":"When `true`, server extracts text from uploaded documents for use in merge tags.","type":"boolean"}}},"constraints":{"title":"PublicApiMultiFileFormFieldConstraints","description":"Field-specific validation constraints. Shape depends on `fieldType`.","type":"object","properties":{"extensions":{"description":"Allowed file extensions, including the leading dot (e.g. `.pdf`, `.docx`).","type":"array","items":{"type":"string"}},"mode":{"description":"Whether the field accepts a single file or multiple files.\n\n- `Single` — only one file may be uploaded.\n- `Multiple` — multiple files may be uploaded.\n","type":"string","enum":["Multiple","Single"]}}},"type":{"description":"Discriminator value for this variant. See the parent oneOf for the full set of values.","examples":["FormField"],"type":"string","enum":["FormField"]},"fieldType":{"description":"Form-field subtype discriminator (only relevant when widget `type` is `FormField`).\n\n- `Text` — short text input (≤255 characters).\n- `Textarea` — long-form text.\n- `Email` — email address.\n- `Url` — website / URL.\n- `Number` — numeric input with optional unit and constraints.\n- `Date` — date or date+time picker.\n- `Select` — dropdown; user picks one option.\n- `MultiChoice` — checkboxes; user picks one or more options.\n- `MultiSelect` — Subtasks: a checklist of sub-items inside the task.\n- `Members` — assignee picker (selects organization users).\n- `File` — single file upload.\n- `MultiFile` — multi-file upload (in-app \"File Upload\").\n- `Document` — document approval field; links the task to a document review.\n- `Table` — rows × columns of cells; users fill cell values.\n- `SendRichEmail` — pre-written email embedded in the task; sent manually by the user or\n  automatically when the task is completed.\n- `Hidden` — only visible when editing the workflow; populated by integrations or default values.\n- `Snippet` — only visible when editing; passes static text or merge tags into automations.\n","type":"string","enum":["Date","Document","Email","File","Hidden","Members","MultiChoice","MultiFile","MultiSelect","Number","Select","SendRichEmail","Snippet","Table","Text","Textarea","Url"],"const":"MultiFile"}}},{"title":"CreateMultiSelectFormFieldRequest","type":"object","required":["type","fieldType"],"properties":{"hiddenByDefault":{"description":"When `true`, the widget is hidden by default; conditional logic rules can reveal it at runtime. Defaults to `false`.","type":"boolean"},"position":{"title":"WidgetPosition","description":"Where to place this widget on the task. `Top` — before all existing widgets. `Bottom` — after all existing widgets (default when `position` is omitted). `After` — immediately after the widget identified by `widgetId`.","oneOf":[{"title":"WidgetPositionAfter","type":"object","required":["widgetId","type"],"properties":{"widgetId":{"title":"EntityID","description":"The ID of the widget.","type":"string"},"type":{"description":"Discriminator value for this variant. See the parent oneOf for the full set of values.","type":"string","const":"After"}}},{"title":"WidgetPositionBottom","type":"object","required":["type"],"properties":{"type":{"description":"Discriminator value for this variant. See the parent oneOf for the full set of values.","type":"string","const":"Bottom"}}},{"title":"WidgetPositionTop","type":"object","required":["type"],"properties":{"type":{"description":"Discriminator value for this variant. See the parent oneOf for the full set of values.","type":"string","const":"Top"}}}],"required":["type"],"discriminator":{"propertyName":"type","mapping":{"After":"#/components/schemas/WidgetPositionAfter","Bottom":"#/components/schemas/WidgetPositionBottom","Top":"#/components/schemas/WidgetPositionTop"}}},"label":{"description":"Display label shown to the end user.","type":"string","maxLength":255},"config":{"title":"PublicApiMultiSelectFormFieldConfig","description":"Field-specific configuration. Shape depends on `fieldType`.","type":"object","properties":{"items":{"description":"Available options for selection-style form fields.","type":"array","items":{"title":"PublicApiFormFieldItem","type":"object","required":["name"],"properties":{"id":{"title":"EntityID","description":"The resource's ID.","type":"string"},"name":{"description":"Display name.","type":"string"}}}}}},"type":{"description":"Discriminator value for this variant. See the parent oneOf for the full set of values.","examples":["FormField"],"type":"string","enum":["FormField"]},"fieldType":{"description":"Form-field subtype discriminator (only relevant when widget `type` is `FormField`).\n\n- `Text` — short text input (≤255 characters).\n- `Textarea` — long-form text.\n- `Email` — email address.\n- `Url` — website / URL.\n- `Number` — numeric input with optional unit and constraints.\n- `Date` — date or date+time picker.\n- `Select` — dropdown; user picks one option.\n- `MultiChoice` — checkboxes; user picks one or more options.\n- `MultiSelect` — Subtasks: a checklist of sub-items inside the task.\n- `Members` — assignee picker (selects organization users).\n- `File` — single file upload.\n- `MultiFile` — multi-file upload (in-app \"File Upload\").\n- `Document` — document approval field; links the task to a document review.\n- `Table` — rows × columns of cells; users fill cell values.\n- `SendRichEmail` — pre-written email embedded in the task; sent manually by the user or\n  automatically when the task is completed.\n- `Hidden` — only visible when editing the workflow; populated by integrations or default values.\n- `Snippet` — only visible when editing; passes static text or merge tags into automations.\n","type":"string","enum":["Date","Document","Email","File","Hidden","Members","MultiChoice","MultiFile","MultiSelect","Number","Select","SendRichEmail","Snippet","Table","Text","Textarea","Url"],"const":"MultiSelect"}}},{"title":"CreateNumberFormFieldRequest","type":"object","required":["type","fieldType"],"properties":{"hiddenByDefault":{"description":"When `true`, the widget is hidden by default; conditional logic rules can reveal it at runtime. Defaults to `false`.","type":"boolean"},"position":{"title":"WidgetPosition","description":"Where to place this widget on the task. `Top` — before all existing widgets. `Bottom` — after all existing widgets (default when `position` is omitted). `After` — immediately after the widget identified by `widgetId`.","oneOf":[{"title":"WidgetPositionAfter","type":"object","required":["widgetId","type"],"properties":{"widgetId":{"title":"EntityID","description":"The ID of the widget.","type":"string"},"type":{"description":"Discriminator value for this variant. See the parent oneOf for the full set of values.","type":"string","const":"After"}}},{"title":"WidgetPositionBottom","type":"object","required":["type"],"properties":{"type":{"description":"Discriminator value for this variant. See the parent oneOf for the full set of values.","type":"string","const":"Bottom"}}},{"title":"WidgetPositionTop","type":"object","required":["type"],"properties":{"type":{"description":"Discriminator value for this variant. See the parent oneOf for the full set of values.","type":"string","const":"Top"}}}],"required":["type"],"discriminator":{"propertyName":"type","mapping":{"After":"#/components/schemas/WidgetPositionAfter","Bottom":"#/components/schemas/WidgetPositionBottom","Top":"#/components/schemas/WidgetPositionTop"}}},"label":{"description":"Display label shown to the end user.","type":"string","maxLength":255},"config":{"title":"PublicApiNumberFormFieldConfig","description":"Field-specific configuration. Shape depends on `fieldType`.","type":"object","properties":{"placeholder":{"description":"Placeholder hint shown in the input when no value has been entered.","type":"string"},"defaultValue":{"description":"Default value pre-filled when a new workflow run is created.","type":"string"},"unit":{"description":"Unit label rendered next to the numeric value (e.g. `kg`, `$`, `%`).","type":"string"},"unitLocation":{"description":"Where the unit symbol appears relative to the number.\n\n- `prefix` — before the number (e.g. `$100`).\n- `suffix` — after the number (e.g. `100 USD`).\n","type":"string","enum":["prefix","suffix"]}}},"constraints":{"title":"PublicApiNumberFormFieldConstraints","description":"Field-specific validation constraints. Shape depends on `fieldType`.","type":"object","properties":{"minDigits":{"description":"Minimum number of digits.","type":"integer","format":"int32"},"maxDigits":{"description":"Maximum number of digits.","type":"integer","format":"int32"},"minValue":{"description":"Minimum numeric value.","type":"integer","format":"int32"},"maxValue":{"description":"Maximum numeric value.","type":"integer","format":"int32"},"decimalPlaces":{"description":"Number of decimal places to accept (0 means integers only).","type":"integer","format":"int32"},"allowNegative":{"description":"When `true`, negative numbers are accepted.","type":"boolean"}}},"type":{"description":"Discriminator value for this variant. See the parent oneOf for the full set of values.","examples":["FormField"],"type":"string","enum":["FormField"]},"fieldType":{"description":"Form-field subtype discriminator (only relevant when widget `type` is `FormField`).\n\n- `Text` — short text input (≤255 characters).\n- `Textarea` — long-form text.\n- `Email` — email address.\n- `Url` — website / URL.\n- `Number` — numeric input with optional unit and constraints.\n- `Date` — date or date+time picker.\n- `Select` — dropdown; user picks one option.\n- `MultiChoice` — checkboxes; user picks one or more options.\n- `MultiSelect` — Subtasks: a checklist of sub-items inside the task.\n- `Members` — assignee picker (selects organization users).\n- `File` — single file upload.\n- `MultiFile` — multi-file upload (in-app \"File Upload\").\n- `Document` — document approval field; links the task to a document review.\n- `Table` — rows × columns of cells; users fill cell values.\n- `SendRichEmail` — pre-written email embedded in the task; sent manually by the user or\n  automatically when the task is completed.\n- `Hidden` — only visible when editing the workflow; populated by integrations or default values.\n- `Snippet` — only visible when editing; passes static text or merge tags into automations.\n","type":"string","enum":["Date","Document","Email","File","Hidden","Members","MultiChoice","MultiFile","MultiSelect","Number","Select","SendRichEmail","Snippet","Table","Text","Textarea","Url"],"const":"Number"}}},{"title":"CreateSelectFormFieldRequest","type":"object","required":["type","fieldType"],"properties":{"hiddenByDefault":{"description":"When `true`, the widget is hidden by default; conditional logic rules can reveal it at runtime. Defaults to `false`.","type":"boolean"},"position":{"title":"WidgetPosition","description":"Where to place this widget on the task. `Top` — before all existing widgets. `Bottom` — after all existing widgets (default when `position` is omitted). `After` — immediately after the widget identified by `widgetId`.","oneOf":[{"title":"WidgetPositionAfter","type":"object","required":["widgetId","type"],"properties":{"widgetId":{"title":"EntityID","description":"The ID of the widget.","type":"string"},"type":{"description":"Discriminator value for this variant. See the parent oneOf for the full set of values.","type":"string","const":"After"}}},{"title":"WidgetPositionBottom","type":"object","required":["type"],"properties":{"type":{"description":"Discriminator value for this variant. See the parent oneOf for the full set of values.","type":"string","const":"Bottom"}}},{"title":"WidgetPositionTop","type":"object","required":["type"],"properties":{"type":{"description":"Discriminator value for this variant. See the parent oneOf for the full set of values.","type":"string","const":"Top"}}}],"required":["type"],"discriminator":{"propertyName":"type","mapping":{"After":"#/components/schemas/WidgetPositionAfter","Bottom":"#/components/schemas/WidgetPositionBottom","Top":"#/components/schemas/WidgetPositionTop"}}},"label":{"description":"Display label shown to the end user.","type":"string","maxLength":255},"config":{"title":"PublicApiSelectFormFieldConfig","description":"Field-specific configuration. Shape depends on `fieldType`.","type":"object","properties":{"items":{"description":"Available options for selection-style form fields.","type":"array","items":{"title":"PublicApiFormFieldItem","type":"object","required":["name"],"properties":{"id":{"title":"EntityID","description":"The resource's ID.","type":"string"},"name":{"description":"Display name.","type":"string"}}}},"defaultValue":{"description":"Default value pre-filled when a new workflow run is created.","type":"string"}}},"type":{"description":"Discriminator value for this variant. See the parent oneOf for the full set of values.","examples":["FormField"],"type":"string","enum":["FormField"]},"fieldType":{"description":"Form-field subtype discriminator (only relevant when widget `type` is `FormField`).\n\n- `Text` — short text input (≤255 characters).\n- `Textarea` — long-form text.\n- `Email` — email address.\n- `Url` — website / URL.\n- `Number` — numeric input with optional unit and constraints.\n- `Date` — date or date+time picker.\n- `Select` — dropdown; user picks one option.\n- `MultiChoice` — checkboxes; user picks one or more options.\n- `MultiSelect` — Subtasks: a checklist of sub-items inside the task.\n- `Members` — assignee picker (selects organization users).\n- `File` — single file upload.\n- `MultiFile` — multi-file upload (in-app \"File Upload\").\n- `Document` — document approval field; links the task to a document review.\n- `Table` — rows × columns of cells; users fill cell values.\n- `SendRichEmail` — pre-written email embedded in the task; sent manually by the user or\n  automatically when the task is completed.\n- `Hidden` — only visible when editing the workflow; populated by integrations or default values.\n- `Snippet` — only visible when editing; passes static text or merge tags into automations.\n","type":"string","enum":["Date","Document","Email","File","Hidden","Members","MultiChoice","MultiFile","MultiSelect","Number","Select","SendRichEmail","Snippet","Table","Text","Textarea","Url"],"const":"Select"}}},{"title":"CreateSendRichEmailFormFieldRequest","type":"object","required":["type","fieldType"],"properties":{"hiddenByDefault":{"description":"When `true`, the widget is hidden by default; conditional logic rules can reveal it at runtime. Defaults to `false`.","type":"boolean"},"position":{"title":"WidgetPosition","description":"Where to place this widget on the task. `Top` — before all existing widgets. `Bottom` — after all existing widgets (default when `position` is omitted). `After` — immediately after the widget identified by `widgetId`.","oneOf":[{"title":"WidgetPositionAfter","type":"object","required":["widgetId","type"],"properties":{"widgetId":{"title":"EntityID","description":"The ID of the widget.","type":"string"},"type":{"description":"Discriminator value for this variant. See the parent oneOf for the full set of values.","type":"string","const":"After"}}},{"title":"WidgetPositionBottom","type":"object","required":["type"],"properties":{"type":{"description":"Discriminator value for this variant. See the parent oneOf for the full set of values.","type":"string","const":"Bottom"}}},{"title":"WidgetPositionTop","type":"object","required":["type"],"properties":{"type":{"description":"Discriminator value for this variant. See the parent oneOf for the full set of values.","type":"string","const":"Top"}}}],"required":["type"],"discriminator":{"propertyName":"type","mapping":{"After":"#/components/schemas/WidgetPositionAfter","Bottom":"#/components/schemas/WidgetPositionBottom","Top":"#/components/schemas/WidgetPositionTop"}}},"label":{"description":"Display label shown to the end user.","type":"string","maxLength":255},"config":{"title":"PublicApiSendRichEmailFormFieldConfig","description":"Field-specific configuration. Shape depends on `fieldType`.","type":"object","required":["bodyEditor"],"properties":{"to":{"description":"Default recipient list (To). Comma-separated email addresses or merge tags.","type":"array","items":{"type":"string"}},"cc":{"description":"Default CC list. Comma-separated email addresses or merge tags.","type":"array","items":{"type":"string"}},"bcc":{"description":"Default BCC list. Comma-separated email addresses or merge tags.","type":"array","items":{"type":"string"}},"replyTo":{"description":"Default Reply-To address. An email address or merge tag.","type":"array","items":{"type":"string"}},"subject":{"description":"Default email subject. May contain merge tags.","type":"string"},"body":{"description":"Default email body. May contain merge tags.","type":"string"},"bodyEditor":{"description":"Editor used to author the email body.\n\n- `RichText` — rich-text editor with formatting.\n- `HTML` — raw HTML editor.\n- `PlainText` — plain text editor.\n","type":"string","enum":["RichText","HTML","PlainText"]},"editAllowed":{"description":"When `true`, users running the workflow can edit the email before sending.","type":"boolean"}}},"type":{"description":"Discriminator value for this variant. See the parent oneOf for the full set of values.","examples":["FormField"],"type":"string","enum":["FormField"]},"fieldType":{"description":"Form-field subtype discriminator (only relevant when widget `type` is `FormField`).\n\n- `Text` — short text input (≤255 characters).\n- `Textarea` — long-form text.\n- `Email` — email address.\n- `Url` — website / URL.\n- `Number` — numeric input with optional unit and constraints.\n- `Date` — date or date+time picker.\n- `Select` — dropdown; user picks one option.\n- `MultiChoice` — checkboxes; user picks one or more options.\n- `MultiSelect` — Subtasks: a checklist of sub-items inside the task.\n- `Members` — assignee picker (selects organization users).\n- `File` — single file upload.\n- `MultiFile` — multi-file upload (in-app \"File Upload\").\n- `Document` — document approval field; links the task to a document review.\n- `Table` — rows × columns of cells; users fill cell values.\n- `SendRichEmail` — pre-written email embedded in the task; sent manually by the user or\n  automatically when the task is completed.\n- `Hidden` — only visible when editing the workflow; populated by integrations or default values.\n- `Snippet` — only visible when editing; passes static text or merge tags into automations.\n","type":"string","enum":["Date","Document","Email","File","Hidden","Members","MultiChoice","MultiFile","MultiSelect","Number","Select","SendRichEmail","Snippet","Table","Text","Textarea","Url"],"const":"SendRichEmail"}}},{"title":"CreateSnippetFormFieldRequest","type":"object","required":["type","fieldType"],"properties":{"hiddenByDefault":{"description":"When `true`, the widget is hidden by default; conditional logic rules can reveal it at runtime. Defaults to `false`.","type":"boolean"},"position":{"title":"WidgetPosition","description":"Where to place this widget on the task. `Top` — before all existing widgets. `Bottom` — after all existing widgets (default when `position` is omitted). `After` — immediately after the widget identified by `widgetId`.","oneOf":[{"title":"WidgetPositionAfter","type":"object","required":["widgetId","type"],"properties":{"widgetId":{"title":"EntityID","description":"The ID of the widget.","type":"string"},"type":{"description":"Discriminator value for this variant. See the parent oneOf for the full set of values.","type":"string","const":"After"}}},{"title":"WidgetPositionBottom","type":"object","required":["type"],"properties":{"type":{"description":"Discriminator value for this variant. See the parent oneOf for the full set of values.","type":"string","const":"Bottom"}}},{"title":"WidgetPositionTop","type":"object","required":["type"],"properties":{"type":{"description":"Discriminator value for this variant. See the parent oneOf for the full set of values.","type":"string","const":"Top"}}}],"required":["type"],"discriminator":{"propertyName":"type","mapping":{"After":"#/components/schemas/WidgetPositionAfter","Bottom":"#/components/schemas/WidgetPositionBottom","Top":"#/components/schemas/WidgetPositionTop"}}},"label":{"description":"Display label shown to the end user.","type":"string","maxLength":255},"config":{"title":"PublicApiSnippetFormFieldConfig","description":"Field-specific configuration. Shape depends on `fieldType`.","type":"object","properties":{"value":{"description":"The option's stored value.","type":"string"}}},"type":{"description":"Discriminator value for this variant. See the parent oneOf for the full set of values.","examples":["FormField"],"type":"string","enum":["FormField"]},"fieldType":{"description":"Form-field subtype discriminator (only relevant when widget `type` is `FormField`).\n\n- `Text` — short text input (≤255 characters).\n- `Textarea` — long-form text.\n- `Email` — email address.\n- `Url` — website / URL.\n- `Number` — numeric input with optional unit and constraints.\n- `Date` — date or date+time picker.\n- `Select` — dropdown; user picks one option.\n- `MultiChoice` — checkboxes; user picks one or more options.\n- `MultiSelect` — Subtasks: a checklist of sub-items inside the task.\n- `Members` — assignee picker (selects organization users).\n- `File` — single file upload.\n- `MultiFile` — multi-file upload (in-app \"File Upload\").\n- `Document` — document approval field; links the task to a document review.\n- `Table` — rows × columns of cells; users fill cell values.\n- `SendRichEmail` — pre-written email embedded in the task; sent manually by the user or\n  automatically when the task is completed.\n- `Hidden` — only visible when editing the workflow; populated by integrations or default values.\n- `Snippet` — only visible when editing; passes static text or merge tags into automations.\n","type":"string","enum":["Date","Document","Email","File","Hidden","Members","MultiChoice","MultiFile","MultiSelect","Number","Select","SendRichEmail","Snippet","Table","Text","Textarea","Url"],"const":"Snippet"}}},{"title":"CreateTableFormFieldRequest","type":"object","required":["type","fieldType"],"properties":{"hiddenByDefault":{"description":"When `true`, the widget is hidden by default; conditional logic rules can reveal it at runtime. Defaults to `false`.","type":"boolean"},"position":{"title":"WidgetPosition","description":"Where to place this widget on the task. `Top` — before all existing widgets. `Bottom` — after all existing widgets (default when `position` is omitted). `After` — immediately after the widget identified by `widgetId`.","oneOf":[{"title":"WidgetPositionAfter","type":"object","required":["widgetId","type"],"properties":{"widgetId":{"title":"EntityID","description":"The ID of the widget.","type":"string"},"type":{"description":"Discriminator value for this variant. See the parent oneOf for the full set of values.","type":"string","const":"After"}}},{"title":"WidgetPositionBottom","type":"object","required":["type"],"properties":{"type":{"description":"Discriminator value for this variant. See the parent oneOf for the full set of values.","type":"string","const":"Bottom"}}},{"title":"WidgetPositionTop","type":"object","required":["type"],"properties":{"type":{"description":"Discriminator value for this variant. See the parent oneOf for the full set of values.","type":"string","const":"Top"}}}],"required":["type"],"discriminator":{"propertyName":"type","mapping":{"After":"#/components/schemas/WidgetPositionAfter","Bottom":"#/components/schemas/WidgetPositionBottom","Top":"#/components/schemas/WidgetPositionTop"}}},"label":{"description":"Display label shown to the end user.","type":"string","maxLength":255},"config":{"title":"PublicApiTableFormFieldConfig","description":"Field-specific configuration. Shape depends on `fieldType`.","type":"object","properties":{"columnDefs":{"description":"Data set column definitions (name + type per column).","type":"array","items":{"title":"PublicApiTableFormFieldColumn","type":"object","required":["id","name","columnType"],"properties":{"id":{"title":"EntityID","description":"The resource's ID.","type":"string"},"name":{"description":"Display name.","type":"string"},"columnType":{"description":"Data type a Table column accepts.\n\n- `Text` — free-form short text.\n","type":"string","enum":["Text"]}}}},"defaultValue":{"description":"Default value pre-filled when a new workflow run is created.","type":"string"}}},"type":{"description":"Discriminator value for this variant. See the parent oneOf for the full set of values.","examples":["FormField"],"type":"string","enum":["FormField"]},"fieldType":{"description":"Form-field subtype discriminator (only relevant when widget `type` is `FormField`).\n\n- `Text` — short text input (≤255 characters).\n- `Textarea` — long-form text.\n- `Email` — email address.\n- `Url` — website / URL.\n- `Number` — numeric input with optional unit and constraints.\n- `Date` — date or date+time picker.\n- `Select` — dropdown; user picks one option.\n- `MultiChoice` — checkboxes; user picks one or more options.\n- `MultiSelect` — Subtasks: a checklist of sub-items inside the task.\n- `Members` — assignee picker (selects organization users).\n- `File` — single file upload.\n- `MultiFile` — multi-file upload (in-app \"File Upload\").\n- `Document` — document approval field; links the task to a document review.\n- `Table` — rows × columns of cells; users fill cell values.\n- `SendRichEmail` — pre-written email embedded in the task; sent manually by the user or\n  automatically when the task is completed.\n- `Hidden` — only visible when editing the workflow; populated by integrations or default values.\n- `Snippet` — only visible when editing; passes static text or merge tags into automations.\n","type":"string","enum":["Date","Document","Email","File","Hidden","Members","MultiChoice","MultiFile","MultiSelect","Number","Select","SendRichEmail","Snippet","Table","Text","Textarea","Url"],"const":"Table"}}},{"title":"CreateTextFormFieldRequest","type":"object","required":["type","fieldType"],"properties":{"hiddenByDefault":{"description":"When `true`, the widget is hidden by default; conditional logic rules can reveal it at runtime. Defaults to `false`.","type":"boolean"},"position":{"title":"WidgetPosition","description":"Where to place this widget on the task. `Top` — before all existing widgets. `Bottom` — after all existing widgets (default when `position` is omitted). `After` — immediately after the widget identified by `widgetId`.","oneOf":[{"title":"WidgetPositionAfter","type":"object","required":["widgetId","type"],"properties":{"widgetId":{"title":"EntityID","description":"The ID of the widget.","type":"string"},"type":{"description":"Discriminator value for this variant. See the parent oneOf for the full set of values.","type":"string","const":"After"}}},{"title":"WidgetPositionBottom","type":"object","required":["type"],"properties":{"type":{"description":"Discriminator value for this variant. See the parent oneOf for the full set of values.","type":"string","const":"Bottom"}}},{"title":"WidgetPositionTop","type":"object","required":["type"],"properties":{"type":{"description":"Discriminator value for this variant. See the parent oneOf for the full set of values.","type":"string","const":"Top"}}}],"required":["type"],"discriminator":{"propertyName":"type","mapping":{"After":"#/components/schemas/WidgetPositionAfter","Bottom":"#/components/schemas/WidgetPositionBottom","Top":"#/components/schemas/WidgetPositionTop"}}},"label":{"description":"Display label shown to the end user.","type":"string","maxLength":255},"config":{"title":"PublicApiTextFormFieldConfig","description":"Field-specific configuration. Shape depends on `fieldType`.","type":"object","properties":{"placeholder":{"description":"Placeholder hint shown in the input when no value has been entered.","type":"string"},"defaultValue":{"description":"Default value pre-filled when a new workflow run is created.","type":"string"}}},"constraints":{"title":"PublicApiTextFormFieldConstraints","description":"Field-specific validation constraints. Shape depends on `fieldType`.","type":"object","properties":{"min":{"description":"Inclusive lower bound.","type":"integer","format":"int32"},"max":{"description":"Inclusive upper bound.","type":"integer","format":"int32"}}},"type":{"description":"Discriminator value for this variant. See the parent oneOf for the full set of values.","examples":["FormField"],"type":"string","enum":["FormField"]},"fieldType":{"description":"Form-field subtype discriminator (only relevant when widget `type` is `FormField`).\n\n- `Text` — short text input (≤255 characters).\n- `Textarea` — long-form text.\n- `Email` — email address.\n- `Url` — website / URL.\n- `Number` — numeric input with optional unit and constraints.\n- `Date` — date or date+time picker.\n- `Select` — dropdown; user picks one option.\n- `MultiChoice` — checkboxes; user picks one or more options.\n- `MultiSelect` — Subtasks: a checklist of sub-items inside the task.\n- `Members` — assignee picker (selects organization users).\n- `File` — single file upload.\n- `MultiFile` — multi-file upload (in-app \"File Upload\").\n- `Document` — document approval field; links the task to a document review.\n- `Table` — rows × columns of cells; users fill cell values.\n- `SendRichEmail` — pre-written email embedded in the task; sent manually by the user or\n  automatically when the task is completed.\n- `Hidden` — only visible when editing the workflow; populated by integrations or default values.\n- `Snippet` — only visible when editing; passes static text or merge tags into automations.\n","type":"string","enum":["Date","Document","Email","File","Hidden","Members","MultiChoice","MultiFile","MultiSelect","Number","Select","SendRichEmail","Snippet","Table","Text","Textarea","Url"],"const":"Text"}}},{"title":"CreateTextareaFormFieldRequest","type":"object","required":["type","fieldType"],"properties":{"hiddenByDefault":{"description":"When `true`, the widget is hidden by default; conditional logic rules can reveal it at runtime. Defaults to `false`.","type":"boolean"},"position":{"title":"WidgetPosition","description":"Where to place this widget on the task. `Top` — before all existing widgets. `Bottom` — after all existing widgets (default when `position` is omitted). `After` — immediately after the widget identified by `widgetId`.","oneOf":[{"title":"WidgetPositionAfter","type":"object","required":["widgetId","type"],"properties":{"widgetId":{"title":"EntityID","description":"The ID of the widget.","type":"string"},"type":{"description":"Discriminator value for this variant. See the parent oneOf for the full set of values.","type":"string","const":"After"}}},{"title":"WidgetPositionBottom","type":"object","required":["type"],"properties":{"type":{"description":"Discriminator value for this variant. See the parent oneOf for the full set of values.","type":"string","const":"Bottom"}}},{"title":"WidgetPositionTop","type":"object","required":["type"],"properties":{"type":{"description":"Discriminator value for this variant. See the parent oneOf for the full set of values.","type":"string","const":"Top"}}}],"required":["type"],"discriminator":{"propertyName":"type","mapping":{"After":"#/components/schemas/WidgetPositionAfter","Bottom":"#/components/schemas/WidgetPositionBottom","Top":"#/components/schemas/WidgetPositionTop"}}},"label":{"description":"Display label shown to the end user.","type":"string","maxLength":255},"config":{"title":"PublicApiTextareaFormFieldConfig","description":"Field-specific configuration. Shape depends on `fieldType`.","type":"object","properties":{"placeholder":{"description":"Placeholder hint shown in the input when no value has been entered.","type":"string"},"defaultValue":{"description":"Default value pre-filled when a new workflow run is created.","type":"string"},"format":{"description":"Editor style for this Textarea field.\n\n- `PlainText` — plain text.\n- `RichText` — rich-text editor with formatting (bold, lists, links, etc.).\n","type":"string","enum":["PlainText","RichText"]}}},"constraints":{"title":"PublicApiTextareaFormFieldConstraints","description":"Field-specific validation constraints. Shape depends on `fieldType`.","type":"object","properties":{"min":{"description":"Inclusive lower bound.","type":"integer","format":"int32"},"max":{"description":"Inclusive upper bound.","type":"integer","format":"int32"}}},"type":{"description":"Discriminator value for this variant. See the parent oneOf for the full set of values.","examples":["FormField"],"type":"string","enum":["FormField"]},"fieldType":{"description":"Form-field subtype discriminator (only relevant when widget `type` is `FormField`).\n\n- `Text` — short text input (≤255 characters).\n- `Textarea` — long-form text.\n- `Email` — email address.\n- `Url` — website / URL.\n- `Number` — numeric input with optional unit and constraints.\n- `Date` — date or date+time picker.\n- `Select` — dropdown; user picks one option.\n- `MultiChoice` — checkboxes; user picks one or more options.\n- `MultiSelect` — Subtasks: a checklist of sub-items inside the task.\n- `Members` — assignee picker (selects organization users).\n- `File` — single file upload.\n- `MultiFile` — multi-file upload (in-app \"File Upload\").\n- `Document` — document approval field; links the task to a document review.\n- `Table` — rows × columns of cells; users fill cell values.\n- `SendRichEmail` — pre-written email embedded in the task; sent manually by the user or\n  automatically when the task is completed.\n- `Hidden` — only visible when editing the workflow; populated by integrations or default values.\n- `Snippet` — only visible when editing; passes static text or merge tags into automations.\n","type":"string","enum":["Date","Document","Email","File","Hidden","Members","MultiChoice","MultiFile","MultiSelect","Number","Select","SendRichEmail","Snippet","Table","Text","Textarea","Url"],"const":"Textarea"}}},{"title":"CreateUrlFormFieldRequest","type":"object","required":["type","fieldType"],"properties":{"hiddenByDefault":{"description":"When `true`, the widget is hidden by default; conditional logic rules can reveal it at runtime. Defaults to `false`.","type":"boolean"},"position":{"title":"WidgetPosition","description":"Where to place this widget on the task. `Top` — before all existing widgets. `Bottom` — after all existing widgets (default when `position` is omitted). `After` — immediately after the widget identified by `widgetId`.","oneOf":[{"title":"WidgetPositionAfter","type":"object","required":["widgetId","type"],"properties":{"widgetId":{"title":"EntityID","description":"The ID of the widget.","type":"string"},"type":{"description":"Discriminator value for this variant. See the parent oneOf for the full set of values.","type":"string","const":"After"}}},{"title":"WidgetPositionBottom","type":"object","required":["type"],"properties":{"type":{"description":"Discriminator value for this variant. See the parent oneOf for the full set of values.","type":"string","const":"Bottom"}}},{"title":"WidgetPositionTop","type":"object","required":["type"],"properties":{"type":{"description":"Discriminator value for this variant. See the parent oneOf for the full set of values.","type":"string","const":"Top"}}}],"required":["type"],"discriminator":{"propertyName":"type","mapping":{"After":"#/components/schemas/WidgetPositionAfter","Bottom":"#/components/schemas/WidgetPositionBottom","Top":"#/components/schemas/WidgetPositionTop"}}},"label":{"description":"Display label shown to the end user.","type":"string","maxLength":255},"config":{"title":"PublicApiUrlFormFieldConfig","description":"Field-specific configuration. Shape depends on `fieldType`.","type":"object","properties":{"defaultValue":{"description":"Default value pre-filled when a new workflow run is created.","type":"string"}}},"type":{"description":"Discriminator value for this variant. See the parent oneOf for the full set of values.","examples":["FormField"],"type":"string","enum":["FormField"]},"fieldType":{"description":"Form-field subtype discriminator (only relevant when widget `type` is `FormField`).\n\n- `Text` — short text input (≤255 characters).\n- `Textarea` — long-form text.\n- `Email` — email address.\n- `Url` — website / URL.\n- `Number` — numeric input with optional unit and constraints.\n- `Date` — date or date+time picker.\n- `Select` — dropdown; user picks one option.\n- `MultiChoice` — checkboxes; user picks one or more options.\n- `MultiSelect` — Subtasks: a checklist of sub-items inside the task.\n- `Members` — assignee picker (selects organization users).\n- `File` — single file upload.\n- `MultiFile` — multi-file upload (in-app \"File Upload\").\n- `Document` — document approval field; links the task to a document review.\n- `Table` — rows × columns of cells; users fill cell values.\n- `SendRichEmail` — pre-written email embedded in the task; sent manually by the user or\n  automatically when the task is completed.\n- `Hidden` — only visible when editing the workflow; populated by integrations or default values.\n- `Snippet` — only visible when editing; passes static text or merge tags into automations.\n","type":"string","enum":["Date","Document","Email","File","Hidden","Members","MultiChoice","MultiFile","MultiSelect","Number","Select","SendRichEmail","Snippet","Table","Text","Textarea","Url"],"const":"Url"}}}],"required":["fieldType"],"discriminator":{"propertyName":"fieldType","mapping":{"Date":"#/components/schemas/CreateDateFormFieldRequest","Document":"#/components/schemas/CreateDocumentFormFieldRequest","Email":"#/components/schemas/CreateEmailFormFieldRequest","Hidden":"#/components/schemas/CreateHiddenFormFieldRequest","Members":"#/components/schemas/CreateMembersFormFieldRequest","MultiChoice":"#/components/schemas/CreateMultiChoiceFormFieldRequest","MultiFile":"#/components/schemas/CreateMultiFileFormFieldRequest","MultiSelect":"#/components/schemas/CreateMultiSelectFormFieldRequest","Number":"#/components/schemas/CreateNumberFormFieldRequest","Select":"#/components/schemas/CreateSelectFormFieldRequest","SendRichEmail":"#/components/schemas/CreateSendRichEmailFormFieldRequest","Snippet":"#/components/schemas/CreateSnippetFormFieldRequest","Table":"#/components/schemas/CreateTableFormFieldRequest","Text":"#/components/schemas/CreateTextFormFieldRequest","Textarea":"#/components/schemas/CreateTextareaFormFieldRequest","Url":"#/components/schemas/CreateUrlFormFieldRequest"}},"properties":{"type":{"description":"Discriminator value for this variant. See the parent oneOf for the full set of values.","type":"string","const":"FormField"},"hiddenByDefault":{"description":"When `true`, the widget is hidden by default; conditional logic rules can reveal it at runtime. Defaults to `false`.","type":"boolean"},"position":{"title":"WidgetPosition","description":"Where to place this widget on the task. `Top` — before all existing widgets. `Bottom` — after all existing widgets (default when `position` is omitted). `After` — immediately after the widget identified by `widgetId`.","oneOf":[{"title":"WidgetPositionAfter","type":"object","required":["widgetId","type"],"properties":{"widgetId":{"title":"EntityID","description":"The ID of the widget.","type":"string"},"type":{"description":"Discriminator value for this variant. See the parent oneOf for the full set of values.","type":"string","const":"After"}}},{"title":"WidgetPositionBottom","type":"object","required":["type"],"properties":{"type":{"description":"Discriminator value for this variant. See the parent oneOf for the full set of values.","type":"string","const":"Bottom"}}},{"title":"WidgetPositionTop","type":"object","required":["type"],"properties":{"type":{"description":"Discriminator value for this variant. See the parent oneOf for the full set of values.","type":"string","const":"Top"}}}],"required":["type"],"discriminator":{"propertyName":"type","mapping":{"After":"#/components/schemas/WidgetPositionAfter","Bottom":"#/components/schemas/WidgetPositionBottom","Top":"#/components/schemas/WidgetPositionTop"}}},"label":{"description":"Display label shown to the end user.","type":"string","maxLength":255},"config":{"description":"Field-specific configuration. Shape depends on `fieldType`.","anyOf":[{"title":"PublicApiDateFormFieldConfig","type":"object","properties":{"defaultValue":{"description":"Default value pre-filled when a new workflow run is created.","type":"string"},"timeOption":{"description":"How time-of-day is handled on this Date field.\n\n- `Included` — the field always captures both date and time.\n- `Excluded` — date only; time is never captured.\n- `Optional` — the user picks whether to include a time.\n","type":"string","enum":["Included","Excluded","Optional"]}}},{"title":"PublicApiDocumentFormFieldConfig","type":"object","required":["reviewRequest"],"properties":{"reviewRequest":{"description":"When `true`, the email requires explicit user review/send rather than auto-send.","type":"boolean"},"defaultValue":{"description":"Default value pre-filled when a new workflow run is created.","type":"string"}}},{"title":"PublicApiEmailFormFieldConfig","type":"object","properties":{"placeholder":{"description":"Placeholder hint shown in the input when no value has been entered.","type":"string"},"defaultValue":{"description":"Default value pre-filled when a new workflow run is created.","type":"string"}}},{"title":"PublicApiHiddenFormFieldConfig","type":"object","properties":{"defaultValue":{"description":"Default value pre-filled when a new workflow run is created.","type":"string"}}},{"title":"PublicApiMembersFormFieldConfig","type":"object","properties":{"defaultValue":{"description":"Default value pre-filled when a new workflow run is created.","type":"string"},"groupId":{"title":"EntityID","description":"The ID of an organization group.","type":"string"}}},{"title":"PublicApiMultiChoiceFormFieldConfig","type":"object","properties":{"items":{"description":"Available options for selection-style form fields.","type":"array","items":{"title":"PublicApiFormFieldItem","type":"object","required":["name"],"properties":{"id":{"title":"EntityID","description":"The resource's ID.","type":"string"},"name":{"description":"Display name.","type":"string"}}}}}},{"title":"PublicApiMultiFileFormFieldConfig","type":"object","properties":{"placeholder":{"description":"Placeholder hint shown in the input when no value has been entered.","type":"string"},"extractTextContent":{"description":"When `true`, server extracts text from uploaded documents for use in merge tags.","type":"boolean"}}},{"title":"PublicApiMultiSelectFormFieldConfig","type":"object","properties":{"items":{"description":"Available options for selection-style form fields.","type":"array","items":{"title":"PublicApiFormFieldItem","type":"object","required":["name"],"properties":{"id":{"title":"EntityID","description":"The resource's ID.","type":"string"},"name":{"description":"Display name.","type":"string"}}}}}},{"title":"PublicApiNumberFormFieldConfig","type":"object","properties":{"placeholder":{"description":"Placeholder hint shown in the input when no value has been entered.","type":"string"},"defaultValue":{"description":"Default value pre-filled when a new workflow run is created.","type":"string"},"unit":{"description":"Unit label rendered next to the numeric value (e.g. `kg`, `$`, `%`).","type":"string"},"unitLocation":{"description":"Where the unit symbol appears relative to the number.\n\n- `prefix` — before the number (e.g. `$100`).\n- `suffix` — after the number (e.g. `100 USD`).\n","type":"string","enum":["prefix","suffix"]}}},{"title":"PublicApiSelectFormFieldConfig","type":"object","properties":{"items":{"description":"Available options for selection-style form fields.","type":"array","items":{"title":"PublicApiFormFieldItem","type":"object","required":["name"],"properties":{"id":{"title":"EntityID","description":"The resource's ID.","type":"string"},"name":{"description":"Display name.","type":"string"}}}},"defaultValue":{"description":"Default value pre-filled when a new workflow run is created.","type":"string"}}},{"title":"PublicApiSendRichEmailFormFieldConfig","type":"object","required":["bodyEditor"],"properties":{"to":{"description":"Default recipient list (To). Comma-separated email addresses or merge tags.","type":"array","items":{"type":"string"}},"cc":{"description":"Default CC list. Comma-separated email addresses or merge tags.","type":"array","items":{"type":"string"}},"bcc":{"description":"Default BCC list. Comma-separated email addresses or merge tags.","type":"array","items":{"type":"string"}},"replyTo":{"description":"Default Reply-To address. An email address or merge tag.","type":"array","items":{"type":"string"}},"subject":{"description":"Default email subject. May contain merge tags.","type":"string"},"body":{"description":"Default email body. May contain merge tags.","type":"string"},"bodyEditor":{"description":"Editor used to author the email body.\n\n- `RichText` — rich-text editor with formatting.\n- `HTML` — raw HTML editor.\n- `PlainText` — plain text editor.\n","type":"string","enum":["RichText","HTML","PlainText"]},"editAllowed":{"description":"When `true`, users running the workflow can edit the email before sending.","type":"boolean"}}},{"title":"PublicApiSnippetFormFieldConfig","type":"object","properties":{"value":{"description":"The option's stored value.","type":"string"}}},{"title":"PublicApiTableFormFieldConfig","type":"object","properties":{"columnDefs":{"description":"Data set column definitions (name + type per column).","type":"array","items":{"title":"PublicApiTableFormFieldColumn","type":"object","required":["id","name","columnType"],"properties":{"id":{"title":"EntityID","description":"The resource's ID.","type":"string"},"name":{"description":"Display name.","type":"string"},"columnType":{"description":"Data type a Table column accepts.\n\n- `Text` — free-form short text.\n","type":"string","enum":["Text"]}}}},"defaultValue":{"description":"Default value pre-filled when a new workflow run is created.","type":"string"}}},{"title":"PublicApiTextFormFieldConfig","type":"object","properties":{"placeholder":{"description":"Placeholder hint shown in the input when no value has been entered.","type":"string"},"defaultValue":{"description":"Default value pre-filled when a new workflow run is created.","type":"string"}}},{"title":"PublicApiTextareaFormFieldConfig","type":"object","properties":{"placeholder":{"description":"Placeholder hint shown in the input when no value has been entered.","type":"string"},"defaultValue":{"description":"Default value pre-filled when a new workflow run is created.","type":"string"},"format":{"description":"Editor style for this Textarea field.\n\n- `PlainText` — plain text.\n- `RichText` — rich-text editor with formatting (bold, lists, links, etc.).\n","type":"string","enum":["PlainText","RichText"]}}},{"title":"PublicApiUrlFormFieldConfig","type":"object","properties":{"defaultValue":{"description":"Default value pre-filled when a new workflow run is created.","type":"string"}}}]},"constraints":{"description":"Field-specific validation constraints. Shape depends on `fieldType`.","anyOf":[{"title":"PublicApiDateFormFieldConstraints","type":"object","properties":{"afterDate":{"description":"Earliest accepted date (inclusive). Pair with `afterDateSourceType`.","type":"string","format":"date-time"},"beforeDate":{"description":"Latest accepted date (inclusive). Pair with `beforeDateSourceType`.","type":"string","format":"date-time"},"afterDateFormFieldWidgetGroupId":{"title":"EntityID","description":"When `afterDateSourceType=FormField`, the ID of the Date form field whose value is the lower bound.","type":"string"},"beforeDateFormFieldWidgetGroupId":{"title":"EntityID","description":"When `beforeDateSourceType=FormField`, the ID of the Date form field whose value is the upper bound.","type":"string"},"afterDateSourceType":{"description":"How the before/after constraint date is derived.\n\n- `SpecificDate` — an absolute date supplied as `afterDate` / `beforeDate`.\n- `FormFieldValue` — derived from another Date form field (`afterDateField` / `beforeDateField`).\n- `TaskDueDate` — relative to the containing task's due date.\n- `ChecklistStartDate` / `ChecklistDueDate` — relative to the workflow run's start or due date.\n","type":"string","enum":["SpecificDate","FormFieldValue","TaskDueDate","ChecklistStartDate","ChecklistDueDate"]},"beforeDateSourceType":{"description":"How the before/after constraint date is derived.\n\n- `SpecificDate` — an absolute date supplied as `afterDate` / `beforeDate`.\n- `FormFieldValue` — derived from another Date form field (`afterDateField` / `beforeDateField`).\n- `TaskDueDate` — relative to the containing task's due date.\n- `ChecklistStartDate` / `ChecklistDueDate` — relative to the workflow run's start or due date.\n","type":"string","enum":["SpecificDate","FormFieldValue","TaskDueDate","ChecklistStartDate","ChecklistDueDate"]},"afterDateOffset":{"description":"ISO 8601 duration (e.g. `P7D`, `P1Y2M`).","type":"string"},"beforeDateOffset":{"description":"ISO 8601 duration (e.g. `P7D`, `P1Y2M`).","type":"string"}}},{"title":"PublicApiEmailFormFieldConstraints","type":"object","properties":{"domains":{"description":"Allowed (or blocked, depending on `restriction`) email domains for this field.","type":"array","items":{"type":"string"}},"restriction":{"description":"How the `domains` list filters allowed email addresses.\n\n- `Allow` — only emails whose domain is in the list are accepted.\n- `Block` — emails whose domain is in the list are rejected; all others accepted.\n","type":"string","enum":["Allow","Block"]}}},{"title":"PublicApiMultiFileFormFieldConstraints","type":"object","properties":{"extensions":{"description":"Allowed file extensions, including the leading dot (e.g. `.pdf`, `.docx`).","type":"array","items":{"type":"string"}},"mode":{"description":"Whether the field accepts a single file or multiple files.\n\n- `Single` — only one file may be uploaded.\n- `Multiple` — multiple files may be uploaded.\n","type":"string","enum":["Multiple","Single"]}}},{"title":"PublicApiNumberFormFieldConstraints","type":"object","properties":{"minDigits":{"description":"Minimum number of digits.","type":"integer","format":"int32"},"maxDigits":{"description":"Maximum number of digits.","type":"integer","format":"int32"},"minValue":{"description":"Minimum numeric value.","type":"integer","format":"int32"},"maxValue":{"description":"Maximum numeric value.","type":"integer","format":"int32"},"decimalPlaces":{"description":"Number of decimal places to accept (0 means integers only).","type":"integer","format":"int32"},"allowNegative":{"description":"When `true`, negative numbers are accepted.","type":"boolean"}}},{"title":"PublicApiTextFormFieldConstraints","type":"object","properties":{"min":{"description":"Inclusive lower bound.","type":"integer","format":"int32"},"max":{"description":"Inclusive upper bound.","type":"integer","format":"int32"}}},{"title":"PublicApiTextareaFormFieldConstraints","type":"object","properties":{"min":{"description":"Inclusive lower bound.","type":"integer","format":"int32"},"max":{"description":"Inclusive upper bound.","type":"integer","format":"int32"}}}]},"fieldType":{"description":"Form-field subtype discriminator (only relevant when widget `type` is `FormField`).\n\n- `Text` — short text input (≤255 characters).\n- `Textarea` — long-form text.\n- `Email` — email address.\n- `Url` — website / URL.\n- `Number` — numeric input with optional unit and constraints.\n- `Date` — date or date+time picker.\n- `Select` — dropdown; user picks one option.\n- `MultiChoice` — checkboxes; user picks one or more options.\n- `MultiSelect` — Subtasks: a checklist of sub-items inside the task.\n- `Members` — assignee picker (selects organization users).\n- `File` — single file upload.\n- `MultiFile` — multi-file upload (in-app \"File Upload\").\n- `Document` — document approval field; links the task to a document review.\n- `Table` — rows × columns of cells; users fill cell values.\n- `SendRichEmail` — pre-written email embedded in the task; sent manually by the user or\n  automatically when the task is completed.\n- `Hidden` — only visible when editing the workflow; populated by integrations or default values.\n- `Snippet` — only visible when editing; passes static text or merge tags into automations.\n","type":"string","enum":["Date","Document","Email","Hidden","Members","MultiChoice","MultiFile","MultiSelect","Number","Select","SendRichEmail","Snippet","Table","Text","Textarea","Url"]}}},{"title":"CreateWorkflowCrossLinkWidgetRequest","type":"object","required":["type"],"properties":{"hiddenByDefault":{"description":"When `true`, the widget is hidden by default; conditional logic rules can reveal it at runtime. Defaults to `false`.","type":"boolean"},"position":{"title":"WidgetPosition","description":"Where to place this widget on the task. `Top` — before all existing widgets. `Bottom` — after all existing widgets (default when `position` is omitted). `After` — immediately after the widget identified by `widgetId`.","oneOf":[{"title":"WidgetPositionAfter","type":"object","required":["widgetId","type"],"properties":{"widgetId":{"title":"EntityID","description":"The ID of the widget.","type":"string"},"type":{"description":"Discriminator value for this variant. See the parent oneOf for the full set of values.","type":"string","const":"After"}}},{"title":"WidgetPositionBottom","type":"object","required":["type"],"properties":{"type":{"description":"Discriminator value for this variant. See the parent oneOf for the full set of values.","type":"string","const":"Bottom"}}},{"title":"WidgetPositionTop","type":"object","required":["type"],"properties":{"type":{"description":"Discriminator value for this variant. See the parent oneOf for the full set of values.","type":"string","const":"Top"}}}],"required":["type"],"discriminator":{"propertyName":"type","mapping":{"After":"#/components/schemas/WidgetPositionAfter","Bottom":"#/components/schemas/WidgetPositionBottom","Top":"#/components/schemas/WidgetPositionTop"}}},"linkedTemplateId":{"title":"EntityID","description":"The ID of the linked workflow or page that this CrossLink widget points to.","type":"string"},"type":{"description":"Discriminator value for this variant. See the parent oneOf for the full set of values.","type":"string","enum":["FormField","Text","Image","File","Video","Embed","CrossLink"],"const":"CrossLink"}}},{"title":"CreateWorkflowEmbedWidgetRequest","type":"object","required":["type"],"properties":{"hiddenByDefault":{"description":"When `true`, the widget is hidden by default; conditional logic rules can reveal it at runtime. Defaults to `false`.","type":"boolean"},"position":{"title":"WidgetPosition","description":"Where to place this widget on the task. `Top` — before all existing widgets. `Bottom` — after all existing widgets (default when `position` is omitted). `After` — immediately after the widget identified by `widgetId`.","oneOf":[{"title":"WidgetPositionAfter","type":"object","required":["widgetId","type"],"properties":{"widgetId":{"title":"EntityID","description":"The ID of the widget.","type":"string"},"type":{"description":"Discriminator value for this variant. See the parent oneOf for the full set of values.","type":"string","const":"After"}}},{"title":"WidgetPositionBottom","type":"object","required":["type"],"properties":{"type":{"description":"Discriminator value for this variant. See the parent oneOf for the full set of values.","type":"string","const":"Bottom"}}},{"title":"WidgetPositionTop","type":"object","required":["type"],"properties":{"type":{"description":"Discriminator value for this variant. See the parent oneOf for the full set of values.","type":"string","const":"Top"}}}],"required":["type"],"discriminator":{"propertyName":"type","mapping":{"After":"#/components/schemas/WidgetPositionAfter","Bottom":"#/components/schemas/WidgetPositionBottom","Top":"#/components/schemas/WidgetPositionTop"}}},"url":{"description":"Target URL.","type":"string","maxLength":4000},"type":{"description":"Discriminator value for this variant. See the parent oneOf for the full set of values.","type":"string","enum":["FormField","Text","Image","File","Video","Embed","CrossLink"],"const":"Embed"}}},{"title":"CreateWorkflowFileWidgetRequest","type":"object","required":["type"],"properties":{"hiddenByDefault":{"description":"When `true`, the widget is hidden by default; conditional logic rules can reveal it at runtime. Defaults to `false`.","type":"boolean"},"position":{"title":"WidgetPosition","description":"Where to place this widget on the task. `Top` — before all existing widgets. `Bottom` — after all existing widgets (default when `position` is omitted). `After` — immediately after the widget identified by `widgetId`.","oneOf":[{"title":"WidgetPositionAfter","type":"object","required":["widgetId","type"],"properties":{"widgetId":{"title":"EntityID","description":"The ID of the widget.","type":"string"},"type":{"description":"Discriminator value for this variant. See the parent oneOf for the full set of values.","type":"string","const":"After"}}},{"title":"WidgetPositionBottom","type":"object","required":["type"],"properties":{"type":{"description":"Discriminator value for this variant. See the parent oneOf for the full set of values.","type":"string","const":"Bottom"}}},{"title":"WidgetPositionTop","type":"object","required":["type"],"properties":{"type":{"description":"Discriminator value for this variant. See the parent oneOf for the full set of values.","type":"string","const":"Top"}}}],"required":["type"],"discriminator":{"propertyName":"type","mapping":{"After":"#/components/schemas/WidgetPositionAfter","Bottom":"#/components/schemas/WidgetPositionBottom","Top":"#/components/schemas/WidgetPositionTop"}}},"description":{"description":"Optional long-form description.","type":"string"},"type":{"description":"Discriminator value for this variant. See the parent oneOf for the full set of values.","type":"string","enum":["FormField","Text","Image","File","Video","Embed","CrossLink"],"const":"File"}}},{"title":"CreateWorkflowImageWidgetRequest","type":"object","required":["type"],"properties":{"hiddenByDefault":{"description":"When `true`, the widget is hidden by default; conditional logic rules can reveal it at runtime. Defaults to `false`.","type":"boolean"},"position":{"title":"WidgetPosition","description":"Where to place this widget on the task. `Top` — before all existing widgets. `Bottom` — after all existing widgets (default when `position` is omitted). `After` — immediately after the widget identified by `widgetId`.","oneOf":[{"title":"WidgetPositionAfter","type":"object","required":["widgetId","type"],"properties":{"widgetId":{"title":"EntityID","description":"The ID of the widget.","type":"string"},"type":{"description":"Discriminator value for this variant. See the parent oneOf for the full set of values.","type":"string","const":"After"}}},{"title":"WidgetPositionBottom","type":"object","required":["type"],"properties":{"type":{"description":"Discriminator value for this variant. See the parent oneOf for the full set of values.","type":"string","const":"Bottom"}}},{"title":"WidgetPositionTop","type":"object","required":["type"],"properties":{"type":{"description":"Discriminator value for this variant. See the parent oneOf for the full set of values.","type":"string","const":"Top"}}}],"required":["type"],"discriminator":{"propertyName":"type","mapping":{"After":"#/components/schemas/WidgetPositionAfter","Bottom":"#/components/schemas/WidgetPositionBottom","Top":"#/components/schemas/WidgetPositionTop"}}},"caption":{"description":"Caption text rendered with the image.","type":"string"},"type":{"description":"Discriminator value for this variant. See the parent oneOf for the full set of values.","type":"string","enum":["FormField","Text","Image","File","Video","Embed","CrossLink"],"const":"Image"}}},{"title":"CreateWorkflowTextWidgetRequest","type":"object","required":["type"],"properties":{"hiddenByDefault":{"description":"When `true`, the widget is hidden by default; conditional logic rules can reveal it at runtime. Defaults to `false`.","type":"boolean"},"position":{"title":"WidgetPosition","description":"Where to place this widget on the task. `Top` — before all existing widgets. `Bottom` — after all existing widgets (default when `position` is omitted). `After` — immediately after the widget identified by `widgetId`.","oneOf":[{"title":"WidgetPositionAfter","type":"object","required":["widgetId","type"],"properties":{"widgetId":{"title":"EntityID","description":"The ID of the widget.","type":"string"},"type":{"description":"Discriminator value for this variant. See the parent oneOf for the full set of values.","type":"string","const":"After"}}},{"title":"WidgetPositionBottom","type":"object","required":["type"],"properties":{"type":{"description":"Discriminator value for this variant. See the parent oneOf for the full set of values.","type":"string","const":"Bottom"}}},{"title":"WidgetPositionTop","type":"object","required":["type"],"properties":{"type":{"description":"Discriminator value for this variant. See the parent oneOf for the full set of values.","type":"string","const":"Top"}}}],"required":["type"],"discriminator":{"propertyName":"type","mapping":{"After":"#/components/schemas/WidgetPositionAfter","Bottom":"#/components/schemas/WidgetPositionBottom","Top":"#/components/schemas/WidgetPositionTop"}}},"content":{"description":"Rich text content. May contain merge tags.","type":"string"},"type":{"description":"Discriminator value for this variant. See the parent oneOf for the full set of values.","type":"string","enum":["FormField","Text","Image","File","Video","Embed","CrossLink"],"const":"Text"}}},{"title":"CreateWorkflowVideoWidgetRequest","type":"object","required":["type"],"properties":{"hiddenByDefault":{"description":"When `true`, the widget is hidden by default; conditional logic rules can reveal it at runtime. Defaults to `false`.","type":"boolean"},"position":{"title":"WidgetPosition","description":"Where to place this widget on the task. `Top` — before all existing widgets. `Bottom` — after all existing widgets (default when `position` is omitted). `After` — immediately after the widget identified by `widgetId`.","oneOf":[{"title":"WidgetPositionAfter","type":"object","required":["widgetId","type"],"properties":{"widgetId":{"title":"EntityID","description":"The ID of the widget.","type":"string"},"type":{"description":"Discriminator value for this variant. See the parent oneOf for the full set of values.","type":"string","const":"After"}}},{"title":"WidgetPositionBottom","type":"object","required":["type"],"properties":{"type":{"description":"Discriminator value for this variant. See the parent oneOf for the full set of values.","type":"string","const":"Bottom"}}},{"title":"WidgetPositionTop","type":"object","required":["type"],"properties":{"type":{"description":"Discriminator value for this variant. See the parent oneOf for the full set of values.","type":"string","const":"Top"}}}],"required":["type"],"discriminator":{"propertyName":"type","mapping":{"After":"#/components/schemas/WidgetPositionAfter","Bottom":"#/components/schemas/WidgetPositionBottom","Top":"#/components/schemas/WidgetPositionTop"}}},"description":{"description":"Optional long-form description.","type":"string"},"url":{"description":"Target URL.","type":"string"},"type":{"description":"Discriminator value for this variant. See the parent oneOf for the full set of values.","type":"string","enum":["FormField","Text","Image","File","Video","Embed","CrossLink"],"const":"Video"}}}],"required":["type"],"discriminator":{"propertyName":"type","mapping":{"CrossLink":"#/components/schemas/CreateWorkflowCrossLinkWidgetRequest","Embed":"#/components/schemas/CreateWorkflowEmbedWidgetRequest","File":"#/components/schemas/CreateWorkflowFileWidgetRequest","FormField":"#/components/schemas/CreateFormFieldWidgetRequest","Image":"#/components/schemas/CreateWorkflowImageWidgetRequest","Text":"#/components/schemas/CreateWorkflowTextWidgetRequest","Video":"#/components/schemas/CreateWorkflowVideoWidgetRequest"}}},"Daily":{"title":"Daily","type":"object","required":["interval","frequency"],"properties":{"interval":{"description":"Recurrence interval. For a Weekly schedule with `interval=2`, fires every other week.","type":"integer","format":"int32"},"frequency":{"description":"How often the workflow runs. The other fields on the rule depend on this value:\n`Daily` uses only `interval`, `Weekly` adds `weekDay`, `Monthly` adds `by`, `Yearly` uses only `interval`.","type":"string","enum":["Daily","Weekly","Monthly","Yearly"],"const":"Daily"}}},"DataSetField":{"title":"DataSetField","type":"object","required":["id","audit","name","fieldType"],"properties":{"id":{"title":"EntityID","description":"The resource's ID.","type":"string"},"audit":{"title":"PublicApiAudit","description":"Creation and last-modification metadata.","type":"object","required":["createdDate","createdBy","updatedDate","updatedBy"],"properties":{"createdDate":{"description":"When the resource was first created. ISO-8601 UTC.","type":"string","format":"date-time"},"createdBy":{"title":"PublicApiUser","description":"User who created the resource.","examples":[{"id":"iUu2eOU2Q-sBoX6ZjZV9pQ","email":"jane.doe@example.com","username":"Jane Doe"}],"type":"object","required":["id","email","username"],"properties":{"id":{"title":"EntityID","description":"The resource's ID.","type":"string"},"email":{"description":"The user's email address (also their login identifier).","type":"string"},"username":{"description":"The user's display name (e.g. `Jane Doe`).","type":"string"}}},"updatedDate":{"description":"When the resource was last modified. ISO-8601 UTC.","type":"string","format":"date-time"},"updatedBy":{"title":"PublicApiUser","description":"User who last modified the resource.","examples":[{"id":"iUu2eOU2Q-sBoX6ZjZV9pQ","email":"jane.doe@example.com","username":"Jane Doe"}],"type":"object","required":["id","email","username"],"properties":{"id":{"title":"EntityID","description":"The resource's ID.","type":"string"},"email":{"description":"The user's email address (also their login identifier).","type":"string"},"username":{"description":"The user's display name (e.g. `Jane Doe`).","type":"string"}}}}},"name":{"description":"Display name.","type":"string"},"fieldType":{"title":"ColumnType","description":"Data type of the column.\n\n- `Text` — free-form string.\n- `Number` — numeric value.\n- `DateTime` — ISO-8601 date-time.\n","type":"string","enum":["Text","DateTime","Number"]}}},"DataSetIncomingWebhookConfigRequest":{"title":"DataSetIncomingWebhookConfigRequest","type":"object","required":["columns"],"properties":{"columns":{"description":"Cell values keyed by column ID.","type":"object","additionalProperties":{"type":"string"}},"keyColumn":{"description":"Name of the column used as the unique key when reconciling rows on upsert.","type":"string"}}},"DueDateRuleBody":{"title":"DueDateRuleBody","description":"The rule to set; omit or send `null` to clear the existing rule.","type":"object","required":["sourceType","offsetDirection","dueOffset","businessDaysHandlingMode"],"properties":{"sourceType":{"description":"How the workflow run's due date is derived. `ChecklistStartDate` bases the due date on the workflow run's start date. `FormFieldValue` bases it on a Date form field value (requires `sourceWidgetId`).","type":"string","enum":["FormFieldValue","ChecklistStartDate"]},"sourceWidgetId":{"title":"EntityID","description":"For `sourceType=FormField`: the ID of the Members form field whose value drives the rule's assignees at runtime. Absent for `sourceType=ChecklistInitiator`.","type":"string"},"offsetDirection":{"description":"Whether the offset applies before or after the source date.","type":"string","enum":["Before","After"]},"dueOffset":{"description":"ISO-8601 duration (e.g. `P7D`, `PT4H30M`). Weeks are stored as days, so `P2W` reads back as `P14D`, and with `BusinessDaysOnly` each of those days is a business day.","type":"string"},"businessDaysHandlingMode":{"title":"BusinessDaysHandlingMode","description":"How non-business days are handled when calculating the due date. `AllDays` counts every day. `BusinessDaysOnly` counts only Monday–Friday. `ShiftToNextBusinessDay` calculates using all days then moves a Saturday/Sunday result to the next Monday.","type":"string","enum":["AllDays","BusinessDaysOnly","ShiftToNextBusinessDay"]}}},"DuplicatePageRequest":{"title":"DuplicatePageRequest","type":"object","properties":{"revisionId":{"title":"EntityID","type":"string"},"name":{"description":"Display name.","type":"string"},"folderId":{"title":"EntityID","description":"The ID of the Folder.","type":"string"}}},"DuplicateWorkflowRequest":{"title":"DuplicateWorkflowRequest","type":"object","properties":{"revisionId":{"title":"EntityID","type":"string"},"name":{"description":"Display name.","type":"string","maxLength":255},"folderId":{"title":"EntityID","description":"The ID of the Folder.","type":"string"}}},"DynamicAssignmentRule":{"title":"DynamicAssignmentRule","type":"object","required":["sourceType","type"],"properties":{"sourceType":{"description":"How assignees are derived. `ChecklistInitiator` assigns the user who started the workflow run; `FormField` pulls assignees from a Members or Email form field (requires `sourceWidgetId`); `DocumentOwner` and `DocumentAuthor` pull from the source document.","type":"string","enum":["ChecklistInitiator","FormField","DocumentOwner","DocumentAuthor"]},"sourceWidgetId":{"title":"EntityID","description":"For `sourceType=FormField`: the ID of the Members form field whose value drives the rule's assignees at runtime. Absent for `sourceType=ChecklistInitiator`.","type":"string"},"type":{"description":"Discriminator value for this variant. See the parent oneOf for the full set of values.","type":"string","const":"Dynamic"}}},"DynamicAssignmentRuleRequest":{"title":"DynamicAssignmentRuleRequest","type":"object","required":["sourceType","type"],"properties":{"sourceType":{"description":"How assignees are derived. `ChecklistInitiator` assigns the user who started the workflow run; `FormField` pulls assignees from a Members or Email form field (requires `sourceWidgetId`); `DocumentOwner` and `DocumentAuthor` pull from the source document.","type":"string","enum":["ChecklistInitiator","FormField","DocumentOwner","DocumentAuthor"]},"sourceWidgetId":{"title":"EntityID","description":"For `sourceType=FormField`: the ID of the Members form field whose value drives the rule's assignees at runtime. Absent for `sourceType=ChecklistInitiator`.","type":"string"},"type":{"description":"Discriminator value for this variant. See the parent oneOf for the full set of values.","type":"string","const":"Dynamic"}}},"DynamicPermissionRule":{"title":"DynamicPermissionRule","type":"object","required":["sourceType","taskRead","taskUpdate","type"],"properties":{"sourceType":{"title":"SourceType","description":"Where the user(s) that get task access are pulled from at runtime.\n\n- `ChecklistInitiator` — grants access to the user who started the workflow run.\n- `FormField` — grants access to users referenced by a form field on the run (`sourceWidgetId`\n  identifies which Members form field).\n","type":"string","enum":["ChecklistInitiator","FormField"]},"sourceWidgetId":{"title":"EntityID","description":"For `sourceType=FormField`: the ID of the Members form field whose value drives the rule's assignees at runtime. Absent for `sourceType=ChecklistInitiator`.","type":"string"},"taskRead":{"description":"When `true`, the rule grants read access to the task.","type":"boolean"},"taskUpdate":{"description":"When `true`, the rule grants update access to the task (check off, edit form fields).","type":"boolean"},"type":{"description":"Discriminator value for this variant. See the parent oneOf for the full set of values.","type":"string","const":"Dynamic"}}},"DynamicPermissionRuleRequest":{"title":"DynamicPermissionRuleRequest","type":"object","required":["sourceType","taskRead","taskUpdate","type"],"properties":{"sourceType":{"title":"SourceType","description":"Where the user(s) that get task access are pulled from at runtime.\n\n- `ChecklistInitiator` — grants access to the user who started the workflow run.\n- `FormField` — grants access to users referenced by a form field on the run (`sourceWidgetId`\n  identifies which Members form field).\n","type":"string","enum":["ChecklistInitiator","FormField"]},"sourceWidgetId":{"title":"EntityID","description":"For `sourceType=FormField`: the ID of the Members form field whose value drives the rule's assignees at runtime. Absent for `sourceType=ChecklistInitiator`.","type":"string"},"taskRead":{"description":"When `true`, the rule grants read access to the task.","type":"boolean"},"taskUpdate":{"description":"When `true`, the rule grants update access to the task (check off, edit form fields).","type":"boolean"},"type":{"description":"Discriminator value for this variant. See the parent oneOf for the full set of values.","type":"string","const":"Dynamic"}}},"EntityID":{"title":"EntityID","type":"string"},"ErrorCode":{"title":"ErrorCode","description":"Machine-parsable classification of the error. Always set on responses generated by the global\nexception handler. Branch your own error handling on this (not the message text).","type":"string","enum":["BadRequest","Unauthorized","PaymentRequired","Forbidden","NotFound","MethodNotAllowed","Conflict","PayloadTooLarge","Validation","RateLimited","InternalError"]},"ErrorDetails":{"description":"Optional structured context. Shape depends on the error: for `Validation` errors the keys are field\npaths; for `PaymentRequired` the keys describe the limit that was hit.","type":"object","additionalProperties":{"type":"string"}},"ErrorInfo":{"title":"ErrorInfo","type":"object","required":["error"],"properties":{"error":{"description":"Human-readable error message. Suitable for logs or for surfacing to end users; do not parse it\nprogrammatically — use `errorCode` for that.","type":"string"},"details":{"description":"Optional structured context. Shape depends on the error: for `Validation` errors the keys are field\npaths; for `PaymentRequired` the keys describe the limit that was hit.","type":"object","additionalProperties":{"type":"string"}},"errorCode":{"title":"ErrorCode","description":"Machine-parsable classification of the error. Always set on responses generated by the global\nexception handler. Branch your own error handling on this (not the message text).","type":"string","enum":["BadRequest","Unauthorized","PaymentRequired","Forbidden","NotFound","MethodNotAllowed","Conflict","PayloadTooLarge","Validation","RateLimited","InternalError"]},"requestId":{"description":"Per-request correlation ID. Include this when contacting support so we can find the request in our logs.","type":"string"}}},"FileBase64":{"title":"FileBase64","type":"object","required":["content","filename"],"properties":{"content":{"description":"Rich text content. May contain merge tags.","type":"string"},"filename":{"type":"string"}}},"FolderPermissionEntry":{"title":"FolderPermissionEntry","type":"object","required":["email","accessLevel"],"properties":{"email":{"description":"Email address.","type":"string"},"accessLevel":{"description":"Access level granted to a user on this folder. The level cascades to every workflow, page,\nand run inside the folder.\n\n- `Edit` — full edit on the folder and all its contents; can run workflows and view all runs.\n- `EditViewOwn` — edit folder contents and run workflows, but only see runs assigned to them\n  (available on some plans).\n- `ViewAll` — view the folder, all its contents, and all runs; can run workflows but cannot\n  edit.\n- `Run` — view the folder and run its workflows; only sees runs assigned to them.\n- `View` — view the folder and its contents; cannot run workflows.\n","type":"string","enum":["Edit","EditViewOwn","ViewAll","Run","View"]}}},"FormFieldOption":{"title":"FormFieldOption","type":"object","required":["value","label"],"properties":{"value":{"description":"The option's stored value.","type":"string"},"label":{"description":"Display label shown to the end user.","type":"string"},"dataSetRowId":{"title":"EntityID","type":"string"}}},"GetChecklistDueDateRuleResponse":{"title":"GetChecklistDueDateRuleResponse","description":"The resource returned by this request.","type":"object","properties":{"rule":{"title":"PublicApiChecklistDueDateRule","description":"The checklist due date rule, or `null` if none is set.","type":"object","required":["sourceType","offsetDirection","dueOffset","businessDaysHandlingMode"],"properties":{"sourceType":{"description":"How the workflow run's due date is derived. `ChecklistStartDate` bases the due date on the workflow run's start date. `FormFieldValue` bases it on a Date form field value (requires `sourceWidgetId`).","type":"string","enum":["FormFieldValue","ChecklistStartDate"]},"sourceWidgetId":{"title":"EntityID","description":"For `sourceType=FormField`: the ID of the Members form field whose value drives the rule's assignees at runtime. Absent for `sourceType=ChecklistInitiator`.","type":"string"},"offsetDirection":{"description":"Whether the offset applies before or after the source date.","type":"string","enum":["Before","After"]},"dueOffset":{"description":"ISO-8601 duration (e.g. `P7D`, `PT4H30M`). Weeks are stored as days, so `P2W` reads back as `P14D`, and with `BusinessDaysOnly` each of those days is a business day.","type":"string"},"businessDaysHandlingMode":{"title":"BusinessDaysHandlingMode","description":"How non-business days are handled when calculating the due date. `AllDays` counts every day. `BusinessDaysOnly` counts only Monday–Friday. `ShiftToNextBusinessDay` calculates using all days then moves a Saturday/Sunday result to the next Monday.","type":"string","enum":["AllDays","BusinessDaysOnly","ShiftToNextBusinessDay"]}}}}},"GetChecklistDueDateRuleResponseResponse":{"title":"GetChecklistDueDateRuleResponseResponse","type":"object","required":["data"],"properties":{"data":{"title":"GetChecklistDueDateRuleResponse","description":"The resource returned by this request.","type":"object","properties":{"rule":{"title":"PublicApiChecklistDueDateRule","description":"The checklist due date rule, or `null` if none is set.","type":"object","required":["sourceType","offsetDirection","dueOffset","businessDaysHandlingMode"],"properties":{"sourceType":{"description":"How the workflow run's due date is derived. `ChecklistStartDate` bases the due date on the workflow run's start date. `FormFieldValue` bases it on a Date form field value (requires `sourceWidgetId`).","type":"string","enum":["FormFieldValue","ChecklistStartDate"]},"sourceWidgetId":{"title":"EntityID","description":"For `sourceType=FormField`: the ID of the Members form field whose value drives the rule's assignees at runtime. Absent for `sourceType=ChecklistInitiator`.","type":"string"},"offsetDirection":{"description":"Whether the offset applies before or after the source date.","type":"string","enum":["Before","After"]},"dueOffset":{"description":"ISO-8601 duration (e.g. `P7D`, `PT4H30M`). Weeks are stored as days, so `P2W` reads back as `P14D`, and with `BusinessDaysOnly` each of those days is a business day.","type":"string"},"businessDaysHandlingMode":{"title":"BusinessDaysHandlingMode","description":"How non-business days are handled when calculating the due date. `AllDays` counts every day. `BusinessDaysOnly` counts only Monday–Friday. `ShiftToNextBusinessDay` calculates using all days then moves a Saturday/Sunday result to the next Monday.","type":"string","enum":["AllDays","BusinessDaysOnly","ShiftToNextBusinessDay"]}}}}},"links":{"description":"Pagination links. When the result has more pages, look for an entry with `name: \"next\"` — its `href` is the URL to fetch the next page. Absence of `next` means there are no more pages. For single-resource responses this array is typically empty.","type":"array","items":{"title":"Link","description":"A HATEOAS link to a related resource. Use these to navigate between resources without constructing URLs by hand.","type":"object","required":["name","href","type"],"properties":{"name":{"description":"Standard link relation name (RFC 5988) indicating this link's role. Common values include `self`, `edit`, `related`, `previous`, `next`.","type":"string"},"href":{"title":"Uri","description":"URL of the linked resource.","examples":["https://api.process.st/api/v1.1/resource/XXX"],"type":"string"},"rel":{"description":"Optional. The kind of resource this link points to (e.g. `Workflow`, `Task`, `Comment`).","type":"string","enum":["Approval Task","Approvals","Assignees","Comment","Data Set Records","Data Sets","Form Field Values","Subject Task","Task","Tasks","Users","Webhook","Workflow","Workflow Run"]},"type":{"description":"Whether this link targets an API endpoint or a Process Street app URL. `Api` — a callable API endpoint you can fetch directly. `App` — a browser-facing URL in the Process Street UI.","type":"string","enum":["Api","App"]}}}}}},"GetTaskDueDateRuleResponse":{"title":"GetTaskDueDateRuleResponse","description":"The resource returned by this request.","type":"object","properties":{"rule":{"title":"PublicApiTaskDueDateRule","description":"The task's due date rule, or `null` if none is set.","type":"object","required":["sourceType","offsetDirection","dueOffset","businessDaysHandlingMode"],"properties":{"sourceType":{"description":"How the task's due date is derived. `ChecklistStartDate` / `ChecklistDueDate` — relative to the workflow run's start or due date. `TaskCompletedDate` / `TaskDueDate` — relative to a specific source task (requires `sourceTaskId`). `PreviousTaskCompletedDate` — relative to the task immediately before this one. `FormFieldValue` — relative to a Date form field value (requires `sourceWidgetId`).","type":"string","enum":["FormFieldValue","TaskCompletedDate","PreviousTaskCompletedDate","TaskDueDate","ChecklistStartDate","ChecklistDueDate"]},"sourceWidgetId":{"title":"EntityID","description":"For `sourceType=FormField`: the ID of the Members form field whose value drives the rule's assignees at runtime. Absent for `sourceType=ChecklistInitiator`.","type":"string"},"sourceTaskId":{"title":"EntityID","type":"string"},"offsetDirection":{"description":"Whether the offset applies before or after the source date.","type":"string","enum":["Before","After"]},"dueOffset":{"description":"ISO-8601 duration (e.g. `P7D`, `PT4H30M`). Weeks are stored as days, so `P2W` reads back as `P14D`, and with `BusinessDaysOnly` each of those days is a business day.","type":"string"},"businessDaysHandlingMode":{"title":"BusinessDaysHandlingMode","description":"How non-business days are handled when calculating the due date. `AllDays` counts every day. `BusinessDaysOnly` counts only Monday–Friday. `ShiftToNextBusinessDay` calculates using all days then moves a Saturday/Sunday result to the next Monday.","type":"string","enum":["AllDays","BusinessDaysOnly","ShiftToNextBusinessDay"]}}}}},"GetTaskDueDateRuleResponseResponse":{"title":"GetTaskDueDateRuleResponseResponse","type":"object","required":["data"],"properties":{"data":{"title":"GetTaskDueDateRuleResponse","description":"The resource returned by this request.","type":"object","properties":{"rule":{"title":"PublicApiTaskDueDateRule","description":"The task's due date rule, or `null` if none is set.","type":"object","required":["sourceType","offsetDirection","dueOffset","businessDaysHandlingMode"],"properties":{"sourceType":{"description":"How the task's due date is derived. `ChecklistStartDate` / `ChecklistDueDate` — relative to the workflow run's start or due date. `TaskCompletedDate` / `TaskDueDate` — relative to a specific source task (requires `sourceTaskId`). `PreviousTaskCompletedDate` — relative to the task immediately before this one. `FormFieldValue` — relative to a Date form field value (requires `sourceWidgetId`).","type":"string","enum":["FormFieldValue","TaskCompletedDate","PreviousTaskCompletedDate","TaskDueDate","ChecklistStartDate","ChecklistDueDate"]},"sourceWidgetId":{"title":"EntityID","description":"For `sourceType=FormField`: the ID of the Members form field whose value drives the rule's assignees at runtime. Absent for `sourceType=ChecklistInitiator`.","type":"string"},"sourceTaskId":{"title":"EntityID","type":"string"},"offsetDirection":{"description":"Whether the offset applies before or after the source date.","type":"string","enum":["Before","After"]},"dueOffset":{"description":"ISO-8601 duration (e.g. `P7D`, `PT4H30M`). Weeks are stored as days, so `P2W` reads back as `P14D`, and with `BusinessDaysOnly` each of those days is a business day.","type":"string"},"businessDaysHandlingMode":{"title":"BusinessDaysHandlingMode","description":"How non-business days are handled when calculating the due date. `AllDays` counts every day. `BusinessDaysOnly` counts only Monday–Friday. `ShiftToNextBusinessDay` calculates using all days then moves a Saturday/Sunday result to the next Monday.","type":"string","enum":["AllDays","BusinessDaysOnly","ShiftToNextBusinessDay"]}}}}},"links":{"description":"Pagination links. When the result has more pages, look for an entry with `name: \"next\"` — its `href` is the URL to fetch the next page. Absence of `next` means there are no more pages. For single-resource responses this array is typically empty.","type":"array","items":{"title":"Link","description":"A HATEOAS link to a related resource. Use these to navigate between resources without constructing URLs by hand.","type":"object","required":["name","href","type"],"properties":{"name":{"description":"Standard link relation name (RFC 5988) indicating this link's role. Common values include `self`, `edit`, `related`, `previous`, `next`.","type":"string"},"href":{"title":"Uri","description":"URL of the linked resource.","examples":["https://api.process.st/api/v1.1/resource/XXX"],"type":"string"},"rel":{"description":"Optional. The kind of resource this link points to (e.g. `Workflow`, `Task`, `Comment`).","type":"string","enum":["Approval Task","Approvals","Assignees","Comment","Data Set Records","Data Sets","Form Field Values","Subject Task","Task","Tasks","Users","Webhook","Workflow","Workflow Run"]},"type":{"description":"Whether this link targets an API endpoint or a Process Street app URL. `Api` — a callable API endpoint you can fetch directly. `App` — a browser-facing URL in the Process Street UI.","type":"string","enum":["Api","App"]}}}}}},"GetTaskResponse":{"title":"GetTaskResponse","type":"object","required":["id","updatedDate","updatedBy","workflowRunId","status","name","hidden","stopped"],"properties":{"id":{"description":"The ID of the Task","examples":["gt2k5jTGS5wBoX6ZocF7gA"],"type":"string"},"updatedDate":{"description":"When the resource was last modified. ISO-8601 UTC.","type":"string","format":"date-time"},"updatedBy":{"title":"PublicApiUser","description":"User who last modified the resource.","examples":[{"id":"iUu2eOU2Q-sBoX6ZjZV9pQ","email":"jane.doe@example.com","username":"Jane Doe"}],"type":"object","required":["id","email","username"],"properties":{"id":{"title":"EntityID","description":"The resource's ID.","type":"string"},"email":{"description":"The user's email address (also their login identifier).","type":"string"},"username":{"description":"The user's display name (e.g. `Jane Doe`).","type":"string"}}},"completedDate":{"type":"string","format":"date-time"},"completedBy":{"title":"PublicApiUser","examples":[{"id":"iUu2eOU2Q-sBoX6ZjZV9pQ","email":"jane.doe@example.com","username":"Jane Doe"}],"type":"object","required":["id","email","username"],"properties":{"id":{"title":"EntityID","description":"The resource's ID.","type":"string"},"email":{"description":"The user's email address (also their login identifier).","type":"string"},"username":{"description":"The user's display name (e.g. `Jane Doe`).","type":"string"}}},"workflowRunId":{"description":"The ID of the Workflow Run","examples":["gt2k5jTGS5wBoX6ZocF7gA"],"type":"string"},"status":{"title":"Status","type":"string","enum":["NotCompleted","Completed"]},"dueDate":{"description":"Due date. ISO-8601 UTC.","type":"string","format":"date-time"},"name":{"description":"Display name.","type":"string"},"hidden":{"description":"Whether the task is hidden by Conditional Logic.","type":"boolean"},"stopped":{"description":"Whether the task is blocked (stopped) by an incomplete prior stop task.","type":"boolean"},"links":{"description":"Navigable HATEOAS links to related resources. Each entry has a `name` (RFC-5988 relation), an `href` URL, and a `type` (`Api` or `App`).","type":"array","items":{"title":"Link","description":"A HATEOAS link to a related resource. Use these to navigate between resources without constructing URLs by hand.","type":"object","required":["name","href","type"],"properties":{"name":{"description":"Standard link relation name (RFC 5988) indicating this link's role. Common values include `self`, `edit`, `related`, `previous`, `next`.","type":"string"},"href":{"title":"Uri","description":"URL of the linked resource.","examples":["https://api.process.st/api/v1.1/resource/XXX"],"type":"string"},"rel":{"description":"Optional. The kind of resource this link points to (e.g. `Workflow`, `Task`, `Comment`).","type":"string","enum":["Approval Task","Approvals","Assignees","Comment","Data Set Records","Data Sets","Form Field Values","Subject Task","Task","Tasks","Users","Webhook","Workflow","Workflow Run"]},"type":{"description":"Whether this link targets an API endpoint or a Process Street app URL. `Api` — a callable API endpoint you can fetch directly. `App` — a browser-facing URL in the Process Street UI.","type":"string","enum":["Api","App"]}}}}}},"GetWorkflowRunResponse":{"title":"GetWorkflowRunResponse","type":"object","required":["id","audit","status","workflowId","shared","migrationStatus"],"properties":{"id":{"description":"The ID of the Workflow Run","examples":["lzNYat7_sTgBoX6Zm555hw"],"type":"string"},"audit":{"title":"AuditInfo","description":"Creation and last-modification metadata.","type":"object","required":["createdDate","createdById","updatedDate","updatedById"],"properties":{"createdDate":{"description":"When the resource was first created. ISO-8601 UTC.","type":"string","format":"date-time"},"createdById":{"title":"EntityID","description":"ID of the user who created the resource.","type":"string"},"updatedDate":{"description":"When the resource was last modified. ISO-8601 UTC.","type":"string","format":"date-time"},"updatedById":{"title":"EntityID","description":"ID of the user who last modified the resource.","type":"string"}}},"name":{"description":"Display name.","type":"string"},"status":{"description":"Lifecycle status of a workflow run.\n\n- `Active` — the run is in progress.\n- `Completed` — all tasks were completed and the run was finalised.\n- `Archived` — the run was archived from the active list (no further task progress is recorded but the run stays queryable).\n- `Deleted` — the run was soft-deleted.\n\nList endpoints return only `Active` runs unless otherwise indicated.\n","type":"string","enum":["Active","Completed","Archived","Deleted"]},"workflowId":{"description":"The ID of the Workflow","examples":["lzNYat7_sTgBoX6Zm555hw"],"type":"string"},"shared":{"type":"boolean"},"dueDate":{"description":"Due date. ISO-8601 UTC.","type":"string","format":"date-time"},"migrationStatus":{"description":"Whether this run is currently being migrated to a newer workflow revision.\n\n- `Inactive` — not in a migration; this is the normal state.\n- `Scheduled` — a migration to a newer revision has been requested and is queued.\n- `Migrating` — migration is in progress; some fields may change shortly.\n","type":"string","enum":["Inactive","Scheduled","Migrating"]},"links":{"description":"Navigable HATEOAS links to related resources. Each entry has a `name` (RFC-5988 relation), an `href` URL, and a `type` (`Api` or `App`).","type":"array","items":{"title":"Link","description":"A HATEOAS link to a related resource. Use these to navigate between resources without constructing URLs by hand.","type":"object","required":["name","href","type"],"properties":{"name":{"description":"Standard link relation name (RFC 5988) indicating this link's role. Common values include `self`, `edit`, `related`, `previous`, `next`.","type":"string"},"href":{"title":"Uri","description":"URL of the linked resource.","examples":["https://api.process.st/api/v1.1/resource/XXX"],"type":"string"},"rel":{"description":"Optional. The kind of resource this link points to (e.g. `Workflow`, `Task`, `Comment`).","type":"string","enum":["Approval Task","Approvals","Assignees","Comment","Data Set Records","Data Sets","Form Field Values","Subject Task","Task","Tasks","Users","Webhook","Workflow","Workflow Run"]},"type":{"description":"Whether this link targets an API endpoint or a Process Street app URL. `Api` — a callable API endpoint you can fetch directly. `App` — a browser-facing URL in the Process Street UI.","type":"string","enum":["Api","App"]}}}}}},"ImportDataSetRowsRequest":{"title":"ImportDataSetRowsRequest","type":"object","required":["strategy","file"],"properties":{"strategy":{"description":"How rows in the uploaded CSV are reconciled with the existing data set.\n\n- `Append` — every uploaded row is inserted as a new row (no `key` required;\n  nothing is updated or deleted).\n- `Upsert` — rows whose `key` column matches an existing row are updated in\n  place; new keys are inserted; rows absent from the upload are left untouched.\n- `Sync` — like `Upsert`, but rows in the data set whose key is absent from\n  the upload are deleted, leaving the data set fully in sync with the file.\n","type":"string","enum":["Append","Upsert","Sync"]},"file":{"description":"Uploaded file reference. Use the upload endpoint to attach content.","type":"string","format":"binary"},"key":{"description":"Unique key used to identify this row across imports — matches the data set column referenced by the webhook's `keyColumn`.","type":"string"}}},"ImportDataSetRowsResponse":{"title":"ImportDataSetRowsResponse","type":"object","required":["id","created","updated","deleted"],"properties":{"id":{"description":"The ID of the Data Set","examples":["gAtwdd14jVoBoX6ZoYp-Wg"],"type":"string"},"created":{"type":"integer","format":"int64"},"updated":{"type":"integer","format":"int64"},"deleted":{"type":"integer","format":"int64"}}},"InboxItemType":{"title":"InboxItemType","type":"string","enum":["Checklist","StandardTask","ApprovalTask","OneOffTask","Acknowledgment"]},"InboxItemType1":{"title":"InboxItemType","description":"Kind of My Work item.\n\n- `Checklist` — a workflow run assigned to the user.\n- `StandardTask` — a regular task within a workflow run.\n- `ApprovalTask` — an approval task awaiting the user's review.\n- `OneOffTask` — a standalone one-off task.\n- `Acknowledgment` — a revision-acknowledgment request after a workflow update.\n","type":"string","enum":["Checklist","StandardTask","ApprovalTask","OneOffTask","Acknowledgment"]},"LeafCondition":{"title":"LeafCondition","type":"object","required":["widgetId","operator"],"properties":{"widgetId":{"title":"EntityID","description":"The ID of the widget.","type":"string"},"operator":{"description":"Comparison operator (e.g. `Is`, `IsNot`, `Contains`, `IsEmpty`).","type":"string"},"value":{"description":"The option's stored value.","type":"string"}}},"Link":{"title":"Link","description":"A HATEOAS link to a related resource. Use these to navigate between resources without constructing URLs by hand.","type":"object","required":["name","href","type"],"properties":{"name":{"description":"Standard link relation name (RFC 5988) indicating this link's role. Common values include `self`, `edit`, `related`, `previous`, `next`.","type":"string"},"href":{"title":"Uri","description":"URL of the linked resource.","examples":["https://api.process.st/api/v1.1/resource/XXX"],"type":"string"},"rel":{"description":"Optional. The kind of resource this link points to (e.g. `Workflow`, `Task`, `Comment`).","type":"string","enum":["Approval Task","Approvals","Assignees","Comment","Data Set Records","Data Sets","Form Field Values","Subject Task","Task","Tasks","Users","Webhook","Workflow","Workflow Run"]},"type":{"description":"Whether this link targets an API endpoint or a Process Street app URL. `Api` — a callable API endpoint you can fetch directly. `App` — a browser-facing URL in the Process Street UI.","type":"string","enum":["Api","App"]}}},"ListApprovalsResponse":{"title":"ListApprovalsResponse","type":"object","properties":{"approvals":{"type":"array","items":{"title":"SimplifiedApproval","type":"object","required":["id","audit","organizationId","workflowRunId","approvalTaskId","subjectTaskId","status","reviewedBy"],"properties":{"id":{"title":"EntityID","description":"The resource's ID.","type":"string"},"audit":{"title":"PublicApiAudit","description":"Creation and last-modification metadata.","type":"object","required":["createdDate","createdBy","updatedDate","updatedBy"],"properties":{"createdDate":{"description":"When the resource was first created. ISO-8601 UTC.","type":"string","format":"date-time"},"createdBy":{"title":"PublicApiUser","description":"User who created the resource.","examples":[{"id":"iUu2eOU2Q-sBoX6ZjZV9pQ","email":"jane.doe@example.com","username":"Jane Doe"}],"type":"object","required":["id","email","username"],"properties":{"id":{"title":"EntityID","description":"The resource's ID.","type":"string"},"email":{"description":"The user's email address (also their login identifier).","type":"string"},"username":{"description":"The user's display name (e.g. `Jane Doe`).","type":"string"}}},"updatedDate":{"description":"When the resource was last modified. ISO-8601 UTC.","type":"string","format":"date-time"},"updatedBy":{"title":"PublicApiUser","description":"User who last modified the resource.","examples":[{"id":"iUu2eOU2Q-sBoX6ZjZV9pQ","email":"jane.doe@example.com","username":"Jane Doe"}],"type":"object","required":["id","email","username"],"properties":{"id":{"title":"EntityID","description":"The resource's ID.","type":"string"},"email":{"description":"The user's email address (also their login identifier).","type":"string"},"username":{"description":"The user's display name (e.g. `Jane Doe`).","type":"string"}}}}},"organizationId":{"title":"EntityID","description":"The ID of the organization this resource belongs to.","type":"string"},"workflowRunId":{"title":"EntityID","description":"The ID of the Workflow Run.","type":"string"},"approvalTaskId":{"title":"EntityID","type":"string"},"subjectTaskId":{"title":"EntityID","type":"string"},"status":{"description":"Outcome of an approval task review.\n\n- `Approved` — the reviewer accepted the subject task(s).\n- `Rejected` — the reviewer rejected; subject tasks return to the assignee for rework.\n","type":"string","enum":["Approved","Rejected"]},"reviewedBy":{"title":"PublicApiUser","examples":[{"id":"iUu2eOU2Q-sBoX6ZjZV9pQ","email":"jane.doe@example.com","username":"Jane Doe"}],"type":"object","required":["id","email","username"],"properties":{"id":{"title":"EntityID","description":"The resource's ID.","type":"string"},"email":{"description":"The user's email address (also their login identifier).","type":"string"},"username":{"description":"The user's display name (e.g. `Jane Doe`).","type":"string"}}},"comment":{"type":"string"},"links":{"description":"Navigable HATEOAS links to related resources. Each entry has a `name` (RFC-5988 relation), an `href` URL, and a `type` (`Api` or `App`).","type":"array","items":{"title":"Link","description":"A HATEOAS link to a related resource. Use these to navigate between resources without constructing URLs by hand.","type":"object","required":["name","href","type"],"properties":{"name":{"description":"Standard link relation name (RFC 5988) indicating this link's role. Common values include `self`, `edit`, `related`, `previous`, `next`.","type":"string"},"href":{"title":"Uri","description":"URL of the linked resource.","examples":["https://api.process.st/api/v1.1/resource/XXX"],"type":"string"},"rel":{"description":"Optional. The kind of resource this link points to (e.g. `Workflow`, `Task`, `Comment`).","type":"string","enum":["Approval Task","Approvals","Assignees","Comment","Data Set Records","Data Sets","Form Field Values","Subject Task","Task","Tasks","Users","Webhook","Workflow","Workflow Run"]},"type":{"description":"Whether this link targets an API endpoint or a Process Street app URL. `Api` — a callable API endpoint you can fetch directly. `App` — a browser-facing URL in the Process Street UI.","type":"string","enum":["Api","App"]}}}}}}},"links":{"description":"Navigable HATEOAS links to related resources. Each entry has a `name` (RFC-5988 relation), an `href` URL, and a `type` (`Api` or `App`).","type":"array","items":{"title":"Link","description":"A HATEOAS link to a related resource. Use these to navigate between resources without constructing URLs by hand.","type":"object","required":["name","href","type"],"properties":{"name":{"description":"Standard link relation name (RFC 5988) indicating this link's role. Common values include `self`, `edit`, `related`, `previous`, `next`.","type":"string"},"href":{"title":"Uri","description":"URL of the linked resource.","examples":["https://api.process.st/api/v1.1/resource/XXX"],"type":"string"},"rel":{"description":"Optional. The kind of resource this link points to (e.g. `Workflow`, `Task`, `Comment`).","type":"string","enum":["Approval Task","Approvals","Assignees","Comment","Data Set Records","Data Sets","Form Field Values","Subject Task","Task","Tasks","Users","Webhook","Workflow","Workflow Run"]},"type":{"description":"Whether this link targets an API endpoint or a Process Street app URL. `Api` — a callable API endpoint you can fetch directly. `App` — a browser-facing URL in the Process Street UI.","type":"string","enum":["Api","App"]}}}}}},"ListChecklistAssigneesResponse":{"title":"ListChecklistAssigneesResponse","type":"object","properties":{"assignees":{"type":"array","items":{"title":"PublicApiUser","examples":[{"id":"iUu2eOU2Q-sBoX6ZjZV9pQ","email":"jane.doe@example.com","username":"Jane Doe"}],"type":"object","required":["id","email","username"],"properties":{"id":{"title":"EntityID","description":"The resource's ID.","type":"string"},"email":{"description":"The user's email address (also their login identifier).","type":"string"},"username":{"description":"The user's display name (e.g. `Jane Doe`).","type":"string"}}}},"links":{"description":"Navigable HATEOAS links to related resources. Each entry has a `name` (RFC-5988 relation), an `href` URL, and a `type` (`Api` or `App`).","type":"array","items":{"title":"Link","description":"A HATEOAS link to a related resource. Use these to navigate between resources without constructing URLs by hand.","type":"object","required":["name","href","type"],"properties":{"name":{"description":"Standard link relation name (RFC 5988) indicating this link's role. Common values include `self`, `edit`, `related`, `previous`, `next`.","type":"string"},"href":{"title":"Uri","description":"URL of the linked resource.","examples":["https://api.process.st/api/v1.1/resource/XXX"],"type":"string"},"rel":{"description":"Optional. The kind of resource this link points to (e.g. `Workflow`, `Task`, `Comment`).","type":"string","enum":["Approval Task","Approvals","Assignees","Comment","Data Set Records","Data Sets","Form Field Values","Subject Task","Task","Tasks","Users","Webhook","Workflow","Workflow Run"]},"type":{"description":"Whether this link targets an API endpoint or a Process Street app URL. `Api` — a callable API endpoint you can fetch directly. `App` — a browser-facing URL in the Process Street UI.","type":"string","enum":["Api","App"]}}}}}},"ListDataSetRowsResponse":{"title":"ListDataSetRowsResponse","type":"object","properties":{"records":{"type":"array","items":{"title":"SimplifiedRow","type":"object","required":["id","audit","organizationId","dataSetId"],"properties":{"id":{"title":"EntityID","description":"The resource's ID.","type":"string"},"audit":{"title":"PublicApiAudit","description":"Creation and last-modification metadata.","type":"object","required":["createdDate","createdBy","updatedDate","updatedBy"],"properties":{"createdDate":{"description":"When the resource was first created. ISO-8601 UTC.","type":"string","format":"date-time"},"createdBy":{"title":"PublicApiUser","description":"User who created the resource.","examples":[{"id":"iUu2eOU2Q-sBoX6ZjZV9pQ","email":"jane.doe@example.com","username":"Jane Doe"}],"type":"object","required":["id","email","username"],"properties":{"id":{"title":"EntityID","description":"The resource's ID.","type":"string"},"email":{"description":"The user's email address (also their login identifier).","type":"string"},"username":{"description":"The user's display name (e.g. `Jane Doe`).","type":"string"}}},"updatedDate":{"description":"When the resource was last modified. ISO-8601 UTC.","type":"string","format":"date-time"},"updatedBy":{"title":"PublicApiUser","description":"User who last modified the resource.","examples":[{"id":"iUu2eOU2Q-sBoX6ZjZV9pQ","email":"jane.doe@example.com","username":"Jane Doe"}],"type":"object","required":["id","email","username"],"properties":{"id":{"title":"EntityID","description":"The resource's ID.","type":"string"},"email":{"description":"The user's email address (also their login identifier).","type":"string"},"username":{"description":"The user's display name (e.g. `Jane Doe`).","type":"string"}}}}},"organizationId":{"title":"EntityID","description":"The ID of the organization this resource belongs to.","type":"string"},"dataSetId":{"title":"EntityID","type":"string"},"cells":{"type":"array","items":{"title":"SimplifiedCell","type":"object","required":["fieldId","value"],"properties":{"fieldId":{"title":"EntityID","description":"The ID of the form field.","type":"string"},"value":{"description":"The option's stored value.","oneOf":[{"type":"null"},{"type":"number"},{"type":"string"}]}}}}}}},"links":{"description":"Navigable HATEOAS links to related resources. Each entry has a `name` (RFC-5988 relation), an `href` URL, and a `type` (`Api` or `App`).","type":"array","items":{"title":"Link","description":"A HATEOAS link to a related resource. Use these to navigate between resources without constructing URLs by hand.","type":"object","required":["name","href","type"],"properties":{"name":{"description":"Standard link relation name (RFC 5988) indicating this link's role. Common values include `self`, `edit`, `related`, `previous`, `next`.","type":"string"},"href":{"title":"Uri","description":"URL of the linked resource.","examples":["https://api.process.st/api/v1.1/resource/XXX"],"type":"string"},"rel":{"description":"Optional. The kind of resource this link points to (e.g. `Workflow`, `Task`, `Comment`).","type":"string","enum":["Approval Task","Approvals","Assignees","Comment","Data Set Records","Data Sets","Form Field Values","Subject Task","Task","Tasks","Users","Webhook","Workflow","Workflow Run"]},"type":{"description":"Whether this link targets an API endpoint or a Process Street app URL. `Api` — a callable API endpoint you can fetch directly. `App` — a browser-facing URL in the Process Street UI.","type":"string","enum":["Api","App"]}}}}}},"ListDataSetsResponse":{"title":"ListDataSetsResponse","type":"object","properties":{"dataSets":{"type":"array","items":{"title":"SimplifiedDataSet","type":"object","required":["id","audit","organizationId","name"],"properties":{"id":{"title":"EntityID","description":"The resource's ID.","type":"string"},"audit":{"title":"PublicApiAudit","description":"Creation and last-modification metadata.","type":"object","required":["createdDate","createdBy","updatedDate","updatedBy"],"properties":{"createdDate":{"description":"When the resource was first created. ISO-8601 UTC.","type":"string","format":"date-time"},"createdBy":{"title":"PublicApiUser","description":"User who created the resource.","examples":[{"id":"iUu2eOU2Q-sBoX6ZjZV9pQ","email":"jane.doe@example.com","username":"Jane Doe"}],"type":"object","required":["id","email","username"],"properties":{"id":{"title":"EntityID","description":"The resource's ID.","type":"string"},"email":{"description":"The user's email address (also their login identifier).","type":"string"},"username":{"description":"The user's display name (e.g. `Jane Doe`).","type":"string"}}},"updatedDate":{"description":"When the resource was last modified. ISO-8601 UTC.","type":"string","format":"date-time"},"updatedBy":{"title":"PublicApiUser","description":"User who last modified the resource.","examples":[{"id":"iUu2eOU2Q-sBoX6ZjZV9pQ","email":"jane.doe@example.com","username":"Jane Doe"}],"type":"object","required":["id","email","username"],"properties":{"id":{"title":"EntityID","description":"The resource's ID.","type":"string"},"email":{"description":"The user's email address (also their login identifier).","type":"string"},"username":{"description":"The user's display name (e.g. `Jane Doe`).","type":"string"}}}}},"deletedDate":{"type":"string","format":"date-time"},"deletedBy":{"title":"PublicApiUser","examples":[{"id":"iUu2eOU2Q-sBoX6ZjZV9pQ","email":"jane.doe@example.com","username":"Jane Doe"}],"type":"object","required":["id","email","username"],"properties":{"id":{"title":"EntityID","description":"The resource's ID.","type":"string"},"email":{"description":"The user's email address (also their login identifier).","type":"string"},"username":{"description":"The user's display name (e.g. `Jane Doe`).","type":"string"}}},"organizationId":{"title":"EntityID","description":"The ID of the organization this resource belongs to.","type":"string"},"name":{"description":"Display name.","type":"string"},"fields":{"description":"Form field definitions or column definitions, depending on context.","type":"array","items":{"title":"DataSetField","type":"object","required":["id","audit","name","fieldType"],"properties":{"id":{"title":"EntityID","description":"The resource's ID.","type":"string"},"audit":{"title":"PublicApiAudit","description":"Creation and last-modification metadata.","type":"object","required":["createdDate","createdBy","updatedDate","updatedBy"],"properties":{"createdDate":{"description":"When the resource was first created. ISO-8601 UTC.","type":"string","format":"date-time"},"createdBy":{"title":"PublicApiUser","description":"User who created the resource.","examples":[{"id":"iUu2eOU2Q-sBoX6ZjZV9pQ","email":"jane.doe@example.com","username":"Jane Doe"}],"type":"object","required":["id","email","username"],"properties":{"id":{"title":"EntityID","description":"The resource's ID.","type":"string"},"email":{"description":"The user's email address (also their login identifier).","type":"string"},"username":{"description":"The user's display name (e.g. `Jane Doe`).","type":"string"}}},"updatedDate":{"description":"When the resource was last modified. ISO-8601 UTC.","type":"string","format":"date-time"},"updatedBy":{"title":"PublicApiUser","description":"User who last modified the resource.","examples":[{"id":"iUu2eOU2Q-sBoX6ZjZV9pQ","email":"jane.doe@example.com","username":"Jane Doe"}],"type":"object","required":["id","email","username"],"properties":{"id":{"title":"EntityID","description":"The resource's ID.","type":"string"},"email":{"description":"The user's email address (also their login identifier).","type":"string"},"username":{"description":"The user's display name (e.g. `Jane Doe`).","type":"string"}}}}},"name":{"description":"Display name.","type":"string"},"fieldType":{"title":"ColumnType","description":"Data type of the column.\n\n- `Text` — free-form string.\n- `Number` — numeric value.\n- `DateTime` — ISO-8601 date-time.\n","type":"string","enum":["Text","DateTime","Number"]}}}}}}},"links":{"description":"Navigable HATEOAS links to related resources. Each entry has a `name` (RFC-5988 relation), an `href` URL, and a `type` (`Api` or `App`).","type":"array","items":{"title":"Link","description":"A HATEOAS link to a related resource. Use these to navigate between resources without constructing URLs by hand.","type":"object","required":["name","href","type"],"properties":{"name":{"description":"Standard link relation name (RFC 5988) indicating this link's role. Common values include `self`, `edit`, `related`, `previous`, `next`.","type":"string"},"href":{"title":"Uri","description":"URL of the linked resource.","examples":["https://api.process.st/api/v1.1/resource/XXX"],"type":"string"},"rel":{"description":"Optional. The kind of resource this link points to (e.g. `Workflow`, `Task`, `Comment`).","type":"string","enum":["Approval Task","Approvals","Assignees","Comment","Data Set Records","Data Sets","Form Field Values","Subject Task","Task","Tasks","Users","Webhook","Workflow","Workflow Run"]},"type":{"description":"Whether this link targets an API endpoint or a Process Street app URL. `Api` — a callable API endpoint you can fetch directly. `App` — a browser-facing URL in the Process Street UI.","type":"string","enum":["Api","App"]}}}}}},"ListFormFieldOptionsResponse":{"title":"ListFormFieldOptionsResponse","type":"object","properties":{"options":{"type":"array","items":{"title":"FormFieldOption","type":"object","required":["value","label"],"properties":{"value":{"description":"The option's stored value.","type":"string"},"label":{"description":"Display label shown to the end user.","type":"string"},"dataSetRowId":{"title":"EntityID","type":"string"}}}},"links":{"description":"Navigable HATEOAS links to related resources. Each entry has a `name` (RFC-5988 relation), an `href` URL, and a `type` (`Api` or `App`).","type":"array","items":{"title":"Link","description":"A HATEOAS link to a related resource. Use these to navigate between resources without constructing URLs by hand.","type":"object","required":["name","href","type"],"properties":{"name":{"description":"Standard link relation name (RFC 5988) indicating this link's role. Common values include `self`, `edit`, `related`, `previous`, `next`.","type":"string"},"href":{"title":"Uri","description":"URL of the linked resource.","examples":["https://api.process.st/api/v1.1/resource/XXX"],"type":"string"},"rel":{"description":"Optional. The kind of resource this link points to (e.g. `Workflow`, `Task`, `Comment`).","type":"string","enum":["Approval Task","Approvals","Assignees","Comment","Data Set Records","Data Sets","Form Field Values","Subject Task","Task","Tasks","Users","Webhook","Workflow","Workflow Run"]},"type":{"description":"Whether this link targets an API endpoint or a Process Street app URL. `Api` — a callable API endpoint you can fetch directly. `App` — a browser-facing URL in the Process Street UI.","type":"string","enum":["Api","App"]}}}}}},"ListFormFieldValuesResponse":{"title":"ListFormFieldValuesResponse","type":"object","properties":{"fields":{"description":"Form field definitions or column definitions, depending on context.","type":"array","items":{"title":"SimplifiedFormFieldValue","type":"object","required":["id","workflowRunId","taskId","key","data","fieldType"],"properties":{"id":{"title":"EntityID","description":"The resource's ID.","type":"string"},"updatedDate":{"description":"When the resource was last modified. ISO-8601 UTC.","type":"string","format":"date-time"},"updatedBy":{"title":"PublicApiUser","description":"User who last modified the resource.","examples":[{"id":"iUu2eOU2Q-sBoX6ZjZV9pQ","email":"jane.doe@example.com","username":"Jane Doe"}],"type":"object","required":["id","email","username"],"properties":{"id":{"title":"EntityID","description":"The resource's ID.","type":"string"},"email":{"description":"The user's email address (also their login identifier).","type":"string"},"username":{"description":"The user's display name (e.g. `Jane Doe`).","type":"string"}}},"workflowRunId":{"title":"EntityID","description":"The ID of the Workflow Run.","type":"string"},"taskId":{"title":"EntityID","description":"The ID of the Task.","type":"string"},"key":{"description":"Unique key based on the label. This is used when referencing the form field as a [variable](https://www.process.st/help/docs/variables/)","type":"string"},"label":{"description":"User defined label","type":"string"},"data":{"description":"The form field's value, encoded as JSON. Shape depends on `fieldType` — e.g. a string for `Text`, a number for `Number`, an array of selected option keys for `MultiChoice`."},"fieldType":{"description":"Form-field subtype discriminator (only relevant when widget `type` is `FormField`).\n\n- `Text` — short text input (≤255 characters).\n- `Textarea` — long-form text.\n- `Email` — email address.\n- `Url` — website / URL.\n- `Number` — numeric input with optional unit and constraints.\n- `Date` — date or date+time picker.\n- `Select` — dropdown; user picks one option.\n- `MultiChoice` — checkboxes; user picks one or more options.\n- `MultiSelect` — Subtasks: a checklist of sub-items inside the task.\n- `Members` — assignee picker (selects organization users).\n- `File` — single file upload.\n- `MultiFile` — multi-file upload (in-app \"File Upload\").\n- `Document` — document approval field; links the task to a document review.\n- `Table` — rows × columns of cells; users fill cell values.\n- `SendRichEmail` — pre-written email embedded in the task; sent manually by the user or\n  automatically when the task is completed.\n- `Hidden` — only visible when editing the workflow; populated by integrations or default values.\n- `Snippet` — only visible when editing; passes static text or merge tags into automations.\n","type":"string","enum":["Date","Document","Email","File","Hidden","Members","MultiChoice","MultiFile","MultiSelect","Number","Select","SendRichEmail","Snippet","Table","Text","Textarea","Url"]},"dataSetLinked":{"description":"When `true`, this field is bound to a data set row; its value is synchronised from the linked record.","type":"boolean"},"links":{"description":"Navigable HATEOAS links to related resources. Each entry has a `name` (RFC-5988 relation), an `href` URL, and a `type` (`Api` or `App`).","type":"array","items":{"title":"Link","description":"A HATEOAS link to a related resource. Use these to navigate between resources without constructing URLs by hand.","type":"object","required":["name","href","type"],"properties":{"name":{"description":"Standard link relation name (RFC 5988) indicating this link's role. Common values include `self`, `edit`, `related`, `previous`, `next`.","type":"string"},"href":{"title":"Uri","description":"URL of the linked resource.","examples":["https://api.process.st/api/v1.1/resource/XXX"],"type":"string"},"rel":{"description":"Optional. The kind of resource this link points to (e.g. `Workflow`, `Task`, `Comment`).","type":"string","enum":["Approval Task","Approvals","Assignees","Comment","Data Set Records","Data Sets","Form Field Values","Subject Task","Task","Tasks","Users","Webhook","Workflow","Workflow Run"]},"type":{"description":"Whether this link targets an API endpoint or a Process Street app URL. `Api` — a callable API endpoint you can fetch directly. `App` — a browser-facing URL in the Process Street UI.","type":"string","enum":["Api","App"]}}}}}}},"links":{"description":"Navigable HATEOAS links to related resources. Each entry has a `name` (RFC-5988 relation), an `href` URL, and a `type` (`Api` or `App`).","type":"array","items":{"title":"Link","description":"A HATEOAS link to a related resource. Use these to navigate between resources without constructing URLs by hand.","type":"object","required":["name","href","type"],"properties":{"name":{"description":"Standard link relation name (RFC 5988) indicating this link's role. Common values include `self`, `edit`, `related`, `previous`, `next`.","type":"string"},"href":{"title":"Uri","description":"URL of the linked resource.","examples":["https://api.process.st/api/v1.1/resource/XXX"],"type":"string"},"rel":{"description":"Optional. The kind of resource this link points to (e.g. `Workflow`, `Task`, `Comment`).","type":"string","enum":["Approval Task","Approvals","Assignees","Comment","Data Set Records","Data Sets","Form Field Values","Subject Task","Task","Tasks","Users","Webhook","Workflow","Workflow Run"]},"type":{"description":"Whether this link targets an API endpoint or a Process Street app URL. `Api` — a callable API endpoint you can fetch directly. `App` — a browser-facing URL in the Process Street UI.","type":"string","enum":["Api","App"]}}}}}},"ListFormFieldsResponse":{"title":"ListFormFieldsResponse","type":"object","properties":{"fields":{"description":"Form field definitions or column definitions, depending on context.","type":"array","items":{"title":"SimplifiedFormField","type":"object","required":["id","audit","taskId","fieldType","key"],"properties":{"id":{"title":"EntityID","description":"The resource's ID.","type":"string"},"audit":{"title":"PublicApiAudit","description":"Creation and last-modification metadata.","type":"object","required":["createdDate","createdBy","updatedDate","updatedBy"],"properties":{"createdDate":{"description":"When the resource was first created. ISO-8601 UTC.","type":"string","format":"date-time"},"createdBy":{"title":"PublicApiUser","description":"User who created the resource.","examples":[{"id":"iUu2eOU2Q-sBoX6ZjZV9pQ","email":"jane.doe@example.com","username":"Jane Doe"}],"type":"object","required":["id","email","username"],"properties":{"id":{"title":"EntityID","description":"The resource's ID.","type":"string"},"email":{"description":"The user's email address (also their login identifier).","type":"string"},"username":{"description":"The user's display name (e.g. `Jane Doe`).","type":"string"}}},"updatedDate":{"description":"When the resource was last modified. ISO-8601 UTC.","type":"string","format":"date-time"},"updatedBy":{"title":"PublicApiUser","description":"User who last modified the resource.","examples":[{"id":"iUu2eOU2Q-sBoX6ZjZV9pQ","email":"jane.doe@example.com","username":"Jane Doe"}],"type":"object","required":["id","email","username"],"properties":{"id":{"title":"EntityID","description":"The resource's ID.","type":"string"},"email":{"description":"The user's email address (also their login identifier).","type":"string"},"username":{"description":"The user's display name (e.g. `Jane Doe`).","type":"string"}}}}},"taskId":{"title":"EntityID","description":"The ID of the Task.","type":"string"},"fieldType":{"description":"Form-field subtype discriminator (only relevant when widget `type` is `FormField`).\n\n- `Text` — short text input (≤255 characters).\n- `Textarea` — long-form text.\n- `Email` — email address.\n- `Url` — website / URL.\n- `Number` — numeric input with optional unit and constraints.\n- `Date` — date or date+time picker.\n- `Select` — dropdown; user picks one option.\n- `MultiChoice` — checkboxes; user picks one or more options.\n- `MultiSelect` — Subtasks: a checklist of sub-items inside the task.\n- `Members` — assignee picker (selects organization users).\n- `File` — single file upload.\n- `MultiFile` — multi-file upload (in-app \"File Upload\").\n- `Document` — document approval field; links the task to a document review.\n- `Table` — rows × columns of cells; users fill cell values.\n- `SendRichEmail` — pre-written email embedded in the task; sent manually by the user or\n  automatically when the task is completed.\n- `Hidden` — only visible when editing the workflow; populated by integrations or default values.\n- `Snippet` — only visible when editing; passes static text or merge tags into automations.\n","type":"string","enum":["Date","Document","Email","File","Hidden","Members","MultiChoice","MultiFile","MultiSelect","Number","Select","SendRichEmail","Snippet","Table","Text","Textarea","Url"]},"key":{"description":"Unique key based on the label. This is used when referencing the form field as a [variable](https://www.process.st/help/docs/variables/)","type":"string"},"label":{"description":"User defined label","type":"string"},"dataSetLinked":{"type":"boolean"}}}},"links":{"description":"Navigable HATEOAS links to related resources. Each entry has a `name` (RFC-5988 relation), an `href` URL, and a `type` (`Api` or `App`).","type":"array","items":{"title":"Link","description":"A HATEOAS link to a related resource. Use these to navigate between resources without constructing URLs by hand.","type":"object","required":["name","href","type"],"properties":{"name":{"description":"Standard link relation name (RFC 5988) indicating this link's role. Common values include `self`, `edit`, `related`, `previous`, `next`.","type":"string"},"href":{"title":"Uri","description":"URL of the linked resource.","examples":["https://api.process.st/api/v1.1/resource/XXX"],"type":"string"},"rel":{"description":"Optional. The kind of resource this link points to (e.g. `Workflow`, `Task`, `Comment`).","type":"string","enum":["Approval Task","Approvals","Assignees","Comment","Data Set Records","Data Sets","Form Field Values","Subject Task","Task","Tasks","Users","Webhook","Workflow","Workflow Run"]},"type":{"description":"Whether this link targets an API endpoint or a Process Street app URL. `Api` — a callable API endpoint you can fetch directly. `App` — a browser-facing URL in the Process Street UI.","type":"string","enum":["Api","App"]}}}}}},"ListTaskAssigneesResponse":{"title":"ListTaskAssigneesResponse","type":"object","properties":{"assignees":{"type":"array","items":{"title":"PublicApiUser","examples":[{"id":"iUu2eOU2Q-sBoX6ZjZV9pQ","email":"jane.doe@example.com","username":"Jane Doe"}],"type":"object","required":["id","email","username"],"properties":{"id":{"title":"EntityID","description":"The resource's ID.","type":"string"},"email":{"description":"The user's email address (also their login identifier).","type":"string"},"username":{"description":"The user's display name (e.g. `Jane Doe`).","type":"string"}}}}}},"ListTaskTemplatesResponse":{"title":"ListTaskTemplatesResponse","type":"object","properties":{"tasks":{"type":"array","items":{"title":"PublicApiTaskTemplate","type":"object","required":["id","audit","workflowId","orderTree","stopTask","hiddenByDefault","taskType"],"properties":{"id":{"title":"EntityID","description":"The resource's ID.","type":"string"},"audit":{"title":"PublicApiAudit","description":"Creation and last-modification metadata.","type":"object","required":["createdDate","createdBy","updatedDate","updatedBy"],"properties":{"createdDate":{"description":"When the resource was first created. ISO-8601 UTC.","type":"string","format":"date-time"},"createdBy":{"title":"PublicApiUser","description":"User who created the resource.","examples":[{"id":"iUu2eOU2Q-sBoX6ZjZV9pQ","email":"jane.doe@example.com","username":"Jane Doe"}],"type":"object","required":["id","email","username"],"properties":{"id":{"title":"EntityID","description":"The resource's ID.","type":"string"},"email":{"description":"The user's email address (also their login identifier).","type":"string"},"username":{"description":"The user's display name (e.g. `Jane Doe`).","type":"string"}}},"updatedDate":{"description":"When the resource was last modified. ISO-8601 UTC.","type":"string","format":"date-time"},"updatedBy":{"title":"PublicApiUser","description":"User who last modified the resource.","examples":[{"id":"iUu2eOU2Q-sBoX6ZjZV9pQ","email":"jane.doe@example.com","username":"Jane Doe"}],"type":"object","required":["id","email","username"],"properties":{"id":{"title":"EntityID","description":"The resource's ID.","type":"string"},"email":{"description":"The user's email address (also their login identifier).","type":"string"},"username":{"description":"The user's display name (e.g. `Jane Doe`).","type":"string"}}}}},"workflowId":{"title":"EntityID","description":"The ID of the Workflow.","type":"string"},"name":{"description":"Display name of the task template.","type":"string"},"orderTree":{"description":"Opaque ordering token; task templates sort lexicographically by this value within a revision.","type":"string"},"stopTask":{"description":"When `true`, this task acts as a stop — subsequent tasks within the revision are blocked until it's completed at runtime.","type":"boolean"},"hiddenByDefault":{"description":"When `true`, the widget is hidden by default; conditional logic rules can reveal it at runtime. Defaults to `false`.","type":"boolean"},"taskType":{"title":"TaskType","description":"What the task does.\n\n- `Standard` — a regular task that a user manually checks off when done.\n- `Approval` — an approval task; a reviewer approves or rejects it, gating subsequent tasks.\n- `AI` — an automated task that runs an AI prompt to populate form field values.\n- `Code` — an automated task that runs a custom code snippet.\n","type":"string","enum":["Standard","Approval","AI","Code"]},"links":{"description":"Navigable HATEOAS links to related resources. Each entry has a `name` (RFC-5988 link relation like `self`, `edit`, `related`), an `href` URL, and a `type` (`Api` for callable endpoints, `App` for browser-facing URLs). Prefer following these `href` values over constructing URLs by hand.","type":"array","items":{"title":"Link","description":"A HATEOAS link to a related resource. Use these to navigate between resources without constructing URLs by hand.","type":"object","required":["name","href","type"],"properties":{"name":{"description":"Standard link relation name (RFC 5988) indicating this link's role. Common values include `self`, `edit`, `related`, `previous`, `next`.","type":"string"},"href":{"title":"Uri","description":"URL of the linked resource.","examples":["https://api.process.st/api/v1.1/resource/XXX"],"type":"string"},"rel":{"description":"Optional. The kind of resource this link points to (e.g. `Workflow`, `Task`, `Comment`).","type":"string","enum":["Approval Task","Approvals","Assignees","Comment","Data Set Records","Data Sets","Form Field Values","Subject Task","Task","Tasks","Users","Webhook","Workflow","Workflow Run"]},"type":{"description":"Whether this link targets an API endpoint or a Process Street app URL. `Api` — a callable API endpoint you can fetch directly. `App` — a browser-facing URL in the Process Street UI.","type":"string","enum":["Api","App"]}}}}}}},"links":{"description":"Navigable HATEOAS links to related resources. Each entry has a `name` (RFC-5988 relation), an `href` URL, and a `type` (`Api` or `App`).","type":"array","items":{"title":"Link","description":"A HATEOAS link to a related resource. Use these to navigate between resources without constructing URLs by hand.","type":"object","required":["name","href","type"],"properties":{"name":{"description":"Standard link relation name (RFC 5988) indicating this link's role. Common values include `self`, `edit`, `related`, `previous`, `next`.","type":"string"},"href":{"title":"Uri","description":"URL of the linked resource.","examples":["https://api.process.st/api/v1.1/resource/XXX"],"type":"string"},"rel":{"description":"Optional. The kind of resource this link points to (e.g. `Workflow`, `Task`, `Comment`).","type":"string","enum":["Approval Task","Approvals","Assignees","Comment","Data Set Records","Data Sets","Form Field Values","Subject Task","Task","Tasks","Users","Webhook","Workflow","Workflow Run"]},"type":{"description":"Whether this link targets an API endpoint or a Process Street app URL. `Api` — a callable API endpoint you can fetch directly. `App` — a browser-facing URL in the Process Street UI.","type":"string","enum":["Api","App"]}}}}}},"ListTasksResponse":{"title":"ListTasksResponse","type":"object","properties":{"tasks":{"type":"array","items":{"title":"PublicApiTask","type":"object","required":["id","updatedDate","updatedBy","workflowRunId","status","name","hidden","stopped","taskType"],"properties":{"id":{"description":"The ID of the Task","examples":["qGWBYJMzJGEBoX6ZmxpwSg"],"type":"string"},"updatedDate":{"description":"When the resource was last modified. ISO-8601 UTC.","type":"string","format":"date-time"},"updatedBy":{"title":"PublicApiUser","description":"User who last modified the resource.","examples":[{"id":"iUu2eOU2Q-sBoX6ZjZV9pQ","email":"jane.doe@example.com","username":"Jane Doe"}],"type":"object","required":["id","email","username"],"properties":{"id":{"title":"EntityID","description":"The resource's ID.","type":"string"},"email":{"description":"The user's email address (also their login identifier).","type":"string"},"username":{"description":"The user's display name (e.g. `Jane Doe`).","type":"string"}}},"completedDate":{"description":"When the task was marked complete, if it is. ISO-8601 UTC.","type":"string","format":"date-time"},"completedBy":{"title":"PublicApiUser","examples":[{"id":"iUu2eOU2Q-sBoX6ZjZV9pQ","email":"jane.doe@example.com","username":"Jane Doe"}],"type":"object","required":["id","email","username"],"properties":{"id":{"title":"EntityID","description":"The resource's ID.","type":"string"},"email":{"description":"The user's email address (also their login identifier).","type":"string"},"username":{"description":"The user's display name (e.g. `Jane Doe`).","type":"string"}}},"workflowRunId":{"description":"The ID of the Workflow Run","examples":["qGWBYJMzJGEBoX6ZmxpwSg"],"type":"string"},"status":{"title":"Status","type":"string","enum":["NotCompleted","Completed"]},"dueDate":{"description":"Optional task-level due date. ISO-8601 UTC.","type":"string","format":"date-time"},"name":{"description":"Display name of the task.","type":"string"},"hidden":{"description":"Whether the task is hidden by Conditional Logic.","type":"boolean"},"stopped":{"description":"Whether the task is blocked (stopped) by an incomplete prior stop task.","type":"boolean"},"taskType":{"title":"TaskType","description":"What the task does.\n\n- `Standard` — a regular task that a user manually checks off when done.\n- `Approval` — an approval task; a reviewer approves or rejects it, gating subsequent tasks.\n- `AI` — an automated task that runs an AI prompt to populate form field values.\n- `Code` — an automated task that runs a custom code snippet.\n","type":"string","enum":["Standard","Approval","AI","Code"]},"links":{"description":"Navigable HATEOAS links to related resources. Each entry has a `name` (RFC-5988 link relation like `self`, `edit`, `related`), an `href` URL, and a `type` (`Api` for callable endpoints, `App` for browser-facing URLs). Prefer following these `href` values over constructing URLs by hand.","type":"array","items":{"title":"Link","description":"A HATEOAS link to a related resource. Use these to navigate between resources without constructing URLs by hand.","type":"object","required":["name","href","type"],"properties":{"name":{"description":"Standard link relation name (RFC 5988) indicating this link's role. Common values include `self`, `edit`, `related`, `previous`, `next`.","type":"string"},"href":{"title":"Uri","description":"URL of the linked resource.","examples":["https://api.process.st/api/v1.1/resource/XXX"],"type":"string"},"rel":{"description":"Optional. The kind of resource this link points to (e.g. `Workflow`, `Task`, `Comment`).","type":"string","enum":["Approval Task","Approvals","Assignees","Comment","Data Set Records","Data Sets","Form Field Values","Subject Task","Task","Tasks","Users","Webhook","Workflow","Workflow Run"]},"type":{"description":"Whether this link targets an API endpoint or a Process Street app URL. `Api` — a callable API endpoint you can fetch directly. `App` — a browser-facing URL in the Process Street UI.","type":"string","enum":["Api","App"]}}}}}}},"links":{"description":"Navigable HATEOAS links to related resources. Each entry has a `name` (RFC-5988 relation), an `href` URL, and a `type` (`Api` or `App`).","type":"array","items":{"title":"Link","description":"A HATEOAS link to a related resource. Use these to navigate between resources without constructing URLs by hand.","type":"object","required":["name","href","type"],"properties":{"name":{"description":"Standard link relation name (RFC 5988) indicating this link's role. Common values include `self`, `edit`, `related`, `previous`, `next`.","type":"string"},"href":{"title":"Uri","description":"URL of the linked resource.","examples":["https://api.process.st/api/v1.1/resource/XXX"],"type":"string"},"rel":{"description":"Optional. The kind of resource this link points to (e.g. `Workflow`, `Task`, `Comment`).","type":"string","enum":["Approval Task","Approvals","Assignees","Comment","Data Set Records","Data Sets","Form Field Values","Subject Task","Task","Tasks","Users","Webhook","Workflow","Workflow Run"]},"type":{"description":"Whether this link targets an API endpoint or a Process Street app URL. `Api` — a callable API endpoint you can fetch directly. `App` — a browser-facing URL in the Process Street UI.","type":"string","enum":["Api","App"]}}}}}},"ListUsersResponse":{"title":"ListUsersResponse","type":"object","properties":{"users":{"type":"array","items":{"title":"PublicApiUser","examples":[{"id":"iUu2eOU2Q-sBoX6ZjZV9pQ","email":"jane.doe@example.com","username":"Jane Doe"}],"type":"object","required":["id","email","username"],"properties":{"id":{"title":"EntityID","description":"The resource's ID.","type":"string"},"email":{"description":"The user's email address (also their login identifier).","type":"string"},"username":{"description":"The user's display name (e.g. `Jane Doe`).","type":"string"}}}},"links":{"description":"Navigable HATEOAS links to related resources. Each entry has a `name` (RFC-5988 relation), an `href` URL, and a `type` (`Api` or `App`).","type":"array","items":{"title":"Link","description":"A HATEOAS link to a related resource. Use these to navigate between resources without constructing URLs by hand.","type":"object","required":["name","href","type"],"properties":{"name":{"description":"Standard link relation name (RFC 5988) indicating this link's role. Common values include `self`, `edit`, `related`, `previous`, `next`.","type":"string"},"href":{"title":"Uri","description":"URL of the linked resource.","examples":["https://api.process.st/api/v1.1/resource/XXX"],"type":"string"},"rel":{"description":"Optional. The kind of resource this link points to (e.g. `Workflow`, `Task`, `Comment`).","type":"string","enum":["Approval Task","Approvals","Assignees","Comment","Data Set Records","Data Sets","Form Field Values","Subject Task","Task","Tasks","Users","Webhook","Workflow","Workflow Run"]},"type":{"description":"Whether this link targets an API endpoint or a Process Street app URL. `Api` — a callable API endpoint you can fetch directly. `App` — a browser-facing URL in the Process Street UI.","type":"string","enum":["Api","App"]}}}}}},"ListWorkflowRunsResponse":{"title":"ListWorkflowRunsResponse","type":"object","properties":{"workflowRuns":{"type":"array","items":{"title":"PublicApiWorkflowRun","type":"object","required":["id","audit","status","workflowId","shared","migrationStatus"],"properties":{"id":{"description":"The ID of the Workflow Run","examples":["rQ9QGdNd-ysBoX6Zko9-Lw"],"type":"string"},"audit":{"title":"AuditInfo","description":"Creation and last-modification metadata.","type":"object","required":["createdDate","createdById","updatedDate","updatedById"],"properties":{"createdDate":{"description":"When the resource was first created. ISO-8601 UTC.","type":"string","format":"date-time"},"createdById":{"title":"EntityID","description":"ID of the user who created the resource.","type":"string"},"updatedDate":{"description":"When the resource was last modified. ISO-8601 UTC.","type":"string","format":"date-time"},"updatedById":{"title":"EntityID","description":"ID of the user who last modified the resource.","type":"string"}}},"name":{"description":"Display name of the workflow run (often interpolated from a name template).","type":"string"},"status":{"description":"Lifecycle status of a workflow run.\n\n- `Active` — the run is in progress.\n- `Completed` — all tasks were completed and the run was finalised.\n- `Archived` — the run was archived from the active list (no further task progress is recorded but the run stays queryable).\n- `Deleted` — the run was soft-deleted.\n\nList endpoints return only `Active` runs unless otherwise indicated.\n","type":"string","enum":["Active","Completed","Archived","Deleted"]},"workflowId":{"description":"The ID of the Workflow","examples":["rQ9QGdNd-ysBoX6Zko9-Lw"],"type":"string"},"shared":{"description":"When `true`, this run is visible via its share link.","type":"boolean"},"dueDate":{"description":"Optional workflow-level due date. ISO-8601 UTC.","type":"string","format":"date-time"},"migrationStatus":{"description":"Whether this run is currently being migrated to a newer workflow revision.\n\n- `Inactive` — not in a migration; this is the normal state.\n- `Scheduled` — a migration to a newer revision has been requested and is queued.\n- `Migrating` — migration is in progress; some fields may change shortly.\n","type":"string","enum":["Inactive","Scheduled","Migrating"]},"links":{"description":"Navigable HATEOAS links to related resources. Each entry has a `name` (RFC-5988 link relation like `self`, `edit`, `related`), an `href` URL, and a `type` (`Api` for callable endpoints, `App` for browser-facing URLs). Prefer following these `href` values over constructing URLs by hand.","type":"array","items":{"title":"Link","description":"A HATEOAS link to a related resource. Use these to navigate between resources without constructing URLs by hand.","type":"object","required":["name","href","type"],"properties":{"name":{"description":"Standard link relation name (RFC 5988) indicating this link's role. Common values include `self`, `edit`, `related`, `previous`, `next`.","type":"string"},"href":{"title":"Uri","description":"URL of the linked resource.","examples":["https://api.process.st/api/v1.1/resource/XXX"],"type":"string"},"rel":{"description":"Optional. The kind of resource this link points to (e.g. `Workflow`, `Task`, `Comment`).","type":"string","enum":["Approval Task","Approvals","Assignees","Comment","Data Set Records","Data Sets","Form Field Values","Subject Task","Task","Tasks","Users","Webhook","Workflow","Workflow Run"]},"type":{"description":"Whether this link targets an API endpoint or a Process Street app URL. `Api` — a callable API endpoint you can fetch directly. `App` — a browser-facing URL in the Process Street UI.","type":"string","enum":["Api","App"]}}}}}}}}},"ListWorkflowsResponse":{"title":"ListWorkflowsResponse","type":"object","properties":{"workflows":{"type":"array","items":{"title":"PublicApiWorkflow","type":"object","required":["id","audit","name"],"properties":{"id":{"title":"EntityID","description":"The resource's ID.","type":"string"},"audit":{"title":"PublicApiAudit","description":"Creation and last-modification metadata.","type":"object","required":["createdDate","createdBy","updatedDate","updatedBy"],"properties":{"createdDate":{"description":"When the resource was first created. ISO-8601 UTC.","type":"string","format":"date-time"},"createdBy":{"title":"PublicApiUser","description":"User who created the resource.","examples":[{"id":"iUu2eOU2Q-sBoX6ZjZV9pQ","email":"jane.doe@example.com","username":"Jane Doe"}],"type":"object","required":["id","email","username"],"properties":{"id":{"title":"EntityID","description":"The resource's ID.","type":"string"},"email":{"description":"The user's email address (also their login identifier).","type":"string"},"username":{"description":"The user's display name (e.g. `Jane Doe`).","type":"string"}}},"updatedDate":{"description":"When the resource was last modified. ISO-8601 UTC.","type":"string","format":"date-time"},"updatedBy":{"title":"PublicApiUser","description":"User who last modified the resource.","examples":[{"id":"iUu2eOU2Q-sBoX6ZjZV9pQ","email":"jane.doe@example.com","username":"Jane Doe"}],"type":"object","required":["id","email","username"],"properties":{"id":{"title":"EntityID","description":"The resource's ID.","type":"string"},"email":{"description":"The user's email address (also their login identifier).","type":"string"},"username":{"description":"The user's display name (e.g. `Jane Doe`).","type":"string"}}}}},"name":{"description":"The workflow's name.","type":"string"},"description":{"description":"Optional long-form description of the workflow.","type":"string"},"links":{"description":"Navigable HATEOAS links to related resources. Each entry has a `name` (RFC-5988 link relation like `self`, `edit`, `related`), an `href` URL, and a `type` (`Api` for callable endpoints, `App` for browser-facing URLs). Prefer following these `href` values over constructing URLs by hand.","type":"array","items":{"title":"Link","description":"A HATEOAS link to a related resource. Use these to navigate between resources without constructing URLs by hand.","type":"object","required":["name","href","type"],"properties":{"name":{"description":"Standard link relation name (RFC 5988) indicating this link's role. Common values include `self`, `edit`, `related`, `previous`, `next`.","type":"string"},"href":{"title":"Uri","description":"URL of the linked resource.","examples":["https://api.process.st/api/v1.1/resource/XXX"],"type":"string"},"rel":{"description":"Optional. The kind of resource this link points to (e.g. `Workflow`, `Task`, `Comment`).","type":"string","enum":["Approval Task","Approvals","Assignees","Comment","Data Set Records","Data Sets","Form Field Values","Subject Task","Task","Tasks","Users","Webhook","Workflow","Workflow Run"]},"type":{"description":"Whether this link targets an API endpoint or a Process Street app URL. `Api` — a callable API endpoint you can fetch directly. `App` — a browser-facing URL in the Process Street UI.","type":"string","enum":["Api","App"]}}}}}}},"links":{"description":"Navigable HATEOAS links to related resources. Each entry has a `name` (RFC-5988 relation), an `href` URL, and a `type` (`Api` or `App`).","type":"array","items":{"title":"Link","description":"A HATEOAS link to a related resource. Use these to navigate between resources without constructing URLs by hand.","type":"object","required":["name","href","type"],"properties":{"name":{"description":"Standard link relation name (RFC 5988) indicating this link's role. Common values include `self`, `edit`, `related`, `previous`, `next`.","type":"string"},"href":{"title":"Uri","description":"URL of the linked resource.","examples":["https://api.process.st/api/v1.1/resource/XXX"],"type":"string"},"rel":{"description":"Optional. The kind of resource this link points to (e.g. `Workflow`, `Task`, `Comment`).","type":"string","enum":["Approval Task","Approvals","Assignees","Comment","Data Set Records","Data Sets","Form Field Values","Subject Task","Task","Tasks","Users","Webhook","Workflow","Workflow Run"]},"type":{"description":"Whether this link targets an API endpoint or a Process Street app URL. `Api` — a callable API endpoint you can fetch directly. `App` — a browser-facing URL in the Process Street UI.","type":"string","enum":["Api","App"]}}}}}},"Map_Muid":{"type":"object","additionalProperties":{"title":"EntityID","type":"string"}},"Map_Option_String":{"description":"Optional structured context. Shape depends on the error: for `Validation` errors the keys are field\npaths; for `PaymentRequired` the keys describe the limit that was hit.","type":"object","additionalProperties":{"type":"string"}},"Map_String":{"type":"object","additionalProperties":{"type":"string"}},"Monthly":{"title":"Monthly","type":"object","required":["interval","by","frequency"],"properties":{"interval":{"description":"Recurrence interval. For a Weekly schedule with `interval=2`, fires every other week.","type":"integer","format":"int32"},"by":{"description":"How a `Monthly` rule recurs:\n`DayOfMonth` repeats on the same calendar date each month (e.g. the 15th);\n`DayOfWeek` repeats on the same weekday-of-month pattern (e.g. the second Tuesday).","type":"string","enum":["DayOfMonth","DayOfWeek"]},"frequency":{"description":"How often the workflow runs. The other fields on the rule depend on this value:\n`Daily` uses only `interval`, `Weekly` adds `weekDay`, `Monthly` adds `by`, `Yearly` uses only `interval`.","type":"string","enum":["Daily","Weekly","Monthly","Yearly"],"const":"Monthly"}}},"MyWorkSortBy":{"title":"MyWorkSortBy","description":"Sort key.\n\n- `DueDate` — sort by assignment due date.\n- `Name` — sort by task name (falls back to workflow run name if the task has no name).\n","type":"string","enum":["DueDate","Name"]},"MyWorkSortOrder":{"title":"MyWorkSortOrder","description":"Sort direction.\n\n- `Asc` — ascending.\n- `Desc` — descending.\n","type":"string","enum":["Asc","Desc"]},"OrCondition":{"title":"OrCondition","type":"object","properties":{"or":{"description":"List of AND-groups; the OR-condition matches if any group matches.","type":"array","items":{"title":"AndGroup","type":"object","properties":{"and":{"description":"List of conditions that must all match (AND combined within a group).","type":"array","items":{"title":"LeafCondition","type":"object","required":["widgetId","operator"],"properties":{"widgetId":{"title":"EntityID","description":"The ID of the widget.","type":"string"},"operator":{"description":"Comparison operator (e.g. `Is`, `IsNot`, `Contains`, `IsEmpty`).","type":"string"},"value":{"description":"The option's stored value.","type":"string"}}}}}}}}},"PagePermissionEntry":{"title":"PagePermissionEntry","type":"object","required":["email","accessLevel"],"properties":{"email":{"description":"Email address.","type":"string"},"accessLevel":{"description":"Access level granted to a user on this page.\n\n- `Edit` — view, edit, and delete the page.\n- `View` — view the page (read-only).\n","type":"string","enum":["Edit","View"]}}},"PublicApiAiTaskConfig":{"title":"PublicApiAiTaskConfig","type":"object","required":["prompt","type"],"properties":{"prompt":{"description":"AI prompt template. May contain merge tags referencing form field values.","type":"string"},"systemPrompt":{"description":"Optional system message prepended to the AI prompt to set its behaviour.","type":"string"},"outputMapping":{"description":"Mapping from prompt/code output keys to form field IDs that receive the values.","type":"object","additionalProperties":{"title":"EntityID","type":"string"}},"type":{"description":"Discriminator value for this variant. See the parent oneOf for the full set of values.","type":"string","const":"Ai"}}},"PublicApiApprovalTaskConfig":{"title":"PublicApiApprovalTaskConfig","type":"object","required":["type"],"properties":{"subjectTaskIds":{"description":"IDs of the tasks reviewed by an approval task.","type":"array","items":{"title":"EntityID","type":"string"}},"type":{"description":"Discriminator value for this variant. See the parent oneOf for the full set of values.","type":"string","const":"Approval"}}},"PublicApiAssignmentRule":{"title":"PublicApiAssignmentRule","description":"An assignment rule. The `type` discriminator field selects the variant: `Static` — assigns a specific named user (requires `email`). `Dynamic` — derives the assignee at runtime from a source like the workflow run initiator or a form field (requires `sourceType`).","oneOf":[{"title":"DynamicAssignmentRule","type":"object","required":["sourceType","type"],"properties":{"sourceType":{"description":"How assignees are derived. `ChecklistInitiator` assigns the user who started the workflow run; `FormField` pulls assignees from a Members or Email form field (requires `sourceWidgetId`); `DocumentOwner` and `DocumentAuthor` pull from the source document.","type":"string","enum":["ChecklistInitiator","FormField","DocumentOwner","DocumentAuthor"]},"sourceWidgetId":{"title":"EntityID","description":"For `sourceType=FormField`: the ID of the Members form field whose value drives the rule's assignees at runtime. Absent for `sourceType=ChecklistInitiator`.","type":"string"},"type":{"description":"Discriminator value for this variant. See the parent oneOf for the full set of values.","type":"string","const":"Dynamic"}}},{"title":"StaticAssignmentRule","type":"object","required":["email","type"],"properties":{"email":{"description":"Email address.","type":"string"},"type":{"description":"Discriminator value for this variant. See the parent oneOf for the full set of values.","type":"string","const":"Static"}}}],"required":["type"],"discriminator":{"propertyName":"type","mapping":{"Dynamic":"#/components/schemas/DynamicAssignmentRule","Static":"#/components/schemas/StaticAssignmentRule"}}},"PublicApiAssignmentRuleListResponse":{"title":"PublicApiAssignmentRuleListResponse","type":"object","properties":{"data":{"description":"The list of resources returned by this request.","type":"array","items":{"title":"PublicApiAssignmentRule","description":"An assignment rule. The `type` discriminator field selects the variant: `Static` — assigns a specific named user (requires `email`). `Dynamic` — derives the assignee at runtime from a source like the workflow run initiator or a form field (requires `sourceType`).","oneOf":[{"title":"DynamicAssignmentRule","type":"object","required":["sourceType","type"],"properties":{"sourceType":{"description":"How assignees are derived. `ChecklistInitiator` assigns the user who started the workflow run; `FormField` pulls assignees from a Members or Email form field (requires `sourceWidgetId`); `DocumentOwner` and `DocumentAuthor` pull from the source document.","type":"string","enum":["ChecklistInitiator","FormField","DocumentOwner","DocumentAuthor"]},"sourceWidgetId":{"title":"EntityID","description":"For `sourceType=FormField`: the ID of the Members form field whose value drives the rule's assignees at runtime. Absent for `sourceType=ChecklistInitiator`.","type":"string"},"type":{"description":"Discriminator value for this variant. See the parent oneOf for the full set of values.","type":"string","const":"Dynamic"}}},{"title":"StaticAssignmentRule","type":"object","required":["email","type"],"properties":{"email":{"description":"Email address.","type":"string"},"type":{"description":"Discriminator value for this variant. See the parent oneOf for the full set of values.","type":"string","const":"Static"}}}],"required":["type"],"discriminator":{"propertyName":"type","mapping":{"Dynamic":"#/components/schemas/DynamicAssignmentRule","Static":"#/components/schemas/StaticAssignmentRule"}}}},"links":{"description":"Pagination links. When the result has more pages, look for an entry with `name: \"next\"` — its `href` is the URL to fetch the next page. Absence of `next` means there are no more pages. For single-resource responses this array is typically empty.","type":"array","items":{"title":"Link","description":"A HATEOAS link to a related resource. Use these to navigate between resources without constructing URLs by hand.","type":"object","required":["name","href","type"],"properties":{"name":{"description":"Standard link relation name (RFC 5988) indicating this link's role. Common values include `self`, `edit`, `related`, `previous`, `next`.","type":"string"},"href":{"title":"Uri","description":"URL of the linked resource.","examples":["https://api.process.st/api/v1.1/resource/XXX"],"type":"string"},"rel":{"description":"Optional. The kind of resource this link points to (e.g. `Workflow`, `Task`, `Comment`).","type":"string","enum":["Approval Task","Approvals","Assignees","Comment","Data Set Records","Data Sets","Form Field Values","Subject Task","Task","Tasks","Users","Webhook","Workflow","Workflow Run"]},"type":{"description":"Whether this link targets an API endpoint or a Process Street app URL. `Api` — a callable API endpoint you can fetch directly. `App` — a browser-facing URL in the Process Street UI.","type":"string","enum":["Api","App"]}}}}}},"PublicApiAttachment":{"title":"PublicApiAttachment","type":"object","required":["id","createdDate","createdBy","taskId","workflowRunId","workflowId","fileName","mimeType","size"],"properties":{"id":{"title":"EntityID","description":"The resource's ID.","type":"string"},"createdDate":{"description":"When the resource was first created. ISO-8601 UTC.","type":"string","format":"date-time"},"createdBy":{"description":"User who created the resource.","examples":[{"id":"iUu2eOU2Q-sBoX6ZjZV9pQ","email":"jane.doe@example.com","username":"Jane Doe"}],"type":"object","required":["id","email","username"],"properties":{"id":{"title":"EntityID","description":"The resource's ID.","type":"string"},"email":{"description":"The user's email address (also their login identifier).","type":"string"},"username":{"description":"The user's display name (e.g. `Jane Doe`).","type":"string"}}},"taskId":{"description":"The ID of the Task","examples":["uFlQ0BHS4A0BoX6Zl1p8_w"],"type":"string"},"workflowRunId":{"description":"The ID of the Workflow Run","examples":["uFlQ0BHS4A0BoX6Zl1p8_w"],"type":"string"},"workflowId":{"description":"The ID of the Workflow","examples":["uFlQ0BHS4A0BoX6Zl1p8_w"],"type":"string"},"fileName":{"description":"Original filename as uploaded.","type":"string"},"mimeType":{"description":"MIME type detected at upload time (e.g. `image/png`, `application/pdf`).","type":"string"},"size":{"description":"File size in bytes.","type":"integer","format":"int64"},"links":{"description":"Navigable HATEOAS links to related resources. Each entry has a `name` (RFC-5988 link relation like `self`, `edit`, `related`), an `href` URL, and a `type` (`Api` for callable endpoints, `App` for browser-facing URLs). Prefer following these `href` values over constructing URLs by hand.","type":"array","items":{"title":"Link","description":"A HATEOAS link to a related resource. Use these to navigate between resources without constructing URLs by hand.","type":"object","required":["name","href","type"],"properties":{"name":{"description":"Standard link relation name (RFC 5988) indicating this link's role. Common values include `self`, `edit`, `related`, `previous`, `next`.","type":"string"},"href":{"title":"Uri","description":"URL of the linked resource.","examples":["https://api.process.st/api/v1.1/resource/XXX"],"type":"string"},"rel":{"description":"Optional. The kind of resource this link points to (e.g. `Workflow`, `Task`, `Comment`).","type":"string","enum":["Approval Task","Approvals","Assignees","Comment","Data Set Records","Data Sets","Form Field Values","Subject Task","Task","Tasks","Users","Webhook","Workflow","Workflow Run"]},"type":{"description":"Whether this link targets an API endpoint or a Process Street app URL. `Api` — a callable API endpoint you can fetch directly. `App` — a browser-facing URL in the Process Street UI.","type":"string","enum":["Api","App"]}}}}}},"PublicApiAttachmentListResponse":{"title":"PublicApiAttachmentListResponse","type":"object","properties":{"data":{"description":"The list of resources returned by this request.","type":"array","items":{"title":"PublicApiAttachment","type":"object","required":["id","createdDate","createdBy","taskId","workflowRunId","workflowId","fileName","mimeType","size"],"properties":{"id":{"title":"EntityID","description":"The resource's ID.","type":"string"},"createdDate":{"description":"When the resource was first created. ISO-8601 UTC.","type":"string","format":"date-time"},"createdBy":{"description":"User who created the resource.","examples":[{"id":"iUu2eOU2Q-sBoX6ZjZV9pQ","email":"jane.doe@example.com","username":"Jane Doe"}],"type":"object","required":["id","email","username"],"properties":{"id":{"title":"EntityID","description":"The resource's ID.","type":"string"},"email":{"description":"The user's email address (also their login identifier).","type":"string"},"username":{"description":"The user's display name (e.g. `Jane Doe`).","type":"string"}}},"taskId":{"description":"The ID of the Task","examples":["uFlQ0BHS4A0BoX6Zl1p8_w"],"type":"string"},"workflowRunId":{"description":"The ID of the Workflow Run","examples":["uFlQ0BHS4A0BoX6Zl1p8_w"],"type":"string"},"workflowId":{"description":"The ID of the Workflow","examples":["uFlQ0BHS4A0BoX6Zl1p8_w"],"type":"string"},"fileName":{"description":"Original filename as uploaded.","type":"string"},"mimeType":{"description":"MIME type detected at upload time (e.g. `image/png`, `application/pdf`).","type":"string"},"size":{"description":"File size in bytes.","type":"integer","format":"int64"},"links":{"description":"Navigable HATEOAS links to related resources. Each entry has a `name` (RFC-5988 link relation like `self`, `edit`, `related`), an `href` URL, and a `type` (`Api` for callable endpoints, `App` for browser-facing URLs). Prefer following these `href` values over constructing URLs by hand.","type":"array","items":{"title":"Link","description":"A HATEOAS link to a related resource. Use these to navigate between resources without constructing URLs by hand.","type":"object","required":["name","href","type"],"properties":{"name":{"description":"Standard link relation name (RFC 5988) indicating this link's role. Common values include `self`, `edit`, `related`, `previous`, `next`.","type":"string"},"href":{"title":"Uri","description":"URL of the linked resource.","examples":["https://api.process.st/api/v1.1/resource/XXX"],"type":"string"},"rel":{"description":"Optional. The kind of resource this link points to (e.g. `Workflow`, `Task`, `Comment`).","type":"string","enum":["Approval Task","Approvals","Assignees","Comment","Data Set Records","Data Sets","Form Field Values","Subject Task","Task","Tasks","Users","Webhook","Workflow","Workflow Run"]},"type":{"description":"Whether this link targets an API endpoint or a Process Street app URL. `Api` — a callable API endpoint you can fetch directly. `App` — a browser-facing URL in the Process Street UI.","type":"string","enum":["Api","App"]}}}}}}},"links":{"description":"Pagination links. When the result has more pages, look for an entry with `name: \"next\"` — its `href` is the URL to fetch the next page. Absence of `next` means there are no more pages. For single-resource responses this array is typically empty.","type":"array","items":{"title":"Link","description":"A HATEOAS link to a related resource. Use these to navigate between resources without constructing URLs by hand.","type":"object","required":["name","href","type"],"properties":{"name":{"description":"Standard link relation name (RFC 5988) indicating this link's role. Common values include `self`, `edit`, `related`, `previous`, `next`.","type":"string"},"href":{"title":"Uri","description":"URL of the linked resource.","examples":["https://api.process.st/api/v1.1/resource/XXX"],"type":"string"},"rel":{"description":"Optional. The kind of resource this link points to (e.g. `Workflow`, `Task`, `Comment`).","type":"string","enum":["Approval Task","Approvals","Assignees","Comment","Data Set Records","Data Sets","Form Field Values","Subject Task","Task","Tasks","Users","Webhook","Workflow","Workflow Run"]},"type":{"description":"Whether this link targets an API endpoint or a Process Street app URL. `Api` — a callable API endpoint you can fetch directly. `App` — a browser-facing URL in the Process Street UI.","type":"string","enum":["Api","App"]}}}}}},"PublicApiAttachmentResponse":{"title":"PublicApiAttachmentResponse","type":"object","required":["data"],"properties":{"data":{"title":"PublicApiAttachment","type":"object","required":["id","createdDate","createdBy","taskId","workflowRunId","workflowId","fileName","mimeType","size"],"properties":{"id":{"title":"EntityID","description":"The resource's ID.","type":"string"},"createdDate":{"description":"When the resource was first created. ISO-8601 UTC.","type":"string","format":"date-time"},"createdBy":{"description":"User who created the resource.","examples":[{"id":"iUu2eOU2Q-sBoX6ZjZV9pQ","email":"jane.doe@example.com","username":"Jane Doe"}],"type":"object","required":["id","email","username"],"properties":{"id":{"title":"EntityID","description":"The resource's ID.","type":"string"},"email":{"description":"The user's email address (also their login identifier).","type":"string"},"username":{"description":"The user's display name (e.g. `Jane Doe`).","type":"string"}}},"taskId":{"description":"The ID of the Task","examples":["uFlQ0BHS4A0BoX6Zl1p8_w"],"type":"string"},"workflowRunId":{"description":"The ID of the Workflow Run","examples":["uFlQ0BHS4A0BoX6Zl1p8_w"],"type":"string"},"workflowId":{"description":"The ID of the Workflow","examples":["uFlQ0BHS4A0BoX6Zl1p8_w"],"type":"string"},"fileName":{"description":"Original filename as uploaded.","type":"string"},"mimeType":{"description":"MIME type detected at upload time (e.g. `image/png`, `application/pdf`).","type":"string"},"size":{"description":"File size in bytes.","type":"integer","format":"int64"},"links":{"description":"Navigable HATEOAS links to related resources. Each entry has a `name` (RFC-5988 link relation like `self`, `edit`, `related`), an `href` URL, and a `type` (`Api` for callable endpoints, `App` for browser-facing URLs). Prefer following these `href` values over constructing URLs by hand.","type":"array","items":{"title":"Link","description":"A HATEOAS link to a related resource. Use these to navigate between resources without constructing URLs by hand.","type":"object","required":["name","href","type"],"properties":{"name":{"description":"Standard link relation name (RFC 5988) indicating this link's role. Common values include `self`, `edit`, `related`, `previous`, `next`.","type":"string"},"href":{"title":"Uri","description":"URL of the linked resource.","examples":["https://api.process.st/api/v1.1/resource/XXX"],"type":"string"},"rel":{"description":"Optional. The kind of resource this link points to (e.g. `Workflow`, `Task`, `Comment`).","type":"string","enum":["Approval Task","Approvals","Assignees","Comment","Data Set Records","Data Sets","Form Field Values","Subject Task","Task","Tasks","Users","Webhook","Workflow","Workflow Run"]},"type":{"description":"Whether this link targets an API endpoint or a Process Street app URL. `Api` — a callable API endpoint you can fetch directly. `App` — a browser-facing URL in the Process Street UI.","type":"string","enum":["Api","App"]}}}}}},"links":{"description":"Pagination links. When the result has more pages, look for an entry with `name: \"next\"` — its `href` is the URL to fetch the next page. Absence of `next` means there are no more pages. For single-resource responses this array is typically empty.","type":"array","items":{"title":"Link","description":"A HATEOAS link to a related resource. Use these to navigate between resources without constructing URLs by hand.","type":"object","required":["name","href","type"],"properties":{"name":{"description":"Standard link relation name (RFC 5988) indicating this link's role. Common values include `self`, `edit`, `related`, `previous`, `next`.","type":"string"},"href":{"title":"Uri","description":"URL of the linked resource.","examples":["https://api.process.st/api/v1.1/resource/XXX"],"type":"string"},"rel":{"description":"Optional. The kind of resource this link points to (e.g. `Workflow`, `Task`, `Comment`).","type":"string","enum":["Approval Task","Approvals","Assignees","Comment","Data Set Records","Data Sets","Form Field Values","Subject Task","Task","Tasks","Users","Webhook","Workflow","Workflow Run"]},"type":{"description":"Whether this link targets an API endpoint or a Process Street app URL. `Api` — a callable API endpoint you can fetch directly. `App` — a browser-facing URL in the Process Street UI.","type":"string","enum":["Api","App"]}}}}}},"PublicApiAudit":{"title":"PublicApiAudit","type":"object","required":["createdDate","createdBy","updatedDate","updatedBy"],"properties":{"createdDate":{"description":"When the resource was first created. ISO-8601 UTC.","type":"string","format":"date-time"},"createdBy":{"title":"PublicApiUser","description":"User who created the resource.","examples":[{"id":"iUu2eOU2Q-sBoX6ZjZV9pQ","email":"jane.doe@example.com","username":"Jane Doe"}],"type":"object","required":["id","email","username"],"properties":{"id":{"title":"EntityID","description":"The resource's ID.","type":"string"},"email":{"description":"The user's email address (also their login identifier).","type":"string"},"username":{"description":"The user's display name (e.g. `Jane Doe`).","type":"string"}}},"updatedDate":{"description":"When the resource was last modified. ISO-8601 UTC.","type":"string","format":"date-time"},"updatedBy":{"title":"PublicApiUser","description":"User who last modified the resource.","examples":[{"id":"iUu2eOU2Q-sBoX6ZjZV9pQ","email":"jane.doe@example.com","username":"Jane Doe"}],"type":"object","required":["id","email","username"],"properties":{"id":{"title":"EntityID","description":"The resource's ID.","type":"string"},"email":{"description":"The user's email address (also their login identifier).","type":"string"},"username":{"description":"The user's display name (e.g. `Jane Doe`).","type":"string"}}}}},"PublicApiChecklistDueDateRule":{"title":"PublicApiChecklistDueDateRule","description":"The checklist due date rule, or `null` if none is set.","type":"object","required":["sourceType","offsetDirection","dueOffset","businessDaysHandlingMode"],"properties":{"sourceType":{"description":"How the workflow run's due date is derived. `ChecklistStartDate` bases the due date on the workflow run's start date. `FormFieldValue` bases it on a Date form field value (requires `sourceWidgetId`).","type":"string","enum":["FormFieldValue","ChecklistStartDate"]},"sourceWidgetId":{"title":"EntityID","description":"For `sourceType=FormField`: the ID of the Members form field whose value drives the rule's assignees at runtime. Absent for `sourceType=ChecklistInitiator`.","type":"string"},"offsetDirection":{"description":"Whether the offset applies before or after the source date.","type":"string","enum":["Before","After"]},"dueOffset":{"description":"ISO-8601 duration (e.g. `P7D`, `PT4H30M`). Weeks are stored as days, so `P2W` reads back as `P14D`, and with `BusinessDaysOnly` each of those days is a business day.","type":"string"},"businessDaysHandlingMode":{"title":"BusinessDaysHandlingMode","description":"How non-business days are handled when calculating the due date. `AllDays` counts every day. `BusinessDaysOnly` counts only Monday–Friday. `ShiftToNextBusinessDay` calculates using all days then moves a Saturday/Sunday result to the next Monday.","type":"string","enum":["AllDays","BusinessDaysOnly","ShiftToNextBusinessDay"]}}},"PublicApiCodeTaskConfig":{"title":"PublicApiCodeTaskConfig","type":"object","required":["code","type"],"properties":{"code":{"description":"Code snippet executed by this Code task.","type":"string"},"inputMapping":{"description":"Mapping from prompt/code input keys to form field IDs whose values are passed in.","type":"object","additionalProperties":{"title":"EntityID","type":"string"}},"outputMapping":{"description":"Mapping from prompt/code output keys to form field IDs that receive the values.","type":"object","additionalProperties":{"title":"EntityID","type":"string"}},"type":{"description":"Discriminator value for this variant. See the parent oneOf for the full set of values.","type":"string","const":"Code"}}},"PublicApiComment":{"title":"PublicApiComment","type":"object","required":["id","createdDate","createdBy","updatedDate","updatedBy","workflowRunId","taskId","text"],"properties":{"id":{"description":"The ID of the Comment","examples":["pjJWhLDsdbwBoX6ZoU9wYg"],"type":"string"},"createdDate":{"description":"When the resource was first created. ISO-8601 UTC.","type":"string","format":"date-time"},"createdBy":{"description":"User who created the resource.","examples":[{"id":"iUu2eOU2Q-sBoX6ZjZV9pQ","email":"jane.doe@example.com","username":"Jane Doe"}],"type":"object","required":["id","email","username"],"properties":{"id":{"title":"EntityID","description":"The resource's ID.","type":"string"},"email":{"description":"The user's email address (also their login identifier).","type":"string"},"username":{"description":"The user's display name (e.g. `Jane Doe`).","type":"string"}}},"updatedDate":{"description":"When the resource was last modified. ISO-8601 UTC.","type":"string","format":"date-time"},"updatedBy":{"description":"User who last modified the resource.","examples":[{"id":"iUu2eOU2Q-sBoX6ZjZV9pQ","email":"jane.doe@example.com","username":"Jane Doe"}],"type":"object","required":["id","email","username"],"properties":{"id":{"title":"EntityID","description":"The resource's ID.","type":"string"},"email":{"description":"The user's email address (also their login identifier).","type":"string"},"username":{"description":"The user's display name (e.g. `Jane Doe`).","type":"string"}}},"workflowRunId":{"description":"The ID of the Workflow Run","examples":["pjJWhLDsdbwBoX6ZoU9wYg"],"type":"string"},"taskId":{"description":"The ID of the Task","examples":["pjJWhLDsdbwBoX6ZoU9wYg"],"type":"string"},"text":{"description":"The comment body. Plain text; not interpreted as Markdown or HTML.","type":"string"},"links":{"description":"Navigable HATEOAS links to related resources. Each entry has a `name` (RFC-5988 link relation like `self`, `edit`, `related`), an `href` URL, and a `type` (`Api` for callable endpoints, `App` for browser-facing URLs). Prefer following these `href` values over constructing URLs by hand.","type":"array","items":{"title":"Link","description":"A HATEOAS link to a related resource. Use these to navigate between resources without constructing URLs by hand.","type":"object","required":["name","href","type"],"properties":{"name":{"description":"Standard link relation name (RFC 5988) indicating this link's role. Common values include `self`, `edit`, `related`, `previous`, `next`.","type":"string"},"href":{"title":"Uri","description":"URL of the linked resource.","examples":["https://api.process.st/api/v1.1/resource/XXX"],"type":"string"},"rel":{"description":"Optional. The kind of resource this link points to (e.g. `Workflow`, `Task`, `Comment`).","type":"string","enum":["Approval Task","Approvals","Assignees","Comment","Data Set Records","Data Sets","Form Field Values","Subject Task","Task","Tasks","Users","Webhook","Workflow","Workflow Run"]},"type":{"description":"Whether this link targets an API endpoint or a Process Street app URL. `Api` — a callable API endpoint you can fetch directly. `App` — a browser-facing URL in the Process Street UI.","type":"string","enum":["Api","App"]}}}}}},"PublicApiCommentListResponse":{"title":"PublicApiCommentListResponse","type":"object","properties":{"data":{"description":"The list of resources returned by this request.","type":"array","items":{"title":"PublicApiComment","type":"object","required":["id","createdDate","createdBy","updatedDate","updatedBy","workflowRunId","taskId","text"],"properties":{"id":{"description":"The ID of the Comment","examples":["pjJWhLDsdbwBoX6ZoU9wYg"],"type":"string"},"createdDate":{"description":"When the resource was first created. ISO-8601 UTC.","type":"string","format":"date-time"},"createdBy":{"description":"User who created the resource.","examples":[{"id":"iUu2eOU2Q-sBoX6ZjZV9pQ","email":"jane.doe@example.com","username":"Jane Doe"}],"type":"object","required":["id","email","username"],"properties":{"id":{"title":"EntityID","description":"The resource's ID.","type":"string"},"email":{"description":"The user's email address (also their login identifier).","type":"string"},"username":{"description":"The user's display name (e.g. `Jane Doe`).","type":"string"}}},"updatedDate":{"description":"When the resource was last modified. ISO-8601 UTC.","type":"string","format":"date-time"},"updatedBy":{"description":"User who last modified the resource.","examples":[{"id":"iUu2eOU2Q-sBoX6ZjZV9pQ","email":"jane.doe@example.com","username":"Jane Doe"}],"type":"object","required":["id","email","username"],"properties":{"id":{"title":"EntityID","description":"The resource's ID.","type":"string"},"email":{"description":"The user's email address (also their login identifier).","type":"string"},"username":{"description":"The user's display name (e.g. `Jane Doe`).","type":"string"}}},"workflowRunId":{"description":"The ID of the Workflow Run","examples":["pjJWhLDsdbwBoX6ZoU9wYg"],"type":"string"},"taskId":{"description":"The ID of the Task","examples":["pjJWhLDsdbwBoX6ZoU9wYg"],"type":"string"},"text":{"description":"The comment body. Plain text; not interpreted as Markdown or HTML.","type":"string"},"links":{"description":"Navigable HATEOAS links to related resources. Each entry has a `name` (RFC-5988 link relation like `self`, `edit`, `related`), an `href` URL, and a `type` (`Api` for callable endpoints, `App` for browser-facing URLs). Prefer following these `href` values over constructing URLs by hand.","type":"array","items":{"title":"Link","description":"A HATEOAS link to a related resource. Use these to navigate between resources without constructing URLs by hand.","type":"object","required":["name","href","type"],"properties":{"name":{"description":"Standard link relation name (RFC 5988) indicating this link's role. Common values include `self`, `edit`, `related`, `previous`, `next`.","type":"string"},"href":{"title":"Uri","description":"URL of the linked resource.","examples":["https://api.process.st/api/v1.1/resource/XXX"],"type":"string"},"rel":{"description":"Optional. The kind of resource this link points to (e.g. `Workflow`, `Task`, `Comment`).","type":"string","enum":["Approval Task","Approvals","Assignees","Comment","Data Set Records","Data Sets","Form Field Values","Subject Task","Task","Tasks","Users","Webhook","Workflow","Workflow Run"]},"type":{"description":"Whether this link targets an API endpoint or a Process Street app URL. `Api` — a callable API endpoint you can fetch directly. `App` — a browser-facing URL in the Process Street UI.","type":"string","enum":["Api","App"]}}}}}}},"links":{"description":"Pagination links. When the result has more pages, look for an entry with `name: \"next\"` — its `href` is the URL to fetch the next page. Absence of `next` means there are no more pages. For single-resource responses this array is typically empty.","type":"array","items":{"title":"Link","description":"A HATEOAS link to a related resource. Use these to navigate between resources without constructing URLs by hand.","type":"object","required":["name","href","type"],"properties":{"name":{"description":"Standard link relation name (RFC 5988) indicating this link's role. Common values include `self`, `edit`, `related`, `previous`, `next`.","type":"string"},"href":{"title":"Uri","description":"URL of the linked resource.","examples":["https://api.process.st/api/v1.1/resource/XXX"],"type":"string"},"rel":{"description":"Optional. The kind of resource this link points to (e.g. `Workflow`, `Task`, `Comment`).","type":"string","enum":["Approval Task","Approvals","Assignees","Comment","Data Set Records","Data Sets","Form Field Values","Subject Task","Task","Tasks","Users","Webhook","Workflow","Workflow Run"]},"type":{"description":"Whether this link targets an API endpoint or a Process Street app URL. `Api` — a callable API endpoint you can fetch directly. `App` — a browser-facing URL in the Process Street UI.","type":"string","enum":["Api","App"]}}}}}},"PublicApiCommentResponse":{"title":"PublicApiCommentResponse","type":"object","required":["data"],"properties":{"data":{"title":"PublicApiComment","type":"object","required":["id","createdDate","createdBy","updatedDate","updatedBy","workflowRunId","taskId","text"],"properties":{"id":{"description":"The ID of the Comment","examples":["pjJWhLDsdbwBoX6ZoU9wYg"],"type":"string"},"createdDate":{"description":"When the resource was first created. ISO-8601 UTC.","type":"string","format":"date-time"},"createdBy":{"description":"User who created the resource.","examples":[{"id":"iUu2eOU2Q-sBoX6ZjZV9pQ","email":"jane.doe@example.com","username":"Jane Doe"}],"type":"object","required":["id","email","username"],"properties":{"id":{"title":"EntityID","description":"The resource's ID.","type":"string"},"email":{"description":"The user's email address (also their login identifier).","type":"string"},"username":{"description":"The user's display name (e.g. `Jane Doe`).","type":"string"}}},"updatedDate":{"description":"When the resource was last modified. ISO-8601 UTC.","type":"string","format":"date-time"},"updatedBy":{"description":"User who last modified the resource.","examples":[{"id":"iUu2eOU2Q-sBoX6ZjZV9pQ","email":"jane.doe@example.com","username":"Jane Doe"}],"type":"object","required":["id","email","username"],"properties":{"id":{"title":"EntityID","description":"The resource's ID.","type":"string"},"email":{"description":"The user's email address (also their login identifier).","type":"string"},"username":{"description":"The user's display name (e.g. `Jane Doe`).","type":"string"}}},"workflowRunId":{"description":"The ID of the Workflow Run","examples":["pjJWhLDsdbwBoX6ZoU9wYg"],"type":"string"},"taskId":{"description":"The ID of the Task","examples":["pjJWhLDsdbwBoX6ZoU9wYg"],"type":"string"},"text":{"description":"The comment body. Plain text; not interpreted as Markdown or HTML.","type":"string"},"links":{"description":"Navigable HATEOAS links to related resources. Each entry has a `name` (RFC-5988 link relation like `self`, `edit`, `related`), an `href` URL, and a `type` (`Api` for callable endpoints, `App` for browser-facing URLs). Prefer following these `href` values over constructing URLs by hand.","type":"array","items":{"title":"Link","description":"A HATEOAS link to a related resource. Use these to navigate between resources without constructing URLs by hand.","type":"object","required":["name","href","type"],"properties":{"name":{"description":"Standard link relation name (RFC 5988) indicating this link's role. Common values include `self`, `edit`, `related`, `previous`, `next`.","type":"string"},"href":{"title":"Uri","description":"URL of the linked resource.","examples":["https://api.process.st/api/v1.1/resource/XXX"],"type":"string"},"rel":{"description":"Optional. The kind of resource this link points to (e.g. `Workflow`, `Task`, `Comment`).","type":"string","enum":["Approval Task","Approvals","Assignees","Comment","Data Set Records","Data Sets","Form Field Values","Subject Task","Task","Tasks","Users","Webhook","Workflow","Workflow Run"]},"type":{"description":"Whether this link targets an API endpoint or a Process Street app URL. `Api` — a callable API endpoint you can fetch directly. `App` — a browser-facing URL in the Process Street UI.","type":"string","enum":["Api","App"]}}}}}},"links":{"description":"Pagination links. When the result has more pages, look for an entry with `name: \"next\"` — its `href` is the URL to fetch the next page. Absence of `next` means there are no more pages. For single-resource responses this array is typically empty.","type":"array","items":{"title":"Link","description":"A HATEOAS link to a related resource. Use these to navigate between resources without constructing URLs by hand.","type":"object","required":["name","href","type"],"properties":{"name":{"description":"Standard link relation name (RFC 5988) indicating this link's role. Common values include `self`, `edit`, `related`, `previous`, `next`.","type":"string"},"href":{"title":"Uri","description":"URL of the linked resource.","examples":["https://api.process.st/api/v1.1/resource/XXX"],"type":"string"},"rel":{"description":"Optional. The kind of resource this link points to (e.g. `Workflow`, `Task`, `Comment`).","type":"string","enum":["Approval Task","Approvals","Assignees","Comment","Data Set Records","Data Sets","Form Field Values","Subject Task","Task","Tasks","Users","Webhook","Workflow","Workflow Run"]},"type":{"description":"Whether this link targets an API endpoint or a Process Street app URL. `Api` — a callable API endpoint you can fetch directly. `App` — a browser-facing URL in the Process Street UI.","type":"string","enum":["Api","App"]}}}}}},"PublicApiCrossLinkWidget":{"title":"PublicApiCrossLinkWidget","type":"object","required":["hiddenByDefault","id","taskId","createdDate","createdBy","updatedDate","updatedBy","type"],"properties":{"hiddenByDefault":{"description":"When `true`, the widget is hidden by default; conditional logic rules can reveal it at runtime. Defaults to `false`.","type":"boolean"},"id":{"description":"The ID of the Widget","examples":["sQhasVLlQ6ABoX6ZlLJ8wQ"],"type":"string"},"taskId":{"description":"The ID of the Task","examples":["sQhasVLlQ6ABoX6ZlLJ8wQ"],"type":"string"},"createdDate":{"description":"When the resource was first created. ISO-8601 UTC.","type":"string","format":"date-time"},"createdBy":{"description":"User who created the resource.","examples":[{"id":"iUu2eOU2Q-sBoX6ZjZV9pQ","email":"jane.doe@example.com","username":"Jane Doe"}],"type":"object","required":["id","email","username"],"properties":{"id":{"title":"EntityID","description":"The resource's ID.","type":"string"},"email":{"description":"The user's email address (also their login identifier).","type":"string"},"username":{"description":"The user's display name (e.g. `Jane Doe`).","type":"string"}}},"updatedDate":{"description":"When the resource was last modified. ISO-8601 UTC.","type":"string","format":"date-time"},"updatedBy":{"description":"User who last modified the resource.","examples":[{"id":"iUu2eOU2Q-sBoX6ZjZV9pQ","email":"jane.doe@example.com","username":"Jane Doe"}],"type":"object","required":["id","email","username"],"properties":{"id":{"title":"EntityID","description":"The resource's ID.","type":"string"},"email":{"description":"The user's email address (also their login identifier).","type":"string"},"username":{"description":"The user's display name (e.g. `Jane Doe`).","type":"string"}}},"linkedTemplateId":{"title":"EntityID","description":"The ID of the linked workflow or page that this CrossLink widget points to.","type":"string"},"links":{"description":"Navigable HATEOAS links to related resources. Each entry has a `name` (RFC-5988 relation), an `href` URL, and a `type` (`Api` or `App`).","type":"array","items":{"title":"Link","description":"A HATEOAS link to a related resource. Use these to navigate between resources without constructing URLs by hand.","type":"object","required":["name","href","type"],"properties":{"name":{"description":"Standard link relation name (RFC 5988) indicating this link's role. Common values include `self`, `edit`, `related`, `previous`, `next`.","type":"string"},"href":{"title":"Uri","description":"URL of the linked resource.","examples":["https://api.process.st/api/v1.1/resource/XXX"],"type":"string"},"rel":{"description":"Optional. The kind of resource this link points to (e.g. `Workflow`, `Task`, `Comment`).","type":"string","enum":["Approval Task","Approvals","Assignees","Comment","Data Set Records","Data Sets","Form Field Values","Subject Task","Task","Tasks","Users","Webhook","Workflow","Workflow Run"]},"type":{"description":"Whether this link targets an API endpoint or a Process Street app URL. `Api` — a callable API endpoint you can fetch directly. `App` — a browser-facing URL in the Process Street UI.","type":"string","enum":["Api","App"]}}}},"type":{"title":"WidgetType","description":"Widget kind discriminator.\n\n- `FormField` — collects user input (Text, Number, Date, etc. — see `fieldType`).\n- `Text` — rich text content displayed on the task.\n- `Image` — image content displayed on the task.\n- `File` — downloadable file attached to the task.\n- `Video` — video content (uploaded or linked from a hosting service).\n- `Embed` — embedded external content via URL.\n- `CrossLink` — link to another workflow or page.\n","type":"string","enum":["FormField","Text","Image","File","Video","Embed","CrossLink"]}}},"PublicApiDataSet":{"title":"PublicApiDataSet","description":"The resource returned by this request.","type":"object","required":["id","createdDate","createdBy","updatedDate","updatedBy","organizationId","name"],"properties":{"id":{"description":"The ID of the Data Set","examples":["vxMCkXb8BWgBoX6ZjYB5bQ"],"type":"string"},"createdDate":{"description":"When the resource was first created. ISO-8601 UTC.","type":"string","format":"date-time"},"createdBy":{"description":"User who created the resource.","examples":[{"id":"iUu2eOU2Q-sBoX6ZjZV9pQ","email":"jane.doe@example.com","username":"Jane Doe"}],"type":"object","required":["id","email","username"],"properties":{"id":{"title":"EntityID","description":"The resource's ID.","type":"string"},"email":{"description":"The user's email address (also their login identifier).","type":"string"},"username":{"description":"The user's display name (e.g. `Jane Doe`).","type":"string"}}},"updatedDate":{"description":"When the resource was last modified. ISO-8601 UTC.","type":"string","format":"date-time"},"updatedBy":{"description":"User who last modified the resource.","examples":[{"id":"iUu2eOU2Q-sBoX6ZjZV9pQ","email":"jane.doe@example.com","username":"Jane Doe"}],"type":"object","required":["id","email","username"],"properties":{"id":{"title":"EntityID","description":"The resource's ID.","type":"string"},"email":{"description":"The user's email address (also their login identifier).","type":"string"},"username":{"description":"The user's display name (e.g. `Jane Doe`).","type":"string"}}},"organizationId":{"title":"EntityID","description":"The ID of the organization this resource belongs to.","type":"string"},"name":{"description":"The data set's display name.","type":"string"},"fields":{"description":"Column definitions for this data set (name + type per column).","type":"array","items":{"title":"PublicApiDataSetField","type":"object","required":["id","createdDate","createdBy","updatedDate","updatedBy","name","fieldType"],"properties":{"id":{"title":"EntityID","description":"The resource's ID.","type":"string"},"createdDate":{"description":"When the resource was first created. ISO-8601 UTC.","type":"string","format":"date-time"},"createdBy":{"description":"User who created the resource.","examples":[{"id":"iUu2eOU2Q-sBoX6ZjZV9pQ","email":"jane.doe@example.com","username":"Jane Doe"}],"type":"object","required":["id","email","username"],"properties":{"id":{"title":"EntityID","description":"The resource's ID.","type":"string"},"email":{"description":"The user's email address (also their login identifier).","type":"string"},"username":{"description":"The user's display name (e.g. `Jane Doe`).","type":"string"}}},"updatedDate":{"description":"When the resource was last modified. ISO-8601 UTC.","type":"string","format":"date-time"},"updatedBy":{"description":"User who last modified the resource.","examples":[{"id":"iUu2eOU2Q-sBoX6ZjZV9pQ","email":"jane.doe@example.com","username":"Jane Doe"}],"type":"object","required":["id","email","username"],"properties":{"id":{"title":"EntityID","description":"The resource's ID.","type":"string"},"email":{"description":"The user's email address (also their login identifier).","type":"string"},"username":{"description":"The user's display name (e.g. `Jane Doe`).","type":"string"}}},"name":{"description":"Display name.","type":"string"},"fieldType":{"title":"ColumnType","description":"Data type of the column.\n\n- `Text` — free-form string.\n- `Number` — numeric value.\n- `DateTime` — ISO-8601 date-time.\n","type":"string","enum":["Text","DateTime","Number"]}}}},"links":{"description":"Navigable HATEOAS links to related resources. Each entry has a `name` (RFC-5988 link relation like `self`, `edit`, `related`), an `href` URL, and a `type` (`Api` for callable endpoints, `App` for browser-facing URLs). Prefer following these `href` values over constructing URLs by hand.","type":"array","items":{"title":"Link","description":"A HATEOAS link to a related resource. Use these to navigate between resources without constructing URLs by hand.","type":"object","required":["name","href","type"],"properties":{"name":{"description":"Standard link relation name (RFC 5988) indicating this link's role. Common values include `self`, `edit`, `related`, `previous`, `next`.","type":"string"},"href":{"title":"Uri","description":"URL of the linked resource.","examples":["https://api.process.st/api/v1.1/resource/XXX"],"type":"string"},"rel":{"description":"Optional. The kind of resource this link points to (e.g. `Workflow`, `Task`, `Comment`).","type":"string","enum":["Approval Task","Approvals","Assignees","Comment","Data Set Records","Data Sets","Form Field Values","Subject Task","Task","Tasks","Users","Webhook","Workflow","Workflow Run"]},"type":{"description":"Whether this link targets an API endpoint or a Process Street app URL. `Api` — a callable API endpoint you can fetch directly. `App` — a browser-facing URL in the Process Street UI.","type":"string","enum":["Api","App"]}}}}}},"PublicApiDataSetField":{"title":"PublicApiDataSetField","type":"object","required":["id","createdDate","createdBy","updatedDate","updatedBy","name","fieldType"],"properties":{"id":{"title":"EntityID","description":"The resource's ID.","type":"string"},"createdDate":{"description":"When the resource was first created. ISO-8601 UTC.","type":"string","format":"date-time"},"createdBy":{"description":"User who created the resource.","examples":[{"id":"iUu2eOU2Q-sBoX6ZjZV9pQ","email":"jane.doe@example.com","username":"Jane Doe"}],"type":"object","required":["id","email","username"],"properties":{"id":{"title":"EntityID","description":"The resource's ID.","type":"string"},"email":{"description":"The user's email address (also their login identifier).","type":"string"},"username":{"description":"The user's display name (e.g. `Jane Doe`).","type":"string"}}},"updatedDate":{"description":"When the resource was last modified. ISO-8601 UTC.","type":"string","format":"date-time"},"updatedBy":{"description":"User who last modified the resource.","examples":[{"id":"iUu2eOU2Q-sBoX6ZjZV9pQ","email":"jane.doe@example.com","username":"Jane Doe"}],"type":"object","required":["id","email","username"],"properties":{"id":{"title":"EntityID","description":"The resource's ID.","type":"string"},"email":{"description":"The user's email address (also their login identifier).","type":"string"},"username":{"description":"The user's display name (e.g. `Jane Doe`).","type":"string"}}},"name":{"description":"Display name.","type":"string"},"fieldType":{"title":"ColumnType","description":"Data type of the column.\n\n- `Text` — free-form string.\n- `Number` — numeric value.\n- `DateTime` — ISO-8601 date-time.\n","type":"string","enum":["Text","DateTime","Number"]}}},"PublicApiDataSetIncomingWebhook":{"title":"PublicApiDataSetIncomingWebhook","type":"object","required":["id","createdDate","createdBy","updatedDate","updatedBy","dataSetId","name","automationApp","status","url","config"],"properties":{"id":{"title":"EntityID","description":"The resource's ID.","type":"string"},"createdDate":{"description":"When the resource was first created. ISO-8601 UTC.","type":"string","format":"date-time"},"createdBy":{"description":"User who created the resource.","examples":[{"id":"iUu2eOU2Q-sBoX6ZjZV9pQ","email":"jane.doe@example.com","username":"Jane Doe"}],"type":"object","required":["id","email","username"],"properties":{"id":{"title":"EntityID","description":"The resource's ID.","type":"string"},"email":{"description":"The user's email address (also their login identifier).","type":"string"},"username":{"description":"The user's display name (e.g. `Jane Doe`).","type":"string"}}},"updatedDate":{"description":"When the resource was last modified. ISO-8601 UTC.","type":"string","format":"date-time"},"updatedBy":{"description":"User who last modified the resource.","examples":[{"id":"iUu2eOU2Q-sBoX6ZjZV9pQ","email":"jane.doe@example.com","username":"Jane Doe"}],"type":"object","required":["id","email","username"],"properties":{"id":{"title":"EntityID","description":"The resource's ID.","type":"string"},"email":{"description":"The user's email address (also their login identifier).","type":"string"},"username":{"description":"The user's display name (e.g. `Jane Doe`).","type":"string"}}},"dataSetId":{"description":"The ID of the Data Set","examples":["oJ6jybxnjsEBoX6Zjkd3cw"],"type":"string"},"name":{"description":"Human-readable label for the webhook.","type":"string"},"automationApp":{"description":"Label of the automation app or integration source (e.g. `Zapier`, `Custom`).","type":"string"},"status":{"description":"Whether the incoming webhook is currently accepting payloads. `Active` — incoming requests at the webhook URL create or update data set rows. `Disabled` — the webhook URL is configured but requests are ignored.","type":"string","enum":["Active","Disabled"]},"url":{"description":"Public URL to POST payloads to. Include this in the upstream system's webhook config.","type":"string"},"config":{"title":"PublicApiDataSetIncomingWebhookConfig","description":"Field-specific configuration. Shape depends on `fieldType`.","type":"object","required":["columns"],"properties":{"columns":{"description":"Cell values keyed by column ID.","type":"object","additionalProperties":{"type":"string"}},"keyColumn":{"description":"Name of the column used as the unique key when reconciling rows on upsert.","type":"string"}}},"links":{"description":"Navigable HATEOAS links to related resources. Each entry has a `name` (RFC-5988 link relation like `self`, `edit`, `related`), an `href` URL, and a `type` (`Api` for callable endpoints, `App` for browser-facing URLs). Prefer following these `href` values over constructing URLs by hand.","type":"array","items":{"title":"Link","description":"A HATEOAS link to a related resource. Use these to navigate between resources without constructing URLs by hand.","type":"object","required":["name","href","type"],"properties":{"name":{"description":"Standard link relation name (RFC 5988) indicating this link's role. Common values include `self`, `edit`, `related`, `previous`, `next`.","type":"string"},"href":{"title":"Uri","description":"URL of the linked resource.","examples":["https://api.process.st/api/v1.1/resource/XXX"],"type":"string"},"rel":{"description":"Optional. The kind of resource this link points to (e.g. `Workflow`, `Task`, `Comment`).","type":"string","enum":["Approval Task","Approvals","Assignees","Comment","Data Set Records","Data Sets","Form Field Values","Subject Task","Task","Tasks","Users","Webhook","Workflow","Workflow Run"]},"type":{"description":"Whether this link targets an API endpoint or a Process Street app URL. `Api` — a callable API endpoint you can fetch directly. `App` — a browser-facing URL in the Process Street UI.","type":"string","enum":["Api","App"]}}}}}},"PublicApiDataSetIncomingWebhookConfig":{"title":"PublicApiDataSetIncomingWebhookConfig","type":"object","required":["columns"],"properties":{"columns":{"description":"Cell values keyed by column ID.","type":"object","additionalProperties":{"type":"string"}},"keyColumn":{"description":"Name of the column used as the unique key when reconciling rows on upsert.","type":"string"}}},"PublicApiDataSetIncomingWebhookListResponse":{"title":"PublicApiDataSetIncomingWebhookListResponse","type":"object","properties":{"data":{"description":"The list of resources returned by this request.","type":"array","items":{"title":"PublicApiDataSetIncomingWebhook","type":"object","required":["id","createdDate","createdBy","updatedDate","updatedBy","dataSetId","name","automationApp","status","url","config"],"properties":{"id":{"title":"EntityID","description":"The resource's ID.","type":"string"},"createdDate":{"description":"When the resource was first created. ISO-8601 UTC.","type":"string","format":"date-time"},"createdBy":{"description":"User who created the resource.","examples":[{"id":"iUu2eOU2Q-sBoX6ZjZV9pQ","email":"jane.doe@example.com","username":"Jane Doe"}],"type":"object","required":["id","email","username"],"properties":{"id":{"title":"EntityID","description":"The resource's ID.","type":"string"},"email":{"description":"The user's email address (also their login identifier).","type":"string"},"username":{"description":"The user's display name (e.g. `Jane Doe`).","type":"string"}}},"updatedDate":{"description":"When the resource was last modified. ISO-8601 UTC.","type":"string","format":"date-time"},"updatedBy":{"description":"User who last modified the resource.","examples":[{"id":"iUu2eOU2Q-sBoX6ZjZV9pQ","email":"jane.doe@example.com","username":"Jane Doe"}],"type":"object","required":["id","email","username"],"properties":{"id":{"title":"EntityID","description":"The resource's ID.","type":"string"},"email":{"description":"The user's email address (also their login identifier).","type":"string"},"username":{"description":"The user's display name (e.g. `Jane Doe`).","type":"string"}}},"dataSetId":{"description":"The ID of the Data Set","examples":["oJ6jybxnjsEBoX6Zjkd3cw"],"type":"string"},"name":{"description":"Human-readable label for the webhook.","type":"string"},"automationApp":{"description":"Label of the automation app or integration source (e.g. `Zapier`, `Custom`).","type":"string"},"status":{"description":"Whether the incoming webhook is currently accepting payloads. `Active` — incoming requests at the webhook URL create or update data set rows. `Disabled` — the webhook URL is configured but requests are ignored.","type":"string","enum":["Active","Disabled"]},"url":{"description":"Public URL to POST payloads to. Include this in the upstream system's webhook config.","type":"string"},"config":{"title":"PublicApiDataSetIncomingWebhookConfig","description":"Field-specific configuration. Shape depends on `fieldType`.","type":"object","required":["columns"],"properties":{"columns":{"description":"Cell values keyed by column ID.","type":"object","additionalProperties":{"type":"string"}},"keyColumn":{"description":"Name of the column used as the unique key when reconciling rows on upsert.","type":"string"}}},"links":{"description":"Navigable HATEOAS links to related resources. Each entry has a `name` (RFC-5988 link relation like `self`, `edit`, `related`), an `href` URL, and a `type` (`Api` for callable endpoints, `App` for browser-facing URLs). Prefer following these `href` values over constructing URLs by hand.","type":"array","items":{"title":"Link","description":"A HATEOAS link to a related resource. Use these to navigate between resources without constructing URLs by hand.","type":"object","required":["name","href","type"],"properties":{"name":{"description":"Standard link relation name (RFC 5988) indicating this link's role. Common values include `self`, `edit`, `related`, `previous`, `next`.","type":"string"},"href":{"title":"Uri","description":"URL of the linked resource.","examples":["https://api.process.st/api/v1.1/resource/XXX"],"type":"string"},"rel":{"description":"Optional. The kind of resource this link points to (e.g. `Workflow`, `Task`, `Comment`).","type":"string","enum":["Approval Task","Approvals","Assignees","Comment","Data Set Records","Data Sets","Form Field Values","Subject Task","Task","Tasks","Users","Webhook","Workflow","Workflow Run"]},"type":{"description":"Whether this link targets an API endpoint or a Process Street app URL. `Api` — a callable API endpoint you can fetch directly. `App` — a browser-facing URL in the Process Street UI.","type":"string","enum":["Api","App"]}}}}}}},"links":{"description":"Pagination links. When the result has more pages, look for an entry with `name: \"next\"` — its `href` is the URL to fetch the next page. Absence of `next` means there are no more pages. For single-resource responses this array is typically empty.","type":"array","items":{"title":"Link","description":"A HATEOAS link to a related resource. Use these to navigate between resources without constructing URLs by hand.","type":"object","required":["name","href","type"],"properties":{"name":{"description":"Standard link relation name (RFC 5988) indicating this link's role. Common values include `self`, `edit`, `related`, `previous`, `next`.","type":"string"},"href":{"title":"Uri","description":"URL of the linked resource.","examples":["https://api.process.st/api/v1.1/resource/XXX"],"type":"string"},"rel":{"description":"Optional. The kind of resource this link points to (e.g. `Workflow`, `Task`, `Comment`).","type":"string","enum":["Approval Task","Approvals","Assignees","Comment","Data Set Records","Data Sets","Form Field Values","Subject Task","Task","Tasks","Users","Webhook","Workflow","Workflow Run"]},"type":{"description":"Whether this link targets an API endpoint or a Process Street app URL. `Api` — a callable API endpoint you can fetch directly. `App` — a browser-facing URL in the Process Street UI.","type":"string","enum":["Api","App"]}}}}}},"PublicApiDataSetIncomingWebhookResponse":{"title":"PublicApiDataSetIncomingWebhookResponse","type":"object","required":["data"],"properties":{"data":{"title":"PublicApiDataSetIncomingWebhook","type":"object","required":["id","createdDate","createdBy","updatedDate","updatedBy","dataSetId","name","automationApp","status","url","config"],"properties":{"id":{"title":"EntityID","description":"The resource's ID.","type":"string"},"createdDate":{"description":"When the resource was first created. ISO-8601 UTC.","type":"string","format":"date-time"},"createdBy":{"description":"User who created the resource.","examples":[{"id":"iUu2eOU2Q-sBoX6ZjZV9pQ","email":"jane.doe@example.com","username":"Jane Doe"}],"type":"object","required":["id","email","username"],"properties":{"id":{"title":"EntityID","description":"The resource's ID.","type":"string"},"email":{"description":"The user's email address (also their login identifier).","type":"string"},"username":{"description":"The user's display name (e.g. `Jane Doe`).","type":"string"}}},"updatedDate":{"description":"When the resource was last modified. ISO-8601 UTC.","type":"string","format":"date-time"},"updatedBy":{"description":"User who last modified the resource.","examples":[{"id":"iUu2eOU2Q-sBoX6ZjZV9pQ","email":"jane.doe@example.com","username":"Jane Doe"}],"type":"object","required":["id","email","username"],"properties":{"id":{"title":"EntityID","description":"The resource's ID.","type":"string"},"email":{"description":"The user's email address (also their login identifier).","type":"string"},"username":{"description":"The user's display name (e.g. `Jane Doe`).","type":"string"}}},"dataSetId":{"description":"The ID of the Data Set","examples":["oJ6jybxnjsEBoX6Zjkd3cw"],"type":"string"},"name":{"description":"Human-readable label for the webhook.","type":"string"},"automationApp":{"description":"Label of the automation app or integration source (e.g. `Zapier`, `Custom`).","type":"string"},"status":{"description":"Whether the incoming webhook is currently accepting payloads. `Active` — incoming requests at the webhook URL create or update data set rows. `Disabled` — the webhook URL is configured but requests are ignored.","type":"string","enum":["Active","Disabled"]},"url":{"description":"Public URL to POST payloads to. Include this in the upstream system's webhook config.","type":"string"},"config":{"title":"PublicApiDataSetIncomingWebhookConfig","description":"Field-specific configuration. Shape depends on `fieldType`.","type":"object","required":["columns"],"properties":{"columns":{"description":"Cell values keyed by column ID.","type":"object","additionalProperties":{"type":"string"}},"keyColumn":{"description":"Name of the column used as the unique key when reconciling rows on upsert.","type":"string"}}},"links":{"description":"Navigable HATEOAS links to related resources. Each entry has a `name` (RFC-5988 link relation like `self`, `edit`, `related`), an `href` URL, and a `type` (`Api` for callable endpoints, `App` for browser-facing URLs). Prefer following these `href` values over constructing URLs by hand.","type":"array","items":{"title":"Link","description":"A HATEOAS link to a related resource. Use these to navigate between resources without constructing URLs by hand.","type":"object","required":["name","href","type"],"properties":{"name":{"description":"Standard link relation name (RFC 5988) indicating this link's role. Common values include `self`, `edit`, `related`, `previous`, `next`.","type":"string"},"href":{"title":"Uri","description":"URL of the linked resource.","examples":["https://api.process.st/api/v1.1/resource/XXX"],"type":"string"},"rel":{"description":"Optional. The kind of resource this link points to (e.g. `Workflow`, `Task`, `Comment`).","type":"string","enum":["Approval Task","Approvals","Assignees","Comment","Data Set Records","Data Sets","Form Field Values","Subject Task","Task","Tasks","Users","Webhook","Workflow","Workflow Run"]},"type":{"description":"Whether this link targets an API endpoint or a Process Street app URL. `Api` — a callable API endpoint you can fetch directly. `App` — a browser-facing URL in the Process Street UI.","type":"string","enum":["Api","App"]}}}}}},"links":{"description":"Pagination links. When the result has more pages, look for an entry with `name: \"next\"` — its `href` is the URL to fetch the next page. Absence of `next` means there are no more pages. For single-resource responses this array is typically empty.","type":"array","items":{"title":"Link","description":"A HATEOAS link to a related resource. Use these to navigate between resources without constructing URLs by hand.","type":"object","required":["name","href","type"],"properties":{"name":{"description":"Standard link relation name (RFC 5988) indicating this link's role. Common values include `self`, `edit`, `related`, `previous`, `next`.","type":"string"},"href":{"title":"Uri","description":"URL of the linked resource.","examples":["https://api.process.st/api/v1.1/resource/XXX"],"type":"string"},"rel":{"description":"Optional. The kind of resource this link points to (e.g. `Workflow`, `Task`, `Comment`).","type":"string","enum":["Approval Task","Approvals","Assignees","Comment","Data Set Records","Data Sets","Form Field Values","Subject Task","Task","Tasks","Users","Webhook","Workflow","Workflow Run"]},"type":{"description":"Whether this link targets an API endpoint or a Process Street app URL. `Api` — a callable API endpoint you can fetch directly. `App` — a browser-facing URL in the Process Street UI.","type":"string","enum":["Api","App"]}}}}}},"PublicApiDataSetResponse":{"title":"PublicApiDataSetResponse","type":"object","required":["data"],"properties":{"data":{"title":"PublicApiDataSet","description":"The resource returned by this request.","type":"object","required":["id","createdDate","createdBy","updatedDate","updatedBy","organizationId","name"],"properties":{"id":{"description":"The ID of the Data Set","examples":["vxMCkXb8BWgBoX6ZjYB5bQ"],"type":"string"},"createdDate":{"description":"When the resource was first created. ISO-8601 UTC.","type":"string","format":"date-time"},"createdBy":{"description":"User who created the resource.","examples":[{"id":"iUu2eOU2Q-sBoX6ZjZV9pQ","email":"jane.doe@example.com","username":"Jane Doe"}],"type":"object","required":["id","email","username"],"properties":{"id":{"title":"EntityID","description":"The resource's ID.","type":"string"},"email":{"description":"The user's email address (also their login identifier).","type":"string"},"username":{"description":"The user's display name (e.g. `Jane Doe`).","type":"string"}}},"updatedDate":{"description":"When the resource was last modified. ISO-8601 UTC.","type":"string","format":"date-time"},"updatedBy":{"description":"User who last modified the resource.","examples":[{"id":"iUu2eOU2Q-sBoX6ZjZV9pQ","email":"jane.doe@example.com","username":"Jane Doe"}],"type":"object","required":["id","email","username"],"properties":{"id":{"title":"EntityID","description":"The resource's ID.","type":"string"},"email":{"description":"The user's email address (also their login identifier).","type":"string"},"username":{"description":"The user's display name (e.g. `Jane Doe`).","type":"string"}}},"organizationId":{"title":"EntityID","description":"The ID of the organization this resource belongs to.","type":"string"},"name":{"description":"The data set's display name.","type":"string"},"fields":{"description":"Column definitions for this data set (name + type per column).","type":"array","items":{"title":"PublicApiDataSetField","type":"object","required":["id","createdDate","createdBy","updatedDate","updatedBy","name","fieldType"],"properties":{"id":{"title":"EntityID","description":"The resource's ID.","type":"string"},"createdDate":{"description":"When the resource was first created. ISO-8601 UTC.","type":"string","format":"date-time"},"createdBy":{"description":"User who created the resource.","examples":[{"id":"iUu2eOU2Q-sBoX6ZjZV9pQ","email":"jane.doe@example.com","username":"Jane Doe"}],"type":"object","required":["id","email","username"],"properties":{"id":{"title":"EntityID","description":"The resource's ID.","type":"string"},"email":{"description":"The user's email address (also their login identifier).","type":"string"},"username":{"description":"The user's display name (e.g. `Jane Doe`).","type":"string"}}},"updatedDate":{"description":"When the resource was last modified. ISO-8601 UTC.","type":"string","format":"date-time"},"updatedBy":{"description":"User who last modified the resource.","examples":[{"id":"iUu2eOU2Q-sBoX6ZjZV9pQ","email":"jane.doe@example.com","username":"Jane Doe"}],"type":"object","required":["id","email","username"],"properties":{"id":{"title":"EntityID","description":"The resource's ID.","type":"string"},"email":{"description":"The user's email address (also their login identifier).","type":"string"},"username":{"description":"The user's display name (e.g. `Jane Doe`).","type":"string"}}},"name":{"description":"Display name.","type":"string"},"fieldType":{"title":"ColumnType","description":"Data type of the column.\n\n- `Text` — free-form string.\n- `Number` — numeric value.\n- `DateTime` — ISO-8601 date-time.\n","type":"string","enum":["Text","DateTime","Number"]}}}},"links":{"description":"Navigable HATEOAS links to related resources. Each entry has a `name` (RFC-5988 link relation like `self`, `edit`, `related`), an `href` URL, and a `type` (`Api` for callable endpoints, `App` for browser-facing URLs). Prefer following these `href` values over constructing URLs by hand.","type":"array","items":{"title":"Link","description":"A HATEOAS link to a related resource. Use these to navigate between resources without constructing URLs by hand.","type":"object","required":["name","href","type"],"properties":{"name":{"description":"Standard link relation name (RFC 5988) indicating this link's role. Common values include `self`, `edit`, `related`, `previous`, `next`.","type":"string"},"href":{"title":"Uri","description":"URL of the linked resource.","examples":["https://api.process.st/api/v1.1/resource/XXX"],"type":"string"},"rel":{"description":"Optional. The kind of resource this link points to (e.g. `Workflow`, `Task`, `Comment`).","type":"string","enum":["Approval Task","Approvals","Assignees","Comment","Data Set Records","Data Sets","Form Field Values","Subject Task","Task","Tasks","Users","Webhook","Workflow","Workflow Run"]},"type":{"description":"Whether this link targets an API endpoint or a Process Street app URL. `Api` — a callable API endpoint you can fetch directly. `App` — a browser-facing URL in the Process Street UI.","type":"string","enum":["Api","App"]}}}}}},"links":{"description":"Pagination links. When the result has more pages, look for an entry with `name: \"next\"` — its `href` is the URL to fetch the next page. Absence of `next` means there are no more pages. For single-resource responses this array is typically empty.","type":"array","items":{"title":"Link","description":"A HATEOAS link to a related resource. Use these to navigate between resources without constructing URLs by hand.","type":"object","required":["name","href","type"],"properties":{"name":{"description":"Standard link relation name (RFC 5988) indicating this link's role. Common values include `self`, `edit`, `related`, `previous`, `next`.","type":"string"},"href":{"title":"Uri","description":"URL of the linked resource.","examples":["https://api.process.st/api/v1.1/resource/XXX"],"type":"string"},"rel":{"description":"Optional. The kind of resource this link points to (e.g. `Workflow`, `Task`, `Comment`).","type":"string","enum":["Approval Task","Approvals","Assignees","Comment","Data Set Records","Data Sets","Form Field Values","Subject Task","Task","Tasks","Users","Webhook","Workflow","Workflow Run"]},"type":{"description":"Whether this link targets an API endpoint or a Process Street app URL. `Api` — a callable API endpoint you can fetch directly. `App` — a browser-facing URL in the Process Street UI.","type":"string","enum":["Api","App"]}}}}}},"PublicApiDateFormFieldConfig":{"title":"PublicApiDateFormFieldConfig","type":"object","required":["fieldType"],"properties":{"defaultValue":{"description":"Default value pre-filled when a new workflow run is created.","type":"string"},"timeOption":{"description":"How time-of-day is handled on this Date field.\n\n- `Included` — the field always captures both date and time.\n- `Excluded` — date only; time is never captured.\n- `Optional` — the user picks whether to include a time.\n","type":"string","enum":["Included","Excluded","Optional"]},"fieldType":{"description":"Form-field subtype discriminator (only relevant when widget `type` is `FormField`).\n\n- `Text` — short text input (≤255 characters).\n- `Textarea` — long-form text.\n- `Email` — email address.\n- `Url` — website / URL.\n- `Number` — numeric input with optional unit and constraints.\n- `Date` — date or date+time picker.\n- `Select` — dropdown; user picks one option.\n- `MultiChoice` — checkboxes; user picks one or more options.\n- `MultiSelect` — Subtasks: a checklist of sub-items inside the task.\n- `Members` — assignee picker (selects organization users).\n- `File` — single file upload.\n- `MultiFile` — multi-file upload (in-app \"File Upload\").\n- `Document` — document approval field; links the task to a document review.\n- `Table` — rows × columns of cells; users fill cell values.\n- `SendRichEmail` — pre-written email embedded in the task; sent manually by the user or\n  automatically when the task is completed.\n- `Hidden` — only visible when editing the workflow; populated by integrations or default values.\n- `Snippet` — only visible when editing; passes static text or merge tags into automations.\n","type":"string","enum":["Date","Document","Email","File","Hidden","Members","MultiChoice","MultiFile","MultiSelect","Number","Select","SendRichEmail","Snippet","Table","Text","Textarea","Url"],"const":"Date"}}},"PublicApiDateFormFieldConfig1":{"title":"PublicApiDateFormFieldConfig","type":"object","properties":{"defaultValue":{"description":"Default value pre-filled when a new workflow run is created.","type":"string"},"timeOption":{"description":"How time-of-day is handled on this Date field.\n\n- `Included` — the field always captures both date and time.\n- `Excluded` — date only; time is never captured.\n- `Optional` — the user picks whether to include a time.\n","type":"string","enum":["Included","Excluded","Optional"]}}},"PublicApiDateFormFieldConstraints":{"title":"PublicApiDateFormFieldConstraints","type":"object","required":["fieldType"],"properties":{"afterDate":{"description":"Earliest accepted date (inclusive). Pair with `afterDateSourceType`.","type":"string","format":"date-time"},"beforeDate":{"description":"Latest accepted date (inclusive). Pair with `beforeDateSourceType`.","type":"string","format":"date-time"},"afterDateFormFieldWidgetGroupId":{"title":"EntityID","description":"When `afterDateSourceType=FormField`, the ID of the Date form field whose value is the lower bound.","type":"string"},"beforeDateFormFieldWidgetGroupId":{"title":"EntityID","description":"When `beforeDateSourceType=FormField`, the ID of the Date form field whose value is the upper bound.","type":"string"},"afterDateSourceType":{"description":"How the before/after constraint date is derived.\n\n- `SpecificDate` — an absolute date supplied as `afterDate` / `beforeDate`.\n- `FormFieldValue` — derived from another Date form field (`afterDateField` / `beforeDateField`).\n- `TaskDueDate` — relative to the containing task's due date.\n- `ChecklistStartDate` / `ChecklistDueDate` — relative to the workflow run's start or due date.\n","type":"string","enum":["SpecificDate","FormFieldValue","TaskDueDate","ChecklistStartDate","ChecklistDueDate"]},"beforeDateSourceType":{"description":"How the before/after constraint date is derived.\n\n- `SpecificDate` — an absolute date supplied as `afterDate` / `beforeDate`.\n- `FormFieldValue` — derived from another Date form field (`afterDateField` / `beforeDateField`).\n- `TaskDueDate` — relative to the containing task's due date.\n- `ChecklistStartDate` / `ChecklistDueDate` — relative to the workflow run's start or due date.\n","type":"string","enum":["SpecificDate","FormFieldValue","TaskDueDate","ChecklistStartDate","ChecklistDueDate"]},"afterDateOffset":{"description":"ISO 8601 duration (e.g. `P7D`, `P1Y2M`).","type":"string"},"beforeDateOffset":{"description":"ISO 8601 duration (e.g. `P7D`, `P1Y2M`).","type":"string"},"fieldType":{"description":"Form-field subtype discriminator (only relevant when widget `type` is `FormField`).\n\n- `Text` — short text input (≤255 characters).\n- `Textarea` — long-form text.\n- `Email` — email address.\n- `Url` — website / URL.\n- `Number` — numeric input with optional unit and constraints.\n- `Date` — date or date+time picker.\n- `Select` — dropdown; user picks one option.\n- `MultiChoice` — checkboxes; user picks one or more options.\n- `MultiSelect` — Subtasks: a checklist of sub-items inside the task.\n- `Members` — assignee picker (selects organization users).\n- `File` — single file upload.\n- `MultiFile` — multi-file upload (in-app \"File Upload\").\n- `Document` — document approval field; links the task to a document review.\n- `Table` — rows × columns of cells; users fill cell values.\n- `SendRichEmail` — pre-written email embedded in the task; sent manually by the user or\n  automatically when the task is completed.\n- `Hidden` — only visible when editing the workflow; populated by integrations or default values.\n- `Snippet` — only visible when editing; passes static text or merge tags into automations.\n","type":"string","enum":["Date","Document","Email","File","Hidden","Members","MultiChoice","MultiFile","MultiSelect","Number","Select","SendRichEmail","Snippet","Table","Text","Textarea","Url"],"const":"Date"}}},"PublicApiDateFormFieldConstraints1":{"title":"PublicApiDateFormFieldConstraints","type":"object","properties":{"afterDate":{"description":"Earliest accepted date (inclusive). Pair with `afterDateSourceType`.","type":"string","format":"date-time"},"beforeDate":{"description":"Latest accepted date (inclusive). Pair with `beforeDateSourceType`.","type":"string","format":"date-time"},"afterDateFormFieldWidgetGroupId":{"title":"EntityID","description":"When `afterDateSourceType=FormField`, the ID of the Date form field whose value is the lower bound.","type":"string"},"beforeDateFormFieldWidgetGroupId":{"title":"EntityID","description":"When `beforeDateSourceType=FormField`, the ID of the Date form field whose value is the upper bound.","type":"string"},"afterDateSourceType":{"description":"How the before/after constraint date is derived.\n\n- `SpecificDate` — an absolute date supplied as `afterDate` / `beforeDate`.\n- `FormFieldValue` — derived from another Date form field (`afterDateField` / `beforeDateField`).\n- `TaskDueDate` — relative to the containing task's due date.\n- `ChecklistStartDate` / `ChecklistDueDate` — relative to the workflow run's start or due date.\n","type":"string","enum":["SpecificDate","FormFieldValue","TaskDueDate","ChecklistStartDate","ChecklistDueDate"]},"beforeDateSourceType":{"description":"How the before/after constraint date is derived.\n\n- `SpecificDate` — an absolute date supplied as `afterDate` / `beforeDate`.\n- `FormFieldValue` — derived from another Date form field (`afterDateField` / `beforeDateField`).\n- `TaskDueDate` — relative to the containing task's due date.\n- `ChecklistStartDate` / `ChecklistDueDate` — relative to the workflow run's start or due date.\n","type":"string","enum":["SpecificDate","FormFieldValue","TaskDueDate","ChecklistStartDate","ChecklistDueDate"]},"afterDateOffset":{"description":"ISO 8601 duration (e.g. `P7D`, `P1Y2M`).","type":"string"},"beforeDateOffset":{"description":"ISO 8601 duration (e.g. `P7D`, `P1Y2M`).","type":"string"}}},"PublicApiDocumentFormFieldConfig":{"title":"PublicApiDocumentFormFieldConfig","type":"object","required":["reviewRequest","fieldType"],"properties":{"reviewRequest":{"description":"When `true`, the email requires explicit user review/send rather than auto-send.","type":"boolean"},"defaultValue":{"description":"Default value pre-filled when a new workflow run is created.","type":"string"},"fieldType":{"description":"Form-field subtype discriminator (only relevant when widget `type` is `FormField`).\n\n- `Text` — short text input (≤255 characters).\n- `Textarea` — long-form text.\n- `Email` — email address.\n- `Url` — website / URL.\n- `Number` — numeric input with optional unit and constraints.\n- `Date` — date or date+time picker.\n- `Select` — dropdown; user picks one option.\n- `MultiChoice` — checkboxes; user picks one or more options.\n- `MultiSelect` — Subtasks: a checklist of sub-items inside the task.\n- `Members` — assignee picker (selects organization users).\n- `File` — single file upload.\n- `MultiFile` — multi-file upload (in-app \"File Upload\").\n- `Document` — document approval field; links the task to a document review.\n- `Table` — rows × columns of cells; users fill cell values.\n- `SendRichEmail` — pre-written email embedded in the task; sent manually by the user or\n  automatically when the task is completed.\n- `Hidden` — only visible when editing the workflow; populated by integrations or default values.\n- `Snippet` — only visible when editing; passes static text or merge tags into automations.\n","type":"string","enum":["Date","Document","Email","File","Hidden","Members","MultiChoice","MultiFile","MultiSelect","Number","Select","SendRichEmail","Snippet","Table","Text","Textarea","Url"],"const":"Document"}}},"PublicApiDocumentFormFieldConfig1":{"title":"PublicApiDocumentFormFieldConfig","type":"object","required":["reviewRequest"],"properties":{"reviewRequest":{"description":"When `true`, the email requires explicit user review/send rather than auto-send.","type":"boolean"},"defaultValue":{"description":"Default value pre-filled when a new workflow run is created.","type":"string"}}},"PublicApiEmailFormFieldConfig":{"title":"PublicApiEmailFormFieldConfig","type":"object","required":["fieldType"],"properties":{"placeholder":{"description":"Placeholder hint shown in the input when no value has been entered.","type":"string"},"defaultValue":{"description":"Default value pre-filled when a new workflow run is created.","type":"string"},"fieldType":{"description":"Form-field subtype discriminator (only relevant when widget `type` is `FormField`).\n\n- `Text` — short text input (≤255 characters).\n- `Textarea` — long-form text.\n- `Email` — email address.\n- `Url` — website / URL.\n- `Number` — numeric input with optional unit and constraints.\n- `Date` — date or date+time picker.\n- `Select` — dropdown; user picks one option.\n- `MultiChoice` — checkboxes; user picks one or more options.\n- `MultiSelect` — Subtasks: a checklist of sub-items inside the task.\n- `Members` — assignee picker (selects organization users).\n- `File` — single file upload.\n- `MultiFile` — multi-file upload (in-app \"File Upload\").\n- `Document` — document approval field; links the task to a document review.\n- `Table` — rows × columns of cells; users fill cell values.\n- `SendRichEmail` — pre-written email embedded in the task; sent manually by the user or\n  automatically when the task is completed.\n- `Hidden` — only visible when editing the workflow; populated by integrations or default values.\n- `Snippet` — only visible when editing; passes static text or merge tags into automations.\n","type":"string","enum":["Date","Document","Email","File","Hidden","Members","MultiChoice","MultiFile","MultiSelect","Number","Select","SendRichEmail","Snippet","Table","Text","Textarea","Url"],"const":"Email"}}},"PublicApiEmailFormFieldConfig1":{"title":"PublicApiEmailFormFieldConfig","type":"object","properties":{"placeholder":{"description":"Placeholder hint shown in the input when no value has been entered.","type":"string"},"defaultValue":{"description":"Default value pre-filled when a new workflow run is created.","type":"string"}}},"PublicApiEmailFormFieldConstraints":{"title":"PublicApiEmailFormFieldConstraints","type":"object","required":["fieldType"],"properties":{"domains":{"description":"Allowed (or blocked, depending on `restriction`) email domains for this field.","type":"array","items":{"type":"string"}},"restriction":{"description":"How the `domains` list filters allowed email addresses.\n\n- `Allow` — only emails whose domain is in the list are accepted.\n- `Block` — emails whose domain is in the list are rejected; all others accepted.\n","type":"string","enum":["Allow","Block"]},"fieldType":{"description":"Form-field subtype discriminator (only relevant when widget `type` is `FormField`).\n\n- `Text` — short text input (≤255 characters).\n- `Textarea` — long-form text.\n- `Email` — email address.\n- `Url` — website / URL.\n- `Number` — numeric input with optional unit and constraints.\n- `Date` — date or date+time picker.\n- `Select` — dropdown; user picks one option.\n- `MultiChoice` — checkboxes; user picks one or more options.\n- `MultiSelect` — Subtasks: a checklist of sub-items inside the task.\n- `Members` — assignee picker (selects organization users).\n- `File` — single file upload.\n- `MultiFile` — multi-file upload (in-app \"File Upload\").\n- `Document` — document approval field; links the task to a document review.\n- `Table` — rows × columns of cells; users fill cell values.\n- `SendRichEmail` — pre-written email embedded in the task; sent manually by the user or\n  automatically when the task is completed.\n- `Hidden` — only visible when editing the workflow; populated by integrations or default values.\n- `Snippet` — only visible when editing; passes static text or merge tags into automations.\n","type":"string","enum":["Date","Document","Email","File","Hidden","Members","MultiChoice","MultiFile","MultiSelect","Number","Select","SendRichEmail","Snippet","Table","Text","Textarea","Url"],"const":"Email"}}},"PublicApiEmailFormFieldConstraints1":{"title":"PublicApiEmailFormFieldConstraints","type":"object","properties":{"domains":{"description":"Allowed (or blocked, depending on `restriction`) email domains for this field.","type":"array","items":{"type":"string"}},"restriction":{"description":"How the `domains` list filters allowed email addresses.\n\n- `Allow` — only emails whose domain is in the list are accepted.\n- `Block` — emails whose domain is in the list are rejected; all others accepted.\n","type":"string","enum":["Allow","Block"]}}},"PublicApiEmbedWidget":{"title":"PublicApiEmbedWidget","type":"object","required":["hiddenByDefault","id","taskId","createdDate","createdBy","updatedDate","updatedBy","type"],"properties":{"hiddenByDefault":{"description":"When `true`, the widget is hidden by default; conditional logic rules can reveal it at runtime. Defaults to `false`.","type":"boolean"},"id":{"description":"The ID of the Widget","examples":["t2jRHTZdhq4BoX6ZlKd0ng"],"type":"string"},"taskId":{"description":"The ID of the Task","examples":["t2jRHTZdhq4BoX6ZlKd0ng"],"type":"string"},"createdDate":{"description":"When the resource was first created. ISO-8601 UTC.","type":"string","format":"date-time"},"createdBy":{"description":"User who created the resource.","examples":[{"id":"iUu2eOU2Q-sBoX6ZjZV9pQ","email":"jane.doe@example.com","username":"Jane Doe"}],"type":"object","required":["id","email","username"],"properties":{"id":{"title":"EntityID","description":"The resource's ID.","type":"string"},"email":{"description":"The user's email address (also their login identifier).","type":"string"},"username":{"description":"The user's display name (e.g. `Jane Doe`).","type":"string"}}},"updatedDate":{"description":"When the resource was last modified. ISO-8601 UTC.","type":"string","format":"date-time"},"updatedBy":{"description":"User who last modified the resource.","examples":[{"id":"iUu2eOU2Q-sBoX6ZjZV9pQ","email":"jane.doe@example.com","username":"Jane Doe"}],"type":"object","required":["id","email","username"],"properties":{"id":{"title":"EntityID","description":"The resource's ID.","type":"string"},"email":{"description":"The user's email address (also their login identifier).","type":"string"},"username":{"description":"The user's display name (e.g. `Jane Doe`).","type":"string"}}},"url":{"description":"Target URL.","type":"string"},"links":{"description":"Navigable HATEOAS links to related resources. Each entry has a `name` (RFC-5988 relation), an `href` URL, and a `type` (`Api` or `App`).","type":"array","items":{"title":"Link","description":"A HATEOAS link to a related resource. Use these to navigate between resources without constructing URLs by hand.","type":"object","required":["name","href","type"],"properties":{"name":{"description":"Standard link relation name (RFC 5988) indicating this link's role. Common values include `self`, `edit`, `related`, `previous`, `next`.","type":"string"},"href":{"title":"Uri","description":"URL of the linked resource.","examples":["https://api.process.st/api/v1.1/resource/XXX"],"type":"string"},"rel":{"description":"Optional. The kind of resource this link points to (e.g. `Workflow`, `Task`, `Comment`).","type":"string","enum":["Approval Task","Approvals","Assignees","Comment","Data Set Records","Data Sets","Form Field Values","Subject Task","Task","Tasks","Users","Webhook","Workflow","Workflow Run"]},"type":{"description":"Whether this link targets an API endpoint or a Process Street app URL. `Api` — a callable API endpoint you can fetch directly. `App` — a browser-facing URL in the Process Street UI.","type":"string","enum":["Api","App"]}}}},"type":{"title":"WidgetType","description":"Widget kind discriminator.\n\n- `FormField` — collects user input (Text, Number, Date, etc. — see `fieldType`).\n- `Text` — rich text content displayed on the task.\n- `Image` — image content displayed on the task.\n- `File` — downloadable file attached to the task.\n- `Video` — video content (uploaded or linked from a hosting service).\n- `Embed` — embedded external content via URL.\n- `CrossLink` — link to another workflow or page.\n","type":"string","enum":["FormField","Text","Image","File","Video","Embed","CrossLink"]}}},"PublicApiFileFormFieldConfig":{"title":"PublicApiFileFormFieldConfig","type":"object","required":["fieldType"],"properties":{"placeholder":{"description":"Placeholder hint shown in the input when no value has been entered.","type":"string"},"extractTextContent":{"description":"When `true`, server extracts text from uploaded documents for use in merge tags.","type":"boolean"},"fieldType":{"description":"Form-field subtype discriminator (only relevant when widget `type` is `FormField`).\n\n- `Text` — short text input (≤255 characters).\n- `Textarea` — long-form text.\n- `Email` — email address.\n- `Url` — website / URL.\n- `Number` — numeric input with optional unit and constraints.\n- `Date` — date or date+time picker.\n- `Select` — dropdown; user picks one option.\n- `MultiChoice` — checkboxes; user picks one or more options.\n- `MultiSelect` — Subtasks: a checklist of sub-items inside the task.\n- `Members` — assignee picker (selects organization users).\n- `File` — single file upload.\n- `MultiFile` — multi-file upload (in-app \"File Upload\").\n- `Document` — document approval field; links the task to a document review.\n- `Table` — rows × columns of cells; users fill cell values.\n- `SendRichEmail` — pre-written email embedded in the task; sent manually by the user or\n  automatically when the task is completed.\n- `Hidden` — only visible when editing the workflow; populated by integrations or default values.\n- `Snippet` — only visible when editing; passes static text or merge tags into automations.\n","type":"string","enum":["Date","Document","Email","File","Hidden","Members","MultiChoice","MultiFile","MultiSelect","Number","Select","SendRichEmail","Snippet","Table","Text","Textarea","Url"],"const":"File"}}},"PublicApiFileFormFieldConfig1":{"title":"PublicApiFileFormFieldConfig","type":"object","properties":{"placeholder":{"description":"Placeholder hint shown in the input when no value has been entered.","type":"string"},"extractTextContent":{"description":"When `true`, server extracts text from uploaded documents for use in merge tags.","type":"boolean"}}},"PublicApiFileFormFieldConstraints":{"title":"PublicApiFileFormFieldConstraints","type":"object","required":["fieldType"],"properties":{"extensions":{"description":"Allowed file extensions, including the leading dot (e.g. `.pdf`, `.docx`).","type":"array","items":{"type":"string"}},"fieldType":{"description":"Form-field subtype discriminator (only relevant when widget `type` is `FormField`).\n\n- `Text` — short text input (≤255 characters).\n- `Textarea` — long-form text.\n- `Email` — email address.\n- `Url` — website / URL.\n- `Number` — numeric input with optional unit and constraints.\n- `Date` — date or date+time picker.\n- `Select` — dropdown; user picks one option.\n- `MultiChoice` — checkboxes; user picks one or more options.\n- `MultiSelect` — Subtasks: a checklist of sub-items inside the task.\n- `Members` — assignee picker (selects organization users).\n- `File` — single file upload.\n- `MultiFile` — multi-file upload (in-app \"File Upload\").\n- `Document` — document approval field; links the task to a document review.\n- `Table` — rows × columns of cells; users fill cell values.\n- `SendRichEmail` — pre-written email embedded in the task; sent manually by the user or\n  automatically when the task is completed.\n- `Hidden` — only visible when editing the workflow; populated by integrations or default values.\n- `Snippet` — only visible when editing; passes static text or merge tags into automations.\n","type":"string","enum":["Date","Document","Email","File","Hidden","Members","MultiChoice","MultiFile","MultiSelect","Number","Select","SendRichEmail","Snippet","Table","Text","Textarea","Url"],"const":"File"}}},"PublicApiFileFormFieldConstraints1":{"title":"PublicApiFileFormFieldConstraints","type":"object","properties":{"extensions":{"description":"Allowed file extensions, including the leading dot (e.g. `.pdf`, `.docx`).","type":"array","items":{"type":"string"}}}},"PublicApiFileUpload":{"title":"PublicApiFileUpload","description":"The resource returned by this request.","type":"object","required":["fileUploadId","uploadUrl","uploadMethod","uploadExpiresDate"],"properties":{"fileUploadId":{"description":"Opaque, single-use handle for this upload. Pass it to an `/upload` endpoint to attach the uploaded file to a target. Treat it as an opaque token.","type":"string"},"uploadUrl":{"description":"The URL to upload the file's bytes to, with a single `PUT` request.","type":"string"},"uploadMethod":{"description":"HTTP method to use when uploading to `uploadUrl`. Always `PUT`.","type":"string"},"uploadExpiresDate":{"description":"When `uploadUrl` expires. ISO-8601 UTC. Upload the bytes before this time.","type":"string","format":"date-time"}}},"PublicApiFileUploadResponse":{"title":"PublicApiFileUploadResponse","type":"object","required":["data"],"properties":{"data":{"title":"PublicApiFileUpload","description":"The resource returned by this request.","type":"object","required":["fileUploadId","uploadUrl","uploadMethod","uploadExpiresDate"],"properties":{"fileUploadId":{"description":"Opaque, single-use handle for this upload. Pass it to an `/upload` endpoint to attach the uploaded file to a target. Treat it as an opaque token.","type":"string"},"uploadUrl":{"description":"The URL to upload the file's bytes to, with a single `PUT` request.","type":"string"},"uploadMethod":{"description":"HTTP method to use when uploading to `uploadUrl`. Always `PUT`.","type":"string"},"uploadExpiresDate":{"description":"When `uploadUrl` expires. ISO-8601 UTC. Upload the bytes before this time.","type":"string","format":"date-time"}}},"links":{"description":"Pagination links. When the result has more pages, look for an entry with `name: \"next\"` — its `href` is the URL to fetch the next page. Absence of `next` means there are no more pages. For single-resource responses this array is typically empty.","type":"array","items":{"title":"Link","description":"A HATEOAS link to a related resource. Use these to navigate between resources without constructing URLs by hand.","type":"object","required":["name","href","type"],"properties":{"name":{"description":"Standard link relation name (RFC 5988) indicating this link's role. Common values include `self`, `edit`, `related`, `previous`, `next`.","type":"string"},"href":{"title":"Uri","description":"URL of the linked resource.","examples":["https://api.process.st/api/v1.1/resource/XXX"],"type":"string"},"rel":{"description":"Optional. The kind of resource this link points to (e.g. `Workflow`, `Task`, `Comment`).","type":"string","enum":["Approval Task","Approvals","Assignees","Comment","Data Set Records","Data Sets","Form Field Values","Subject Task","Task","Tasks","Users","Webhook","Workflow","Workflow Run"]},"type":{"description":"Whether this link targets an API endpoint or a Process Street app URL. `Api` — a callable API endpoint you can fetch directly. `App` — a browser-facing URL in the Process Street UI.","type":"string","enum":["Api","App"]}}}}}},"PublicApiFileWidget":{"title":"PublicApiFileWidget","type":"object","required":["hiddenByDefault","id","taskId","createdDate","createdBy","updatedDate","updatedBy","type"],"properties":{"hiddenByDefault":{"description":"When `true`, the widget is hidden by default; conditional logic rules can reveal it at runtime. Defaults to `false`.","type":"boolean"},"id":{"description":"The ID of the Widget","examples":["jaG4K_pc8rMBoX6ZlI9-QA"],"type":"string"},"taskId":{"description":"The ID of the Task","examples":["jaG4K_pc8rMBoX6ZlI9-QA"],"type":"string"},"createdDate":{"description":"When the resource was first created. ISO-8601 UTC.","type":"string","format":"date-time"},"createdBy":{"description":"User who created the resource.","examples":[{"id":"iUu2eOU2Q-sBoX6ZjZV9pQ","email":"jane.doe@example.com","username":"Jane Doe"}],"type":"object","required":["id","email","username"],"properties":{"id":{"title":"EntityID","description":"The resource's ID.","type":"string"},"email":{"description":"The user's email address (also their login identifier).","type":"string"},"username":{"description":"The user's display name (e.g. `Jane Doe`).","type":"string"}}},"updatedDate":{"description":"When the resource was last modified. ISO-8601 UTC.","type":"string","format":"date-time"},"updatedBy":{"description":"User who last modified the resource.","examples":[{"id":"iUu2eOU2Q-sBoX6ZjZV9pQ","email":"jane.doe@example.com","username":"Jane Doe"}],"type":"object","required":["id","email","username"],"properties":{"id":{"title":"EntityID","description":"The resource's ID.","type":"string"},"email":{"description":"The user's email address (also their login identifier).","type":"string"},"username":{"description":"The user's display name (e.g. `Jane Doe`).","type":"string"}}},"description":{"description":"Optional long-form description.","type":"string"},"file":{"title":"PublicApiWidgetFile","description":"Uploaded file reference. Use the upload endpoint to attach content.","type":"object","required":["id","name","mimeType","size"],"properties":{"id":{"title":"EntityID","description":"The resource's ID.","type":"string"},"name":{"description":"Display name.","type":"string"},"mimeType":{"description":"MIME type detected at upload time (e.g. `image/png`, `application/pdf`).","type":"string"},"size":{"description":"File size in bytes.","type":"integer","format":"int64"}}},"links":{"description":"Navigable HATEOAS links to related resources. Each entry has a `name` (RFC-5988 relation), an `href` URL, and a `type` (`Api` or `App`).","type":"array","items":{"title":"Link","description":"A HATEOAS link to a related resource. Use these to navigate between resources without constructing URLs by hand.","type":"object","required":["name","href","type"],"properties":{"name":{"description":"Standard link relation name (RFC 5988) indicating this link's role. Common values include `self`, `edit`, `related`, `previous`, `next`.","type":"string"},"href":{"title":"Uri","description":"URL of the linked resource.","examples":["https://api.process.st/api/v1.1/resource/XXX"],"type":"string"},"rel":{"description":"Optional. The kind of resource this link points to (e.g. `Workflow`, `Task`, `Comment`).","type":"string","enum":["Approval Task","Approvals","Assignees","Comment","Data Set Records","Data Sets","Form Field Values","Subject Task","Task","Tasks","Users","Webhook","Workflow","Workflow Run"]},"type":{"description":"Whether this link targets an API endpoint or a Process Street app URL. `Api` — a callable API endpoint you can fetch directly. `App` — a browser-facing URL in the Process Street UI.","type":"string","enum":["Api","App"]}}}},"type":{"title":"WidgetType","description":"Widget kind discriminator.\n\n- `FormField` — collects user input (Text, Number, Date, etc. — see `fieldType`).\n- `Text` — rich text content displayed on the task.\n- `Image` — image content displayed on the task.\n- `File` — downloadable file attached to the task.\n- `Video` — video content (uploaded or linked from a hosting service).\n- `Embed` — embedded external content via URL.\n- `CrossLink` — link to another workflow or page.\n","type":"string","enum":["FormField","Text","Image","File","Video","Embed","CrossLink"]}}},"PublicApiFolder":{"title":"PublicApiFolder","type":"object","required":["id","createdDate","createdBy","updatedDate","updatedBy","name"],"properties":{"id":{"description":"The ID of the Folder","examples":["obW2u7fsdjIBoX6ZjvZ-Hg"],"type":"string"},"createdDate":{"description":"When the resource was first created. ISO-8601 UTC.","type":"string","format":"date-time"},"createdBy":{"description":"User who created the resource.","examples":[{"id":"iUu2eOU2Q-sBoX6ZjZV9pQ","email":"jane.doe@example.com","username":"Jane Doe"}],"type":"object","required":["id","email","username"],"properties":{"id":{"title":"EntityID","description":"The resource's ID.","type":"string"},"email":{"description":"The user's email address (also their login identifier).","type":"string"},"username":{"description":"The user's display name (e.g. `Jane Doe`).","type":"string"}}},"updatedDate":{"description":"When the resource was last modified. ISO-8601 UTC.","type":"string","format":"date-time"},"updatedBy":{"description":"User who last modified the resource.","examples":[{"id":"iUu2eOU2Q-sBoX6ZjZV9pQ","email":"jane.doe@example.com","username":"Jane Doe"}],"type":"object","required":["id","email","username"],"properties":{"id":{"title":"EntityID","description":"The resource's ID.","type":"string"},"email":{"description":"The user's email address (also their login identifier).","type":"string"},"username":{"description":"The user's display name (e.g. `Jane Doe`).","type":"string"}}},"parentFolderId":{"title":"EntityID","type":"string"},"name":{"description":"The folder's display name.","type":"string"},"links":{"description":"Navigable HATEOAS links to related resources. Each entry has a `name` (RFC-5988 link relation like `self`, `edit`, `related`), an `href` URL, and a `type` (`Api` for callable endpoints, `App` for browser-facing URLs). Prefer following these `href` values over constructing URLs by hand.","type":"array","items":{"title":"Link","description":"A HATEOAS link to a related resource. Use these to navigate between resources without constructing URLs by hand.","type":"object","required":["name","href","type"],"properties":{"name":{"description":"Standard link relation name (RFC 5988) indicating this link's role. Common values include `self`, `edit`, `related`, `previous`, `next`.","type":"string"},"href":{"title":"Uri","description":"URL of the linked resource.","examples":["https://api.process.st/api/v1.1/resource/XXX"],"type":"string"},"rel":{"description":"Optional. The kind of resource this link points to (e.g. `Workflow`, `Task`, `Comment`).","type":"string","enum":["Approval Task","Approvals","Assignees","Comment","Data Set Records","Data Sets","Form Field Values","Subject Task","Task","Tasks","Users","Webhook","Workflow","Workflow Run"]},"type":{"description":"Whether this link targets an API endpoint or a Process Street app URL. `Api` — a callable API endpoint you can fetch directly. `App` — a browser-facing URL in the Process Street UI.","type":"string","enum":["Api","App"]}}}}}},"PublicApiFolderListResponse":{"title":"PublicApiFolderListResponse","type":"object","properties":{"data":{"description":"The list of resources returned by this request.","type":"array","items":{"title":"PublicApiFolder","type":"object","required":["id","createdDate","createdBy","updatedDate","updatedBy","name"],"properties":{"id":{"description":"The ID of the Folder","examples":["obW2u7fsdjIBoX6ZjvZ-Hg"],"type":"string"},"createdDate":{"description":"When the resource was first created. ISO-8601 UTC.","type":"string","format":"date-time"},"createdBy":{"description":"User who created the resource.","examples":[{"id":"iUu2eOU2Q-sBoX6ZjZV9pQ","email":"jane.doe@example.com","username":"Jane Doe"}],"type":"object","required":["id","email","username"],"properties":{"id":{"title":"EntityID","description":"The resource's ID.","type":"string"},"email":{"description":"The user's email address (also their login identifier).","type":"string"},"username":{"description":"The user's display name (e.g. `Jane Doe`).","type":"string"}}},"updatedDate":{"description":"When the resource was last modified. ISO-8601 UTC.","type":"string","format":"date-time"},"updatedBy":{"description":"User who last modified the resource.","examples":[{"id":"iUu2eOU2Q-sBoX6ZjZV9pQ","email":"jane.doe@example.com","username":"Jane Doe"}],"type":"object","required":["id","email","username"],"properties":{"id":{"title":"EntityID","description":"The resource's ID.","type":"string"},"email":{"description":"The user's email address (also their login identifier).","type":"string"},"username":{"description":"The user's display name (e.g. `Jane Doe`).","type":"string"}}},"parentFolderId":{"title":"EntityID","type":"string"},"name":{"description":"The folder's display name.","type":"string"},"links":{"description":"Navigable HATEOAS links to related resources. Each entry has a `name` (RFC-5988 link relation like `self`, `edit`, `related`), an `href` URL, and a `type` (`Api` for callable endpoints, `App` for browser-facing URLs). Prefer following these `href` values over constructing URLs by hand.","type":"array","items":{"title":"Link","description":"A HATEOAS link to a related resource. Use these to navigate between resources without constructing URLs by hand.","type":"object","required":["name","href","type"],"properties":{"name":{"description":"Standard link relation name (RFC 5988) indicating this link's role. Common values include `self`, `edit`, `related`, `previous`, `next`.","type":"string"},"href":{"title":"Uri","description":"URL of the linked resource.","examples":["https://api.process.st/api/v1.1/resource/XXX"],"type":"string"},"rel":{"description":"Optional. The kind of resource this link points to (e.g. `Workflow`, `Task`, `Comment`).","type":"string","enum":["Approval Task","Approvals","Assignees","Comment","Data Set Records","Data Sets","Form Field Values","Subject Task","Task","Tasks","Users","Webhook","Workflow","Workflow Run"]},"type":{"description":"Whether this link targets an API endpoint or a Process Street app URL. `Api` — a callable API endpoint you can fetch directly. `App` — a browser-facing URL in the Process Street UI.","type":"string","enum":["Api","App"]}}}}}}},"links":{"description":"Pagination links. When the result has more pages, look for an entry with `name: \"next\"` — its `href` is the URL to fetch the next page. Absence of `next` means there are no more pages. For single-resource responses this array is typically empty.","type":"array","items":{"title":"Link","description":"A HATEOAS link to a related resource. Use these to navigate between resources without constructing URLs by hand.","type":"object","required":["name","href","type"],"properties":{"name":{"description":"Standard link relation name (RFC 5988) indicating this link's role. Common values include `self`, `edit`, `related`, `previous`, `next`.","type":"string"},"href":{"title":"Uri","description":"URL of the linked resource.","examples":["https://api.process.st/api/v1.1/resource/XXX"],"type":"string"},"rel":{"description":"Optional. The kind of resource this link points to (e.g. `Workflow`, `Task`, `Comment`).","type":"string","enum":["Approval Task","Approvals","Assignees","Comment","Data Set Records","Data Sets","Form Field Values","Subject Task","Task","Tasks","Users","Webhook","Workflow","Workflow Run"]},"type":{"description":"Whether this link targets an API endpoint or a Process Street app URL. `Api` — a callable API endpoint you can fetch directly. `App` — a browser-facing URL in the Process Street UI.","type":"string","enum":["Api","App"]}}}}}},"PublicApiFolderPermission":{"title":"PublicApiFolderPermission","type":"object","required":["user","accessLevel","permissions"],"properties":{"user":{"description":"User this entry refers to.","examples":[{"id":"iUu2eOU2Q-sBoX6ZjZV9pQ","email":"jane.doe@example.com","username":"Jane Doe"}],"type":"object","required":["id","email","username"],"properties":{"id":{"title":"EntityID","description":"The resource's ID.","type":"string"},"email":{"description":"The user's email address (also their login identifier).","type":"string"},"username":{"description":"The user's display name (e.g. `Jane Doe`).","type":"string"}}},"accessLevel":{"description":"Access level a user or group has on this folder. The level cascades to every workflow, page, and run inside the folder. `Edit` — full edit on the folder and all its contents; can run workflows and view all runs. `EditViewOwn` — edit folder contents and run workflows, but only see runs assigned to them (available on some plans). `ViewAll` — view the folder, all its contents, and all runs; can run workflows but cannot edit. `Run` — view the folder and run its workflows; only sees runs assigned to them. `View` — view the folder and its contents; cannot run workflows. `Custom` — the user's underlying permission atoms don't match any predefined level; inspect the `permissions` object on the same entry for the actual atoms.","type":"string","enum":["Edit","EditViewOwn","ViewAll","Run","View","Custom"]},"permissions":{"title":"PublicApiFolderPermissionAtoms","description":"Granular permission flags this user or group has on the folder and its contents.","type":"object","required":["folderCreate","folderRead","folderUpdate","folderDelete","templateCreate","templateRead","templateUpdate","templateDelete","pageCreate","pageRead","pageUpdate","pageDelete","checklistCreate","checklistRead","checklistUpdate","checklistDelete","doodadCreate","doodadRead","doodadUpdate","doodadDelete"],"properties":{"folderCreate":{"description":"Can create subfolders inside this folder.","type":"boolean"},"folderRead":{"description":"Can view this folder.","type":"boolean"},"folderUpdate":{"description":"Can edit this folder (rename, move).","type":"boolean"},"folderDelete":{"description":"Can delete this folder.","type":"boolean"},"templateCreate":{"description":"Can create workflows inside this folder.","type":"boolean"},"templateRead":{"description":"Can view workflows inside this folder.","type":"boolean"},"templateUpdate":{"description":"Can edit workflows inside this folder.","type":"boolean"},"templateDelete":{"description":"Can delete workflows inside this folder.","type":"boolean"},"pageCreate":{"description":"Can create pages inside this folder.","type":"boolean"},"pageRead":{"description":"Can view pages inside this folder.","type":"boolean"},"pageUpdate":{"description":"Can edit pages inside this folder.","type":"boolean"},"pageDelete":{"description":"Can delete pages inside this folder.","type":"boolean"},"checklistCreate":{"description":"Can start workflow runs from workflows in this folder.","type":"boolean"},"checklistRead":{"description":"Can view workflow runs of workflows in this folder.","type":"boolean"},"checklistUpdate":{"description":"Can edit workflow runs (e.g. complete tasks, fill form fields, change due dates).","type":"boolean"},"checklistDelete":{"description":"Can delete workflow runs.","type":"boolean"},"doodadCreate":{"description":"Can add comments and attachments to workflow runs.","type":"boolean"},"doodadRead":{"description":"Can view comments and attachments on workflow runs.","type":"boolean"},"doodadUpdate":{"description":"Can edit comments and attachments on workflow runs.","type":"boolean"},"doodadDelete":{"description":"Can delete comments and attachments on workflow runs.","type":"boolean"}}}}},"PublicApiFolderPermissionAtoms":{"title":"PublicApiFolderPermissionAtoms","description":"Granular permission flags this user or group has on the folder and its contents.","type":"object","required":["folderCreate","folderRead","folderUpdate","folderDelete","templateCreate","templateRead","templateUpdate","templateDelete","pageCreate","pageRead","pageUpdate","pageDelete","checklistCreate","checklistRead","checklistUpdate","checklistDelete","doodadCreate","doodadRead","doodadUpdate","doodadDelete"],"properties":{"folderCreate":{"description":"Can create subfolders inside this folder.","type":"boolean"},"folderRead":{"description":"Can view this folder.","type":"boolean"},"folderUpdate":{"description":"Can edit this folder (rename, move).","type":"boolean"},"folderDelete":{"description":"Can delete this folder.","type":"boolean"},"templateCreate":{"description":"Can create workflows inside this folder.","type":"boolean"},"templateRead":{"description":"Can view workflows inside this folder.","type":"boolean"},"templateUpdate":{"description":"Can edit workflows inside this folder.","type":"boolean"},"templateDelete":{"description":"Can delete workflows inside this folder.","type":"boolean"},"pageCreate":{"description":"Can create pages inside this folder.","type":"boolean"},"pageRead":{"description":"Can view pages inside this folder.","type":"boolean"},"pageUpdate":{"description":"Can edit pages inside this folder.","type":"boolean"},"pageDelete":{"description":"Can delete pages inside this folder.","type":"boolean"},"checklistCreate":{"description":"Can start workflow runs from workflows in this folder.","type":"boolean"},"checklistRead":{"description":"Can view workflow runs of workflows in this folder.","type":"boolean"},"checklistUpdate":{"description":"Can edit workflow runs (e.g. complete tasks, fill form fields, change due dates).","type":"boolean"},"checklistDelete":{"description":"Can delete workflow runs.","type":"boolean"},"doodadCreate":{"description":"Can add comments and attachments to workflow runs.","type":"boolean"},"doodadRead":{"description":"Can view comments and attachments on workflow runs.","type":"boolean"},"doodadUpdate":{"description":"Can edit comments and attachments on workflow runs.","type":"boolean"},"doodadDelete":{"description":"Can delete comments and attachments on workflow runs.","type":"boolean"}}},"PublicApiFolderPermissionListResponse":{"title":"PublicApiFolderPermissionListResponse","type":"object","properties":{"data":{"description":"The list of resources returned by this request.","type":"array","items":{"title":"PublicApiFolderPermission","type":"object","required":["user","accessLevel","permissions"],"properties":{"user":{"description":"User this entry refers to.","examples":[{"id":"iUu2eOU2Q-sBoX6ZjZV9pQ","email":"jane.doe@example.com","username":"Jane Doe"}],"type":"object","required":["id","email","username"],"properties":{"id":{"title":"EntityID","description":"The resource's ID.","type":"string"},"email":{"description":"The user's email address (also their login identifier).","type":"string"},"username":{"description":"The user's display name (e.g. `Jane Doe`).","type":"string"}}},"accessLevel":{"description":"Access level a user or group has on this folder. The level cascades to every workflow, page, and run inside the folder. `Edit` — full edit on the folder and all its contents; can run workflows and view all runs. `EditViewOwn` — edit folder contents and run workflows, but only see runs assigned to them (available on some plans). `ViewAll` — view the folder, all its contents, and all runs; can run workflows but cannot edit. `Run` — view the folder and run its workflows; only sees runs assigned to them. `View` — view the folder and its contents; cannot run workflows. `Custom` — the user's underlying permission atoms don't match any predefined level; inspect the `permissions` object on the same entry for the actual atoms.","type":"string","enum":["Edit","EditViewOwn","ViewAll","Run","View","Custom"]},"permissions":{"title":"PublicApiFolderPermissionAtoms","description":"Granular permission flags this user or group has on the folder and its contents.","type":"object","required":["folderCreate","folderRead","folderUpdate","folderDelete","templateCreate","templateRead","templateUpdate","templateDelete","pageCreate","pageRead","pageUpdate","pageDelete","checklistCreate","checklistRead","checklistUpdate","checklistDelete","doodadCreate","doodadRead","doodadUpdate","doodadDelete"],"properties":{"folderCreate":{"description":"Can create subfolders inside this folder.","type":"boolean"},"folderRead":{"description":"Can view this folder.","type":"boolean"},"folderUpdate":{"description":"Can edit this folder (rename, move).","type":"boolean"},"folderDelete":{"description":"Can delete this folder.","type":"boolean"},"templateCreate":{"description":"Can create workflows inside this folder.","type":"boolean"},"templateRead":{"description":"Can view workflows inside this folder.","type":"boolean"},"templateUpdate":{"description":"Can edit workflows inside this folder.","type":"boolean"},"templateDelete":{"description":"Can delete workflows inside this folder.","type":"boolean"},"pageCreate":{"description":"Can create pages inside this folder.","type":"boolean"},"pageRead":{"description":"Can view pages inside this folder.","type":"boolean"},"pageUpdate":{"description":"Can edit pages inside this folder.","type":"boolean"},"pageDelete":{"description":"Can delete pages inside this folder.","type":"boolean"},"checklistCreate":{"description":"Can start workflow runs from workflows in this folder.","type":"boolean"},"checklistRead":{"description":"Can view workflow runs of workflows in this folder.","type":"boolean"},"checklistUpdate":{"description":"Can edit workflow runs (e.g. complete tasks, fill form fields, change due dates).","type":"boolean"},"checklistDelete":{"description":"Can delete workflow runs.","type":"boolean"},"doodadCreate":{"description":"Can add comments and attachments to workflow runs.","type":"boolean"},"doodadRead":{"description":"Can view comments and attachments on workflow runs.","type":"boolean"},"doodadUpdate":{"description":"Can edit comments and attachments on workflow runs.","type":"boolean"},"doodadDelete":{"description":"Can delete comments and attachments on workflow runs.","type":"boolean"}}}}}},"links":{"description":"Pagination links. When the result has more pages, look for an entry with `name: \"next\"` — its `href` is the URL to fetch the next page. Absence of `next` means there are no more pages. For single-resource responses this array is typically empty.","type":"array","items":{"title":"Link","description":"A HATEOAS link to a related resource. Use these to navigate between resources without constructing URLs by hand.","type":"object","required":["name","href","type"],"properties":{"name":{"description":"Standard link relation name (RFC 5988) indicating this link's role. Common values include `self`, `edit`, `related`, `previous`, `next`.","type":"string"},"href":{"title":"Uri","description":"URL of the linked resource.","examples":["https://api.process.st/api/v1.1/resource/XXX"],"type":"string"},"rel":{"description":"Optional. The kind of resource this link points to (e.g. `Workflow`, `Task`, `Comment`).","type":"string","enum":["Approval Task","Approvals","Assignees","Comment","Data Set Records","Data Sets","Form Field Values","Subject Task","Task","Tasks","Users","Webhook","Workflow","Workflow Run"]},"type":{"description":"Whether this link targets an API endpoint or a Process Street app URL. `Api` — a callable API endpoint you can fetch directly. `App` — a browser-facing URL in the Process Street UI.","type":"string","enum":["Api","App"]}}}}}},"PublicApiFolderResponse":{"title":"PublicApiFolderResponse","type":"object","required":["data"],"properties":{"data":{"title":"PublicApiFolder","type":"object","required":["id","createdDate","createdBy","updatedDate","updatedBy","name"],"properties":{"id":{"description":"The ID of the Folder","examples":["obW2u7fsdjIBoX6ZjvZ-Hg"],"type":"string"},"createdDate":{"description":"When the resource was first created. ISO-8601 UTC.","type":"string","format":"date-time"},"createdBy":{"description":"User who created the resource.","examples":[{"id":"iUu2eOU2Q-sBoX6ZjZV9pQ","email":"jane.doe@example.com","username":"Jane Doe"}],"type":"object","required":["id","email","username"],"properties":{"id":{"title":"EntityID","description":"The resource's ID.","type":"string"},"email":{"description":"The user's email address (also their login identifier).","type":"string"},"username":{"description":"The user's display name (e.g. `Jane Doe`).","type":"string"}}},"updatedDate":{"description":"When the resource was last modified. ISO-8601 UTC.","type":"string","format":"date-time"},"updatedBy":{"description":"User who last modified the resource.","examples":[{"id":"iUu2eOU2Q-sBoX6ZjZV9pQ","email":"jane.doe@example.com","username":"Jane Doe"}],"type":"object","required":["id","email","username"],"properties":{"id":{"title":"EntityID","description":"The resource's ID.","type":"string"},"email":{"description":"The user's email address (also their login identifier).","type":"string"},"username":{"description":"The user's display name (e.g. `Jane Doe`).","type":"string"}}},"parentFolderId":{"title":"EntityID","type":"string"},"name":{"description":"The folder's display name.","type":"string"},"links":{"description":"Navigable HATEOAS links to related resources. Each entry has a `name` (RFC-5988 link relation like `self`, `edit`, `related`), an `href` URL, and a `type` (`Api` for callable endpoints, `App` for browser-facing URLs). Prefer following these `href` values over constructing URLs by hand.","type":"array","items":{"title":"Link","description":"A HATEOAS link to a related resource. Use these to navigate between resources without constructing URLs by hand.","type":"object","required":["name","href","type"],"properties":{"name":{"description":"Standard link relation name (RFC 5988) indicating this link's role. Common values include `self`, `edit`, `related`, `previous`, `next`.","type":"string"},"href":{"title":"Uri","description":"URL of the linked resource.","examples":["https://api.process.st/api/v1.1/resource/XXX"],"type":"string"},"rel":{"description":"Optional. The kind of resource this link points to (e.g. `Workflow`, `Task`, `Comment`).","type":"string","enum":["Approval Task","Approvals","Assignees","Comment","Data Set Records","Data Sets","Form Field Values","Subject Task","Task","Tasks","Users","Webhook","Workflow","Workflow Run"]},"type":{"description":"Whether this link targets an API endpoint or a Process Street app URL. `Api` — a callable API endpoint you can fetch directly. `App` — a browser-facing URL in the Process Street UI.","type":"string","enum":["Api","App"]}}}}}},"links":{"description":"Pagination links. When the result has more pages, look for an entry with `name: \"next\"` — its `href` is the URL to fetch the next page. Absence of `next` means there are no more pages. For single-resource responses this array is typically empty.","type":"array","items":{"title":"Link","description":"A HATEOAS link to a related resource. Use these to navigate between resources without constructing URLs by hand.","type":"object","required":["name","href","type"],"properties":{"name":{"description":"Standard link relation name (RFC 5988) indicating this link's role. Common values include `self`, `edit`, `related`, `previous`, `next`.","type":"string"},"href":{"title":"Uri","description":"URL of the linked resource.","examples":["https://api.process.st/api/v1.1/resource/XXX"],"type":"string"},"rel":{"description":"Optional. The kind of resource this link points to (e.g. `Workflow`, `Task`, `Comment`).","type":"string","enum":["Approval Task","Approvals","Assignees","Comment","Data Set Records","Data Sets","Form Field Values","Subject Task","Task","Tasks","Users","Webhook","Workflow","Workflow Run"]},"type":{"description":"Whether this link targets an API endpoint or a Process Street app URL. `Api` — a callable API endpoint you can fetch directly. `App` — a browser-facing URL in the Process Street UI.","type":"string","enum":["Api","App"]}}}}}},"PublicApiFormFieldConfig":{"title":"PublicApiFormFieldConfig","oneOf":[{"title":"PublicApiDateFormFieldConfig","type":"object","required":["fieldType"],"properties":{"defaultValue":{"description":"Default value pre-filled when a new workflow run is created.","type":"string"},"timeOption":{"description":"How time-of-day is handled on this Date field.\n\n- `Included` — the field always captures both date and time.\n- `Excluded` — date only; time is never captured.\n- `Optional` — the user picks whether to include a time.\n","type":"string","enum":["Included","Excluded","Optional"]},"fieldType":{"description":"Form-field subtype discriminator (only relevant when widget `type` is `FormField`).\n\n- `Text` — short text input (≤255 characters).\n- `Textarea` — long-form text.\n- `Email` — email address.\n- `Url` — website / URL.\n- `Number` — numeric input with optional unit and constraints.\n- `Date` — date or date+time picker.\n- `Select` — dropdown; user picks one option.\n- `MultiChoice` — checkboxes; user picks one or more options.\n- `MultiSelect` — Subtasks: a checklist of sub-items inside the task.\n- `Members` — assignee picker (selects organization users).\n- `File` — single file upload.\n- `MultiFile` — multi-file upload (in-app \"File Upload\").\n- `Document` — document approval field; links the task to a document review.\n- `Table` — rows × columns of cells; users fill cell values.\n- `SendRichEmail` — pre-written email embedded in the task; sent manually by the user or\n  automatically when the task is completed.\n- `Hidden` — only visible when editing the workflow; populated by integrations or default values.\n- `Snippet` — only visible when editing; passes static text or merge tags into automations.\n","type":"string","enum":["Date","Document","Email","File","Hidden","Members","MultiChoice","MultiFile","MultiSelect","Number","Select","SendRichEmail","Snippet","Table","Text","Textarea","Url"],"const":"Date"}}},{"title":"PublicApiDocumentFormFieldConfig","type":"object","required":["reviewRequest","fieldType"],"properties":{"reviewRequest":{"description":"When `true`, the email requires explicit user review/send rather than auto-send.","type":"boolean"},"defaultValue":{"description":"Default value pre-filled when a new workflow run is created.","type":"string"},"fieldType":{"description":"Form-field subtype discriminator (only relevant when widget `type` is `FormField`).\n\n- `Text` — short text input (≤255 characters).\n- `Textarea` — long-form text.\n- `Email` — email address.\n- `Url` — website / URL.\n- `Number` — numeric input with optional unit and constraints.\n- `Date` — date or date+time picker.\n- `Select` — dropdown; user picks one option.\n- `MultiChoice` — checkboxes; user picks one or more options.\n- `MultiSelect` — Subtasks: a checklist of sub-items inside the task.\n- `Members` — assignee picker (selects organization users).\n- `File` — single file upload.\n- `MultiFile` — multi-file upload (in-app \"File Upload\").\n- `Document` — document approval field; links the task to a document review.\n- `Table` — rows × columns of cells; users fill cell values.\n- `SendRichEmail` — pre-written email embedded in the task; sent manually by the user or\n  automatically when the task is completed.\n- `Hidden` — only visible when editing the workflow; populated by integrations or default values.\n- `Snippet` — only visible when editing; passes static text or merge tags into automations.\n","type":"string","enum":["Date","Document","Email","File","Hidden","Members","MultiChoice","MultiFile","MultiSelect","Number","Select","SendRichEmail","Snippet","Table","Text","Textarea","Url"],"const":"Document"}}},{"title":"PublicApiEmailFormFieldConfig","type":"object","required":["fieldType"],"properties":{"placeholder":{"description":"Placeholder hint shown in the input when no value has been entered.","type":"string"},"defaultValue":{"description":"Default value pre-filled when a new workflow run is created.","type":"string"},"fieldType":{"description":"Form-field subtype discriminator (only relevant when widget `type` is `FormField`).\n\n- `Text` — short text input (≤255 characters).\n- `Textarea` — long-form text.\n- `Email` — email address.\n- `Url` — website / URL.\n- `Number` — numeric input with optional unit and constraints.\n- `Date` — date or date+time picker.\n- `Select` — dropdown; user picks one option.\n- `MultiChoice` — checkboxes; user picks one or more options.\n- `MultiSelect` — Subtasks: a checklist of sub-items inside the task.\n- `Members` — assignee picker (selects organization users).\n- `File` — single file upload.\n- `MultiFile` — multi-file upload (in-app \"File Upload\").\n- `Document` — document approval field; links the task to a document review.\n- `Table` — rows × columns of cells; users fill cell values.\n- `SendRichEmail` — pre-written email embedded in the task; sent manually by the user or\n  automatically when the task is completed.\n- `Hidden` — only visible when editing the workflow; populated by integrations or default values.\n- `Snippet` — only visible when editing; passes static text or merge tags into automations.\n","type":"string","enum":["Date","Document","Email","File","Hidden","Members","MultiChoice","MultiFile","MultiSelect","Number","Select","SendRichEmail","Snippet","Table","Text","Textarea","Url"],"const":"Email"}}},{"title":"PublicApiFileFormFieldConfig","type":"object","required":["fieldType"],"properties":{"placeholder":{"description":"Placeholder hint shown in the input when no value has been entered.","type":"string"},"extractTextContent":{"description":"When `true`, server extracts text from uploaded documents for use in merge tags.","type":"boolean"},"fieldType":{"description":"Form-field subtype discriminator (only relevant when widget `type` is `FormField`).\n\n- `Text` — short text input (≤255 characters).\n- `Textarea` — long-form text.\n- `Email` — email address.\n- `Url` — website / URL.\n- `Number` — numeric input with optional unit and constraints.\n- `Date` — date or date+time picker.\n- `Select` — dropdown; user picks one option.\n- `MultiChoice` — checkboxes; user picks one or more options.\n- `MultiSelect` — Subtasks: a checklist of sub-items inside the task.\n- `Members` — assignee picker (selects organization users).\n- `File` — single file upload.\n- `MultiFile` — multi-file upload (in-app \"File Upload\").\n- `Document` — document approval field; links the task to a document review.\n- `Table` — rows × columns of cells; users fill cell values.\n- `SendRichEmail` — pre-written email embedded in the task; sent manually by the user or\n  automatically when the task is completed.\n- `Hidden` — only visible when editing the workflow; populated by integrations or default values.\n- `Snippet` — only visible when editing; passes static text or merge tags into automations.\n","type":"string","enum":["Date","Document","Email","File","Hidden","Members","MultiChoice","MultiFile","MultiSelect","Number","Select","SendRichEmail","Snippet","Table","Text","Textarea","Url"],"const":"File"}}},{"title":"PublicApiHiddenFormFieldConfig","type":"object","required":["fieldType"],"properties":{"defaultValue":{"description":"Default value pre-filled when a new workflow run is created.","type":"string"},"fieldType":{"description":"Form-field subtype discriminator (only relevant when widget `type` is `FormField`).\n\n- `Text` — short text input (≤255 characters).\n- `Textarea` — long-form text.\n- `Email` — email address.\n- `Url` — website / URL.\n- `Number` — numeric input with optional unit and constraints.\n- `Date` — date or date+time picker.\n- `Select` — dropdown; user picks one option.\n- `MultiChoice` — checkboxes; user picks one or more options.\n- `MultiSelect` — Subtasks: a checklist of sub-items inside the task.\n- `Members` — assignee picker (selects organization users).\n- `File` — single file upload.\n- `MultiFile` — multi-file upload (in-app \"File Upload\").\n- `Document` — document approval field; links the task to a document review.\n- `Table` — rows × columns of cells; users fill cell values.\n- `SendRichEmail` — pre-written email embedded in the task; sent manually by the user or\n  automatically when the task is completed.\n- `Hidden` — only visible when editing the workflow; populated by integrations or default values.\n- `Snippet` — only visible when editing; passes static text or merge tags into automations.\n","type":"string","enum":["Date","Document","Email","File","Hidden","Members","MultiChoice","MultiFile","MultiSelect","Number","Select","SendRichEmail","Snippet","Table","Text","Textarea","Url"],"const":"Hidden"}}},{"title":"PublicApiMembersFormFieldConfig","type":"object","required":["fieldType"],"properties":{"defaultValue":{"description":"Default value pre-filled when a new workflow run is created.","type":"string"},"groupId":{"title":"EntityID","description":"The ID of an organization group.","type":"string"},"fieldType":{"description":"Form-field subtype discriminator (only relevant when widget `type` is `FormField`).\n\n- `Text` — short text input (≤255 characters).\n- `Textarea` — long-form text.\n- `Email` — email address.\n- `Url` — website / URL.\n- `Number` — numeric input with optional unit and constraints.\n- `Date` — date or date+time picker.\n- `Select` — dropdown; user picks one option.\n- `MultiChoice` — checkboxes; user picks one or more options.\n- `MultiSelect` — Subtasks: a checklist of sub-items inside the task.\n- `Members` — assignee picker (selects organization users).\n- `File` — single file upload.\n- `MultiFile` — multi-file upload (in-app \"File Upload\").\n- `Document` — document approval field; links the task to a document review.\n- `Table` — rows × columns of cells; users fill cell values.\n- `SendRichEmail` — pre-written email embedded in the task; sent manually by the user or\n  automatically when the task is completed.\n- `Hidden` — only visible when editing the workflow; populated by integrations or default values.\n- `Snippet` — only visible when editing; passes static text or merge tags into automations.\n","type":"string","enum":["Date","Document","Email","File","Hidden","Members","MultiChoice","MultiFile","MultiSelect","Number","Select","SendRichEmail","Snippet","Table","Text","Textarea","Url"],"const":"Members"}}},{"title":"PublicApiMultiChoiceFormFieldConfig","type":"object","required":["fieldType"],"properties":{"items":{"description":"Available options for selection-style form fields.","type":"array","items":{"title":"PublicApiFormFieldItem","type":"object","required":["name"],"properties":{"id":{"title":"EntityID","description":"The resource's ID.","type":"string"},"name":{"description":"Display name.","type":"string"}}}},"fieldType":{"description":"Form-field subtype discriminator (only relevant when widget `type` is `FormField`).\n\n- `Text` — short text input (≤255 characters).\n- `Textarea` — long-form text.\n- `Email` — email address.\n- `Url` — website / URL.\n- `Number` — numeric input with optional unit and constraints.\n- `Date` — date or date+time picker.\n- `Select` — dropdown; user picks one option.\n- `MultiChoice` — checkboxes; user picks one or more options.\n- `MultiSelect` — Subtasks: a checklist of sub-items inside the task.\n- `Members` — assignee picker (selects organization users).\n- `File` — single file upload.\n- `MultiFile` — multi-file upload (in-app \"File Upload\").\n- `Document` — document approval field; links the task to a document review.\n- `Table` — rows × columns of cells; users fill cell values.\n- `SendRichEmail` — pre-written email embedded in the task; sent manually by the user or\n  automatically when the task is completed.\n- `Hidden` — only visible when editing the workflow; populated by integrations or default values.\n- `Snippet` — only visible when editing; passes static text or merge tags into automations.\n","type":"string","enum":["Date","Document","Email","File","Hidden","Members","MultiChoice","MultiFile","MultiSelect","Number","Select","SendRichEmail","Snippet","Table","Text","Textarea","Url"],"const":"MultiChoice"}}},{"title":"PublicApiMultiFileFormFieldConfig","type":"object","required":["fieldType"],"properties":{"placeholder":{"description":"Placeholder hint shown in the input when no value has been entered.","type":"string"},"extractTextContent":{"description":"When `true`, server extracts text from uploaded documents for use in merge tags.","type":"boolean"},"fieldType":{"description":"Form-field subtype discriminator (only relevant when widget `type` is `FormField`).\n\n- `Text` — short text input (≤255 characters).\n- `Textarea` — long-form text.\n- `Email` — email address.\n- `Url` — website / URL.\n- `Number` — numeric input with optional unit and constraints.\n- `Date` — date or date+time picker.\n- `Select` — dropdown; user picks one option.\n- `MultiChoice` — checkboxes; user picks one or more options.\n- `MultiSelect` — Subtasks: a checklist of sub-items inside the task.\n- `Members` — assignee picker (selects organization users).\n- `File` — single file upload.\n- `MultiFile` — multi-file upload (in-app \"File Upload\").\n- `Document` — document approval field; links the task to a document review.\n- `Table` — rows × columns of cells; users fill cell values.\n- `SendRichEmail` — pre-written email embedded in the task; sent manually by the user or\n  automatically when the task is completed.\n- `Hidden` — only visible when editing the workflow; populated by integrations or default values.\n- `Snippet` — only visible when editing; passes static text or merge tags into automations.\n","type":"string","enum":["Date","Document","Email","File","Hidden","Members","MultiChoice","MultiFile","MultiSelect","Number","Select","SendRichEmail","Snippet","Table","Text","Textarea","Url"],"const":"MultiFile"}}},{"title":"PublicApiMultiSelectFormFieldConfig","type":"object","required":["fieldType"],"properties":{"items":{"description":"Available options for selection-style form fields.","type":"array","items":{"title":"PublicApiFormFieldItem","type":"object","required":["name"],"properties":{"id":{"title":"EntityID","description":"The resource's ID.","type":"string"},"name":{"description":"Display name.","type":"string"}}}},"fieldType":{"description":"Form-field subtype discriminator (only relevant when widget `type` is `FormField`).\n\n- `Text` — short text input (≤255 characters).\n- `Textarea` — long-form text.\n- `Email` — email address.\n- `Url` — website / URL.\n- `Number` — numeric input with optional unit and constraints.\n- `Date` — date or date+time picker.\n- `Select` — dropdown; user picks one option.\n- `MultiChoice` — checkboxes; user picks one or more options.\n- `MultiSelect` — Subtasks: a checklist of sub-items inside the task.\n- `Members` — assignee picker (selects organization users).\n- `File` — single file upload.\n- `MultiFile` — multi-file upload (in-app \"File Upload\").\n- `Document` — document approval field; links the task to a document review.\n- `Table` — rows × columns of cells; users fill cell values.\n- `SendRichEmail` — pre-written email embedded in the task; sent manually by the user or\n  automatically when the task is completed.\n- `Hidden` — only visible when editing the workflow; populated by integrations or default values.\n- `Snippet` — only visible when editing; passes static text or merge tags into automations.\n","type":"string","enum":["Date","Document","Email","File","Hidden","Members","MultiChoice","MultiFile","MultiSelect","Number","Select","SendRichEmail","Snippet","Table","Text","Textarea","Url"],"const":"MultiSelect"}}},{"title":"PublicApiNumberFormFieldConfig","type":"object","required":["fieldType"],"properties":{"placeholder":{"description":"Placeholder hint shown in the input when no value has been entered.","type":"string"},"defaultValue":{"description":"Default value pre-filled when a new workflow run is created.","type":"string"},"unit":{"description":"Unit label rendered next to the numeric value (e.g. `kg`, `$`, `%`).","type":"string"},"unitLocation":{"description":"Where the unit symbol appears relative to the number.\n\n- `prefix` — before the number (e.g. `$100`).\n- `suffix` — after the number (e.g. `100 USD`).\n","type":"string","enum":["prefix","suffix"]},"fieldType":{"description":"Form-field subtype discriminator (only relevant when widget `type` is `FormField`).\n\n- `Text` — short text input (≤255 characters).\n- `Textarea` — long-form text.\n- `Email` — email address.\n- `Url` — website / URL.\n- `Number` — numeric input with optional unit and constraints.\n- `Date` — date or date+time picker.\n- `Select` — dropdown; user picks one option.\n- `MultiChoice` — checkboxes; user picks one or more options.\n- `MultiSelect` — Subtasks: a checklist of sub-items inside the task.\n- `Members` — assignee picker (selects organization users).\n- `File` — single file upload.\n- `MultiFile` — multi-file upload (in-app \"File Upload\").\n- `Document` — document approval field; links the task to a document review.\n- `Table` — rows × columns of cells; users fill cell values.\n- `SendRichEmail` — pre-written email embedded in the task; sent manually by the user or\n  automatically when the task is completed.\n- `Hidden` — only visible when editing the workflow; populated by integrations or default values.\n- `Snippet` — only visible when editing; passes static text or merge tags into automations.\n","type":"string","enum":["Date","Document","Email","File","Hidden","Members","MultiChoice","MultiFile","MultiSelect","Number","Select","SendRichEmail","Snippet","Table","Text","Textarea","Url"],"const":"Number"}}},{"title":"PublicApiSelectFormFieldConfig","type":"object","required":["fieldType"],"properties":{"items":{"description":"Available options for selection-style form fields.","type":"array","items":{"title":"PublicApiFormFieldItem","type":"object","required":["name"],"properties":{"id":{"title":"EntityID","description":"The resource's ID.","type":"string"},"name":{"description":"Display name.","type":"string"}}}},"defaultValue":{"description":"Default value pre-filled when a new workflow run is created.","type":"string"},"fieldType":{"description":"Form-field subtype discriminator (only relevant when widget `type` is `FormField`).\n\n- `Text` — short text input (≤255 characters).\n- `Textarea` — long-form text.\n- `Email` — email address.\n- `Url` — website / URL.\n- `Number` — numeric input with optional unit and constraints.\n- `Date` — date or date+time picker.\n- `Select` — dropdown; user picks one option.\n- `MultiChoice` — checkboxes; user picks one or more options.\n- `MultiSelect` — Subtasks: a checklist of sub-items inside the task.\n- `Members` — assignee picker (selects organization users).\n- `File` — single file upload.\n- `MultiFile` — multi-file upload (in-app \"File Upload\").\n- `Document` — document approval field; links the task to a document review.\n- `Table` — rows × columns of cells; users fill cell values.\n- `SendRichEmail` — pre-written email embedded in the task; sent manually by the user or\n  automatically when the task is completed.\n- `Hidden` — only visible when editing the workflow; populated by integrations or default values.\n- `Snippet` — only visible when editing; passes static text or merge tags into automations.\n","type":"string","enum":["Date","Document","Email","File","Hidden","Members","MultiChoice","MultiFile","MultiSelect","Number","Select","SendRichEmail","Snippet","Table","Text","Textarea","Url"],"const":"Select"}}},{"title":"PublicApiSendRichEmailFormFieldConfig","type":"object","required":["bodyEditor","fieldType"],"properties":{"to":{"description":"Default recipient list (To). Comma-separated email addresses or merge tags.","type":"array","items":{"type":"string"}},"cc":{"description":"Default CC list. Comma-separated email addresses or merge tags.","type":"array","items":{"type":"string"}},"bcc":{"description":"Default BCC list. Comma-separated email addresses or merge tags.","type":"array","items":{"type":"string"}},"replyTo":{"description":"Default Reply-To address. An email address or merge tag.","type":"array","items":{"type":"string"}},"subject":{"description":"Default email subject. May contain merge tags.","type":"string"},"body":{"description":"Default email body. May contain merge tags.","type":"string"},"bodyEditor":{"description":"Editor used to author the email body.\n\n- `RichText` — rich-text editor with formatting.\n- `HTML` — raw HTML editor.\n- `PlainText` — plain text editor.\n","type":"string","enum":["RichText","HTML","PlainText"]},"editAllowed":{"description":"When `true`, users running the workflow can edit the email before sending.","type":"boolean"},"fieldType":{"description":"Form-field subtype discriminator (only relevant when widget `type` is `FormField`).\n\n- `Text` — short text input (≤255 characters).\n- `Textarea` — long-form text.\n- `Email` — email address.\n- `Url` — website / URL.\n- `Number` — numeric input with optional unit and constraints.\n- `Date` — date or date+time picker.\n- `Select` — dropdown; user picks one option.\n- `MultiChoice` — checkboxes; user picks one or more options.\n- `MultiSelect` — Subtasks: a checklist of sub-items inside the task.\n- `Members` — assignee picker (selects organization users).\n- `File` — single file upload.\n- `MultiFile` — multi-file upload (in-app \"File Upload\").\n- `Document` — document approval field; links the task to a document review.\n- `Table` — rows × columns of cells; users fill cell values.\n- `SendRichEmail` — pre-written email embedded in the task; sent manually by the user or\n  automatically when the task is completed.\n- `Hidden` — only visible when editing the workflow; populated by integrations or default values.\n- `Snippet` — only visible when editing; passes static text or merge tags into automations.\n","type":"string","enum":["Date","Document","Email","File","Hidden","Members","MultiChoice","MultiFile","MultiSelect","Number","Select","SendRichEmail","Snippet","Table","Text","Textarea","Url"],"const":"SendRichEmail"}}},{"title":"PublicApiSnippetFormFieldConfig","type":"object","required":["fieldType"],"properties":{"value":{"description":"The option's stored value.","type":"string"},"fieldType":{"description":"Form-field subtype discriminator (only relevant when widget `type` is `FormField`).\n\n- `Text` — short text input (≤255 characters).\n- `Textarea` — long-form text.\n- `Email` — email address.\n- `Url` — website / URL.\n- `Number` — numeric input with optional unit and constraints.\n- `Date` — date or date+time picker.\n- `Select` — dropdown; user picks one option.\n- `MultiChoice` — checkboxes; user picks one or more options.\n- `MultiSelect` — Subtasks: a checklist of sub-items inside the task.\n- `Members` — assignee picker (selects organization users).\n- `File` — single file upload.\n- `MultiFile` — multi-file upload (in-app \"File Upload\").\n- `Document` — document approval field; links the task to a document review.\n- `Table` — rows × columns of cells; users fill cell values.\n- `SendRichEmail` — pre-written email embedded in the task; sent manually by the user or\n  automatically when the task is completed.\n- `Hidden` — only visible when editing the workflow; populated by integrations or default values.\n- `Snippet` — only visible when editing; passes static text or merge tags into automations.\n","type":"string","enum":["Date","Document","Email","File","Hidden","Members","MultiChoice","MultiFile","MultiSelect","Number","Select","SendRichEmail","Snippet","Table","Text","Textarea","Url"],"const":"Snippet"}}},{"title":"PublicApiTableFormFieldConfig","type":"object","required":["fieldType"],"properties":{"columnDefs":{"description":"Data set column definitions (name + type per column).","type":"array","items":{"title":"PublicApiTableFormFieldColumn","type":"object","required":["id","name","columnType"],"properties":{"id":{"title":"EntityID","description":"The resource's ID.","type":"string"},"name":{"description":"Display name.","type":"string"},"columnType":{"description":"Data type a Table column accepts.\n\n- `Text` — free-form short text.\n","type":"string","enum":["Text"]}}}},"defaultValue":{"description":"Default value pre-filled when a new workflow run is created.","type":"string"},"fieldType":{"description":"Form-field subtype discriminator (only relevant when widget `type` is `FormField`).\n\n- `Text` — short text input (≤255 characters).\n- `Textarea` — long-form text.\n- `Email` — email address.\n- `Url` — website / URL.\n- `Number` — numeric input with optional unit and constraints.\n- `Date` — date or date+time picker.\n- `Select` — dropdown; user picks one option.\n- `MultiChoice` — checkboxes; user picks one or more options.\n- `MultiSelect` — Subtasks: a checklist of sub-items inside the task.\n- `Members` — assignee picker (selects organization users).\n- `File` — single file upload.\n- `MultiFile` — multi-file upload (in-app \"File Upload\").\n- `Document` — document approval field; links the task to a document review.\n- `Table` — rows × columns of cells; users fill cell values.\n- `SendRichEmail` — pre-written email embedded in the task; sent manually by the user or\n  automatically when the task is completed.\n- `Hidden` — only visible when editing the workflow; populated by integrations or default values.\n- `Snippet` — only visible when editing; passes static text or merge tags into automations.\n","type":"string","enum":["Date","Document","Email","File","Hidden","Members","MultiChoice","MultiFile","MultiSelect","Number","Select","SendRichEmail","Snippet","Table","Text","Textarea","Url"],"const":"Table"}}},{"title":"PublicApiTextFormFieldConfig","type":"object","required":["fieldType"],"properties":{"placeholder":{"description":"Placeholder hint shown in the input when no value has been entered.","type":"string"},"defaultValue":{"description":"Default value pre-filled when a new workflow run is created.","type":"string"},"fieldType":{"description":"Form-field subtype discriminator (only relevant when widget `type` is `FormField`).\n\n- `Text` — short text input (≤255 characters).\n- `Textarea` — long-form text.\n- `Email` — email address.\n- `Url` — website / URL.\n- `Number` — numeric input with optional unit and constraints.\n- `Date` — date or date+time picker.\n- `Select` — dropdown; user picks one option.\n- `MultiChoice` — checkboxes; user picks one or more options.\n- `MultiSelect` — Subtasks: a checklist of sub-items inside the task.\n- `Members` — assignee picker (selects organization users).\n- `File` — single file upload.\n- `MultiFile` — multi-file upload (in-app \"File Upload\").\n- `Document` — document approval field; links the task to a document review.\n- `Table` — rows × columns of cells; users fill cell values.\n- `SendRichEmail` — pre-written email embedded in the task; sent manually by the user or\n  automatically when the task is completed.\n- `Hidden` — only visible when editing the workflow; populated by integrations or default values.\n- `Snippet` — only visible when editing; passes static text or merge tags into automations.\n","type":"string","enum":["Date","Document","Email","File","Hidden","Members","MultiChoice","MultiFile","MultiSelect","Number","Select","SendRichEmail","Snippet","Table","Text","Textarea","Url"],"const":"Text"}}},{"title":"PublicApiTextareaFormFieldConfig","type":"object","required":["fieldType"],"properties":{"placeholder":{"description":"Placeholder hint shown in the input when no value has been entered.","type":"string"},"defaultValue":{"description":"Default value pre-filled when a new workflow run is created.","type":"string"},"format":{"description":"Editor style for this Textarea field.\n\n- `PlainText` — plain text.\n- `RichText` — rich-text editor with formatting (bold, lists, links, etc.).\n","type":"string","enum":["PlainText","RichText"]},"fieldType":{"description":"Form-field subtype discriminator (only relevant when widget `type` is `FormField`).\n\n- `Text` — short text input (≤255 characters).\n- `Textarea` — long-form text.\n- `Email` — email address.\n- `Url` — website / URL.\n- `Number` — numeric input with optional unit and constraints.\n- `Date` — date or date+time picker.\n- `Select` — dropdown; user picks one option.\n- `MultiChoice` — checkboxes; user picks one or more options.\n- `MultiSelect` — Subtasks: a checklist of sub-items inside the task.\n- `Members` — assignee picker (selects organization users).\n- `File` — single file upload.\n- `MultiFile` — multi-file upload (in-app \"File Upload\").\n- `Document` — document approval field; links the task to a document review.\n- `Table` — rows × columns of cells; users fill cell values.\n- `SendRichEmail` — pre-written email embedded in the task; sent manually by the user or\n  automatically when the task is completed.\n- `Hidden` — only visible when editing the workflow; populated by integrations or default values.\n- `Snippet` — only visible when editing; passes static text or merge tags into automations.\n","type":"string","enum":["Date","Document","Email","File","Hidden","Members","MultiChoice","MultiFile","MultiSelect","Number","Select","SendRichEmail","Snippet","Table","Text","Textarea","Url"],"const":"Textarea"}}},{"title":"PublicApiUrlFormFieldConfig","type":"object","required":["fieldType"],"properties":{"defaultValue":{"description":"Default value pre-filled when a new workflow run is created.","type":"string"},"fieldType":{"description":"Form-field subtype discriminator (only relevant when widget `type` is `FormField`).\n\n- `Text` — short text input (≤255 characters).\n- `Textarea` — long-form text.\n- `Email` — email address.\n- `Url` — website / URL.\n- `Number` — numeric input with optional unit and constraints.\n- `Date` — date or date+time picker.\n- `Select` — dropdown; user picks one option.\n- `MultiChoice` — checkboxes; user picks one or more options.\n- `MultiSelect` — Subtasks: a checklist of sub-items inside the task.\n- `Members` — assignee picker (selects organization users).\n- `File` — single file upload.\n- `MultiFile` — multi-file upload (in-app \"File Upload\").\n- `Document` — document approval field; links the task to a document review.\n- `Table` — rows × columns of cells; users fill cell values.\n- `SendRichEmail` — pre-written email embedded in the task; sent manually by the user or\n  automatically when the task is completed.\n- `Hidden` — only visible when editing the workflow; populated by integrations or default values.\n- `Snippet` — only visible when editing; passes static text or merge tags into automations.\n","type":"string","enum":["Date","Document","Email","File","Hidden","Members","MultiChoice","MultiFile","MultiSelect","Number","Select","SendRichEmail","Snippet","Table","Text","Textarea","Url"],"const":"Url"}}}],"required":["fieldType"],"discriminator":{"propertyName":"fieldType","mapping":{"Date":"#/components/schemas/PublicApiDateFormFieldConfig","Document":"#/components/schemas/PublicApiDocumentFormFieldConfig","Email":"#/components/schemas/PublicApiEmailFormFieldConfig","File":"#/components/schemas/PublicApiFileFormFieldConfig","Hidden":"#/components/schemas/PublicApiHiddenFormFieldConfig","Members":"#/components/schemas/PublicApiMembersFormFieldConfig","MultiChoice":"#/components/schemas/PublicApiMultiChoiceFormFieldConfig","MultiFile":"#/components/schemas/PublicApiMultiFileFormFieldConfig","MultiSelect":"#/components/schemas/PublicApiMultiSelectFormFieldConfig","Number":"#/components/schemas/PublicApiNumberFormFieldConfig","Select":"#/components/schemas/PublicApiSelectFormFieldConfig","SendRichEmail":"#/components/schemas/PublicApiSendRichEmailFormFieldConfig","Snippet":"#/components/schemas/PublicApiSnippetFormFieldConfig","Table":"#/components/schemas/PublicApiTableFormFieldConfig","Text":"#/components/schemas/PublicApiTextFormFieldConfig","Textarea":"#/components/schemas/PublicApiTextareaFormFieldConfig","Url":"#/components/schemas/PublicApiUrlFormFieldConfig"}}},"PublicApiFormFieldConstraints":{"title":"PublicApiFormFieldConstraints","oneOf":[{"title":"PublicApiDateFormFieldConstraints","type":"object","required":["fieldType"],"properties":{"afterDate":{"description":"Earliest accepted date (inclusive). Pair with `afterDateSourceType`.","type":"string","format":"date-time"},"beforeDate":{"description":"Latest accepted date (inclusive). Pair with `beforeDateSourceType`.","type":"string","format":"date-time"},"afterDateFormFieldWidgetGroupId":{"title":"EntityID","description":"When `afterDateSourceType=FormField`, the ID of the Date form field whose value is the lower bound.","type":"string"},"beforeDateFormFieldWidgetGroupId":{"title":"EntityID","description":"When `beforeDateSourceType=FormField`, the ID of the Date form field whose value is the upper bound.","type":"string"},"afterDateSourceType":{"description":"How the before/after constraint date is derived.\n\n- `SpecificDate` — an absolute date supplied as `afterDate` / `beforeDate`.\n- `FormFieldValue` — derived from another Date form field (`afterDateField` / `beforeDateField`).\n- `TaskDueDate` — relative to the containing task's due date.\n- `ChecklistStartDate` / `ChecklistDueDate` — relative to the workflow run's start or due date.\n","type":"string","enum":["SpecificDate","FormFieldValue","TaskDueDate","ChecklistStartDate","ChecklistDueDate"]},"beforeDateSourceType":{"description":"How the before/after constraint date is derived.\n\n- `SpecificDate` — an absolute date supplied as `afterDate` / `beforeDate`.\n- `FormFieldValue` — derived from another Date form field (`afterDateField` / `beforeDateField`).\n- `TaskDueDate` — relative to the containing task's due date.\n- `ChecklistStartDate` / `ChecklistDueDate` — relative to the workflow run's start or due date.\n","type":"string","enum":["SpecificDate","FormFieldValue","TaskDueDate","ChecklistStartDate","ChecklistDueDate"]},"afterDateOffset":{"description":"ISO 8601 duration (e.g. `P7D`, `P1Y2M`).","type":"string"},"beforeDateOffset":{"description":"ISO 8601 duration (e.g. `P7D`, `P1Y2M`).","type":"string"},"fieldType":{"description":"Form-field subtype discriminator (only relevant when widget `type` is `FormField`).\n\n- `Text` — short text input (≤255 characters).\n- `Textarea` — long-form text.\n- `Email` — email address.\n- `Url` — website / URL.\n- `Number` — numeric input with optional unit and constraints.\n- `Date` — date or date+time picker.\n- `Select` — dropdown; user picks one option.\n- `MultiChoice` — checkboxes; user picks one or more options.\n- `MultiSelect` — Subtasks: a checklist of sub-items inside the task.\n- `Members` — assignee picker (selects organization users).\n- `File` — single file upload.\n- `MultiFile` — multi-file upload (in-app \"File Upload\").\n- `Document` — document approval field; links the task to a document review.\n- `Table` — rows × columns of cells; users fill cell values.\n- `SendRichEmail` — pre-written email embedded in the task; sent manually by the user or\n  automatically when the task is completed.\n- `Hidden` — only visible when editing the workflow; populated by integrations or default values.\n- `Snippet` — only visible when editing; passes static text or merge tags into automations.\n","type":"string","enum":["Date","Document","Email","File","Hidden","Members","MultiChoice","MultiFile","MultiSelect","Number","Select","SendRichEmail","Snippet","Table","Text","Textarea","Url"],"const":"Date"}}},{"title":"PublicApiEmailFormFieldConstraints","type":"object","required":["fieldType"],"properties":{"domains":{"description":"Allowed (or blocked, depending on `restriction`) email domains for this field.","type":"array","items":{"type":"string"}},"restriction":{"description":"How the `domains` list filters allowed email addresses.\n\n- `Allow` — only emails whose domain is in the list are accepted.\n- `Block` — emails whose domain is in the list are rejected; all others accepted.\n","type":"string","enum":["Allow","Block"]},"fieldType":{"description":"Form-field subtype discriminator (only relevant when widget `type` is `FormField`).\n\n- `Text` — short text input (≤255 characters).\n- `Textarea` — long-form text.\n- `Email` — email address.\n- `Url` — website / URL.\n- `Number` — numeric input with optional unit and constraints.\n- `Date` — date or date+time picker.\n- `Select` — dropdown; user picks one option.\n- `MultiChoice` — checkboxes; user picks one or more options.\n- `MultiSelect` — Subtasks: a checklist of sub-items inside the task.\n- `Members` — assignee picker (selects organization users).\n- `File` — single file upload.\n- `MultiFile` — multi-file upload (in-app \"File Upload\").\n- `Document` — document approval field; links the task to a document review.\n- `Table` — rows × columns of cells; users fill cell values.\n- `SendRichEmail` — pre-written email embedded in the task; sent manually by the user or\n  automatically when the task is completed.\n- `Hidden` — only visible when editing the workflow; populated by integrations or default values.\n- `Snippet` — only visible when editing; passes static text or merge tags into automations.\n","type":"string","enum":["Date","Document","Email","File","Hidden","Members","MultiChoice","MultiFile","MultiSelect","Number","Select","SendRichEmail","Snippet","Table","Text","Textarea","Url"],"const":"Email"}}},{"title":"PublicApiFileFormFieldConstraints","type":"object","required":["fieldType"],"properties":{"extensions":{"description":"Allowed file extensions, including the leading dot (e.g. `.pdf`, `.docx`).","type":"array","items":{"type":"string"}},"fieldType":{"description":"Form-field subtype discriminator (only relevant when widget `type` is `FormField`).\n\n- `Text` — short text input (≤255 characters).\n- `Textarea` — long-form text.\n- `Email` — email address.\n- `Url` — website / URL.\n- `Number` — numeric input with optional unit and constraints.\n- `Date` — date or date+time picker.\n- `Select` — dropdown; user picks one option.\n- `MultiChoice` — checkboxes; user picks one or more options.\n- `MultiSelect` — Subtasks: a checklist of sub-items inside the task.\n- `Members` — assignee picker (selects organization users).\n- `File` — single file upload.\n- `MultiFile` — multi-file upload (in-app \"File Upload\").\n- `Document` — document approval field; links the task to a document review.\n- `Table` — rows × columns of cells; users fill cell values.\n- `SendRichEmail` — pre-written email embedded in the task; sent manually by the user or\n  automatically when the task is completed.\n- `Hidden` — only visible when editing the workflow; populated by integrations or default values.\n- `Snippet` — only visible when editing; passes static text or merge tags into automations.\n","type":"string","enum":["Date","Document","Email","File","Hidden","Members","MultiChoice","MultiFile","MultiSelect","Number","Select","SendRichEmail","Snippet","Table","Text","Textarea","Url"],"const":"File"}}},{"title":"PublicApiMultiFileFormFieldConstraints","type":"object","required":["fieldType"],"properties":{"extensions":{"description":"Allowed file extensions, including the leading dot (e.g. `.pdf`, `.docx`).","type":"array","items":{"type":"string"}},"mode":{"description":"Whether the field accepts a single file or multiple files.\n\n- `Single` — only one file may be uploaded.\n- `Multiple` — multiple files may be uploaded.\n","type":"string","enum":["Multiple","Single"]},"fieldType":{"description":"Form-field subtype discriminator (only relevant when widget `type` is `FormField`).\n\n- `Text` — short text input (≤255 characters).\n- `Textarea` — long-form text.\n- `Email` — email address.\n- `Url` — website / URL.\n- `Number` — numeric input with optional unit and constraints.\n- `Date` — date or date+time picker.\n- `Select` — dropdown; user picks one option.\n- `MultiChoice` — checkboxes; user picks one or more options.\n- `MultiSelect` — Subtasks: a checklist of sub-items inside the task.\n- `Members` — assignee picker (selects organization users).\n- `File` — single file upload.\n- `MultiFile` — multi-file upload (in-app \"File Upload\").\n- `Document` — document approval field; links the task to a document review.\n- `Table` — rows × columns of cells; users fill cell values.\n- `SendRichEmail` — pre-written email embedded in the task; sent manually by the user or\n  automatically when the task is completed.\n- `Hidden` — only visible when editing the workflow; populated by integrations or default values.\n- `Snippet` — only visible when editing; passes static text or merge tags into automations.\n","type":"string","enum":["Date","Document","Email","File","Hidden","Members","MultiChoice","MultiFile","MultiSelect","Number","Select","SendRichEmail","Snippet","Table","Text","Textarea","Url"],"const":"MultiFile"}}},{"title":"PublicApiNumberFormFieldConstraints","type":"object","required":["fieldType"],"properties":{"minDigits":{"description":"Minimum number of digits.","type":"integer","format":"int32"},"maxDigits":{"description":"Maximum number of digits.","type":"integer","format":"int32"},"minValue":{"description":"Minimum numeric value.","type":"integer","format":"int32"},"maxValue":{"description":"Maximum numeric value.","type":"integer","format":"int32"},"decimalPlaces":{"description":"Number of decimal places to accept (0 means integers only).","type":"integer","format":"int32"},"allowNegative":{"description":"When `true`, negative numbers are accepted.","type":"boolean"},"fieldType":{"description":"Form-field subtype discriminator (only relevant when widget `type` is `FormField`).\n\n- `Text` — short text input (≤255 characters).\n- `Textarea` — long-form text.\n- `Email` — email address.\n- `Url` — website / URL.\n- `Number` — numeric input with optional unit and constraints.\n- `Date` — date or date+time picker.\n- `Select` — dropdown; user picks one option.\n- `MultiChoice` — checkboxes; user picks one or more options.\n- `MultiSelect` — Subtasks: a checklist of sub-items inside the task.\n- `Members` — assignee picker (selects organization users).\n- `File` — single file upload.\n- `MultiFile` — multi-file upload (in-app \"File Upload\").\n- `Document` — document approval field; links the task to a document review.\n- `Table` — rows × columns of cells; users fill cell values.\n- `SendRichEmail` — pre-written email embedded in the task; sent manually by the user or\n  automatically when the task is completed.\n- `Hidden` — only visible when editing the workflow; populated by integrations or default values.\n- `Snippet` — only visible when editing; passes static text or merge tags into automations.\n","type":"string","enum":["Date","Document","Email","File","Hidden","Members","MultiChoice","MultiFile","MultiSelect","Number","Select","SendRichEmail","Snippet","Table","Text","Textarea","Url"],"const":"Number"}}},{"title":"PublicApiTextFormFieldConstraints","type":"object","required":["fieldType"],"properties":{"min":{"description":"Inclusive lower bound.","type":"integer","format":"int32"},"max":{"description":"Inclusive upper bound.","type":"integer","format":"int32"},"fieldType":{"description":"Form-field subtype discriminator (only relevant when widget `type` is `FormField`).\n\n- `Text` — short text input (≤255 characters).\n- `Textarea` — long-form text.\n- `Email` — email address.\n- `Url` — website / URL.\n- `Number` — numeric input with optional unit and constraints.\n- `Date` — date or date+time picker.\n- `Select` — dropdown; user picks one option.\n- `MultiChoice` — checkboxes; user picks one or more options.\n- `MultiSelect` — Subtasks: a checklist of sub-items inside the task.\n- `Members` — assignee picker (selects organization users).\n- `File` — single file upload.\n- `MultiFile` — multi-file upload (in-app \"File Upload\").\n- `Document` — document approval field; links the task to a document review.\n- `Table` — rows × columns of cells; users fill cell values.\n- `SendRichEmail` — pre-written email embedded in the task; sent manually by the user or\n  automatically when the task is completed.\n- `Hidden` — only visible when editing the workflow; populated by integrations or default values.\n- `Snippet` — only visible when editing; passes static text or merge tags into automations.\n","type":"string","enum":["Date","Document","Email","File","Hidden","Members","MultiChoice","MultiFile","MultiSelect","Number","Select","SendRichEmail","Snippet","Table","Text","Textarea","Url"],"const":"Text"}}},{"title":"PublicApiTextareaFormFieldConstraints","type":"object","required":["fieldType"],"properties":{"min":{"description":"Inclusive lower bound.","type":"integer","format":"int32"},"max":{"description":"Inclusive upper bound.","type":"integer","format":"int32"},"fieldType":{"description":"Form-field subtype discriminator (only relevant when widget `type` is `FormField`).\n\n- `Text` — short text input (≤255 characters).\n- `Textarea` — long-form text.\n- `Email` — email address.\n- `Url` — website / URL.\n- `Number` — numeric input with optional unit and constraints.\n- `Date` — date or date+time picker.\n- `Select` — dropdown; user picks one option.\n- `MultiChoice` — checkboxes; user picks one or more options.\n- `MultiSelect` — Subtasks: a checklist of sub-items inside the task.\n- `Members` — assignee picker (selects organization users).\n- `File` — single file upload.\n- `MultiFile` — multi-file upload (in-app \"File Upload\").\n- `Document` — document approval field; links the task to a document review.\n- `Table` — rows × columns of cells; users fill cell values.\n- `SendRichEmail` — pre-written email embedded in the task; sent manually by the user or\n  automatically when the task is completed.\n- `Hidden` — only visible when editing the workflow; populated by integrations or default values.\n- `Snippet` — only visible when editing; passes static text or merge tags into automations.\n","type":"string","enum":["Date","Document","Email","File","Hidden","Members","MultiChoice","MultiFile","MultiSelect","Number","Select","SendRichEmail","Snippet","Table","Text","Textarea","Url"],"const":"Textarea"}}}],"required":["fieldType"],"discriminator":{"propertyName":"fieldType","mapping":{"Date":"#/components/schemas/PublicApiDateFormFieldConstraints","Email":"#/components/schemas/PublicApiEmailFormFieldConstraints","File":"#/components/schemas/PublicApiFileFormFieldConstraints","MultiFile":"#/components/schemas/PublicApiMultiFileFormFieldConstraints","Number":"#/components/schemas/PublicApiNumberFormFieldConstraints","Text":"#/components/schemas/PublicApiTextFormFieldConstraints","Textarea":"#/components/schemas/PublicApiTextareaFormFieldConstraints"}}},"PublicApiFormFieldItem":{"title":"PublicApiFormFieldItem","type":"object","required":["name"],"properties":{"id":{"title":"EntityID","description":"The resource's ID.","type":"string"},"name":{"description":"Display name.","type":"string"}}},"PublicApiFormFieldWidget":{"title":"PublicApiFormFieldWidget","type":"object","required":["hiddenByDefault","id","taskId","createdDate","createdBy","updatedDate","updatedBy","fieldType","key","required","config","type"],"properties":{"hiddenByDefault":{"description":"When `true`, the widget is hidden by default; conditional logic rules can reveal it at runtime. Defaults to `false`.","type":"boolean"},"id":{"description":"The ID of the Widget","examples":["hVDWDyLQh8UBoX6Zk313Dg"],"type":"string"},"taskId":{"description":"The ID of the Task","examples":["hVDWDyLQh8UBoX6Zk313Dg"],"type":"string"},"createdDate":{"description":"When the resource was first created. ISO-8601 UTC.","type":"string","format":"date-time"},"createdBy":{"description":"User who created the resource.","examples":[{"id":"iUu2eOU2Q-sBoX6ZjZV9pQ","email":"jane.doe@example.com","username":"Jane Doe"}],"type":"object","required":["id","email","username"],"properties":{"id":{"title":"EntityID","description":"The resource's ID.","type":"string"},"email":{"description":"The user's email address (also their login identifier).","type":"string"},"username":{"description":"The user's display name (e.g. `Jane Doe`).","type":"string"}}},"updatedDate":{"description":"When the resource was last modified. ISO-8601 UTC.","type":"string","format":"date-time"},"updatedBy":{"description":"User who last modified the resource.","examples":[{"id":"iUu2eOU2Q-sBoX6ZjZV9pQ","email":"jane.doe@example.com","username":"Jane Doe"}],"type":"object","required":["id","email","username"],"properties":{"id":{"title":"EntityID","description":"The resource's ID.","type":"string"},"email":{"description":"The user's email address (also their login identifier).","type":"string"},"username":{"description":"The user's display name (e.g. `Jane Doe`).","type":"string"}}},"fieldType":{"description":"Form-field subtype discriminator (only relevant when widget `type` is `FormField`).\n\n- `Text` — short text input (≤255 characters).\n- `Textarea` — long-form text.\n- `Email` — email address.\n- `Url` — website / URL.\n- `Number` — numeric input with optional unit and constraints.\n- `Date` — date or date+time picker.\n- `Select` — dropdown; user picks one option.\n- `MultiChoice` — checkboxes; user picks one or more options.\n- `MultiSelect` — Subtasks: a checklist of sub-items inside the task.\n- `Members` — assignee picker (selects organization users).\n- `File` — single file upload.\n- `MultiFile` — multi-file upload (in-app \"File Upload\").\n- `Document` — document approval field; links the task to a document review.\n- `Table` — rows × columns of cells; users fill cell values.\n- `SendRichEmail` — pre-written email embedded in the task; sent manually by the user or\n  automatically when the task is completed.\n- `Hidden` — only visible when editing the workflow; populated by integrations or default values.\n- `Snippet` — only visible when editing; passes static text or merge tags into automations.\n","type":"string","enum":["Date","Document","Email","File","Hidden","Members","MultiChoice","MultiFile","MultiSelect","Number","Select","SendRichEmail","Snippet","Table","Text","Textarea","Url"]},"key":{"description":"Unique key used to identify this row across imports — matches the data set column referenced by the webhook's `keyColumn`.","type":"string"},"label":{"description":"Display label shown to the end user.","type":"string"},"required":{"description":"When `true`, the form field must have a value before its task can be completed.","type":"boolean"},"config":{"title":"PublicApiFormFieldConfig","description":"Field-specific configuration. Shape depends on `fieldType`.","oneOf":[{"title":"PublicApiDateFormFieldConfig","type":"object","required":["fieldType"],"properties":{"defaultValue":{"description":"Default value pre-filled when a new workflow run is created.","type":"string"},"timeOption":{"description":"How time-of-day is handled on this Date field.\n\n- `Included` — the field always captures both date and time.\n- `Excluded` — date only; time is never captured.\n- `Optional` — the user picks whether to include a time.\n","type":"string","enum":["Included","Excluded","Optional"]},"fieldType":{"description":"Form-field subtype discriminator (only relevant when widget `type` is `FormField`).\n\n- `Text` — short text input (≤255 characters).\n- `Textarea` — long-form text.\n- `Email` — email address.\n- `Url` — website / URL.\n- `Number` — numeric input with optional unit and constraints.\n- `Date` — date or date+time picker.\n- `Select` — dropdown; user picks one option.\n- `MultiChoice` — checkboxes; user picks one or more options.\n- `MultiSelect` — Subtasks: a checklist of sub-items inside the task.\n- `Members` — assignee picker (selects organization users).\n- `File` — single file upload.\n- `MultiFile` — multi-file upload (in-app \"File Upload\").\n- `Document` — document approval field; links the task to a document review.\n- `Table` — rows × columns of cells; users fill cell values.\n- `SendRichEmail` — pre-written email embedded in the task; sent manually by the user or\n  automatically when the task is completed.\n- `Hidden` — only visible when editing the workflow; populated by integrations or default values.\n- `Snippet` — only visible when editing; passes static text or merge tags into automations.\n","type":"string","enum":["Date","Document","Email","File","Hidden","Members","MultiChoice","MultiFile","MultiSelect","Number","Select","SendRichEmail","Snippet","Table","Text","Textarea","Url"],"const":"Date"}}},{"title":"PublicApiDocumentFormFieldConfig","type":"object","required":["reviewRequest","fieldType"],"properties":{"reviewRequest":{"description":"When `true`, the email requires explicit user review/send rather than auto-send.","type":"boolean"},"defaultValue":{"description":"Default value pre-filled when a new workflow run is created.","type":"string"},"fieldType":{"description":"Form-field subtype discriminator (only relevant when widget `type` is `FormField`).\n\n- `Text` — short text input (≤255 characters).\n- `Textarea` — long-form text.\n- `Email` — email address.\n- `Url` — website / URL.\n- `Number` — numeric input with optional unit and constraints.\n- `Date` — date or date+time picker.\n- `Select` — dropdown; user picks one option.\n- `MultiChoice` — checkboxes; user picks one or more options.\n- `MultiSelect` — Subtasks: a checklist of sub-items inside the task.\n- `Members` — assignee picker (selects organization users).\n- `File` — single file upload.\n- `MultiFile` — multi-file upload (in-app \"File Upload\").\n- `Document` — document approval field; links the task to a document review.\n- `Table` — rows × columns of cells; users fill cell values.\n- `SendRichEmail` — pre-written email embedded in the task; sent manually by the user or\n  automatically when the task is completed.\n- `Hidden` — only visible when editing the workflow; populated by integrations or default values.\n- `Snippet` — only visible when editing; passes static text or merge tags into automations.\n","type":"string","enum":["Date","Document","Email","File","Hidden","Members","MultiChoice","MultiFile","MultiSelect","Number","Select","SendRichEmail","Snippet","Table","Text","Textarea","Url"],"const":"Document"}}},{"title":"PublicApiEmailFormFieldConfig","type":"object","required":["fieldType"],"properties":{"placeholder":{"description":"Placeholder hint shown in the input when no value has been entered.","type":"string"},"defaultValue":{"description":"Default value pre-filled when a new workflow run is created.","type":"string"},"fieldType":{"description":"Form-field subtype discriminator (only relevant when widget `type` is `FormField`).\n\n- `Text` — short text input (≤255 characters).\n- `Textarea` — long-form text.\n- `Email` — email address.\n- `Url` — website / URL.\n- `Number` — numeric input with optional unit and constraints.\n- `Date` — date or date+time picker.\n- `Select` — dropdown; user picks one option.\n- `MultiChoice` — checkboxes; user picks one or more options.\n- `MultiSelect` — Subtasks: a checklist of sub-items inside the task.\n- `Members` — assignee picker (selects organization users).\n- `File` — single file upload.\n- `MultiFile` — multi-file upload (in-app \"File Upload\").\n- `Document` — document approval field; links the task to a document review.\n- `Table` — rows × columns of cells; users fill cell values.\n- `SendRichEmail` — pre-written email embedded in the task; sent manually by the user or\n  automatically when the task is completed.\n- `Hidden` — only visible when editing the workflow; populated by integrations or default values.\n- `Snippet` — only visible when editing; passes static text or merge tags into automations.\n","type":"string","enum":["Date","Document","Email","File","Hidden","Members","MultiChoice","MultiFile","MultiSelect","Number","Select","SendRichEmail","Snippet","Table","Text","Textarea","Url"],"const":"Email"}}},{"title":"PublicApiFileFormFieldConfig","type":"object","required":["fieldType"],"properties":{"placeholder":{"description":"Placeholder hint shown in the input when no value has been entered.","type":"string"},"extractTextContent":{"description":"When `true`, server extracts text from uploaded documents for use in merge tags.","type":"boolean"},"fieldType":{"description":"Form-field subtype discriminator (only relevant when widget `type` is `FormField`).\n\n- `Text` — short text input (≤255 characters).\n- `Textarea` — long-form text.\n- `Email` — email address.\n- `Url` — website / URL.\n- `Number` — numeric input with optional unit and constraints.\n- `Date` — date or date+time picker.\n- `Select` — dropdown; user picks one option.\n- `MultiChoice` — checkboxes; user picks one or more options.\n- `MultiSelect` — Subtasks: a checklist of sub-items inside the task.\n- `Members` — assignee picker (selects organization users).\n- `File` — single file upload.\n- `MultiFile` — multi-file upload (in-app \"File Upload\").\n- `Document` — document approval field; links the task to a document review.\n- `Table` — rows × columns of cells; users fill cell values.\n- `SendRichEmail` — pre-written email embedded in the task; sent manually by the user or\n  automatically when the task is completed.\n- `Hidden` — only visible when editing the workflow; populated by integrations or default values.\n- `Snippet` — only visible when editing; passes static text or merge tags into automations.\n","type":"string","enum":["Date","Document","Email","File","Hidden","Members","MultiChoice","MultiFile","MultiSelect","Number","Select","SendRichEmail","Snippet","Table","Text","Textarea","Url"],"const":"File"}}},{"title":"PublicApiHiddenFormFieldConfig","type":"object","required":["fieldType"],"properties":{"defaultValue":{"description":"Default value pre-filled when a new workflow run is created.","type":"string"},"fieldType":{"description":"Form-field subtype discriminator (only relevant when widget `type` is `FormField`).\n\n- `Text` — short text input (≤255 characters).\n- `Textarea` — long-form text.\n- `Email` — email address.\n- `Url` — website / URL.\n- `Number` — numeric input with optional unit and constraints.\n- `Date` — date or date+time picker.\n- `Select` — dropdown; user picks one option.\n- `MultiChoice` — checkboxes; user picks one or more options.\n- `MultiSelect` — Subtasks: a checklist of sub-items inside the task.\n- `Members` — assignee picker (selects organization users).\n- `File` — single file upload.\n- `MultiFile` — multi-file upload (in-app \"File Upload\").\n- `Document` — document approval field; links the task to a document review.\n- `Table` — rows × columns of cells; users fill cell values.\n- `SendRichEmail` — pre-written email embedded in the task; sent manually by the user or\n  automatically when the task is completed.\n- `Hidden` — only visible when editing the workflow; populated by integrations or default values.\n- `Snippet` — only visible when editing; passes static text or merge tags into automations.\n","type":"string","enum":["Date","Document","Email","File","Hidden","Members","MultiChoice","MultiFile","MultiSelect","Number","Select","SendRichEmail","Snippet","Table","Text","Textarea","Url"],"const":"Hidden"}}},{"title":"PublicApiMembersFormFieldConfig","type":"object","required":["fieldType"],"properties":{"defaultValue":{"description":"Default value pre-filled when a new workflow run is created.","type":"string"},"groupId":{"title":"EntityID","description":"The ID of an organization group.","type":"string"},"fieldType":{"description":"Form-field subtype discriminator (only relevant when widget `type` is `FormField`).\n\n- `Text` — short text input (≤255 characters).\n- `Textarea` — long-form text.\n- `Email` — email address.\n- `Url` — website / URL.\n- `Number` — numeric input with optional unit and constraints.\n- `Date` — date or date+time picker.\n- `Select` — dropdown; user picks one option.\n- `MultiChoice` — checkboxes; user picks one or more options.\n- `MultiSelect` — Subtasks: a checklist of sub-items inside the task.\n- `Members` — assignee picker (selects organization users).\n- `File` — single file upload.\n- `MultiFile` — multi-file upload (in-app \"File Upload\").\n- `Document` — document approval field; links the task to a document review.\n- `Table` — rows × columns of cells; users fill cell values.\n- `SendRichEmail` — pre-written email embedded in the task; sent manually by the user or\n  automatically when the task is completed.\n- `Hidden` — only visible when editing the workflow; populated by integrations or default values.\n- `Snippet` — only visible when editing; passes static text or merge tags into automations.\n","type":"string","enum":["Date","Document","Email","File","Hidden","Members","MultiChoice","MultiFile","MultiSelect","Number","Select","SendRichEmail","Snippet","Table","Text","Textarea","Url"],"const":"Members"}}},{"title":"PublicApiMultiChoiceFormFieldConfig","type":"object","required":["fieldType"],"properties":{"items":{"description":"Available options for selection-style form fields.","type":"array","items":{"title":"PublicApiFormFieldItem","type":"object","required":["name"],"properties":{"id":{"title":"EntityID","description":"The resource's ID.","type":"string"},"name":{"description":"Display name.","type":"string"}}}},"fieldType":{"description":"Form-field subtype discriminator (only relevant when widget `type` is `FormField`).\n\n- `Text` — short text input (≤255 characters).\n- `Textarea` — long-form text.\n- `Email` — email address.\n- `Url` — website / URL.\n- `Number` — numeric input with optional unit and constraints.\n- `Date` — date or date+time picker.\n- `Select` — dropdown; user picks one option.\n- `MultiChoice` — checkboxes; user picks one or more options.\n- `MultiSelect` — Subtasks: a checklist of sub-items inside the task.\n- `Members` — assignee picker (selects organization users).\n- `File` — single file upload.\n- `MultiFile` — multi-file upload (in-app \"File Upload\").\n- `Document` — document approval field; links the task to a document review.\n- `Table` — rows × columns of cells; users fill cell values.\n- `SendRichEmail` — pre-written email embedded in the task; sent manually by the user or\n  automatically when the task is completed.\n- `Hidden` — only visible when editing the workflow; populated by integrations or default values.\n- `Snippet` — only visible when editing; passes static text or merge tags into automations.\n","type":"string","enum":["Date","Document","Email","File","Hidden","Members","MultiChoice","MultiFile","MultiSelect","Number","Select","SendRichEmail","Snippet","Table","Text","Textarea","Url"],"const":"MultiChoice"}}},{"title":"PublicApiMultiFileFormFieldConfig","type":"object","required":["fieldType"],"properties":{"placeholder":{"description":"Placeholder hint shown in the input when no value has been entered.","type":"string"},"extractTextContent":{"description":"When `true`, server extracts text from uploaded documents for use in merge tags.","type":"boolean"},"fieldType":{"description":"Form-field subtype discriminator (only relevant when widget `type` is `FormField`).\n\n- `Text` — short text input (≤255 characters).\n- `Textarea` — long-form text.\n- `Email` — email address.\n- `Url` — website / URL.\n- `Number` — numeric input with optional unit and constraints.\n- `Date` — date or date+time picker.\n- `Select` — dropdown; user picks one option.\n- `MultiChoice` — checkboxes; user picks one or more options.\n- `MultiSelect` — Subtasks: a checklist of sub-items inside the task.\n- `Members` — assignee picker (selects organization users).\n- `File` — single file upload.\n- `MultiFile` — multi-file upload (in-app \"File Upload\").\n- `Document` — document approval field; links the task to a document review.\n- `Table` — rows × columns of cells; users fill cell values.\n- `SendRichEmail` — pre-written email embedded in the task; sent manually by the user or\n  automatically when the task is completed.\n- `Hidden` — only visible when editing the workflow; populated by integrations or default values.\n- `Snippet` — only visible when editing; passes static text or merge tags into automations.\n","type":"string","enum":["Date","Document","Email","File","Hidden","Members","MultiChoice","MultiFile","MultiSelect","Number","Select","SendRichEmail","Snippet","Table","Text","Textarea","Url"],"const":"MultiFile"}}},{"title":"PublicApiMultiSelectFormFieldConfig","type":"object","required":["fieldType"],"properties":{"items":{"description":"Available options for selection-style form fields.","type":"array","items":{"title":"PublicApiFormFieldItem","type":"object","required":["name"],"properties":{"id":{"title":"EntityID","description":"The resource's ID.","type":"string"},"name":{"description":"Display name.","type":"string"}}}},"fieldType":{"description":"Form-field subtype discriminator (only relevant when widget `type` is `FormField`).\n\n- `Text` — short text input (≤255 characters).\n- `Textarea` — long-form text.\n- `Email` — email address.\n- `Url` — website / URL.\n- `Number` — numeric input with optional unit and constraints.\n- `Date` — date or date+time picker.\n- `Select` — dropdown; user picks one option.\n- `MultiChoice` — checkboxes; user picks one or more options.\n- `MultiSelect` — Subtasks: a checklist of sub-items inside the task.\n- `Members` — assignee picker (selects organization users).\n- `File` — single file upload.\n- `MultiFile` — multi-file upload (in-app \"File Upload\").\n- `Document` — document approval field; links the task to a document review.\n- `Table` — rows × columns of cells; users fill cell values.\n- `SendRichEmail` — pre-written email embedded in the task; sent manually by the user or\n  automatically when the task is completed.\n- `Hidden` — only visible when editing the workflow; populated by integrations or default values.\n- `Snippet` — only visible when editing; passes static text or merge tags into automations.\n","type":"string","enum":["Date","Document","Email","File","Hidden","Members","MultiChoice","MultiFile","MultiSelect","Number","Select","SendRichEmail","Snippet","Table","Text","Textarea","Url"],"const":"MultiSelect"}}},{"title":"PublicApiNumberFormFieldConfig","type":"object","required":["fieldType"],"properties":{"placeholder":{"description":"Placeholder hint shown in the input when no value has been entered.","type":"string"},"defaultValue":{"description":"Default value pre-filled when a new workflow run is created.","type":"string"},"unit":{"description":"Unit label rendered next to the numeric value (e.g. `kg`, `$`, `%`).","type":"string"},"unitLocation":{"description":"Where the unit symbol appears relative to the number.\n\n- `prefix` — before the number (e.g. `$100`).\n- `suffix` — after the number (e.g. `100 USD`).\n","type":"string","enum":["prefix","suffix"]},"fieldType":{"description":"Form-field subtype discriminator (only relevant when widget `type` is `FormField`).\n\n- `Text` — short text input (≤255 characters).\n- `Textarea` — long-form text.\n- `Email` — email address.\n- `Url` — website / URL.\n- `Number` — numeric input with optional unit and constraints.\n- `Date` — date or date+time picker.\n- `Select` — dropdown; user picks one option.\n- `MultiChoice` — checkboxes; user picks one or more options.\n- `MultiSelect` — Subtasks: a checklist of sub-items inside the task.\n- `Members` — assignee picker (selects organization users).\n- `File` — single file upload.\n- `MultiFile` — multi-file upload (in-app \"File Upload\").\n- `Document` — document approval field; links the task to a document review.\n- `Table` — rows × columns of cells; users fill cell values.\n- `SendRichEmail` — pre-written email embedded in the task; sent manually by the user or\n  automatically when the task is completed.\n- `Hidden` — only visible when editing the workflow; populated by integrations or default values.\n- `Snippet` — only visible when editing; passes static text or merge tags into automations.\n","type":"string","enum":["Date","Document","Email","File","Hidden","Members","MultiChoice","MultiFile","MultiSelect","Number","Select","SendRichEmail","Snippet","Table","Text","Textarea","Url"],"const":"Number"}}},{"title":"PublicApiSelectFormFieldConfig","type":"object","required":["fieldType"],"properties":{"items":{"description":"Available options for selection-style form fields.","type":"array","items":{"title":"PublicApiFormFieldItem","type":"object","required":["name"],"properties":{"id":{"title":"EntityID","description":"The resource's ID.","type":"string"},"name":{"description":"Display name.","type":"string"}}}},"defaultValue":{"description":"Default value pre-filled when a new workflow run is created.","type":"string"},"fieldType":{"description":"Form-field subtype discriminator (only relevant when widget `type` is `FormField`).\n\n- `Text` — short text input (≤255 characters).\n- `Textarea` — long-form text.\n- `Email` — email address.\n- `Url` — website / URL.\n- `Number` — numeric input with optional unit and constraints.\n- `Date` — date or date+time picker.\n- `Select` — dropdown; user picks one option.\n- `MultiChoice` — checkboxes; user picks one or more options.\n- `MultiSelect` — Subtasks: a checklist of sub-items inside the task.\n- `Members` — assignee picker (selects organization users).\n- `File` — single file upload.\n- `MultiFile` — multi-file upload (in-app \"File Upload\").\n- `Document` — document approval field; links the task to a document review.\n- `Table` — rows × columns of cells; users fill cell values.\n- `SendRichEmail` — pre-written email embedded in the task; sent manually by the user or\n  automatically when the task is completed.\n- `Hidden` — only visible when editing the workflow; populated by integrations or default values.\n- `Snippet` — only visible when editing; passes static text or merge tags into automations.\n","type":"string","enum":["Date","Document","Email","File","Hidden","Members","MultiChoice","MultiFile","MultiSelect","Number","Select","SendRichEmail","Snippet","Table","Text","Textarea","Url"],"const":"Select"}}},{"title":"PublicApiSendRichEmailFormFieldConfig","type":"object","required":["bodyEditor","fieldType"],"properties":{"to":{"description":"Default recipient list (To). Comma-separated email addresses or merge tags.","type":"array","items":{"type":"string"}},"cc":{"description":"Default CC list. Comma-separated email addresses or merge tags.","type":"array","items":{"type":"string"}},"bcc":{"description":"Default BCC list. Comma-separated email addresses or merge tags.","type":"array","items":{"type":"string"}},"replyTo":{"description":"Default Reply-To address. An email address or merge tag.","type":"array","items":{"type":"string"}},"subject":{"description":"Default email subject. May contain merge tags.","type":"string"},"body":{"description":"Default email body. May contain merge tags.","type":"string"},"bodyEditor":{"description":"Editor used to author the email body.\n\n- `RichText` — rich-text editor with formatting.\n- `HTML` — raw HTML editor.\n- `PlainText` — plain text editor.\n","type":"string","enum":["RichText","HTML","PlainText"]},"editAllowed":{"description":"When `true`, users running the workflow can edit the email before sending.","type":"boolean"},"fieldType":{"description":"Form-field subtype discriminator (only relevant when widget `type` is `FormField`).\n\n- `Text` — short text input (≤255 characters).\n- `Textarea` — long-form text.\n- `Email` — email address.\n- `Url` — website / URL.\n- `Number` — numeric input with optional unit and constraints.\n- `Date` — date or date+time picker.\n- `Select` — dropdown; user picks one option.\n- `MultiChoice` — checkboxes; user picks one or more options.\n- `MultiSelect` — Subtasks: a checklist of sub-items inside the task.\n- `Members` — assignee picker (selects organization users).\n- `File` — single file upload.\n- `MultiFile` — multi-file upload (in-app \"File Upload\").\n- `Document` — document approval field; links the task to a document review.\n- `Table` — rows × columns of cells; users fill cell values.\n- `SendRichEmail` — pre-written email embedded in the task; sent manually by the user or\n  automatically when the task is completed.\n- `Hidden` — only visible when editing the workflow; populated by integrations or default values.\n- `Snippet` — only visible when editing; passes static text or merge tags into automations.\n","type":"string","enum":["Date","Document","Email","File","Hidden","Members","MultiChoice","MultiFile","MultiSelect","Number","Select","SendRichEmail","Snippet","Table","Text","Textarea","Url"],"const":"SendRichEmail"}}},{"title":"PublicApiSnippetFormFieldConfig","type":"object","required":["fieldType"],"properties":{"value":{"description":"The option's stored value.","type":"string"},"fieldType":{"description":"Form-field subtype discriminator (only relevant when widget `type` is `FormField`).\n\n- `Text` — short text input (≤255 characters).\n- `Textarea` — long-form text.\n- `Email` — email address.\n- `Url` — website / URL.\n- `Number` — numeric input with optional unit and constraints.\n- `Date` — date or date+time picker.\n- `Select` — dropdown; user picks one option.\n- `MultiChoice` — checkboxes; user picks one or more options.\n- `MultiSelect` — Subtasks: a checklist of sub-items inside the task.\n- `Members` — assignee picker (selects organization users).\n- `File` — single file upload.\n- `MultiFile` — multi-file upload (in-app \"File Upload\").\n- `Document` — document approval field; links the task to a document review.\n- `Table` — rows × columns of cells; users fill cell values.\n- `SendRichEmail` — pre-written email embedded in the task; sent manually by the user or\n  automatically when the task is completed.\n- `Hidden` — only visible when editing the workflow; populated by integrations or default values.\n- `Snippet` — only visible when editing; passes static text or merge tags into automations.\n","type":"string","enum":["Date","Document","Email","File","Hidden","Members","MultiChoice","MultiFile","MultiSelect","Number","Select","SendRichEmail","Snippet","Table","Text","Textarea","Url"],"const":"Snippet"}}},{"title":"PublicApiTableFormFieldConfig","type":"object","required":["fieldType"],"properties":{"columnDefs":{"description":"Data set column definitions (name + type per column).","type":"array","items":{"title":"PublicApiTableFormFieldColumn","type":"object","required":["id","name","columnType"],"properties":{"id":{"title":"EntityID","description":"The resource's ID.","type":"string"},"name":{"description":"Display name.","type":"string"},"columnType":{"description":"Data type a Table column accepts.\n\n- `Text` — free-form short text.\n","type":"string","enum":["Text"]}}}},"defaultValue":{"description":"Default value pre-filled when a new workflow run is created.","type":"string"},"fieldType":{"description":"Form-field subtype discriminator (only relevant when widget `type` is `FormField`).\n\n- `Text` — short text input (≤255 characters).\n- `Textarea` — long-form text.\n- `Email` — email address.\n- `Url` — website / URL.\n- `Number` — numeric input with optional unit and constraints.\n- `Date` — date or date+time picker.\n- `Select` — dropdown; user picks one option.\n- `MultiChoice` — checkboxes; user picks one or more options.\n- `MultiSelect` — Subtasks: a checklist of sub-items inside the task.\n- `Members` — assignee picker (selects organization users).\n- `File` — single file upload.\n- `MultiFile` — multi-file upload (in-app \"File Upload\").\n- `Document` — document approval field; links the task to a document review.\n- `Table` — rows × columns of cells; users fill cell values.\n- `SendRichEmail` — pre-written email embedded in the task; sent manually by the user or\n  automatically when the task is completed.\n- `Hidden` — only visible when editing the workflow; populated by integrations or default values.\n- `Snippet` — only visible when editing; passes static text or merge tags into automations.\n","type":"string","enum":["Date","Document","Email","File","Hidden","Members","MultiChoice","MultiFile","MultiSelect","Number","Select","SendRichEmail","Snippet","Table","Text","Textarea","Url"],"const":"Table"}}},{"title":"PublicApiTextFormFieldConfig","type":"object","required":["fieldType"],"properties":{"placeholder":{"description":"Placeholder hint shown in the input when no value has been entered.","type":"string"},"defaultValue":{"description":"Default value pre-filled when a new workflow run is created.","type":"string"},"fieldType":{"description":"Form-field subtype discriminator (only relevant when widget `type` is `FormField`).\n\n- `Text` — short text input (≤255 characters).\n- `Textarea` — long-form text.\n- `Email` — email address.\n- `Url` — website / URL.\n- `Number` — numeric input with optional unit and constraints.\n- `Date` — date or date+time picker.\n- `Select` — dropdown; user picks one option.\n- `MultiChoice` — checkboxes; user picks one or more options.\n- `MultiSelect` — Subtasks: a checklist of sub-items inside the task.\n- `Members` — assignee picker (selects organization users).\n- `File` — single file upload.\n- `MultiFile` — multi-file upload (in-app \"File Upload\").\n- `Document` — document approval field; links the task to a document review.\n- `Table` — rows × columns of cells; users fill cell values.\n- `SendRichEmail` — pre-written email embedded in the task; sent manually by the user or\n  automatically when the task is completed.\n- `Hidden` — only visible when editing the workflow; populated by integrations or default values.\n- `Snippet` — only visible when editing; passes static text or merge tags into automations.\n","type":"string","enum":["Date","Document","Email","File","Hidden","Members","MultiChoice","MultiFile","MultiSelect","Number","Select","SendRichEmail","Snippet","Table","Text","Textarea","Url"],"const":"Text"}}},{"title":"PublicApiTextareaFormFieldConfig","type":"object","required":["fieldType"],"properties":{"placeholder":{"description":"Placeholder hint shown in the input when no value has been entered.","type":"string"},"defaultValue":{"description":"Default value pre-filled when a new workflow run is created.","type":"string"},"format":{"description":"Editor style for this Textarea field.\n\n- `PlainText` — plain text.\n- `RichText` — rich-text editor with formatting (bold, lists, links, etc.).\n","type":"string","enum":["PlainText","RichText"]},"fieldType":{"description":"Form-field subtype discriminator (only relevant when widget `type` is `FormField`).\n\n- `Text` — short text input (≤255 characters).\n- `Textarea` — long-form text.\n- `Email` — email address.\n- `Url` — website / URL.\n- `Number` — numeric input with optional unit and constraints.\n- `Date` — date or date+time picker.\n- `Select` — dropdown; user picks one option.\n- `MultiChoice` — checkboxes; user picks one or more options.\n- `MultiSelect` — Subtasks: a checklist of sub-items inside the task.\n- `Members` — assignee picker (selects organization users).\n- `File` — single file upload.\n- `MultiFile` — multi-file upload (in-app \"File Upload\").\n- `Document` — document approval field; links the task to a document review.\n- `Table` — rows × columns of cells; users fill cell values.\n- `SendRichEmail` — pre-written email embedded in the task; sent manually by the user or\n  automatically when the task is completed.\n- `Hidden` — only visible when editing the workflow; populated by integrations or default values.\n- `Snippet` — only visible when editing; passes static text or merge tags into automations.\n","type":"string","enum":["Date","Document","Email","File","Hidden","Members","MultiChoice","MultiFile","MultiSelect","Number","Select","SendRichEmail","Snippet","Table","Text","Textarea","Url"],"const":"Textarea"}}},{"title":"PublicApiUrlFormFieldConfig","type":"object","required":["fieldType"],"properties":{"defaultValue":{"description":"Default value pre-filled when a new workflow run is created.","type":"string"},"fieldType":{"description":"Form-field subtype discriminator (only relevant when widget `type` is `FormField`).\n\n- `Text` — short text input (≤255 characters).\n- `Textarea` — long-form text.\n- `Email` — email address.\n- `Url` — website / URL.\n- `Number` — numeric input with optional unit and constraints.\n- `Date` — date or date+time picker.\n- `Select` — dropdown; user picks one option.\n- `MultiChoice` — checkboxes; user picks one or more options.\n- `MultiSelect` — Subtasks: a checklist of sub-items inside the task.\n- `Members` — assignee picker (selects organization users).\n- `File` — single file upload.\n- `MultiFile` — multi-file upload (in-app \"File Upload\").\n- `Document` — document approval field; links the task to a document review.\n- `Table` — rows × columns of cells; users fill cell values.\n- `SendRichEmail` — pre-written email embedded in the task; sent manually by the user or\n  automatically when the task is completed.\n- `Hidden` — only visible when editing the workflow; populated by integrations or default values.\n- `Snippet` — only visible when editing; passes static text or merge tags into automations.\n","type":"string","enum":["Date","Document","Email","File","Hidden","Members","MultiChoice","MultiFile","MultiSelect","Number","Select","SendRichEmail","Snippet","Table","Text","Textarea","Url"],"const":"Url"}}}],"required":["fieldType"],"discriminator":{"propertyName":"fieldType","mapping":{"Date":"#/components/schemas/PublicApiDateFormFieldConfig","Document":"#/components/schemas/PublicApiDocumentFormFieldConfig","Email":"#/components/schemas/PublicApiEmailFormFieldConfig","File":"#/components/schemas/PublicApiFileFormFieldConfig","Hidden":"#/components/schemas/PublicApiHiddenFormFieldConfig","Members":"#/components/schemas/PublicApiMembersFormFieldConfig","MultiChoice":"#/components/schemas/PublicApiMultiChoiceFormFieldConfig","MultiFile":"#/components/schemas/PublicApiMultiFileFormFieldConfig","MultiSelect":"#/components/schemas/PublicApiMultiSelectFormFieldConfig","Number":"#/components/schemas/PublicApiNumberFormFieldConfig","Select":"#/components/schemas/PublicApiSelectFormFieldConfig","SendRichEmail":"#/components/schemas/PublicApiSendRichEmailFormFieldConfig","Snippet":"#/components/schemas/PublicApiSnippetFormFieldConfig","Table":"#/components/schemas/PublicApiTableFormFieldConfig","Text":"#/components/schemas/PublicApiTextFormFieldConfig","Textarea":"#/components/schemas/PublicApiTextareaFormFieldConfig","Url":"#/components/schemas/PublicApiUrlFormFieldConfig"}}},"constraints":{"title":"PublicApiFormFieldConstraints","description":"Field-specific validation constraints. Shape depends on `fieldType`.","oneOf":[{"title":"PublicApiDateFormFieldConstraints","type":"object","required":["fieldType"],"properties":{"afterDate":{"description":"Earliest accepted date (inclusive). Pair with `afterDateSourceType`.","type":"string","format":"date-time"},"beforeDate":{"description":"Latest accepted date (inclusive). Pair with `beforeDateSourceType`.","type":"string","format":"date-time"},"afterDateFormFieldWidgetGroupId":{"title":"EntityID","description":"When `afterDateSourceType=FormField`, the ID of the Date form field whose value is the lower bound.","type":"string"},"beforeDateFormFieldWidgetGroupId":{"title":"EntityID","description":"When `beforeDateSourceType=FormField`, the ID of the Date form field whose value is the upper bound.","type":"string"},"afterDateSourceType":{"description":"How the before/after constraint date is derived.\n\n- `SpecificDate` — an absolute date supplied as `afterDate` / `beforeDate`.\n- `FormFieldValue` — derived from another Date form field (`afterDateField` / `beforeDateField`).\n- `TaskDueDate` — relative to the containing task's due date.\n- `ChecklistStartDate` / `ChecklistDueDate` — relative to the workflow run's start or due date.\n","type":"string","enum":["SpecificDate","FormFieldValue","TaskDueDate","ChecklistStartDate","ChecklistDueDate"]},"beforeDateSourceType":{"description":"How the before/after constraint date is derived.\n\n- `SpecificDate` — an absolute date supplied as `afterDate` / `beforeDate`.\n- `FormFieldValue` — derived from another Date form field (`afterDateField` / `beforeDateField`).\n- `TaskDueDate` — relative to the containing task's due date.\n- `ChecklistStartDate` / `ChecklistDueDate` — relative to the workflow run's start or due date.\n","type":"string","enum":["SpecificDate","FormFieldValue","TaskDueDate","ChecklistStartDate","ChecklistDueDate"]},"afterDateOffset":{"description":"ISO 8601 duration (e.g. `P7D`, `P1Y2M`).","type":"string"},"beforeDateOffset":{"description":"ISO 8601 duration (e.g. `P7D`, `P1Y2M`).","type":"string"},"fieldType":{"description":"Form-field subtype discriminator (only relevant when widget `type` is `FormField`).\n\n- `Text` — short text input (≤255 characters).\n- `Textarea` — long-form text.\n- `Email` — email address.\n- `Url` — website / URL.\n- `Number` — numeric input with optional unit and constraints.\n- `Date` — date or date+time picker.\n- `Select` — dropdown; user picks one option.\n- `MultiChoice` — checkboxes; user picks one or more options.\n- `MultiSelect` — Subtasks: a checklist of sub-items inside the task.\n- `Members` — assignee picker (selects organization users).\n- `File` — single file upload.\n- `MultiFile` — multi-file upload (in-app \"File Upload\").\n- `Document` — document approval field; links the task to a document review.\n- `Table` — rows × columns of cells; users fill cell values.\n- `SendRichEmail` — pre-written email embedded in the task; sent manually by the user or\n  automatically when the task is completed.\n- `Hidden` — only visible when editing the workflow; populated by integrations or default values.\n- `Snippet` — only visible when editing; passes static text or merge tags into automations.\n","type":"string","enum":["Date","Document","Email","File","Hidden","Members","MultiChoice","MultiFile","MultiSelect","Number","Select","SendRichEmail","Snippet","Table","Text","Textarea","Url"],"const":"Date"}}},{"title":"PublicApiEmailFormFieldConstraints","type":"object","required":["fieldType"],"properties":{"domains":{"description":"Allowed (or blocked, depending on `restriction`) email domains for this field.","type":"array","items":{"type":"string"}},"restriction":{"description":"How the `domains` list filters allowed email addresses.\n\n- `Allow` — only emails whose domain is in the list are accepted.\n- `Block` — emails whose domain is in the list are rejected; all others accepted.\n","type":"string","enum":["Allow","Block"]},"fieldType":{"description":"Form-field subtype discriminator (only relevant when widget `type` is `FormField`).\n\n- `Text` — short text input (≤255 characters).\n- `Textarea` — long-form text.\n- `Email` — email address.\n- `Url` — website / URL.\n- `Number` — numeric input with optional unit and constraints.\n- `Date` — date or date+time picker.\n- `Select` — dropdown; user picks one option.\n- `MultiChoice` — checkboxes; user picks one or more options.\n- `MultiSelect` — Subtasks: a checklist of sub-items inside the task.\n- `Members` — assignee picker (selects organization users).\n- `File` — single file upload.\n- `MultiFile` — multi-file upload (in-app \"File Upload\").\n- `Document` — document approval field; links the task to a document review.\n- `Table` — rows × columns of cells; users fill cell values.\n- `SendRichEmail` — pre-written email embedded in the task; sent manually by the user or\n  automatically when the task is completed.\n- `Hidden` — only visible when editing the workflow; populated by integrations or default values.\n- `Snippet` — only visible when editing; passes static text or merge tags into automations.\n","type":"string","enum":["Date","Document","Email","File","Hidden","Members","MultiChoice","MultiFile","MultiSelect","Number","Select","SendRichEmail","Snippet","Table","Text","Textarea","Url"],"const":"Email"}}},{"title":"PublicApiFileFormFieldConstraints","type":"object","required":["fieldType"],"properties":{"extensions":{"description":"Allowed file extensions, including the leading dot (e.g. `.pdf`, `.docx`).","type":"array","items":{"type":"string"}},"fieldType":{"description":"Form-field subtype discriminator (only relevant when widget `type` is `FormField`).\n\n- `Text` — short text input (≤255 characters).\n- `Textarea` — long-form text.\n- `Email` — email address.\n- `Url` — website / URL.\n- `Number` — numeric input with optional unit and constraints.\n- `Date` — date or date+time picker.\n- `Select` — dropdown; user picks one option.\n- `MultiChoice` — checkboxes; user picks one or more options.\n- `MultiSelect` — Subtasks: a checklist of sub-items inside the task.\n- `Members` — assignee picker (selects organization users).\n- `File` — single file upload.\n- `MultiFile` — multi-file upload (in-app \"File Upload\").\n- `Document` — document approval field; links the task to a document review.\n- `Table` — rows × columns of cells; users fill cell values.\n- `SendRichEmail` — pre-written email embedded in the task; sent manually by the user or\n  automatically when the task is completed.\n- `Hidden` — only visible when editing the workflow; populated by integrations or default values.\n- `Snippet` — only visible when editing; passes static text or merge tags into automations.\n","type":"string","enum":["Date","Document","Email","File","Hidden","Members","MultiChoice","MultiFile","MultiSelect","Number","Select","SendRichEmail","Snippet","Table","Text","Textarea","Url"],"const":"File"}}},{"title":"PublicApiMultiFileFormFieldConstraints","type":"object","required":["fieldType"],"properties":{"extensions":{"description":"Allowed file extensions, including the leading dot (e.g. `.pdf`, `.docx`).","type":"array","items":{"type":"string"}},"mode":{"description":"Whether the field accepts a single file or multiple files.\n\n- `Single` — only one file may be uploaded.\n- `Multiple` — multiple files may be uploaded.\n","type":"string","enum":["Multiple","Single"]},"fieldType":{"description":"Form-field subtype discriminator (only relevant when widget `type` is `FormField`).\n\n- `Text` — short text input (≤255 characters).\n- `Textarea` — long-form text.\n- `Email` — email address.\n- `Url` — website / URL.\n- `Number` — numeric input with optional unit and constraints.\n- `Date` — date or date+time picker.\n- `Select` — dropdown; user picks one option.\n- `MultiChoice` — checkboxes; user picks one or more options.\n- `MultiSelect` — Subtasks: a checklist of sub-items inside the task.\n- `Members` — assignee picker (selects organization users).\n- `File` — single file upload.\n- `MultiFile` — multi-file upload (in-app \"File Upload\").\n- `Document` — document approval field; links the task to a document review.\n- `Table` — rows × columns of cells; users fill cell values.\n- `SendRichEmail` — pre-written email embedded in the task; sent manually by the user or\n  automatically when the task is completed.\n- `Hidden` — only visible when editing the workflow; populated by integrations or default values.\n- `Snippet` — only visible when editing; passes static text or merge tags into automations.\n","type":"string","enum":["Date","Document","Email","File","Hidden","Members","MultiChoice","MultiFile","MultiSelect","Number","Select","SendRichEmail","Snippet","Table","Text","Textarea","Url"],"const":"MultiFile"}}},{"title":"PublicApiNumberFormFieldConstraints","type":"object","required":["fieldType"],"properties":{"minDigits":{"description":"Minimum number of digits.","type":"integer","format":"int32"},"maxDigits":{"description":"Maximum number of digits.","type":"integer","format":"int32"},"minValue":{"description":"Minimum numeric value.","type":"integer","format":"int32"},"maxValue":{"description":"Maximum numeric value.","type":"integer","format":"int32"},"decimalPlaces":{"description":"Number of decimal places to accept (0 means integers only).","type":"integer","format":"int32"},"allowNegative":{"description":"When `true`, negative numbers are accepted.","type":"boolean"},"fieldType":{"description":"Form-field subtype discriminator (only relevant when widget `type` is `FormField`).\n\n- `Text` — short text input (≤255 characters).\n- `Textarea` — long-form text.\n- `Email` — email address.\n- `Url` — website / URL.\n- `Number` — numeric input with optional unit and constraints.\n- `Date` — date or date+time picker.\n- `Select` — dropdown; user picks one option.\n- `MultiChoice` — checkboxes; user picks one or more options.\n- `MultiSelect` — Subtasks: a checklist of sub-items inside the task.\n- `Members` — assignee picker (selects organization users).\n- `File` — single file upload.\n- `MultiFile` — multi-file upload (in-app \"File Upload\").\n- `Document` — document approval field; links the task to a document review.\n- `Table` — rows × columns of cells; users fill cell values.\n- `SendRichEmail` — pre-written email embedded in the task; sent manually by the user or\n  automatically when the task is completed.\n- `Hidden` — only visible when editing the workflow; populated by integrations or default values.\n- `Snippet` — only visible when editing; passes static text or merge tags into automations.\n","type":"string","enum":["Date","Document","Email","File","Hidden","Members","MultiChoice","MultiFile","MultiSelect","Number","Select","SendRichEmail","Snippet","Table","Text","Textarea","Url"],"const":"Number"}}},{"title":"PublicApiTextFormFieldConstraints","type":"object","required":["fieldType"],"properties":{"min":{"description":"Inclusive lower bound.","type":"integer","format":"int32"},"max":{"description":"Inclusive upper bound.","type":"integer","format":"int32"},"fieldType":{"description":"Form-field subtype discriminator (only relevant when widget `type` is `FormField`).\n\n- `Text` — short text input (≤255 characters).\n- `Textarea` — long-form text.\n- `Email` — email address.\n- `Url` — website / URL.\n- `Number` — numeric input with optional unit and constraints.\n- `Date` — date or date+time picker.\n- `Select` — dropdown; user picks one option.\n- `MultiChoice` — checkboxes; user picks one or more options.\n- `MultiSelect` — Subtasks: a checklist of sub-items inside the task.\n- `Members` — assignee picker (selects organization users).\n- `File` — single file upload.\n- `MultiFile` — multi-file upload (in-app \"File Upload\").\n- `Document` — document approval field; links the task to a document review.\n- `Table` — rows × columns of cells; users fill cell values.\n- `SendRichEmail` — pre-written email embedded in the task; sent manually by the user or\n  automatically when the task is completed.\n- `Hidden` — only visible when editing the workflow; populated by integrations or default values.\n- `Snippet` — only visible when editing; passes static text or merge tags into automations.\n","type":"string","enum":["Date","Document","Email","File","Hidden","Members","MultiChoice","MultiFile","MultiSelect","Number","Select","SendRichEmail","Snippet","Table","Text","Textarea","Url"],"const":"Text"}}},{"title":"PublicApiTextareaFormFieldConstraints","type":"object","required":["fieldType"],"properties":{"min":{"description":"Inclusive lower bound.","type":"integer","format":"int32"},"max":{"description":"Inclusive upper bound.","type":"integer","format":"int32"},"fieldType":{"description":"Form-field subtype discriminator (only relevant when widget `type` is `FormField`).\n\n- `Text` — short text input (≤255 characters).\n- `Textarea` — long-form text.\n- `Email` — email address.\n- `Url` — website / URL.\n- `Number` — numeric input with optional unit and constraints.\n- `Date` — date or date+time picker.\n- `Select` — dropdown; user picks one option.\n- `MultiChoice` — checkboxes; user picks one or more options.\n- `MultiSelect` — Subtasks: a checklist of sub-items inside the task.\n- `Members` — assignee picker (selects organization users).\n- `File` — single file upload.\n- `MultiFile` — multi-file upload (in-app \"File Upload\").\n- `Document` — document approval field; links the task to a document review.\n- `Table` — rows × columns of cells; users fill cell values.\n- `SendRichEmail` — pre-written email embedded in the task; sent manually by the user or\n  automatically when the task is completed.\n- `Hidden` — only visible when editing the workflow; populated by integrations or default values.\n- `Snippet` — only visible when editing; passes static text or merge tags into automations.\n","type":"string","enum":["Date","Document","Email","File","Hidden","Members","MultiChoice","MultiFile","MultiSelect","Number","Select","SendRichEmail","Snippet","Table","Text","Textarea","Url"],"const":"Textarea"}}}],"required":["fieldType"],"discriminator":{"propertyName":"fieldType","mapping":{"Date":"#/components/schemas/PublicApiDateFormFieldConstraints","Email":"#/components/schemas/PublicApiEmailFormFieldConstraints","File":"#/components/schemas/PublicApiFileFormFieldConstraints","MultiFile":"#/components/schemas/PublicApiMultiFileFormFieldConstraints","Number":"#/components/schemas/PublicApiNumberFormFieldConstraints","Text":"#/components/schemas/PublicApiTextFormFieldConstraints","Textarea":"#/components/schemas/PublicApiTextareaFormFieldConstraints"}}},"links":{"description":"Navigable HATEOAS links to related resources. Each entry has a `name` (RFC-5988 relation), an `href` URL, and a `type` (`Api` or `App`).","type":"array","items":{"title":"Link","description":"A HATEOAS link to a related resource. Use these to navigate between resources without constructing URLs by hand.","type":"object","required":["name","href","type"],"properties":{"name":{"description":"Standard link relation name (RFC 5988) indicating this link's role. Common values include `self`, `edit`, `related`, `previous`, `next`.","type":"string"},"href":{"title":"Uri","description":"URL of the linked resource.","examples":["https://api.process.st/api/v1.1/resource/XXX"],"type":"string"},"rel":{"description":"Optional. The kind of resource this link points to (e.g. `Workflow`, `Task`, `Comment`).","type":"string","enum":["Approval Task","Approvals","Assignees","Comment","Data Set Records","Data Sets","Form Field Values","Subject Task","Task","Tasks","Users","Webhook","Workflow","Workflow Run"]},"type":{"description":"Whether this link targets an API endpoint or a Process Street app URL. `Api` — a callable API endpoint you can fetch directly. `App` — a browser-facing URL in the Process Street UI.","type":"string","enum":["Api","App"]}}}},"type":{"title":"WidgetType","description":"Widget kind discriminator.\n\n- `FormField` — collects user input (Text, Number, Date, etc. — see `fieldType`).\n- `Text` — rich text content displayed on the task.\n- `Image` — image content displayed on the task.\n- `File` — downloadable file attached to the task.\n- `Video` — video content (uploaded or linked from a hosting service).\n- `Embed` — embedded external content via URL.\n- `CrossLink` — link to another workflow or page.\n","type":"string","enum":["FormField","Text","Image","File","Video","Embed","CrossLink"]}}},"PublicApiHiddenFormFieldConfig":{"title":"PublicApiHiddenFormFieldConfig","type":"object","required":["fieldType"],"properties":{"defaultValue":{"description":"Default value pre-filled when a new workflow run is created.","type":"string"},"fieldType":{"description":"Form-field subtype discriminator (only relevant when widget `type` is `FormField`).\n\n- `Text` — short text input (≤255 characters).\n- `Textarea` — long-form text.\n- `Email` — email address.\n- `Url` — website / URL.\n- `Number` — numeric input with optional unit and constraints.\n- `Date` — date or date+time picker.\n- `Select` — dropdown; user picks one option.\n- `MultiChoice` — checkboxes; user picks one or more options.\n- `MultiSelect` — Subtasks: a checklist of sub-items inside the task.\n- `Members` — assignee picker (selects organization users).\n- `File` — single file upload.\n- `MultiFile` — multi-file upload (in-app \"File Upload\").\n- `Document` — document approval field; links the task to a document review.\n- `Table` — rows × columns of cells; users fill cell values.\n- `SendRichEmail` — pre-written email embedded in the task; sent manually by the user or\n  automatically when the task is completed.\n- `Hidden` — only visible when editing the workflow; populated by integrations or default values.\n- `Snippet` — only visible when editing; passes static text or merge tags into automations.\n","type":"string","enum":["Date","Document","Email","File","Hidden","Members","MultiChoice","MultiFile","MultiSelect","Number","Select","SendRichEmail","Snippet","Table","Text","Textarea","Url"],"const":"Hidden"}}},"PublicApiHiddenFormFieldConfig1":{"title":"PublicApiHiddenFormFieldConfig","type":"object","properties":{"defaultValue":{"description":"Default value pre-filled when a new workflow run is created.","type":"string"}}},"PublicApiImageWidget":{"title":"PublicApiImageWidget","type":"object","required":["hiddenByDefault","id","taskId","createdDate","createdBy","updatedDate","updatedBy","type"],"properties":{"hiddenByDefault":{"description":"When `true`, the widget is hidden by default; conditional logic rules can reveal it at runtime. Defaults to `false`.","type":"boolean"},"id":{"description":"The ID of the Widget","examples":["s_ab8fn58g4BoX6ZlHp7xQ"],"type":"string"},"taskId":{"description":"The ID of the Task","examples":["s_ab8fn58g4BoX6ZlHp7xQ"],"type":"string"},"createdDate":{"description":"When the resource was first created. ISO-8601 UTC.","type":"string","format":"date-time"},"createdBy":{"description":"User who created the resource.","examples":[{"id":"iUu2eOU2Q-sBoX6ZjZV9pQ","email":"jane.doe@example.com","username":"Jane Doe"}],"type":"object","required":["id","email","username"],"properties":{"id":{"title":"EntityID","description":"The resource's ID.","type":"string"},"email":{"description":"The user's email address (also their login identifier).","type":"string"},"username":{"description":"The user's display name (e.g. `Jane Doe`).","type":"string"}}},"updatedDate":{"description":"When the resource was last modified. ISO-8601 UTC.","type":"string","format":"date-time"},"updatedBy":{"description":"User who last modified the resource.","examples":[{"id":"iUu2eOU2Q-sBoX6ZjZV9pQ","email":"jane.doe@example.com","username":"Jane Doe"}],"type":"object","required":["id","email","username"],"properties":{"id":{"title":"EntityID","description":"The resource's ID.","type":"string"},"email":{"description":"The user's email address (also their login identifier).","type":"string"},"username":{"description":"The user's display name (e.g. `Jane Doe`).","type":"string"}}},"caption":{"description":"Caption text rendered with the image.","type":"string"},"file":{"title":"PublicApiWidgetFile","description":"Uploaded file reference. Use the upload endpoint to attach content.","type":"object","required":["id","name","mimeType","size"],"properties":{"id":{"title":"EntityID","description":"The resource's ID.","type":"string"},"name":{"description":"Display name.","type":"string"},"mimeType":{"description":"MIME type detected at upload time (e.g. `image/png`, `application/pdf`).","type":"string"},"size":{"description":"File size in bytes.","type":"integer","format":"int64"}}},"links":{"description":"Navigable HATEOAS links to related resources. Each entry has a `name` (RFC-5988 relation), an `href` URL, and a `type` (`Api` or `App`).","type":"array","items":{"title":"Link","description":"A HATEOAS link to a related resource. Use these to navigate between resources without constructing URLs by hand.","type":"object","required":["name","href","type"],"properties":{"name":{"description":"Standard link relation name (RFC 5988) indicating this link's role. Common values include `self`, `edit`, `related`, `previous`, `next`.","type":"string"},"href":{"title":"Uri","description":"URL of the linked resource.","examples":["https://api.process.st/api/v1.1/resource/XXX"],"type":"string"},"rel":{"description":"Optional. The kind of resource this link points to (e.g. `Workflow`, `Task`, `Comment`).","type":"string","enum":["Approval Task","Approvals","Assignees","Comment","Data Set Records","Data Sets","Form Field Values","Subject Task","Task","Tasks","Users","Webhook","Workflow","Workflow Run"]},"type":{"description":"Whether this link targets an API endpoint or a Process Street app URL. `Api` — a callable API endpoint you can fetch directly. `App` — a browser-facing URL in the Process Street UI.","type":"string","enum":["Api","App"]}}}},"type":{"title":"WidgetType","description":"Widget kind discriminator.\n\n- `FormField` — collects user input (Text, Number, Date, etc. — see `fieldType`).\n- `Text` — rich text content displayed on the task.\n- `Image` — image content displayed on the task.\n- `File` — downloadable file attached to the task.\n- `Video` — video content (uploaded or linked from a hosting service).\n- `Embed` — embedded external content via URL.\n- `CrossLink` — link to another workflow or page.\n","type":"string","enum":["FormField","Text","Image","File","Video","Embed","CrossLink"]}}},"PublicApiIncomingWebhook":{"title":"PublicApiIncomingWebhook","type":"object","required":["id","createdDate","createdBy","updatedDate","updatedBy","workflowId","name","automationApp","status","url","config"],"properties":{"id":{"title":"EntityID","description":"The resource's ID.","type":"string"},"createdDate":{"description":"When the resource was first created. ISO-8601 UTC.","type":"string","format":"date-time"},"createdBy":{"description":"User who created the resource.","examples":[{"id":"iUu2eOU2Q-sBoX6ZjZV9pQ","email":"jane.doe@example.com","username":"Jane Doe"}],"type":"object","required":["id","email","username"],"properties":{"id":{"title":"EntityID","description":"The resource's ID.","type":"string"},"email":{"description":"The user's email address (also their login identifier).","type":"string"},"username":{"description":"The user's display name (e.g. `Jane Doe`).","type":"string"}}},"updatedDate":{"description":"When the resource was last modified. ISO-8601 UTC.","type":"string","format":"date-time"},"updatedBy":{"description":"User who last modified the resource.","examples":[{"id":"iUu2eOU2Q-sBoX6ZjZV9pQ","email":"jane.doe@example.com","username":"Jane Doe"}],"type":"object","required":["id","email","username"],"properties":{"id":{"title":"EntityID","description":"The resource's ID.","type":"string"},"email":{"description":"The user's email address (also their login identifier).","type":"string"},"username":{"description":"The user's display name (e.g. `Jane Doe`).","type":"string"}}},"workflowId":{"description":"The ID of the Workflow","examples":["hcwXAF43YKkBoX6ZlsN4Nw"],"type":"string"},"name":{"description":"Human-readable label for the webhook (e.g. \"Salesforce → Onboarding\").","type":"string"},"automationApp":{"description":"Label of the automation app or integration source (e.g. `Zapier`, `Custom`, `Salesforce`).","type":"string"},"status":{"description":"Whether the incoming webhook is currently accepting payloads. `Active` — incoming requests at the webhook URL create or update a workflow run. `Disabled` — the webhook URL is configured but requests are ignored.","type":"string","enum":["Active","Disabled"]},"url":{"description":"Public URL to POST payloads to. Include this in the upstream system's webhook config.","type":"string"},"config":{"title":"PublicApiIncomingWebhookConfig","description":"Field-specific configuration. Shape depends on `fieldType`.","type":"object","required":["properties","formFields"],"properties":{"properties":{"description":"Mapping from workflow-run property names (e.g. `Name`, `DueDate`, `Assignees`) to JSONPath expressions in the incoming payload.","type":"object","additionalProperties":{"type":"string"}},"formFields":{"description":"Mapping from form-field IDs to JSONPath expressions in the incoming payload.","type":"object","additionalProperties":{"type":"string"}}}},"links":{"description":"Navigable HATEOAS links to related resources. Each entry has a `name` (RFC-5988 link relation like `self`, `edit`, `related`), an `href` URL, and a `type` (`Api` for callable endpoints, `App` for browser-facing URLs). Prefer following these `href` values over constructing URLs by hand.","type":"array","items":{"title":"Link","description":"A HATEOAS link to a related resource. Use these to navigate between resources without constructing URLs by hand.","type":"object","required":["name","href","type"],"properties":{"name":{"description":"Standard link relation name (RFC 5988) indicating this link's role. Common values include `self`, `edit`, `related`, `previous`, `next`.","type":"string"},"href":{"title":"Uri","description":"URL of the linked resource.","examples":["https://api.process.st/api/v1.1/resource/XXX"],"type":"string"},"rel":{"description":"Optional. The kind of resource this link points to (e.g. `Workflow`, `Task`, `Comment`).","type":"string","enum":["Approval Task","Approvals","Assignees","Comment","Data Set Records","Data Sets","Form Field Values","Subject Task","Task","Tasks","Users","Webhook","Workflow","Workflow Run"]},"type":{"description":"Whether this link targets an API endpoint or a Process Street app URL. `Api` — a callable API endpoint you can fetch directly. `App` — a browser-facing URL in the Process Street UI.","type":"string","enum":["Api","App"]}}}}}},"PublicApiIncomingWebhookConfig":{"title":"PublicApiIncomingWebhookConfig","type":"object","required":["properties","formFields"],"properties":{"properties":{"description":"Mapping from workflow-run property names (e.g. `Name`, `DueDate`, `Assignees`) to JSONPath expressions in the incoming payload.","type":"object","additionalProperties":{"type":"string"}},"formFields":{"description":"Mapping from form-field IDs to JSONPath expressions in the incoming payload.","type":"object","additionalProperties":{"type":"string"}}}},"PublicApiIncomingWebhookListResponse":{"title":"PublicApiIncomingWebhookListResponse","type":"object","properties":{"data":{"description":"The list of resources returned by this request.","type":"array","items":{"title":"PublicApiIncomingWebhook","type":"object","required":["id","createdDate","createdBy","updatedDate","updatedBy","workflowId","name","automationApp","status","url","config"],"properties":{"id":{"title":"EntityID","description":"The resource's ID.","type":"string"},"createdDate":{"description":"When the resource was first created. ISO-8601 UTC.","type":"string","format":"date-time"},"createdBy":{"description":"User who created the resource.","examples":[{"id":"iUu2eOU2Q-sBoX6ZjZV9pQ","email":"jane.doe@example.com","username":"Jane Doe"}],"type":"object","required":["id","email","username"],"properties":{"id":{"title":"EntityID","description":"The resource's ID.","type":"string"},"email":{"description":"The user's email address (also their login identifier).","type":"string"},"username":{"description":"The user's display name (e.g. `Jane Doe`).","type":"string"}}},"updatedDate":{"description":"When the resource was last modified. ISO-8601 UTC.","type":"string","format":"date-time"},"updatedBy":{"description":"User who last modified the resource.","examples":[{"id":"iUu2eOU2Q-sBoX6ZjZV9pQ","email":"jane.doe@example.com","username":"Jane Doe"}],"type":"object","required":["id","email","username"],"properties":{"id":{"title":"EntityID","description":"The resource's ID.","type":"string"},"email":{"description":"The user's email address (also their login identifier).","type":"string"},"username":{"description":"The user's display name (e.g. `Jane Doe`).","type":"string"}}},"workflowId":{"description":"The ID of the Workflow","examples":["hcwXAF43YKkBoX6ZlsN4Nw"],"type":"string"},"name":{"description":"Human-readable label for the webhook (e.g. \"Salesforce → Onboarding\").","type":"string"},"automationApp":{"description":"Label of the automation app or integration source (e.g. `Zapier`, `Custom`, `Salesforce`).","type":"string"},"status":{"description":"Whether the incoming webhook is currently accepting payloads. `Active` — incoming requests at the webhook URL create or update a workflow run. `Disabled` — the webhook URL is configured but requests are ignored.","type":"string","enum":["Active","Disabled"]},"url":{"description":"Public URL to POST payloads to. Include this in the upstream system's webhook config.","type":"string"},"config":{"title":"PublicApiIncomingWebhookConfig","description":"Field-specific configuration. Shape depends on `fieldType`.","type":"object","required":["properties","formFields"],"properties":{"properties":{"description":"Mapping from workflow-run property names (e.g. `Name`, `DueDate`, `Assignees`) to JSONPath expressions in the incoming payload.","type":"object","additionalProperties":{"type":"string"}},"formFields":{"description":"Mapping from form-field IDs to JSONPath expressions in the incoming payload.","type":"object","additionalProperties":{"type":"string"}}}},"links":{"description":"Navigable HATEOAS links to related resources. Each entry has a `name` (RFC-5988 link relation like `self`, `edit`, `related`), an `href` URL, and a `type` (`Api` for callable endpoints, `App` for browser-facing URLs). Prefer following these `href` values over constructing URLs by hand.","type":"array","items":{"title":"Link","description":"A HATEOAS link to a related resource. Use these to navigate between resources without constructing URLs by hand.","type":"object","required":["name","href","type"],"properties":{"name":{"description":"Standard link relation name (RFC 5988) indicating this link's role. Common values include `self`, `edit`, `related`, `previous`, `next`.","type":"string"},"href":{"title":"Uri","description":"URL of the linked resource.","examples":["https://api.process.st/api/v1.1/resource/XXX"],"type":"string"},"rel":{"description":"Optional. The kind of resource this link points to (e.g. `Workflow`, `Task`, `Comment`).","type":"string","enum":["Approval Task","Approvals","Assignees","Comment","Data Set Records","Data Sets","Form Field Values","Subject Task","Task","Tasks","Users","Webhook","Workflow","Workflow Run"]},"type":{"description":"Whether this link targets an API endpoint or a Process Street app URL. `Api` — a callable API endpoint you can fetch directly. `App` — a browser-facing URL in the Process Street UI.","type":"string","enum":["Api","App"]}}}}}}},"links":{"description":"Pagination links. When the result has more pages, look for an entry with `name: \"next\"` — its `href` is the URL to fetch the next page. Absence of `next` means there are no more pages. For single-resource responses this array is typically empty.","type":"array","items":{"title":"Link","description":"A HATEOAS link to a related resource. Use these to navigate between resources without constructing URLs by hand.","type":"object","required":["name","href","type"],"properties":{"name":{"description":"Standard link relation name (RFC 5988) indicating this link's role. Common values include `self`, `edit`, `related`, `previous`, `next`.","type":"string"},"href":{"title":"Uri","description":"URL of the linked resource.","examples":["https://api.process.st/api/v1.1/resource/XXX"],"type":"string"},"rel":{"description":"Optional. The kind of resource this link points to (e.g. `Workflow`, `Task`, `Comment`).","type":"string","enum":["Approval Task","Approvals","Assignees","Comment","Data Set Records","Data Sets","Form Field Values","Subject Task","Task","Tasks","Users","Webhook","Workflow","Workflow Run"]},"type":{"description":"Whether this link targets an API endpoint or a Process Street app URL. `Api` — a callable API endpoint you can fetch directly. `App` — a browser-facing URL in the Process Street UI.","type":"string","enum":["Api","App"]}}}}}},"PublicApiIncomingWebhookResponse":{"title":"PublicApiIncomingWebhookResponse","type":"object","required":["data"],"properties":{"data":{"title":"PublicApiIncomingWebhook","type":"object","required":["id","createdDate","createdBy","updatedDate","updatedBy","workflowId","name","automationApp","status","url","config"],"properties":{"id":{"title":"EntityID","description":"The resource's ID.","type":"string"},"createdDate":{"description":"When the resource was first created. ISO-8601 UTC.","type":"string","format":"date-time"},"createdBy":{"description":"User who created the resource.","examples":[{"id":"iUu2eOU2Q-sBoX6ZjZV9pQ","email":"jane.doe@example.com","username":"Jane Doe"}],"type":"object","required":["id","email","username"],"properties":{"id":{"title":"EntityID","description":"The resource's ID.","type":"string"},"email":{"description":"The user's email address (also their login identifier).","type":"string"},"username":{"description":"The user's display name (e.g. `Jane Doe`).","type":"string"}}},"updatedDate":{"description":"When the resource was last modified. ISO-8601 UTC.","type":"string","format":"date-time"},"updatedBy":{"description":"User who last modified the resource.","examples":[{"id":"iUu2eOU2Q-sBoX6ZjZV9pQ","email":"jane.doe@example.com","username":"Jane Doe"}],"type":"object","required":["id","email","username"],"properties":{"id":{"title":"EntityID","description":"The resource's ID.","type":"string"},"email":{"description":"The user's email address (also their login identifier).","type":"string"},"username":{"description":"The user's display name (e.g. `Jane Doe`).","type":"string"}}},"workflowId":{"description":"The ID of the Workflow","examples":["hcwXAF43YKkBoX6ZlsN4Nw"],"type":"string"},"name":{"description":"Human-readable label for the webhook (e.g. \"Salesforce → Onboarding\").","type":"string"},"automationApp":{"description":"Label of the automation app or integration source (e.g. `Zapier`, `Custom`, `Salesforce`).","type":"string"},"status":{"description":"Whether the incoming webhook is currently accepting payloads. `Active` — incoming requests at the webhook URL create or update a workflow run. `Disabled` — the webhook URL is configured but requests are ignored.","type":"string","enum":["Active","Disabled"]},"url":{"description":"Public URL to POST payloads to. Include this in the upstream system's webhook config.","type":"string"},"config":{"title":"PublicApiIncomingWebhookConfig","description":"Field-specific configuration. Shape depends on `fieldType`.","type":"object","required":["properties","formFields"],"properties":{"properties":{"description":"Mapping from workflow-run property names (e.g. `Name`, `DueDate`, `Assignees`) to JSONPath expressions in the incoming payload.","type":"object","additionalProperties":{"type":"string"}},"formFields":{"description":"Mapping from form-field IDs to JSONPath expressions in the incoming payload.","type":"object","additionalProperties":{"type":"string"}}}},"links":{"description":"Navigable HATEOAS links to related resources. Each entry has a `name` (RFC-5988 link relation like `self`, `edit`, `related`), an `href` URL, and a `type` (`Api` for callable endpoints, `App` for browser-facing URLs). Prefer following these `href` values over constructing URLs by hand.","type":"array","items":{"title":"Link","description":"A HATEOAS link to a related resource. Use these to navigate between resources without constructing URLs by hand.","type":"object","required":["name","href","type"],"properties":{"name":{"description":"Standard link relation name (RFC 5988) indicating this link's role. Common values include `self`, `edit`, `related`, `previous`, `next`.","type":"string"},"href":{"title":"Uri","description":"URL of the linked resource.","examples":["https://api.process.st/api/v1.1/resource/XXX"],"type":"string"},"rel":{"description":"Optional. The kind of resource this link points to (e.g. `Workflow`, `Task`, `Comment`).","type":"string","enum":["Approval Task","Approvals","Assignees","Comment","Data Set Records","Data Sets","Form Field Values","Subject Task","Task","Tasks","Users","Webhook","Workflow","Workflow Run"]},"type":{"description":"Whether this link targets an API endpoint or a Process Street app URL. `Api` — a callable API endpoint you can fetch directly. `App` — a browser-facing URL in the Process Street UI.","type":"string","enum":["Api","App"]}}}}}},"links":{"description":"Pagination links. When the result has more pages, look for an entry with `name: \"next\"` — its `href` is the URL to fetch the next page. Absence of `next` means there are no more pages. For single-resource responses this array is typically empty.","type":"array","items":{"title":"Link","description":"A HATEOAS link to a related resource. Use these to navigate between resources without constructing URLs by hand.","type":"object","required":["name","href","type"],"properties":{"name":{"description":"Standard link relation name (RFC 5988) indicating this link's role. Common values include `self`, `edit`, `related`, `previous`, `next`.","type":"string"},"href":{"title":"Uri","description":"URL of the linked resource.","examples":["https://api.process.st/api/v1.1/resource/XXX"],"type":"string"},"rel":{"description":"Optional. The kind of resource this link points to (e.g. `Workflow`, `Task`, `Comment`).","type":"string","enum":["Approval Task","Approvals","Assignees","Comment","Data Set Records","Data Sets","Form Field Values","Subject Task","Task","Tasks","Users","Webhook","Workflow","Workflow Run"]},"type":{"description":"Whether this link targets an API endpoint or a Process Street app URL. `Api` — a callable API endpoint you can fetch directly. `App` — a browser-facing URL in the Process Street UI.","type":"string","enum":["Api","App"]}}}}}},"PublicApiLinkedWorkflowRun":{"title":"PublicApiLinkedWorkflowRun","type":"object","required":["id","name","templateId","templateName"],"properties":{"id":{"description":"The ID of the Workflow Run","examples":["ib4rpIDF3_sBoX6ZkHRwXA"],"type":"string"},"name":{"description":"Display name.","type":"string"},"templateId":{"description":"The ID of the Workflow","examples":["ib4rpIDF3_sBoX6ZkHRwXA"],"type":"string"},"templateName":{"type":"string"}}},"PublicApiLogicRule":{"title":"PublicApiLogicRule","type":"object","required":["id","condition","action","targets"],"properties":{"id":{"title":"EntityID","description":"The resource's ID.","type":"string"},"condition":{"title":"OrCondition","type":"object","properties":{"or":{"description":"List of AND-groups; the OR-condition matches if any group matches.","type":"array","items":{"title":"AndGroup","type":"object","properties":{"and":{"description":"List of conditions that must all match (AND combined within a group).","type":"array","items":{"title":"LeafCondition","type":"object","required":["widgetId","operator"],"properties":{"widgetId":{"title":"EntityID","description":"The ID of the widget.","type":"string"},"operator":{"description":"Comparison operator (e.g. `Is`, `IsNot`, `Contains`, `IsEmpty`).","type":"string"},"value":{"description":"The option's stored value.","type":"string"}}}}}}}}},"action":{"title":"WorkflowLogicRuleAction","description":"What the rule does to its targets when conditions match. `Show` reveals tasks/widgets that are hidden by default. `Hide` conceals tasks/widgets that are visible by default.","type":"string","enum":["Show","Hide"]},"targets":{"title":"PublicApiTargets","type":"object","properties":{"taskIds":{"description":"IDs of the tasks this rule applies to.","type":"array","items":{"title":"EntityID","type":"string"}},"widgetIds":{"description":"IDs of the widgets (form fields) this rule applies to.","type":"array","items":{"title":"EntityID","type":"string"}}}},"description":{"description":"Optional human-readable description of what this rule does.","type":"string"},"links":{"description":"Navigable HATEOAS links to related resources. Each entry has a `name` (RFC-5988 link relation like `self`, `edit`, `related`), an `href` URL, and a `type` (`Api` for callable endpoints, `App` for browser-facing URLs). Prefer following these `href` values over constructing URLs by hand.","type":"array","items":{"title":"Link","description":"A HATEOAS link to a related resource. Use these to navigate between resources without constructing URLs by hand.","type":"object","required":["name","href","type"],"properties":{"name":{"description":"Standard link relation name (RFC 5988) indicating this link's role. Common values include `self`, `edit`, `related`, `previous`, `next`.","type":"string"},"href":{"title":"Uri","description":"URL of the linked resource.","examples":["https://api.process.st/api/v1.1/resource/XXX"],"type":"string"},"rel":{"description":"Optional. The kind of resource this link points to (e.g. `Workflow`, `Task`, `Comment`).","type":"string","enum":["Approval Task","Approvals","Assignees","Comment","Data Set Records","Data Sets","Form Field Values","Subject Task","Task","Tasks","Users","Webhook","Workflow","Workflow Run"]},"type":{"description":"Whether this link targets an API endpoint or a Process Street app URL. `Api` — a callable API endpoint you can fetch directly. `App` — a browser-facing URL in the Process Street UI.","type":"string","enum":["Api","App"]}}}}}},"PublicApiLogicRuleListResponse":{"title":"PublicApiLogicRuleListResponse","type":"object","properties":{"data":{"description":"The list of resources returned by this request.","type":"array","items":{"title":"PublicApiLogicRule","type":"object","required":["id","condition","action","targets"],"properties":{"id":{"title":"EntityID","description":"The resource's ID.","type":"string"},"condition":{"title":"OrCondition","type":"object","properties":{"or":{"description":"List of AND-groups; the OR-condition matches if any group matches.","type":"array","items":{"title":"AndGroup","type":"object","properties":{"and":{"description":"List of conditions that must all match (AND combined within a group).","type":"array","items":{"title":"LeafCondition","type":"object","required":["widgetId","operator"],"properties":{"widgetId":{"title":"EntityID","description":"The ID of the widget.","type":"string"},"operator":{"description":"Comparison operator (e.g. `Is`, `IsNot`, `Contains`, `IsEmpty`).","type":"string"},"value":{"description":"The option's stored value.","type":"string"}}}}}}}}},"action":{"title":"WorkflowLogicRuleAction","description":"What the rule does to its targets when conditions match. `Show` reveals tasks/widgets that are hidden by default. `Hide` conceals tasks/widgets that are visible by default.","type":"string","enum":["Show","Hide"]},"targets":{"title":"PublicApiTargets","type":"object","properties":{"taskIds":{"description":"IDs of the tasks this rule applies to.","type":"array","items":{"title":"EntityID","type":"string"}},"widgetIds":{"description":"IDs of the widgets (form fields) this rule applies to.","type":"array","items":{"title":"EntityID","type":"string"}}}},"description":{"description":"Optional human-readable description of what this rule does.","type":"string"},"links":{"description":"Navigable HATEOAS links to related resources. Each entry has a `name` (RFC-5988 link relation like `self`, `edit`, `related`), an `href` URL, and a `type` (`Api` for callable endpoints, `App` for browser-facing URLs). Prefer following these `href` values over constructing URLs by hand.","type":"array","items":{"title":"Link","description":"A HATEOAS link to a related resource. Use these to navigate between resources without constructing URLs by hand.","type":"object","required":["name","href","type"],"properties":{"name":{"description":"Standard link relation name (RFC 5988) indicating this link's role. Common values include `self`, `edit`, `related`, `previous`, `next`.","type":"string"},"href":{"title":"Uri","description":"URL of the linked resource.","examples":["https://api.process.st/api/v1.1/resource/XXX"],"type":"string"},"rel":{"description":"Optional. The kind of resource this link points to (e.g. `Workflow`, `Task`, `Comment`).","type":"string","enum":["Approval Task","Approvals","Assignees","Comment","Data Set Records","Data Sets","Form Field Values","Subject Task","Task","Tasks","Users","Webhook","Workflow","Workflow Run"]},"type":{"description":"Whether this link targets an API endpoint or a Process Street app URL. `Api` — a callable API endpoint you can fetch directly. `App` — a browser-facing URL in the Process Street UI.","type":"string","enum":["Api","App"]}}}}}}},"links":{"description":"Pagination links. When the result has more pages, look for an entry with `name: \"next\"` — its `href` is the URL to fetch the next page. Absence of `next` means there are no more pages. For single-resource responses this array is typically empty.","type":"array","items":{"title":"Link","description":"A HATEOAS link to a related resource. Use these to navigate between resources without constructing URLs by hand.","type":"object","required":["name","href","type"],"properties":{"name":{"description":"Standard link relation name (RFC 5988) indicating this link's role. Common values include `self`, `edit`, `related`, `previous`, `next`.","type":"string"},"href":{"title":"Uri","description":"URL of the linked resource.","examples":["https://api.process.st/api/v1.1/resource/XXX"],"type":"string"},"rel":{"description":"Optional. The kind of resource this link points to (e.g. `Workflow`, `Task`, `Comment`).","type":"string","enum":["Approval Task","Approvals","Assignees","Comment","Data Set Records","Data Sets","Form Field Values","Subject Task","Task","Tasks","Users","Webhook","Workflow","Workflow Run"]},"type":{"description":"Whether this link targets an API endpoint or a Process Street app URL. `Api` — a callable API endpoint you can fetch directly. `App` — a browser-facing URL in the Process Street UI.","type":"string","enum":["Api","App"]}}}}}},"PublicApiLogicRuleResponse":{"title":"PublicApiLogicRuleResponse","type":"object","required":["data"],"properties":{"data":{"title":"PublicApiLogicRule","type":"object","required":["id","condition","action","targets"],"properties":{"id":{"title":"EntityID","description":"The resource's ID.","type":"string"},"condition":{"title":"OrCondition","type":"object","properties":{"or":{"description":"List of AND-groups; the OR-condition matches if any group matches.","type":"array","items":{"title":"AndGroup","type":"object","properties":{"and":{"description":"List of conditions that must all match (AND combined within a group).","type":"array","items":{"title":"LeafCondition","type":"object","required":["widgetId","operator"],"properties":{"widgetId":{"title":"EntityID","description":"The ID of the widget.","type":"string"},"operator":{"description":"Comparison operator (e.g. `Is`, `IsNot`, `Contains`, `IsEmpty`).","type":"string"},"value":{"description":"The option's stored value.","type":"string"}}}}}}}}},"action":{"title":"WorkflowLogicRuleAction","description":"What the rule does to its targets when conditions match. `Show` reveals tasks/widgets that are hidden by default. `Hide` conceals tasks/widgets that are visible by default.","type":"string","enum":["Show","Hide"]},"targets":{"title":"PublicApiTargets","type":"object","properties":{"taskIds":{"description":"IDs of the tasks this rule applies to.","type":"array","items":{"title":"EntityID","type":"string"}},"widgetIds":{"description":"IDs of the widgets (form fields) this rule applies to.","type":"array","items":{"title":"EntityID","type":"string"}}}},"description":{"description":"Optional human-readable description of what this rule does.","type":"string"},"links":{"description":"Navigable HATEOAS links to related resources. Each entry has a `name` (RFC-5988 link relation like `self`, `edit`, `related`), an `href` URL, and a `type` (`Api` for callable endpoints, `App` for browser-facing URLs). Prefer following these `href` values over constructing URLs by hand.","type":"array","items":{"title":"Link","description":"A HATEOAS link to a related resource. Use these to navigate between resources without constructing URLs by hand.","type":"object","required":["name","href","type"],"properties":{"name":{"description":"Standard link relation name (RFC 5988) indicating this link's role. Common values include `self`, `edit`, `related`, `previous`, `next`.","type":"string"},"href":{"title":"Uri","description":"URL of the linked resource.","examples":["https://api.process.st/api/v1.1/resource/XXX"],"type":"string"},"rel":{"description":"Optional. The kind of resource this link points to (e.g. `Workflow`, `Task`, `Comment`).","type":"string","enum":["Approval Task","Approvals","Assignees","Comment","Data Set Records","Data Sets","Form Field Values","Subject Task","Task","Tasks","Users","Webhook","Workflow","Workflow Run"]},"type":{"description":"Whether this link targets an API endpoint or a Process Street app URL. `Api` — a callable API endpoint you can fetch directly. `App` — a browser-facing URL in the Process Street UI.","type":"string","enum":["Api","App"]}}}}}},"links":{"description":"Pagination links. When the result has more pages, look for an entry with `name: \"next\"` — its `href` is the URL to fetch the next page. Absence of `next` means there are no more pages. For single-resource responses this array is typically empty.","type":"array","items":{"title":"Link","description":"A HATEOAS link to a related resource. Use these to navigate between resources without constructing URLs by hand.","type":"object","required":["name","href","type"],"properties":{"name":{"description":"Standard link relation name (RFC 5988) indicating this link's role. Common values include `self`, `edit`, `related`, `previous`, `next`.","type":"string"},"href":{"title":"Uri","description":"URL of the linked resource.","examples":["https://api.process.st/api/v1.1/resource/XXX"],"type":"string"},"rel":{"description":"Optional. The kind of resource this link points to (e.g. `Workflow`, `Task`, `Comment`).","type":"string","enum":["Approval Task","Approvals","Assignees","Comment","Data Set Records","Data Sets","Form Field Values","Subject Task","Task","Tasks","Users","Webhook","Workflow","Workflow Run"]},"type":{"description":"Whether this link targets an API endpoint or a Process Street app URL. `Api` — a callable API endpoint you can fetch directly. `App` — a browser-facing URL in the Process Street UI.","type":"string","enum":["Api","App"]}}}}}},"PublicApiMembersFormFieldConfig":{"title":"PublicApiMembersFormFieldConfig","type":"object","required":["fieldType"],"properties":{"defaultValue":{"description":"Default value pre-filled when a new workflow run is created.","type":"string"},"groupId":{"title":"EntityID","description":"The ID of an organization group.","type":"string"},"fieldType":{"description":"Form-field subtype discriminator (only relevant when widget `type` is `FormField`).\n\n- `Text` — short text input (≤255 characters).\n- `Textarea` — long-form text.\n- `Email` — email address.\n- `Url` — website / URL.\n- `Number` — numeric input with optional unit and constraints.\n- `Date` — date or date+time picker.\n- `Select` — dropdown; user picks one option.\n- `MultiChoice` — checkboxes; user picks one or more options.\n- `MultiSelect` — Subtasks: a checklist of sub-items inside the task.\n- `Members` — assignee picker (selects organization users).\n- `File` — single file upload.\n- `MultiFile` — multi-file upload (in-app \"File Upload\").\n- `Document` — document approval field; links the task to a document review.\n- `Table` — rows × columns of cells; users fill cell values.\n- `SendRichEmail` — pre-written email embedded in the task; sent manually by the user or\n  automatically when the task is completed.\n- `Hidden` — only visible when editing the workflow; populated by integrations or default values.\n- `Snippet` — only visible when editing; passes static text or merge tags into automations.\n","type":"string","enum":["Date","Document","Email","File","Hidden","Members","MultiChoice","MultiFile","MultiSelect","Number","Select","SendRichEmail","Snippet","Table","Text","Textarea","Url"],"const":"Members"}}},"PublicApiMembersFormFieldConfig1":{"title":"PublicApiMembersFormFieldConfig","type":"object","properties":{"defaultValue":{"description":"Default value pre-filled when a new workflow run is created.","type":"string"},"groupId":{"title":"EntityID","description":"The ID of an organization group.","type":"string"}}},"PublicApiMultiChoiceFormFieldConfig":{"title":"PublicApiMultiChoiceFormFieldConfig","type":"object","required":["fieldType"],"properties":{"items":{"description":"Available options for selection-style form fields.","type":"array","items":{"title":"PublicApiFormFieldItem","type":"object","required":["name"],"properties":{"id":{"title":"EntityID","description":"The resource's ID.","type":"string"},"name":{"description":"Display name.","type":"string"}}}},"fieldType":{"description":"Form-field subtype discriminator (only relevant when widget `type` is `FormField`).\n\n- `Text` — short text input (≤255 characters).\n- `Textarea` — long-form text.\n- `Email` — email address.\n- `Url` — website / URL.\n- `Number` — numeric input with optional unit and constraints.\n- `Date` — date or date+time picker.\n- `Select` — dropdown; user picks one option.\n- `MultiChoice` — checkboxes; user picks one or more options.\n- `MultiSelect` — Subtasks: a checklist of sub-items inside the task.\n- `Members` — assignee picker (selects organization users).\n- `File` — single file upload.\n- `MultiFile` — multi-file upload (in-app \"File Upload\").\n- `Document` — document approval field; links the task to a document review.\n- `Table` — rows × columns of cells; users fill cell values.\n- `SendRichEmail` — pre-written email embedded in the task; sent manually by the user or\n  automatically when the task is completed.\n- `Hidden` — only visible when editing the workflow; populated by integrations or default values.\n- `Snippet` — only visible when editing; passes static text or merge tags into automations.\n","type":"string","enum":["Date","Document","Email","File","Hidden","Members","MultiChoice","MultiFile","MultiSelect","Number","Select","SendRichEmail","Snippet","Table","Text","Textarea","Url"],"const":"MultiChoice"}}},"PublicApiMultiChoiceFormFieldConfig1":{"title":"PublicApiMultiChoiceFormFieldConfig","type":"object","properties":{"items":{"description":"Available options for selection-style form fields.","type":"array","items":{"title":"PublicApiFormFieldItem","type":"object","required":["name"],"properties":{"id":{"title":"EntityID","description":"The resource's ID.","type":"string"},"name":{"description":"Display name.","type":"string"}}}}}},"PublicApiMultiFileFormFieldConfig":{"title":"PublicApiMultiFileFormFieldConfig","type":"object","required":["fieldType"],"properties":{"placeholder":{"description":"Placeholder hint shown in the input when no value has been entered.","type":"string"},"extractTextContent":{"description":"When `true`, server extracts text from uploaded documents for use in merge tags.","type":"boolean"},"fieldType":{"description":"Form-field subtype discriminator (only relevant when widget `type` is `FormField`).\n\n- `Text` — short text input (≤255 characters).\n- `Textarea` — long-form text.\n- `Email` — email address.\n- `Url` — website / URL.\n- `Number` — numeric input with optional unit and constraints.\n- `Date` — date or date+time picker.\n- `Select` — dropdown; user picks one option.\n- `MultiChoice` — checkboxes; user picks one or more options.\n- `MultiSelect` — Subtasks: a checklist of sub-items inside the task.\n- `Members` — assignee picker (selects organization users).\n- `File` — single file upload.\n- `MultiFile` — multi-file upload (in-app \"File Upload\").\n- `Document` — document approval field; links the task to a document review.\n- `Table` — rows × columns of cells; users fill cell values.\n- `SendRichEmail` — pre-written email embedded in the task; sent manually by the user or\n  automatically when the task is completed.\n- `Hidden` — only visible when editing the workflow; populated by integrations or default values.\n- `Snippet` — only visible when editing; passes static text or merge tags into automations.\n","type":"string","enum":["Date","Document","Email","File","Hidden","Members","MultiChoice","MultiFile","MultiSelect","Number","Select","SendRichEmail","Snippet","Table","Text","Textarea","Url"],"const":"MultiFile"}}},"PublicApiMultiFileFormFieldConfig1":{"title":"PublicApiMultiFileFormFieldConfig","type":"object","properties":{"placeholder":{"description":"Placeholder hint shown in the input when no value has been entered.","type":"string"},"extractTextContent":{"description":"When `true`, server extracts text from uploaded documents for use in merge tags.","type":"boolean"}}},"PublicApiMultiFileFormFieldConstraints":{"title":"PublicApiMultiFileFormFieldConstraints","type":"object","required":["fieldType"],"properties":{"extensions":{"description":"Allowed file extensions, including the leading dot (e.g. `.pdf`, `.docx`).","type":"array","items":{"type":"string"}},"mode":{"description":"Whether the field accepts a single file or multiple files.\n\n- `Single` — only one file may be uploaded.\n- `Multiple` — multiple files may be uploaded.\n","type":"string","enum":["Multiple","Single"]},"fieldType":{"description":"Form-field subtype discriminator (only relevant when widget `type` is `FormField`).\n\n- `Text` — short text input (≤255 characters).\n- `Textarea` — long-form text.\n- `Email` — email address.\n- `Url` — website / URL.\n- `Number` — numeric input with optional unit and constraints.\n- `Date` — date or date+time picker.\n- `Select` — dropdown; user picks one option.\n- `MultiChoice` — checkboxes; user picks one or more options.\n- `MultiSelect` — Subtasks: a checklist of sub-items inside the task.\n- `Members` — assignee picker (selects organization users).\n- `File` — single file upload.\n- `MultiFile` — multi-file upload (in-app \"File Upload\").\n- `Document` — document approval field; links the task to a document review.\n- `Table` — rows × columns of cells; users fill cell values.\n- `SendRichEmail` — pre-written email embedded in the task; sent manually by the user or\n  automatically when the task is completed.\n- `Hidden` — only visible when editing the workflow; populated by integrations or default values.\n- `Snippet` — only visible when editing; passes static text or merge tags into automations.\n","type":"string","enum":["Date","Document","Email","File","Hidden","Members","MultiChoice","MultiFile","MultiSelect","Number","Select","SendRichEmail","Snippet","Table","Text","Textarea","Url"],"const":"MultiFile"}}},"PublicApiMultiFileFormFieldConstraints1":{"title":"PublicApiMultiFileFormFieldConstraints","type":"object","properties":{"extensions":{"description":"Allowed file extensions, including the leading dot (e.g. `.pdf`, `.docx`).","type":"array","items":{"type":"string"}},"mode":{"description":"Whether the field accepts a single file or multiple files.\n\n- `Single` — only one file may be uploaded.\n- `Multiple` — multiple files may be uploaded.\n","type":"string","enum":["Multiple","Single"]}}},"PublicApiMultiSelectFormFieldConfig":{"title":"PublicApiMultiSelectFormFieldConfig","type":"object","required":["fieldType"],"properties":{"items":{"description":"Available options for selection-style form fields.","type":"array","items":{"title":"PublicApiFormFieldItem","type":"object","required":["name"],"properties":{"id":{"title":"EntityID","description":"The resource's ID.","type":"string"},"name":{"description":"Display name.","type":"string"}}}},"fieldType":{"description":"Form-field subtype discriminator (only relevant when widget `type` is `FormField`).\n\n- `Text` — short text input (≤255 characters).\n- `Textarea` — long-form text.\n- `Email` — email address.\n- `Url` — website / URL.\n- `Number` — numeric input with optional unit and constraints.\n- `Date` — date or date+time picker.\n- `Select` — dropdown; user picks one option.\n- `MultiChoice` — checkboxes; user picks one or more options.\n- `MultiSelect` — Subtasks: a checklist of sub-items inside the task.\n- `Members` — assignee picker (selects organization users).\n- `File` — single file upload.\n- `MultiFile` — multi-file upload (in-app \"File Upload\").\n- `Document` — document approval field; links the task to a document review.\n- `Table` — rows × columns of cells; users fill cell values.\n- `SendRichEmail` — pre-written email embedded in the task; sent manually by the user or\n  automatically when the task is completed.\n- `Hidden` — only visible when editing the workflow; populated by integrations or default values.\n- `Snippet` — only visible when editing; passes static text or merge tags into automations.\n","type":"string","enum":["Date","Document","Email","File","Hidden","Members","MultiChoice","MultiFile","MultiSelect","Number","Select","SendRichEmail","Snippet","Table","Text","Textarea","Url"],"const":"MultiSelect"}}},"PublicApiMultiSelectFormFieldConfig1":{"title":"PublicApiMultiSelectFormFieldConfig","type":"object","properties":{"items":{"description":"Available options for selection-style form fields.","type":"array","items":{"title":"PublicApiFormFieldItem","type":"object","required":["name"],"properties":{"id":{"title":"EntityID","description":"The resource's ID.","type":"string"},"name":{"description":"Display name.","type":"string"}}}}}},"PublicApiMyWorkItem":{"title":"PublicApiMyWorkItem","type":"object","required":["id","type","name","workflowId"],"properties":{"id":{"description":"The ID of the My Work item assignment.","examples":["mq5pBfW5SVUBoX6Zj_10JQ"],"type":"string"},"type":{"title":"InboxItemType","description":"Kind of My Work item.\n\n- `Checklist` — a workflow run assigned to the user.\n- `StandardTask` — a regular task within a workflow run.\n- `ApprovalTask` — an approval task awaiting the user's review.\n- `OneOffTask` — a standalone one-off task.\n- `Acknowledgment` — a revision-acknowledgment request after a workflow update.\n","type":"string","enum":["Checklist","StandardTask","ApprovalTask","OneOffTask","Acknowledgment"]},"name":{"description":"Display name of the assigned item (task name, run name, or one-off task name).","type":"string"},"workflowId":{"description":"The ID of the Workflow","examples":["mq5pBfW5SVUBoX6Zj_10JQ"],"type":"string"},"workflowRunId":{"title":"EntityID","description":"The ID of the Workflow Run.","type":"string"},"taskId":{"title":"EntityID","description":"The ID of the Task.","type":"string"},"dueDate":{"description":"Optional due date of the underlying item. ISO-8601 UTC.","type":"string","format":"date-time"},"snoozedUntil":{"description":"If the item is currently snoozed, the date it un-snoozes. Absent if not snoozed.","type":"string","format":"date-time"},"assignees":{"description":"Users assigned to this item.","type":"array","items":{"title":"PublicApiUser","examples":[{"id":"iUu2eOU2Q-sBoX6ZjZV9pQ","email":"jane.doe@example.com","username":"Jane Doe"}],"type":"object","required":["id","email","username"],"properties":{"id":{"title":"EntityID","description":"The resource's ID.","type":"string"},"email":{"description":"The user's email address (also their login identifier).","type":"string"},"username":{"description":"The user's display name (e.g. `Jane Doe`).","type":"string"}}}},"links":{"description":"Navigable HATEOAS links to related resources. Each entry has a `name` (RFC-5988 link relation like `self`, `edit`, `related`), an `href` URL, and a `type` (`Api` for callable endpoints, `App` for browser-facing URLs). Prefer following these `href` values over constructing URLs by hand.","type":"array","items":{"title":"Link","description":"A HATEOAS link to a related resource. Use these to navigate between resources without constructing URLs by hand.","type":"object","required":["name","href","type"],"properties":{"name":{"description":"Standard link relation name (RFC 5988) indicating this link's role. Common values include `self`, `edit`, `related`, `previous`, `next`.","type":"string"},"href":{"title":"Uri","description":"URL of the linked resource.","examples":["https://api.process.st/api/v1.1/resource/XXX"],"type":"string"},"rel":{"description":"Optional. The kind of resource this link points to (e.g. `Workflow`, `Task`, `Comment`).","type":"string","enum":["Approval Task","Approvals","Assignees","Comment","Data Set Records","Data Sets","Form Field Values","Subject Task","Task","Tasks","Users","Webhook","Workflow","Workflow Run"]},"type":{"description":"Whether this link targets an API endpoint or a Process Street app URL. `Api` — a callable API endpoint you can fetch directly. `App` — a browser-facing URL in the Process Street UI.","type":"string","enum":["Api","App"]}}}}}},"PublicApiMyWorkItemListResponse":{"title":"PublicApiMyWorkItemListResponse","type":"object","properties":{"data":{"description":"The list of resources returned by this request.","type":"array","items":{"title":"PublicApiMyWorkItem","type":"object","required":["id","type","name","workflowId"],"properties":{"id":{"description":"The ID of the My Work item assignment.","examples":["mq5pBfW5SVUBoX6Zj_10JQ"],"type":"string"},"type":{"title":"InboxItemType","description":"Kind of My Work item.\n\n- `Checklist` — a workflow run assigned to the user.\n- `StandardTask` — a regular task within a workflow run.\n- `ApprovalTask` — an approval task awaiting the user's review.\n- `OneOffTask` — a standalone one-off task.\n- `Acknowledgment` — a revision-acknowledgment request after a workflow update.\n","type":"string","enum":["Checklist","StandardTask","ApprovalTask","OneOffTask","Acknowledgment"]},"name":{"description":"Display name of the assigned item (task name, run name, or one-off task name).","type":"string"},"workflowId":{"description":"The ID of the Workflow","examples":["mq5pBfW5SVUBoX6Zj_10JQ"],"type":"string"},"workflowRunId":{"title":"EntityID","description":"The ID of the Workflow Run.","type":"string"},"taskId":{"title":"EntityID","description":"The ID of the Task.","type":"string"},"dueDate":{"description":"Optional due date of the underlying item. ISO-8601 UTC.","type":"string","format":"date-time"},"snoozedUntil":{"description":"If the item is currently snoozed, the date it un-snoozes. Absent if not snoozed.","type":"string","format":"date-time"},"assignees":{"description":"Users assigned to this item.","type":"array","items":{"title":"PublicApiUser","examples":[{"id":"iUu2eOU2Q-sBoX6ZjZV9pQ","email":"jane.doe@example.com","username":"Jane Doe"}],"type":"object","required":["id","email","username"],"properties":{"id":{"title":"EntityID","description":"The resource's ID.","type":"string"},"email":{"description":"The user's email address (also their login identifier).","type":"string"},"username":{"description":"The user's display name (e.g. `Jane Doe`).","type":"string"}}}},"links":{"description":"Navigable HATEOAS links to related resources. Each entry has a `name` (RFC-5988 link relation like `self`, `edit`, `related`), an `href` URL, and a `type` (`Api` for callable endpoints, `App` for browser-facing URLs). Prefer following these `href` values over constructing URLs by hand.","type":"array","items":{"title":"Link","description":"A HATEOAS link to a related resource. Use these to navigate between resources without constructing URLs by hand.","type":"object","required":["name","href","type"],"properties":{"name":{"description":"Standard link relation name (RFC 5988) indicating this link's role. Common values include `self`, `edit`, `related`, `previous`, `next`.","type":"string"},"href":{"title":"Uri","description":"URL of the linked resource.","examples":["https://api.process.st/api/v1.1/resource/XXX"],"type":"string"},"rel":{"description":"Optional. The kind of resource this link points to (e.g. `Workflow`, `Task`, `Comment`).","type":"string","enum":["Approval Task","Approvals","Assignees","Comment","Data Set Records","Data Sets","Form Field Values","Subject Task","Task","Tasks","Users","Webhook","Workflow","Workflow Run"]},"type":{"description":"Whether this link targets an API endpoint or a Process Street app URL. `Api` — a callable API endpoint you can fetch directly. `App` — a browser-facing URL in the Process Street UI.","type":"string","enum":["Api","App"]}}}}}}},"links":{"description":"Pagination links. When the result has more pages, look for an entry with `name: \"next\"` — its `href` is the URL to fetch the next page. Absence of `next` means there are no more pages. For single-resource responses this array is typically empty.","type":"array","items":{"title":"Link","description":"A HATEOAS link to a related resource. Use these to navigate between resources without constructing URLs by hand.","type":"object","required":["name","href","type"],"properties":{"name":{"description":"Standard link relation name (RFC 5988) indicating this link's role. Common values include `self`, `edit`, `related`, `previous`, `next`.","type":"string"},"href":{"title":"Uri","description":"URL of the linked resource.","examples":["https://api.process.st/api/v1.1/resource/XXX"],"type":"string"},"rel":{"description":"Optional. The kind of resource this link points to (e.g. `Workflow`, `Task`, `Comment`).","type":"string","enum":["Approval Task","Approvals","Assignees","Comment","Data Set Records","Data Sets","Form Field Values","Subject Task","Task","Tasks","Users","Webhook","Workflow","Workflow Run"]},"type":{"description":"Whether this link targets an API endpoint or a Process Street app URL. `Api` — a callable API endpoint you can fetch directly. `App` — a browser-facing URL in the Process Street UI.","type":"string","enum":["Api","App"]}}}}}},"PublicApiMyWorkStats":{"title":"PublicApiMyWorkStats","description":"The resource returned by this request.","type":"object","required":["total","upcoming","overdue"],"properties":{"total":{"description":"Total number of active (non-completed) items assigned to the user.","type":"integer","format":"int64"},"upcoming":{"description":"Number of items with a due date in the future.","type":"integer","format":"int64"},"overdue":{"description":"Number of items with a due date in the past.","type":"integer","format":"int64"}}},"PublicApiMyWorkStatsResponse":{"title":"PublicApiMyWorkStatsResponse","type":"object","required":["data"],"properties":{"data":{"title":"PublicApiMyWorkStats","description":"The resource returned by this request.","type":"object","required":["total","upcoming","overdue"],"properties":{"total":{"description":"Total number of active (non-completed) items assigned to the user.","type":"integer","format":"int64"},"upcoming":{"description":"Number of items with a due date in the future.","type":"integer","format":"int64"},"overdue":{"description":"Number of items with a due date in the past.","type":"integer","format":"int64"}}},"links":{"description":"Pagination links. When the result has more pages, look for an entry with `name: \"next\"` — its `href` is the URL to fetch the next page. Absence of `next` means there are no more pages. For single-resource responses this array is typically empty.","type":"array","items":{"title":"Link","description":"A HATEOAS link to a related resource. Use these to navigate between resources without constructing URLs by hand.","type":"object","required":["name","href","type"],"properties":{"name":{"description":"Standard link relation name (RFC 5988) indicating this link's role. Common values include `self`, `edit`, `related`, `previous`, `next`.","type":"string"},"href":{"title":"Uri","description":"URL of the linked resource.","examples":["https://api.process.st/api/v1.1/resource/XXX"],"type":"string"},"rel":{"description":"Optional. The kind of resource this link points to (e.g. `Workflow`, `Task`, `Comment`).","type":"string","enum":["Approval Task","Approvals","Assignees","Comment","Data Set Records","Data Sets","Form Field Values","Subject Task","Task","Tasks","Users","Webhook","Workflow","Workflow Run"]},"type":{"description":"Whether this link targets an API endpoint or a Process Street app URL. `Api` — a callable API endpoint you can fetch directly. `App` — a browser-facing URL in the Process Street UI.","type":"string","enum":["Api","App"]}}}}}},"PublicApiNumberFormFieldConfig":{"title":"PublicApiNumberFormFieldConfig","type":"object","required":["fieldType"],"properties":{"placeholder":{"description":"Placeholder hint shown in the input when no value has been entered.","type":"string"},"defaultValue":{"description":"Default value pre-filled when a new workflow run is created.","type":"string"},"unit":{"description":"Unit label rendered next to the numeric value (e.g. `kg`, `$`, `%`).","type":"string"},"unitLocation":{"description":"Where the unit symbol appears relative to the number.\n\n- `prefix` — before the number (e.g. `$100`).\n- `suffix` — after the number (e.g. `100 USD`).\n","type":"string","enum":["prefix","suffix"]},"fieldType":{"description":"Form-field subtype discriminator (only relevant when widget `type` is `FormField`).\n\n- `Text` — short text input (≤255 characters).\n- `Textarea` — long-form text.\n- `Email` — email address.\n- `Url` — website / URL.\n- `Number` — numeric input with optional unit and constraints.\n- `Date` — date or date+time picker.\n- `Select` — dropdown; user picks one option.\n- `MultiChoice` — checkboxes; user picks one or more options.\n- `MultiSelect` — Subtasks: a checklist of sub-items inside the task.\n- `Members` — assignee picker (selects organization users).\n- `File` — single file upload.\n- `MultiFile` — multi-file upload (in-app \"File Upload\").\n- `Document` — document approval field; links the task to a document review.\n- `Table` — rows × columns of cells; users fill cell values.\n- `SendRichEmail` — pre-written email embedded in the task; sent manually by the user or\n  automatically when the task is completed.\n- `Hidden` — only visible when editing the workflow; populated by integrations or default values.\n- `Snippet` — only visible when editing; passes static text or merge tags into automations.\n","type":"string","enum":["Date","Document","Email","File","Hidden","Members","MultiChoice","MultiFile","MultiSelect","Number","Select","SendRichEmail","Snippet","Table","Text","Textarea","Url"],"const":"Number"}}},"PublicApiNumberFormFieldConfig1":{"title":"PublicApiNumberFormFieldConfig","type":"object","properties":{"placeholder":{"description":"Placeholder hint shown in the input when no value has been entered.","type":"string"},"defaultValue":{"description":"Default value pre-filled when a new workflow run is created.","type":"string"},"unit":{"description":"Unit label rendered next to the numeric value (e.g. `kg`, `$`, `%`).","type":"string"},"unitLocation":{"description":"Where the unit symbol appears relative to the number.\n\n- `prefix` — before the number (e.g. `$100`).\n- `suffix` — after the number (e.g. `100 USD`).\n","type":"string","enum":["prefix","suffix"]}}},"PublicApiNumberFormFieldConstraints":{"title":"PublicApiNumberFormFieldConstraints","type":"object","required":["fieldType"],"properties":{"minDigits":{"description":"Minimum number of digits.","type":"integer","format":"int32"},"maxDigits":{"description":"Maximum number of digits.","type":"integer","format":"int32"},"minValue":{"description":"Minimum numeric value.","type":"integer","format":"int32"},"maxValue":{"description":"Maximum numeric value.","type":"integer","format":"int32"},"decimalPlaces":{"description":"Number of decimal places to accept (0 means integers only).","type":"integer","format":"int32"},"allowNegative":{"description":"When `true`, negative numbers are accepted.","type":"boolean"},"fieldType":{"description":"Form-field subtype discriminator (only relevant when widget `type` is `FormField`).\n\n- `Text` — short text input (≤255 characters).\n- `Textarea` — long-form text.\n- `Email` — email address.\n- `Url` — website / URL.\n- `Number` — numeric input with optional unit and constraints.\n- `Date` — date or date+time picker.\n- `Select` — dropdown; user picks one option.\n- `MultiChoice` — checkboxes; user picks one or more options.\n- `MultiSelect` — Subtasks: a checklist of sub-items inside the task.\n- `Members` — assignee picker (selects organization users).\n- `File` — single file upload.\n- `MultiFile` — multi-file upload (in-app \"File Upload\").\n- `Document` — document approval field; links the task to a document review.\n- `Table` — rows × columns of cells; users fill cell values.\n- `SendRichEmail` — pre-written email embedded in the task; sent manually by the user or\n  automatically when the task is completed.\n- `Hidden` — only visible when editing the workflow; populated by integrations or default values.\n- `Snippet` — only visible when editing; passes static text or merge tags into automations.\n","type":"string","enum":["Date","Document","Email","File","Hidden","Members","MultiChoice","MultiFile","MultiSelect","Number","Select","SendRichEmail","Snippet","Table","Text","Textarea","Url"],"const":"Number"}}},"PublicApiNumberFormFieldConstraints1":{"title":"PublicApiNumberFormFieldConstraints","type":"object","properties":{"minDigits":{"description":"Minimum number of digits.","type":"integer","format":"int32"},"maxDigits":{"description":"Maximum number of digits.","type":"integer","format":"int32"},"minValue":{"description":"Minimum numeric value.","type":"integer","format":"int32"},"maxValue":{"description":"Maximum numeric value.","type":"integer","format":"int32"},"decimalPlaces":{"description":"Number of decimal places to accept (0 means integers only).","type":"integer","format":"int32"},"allowNegative":{"description":"When `true`, negative numbers are accepted.","type":"boolean"}}},"PublicApiOneOffTask":{"title":"PublicApiOneOffTask","description":"The resource returned by this request.","type":"object","required":["id","createdDate","createdBy","updatedDate","updatedBy","organizationId","name","status","required","visibility"],"properties":{"id":{"description":"The ID of the One-Off Task","examples":["ndtx6tz0AfMBoX6ZkFh59w"],"type":"string"},"createdDate":{"description":"When the resource was first created. ISO-8601 UTC.","type":"string","format":"date-time"},"createdBy":{"description":"User who created the resource.","examples":[{"id":"iUu2eOU2Q-sBoX6ZjZV9pQ","email":"jane.doe@example.com","username":"Jane Doe"}],"type":"object","required":["id","email","username"],"properties":{"id":{"title":"EntityID","description":"The resource's ID.","type":"string"},"email":{"description":"The user's email address (also their login identifier).","type":"string"},"username":{"description":"The user's display name (e.g. `Jane Doe`).","type":"string"}}},"updatedDate":{"description":"When the resource was last modified. ISO-8601 UTC.","type":"string","format":"date-time"},"updatedBy":{"description":"User who last modified the resource.","examples":[{"id":"iUu2eOU2Q-sBoX6ZjZV9pQ","email":"jane.doe@example.com","username":"Jane Doe"}],"type":"object","required":["id","email","username"],"properties":{"id":{"title":"EntityID","description":"The resource's ID.","type":"string"},"email":{"description":"The user's email address (also their login identifier).","type":"string"},"username":{"description":"The user's display name (e.g. `Jane Doe`).","type":"string"}}},"organizationId":{"title":"EntityID","description":"The ID of the organization this resource belongs to.","type":"string"},"name":{"description":"Display name of the one-off task.","type":"string"},"description":{"description":"Optional long-form description of the one-off task.","type":"string"},"status":{"title":"Status","type":"string","enum":["NotCompleted","Completed"]},"dueDate":{"description":"Optional due date. ISO-8601 UTC.","type":"string","format":"date-time"},"required":{"description":"When `true`, the task must be completed before the linked workflow run can be completed.","type":"boolean"},"visibility":{"title":"Visibility","description":"Who can see this one-off task. `Private` — only the creator and assignees. `Public` — visible to anyone in the organization.","type":"string","enum":["Private","Public"]},"assignments":{"type":"array","items":{"title":"PublicApiOneOffTaskAssignment","type":"object","required":["id","user"],"properties":{"id":{"title":"EntityID","description":"The resource's ID.","type":"string"},"user":{"description":"User this entry refers to.","examples":[{"id":"iUu2eOU2Q-sBoX6ZjZV9pQ","email":"jane.doe@example.com","username":"Jane Doe"}],"type":"object","required":["id","email","username"],"properties":{"id":{"title":"EntityID","description":"The resource's ID.","type":"string"},"email":{"description":"The user's email address (also their login identifier).","type":"string"},"username":{"description":"The user's display name (e.g. `Jane Doe`).","type":"string"}}}}}},"linkedWorkflowRun":{"title":"PublicApiLinkedWorkflowRun","type":"object","required":["id","name","templateId","templateName"],"properties":{"id":{"description":"The ID of the Workflow Run","examples":["ib4rpIDF3_sBoX6ZkHRwXA"],"type":"string"},"name":{"description":"Display name.","type":"string"},"templateId":{"description":"The ID of the Workflow","examples":["ib4rpIDF3_sBoX6ZkHRwXA"],"type":"string"},"templateName":{"type":"string"}}},"subtasks":{"type":"array","items":{"title":"PublicApiSubtask","type":"object","required":["id","name","status"],"properties":{"id":{"title":"EntityID","description":"The resource's ID.","type":"string"},"name":{"description":"Display name.","type":"string"},"status":{"description":"Whether this subtask is complete. `Completed` — the subtask has been checked off. `NotCompleted` — the subtask has not yet been checked off.","type":"string","enum":["Completed","NotCompleted"]}}}},"links":{"description":"Navigable HATEOAS links to related resources. Each entry has a `name` (RFC-5988 link relation like `self`, `edit`, `related`), an `href` URL, and a `type` (`Api` for callable endpoints, `App` for browser-facing URLs). Prefer following these `href` values over constructing URLs by hand.","type":"array","items":{"title":"Link","description":"A HATEOAS link to a related resource. Use these to navigate between resources without constructing URLs by hand.","type":"object","required":["name","href","type"],"properties":{"name":{"description":"Standard link relation name (RFC 5988) indicating this link's role. Common values include `self`, `edit`, `related`, `previous`, `next`.","type":"string"},"href":{"title":"Uri","description":"URL of the linked resource.","examples":["https://api.process.st/api/v1.1/resource/XXX"],"type":"string"},"rel":{"description":"Optional. The kind of resource this link points to (e.g. `Workflow`, `Task`, `Comment`).","type":"string","enum":["Approval Task","Approvals","Assignees","Comment","Data Set Records","Data Sets","Form Field Values","Subject Task","Task","Tasks","Users","Webhook","Workflow","Workflow Run"]},"type":{"description":"Whether this link targets an API endpoint or a Process Street app URL. `Api` — a callable API endpoint you can fetch directly. `App` — a browser-facing URL in the Process Street UI.","type":"string","enum":["Api","App"]}}}}}},"PublicApiOneOffTaskAssignment":{"title":"PublicApiOneOffTaskAssignment","type":"object","required":["id","user"],"properties":{"id":{"title":"EntityID","description":"The resource's ID.","type":"string"},"user":{"description":"User this entry refers to.","examples":[{"id":"iUu2eOU2Q-sBoX6ZjZV9pQ","email":"jane.doe@example.com","username":"Jane Doe"}],"type":"object","required":["id","email","username"],"properties":{"id":{"title":"EntityID","description":"The resource's ID.","type":"string"},"email":{"description":"The user's email address (also their login identifier).","type":"string"},"username":{"description":"The user's display name (e.g. `Jane Doe`).","type":"string"}}}}},"PublicApiOneOffTaskResponse":{"title":"PublicApiOneOffTaskResponse","type":"object","required":["data"],"properties":{"data":{"title":"PublicApiOneOffTask","description":"The resource returned by this request.","type":"object","required":["id","createdDate","createdBy","updatedDate","updatedBy","organizationId","name","status","required","visibility"],"properties":{"id":{"description":"The ID of the One-Off Task","examples":["ndtx6tz0AfMBoX6ZkFh59w"],"type":"string"},"createdDate":{"description":"When the resource was first created. ISO-8601 UTC.","type":"string","format":"date-time"},"createdBy":{"description":"User who created the resource.","examples":[{"id":"iUu2eOU2Q-sBoX6ZjZV9pQ","email":"jane.doe@example.com","username":"Jane Doe"}],"type":"object","required":["id","email","username"],"properties":{"id":{"title":"EntityID","description":"The resource's ID.","type":"string"},"email":{"description":"The user's email address (also their login identifier).","type":"string"},"username":{"description":"The user's display name (e.g. `Jane Doe`).","type":"string"}}},"updatedDate":{"description":"When the resource was last modified. ISO-8601 UTC.","type":"string","format":"date-time"},"updatedBy":{"description":"User who last modified the resource.","examples":[{"id":"iUu2eOU2Q-sBoX6ZjZV9pQ","email":"jane.doe@example.com","username":"Jane Doe"}],"type":"object","required":["id","email","username"],"properties":{"id":{"title":"EntityID","description":"The resource's ID.","type":"string"},"email":{"description":"The user's email address (also their login identifier).","type":"string"},"username":{"description":"The user's display name (e.g. `Jane Doe`).","type":"string"}}},"organizationId":{"title":"EntityID","description":"The ID of the organization this resource belongs to.","type":"string"},"name":{"description":"Display name of the one-off task.","type":"string"},"description":{"description":"Optional long-form description of the one-off task.","type":"string"},"status":{"title":"Status","type":"string","enum":["NotCompleted","Completed"]},"dueDate":{"description":"Optional due date. ISO-8601 UTC.","type":"string","format":"date-time"},"required":{"description":"When `true`, the task must be completed before the linked workflow run can be completed.","type":"boolean"},"visibility":{"title":"Visibility","description":"Who can see this one-off task. `Private` — only the creator and assignees. `Public` — visible to anyone in the organization.","type":"string","enum":["Private","Public"]},"assignments":{"type":"array","items":{"title":"PublicApiOneOffTaskAssignment","type":"object","required":["id","user"],"properties":{"id":{"title":"EntityID","description":"The resource's ID.","type":"string"},"user":{"description":"User this entry refers to.","examples":[{"id":"iUu2eOU2Q-sBoX6ZjZV9pQ","email":"jane.doe@example.com","username":"Jane Doe"}],"type":"object","required":["id","email","username"],"properties":{"id":{"title":"EntityID","description":"The resource's ID.","type":"string"},"email":{"description":"The user's email address (also their login identifier).","type":"string"},"username":{"description":"The user's display name (e.g. `Jane Doe`).","type":"string"}}}}}},"linkedWorkflowRun":{"title":"PublicApiLinkedWorkflowRun","type":"object","required":["id","name","templateId","templateName"],"properties":{"id":{"description":"The ID of the Workflow Run","examples":["ib4rpIDF3_sBoX6ZkHRwXA"],"type":"string"},"name":{"description":"Display name.","type":"string"},"templateId":{"description":"The ID of the Workflow","examples":["ib4rpIDF3_sBoX6ZkHRwXA"],"type":"string"},"templateName":{"type":"string"}}},"subtasks":{"type":"array","items":{"title":"PublicApiSubtask","type":"object","required":["id","name","status"],"properties":{"id":{"title":"EntityID","description":"The resource's ID.","type":"string"},"name":{"description":"Display name.","type":"string"},"status":{"description":"Whether this subtask is complete. `Completed` — the subtask has been checked off. `NotCompleted` — the subtask has not yet been checked off.","type":"string","enum":["Completed","NotCompleted"]}}}},"links":{"description":"Navigable HATEOAS links to related resources. Each entry has a `name` (RFC-5988 link relation like `self`, `edit`, `related`), an `href` URL, and a `type` (`Api` for callable endpoints, `App` for browser-facing URLs). Prefer following these `href` values over constructing URLs by hand.","type":"array","items":{"title":"Link","description":"A HATEOAS link to a related resource. Use these to navigate between resources without constructing URLs by hand.","type":"object","required":["name","href","type"],"properties":{"name":{"description":"Standard link relation name (RFC 5988) indicating this link's role. Common values include `self`, `edit`, `related`, `previous`, `next`.","type":"string"},"href":{"title":"Uri","description":"URL of the linked resource.","examples":["https://api.process.st/api/v1.1/resource/XXX"],"type":"string"},"rel":{"description":"Optional. The kind of resource this link points to (e.g. `Workflow`, `Task`, `Comment`).","type":"string","enum":["Approval Task","Approvals","Assignees","Comment","Data Set Records","Data Sets","Form Field Values","Subject Task","Task","Tasks","Users","Webhook","Workflow","Workflow Run"]},"type":{"description":"Whether this link targets an API endpoint or a Process Street app URL. `Api` — a callable API endpoint you can fetch directly. `App` — a browser-facing URL in the Process Street UI.","type":"string","enum":["Api","App"]}}}}}},"links":{"description":"Pagination links. When the result has more pages, look for an entry with `name: \"next\"` — its `href` is the URL to fetch the next page. Absence of `next` means there are no more pages. For single-resource responses this array is typically empty.","type":"array","items":{"title":"Link","description":"A HATEOAS link to a related resource. Use these to navigate between resources without constructing URLs by hand.","type":"object","required":["name","href","type"],"properties":{"name":{"description":"Standard link relation name (RFC 5988) indicating this link's role. Common values include `self`, `edit`, `related`, `previous`, `next`.","type":"string"},"href":{"title":"Uri","description":"URL of the linked resource.","examples":["https://api.process.st/api/v1.1/resource/XXX"],"type":"string"},"rel":{"description":"Optional. The kind of resource this link points to (e.g. `Workflow`, `Task`, `Comment`).","type":"string","enum":["Approval Task","Approvals","Assignees","Comment","Data Set Records","Data Sets","Form Field Values","Subject Task","Task","Tasks","Users","Webhook","Workflow","Workflow Run"]},"type":{"description":"Whether this link targets an API endpoint or a Process Street app URL. `Api` — a callable API endpoint you can fetch directly. `App` — a browser-facing URL in the Process Street UI.","type":"string","enum":["Api","App"]}}}}}},"PublicApiPage":{"title":"PublicApiPage","type":"object","required":["id","name","folderId","shareLevel","createdDate","createdBy","updatedDate","updatedBy"],"properties":{"id":{"title":"EntityID","description":"The resource's ID.","type":"string"},"name":{"description":"The page's name.","type":"string"},"description":{"description":"Optional free-form description of the page.","type":"string"},"folderId":{"title":"EntityID","description":"The ID of the Folder.","type":"string"},"shareLevel":{"description":"Controls who can view this page. `None` — only organization members can view this page. `View` — anyone with the link can view this page.","type":"string","enum":["None","View"]},"referenceId":{"description":"Version prefix used when version control is enabled on this page. Combined with the version number to form the full version identifier.","type":"string"},"createdDate":{"description":"When the resource was first created. ISO-8601 UTC.","type":"string","format":"date-time"},"createdBy":{"description":"User who created the resource.","examples":[{"id":"iUu2eOU2Q-sBoX6ZjZV9pQ","email":"jane.doe@example.com","username":"Jane Doe"}],"type":"object","required":["id","email","username"],"properties":{"id":{"title":"EntityID","description":"The resource's ID.","type":"string"},"email":{"description":"The user's email address (also their login identifier).","type":"string"},"username":{"description":"The user's display name (e.g. `Jane Doe`).","type":"string"}}},"updatedDate":{"description":"When the resource was last modified. ISO-8601 UTC.","type":"string","format":"date-time"},"updatedBy":{"description":"User who last modified the resource.","examples":[{"id":"iUu2eOU2Q-sBoX6ZjZV9pQ","email":"jane.doe@example.com","username":"Jane Doe"}],"type":"object","required":["id","email","username"],"properties":{"id":{"title":"EntityID","description":"The resource's ID.","type":"string"},"email":{"description":"The user's email address (also their login identifier).","type":"string"},"username":{"description":"The user's display name (e.g. `Jane Doe`).","type":"string"}}},"links":{"description":"Navigable HATEOAS links to related resources. Each entry has a `name` (RFC-5988 link relation like `self`, `edit`, `related`), an `href` URL, and a `type` (`Api` for callable endpoints, `App` for browser-facing URLs). Prefer following these `href` values over constructing URLs by hand.","type":"array","items":{"title":"Link","description":"A HATEOAS link to a related resource. Use these to navigate between resources without constructing URLs by hand.","type":"object","required":["name","href","type"],"properties":{"name":{"description":"Standard link relation name (RFC 5988) indicating this link's role. Common values include `self`, `edit`, `related`, `previous`, `next`.","type":"string"},"href":{"title":"Uri","description":"URL of the linked resource.","examples":["https://api.process.st/api/v1.1/resource/XXX"],"type":"string"},"rel":{"description":"Optional. The kind of resource this link points to (e.g. `Workflow`, `Task`, `Comment`).","type":"string","enum":["Approval Task","Approvals","Assignees","Comment","Data Set Records","Data Sets","Form Field Values","Subject Task","Task","Tasks","Users","Webhook","Workflow","Workflow Run"]},"type":{"description":"Whether this link targets an API endpoint or a Process Street app URL. `Api` — a callable API endpoint you can fetch directly. `App` — a browser-facing URL in the Process Street UI.","type":"string","enum":["Api","App"]}}}}}},"PublicApiPageListResponse":{"title":"PublicApiPageListResponse","type":"object","properties":{"data":{"description":"The list of resources returned by this request.","type":"array","items":{"title":"PublicApiPage","type":"object","required":["id","name","folderId","shareLevel","createdDate","createdBy","updatedDate","updatedBy"],"properties":{"id":{"title":"EntityID","description":"The resource's ID.","type":"string"},"name":{"description":"The page's name.","type":"string"},"description":{"description":"Optional free-form description of the page.","type":"string"},"folderId":{"title":"EntityID","description":"The ID of the Folder.","type":"string"},"shareLevel":{"description":"Controls who can view this page. `None` — only organization members can view this page. `View` — anyone with the link can view this page.","type":"string","enum":["None","View"]},"referenceId":{"description":"Version prefix used when version control is enabled on this page. Combined with the version number to form the full version identifier.","type":"string"},"createdDate":{"description":"When the resource was first created. ISO-8601 UTC.","type":"string","format":"date-time"},"createdBy":{"description":"User who created the resource.","examples":[{"id":"iUu2eOU2Q-sBoX6ZjZV9pQ","email":"jane.doe@example.com","username":"Jane Doe"}],"type":"object","required":["id","email","username"],"properties":{"id":{"title":"EntityID","description":"The resource's ID.","type":"string"},"email":{"description":"The user's email address (also their login identifier).","type":"string"},"username":{"description":"The user's display name (e.g. `Jane Doe`).","type":"string"}}},"updatedDate":{"description":"When the resource was last modified. ISO-8601 UTC.","type":"string","format":"date-time"},"updatedBy":{"description":"User who last modified the resource.","examples":[{"id":"iUu2eOU2Q-sBoX6ZjZV9pQ","email":"jane.doe@example.com","username":"Jane Doe"}],"type":"object","required":["id","email","username"],"properties":{"id":{"title":"EntityID","description":"The resource's ID.","type":"string"},"email":{"description":"The user's email address (also their login identifier).","type":"string"},"username":{"description":"The user's display name (e.g. `Jane Doe`).","type":"string"}}},"links":{"description":"Navigable HATEOAS links to related resources. Each entry has a `name` (RFC-5988 link relation like `self`, `edit`, `related`), an `href` URL, and a `type` (`Api` for callable endpoints, `App` for browser-facing URLs). Prefer following these `href` values over constructing URLs by hand.","type":"array","items":{"title":"Link","description":"A HATEOAS link to a related resource. Use these to navigate between resources without constructing URLs by hand.","type":"object","required":["name","href","type"],"properties":{"name":{"description":"Standard link relation name (RFC 5988) indicating this link's role. Common values include `self`, `edit`, `related`, `previous`, `next`.","type":"string"},"href":{"title":"Uri","description":"URL of the linked resource.","examples":["https://api.process.st/api/v1.1/resource/XXX"],"type":"string"},"rel":{"description":"Optional. The kind of resource this link points to (e.g. `Workflow`, `Task`, `Comment`).","type":"string","enum":["Approval Task","Approvals","Assignees","Comment","Data Set Records","Data Sets","Form Field Values","Subject Task","Task","Tasks","Users","Webhook","Workflow","Workflow Run"]},"type":{"description":"Whether this link targets an API endpoint or a Process Street app URL. `Api` — a callable API endpoint you can fetch directly. `App` — a browser-facing URL in the Process Street UI.","type":"string","enum":["Api","App"]}}}}}}},"links":{"description":"Pagination links. When the result has more pages, look for an entry with `name: \"next\"` — its `href` is the URL to fetch the next page. Absence of `next` means there are no more pages. For single-resource responses this array is typically empty.","type":"array","items":{"title":"Link","description":"A HATEOAS link to a related resource. Use these to navigate between resources without constructing URLs by hand.","type":"object","required":["name","href","type"],"properties":{"name":{"description":"Standard link relation name (RFC 5988) indicating this link's role. Common values include `self`, `edit`, `related`, `previous`, `next`.","type":"string"},"href":{"title":"Uri","description":"URL of the linked resource.","examples":["https://api.process.st/api/v1.1/resource/XXX"],"type":"string"},"rel":{"description":"Optional. The kind of resource this link points to (e.g. `Workflow`, `Task`, `Comment`).","type":"string","enum":["Approval Task","Approvals","Assignees","Comment","Data Set Records","Data Sets","Form Field Values","Subject Task","Task","Tasks","Users","Webhook","Workflow","Workflow Run"]},"type":{"description":"Whether this link targets an API endpoint or a Process Street app URL. `Api` — a callable API endpoint you can fetch directly. `App` — a browser-facing URL in the Process Street UI.","type":"string","enum":["Api","App"]}}}}}},"PublicApiPagePermission":{"title":"PublicApiPagePermission","type":"object","required":["email","accessLevel","permissions"],"properties":{"email":{"description":"Email address.","type":"string"},"accessLevel":{"description":"Access level a user or group has on this page. `Edit` — view, edit, and delete the page. `View` — view the page (read-only). `Custom` — the user's underlying permission atoms don't match any predefined level; inspect the `permissions` object on the same entry for the actual atoms.","type":"string","enum":["Edit","View","Custom"]},"permissions":{"title":"PublicApiPagePermissionAtoms","description":"Granular permission flags this user or group has on the page.","type":"object","required":["pageRead","pageUpdate","pageDelete"],"properties":{"pageRead":{"description":"Can view the page.","type":"boolean"},"pageUpdate":{"description":"Can edit the page.","type":"boolean"},"pageDelete":{"description":"Can delete the page.","type":"boolean"}}}}},"PublicApiPagePermissionAtoms":{"title":"PublicApiPagePermissionAtoms","description":"Granular permission flags this user or group has on the page.","type":"object","required":["pageRead","pageUpdate","pageDelete"],"properties":{"pageRead":{"description":"Can view the page.","type":"boolean"},"pageUpdate":{"description":"Can edit the page.","type":"boolean"},"pageDelete":{"description":"Can delete the page.","type":"boolean"}}},"PublicApiPagePermissionListResponse":{"title":"PublicApiPagePermissionListResponse","type":"object","properties":{"data":{"description":"The list of resources returned by this request.","type":"array","items":{"title":"PublicApiPagePermission","type":"object","required":["email","accessLevel","permissions"],"properties":{"email":{"description":"Email address.","type":"string"},"accessLevel":{"description":"Access level a user or group has on this page. `Edit` — view, edit, and delete the page. `View` — view the page (read-only). `Custom` — the user's underlying permission atoms don't match any predefined level; inspect the `permissions` object on the same entry for the actual atoms.","type":"string","enum":["Edit","View","Custom"]},"permissions":{"title":"PublicApiPagePermissionAtoms","description":"Granular permission flags this user or group has on the page.","type":"object","required":["pageRead","pageUpdate","pageDelete"],"properties":{"pageRead":{"description":"Can view the page.","type":"boolean"},"pageUpdate":{"description":"Can edit the page.","type":"boolean"},"pageDelete":{"description":"Can delete the page.","type":"boolean"}}}}}},"links":{"description":"Pagination links. When the result has more pages, look for an entry with `name: \"next\"` — its `href` is the URL to fetch the next page. Absence of `next` means there are no more pages. For single-resource responses this array is typically empty.","type":"array","items":{"title":"Link","description":"A HATEOAS link to a related resource. Use these to navigate between resources without constructing URLs by hand.","type":"object","required":["name","href","type"],"properties":{"name":{"description":"Standard link relation name (RFC 5988) indicating this link's role. Common values include `self`, `edit`, `related`, `previous`, `next`.","type":"string"},"href":{"title":"Uri","description":"URL of the linked resource.","examples":["https://api.process.st/api/v1.1/resource/XXX"],"type":"string"},"rel":{"description":"Optional. The kind of resource this link points to (e.g. `Workflow`, `Task`, `Comment`).","type":"string","enum":["Approval Task","Approvals","Assignees","Comment","Data Set Records","Data Sets","Form Field Values","Subject Task","Task","Tasks","Users","Webhook","Workflow","Workflow Run"]},"type":{"description":"Whether this link targets an API endpoint or a Process Street app URL. `Api` — a callable API endpoint you can fetch directly. `App` — a browser-facing URL in the Process Street UI.","type":"string","enum":["Api","App"]}}}}}},"PublicApiPageResponse":{"title":"PublicApiPageResponse","type":"object","required":["data"],"properties":{"data":{"title":"PublicApiPage","type":"object","required":["id","name","folderId","shareLevel","createdDate","createdBy","updatedDate","updatedBy"],"properties":{"id":{"title":"EntityID","description":"The resource's ID.","type":"string"},"name":{"description":"The page's name.","type":"string"},"description":{"description":"Optional free-form description of the page.","type":"string"},"folderId":{"title":"EntityID","description":"The ID of the Folder.","type":"string"},"shareLevel":{"description":"Controls who can view this page. `None` — only organization members can view this page. `View` — anyone with the link can view this page.","type":"string","enum":["None","View"]},"referenceId":{"description":"Version prefix used when version control is enabled on this page. Combined with the version number to form the full version identifier.","type":"string"},"createdDate":{"description":"When the resource was first created. ISO-8601 UTC.","type":"string","format":"date-time"},"createdBy":{"description":"User who created the resource.","examples":[{"id":"iUu2eOU2Q-sBoX6ZjZV9pQ","email":"jane.doe@example.com","username":"Jane Doe"}],"type":"object","required":["id","email","username"],"properties":{"id":{"title":"EntityID","description":"The resource's ID.","type":"string"},"email":{"description":"The user's email address (also their login identifier).","type":"string"},"username":{"description":"The user's display name (e.g. `Jane Doe`).","type":"string"}}},"updatedDate":{"description":"When the resource was last modified. ISO-8601 UTC.","type":"string","format":"date-time"},"updatedBy":{"description":"User who last modified the resource.","examples":[{"id":"iUu2eOU2Q-sBoX6ZjZV9pQ","email":"jane.doe@example.com","username":"Jane Doe"}],"type":"object","required":["id","email","username"],"properties":{"id":{"title":"EntityID","description":"The resource's ID.","type":"string"},"email":{"description":"The user's email address (also their login identifier).","type":"string"},"username":{"description":"The user's display name (e.g. `Jane Doe`).","type":"string"}}},"links":{"description":"Navigable HATEOAS links to related resources. Each entry has a `name` (RFC-5988 link relation like `self`, `edit`, `related`), an `href` URL, and a `type` (`Api` for callable endpoints, `App` for browser-facing URLs). Prefer following these `href` values over constructing URLs by hand.","type":"array","items":{"title":"Link","description":"A HATEOAS link to a related resource. Use these to navigate between resources without constructing URLs by hand.","type":"object","required":["name","href","type"],"properties":{"name":{"description":"Standard link relation name (RFC 5988) indicating this link's role. Common values include `self`, `edit`, `related`, `previous`, `next`.","type":"string"},"href":{"title":"Uri","description":"URL of the linked resource.","examples":["https://api.process.st/api/v1.1/resource/XXX"],"type":"string"},"rel":{"description":"Optional. The kind of resource this link points to (e.g. `Workflow`, `Task`, `Comment`).","type":"string","enum":["Approval Task","Approvals","Assignees","Comment","Data Set Records","Data Sets","Form Field Values","Subject Task","Task","Tasks","Users","Webhook","Workflow","Workflow Run"]},"type":{"description":"Whether this link targets an API endpoint or a Process Street app URL. `Api` — a callable API endpoint you can fetch directly. `App` — a browser-facing URL in the Process Street UI.","type":"string","enum":["Api","App"]}}}}}},"links":{"description":"Pagination links. When the result has more pages, look for an entry with `name: \"next\"` — its `href` is the URL to fetch the next page. Absence of `next` means there are no more pages. For single-resource responses this array is typically empty.","type":"array","items":{"title":"Link","description":"A HATEOAS link to a related resource. Use these to navigate between resources without constructing URLs by hand.","type":"object","required":["name","href","type"],"properties":{"name":{"description":"Standard link relation name (RFC 5988) indicating this link's role. Common values include `self`, `edit`, `related`, `previous`, `next`.","type":"string"},"href":{"title":"Uri","description":"URL of the linked resource.","examples":["https://api.process.st/api/v1.1/resource/XXX"],"type":"string"},"rel":{"description":"Optional. The kind of resource this link points to (e.g. `Workflow`, `Task`, `Comment`).","type":"string","enum":["Approval Task","Approvals","Assignees","Comment","Data Set Records","Data Sets","Form Field Values","Subject Task","Task","Tasks","Users","Webhook","Workflow","Workflow Run"]},"type":{"description":"Whether this link targets an API endpoint or a Process Street app URL. `Api` — a callable API endpoint you can fetch directly. `App` — a browser-facing URL in the Process Street UI.","type":"string","enum":["Api","App"]}}}}}},"PublicApiPageRevision":{"title":"PublicApiPageRevision","type":"object","required":["id","createdDate","createdBy","updatedDate","updatedBy","pageId","version","status"],"properties":{"id":{"description":"The ID of the Revision","examples":["nNShotk1N0YBoX6Zkwt04Q"],"type":"string"},"createdDate":{"description":"When the resource was first created. ISO-8601 UTC.","type":"string","format":"date-time"},"createdBy":{"description":"User who created the resource.","examples":[{"id":"iUu2eOU2Q-sBoX6ZjZV9pQ","email":"jane.doe@example.com","username":"Jane Doe"}],"type":"object","required":["id","email","username"],"properties":{"id":{"title":"EntityID","description":"The resource's ID.","type":"string"},"email":{"description":"The user's email address (also their login identifier).","type":"string"},"username":{"description":"The user's display name (e.g. `Jane Doe`).","type":"string"}}},"updatedDate":{"description":"When the resource was last modified. ISO-8601 UTC.","type":"string","format":"date-time"},"updatedBy":{"description":"User who last modified the resource.","examples":[{"id":"iUu2eOU2Q-sBoX6ZjZV9pQ","email":"jane.doe@example.com","username":"Jane Doe"}],"type":"object","required":["id","email","username"],"properties":{"id":{"title":"EntityID","description":"The resource's ID.","type":"string"},"email":{"description":"The user's email address (also their login identifier).","type":"string"},"username":{"description":"The user's display name (e.g. `Jane Doe`).","type":"string"}}},"pageId":{"description":"The ID of the Page","examples":["nNShotk1N0YBoX6Zkwt04Q"],"type":"string"},"version":{"description":"Revision version number; monotonically increasing per template.","type":"string"},"status":{"description":"Status of this revision. `Draft` — being edited; not yet published. `Finished` — currently published version (only one Finished revision per workflow/page at a time). `Revised` — was previously the published version but has been replaced by a newer Finished revision.","type":"string","enum":["Draft","Finished","Revised"]}}},"PublicApiPageRevisionListResponse":{"title":"PublicApiPageRevisionListResponse","type":"object","properties":{"data":{"description":"The list of resources returned by this request.","type":"array","items":{"title":"PublicApiPageRevision","type":"object","required":["id","createdDate","createdBy","updatedDate","updatedBy","pageId","version","status"],"properties":{"id":{"description":"The ID of the Revision","examples":["nNShotk1N0YBoX6Zkwt04Q"],"type":"string"},"createdDate":{"description":"When the resource was first created. ISO-8601 UTC.","type":"string","format":"date-time"},"createdBy":{"description":"User who created the resource.","examples":[{"id":"iUu2eOU2Q-sBoX6ZjZV9pQ","email":"jane.doe@example.com","username":"Jane Doe"}],"type":"object","required":["id","email","username"],"properties":{"id":{"title":"EntityID","description":"The resource's ID.","type":"string"},"email":{"description":"The user's email address (also their login identifier).","type":"string"},"username":{"description":"The user's display name (e.g. `Jane Doe`).","type":"string"}}},"updatedDate":{"description":"When the resource was last modified. ISO-8601 UTC.","type":"string","format":"date-time"},"updatedBy":{"description":"User who last modified the resource.","examples":[{"id":"iUu2eOU2Q-sBoX6ZjZV9pQ","email":"jane.doe@example.com","username":"Jane Doe"}],"type":"object","required":["id","email","username"],"properties":{"id":{"title":"EntityID","description":"The resource's ID.","type":"string"},"email":{"description":"The user's email address (also their login identifier).","type":"string"},"username":{"description":"The user's display name (e.g. `Jane Doe`).","type":"string"}}},"pageId":{"description":"The ID of the Page","examples":["nNShotk1N0YBoX6Zkwt04Q"],"type":"string"},"version":{"description":"Revision version number; monotonically increasing per template.","type":"string"},"status":{"description":"Status of this revision. `Draft` — being edited; not yet published. `Finished` — currently published version (only one Finished revision per workflow/page at a time). `Revised` — was previously the published version but has been replaced by a newer Finished revision.","type":"string","enum":["Draft","Finished","Revised"]}}}},"links":{"description":"Pagination links. When the result has more pages, look for an entry with `name: \"next\"` — its `href` is the URL to fetch the next page. Absence of `next` means there are no more pages. For single-resource responses this array is typically empty.","type":"array","items":{"title":"Link","description":"A HATEOAS link to a related resource. Use these to navigate between resources without constructing URLs by hand.","type":"object","required":["name","href","type"],"properties":{"name":{"description":"Standard link relation name (RFC 5988) indicating this link's role. Common values include `self`, `edit`, `related`, `previous`, `next`.","type":"string"},"href":{"title":"Uri","description":"URL of the linked resource.","examples":["https://api.process.st/api/v1.1/resource/XXX"],"type":"string"},"rel":{"description":"Optional. The kind of resource this link points to (e.g. `Workflow`, `Task`, `Comment`).","type":"string","enum":["Approval Task","Approvals","Assignees","Comment","Data Set Records","Data Sets","Form Field Values","Subject Task","Task","Tasks","Users","Webhook","Workflow","Workflow Run"]},"type":{"description":"Whether this link targets an API endpoint or a Process Street app URL. `Api` — a callable API endpoint you can fetch directly. `App` — a browser-facing URL in the Process Street UI.","type":"string","enum":["Api","App"]}}}}}},"PublicApiPageRevisionResponse":{"title":"PublicApiPageRevisionResponse","type":"object","required":["data"],"properties":{"data":{"title":"PublicApiPageRevision","type":"object","required":["id","createdDate","createdBy","updatedDate","updatedBy","pageId","version","status"],"properties":{"id":{"description":"The ID of the Revision","examples":["nNShotk1N0YBoX6Zkwt04Q"],"type":"string"},"createdDate":{"description":"When the resource was first created. ISO-8601 UTC.","type":"string","format":"date-time"},"createdBy":{"description":"User who created the resource.","examples":[{"id":"iUu2eOU2Q-sBoX6ZjZV9pQ","email":"jane.doe@example.com","username":"Jane Doe"}],"type":"object","required":["id","email","username"],"properties":{"id":{"title":"EntityID","description":"The resource's ID.","type":"string"},"email":{"description":"The user's email address (also their login identifier).","type":"string"},"username":{"description":"The user's display name (e.g. `Jane Doe`).","type":"string"}}},"updatedDate":{"description":"When the resource was last modified. ISO-8601 UTC.","type":"string","format":"date-time"},"updatedBy":{"description":"User who last modified the resource.","examples":[{"id":"iUu2eOU2Q-sBoX6ZjZV9pQ","email":"jane.doe@example.com","username":"Jane Doe"}],"type":"object","required":["id","email","username"],"properties":{"id":{"title":"EntityID","description":"The resource's ID.","type":"string"},"email":{"description":"The user's email address (also their login identifier).","type":"string"},"username":{"description":"The user's display name (e.g. `Jane Doe`).","type":"string"}}},"pageId":{"description":"The ID of the Page","examples":["nNShotk1N0YBoX6Zkwt04Q"],"type":"string"},"version":{"description":"Revision version number; monotonically increasing per template.","type":"string"},"status":{"description":"Status of this revision. `Draft` — being edited; not yet published. `Finished` — currently published version (only one Finished revision per workflow/page at a time). `Revised` — was previously the published version but has been replaced by a newer Finished revision.","type":"string","enum":["Draft","Finished","Revised"]}}},"links":{"description":"Pagination links. When the result has more pages, look for an entry with `name: \"next\"` — its `href` is the URL to fetch the next page. Absence of `next` means there are no more pages. For single-resource responses this array is typically empty.","type":"array","items":{"title":"Link","description":"A HATEOAS link to a related resource. Use these to navigate between resources without constructing URLs by hand.","type":"object","required":["name","href","type"],"properties":{"name":{"description":"Standard link relation name (RFC 5988) indicating this link's role. Common values include `self`, `edit`, `related`, `previous`, `next`.","type":"string"},"href":{"title":"Uri","description":"URL of the linked resource.","examples":["https://api.process.st/api/v1.1/resource/XXX"],"type":"string"},"rel":{"description":"Optional. The kind of resource this link points to (e.g. `Workflow`, `Task`, `Comment`).","type":"string","enum":["Approval Task","Approvals","Assignees","Comment","Data Set Records","Data Sets","Form Field Values","Subject Task","Task","Tasks","Users","Webhook","Workflow","Workflow Run"]},"type":{"description":"Whether this link targets an API endpoint or a Process Street app URL. `Api` — a callable API endpoint you can fetch directly. `App` — a browser-facing URL in the Process Street UI.","type":"string","enum":["Api","App"]}}}}}},"PublicApiPermissionRule":{"title":"PublicApiPermissionRule","oneOf":[{"title":"DynamicPermissionRule","type":"object","required":["sourceType","taskRead","taskUpdate","type"],"properties":{"sourceType":{"title":"SourceType","description":"Where the user(s) that get task access are pulled from at runtime.\n\n- `ChecklistInitiator` — grants access to the user who started the workflow run.\n- `FormField` — grants access to users referenced by a form field on the run (`sourceWidgetId`\n  identifies which Members form field).\n","type":"string","enum":["ChecklistInitiator","FormField"]},"sourceWidgetId":{"title":"EntityID","description":"For `sourceType=FormField`: the ID of the Members form field whose value drives the rule's assignees at runtime. Absent for `sourceType=ChecklistInitiator`.","type":"string"},"taskRead":{"description":"When `true`, the rule grants read access to the task.","type":"boolean"},"taskUpdate":{"description":"When `true`, the rule grants update access to the task (check off, edit form fields).","type":"boolean"},"type":{"description":"Discriminator value for this variant. See the parent oneOf for the full set of values.","type":"string","const":"Dynamic"}}},{"title":"StaticPermissionRule","type":"object","required":["user","taskRead","taskUpdate","type"],"properties":{"user":{"title":"PublicApiUser","description":"User this entry refers to.","examples":[{"id":"iUu2eOU2Q-sBoX6ZjZV9pQ","email":"jane.doe@example.com","username":"Jane Doe"}],"type":"object","required":["id","email","username"],"properties":{"id":{"title":"EntityID","description":"The resource's ID.","type":"string"},"email":{"description":"The user's email address (also their login identifier).","type":"string"},"username":{"description":"The user's display name (e.g. `Jane Doe`).","type":"string"}}},"taskRead":{"description":"When `true`, the rule grants read access to the task.","type":"boolean"},"taskUpdate":{"description":"When `true`, the rule grants update access to the task (check off, edit form fields).","type":"boolean"},"type":{"description":"Discriminator value for this variant. See the parent oneOf for the full set of values.","type":"string","const":"Static"}}}],"required":["type"],"discriminator":{"propertyName":"type","mapping":{"Dynamic":"#/components/schemas/DynamicPermissionRule","Static":"#/components/schemas/StaticPermissionRule"}}},"PublicApiPermissionRuleListResponse":{"title":"PublicApiPermissionRuleListResponse","type":"object","properties":{"data":{"description":"The list of resources returned by this request.","type":"array","items":{"title":"PublicApiPermissionRule","oneOf":[{"title":"DynamicPermissionRule","type":"object","required":["sourceType","taskRead","taskUpdate","type"],"properties":{"sourceType":{"title":"SourceType","description":"Where the user(s) that get task access are pulled from at runtime.\n\n- `ChecklistInitiator` — grants access to the user who started the workflow run.\n- `FormField` — grants access to users referenced by a form field on the run (`sourceWidgetId`\n  identifies which Members form field).\n","type":"string","enum":["ChecklistInitiator","FormField"]},"sourceWidgetId":{"title":"EntityID","description":"For `sourceType=FormField`: the ID of the Members form field whose value drives the rule's assignees at runtime. Absent for `sourceType=ChecklistInitiator`.","type":"string"},"taskRead":{"description":"When `true`, the rule grants read access to the task.","type":"boolean"},"taskUpdate":{"description":"When `true`, the rule grants update access to the task (check off, edit form fields).","type":"boolean"},"type":{"description":"Discriminator value for this variant. See the parent oneOf for the full set of values.","type":"string","const":"Dynamic"}}},{"title":"StaticPermissionRule","type":"object","required":["user","taskRead","taskUpdate","type"],"properties":{"user":{"title":"PublicApiUser","description":"User this entry refers to.","examples":[{"id":"iUu2eOU2Q-sBoX6ZjZV9pQ","email":"jane.doe@example.com","username":"Jane Doe"}],"type":"object","required":["id","email","username"],"properties":{"id":{"title":"EntityID","description":"The resource's ID.","type":"string"},"email":{"description":"The user's email address (also their login identifier).","type":"string"},"username":{"description":"The user's display name (e.g. `Jane Doe`).","type":"string"}}},"taskRead":{"description":"When `true`, the rule grants read access to the task.","type":"boolean"},"taskUpdate":{"description":"When `true`, the rule grants update access to the task (check off, edit form fields).","type":"boolean"},"type":{"description":"Discriminator value for this variant. See the parent oneOf for the full set of values.","type":"string","const":"Static"}}}],"required":["type"],"discriminator":{"propertyName":"type","mapping":{"Dynamic":"#/components/schemas/DynamicPermissionRule","Static":"#/components/schemas/StaticPermissionRule"}}}},"links":{"description":"Pagination links. When the result has more pages, look for an entry with `name: \"next\"` — its `href` is the URL to fetch the next page. Absence of `next` means there are no more pages. For single-resource responses this array is typically empty.","type":"array","items":{"title":"Link","description":"A HATEOAS link to a related resource. Use these to navigate between resources without constructing URLs by hand.","type":"object","required":["name","href","type"],"properties":{"name":{"description":"Standard link relation name (RFC 5988) indicating this link's role. Common values include `self`, `edit`, `related`, `previous`, `next`.","type":"string"},"href":{"title":"Uri","description":"URL of the linked resource.","examples":["https://api.process.st/api/v1.1/resource/XXX"],"type":"string"},"rel":{"description":"Optional. The kind of resource this link points to (e.g. `Workflow`, `Task`, `Comment`).","type":"string","enum":["Approval Task","Approvals","Assignees","Comment","Data Set Records","Data Sets","Form Field Values","Subject Task","Task","Tasks","Users","Webhook","Workflow","Workflow Run"]},"type":{"description":"Whether this link targets an API endpoint or a Process Street app URL. `Api` — a callable API endpoint you can fetch directly. `App` — a browser-facing URL in the Process Street UI.","type":"string","enum":["Api","App"]}}}}}},"PublicApiScheduledWorkflow":{"title":"PublicApiScheduledWorkflow","type":"object","required":["id","workflowId","startDate","timeZone","createdDate","createdBy","updatedDate","updatedBy"],"properties":{"id":{"title":"EntityID","description":"The resource's ID.","type":"string"},"workflowId":{"description":"The ID of the Workflow","examples":["pPGphXS9q2QBoX6Zlzh73Q"],"type":"string"},"name":{"description":"Optional display name for the schedule. Defaults to the workflow's name.","type":"string"},"startDate":{"description":"When the schedule first becomes active. ISO-8601 UTC. Runs are produced from this date forward.","type":"string","format":"date-time"},"timeZone":{"description":"IANA time zone (e.g. `America/New_York`) used when applying the recurrence.","type":"string"},"duePeriod":{"description":"Optional ISO-8601 duration (e.g. `P3D`) added to each scheduled run's start to compute its due date. Weeks are stored as days, so `P2W` reads back as `P14D`.","type":"string"},"nextRunDate":{"description":"When the next workflow run is scheduled to fire. ISO-8601 UTC.","type":"string","format":"date-time"},"previousRunDate":{"description":"When the most recent workflow run was fired. ISO-8601 UTC.","type":"string","format":"date-time"},"createdDate":{"description":"When the resource was first created. ISO-8601 UTC.","type":"string","format":"date-time"},"createdBy":{"description":"User who created the resource.","examples":[{"id":"iUu2eOU2Q-sBoX6ZjZV9pQ","email":"jane.doe@example.com","username":"Jane Doe"}],"type":"object","required":["id","email","username"],"properties":{"id":{"title":"EntityID","description":"The resource's ID.","type":"string"},"email":{"description":"The user's email address (also their login identifier).","type":"string"},"username":{"description":"The user's display name (e.g. `Jane Doe`).","type":"string"}}},"updatedDate":{"description":"When the resource was last modified. ISO-8601 UTC.","type":"string","format":"date-time"},"updatedBy":{"description":"User who last modified the resource.","examples":[{"id":"iUu2eOU2Q-sBoX6ZjZV9pQ","email":"jane.doe@example.com","username":"Jane Doe"}],"type":"object","required":["id","email","username"],"properties":{"id":{"title":"EntityID","description":"The resource's ID.","type":"string"},"email":{"description":"The user's email address (also their login identifier).","type":"string"},"username":{"description":"The user's display name (e.g. `Jane Doe`).","type":"string"}}},"rules":{"description":"Recurrence rules that drive the schedule (Daily/Weekly/Monthly/Yearly).","type":"array","items":{"title":"PublicApiScheduledWorkflowRule","oneOf":[{"title":"Daily","type":"object","required":["interval","frequency"],"properties":{"interval":{"description":"Recurrence interval. For a Weekly schedule with `interval=2`, fires every other week.","type":"integer","format":"int32"},"frequency":{"description":"How often the workflow runs. The other fields on the rule depend on this value:\n`Daily` uses only `interval`, `Weekly` adds `weekDay`, `Monthly` adds `by`, `Yearly` uses only `interval`.","type":"string","enum":["Daily","Weekly","Monthly","Yearly"],"const":"Daily"}}},{"title":"Monthly","type":"object","required":["interval","by","frequency"],"properties":{"interval":{"description":"Recurrence interval. For a Weekly schedule with `interval=2`, fires every other week.","type":"integer","format":"int32"},"by":{"description":"How a `Monthly` rule recurs:\n`DayOfMonth` repeats on the same calendar date each month (e.g. the 15th);\n`DayOfWeek` repeats on the same weekday-of-month pattern (e.g. the second Tuesday).","type":"string","enum":["DayOfMonth","DayOfWeek"]},"frequency":{"description":"How often the workflow runs. The other fields on the rule depend on this value:\n`Daily` uses only `interval`, `Weekly` adds `weekDay`, `Monthly` adds `by`, `Yearly` uses only `interval`.","type":"string","enum":["Daily","Weekly","Monthly","Yearly"],"const":"Monthly"}}},{"title":"Weekly","type":"object","required":["interval","weekDay","frequency"],"properties":{"interval":{"description":"Recurrence interval. For a Weekly schedule with `interval=2`, fires every other week.","type":"integer","format":"int32"},"weekDay":{"description":"Day of the week the workflow runs on. Only used by `Weekly` rules.","type":"string","enum":["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"]},"frequency":{"description":"How often the workflow runs. The other fields on the rule depend on this value:\n`Daily` uses only `interval`, `Weekly` adds `weekDay`, `Monthly` adds `by`, `Yearly` uses only `interval`.","type":"string","enum":["Daily","Weekly","Monthly","Yearly"],"const":"Weekly"}}},{"title":"Yearly","type":"object","required":["interval","frequency"],"properties":{"interval":{"description":"Recurrence interval. For a Weekly schedule with `interval=2`, fires every other week.","type":"integer","format":"int32"},"frequency":{"description":"How often the workflow runs. The other fields on the rule depend on this value:\n`Daily` uses only `interval`, `Weekly` adds `weekDay`, `Monthly` adds `by`, `Yearly` uses only `interval`.","type":"string","enum":["Daily","Weekly","Monthly","Yearly"],"const":"Yearly"}}}],"required":["frequency"],"discriminator":{"propertyName":"frequency","mapping":{"Daily":"#/components/schemas/Daily","Monthly":"#/components/schemas/Monthly","Weekly":"#/components/schemas/Weekly","Yearly":"#/components/schemas/Yearly"}}}},"assigneeEmails":{"description":"Emails of users automatically assigned to each scheduled run when it's created.","type":"array","items":{"type":"string"}},"links":{"description":"Navigable HATEOAS links to related resources. Each entry has a `name` (RFC-5988 link relation like `self`, `edit`, `related`), an `href` URL, and a `type` (`Api` for callable endpoints, `App` for browser-facing URLs). Prefer following these `href` values over constructing URLs by hand.","type":"array","items":{"title":"Link","description":"A HATEOAS link to a related resource. Use these to navigate between resources without constructing URLs by hand.","type":"object","required":["name","href","type"],"properties":{"name":{"description":"Standard link relation name (RFC 5988) indicating this link's role. Common values include `self`, `edit`, `related`, `previous`, `next`.","type":"string"},"href":{"title":"Uri","description":"URL of the linked resource.","examples":["https://api.process.st/api/v1.1/resource/XXX"],"type":"string"},"rel":{"description":"Optional. The kind of resource this link points to (e.g. `Workflow`, `Task`, `Comment`).","type":"string","enum":["Approval Task","Approvals","Assignees","Comment","Data Set Records","Data Sets","Form Field Values","Subject Task","Task","Tasks","Users","Webhook","Workflow","Workflow Run"]},"type":{"description":"Whether this link targets an API endpoint or a Process Street app URL. `Api` — a callable API endpoint you can fetch directly. `App` — a browser-facing URL in the Process Street UI.","type":"string","enum":["Api","App"]}}}}}},"PublicApiScheduledWorkflowListResponse":{"title":"PublicApiScheduledWorkflowListResponse","type":"object","properties":{"data":{"description":"The list of resources returned by this request.","type":"array","items":{"title":"PublicApiScheduledWorkflow","type":"object","required":["id","workflowId","startDate","timeZone","createdDate","createdBy","updatedDate","updatedBy"],"properties":{"id":{"title":"EntityID","description":"The resource's ID.","type":"string"},"workflowId":{"description":"The ID of the Workflow","examples":["pPGphXS9q2QBoX6Zlzh73Q"],"type":"string"},"name":{"description":"Optional display name for the schedule. Defaults to the workflow's name.","type":"string"},"startDate":{"description":"When the schedule first becomes active. ISO-8601 UTC. Runs are produced from this date forward.","type":"string","format":"date-time"},"timeZone":{"description":"IANA time zone (e.g. `America/New_York`) used when applying the recurrence.","type":"string"},"duePeriod":{"description":"Optional ISO-8601 duration (e.g. `P3D`) added to each scheduled run's start to compute its due date. Weeks are stored as days, so `P2W` reads back as `P14D`.","type":"string"},"nextRunDate":{"description":"When the next workflow run is scheduled to fire. ISO-8601 UTC.","type":"string","format":"date-time"},"previousRunDate":{"description":"When the most recent workflow run was fired. ISO-8601 UTC.","type":"string","format":"date-time"},"createdDate":{"description":"When the resource was first created. ISO-8601 UTC.","type":"string","format":"date-time"},"createdBy":{"description":"User who created the resource.","examples":[{"id":"iUu2eOU2Q-sBoX6ZjZV9pQ","email":"jane.doe@example.com","username":"Jane Doe"}],"type":"object","required":["id","email","username"],"properties":{"id":{"title":"EntityID","description":"The resource's ID.","type":"string"},"email":{"description":"The user's email address (also their login identifier).","type":"string"},"username":{"description":"The user's display name (e.g. `Jane Doe`).","type":"string"}}},"updatedDate":{"description":"When the resource was last modified. ISO-8601 UTC.","type":"string","format":"date-time"},"updatedBy":{"description":"User who last modified the resource.","examples":[{"id":"iUu2eOU2Q-sBoX6ZjZV9pQ","email":"jane.doe@example.com","username":"Jane Doe"}],"type":"object","required":["id","email","username"],"properties":{"id":{"title":"EntityID","description":"The resource's ID.","type":"string"},"email":{"description":"The user's email address (also their login identifier).","type":"string"},"username":{"description":"The user's display name (e.g. `Jane Doe`).","type":"string"}}},"rules":{"description":"Recurrence rules that drive the schedule (Daily/Weekly/Monthly/Yearly).","type":"array","items":{"title":"PublicApiScheduledWorkflowRule","oneOf":[{"title":"Daily","type":"object","required":["interval","frequency"],"properties":{"interval":{"description":"Recurrence interval. For a Weekly schedule with `interval=2`, fires every other week.","type":"integer","format":"int32"},"frequency":{"description":"How often the workflow runs. The other fields on the rule depend on this value:\n`Daily` uses only `interval`, `Weekly` adds `weekDay`, `Monthly` adds `by`, `Yearly` uses only `interval`.","type":"string","enum":["Daily","Weekly","Monthly","Yearly"],"const":"Daily"}}},{"title":"Monthly","type":"object","required":["interval","by","frequency"],"properties":{"interval":{"description":"Recurrence interval. For a Weekly schedule with `interval=2`, fires every other week.","type":"integer","format":"int32"},"by":{"description":"How a `Monthly` rule recurs:\n`DayOfMonth` repeats on the same calendar date each month (e.g. the 15th);\n`DayOfWeek` repeats on the same weekday-of-month pattern (e.g. the second Tuesday).","type":"string","enum":["DayOfMonth","DayOfWeek"]},"frequency":{"description":"How often the workflow runs. The other fields on the rule depend on this value:\n`Daily` uses only `interval`, `Weekly` adds `weekDay`, `Monthly` adds `by`, `Yearly` uses only `interval`.","type":"string","enum":["Daily","Weekly","Monthly","Yearly"],"const":"Monthly"}}},{"title":"Weekly","type":"object","required":["interval","weekDay","frequency"],"properties":{"interval":{"description":"Recurrence interval. For a Weekly schedule with `interval=2`, fires every other week.","type":"integer","format":"int32"},"weekDay":{"description":"Day of the week the workflow runs on. Only used by `Weekly` rules.","type":"string","enum":["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"]},"frequency":{"description":"How often the workflow runs. The other fields on the rule depend on this value:\n`Daily` uses only `interval`, `Weekly` adds `weekDay`, `Monthly` adds `by`, `Yearly` uses only `interval`.","type":"string","enum":["Daily","Weekly","Monthly","Yearly"],"const":"Weekly"}}},{"title":"Yearly","type":"object","required":["interval","frequency"],"properties":{"interval":{"description":"Recurrence interval. For a Weekly schedule with `interval=2`, fires every other week.","type":"integer","format":"int32"},"frequency":{"description":"How often the workflow runs. The other fields on the rule depend on this value:\n`Daily` uses only `interval`, `Weekly` adds `weekDay`, `Monthly` adds `by`, `Yearly` uses only `interval`.","type":"string","enum":["Daily","Weekly","Monthly","Yearly"],"const":"Yearly"}}}],"required":["frequency"],"discriminator":{"propertyName":"frequency","mapping":{"Daily":"#/components/schemas/Daily","Monthly":"#/components/schemas/Monthly","Weekly":"#/components/schemas/Weekly","Yearly":"#/components/schemas/Yearly"}}}},"assigneeEmails":{"description":"Emails of users automatically assigned to each scheduled run when it's created.","type":"array","items":{"type":"string"}},"links":{"description":"Navigable HATEOAS links to related resources. Each entry has a `name` (RFC-5988 link relation like `self`, `edit`, `related`), an `href` URL, and a `type` (`Api` for callable endpoints, `App` for browser-facing URLs). Prefer following these `href` values over constructing URLs by hand.","type":"array","items":{"title":"Link","description":"A HATEOAS link to a related resource. Use these to navigate between resources without constructing URLs by hand.","type":"object","required":["name","href","type"],"properties":{"name":{"description":"Standard link relation name (RFC 5988) indicating this link's role. Common values include `self`, `edit`, `related`, `previous`, `next`.","type":"string"},"href":{"title":"Uri","description":"URL of the linked resource.","examples":["https://api.process.st/api/v1.1/resource/XXX"],"type":"string"},"rel":{"description":"Optional. The kind of resource this link points to (e.g. `Workflow`, `Task`, `Comment`).","type":"string","enum":["Approval Task","Approvals","Assignees","Comment","Data Set Records","Data Sets","Form Field Values","Subject Task","Task","Tasks","Users","Webhook","Workflow","Workflow Run"]},"type":{"description":"Whether this link targets an API endpoint or a Process Street app URL. `Api` — a callable API endpoint you can fetch directly. `App` — a browser-facing URL in the Process Street UI.","type":"string","enum":["Api","App"]}}}}}}},"links":{"description":"Pagination links. When the result has more pages, look for an entry with `name: \"next\"` — its `href` is the URL to fetch the next page. Absence of `next` means there are no more pages. For single-resource responses this array is typically empty.","type":"array","items":{"title":"Link","description":"A HATEOAS link to a related resource. Use these to navigate between resources without constructing URLs by hand.","type":"object","required":["name","href","type"],"properties":{"name":{"description":"Standard link relation name (RFC 5988) indicating this link's role. Common values include `self`, `edit`, `related`, `previous`, `next`.","type":"string"},"href":{"title":"Uri","description":"URL of the linked resource.","examples":["https://api.process.st/api/v1.1/resource/XXX"],"type":"string"},"rel":{"description":"Optional. The kind of resource this link points to (e.g. `Workflow`, `Task`, `Comment`).","type":"string","enum":["Approval Task","Approvals","Assignees","Comment","Data Set Records","Data Sets","Form Field Values","Subject Task","Task","Tasks","Users","Webhook","Workflow","Workflow Run"]},"type":{"description":"Whether this link targets an API endpoint or a Process Street app URL. `Api` — a callable API endpoint you can fetch directly. `App` — a browser-facing URL in the Process Street UI.","type":"string","enum":["Api","App"]}}}}}},"PublicApiScheduledWorkflowResponse":{"title":"PublicApiScheduledWorkflowResponse","type":"object","required":["data"],"properties":{"data":{"title":"PublicApiScheduledWorkflow","type":"object","required":["id","workflowId","startDate","timeZone","createdDate","createdBy","updatedDate","updatedBy"],"properties":{"id":{"title":"EntityID","description":"The resource's ID.","type":"string"},"workflowId":{"description":"The ID of the Workflow","examples":["pPGphXS9q2QBoX6Zlzh73Q"],"type":"string"},"name":{"description":"Optional display name for the schedule. Defaults to the workflow's name.","type":"string"},"startDate":{"description":"When the schedule first becomes active. ISO-8601 UTC. Runs are produced from this date forward.","type":"string","format":"date-time"},"timeZone":{"description":"IANA time zone (e.g. `America/New_York`) used when applying the recurrence.","type":"string"},"duePeriod":{"description":"Optional ISO-8601 duration (e.g. `P3D`) added to each scheduled run's start to compute its due date. Weeks are stored as days, so `P2W` reads back as `P14D`.","type":"string"},"nextRunDate":{"description":"When the next workflow run is scheduled to fire. ISO-8601 UTC.","type":"string","format":"date-time"},"previousRunDate":{"description":"When the most recent workflow run was fired. ISO-8601 UTC.","type":"string","format":"date-time"},"createdDate":{"description":"When the resource was first created. ISO-8601 UTC.","type":"string","format":"date-time"},"createdBy":{"description":"User who created the resource.","examples":[{"id":"iUu2eOU2Q-sBoX6ZjZV9pQ","email":"jane.doe@example.com","username":"Jane Doe"}],"type":"object","required":["id","email","username"],"properties":{"id":{"title":"EntityID","description":"The resource's ID.","type":"string"},"email":{"description":"The user's email address (also their login identifier).","type":"string"},"username":{"description":"The user's display name (e.g. `Jane Doe`).","type":"string"}}},"updatedDate":{"description":"When the resource was last modified. ISO-8601 UTC.","type":"string","format":"date-time"},"updatedBy":{"description":"User who last modified the resource.","examples":[{"id":"iUu2eOU2Q-sBoX6ZjZV9pQ","email":"jane.doe@example.com","username":"Jane Doe"}],"type":"object","required":["id","email","username"],"properties":{"id":{"title":"EntityID","description":"The resource's ID.","type":"string"},"email":{"description":"The user's email address (also their login identifier).","type":"string"},"username":{"description":"The user's display name (e.g. `Jane Doe`).","type":"string"}}},"rules":{"description":"Recurrence rules that drive the schedule (Daily/Weekly/Monthly/Yearly).","type":"array","items":{"title":"PublicApiScheduledWorkflowRule","oneOf":[{"title":"Daily","type":"object","required":["interval","frequency"],"properties":{"interval":{"description":"Recurrence interval. For a Weekly schedule with `interval=2`, fires every other week.","type":"integer","format":"int32"},"frequency":{"description":"How often the workflow runs. The other fields on the rule depend on this value:\n`Daily` uses only `interval`, `Weekly` adds `weekDay`, `Monthly` adds `by`, `Yearly` uses only `interval`.","type":"string","enum":["Daily","Weekly","Monthly","Yearly"],"const":"Daily"}}},{"title":"Monthly","type":"object","required":["interval","by","frequency"],"properties":{"interval":{"description":"Recurrence interval. For a Weekly schedule with `interval=2`, fires every other week.","type":"integer","format":"int32"},"by":{"description":"How a `Monthly` rule recurs:\n`DayOfMonth` repeats on the same calendar date each month (e.g. the 15th);\n`DayOfWeek` repeats on the same weekday-of-month pattern (e.g. the second Tuesday).","type":"string","enum":["DayOfMonth","DayOfWeek"]},"frequency":{"description":"How often the workflow runs. The other fields on the rule depend on this value:\n`Daily` uses only `interval`, `Weekly` adds `weekDay`, `Monthly` adds `by`, `Yearly` uses only `interval`.","type":"string","enum":["Daily","Weekly","Monthly","Yearly"],"const":"Monthly"}}},{"title":"Weekly","type":"object","required":["interval","weekDay","frequency"],"properties":{"interval":{"description":"Recurrence interval. For a Weekly schedule with `interval=2`, fires every other week.","type":"integer","format":"int32"},"weekDay":{"description":"Day of the week the workflow runs on. Only used by `Weekly` rules.","type":"string","enum":["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"]},"frequency":{"description":"How often the workflow runs. The other fields on the rule depend on this value:\n`Daily` uses only `interval`, `Weekly` adds `weekDay`, `Monthly` adds `by`, `Yearly` uses only `interval`.","type":"string","enum":["Daily","Weekly","Monthly","Yearly"],"const":"Weekly"}}},{"title":"Yearly","type":"object","required":["interval","frequency"],"properties":{"interval":{"description":"Recurrence interval. For a Weekly schedule with `interval=2`, fires every other week.","type":"integer","format":"int32"},"frequency":{"description":"How often the workflow runs. The other fields on the rule depend on this value:\n`Daily` uses only `interval`, `Weekly` adds `weekDay`, `Monthly` adds `by`, `Yearly` uses only `interval`.","type":"string","enum":["Daily","Weekly","Monthly","Yearly"],"const":"Yearly"}}}],"required":["frequency"],"discriminator":{"propertyName":"frequency","mapping":{"Daily":"#/components/schemas/Daily","Monthly":"#/components/schemas/Monthly","Weekly":"#/components/schemas/Weekly","Yearly":"#/components/schemas/Yearly"}}}},"assigneeEmails":{"description":"Emails of users automatically assigned to each scheduled run when it's created.","type":"array","items":{"type":"string"}},"links":{"description":"Navigable HATEOAS links to related resources. Each entry has a `name` (RFC-5988 link relation like `self`, `edit`, `related`), an `href` URL, and a `type` (`Api` for callable endpoints, `App` for browser-facing URLs). Prefer following these `href` values over constructing URLs by hand.","type":"array","items":{"title":"Link","description":"A HATEOAS link to a related resource. Use these to navigate between resources without constructing URLs by hand.","type":"object","required":["name","href","type"],"properties":{"name":{"description":"Standard link relation name (RFC 5988) indicating this link's role. Common values include `self`, `edit`, `related`, `previous`, `next`.","type":"string"},"href":{"title":"Uri","description":"URL of the linked resource.","examples":["https://api.process.st/api/v1.1/resource/XXX"],"type":"string"},"rel":{"description":"Optional. The kind of resource this link points to (e.g. `Workflow`, `Task`, `Comment`).","type":"string","enum":["Approval Task","Approvals","Assignees","Comment","Data Set Records","Data Sets","Form Field Values","Subject Task","Task","Tasks","Users","Webhook","Workflow","Workflow Run"]},"type":{"description":"Whether this link targets an API endpoint or a Process Street app URL. `Api` — a callable API endpoint you can fetch directly. `App` — a browser-facing URL in the Process Street UI.","type":"string","enum":["Api","App"]}}}}}},"links":{"description":"Pagination links. When the result has more pages, look for an entry with `name: \"next\"` — its `href` is the URL to fetch the next page. Absence of `next` means there are no more pages. For single-resource responses this array is typically empty.","type":"array","items":{"title":"Link","description":"A HATEOAS link to a related resource. Use these to navigate between resources without constructing URLs by hand.","type":"object","required":["name","href","type"],"properties":{"name":{"description":"Standard link relation name (RFC 5988) indicating this link's role. Common values include `self`, `edit`, `related`, `previous`, `next`.","type":"string"},"href":{"title":"Uri","description":"URL of the linked resource.","examples":["https://api.process.st/api/v1.1/resource/XXX"],"type":"string"},"rel":{"description":"Optional. The kind of resource this link points to (e.g. `Workflow`, `Task`, `Comment`).","type":"string","enum":["Approval Task","Approvals","Assignees","Comment","Data Set Records","Data Sets","Form Field Values","Subject Task","Task","Tasks","Users","Webhook","Workflow","Workflow Run"]},"type":{"description":"Whether this link targets an API endpoint or a Process Street app URL. `Api` — a callable API endpoint you can fetch directly. `App` — a browser-facing URL in the Process Street UI.","type":"string","enum":["Api","App"]}}}}}},"PublicApiScheduledWorkflowRule":{"title":"PublicApiScheduledWorkflowRule","oneOf":[{"title":"Daily","type":"object","required":["interval","frequency"],"properties":{"interval":{"description":"Recurrence interval. For a Weekly schedule with `interval=2`, fires every other week.","type":"integer","format":"int32"},"frequency":{"description":"How often the workflow runs. The other fields on the rule depend on this value:\n`Daily` uses only `interval`, `Weekly` adds `weekDay`, `Monthly` adds `by`, `Yearly` uses only `interval`.","type":"string","enum":["Daily","Weekly","Monthly","Yearly"],"const":"Daily"}}},{"title":"Monthly","type":"object","required":["interval","by","frequency"],"properties":{"interval":{"description":"Recurrence interval. For a Weekly schedule with `interval=2`, fires every other week.","type":"integer","format":"int32"},"by":{"description":"How a `Monthly` rule recurs:\n`DayOfMonth` repeats on the same calendar date each month (e.g. the 15th);\n`DayOfWeek` repeats on the same weekday-of-month pattern (e.g. the second Tuesday).","type":"string","enum":["DayOfMonth","DayOfWeek"]},"frequency":{"description":"How often the workflow runs. The other fields on the rule depend on this value:\n`Daily` uses only `interval`, `Weekly` adds `weekDay`, `Monthly` adds `by`, `Yearly` uses only `interval`.","type":"string","enum":["Daily","Weekly","Monthly","Yearly"],"const":"Monthly"}}},{"title":"Weekly","type":"object","required":["interval","weekDay","frequency"],"properties":{"interval":{"description":"Recurrence interval. For a Weekly schedule with `interval=2`, fires every other week.","type":"integer","format":"int32"},"weekDay":{"description":"Day of the week the workflow runs on. Only used by `Weekly` rules.","type":"string","enum":["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"]},"frequency":{"description":"How often the workflow runs. The other fields on the rule depend on this value:\n`Daily` uses only `interval`, `Weekly` adds `weekDay`, `Monthly` adds `by`, `Yearly` uses only `interval`.","type":"string","enum":["Daily","Weekly","Monthly","Yearly"],"const":"Weekly"}}},{"title":"Yearly","type":"object","required":["interval","frequency"],"properties":{"interval":{"description":"Recurrence interval. For a Weekly schedule with `interval=2`, fires every other week.","type":"integer","format":"int32"},"frequency":{"description":"How often the workflow runs. The other fields on the rule depend on this value:\n`Daily` uses only `interval`, `Weekly` adds `weekDay`, `Monthly` adds `by`, `Yearly` uses only `interval`.","type":"string","enum":["Daily","Weekly","Monthly","Yearly"],"const":"Yearly"}}}],"required":["frequency"],"discriminator":{"propertyName":"frequency","mapping":{"Daily":"#/components/schemas/Daily","Monthly":"#/components/schemas/Monthly","Weekly":"#/components/schemas/Weekly","Yearly":"#/components/schemas/Yearly"}}},"PublicApiSelectFormFieldConfig":{"title":"PublicApiSelectFormFieldConfig","type":"object","required":["fieldType"],"properties":{"items":{"description":"Available options for selection-style form fields.","type":"array","items":{"title":"PublicApiFormFieldItem","type":"object","required":["name"],"properties":{"id":{"title":"EntityID","description":"The resource's ID.","type":"string"},"name":{"description":"Display name.","type":"string"}}}},"defaultValue":{"description":"Default value pre-filled when a new workflow run is created.","type":"string"},"fieldType":{"description":"Form-field subtype discriminator (only relevant when widget `type` is `FormField`).\n\n- `Text` — short text input (≤255 characters).\n- `Textarea` — long-form text.\n- `Email` — email address.\n- `Url` — website / URL.\n- `Number` — numeric input with optional unit and constraints.\n- `Date` — date or date+time picker.\n- `Select` — dropdown; user picks one option.\n- `MultiChoice` — checkboxes; user picks one or more options.\n- `MultiSelect` — Subtasks: a checklist of sub-items inside the task.\n- `Members` — assignee picker (selects organization users).\n- `File` — single file upload.\n- `MultiFile` — multi-file upload (in-app \"File Upload\").\n- `Document` — document approval field; links the task to a document review.\n- `Table` — rows × columns of cells; users fill cell values.\n- `SendRichEmail` — pre-written email embedded in the task; sent manually by the user or\n  automatically when the task is completed.\n- `Hidden` — only visible when editing the workflow; populated by integrations or default values.\n- `Snippet` — only visible when editing; passes static text or merge tags into automations.\n","type":"string","enum":["Date","Document","Email","File","Hidden","Members","MultiChoice","MultiFile","MultiSelect","Number","Select","SendRichEmail","Snippet","Table","Text","Textarea","Url"],"const":"Select"}}},"PublicApiSelectFormFieldConfig1":{"title":"PublicApiSelectFormFieldConfig","type":"object","properties":{"items":{"description":"Available options for selection-style form fields.","type":"array","items":{"title":"PublicApiFormFieldItem","type":"object","required":["name"],"properties":{"id":{"title":"EntityID","description":"The resource's ID.","type":"string"},"name":{"description":"Display name.","type":"string"}}}},"defaultValue":{"description":"Default value pre-filled when a new workflow run is created.","type":"string"}}},"PublicApiSendRichEmailFormFieldConfig":{"title":"PublicApiSendRichEmailFormFieldConfig","type":"object","required":["bodyEditor","fieldType"],"properties":{"to":{"description":"Default recipient list (To). Comma-separated email addresses or merge tags.","type":"array","items":{"type":"string"}},"cc":{"description":"Default CC list. Comma-separated email addresses or merge tags.","type":"array","items":{"type":"string"}},"bcc":{"description":"Default BCC list. Comma-separated email addresses or merge tags.","type":"array","items":{"type":"string"}},"replyTo":{"description":"Default Reply-To address. An email address or merge tag.","type":"array","items":{"type":"string"}},"subject":{"description":"Default email subject. May contain merge tags.","type":"string"},"body":{"description":"Default email body. May contain merge tags.","type":"string"},"bodyEditor":{"description":"Editor used to author the email body.\n\n- `RichText` — rich-text editor with formatting.\n- `HTML` — raw HTML editor.\n- `PlainText` — plain text editor.\n","type":"string","enum":["RichText","HTML","PlainText"]},"editAllowed":{"description":"When `true`, users running the workflow can edit the email before sending.","type":"boolean"},"fieldType":{"description":"Form-field subtype discriminator (only relevant when widget `type` is `FormField`).\n\n- `Text` — short text input (≤255 characters).\n- `Textarea` — long-form text.\n- `Email` — email address.\n- `Url` — website / URL.\n- `Number` — numeric input with optional unit and constraints.\n- `Date` — date or date+time picker.\n- `Select` — dropdown; user picks one option.\n- `MultiChoice` — checkboxes; user picks one or more options.\n- `MultiSelect` — Subtasks: a checklist of sub-items inside the task.\n- `Members` — assignee picker (selects organization users).\n- `File` — single file upload.\n- `MultiFile` — multi-file upload (in-app \"File Upload\").\n- `Document` — document approval field; links the task to a document review.\n- `Table` — rows × columns of cells; users fill cell values.\n- `SendRichEmail` — pre-written email embedded in the task; sent manually by the user or\n  automatically when the task is completed.\n- `Hidden` — only visible when editing the workflow; populated by integrations or default values.\n- `Snippet` — only visible when editing; passes static text or merge tags into automations.\n","type":"string","enum":["Date","Document","Email","File","Hidden","Members","MultiChoice","MultiFile","MultiSelect","Number","Select","SendRichEmail","Snippet","Table","Text","Textarea","Url"],"const":"SendRichEmail"}}},"PublicApiSendRichEmailFormFieldConfig1":{"title":"PublicApiSendRichEmailFormFieldConfig","type":"object","required":["bodyEditor"],"properties":{"to":{"description":"Default recipient list (To). Comma-separated email addresses or merge tags.","type":"array","items":{"type":"string"}},"cc":{"description":"Default CC list. Comma-separated email addresses or merge tags.","type":"array","items":{"type":"string"}},"bcc":{"description":"Default BCC list. Comma-separated email addresses or merge tags.","type":"array","items":{"type":"string"}},"replyTo":{"description":"Default Reply-To address. An email address or merge tag.","type":"array","items":{"type":"string"}},"subject":{"description":"Default email subject. May contain merge tags.","type":"string"},"body":{"description":"Default email body. May contain merge tags.","type":"string"},"bodyEditor":{"description":"Editor used to author the email body.\n\n- `RichText` — rich-text editor with formatting.\n- `HTML` — raw HTML editor.\n- `PlainText` — plain text editor.\n","type":"string","enum":["RichText","HTML","PlainText"]},"editAllowed":{"description":"When `true`, users running the workflow can edit the email before sending.","type":"boolean"}}},"PublicApiSnippetFormFieldConfig":{"title":"PublicApiSnippetFormFieldConfig","type":"object","required":["fieldType"],"properties":{"value":{"description":"The option's stored value.","type":"string"},"fieldType":{"description":"Form-field subtype discriminator (only relevant when widget `type` is `FormField`).\n\n- `Text` — short text input (≤255 characters).\n- `Textarea` — long-form text.\n- `Email` — email address.\n- `Url` — website / URL.\n- `Number` — numeric input with optional unit and constraints.\n- `Date` — date or date+time picker.\n- `Select` — dropdown; user picks one option.\n- `MultiChoice` — checkboxes; user picks one or more options.\n- `MultiSelect` — Subtasks: a checklist of sub-items inside the task.\n- `Members` — assignee picker (selects organization users).\n- `File` — single file upload.\n- `MultiFile` — multi-file upload (in-app \"File Upload\").\n- `Document` — document approval field; links the task to a document review.\n- `Table` — rows × columns of cells; users fill cell values.\n- `SendRichEmail` — pre-written email embedded in the task; sent manually by the user or\n  automatically when the task is completed.\n- `Hidden` — only visible when editing the workflow; populated by integrations or default values.\n- `Snippet` — only visible when editing; passes static text or merge tags into automations.\n","type":"string","enum":["Date","Document","Email","File","Hidden","Members","MultiChoice","MultiFile","MultiSelect","Number","Select","SendRichEmail","Snippet","Table","Text","Textarea","Url"],"const":"Snippet"}}},"PublicApiSnippetFormFieldConfig1":{"title":"PublicApiSnippetFormFieldConfig","type":"object","properties":{"value":{"description":"The option's stored value.","type":"string"}}},"PublicApiSnoozedAssignment":{"title":"PublicApiSnoozedAssignment","description":"The resource returned by this request.","type":"object","required":["id","itemId","until"],"properties":{"id":{"title":"EntityID","description":"The resource's ID.","type":"string"},"itemId":{"title":"EntityID","type":"string"},"until":{"description":"The date until which the item is snoozed (ISO-8601).","type":"string","format":"date-time"}}},"PublicApiSnoozedAssignmentResponse":{"title":"PublicApiSnoozedAssignmentResponse","type":"object","required":["data"],"properties":{"data":{"title":"PublicApiSnoozedAssignment","description":"The resource returned by this request.","type":"object","required":["id","itemId","until"],"properties":{"id":{"title":"EntityID","description":"The resource's ID.","type":"string"},"itemId":{"title":"EntityID","type":"string"},"until":{"description":"The date until which the item is snoozed (ISO-8601).","type":"string","format":"date-time"}}},"links":{"description":"Pagination links. When the result has more pages, look for an entry with `name: \"next\"` — its `href` is the URL to fetch the next page. Absence of `next` means there are no more pages. For single-resource responses this array is typically empty.","type":"array","items":{"title":"Link","description":"A HATEOAS link to a related resource. Use these to navigate between resources without constructing URLs by hand.","type":"object","required":["name","href","type"],"properties":{"name":{"description":"Standard link relation name (RFC 5988) indicating this link's role. Common values include `self`, `edit`, `related`, `previous`, `next`.","type":"string"},"href":{"title":"Uri","description":"URL of the linked resource.","examples":["https://api.process.st/api/v1.1/resource/XXX"],"type":"string"},"rel":{"description":"Optional. The kind of resource this link points to (e.g. `Workflow`, `Task`, `Comment`).","type":"string","enum":["Approval Task","Approvals","Assignees","Comment","Data Set Records","Data Sets","Form Field Values","Subject Task","Task","Tasks","Users","Webhook","Workflow","Workflow Run"]},"type":{"description":"Whether this link targets an API endpoint or a Process Street app URL. `Api` — a callable API endpoint you can fetch directly. `App` — a browser-facing URL in the Process Street UI.","type":"string","enum":["Api","App"]}}}}}},"PublicApiSubtask":{"title":"PublicApiSubtask","type":"object","required":["id","name","status"],"properties":{"id":{"title":"EntityID","description":"The resource's ID.","type":"string"},"name":{"description":"Display name.","type":"string"},"status":{"description":"Whether this subtask is complete. `Completed` — the subtask has been checked off. `NotCompleted` — the subtask has not yet been checked off.","type":"string","enum":["Completed","NotCompleted"]}}},"PublicApiTableFormFieldColumn":{"title":"PublicApiTableFormFieldColumn","type":"object","required":["id","name","columnType"],"properties":{"id":{"title":"EntityID","description":"The resource's ID.","type":"string"},"name":{"description":"Display name.","type":"string"},"columnType":{"description":"Data type a Table column accepts.\n\n- `Text` — free-form short text.\n","type":"string","enum":["Text"]}}},"PublicApiTableFormFieldConfig":{"title":"PublicApiTableFormFieldConfig","type":"object","required":["fieldType"],"properties":{"columnDefs":{"description":"Data set column definitions (name + type per column).","type":"array","items":{"title":"PublicApiTableFormFieldColumn","type":"object","required":["id","name","columnType"],"properties":{"id":{"title":"EntityID","description":"The resource's ID.","type":"string"},"name":{"description":"Display name.","type":"string"},"columnType":{"description":"Data type a Table column accepts.\n\n- `Text` — free-form short text.\n","type":"string","enum":["Text"]}}}},"defaultValue":{"description":"Default value pre-filled when a new workflow run is created.","type":"string"},"fieldType":{"description":"Form-field subtype discriminator (only relevant when widget `type` is `FormField`).\n\n- `Text` — short text input (≤255 characters).\n- `Textarea` — long-form text.\n- `Email` — email address.\n- `Url` — website / URL.\n- `Number` — numeric input with optional unit and constraints.\n- `Date` — date or date+time picker.\n- `Select` — dropdown; user picks one option.\n- `MultiChoice` — checkboxes; user picks one or more options.\n- `MultiSelect` — Subtasks: a checklist of sub-items inside the task.\n- `Members` — assignee picker (selects organization users).\n- `File` — single file upload.\n- `MultiFile` — multi-file upload (in-app \"File Upload\").\n- `Document` — document approval field; links the task to a document review.\n- `Table` — rows × columns of cells; users fill cell values.\n- `SendRichEmail` — pre-written email embedded in the task; sent manually by the user or\n  automatically when the task is completed.\n- `Hidden` — only visible when editing the workflow; populated by integrations or default values.\n- `Snippet` — only visible when editing; passes static text or merge tags into automations.\n","type":"string","enum":["Date","Document","Email","File","Hidden","Members","MultiChoice","MultiFile","MultiSelect","Number","Select","SendRichEmail","Snippet","Table","Text","Textarea","Url"],"const":"Table"}}},"PublicApiTableFormFieldConfig1":{"title":"PublicApiTableFormFieldConfig","type":"object","properties":{"columnDefs":{"description":"Data set column definitions (name + type per column).","type":"array","items":{"title":"PublicApiTableFormFieldColumn","type":"object","required":["id","name","columnType"],"properties":{"id":{"title":"EntityID","description":"The resource's ID.","type":"string"},"name":{"description":"Display name.","type":"string"},"columnType":{"description":"Data type a Table column accepts.\n\n- `Text` — free-form short text.\n","type":"string","enum":["Text"]}}}},"defaultValue":{"description":"Default value pre-filled when a new workflow run is created.","type":"string"}}},"PublicApiTargets":{"title":"PublicApiTargets","type":"object","properties":{"taskIds":{"description":"IDs of the tasks this rule applies to.","type":"array","items":{"title":"EntityID","type":"string"}},"widgetIds":{"description":"IDs of the widgets (form fields) this rule applies to.","type":"array","items":{"title":"EntityID","type":"string"}}}},"PublicApiTask":{"title":"PublicApiTask","type":"object","required":["id","updatedDate","updatedBy","workflowRunId","status","name","hidden","stopped","taskType"],"properties":{"id":{"description":"The ID of the Task","examples":["qGWBYJMzJGEBoX6ZmxpwSg"],"type":"string"},"updatedDate":{"description":"When the resource was last modified. ISO-8601 UTC.","type":"string","format":"date-time"},"updatedBy":{"title":"PublicApiUser","description":"User who last modified the resource.","examples":[{"id":"iUu2eOU2Q-sBoX6ZjZV9pQ","email":"jane.doe@example.com","username":"Jane Doe"}],"type":"object","required":["id","email","username"],"properties":{"id":{"title":"EntityID","description":"The resource's ID.","type":"string"},"email":{"description":"The user's email address (also their login identifier).","type":"string"},"username":{"description":"The user's display name (e.g. `Jane Doe`).","type":"string"}}},"completedDate":{"description":"When the task was marked complete, if it is. ISO-8601 UTC.","type":"string","format":"date-time"},"completedBy":{"title":"PublicApiUser","examples":[{"id":"iUu2eOU2Q-sBoX6ZjZV9pQ","email":"jane.doe@example.com","username":"Jane Doe"}],"type":"object","required":["id","email","username"],"properties":{"id":{"title":"EntityID","description":"The resource's ID.","type":"string"},"email":{"description":"The user's email address (also their login identifier).","type":"string"},"username":{"description":"The user's display name (e.g. `Jane Doe`).","type":"string"}}},"workflowRunId":{"description":"The ID of the Workflow Run","examples":["qGWBYJMzJGEBoX6ZmxpwSg"],"type":"string"},"status":{"title":"Status","type":"string","enum":["NotCompleted","Completed"]},"dueDate":{"description":"Optional task-level due date. ISO-8601 UTC.","type":"string","format":"date-time"},"name":{"description":"Display name of the task.","type":"string"},"hidden":{"description":"Whether the task is hidden by Conditional Logic.","type":"boolean"},"stopped":{"description":"Whether the task is blocked (stopped) by an incomplete prior stop task.","type":"boolean"},"taskType":{"title":"TaskType","description":"What the task does.\n\n- `Standard` — a regular task that a user manually checks off when done.\n- `Approval` — an approval task; a reviewer approves or rejects it, gating subsequent tasks.\n- `AI` — an automated task that runs an AI prompt to populate form field values.\n- `Code` — an automated task that runs a custom code snippet.\n","type":"string","enum":["Standard","Approval","AI","Code"]},"links":{"description":"Navigable HATEOAS links to related resources. Each entry has a `name` (RFC-5988 link relation like `self`, `edit`, `related`), an `href` URL, and a `type` (`Api` for callable endpoints, `App` for browser-facing URLs). Prefer following these `href` values over constructing URLs by hand.","type":"array","items":{"title":"Link","description":"A HATEOAS link to a related resource. Use these to navigate between resources without constructing URLs by hand.","type":"object","required":["name","href","type"],"properties":{"name":{"description":"Standard link relation name (RFC 5988) indicating this link's role. Common values include `self`, `edit`, `related`, `previous`, `next`.","type":"string"},"href":{"title":"Uri","description":"URL of the linked resource.","examples":["https://api.process.st/api/v1.1/resource/XXX"],"type":"string"},"rel":{"description":"Optional. The kind of resource this link points to (e.g. `Workflow`, `Task`, `Comment`).","type":"string","enum":["Approval Task","Approvals","Assignees","Comment","Data Set Records","Data Sets","Form Field Values","Subject Task","Task","Tasks","Users","Webhook","Workflow","Workflow Run"]},"type":{"description":"Whether this link targets an API endpoint or a Process Street app URL. `Api` — a callable API endpoint you can fetch directly. `App` — a browser-facing URL in the Process Street UI.","type":"string","enum":["Api","App"]}}}}}},"PublicApiTaskConfig":{"title":"PublicApiTaskConfig","oneOf":[{"title":"PublicApiAiTaskConfig","type":"object","required":["prompt","type"],"properties":{"prompt":{"description":"AI prompt template. May contain merge tags referencing form field values.","type":"string"},"systemPrompt":{"description":"Optional system message prepended to the AI prompt to set its behaviour.","type":"string"},"outputMapping":{"description":"Mapping from prompt/code output keys to form field IDs that receive the values.","type":"object","additionalProperties":{"title":"EntityID","type":"string"}},"type":{"description":"Discriminator value for this variant. See the parent oneOf for the full set of values.","type":"string","const":"Ai"}}},{"title":"PublicApiApprovalTaskConfig","type":"object","required":["type"],"properties":{"subjectTaskIds":{"description":"IDs of the tasks reviewed by an approval task.","type":"array","items":{"title":"EntityID","type":"string"}},"type":{"description":"Discriminator value for this variant. See the parent oneOf for the full set of values.","type":"string","const":"Approval"}}},{"title":"PublicApiCodeTaskConfig","type":"object","required":["code","type"],"properties":{"code":{"description":"Code snippet executed by this Code task.","type":"string"},"inputMapping":{"description":"Mapping from prompt/code input keys to form field IDs whose values are passed in.","type":"object","additionalProperties":{"title":"EntityID","type":"string"}},"outputMapping":{"description":"Mapping from prompt/code output keys to form field IDs that receive the values.","type":"object","additionalProperties":{"title":"EntityID","type":"string"}},"type":{"description":"Discriminator value for this variant. See the parent oneOf for the full set of values.","type":"string","const":"Code"}}}],"required":["type"],"discriminator":{"propertyName":"type","mapping":{"Ai":"#/components/schemas/PublicApiAiTaskConfig","Approval":"#/components/schemas/PublicApiApprovalTaskConfig","Code":"#/components/schemas/PublicApiCodeTaskConfig"}}},"PublicApiTaskConfigResponse":{"title":"PublicApiTaskConfigResponse","type":"object","required":["data"],"properties":{"data":{"title":"PublicApiTaskConfig","oneOf":[{"title":"PublicApiAiTaskConfig","type":"object","required":["prompt","type"],"properties":{"prompt":{"description":"AI prompt template. May contain merge tags referencing form field values.","type":"string"},"systemPrompt":{"description":"Optional system message prepended to the AI prompt to set its behaviour.","type":"string"},"outputMapping":{"description":"Mapping from prompt/code output keys to form field IDs that receive the values.","type":"object","additionalProperties":{"title":"EntityID","type":"string"}},"type":{"description":"Discriminator value for this variant. See the parent oneOf for the full set of values.","type":"string","const":"Ai"}}},{"title":"PublicApiApprovalTaskConfig","type":"object","required":["type"],"properties":{"subjectTaskIds":{"description":"IDs of the tasks reviewed by an approval task.","type":"array","items":{"title":"EntityID","type":"string"}},"type":{"description":"Discriminator value for this variant. See the parent oneOf for the full set of values.","type":"string","const":"Approval"}}},{"title":"PublicApiCodeTaskConfig","type":"object","required":["code","type"],"properties":{"code":{"description":"Code snippet executed by this Code task.","type":"string"},"inputMapping":{"description":"Mapping from prompt/code input keys to form field IDs whose values are passed in.","type":"object","additionalProperties":{"title":"EntityID","type":"string"}},"outputMapping":{"description":"Mapping from prompt/code output keys to form field IDs that receive the values.","type":"object","additionalProperties":{"title":"EntityID","type":"string"}},"type":{"description":"Discriminator value for this variant. See the parent oneOf for the full set of values.","type":"string","const":"Code"}}}],"required":["type"],"discriminator":{"propertyName":"type","mapping":{"Ai":"#/components/schemas/PublicApiAiTaskConfig","Approval":"#/components/schemas/PublicApiApprovalTaskConfig","Code":"#/components/schemas/PublicApiCodeTaskConfig"}}},"links":{"description":"Pagination links. When the result has more pages, look for an entry with `name: \"next\"` — its `href` is the URL to fetch the next page. Absence of `next` means there are no more pages. For single-resource responses this array is typically empty.","type":"array","items":{"title":"Link","description":"A HATEOAS link to a related resource. Use these to navigate between resources without constructing URLs by hand.","type":"object","required":["name","href","type"],"properties":{"name":{"description":"Standard link relation name (RFC 5988) indicating this link's role. Common values include `self`, `edit`, `related`, `previous`, `next`.","type":"string"},"href":{"title":"Uri","description":"URL of the linked resource.","examples":["https://api.process.st/api/v1.1/resource/XXX"],"type":"string"},"rel":{"description":"Optional. The kind of resource this link points to (e.g. `Workflow`, `Task`, `Comment`).","type":"string","enum":["Approval Task","Approvals","Assignees","Comment","Data Set Records","Data Sets","Form Field Values","Subject Task","Task","Tasks","Users","Webhook","Workflow","Workflow Run"]},"type":{"description":"Whether this link targets an API endpoint or a Process Street app URL. `Api` — a callable API endpoint you can fetch directly. `App` — a browser-facing URL in the Process Street UI.","type":"string","enum":["Api","App"]}}}}}},"PublicApiTaskDueDateRule":{"title":"PublicApiTaskDueDateRule","description":"The task's due date rule, or `null` if none is set.","type":"object","required":["sourceType","offsetDirection","dueOffset","businessDaysHandlingMode"],"properties":{"sourceType":{"description":"How the task's due date is derived. `ChecklistStartDate` / `ChecklistDueDate` — relative to the workflow run's start or due date. `TaskCompletedDate` / `TaskDueDate` — relative to a specific source task (requires `sourceTaskId`). `PreviousTaskCompletedDate` — relative to the task immediately before this one. `FormFieldValue` — relative to a Date form field value (requires `sourceWidgetId`).","type":"string","enum":["FormFieldValue","TaskCompletedDate","PreviousTaskCompletedDate","TaskDueDate","ChecklistStartDate","ChecklistDueDate"]},"sourceWidgetId":{"title":"EntityID","description":"For `sourceType=FormField`: the ID of the Members form field whose value drives the rule's assignees at runtime. Absent for `sourceType=ChecklistInitiator`.","type":"string"},"sourceTaskId":{"title":"EntityID","type":"string"},"offsetDirection":{"description":"Whether the offset applies before or after the source date.","type":"string","enum":["Before","After"]},"dueOffset":{"description":"ISO-8601 duration (e.g. `P7D`, `PT4H30M`). Weeks are stored as days, so `P2W` reads back as `P14D`, and with `BusinessDaysOnly` each of those days is a business day.","type":"string"},"businessDaysHandlingMode":{"title":"BusinessDaysHandlingMode","description":"How non-business days are handled when calculating the due date. `AllDays` counts every day. `BusinessDaysOnly` counts only Monday–Friday. `ShiftToNextBusinessDay` calculates using all days then moves a Saturday/Sunday result to the next Monday.","type":"string","enum":["AllDays","BusinessDaysOnly","ShiftToNextBusinessDay"]}}},"PublicApiTaskTemplate":{"title":"PublicApiTaskTemplate","type":"object","required":["id","audit","workflowId","orderTree","stopTask","hiddenByDefault","taskType"],"properties":{"id":{"title":"EntityID","description":"The resource's ID.","type":"string"},"audit":{"title":"PublicApiAudit","description":"Creation and last-modification metadata.","type":"object","required":["createdDate","createdBy","updatedDate","updatedBy"],"properties":{"createdDate":{"description":"When the resource was first created. ISO-8601 UTC.","type":"string","format":"date-time"},"createdBy":{"title":"PublicApiUser","description":"User who created the resource.","examples":[{"id":"iUu2eOU2Q-sBoX6ZjZV9pQ","email":"jane.doe@example.com","username":"Jane Doe"}],"type":"object","required":["id","email","username"],"properties":{"id":{"title":"EntityID","description":"The resource's ID.","type":"string"},"email":{"description":"The user's email address (also their login identifier).","type":"string"},"username":{"description":"The user's display name (e.g. `Jane Doe`).","type":"string"}}},"updatedDate":{"description":"When the resource was last modified. ISO-8601 UTC.","type":"string","format":"date-time"},"updatedBy":{"title":"PublicApiUser","description":"User who last modified the resource.","examples":[{"id":"iUu2eOU2Q-sBoX6ZjZV9pQ","email":"jane.doe@example.com","username":"Jane Doe"}],"type":"object","required":["id","email","username"],"properties":{"id":{"title":"EntityID","description":"The resource's ID.","type":"string"},"email":{"description":"The user's email address (also their login identifier).","type":"string"},"username":{"description":"The user's display name (e.g. `Jane Doe`).","type":"string"}}}}},"workflowId":{"title":"EntityID","description":"The ID of the Workflow.","type":"string"},"name":{"description":"Display name of the task template.","type":"string"},"orderTree":{"description":"Opaque ordering token; task templates sort lexicographically by this value within a revision.","type":"string"},"stopTask":{"description":"When `true`, this task acts as a stop — subsequent tasks within the revision are blocked until it's completed at runtime.","type":"boolean"},"hiddenByDefault":{"description":"When `true`, the widget is hidden by default; conditional logic rules can reveal it at runtime. Defaults to `false`.","type":"boolean"},"taskType":{"title":"TaskType","description":"What the task does.\n\n- `Standard` — a regular task that a user manually checks off when done.\n- `Approval` — an approval task; a reviewer approves or rejects it, gating subsequent tasks.\n- `AI` — an automated task that runs an AI prompt to populate form field values.\n- `Code` — an automated task that runs a custom code snippet.\n","type":"string","enum":["Standard","Approval","AI","Code"]},"links":{"description":"Navigable HATEOAS links to related resources. Each entry has a `name` (RFC-5988 link relation like `self`, `edit`, `related`), an `href` URL, and a `type` (`Api` for callable endpoints, `App` for browser-facing URLs). Prefer following these `href` values over constructing URLs by hand.","type":"array","items":{"title":"Link","description":"A HATEOAS link to a related resource. Use these to navigate between resources without constructing URLs by hand.","type":"object","required":["name","href","type"],"properties":{"name":{"description":"Standard link relation name (RFC 5988) indicating this link's role. Common values include `self`, `edit`, `related`, `previous`, `next`.","type":"string"},"href":{"title":"Uri","description":"URL of the linked resource.","examples":["https://api.process.st/api/v1.1/resource/XXX"],"type":"string"},"rel":{"description":"Optional. The kind of resource this link points to (e.g. `Workflow`, `Task`, `Comment`).","type":"string","enum":["Approval Task","Approvals","Assignees","Comment","Data Set Records","Data Sets","Form Field Values","Subject Task","Task","Tasks","Users","Webhook","Workflow","Workflow Run"]},"type":{"description":"Whether this link targets an API endpoint or a Process Street app URL. `Api` — a callable API endpoint you can fetch directly. `App` — a browser-facing URL in the Process Street UI.","type":"string","enum":["Api","App"]}}}}}},"PublicApiTaskTemplateListResponse":{"title":"PublicApiTaskTemplateListResponse","type":"object","properties":{"data":{"description":"The list of resources returned by this request.","type":"array","items":{"title":"PublicApiTaskTemplate","type":"object","required":["id","audit","workflowId","orderTree","stopTask","hiddenByDefault","taskType"],"properties":{"id":{"title":"EntityID","description":"The resource's ID.","type":"string"},"audit":{"title":"PublicApiAudit","description":"Creation and last-modification metadata.","type":"object","required":["createdDate","createdBy","updatedDate","updatedBy"],"properties":{"createdDate":{"description":"When the resource was first created. ISO-8601 UTC.","type":"string","format":"date-time"},"createdBy":{"title":"PublicApiUser","description":"User who created the resource.","examples":[{"id":"iUu2eOU2Q-sBoX6ZjZV9pQ","email":"jane.doe@example.com","username":"Jane Doe"}],"type":"object","required":["id","email","username"],"properties":{"id":{"title":"EntityID","description":"The resource's ID.","type":"string"},"email":{"description":"The user's email address (also their login identifier).","type":"string"},"username":{"description":"The user's display name (e.g. `Jane Doe`).","type":"string"}}},"updatedDate":{"description":"When the resource was last modified. ISO-8601 UTC.","type":"string","format":"date-time"},"updatedBy":{"title":"PublicApiUser","description":"User who last modified the resource.","examples":[{"id":"iUu2eOU2Q-sBoX6ZjZV9pQ","email":"jane.doe@example.com","username":"Jane Doe"}],"type":"object","required":["id","email","username"],"properties":{"id":{"title":"EntityID","description":"The resource's ID.","type":"string"},"email":{"description":"The user's email address (also their login identifier).","type":"string"},"username":{"description":"The user's display name (e.g. `Jane Doe`).","type":"string"}}}}},"workflowId":{"title":"EntityID","description":"The ID of the Workflow.","type":"string"},"name":{"description":"Display name of the task template.","type":"string"},"orderTree":{"description":"Opaque ordering token; task templates sort lexicographically by this value within a revision.","type":"string"},"stopTask":{"description":"When `true`, this task acts as a stop — subsequent tasks within the revision are blocked until it's completed at runtime.","type":"boolean"},"hiddenByDefault":{"description":"When `true`, the widget is hidden by default; conditional logic rules can reveal it at runtime. Defaults to `false`.","type":"boolean"},"taskType":{"title":"TaskType","description":"What the task does.\n\n- `Standard` — a regular task that a user manually checks off when done.\n- `Approval` — an approval task; a reviewer approves or rejects it, gating subsequent tasks.\n- `AI` — an automated task that runs an AI prompt to populate form field values.\n- `Code` — an automated task that runs a custom code snippet.\n","type":"string","enum":["Standard","Approval","AI","Code"]},"links":{"description":"Navigable HATEOAS links to related resources. Each entry has a `name` (RFC-5988 link relation like `self`, `edit`, `related`), an `href` URL, and a `type` (`Api` for callable endpoints, `App` for browser-facing URLs). Prefer following these `href` values over constructing URLs by hand.","type":"array","items":{"title":"Link","description":"A HATEOAS link to a related resource. Use these to navigate between resources without constructing URLs by hand.","type":"object","required":["name","href","type"],"properties":{"name":{"description":"Standard link relation name (RFC 5988) indicating this link's role. Common values include `self`, `edit`, `related`, `previous`, `next`.","type":"string"},"href":{"title":"Uri","description":"URL of the linked resource.","examples":["https://api.process.st/api/v1.1/resource/XXX"],"type":"string"},"rel":{"description":"Optional. The kind of resource this link points to (e.g. `Workflow`, `Task`, `Comment`).","type":"string","enum":["Approval Task","Approvals","Assignees","Comment","Data Set Records","Data Sets","Form Field Values","Subject Task","Task","Tasks","Users","Webhook","Workflow","Workflow Run"]},"type":{"description":"Whether this link targets an API endpoint or a Process Street app URL. `Api` — a callable API endpoint you can fetch directly. `App` — a browser-facing URL in the Process Street UI.","type":"string","enum":["Api","App"]}}}}}}},"links":{"description":"Pagination links. When the result has more pages, look for an entry with `name: \"next\"` — its `href` is the URL to fetch the next page. Absence of `next` means there are no more pages. For single-resource responses this array is typically empty.","type":"array","items":{"title":"Link","description":"A HATEOAS link to a related resource. Use these to navigate between resources without constructing URLs by hand.","type":"object","required":["name","href","type"],"properties":{"name":{"description":"Standard link relation name (RFC 5988) indicating this link's role. Common values include `self`, `edit`, `related`, `previous`, `next`.","type":"string"},"href":{"title":"Uri","description":"URL of the linked resource.","examples":["https://api.process.st/api/v1.1/resource/XXX"],"type":"string"},"rel":{"description":"Optional. The kind of resource this link points to (e.g. `Workflow`, `Task`, `Comment`).","type":"string","enum":["Approval Task","Approvals","Assignees","Comment","Data Set Records","Data Sets","Form Field Values","Subject Task","Task","Tasks","Users","Webhook","Workflow","Workflow Run"]},"type":{"description":"Whether this link targets an API endpoint or a Process Street app URL. `Api` — a callable API endpoint you can fetch directly. `App` — a browser-facing URL in the Process Street UI.","type":"string","enum":["Api","App"]}}}}}},"PublicApiTaskTemplateResponse":{"title":"PublicApiTaskTemplateResponse","type":"object","required":["data"],"properties":{"data":{"title":"PublicApiTaskTemplate","type":"object","required":["id","audit","workflowId","orderTree","stopTask","hiddenByDefault","taskType"],"properties":{"id":{"title":"EntityID","description":"The resource's ID.","type":"string"},"audit":{"title":"PublicApiAudit","description":"Creation and last-modification metadata.","type":"object","required":["createdDate","createdBy","updatedDate","updatedBy"],"properties":{"createdDate":{"description":"When the resource was first created. ISO-8601 UTC.","type":"string","format":"date-time"},"createdBy":{"title":"PublicApiUser","description":"User who created the resource.","examples":[{"id":"iUu2eOU2Q-sBoX6ZjZV9pQ","email":"jane.doe@example.com","username":"Jane Doe"}],"type":"object","required":["id","email","username"],"properties":{"id":{"title":"EntityID","description":"The resource's ID.","type":"string"},"email":{"description":"The user's email address (also their login identifier).","type":"string"},"username":{"description":"The user's display name (e.g. `Jane Doe`).","type":"string"}}},"updatedDate":{"description":"When the resource was last modified. ISO-8601 UTC.","type":"string","format":"date-time"},"updatedBy":{"title":"PublicApiUser","description":"User who last modified the resource.","examples":[{"id":"iUu2eOU2Q-sBoX6ZjZV9pQ","email":"jane.doe@example.com","username":"Jane Doe"}],"type":"object","required":["id","email","username"],"properties":{"id":{"title":"EntityID","description":"The resource's ID.","type":"string"},"email":{"description":"The user's email address (also their login identifier).","type":"string"},"username":{"description":"The user's display name (e.g. `Jane Doe`).","type":"string"}}}}},"workflowId":{"title":"EntityID","description":"The ID of the Workflow.","type":"string"},"name":{"description":"Display name of the task template.","type":"string"},"orderTree":{"description":"Opaque ordering token; task templates sort lexicographically by this value within a revision.","type":"string"},"stopTask":{"description":"When `true`, this task acts as a stop — subsequent tasks within the revision are blocked until it's completed at runtime.","type":"boolean"},"hiddenByDefault":{"description":"When `true`, the widget is hidden by default; conditional logic rules can reveal it at runtime. Defaults to `false`.","type":"boolean"},"taskType":{"title":"TaskType","description":"What the task does.\n\n- `Standard` — a regular task that a user manually checks off when done.\n- `Approval` — an approval task; a reviewer approves or rejects it, gating subsequent tasks.\n- `AI` — an automated task that runs an AI prompt to populate form field values.\n- `Code` — an automated task that runs a custom code snippet.\n","type":"string","enum":["Standard","Approval","AI","Code"]},"links":{"description":"Navigable HATEOAS links to related resources. Each entry has a `name` (RFC-5988 link relation like `self`, `edit`, `related`), an `href` URL, and a `type` (`Api` for callable endpoints, `App` for browser-facing URLs). Prefer following these `href` values over constructing URLs by hand.","type":"array","items":{"title":"Link","description":"A HATEOAS link to a related resource. Use these to navigate between resources without constructing URLs by hand.","type":"object","required":["name","href","type"],"properties":{"name":{"description":"Standard link relation name (RFC 5988) indicating this link's role. Common values include `self`, `edit`, `related`, `previous`, `next`.","type":"string"},"href":{"title":"Uri","description":"URL of the linked resource.","examples":["https://api.process.st/api/v1.1/resource/XXX"],"type":"string"},"rel":{"description":"Optional. The kind of resource this link points to (e.g. `Workflow`, `Task`, `Comment`).","type":"string","enum":["Approval Task","Approvals","Assignees","Comment","Data Set Records","Data Sets","Form Field Values","Subject Task","Task","Tasks","Users","Webhook","Workflow","Workflow Run"]},"type":{"description":"Whether this link targets an API endpoint or a Process Street app URL. `Api` — a callable API endpoint you can fetch directly. `App` — a browser-facing URL in the Process Street UI.","type":"string","enum":["Api","App"]}}}}}},"links":{"description":"Pagination links. When the result has more pages, look for an entry with `name: \"next\"` — its `href` is the URL to fetch the next page. Absence of `next` means there are no more pages. For single-resource responses this array is typically empty.","type":"array","items":{"title":"Link","description":"A HATEOAS link to a related resource. Use these to navigate between resources without constructing URLs by hand.","type":"object","required":["name","href","type"],"properties":{"name":{"description":"Standard link relation name (RFC 5988) indicating this link's role. Common values include `self`, `edit`, `related`, `previous`, `next`.","type":"string"},"href":{"title":"Uri","description":"URL of the linked resource.","examples":["https://api.process.st/api/v1.1/resource/XXX"],"type":"string"},"rel":{"description":"Optional. The kind of resource this link points to (e.g. `Workflow`, `Task`, `Comment`).","type":"string","enum":["Approval Task","Approvals","Assignees","Comment","Data Set Records","Data Sets","Form Field Values","Subject Task","Task","Tasks","Users","Webhook","Workflow","Workflow Run"]},"type":{"description":"Whether this link targets an API endpoint or a Process Street app URL. `Api` — a callable API endpoint you can fetch directly. `App` — a browser-facing URL in the Process Street UI.","type":"string","enum":["Api","App"]}}}}}},"PublicApiTextFormFieldConfig":{"title":"PublicApiTextFormFieldConfig","type":"object","required":["fieldType"],"properties":{"placeholder":{"description":"Placeholder hint shown in the input when no value has been entered.","type":"string"},"defaultValue":{"description":"Default value pre-filled when a new workflow run is created.","type":"string"},"fieldType":{"description":"Form-field subtype discriminator (only relevant when widget `type` is `FormField`).\n\n- `Text` — short text input (≤255 characters).\n- `Textarea` — long-form text.\n- `Email` — email address.\n- `Url` — website / URL.\n- `Number` — numeric input with optional unit and constraints.\n- `Date` — date or date+time picker.\n- `Select` — dropdown; user picks one option.\n- `MultiChoice` — checkboxes; user picks one or more options.\n- `MultiSelect` — Subtasks: a checklist of sub-items inside the task.\n- `Members` — assignee picker (selects organization users).\n- `File` — single file upload.\n- `MultiFile` — multi-file upload (in-app \"File Upload\").\n- `Document` — document approval field; links the task to a document review.\n- `Table` — rows × columns of cells; users fill cell values.\n- `SendRichEmail` — pre-written email embedded in the task; sent manually by the user or\n  automatically when the task is completed.\n- `Hidden` — only visible when editing the workflow; populated by integrations or default values.\n- `Snippet` — only visible when editing; passes static text or merge tags into automations.\n","type":"string","enum":["Date","Document","Email","File","Hidden","Members","MultiChoice","MultiFile","MultiSelect","Number","Select","SendRichEmail","Snippet","Table","Text","Textarea","Url"],"const":"Text"}}},"PublicApiTextFormFieldConfig1":{"title":"PublicApiTextFormFieldConfig","type":"object","properties":{"placeholder":{"description":"Placeholder hint shown in the input when no value has been entered.","type":"string"},"defaultValue":{"description":"Default value pre-filled when a new workflow run is created.","type":"string"}}},"PublicApiTextFormFieldConstraints":{"title":"PublicApiTextFormFieldConstraints","type":"object","required":["fieldType"],"properties":{"min":{"description":"Inclusive lower bound.","type":"integer","format":"int32"},"max":{"description":"Inclusive upper bound.","type":"integer","format":"int32"},"fieldType":{"description":"Form-field subtype discriminator (only relevant when widget `type` is `FormField`).\n\n- `Text` — short text input (≤255 characters).\n- `Textarea` — long-form text.\n- `Email` — email address.\n- `Url` — website / URL.\n- `Number` — numeric input with optional unit and constraints.\n- `Date` — date or date+time picker.\n- `Select` — dropdown; user picks one option.\n- `MultiChoice` — checkboxes; user picks one or more options.\n- `MultiSelect` — Subtasks: a checklist of sub-items inside the task.\n- `Members` — assignee picker (selects organization users).\n- `File` — single file upload.\n- `MultiFile` — multi-file upload (in-app \"File Upload\").\n- `Document` — document approval field; links the task to a document review.\n- `Table` — rows × columns of cells; users fill cell values.\n- `SendRichEmail` — pre-written email embedded in the task; sent manually by the user or\n  automatically when the task is completed.\n- `Hidden` — only visible when editing the workflow; populated by integrations or default values.\n- `Snippet` — only visible when editing; passes static text or merge tags into automations.\n","type":"string","enum":["Date","Document","Email","File","Hidden","Members","MultiChoice","MultiFile","MultiSelect","Number","Select","SendRichEmail","Snippet","Table","Text","Textarea","Url"],"const":"Text"}}},"PublicApiTextFormFieldConstraints1":{"title":"PublicApiTextFormFieldConstraints","type":"object","properties":{"min":{"description":"Inclusive lower bound.","type":"integer","format":"int32"},"max":{"description":"Inclusive upper bound.","type":"integer","format":"int32"}}},"PublicApiTextWidget":{"title":"PublicApiTextWidget","type":"object","required":["hiddenByDefault","id","taskId","createdDate","createdBy","updatedDate","updatedBy","type"],"properties":{"hiddenByDefault":{"description":"When `true`, the widget is hidden by default; conditional logic rules can reveal it at runtime. Defaults to `false`.","type":"boolean"},"id":{"description":"The ID of the Widget","examples":["vl-PQ1FTbSsBoX6ZlG54Hg"],"type":"string"},"taskId":{"description":"The ID of the Task","examples":["vl-PQ1FTbSsBoX6ZlG54Hg"],"type":"string"},"createdDate":{"description":"When the resource was first created. ISO-8601 UTC.","type":"string","format":"date-time"},"createdBy":{"description":"User who created the resource.","examples":[{"id":"iUu2eOU2Q-sBoX6ZjZV9pQ","email":"jane.doe@example.com","username":"Jane Doe"}],"type":"object","required":["id","email","username"],"properties":{"id":{"title":"EntityID","description":"The resource's ID.","type":"string"},"email":{"description":"The user's email address (also their login identifier).","type":"string"},"username":{"description":"The user's display name (e.g. `Jane Doe`).","type":"string"}}},"updatedDate":{"description":"When the resource was last modified. ISO-8601 UTC.","type":"string","format":"date-time"},"updatedBy":{"description":"User who last modified the resource.","examples":[{"id":"iUu2eOU2Q-sBoX6ZjZV9pQ","email":"jane.doe@example.com","username":"Jane Doe"}],"type":"object","required":["id","email","username"],"properties":{"id":{"title":"EntityID","description":"The resource's ID.","type":"string"},"email":{"description":"The user's email address (also their login identifier).","type":"string"},"username":{"description":"The user's display name (e.g. `Jane Doe`).","type":"string"}}},"content":{"description":"Rich text content. May contain merge tags.","type":"string"},"links":{"description":"Navigable HATEOAS links to related resources. Each entry has a `name` (RFC-5988 relation), an `href` URL, and a `type` (`Api` or `App`).","type":"array","items":{"title":"Link","description":"A HATEOAS link to a related resource. Use these to navigate between resources without constructing URLs by hand.","type":"object","required":["name","href","type"],"properties":{"name":{"description":"Standard link relation name (RFC 5988) indicating this link's role. Common values include `self`, `edit`, `related`, `previous`, `next`.","type":"string"},"href":{"title":"Uri","description":"URL of the linked resource.","examples":["https://api.process.st/api/v1.1/resource/XXX"],"type":"string"},"rel":{"description":"Optional. The kind of resource this link points to (e.g. `Workflow`, `Task`, `Comment`).","type":"string","enum":["Approval Task","Approvals","Assignees","Comment","Data Set Records","Data Sets","Form Field Values","Subject Task","Task","Tasks","Users","Webhook","Workflow","Workflow Run"]},"type":{"description":"Whether this link targets an API endpoint or a Process Street app URL. `Api` — a callable API endpoint you can fetch directly. `App` — a browser-facing URL in the Process Street UI.","type":"string","enum":["Api","App"]}}}},"type":{"title":"WidgetType","description":"Widget kind discriminator.\n\n- `FormField` — collects user input (Text, Number, Date, etc. — see `fieldType`).\n- `Text` — rich text content displayed on the task.\n- `Image` — image content displayed on the task.\n- `File` — downloadable file attached to the task.\n- `Video` — video content (uploaded or linked from a hosting service).\n- `Embed` — embedded external content via URL.\n- `CrossLink` — link to another workflow or page.\n","type":"string","enum":["FormField","Text","Image","File","Video","Embed","CrossLink"]}}},"PublicApiTextareaFormFieldConfig":{"title":"PublicApiTextareaFormFieldConfig","type":"object","required":["fieldType"],"properties":{"placeholder":{"description":"Placeholder hint shown in the input when no value has been entered.","type":"string"},"defaultValue":{"description":"Default value pre-filled when a new workflow run is created.","type":"string"},"format":{"description":"Editor style for this Textarea field.\n\n- `PlainText` — plain text.\n- `RichText` — rich-text editor with formatting (bold, lists, links, etc.).\n","type":"string","enum":["PlainText","RichText"]},"fieldType":{"description":"Form-field subtype discriminator (only relevant when widget `type` is `FormField`).\n\n- `Text` — short text input (≤255 characters).\n- `Textarea` — long-form text.\n- `Email` — email address.\n- `Url` — website / URL.\n- `Number` — numeric input with optional unit and constraints.\n- `Date` — date or date+time picker.\n- `Select` — dropdown; user picks one option.\n- `MultiChoice` — checkboxes; user picks one or more options.\n- `MultiSelect` — Subtasks: a checklist of sub-items inside the task.\n- `Members` — assignee picker (selects organization users).\n- `File` — single file upload.\n- `MultiFile` — multi-file upload (in-app \"File Upload\").\n- `Document` — document approval field; links the task to a document review.\n- `Table` — rows × columns of cells; users fill cell values.\n- `SendRichEmail` — pre-written email embedded in the task; sent manually by the user or\n  automatically when the task is completed.\n- `Hidden` — only visible when editing the workflow; populated by integrations or default values.\n- `Snippet` — only visible when editing; passes static text or merge tags into automations.\n","type":"string","enum":["Date","Document","Email","File","Hidden","Members","MultiChoice","MultiFile","MultiSelect","Number","Select","SendRichEmail","Snippet","Table","Text","Textarea","Url"],"const":"Textarea"}}},"PublicApiTextareaFormFieldConfig1":{"title":"PublicApiTextareaFormFieldConfig","type":"object","properties":{"placeholder":{"description":"Placeholder hint shown in the input when no value has been entered.","type":"string"},"defaultValue":{"description":"Default value pre-filled when a new workflow run is created.","type":"string"},"format":{"description":"Editor style for this Textarea field.\n\n- `PlainText` — plain text.\n- `RichText` — rich-text editor with formatting (bold, lists, links, etc.).\n","type":"string","enum":["PlainText","RichText"]}}},"PublicApiTextareaFormFieldConstraints":{"title":"PublicApiTextareaFormFieldConstraints","type":"object","required":["fieldType"],"properties":{"min":{"description":"Inclusive lower bound.","type":"integer","format":"int32"},"max":{"description":"Inclusive upper bound.","type":"integer","format":"int32"},"fieldType":{"description":"Form-field subtype discriminator (only relevant when widget `type` is `FormField`).\n\n- `Text` — short text input (≤255 characters).\n- `Textarea` — long-form text.\n- `Email` — email address.\n- `Url` — website / URL.\n- `Number` — numeric input with optional unit and constraints.\n- `Date` — date or date+time picker.\n- `Select` — dropdown; user picks one option.\n- `MultiChoice` — checkboxes; user picks one or more options.\n- `MultiSelect` — Subtasks: a checklist of sub-items inside the task.\n- `Members` — assignee picker (selects organization users).\n- `File` — single file upload.\n- `MultiFile` — multi-file upload (in-app \"File Upload\").\n- `Document` — document approval field; links the task to a document review.\n- `Table` — rows × columns of cells; users fill cell values.\n- `SendRichEmail` — pre-written email embedded in the task; sent manually by the user or\n  automatically when the task is completed.\n- `Hidden` — only visible when editing the workflow; populated by integrations or default values.\n- `Snippet` — only visible when editing; passes static text or merge tags into automations.\n","type":"string","enum":["Date","Document","Email","File","Hidden","Members","MultiChoice","MultiFile","MultiSelect","Number","Select","SendRichEmail","Snippet","Table","Text","Textarea","Url"],"const":"Textarea"}}},"PublicApiTextareaFormFieldConstraints1":{"title":"PublicApiTextareaFormFieldConstraints","type":"object","properties":{"min":{"description":"Inclusive lower bound.","type":"integer","format":"int32"},"max":{"description":"Inclusive upper bound.","type":"integer","format":"int32"}}},"PublicApiUrlFormFieldConfig":{"title":"PublicApiUrlFormFieldConfig","type":"object","required":["fieldType"],"properties":{"defaultValue":{"description":"Default value pre-filled when a new workflow run is created.","type":"string"},"fieldType":{"description":"Form-field subtype discriminator (only relevant when widget `type` is `FormField`).\n\n- `Text` — short text input (≤255 characters).\n- `Textarea` — long-form text.\n- `Email` — email address.\n- `Url` — website / URL.\n- `Number` — numeric input with optional unit and constraints.\n- `Date` — date or date+time picker.\n- `Select` — dropdown; user picks one option.\n- `MultiChoice` — checkboxes; user picks one or more options.\n- `MultiSelect` — Subtasks: a checklist of sub-items inside the task.\n- `Members` — assignee picker (selects organization users).\n- `File` — single file upload.\n- `MultiFile` — multi-file upload (in-app \"File Upload\").\n- `Document` — document approval field; links the task to a document review.\n- `Table` — rows × columns of cells; users fill cell values.\n- `SendRichEmail` — pre-written email embedded in the task; sent manually by the user or\n  automatically when the task is completed.\n- `Hidden` — only visible when editing the workflow; populated by integrations or default values.\n- `Snippet` — only visible when editing; passes static text or merge tags into automations.\n","type":"string","enum":["Date","Document","Email","File","Hidden","Members","MultiChoice","MultiFile","MultiSelect","Number","Select","SendRichEmail","Snippet","Table","Text","Textarea","Url"],"const":"Url"}}},"PublicApiUrlFormFieldConfig1":{"title":"PublicApiUrlFormFieldConfig","type":"object","properties":{"defaultValue":{"description":"Default value pre-filled when a new workflow run is created.","type":"string"}}},"PublicApiUser":{"title":"PublicApiUser","examples":[{"id":"iUu2eOU2Q-sBoX6ZjZV9pQ","email":"jane.doe@example.com","username":"Jane Doe"}],"type":"object","required":["id","email","username"],"properties":{"id":{"title":"EntityID","description":"The resource's ID.","type":"string"},"email":{"description":"The user's email address (also their login identifier).","type":"string"},"username":{"description":"The user's display name (e.g. `Jane Doe`).","type":"string"}}},"PublicApiVideoWidget":{"title":"PublicApiVideoWidget","type":"object","required":["hiddenByDefault","id","taskId","createdDate","createdBy","updatedDate","updatedBy","type"],"properties":{"hiddenByDefault":{"description":"When `true`, the widget is hidden by default; conditional logic rules can reveal it at runtime. Defaults to `false`.","type":"boolean"},"id":{"description":"The ID of the Widget","examples":["oQyz9nbHMGEBoX6ZlJt-lA"],"type":"string"},"taskId":{"description":"The ID of the Task","examples":["oQyz9nbHMGEBoX6ZlJt-lA"],"type":"string"},"createdDate":{"description":"When the resource was first created. ISO-8601 UTC.","type":"string","format":"date-time"},"createdBy":{"description":"User who created the resource.","examples":[{"id":"iUu2eOU2Q-sBoX6ZjZV9pQ","email":"jane.doe@example.com","username":"Jane Doe"}],"type":"object","required":["id","email","username"],"properties":{"id":{"title":"EntityID","description":"The resource's ID.","type":"string"},"email":{"description":"The user's email address (also their login identifier).","type":"string"},"username":{"description":"The user's display name (e.g. `Jane Doe`).","type":"string"}}},"updatedDate":{"description":"When the resource was last modified. ISO-8601 UTC.","type":"string","format":"date-time"},"updatedBy":{"description":"User who last modified the resource.","examples":[{"id":"iUu2eOU2Q-sBoX6ZjZV9pQ","email":"jane.doe@example.com","username":"Jane Doe"}],"type":"object","required":["id","email","username"],"properties":{"id":{"title":"EntityID","description":"The resource's ID.","type":"string"},"email":{"description":"The user's email address (also their login identifier).","type":"string"},"username":{"description":"The user's display name (e.g. `Jane Doe`).","type":"string"}}},"description":{"description":"Optional long-form description.","type":"string"},"url":{"description":"Target URL.","type":"string"},"file":{"title":"PublicApiWidgetFile","description":"Uploaded file reference. Use the upload endpoint to attach content.","type":"object","required":["id","name","mimeType","size"],"properties":{"id":{"title":"EntityID","description":"The resource's ID.","type":"string"},"name":{"description":"Display name.","type":"string"},"mimeType":{"description":"MIME type detected at upload time (e.g. `image/png`, `application/pdf`).","type":"string"},"size":{"description":"File size in bytes.","type":"integer","format":"int64"}}},"links":{"description":"Navigable HATEOAS links to related resources. Each entry has a `name` (RFC-5988 relation), an `href` URL, and a `type` (`Api` or `App`).","type":"array","items":{"title":"Link","description":"A HATEOAS link to a related resource. Use these to navigate between resources without constructing URLs by hand.","type":"object","required":["name","href","type"],"properties":{"name":{"description":"Standard link relation name (RFC 5988) indicating this link's role. Common values include `self`, `edit`, `related`, `previous`, `next`.","type":"string"},"href":{"title":"Uri","description":"URL of the linked resource.","examples":["https://api.process.st/api/v1.1/resource/XXX"],"type":"string"},"rel":{"description":"Optional. The kind of resource this link points to (e.g. `Workflow`, `Task`, `Comment`).","type":"string","enum":["Approval Task","Approvals","Assignees","Comment","Data Set Records","Data Sets","Form Field Values","Subject Task","Task","Tasks","Users","Webhook","Workflow","Workflow Run"]},"type":{"description":"Whether this link targets an API endpoint or a Process Street app URL. `Api` — a callable API endpoint you can fetch directly. `App` — a browser-facing URL in the Process Street UI.","type":"string","enum":["Api","App"]}}}},"type":{"title":"WidgetType","description":"Widget kind discriminator.\n\n- `FormField` — collects user input (Text, Number, Date, etc. — see `fieldType`).\n- `Text` — rich text content displayed on the task.\n- `Image` — image content displayed on the task.\n- `File` — downloadable file attached to the task.\n- `Video` — video content (uploaded or linked from a hosting service).\n- `Embed` — embedded external content via URL.\n- `CrossLink` — link to another workflow or page.\n","type":"string","enum":["FormField","Text","Image","File","Video","Embed","CrossLink"]}}},"PublicApiWebhook":{"title":"PublicApiWebhook","type":"object","required":["id","createdDate","createdBy","updatedDate","updatedBy","url","status"],"properties":{"id":{"description":"The ID of the Webhook","examples":["ji12EiEaWSkBoX6Zlu15dA"],"type":"string"},"createdDate":{"description":"When the resource was first created. ISO-8601 UTC.","type":"string","format":"date-time"},"createdBy":{"description":"User who created the resource.","examples":[{"id":"iUu2eOU2Q-sBoX6ZjZV9pQ","email":"jane.doe@example.com","username":"Jane Doe"}],"type":"object","required":["id","email","username"],"properties":{"id":{"title":"EntityID","description":"The resource's ID.","type":"string"},"email":{"description":"The user's email address (also their login identifier).","type":"string"},"username":{"description":"The user's display name (e.g. `Jane Doe`).","type":"string"}}},"updatedDate":{"description":"When the resource was last modified. ISO-8601 UTC.","type":"string","format":"date-time"},"updatedBy":{"description":"User who last modified the resource.","examples":[{"id":"iUu2eOU2Q-sBoX6ZjZV9pQ","email":"jane.doe@example.com","username":"Jane Doe"}],"type":"object","required":["id","email","username"],"properties":{"id":{"title":"EntityID","description":"The resource's ID.","type":"string"},"email":{"description":"The user's email address (also their login identifier).","type":"string"},"username":{"description":"The user's display name (e.g. `Jane Doe`).","type":"string"}}},"url":{"description":"HTTPS endpoint to which event payloads are POSTed.","type":"string"},"triggers":{"description":"Trigger event names this webhook fires on. Typical values include `WorkflowRunCreated`, `WorkflowRunCompleted`, `TaskChecked`, `TaskUnchecked`, `TaskCheckedUnchecked`, and `TaskReady`. Webhooks created via internal tooling may surface additional trigger names.","type":"array","items":{"type":"string"}},"status":{"description":"Whether the webhook is currently delivering events. `Active` — events that match the configured triggers are delivered to the webhook URL. `Disabled` — the webhook is configured but no events are delivered.","type":"string","enum":["Active","Disabled"]},"workflowId":{"title":"EntityID","description":"The ID of the Workflow.","type":"string"},"taskId":{"title":"EntityID","description":"The ID of the Task.","type":"string"},"links":{"description":"Navigable HATEOAS links to related resources. Each entry has a `name` (RFC-5988 link relation like `self`, `edit`, `related`), an `href` URL, and a `type` (`Api` for callable endpoints, `App` for browser-facing URLs). Prefer following these `href` values over constructing URLs by hand.","type":"array","items":{"title":"Link","description":"A HATEOAS link to a related resource. Use these to navigate between resources without constructing URLs by hand.","type":"object","required":["name","href","type"],"properties":{"name":{"description":"Standard link relation name (RFC 5988) indicating this link's role. Common values include `self`, `edit`, `related`, `previous`, `next`.","type":"string"},"href":{"title":"Uri","description":"URL of the linked resource.","examples":["https://api.process.st/api/v1.1/resource/XXX"],"type":"string"},"rel":{"description":"Optional. The kind of resource this link points to (e.g. `Workflow`, `Task`, `Comment`).","type":"string","enum":["Approval Task","Approvals","Assignees","Comment","Data Set Records","Data Sets","Form Field Values","Subject Task","Task","Tasks","Users","Webhook","Workflow","Workflow Run"]},"type":{"description":"Whether this link targets an API endpoint or a Process Street app URL. `Api` — a callable API endpoint you can fetch directly. `App` — a browser-facing URL in the Process Street UI.","type":"string","enum":["Api","App"]}}}}}},"PublicApiWebhookListResponse":{"title":"PublicApiWebhookListResponse","type":"object","properties":{"data":{"description":"The list of resources returned by this request.","type":"array","items":{"title":"PublicApiWebhook","type":"object","required":["id","createdDate","createdBy","updatedDate","updatedBy","url","status"],"properties":{"id":{"description":"The ID of the Webhook","examples":["ji12EiEaWSkBoX6Zlu15dA"],"type":"string"},"createdDate":{"description":"When the resource was first created. ISO-8601 UTC.","type":"string","format":"date-time"},"createdBy":{"description":"User who created the resource.","examples":[{"id":"iUu2eOU2Q-sBoX6ZjZV9pQ","email":"jane.doe@example.com","username":"Jane Doe"}],"type":"object","required":["id","email","username"],"properties":{"id":{"title":"EntityID","description":"The resource's ID.","type":"string"},"email":{"description":"The user's email address (also their login identifier).","type":"string"},"username":{"description":"The user's display name (e.g. `Jane Doe`).","type":"string"}}},"updatedDate":{"description":"When the resource was last modified. ISO-8601 UTC.","type":"string","format":"date-time"},"updatedBy":{"description":"User who last modified the resource.","examples":[{"id":"iUu2eOU2Q-sBoX6ZjZV9pQ","email":"jane.doe@example.com","username":"Jane Doe"}],"type":"object","required":["id","email","username"],"properties":{"id":{"title":"EntityID","description":"The resource's ID.","type":"string"},"email":{"description":"The user's email address (also their login identifier).","type":"string"},"username":{"description":"The user's display name (e.g. `Jane Doe`).","type":"string"}}},"url":{"description":"HTTPS endpoint to which event payloads are POSTed.","type":"string"},"triggers":{"description":"Trigger event names this webhook fires on. Typical values include `WorkflowRunCreated`, `WorkflowRunCompleted`, `TaskChecked`, `TaskUnchecked`, `TaskCheckedUnchecked`, and `TaskReady`. Webhooks created via internal tooling may surface additional trigger names.","type":"array","items":{"type":"string"}},"status":{"description":"Whether the webhook is currently delivering events. `Active` — events that match the configured triggers are delivered to the webhook URL. `Disabled` — the webhook is configured but no events are delivered.","type":"string","enum":["Active","Disabled"]},"workflowId":{"title":"EntityID","description":"The ID of the Workflow.","type":"string"},"taskId":{"title":"EntityID","description":"The ID of the Task.","type":"string"},"links":{"description":"Navigable HATEOAS links to related resources. Each entry has a `name` (RFC-5988 link relation like `self`, `edit`, `related`), an `href` URL, and a `type` (`Api` for callable endpoints, `App` for browser-facing URLs). Prefer following these `href` values over constructing URLs by hand.","type":"array","items":{"title":"Link","description":"A HATEOAS link to a related resource. Use these to navigate between resources without constructing URLs by hand.","type":"object","required":["name","href","type"],"properties":{"name":{"description":"Standard link relation name (RFC 5988) indicating this link's role. Common values include `self`, `edit`, `related`, `previous`, `next`.","type":"string"},"href":{"title":"Uri","description":"URL of the linked resource.","examples":["https://api.process.st/api/v1.1/resource/XXX"],"type":"string"},"rel":{"description":"Optional. The kind of resource this link points to (e.g. `Workflow`, `Task`, `Comment`).","type":"string","enum":["Approval Task","Approvals","Assignees","Comment","Data Set Records","Data Sets","Form Field Values","Subject Task","Task","Tasks","Users","Webhook","Workflow","Workflow Run"]},"type":{"description":"Whether this link targets an API endpoint or a Process Street app URL. `Api` — a callable API endpoint you can fetch directly. `App` — a browser-facing URL in the Process Street UI.","type":"string","enum":["Api","App"]}}}}}}},"links":{"description":"Pagination links. When the result has more pages, look for an entry with `name: \"next\"` — its `href` is the URL to fetch the next page. Absence of `next` means there are no more pages. For single-resource responses this array is typically empty.","type":"array","items":{"title":"Link","description":"A HATEOAS link to a related resource. Use these to navigate between resources without constructing URLs by hand.","type":"object","required":["name","href","type"],"properties":{"name":{"description":"Standard link relation name (RFC 5988) indicating this link's role. Common values include `self`, `edit`, `related`, `previous`, `next`.","type":"string"},"href":{"title":"Uri","description":"URL of the linked resource.","examples":["https://api.process.st/api/v1.1/resource/XXX"],"type":"string"},"rel":{"description":"Optional. The kind of resource this link points to (e.g. `Workflow`, `Task`, `Comment`).","type":"string","enum":["Approval Task","Approvals","Assignees","Comment","Data Set Records","Data Sets","Form Field Values","Subject Task","Task","Tasks","Users","Webhook","Workflow","Workflow Run"]},"type":{"description":"Whether this link targets an API endpoint or a Process Street app URL. `Api` — a callable API endpoint you can fetch directly. `App` — a browser-facing URL in the Process Street UI.","type":"string","enum":["Api","App"]}}}}}},"PublicApiWebhookResponse":{"title":"PublicApiWebhookResponse","type":"object","required":["data"],"properties":{"data":{"title":"PublicApiWebhook","type":"object","required":["id","createdDate","createdBy","updatedDate","updatedBy","url","status"],"properties":{"id":{"description":"The ID of the Webhook","examples":["ji12EiEaWSkBoX6Zlu15dA"],"type":"string"},"createdDate":{"description":"When the resource was first created. ISO-8601 UTC.","type":"string","format":"date-time"},"createdBy":{"description":"User who created the resource.","examples":[{"id":"iUu2eOU2Q-sBoX6ZjZV9pQ","email":"jane.doe@example.com","username":"Jane Doe"}],"type":"object","required":["id","email","username"],"properties":{"id":{"title":"EntityID","description":"The resource's ID.","type":"string"},"email":{"description":"The user's email address (also their login identifier).","type":"string"},"username":{"description":"The user's display name (e.g. `Jane Doe`).","type":"string"}}},"updatedDate":{"description":"When the resource was last modified. ISO-8601 UTC.","type":"string","format":"date-time"},"updatedBy":{"description":"User who last modified the resource.","examples":[{"id":"iUu2eOU2Q-sBoX6ZjZV9pQ","email":"jane.doe@example.com","username":"Jane Doe"}],"type":"object","required":["id","email","username"],"properties":{"id":{"title":"EntityID","description":"The resource's ID.","type":"string"},"email":{"description":"The user's email address (also their login identifier).","type":"string"},"username":{"description":"The user's display name (e.g. `Jane Doe`).","type":"string"}}},"url":{"description":"HTTPS endpoint to which event payloads are POSTed.","type":"string"},"triggers":{"description":"Trigger event names this webhook fires on. Typical values include `WorkflowRunCreated`, `WorkflowRunCompleted`, `TaskChecked`, `TaskUnchecked`, `TaskCheckedUnchecked`, and `TaskReady`. Webhooks created via internal tooling may surface additional trigger names.","type":"array","items":{"type":"string"}},"status":{"description":"Whether the webhook is currently delivering events. `Active` — events that match the configured triggers are delivered to the webhook URL. `Disabled` — the webhook is configured but no events are delivered.","type":"string","enum":["Active","Disabled"]},"workflowId":{"title":"EntityID","description":"The ID of the Workflow.","type":"string"},"taskId":{"title":"EntityID","description":"The ID of the Task.","type":"string"},"links":{"description":"Navigable HATEOAS links to related resources. Each entry has a `name` (RFC-5988 link relation like `self`, `edit`, `related`), an `href` URL, and a `type` (`Api` for callable endpoints, `App` for browser-facing URLs). Prefer following these `href` values over constructing URLs by hand.","type":"array","items":{"title":"Link","description":"A HATEOAS link to a related resource. Use these to navigate between resources without constructing URLs by hand.","type":"object","required":["name","href","type"],"properties":{"name":{"description":"Standard link relation name (RFC 5988) indicating this link's role. Common values include `self`, `edit`, `related`, `previous`, `next`.","type":"string"},"href":{"title":"Uri","description":"URL of the linked resource.","examples":["https://api.process.st/api/v1.1/resource/XXX"],"type":"string"},"rel":{"description":"Optional. The kind of resource this link points to (e.g. `Workflow`, `Task`, `Comment`).","type":"string","enum":["Approval Task","Approvals","Assignees","Comment","Data Set Records","Data Sets","Form Field Values","Subject Task","Task","Tasks","Users","Webhook","Workflow","Workflow Run"]},"type":{"description":"Whether this link targets an API endpoint or a Process Street app URL. `Api` — a callable API endpoint you can fetch directly. `App` — a browser-facing URL in the Process Street UI.","type":"string","enum":["Api","App"]}}}}}},"links":{"description":"Pagination links. When the result has more pages, look for an entry with `name: \"next\"` — its `href` is the URL to fetch the next page. Absence of `next` means there are no more pages. For single-resource responses this array is typically empty.","type":"array","items":{"title":"Link","description":"A HATEOAS link to a related resource. Use these to navigate between resources without constructing URLs by hand.","type":"object","required":["name","href","type"],"properties":{"name":{"description":"Standard link relation name (RFC 5988) indicating this link's role. Common values include `self`, `edit`, `related`, `previous`, `next`.","type":"string"},"href":{"title":"Uri","description":"URL of the linked resource.","examples":["https://api.process.st/api/v1.1/resource/XXX"],"type":"string"},"rel":{"description":"Optional. The kind of resource this link points to (e.g. `Workflow`, `Task`, `Comment`).","type":"string","enum":["Approval Task","Approvals","Assignees","Comment","Data Set Records","Data Sets","Form Field Values","Subject Task","Task","Tasks","Users","Webhook","Workflow","Workflow Run"]},"type":{"description":"Whether this link targets an API endpoint or a Process Street app URL. `Api` — a callable API endpoint you can fetch directly. `App` — a browser-facing URL in the Process Street UI.","type":"string","enum":["Api","App"]}}}}}},"PublicApiWidget":{"title":"PublicApiWidget","oneOf":[{"title":"PublicApiCrossLinkWidget","type":"object","required":["hiddenByDefault","id","taskId","createdDate","createdBy","updatedDate","updatedBy","type"],"properties":{"hiddenByDefault":{"description":"When `true`, the widget is hidden by default; conditional logic rules can reveal it at runtime. Defaults to `false`.","type":"boolean"},"id":{"description":"The ID of the Widget","examples":["sQhasVLlQ6ABoX6ZlLJ8wQ"],"type":"string"},"taskId":{"description":"The ID of the Task","examples":["sQhasVLlQ6ABoX6ZlLJ8wQ"],"type":"string"},"createdDate":{"description":"When the resource was first created. ISO-8601 UTC.","type":"string","format":"date-time"},"createdBy":{"description":"User who created the resource.","examples":[{"id":"iUu2eOU2Q-sBoX6ZjZV9pQ","email":"jane.doe@example.com","username":"Jane Doe"}],"type":"object","required":["id","email","username"],"properties":{"id":{"title":"EntityID","description":"The resource's ID.","type":"string"},"email":{"description":"The user's email address (also their login identifier).","type":"string"},"username":{"description":"The user's display name (e.g. `Jane Doe`).","type":"string"}}},"updatedDate":{"description":"When the resource was last modified. ISO-8601 UTC.","type":"string","format":"date-time"},"updatedBy":{"description":"User who last modified the resource.","examples":[{"id":"iUu2eOU2Q-sBoX6ZjZV9pQ","email":"jane.doe@example.com","username":"Jane Doe"}],"type":"object","required":["id","email","username"],"properties":{"id":{"title":"EntityID","description":"The resource's ID.","type":"string"},"email":{"description":"The user's email address (also their login identifier).","type":"string"},"username":{"description":"The user's display name (e.g. `Jane Doe`).","type":"string"}}},"linkedTemplateId":{"title":"EntityID","description":"The ID of the linked workflow or page that this CrossLink widget points to.","type":"string"},"links":{"description":"Navigable HATEOAS links to related resources. Each entry has a `name` (RFC-5988 relation), an `href` URL, and a `type` (`Api` or `App`).","type":"array","items":{"title":"Link","description":"A HATEOAS link to a related resource. Use these to navigate between resources without constructing URLs by hand.","type":"object","required":["name","href","type"],"properties":{"name":{"description":"Standard link relation name (RFC 5988) indicating this link's role. Common values include `self`, `edit`, `related`, `previous`, `next`.","type":"string"},"href":{"title":"Uri","description":"URL of the linked resource.","examples":["https://api.process.st/api/v1.1/resource/XXX"],"type":"string"},"rel":{"description":"Optional. The kind of resource this link points to (e.g. `Workflow`, `Task`, `Comment`).","type":"string","enum":["Approval Task","Approvals","Assignees","Comment","Data Set Records","Data Sets","Form Field Values","Subject Task","Task","Tasks","Users","Webhook","Workflow","Workflow Run"]},"type":{"description":"Whether this link targets an API endpoint or a Process Street app URL. `Api` — a callable API endpoint you can fetch directly. `App` — a browser-facing URL in the Process Street UI.","type":"string","enum":["Api","App"]}}}},"type":{"title":"WidgetType","description":"Widget kind discriminator.\n\n- `FormField` — collects user input (Text, Number, Date, etc. — see `fieldType`).\n- `Text` — rich text content displayed on the task.\n- `Image` — image content displayed on the task.\n- `File` — downloadable file attached to the task.\n- `Video` — video content (uploaded or linked from a hosting service).\n- `Embed` — embedded external content via URL.\n- `CrossLink` — link to another workflow or page.\n","type":"string","enum":["FormField","Text","Image","File","Video","Embed","CrossLink"]}}},{"title":"PublicApiEmbedWidget","type":"object","required":["hiddenByDefault","id","taskId","createdDate","createdBy","updatedDate","updatedBy","type"],"properties":{"hiddenByDefault":{"description":"When `true`, the widget is hidden by default; conditional logic rules can reveal it at runtime. Defaults to `false`.","type":"boolean"},"id":{"description":"The ID of the Widget","examples":["t2jRHTZdhq4BoX6ZlKd0ng"],"type":"string"},"taskId":{"description":"The ID of the Task","examples":["t2jRHTZdhq4BoX6ZlKd0ng"],"type":"string"},"createdDate":{"description":"When the resource was first created. ISO-8601 UTC.","type":"string","format":"date-time"},"createdBy":{"description":"User who created the resource.","examples":[{"id":"iUu2eOU2Q-sBoX6ZjZV9pQ","email":"jane.doe@example.com","username":"Jane Doe"}],"type":"object","required":["id","email","username"],"properties":{"id":{"title":"EntityID","description":"The resource's ID.","type":"string"},"email":{"description":"The user's email address (also their login identifier).","type":"string"},"username":{"description":"The user's display name (e.g. `Jane Doe`).","type":"string"}}},"updatedDate":{"description":"When the resource was last modified. ISO-8601 UTC.","type":"string","format":"date-time"},"updatedBy":{"description":"User who last modified the resource.","examples":[{"id":"iUu2eOU2Q-sBoX6ZjZV9pQ","email":"jane.doe@example.com","username":"Jane Doe"}],"type":"object","required":["id","email","username"],"properties":{"id":{"title":"EntityID","description":"The resource's ID.","type":"string"},"email":{"description":"The user's email address (also their login identifier).","type":"string"},"username":{"description":"The user's display name (e.g. `Jane Doe`).","type":"string"}}},"url":{"description":"Target URL.","type":"string"},"links":{"description":"Navigable HATEOAS links to related resources. Each entry has a `name` (RFC-5988 relation), an `href` URL, and a `type` (`Api` or `App`).","type":"array","items":{"title":"Link","description":"A HATEOAS link to a related resource. Use these to navigate between resources without constructing URLs by hand.","type":"object","required":["name","href","type"],"properties":{"name":{"description":"Standard link relation name (RFC 5988) indicating this link's role. Common values include `self`, `edit`, `related`, `previous`, `next`.","type":"string"},"href":{"title":"Uri","description":"URL of the linked resource.","examples":["https://api.process.st/api/v1.1/resource/XXX"],"type":"string"},"rel":{"description":"Optional. The kind of resource this link points to (e.g. `Workflow`, `Task`, `Comment`).","type":"string","enum":["Approval Task","Approvals","Assignees","Comment","Data Set Records","Data Sets","Form Field Values","Subject Task","Task","Tasks","Users","Webhook","Workflow","Workflow Run"]},"type":{"description":"Whether this link targets an API endpoint or a Process Street app URL. `Api` — a callable API endpoint you can fetch directly. `App` — a browser-facing URL in the Process Street UI.","type":"string","enum":["Api","App"]}}}},"type":{"title":"WidgetType","description":"Widget kind discriminator.\n\n- `FormField` — collects user input (Text, Number, Date, etc. — see `fieldType`).\n- `Text` — rich text content displayed on the task.\n- `Image` — image content displayed on the task.\n- `File` — downloadable file attached to the task.\n- `Video` — video content (uploaded or linked from a hosting service).\n- `Embed` — embedded external content via URL.\n- `CrossLink` — link to another workflow or page.\n","type":"string","enum":["FormField","Text","Image","File","Video","Embed","CrossLink"]}}},{"title":"PublicApiFileWidget","type":"object","required":["hiddenByDefault","id","taskId","createdDate","createdBy","updatedDate","updatedBy","type"],"properties":{"hiddenByDefault":{"description":"When `true`, the widget is hidden by default; conditional logic rules can reveal it at runtime. Defaults to `false`.","type":"boolean"},"id":{"description":"The ID of the Widget","examples":["jaG4K_pc8rMBoX6ZlI9-QA"],"type":"string"},"taskId":{"description":"The ID of the Task","examples":["jaG4K_pc8rMBoX6ZlI9-QA"],"type":"string"},"createdDate":{"description":"When the resource was first created. ISO-8601 UTC.","type":"string","format":"date-time"},"createdBy":{"description":"User who created the resource.","examples":[{"id":"iUu2eOU2Q-sBoX6ZjZV9pQ","email":"jane.doe@example.com","username":"Jane Doe"}],"type":"object","required":["id","email","username"],"properties":{"id":{"title":"EntityID","description":"The resource's ID.","type":"string"},"email":{"description":"The user's email address (also their login identifier).","type":"string"},"username":{"description":"The user's display name (e.g. `Jane Doe`).","type":"string"}}},"updatedDate":{"description":"When the resource was last modified. ISO-8601 UTC.","type":"string","format":"date-time"},"updatedBy":{"description":"User who last modified the resource.","examples":[{"id":"iUu2eOU2Q-sBoX6ZjZV9pQ","email":"jane.doe@example.com","username":"Jane Doe"}],"type":"object","required":["id","email","username"],"properties":{"id":{"title":"EntityID","description":"The resource's ID.","type":"string"},"email":{"description":"The user's email address (also their login identifier).","type":"string"},"username":{"description":"The user's display name (e.g. `Jane Doe`).","type":"string"}}},"description":{"description":"Optional long-form description.","type":"string"},"file":{"title":"PublicApiWidgetFile","description":"Uploaded file reference. Use the upload endpoint to attach content.","type":"object","required":["id","name","mimeType","size"],"properties":{"id":{"title":"EntityID","description":"The resource's ID.","type":"string"},"name":{"description":"Display name.","type":"string"},"mimeType":{"description":"MIME type detected at upload time (e.g. `image/png`, `application/pdf`).","type":"string"},"size":{"description":"File size in bytes.","type":"integer","format":"int64"}}},"links":{"description":"Navigable HATEOAS links to related resources. Each entry has a `name` (RFC-5988 relation), an `href` URL, and a `type` (`Api` or `App`).","type":"array","items":{"title":"Link","description":"A HATEOAS link to a related resource. Use these to navigate between resources without constructing URLs by hand.","type":"object","required":["name","href","type"],"properties":{"name":{"description":"Standard link relation name (RFC 5988) indicating this link's role. Common values include `self`, `edit`, `related`, `previous`, `next`.","type":"string"},"href":{"title":"Uri","description":"URL of the linked resource.","examples":["https://api.process.st/api/v1.1/resource/XXX"],"type":"string"},"rel":{"description":"Optional. The kind of resource this link points to (e.g. `Workflow`, `Task`, `Comment`).","type":"string","enum":["Approval Task","Approvals","Assignees","Comment","Data Set Records","Data Sets","Form Field Values","Subject Task","Task","Tasks","Users","Webhook","Workflow","Workflow Run"]},"type":{"description":"Whether this link targets an API endpoint or a Process Street app URL. `Api` — a callable API endpoint you can fetch directly. `App` — a browser-facing URL in the Process Street UI.","type":"string","enum":["Api","App"]}}}},"type":{"title":"WidgetType","description":"Widget kind discriminator.\n\n- `FormField` — collects user input (Text, Number, Date, etc. — see `fieldType`).\n- `Text` — rich text content displayed on the task.\n- `Image` — image content displayed on the task.\n- `File` — downloadable file attached to the task.\n- `Video` — video content (uploaded or linked from a hosting service).\n- `Embed` — embedded external content via URL.\n- `CrossLink` — link to another workflow or page.\n","type":"string","enum":["FormField","Text","Image","File","Video","Embed","CrossLink"]}}},{"title":"PublicApiFormFieldWidget","type":"object","required":["hiddenByDefault","id","taskId","createdDate","createdBy","updatedDate","updatedBy","fieldType","key","required","config","type"],"properties":{"hiddenByDefault":{"description":"When `true`, the widget is hidden by default; conditional logic rules can reveal it at runtime. Defaults to `false`.","type":"boolean"},"id":{"description":"The ID of the Widget","examples":["hVDWDyLQh8UBoX6Zk313Dg"],"type":"string"},"taskId":{"description":"The ID of the Task","examples":["hVDWDyLQh8UBoX6Zk313Dg"],"type":"string"},"createdDate":{"description":"When the resource was first created. ISO-8601 UTC.","type":"string","format":"date-time"},"createdBy":{"description":"User who created the resource.","examples":[{"id":"iUu2eOU2Q-sBoX6ZjZV9pQ","email":"jane.doe@example.com","username":"Jane Doe"}],"type":"object","required":["id","email","username"],"properties":{"id":{"title":"EntityID","description":"The resource's ID.","type":"string"},"email":{"description":"The user's email address (also their login identifier).","type":"string"},"username":{"description":"The user's display name (e.g. `Jane Doe`).","type":"string"}}},"updatedDate":{"description":"When the resource was last modified. ISO-8601 UTC.","type":"string","format":"date-time"},"updatedBy":{"description":"User who last modified the resource.","examples":[{"id":"iUu2eOU2Q-sBoX6ZjZV9pQ","email":"jane.doe@example.com","username":"Jane Doe"}],"type":"object","required":["id","email","username"],"properties":{"id":{"title":"EntityID","description":"The resource's ID.","type":"string"},"email":{"description":"The user's email address (also their login identifier).","type":"string"},"username":{"description":"The user's display name (e.g. `Jane Doe`).","type":"string"}}},"fieldType":{"description":"Form-field subtype discriminator (only relevant when widget `type` is `FormField`).\n\n- `Text` — short text input (≤255 characters).\n- `Textarea` — long-form text.\n- `Email` — email address.\n- `Url` — website / URL.\n- `Number` — numeric input with optional unit and constraints.\n- `Date` — date or date+time picker.\n- `Select` — dropdown; user picks one option.\n- `MultiChoice` — checkboxes; user picks one or more options.\n- `MultiSelect` — Subtasks: a checklist of sub-items inside the task.\n- `Members` — assignee picker (selects organization users).\n- `File` — single file upload.\n- `MultiFile` — multi-file upload (in-app \"File Upload\").\n- `Document` — document approval field; links the task to a document review.\n- `Table` — rows × columns of cells; users fill cell values.\n- `SendRichEmail` — pre-written email embedded in the task; sent manually by the user or\n  automatically when the task is completed.\n- `Hidden` — only visible when editing the workflow; populated by integrations or default values.\n- `Snippet` — only visible when editing; passes static text or merge tags into automations.\n","type":"string","enum":["Date","Document","Email","File","Hidden","Members","MultiChoice","MultiFile","MultiSelect","Number","Select","SendRichEmail","Snippet","Table","Text","Textarea","Url"]},"key":{"description":"Unique key used to identify this row across imports — matches the data set column referenced by the webhook's `keyColumn`.","type":"string"},"label":{"description":"Display label shown to the end user.","type":"string"},"required":{"description":"When `true`, the form field must have a value before its task can be completed.","type":"boolean"},"config":{"title":"PublicApiFormFieldConfig","description":"Field-specific configuration. Shape depends on `fieldType`.","oneOf":[{"title":"PublicApiDateFormFieldConfig","type":"object","required":["fieldType"],"properties":{"defaultValue":{"description":"Default value pre-filled when a new workflow run is created.","type":"string"},"timeOption":{"description":"How time-of-day is handled on this Date field.\n\n- `Included` — the field always captures both date and time.\n- `Excluded` — date only; time is never captured.\n- `Optional` — the user picks whether to include a time.\n","type":"string","enum":["Included","Excluded","Optional"]},"fieldType":{"description":"Form-field subtype discriminator (only relevant when widget `type` is `FormField`).\n\n- `Text` — short text input (≤255 characters).\n- `Textarea` — long-form text.\n- `Email` — email address.\n- `Url` — website / URL.\n- `Number` — numeric input with optional unit and constraints.\n- `Date` — date or date+time picker.\n- `Select` — dropdown; user picks one option.\n- `MultiChoice` — checkboxes; user picks one or more options.\n- `MultiSelect` — Subtasks: a checklist of sub-items inside the task.\n- `Members` — assignee picker (selects organization users).\n- `File` — single file upload.\n- `MultiFile` — multi-file upload (in-app \"File Upload\").\n- `Document` — document approval field; links the task to a document review.\n- `Table` — rows × columns of cells; users fill cell values.\n- `SendRichEmail` — pre-written email embedded in the task; sent manually by the user or\n  automatically when the task is completed.\n- `Hidden` — only visible when editing the workflow; populated by integrations or default values.\n- `Snippet` — only visible when editing; passes static text or merge tags into automations.\n","type":"string","enum":["Date","Document","Email","File","Hidden","Members","MultiChoice","MultiFile","MultiSelect","Number","Select","SendRichEmail","Snippet","Table","Text","Textarea","Url"],"const":"Date"}}},{"title":"PublicApiDocumentFormFieldConfig","type":"object","required":["reviewRequest","fieldType"],"properties":{"reviewRequest":{"description":"When `true`, the email requires explicit user review/send rather than auto-send.","type":"boolean"},"defaultValue":{"description":"Default value pre-filled when a new workflow run is created.","type":"string"},"fieldType":{"description":"Form-field subtype discriminator (only relevant when widget `type` is `FormField`).\n\n- `Text` — short text input (≤255 characters).\n- `Textarea` — long-form text.\n- `Email` — email address.\n- `Url` — website / URL.\n- `Number` — numeric input with optional unit and constraints.\n- `Date` — date or date+time picker.\n- `Select` — dropdown; user picks one option.\n- `MultiChoice` — checkboxes; user picks one or more options.\n- `MultiSelect` — Subtasks: a checklist of sub-items inside the task.\n- `Members` — assignee picker (selects organization users).\n- `File` — single file upload.\n- `MultiFile` — multi-file upload (in-app \"File Upload\").\n- `Document` — document approval field; links the task to a document review.\n- `Table` — rows × columns of cells; users fill cell values.\n- `SendRichEmail` — pre-written email embedded in the task; sent manually by the user or\n  automatically when the task is completed.\n- `Hidden` — only visible when editing the workflow; populated by integrations or default values.\n- `Snippet` — only visible when editing; passes static text or merge tags into automations.\n","type":"string","enum":["Date","Document","Email","File","Hidden","Members","MultiChoice","MultiFile","MultiSelect","Number","Select","SendRichEmail","Snippet","Table","Text","Textarea","Url"],"const":"Document"}}},{"title":"PublicApiEmailFormFieldConfig","type":"object","required":["fieldType"],"properties":{"placeholder":{"description":"Placeholder hint shown in the input when no value has been entered.","type":"string"},"defaultValue":{"description":"Default value pre-filled when a new workflow run is created.","type":"string"},"fieldType":{"description":"Form-field subtype discriminator (only relevant when widget `type` is `FormField`).\n\n- `Text` — short text input (≤255 characters).\n- `Textarea` — long-form text.\n- `Email` — email address.\n- `Url` — website / URL.\n- `Number` — numeric input with optional unit and constraints.\n- `Date` — date or date+time picker.\n- `Select` — dropdown; user picks one option.\n- `MultiChoice` — checkboxes; user picks one or more options.\n- `MultiSelect` — Subtasks: a checklist of sub-items inside the task.\n- `Members` — assignee picker (selects organization users).\n- `File` — single file upload.\n- `MultiFile` — multi-file upload (in-app \"File Upload\").\n- `Document` — document approval field; links the task to a document review.\n- `Table` — rows × columns of cells; users fill cell values.\n- `SendRichEmail` — pre-written email embedded in the task; sent manually by the user or\n  automatically when the task is completed.\n- `Hidden` — only visible when editing the workflow; populated by integrations or default values.\n- `Snippet` — only visible when editing; passes static text or merge tags into automations.\n","type":"string","enum":["Date","Document","Email","File","Hidden","Members","MultiChoice","MultiFile","MultiSelect","Number","Select","SendRichEmail","Snippet","Table","Text","Textarea","Url"],"const":"Email"}}},{"title":"PublicApiFileFormFieldConfig","type":"object","required":["fieldType"],"properties":{"placeholder":{"description":"Placeholder hint shown in the input when no value has been entered.","type":"string"},"extractTextContent":{"description":"When `true`, server extracts text from uploaded documents for use in merge tags.","type":"boolean"},"fieldType":{"description":"Form-field subtype discriminator (only relevant when widget `type` is `FormField`).\n\n- `Text` — short text input (≤255 characters).\n- `Textarea` — long-form text.\n- `Email` — email address.\n- `Url` — website / URL.\n- `Number` — numeric input with optional unit and constraints.\n- `Date` — date or date+time picker.\n- `Select` — dropdown; user picks one option.\n- `MultiChoice` — checkboxes; user picks one or more options.\n- `MultiSelect` — Subtasks: a checklist of sub-items inside the task.\n- `Members` — assignee picker (selects organization users).\n- `File` — single file upload.\n- `MultiFile` — multi-file upload (in-app \"File Upload\").\n- `Document` — document approval field; links the task to a document review.\n- `Table` — rows × columns of cells; users fill cell values.\n- `SendRichEmail` — pre-written email embedded in the task; sent manually by the user or\n  automatically when the task is completed.\n- `Hidden` — only visible when editing the workflow; populated by integrations or default values.\n- `Snippet` — only visible when editing; passes static text or merge tags into automations.\n","type":"string","enum":["Date","Document","Email","File","Hidden","Members","MultiChoice","MultiFile","MultiSelect","Number","Select","SendRichEmail","Snippet","Table","Text","Textarea","Url"],"const":"File"}}},{"title":"PublicApiHiddenFormFieldConfig","type":"object","required":["fieldType"],"properties":{"defaultValue":{"description":"Default value pre-filled when a new workflow run is created.","type":"string"},"fieldType":{"description":"Form-field subtype discriminator (only relevant when widget `type` is `FormField`).\n\n- `Text` — short text input (≤255 characters).\n- `Textarea` — long-form text.\n- `Email` — email address.\n- `Url` — website / URL.\n- `Number` — numeric input with optional unit and constraints.\n- `Date` — date or date+time picker.\n- `Select` — dropdown; user picks one option.\n- `MultiChoice` — checkboxes; user picks one or more options.\n- `MultiSelect` — Subtasks: a checklist of sub-items inside the task.\n- `Members` — assignee picker (selects organization users).\n- `File` — single file upload.\n- `MultiFile` — multi-file upload (in-app \"File Upload\").\n- `Document` — document approval field; links the task to a document review.\n- `Table` — rows × columns of cells; users fill cell values.\n- `SendRichEmail` — pre-written email embedded in the task; sent manually by the user or\n  automatically when the task is completed.\n- `Hidden` — only visible when editing the workflow; populated by integrations or default values.\n- `Snippet` — only visible when editing; passes static text or merge tags into automations.\n","type":"string","enum":["Date","Document","Email","File","Hidden","Members","MultiChoice","MultiFile","MultiSelect","Number","Select","SendRichEmail","Snippet","Table","Text","Textarea","Url"],"const":"Hidden"}}},{"title":"PublicApiMembersFormFieldConfig","type":"object","required":["fieldType"],"properties":{"defaultValue":{"description":"Default value pre-filled when a new workflow run is created.","type":"string"},"groupId":{"title":"EntityID","description":"The ID of an organization group.","type":"string"},"fieldType":{"description":"Form-field subtype discriminator (only relevant when widget `type` is `FormField`).\n\n- `Text` — short text input (≤255 characters).\n- `Textarea` — long-form text.\n- `Email` — email address.\n- `Url` — website / URL.\n- `Number` — numeric input with optional unit and constraints.\n- `Date` — date or date+time picker.\n- `Select` — dropdown; user picks one option.\n- `MultiChoice` — checkboxes; user picks one or more options.\n- `MultiSelect` — Subtasks: a checklist of sub-items inside the task.\n- `Members` — assignee picker (selects organization users).\n- `File` — single file upload.\n- `MultiFile` — multi-file upload (in-app \"File Upload\").\n- `Document` — document approval field; links the task to a document review.\n- `Table` — rows × columns of cells; users fill cell values.\n- `SendRichEmail` — pre-written email embedded in the task; sent manually by the user or\n  automatically when the task is completed.\n- `Hidden` — only visible when editing the workflow; populated by integrations or default values.\n- `Snippet` — only visible when editing; passes static text or merge tags into automations.\n","type":"string","enum":["Date","Document","Email","File","Hidden","Members","MultiChoice","MultiFile","MultiSelect","Number","Select","SendRichEmail","Snippet","Table","Text","Textarea","Url"],"const":"Members"}}},{"title":"PublicApiMultiChoiceFormFieldConfig","type":"object","required":["fieldType"],"properties":{"items":{"description":"Available options for selection-style form fields.","type":"array","items":{"title":"PublicApiFormFieldItem","type":"object","required":["name"],"properties":{"id":{"title":"EntityID","description":"The resource's ID.","type":"string"},"name":{"description":"Display name.","type":"string"}}}},"fieldType":{"description":"Form-field subtype discriminator (only relevant when widget `type` is `FormField`).\n\n- `Text` — short text input (≤255 characters).\n- `Textarea` — long-form text.\n- `Email` — email address.\n- `Url` — website / URL.\n- `Number` — numeric input with optional unit and constraints.\n- `Date` — date or date+time picker.\n- `Select` — dropdown; user picks one option.\n- `MultiChoice` — checkboxes; user picks one or more options.\n- `MultiSelect` — Subtasks: a checklist of sub-items inside the task.\n- `Members` — assignee picker (selects organization users).\n- `File` — single file upload.\n- `MultiFile` — multi-file upload (in-app \"File Upload\").\n- `Document` — document approval field; links the task to a document review.\n- `Table` — rows × columns of cells; users fill cell values.\n- `SendRichEmail` — pre-written email embedded in the task; sent manually by the user or\n  automatically when the task is completed.\n- `Hidden` — only visible when editing the workflow; populated by integrations or default values.\n- `Snippet` — only visible when editing; passes static text or merge tags into automations.\n","type":"string","enum":["Date","Document","Email","File","Hidden","Members","MultiChoice","MultiFile","MultiSelect","Number","Select","SendRichEmail","Snippet","Table","Text","Textarea","Url"],"const":"MultiChoice"}}},{"title":"PublicApiMultiFileFormFieldConfig","type":"object","required":["fieldType"],"properties":{"placeholder":{"description":"Placeholder hint shown in the input when no value has been entered.","type":"string"},"extractTextContent":{"description":"When `true`, server extracts text from uploaded documents for use in merge tags.","type":"boolean"},"fieldType":{"description":"Form-field subtype discriminator (only relevant when widget `type` is `FormField`).\n\n- `Text` — short text input (≤255 characters).\n- `Textarea` — long-form text.\n- `Email` — email address.\n- `Url` — website / URL.\n- `Number` — numeric input with optional unit and constraints.\n- `Date` — date or date+time picker.\n- `Select` — dropdown; user picks one option.\n- `MultiChoice` — checkboxes; user picks one or more options.\n- `MultiSelect` — Subtasks: a checklist of sub-items inside the task.\n- `Members` — assignee picker (selects organization users).\n- `File` — single file upload.\n- `MultiFile` — multi-file upload (in-app \"File Upload\").\n- `Document` — document approval field; links the task to a document review.\n- `Table` — rows × columns of cells; users fill cell values.\n- `SendRichEmail` — pre-written email embedded in the task; sent manually by the user or\n  automatically when the task is completed.\n- `Hidden` — only visible when editing the workflow; populated by integrations or default values.\n- `Snippet` — only visible when editing; passes static text or merge tags into automations.\n","type":"string","enum":["Date","Document","Email","File","Hidden","Members","MultiChoice","MultiFile","MultiSelect","Number","Select","SendRichEmail","Snippet","Table","Text","Textarea","Url"],"const":"MultiFile"}}},{"title":"PublicApiMultiSelectFormFieldConfig","type":"object","required":["fieldType"],"properties":{"items":{"description":"Available options for selection-style form fields.","type":"array","items":{"title":"PublicApiFormFieldItem","type":"object","required":["name"],"properties":{"id":{"title":"EntityID","description":"The resource's ID.","type":"string"},"name":{"description":"Display name.","type":"string"}}}},"fieldType":{"description":"Form-field subtype discriminator (only relevant when widget `type` is `FormField`).\n\n- `Text` — short text input (≤255 characters).\n- `Textarea` — long-form text.\n- `Email` — email address.\n- `Url` — website / URL.\n- `Number` — numeric input with optional unit and constraints.\n- `Date` — date or date+time picker.\n- `Select` — dropdown; user picks one option.\n- `MultiChoice` — checkboxes; user picks one or more options.\n- `MultiSelect` — Subtasks: a checklist of sub-items inside the task.\n- `Members` — assignee picker (selects organization users).\n- `File` — single file upload.\n- `MultiFile` — multi-file upload (in-app \"File Upload\").\n- `Document` — document approval field; links the task to a document review.\n- `Table` — rows × columns of cells; users fill cell values.\n- `SendRichEmail` — pre-written email embedded in the task; sent manually by the user or\n  automatically when the task is completed.\n- `Hidden` — only visible when editing the workflow; populated by integrations or default values.\n- `Snippet` — only visible when editing; passes static text or merge tags into automations.\n","type":"string","enum":["Date","Document","Email","File","Hidden","Members","MultiChoice","MultiFile","MultiSelect","Number","Select","SendRichEmail","Snippet","Table","Text","Textarea","Url"],"const":"MultiSelect"}}},{"title":"PublicApiNumberFormFieldConfig","type":"object","required":["fieldType"],"properties":{"placeholder":{"description":"Placeholder hint shown in the input when no value has been entered.","type":"string"},"defaultValue":{"description":"Default value pre-filled when a new workflow run is created.","type":"string"},"unit":{"description":"Unit label rendered next to the numeric value (e.g. `kg`, `$`, `%`).","type":"string"},"unitLocation":{"description":"Where the unit symbol appears relative to the number.\n\n- `prefix` — before the number (e.g. `$100`).\n- `suffix` — after the number (e.g. `100 USD`).\n","type":"string","enum":["prefix","suffix"]},"fieldType":{"description":"Form-field subtype discriminator (only relevant when widget `type` is `FormField`).\n\n- `Text` — short text input (≤255 characters).\n- `Textarea` — long-form text.\n- `Email` — email address.\n- `Url` — website / URL.\n- `Number` — numeric input with optional unit and constraints.\n- `Date` — date or date+time picker.\n- `Select` — dropdown; user picks one option.\n- `MultiChoice` — checkboxes; user picks one or more options.\n- `MultiSelect` — Subtasks: a checklist of sub-items inside the task.\n- `Members` — assignee picker (selects organization users).\n- `File` — single file upload.\n- `MultiFile` — multi-file upload (in-app \"File Upload\").\n- `Document` — document approval field; links the task to a document review.\n- `Table` — rows × columns of cells; users fill cell values.\n- `SendRichEmail` — pre-written email embedded in the task; sent manually by the user or\n  automatically when the task is completed.\n- `Hidden` — only visible when editing the workflow; populated by integrations or default values.\n- `Snippet` — only visible when editing; passes static text or merge tags into automations.\n","type":"string","enum":["Date","Document","Email","File","Hidden","Members","MultiChoice","MultiFile","MultiSelect","Number","Select","SendRichEmail","Snippet","Table","Text","Textarea","Url"],"const":"Number"}}},{"title":"PublicApiSelectFormFieldConfig","type":"object","required":["fieldType"],"properties":{"items":{"description":"Available options for selection-style form fields.","type":"array","items":{"title":"PublicApiFormFieldItem","type":"object","required":["name"],"properties":{"id":{"title":"EntityID","description":"The resource's ID.","type":"string"},"name":{"description":"Display name.","type":"string"}}}},"defaultValue":{"description":"Default value pre-filled when a new workflow run is created.","type":"string"},"fieldType":{"description":"Form-field subtype discriminator (only relevant when widget `type` is `FormField`).\n\n- `Text` — short text input (≤255 characters).\n- `Textarea` — long-form text.\n- `Email` — email address.\n- `Url` — website / URL.\n- `Number` — numeric input with optional unit and constraints.\n- `Date` — date or date+time picker.\n- `Select` — dropdown; user picks one option.\n- `MultiChoice` — checkboxes; user picks one or more options.\n- `MultiSelect` — Subtasks: a checklist of sub-items inside the task.\n- `Members` — assignee picker (selects organization users).\n- `File` — single file upload.\n- `MultiFile` — multi-file upload (in-app \"File Upload\").\n- `Document` — document approval field; links the task to a document review.\n- `Table` — rows × columns of cells; users fill cell values.\n- `SendRichEmail` — pre-written email embedded in the task; sent manually by the user or\n  automatically when the task is completed.\n- `Hidden` — only visible when editing the workflow; populated by integrations or default values.\n- `Snippet` — only visible when editing; passes static text or merge tags into automations.\n","type":"string","enum":["Date","Document","Email","File","Hidden","Members","MultiChoice","MultiFile","MultiSelect","Number","Select","SendRichEmail","Snippet","Table","Text","Textarea","Url"],"const":"Select"}}},{"title":"PublicApiSendRichEmailFormFieldConfig","type":"object","required":["bodyEditor","fieldType"],"properties":{"to":{"description":"Default recipient list (To). Comma-separated email addresses or merge tags.","type":"array","items":{"type":"string"}},"cc":{"description":"Default CC list. Comma-separated email addresses or merge tags.","type":"array","items":{"type":"string"}},"bcc":{"description":"Default BCC list. Comma-separated email addresses or merge tags.","type":"array","items":{"type":"string"}},"replyTo":{"description":"Default Reply-To address. An email address or merge tag.","type":"array","items":{"type":"string"}},"subject":{"description":"Default email subject. May contain merge tags.","type":"string"},"body":{"description":"Default email body. May contain merge tags.","type":"string"},"bodyEditor":{"description":"Editor used to author the email body.\n\n- `RichText` — rich-text editor with formatting.\n- `HTML` — raw HTML editor.\n- `PlainText` — plain text editor.\n","type":"string","enum":["RichText","HTML","PlainText"]},"editAllowed":{"description":"When `true`, users running the workflow can edit the email before sending.","type":"boolean"},"fieldType":{"description":"Form-field subtype discriminator (only relevant when widget `type` is `FormField`).\n\n- `Text` — short text input (≤255 characters).\n- `Textarea` — long-form text.\n- `Email` — email address.\n- `Url` — website / URL.\n- `Number` — numeric input with optional unit and constraints.\n- `Date` — date or date+time picker.\n- `Select` — dropdown; user picks one option.\n- `MultiChoice` — checkboxes; user picks one or more options.\n- `MultiSelect` — Subtasks: a checklist of sub-items inside the task.\n- `Members` — assignee picker (selects organization users).\n- `File` — single file upload.\n- `MultiFile` — multi-file upload (in-app \"File Upload\").\n- `Document` — document approval field; links the task to a document review.\n- `Table` — rows × columns of cells; users fill cell values.\n- `SendRichEmail` — pre-written email embedded in the task; sent manually by the user or\n  automatically when the task is completed.\n- `Hidden` — only visible when editing the workflow; populated by integrations or default values.\n- `Snippet` — only visible when editing; passes static text or merge tags into automations.\n","type":"string","enum":["Date","Document","Email","File","Hidden","Members","MultiChoice","MultiFile","MultiSelect","Number","Select","SendRichEmail","Snippet","Table","Text","Textarea","Url"],"const":"SendRichEmail"}}},{"title":"PublicApiSnippetFormFieldConfig","type":"object","required":["fieldType"],"properties":{"value":{"description":"The option's stored value.","type":"string"},"fieldType":{"description":"Form-field subtype discriminator (only relevant when widget `type` is `FormField`).\n\n- `Text` — short text input (≤255 characters).\n- `Textarea` — long-form text.\n- `Email` — email address.\n- `Url` — website / URL.\n- `Number` — numeric input with optional unit and constraints.\n- `Date` — date or date+time picker.\n- `Select` — dropdown; user picks one option.\n- `MultiChoice` — checkboxes; user picks one or more options.\n- `MultiSelect` — Subtasks: a checklist of sub-items inside the task.\n- `Members` — assignee picker (selects organization users).\n- `File` — single file upload.\n- `MultiFile` — multi-file upload (in-app \"File Upload\").\n- `Document` — document approval field; links the task to a document review.\n- `Table` — rows × columns of cells; users fill cell values.\n- `SendRichEmail` — pre-written email embedded in the task; sent manually by the user or\n  automatically when the task is completed.\n- `Hidden` — only visible when editing the workflow; populated by integrations or default values.\n- `Snippet` — only visible when editing; passes static text or merge tags into automations.\n","type":"string","enum":["Date","Document","Email","File","Hidden","Members","MultiChoice","MultiFile","MultiSelect","Number","Select","SendRichEmail","Snippet","Table","Text","Textarea","Url"],"const":"Snippet"}}},{"title":"PublicApiTableFormFieldConfig","type":"object","required":["fieldType"],"properties":{"columnDefs":{"description":"Data set column definitions (name + type per column).","type":"array","items":{"title":"PublicApiTableFormFieldColumn","type":"object","required":["id","name","columnType"],"properties":{"id":{"title":"EntityID","description":"The resource's ID.","type":"string"},"name":{"description":"Display name.","type":"string"},"columnType":{"description":"Data type a Table column accepts.\n\n- `Text` — free-form short text.\n","type":"string","enum":["Text"]}}}},"defaultValue":{"description":"Default value pre-filled when a new workflow run is created.","type":"string"},"fieldType":{"description":"Form-field subtype discriminator (only relevant when widget `type` is `FormField`).\n\n- `Text` — short text input (≤255 characters).\n- `Textarea` — long-form text.\n- `Email` — email address.\n- `Url` — website / URL.\n- `Number` — numeric input with optional unit and constraints.\n- `Date` — date or date+time picker.\n- `Select` — dropdown; user picks one option.\n- `MultiChoice` — checkboxes; user picks one or more options.\n- `MultiSelect` — Subtasks: a checklist of sub-items inside the task.\n- `Members` — assignee picker (selects organization users).\n- `File` — single file upload.\n- `MultiFile` — multi-file upload (in-app \"File Upload\").\n- `Document` — document approval field; links the task to a document review.\n- `Table` — rows × columns of cells; users fill cell values.\n- `SendRichEmail` — pre-written email embedded in the task; sent manually by the user or\n  automatically when the task is completed.\n- `Hidden` — only visible when editing the workflow; populated by integrations or default values.\n- `Snippet` — only visible when editing; passes static text or merge tags into automations.\n","type":"string","enum":["Date","Document","Email","File","Hidden","Members","MultiChoice","MultiFile","MultiSelect","Number","Select","SendRichEmail","Snippet","Table","Text","Textarea","Url"],"const":"Table"}}},{"title":"PublicApiTextFormFieldConfig","type":"object","required":["fieldType"],"properties":{"placeholder":{"description":"Placeholder hint shown in the input when no value has been entered.","type":"string"},"defaultValue":{"description":"Default value pre-filled when a new workflow run is created.","type":"string"},"fieldType":{"description":"Form-field subtype discriminator (only relevant when widget `type` is `FormField`).\n\n- `Text` — short text input (≤255 characters).\n- `Textarea` — long-form text.\n- `Email` — email address.\n- `Url` — website / URL.\n- `Number` — numeric input with optional unit and constraints.\n- `Date` — date or date+time picker.\n- `Select` — dropdown; user picks one option.\n- `MultiChoice` — checkboxes; user picks one or more options.\n- `MultiSelect` — Subtasks: a checklist of sub-items inside the task.\n- `Members` — assignee picker (selects organization users).\n- `File` — single file upload.\n- `MultiFile` — multi-file upload (in-app \"File Upload\").\n- `Document` — document approval field; links the task to a document review.\n- `Table` — rows × columns of cells; users fill cell values.\n- `SendRichEmail` — pre-written email embedded in the task; sent manually by the user or\n  automatically when the task is completed.\n- `Hidden` — only visible when editing the workflow; populated by integrations or default values.\n- `Snippet` — only visible when editing; passes static text or merge tags into automations.\n","type":"string","enum":["Date","Document","Email","File","Hidden","Members","MultiChoice","MultiFile","MultiSelect","Number","Select","SendRichEmail","Snippet","Table","Text","Textarea","Url"],"const":"Text"}}},{"title":"PublicApiTextareaFormFieldConfig","type":"object","required":["fieldType"],"properties":{"placeholder":{"description":"Placeholder hint shown in the input when no value has been entered.","type":"string"},"defaultValue":{"description":"Default value pre-filled when a new workflow run is created.","type":"string"},"format":{"description":"Editor style for this Textarea field.\n\n- `PlainText` — plain text.\n- `RichText` — rich-text editor with formatting (bold, lists, links, etc.).\n","type":"string","enum":["PlainText","RichText"]},"fieldType":{"description":"Form-field subtype discriminator (only relevant when widget `type` is `FormField`).\n\n- `Text` — short text input (≤255 characters).\n- `Textarea` — long-form text.\n- `Email` — email address.\n- `Url` — website / URL.\n- `Number` — numeric input with optional unit and constraints.\n- `Date` — date or date+time picker.\n- `Select` — dropdown; user picks one option.\n- `MultiChoice` — checkboxes; user picks one or more options.\n- `MultiSelect` — Subtasks: a checklist of sub-items inside the task.\n- `Members` — assignee picker (selects organization users).\n- `File` — single file upload.\n- `MultiFile` — multi-file upload (in-app \"File Upload\").\n- `Document` — document approval field; links the task to a document review.\n- `Table` — rows × columns of cells; users fill cell values.\n- `SendRichEmail` — pre-written email embedded in the task; sent manually by the user or\n  automatically when the task is completed.\n- `Hidden` — only visible when editing the workflow; populated by integrations or default values.\n- `Snippet` — only visible when editing; passes static text or merge tags into automations.\n","type":"string","enum":["Date","Document","Email","File","Hidden","Members","MultiChoice","MultiFile","MultiSelect","Number","Select","SendRichEmail","Snippet","Table","Text","Textarea","Url"],"const":"Textarea"}}},{"title":"PublicApiUrlFormFieldConfig","type":"object","required":["fieldType"],"properties":{"defaultValue":{"description":"Default value pre-filled when a new workflow run is created.","type":"string"},"fieldType":{"description":"Form-field subtype discriminator (only relevant when widget `type` is `FormField`).\n\n- `Text` — short text input (≤255 characters).\n- `Textarea` — long-form text.\n- `Email` — email address.\n- `Url` — website / URL.\n- `Number` — numeric input with optional unit and constraints.\n- `Date` — date or date+time picker.\n- `Select` — dropdown; user picks one option.\n- `MultiChoice` — checkboxes; user picks one or more options.\n- `MultiSelect` — Subtasks: a checklist of sub-items inside the task.\n- `Members` — assignee picker (selects organization users).\n- `File` — single file upload.\n- `MultiFile` — multi-file upload (in-app \"File Upload\").\n- `Document` — document approval field; links the task to a document review.\n- `Table` — rows × columns of cells; users fill cell values.\n- `SendRichEmail` — pre-written email embedded in the task; sent manually by the user or\n  automatically when the task is completed.\n- `Hidden` — only visible when editing the workflow; populated by integrations or default values.\n- `Snippet` — only visible when editing; passes static text or merge tags into automations.\n","type":"string","enum":["Date","Document","Email","File","Hidden","Members","MultiChoice","MultiFile","MultiSelect","Number","Select","SendRichEmail","Snippet","Table","Text","Textarea","Url"],"const":"Url"}}}],"required":["fieldType"],"discriminator":{"propertyName":"fieldType","mapping":{"Date":"#/components/schemas/PublicApiDateFormFieldConfig","Document":"#/components/schemas/PublicApiDocumentFormFieldConfig","Email":"#/components/schemas/PublicApiEmailFormFieldConfig","File":"#/components/schemas/PublicApiFileFormFieldConfig","Hidden":"#/components/schemas/PublicApiHiddenFormFieldConfig","Members":"#/components/schemas/PublicApiMembersFormFieldConfig","MultiChoice":"#/components/schemas/PublicApiMultiChoiceFormFieldConfig","MultiFile":"#/components/schemas/PublicApiMultiFileFormFieldConfig","MultiSelect":"#/components/schemas/PublicApiMultiSelectFormFieldConfig","Number":"#/components/schemas/PublicApiNumberFormFieldConfig","Select":"#/components/schemas/PublicApiSelectFormFieldConfig","SendRichEmail":"#/components/schemas/PublicApiSendRichEmailFormFieldConfig","Snippet":"#/components/schemas/PublicApiSnippetFormFieldConfig","Table":"#/components/schemas/PublicApiTableFormFieldConfig","Text":"#/components/schemas/PublicApiTextFormFieldConfig","Textarea":"#/components/schemas/PublicApiTextareaFormFieldConfig","Url":"#/components/schemas/PublicApiUrlFormFieldConfig"}}},"constraints":{"title":"PublicApiFormFieldConstraints","description":"Field-specific validation constraints. Shape depends on `fieldType`.","oneOf":[{"title":"PublicApiDateFormFieldConstraints","type":"object","required":["fieldType"],"properties":{"afterDate":{"description":"Earliest accepted date (inclusive). Pair with `afterDateSourceType`.","type":"string","format":"date-time"},"beforeDate":{"description":"Latest accepted date (inclusive). Pair with `beforeDateSourceType`.","type":"string","format":"date-time"},"afterDateFormFieldWidgetGroupId":{"title":"EntityID","description":"When `afterDateSourceType=FormField`, the ID of the Date form field whose value is the lower bound.","type":"string"},"beforeDateFormFieldWidgetGroupId":{"title":"EntityID","description":"When `beforeDateSourceType=FormField`, the ID of the Date form field whose value is the upper bound.","type":"string"},"afterDateSourceType":{"description":"How the before/after constraint date is derived.\n\n- `SpecificDate` — an absolute date supplied as `afterDate` / `beforeDate`.\n- `FormFieldValue` — derived from another Date form field (`afterDateField` / `beforeDateField`).\n- `TaskDueDate` — relative to the containing task's due date.\n- `ChecklistStartDate` / `ChecklistDueDate` — relative to the workflow run's start or due date.\n","type":"string","enum":["SpecificDate","FormFieldValue","TaskDueDate","ChecklistStartDate","ChecklistDueDate"]},"beforeDateSourceType":{"description":"How the before/after constraint date is derived.\n\n- `SpecificDate` — an absolute date supplied as `afterDate` / `beforeDate`.\n- `FormFieldValue` — derived from another Date form field (`afterDateField` / `beforeDateField`).\n- `TaskDueDate` — relative to the containing task's due date.\n- `ChecklistStartDate` / `ChecklistDueDate` — relative to the workflow run's start or due date.\n","type":"string","enum":["SpecificDate","FormFieldValue","TaskDueDate","ChecklistStartDate","ChecklistDueDate"]},"afterDateOffset":{"description":"ISO 8601 duration (e.g. `P7D`, `P1Y2M`).","type":"string"},"beforeDateOffset":{"description":"ISO 8601 duration (e.g. `P7D`, `P1Y2M`).","type":"string"},"fieldType":{"description":"Form-field subtype discriminator (only relevant when widget `type` is `FormField`).\n\n- `Text` — short text input (≤255 characters).\n- `Textarea` — long-form text.\n- `Email` — email address.\n- `Url` — website / URL.\n- `Number` — numeric input with optional unit and constraints.\n- `Date` — date or date+time picker.\n- `Select` — dropdown; user picks one option.\n- `MultiChoice` — checkboxes; user picks one or more options.\n- `MultiSelect` — Subtasks: a checklist of sub-items inside the task.\n- `Members` — assignee picker (selects organization users).\n- `File` — single file upload.\n- `MultiFile` — multi-file upload (in-app \"File Upload\").\n- `Document` — document approval field; links the task to a document review.\n- `Table` — rows × columns of cells; users fill cell values.\n- `SendRichEmail` — pre-written email embedded in the task; sent manually by the user or\n  automatically when the task is completed.\n- `Hidden` — only visible when editing the workflow; populated by integrations or default values.\n- `Snippet` — only visible when editing; passes static text or merge tags into automations.\n","type":"string","enum":["Date","Document","Email","File","Hidden","Members","MultiChoice","MultiFile","MultiSelect","Number","Select","SendRichEmail","Snippet","Table","Text","Textarea","Url"],"const":"Date"}}},{"title":"PublicApiEmailFormFieldConstraints","type":"object","required":["fieldType"],"properties":{"domains":{"description":"Allowed (or blocked, depending on `restriction`) email domains for this field.","type":"array","items":{"type":"string"}},"restriction":{"description":"How the `domains` list filters allowed email addresses.\n\n- `Allow` — only emails whose domain is in the list are accepted.\n- `Block` — emails whose domain is in the list are rejected; all others accepted.\n","type":"string","enum":["Allow","Block"]},"fieldType":{"description":"Form-field subtype discriminator (only relevant when widget `type` is `FormField`).\n\n- `Text` — short text input (≤255 characters).\n- `Textarea` — long-form text.\n- `Email` — email address.\n- `Url` — website / URL.\n- `Number` — numeric input with optional unit and constraints.\n- `Date` — date or date+time picker.\n- `Select` — dropdown; user picks one option.\n- `MultiChoice` — checkboxes; user picks one or more options.\n- `MultiSelect` — Subtasks: a checklist of sub-items inside the task.\n- `Members` — assignee picker (selects organization users).\n- `File` — single file upload.\n- `MultiFile` — multi-file upload (in-app \"File Upload\").\n- `Document` — document approval field; links the task to a document review.\n- `Table` — rows × columns of cells; users fill cell values.\n- `SendRichEmail` — pre-written email embedded in the task; sent manually by the user or\n  automatically when the task is completed.\n- `Hidden` — only visible when editing the workflow; populated by integrations or default values.\n- `Snippet` — only visible when editing; passes static text or merge tags into automations.\n","type":"string","enum":["Date","Document","Email","File","Hidden","Members","MultiChoice","MultiFile","MultiSelect","Number","Select","SendRichEmail","Snippet","Table","Text","Textarea","Url"],"const":"Email"}}},{"title":"PublicApiFileFormFieldConstraints","type":"object","required":["fieldType"],"properties":{"extensions":{"description":"Allowed file extensions, including the leading dot (e.g. `.pdf`, `.docx`).","type":"array","items":{"type":"string"}},"fieldType":{"description":"Form-field subtype discriminator (only relevant when widget `type` is `FormField`).\n\n- `Text` — short text input (≤255 characters).\n- `Textarea` — long-form text.\n- `Email` — email address.\n- `Url` — website / URL.\n- `Number` — numeric input with optional unit and constraints.\n- `Date` — date or date+time picker.\n- `Select` — dropdown; user picks one option.\n- `MultiChoice` — checkboxes; user picks one or more options.\n- `MultiSelect` — Subtasks: a checklist of sub-items inside the task.\n- `Members` — assignee picker (selects organization users).\n- `File` — single file upload.\n- `MultiFile` — multi-file upload (in-app \"File Upload\").\n- `Document` — document approval field; links the task to a document review.\n- `Table` — rows × columns of cells; users fill cell values.\n- `SendRichEmail` — pre-written email embedded in the task; sent manually by the user or\n  automatically when the task is completed.\n- `Hidden` — only visible when editing the workflow; populated by integrations or default values.\n- `Snippet` — only visible when editing; passes static text or merge tags into automations.\n","type":"string","enum":["Date","Document","Email","File","Hidden","Members","MultiChoice","MultiFile","MultiSelect","Number","Select","SendRichEmail","Snippet","Table","Text","Textarea","Url"],"const":"File"}}},{"title":"PublicApiMultiFileFormFieldConstraints","type":"object","required":["fieldType"],"properties":{"extensions":{"description":"Allowed file extensions, including the leading dot (e.g. `.pdf`, `.docx`).","type":"array","items":{"type":"string"}},"mode":{"description":"Whether the field accepts a single file or multiple files.\n\n- `Single` — only one file may be uploaded.\n- `Multiple` — multiple files may be uploaded.\n","type":"string","enum":["Multiple","Single"]},"fieldType":{"description":"Form-field subtype discriminator (only relevant when widget `type` is `FormField`).\n\n- `Text` — short text input (≤255 characters).\n- `Textarea` — long-form text.\n- `Email` — email address.\n- `Url` — website / URL.\n- `Number` — numeric input with optional unit and constraints.\n- `Date` — date or date+time picker.\n- `Select` — dropdown; user picks one option.\n- `MultiChoice` — checkboxes; user picks one or more options.\n- `MultiSelect` — Subtasks: a checklist of sub-items inside the task.\n- `Members` — assignee picker (selects organization users).\n- `File` — single file upload.\n- `MultiFile` — multi-file upload (in-app \"File Upload\").\n- `Document` — document approval field; links the task to a document review.\n- `Table` — rows × columns of cells; users fill cell values.\n- `SendRichEmail` — pre-written email embedded in the task; sent manually by the user or\n  automatically when the task is completed.\n- `Hidden` — only visible when editing the workflow; populated by integrations or default values.\n- `Snippet` — only visible when editing; passes static text or merge tags into automations.\n","type":"string","enum":["Date","Document","Email","File","Hidden","Members","MultiChoice","MultiFile","MultiSelect","Number","Select","SendRichEmail","Snippet","Table","Text","Textarea","Url"],"const":"MultiFile"}}},{"title":"PublicApiNumberFormFieldConstraints","type":"object","required":["fieldType"],"properties":{"minDigits":{"description":"Minimum number of digits.","type":"integer","format":"int32"},"maxDigits":{"description":"Maximum number of digits.","type":"integer","format":"int32"},"minValue":{"description":"Minimum numeric value.","type":"integer","format":"int32"},"maxValue":{"description":"Maximum numeric value.","type":"integer","format":"int32"},"decimalPlaces":{"description":"Number of decimal places to accept (0 means integers only).","type":"integer","format":"int32"},"allowNegative":{"description":"When `true`, negative numbers are accepted.","type":"boolean"},"fieldType":{"description":"Form-field subtype discriminator (only relevant when widget `type` is `FormField`).\n\n- `Text` — short text input (≤255 characters).\n- `Textarea` — long-form text.\n- `Email` — email address.\n- `Url` — website / URL.\n- `Number` — numeric input with optional unit and constraints.\n- `Date` — date or date+time picker.\n- `Select` — dropdown; user picks one option.\n- `MultiChoice` — checkboxes; user picks one or more options.\n- `MultiSelect` — Subtasks: a checklist of sub-items inside the task.\n- `Members` — assignee picker (selects organization users).\n- `File` — single file upload.\n- `MultiFile` — multi-file upload (in-app \"File Upload\").\n- `Document` — document approval field; links the task to a document review.\n- `Table` — rows × columns of cells; users fill cell values.\n- `SendRichEmail` — pre-written email embedded in the task; sent manually by the user or\n  automatically when the task is completed.\n- `Hidden` — only visible when editing the workflow; populated by integrations or default values.\n- `Snippet` — only visible when editing; passes static text or merge tags into automations.\n","type":"string","enum":["Date","Document","Email","File","Hidden","Members","MultiChoice","MultiFile","MultiSelect","Number","Select","SendRichEmail","Snippet","Table","Text","Textarea","Url"],"const":"Number"}}},{"title":"PublicApiTextFormFieldConstraints","type":"object","required":["fieldType"],"properties":{"min":{"description":"Inclusive lower bound.","type":"integer","format":"int32"},"max":{"description":"Inclusive upper bound.","type":"integer","format":"int32"},"fieldType":{"description":"Form-field subtype discriminator (only relevant when widget `type` is `FormField`).\n\n- `Text` — short text input (≤255 characters).\n- `Textarea` — long-form text.\n- `Email` — email address.\n- `Url` — website / URL.\n- `Number` — numeric input with optional unit and constraints.\n- `Date` — date or date+time picker.\n- `Select` — dropdown; user picks one option.\n- `MultiChoice` — checkboxes; user picks one or more options.\n- `MultiSelect` — Subtasks: a checklist of sub-items inside the task.\n- `Members` — assignee picker (selects organization users).\n- `File` — single file upload.\n- `MultiFile` — multi-file upload (in-app \"File Upload\").\n- `Document` — document approval field; links the task to a document review.\n- `Table` — rows × columns of cells; users fill cell values.\n- `SendRichEmail` — pre-written email embedded in the task; sent manually by the user or\n  automatically when the task is completed.\n- `Hidden` — only visible when editing the workflow; populated by integrations or default values.\n- `Snippet` — only visible when editing; passes static text or merge tags into automations.\n","type":"string","enum":["Date","Document","Email","File","Hidden","Members","MultiChoice","MultiFile","MultiSelect","Number","Select","SendRichEmail","Snippet","Table","Text","Textarea","Url"],"const":"Text"}}},{"title":"PublicApiTextareaFormFieldConstraints","type":"object","required":["fieldType"],"properties":{"min":{"description":"Inclusive lower bound.","type":"integer","format":"int32"},"max":{"description":"Inclusive upper bound.","type":"integer","format":"int32"},"fieldType":{"description":"Form-field subtype discriminator (only relevant when widget `type` is `FormField`).\n\n- `Text` — short text input (≤255 characters).\n- `Textarea` — long-form text.\n- `Email` — email address.\n- `Url` — website / URL.\n- `Number` — numeric input with optional unit and constraints.\n- `Date` — date or date+time picker.\n- `Select` — dropdown; user picks one option.\n- `MultiChoice` — checkboxes; user picks one or more options.\n- `MultiSelect` — Subtasks: a checklist of sub-items inside the task.\n- `Members` — assignee picker (selects organization users).\n- `File` — single file upload.\n- `MultiFile` — multi-file upload (in-app \"File Upload\").\n- `Document` — document approval field; links the task to a document review.\n- `Table` — rows × columns of cells; users fill cell values.\n- `SendRichEmail` — pre-written email embedded in the task; sent manually by the user or\n  automatically when the task is completed.\n- `Hidden` — only visible when editing the workflow; populated by integrations or default values.\n- `Snippet` — only visible when editing; passes static text or merge tags into automations.\n","type":"string","enum":["Date","Document","Email","File","Hidden","Members","MultiChoice","MultiFile","MultiSelect","Number","Select","SendRichEmail","Snippet","Table","Text","Textarea","Url"],"const":"Textarea"}}}],"required":["fieldType"],"discriminator":{"propertyName":"fieldType","mapping":{"Date":"#/components/schemas/PublicApiDateFormFieldConstraints","Email":"#/components/schemas/PublicApiEmailFormFieldConstraints","File":"#/components/schemas/PublicApiFileFormFieldConstraints","MultiFile":"#/components/schemas/PublicApiMultiFileFormFieldConstraints","Number":"#/components/schemas/PublicApiNumberFormFieldConstraints","Text":"#/components/schemas/PublicApiTextFormFieldConstraints","Textarea":"#/components/schemas/PublicApiTextareaFormFieldConstraints"}}},"links":{"description":"Navigable HATEOAS links to related resources. Each entry has a `name` (RFC-5988 relation), an `href` URL, and a `type` (`Api` or `App`).","type":"array","items":{"title":"Link","description":"A HATEOAS link to a related resource. Use these to navigate between resources without constructing URLs by hand.","type":"object","required":["name","href","type"],"properties":{"name":{"description":"Standard link relation name (RFC 5988) indicating this link's role. Common values include `self`, `edit`, `related`, `previous`, `next`.","type":"string"},"href":{"title":"Uri","description":"URL of the linked resource.","examples":["https://api.process.st/api/v1.1/resource/XXX"],"type":"string"},"rel":{"description":"Optional. The kind of resource this link points to (e.g. `Workflow`, `Task`, `Comment`).","type":"string","enum":["Approval Task","Approvals","Assignees","Comment","Data Set Records","Data Sets","Form Field Values","Subject Task","Task","Tasks","Users","Webhook","Workflow","Workflow Run"]},"type":{"description":"Whether this link targets an API endpoint or a Process Street app URL. `Api` — a callable API endpoint you can fetch directly. `App` — a browser-facing URL in the Process Street UI.","type":"string","enum":["Api","App"]}}}},"type":{"title":"WidgetType","description":"Widget kind discriminator.\n\n- `FormField` — collects user input (Text, Number, Date, etc. — see `fieldType`).\n- `Text` — rich text content displayed on the task.\n- `Image` — image content displayed on the task.\n- `File` — downloadable file attached to the task.\n- `Video` — video content (uploaded or linked from a hosting service).\n- `Embed` — embedded external content via URL.\n- `CrossLink` — link to another workflow or page.\n","type":"string","enum":["FormField","Text","Image","File","Video","Embed","CrossLink"]}}},{"title":"PublicApiImageWidget","type":"object","required":["hiddenByDefault","id","taskId","createdDate","createdBy","updatedDate","updatedBy","type"],"properties":{"hiddenByDefault":{"description":"When `true`, the widget is hidden by default; conditional logic rules can reveal it at runtime. Defaults to `false`.","type":"boolean"},"id":{"description":"The ID of the Widget","examples":["s_ab8fn58g4BoX6ZlHp7xQ"],"type":"string"},"taskId":{"description":"The ID of the Task","examples":["s_ab8fn58g4BoX6ZlHp7xQ"],"type":"string"},"createdDate":{"description":"When the resource was first created. ISO-8601 UTC.","type":"string","format":"date-time"},"createdBy":{"description":"User who created the resource.","examples":[{"id":"iUu2eOU2Q-sBoX6ZjZV9pQ","email":"jane.doe@example.com","username":"Jane Doe"}],"type":"object","required":["id","email","username"],"properties":{"id":{"title":"EntityID","description":"The resource's ID.","type":"string"},"email":{"description":"The user's email address (also their login identifier).","type":"string"},"username":{"description":"The user's display name (e.g. `Jane Doe`).","type":"string"}}},"updatedDate":{"description":"When the resource was last modified. ISO-8601 UTC.","type":"string","format":"date-time"},"updatedBy":{"description":"User who last modified the resource.","examples":[{"id":"iUu2eOU2Q-sBoX6ZjZV9pQ","email":"jane.doe@example.com","username":"Jane Doe"}],"type":"object","required":["id","email","username"],"properties":{"id":{"title":"EntityID","description":"The resource's ID.","type":"string"},"email":{"description":"The user's email address (also their login identifier).","type":"string"},"username":{"description":"The user's display name (e.g. `Jane Doe`).","type":"string"}}},"caption":{"description":"Caption text rendered with the image.","type":"string"},"file":{"title":"PublicApiWidgetFile","description":"Uploaded file reference. Use the upload endpoint to attach content.","type":"object","required":["id","name","mimeType","size"],"properties":{"id":{"title":"EntityID","description":"The resource's ID.","type":"string"},"name":{"description":"Display name.","type":"string"},"mimeType":{"description":"MIME type detected at upload time (e.g. `image/png`, `application/pdf`).","type":"string"},"size":{"description":"File size in bytes.","type":"integer","format":"int64"}}},"links":{"description":"Navigable HATEOAS links to related resources. Each entry has a `name` (RFC-5988 relation), an `href` URL, and a `type` (`Api` or `App`).","type":"array","items":{"title":"Link","description":"A HATEOAS link to a related resource. Use these to navigate between resources without constructing URLs by hand.","type":"object","required":["name","href","type"],"properties":{"name":{"description":"Standard link relation name (RFC 5988) indicating this link's role. Common values include `self`, `edit`, `related`, `previous`, `next`.","type":"string"},"href":{"title":"Uri","description":"URL of the linked resource.","examples":["https://api.process.st/api/v1.1/resource/XXX"],"type":"string"},"rel":{"description":"Optional. The kind of resource this link points to (e.g. `Workflow`, `Task`, `Comment`).","type":"string","enum":["Approval Task","Approvals","Assignees","Comment","Data Set Records","Data Sets","Form Field Values","Subject Task","Task","Tasks","Users","Webhook","Workflow","Workflow Run"]},"type":{"description":"Whether this link targets an API endpoint or a Process Street app URL. `Api` — a callable API endpoint you can fetch directly. `App` — a browser-facing URL in the Process Street UI.","type":"string","enum":["Api","App"]}}}},"type":{"title":"WidgetType","description":"Widget kind discriminator.\n\n- `FormField` — collects user input (Text, Number, Date, etc. — see `fieldType`).\n- `Text` — rich text content displayed on the task.\n- `Image` — image content displayed on the task.\n- `File` — downloadable file attached to the task.\n- `Video` — video content (uploaded or linked from a hosting service).\n- `Embed` — embedded external content via URL.\n- `CrossLink` — link to another workflow or page.\n","type":"string","enum":["FormField","Text","Image","File","Video","Embed","CrossLink"]}}},{"title":"PublicApiTextWidget","type":"object","required":["hiddenByDefault","id","taskId","createdDate","createdBy","updatedDate","updatedBy","type"],"properties":{"hiddenByDefault":{"description":"When `true`, the widget is hidden by default; conditional logic rules can reveal it at runtime. Defaults to `false`.","type":"boolean"},"id":{"description":"The ID of the Widget","examples":["vl-PQ1FTbSsBoX6ZlG54Hg"],"type":"string"},"taskId":{"description":"The ID of the Task","examples":["vl-PQ1FTbSsBoX6ZlG54Hg"],"type":"string"},"createdDate":{"description":"When the resource was first created. ISO-8601 UTC.","type":"string","format":"date-time"},"createdBy":{"description":"User who created the resource.","examples":[{"id":"iUu2eOU2Q-sBoX6ZjZV9pQ","email":"jane.doe@example.com","username":"Jane Doe"}],"type":"object","required":["id","email","username"],"properties":{"id":{"title":"EntityID","description":"The resource's ID.","type":"string"},"email":{"description":"The user's email address (also their login identifier).","type":"string"},"username":{"description":"The user's display name (e.g. `Jane Doe`).","type":"string"}}},"updatedDate":{"description":"When the resource was last modified. ISO-8601 UTC.","type":"string","format":"date-time"},"updatedBy":{"description":"User who last modified the resource.","examples":[{"id":"iUu2eOU2Q-sBoX6ZjZV9pQ","email":"jane.doe@example.com","username":"Jane Doe"}],"type":"object","required":["id","email","username"],"properties":{"id":{"title":"EntityID","description":"The resource's ID.","type":"string"},"email":{"description":"The user's email address (also their login identifier).","type":"string"},"username":{"description":"The user's display name (e.g. `Jane Doe`).","type":"string"}}},"content":{"description":"Rich text content. May contain merge tags.","type":"string"},"links":{"description":"Navigable HATEOAS links to related resources. Each entry has a `name` (RFC-5988 relation), an `href` URL, and a `type` (`Api` or `App`).","type":"array","items":{"title":"Link","description":"A HATEOAS link to a related resource. Use these to navigate between resources without constructing URLs by hand.","type":"object","required":["name","href","type"],"properties":{"name":{"description":"Standard link relation name (RFC 5988) indicating this link's role. Common values include `self`, `edit`, `related`, `previous`, `next`.","type":"string"},"href":{"title":"Uri","description":"URL of the linked resource.","examples":["https://api.process.st/api/v1.1/resource/XXX"],"type":"string"},"rel":{"description":"Optional. The kind of resource this link points to (e.g. `Workflow`, `Task`, `Comment`).","type":"string","enum":["Approval Task","Approvals","Assignees","Comment","Data Set Records","Data Sets","Form Field Values","Subject Task","Task","Tasks","Users","Webhook","Workflow","Workflow Run"]},"type":{"description":"Whether this link targets an API endpoint or a Process Street app URL. `Api` — a callable API endpoint you can fetch directly. `App` — a browser-facing URL in the Process Street UI.","type":"string","enum":["Api","App"]}}}},"type":{"title":"WidgetType","description":"Widget kind discriminator.\n\n- `FormField` — collects user input (Text, Number, Date, etc. — see `fieldType`).\n- `Text` — rich text content displayed on the task.\n- `Image` — image content displayed on the task.\n- `File` — downloadable file attached to the task.\n- `Video` — video content (uploaded or linked from a hosting service).\n- `Embed` — embedded external content via URL.\n- `CrossLink` — link to another workflow or page.\n","type":"string","enum":["FormField","Text","Image","File","Video","Embed","CrossLink"]}}},{"title":"PublicApiVideoWidget","type":"object","required":["hiddenByDefault","id","taskId","createdDate","createdBy","updatedDate","updatedBy","type"],"properties":{"hiddenByDefault":{"description":"When `true`, the widget is hidden by default; conditional logic rules can reveal it at runtime. Defaults to `false`.","type":"boolean"},"id":{"description":"The ID of the Widget","examples":["oQyz9nbHMGEBoX6ZlJt-lA"],"type":"string"},"taskId":{"description":"The ID of the Task","examples":["oQyz9nbHMGEBoX6ZlJt-lA"],"type":"string"},"createdDate":{"description":"When the resource was first created. ISO-8601 UTC.","type":"string","format":"date-time"},"createdBy":{"description":"User who created the resource.","examples":[{"id":"iUu2eOU2Q-sBoX6ZjZV9pQ","email":"jane.doe@example.com","username":"Jane Doe"}],"type":"object","required":["id","email","username"],"properties":{"id":{"title":"EntityID","description":"The resource's ID.","type":"string"},"email":{"description":"The user's email address (also their login identifier).","type":"string"},"username":{"description":"The user's display name (e.g. `Jane Doe`).","type":"string"}}},"updatedDate":{"description":"When the resource was last modified. ISO-8601 UTC.","type":"string","format":"date-time"},"updatedBy":{"description":"User who last modified the resource.","examples":[{"id":"iUu2eOU2Q-sBoX6ZjZV9pQ","email":"jane.doe@example.com","username":"Jane Doe"}],"type":"object","required":["id","email","username"],"properties":{"id":{"title":"EntityID","description":"The resource's ID.","type":"string"},"email":{"description":"The user's email address (also their login identifier).","type":"string"},"username":{"description":"The user's display name (e.g. `Jane Doe`).","type":"string"}}},"description":{"description":"Optional long-form description.","type":"string"},"url":{"description":"Target URL.","type":"string"},"file":{"title":"PublicApiWidgetFile","description":"Uploaded file reference. Use the upload endpoint to attach content.","type":"object","required":["id","name","mimeType","size"],"properties":{"id":{"title":"EntityID","description":"The resource's ID.","type":"string"},"name":{"description":"Display name.","type":"string"},"mimeType":{"description":"MIME type detected at upload time (e.g. `image/png`, `application/pdf`).","type":"string"},"size":{"description":"File size in bytes.","type":"integer","format":"int64"}}},"links":{"description":"Navigable HATEOAS links to related resources. Each entry has a `name` (RFC-5988 relation), an `href` URL, and a `type` (`Api` or `App`).","type":"array","items":{"title":"Link","description":"A HATEOAS link to a related resource. Use these to navigate between resources without constructing URLs by hand.","type":"object","required":["name","href","type"],"properties":{"name":{"description":"Standard link relation name (RFC 5988) indicating this link's role. Common values include `self`, `edit`, `related`, `previous`, `next`.","type":"string"},"href":{"title":"Uri","description":"URL of the linked resource.","examples":["https://api.process.st/api/v1.1/resource/XXX"],"type":"string"},"rel":{"description":"Optional. The kind of resource this link points to (e.g. `Workflow`, `Task`, `Comment`).","type":"string","enum":["Approval Task","Approvals","Assignees","Comment","Data Set Records","Data Sets","Form Field Values","Subject Task","Task","Tasks","Users","Webhook","Workflow","Workflow Run"]},"type":{"description":"Whether this link targets an API endpoint or a Process Street app URL. `Api` — a callable API endpoint you can fetch directly. `App` — a browser-facing URL in the Process Street UI.","type":"string","enum":["Api","App"]}}}},"type":{"title":"WidgetType","description":"Widget kind discriminator.\n\n- `FormField` — collects user input (Text, Number, Date, etc. — see `fieldType`).\n- `Text` — rich text content displayed on the task.\n- `Image` — image content displayed on the task.\n- `File` — downloadable file attached to the task.\n- `Video` — video content (uploaded or linked from a hosting service).\n- `Embed` — embedded external content via URL.\n- `CrossLink` — link to another workflow or page.\n","type":"string","enum":["FormField","Text","Image","File","Video","Embed","CrossLink"]}}}],"required":["type"],"discriminator":{"propertyName":"type","mapping":{"CrossLink":"#/components/schemas/PublicApiCrossLinkWidget","Embed":"#/components/schemas/PublicApiEmbedWidget","File":"#/components/schemas/PublicApiFileWidget","FormField":"#/components/schemas/PublicApiFormFieldWidget","Image":"#/components/schemas/PublicApiImageWidget","Text":"#/components/schemas/PublicApiTextWidget","Video":"#/components/schemas/PublicApiVideoWidget"}}},"PublicApiWidgetFile":{"title":"PublicApiWidgetFile","type":"object","required":["id","name","mimeType","size"],"properties":{"id":{"title":"EntityID","description":"The resource's ID.","type":"string"},"name":{"description":"Display name.","type":"string"},"mimeType":{"description":"MIME type detected at upload time (e.g. `image/png`, `application/pdf`).","type":"string"},"size":{"description":"File size in bytes.","type":"integer","format":"int64"}}},"PublicApiWidgetListResponse":{"title":"PublicApiWidgetListResponse","type":"object","properties":{"data":{"description":"The list of resources returned by this request.","type":"array","items":{"title":"PublicApiWidget","oneOf":[{"title":"PublicApiCrossLinkWidget","type":"object","required":["hiddenByDefault","id","taskId","createdDate","createdBy","updatedDate","updatedBy","type"],"properties":{"hiddenByDefault":{"description":"When `true`, the widget is hidden by default; conditional logic rules can reveal it at runtime. Defaults to `false`.","type":"boolean"},"id":{"description":"The ID of the Widget","examples":["sQhasVLlQ6ABoX6ZlLJ8wQ"],"type":"string"},"taskId":{"description":"The ID of the Task","examples":["sQhasVLlQ6ABoX6ZlLJ8wQ"],"type":"string"},"createdDate":{"description":"When the resource was first created. ISO-8601 UTC.","type":"string","format":"date-time"},"createdBy":{"description":"User who created the resource.","examples":[{"id":"iUu2eOU2Q-sBoX6ZjZV9pQ","email":"jane.doe@example.com","username":"Jane Doe"}],"type":"object","required":["id","email","username"],"properties":{"id":{"title":"EntityID","description":"The resource's ID.","type":"string"},"email":{"description":"The user's email address (also their login identifier).","type":"string"},"username":{"description":"The user's display name (e.g. `Jane Doe`).","type":"string"}}},"updatedDate":{"description":"When the resource was last modified. ISO-8601 UTC.","type":"string","format":"date-time"},"updatedBy":{"description":"User who last modified the resource.","examples":[{"id":"iUu2eOU2Q-sBoX6ZjZV9pQ","email":"jane.doe@example.com","username":"Jane Doe"}],"type":"object","required":["id","email","username"],"properties":{"id":{"title":"EntityID","description":"The resource's ID.","type":"string"},"email":{"description":"The user's email address (also their login identifier).","type":"string"},"username":{"description":"The user's display name (e.g. `Jane Doe`).","type":"string"}}},"linkedTemplateId":{"title":"EntityID","description":"The ID of the linked workflow or page that this CrossLink widget points to.","type":"string"},"links":{"description":"Navigable HATEOAS links to related resources. Each entry has a `name` (RFC-5988 relation), an `href` URL, and a `type` (`Api` or `App`).","type":"array","items":{"title":"Link","description":"A HATEOAS link to a related resource. Use these to navigate between resources without constructing URLs by hand.","type":"object","required":["name","href","type"],"properties":{"name":{"description":"Standard link relation name (RFC 5988) indicating this link's role. Common values include `self`, `edit`, `related`, `previous`, `next`.","type":"string"},"href":{"title":"Uri","description":"URL of the linked resource.","examples":["https://api.process.st/api/v1.1/resource/XXX"],"type":"string"},"rel":{"description":"Optional. The kind of resource this link points to (e.g. `Workflow`, `Task`, `Comment`).","type":"string","enum":["Approval Task","Approvals","Assignees","Comment","Data Set Records","Data Sets","Form Field Values","Subject Task","Task","Tasks","Users","Webhook","Workflow","Workflow Run"]},"type":{"description":"Whether this link targets an API endpoint or a Process Street app URL. `Api` — a callable API endpoint you can fetch directly. `App` — a browser-facing URL in the Process Street UI.","type":"string","enum":["Api","App"]}}}},"type":{"title":"WidgetType","description":"Widget kind discriminator.\n\n- `FormField` — collects user input (Text, Number, Date, etc. — see `fieldType`).\n- `Text` — rich text content displayed on the task.\n- `Image` — image content displayed on the task.\n- `File` — downloadable file attached to the task.\n- `Video` — video content (uploaded or linked from a hosting service).\n- `Embed` — embedded external content via URL.\n- `CrossLink` — link to another workflow or page.\n","type":"string","enum":["FormField","Text","Image","File","Video","Embed","CrossLink"]}}},{"title":"PublicApiEmbedWidget","type":"object","required":["hiddenByDefault","id","taskId","createdDate","createdBy","updatedDate","updatedBy","type"],"properties":{"hiddenByDefault":{"description":"When `true`, the widget is hidden by default; conditional logic rules can reveal it at runtime. Defaults to `false`.","type":"boolean"},"id":{"description":"The ID of the Widget","examples":["t2jRHTZdhq4BoX6ZlKd0ng"],"type":"string"},"taskId":{"description":"The ID of the Task","examples":["t2jRHTZdhq4BoX6ZlKd0ng"],"type":"string"},"createdDate":{"description":"When the resource was first created. ISO-8601 UTC.","type":"string","format":"date-time"},"createdBy":{"description":"User who created the resource.","examples":[{"id":"iUu2eOU2Q-sBoX6ZjZV9pQ","email":"jane.doe@example.com","username":"Jane Doe"}],"type":"object","required":["id","email","username"],"properties":{"id":{"title":"EntityID","description":"The resource's ID.","type":"string"},"email":{"description":"The user's email address (also their login identifier).","type":"string"},"username":{"description":"The user's display name (e.g. `Jane Doe`).","type":"string"}}},"updatedDate":{"description":"When the resource was last modified. ISO-8601 UTC.","type":"string","format":"date-time"},"updatedBy":{"description":"User who last modified the resource.","examples":[{"id":"iUu2eOU2Q-sBoX6ZjZV9pQ","email":"jane.doe@example.com","username":"Jane Doe"}],"type":"object","required":["id","email","username"],"properties":{"id":{"title":"EntityID","description":"The resource's ID.","type":"string"},"email":{"description":"The user's email address (also their login identifier).","type":"string"},"username":{"description":"The user's display name (e.g. `Jane Doe`).","type":"string"}}},"url":{"description":"Target URL.","type":"string"},"links":{"description":"Navigable HATEOAS links to related resources. Each entry has a `name` (RFC-5988 relation), an `href` URL, and a `type` (`Api` or `App`).","type":"array","items":{"title":"Link","description":"A HATEOAS link to a related resource. Use these to navigate between resources without constructing URLs by hand.","type":"object","required":["name","href","type"],"properties":{"name":{"description":"Standard link relation name (RFC 5988) indicating this link's role. Common values include `self`, `edit`, `related`, `previous`, `next`.","type":"string"},"href":{"title":"Uri","description":"URL of the linked resource.","examples":["https://api.process.st/api/v1.1/resource/XXX"],"type":"string"},"rel":{"description":"Optional. The kind of resource this link points to (e.g. `Workflow`, `Task`, `Comment`).","type":"string","enum":["Approval Task","Approvals","Assignees","Comment","Data Set Records","Data Sets","Form Field Values","Subject Task","Task","Tasks","Users","Webhook","Workflow","Workflow Run"]},"type":{"description":"Whether this link targets an API endpoint or a Process Street app URL. `Api` — a callable API endpoint you can fetch directly. `App` — a browser-facing URL in the Process Street UI.","type":"string","enum":["Api","App"]}}}},"type":{"title":"WidgetType","description":"Widget kind discriminator.\n\n- `FormField` — collects user input (Text, Number, Date, etc. — see `fieldType`).\n- `Text` — rich text content displayed on the task.\n- `Image` — image content displayed on the task.\n- `File` — downloadable file attached to the task.\n- `Video` — video content (uploaded or linked from a hosting service).\n- `Embed` — embedded external content via URL.\n- `CrossLink` — link to another workflow or page.\n","type":"string","enum":["FormField","Text","Image","File","Video","Embed","CrossLink"]}}},{"title":"PublicApiFileWidget","type":"object","required":["hiddenByDefault","id","taskId","createdDate","createdBy","updatedDate","updatedBy","type"],"properties":{"hiddenByDefault":{"description":"When `true`, the widget is hidden by default; conditional logic rules can reveal it at runtime. Defaults to `false`.","type":"boolean"},"id":{"description":"The ID of the Widget","examples":["jaG4K_pc8rMBoX6ZlI9-QA"],"type":"string"},"taskId":{"description":"The ID of the Task","examples":["jaG4K_pc8rMBoX6ZlI9-QA"],"type":"string"},"createdDate":{"description":"When the resource was first created. ISO-8601 UTC.","type":"string","format":"date-time"},"createdBy":{"description":"User who created the resource.","examples":[{"id":"iUu2eOU2Q-sBoX6ZjZV9pQ","email":"jane.doe@example.com","username":"Jane Doe"}],"type":"object","required":["id","email","username"],"properties":{"id":{"title":"EntityID","description":"The resource's ID.","type":"string"},"email":{"description":"The user's email address (also their login identifier).","type":"string"},"username":{"description":"The user's display name (e.g. `Jane Doe`).","type":"string"}}},"updatedDate":{"description":"When the resource was last modified. ISO-8601 UTC.","type":"string","format":"date-time"},"updatedBy":{"description":"User who last modified the resource.","examples":[{"id":"iUu2eOU2Q-sBoX6ZjZV9pQ","email":"jane.doe@example.com","username":"Jane Doe"}],"type":"object","required":["id","email","username"],"properties":{"id":{"title":"EntityID","description":"The resource's ID.","type":"string"},"email":{"description":"The user's email address (also their login identifier).","type":"string"},"username":{"description":"The user's display name (e.g. `Jane Doe`).","type":"string"}}},"description":{"description":"Optional long-form description.","type":"string"},"file":{"title":"PublicApiWidgetFile","description":"Uploaded file reference. Use the upload endpoint to attach content.","type":"object","required":["id","name","mimeType","size"],"properties":{"id":{"title":"EntityID","description":"The resource's ID.","type":"string"},"name":{"description":"Display name.","type":"string"},"mimeType":{"description":"MIME type detected at upload time (e.g. `image/png`, `application/pdf`).","type":"string"},"size":{"description":"File size in bytes.","type":"integer","format":"int64"}}},"links":{"description":"Navigable HATEOAS links to related resources. Each entry has a `name` (RFC-5988 relation), an `href` URL, and a `type` (`Api` or `App`).","type":"array","items":{"title":"Link","description":"A HATEOAS link to a related resource. Use these to navigate between resources without constructing URLs by hand.","type":"object","required":["name","href","type"],"properties":{"name":{"description":"Standard link relation name (RFC 5988) indicating this link's role. Common values include `self`, `edit`, `related`, `previous`, `next`.","type":"string"},"href":{"title":"Uri","description":"URL of the linked resource.","examples":["https://api.process.st/api/v1.1/resource/XXX"],"type":"string"},"rel":{"description":"Optional. The kind of resource this link points to (e.g. `Workflow`, `Task`, `Comment`).","type":"string","enum":["Approval Task","Approvals","Assignees","Comment","Data Set Records","Data Sets","Form Field Values","Subject Task","Task","Tasks","Users","Webhook","Workflow","Workflow Run"]},"type":{"description":"Whether this link targets an API endpoint or a Process Street app URL. `Api` — a callable API endpoint you can fetch directly. `App` — a browser-facing URL in the Process Street UI.","type":"string","enum":["Api","App"]}}}},"type":{"title":"WidgetType","description":"Widget kind discriminator.\n\n- `FormField` — collects user input (Text, Number, Date, etc. — see `fieldType`).\n- `Text` — rich text content displayed on the task.\n- `Image` — image content displayed on the task.\n- `File` — downloadable file attached to the task.\n- `Video` — video content (uploaded or linked from a hosting service).\n- `Embed` — embedded external content via URL.\n- `CrossLink` — link to another workflow or page.\n","type":"string","enum":["FormField","Text","Image","File","Video","Embed","CrossLink"]}}},{"title":"PublicApiFormFieldWidget","type":"object","required":["hiddenByDefault","id","taskId","createdDate","createdBy","updatedDate","updatedBy","fieldType","key","required","config","type"],"properties":{"hiddenByDefault":{"description":"When `true`, the widget is hidden by default; conditional logic rules can reveal it at runtime. Defaults to `false`.","type":"boolean"},"id":{"description":"The ID of the Widget","examples":["hVDWDyLQh8UBoX6Zk313Dg"],"type":"string"},"taskId":{"description":"The ID of the Task","examples":["hVDWDyLQh8UBoX6Zk313Dg"],"type":"string"},"createdDate":{"description":"When the resource was first created. ISO-8601 UTC.","type":"string","format":"date-time"},"createdBy":{"description":"User who created the resource.","examples":[{"id":"iUu2eOU2Q-sBoX6ZjZV9pQ","email":"jane.doe@example.com","username":"Jane Doe"}],"type":"object","required":["id","email","username"],"properties":{"id":{"title":"EntityID","description":"The resource's ID.","type":"string"},"email":{"description":"The user's email address (also their login identifier).","type":"string"},"username":{"description":"The user's display name (e.g. `Jane Doe`).","type":"string"}}},"updatedDate":{"description":"When the resource was last modified. ISO-8601 UTC.","type":"string","format":"date-time"},"updatedBy":{"description":"User who last modified the resource.","examples":[{"id":"iUu2eOU2Q-sBoX6ZjZV9pQ","email":"jane.doe@example.com","username":"Jane Doe"}],"type":"object","required":["id","email","username"],"properties":{"id":{"title":"EntityID","description":"The resource's ID.","type":"string"},"email":{"description":"The user's email address (also their login identifier).","type":"string"},"username":{"description":"The user's display name (e.g. `Jane Doe`).","type":"string"}}},"fieldType":{"description":"Form-field subtype discriminator (only relevant when widget `type` is `FormField`).\n\n- `Text` — short text input (≤255 characters).\n- `Textarea` — long-form text.\n- `Email` — email address.\n- `Url` — website / URL.\n- `Number` — numeric input with optional unit and constraints.\n- `Date` — date or date+time picker.\n- `Select` — dropdown; user picks one option.\n- `MultiChoice` — checkboxes; user picks one or more options.\n- `MultiSelect` — Subtasks: a checklist of sub-items inside the task.\n- `Members` — assignee picker (selects organization users).\n- `File` — single file upload.\n- `MultiFile` — multi-file upload (in-app \"File Upload\").\n- `Document` — document approval field; links the task to a document review.\n- `Table` — rows × columns of cells; users fill cell values.\n- `SendRichEmail` — pre-written email embedded in the task; sent manually by the user or\n  automatically when the task is completed.\n- `Hidden` — only visible when editing the workflow; populated by integrations or default values.\n- `Snippet` — only visible when editing; passes static text or merge tags into automations.\n","type":"string","enum":["Date","Document","Email","File","Hidden","Members","MultiChoice","MultiFile","MultiSelect","Number","Select","SendRichEmail","Snippet","Table","Text","Textarea","Url"]},"key":{"description":"Unique key used to identify this row across imports — matches the data set column referenced by the webhook's `keyColumn`.","type":"string"},"label":{"description":"Display label shown to the end user.","type":"string"},"required":{"description":"When `true`, the form field must have a value before its task can be completed.","type":"boolean"},"config":{"title":"PublicApiFormFieldConfig","description":"Field-specific configuration. Shape depends on `fieldType`.","oneOf":[{"title":"PublicApiDateFormFieldConfig","type":"object","required":["fieldType"],"properties":{"defaultValue":{"description":"Default value pre-filled when a new workflow run is created.","type":"string"},"timeOption":{"description":"How time-of-day is handled on this Date field.\n\n- `Included` — the field always captures both date and time.\n- `Excluded` — date only; time is never captured.\n- `Optional` — the user picks whether to include a time.\n","type":"string","enum":["Included","Excluded","Optional"]},"fieldType":{"description":"Form-field subtype discriminator (only relevant when widget `type` is `FormField`).\n\n- `Text` — short text input (≤255 characters).\n- `Textarea` — long-form text.\n- `Email` — email address.\n- `Url` — website / URL.\n- `Number` — numeric input with optional unit and constraints.\n- `Date` — date or date+time picker.\n- `Select` — dropdown; user picks one option.\n- `MultiChoice` — checkboxes; user picks one or more options.\n- `MultiSelect` — Subtasks: a checklist of sub-items inside the task.\n- `Members` — assignee picker (selects organization users).\n- `File` — single file upload.\n- `MultiFile` — multi-file upload (in-app \"File Upload\").\n- `Document` — document approval field; links the task to a document review.\n- `Table` — rows × columns of cells; users fill cell values.\n- `SendRichEmail` — pre-written email embedded in the task; sent manually by the user or\n  automatically when the task is completed.\n- `Hidden` — only visible when editing the workflow; populated by integrations or default values.\n- `Snippet` — only visible when editing; passes static text or merge tags into automations.\n","type":"string","enum":["Date","Document","Email","File","Hidden","Members","MultiChoice","MultiFile","MultiSelect","Number","Select","SendRichEmail","Snippet","Table","Text","Textarea","Url"],"const":"Date"}}},{"title":"PublicApiDocumentFormFieldConfig","type":"object","required":["reviewRequest","fieldType"],"properties":{"reviewRequest":{"description":"When `true`, the email requires explicit user review/send rather than auto-send.","type":"boolean"},"defaultValue":{"description":"Default value pre-filled when a new workflow run is created.","type":"string"},"fieldType":{"description":"Form-field subtype discriminator (only relevant when widget `type` is `FormField`).\n\n- `Text` — short text input (≤255 characters).\n- `Textarea` — long-form text.\n- `Email` — email address.\n- `Url` — website / URL.\n- `Number` — numeric input with optional unit and constraints.\n- `Date` — date or date+time picker.\n- `Select` — dropdown; user picks one option.\n- `MultiChoice` — checkboxes; user picks one or more options.\n- `MultiSelect` — Subtasks: a checklist of sub-items inside the task.\n- `Members` — assignee picker (selects organization users).\n- `File` — single file upload.\n- `MultiFile` — multi-file upload (in-app \"File Upload\").\n- `Document` — document approval field; links the task to a document review.\n- `Table` — rows × columns of cells; users fill cell values.\n- `SendRichEmail` — pre-written email embedded in the task; sent manually by the user or\n  automatically when the task is completed.\n- `Hidden` — only visible when editing the workflow; populated by integrations or default values.\n- `Snippet` — only visible when editing; passes static text or merge tags into automations.\n","type":"string","enum":["Date","Document","Email","File","Hidden","Members","MultiChoice","MultiFile","MultiSelect","Number","Select","SendRichEmail","Snippet","Table","Text","Textarea","Url"],"const":"Document"}}},{"title":"PublicApiEmailFormFieldConfig","type":"object","required":["fieldType"],"properties":{"placeholder":{"description":"Placeholder hint shown in the input when no value has been entered.","type":"string"},"defaultValue":{"description":"Default value pre-filled when a new workflow run is created.","type":"string"},"fieldType":{"description":"Form-field subtype discriminator (only relevant when widget `type` is `FormField`).\n\n- `Text` — short text input (≤255 characters).\n- `Textarea` — long-form text.\n- `Email` — email address.\n- `Url` — website / URL.\n- `Number` — numeric input with optional unit and constraints.\n- `Date` — date or date+time picker.\n- `Select` — dropdown; user picks one option.\n- `MultiChoice` — checkboxes; user picks one or more options.\n- `MultiSelect` — Subtasks: a checklist of sub-items inside the task.\n- `Members` — assignee picker (selects organization users).\n- `File` — single file upload.\n- `MultiFile` — multi-file upload (in-app \"File Upload\").\n- `Document` — document approval field; links the task to a document review.\n- `Table` — rows × columns of cells; users fill cell values.\n- `SendRichEmail` — pre-written email embedded in the task; sent manually by the user or\n  automatically when the task is completed.\n- `Hidden` — only visible when editing the workflow; populated by integrations or default values.\n- `Snippet` — only visible when editing; passes static text or merge tags into automations.\n","type":"string","enum":["Date","Document","Email","File","Hidden","Members","MultiChoice","MultiFile","MultiSelect","Number","Select","SendRichEmail","Snippet","Table","Text","Textarea","Url"],"const":"Email"}}},{"title":"PublicApiFileFormFieldConfig","type":"object","required":["fieldType"],"properties":{"placeholder":{"description":"Placeholder hint shown in the input when no value has been entered.","type":"string"},"extractTextContent":{"description":"When `true`, server extracts text from uploaded documents for use in merge tags.","type":"boolean"},"fieldType":{"description":"Form-field subtype discriminator (only relevant when widget `type` is `FormField`).\n\n- `Text` — short text input (≤255 characters).\n- `Textarea` — long-form text.\n- `Email` — email address.\n- `Url` — website / URL.\n- `Number` — numeric input with optional unit and constraints.\n- `Date` — date or date+time picker.\n- `Select` — dropdown; user picks one option.\n- `MultiChoice` — checkboxes; user picks one or more options.\n- `MultiSelect` — Subtasks: a checklist of sub-items inside the task.\n- `Members` — assignee picker (selects organization users).\n- `File` — single file upload.\n- `MultiFile` — multi-file upload (in-app \"File Upload\").\n- `Document` — document approval field; links the task to a document review.\n- `Table` — rows × columns of cells; users fill cell values.\n- `SendRichEmail` — pre-written email embedded in the task; sent manually by the user or\n  automatically when the task is completed.\n- `Hidden` — only visible when editing the workflow; populated by integrations or default values.\n- `Snippet` — only visible when editing; passes static text or merge tags into automations.\n","type":"string","enum":["Date","Document","Email","File","Hidden","Members","MultiChoice","MultiFile","MultiSelect","Number","Select","SendRichEmail","Snippet","Table","Text","Textarea","Url"],"const":"File"}}},{"title":"PublicApiHiddenFormFieldConfig","type":"object","required":["fieldType"],"properties":{"defaultValue":{"description":"Default value pre-filled when a new workflow run is created.","type":"string"},"fieldType":{"description":"Form-field subtype discriminator (only relevant when widget `type` is `FormField`).\n\n- `Text` — short text input (≤255 characters).\n- `Textarea` — long-form text.\n- `Email` — email address.\n- `Url` — website / URL.\n- `Number` — numeric input with optional unit and constraints.\n- `Date` — date or date+time picker.\n- `Select` — dropdown; user picks one option.\n- `MultiChoice` — checkboxes; user picks one or more options.\n- `MultiSelect` — Subtasks: a checklist of sub-items inside the task.\n- `Members` — assignee picker (selects organization users).\n- `File` — single file upload.\n- `MultiFile` — multi-file upload (in-app \"File Upload\").\n- `Document` — document approval field; links the task to a document review.\n- `Table` — rows × columns of cells; users fill cell values.\n- `SendRichEmail` — pre-written email embedded in the task; sent manually by the user or\n  automatically when the task is completed.\n- `Hidden` — only visible when editing the workflow; populated by integrations or default values.\n- `Snippet` — only visible when editing; passes static text or merge tags into automations.\n","type":"string","enum":["Date","Document","Email","File","Hidden","Members","MultiChoice","MultiFile","MultiSelect","Number","Select","SendRichEmail","Snippet","Table","Text","Textarea","Url"],"const":"Hidden"}}},{"title":"PublicApiMembersFormFieldConfig","type":"object","required":["fieldType"],"properties":{"defaultValue":{"description":"Default value pre-filled when a new workflow run is created.","type":"string"},"groupId":{"title":"EntityID","description":"The ID of an organization group.","type":"string"},"fieldType":{"description":"Form-field subtype discriminator (only relevant when widget `type` is `FormField`).\n\n- `Text` — short text input (≤255 characters).\n- `Textarea` — long-form text.\n- `Email` — email address.\n- `Url` — website / URL.\n- `Number` — numeric input with optional unit and constraints.\n- `Date` — date or date+time picker.\n- `Select` — dropdown; user picks one option.\n- `MultiChoice` — checkboxes; user picks one or more options.\n- `MultiSelect` — Subtasks: a checklist of sub-items inside the task.\n- `Members` — assignee picker (selects organization users).\n- `File` — single file upload.\n- `MultiFile` — multi-file upload (in-app \"File Upload\").\n- `Document` — document approval field; links the task to a document review.\n- `Table` — rows × columns of cells; users fill cell values.\n- `SendRichEmail` — pre-written email embedded in the task; sent manually by the user or\n  automatically when the task is completed.\n- `Hidden` — only visible when editing the workflow; populated by integrations or default values.\n- `Snippet` — only visible when editing; passes static text or merge tags into automations.\n","type":"string","enum":["Date","Document","Email","File","Hidden","Members","MultiChoice","MultiFile","MultiSelect","Number","Select","SendRichEmail","Snippet","Table","Text","Textarea","Url"],"const":"Members"}}},{"title":"PublicApiMultiChoiceFormFieldConfig","type":"object","required":["fieldType"],"properties":{"items":{"description":"Available options for selection-style form fields.","type":"array","items":{"title":"PublicApiFormFieldItem","type":"object","required":["name"],"properties":{"id":{"title":"EntityID","description":"The resource's ID.","type":"string"},"name":{"description":"Display name.","type":"string"}}}},"fieldType":{"description":"Form-field subtype discriminator (only relevant when widget `type` is `FormField`).\n\n- `Text` — short text input (≤255 characters).\n- `Textarea` — long-form text.\n- `Email` — email address.\n- `Url` — website / URL.\n- `Number` — numeric input with optional unit and constraints.\n- `Date` — date or date+time picker.\n- `Select` — dropdown; user picks one option.\n- `MultiChoice` — checkboxes; user picks one or more options.\n- `MultiSelect` — Subtasks: a checklist of sub-items inside the task.\n- `Members` — assignee picker (selects organization users).\n- `File` — single file upload.\n- `MultiFile` — multi-file upload (in-app \"File Upload\").\n- `Document` — document approval field; links the task to a document review.\n- `Table` — rows × columns of cells; users fill cell values.\n- `SendRichEmail` — pre-written email embedded in the task; sent manually by the user or\n  automatically when the task is completed.\n- `Hidden` — only visible when editing the workflow; populated by integrations or default values.\n- `Snippet` — only visible when editing; passes static text or merge tags into automations.\n","type":"string","enum":["Date","Document","Email","File","Hidden","Members","MultiChoice","MultiFile","MultiSelect","Number","Select","SendRichEmail","Snippet","Table","Text","Textarea","Url"],"const":"MultiChoice"}}},{"title":"PublicApiMultiFileFormFieldConfig","type":"object","required":["fieldType"],"properties":{"placeholder":{"description":"Placeholder hint shown in the input when no value has been entered.","type":"string"},"extractTextContent":{"description":"When `true`, server extracts text from uploaded documents for use in merge tags.","type":"boolean"},"fieldType":{"description":"Form-field subtype discriminator (only relevant when widget `type` is `FormField`).\n\n- `Text` — short text input (≤255 characters).\n- `Textarea` — long-form text.\n- `Email` — email address.\n- `Url` — website / URL.\n- `Number` — numeric input with optional unit and constraints.\n- `Date` — date or date+time picker.\n- `Select` — dropdown; user picks one option.\n- `MultiChoice` — checkboxes; user picks one or more options.\n- `MultiSelect` — Subtasks: a checklist of sub-items inside the task.\n- `Members` — assignee picker (selects organization users).\n- `File` — single file upload.\n- `MultiFile` — multi-file upload (in-app \"File Upload\").\n- `Document` — document approval field; links the task to a document review.\n- `Table` — rows × columns of cells; users fill cell values.\n- `SendRichEmail` — pre-written email embedded in the task; sent manually by the user or\n  automatically when the task is completed.\n- `Hidden` — only visible when editing the workflow; populated by integrations or default values.\n- `Snippet` — only visible when editing; passes static text or merge tags into automations.\n","type":"string","enum":["Date","Document","Email","File","Hidden","Members","MultiChoice","MultiFile","MultiSelect","Number","Select","SendRichEmail","Snippet","Table","Text","Textarea","Url"],"const":"MultiFile"}}},{"title":"PublicApiMultiSelectFormFieldConfig","type":"object","required":["fieldType"],"properties":{"items":{"description":"Available options for selection-style form fields.","type":"array","items":{"title":"PublicApiFormFieldItem","type":"object","required":["name"],"properties":{"id":{"title":"EntityID","description":"The resource's ID.","type":"string"},"name":{"description":"Display name.","type":"string"}}}},"fieldType":{"description":"Form-field subtype discriminator (only relevant when widget `type` is `FormField`).\n\n- `Text` — short text input (≤255 characters).\n- `Textarea` — long-form text.\n- `Email` — email address.\n- `Url` — website / URL.\n- `Number` — numeric input with optional unit and constraints.\n- `Date` — date or date+time picker.\n- `Select` — dropdown; user picks one option.\n- `MultiChoice` — checkboxes; user picks one or more options.\n- `MultiSelect` — Subtasks: a checklist of sub-items inside the task.\n- `Members` — assignee picker (selects organization users).\n- `File` — single file upload.\n- `MultiFile` — multi-file upload (in-app \"File Upload\").\n- `Document` — document approval field; links the task to a document review.\n- `Table` — rows × columns of cells; users fill cell values.\n- `SendRichEmail` — pre-written email embedded in the task; sent manually by the user or\n  automatically when the task is completed.\n- `Hidden` — only visible when editing the workflow; populated by integrations or default values.\n- `Snippet` — only visible when editing; passes static text or merge tags into automations.\n","type":"string","enum":["Date","Document","Email","File","Hidden","Members","MultiChoice","MultiFile","MultiSelect","Number","Select","SendRichEmail","Snippet","Table","Text","Textarea","Url"],"const":"MultiSelect"}}},{"title":"PublicApiNumberFormFieldConfig","type":"object","required":["fieldType"],"properties":{"placeholder":{"description":"Placeholder hint shown in the input when no value has been entered.","type":"string"},"defaultValue":{"description":"Default value pre-filled when a new workflow run is created.","type":"string"},"unit":{"description":"Unit label rendered next to the numeric value (e.g. `kg`, `$`, `%`).","type":"string"},"unitLocation":{"description":"Where the unit symbol appears relative to the number.\n\n- `prefix` — before the number (e.g. `$100`).\n- `suffix` — after the number (e.g. `100 USD`).\n","type":"string","enum":["prefix","suffix"]},"fieldType":{"description":"Form-field subtype discriminator (only relevant when widget `type` is `FormField`).\n\n- `Text` — short text input (≤255 characters).\n- `Textarea` — long-form text.\n- `Email` — email address.\n- `Url` — website / URL.\n- `Number` — numeric input with optional unit and constraints.\n- `Date` — date or date+time picker.\n- `Select` — dropdown; user picks one option.\n- `MultiChoice` — checkboxes; user picks one or more options.\n- `MultiSelect` — Subtasks: a checklist of sub-items inside the task.\n- `Members` — assignee picker (selects organization users).\n- `File` — single file upload.\n- `MultiFile` — multi-file upload (in-app \"File Upload\").\n- `Document` — document approval field; links the task to a document review.\n- `Table` — rows × columns of cells; users fill cell values.\n- `SendRichEmail` — pre-written email embedded in the task; sent manually by the user or\n  automatically when the task is completed.\n- `Hidden` — only visible when editing the workflow; populated by integrations or default values.\n- `Snippet` — only visible when editing; passes static text or merge tags into automations.\n","type":"string","enum":["Date","Document","Email","File","Hidden","Members","MultiChoice","MultiFile","MultiSelect","Number","Select","SendRichEmail","Snippet","Table","Text","Textarea","Url"],"const":"Number"}}},{"title":"PublicApiSelectFormFieldConfig","type":"object","required":["fieldType"],"properties":{"items":{"description":"Available options for selection-style form fields.","type":"array","items":{"title":"PublicApiFormFieldItem","type":"object","required":["name"],"properties":{"id":{"title":"EntityID","description":"The resource's ID.","type":"string"},"name":{"description":"Display name.","type":"string"}}}},"defaultValue":{"description":"Default value pre-filled when a new workflow run is created.","type":"string"},"fieldType":{"description":"Form-field subtype discriminator (only relevant when widget `type` is `FormField`).\n\n- `Text` — short text input (≤255 characters).\n- `Textarea` — long-form text.\n- `Email` — email address.\n- `Url` — website / URL.\n- `Number` — numeric input with optional unit and constraints.\n- `Date` — date or date+time picker.\n- `Select` — dropdown; user picks one option.\n- `MultiChoice` — checkboxes; user picks one or more options.\n- `MultiSelect` — Subtasks: a checklist of sub-items inside the task.\n- `Members` — assignee picker (selects organization users).\n- `File` — single file upload.\n- `MultiFile` — multi-file upload (in-app \"File Upload\").\n- `Document` — document approval field; links the task to a document review.\n- `Table` — rows × columns of cells; users fill cell values.\n- `SendRichEmail` — pre-written email embedded in the task; sent manually by the user or\n  automatically when the task is completed.\n- `Hidden` — only visible when editing the workflow; populated by integrations or default values.\n- `Snippet` — only visible when editing; passes static text or merge tags into automations.\n","type":"string","enum":["Date","Document","Email","File","Hidden","Members","MultiChoice","MultiFile","MultiSelect","Number","Select","SendRichEmail","Snippet","Table","Text","Textarea","Url"],"const":"Select"}}},{"title":"PublicApiSendRichEmailFormFieldConfig","type":"object","required":["bodyEditor","fieldType"],"properties":{"to":{"description":"Default recipient list (To). Comma-separated email addresses or merge tags.","type":"array","items":{"type":"string"}},"cc":{"description":"Default CC list. Comma-separated email addresses or merge tags.","type":"array","items":{"type":"string"}},"bcc":{"description":"Default BCC list. Comma-separated email addresses or merge tags.","type":"array","items":{"type":"string"}},"replyTo":{"description":"Default Reply-To address. An email address or merge tag.","type":"array","items":{"type":"string"}},"subject":{"description":"Default email subject. May contain merge tags.","type":"string"},"body":{"description":"Default email body. May contain merge tags.","type":"string"},"bodyEditor":{"description":"Editor used to author the email body.\n\n- `RichText` — rich-text editor with formatting.\n- `HTML` — raw HTML editor.\n- `PlainText` — plain text editor.\n","type":"string","enum":["RichText","HTML","PlainText"]},"editAllowed":{"description":"When `true`, users running the workflow can edit the email before sending.","type":"boolean"},"fieldType":{"description":"Form-field subtype discriminator (only relevant when widget `type` is `FormField`).\n\n- `Text` — short text input (≤255 characters).\n- `Textarea` — long-form text.\n- `Email` — email address.\n- `Url` — website / URL.\n- `Number` — numeric input with optional unit and constraints.\n- `Date` — date or date+time picker.\n- `Select` — dropdown; user picks one option.\n- `MultiChoice` — checkboxes; user picks one or more options.\n- `MultiSelect` — Subtasks: a checklist of sub-items inside the task.\n- `Members` — assignee picker (selects organization users).\n- `File` — single file upload.\n- `MultiFile` — multi-file upload (in-app \"File Upload\").\n- `Document` — document approval field; links the task to a document review.\n- `Table` — rows × columns of cells; users fill cell values.\n- `SendRichEmail` — pre-written email embedded in the task; sent manually by the user or\n  automatically when the task is completed.\n- `Hidden` — only visible when editing the workflow; populated by integrations or default values.\n- `Snippet` — only visible when editing; passes static text or merge tags into automations.\n","type":"string","enum":["Date","Document","Email","File","Hidden","Members","MultiChoice","MultiFile","MultiSelect","Number","Select","SendRichEmail","Snippet","Table","Text","Textarea","Url"],"const":"SendRichEmail"}}},{"title":"PublicApiSnippetFormFieldConfig","type":"object","required":["fieldType"],"properties":{"value":{"description":"The option's stored value.","type":"string"},"fieldType":{"description":"Form-field subtype discriminator (only relevant when widget `type` is `FormField`).\n\n- `Text` — short text input (≤255 characters).\n- `Textarea` — long-form text.\n- `Email` — email address.\n- `Url` — website / URL.\n- `Number` — numeric input with optional unit and constraints.\n- `Date` — date or date+time picker.\n- `Select` — dropdown; user picks one option.\n- `MultiChoice` — checkboxes; user picks one or more options.\n- `MultiSelect` — Subtasks: a checklist of sub-items inside the task.\n- `Members` — assignee picker (selects organization users).\n- `File` — single file upload.\n- `MultiFile` — multi-file upload (in-app \"File Upload\").\n- `Document` — document approval field; links the task to a document review.\n- `Table` — rows × columns of cells; users fill cell values.\n- `SendRichEmail` — pre-written email embedded in the task; sent manually by the user or\n  automatically when the task is completed.\n- `Hidden` — only visible when editing the workflow; populated by integrations or default values.\n- `Snippet` — only visible when editing; passes static text or merge tags into automations.\n","type":"string","enum":["Date","Document","Email","File","Hidden","Members","MultiChoice","MultiFile","MultiSelect","Number","Select","SendRichEmail","Snippet","Table","Text","Textarea","Url"],"const":"Snippet"}}},{"title":"PublicApiTableFormFieldConfig","type":"object","required":["fieldType"],"properties":{"columnDefs":{"description":"Data set column definitions (name + type per column).","type":"array","items":{"title":"PublicApiTableFormFieldColumn","type":"object","required":["id","name","columnType"],"properties":{"id":{"title":"EntityID","description":"The resource's ID.","type":"string"},"name":{"description":"Display name.","type":"string"},"columnType":{"description":"Data type a Table column accepts.\n\n- `Text` — free-form short text.\n","type":"string","enum":["Text"]}}}},"defaultValue":{"description":"Default value pre-filled when a new workflow run is created.","type":"string"},"fieldType":{"description":"Form-field subtype discriminator (only relevant when widget `type` is `FormField`).\n\n- `Text` — short text input (≤255 characters).\n- `Textarea` — long-form text.\n- `Email` — email address.\n- `Url` — website / URL.\n- `Number` — numeric input with optional unit and constraints.\n- `Date` — date or date+time picker.\n- `Select` — dropdown; user picks one option.\n- `MultiChoice` — checkboxes; user picks one or more options.\n- `MultiSelect` — Subtasks: a checklist of sub-items inside the task.\n- `Members` — assignee picker (selects organization users).\n- `File` — single file upload.\n- `MultiFile` — multi-file upload (in-app \"File Upload\").\n- `Document` — document approval field; links the task to a document review.\n- `Table` — rows × columns of cells; users fill cell values.\n- `SendRichEmail` — pre-written email embedded in the task; sent manually by the user or\n  automatically when the task is completed.\n- `Hidden` — only visible when editing the workflow; populated by integrations or default values.\n- `Snippet` — only visible when editing; passes static text or merge tags into automations.\n","type":"string","enum":["Date","Document","Email","File","Hidden","Members","MultiChoice","MultiFile","MultiSelect","Number","Select","SendRichEmail","Snippet","Table","Text","Textarea","Url"],"const":"Table"}}},{"title":"PublicApiTextFormFieldConfig","type":"object","required":["fieldType"],"properties":{"placeholder":{"description":"Placeholder hint shown in the input when no value has been entered.","type":"string"},"defaultValue":{"description":"Default value pre-filled when a new workflow run is created.","type":"string"},"fieldType":{"description":"Form-field subtype discriminator (only relevant when widget `type` is `FormField`).\n\n- `Text` — short text input (≤255 characters).\n- `Textarea` — long-form text.\n- `Email` — email address.\n- `Url` — website / URL.\n- `Number` — numeric input with optional unit and constraints.\n- `Date` — date or date+time picker.\n- `Select` — dropdown; user picks one option.\n- `MultiChoice` — checkboxes; user picks one or more options.\n- `MultiSelect` — Subtasks: a checklist of sub-items inside the task.\n- `Members` — assignee picker (selects organization users).\n- `File` — single file upload.\n- `MultiFile` — multi-file upload (in-app \"File Upload\").\n- `Document` — document approval field; links the task to a document review.\n- `Table` — rows × columns of cells; users fill cell values.\n- `SendRichEmail` — pre-written email embedded in the task; sent manually by the user or\n  automatically when the task is completed.\n- `Hidden` — only visible when editing the workflow; populated by integrations or default values.\n- `Snippet` — only visible when editing; passes static text or merge tags into automations.\n","type":"string","enum":["Date","Document","Email","File","Hidden","Members","MultiChoice","MultiFile","MultiSelect","Number","Select","SendRichEmail","Snippet","Table","Text","Textarea","Url"],"const":"Text"}}},{"title":"PublicApiTextareaFormFieldConfig","type":"object","required":["fieldType"],"properties":{"placeholder":{"description":"Placeholder hint shown in the input when no value has been entered.","type":"string"},"defaultValue":{"description":"Default value pre-filled when a new workflow run is created.","type":"string"},"format":{"description":"Editor style for this Textarea field.\n\n- `PlainText` — plain text.\n- `RichText` — rich-text editor with formatting (bold, lists, links, etc.).\n","type":"string","enum":["PlainText","RichText"]},"fieldType":{"description":"Form-field subtype discriminator (only relevant when widget `type` is `FormField`).\n\n- `Text` — short text input (≤255 characters).\n- `Textarea` — long-form text.\n- `Email` — email address.\n- `Url` — website / URL.\n- `Number` — numeric input with optional unit and constraints.\n- `Date` — date or date+time picker.\n- `Select` — dropdown; user picks one option.\n- `MultiChoice` — checkboxes; user picks one or more options.\n- `MultiSelect` — Subtasks: a checklist of sub-items inside the task.\n- `Members` — assignee picker (selects organization users).\n- `File` — single file upload.\n- `MultiFile` — multi-file upload (in-app \"File Upload\").\n- `Document` — document approval field; links the task to a document review.\n- `Table` — rows × columns of cells; users fill cell values.\n- `SendRichEmail` — pre-written email embedded in the task; sent manually by the user or\n  automatically when the task is completed.\n- `Hidden` — only visible when editing the workflow; populated by integrations or default values.\n- `Snippet` — only visible when editing; passes static text or merge tags into automations.\n","type":"string","enum":["Date","Document","Email","File","Hidden","Members","MultiChoice","MultiFile","MultiSelect","Number","Select","SendRichEmail","Snippet","Table","Text","Textarea","Url"],"const":"Textarea"}}},{"title":"PublicApiUrlFormFieldConfig","type":"object","required":["fieldType"],"properties":{"defaultValue":{"description":"Default value pre-filled when a new workflow run is created.","type":"string"},"fieldType":{"description":"Form-field subtype discriminator (only relevant when widget `type` is `FormField`).\n\n- `Text` — short text input (≤255 characters).\n- `Textarea` — long-form text.\n- `Email` — email address.\n- `Url` — website / URL.\n- `Number` — numeric input with optional unit and constraints.\n- `Date` — date or date+time picker.\n- `Select` — dropdown; user picks one option.\n- `MultiChoice` — checkboxes; user picks one or more options.\n- `MultiSelect` — Subtasks: a checklist of sub-items inside the task.\n- `Members` — assignee picker (selects organization users).\n- `File` — single file upload.\n- `MultiFile` — multi-file upload (in-app \"File Upload\").\n- `Document` — document approval field; links the task to a document review.\n- `Table` — rows × columns of cells; users fill cell values.\n- `SendRichEmail` — pre-written email embedded in the task; sent manually by the user or\n  automatically when the task is completed.\n- `Hidden` — only visible when editing the workflow; populated by integrations or default values.\n- `Snippet` — only visible when editing; passes static text or merge tags into automations.\n","type":"string","enum":["Date","Document","Email","File","Hidden","Members","MultiChoice","MultiFile","MultiSelect","Number","Select","SendRichEmail","Snippet","Table","Text","Textarea","Url"],"const":"Url"}}}],"required":["fieldType"],"discriminator":{"propertyName":"fieldType","mapping":{"Date":"#/components/schemas/PublicApiDateFormFieldConfig","Document":"#/components/schemas/PublicApiDocumentFormFieldConfig","Email":"#/components/schemas/PublicApiEmailFormFieldConfig","File":"#/components/schemas/PublicApiFileFormFieldConfig","Hidden":"#/components/schemas/PublicApiHiddenFormFieldConfig","Members":"#/components/schemas/PublicApiMembersFormFieldConfig","MultiChoice":"#/components/schemas/PublicApiMultiChoiceFormFieldConfig","MultiFile":"#/components/schemas/PublicApiMultiFileFormFieldConfig","MultiSelect":"#/components/schemas/PublicApiMultiSelectFormFieldConfig","Number":"#/components/schemas/PublicApiNumberFormFieldConfig","Select":"#/components/schemas/PublicApiSelectFormFieldConfig","SendRichEmail":"#/components/schemas/PublicApiSendRichEmailFormFieldConfig","Snippet":"#/components/schemas/PublicApiSnippetFormFieldConfig","Table":"#/components/schemas/PublicApiTableFormFieldConfig","Text":"#/components/schemas/PublicApiTextFormFieldConfig","Textarea":"#/components/schemas/PublicApiTextareaFormFieldConfig","Url":"#/components/schemas/PublicApiUrlFormFieldConfig"}}},"constraints":{"title":"PublicApiFormFieldConstraints","description":"Field-specific validation constraints. Shape depends on `fieldType`.","oneOf":[{"title":"PublicApiDateFormFieldConstraints","type":"object","required":["fieldType"],"properties":{"afterDate":{"description":"Earliest accepted date (inclusive). Pair with `afterDateSourceType`.","type":"string","format":"date-time"},"beforeDate":{"description":"Latest accepted date (inclusive). Pair with `beforeDateSourceType`.","type":"string","format":"date-time"},"afterDateFormFieldWidgetGroupId":{"title":"EntityID","description":"When `afterDateSourceType=FormField`, the ID of the Date form field whose value is the lower bound.","type":"string"},"beforeDateFormFieldWidgetGroupId":{"title":"EntityID","description":"When `beforeDateSourceType=FormField`, the ID of the Date form field whose value is the upper bound.","type":"string"},"afterDateSourceType":{"description":"How the before/after constraint date is derived.\n\n- `SpecificDate` — an absolute date supplied as `afterDate` / `beforeDate`.\n- `FormFieldValue` — derived from another Date form field (`afterDateField` / `beforeDateField`).\n- `TaskDueDate` — relative to the containing task's due date.\n- `ChecklistStartDate` / `ChecklistDueDate` — relative to the workflow run's start or due date.\n","type":"string","enum":["SpecificDate","FormFieldValue","TaskDueDate","ChecklistStartDate","ChecklistDueDate"]},"beforeDateSourceType":{"description":"How the before/after constraint date is derived.\n\n- `SpecificDate` — an absolute date supplied as `afterDate` / `beforeDate`.\n- `FormFieldValue` — derived from another Date form field (`afterDateField` / `beforeDateField`).\n- `TaskDueDate` — relative to the containing task's due date.\n- `ChecklistStartDate` / `ChecklistDueDate` — relative to the workflow run's start or due date.\n","type":"string","enum":["SpecificDate","FormFieldValue","TaskDueDate","ChecklistStartDate","ChecklistDueDate"]},"afterDateOffset":{"description":"ISO 8601 duration (e.g. `P7D`, `P1Y2M`).","type":"string"},"beforeDateOffset":{"description":"ISO 8601 duration (e.g. `P7D`, `P1Y2M`).","type":"string"},"fieldType":{"description":"Form-field subtype discriminator (only relevant when widget `type` is `FormField`).\n\n- `Text` — short text input (≤255 characters).\n- `Textarea` — long-form text.\n- `Email` — email address.\n- `Url` — website / URL.\n- `Number` — numeric input with optional unit and constraints.\n- `Date` — date or date+time picker.\n- `Select` — dropdown; user picks one option.\n- `MultiChoice` — checkboxes; user picks one or more options.\n- `MultiSelect` — Subtasks: a checklist of sub-items inside the task.\n- `Members` — assignee picker (selects organization users).\n- `File` — single file upload.\n- `MultiFile` — multi-file upload (in-app \"File Upload\").\n- `Document` — document approval field; links the task to a document review.\n- `Table` — rows × columns of cells; users fill cell values.\n- `SendRichEmail` — pre-written email embedded in the task; sent manually by the user or\n  automatically when the task is completed.\n- `Hidden` — only visible when editing the workflow; populated by integrations or default values.\n- `Snippet` — only visible when editing; passes static text or merge tags into automations.\n","type":"string","enum":["Date","Document","Email","File","Hidden","Members","MultiChoice","MultiFile","MultiSelect","Number","Select","SendRichEmail","Snippet","Table","Text","Textarea","Url"],"const":"Date"}}},{"title":"PublicApiEmailFormFieldConstraints","type":"object","required":["fieldType"],"properties":{"domains":{"description":"Allowed (or blocked, depending on `restriction`) email domains for this field.","type":"array","items":{"type":"string"}},"restriction":{"description":"How the `domains` list filters allowed email addresses.\n\n- `Allow` — only emails whose domain is in the list are accepted.\n- `Block` — emails whose domain is in the list are rejected; all others accepted.\n","type":"string","enum":["Allow","Block"]},"fieldType":{"description":"Form-field subtype discriminator (only relevant when widget `type` is `FormField`).\n\n- `Text` — short text input (≤255 characters).\n- `Textarea` — long-form text.\n- `Email` — email address.\n- `Url` — website / URL.\n- `Number` — numeric input with optional unit and constraints.\n- `Date` — date or date+time picker.\n- `Select` — dropdown; user picks one option.\n- `MultiChoice` — checkboxes; user picks one or more options.\n- `MultiSelect` — Subtasks: a checklist of sub-items inside the task.\n- `Members` — assignee picker (selects organization users).\n- `File` — single file upload.\n- `MultiFile` — multi-file upload (in-app \"File Upload\").\n- `Document` — document approval field; links the task to a document review.\n- `Table` — rows × columns of cells; users fill cell values.\n- `SendRichEmail` — pre-written email embedded in the task; sent manually by the user or\n  automatically when the task is completed.\n- `Hidden` — only visible when editing the workflow; populated by integrations or default values.\n- `Snippet` — only visible when editing; passes static text or merge tags into automations.\n","type":"string","enum":["Date","Document","Email","File","Hidden","Members","MultiChoice","MultiFile","MultiSelect","Number","Select","SendRichEmail","Snippet","Table","Text","Textarea","Url"],"const":"Email"}}},{"title":"PublicApiFileFormFieldConstraints","type":"object","required":["fieldType"],"properties":{"extensions":{"description":"Allowed file extensions, including the leading dot (e.g. `.pdf`, `.docx`).","type":"array","items":{"type":"string"}},"fieldType":{"description":"Form-field subtype discriminator (only relevant when widget `type` is `FormField`).\n\n- `Text` — short text input (≤255 characters).\n- `Textarea` — long-form text.\n- `Email` — email address.\n- `Url` — website / URL.\n- `Number` — numeric input with optional unit and constraints.\n- `Date` — date or date+time picker.\n- `Select` — dropdown; user picks one option.\n- `MultiChoice` — checkboxes; user picks one or more options.\n- `MultiSelect` — Subtasks: a checklist of sub-items inside the task.\n- `Members` — assignee picker (selects organization users).\n- `File` — single file upload.\n- `MultiFile` — multi-file upload (in-app \"File Upload\").\n- `Document` — document approval field; links the task to a document review.\n- `Table` — rows × columns of cells; users fill cell values.\n- `SendRichEmail` — pre-written email embedded in the task; sent manually by the user or\n  automatically when the task is completed.\n- `Hidden` — only visible when editing the workflow; populated by integrations or default values.\n- `Snippet` — only visible when editing; passes static text or merge tags into automations.\n","type":"string","enum":["Date","Document","Email","File","Hidden","Members","MultiChoice","MultiFile","MultiSelect","Number","Select","SendRichEmail","Snippet","Table","Text","Textarea","Url"],"const":"File"}}},{"title":"PublicApiMultiFileFormFieldConstraints","type":"object","required":["fieldType"],"properties":{"extensions":{"description":"Allowed file extensions, including the leading dot (e.g. `.pdf`, `.docx`).","type":"array","items":{"type":"string"}},"mode":{"description":"Whether the field accepts a single file or multiple files.\n\n- `Single` — only one file may be uploaded.\n- `Multiple` — multiple files may be uploaded.\n","type":"string","enum":["Multiple","Single"]},"fieldType":{"description":"Form-field subtype discriminator (only relevant when widget `type` is `FormField`).\n\n- `Text` — short text input (≤255 characters).\n- `Textarea` — long-form text.\n- `Email` — email address.\n- `Url` — website / URL.\n- `Number` — numeric input with optional unit and constraints.\n- `Date` — date or date+time picker.\n- `Select` — dropdown; user picks one option.\n- `MultiChoice` — checkboxes; user picks one or more options.\n- `MultiSelect` — Subtasks: a checklist of sub-items inside the task.\n- `Members` — assignee picker (selects organization users).\n- `File` — single file upload.\n- `MultiFile` — multi-file upload (in-app \"File Upload\").\n- `Document` — document approval field; links the task to a document review.\n- `Table` — rows × columns of cells; users fill cell values.\n- `SendRichEmail` — pre-written email embedded in the task; sent manually by the user or\n  automatically when the task is completed.\n- `Hidden` — only visible when editing the workflow; populated by integrations or default values.\n- `Snippet` — only visible when editing; passes static text or merge tags into automations.\n","type":"string","enum":["Date","Document","Email","File","Hidden","Members","MultiChoice","MultiFile","MultiSelect","Number","Select","SendRichEmail","Snippet","Table","Text","Textarea","Url"],"const":"MultiFile"}}},{"title":"PublicApiNumberFormFieldConstraints","type":"object","required":["fieldType"],"properties":{"minDigits":{"description":"Minimum number of digits.","type":"integer","format":"int32"},"maxDigits":{"description":"Maximum number of digits.","type":"integer","format":"int32"},"minValue":{"description":"Minimum numeric value.","type":"integer","format":"int32"},"maxValue":{"description":"Maximum numeric value.","type":"integer","format":"int32"},"decimalPlaces":{"description":"Number of decimal places to accept (0 means integers only).","type":"integer","format":"int32"},"allowNegative":{"description":"When `true`, negative numbers are accepted.","type":"boolean"},"fieldType":{"description":"Form-field subtype discriminator (only relevant when widget `type` is `FormField`).\n\n- `Text` — short text input (≤255 characters).\n- `Textarea` — long-form text.\n- `Email` — email address.\n- `Url` — website / URL.\n- `Number` — numeric input with optional unit and constraints.\n- `Date` — date or date+time picker.\n- `Select` — dropdown; user picks one option.\n- `MultiChoice` — checkboxes; user picks one or more options.\n- `MultiSelect` — Subtasks: a checklist of sub-items inside the task.\n- `Members` — assignee picker (selects organization users).\n- `File` — single file upload.\n- `MultiFile` — multi-file upload (in-app \"File Upload\").\n- `Document` — document approval field; links the task to a document review.\n- `Table` — rows × columns of cells; users fill cell values.\n- `SendRichEmail` — pre-written email embedded in the task; sent manually by the user or\n  automatically when the task is completed.\n- `Hidden` — only visible when editing the workflow; populated by integrations or default values.\n- `Snippet` — only visible when editing; passes static text or merge tags into automations.\n","type":"string","enum":["Date","Document","Email","File","Hidden","Members","MultiChoice","MultiFile","MultiSelect","Number","Select","SendRichEmail","Snippet","Table","Text","Textarea","Url"],"const":"Number"}}},{"title":"PublicApiTextFormFieldConstraints","type":"object","required":["fieldType"],"properties":{"min":{"description":"Inclusive lower bound.","type":"integer","format":"int32"},"max":{"description":"Inclusive upper bound.","type":"integer","format":"int32"},"fieldType":{"description":"Form-field subtype discriminator (only relevant when widget `type` is `FormField`).\n\n- `Text` — short text input (≤255 characters).\n- `Textarea` — long-form text.\n- `Email` — email address.\n- `Url` — website / URL.\n- `Number` — numeric input with optional unit and constraints.\n- `Date` — date or date+time picker.\n- `Select` — dropdown; user picks one option.\n- `MultiChoice` — checkboxes; user picks one or more options.\n- `MultiSelect` — Subtasks: a checklist of sub-items inside the task.\n- `Members` — assignee picker (selects organization users).\n- `File` — single file upload.\n- `MultiFile` — multi-file upload (in-app \"File Upload\").\n- `Document` — document approval field; links the task to a document review.\n- `Table` — rows × columns of cells; users fill cell values.\n- `SendRichEmail` — pre-written email embedded in the task; sent manually by the user or\n  automatically when the task is completed.\n- `Hidden` — only visible when editing the workflow; populated by integrations or default values.\n- `Snippet` — only visible when editing; passes static text or merge tags into automations.\n","type":"string","enum":["Date","Document","Email","File","Hidden","Members","MultiChoice","MultiFile","MultiSelect","Number","Select","SendRichEmail","Snippet","Table","Text","Textarea","Url"],"const":"Text"}}},{"title":"PublicApiTextareaFormFieldConstraints","type":"object","required":["fieldType"],"properties":{"min":{"description":"Inclusive lower bound.","type":"integer","format":"int32"},"max":{"description":"Inclusive upper bound.","type":"integer","format":"int32"},"fieldType":{"description":"Form-field subtype discriminator (only relevant when widget `type` is `FormField`).\n\n- `Text` — short text input (≤255 characters).\n- `Textarea` — long-form text.\n- `Email` — email address.\n- `Url` — website / URL.\n- `Number` — numeric input with optional unit and constraints.\n- `Date` — date or date+time picker.\n- `Select` — dropdown; user picks one option.\n- `MultiChoice` — checkboxes; user picks one or more options.\n- `MultiSelect` — Subtasks: a checklist of sub-items inside the task.\n- `Members` — assignee picker (selects organization users).\n- `File` — single file upload.\n- `MultiFile` — multi-file upload (in-app \"File Upload\").\n- `Document` — document approval field; links the task to a document review.\n- `Table` — rows × columns of cells; users fill cell values.\n- `SendRichEmail` — pre-written email embedded in the task; sent manually by the user or\n  automatically when the task is completed.\n- `Hidden` — only visible when editing the workflow; populated by integrations or default values.\n- `Snippet` — only visible when editing; passes static text or merge tags into automations.\n","type":"string","enum":["Date","Document","Email","File","Hidden","Members","MultiChoice","MultiFile","MultiSelect","Number","Select","SendRichEmail","Snippet","Table","Text","Textarea","Url"],"const":"Textarea"}}}],"required":["fieldType"],"discriminator":{"propertyName":"fieldType","mapping":{"Date":"#/components/schemas/PublicApiDateFormFieldConstraints","Email":"#/components/schemas/PublicApiEmailFormFieldConstraints","File":"#/components/schemas/PublicApiFileFormFieldConstraints","MultiFile":"#/components/schemas/PublicApiMultiFileFormFieldConstraints","Number":"#/components/schemas/PublicApiNumberFormFieldConstraints","Text":"#/components/schemas/PublicApiTextFormFieldConstraints","Textarea":"#/components/schemas/PublicApiTextareaFormFieldConstraints"}}},"links":{"description":"Navigable HATEOAS links to related resources. Each entry has a `name` (RFC-5988 relation), an `href` URL, and a `type` (`Api` or `App`).","type":"array","items":{"title":"Link","description":"A HATEOAS link to a related resource. Use these to navigate between resources without constructing URLs by hand.","type":"object","required":["name","href","type"],"properties":{"name":{"description":"Standard link relation name (RFC 5988) indicating this link's role. Common values include `self`, `edit`, `related`, `previous`, `next`.","type":"string"},"href":{"title":"Uri","description":"URL of the linked resource.","examples":["https://api.process.st/api/v1.1/resource/XXX"],"type":"string"},"rel":{"description":"Optional. The kind of resource this link points to (e.g. `Workflow`, `Task`, `Comment`).","type":"string","enum":["Approval Task","Approvals","Assignees","Comment","Data Set Records","Data Sets","Form Field Values","Subject Task","Task","Tasks","Users","Webhook","Workflow","Workflow Run"]},"type":{"description":"Whether this link targets an API endpoint or a Process Street app URL. `Api` — a callable API endpoint you can fetch directly. `App` — a browser-facing URL in the Process Street UI.","type":"string","enum":["Api","App"]}}}},"type":{"title":"WidgetType","description":"Widget kind discriminator.\n\n- `FormField` — collects user input (Text, Number, Date, etc. — see `fieldType`).\n- `Text` — rich text content displayed on the task.\n- `Image` — image content displayed on the task.\n- `File` — downloadable file attached to the task.\n- `Video` — video content (uploaded or linked from a hosting service).\n- `Embed` — embedded external content via URL.\n- `CrossLink` — link to another workflow or page.\n","type":"string","enum":["FormField","Text","Image","File","Video","Embed","CrossLink"]}}},{"title":"PublicApiImageWidget","type":"object","required":["hiddenByDefault","id","taskId","createdDate","createdBy","updatedDate","updatedBy","type"],"properties":{"hiddenByDefault":{"description":"When `true`, the widget is hidden by default; conditional logic rules can reveal it at runtime. Defaults to `false`.","type":"boolean"},"id":{"description":"The ID of the Widget","examples":["s_ab8fn58g4BoX6ZlHp7xQ"],"type":"string"},"taskId":{"description":"The ID of the Task","examples":["s_ab8fn58g4BoX6ZlHp7xQ"],"type":"string"},"createdDate":{"description":"When the resource was first created. ISO-8601 UTC.","type":"string","format":"date-time"},"createdBy":{"description":"User who created the resource.","examples":[{"id":"iUu2eOU2Q-sBoX6ZjZV9pQ","email":"jane.doe@example.com","username":"Jane Doe"}],"type":"object","required":["id","email","username"],"properties":{"id":{"title":"EntityID","description":"The resource's ID.","type":"string"},"email":{"description":"The user's email address (also their login identifier).","type":"string"},"username":{"description":"The user's display name (e.g. `Jane Doe`).","type":"string"}}},"updatedDate":{"description":"When the resource was last modified. ISO-8601 UTC.","type":"string","format":"date-time"},"updatedBy":{"description":"User who last modified the resource.","examples":[{"id":"iUu2eOU2Q-sBoX6ZjZV9pQ","email":"jane.doe@example.com","username":"Jane Doe"}],"type":"object","required":["id","email","username"],"properties":{"id":{"title":"EntityID","description":"The resource's ID.","type":"string"},"email":{"description":"The user's email address (also their login identifier).","type":"string"},"username":{"description":"The user's display name (e.g. `Jane Doe`).","type":"string"}}},"caption":{"description":"Caption text rendered with the image.","type":"string"},"file":{"title":"PublicApiWidgetFile","description":"Uploaded file reference. Use the upload endpoint to attach content.","type":"object","required":["id","name","mimeType","size"],"properties":{"id":{"title":"EntityID","description":"The resource's ID.","type":"string"},"name":{"description":"Display name.","type":"string"},"mimeType":{"description":"MIME type detected at upload time (e.g. `image/png`, `application/pdf`).","type":"string"},"size":{"description":"File size in bytes.","type":"integer","format":"int64"}}},"links":{"description":"Navigable HATEOAS links to related resources. Each entry has a `name` (RFC-5988 relation), an `href` URL, and a `type` (`Api` or `App`).","type":"array","items":{"title":"Link","description":"A HATEOAS link to a related resource. Use these to navigate between resources without constructing URLs by hand.","type":"object","required":["name","href","type"],"properties":{"name":{"description":"Standard link relation name (RFC 5988) indicating this link's role. Common values include `self`, `edit`, `related`, `previous`, `next`.","type":"string"},"href":{"title":"Uri","description":"URL of the linked resource.","examples":["https://api.process.st/api/v1.1/resource/XXX"],"type":"string"},"rel":{"description":"Optional. The kind of resource this link points to (e.g. `Workflow`, `Task`, `Comment`).","type":"string","enum":["Approval Task","Approvals","Assignees","Comment","Data Set Records","Data Sets","Form Field Values","Subject Task","Task","Tasks","Users","Webhook","Workflow","Workflow Run"]},"type":{"description":"Whether this link targets an API endpoint or a Process Street app URL. `Api` — a callable API endpoint you can fetch directly. `App` — a browser-facing URL in the Process Street UI.","type":"string","enum":["Api","App"]}}}},"type":{"title":"WidgetType","description":"Widget kind discriminator.\n\n- `FormField` — collects user input (Text, Number, Date, etc. — see `fieldType`).\n- `Text` — rich text content displayed on the task.\n- `Image` — image content displayed on the task.\n- `File` — downloadable file attached to the task.\n- `Video` — video content (uploaded or linked from a hosting service).\n- `Embed` — embedded external content via URL.\n- `CrossLink` — link to another workflow or page.\n","type":"string","enum":["FormField","Text","Image","File","Video","Embed","CrossLink"]}}},{"title":"PublicApiTextWidget","type":"object","required":["hiddenByDefault","id","taskId","createdDate","createdBy","updatedDate","updatedBy","type"],"properties":{"hiddenByDefault":{"description":"When `true`, the widget is hidden by default; conditional logic rules can reveal it at runtime. Defaults to `false`.","type":"boolean"},"id":{"description":"The ID of the Widget","examples":["vl-PQ1FTbSsBoX6ZlG54Hg"],"type":"string"},"taskId":{"description":"The ID of the Task","examples":["vl-PQ1FTbSsBoX6ZlG54Hg"],"type":"string"},"createdDate":{"description":"When the resource was first created. ISO-8601 UTC.","type":"string","format":"date-time"},"createdBy":{"description":"User who created the resource.","examples":[{"id":"iUu2eOU2Q-sBoX6ZjZV9pQ","email":"jane.doe@example.com","username":"Jane Doe"}],"type":"object","required":["id","email","username"],"properties":{"id":{"title":"EntityID","description":"The resource's ID.","type":"string"},"email":{"description":"The user's email address (also their login identifier).","type":"string"},"username":{"description":"The user's display name (e.g. `Jane Doe`).","type":"string"}}},"updatedDate":{"description":"When the resource was last modified. ISO-8601 UTC.","type":"string","format":"date-time"},"updatedBy":{"description":"User who last modified the resource.","examples":[{"id":"iUu2eOU2Q-sBoX6ZjZV9pQ","email":"jane.doe@example.com","username":"Jane Doe"}],"type":"object","required":["id","email","username"],"properties":{"id":{"title":"EntityID","description":"The resource's ID.","type":"string"},"email":{"description":"The user's email address (also their login identifier).","type":"string"},"username":{"description":"The user's display name (e.g. `Jane Doe`).","type":"string"}}},"content":{"description":"Rich text content. May contain merge tags.","type":"string"},"links":{"description":"Navigable HATEOAS links to related resources. Each entry has a `name` (RFC-5988 relation), an `href` URL, and a `type` (`Api` or `App`).","type":"array","items":{"title":"Link","description":"A HATEOAS link to a related resource. Use these to navigate between resources without constructing URLs by hand.","type":"object","required":["name","href","type"],"properties":{"name":{"description":"Standard link relation name (RFC 5988) indicating this link's role. Common values include `self`, `edit`, `related`, `previous`, `next`.","type":"string"},"href":{"title":"Uri","description":"URL of the linked resource.","examples":["https://api.process.st/api/v1.1/resource/XXX"],"type":"string"},"rel":{"description":"Optional. The kind of resource this link points to (e.g. `Workflow`, `Task`, `Comment`).","type":"string","enum":["Approval Task","Approvals","Assignees","Comment","Data Set Records","Data Sets","Form Field Values","Subject Task","Task","Tasks","Users","Webhook","Workflow","Workflow Run"]},"type":{"description":"Whether this link targets an API endpoint or a Process Street app URL. `Api` — a callable API endpoint you can fetch directly. `App` — a browser-facing URL in the Process Street UI.","type":"string","enum":["Api","App"]}}}},"type":{"title":"WidgetType","description":"Widget kind discriminator.\n\n- `FormField` — collects user input (Text, Number, Date, etc. — see `fieldType`).\n- `Text` — rich text content displayed on the task.\n- `Image` — image content displayed on the task.\n- `File` — downloadable file attached to the task.\n- `Video` — video content (uploaded or linked from a hosting service).\n- `Embed` — embedded external content via URL.\n- `CrossLink` — link to another workflow or page.\n","type":"string","enum":["FormField","Text","Image","File","Video","Embed","CrossLink"]}}},{"title":"PublicApiVideoWidget","type":"object","required":["hiddenByDefault","id","taskId","createdDate","createdBy","updatedDate","updatedBy","type"],"properties":{"hiddenByDefault":{"description":"When `true`, the widget is hidden by default; conditional logic rules can reveal it at runtime. Defaults to `false`.","type":"boolean"},"id":{"description":"The ID of the Widget","examples":["oQyz9nbHMGEBoX6ZlJt-lA"],"type":"string"},"taskId":{"description":"The ID of the Task","examples":["oQyz9nbHMGEBoX6ZlJt-lA"],"type":"string"},"createdDate":{"description":"When the resource was first created. ISO-8601 UTC.","type":"string","format":"date-time"},"createdBy":{"description":"User who created the resource.","examples":[{"id":"iUu2eOU2Q-sBoX6ZjZV9pQ","email":"jane.doe@example.com","username":"Jane Doe"}],"type":"object","required":["id","email","username"],"properties":{"id":{"title":"EntityID","description":"The resource's ID.","type":"string"},"email":{"description":"The user's email address (also their login identifier).","type":"string"},"username":{"description":"The user's display name (e.g. `Jane Doe`).","type":"string"}}},"updatedDate":{"description":"When the resource was last modified. ISO-8601 UTC.","type":"string","format":"date-time"},"updatedBy":{"description":"User who last modified the resource.","examples":[{"id":"iUu2eOU2Q-sBoX6ZjZV9pQ","email":"jane.doe@example.com","username":"Jane Doe"}],"type":"object","required":["id","email","username"],"properties":{"id":{"title":"EntityID","description":"The resource's ID.","type":"string"},"email":{"description":"The user's email address (also their login identifier).","type":"string"},"username":{"description":"The user's display name (e.g. `Jane Doe`).","type":"string"}}},"description":{"description":"Optional long-form description.","type":"string"},"url":{"description":"Target URL.","type":"string"},"file":{"title":"PublicApiWidgetFile","description":"Uploaded file reference. Use the upload endpoint to attach content.","type":"object","required":["id","name","mimeType","size"],"properties":{"id":{"title":"EntityID","description":"The resource's ID.","type":"string"},"name":{"description":"Display name.","type":"string"},"mimeType":{"description":"MIME type detected at upload time (e.g. `image/png`, `application/pdf`).","type":"string"},"size":{"description":"File size in bytes.","type":"integer","format":"int64"}}},"links":{"description":"Navigable HATEOAS links to related resources. Each entry has a `name` (RFC-5988 relation), an `href` URL, and a `type` (`Api` or `App`).","type":"array","items":{"title":"Link","description":"A HATEOAS link to a related resource. Use these to navigate between resources without constructing URLs by hand.","type":"object","required":["name","href","type"],"properties":{"name":{"description":"Standard link relation name (RFC 5988) indicating this link's role. Common values include `self`, `edit`, `related`, `previous`, `next`.","type":"string"},"href":{"title":"Uri","description":"URL of the linked resource.","examples":["https://api.process.st/api/v1.1/resource/XXX"],"type":"string"},"rel":{"description":"Optional. The kind of resource this link points to (e.g. `Workflow`, `Task`, `Comment`).","type":"string","enum":["Approval Task","Approvals","Assignees","Comment","Data Set Records","Data Sets","Form Field Values","Subject Task","Task","Tasks","Users","Webhook","Workflow","Workflow Run"]},"type":{"description":"Whether this link targets an API endpoint or a Process Street app URL. `Api` — a callable API endpoint you can fetch directly. `App` — a browser-facing URL in the Process Street UI.","type":"string","enum":["Api","App"]}}}},"type":{"title":"WidgetType","description":"Widget kind discriminator.\n\n- `FormField` — collects user input (Text, Number, Date, etc. — see `fieldType`).\n- `Text` — rich text content displayed on the task.\n- `Image` — image content displayed on the task.\n- `File` — downloadable file attached to the task.\n- `Video` — video content (uploaded or linked from a hosting service).\n- `Embed` — embedded external content via URL.\n- `CrossLink` — link to another workflow or page.\n","type":"string","enum":["FormField","Text","Image","File","Video","Embed","CrossLink"]}}}],"required":["type"],"discriminator":{"propertyName":"type","mapping":{"CrossLink":"#/components/schemas/PublicApiCrossLinkWidget","Embed":"#/components/schemas/PublicApiEmbedWidget","File":"#/components/schemas/PublicApiFileWidget","FormField":"#/components/schemas/PublicApiFormFieldWidget","Image":"#/components/schemas/PublicApiImageWidget","Text":"#/components/schemas/PublicApiTextWidget","Video":"#/components/schemas/PublicApiVideoWidget"}}}},"links":{"description":"Pagination links. When the result has more pages, look for an entry with `name: \"next\"` — its `href` is the URL to fetch the next page. Absence of `next` means there are no more pages. For single-resource responses this array is typically empty.","type":"array","items":{"title":"Link","description":"A HATEOAS link to a related resource. Use these to navigate between resources without constructing URLs by hand.","type":"object","required":["name","href","type"],"properties":{"name":{"description":"Standard link relation name (RFC 5988) indicating this link's role. Common values include `self`, `edit`, `related`, `previous`, `next`.","type":"string"},"href":{"title":"Uri","description":"URL of the linked resource.","examples":["https://api.process.st/api/v1.1/resource/XXX"],"type":"string"},"rel":{"description":"Optional. The kind of resource this link points to (e.g. `Workflow`, `Task`, `Comment`).","type":"string","enum":["Approval Task","Approvals","Assignees","Comment","Data Set Records","Data Sets","Form Field Values","Subject Task","Task","Tasks","Users","Webhook","Workflow","Workflow Run"]},"type":{"description":"Whether this link targets an API endpoint or a Process Street app URL. `Api` — a callable API endpoint you can fetch directly. `App` — a browser-facing URL in the Process Street UI.","type":"string","enum":["Api","App"]}}}}}},"PublicApiWidgetResponse":{"title":"PublicApiWidgetResponse","type":"object","required":["data"],"properties":{"data":{"title":"PublicApiWidget","oneOf":[{"title":"PublicApiCrossLinkWidget","type":"object","required":["hiddenByDefault","id","taskId","createdDate","createdBy","updatedDate","updatedBy","type"],"properties":{"hiddenByDefault":{"description":"When `true`, the widget is hidden by default; conditional logic rules can reveal it at runtime. Defaults to `false`.","type":"boolean"},"id":{"description":"The ID of the Widget","examples":["sQhasVLlQ6ABoX6ZlLJ8wQ"],"type":"string"},"taskId":{"description":"The ID of the Task","examples":["sQhasVLlQ6ABoX6ZlLJ8wQ"],"type":"string"},"createdDate":{"description":"When the resource was first created. ISO-8601 UTC.","type":"string","format":"date-time"},"createdBy":{"description":"User who created the resource.","examples":[{"id":"iUu2eOU2Q-sBoX6ZjZV9pQ","email":"jane.doe@example.com","username":"Jane Doe"}],"type":"object","required":["id","email","username"],"properties":{"id":{"title":"EntityID","description":"The resource's ID.","type":"string"},"email":{"description":"The user's email address (also their login identifier).","type":"string"},"username":{"description":"The user's display name (e.g. `Jane Doe`).","type":"string"}}},"updatedDate":{"description":"When the resource was last modified. ISO-8601 UTC.","type":"string","format":"date-time"},"updatedBy":{"description":"User who last modified the resource.","examples":[{"id":"iUu2eOU2Q-sBoX6ZjZV9pQ","email":"jane.doe@example.com","username":"Jane Doe"}],"type":"object","required":["id","email","username"],"properties":{"id":{"title":"EntityID","description":"The resource's ID.","type":"string"},"email":{"description":"The user's email address (also their login identifier).","type":"string"},"username":{"description":"The user's display name (e.g. `Jane Doe`).","type":"string"}}},"linkedTemplateId":{"title":"EntityID","description":"The ID of the linked workflow or page that this CrossLink widget points to.","type":"string"},"links":{"description":"Navigable HATEOAS links to related resources. Each entry has a `name` (RFC-5988 relation), an `href` URL, and a `type` (`Api` or `App`).","type":"array","items":{"title":"Link","description":"A HATEOAS link to a related resource. Use these to navigate between resources without constructing URLs by hand.","type":"object","required":["name","href","type"],"properties":{"name":{"description":"Standard link relation name (RFC 5988) indicating this link's role. Common values include `self`, `edit`, `related`, `previous`, `next`.","type":"string"},"href":{"title":"Uri","description":"URL of the linked resource.","examples":["https://api.process.st/api/v1.1/resource/XXX"],"type":"string"},"rel":{"description":"Optional. The kind of resource this link points to (e.g. `Workflow`, `Task`, `Comment`).","type":"string","enum":["Approval Task","Approvals","Assignees","Comment","Data Set Records","Data Sets","Form Field Values","Subject Task","Task","Tasks","Users","Webhook","Workflow","Workflow Run"]},"type":{"description":"Whether this link targets an API endpoint or a Process Street app URL. `Api` — a callable API endpoint you can fetch directly. `App` — a browser-facing URL in the Process Street UI.","type":"string","enum":["Api","App"]}}}},"type":{"title":"WidgetType","description":"Widget kind discriminator.\n\n- `FormField` — collects user input (Text, Number, Date, etc. — see `fieldType`).\n- `Text` — rich text content displayed on the task.\n- `Image` — image content displayed on the task.\n- `File` — downloadable file attached to the task.\n- `Video` — video content (uploaded or linked from a hosting service).\n- `Embed` — embedded external content via URL.\n- `CrossLink` — link to another workflow or page.\n","type":"string","enum":["FormField","Text","Image","File","Video","Embed","CrossLink"]}}},{"title":"PublicApiEmbedWidget","type":"object","required":["hiddenByDefault","id","taskId","createdDate","createdBy","updatedDate","updatedBy","type"],"properties":{"hiddenByDefault":{"description":"When `true`, the widget is hidden by default; conditional logic rules can reveal it at runtime. Defaults to `false`.","type":"boolean"},"id":{"description":"The ID of the Widget","examples":["t2jRHTZdhq4BoX6ZlKd0ng"],"type":"string"},"taskId":{"description":"The ID of the Task","examples":["t2jRHTZdhq4BoX6ZlKd0ng"],"type":"string"},"createdDate":{"description":"When the resource was first created. ISO-8601 UTC.","type":"string","format":"date-time"},"createdBy":{"description":"User who created the resource.","examples":[{"id":"iUu2eOU2Q-sBoX6ZjZV9pQ","email":"jane.doe@example.com","username":"Jane Doe"}],"type":"object","required":["id","email","username"],"properties":{"id":{"title":"EntityID","description":"The resource's ID.","type":"string"},"email":{"description":"The user's email address (also their login identifier).","type":"string"},"username":{"description":"The user's display name (e.g. `Jane Doe`).","type":"string"}}},"updatedDate":{"description":"When the resource was last modified. ISO-8601 UTC.","type":"string","format":"date-time"},"updatedBy":{"description":"User who last modified the resource.","examples":[{"id":"iUu2eOU2Q-sBoX6ZjZV9pQ","email":"jane.doe@example.com","username":"Jane Doe"}],"type":"object","required":["id","email","username"],"properties":{"id":{"title":"EntityID","description":"The resource's ID.","type":"string"},"email":{"description":"The user's email address (also their login identifier).","type":"string"},"username":{"description":"The user's display name (e.g. `Jane Doe`).","type":"string"}}},"url":{"description":"Target URL.","type":"string"},"links":{"description":"Navigable HATEOAS links to related resources. Each entry has a `name` (RFC-5988 relation), an `href` URL, and a `type` (`Api` or `App`).","type":"array","items":{"title":"Link","description":"A HATEOAS link to a related resource. Use these to navigate between resources without constructing URLs by hand.","type":"object","required":["name","href","type"],"properties":{"name":{"description":"Standard link relation name (RFC 5988) indicating this link's role. Common values include `self`, `edit`, `related`, `previous`, `next`.","type":"string"},"href":{"title":"Uri","description":"URL of the linked resource.","examples":["https://api.process.st/api/v1.1/resource/XXX"],"type":"string"},"rel":{"description":"Optional. The kind of resource this link points to (e.g. `Workflow`, `Task`, `Comment`).","type":"string","enum":["Approval Task","Approvals","Assignees","Comment","Data Set Records","Data Sets","Form Field Values","Subject Task","Task","Tasks","Users","Webhook","Workflow","Workflow Run"]},"type":{"description":"Whether this link targets an API endpoint or a Process Street app URL. `Api` — a callable API endpoint you can fetch directly. `App` — a browser-facing URL in the Process Street UI.","type":"string","enum":["Api","App"]}}}},"type":{"title":"WidgetType","description":"Widget kind discriminator.\n\n- `FormField` — collects user input (Text, Number, Date, etc. — see `fieldType`).\n- `Text` — rich text content displayed on the task.\n- `Image` — image content displayed on the task.\n- `File` — downloadable file attached to the task.\n- `Video` — video content (uploaded or linked from a hosting service).\n- `Embed` — embedded external content via URL.\n- `CrossLink` — link to another workflow or page.\n","type":"string","enum":["FormField","Text","Image","File","Video","Embed","CrossLink"]}}},{"title":"PublicApiFileWidget","type":"object","required":["hiddenByDefault","id","taskId","createdDate","createdBy","updatedDate","updatedBy","type"],"properties":{"hiddenByDefault":{"description":"When `true`, the widget is hidden by default; conditional logic rules can reveal it at runtime. Defaults to `false`.","type":"boolean"},"id":{"description":"The ID of the Widget","examples":["jaG4K_pc8rMBoX6ZlI9-QA"],"type":"string"},"taskId":{"description":"The ID of the Task","examples":["jaG4K_pc8rMBoX6ZlI9-QA"],"type":"string"},"createdDate":{"description":"When the resource was first created. ISO-8601 UTC.","type":"string","format":"date-time"},"createdBy":{"description":"User who created the resource.","examples":[{"id":"iUu2eOU2Q-sBoX6ZjZV9pQ","email":"jane.doe@example.com","username":"Jane Doe"}],"type":"object","required":["id","email","username"],"properties":{"id":{"title":"EntityID","description":"The resource's ID.","type":"string"},"email":{"description":"The user's email address (also their login identifier).","type":"string"},"username":{"description":"The user's display name (e.g. `Jane Doe`).","type":"string"}}},"updatedDate":{"description":"When the resource was last modified. ISO-8601 UTC.","type":"string","format":"date-time"},"updatedBy":{"description":"User who last modified the resource.","examples":[{"id":"iUu2eOU2Q-sBoX6ZjZV9pQ","email":"jane.doe@example.com","username":"Jane Doe"}],"type":"object","required":["id","email","username"],"properties":{"id":{"title":"EntityID","description":"The resource's ID.","type":"string"},"email":{"description":"The user's email address (also their login identifier).","type":"string"},"username":{"description":"The user's display name (e.g. `Jane Doe`).","type":"string"}}},"description":{"description":"Optional long-form description.","type":"string"},"file":{"title":"PublicApiWidgetFile","description":"Uploaded file reference. Use the upload endpoint to attach content.","type":"object","required":["id","name","mimeType","size"],"properties":{"id":{"title":"EntityID","description":"The resource's ID.","type":"string"},"name":{"description":"Display name.","type":"string"},"mimeType":{"description":"MIME type detected at upload time (e.g. `image/png`, `application/pdf`).","type":"string"},"size":{"description":"File size in bytes.","type":"integer","format":"int64"}}},"links":{"description":"Navigable HATEOAS links to related resources. Each entry has a `name` (RFC-5988 relation), an `href` URL, and a `type` (`Api` or `App`).","type":"array","items":{"title":"Link","description":"A HATEOAS link to a related resource. Use these to navigate between resources without constructing URLs by hand.","type":"object","required":["name","href","type"],"properties":{"name":{"description":"Standard link relation name (RFC 5988) indicating this link's role. Common values include `self`, `edit`, `related`, `previous`, `next`.","type":"string"},"href":{"title":"Uri","description":"URL of the linked resource.","examples":["https://api.process.st/api/v1.1/resource/XXX"],"type":"string"},"rel":{"description":"Optional. The kind of resource this link points to (e.g. `Workflow`, `Task`, `Comment`).","type":"string","enum":["Approval Task","Approvals","Assignees","Comment","Data Set Records","Data Sets","Form Field Values","Subject Task","Task","Tasks","Users","Webhook","Workflow","Workflow Run"]},"type":{"description":"Whether this link targets an API endpoint or a Process Street app URL. `Api` — a callable API endpoint you can fetch directly. `App` — a browser-facing URL in the Process Street UI.","type":"string","enum":["Api","App"]}}}},"type":{"title":"WidgetType","description":"Widget kind discriminator.\n\n- `FormField` — collects user input (Text, Number, Date, etc. — see `fieldType`).\n- `Text` — rich text content displayed on the task.\n- `Image` — image content displayed on the task.\n- `File` — downloadable file attached to the task.\n- `Video` — video content (uploaded or linked from a hosting service).\n- `Embed` — embedded external content via URL.\n- `CrossLink` — link to another workflow or page.\n","type":"string","enum":["FormField","Text","Image","File","Video","Embed","CrossLink"]}}},{"title":"PublicApiFormFieldWidget","type":"object","required":["hiddenByDefault","id","taskId","createdDate","createdBy","updatedDate","updatedBy","fieldType","key","required","config","type"],"properties":{"hiddenByDefault":{"description":"When `true`, the widget is hidden by default; conditional logic rules can reveal it at runtime. Defaults to `false`.","type":"boolean"},"id":{"description":"The ID of the Widget","examples":["hVDWDyLQh8UBoX6Zk313Dg"],"type":"string"},"taskId":{"description":"The ID of the Task","examples":["hVDWDyLQh8UBoX6Zk313Dg"],"type":"string"},"createdDate":{"description":"When the resource was first created. ISO-8601 UTC.","type":"string","format":"date-time"},"createdBy":{"description":"User who created the resource.","examples":[{"id":"iUu2eOU2Q-sBoX6ZjZV9pQ","email":"jane.doe@example.com","username":"Jane Doe"}],"type":"object","required":["id","email","username"],"properties":{"id":{"title":"EntityID","description":"The resource's ID.","type":"string"},"email":{"description":"The user's email address (also their login identifier).","type":"string"},"username":{"description":"The user's display name (e.g. `Jane Doe`).","type":"string"}}},"updatedDate":{"description":"When the resource was last modified. ISO-8601 UTC.","type":"string","format":"date-time"},"updatedBy":{"description":"User who last modified the resource.","examples":[{"id":"iUu2eOU2Q-sBoX6ZjZV9pQ","email":"jane.doe@example.com","username":"Jane Doe"}],"type":"object","required":["id","email","username"],"properties":{"id":{"title":"EntityID","description":"The resource's ID.","type":"string"},"email":{"description":"The user's email address (also their login identifier).","type":"string"},"username":{"description":"The user's display name (e.g. `Jane Doe`).","type":"string"}}},"fieldType":{"description":"Form-field subtype discriminator (only relevant when widget `type` is `FormField`).\n\n- `Text` — short text input (≤255 characters).\n- `Textarea` — long-form text.\n- `Email` — email address.\n- `Url` — website / URL.\n- `Number` — numeric input with optional unit and constraints.\n- `Date` — date or date+time picker.\n- `Select` — dropdown; user picks one option.\n- `MultiChoice` — checkboxes; user picks one or more options.\n- `MultiSelect` — Subtasks: a checklist of sub-items inside the task.\n- `Members` — assignee picker (selects organization users).\n- `File` — single file upload.\n- `MultiFile` — multi-file upload (in-app \"File Upload\").\n- `Document` — document approval field; links the task to a document review.\n- `Table` — rows × columns of cells; users fill cell values.\n- `SendRichEmail` — pre-written email embedded in the task; sent manually by the user or\n  automatically when the task is completed.\n- `Hidden` — only visible when editing the workflow; populated by integrations or default values.\n- `Snippet` — only visible when editing; passes static text or merge tags into automations.\n","type":"string","enum":["Date","Document","Email","File","Hidden","Members","MultiChoice","MultiFile","MultiSelect","Number","Select","SendRichEmail","Snippet","Table","Text","Textarea","Url"]},"key":{"description":"Unique key used to identify this row across imports — matches the data set column referenced by the webhook's `keyColumn`.","type":"string"},"label":{"description":"Display label shown to the end user.","type":"string"},"required":{"description":"When `true`, the form field must have a value before its task can be completed.","type":"boolean"},"config":{"title":"PublicApiFormFieldConfig","description":"Field-specific configuration. Shape depends on `fieldType`.","oneOf":[{"title":"PublicApiDateFormFieldConfig","type":"object","required":["fieldType"],"properties":{"defaultValue":{"description":"Default value pre-filled when a new workflow run is created.","type":"string"},"timeOption":{"description":"How time-of-day is handled on this Date field.\n\n- `Included` — the field always captures both date and time.\n- `Excluded` — date only; time is never captured.\n- `Optional` — the user picks whether to include a time.\n","type":"string","enum":["Included","Excluded","Optional"]},"fieldType":{"description":"Form-field subtype discriminator (only relevant when widget `type` is `FormField`).\n\n- `Text` — short text input (≤255 characters).\n- `Textarea` — long-form text.\n- `Email` — email address.\n- `Url` — website / URL.\n- `Number` — numeric input with optional unit and constraints.\n- `Date` — date or date+time picker.\n- `Select` — dropdown; user picks one option.\n- `MultiChoice` — checkboxes; user picks one or more options.\n- `MultiSelect` — Subtasks: a checklist of sub-items inside the task.\n- `Members` — assignee picker (selects organization users).\n- `File` — single file upload.\n- `MultiFile` — multi-file upload (in-app \"File Upload\").\n- `Document` — document approval field; links the task to a document review.\n- `Table` — rows × columns of cells; users fill cell values.\n- `SendRichEmail` — pre-written email embedded in the task; sent manually by the user or\n  automatically when the task is completed.\n- `Hidden` — only visible when editing the workflow; populated by integrations or default values.\n- `Snippet` — only visible when editing; passes static text or merge tags into automations.\n","type":"string","enum":["Date","Document","Email","File","Hidden","Members","MultiChoice","MultiFile","MultiSelect","Number","Select","SendRichEmail","Snippet","Table","Text","Textarea","Url"],"const":"Date"}}},{"title":"PublicApiDocumentFormFieldConfig","type":"object","required":["reviewRequest","fieldType"],"properties":{"reviewRequest":{"description":"When `true`, the email requires explicit user review/send rather than auto-send.","type":"boolean"},"defaultValue":{"description":"Default value pre-filled when a new workflow run is created.","type":"string"},"fieldType":{"description":"Form-field subtype discriminator (only relevant when widget `type` is `FormField`).\n\n- `Text` — short text input (≤255 characters).\n- `Textarea` — long-form text.\n- `Email` — email address.\n- `Url` — website / URL.\n- `Number` — numeric input with optional unit and constraints.\n- `Date` — date or date+time picker.\n- `Select` — dropdown; user picks one option.\n- `MultiChoice` — checkboxes; user picks one or more options.\n- `MultiSelect` — Subtasks: a checklist of sub-items inside the task.\n- `Members` — assignee picker (selects organization users).\n- `File` — single file upload.\n- `MultiFile` — multi-file upload (in-app \"File Upload\").\n- `Document` — document approval field; links the task to a document review.\n- `Table` — rows × columns of cells; users fill cell values.\n- `SendRichEmail` — pre-written email embedded in the task; sent manually by the user or\n  automatically when the task is completed.\n- `Hidden` — only visible when editing the workflow; populated by integrations or default values.\n- `Snippet` — only visible when editing; passes static text or merge tags into automations.\n","type":"string","enum":["Date","Document","Email","File","Hidden","Members","MultiChoice","MultiFile","MultiSelect","Number","Select","SendRichEmail","Snippet","Table","Text","Textarea","Url"],"const":"Document"}}},{"title":"PublicApiEmailFormFieldConfig","type":"object","required":["fieldType"],"properties":{"placeholder":{"description":"Placeholder hint shown in the input when no value has been entered.","type":"string"},"defaultValue":{"description":"Default value pre-filled when a new workflow run is created.","type":"string"},"fieldType":{"description":"Form-field subtype discriminator (only relevant when widget `type` is `FormField`).\n\n- `Text` — short text input (≤255 characters).\n- `Textarea` — long-form text.\n- `Email` — email address.\n- `Url` — website / URL.\n- `Number` — numeric input with optional unit and constraints.\n- `Date` — date or date+time picker.\n- `Select` — dropdown; user picks one option.\n- `MultiChoice` — checkboxes; user picks one or more options.\n- `MultiSelect` — Subtasks: a checklist of sub-items inside the task.\n- `Members` — assignee picker (selects organization users).\n- `File` — single file upload.\n- `MultiFile` — multi-file upload (in-app \"File Upload\").\n- `Document` — document approval field; links the task to a document review.\n- `Table` — rows × columns of cells; users fill cell values.\n- `SendRichEmail` — pre-written email embedded in the task; sent manually by the user or\n  automatically when the task is completed.\n- `Hidden` — only visible when editing the workflow; populated by integrations or default values.\n- `Snippet` — only visible when editing; passes static text or merge tags into automations.\n","type":"string","enum":["Date","Document","Email","File","Hidden","Members","MultiChoice","MultiFile","MultiSelect","Number","Select","SendRichEmail","Snippet","Table","Text","Textarea","Url"],"const":"Email"}}},{"title":"PublicApiFileFormFieldConfig","type":"object","required":["fieldType"],"properties":{"placeholder":{"description":"Placeholder hint shown in the input when no value has been entered.","type":"string"},"extractTextContent":{"description":"When `true`, server extracts text from uploaded documents for use in merge tags.","type":"boolean"},"fieldType":{"description":"Form-field subtype discriminator (only relevant when widget `type` is `FormField`).\n\n- `Text` — short text input (≤255 characters).\n- `Textarea` — long-form text.\n- `Email` — email address.\n- `Url` — website / URL.\n- `Number` — numeric input with optional unit and constraints.\n- `Date` — date or date+time picker.\n- `Select` — dropdown; user picks one option.\n- `MultiChoice` — checkboxes; user picks one or more options.\n- `MultiSelect` — Subtasks: a checklist of sub-items inside the task.\n- `Members` — assignee picker (selects organization users).\n- `File` — single file upload.\n- `MultiFile` — multi-file upload (in-app \"File Upload\").\n- `Document` — document approval field; links the task to a document review.\n- `Table` — rows × columns of cells; users fill cell values.\n- `SendRichEmail` — pre-written email embedded in the task; sent manually by the user or\n  automatically when the task is completed.\n- `Hidden` — only visible when editing the workflow; populated by integrations or default values.\n- `Snippet` — only visible when editing; passes static text or merge tags into automations.\n","type":"string","enum":["Date","Document","Email","File","Hidden","Members","MultiChoice","MultiFile","MultiSelect","Number","Select","SendRichEmail","Snippet","Table","Text","Textarea","Url"],"const":"File"}}},{"title":"PublicApiHiddenFormFieldConfig","type":"object","required":["fieldType"],"properties":{"defaultValue":{"description":"Default value pre-filled when a new workflow run is created.","type":"string"},"fieldType":{"description":"Form-field subtype discriminator (only relevant when widget `type` is `FormField`).\n\n- `Text` — short text input (≤255 characters).\n- `Textarea` — long-form text.\n- `Email` — email address.\n- `Url` — website / URL.\n- `Number` — numeric input with optional unit and constraints.\n- `Date` — date or date+time picker.\n- `Select` — dropdown; user picks one option.\n- `MultiChoice` — checkboxes; user picks one or more options.\n- `MultiSelect` — Subtasks: a checklist of sub-items inside the task.\n- `Members` — assignee picker (selects organization users).\n- `File` — single file upload.\n- `MultiFile` — multi-file upload (in-app \"File Upload\").\n- `Document` — document approval field; links the task to a document review.\n- `Table` — rows × columns of cells; users fill cell values.\n- `SendRichEmail` — pre-written email embedded in the task; sent manually by the user or\n  automatically when the task is completed.\n- `Hidden` — only visible when editing the workflow; populated by integrations or default values.\n- `Snippet` — only visible when editing; passes static text or merge tags into automations.\n","type":"string","enum":["Date","Document","Email","File","Hidden","Members","MultiChoice","MultiFile","MultiSelect","Number","Select","SendRichEmail","Snippet","Table","Text","Textarea","Url"],"const":"Hidden"}}},{"title":"PublicApiMembersFormFieldConfig","type":"object","required":["fieldType"],"properties":{"defaultValue":{"description":"Default value pre-filled when a new workflow run is created.","type":"string"},"groupId":{"title":"EntityID","description":"The ID of an organization group.","type":"string"},"fieldType":{"description":"Form-field subtype discriminator (only relevant when widget `type` is `FormField`).\n\n- `Text` — short text input (≤255 characters).\n- `Textarea` — long-form text.\n- `Email` — email address.\n- `Url` — website / URL.\n- `Number` — numeric input with optional unit and constraints.\n- `Date` — date or date+time picker.\n- `Select` — dropdown; user picks one option.\n- `MultiChoice` — checkboxes; user picks one or more options.\n- `MultiSelect` — Subtasks: a checklist of sub-items inside the task.\n- `Members` — assignee picker (selects organization users).\n- `File` — single file upload.\n- `MultiFile` — multi-file upload (in-app \"File Upload\").\n- `Document` — document approval field; links the task to a document review.\n- `Table` — rows × columns of cells; users fill cell values.\n- `SendRichEmail` — pre-written email embedded in the task; sent manually by the user or\n  automatically when the task is completed.\n- `Hidden` — only visible when editing the workflow; populated by integrations or default values.\n- `Snippet` — only visible when editing; passes static text or merge tags into automations.\n","type":"string","enum":["Date","Document","Email","File","Hidden","Members","MultiChoice","MultiFile","MultiSelect","Number","Select","SendRichEmail","Snippet","Table","Text","Textarea","Url"],"const":"Members"}}},{"title":"PublicApiMultiChoiceFormFieldConfig","type":"object","required":["fieldType"],"properties":{"items":{"description":"Available options for selection-style form fields.","type":"array","items":{"title":"PublicApiFormFieldItem","type":"object","required":["name"],"properties":{"id":{"title":"EntityID","description":"The resource's ID.","type":"string"},"name":{"description":"Display name.","type":"string"}}}},"fieldType":{"description":"Form-field subtype discriminator (only relevant when widget `type` is `FormField`).\n\n- `Text` — short text input (≤255 characters).\n- `Textarea` — long-form text.\n- `Email` — email address.\n- `Url` — website / URL.\n- `Number` — numeric input with optional unit and constraints.\n- `Date` — date or date+time picker.\n- `Select` — dropdown; user picks one option.\n- `MultiChoice` — checkboxes; user picks one or more options.\n- `MultiSelect` — Subtasks: a checklist of sub-items inside the task.\n- `Members` — assignee picker (selects organization users).\n- `File` — single file upload.\n- `MultiFile` — multi-file upload (in-app \"File Upload\").\n- `Document` — document approval field; links the task to a document review.\n- `Table` — rows × columns of cells; users fill cell values.\n- `SendRichEmail` — pre-written email embedded in the task; sent manually by the user or\n  automatically when the task is completed.\n- `Hidden` — only visible when editing the workflow; populated by integrations or default values.\n- `Snippet` — only visible when editing; passes static text or merge tags into automations.\n","type":"string","enum":["Date","Document","Email","File","Hidden","Members","MultiChoice","MultiFile","MultiSelect","Number","Select","SendRichEmail","Snippet","Table","Text","Textarea","Url"],"const":"MultiChoice"}}},{"title":"PublicApiMultiFileFormFieldConfig","type":"object","required":["fieldType"],"properties":{"placeholder":{"description":"Placeholder hint shown in the input when no value has been entered.","type":"string"},"extractTextContent":{"description":"When `true`, server extracts text from uploaded documents for use in merge tags.","type":"boolean"},"fieldType":{"description":"Form-field subtype discriminator (only relevant when widget `type` is `FormField`).\n\n- `Text` — short text input (≤255 characters).\n- `Textarea` — long-form text.\n- `Email` — email address.\n- `Url` — website / URL.\n- `Number` — numeric input with optional unit and constraints.\n- `Date` — date or date+time picker.\n- `Select` — dropdown; user picks one option.\n- `MultiChoice` — checkboxes; user picks one or more options.\n- `MultiSelect` — Subtasks: a checklist of sub-items inside the task.\n- `Members` — assignee picker (selects organization users).\n- `File` — single file upload.\n- `MultiFile` — multi-file upload (in-app \"File Upload\").\n- `Document` — document approval field; links the task to a document review.\n- `Table` — rows × columns of cells; users fill cell values.\n- `SendRichEmail` — pre-written email embedded in the task; sent manually by the user or\n  automatically when the task is completed.\n- `Hidden` — only visible when editing the workflow; populated by integrations or default values.\n- `Snippet` — only visible when editing; passes static text or merge tags into automations.\n","type":"string","enum":["Date","Document","Email","File","Hidden","Members","MultiChoice","MultiFile","MultiSelect","Number","Select","SendRichEmail","Snippet","Table","Text","Textarea","Url"],"const":"MultiFile"}}},{"title":"PublicApiMultiSelectFormFieldConfig","type":"object","required":["fieldType"],"properties":{"items":{"description":"Available options for selection-style form fields.","type":"array","items":{"title":"PublicApiFormFieldItem","type":"object","required":["name"],"properties":{"id":{"title":"EntityID","description":"The resource's ID.","type":"string"},"name":{"description":"Display name.","type":"string"}}}},"fieldType":{"description":"Form-field subtype discriminator (only relevant when widget `type` is `FormField`).\n\n- `Text` — short text input (≤255 characters).\n- `Textarea` — long-form text.\n- `Email` — email address.\n- `Url` — website / URL.\n- `Number` — numeric input with optional unit and constraints.\n- `Date` — date or date+time picker.\n- `Select` — dropdown; user picks one option.\n- `MultiChoice` — checkboxes; user picks one or more options.\n- `MultiSelect` — Subtasks: a checklist of sub-items inside the task.\n- `Members` — assignee picker (selects organization users).\n- `File` — single file upload.\n- `MultiFile` — multi-file upload (in-app \"File Upload\").\n- `Document` — document approval field; links the task to a document review.\n- `Table` — rows × columns of cells; users fill cell values.\n- `SendRichEmail` — pre-written email embedded in the task; sent manually by the user or\n  automatically when the task is completed.\n- `Hidden` — only visible when editing the workflow; populated by integrations or default values.\n- `Snippet` — only visible when editing; passes static text or merge tags into automations.\n","type":"string","enum":["Date","Document","Email","File","Hidden","Members","MultiChoice","MultiFile","MultiSelect","Number","Select","SendRichEmail","Snippet","Table","Text","Textarea","Url"],"const":"MultiSelect"}}},{"title":"PublicApiNumberFormFieldConfig","type":"object","required":["fieldType"],"properties":{"placeholder":{"description":"Placeholder hint shown in the input when no value has been entered.","type":"string"},"defaultValue":{"description":"Default value pre-filled when a new workflow run is created.","type":"string"},"unit":{"description":"Unit label rendered next to the numeric value (e.g. `kg`, `$`, `%`).","type":"string"},"unitLocation":{"description":"Where the unit symbol appears relative to the number.\n\n- `prefix` — before the number (e.g. `$100`).\n- `suffix` — after the number (e.g. `100 USD`).\n","type":"string","enum":["prefix","suffix"]},"fieldType":{"description":"Form-field subtype discriminator (only relevant when widget `type` is `FormField`).\n\n- `Text` — short text input (≤255 characters).\n- `Textarea` — long-form text.\n- `Email` — email address.\n- `Url` — website / URL.\n- `Number` — numeric input with optional unit and constraints.\n- `Date` — date or date+time picker.\n- `Select` — dropdown; user picks one option.\n- `MultiChoice` — checkboxes; user picks one or more options.\n- `MultiSelect` — Subtasks: a checklist of sub-items inside the task.\n- `Members` — assignee picker (selects organization users).\n- `File` — single file upload.\n- `MultiFile` — multi-file upload (in-app \"File Upload\").\n- `Document` — document approval field; links the task to a document review.\n- `Table` — rows × columns of cells; users fill cell values.\n- `SendRichEmail` — pre-written email embedded in the task; sent manually by the user or\n  automatically when the task is completed.\n- `Hidden` — only visible when editing the workflow; populated by integrations or default values.\n- `Snippet` — only visible when editing; passes static text or merge tags into automations.\n","type":"string","enum":["Date","Document","Email","File","Hidden","Members","MultiChoice","MultiFile","MultiSelect","Number","Select","SendRichEmail","Snippet","Table","Text","Textarea","Url"],"const":"Number"}}},{"title":"PublicApiSelectFormFieldConfig","type":"object","required":["fieldType"],"properties":{"items":{"description":"Available options for selection-style form fields.","type":"array","items":{"title":"PublicApiFormFieldItem","type":"object","required":["name"],"properties":{"id":{"title":"EntityID","description":"The resource's ID.","type":"string"},"name":{"description":"Display name.","type":"string"}}}},"defaultValue":{"description":"Default value pre-filled when a new workflow run is created.","type":"string"},"fieldType":{"description":"Form-field subtype discriminator (only relevant when widget `type` is `FormField`).\n\n- `Text` — short text input (≤255 characters).\n- `Textarea` — long-form text.\n- `Email` — email address.\n- `Url` — website / URL.\n- `Number` — numeric input with optional unit and constraints.\n- `Date` — date or date+time picker.\n- `Select` — dropdown; user picks one option.\n- `MultiChoice` — checkboxes; user picks one or more options.\n- `MultiSelect` — Subtasks: a checklist of sub-items inside the task.\n- `Members` — assignee picker (selects organization users).\n- `File` — single file upload.\n- `MultiFile` — multi-file upload (in-app \"File Upload\").\n- `Document` — document approval field; links the task to a document review.\n- `Table` — rows × columns of cells; users fill cell values.\n- `SendRichEmail` — pre-written email embedded in the task; sent manually by the user or\n  automatically when the task is completed.\n- `Hidden` — only visible when editing the workflow; populated by integrations or default values.\n- `Snippet` — only visible when editing; passes static text or merge tags into automations.\n","type":"string","enum":["Date","Document","Email","File","Hidden","Members","MultiChoice","MultiFile","MultiSelect","Number","Select","SendRichEmail","Snippet","Table","Text","Textarea","Url"],"const":"Select"}}},{"title":"PublicApiSendRichEmailFormFieldConfig","type":"object","required":["bodyEditor","fieldType"],"properties":{"to":{"description":"Default recipient list (To). Comma-separated email addresses or merge tags.","type":"array","items":{"type":"string"}},"cc":{"description":"Default CC list. Comma-separated email addresses or merge tags.","type":"array","items":{"type":"string"}},"bcc":{"description":"Default BCC list. Comma-separated email addresses or merge tags.","type":"array","items":{"type":"string"}},"replyTo":{"description":"Default Reply-To address. An email address or merge tag.","type":"array","items":{"type":"string"}},"subject":{"description":"Default email subject. May contain merge tags.","type":"string"},"body":{"description":"Default email body. May contain merge tags.","type":"string"},"bodyEditor":{"description":"Editor used to author the email body.\n\n- `RichText` — rich-text editor with formatting.\n- `HTML` — raw HTML editor.\n- `PlainText` — plain text editor.\n","type":"string","enum":["RichText","HTML","PlainText"]},"editAllowed":{"description":"When `true`, users running the workflow can edit the email before sending.","type":"boolean"},"fieldType":{"description":"Form-field subtype discriminator (only relevant when widget `type` is `FormField`).\n\n- `Text` — short text input (≤255 characters).\n- `Textarea` — long-form text.\n- `Email` — email address.\n- `Url` — website / URL.\n- `Number` — numeric input with optional unit and constraints.\n- `Date` — date or date+time picker.\n- `Select` — dropdown; user picks one option.\n- `MultiChoice` — checkboxes; user picks one or more options.\n- `MultiSelect` — Subtasks: a checklist of sub-items inside the task.\n- `Members` — assignee picker (selects organization users).\n- `File` — single file upload.\n- `MultiFile` — multi-file upload (in-app \"File Upload\").\n- `Document` — document approval field; links the task to a document review.\n- `Table` — rows × columns of cells; users fill cell values.\n- `SendRichEmail` — pre-written email embedded in the task; sent manually by the user or\n  automatically when the task is completed.\n- `Hidden` — only visible when editing the workflow; populated by integrations or default values.\n- `Snippet` — only visible when editing; passes static text or merge tags into automations.\n","type":"string","enum":["Date","Document","Email","File","Hidden","Members","MultiChoice","MultiFile","MultiSelect","Number","Select","SendRichEmail","Snippet","Table","Text","Textarea","Url"],"const":"SendRichEmail"}}},{"title":"PublicApiSnippetFormFieldConfig","type":"object","required":["fieldType"],"properties":{"value":{"description":"The option's stored value.","type":"string"},"fieldType":{"description":"Form-field subtype discriminator (only relevant when widget `type` is `FormField`).\n\n- `Text` — short text input (≤255 characters).\n- `Textarea` — long-form text.\n- `Email` — email address.\n- `Url` — website / URL.\n- `Number` — numeric input with optional unit and constraints.\n- `Date` — date or date+time picker.\n- `Select` — dropdown; user picks one option.\n- `MultiChoice` — checkboxes; user picks one or more options.\n- `MultiSelect` — Subtasks: a checklist of sub-items inside the task.\n- `Members` — assignee picker (selects organization users).\n- `File` — single file upload.\n- `MultiFile` — multi-file upload (in-app \"File Upload\").\n- `Document` — document approval field; links the task to a document review.\n- `Table` — rows × columns of cells; users fill cell values.\n- `SendRichEmail` — pre-written email embedded in the task; sent manually by the user or\n  automatically when the task is completed.\n- `Hidden` — only visible when editing the workflow; populated by integrations or default values.\n- `Snippet` — only visible when editing; passes static text or merge tags into automations.\n","type":"string","enum":["Date","Document","Email","File","Hidden","Members","MultiChoice","MultiFile","MultiSelect","Number","Select","SendRichEmail","Snippet","Table","Text","Textarea","Url"],"const":"Snippet"}}},{"title":"PublicApiTableFormFieldConfig","type":"object","required":["fieldType"],"properties":{"columnDefs":{"description":"Data set column definitions (name + type per column).","type":"array","items":{"title":"PublicApiTableFormFieldColumn","type":"object","required":["id","name","columnType"],"properties":{"id":{"title":"EntityID","description":"The resource's ID.","type":"string"},"name":{"description":"Display name.","type":"string"},"columnType":{"description":"Data type a Table column accepts.\n\n- `Text` — free-form short text.\n","type":"string","enum":["Text"]}}}},"defaultValue":{"description":"Default value pre-filled when a new workflow run is created.","type":"string"},"fieldType":{"description":"Form-field subtype discriminator (only relevant when widget `type` is `FormField`).\n\n- `Text` — short text input (≤255 characters).\n- `Textarea` — long-form text.\n- `Email` — email address.\n- `Url` — website / URL.\n- `Number` — numeric input with optional unit and constraints.\n- `Date` — date or date+time picker.\n- `Select` — dropdown; user picks one option.\n- `MultiChoice` — checkboxes; user picks one or more options.\n- `MultiSelect` — Subtasks: a checklist of sub-items inside the task.\n- `Members` — assignee picker (selects organization users).\n- `File` — single file upload.\n- `MultiFile` — multi-file upload (in-app \"File Upload\").\n- `Document` — document approval field; links the task to a document review.\n- `Table` — rows × columns of cells; users fill cell values.\n- `SendRichEmail` — pre-written email embedded in the task; sent manually by the user or\n  automatically when the task is completed.\n- `Hidden` — only visible when editing the workflow; populated by integrations or default values.\n- `Snippet` — only visible when editing; passes static text or merge tags into automations.\n","type":"string","enum":["Date","Document","Email","File","Hidden","Members","MultiChoice","MultiFile","MultiSelect","Number","Select","SendRichEmail","Snippet","Table","Text","Textarea","Url"],"const":"Table"}}},{"title":"PublicApiTextFormFieldConfig","type":"object","required":["fieldType"],"properties":{"placeholder":{"description":"Placeholder hint shown in the input when no value has been entered.","type":"string"},"defaultValue":{"description":"Default value pre-filled when a new workflow run is created.","type":"string"},"fieldType":{"description":"Form-field subtype discriminator (only relevant when widget `type` is `FormField`).\n\n- `Text` — short text input (≤255 characters).\n- `Textarea` — long-form text.\n- `Email` — email address.\n- `Url` — website / URL.\n- `Number` — numeric input with optional unit and constraints.\n- `Date` — date or date+time picker.\n- `Select` — dropdown; user picks one option.\n- `MultiChoice` — checkboxes; user picks one or more options.\n- `MultiSelect` — Subtasks: a checklist of sub-items inside the task.\n- `Members` — assignee picker (selects organization users).\n- `File` — single file upload.\n- `MultiFile` — multi-file upload (in-app \"File Upload\").\n- `Document` — document approval field; links the task to a document review.\n- `Table` — rows × columns of cells; users fill cell values.\n- `SendRichEmail` — pre-written email embedded in the task; sent manually by the user or\n  automatically when the task is completed.\n- `Hidden` — only visible when editing the workflow; populated by integrations or default values.\n- `Snippet` — only visible when editing; passes static text or merge tags into automations.\n","type":"string","enum":["Date","Document","Email","File","Hidden","Members","MultiChoice","MultiFile","MultiSelect","Number","Select","SendRichEmail","Snippet","Table","Text","Textarea","Url"],"const":"Text"}}},{"title":"PublicApiTextareaFormFieldConfig","type":"object","required":["fieldType"],"properties":{"placeholder":{"description":"Placeholder hint shown in the input when no value has been entered.","type":"string"},"defaultValue":{"description":"Default value pre-filled when a new workflow run is created.","type":"string"},"format":{"description":"Editor style for this Textarea field.\n\n- `PlainText` — plain text.\n- `RichText` — rich-text editor with formatting (bold, lists, links, etc.).\n","type":"string","enum":["PlainText","RichText"]},"fieldType":{"description":"Form-field subtype discriminator (only relevant when widget `type` is `FormField`).\n\n- `Text` — short text input (≤255 characters).\n- `Textarea` — long-form text.\n- `Email` — email address.\n- `Url` — website / URL.\n- `Number` — numeric input with optional unit and constraints.\n- `Date` — date or date+time picker.\n- `Select` — dropdown; user picks one option.\n- `MultiChoice` — checkboxes; user picks one or more options.\n- `MultiSelect` — Subtasks: a checklist of sub-items inside the task.\n- `Members` — assignee picker (selects organization users).\n- `File` — single file upload.\n- `MultiFile` — multi-file upload (in-app \"File Upload\").\n- `Document` — document approval field; links the task to a document review.\n- `Table` — rows × columns of cells; users fill cell values.\n- `SendRichEmail` — pre-written email embedded in the task; sent manually by the user or\n  automatically when the task is completed.\n- `Hidden` — only visible when editing the workflow; populated by integrations or default values.\n- `Snippet` — only visible when editing; passes static text or merge tags into automations.\n","type":"string","enum":["Date","Document","Email","File","Hidden","Members","MultiChoice","MultiFile","MultiSelect","Number","Select","SendRichEmail","Snippet","Table","Text","Textarea","Url"],"const":"Textarea"}}},{"title":"PublicApiUrlFormFieldConfig","type":"object","required":["fieldType"],"properties":{"defaultValue":{"description":"Default value pre-filled when a new workflow run is created.","type":"string"},"fieldType":{"description":"Form-field subtype discriminator (only relevant when widget `type` is `FormField`).\n\n- `Text` — short text input (≤255 characters).\n- `Textarea` — long-form text.\n- `Email` — email address.\n- `Url` — website / URL.\n- `Number` — numeric input with optional unit and constraints.\n- `Date` — date or date+time picker.\n- `Select` — dropdown; user picks one option.\n- `MultiChoice` — checkboxes; user picks one or more options.\n- `MultiSelect` — Subtasks: a checklist of sub-items inside the task.\n- `Members` — assignee picker (selects organization users).\n- `File` — single file upload.\n- `MultiFile` — multi-file upload (in-app \"File Upload\").\n- `Document` — document approval field; links the task to a document review.\n- `Table` — rows × columns of cells; users fill cell values.\n- `SendRichEmail` — pre-written email embedded in the task; sent manually by the user or\n  automatically when the task is completed.\n- `Hidden` — only visible when editing the workflow; populated by integrations or default values.\n- `Snippet` — only visible when editing; passes static text or merge tags into automations.\n","type":"string","enum":["Date","Document","Email","File","Hidden","Members","MultiChoice","MultiFile","MultiSelect","Number","Select","SendRichEmail","Snippet","Table","Text","Textarea","Url"],"const":"Url"}}}],"required":["fieldType"],"discriminator":{"propertyName":"fieldType","mapping":{"Date":"#/components/schemas/PublicApiDateFormFieldConfig","Document":"#/components/schemas/PublicApiDocumentFormFieldConfig","Email":"#/components/schemas/PublicApiEmailFormFieldConfig","File":"#/components/schemas/PublicApiFileFormFieldConfig","Hidden":"#/components/schemas/PublicApiHiddenFormFieldConfig","Members":"#/components/schemas/PublicApiMembersFormFieldConfig","MultiChoice":"#/components/schemas/PublicApiMultiChoiceFormFieldConfig","MultiFile":"#/components/schemas/PublicApiMultiFileFormFieldConfig","MultiSelect":"#/components/schemas/PublicApiMultiSelectFormFieldConfig","Number":"#/components/schemas/PublicApiNumberFormFieldConfig","Select":"#/components/schemas/PublicApiSelectFormFieldConfig","SendRichEmail":"#/components/schemas/PublicApiSendRichEmailFormFieldConfig","Snippet":"#/components/schemas/PublicApiSnippetFormFieldConfig","Table":"#/components/schemas/PublicApiTableFormFieldConfig","Text":"#/components/schemas/PublicApiTextFormFieldConfig","Textarea":"#/components/schemas/PublicApiTextareaFormFieldConfig","Url":"#/components/schemas/PublicApiUrlFormFieldConfig"}}},"constraints":{"title":"PublicApiFormFieldConstraints","description":"Field-specific validation constraints. Shape depends on `fieldType`.","oneOf":[{"title":"PublicApiDateFormFieldConstraints","type":"object","required":["fieldType"],"properties":{"afterDate":{"description":"Earliest accepted date (inclusive). Pair with `afterDateSourceType`.","type":"string","format":"date-time"},"beforeDate":{"description":"Latest accepted date (inclusive). Pair with `beforeDateSourceType`.","type":"string","format":"date-time"},"afterDateFormFieldWidgetGroupId":{"title":"EntityID","description":"When `afterDateSourceType=FormField`, the ID of the Date form field whose value is the lower bound.","type":"string"},"beforeDateFormFieldWidgetGroupId":{"title":"EntityID","description":"When `beforeDateSourceType=FormField`, the ID of the Date form field whose value is the upper bound.","type":"string"},"afterDateSourceType":{"description":"How the before/after constraint date is derived.\n\n- `SpecificDate` — an absolute date supplied as `afterDate` / `beforeDate`.\n- `FormFieldValue` — derived from another Date form field (`afterDateField` / `beforeDateField`).\n- `TaskDueDate` — relative to the containing task's due date.\n- `ChecklistStartDate` / `ChecklistDueDate` — relative to the workflow run's start or due date.\n","type":"string","enum":["SpecificDate","FormFieldValue","TaskDueDate","ChecklistStartDate","ChecklistDueDate"]},"beforeDateSourceType":{"description":"How the before/after constraint date is derived.\n\n- `SpecificDate` — an absolute date supplied as `afterDate` / `beforeDate`.\n- `FormFieldValue` — derived from another Date form field (`afterDateField` / `beforeDateField`).\n- `TaskDueDate` — relative to the containing task's due date.\n- `ChecklistStartDate` / `ChecklistDueDate` — relative to the workflow run's start or due date.\n","type":"string","enum":["SpecificDate","FormFieldValue","TaskDueDate","ChecklistStartDate","ChecklistDueDate"]},"afterDateOffset":{"description":"ISO 8601 duration (e.g. `P7D`, `P1Y2M`).","type":"string"},"beforeDateOffset":{"description":"ISO 8601 duration (e.g. `P7D`, `P1Y2M`).","type":"string"},"fieldType":{"description":"Form-field subtype discriminator (only relevant when widget `type` is `FormField`).\n\n- `Text` — short text input (≤255 characters).\n- `Textarea` — long-form text.\n- `Email` — email address.\n- `Url` — website / URL.\n- `Number` — numeric input with optional unit and constraints.\n- `Date` — date or date+time picker.\n- `Select` — dropdown; user picks one option.\n- `MultiChoice` — checkboxes; user picks one or more options.\n- `MultiSelect` — Subtasks: a checklist of sub-items inside the task.\n- `Members` — assignee picker (selects organization users).\n- `File` — single file upload.\n- `MultiFile` — multi-file upload (in-app \"File Upload\").\n- `Document` — document approval field; links the task to a document review.\n- `Table` — rows × columns of cells; users fill cell values.\n- `SendRichEmail` — pre-written email embedded in the task; sent manually by the user or\n  automatically when the task is completed.\n- `Hidden` — only visible when editing the workflow; populated by integrations or default values.\n- `Snippet` — only visible when editing; passes static text or merge tags into automations.\n","type":"string","enum":["Date","Document","Email","File","Hidden","Members","MultiChoice","MultiFile","MultiSelect","Number","Select","SendRichEmail","Snippet","Table","Text","Textarea","Url"],"const":"Date"}}},{"title":"PublicApiEmailFormFieldConstraints","type":"object","required":["fieldType"],"properties":{"domains":{"description":"Allowed (or blocked, depending on `restriction`) email domains for this field.","type":"array","items":{"type":"string"}},"restriction":{"description":"How the `domains` list filters allowed email addresses.\n\n- `Allow` — only emails whose domain is in the list are accepted.\n- `Block` — emails whose domain is in the list are rejected; all others accepted.\n","type":"string","enum":["Allow","Block"]},"fieldType":{"description":"Form-field subtype discriminator (only relevant when widget `type` is `FormField`).\n\n- `Text` — short text input (≤255 characters).\n- `Textarea` — long-form text.\n- `Email` — email address.\n- `Url` — website / URL.\n- `Number` — numeric input with optional unit and constraints.\n- `Date` — date or date+time picker.\n- `Select` — dropdown; user picks one option.\n- `MultiChoice` — checkboxes; user picks one or more options.\n- `MultiSelect` — Subtasks: a checklist of sub-items inside the task.\n- `Members` — assignee picker (selects organization users).\n- `File` — single file upload.\n- `MultiFile` — multi-file upload (in-app \"File Upload\").\n- `Document` — document approval field; links the task to a document review.\n- `Table` — rows × columns of cells; users fill cell values.\n- `SendRichEmail` — pre-written email embedded in the task; sent manually by the user or\n  automatically when the task is completed.\n- `Hidden` — only visible when editing the workflow; populated by integrations or default values.\n- `Snippet` — only visible when editing; passes static text or merge tags into automations.\n","type":"string","enum":["Date","Document","Email","File","Hidden","Members","MultiChoice","MultiFile","MultiSelect","Number","Select","SendRichEmail","Snippet","Table","Text","Textarea","Url"],"const":"Email"}}},{"title":"PublicApiFileFormFieldConstraints","type":"object","required":["fieldType"],"properties":{"extensions":{"description":"Allowed file extensions, including the leading dot (e.g. `.pdf`, `.docx`).","type":"array","items":{"type":"string"}},"fieldType":{"description":"Form-field subtype discriminator (only relevant when widget `type` is `FormField`).\n\n- `Text` — short text input (≤255 characters).\n- `Textarea` — long-form text.\n- `Email` — email address.\n- `Url` — website / URL.\n- `Number` — numeric input with optional unit and constraints.\n- `Date` — date or date+time picker.\n- `Select` — dropdown; user picks one option.\n- `MultiChoice` — checkboxes; user picks one or more options.\n- `MultiSelect` — Subtasks: a checklist of sub-items inside the task.\n- `Members` — assignee picker (selects organization users).\n- `File` — single file upload.\n- `MultiFile` — multi-file upload (in-app \"File Upload\").\n- `Document` — document approval field; links the task to a document review.\n- `Table` — rows × columns of cells; users fill cell values.\n- `SendRichEmail` — pre-written email embedded in the task; sent manually by the user or\n  automatically when the task is completed.\n- `Hidden` — only visible when editing the workflow; populated by integrations or default values.\n- `Snippet` — only visible when editing; passes static text or merge tags into automations.\n","type":"string","enum":["Date","Document","Email","File","Hidden","Members","MultiChoice","MultiFile","MultiSelect","Number","Select","SendRichEmail","Snippet","Table","Text","Textarea","Url"],"const":"File"}}},{"title":"PublicApiMultiFileFormFieldConstraints","type":"object","required":["fieldType"],"properties":{"extensions":{"description":"Allowed file extensions, including the leading dot (e.g. `.pdf`, `.docx`).","type":"array","items":{"type":"string"}},"mode":{"description":"Whether the field accepts a single file or multiple files.\n\n- `Single` — only one file may be uploaded.\n- `Multiple` — multiple files may be uploaded.\n","type":"string","enum":["Multiple","Single"]},"fieldType":{"description":"Form-field subtype discriminator (only relevant when widget `type` is `FormField`).\n\n- `Text` — short text input (≤255 characters).\n- `Textarea` — long-form text.\n- `Email` — email address.\n- `Url` — website / URL.\n- `Number` — numeric input with optional unit and constraints.\n- `Date` — date or date+time picker.\n- `Select` — dropdown; user picks one option.\n- `MultiChoice` — checkboxes; user picks one or more options.\n- `MultiSelect` — Subtasks: a checklist of sub-items inside the task.\n- `Members` — assignee picker (selects organization users).\n- `File` — single file upload.\n- `MultiFile` — multi-file upload (in-app \"File Upload\").\n- `Document` — document approval field; links the task to a document review.\n- `Table` — rows × columns of cells; users fill cell values.\n- `SendRichEmail` — pre-written email embedded in the task; sent manually by the user or\n  automatically when the task is completed.\n- `Hidden` — only visible when editing the workflow; populated by integrations or default values.\n- `Snippet` — only visible when editing; passes static text or merge tags into automations.\n","type":"string","enum":["Date","Document","Email","File","Hidden","Members","MultiChoice","MultiFile","MultiSelect","Number","Select","SendRichEmail","Snippet","Table","Text","Textarea","Url"],"const":"MultiFile"}}},{"title":"PublicApiNumberFormFieldConstraints","type":"object","required":["fieldType"],"properties":{"minDigits":{"description":"Minimum number of digits.","type":"integer","format":"int32"},"maxDigits":{"description":"Maximum number of digits.","type":"integer","format":"int32"},"minValue":{"description":"Minimum numeric value.","type":"integer","format":"int32"},"maxValue":{"description":"Maximum numeric value.","type":"integer","format":"int32"},"decimalPlaces":{"description":"Number of decimal places to accept (0 means integers only).","type":"integer","format":"int32"},"allowNegative":{"description":"When `true`, negative numbers are accepted.","type":"boolean"},"fieldType":{"description":"Form-field subtype discriminator (only relevant when widget `type` is `FormField`).\n\n- `Text` — short text input (≤255 characters).\n- `Textarea` — long-form text.\n- `Email` — email address.\n- `Url` — website / URL.\n- `Number` — numeric input with optional unit and constraints.\n- `Date` — date or date+time picker.\n- `Select` — dropdown; user picks one option.\n- `MultiChoice` — checkboxes; user picks one or more options.\n- `MultiSelect` — Subtasks: a checklist of sub-items inside the task.\n- `Members` — assignee picker (selects organization users).\n- `File` — single file upload.\n- `MultiFile` — multi-file upload (in-app \"File Upload\").\n- `Document` — document approval field; links the task to a document review.\n- `Table` — rows × columns of cells; users fill cell values.\n- `SendRichEmail` — pre-written email embedded in the task; sent manually by the user or\n  automatically when the task is completed.\n- `Hidden` — only visible when editing the workflow; populated by integrations or default values.\n- `Snippet` — only visible when editing; passes static text or merge tags into automations.\n","type":"string","enum":["Date","Document","Email","File","Hidden","Members","MultiChoice","MultiFile","MultiSelect","Number","Select","SendRichEmail","Snippet","Table","Text","Textarea","Url"],"const":"Number"}}},{"title":"PublicApiTextFormFieldConstraints","type":"object","required":["fieldType"],"properties":{"min":{"description":"Inclusive lower bound.","type":"integer","format":"int32"},"max":{"description":"Inclusive upper bound.","type":"integer","format":"int32"},"fieldType":{"description":"Form-field subtype discriminator (only relevant when widget `type` is `FormField`).\n\n- `Text` — short text input (≤255 characters).\n- `Textarea` — long-form text.\n- `Email` — email address.\n- `Url` — website / URL.\n- `Number` — numeric input with optional unit and constraints.\n- `Date` — date or date+time picker.\n- `Select` — dropdown; user picks one option.\n- `MultiChoice` — checkboxes; user picks one or more options.\n- `MultiSelect` — Subtasks: a checklist of sub-items inside the task.\n- `Members` — assignee picker (selects organization users).\n- `File` — single file upload.\n- `MultiFile` — multi-file upload (in-app \"File Upload\").\n- `Document` — document approval field; links the task to a document review.\n- `Table` — rows × columns of cells; users fill cell values.\n- `SendRichEmail` — pre-written email embedded in the task; sent manually by the user or\n  automatically when the task is completed.\n- `Hidden` — only visible when editing the workflow; populated by integrations or default values.\n- `Snippet` — only visible when editing; passes static text or merge tags into automations.\n","type":"string","enum":["Date","Document","Email","File","Hidden","Members","MultiChoice","MultiFile","MultiSelect","Number","Select","SendRichEmail","Snippet","Table","Text","Textarea","Url"],"const":"Text"}}},{"title":"PublicApiTextareaFormFieldConstraints","type":"object","required":["fieldType"],"properties":{"min":{"description":"Inclusive lower bound.","type":"integer","format":"int32"},"max":{"description":"Inclusive upper bound.","type":"integer","format":"int32"},"fieldType":{"description":"Form-field subtype discriminator (only relevant when widget `type` is `FormField`).\n\n- `Text` — short text input (≤255 characters).\n- `Textarea` — long-form text.\n- `Email` — email address.\n- `Url` — website / URL.\n- `Number` — numeric input with optional unit and constraints.\n- `Date` — date or date+time picker.\n- `Select` — dropdown; user picks one option.\n- `MultiChoice` — checkboxes; user picks one or more options.\n- `MultiSelect` — Subtasks: a checklist of sub-items inside the task.\n- `Members` — assignee picker (selects organization users).\n- `File` — single file upload.\n- `MultiFile` — multi-file upload (in-app \"File Upload\").\n- `Document` — document approval field; links the task to a document review.\n- `Table` — rows × columns of cells; users fill cell values.\n- `SendRichEmail` — pre-written email embedded in the task; sent manually by the user or\n  automatically when the task is completed.\n- `Hidden` — only visible when editing the workflow; populated by integrations or default values.\n- `Snippet` — only visible when editing; passes static text or merge tags into automations.\n","type":"string","enum":["Date","Document","Email","File","Hidden","Members","MultiChoice","MultiFile","MultiSelect","Number","Select","SendRichEmail","Snippet","Table","Text","Textarea","Url"],"const":"Textarea"}}}],"required":["fieldType"],"discriminator":{"propertyName":"fieldType","mapping":{"Date":"#/components/schemas/PublicApiDateFormFieldConstraints","Email":"#/components/schemas/PublicApiEmailFormFieldConstraints","File":"#/components/schemas/PublicApiFileFormFieldConstraints","MultiFile":"#/components/schemas/PublicApiMultiFileFormFieldConstraints","Number":"#/components/schemas/PublicApiNumberFormFieldConstraints","Text":"#/components/schemas/PublicApiTextFormFieldConstraints","Textarea":"#/components/schemas/PublicApiTextareaFormFieldConstraints"}}},"links":{"description":"Navigable HATEOAS links to related resources. Each entry has a `name` (RFC-5988 relation), an `href` URL, and a `type` (`Api` or `App`).","type":"array","items":{"title":"Link","description":"A HATEOAS link to a related resource. Use these to navigate between resources without constructing URLs by hand.","type":"object","required":["name","href","type"],"properties":{"name":{"description":"Standard link relation name (RFC 5988) indicating this link's role. Common values include `self`, `edit`, `related`, `previous`, `next`.","type":"string"},"href":{"title":"Uri","description":"URL of the linked resource.","examples":["https://api.process.st/api/v1.1/resource/XXX"],"type":"string"},"rel":{"description":"Optional. The kind of resource this link points to (e.g. `Workflow`, `Task`, `Comment`).","type":"string","enum":["Approval Task","Approvals","Assignees","Comment","Data Set Records","Data Sets","Form Field Values","Subject Task","Task","Tasks","Users","Webhook","Workflow","Workflow Run"]},"type":{"description":"Whether this link targets an API endpoint or a Process Street app URL. `Api` — a callable API endpoint you can fetch directly. `App` — a browser-facing URL in the Process Street UI.","type":"string","enum":["Api","App"]}}}},"type":{"title":"WidgetType","description":"Widget kind discriminator.\n\n- `FormField` — collects user input (Text, Number, Date, etc. — see `fieldType`).\n- `Text` — rich text content displayed on the task.\n- `Image` — image content displayed on the task.\n- `File` — downloadable file attached to the task.\n- `Video` — video content (uploaded or linked from a hosting service).\n- `Embed` — embedded external content via URL.\n- `CrossLink` — link to another workflow or page.\n","type":"string","enum":["FormField","Text","Image","File","Video","Embed","CrossLink"]}}},{"title":"PublicApiImageWidget","type":"object","required":["hiddenByDefault","id","taskId","createdDate","createdBy","updatedDate","updatedBy","type"],"properties":{"hiddenByDefault":{"description":"When `true`, the widget is hidden by default; conditional logic rules can reveal it at runtime. Defaults to `false`.","type":"boolean"},"id":{"description":"The ID of the Widget","examples":["s_ab8fn58g4BoX6ZlHp7xQ"],"type":"string"},"taskId":{"description":"The ID of the Task","examples":["s_ab8fn58g4BoX6ZlHp7xQ"],"type":"string"},"createdDate":{"description":"When the resource was first created. ISO-8601 UTC.","type":"string","format":"date-time"},"createdBy":{"description":"User who created the resource.","examples":[{"id":"iUu2eOU2Q-sBoX6ZjZV9pQ","email":"jane.doe@example.com","username":"Jane Doe"}],"type":"object","required":["id","email","username"],"properties":{"id":{"title":"EntityID","description":"The resource's ID.","type":"string"},"email":{"description":"The user's email address (also their login identifier).","type":"string"},"username":{"description":"The user's display name (e.g. `Jane Doe`).","type":"string"}}},"updatedDate":{"description":"When the resource was last modified. ISO-8601 UTC.","type":"string","format":"date-time"},"updatedBy":{"description":"User who last modified the resource.","examples":[{"id":"iUu2eOU2Q-sBoX6ZjZV9pQ","email":"jane.doe@example.com","username":"Jane Doe"}],"type":"object","required":["id","email","username"],"properties":{"id":{"title":"EntityID","description":"The resource's ID.","type":"string"},"email":{"description":"The user's email address (also their login identifier).","type":"string"},"username":{"description":"The user's display name (e.g. `Jane Doe`).","type":"string"}}},"caption":{"description":"Caption text rendered with the image.","type":"string"},"file":{"title":"PublicApiWidgetFile","description":"Uploaded file reference. Use the upload endpoint to attach content.","type":"object","required":["id","name","mimeType","size"],"properties":{"id":{"title":"EntityID","description":"The resource's ID.","type":"string"},"name":{"description":"Display name.","type":"string"},"mimeType":{"description":"MIME type detected at upload time (e.g. `image/png`, `application/pdf`).","type":"string"},"size":{"description":"File size in bytes.","type":"integer","format":"int64"}}},"links":{"description":"Navigable HATEOAS links to related resources. Each entry has a `name` (RFC-5988 relation), an `href` URL, and a `type` (`Api` or `App`).","type":"array","items":{"title":"Link","description":"A HATEOAS link to a related resource. Use these to navigate between resources without constructing URLs by hand.","type":"object","required":["name","href","type"],"properties":{"name":{"description":"Standard link relation name (RFC 5988) indicating this link's role. Common values include `self`, `edit`, `related`, `previous`, `next`.","type":"string"},"href":{"title":"Uri","description":"URL of the linked resource.","examples":["https://api.process.st/api/v1.1/resource/XXX"],"type":"string"},"rel":{"description":"Optional. The kind of resource this link points to (e.g. `Workflow`, `Task`, `Comment`).","type":"string","enum":["Approval Task","Approvals","Assignees","Comment","Data Set Records","Data Sets","Form Field Values","Subject Task","Task","Tasks","Users","Webhook","Workflow","Workflow Run"]},"type":{"description":"Whether this link targets an API endpoint or a Process Street app URL. `Api` — a callable API endpoint you can fetch directly. `App` — a browser-facing URL in the Process Street UI.","type":"string","enum":["Api","App"]}}}},"type":{"title":"WidgetType","description":"Widget kind discriminator.\n\n- `FormField` — collects user input (Text, Number, Date, etc. — see `fieldType`).\n- `Text` — rich text content displayed on the task.\n- `Image` — image content displayed on the task.\n- `File` — downloadable file attached to the task.\n- `Video` — video content (uploaded or linked from a hosting service).\n- `Embed` — embedded external content via URL.\n- `CrossLink` — link to another workflow or page.\n","type":"string","enum":["FormField","Text","Image","File","Video","Embed","CrossLink"]}}},{"title":"PublicApiTextWidget","type":"object","required":["hiddenByDefault","id","taskId","createdDate","createdBy","updatedDate","updatedBy","type"],"properties":{"hiddenByDefault":{"description":"When `true`, the widget is hidden by default; conditional logic rules can reveal it at runtime. Defaults to `false`.","type":"boolean"},"id":{"description":"The ID of the Widget","examples":["vl-PQ1FTbSsBoX6ZlG54Hg"],"type":"string"},"taskId":{"description":"The ID of the Task","examples":["vl-PQ1FTbSsBoX6ZlG54Hg"],"type":"string"},"createdDate":{"description":"When the resource was first created. ISO-8601 UTC.","type":"string","format":"date-time"},"createdBy":{"description":"User who created the resource.","examples":[{"id":"iUu2eOU2Q-sBoX6ZjZV9pQ","email":"jane.doe@example.com","username":"Jane Doe"}],"type":"object","required":["id","email","username"],"properties":{"id":{"title":"EntityID","description":"The resource's ID.","type":"string"},"email":{"description":"The user's email address (also their login identifier).","type":"string"},"username":{"description":"The user's display name (e.g. `Jane Doe`).","type":"string"}}},"updatedDate":{"description":"When the resource was last modified. ISO-8601 UTC.","type":"string","format":"date-time"},"updatedBy":{"description":"User who last modified the resource.","examples":[{"id":"iUu2eOU2Q-sBoX6ZjZV9pQ","email":"jane.doe@example.com","username":"Jane Doe"}],"type":"object","required":["id","email","username"],"properties":{"id":{"title":"EntityID","description":"The resource's ID.","type":"string"},"email":{"description":"The user's email address (also their login identifier).","type":"string"},"username":{"description":"The user's display name (e.g. `Jane Doe`).","type":"string"}}},"content":{"description":"Rich text content. May contain merge tags.","type":"string"},"links":{"description":"Navigable HATEOAS links to related resources. Each entry has a `name` (RFC-5988 relation), an `href` URL, and a `type` (`Api` or `App`).","type":"array","items":{"title":"Link","description":"A HATEOAS link to a related resource. Use these to navigate between resources without constructing URLs by hand.","type":"object","required":["name","href","type"],"properties":{"name":{"description":"Standard link relation name (RFC 5988) indicating this link's role. Common values include `self`, `edit`, `related`, `previous`, `next`.","type":"string"},"href":{"title":"Uri","description":"URL of the linked resource.","examples":["https://api.process.st/api/v1.1/resource/XXX"],"type":"string"},"rel":{"description":"Optional. The kind of resource this link points to (e.g. `Workflow`, `Task`, `Comment`).","type":"string","enum":["Approval Task","Approvals","Assignees","Comment","Data Set Records","Data Sets","Form Field Values","Subject Task","Task","Tasks","Users","Webhook","Workflow","Workflow Run"]},"type":{"description":"Whether this link targets an API endpoint or a Process Street app URL. `Api` — a callable API endpoint you can fetch directly. `App` — a browser-facing URL in the Process Street UI.","type":"string","enum":["Api","App"]}}}},"type":{"title":"WidgetType","description":"Widget kind discriminator.\n\n- `FormField` — collects user input (Text, Number, Date, etc. — see `fieldType`).\n- `Text` — rich text content displayed on the task.\n- `Image` — image content displayed on the task.\n- `File` — downloadable file attached to the task.\n- `Video` — video content (uploaded or linked from a hosting service).\n- `Embed` — embedded external content via URL.\n- `CrossLink` — link to another workflow or page.\n","type":"string","enum":["FormField","Text","Image","File","Video","Embed","CrossLink"]}}},{"title":"PublicApiVideoWidget","type":"object","required":["hiddenByDefault","id","taskId","createdDate","createdBy","updatedDate","updatedBy","type"],"properties":{"hiddenByDefault":{"description":"When `true`, the widget is hidden by default; conditional logic rules can reveal it at runtime. Defaults to `false`.","type":"boolean"},"id":{"description":"The ID of the Widget","examples":["oQyz9nbHMGEBoX6ZlJt-lA"],"type":"string"},"taskId":{"description":"The ID of the Task","examples":["oQyz9nbHMGEBoX6ZlJt-lA"],"type":"string"},"createdDate":{"description":"When the resource was first created. ISO-8601 UTC.","type":"string","format":"date-time"},"createdBy":{"description":"User who created the resource.","examples":[{"id":"iUu2eOU2Q-sBoX6ZjZV9pQ","email":"jane.doe@example.com","username":"Jane Doe"}],"type":"object","required":["id","email","username"],"properties":{"id":{"title":"EntityID","description":"The resource's ID.","type":"string"},"email":{"description":"The user's email address (also their login identifier).","type":"string"},"username":{"description":"The user's display name (e.g. `Jane Doe`).","type":"string"}}},"updatedDate":{"description":"When the resource was last modified. ISO-8601 UTC.","type":"string","format":"date-time"},"updatedBy":{"description":"User who last modified the resource.","examples":[{"id":"iUu2eOU2Q-sBoX6ZjZV9pQ","email":"jane.doe@example.com","username":"Jane Doe"}],"type":"object","required":["id","email","username"],"properties":{"id":{"title":"EntityID","description":"The resource's ID.","type":"string"},"email":{"description":"The user's email address (also their login identifier).","type":"string"},"username":{"description":"The user's display name (e.g. `Jane Doe`).","type":"string"}}},"description":{"description":"Optional long-form description.","type":"string"},"url":{"description":"Target URL.","type":"string"},"file":{"title":"PublicApiWidgetFile","description":"Uploaded file reference. Use the upload endpoint to attach content.","type":"object","required":["id","name","mimeType","size"],"properties":{"id":{"title":"EntityID","description":"The resource's ID.","type":"string"},"name":{"description":"Display name.","type":"string"},"mimeType":{"description":"MIME type detected at upload time (e.g. `image/png`, `application/pdf`).","type":"string"},"size":{"description":"File size in bytes.","type":"integer","format":"int64"}}},"links":{"description":"Navigable HATEOAS links to related resources. Each entry has a `name` (RFC-5988 relation), an `href` URL, and a `type` (`Api` or `App`).","type":"array","items":{"title":"Link","description":"A HATEOAS link to a related resource. Use these to navigate between resources without constructing URLs by hand.","type":"object","required":["name","href","type"],"properties":{"name":{"description":"Standard link relation name (RFC 5988) indicating this link's role. Common values include `self`, `edit`, `related`, `previous`, `next`.","type":"string"},"href":{"title":"Uri","description":"URL of the linked resource.","examples":["https://api.process.st/api/v1.1/resource/XXX"],"type":"string"},"rel":{"description":"Optional. The kind of resource this link points to (e.g. `Workflow`, `Task`, `Comment`).","type":"string","enum":["Approval Task","Approvals","Assignees","Comment","Data Set Records","Data Sets","Form Field Values","Subject Task","Task","Tasks","Users","Webhook","Workflow","Workflow Run"]},"type":{"description":"Whether this link targets an API endpoint or a Process Street app URL. `Api` — a callable API endpoint you can fetch directly. `App` — a browser-facing URL in the Process Street UI.","type":"string","enum":["Api","App"]}}}},"type":{"title":"WidgetType","description":"Widget kind discriminator.\n\n- `FormField` — collects user input (Text, Number, Date, etc. — see `fieldType`).\n- `Text` — rich text content displayed on the task.\n- `Image` — image content displayed on the task.\n- `File` — downloadable file attached to the task.\n- `Video` — video content (uploaded or linked from a hosting service).\n- `Embed` — embedded external content via URL.\n- `CrossLink` — link to another workflow or page.\n","type":"string","enum":["FormField","Text","Image","File","Video","Embed","CrossLink"]}}}],"required":["type"],"discriminator":{"propertyName":"type","mapping":{"CrossLink":"#/components/schemas/PublicApiCrossLinkWidget","Embed":"#/components/schemas/PublicApiEmbedWidget","File":"#/components/schemas/PublicApiFileWidget","FormField":"#/components/schemas/PublicApiFormFieldWidget","Image":"#/components/schemas/PublicApiImageWidget","Text":"#/components/schemas/PublicApiTextWidget","Video":"#/components/schemas/PublicApiVideoWidget"}}},"links":{"description":"Pagination links. When the result has more pages, look for an entry with `name: \"next\"` — its `href` is the URL to fetch the next page. Absence of `next` means there are no more pages. For single-resource responses this array is typically empty.","type":"array","items":{"title":"Link","description":"A HATEOAS link to a related resource. Use these to navigate between resources without constructing URLs by hand.","type":"object","required":["name","href","type"],"properties":{"name":{"description":"Standard link relation name (RFC 5988) indicating this link's role. Common values include `self`, `edit`, `related`, `previous`, `next`.","type":"string"},"href":{"title":"Uri","description":"URL of the linked resource.","examples":["https://api.process.st/api/v1.1/resource/XXX"],"type":"string"},"rel":{"description":"Optional. The kind of resource this link points to (e.g. `Workflow`, `Task`, `Comment`).","type":"string","enum":["Approval Task","Approvals","Assignees","Comment","Data Set Records","Data Sets","Form Field Values","Subject Task","Task","Tasks","Users","Webhook","Workflow","Workflow Run"]},"type":{"description":"Whether this link targets an API endpoint or a Process Street app URL. `Api` — a callable API endpoint you can fetch directly. `App` — a browser-facing URL in the Process Street UI.","type":"string","enum":["Api","App"]}}}}}},"PublicApiWorkflow":{"title":"PublicApiWorkflow","type":"object","required":["id","audit","name"],"properties":{"id":{"title":"EntityID","description":"The resource's ID.","type":"string"},"audit":{"title":"PublicApiAudit","description":"Creation and last-modification metadata.","type":"object","required":["createdDate","createdBy","updatedDate","updatedBy"],"properties":{"createdDate":{"description":"When the resource was first created. ISO-8601 UTC.","type":"string","format":"date-time"},"createdBy":{"title":"PublicApiUser","description":"User who created the resource.","examples":[{"id":"iUu2eOU2Q-sBoX6ZjZV9pQ","email":"jane.doe@example.com","username":"Jane Doe"}],"type":"object","required":["id","email","username"],"properties":{"id":{"title":"EntityID","description":"The resource's ID.","type":"string"},"email":{"description":"The user's email address (also their login identifier).","type":"string"},"username":{"description":"The user's display name (e.g. `Jane Doe`).","type":"string"}}},"updatedDate":{"description":"When the resource was last modified. ISO-8601 UTC.","type":"string","format":"date-time"},"updatedBy":{"title":"PublicApiUser","description":"User who last modified the resource.","examples":[{"id":"iUu2eOU2Q-sBoX6ZjZV9pQ","email":"jane.doe@example.com","username":"Jane Doe"}],"type":"object","required":["id","email","username"],"properties":{"id":{"title":"EntityID","description":"The resource's ID.","type":"string"},"email":{"description":"The user's email address (also their login identifier).","type":"string"},"username":{"description":"The user's display name (e.g. `Jane Doe`).","type":"string"}}}}},"name":{"description":"The workflow's name.","type":"string"},"description":{"description":"Optional long-form description of the workflow.","type":"string"},"links":{"description":"Navigable HATEOAS links to related resources. Each entry has a `name` (RFC-5988 link relation like `self`, `edit`, `related`), an `href` URL, and a `type` (`Api` for callable endpoints, `App` for browser-facing URLs). Prefer following these `href` values over constructing URLs by hand.","type":"array","items":{"title":"Link","description":"A HATEOAS link to a related resource. Use these to navigate between resources without constructing URLs by hand.","type":"object","required":["name","href","type"],"properties":{"name":{"description":"Standard link relation name (RFC 5988) indicating this link's role. Common values include `self`, `edit`, `related`, `previous`, `next`.","type":"string"},"href":{"title":"Uri","description":"URL of the linked resource.","examples":["https://api.process.st/api/v1.1/resource/XXX"],"type":"string"},"rel":{"description":"Optional. The kind of resource this link points to (e.g. `Workflow`, `Task`, `Comment`).","type":"string","enum":["Approval Task","Approvals","Assignees","Comment","Data Set Records","Data Sets","Form Field Values","Subject Task","Task","Tasks","Users","Webhook","Workflow","Workflow Run"]},"type":{"description":"Whether this link targets an API endpoint or a Process Street app URL. `Api` — a callable API endpoint you can fetch directly. `App` — a browser-facing URL in the Process Street UI.","type":"string","enum":["Api","App"]}}}}}},"PublicApiWorkflowPermission":{"title":"PublicApiWorkflowPermission","type":"object","required":["email","accessLevel","permissions"],"properties":{"email":{"description":"Email address.","type":"string"},"accessLevel":{"description":"Access level a user or group has on this workflow. `Edit` — edit the workflow, run new workflow runs, and view all runs created from it. `EditViewOwn` — edit the workflow and run new runs, but only view runs assigned to them (available on some plans). `ViewAll` — view the workflow and all runs, plus run new runs; cannot edit the workflow. `Run` — view the workflow, run new runs, and view runs assigned to them. `View` — view the workflow and only runs assigned to them; cannot run. `Custom` — the user's underlying permission atoms don't match any predefined level; inspect the `permissions` object on the same entry for the actual atoms.","type":"string","enum":["Edit","EditViewOwn","ViewAll","Run","View","Custom"]},"permissions":{"title":"PublicApiWorkflowPermissionAtoms","description":"Granular permission flags this user or group has on the workflow.","type":"object","required":["templateRead","templateUpdate","templateDelete","checklistCreate","checklistRead","checklistUpdate","checklistDelete","doodadCreate","doodadRead","doodadUpdate"],"properties":{"templateRead":{"description":"Can view the workflow.","type":"boolean"},"templateUpdate":{"description":"Can edit the workflow.","type":"boolean"},"templateDelete":{"description":"Can delete the workflow.","type":"boolean"},"checklistCreate":{"description":"Can start new workflow runs from the workflow.","type":"boolean"},"checklistRead":{"description":"Can view workflow runs of this workflow.","type":"boolean"},"checklistUpdate":{"description":"Can edit workflow runs (e.g. complete tasks, fill form fields, change due dates).","type":"boolean"},"checklistDelete":{"description":"Can delete workflow runs.","type":"boolean"},"doodadCreate":{"description":"Can add comments and attachments to workflow runs.","type":"boolean"},"doodadRead":{"description":"Can view comments and attachments on workflow runs.","type":"boolean"},"doodadUpdate":{"description":"Can edit comments and attachments on workflow runs.","type":"boolean"}}}}},"PublicApiWorkflowPermissionAtoms":{"title":"PublicApiWorkflowPermissionAtoms","description":"Granular permission flags this user or group has on the workflow.","type":"object","required":["templateRead","templateUpdate","templateDelete","checklistCreate","checklistRead","checklistUpdate","checklistDelete","doodadCreate","doodadRead","doodadUpdate"],"properties":{"templateRead":{"description":"Can view the workflow.","type":"boolean"},"templateUpdate":{"description":"Can edit the workflow.","type":"boolean"},"templateDelete":{"description":"Can delete the workflow.","type":"boolean"},"checklistCreate":{"description":"Can start new workflow runs from the workflow.","type":"boolean"},"checklistRead":{"description":"Can view workflow runs of this workflow.","type":"boolean"},"checklistUpdate":{"description":"Can edit workflow runs (e.g. complete tasks, fill form fields, change due dates).","type":"boolean"},"checklistDelete":{"description":"Can delete workflow runs.","type":"boolean"},"doodadCreate":{"description":"Can add comments and attachments to workflow runs.","type":"boolean"},"doodadRead":{"description":"Can view comments and attachments on workflow runs.","type":"boolean"},"doodadUpdate":{"description":"Can edit comments and attachments on workflow runs.","type":"boolean"}}},"PublicApiWorkflowPermissionListResponse":{"title":"PublicApiWorkflowPermissionListResponse","type":"object","properties":{"data":{"description":"The list of resources returned by this request.","type":"array","items":{"title":"PublicApiWorkflowPermission","type":"object","required":["email","accessLevel","permissions"],"properties":{"email":{"description":"Email address.","type":"string"},"accessLevel":{"description":"Access level a user or group has on this workflow. `Edit` — edit the workflow, run new workflow runs, and view all runs created from it. `EditViewOwn` — edit the workflow and run new runs, but only view runs assigned to them (available on some plans). `ViewAll` — view the workflow and all runs, plus run new runs; cannot edit the workflow. `Run` — view the workflow, run new runs, and view runs assigned to them. `View` — view the workflow and only runs assigned to them; cannot run. `Custom` — the user's underlying permission atoms don't match any predefined level; inspect the `permissions` object on the same entry for the actual atoms.","type":"string","enum":["Edit","EditViewOwn","ViewAll","Run","View","Custom"]},"permissions":{"title":"PublicApiWorkflowPermissionAtoms","description":"Granular permission flags this user or group has on the workflow.","type":"object","required":["templateRead","templateUpdate","templateDelete","checklistCreate","checklistRead","checklistUpdate","checklistDelete","doodadCreate","doodadRead","doodadUpdate"],"properties":{"templateRead":{"description":"Can view the workflow.","type":"boolean"},"templateUpdate":{"description":"Can edit the workflow.","type":"boolean"},"templateDelete":{"description":"Can delete the workflow.","type":"boolean"},"checklistCreate":{"description":"Can start new workflow runs from the workflow.","type":"boolean"},"checklistRead":{"description":"Can view workflow runs of this workflow.","type":"boolean"},"checklistUpdate":{"description":"Can edit workflow runs (e.g. complete tasks, fill form fields, change due dates).","type":"boolean"},"checklistDelete":{"description":"Can delete workflow runs.","type":"boolean"},"doodadCreate":{"description":"Can add comments and attachments to workflow runs.","type":"boolean"},"doodadRead":{"description":"Can view comments and attachments on workflow runs.","type":"boolean"},"doodadUpdate":{"description":"Can edit comments and attachments on workflow runs.","type":"boolean"}}}}}},"links":{"description":"Pagination links. When the result has more pages, look for an entry with `name: \"next\"` — its `href` is the URL to fetch the next page. Absence of `next` means there are no more pages. For single-resource responses this array is typically empty.","type":"array","items":{"title":"Link","description":"A HATEOAS link to a related resource. Use these to navigate between resources without constructing URLs by hand.","type":"object","required":["name","href","type"],"properties":{"name":{"description":"Standard link relation name (RFC 5988) indicating this link's role. Common values include `self`, `edit`, `related`, `previous`, `next`.","type":"string"},"href":{"title":"Uri","description":"URL of the linked resource.","examples":["https://api.process.st/api/v1.1/resource/XXX"],"type":"string"},"rel":{"description":"Optional. The kind of resource this link points to (e.g. `Workflow`, `Task`, `Comment`).","type":"string","enum":["Approval Task","Approvals","Assignees","Comment","Data Set Records","Data Sets","Form Field Values","Subject Task","Task","Tasks","Users","Webhook","Workflow","Workflow Run"]},"type":{"description":"Whether this link targets an API endpoint or a Process Street app URL. `Api` — a callable API endpoint you can fetch directly. `App` — a browser-facing URL in the Process Street UI.","type":"string","enum":["Api","App"]}}}}}},"PublicApiWorkflowResponse":{"title":"PublicApiWorkflowResponse","type":"object","required":["data"],"properties":{"data":{"title":"PublicApiWorkflow","type":"object","required":["id","audit","name"],"properties":{"id":{"title":"EntityID","description":"The resource's ID.","type":"string"},"audit":{"title":"PublicApiAudit","description":"Creation and last-modification metadata.","type":"object","required":["createdDate","createdBy","updatedDate","updatedBy"],"properties":{"createdDate":{"description":"When the resource was first created. ISO-8601 UTC.","type":"string","format":"date-time"},"createdBy":{"title":"PublicApiUser","description":"User who created the resource.","examples":[{"id":"iUu2eOU2Q-sBoX6ZjZV9pQ","email":"jane.doe@example.com","username":"Jane Doe"}],"type":"object","required":["id","email","username"],"properties":{"id":{"title":"EntityID","description":"The resource's ID.","type":"string"},"email":{"description":"The user's email address (also their login identifier).","type":"string"},"username":{"description":"The user's display name (e.g. `Jane Doe`).","type":"string"}}},"updatedDate":{"description":"When the resource was last modified. ISO-8601 UTC.","type":"string","format":"date-time"},"updatedBy":{"title":"PublicApiUser","description":"User who last modified the resource.","examples":[{"id":"iUu2eOU2Q-sBoX6ZjZV9pQ","email":"jane.doe@example.com","username":"Jane Doe"}],"type":"object","required":["id","email","username"],"properties":{"id":{"title":"EntityID","description":"The resource's ID.","type":"string"},"email":{"description":"The user's email address (also their login identifier).","type":"string"},"username":{"description":"The user's display name (e.g. `Jane Doe`).","type":"string"}}}}},"name":{"description":"The workflow's name.","type":"string"},"description":{"description":"Optional long-form description of the workflow.","type":"string"},"links":{"description":"Navigable HATEOAS links to related resources. Each entry has a `name` (RFC-5988 link relation like `self`, `edit`, `related`), an `href` URL, and a `type` (`Api` for callable endpoints, `App` for browser-facing URLs). Prefer following these `href` values over constructing URLs by hand.","type":"array","items":{"title":"Link","description":"A HATEOAS link to a related resource. Use these to navigate between resources without constructing URLs by hand.","type":"object","required":["name","href","type"],"properties":{"name":{"description":"Standard link relation name (RFC 5988) indicating this link's role. Common values include `self`, `edit`, `related`, `previous`, `next`.","type":"string"},"href":{"title":"Uri","description":"URL of the linked resource.","examples":["https://api.process.st/api/v1.1/resource/XXX"],"type":"string"},"rel":{"description":"Optional. The kind of resource this link points to (e.g. `Workflow`, `Task`, `Comment`).","type":"string","enum":["Approval Task","Approvals","Assignees","Comment","Data Set Records","Data Sets","Form Field Values","Subject Task","Task","Tasks","Users","Webhook","Workflow","Workflow Run"]},"type":{"description":"Whether this link targets an API endpoint or a Process Street app URL. `Api` — a callable API endpoint you can fetch directly. `App` — a browser-facing URL in the Process Street UI.","type":"string","enum":["Api","App"]}}}}}},"links":{"description":"Pagination links. When the result has more pages, look for an entry with `name: \"next\"` — its `href` is the URL to fetch the next page. Absence of `next` means there are no more pages. For single-resource responses this array is typically empty.","type":"array","items":{"title":"Link","description":"A HATEOAS link to a related resource. Use these to navigate between resources without constructing URLs by hand.","type":"object","required":["name","href","type"],"properties":{"name":{"description":"Standard link relation name (RFC 5988) indicating this link's role. Common values include `self`, `edit`, `related`, `previous`, `next`.","type":"string"},"href":{"title":"Uri","description":"URL of the linked resource.","examples":["https://api.process.st/api/v1.1/resource/XXX"],"type":"string"},"rel":{"description":"Optional. The kind of resource this link points to (e.g. `Workflow`, `Task`, `Comment`).","type":"string","enum":["Approval Task","Approvals","Assignees","Comment","Data Set Records","Data Sets","Form Field Values","Subject Task","Task","Tasks","Users","Webhook","Workflow","Workflow Run"]},"type":{"description":"Whether this link targets an API endpoint or a Process Street app URL. `Api` — a callable API endpoint you can fetch directly. `App` — a browser-facing URL in the Process Street UI.","type":"string","enum":["Api","App"]}}}}}},"PublicApiWorkflowRevision":{"title":"PublicApiWorkflowRevision","type":"object","required":["id","createdDate","createdBy","updatedDate","updatedBy","workflowId","version","status"],"properties":{"id":{"description":"The ID of the Revision","examples":["oi4HzZjUeSUBoX6ZkL1xzw"],"type":"string"},"createdDate":{"description":"When the resource was first created. ISO-8601 UTC.","type":"string","format":"date-time"},"createdBy":{"description":"User who created the resource.","examples":[{"id":"iUu2eOU2Q-sBoX6ZjZV9pQ","email":"jane.doe@example.com","username":"Jane Doe"}],"type":"object","required":["id","email","username"],"properties":{"id":{"title":"EntityID","description":"The resource's ID.","type":"string"},"email":{"description":"The user's email address (also their login identifier).","type":"string"},"username":{"description":"The user's display name (e.g. `Jane Doe`).","type":"string"}}},"updatedDate":{"description":"When the resource was last modified. ISO-8601 UTC.","type":"string","format":"date-time"},"updatedBy":{"description":"User who last modified the resource.","examples":[{"id":"iUu2eOU2Q-sBoX6ZjZV9pQ","email":"jane.doe@example.com","username":"Jane Doe"}],"type":"object","required":["id","email","username"],"properties":{"id":{"title":"EntityID","description":"The resource's ID.","type":"string"},"email":{"description":"The user's email address (also their login identifier).","type":"string"},"username":{"description":"The user's display name (e.g. `Jane Doe`).","type":"string"}}},"workflowId":{"description":"The ID of the Workflow","examples":["oi4HzZjUeSUBoX6ZkL1xzw"],"type":"string"},"version":{"description":"Revision version number; monotonically increasing per template.","type":"string"},"status":{"description":"Status of this revision. `Draft` — being edited; not yet published. `Finished` — currently published version (only one Finished revision per workflow/page at a time). `Revised` — was previously the published version but has been replaced by a newer Finished revision.","type":"string","enum":["Draft","Finished","Revised"]}}},"PublicApiWorkflowRevisionListResponse":{"title":"PublicApiWorkflowRevisionListResponse","type":"object","properties":{"data":{"description":"The list of resources returned by this request.","type":"array","items":{"title":"PublicApiWorkflowRevision","type":"object","required":["id","createdDate","createdBy","updatedDate","updatedBy","workflowId","version","status"],"properties":{"id":{"description":"The ID of the Revision","examples":["oi4HzZjUeSUBoX6ZkL1xzw"],"type":"string"},"createdDate":{"description":"When the resource was first created. ISO-8601 UTC.","type":"string","format":"date-time"},"createdBy":{"description":"User who created the resource.","examples":[{"id":"iUu2eOU2Q-sBoX6ZjZV9pQ","email":"jane.doe@example.com","username":"Jane Doe"}],"type":"object","required":["id","email","username"],"properties":{"id":{"title":"EntityID","description":"The resource's ID.","type":"string"},"email":{"description":"The user's email address (also their login identifier).","type":"string"},"username":{"description":"The user's display name (e.g. `Jane Doe`).","type":"string"}}},"updatedDate":{"description":"When the resource was last modified. ISO-8601 UTC.","type":"string","format":"date-time"},"updatedBy":{"description":"User who last modified the resource.","examples":[{"id":"iUu2eOU2Q-sBoX6ZjZV9pQ","email":"jane.doe@example.com","username":"Jane Doe"}],"type":"object","required":["id","email","username"],"properties":{"id":{"title":"EntityID","description":"The resource's ID.","type":"string"},"email":{"description":"The user's email address (also their login identifier).","type":"string"},"username":{"description":"The user's display name (e.g. `Jane Doe`).","type":"string"}}},"workflowId":{"description":"The ID of the Workflow","examples":["oi4HzZjUeSUBoX6ZkL1xzw"],"type":"string"},"version":{"description":"Revision version number; monotonically increasing per template.","type":"string"},"status":{"description":"Status of this revision. `Draft` — being edited; not yet published. `Finished` — currently published version (only one Finished revision per workflow/page at a time). `Revised` — was previously the published version but has been replaced by a newer Finished revision.","type":"string","enum":["Draft","Finished","Revised"]}}}},"links":{"description":"Pagination links. When the result has more pages, look for an entry with `name: \"next\"` — its `href` is the URL to fetch the next page. Absence of `next` means there are no more pages. For single-resource responses this array is typically empty.","type":"array","items":{"title":"Link","description":"A HATEOAS link to a related resource. Use these to navigate between resources without constructing URLs by hand.","type":"object","required":["name","href","type"],"properties":{"name":{"description":"Standard link relation name (RFC 5988) indicating this link's role. Common values include `self`, `edit`, `related`, `previous`, `next`.","type":"string"},"href":{"title":"Uri","description":"URL of the linked resource.","examples":["https://api.process.st/api/v1.1/resource/XXX"],"type":"string"},"rel":{"description":"Optional. The kind of resource this link points to (e.g. `Workflow`, `Task`, `Comment`).","type":"string","enum":["Approval Task","Approvals","Assignees","Comment","Data Set Records","Data Sets","Form Field Values","Subject Task","Task","Tasks","Users","Webhook","Workflow","Workflow Run"]},"type":{"description":"Whether this link targets an API endpoint or a Process Street app URL. `Api` — a callable API endpoint you can fetch directly. `App` — a browser-facing URL in the Process Street UI.","type":"string","enum":["Api","App"]}}}}}},"PublicApiWorkflowRevisionResponse":{"title":"PublicApiWorkflowRevisionResponse","type":"object","required":["data"],"properties":{"data":{"title":"PublicApiWorkflowRevision","type":"object","required":["id","createdDate","createdBy","updatedDate","updatedBy","workflowId","version","status"],"properties":{"id":{"description":"The ID of the Revision","examples":["oi4HzZjUeSUBoX6ZkL1xzw"],"type":"string"},"createdDate":{"description":"When the resource was first created. ISO-8601 UTC.","type":"string","format":"date-time"},"createdBy":{"description":"User who created the resource.","examples":[{"id":"iUu2eOU2Q-sBoX6ZjZV9pQ","email":"jane.doe@example.com","username":"Jane Doe"}],"type":"object","required":["id","email","username"],"properties":{"id":{"title":"EntityID","description":"The resource's ID.","type":"string"},"email":{"description":"The user's email address (also their login identifier).","type":"string"},"username":{"description":"The user's display name (e.g. `Jane Doe`).","type":"string"}}},"updatedDate":{"description":"When the resource was last modified. ISO-8601 UTC.","type":"string","format":"date-time"},"updatedBy":{"description":"User who last modified the resource.","examples":[{"id":"iUu2eOU2Q-sBoX6ZjZV9pQ","email":"jane.doe@example.com","username":"Jane Doe"}],"type":"object","required":["id","email","username"],"properties":{"id":{"title":"EntityID","description":"The resource's ID.","type":"string"},"email":{"description":"The user's email address (also their login identifier).","type":"string"},"username":{"description":"The user's display name (e.g. `Jane Doe`).","type":"string"}}},"workflowId":{"description":"The ID of the Workflow","examples":["oi4HzZjUeSUBoX6ZkL1xzw"],"type":"string"},"version":{"description":"Revision version number; monotonically increasing per template.","type":"string"},"status":{"description":"Status of this revision. `Draft` — being edited; not yet published. `Finished` — currently published version (only one Finished revision per workflow/page at a time). `Revised` — was previously the published version but has been replaced by a newer Finished revision.","type":"string","enum":["Draft","Finished","Revised"]}}},"links":{"description":"Pagination links. When the result has more pages, look for an entry with `name: \"next\"` — its `href` is the URL to fetch the next page. Absence of `next` means there are no more pages. For single-resource responses this array is typically empty.","type":"array","items":{"title":"Link","description":"A HATEOAS link to a related resource. Use these to navigate between resources without constructing URLs by hand.","type":"object","required":["name","href","type"],"properties":{"name":{"description":"Standard link relation name (RFC 5988) indicating this link's role. Common values include `self`, `edit`, `related`, `previous`, `next`.","type":"string"},"href":{"title":"Uri","description":"URL of the linked resource.","examples":["https://api.process.st/api/v1.1/resource/XXX"],"type":"string"},"rel":{"description":"Optional. The kind of resource this link points to (e.g. `Workflow`, `Task`, `Comment`).","type":"string","enum":["Approval Task","Approvals","Assignees","Comment","Data Set Records","Data Sets","Form Field Values","Subject Task","Task","Tasks","Users","Webhook","Workflow","Workflow Run"]},"type":{"description":"Whether this link targets an API endpoint or a Process Street app URL. `Api` — a callable API endpoint you can fetch directly. `App` — a browser-facing URL in the Process Street UI.","type":"string","enum":["Api","App"]}}}}}},"PublicApiWorkflowRevisionVariable":{"title":"PublicApiWorkflowRevisionVariable","type":"object","required":["key","label","variableType"],"properties":{"key":{"description":"Unique key used to identify this row across imports — matches the data set column referenced by the webhook's `keyColumn`.","type":"string"},"label":{"description":"Display label shown to the end user.","type":"string"},"variableType":{"title":"VariableType","description":"The kind of merge tag variable this is.\n\n- `Standard` — built-in variable like `{{workflow.name}}` or `{{run.startedDate}}`.\n- `FormField` — resolves to a form field value on the workflow run.\n- `DataSet` — resolves to a column from a linked data set row.\n- `EmailTrigger` — populated from an inbound email that triggered the workflow run.\n- `DocumentReview` — available on workflows using the Document Approvals feature\n  (see https://www.process.st/help/docs/document-approvals/).\n","type":"string","enum":["Standard","FormField","DataSet","EmailTrigger","DocumentReview"]}}},"PublicApiWorkflowRevisionVariableListResponse":{"title":"PublicApiWorkflowRevisionVariableListResponse","type":"object","properties":{"data":{"description":"The list of resources returned by this request.","type":"array","items":{"title":"PublicApiWorkflowRevisionVariable","type":"object","required":["key","label","variableType"],"properties":{"key":{"description":"Unique key used to identify this row across imports — matches the data set column referenced by the webhook's `keyColumn`.","type":"string"},"label":{"description":"Display label shown to the end user.","type":"string"},"variableType":{"title":"VariableType","description":"The kind of merge tag variable this is.\n\n- `Standard` — built-in variable like `{{workflow.name}}` or `{{run.startedDate}}`.\n- `FormField` — resolves to a form field value on the workflow run.\n- `DataSet` — resolves to a column from a linked data set row.\n- `EmailTrigger` — populated from an inbound email that triggered the workflow run.\n- `DocumentReview` — available on workflows using the Document Approvals feature\n  (see https://www.process.st/help/docs/document-approvals/).\n","type":"string","enum":["Standard","FormField","DataSet","EmailTrigger","DocumentReview"]}}}},"links":{"description":"Pagination links. When the result has more pages, look for an entry with `name: \"next\"` — its `href` is the URL to fetch the next page. Absence of `next` means there are no more pages. For single-resource responses this array is typically empty.","type":"array","items":{"title":"Link","description":"A HATEOAS link to a related resource. Use these to navigate between resources without constructing URLs by hand.","type":"object","required":["name","href","type"],"properties":{"name":{"description":"Standard link relation name (RFC 5988) indicating this link's role. Common values include `self`, `edit`, `related`, `previous`, `next`.","type":"string"},"href":{"title":"Uri","description":"URL of the linked resource.","examples":["https://api.process.st/api/v1.1/resource/XXX"],"type":"string"},"rel":{"description":"Optional. The kind of resource this link points to (e.g. `Workflow`, `Task`, `Comment`).","type":"string","enum":["Approval Task","Approvals","Assignees","Comment","Data Set Records","Data Sets","Form Field Values","Subject Task","Task","Tasks","Users","Webhook","Workflow","Workflow Run"]},"type":{"description":"Whether this link targets an API endpoint or a Process Street app URL. `Api` — a callable API endpoint you can fetch directly. `App` — a browser-facing URL in the Process Street UI.","type":"string","enum":["Api","App"]}}}}}},"PublicApiWorkflowRun":{"title":"PublicApiWorkflowRun","type":"object","required":["id","audit","status","workflowId","shared","migrationStatus"],"properties":{"id":{"description":"The ID of the Workflow Run","examples":["rQ9QGdNd-ysBoX6Zko9-Lw"],"type":"string"},"audit":{"title":"AuditInfo","description":"Creation and last-modification metadata.","type":"object","required":["createdDate","createdById","updatedDate","updatedById"],"properties":{"createdDate":{"description":"When the resource was first created. ISO-8601 UTC.","type":"string","format":"date-time"},"createdById":{"title":"EntityID","description":"ID of the user who created the resource.","type":"string"},"updatedDate":{"description":"When the resource was last modified. ISO-8601 UTC.","type":"string","format":"date-time"},"updatedById":{"title":"EntityID","description":"ID of the user who last modified the resource.","type":"string"}}},"name":{"description":"Display name of the workflow run (often interpolated from a name template).","type":"string"},"status":{"description":"Lifecycle status of a workflow run.\n\n- `Active` — the run is in progress.\n- `Completed` — all tasks were completed and the run was finalised.\n- `Archived` — the run was archived from the active list (no further task progress is recorded but the run stays queryable).\n- `Deleted` — the run was soft-deleted.\n\nList endpoints return only `Active` runs unless otherwise indicated.\n","type":"string","enum":["Active","Completed","Archived","Deleted"]},"workflowId":{"description":"The ID of the Workflow","examples":["rQ9QGdNd-ysBoX6Zko9-Lw"],"type":"string"},"shared":{"description":"When `true`, this run is visible via its share link.","type":"boolean"},"dueDate":{"description":"Optional workflow-level due date. ISO-8601 UTC.","type":"string","format":"date-time"},"migrationStatus":{"description":"Whether this run is currently being migrated to a newer workflow revision.\n\n- `Inactive` — not in a migration; this is the normal state.\n- `Scheduled` — a migration to a newer revision has been requested and is queued.\n- `Migrating` — migration is in progress; some fields may change shortly.\n","type":"string","enum":["Inactive","Scheduled","Migrating"]},"links":{"description":"Navigable HATEOAS links to related resources. Each entry has a `name` (RFC-5988 link relation like `self`, `edit`, `related`), an `href` URL, and a `type` (`Api` for callable endpoints, `App` for browser-facing URLs). Prefer following these `href` values over constructing URLs by hand.","type":"array","items":{"title":"Link","description":"A HATEOAS link to a related resource. Use these to navigate between resources without constructing URLs by hand.","type":"object","required":["name","href","type"],"properties":{"name":{"description":"Standard link relation name (RFC 5988) indicating this link's role. Common values include `self`, `edit`, `related`, `previous`, `next`.","type":"string"},"href":{"title":"Uri","description":"URL of the linked resource.","examples":["https://api.process.st/api/v1.1/resource/XXX"],"type":"string"},"rel":{"description":"Optional. The kind of resource this link points to (e.g. `Workflow`, `Task`, `Comment`).","type":"string","enum":["Approval Task","Approvals","Assignees","Comment","Data Set Records","Data Sets","Form Field Values","Subject Task","Task","Tasks","Users","Webhook","Workflow","Workflow Run"]},"type":{"description":"Whether this link targets an API endpoint or a Process Street app URL. `Api` — a callable API endpoint you can fetch directly. `App` — a browser-facing URL in the Process Street UI.","type":"string","enum":["Api","App"]}}}}}},"PublicApiWorkflowRunListResponse":{"title":"PublicApiWorkflowRunListResponse","type":"object","properties":{"data":{"description":"The list of resources returned by this request.","type":"array","items":{"title":"PublicApiWorkflowRun","type":"object","required":["id","audit","status","workflowId","shared","migrationStatus"],"properties":{"id":{"description":"The ID of the Workflow Run","examples":["rQ9QGdNd-ysBoX6Zko9-Lw"],"type":"string"},"audit":{"title":"AuditInfo","description":"Creation and last-modification metadata.","type":"object","required":["createdDate","createdById","updatedDate","updatedById"],"properties":{"createdDate":{"description":"When the resource was first created. ISO-8601 UTC.","type":"string","format":"date-time"},"createdById":{"title":"EntityID","description":"ID of the user who created the resource.","type":"string"},"updatedDate":{"description":"When the resource was last modified. ISO-8601 UTC.","type":"string","format":"date-time"},"updatedById":{"title":"EntityID","description":"ID of the user who last modified the resource.","type":"string"}}},"name":{"description":"Display name of the workflow run (often interpolated from a name template).","type":"string"},"status":{"description":"Lifecycle status of a workflow run.\n\n- `Active` — the run is in progress.\n- `Completed` — all tasks were completed and the run was finalised.\n- `Archived` — the run was archived from the active list (no further task progress is recorded but the run stays queryable).\n- `Deleted` — the run was soft-deleted.\n\nList endpoints return only `Active` runs unless otherwise indicated.\n","type":"string","enum":["Active","Completed","Archived","Deleted"]},"workflowId":{"description":"The ID of the Workflow","examples":["rQ9QGdNd-ysBoX6Zko9-Lw"],"type":"string"},"shared":{"description":"When `true`, this run is visible via its share link.","type":"boolean"},"dueDate":{"description":"Optional workflow-level due date. ISO-8601 UTC.","type":"string","format":"date-time"},"migrationStatus":{"description":"Whether this run is currently being migrated to a newer workflow revision.\n\n- `Inactive` — not in a migration; this is the normal state.\n- `Scheduled` — a migration to a newer revision has been requested and is queued.\n- `Migrating` — migration is in progress; some fields may change shortly.\n","type":"string","enum":["Inactive","Scheduled","Migrating"]},"links":{"description":"Navigable HATEOAS links to related resources. Each entry has a `name` (RFC-5988 link relation like `self`, `edit`, `related`), an `href` URL, and a `type` (`Api` for callable endpoints, `App` for browser-facing URLs). Prefer following these `href` values over constructing URLs by hand.","type":"array","items":{"title":"Link","description":"A HATEOAS link to a related resource. Use these to navigate between resources without constructing URLs by hand.","type":"object","required":["name","href","type"],"properties":{"name":{"description":"Standard link relation name (RFC 5988) indicating this link's role. Common values include `self`, `edit`, `related`, `previous`, `next`.","type":"string"},"href":{"title":"Uri","description":"URL of the linked resource.","examples":["https://api.process.st/api/v1.1/resource/XXX"],"type":"string"},"rel":{"description":"Optional. The kind of resource this link points to (e.g. `Workflow`, `Task`, `Comment`).","type":"string","enum":["Approval Task","Approvals","Assignees","Comment","Data Set Records","Data Sets","Form Field Values","Subject Task","Task","Tasks","Users","Webhook","Workflow","Workflow Run"]},"type":{"description":"Whether this link targets an API endpoint or a Process Street app URL. `Api` — a callable API endpoint you can fetch directly. `App` — a browser-facing URL in the Process Street UI.","type":"string","enum":["Api","App"]}}}}}}},"links":{"description":"Pagination links. When the result has more pages, look for an entry with `name: \"next\"` — its `href` is the URL to fetch the next page. Absence of `next` means there are no more pages. For single-resource responses this array is typically empty.","type":"array","items":{"title":"Link","description":"A HATEOAS link to a related resource. Use these to navigate between resources without constructing URLs by hand.","type":"object","required":["name","href","type"],"properties":{"name":{"description":"Standard link relation name (RFC 5988) indicating this link's role. Common values include `self`, `edit`, `related`, `previous`, `next`.","type":"string"},"href":{"title":"Uri","description":"URL of the linked resource.","examples":["https://api.process.st/api/v1.1/resource/XXX"],"type":"string"},"rel":{"description":"Optional. The kind of resource this link points to (e.g. `Workflow`, `Task`, `Comment`).","type":"string","enum":["Approval Task","Approvals","Assignees","Comment","Data Set Records","Data Sets","Form Field Values","Subject Task","Task","Tasks","Users","Webhook","Workflow","Workflow Run"]},"type":{"description":"Whether this link targets an API endpoint or a Process Street app URL. `Api` — a callable API endpoint you can fetch directly. `App` — a browser-facing URL in the Process Street UI.","type":"string","enum":["Api","App"]}}}}}},"RulePosition":{"title":"RulePosition","description":"Where to place this logic rule in the workflow revision. `Top` — before all existing rules. `Bottom` — after all existing rules (default when `position` is omitted). `After` — immediately after the rule identified by `ruleId`.","oneOf":[{"title":"RulePositionAfter","type":"object","required":["ruleId","type"],"properties":{"ruleId":{"title":"EntityID","type":"string"},"type":{"description":"Discriminator value for this variant. See the parent oneOf for the full set of values.","type":"string","const":"After"}}},{"title":"RulePositionBottom","type":"object","required":["type"],"properties":{"type":{"description":"Discriminator value for this variant. See the parent oneOf for the full set of values.","type":"string","const":"Bottom"}}},{"title":"RulePositionTop","type":"object","required":["type"],"properties":{"type":{"description":"Discriminator value for this variant. See the parent oneOf for the full set of values.","type":"string","const":"Top"}}}],"required":["type"],"discriminator":{"propertyName":"type","mapping":{"After":"#/components/schemas/RulePositionAfter","Bottom":"#/components/schemas/RulePositionBottom","Top":"#/components/schemas/RulePositionTop"}}},"RulePositionAfter":{"title":"RulePositionAfter","type":"object","required":["ruleId","type"],"properties":{"ruleId":{"title":"EntityID","type":"string"},"type":{"description":"Discriminator value for this variant. See the parent oneOf for the full set of values.","type":"string","const":"After"}}},"RulePositionBottom":{"title":"RulePositionBottom","type":"object","required":["type"],"properties":{"type":{"description":"Discriminator value for this variant. See the parent oneOf for the full set of values.","type":"string","const":"Bottom"}}},"RulePositionTop":{"title":"RulePositionTop","type":"object","required":["type"],"properties":{"type":{"description":"Discriminator value for this variant. See the parent oneOf for the full set of values.","type":"string","const":"Top"}}},"SearchMyWorkItemsRequest":{"title":"SearchMyWorkItemsRequest","type":"object","properties":{"assigneeEmails":{"description":"Filter results to items assigned to one or more user emails. Unknown emails are silently ignored (the search returns whatever the known assignees have). Defaults to the authenticated user if empty.","type":"array","items":{"type":"string"}},"types":{"type":"array","items":{"title":"InboxItemType","description":"Kind of My Work item.\n\n- `Checklist` — a workflow run assigned to the user.\n- `StandardTask` — a regular task within a workflow run.\n- `ApprovalTask` — an approval task awaiting the user's review.\n- `OneOffTask` — a standalone one-off task.\n- `Acknowledgment` — a revision-acknowledgment request after a workflow update.\n","type":"string","enum":["Checklist","StandardTask","ApprovalTask","OneOffTask","Acknowledgment"]}},"workflowIds":{"description":"Filter to specific workflows. Unknown/inaccessible workflow IDs are silently ignored.","type":"array","items":{"title":"EntityID","type":"string"}},"dueDateFrom":{"description":"Due date range start (ISO-8601, e.g. 2024-01-15).","type":"string","format":"date-time"},"dueDateTo":{"description":"Due date range end (ISO-8601, e.g. 2024-01-31).","type":"string","format":"date-time"},"snoozeStatus":{"title":"SnoozeStatus","description":"Snooze filter for the search.\n\n- `Active` — non-snoozed items only.\n- `Snoozed` — items currently snoozed.\n","type":"string","enum":["Active","Snoozed"]},"includeCompleted":{"description":"Include completed items. Defaults to false.","type":"boolean"},"searchTerm":{"description":"Free-text search term applied to task and workflow names.","type":"string"},"sortBy":{"title":"MyWorkSortBy","description":"Sort key.\n\n- `DueDate` — sort by assignment due date.\n- `Name` — sort by task name (falls back to workflow run name if the task has no name).\n","type":"string","enum":["DueDate","Name"]},"sortOrder":{"title":"MyWorkSortOrder","description":"Sort direction.\n\n- `Asc` — ascending.\n- `Desc` — descending.\n","type":"string","enum":["Asc","Desc"]}}},"SimplifiedApproval":{"title":"SimplifiedApproval","type":"object","required":["id","audit","organizationId","workflowRunId","approvalTaskId","subjectTaskId","status","reviewedBy"],"properties":{"id":{"title":"EntityID","description":"The resource's ID.","type":"string"},"audit":{"title":"PublicApiAudit","description":"Creation and last-modification metadata.","type":"object","required":["createdDate","createdBy","updatedDate","updatedBy"],"properties":{"createdDate":{"description":"When the resource was first created. ISO-8601 UTC.","type":"string","format":"date-time"},"createdBy":{"title":"PublicApiUser","description":"User who created the resource.","examples":[{"id":"iUu2eOU2Q-sBoX6ZjZV9pQ","email":"jane.doe@example.com","username":"Jane Doe"}],"type":"object","required":["id","email","username"],"properties":{"id":{"title":"EntityID","description":"The resource's ID.","type":"string"},"email":{"description":"The user's email address (also their login identifier).","type":"string"},"username":{"description":"The user's display name (e.g. `Jane Doe`).","type":"string"}}},"updatedDate":{"description":"When the resource was last modified. ISO-8601 UTC.","type":"string","format":"date-time"},"updatedBy":{"title":"PublicApiUser","description":"User who last modified the resource.","examples":[{"id":"iUu2eOU2Q-sBoX6ZjZV9pQ","email":"jane.doe@example.com","username":"Jane Doe"}],"type":"object","required":["id","email","username"],"properties":{"id":{"title":"EntityID","description":"The resource's ID.","type":"string"},"email":{"description":"The user's email address (also their login identifier).","type":"string"},"username":{"description":"The user's display name (e.g. `Jane Doe`).","type":"string"}}}}},"organizationId":{"title":"EntityID","description":"The ID of the organization this resource belongs to.","type":"string"},"workflowRunId":{"title":"EntityID","description":"The ID of the Workflow Run.","type":"string"},"approvalTaskId":{"title":"EntityID","type":"string"},"subjectTaskId":{"title":"EntityID","type":"string"},"status":{"description":"Outcome of an approval task review.\n\n- `Approved` — the reviewer accepted the subject task(s).\n- `Rejected` — the reviewer rejected; subject tasks return to the assignee for rework.\n","type":"string","enum":["Approved","Rejected"]},"reviewedBy":{"title":"PublicApiUser","examples":[{"id":"iUu2eOU2Q-sBoX6ZjZV9pQ","email":"jane.doe@example.com","username":"Jane Doe"}],"type":"object","required":["id","email","username"],"properties":{"id":{"title":"EntityID","description":"The resource's ID.","type":"string"},"email":{"description":"The user's email address (also their login identifier).","type":"string"},"username":{"description":"The user's display name (e.g. `Jane Doe`).","type":"string"}}},"comment":{"type":"string"},"links":{"description":"Navigable HATEOAS links to related resources. Each entry has a `name` (RFC-5988 relation), an `href` URL, and a `type` (`Api` or `App`).","type":"array","items":{"title":"Link","description":"A HATEOAS link to a related resource. Use these to navigate between resources without constructing URLs by hand.","type":"object","required":["name","href","type"],"properties":{"name":{"description":"Standard link relation name (RFC 5988) indicating this link's role. Common values include `self`, `edit`, `related`, `previous`, `next`.","type":"string"},"href":{"title":"Uri","description":"URL of the linked resource.","examples":["https://api.process.st/api/v1.1/resource/XXX"],"type":"string"},"rel":{"description":"Optional. The kind of resource this link points to (e.g. `Workflow`, `Task`, `Comment`).","type":"string","enum":["Approval Task","Approvals","Assignees","Comment","Data Set Records","Data Sets","Form Field Values","Subject Task","Task","Tasks","Users","Webhook","Workflow","Workflow Run"]},"type":{"description":"Whether this link targets an API endpoint or a Process Street app URL. `Api` — a callable API endpoint you can fetch directly. `App` — a browser-facing URL in the Process Street UI.","type":"string","enum":["Api","App"]}}}}}},"SimplifiedCell":{"title":"SimplifiedCell","type":"object","required":["fieldId","value"],"properties":{"fieldId":{"title":"EntityID","description":"The ID of the form field.","type":"string"},"value":{"description":"The option's stored value.","oneOf":[{"type":"null"},{"type":"number"},{"type":"string"}]}}},"SimplifiedDataSet":{"title":"SimplifiedDataSet","type":"object","required":["id","audit","organizationId","name"],"properties":{"id":{"title":"EntityID","description":"The resource's ID.","type":"string"},"audit":{"title":"PublicApiAudit","description":"Creation and last-modification metadata.","type":"object","required":["createdDate","createdBy","updatedDate","updatedBy"],"properties":{"createdDate":{"description":"When the resource was first created. ISO-8601 UTC.","type":"string","format":"date-time"},"createdBy":{"title":"PublicApiUser","description":"User who created the resource.","examples":[{"id":"iUu2eOU2Q-sBoX6ZjZV9pQ","email":"jane.doe@example.com","username":"Jane Doe"}],"type":"object","required":["id","email","username"],"properties":{"id":{"title":"EntityID","description":"The resource's ID.","type":"string"},"email":{"description":"The user's email address (also their login identifier).","type":"string"},"username":{"description":"The user's display name (e.g. `Jane Doe`).","type":"string"}}},"updatedDate":{"description":"When the resource was last modified. ISO-8601 UTC.","type":"string","format":"date-time"},"updatedBy":{"title":"PublicApiUser","description":"User who last modified the resource.","examples":[{"id":"iUu2eOU2Q-sBoX6ZjZV9pQ","email":"jane.doe@example.com","username":"Jane Doe"}],"type":"object","required":["id","email","username"],"properties":{"id":{"title":"EntityID","description":"The resource's ID.","type":"string"},"email":{"description":"The user's email address (also their login identifier).","type":"string"},"username":{"description":"The user's display name (e.g. `Jane Doe`).","type":"string"}}}}},"deletedDate":{"type":"string","format":"date-time"},"deletedBy":{"title":"PublicApiUser","examples":[{"id":"iUu2eOU2Q-sBoX6ZjZV9pQ","email":"jane.doe@example.com","username":"Jane Doe"}],"type":"object","required":["id","email","username"],"properties":{"id":{"title":"EntityID","description":"The resource's ID.","type":"string"},"email":{"description":"The user's email address (also their login identifier).","type":"string"},"username":{"description":"The user's display name (e.g. `Jane Doe`).","type":"string"}}},"organizationId":{"title":"EntityID","description":"The ID of the organization this resource belongs to.","type":"string"},"name":{"description":"Display name.","type":"string"},"fields":{"description":"Form field definitions or column definitions, depending on context.","type":"array","items":{"title":"DataSetField","type":"object","required":["id","audit","name","fieldType"],"properties":{"id":{"title":"EntityID","description":"The resource's ID.","type":"string"},"audit":{"title":"PublicApiAudit","description":"Creation and last-modification metadata.","type":"object","required":["createdDate","createdBy","updatedDate","updatedBy"],"properties":{"createdDate":{"description":"When the resource was first created. ISO-8601 UTC.","type":"string","format":"date-time"},"createdBy":{"title":"PublicApiUser","description":"User who created the resource.","examples":[{"id":"iUu2eOU2Q-sBoX6ZjZV9pQ","email":"jane.doe@example.com","username":"Jane Doe"}],"type":"object","required":["id","email","username"],"properties":{"id":{"title":"EntityID","description":"The resource's ID.","type":"string"},"email":{"description":"The user's email address (also their login identifier).","type":"string"},"username":{"description":"The user's display name (e.g. `Jane Doe`).","type":"string"}}},"updatedDate":{"description":"When the resource was last modified. ISO-8601 UTC.","type":"string","format":"date-time"},"updatedBy":{"title":"PublicApiUser","description":"User who last modified the resource.","examples":[{"id":"iUu2eOU2Q-sBoX6ZjZV9pQ","email":"jane.doe@example.com","username":"Jane Doe"}],"type":"object","required":["id","email","username"],"properties":{"id":{"title":"EntityID","description":"The resource's ID.","type":"string"},"email":{"description":"The user's email address (also their login identifier).","type":"string"},"username":{"description":"The user's display name (e.g. `Jane Doe`).","type":"string"}}}}},"name":{"description":"Display name.","type":"string"},"fieldType":{"title":"ColumnType","description":"Data type of the column.\n\n- `Text` — free-form string.\n- `Number` — numeric value.\n- `DateTime` — ISO-8601 date-time.\n","type":"string","enum":["Text","DateTime","Number"]}}}}}},"SimplifiedFormField":{"title":"SimplifiedFormField","type":"object","required":["id","audit","taskId","fieldType","key"],"properties":{"id":{"title":"EntityID","description":"The resource's ID.","type":"string"},"audit":{"title":"PublicApiAudit","description":"Creation and last-modification metadata.","type":"object","required":["createdDate","createdBy","updatedDate","updatedBy"],"properties":{"createdDate":{"description":"When the resource was first created. ISO-8601 UTC.","type":"string","format":"date-time"},"createdBy":{"title":"PublicApiUser","description":"User who created the resource.","examples":[{"id":"iUu2eOU2Q-sBoX6ZjZV9pQ","email":"jane.doe@example.com","username":"Jane Doe"}],"type":"object","required":["id","email","username"],"properties":{"id":{"title":"EntityID","description":"The resource's ID.","type":"string"},"email":{"description":"The user's email address (also their login identifier).","type":"string"},"username":{"description":"The user's display name (e.g. `Jane Doe`).","type":"string"}}},"updatedDate":{"description":"When the resource was last modified. ISO-8601 UTC.","type":"string","format":"date-time"},"updatedBy":{"title":"PublicApiUser","description":"User who last modified the resource.","examples":[{"id":"iUu2eOU2Q-sBoX6ZjZV9pQ","email":"jane.doe@example.com","username":"Jane Doe"}],"type":"object","required":["id","email","username"],"properties":{"id":{"title":"EntityID","description":"The resource's ID.","type":"string"},"email":{"description":"The user's email address (also their login identifier).","type":"string"},"username":{"description":"The user's display name (e.g. `Jane Doe`).","type":"string"}}}}},"taskId":{"title":"EntityID","description":"The ID of the Task.","type":"string"},"fieldType":{"description":"Form-field subtype discriminator (only relevant when widget `type` is `FormField`).\n\n- `Text` — short text input (≤255 characters).\n- `Textarea` — long-form text.\n- `Email` — email address.\n- `Url` — website / URL.\n- `Number` — numeric input with optional unit and constraints.\n- `Date` — date or date+time picker.\n- `Select` — dropdown; user picks one option.\n- `MultiChoice` — checkboxes; user picks one or more options.\n- `MultiSelect` — Subtasks: a checklist of sub-items inside the task.\n- `Members` — assignee picker (selects organization users).\n- `File` — single file upload.\n- `MultiFile` — multi-file upload (in-app \"File Upload\").\n- `Document` — document approval field; links the task to a document review.\n- `Table` — rows × columns of cells; users fill cell values.\n- `SendRichEmail` — pre-written email embedded in the task; sent manually by the user or\n  automatically when the task is completed.\n- `Hidden` — only visible when editing the workflow; populated by integrations or default values.\n- `Snippet` — only visible when editing; passes static text or merge tags into automations.\n","type":"string","enum":["Date","Document","Email","File","Hidden","Members","MultiChoice","MultiFile","MultiSelect","Number","Select","SendRichEmail","Snippet","Table","Text","Textarea","Url"]},"key":{"description":"Unique key based on the label. This is used when referencing the form field as a [variable](https://www.process.st/help/docs/variables/)","type":"string"},"label":{"description":"User defined label","type":"string"},"dataSetLinked":{"type":"boolean"}}},"SimplifiedFormFieldValue":{"title":"SimplifiedFormFieldValue","type":"object","required":["id","workflowRunId","taskId","key","data","fieldType"],"properties":{"id":{"title":"EntityID","description":"The resource's ID.","type":"string"},"updatedDate":{"description":"When the resource was last modified. ISO-8601 UTC.","type":"string","format":"date-time"},"updatedBy":{"title":"PublicApiUser","description":"User who last modified the resource.","examples":[{"id":"iUu2eOU2Q-sBoX6ZjZV9pQ","email":"jane.doe@example.com","username":"Jane Doe"}],"type":"object","required":["id","email","username"],"properties":{"id":{"title":"EntityID","description":"The resource's ID.","type":"string"},"email":{"description":"The user's email address (also their login identifier).","type":"string"},"username":{"description":"The user's display name (e.g. `Jane Doe`).","type":"string"}}},"workflowRunId":{"title":"EntityID","description":"The ID of the Workflow Run.","type":"string"},"taskId":{"title":"EntityID","description":"The ID of the Task.","type":"string"},"key":{"description":"Unique key based on the label. This is used when referencing the form field as a [variable](https://www.process.st/help/docs/variables/)","type":"string"},"label":{"description":"User defined label","type":"string"},"data":{"description":"The form field's value, encoded as JSON. Shape depends on `fieldType` — e.g. a string for `Text`, a number for `Number`, an array of selected option keys for `MultiChoice`."},"fieldType":{"description":"Form-field subtype discriminator (only relevant when widget `type` is `FormField`).\n\n- `Text` — short text input (≤255 characters).\n- `Textarea` — long-form text.\n- `Email` — email address.\n- `Url` — website / URL.\n- `Number` — numeric input with optional unit and constraints.\n- `Date` — date or date+time picker.\n- `Select` — dropdown; user picks one option.\n- `MultiChoice` — checkboxes; user picks one or more options.\n- `MultiSelect` — Subtasks: a checklist of sub-items inside the task.\n- `Members` — assignee picker (selects organization users).\n- `File` — single file upload.\n- `MultiFile` — multi-file upload (in-app \"File Upload\").\n- `Document` — document approval field; links the task to a document review.\n- `Table` — rows × columns of cells; users fill cell values.\n- `SendRichEmail` — pre-written email embedded in the task; sent manually by the user or\n  automatically when the task is completed.\n- `Hidden` — only visible when editing the workflow; populated by integrations or default values.\n- `Snippet` — only visible when editing; passes static text or merge tags into automations.\n","type":"string","enum":["Date","Document","Email","File","Hidden","Members","MultiChoice","MultiFile","MultiSelect","Number","Select","SendRichEmail","Snippet","Table","Text","Textarea","Url"]},"dataSetLinked":{"description":"When `true`, this field is bound to a data set row; its value is synchronised from the linked record.","type":"boolean"},"links":{"description":"Navigable HATEOAS links to related resources. Each entry has a `name` (RFC-5988 relation), an `href` URL, and a `type` (`Api` or `App`).","type":"array","items":{"title":"Link","description":"A HATEOAS link to a related resource. Use these to navigate between resources without constructing URLs by hand.","type":"object","required":["name","href","type"],"properties":{"name":{"description":"Standard link relation name (RFC 5988) indicating this link's role. Common values include `self`, `edit`, `related`, `previous`, `next`.","type":"string"},"href":{"title":"Uri","description":"URL of the linked resource.","examples":["https://api.process.st/api/v1.1/resource/XXX"],"type":"string"},"rel":{"description":"Optional. The kind of resource this link points to (e.g. `Workflow`, `Task`, `Comment`).","type":"string","enum":["Approval Task","Approvals","Assignees","Comment","Data Set Records","Data Sets","Form Field Values","Subject Task","Task","Tasks","Users","Webhook","Workflow","Workflow Run"]},"type":{"description":"Whether this link targets an API endpoint or a Process Street app URL. `Api` — a callable API endpoint you can fetch directly. `App` — a browser-facing URL in the Process Street UI.","type":"string","enum":["Api","App"]}}}}}},"SimplifiedRow":{"title":"SimplifiedRow","type":"object","required":["id","audit","organizationId","dataSetId"],"properties":{"id":{"title":"EntityID","description":"The resource's ID.","type":"string"},"audit":{"title":"PublicApiAudit","description":"Creation and last-modification metadata.","type":"object","required":["createdDate","createdBy","updatedDate","updatedBy"],"properties":{"createdDate":{"description":"When the resource was first created. ISO-8601 UTC.","type":"string","format":"date-time"},"createdBy":{"title":"PublicApiUser","description":"User who created the resource.","examples":[{"id":"iUu2eOU2Q-sBoX6ZjZV9pQ","email":"jane.doe@example.com","username":"Jane Doe"}],"type":"object","required":["id","email","username"],"properties":{"id":{"title":"EntityID","description":"The resource's ID.","type":"string"},"email":{"description":"The user's email address (also their login identifier).","type":"string"},"username":{"description":"The user's display name (e.g. `Jane Doe`).","type":"string"}}},"updatedDate":{"description":"When the resource was last modified. ISO-8601 UTC.","type":"string","format":"date-time"},"updatedBy":{"title":"PublicApiUser","description":"User who last modified the resource.","examples":[{"id":"iUu2eOU2Q-sBoX6ZjZV9pQ","email":"jane.doe@example.com","username":"Jane Doe"}],"type":"object","required":["id","email","username"],"properties":{"id":{"title":"EntityID","description":"The resource's ID.","type":"string"},"email":{"description":"The user's email address (also their login identifier).","type":"string"},"username":{"description":"The user's display name (e.g. `Jane Doe`).","type":"string"}}}}},"organizationId":{"title":"EntityID","description":"The ID of the organization this resource belongs to.","type":"string"},"dataSetId":{"title":"EntityID","type":"string"},"cells":{"type":"array","items":{"title":"SimplifiedCell","type":"object","required":["fieldId","value"],"properties":{"fieldId":{"title":"EntityID","description":"The ID of the form field.","type":"string"},"value":{"description":"The option's stored value.","oneOf":[{"type":"null"},{"type":"number"},{"type":"string"}]}}}}}},"SnoozeMyWorkItemRequest":{"title":"SnoozeMyWorkItemRequest","type":"object","required":["until"],"properties":{"until":{"description":"Snooze until this date (ISO-8601, e.g. 2024-06-01). Must be in the future.","type":"string","format":"date-time"}}},"SnoozeStatus":{"title":"SnoozeStatus","type":"string","enum":["Active","Snoozed"]},"SnoozeStatus1":{"title":"SnoozeStatus","description":"Snooze filter for the search.\n\n- `Active` — non-snoozed items only.\n- `Snoozed` — items currently snoozed.\n","type":"string","enum":["Active","Snoozed"]},"SourceType":{"title":"SourceType","description":"Where the user(s) that get task access are pulled from at runtime.\n\n- `ChecklistInitiator` — grants access to the user who started the workflow run.\n- `FormField` — grants access to users referenced by a form field on the run (`sourceWidgetId`\n  identifies which Members form field).\n","type":"string","enum":["ChecklistInitiator","FormField"]},"StaticAssignmentRule":{"title":"StaticAssignmentRule","type":"object","required":["email","type"],"properties":{"email":{"description":"Email address.","type":"string"},"type":{"description":"Discriminator value for this variant. See the parent oneOf for the full set of values.","type":"string","const":"Static"}}},"StaticAssignmentRuleRequest":{"title":"StaticAssignmentRuleRequest","type":"object","required":["email","type"],"properties":{"email":{"description":"Email address.","type":"string"},"type":{"description":"Discriminator value for this variant. See the parent oneOf for the full set of values.","type":"string","const":"Static"}}},"StaticPermissionRule":{"title":"StaticPermissionRule","type":"object","required":["user","taskRead","taskUpdate","type"],"properties":{"user":{"title":"PublicApiUser","description":"User this entry refers to.","examples":[{"id":"iUu2eOU2Q-sBoX6ZjZV9pQ","email":"jane.doe@example.com","username":"Jane Doe"}],"type":"object","required":["id","email","username"],"properties":{"id":{"title":"EntityID","description":"The resource's ID.","type":"string"},"email":{"description":"The user's email address (also their login identifier).","type":"string"},"username":{"description":"The user's display name (e.g. `Jane Doe`).","type":"string"}}},"taskRead":{"description":"When `true`, the rule grants read access to the task.","type":"boolean"},"taskUpdate":{"description":"When `true`, the rule grants update access to the task (check off, edit form fields).","type":"boolean"},"type":{"description":"Discriminator value for this variant. See the parent oneOf for the full set of values.","type":"string","const":"Static"}}},"StaticPermissionRuleRequest":{"title":"StaticPermissionRuleRequest","type":"object","required":["email","taskRead","taskUpdate","type"],"properties":{"email":{"description":"Email address.","type":"string"},"taskRead":{"description":"When `true`, the rule grants read access to the task.","type":"boolean"},"taskUpdate":{"description":"When `true`, the rule grants update access to the task (check off, edit form fields).","type":"boolean"},"type":{"description":"Discriminator value for this variant. See the parent oneOf for the full set of values.","type":"string","const":"Static"}}},"Status":{"title":"Status","type":"string","enum":["NotCompleted","Completed"]},"Status1":{"title":"Status","description":"Whether this subtask has been checked off.\n\n- `Completed` — the subtask is checked.\n- `NotCompleted` — the subtask is unchecked.\n","type":"string","enum":["Completed","NotCompleted"]},"TaskDueDateRuleBody":{"title":"TaskDueDateRuleBody","description":"The rule to set; omit or send `null` to clear the existing rule.","type":"object","required":["sourceType","offsetDirection","dueOffset","businessDaysHandlingMode"],"properties":{"sourceType":{"description":"How the task's due date is derived. `ChecklistStartDate` / `ChecklistDueDate` — relative to the workflow run's start or due date. `TaskCompletedDate` / `TaskDueDate` — relative to a specific source task (requires `sourceTaskId`). `PreviousTaskCompletedDate` — relative to the task immediately before this one. `FormFieldValue` — relative to a Date form field value (requires `sourceWidgetId`).","type":"string","enum":["FormFieldValue","TaskCompletedDate","PreviousTaskCompletedDate","TaskDueDate","ChecklistStartDate","ChecklistDueDate"]},"sourceWidgetId":{"title":"EntityID","description":"For `sourceType=FormField`: the ID of the Members form field whose value drives the rule's assignees at runtime. Absent for `sourceType=ChecklistInitiator`.","type":"string"},"sourceTaskId":{"title":"EntityID","type":"string"},"offsetDirection":{"description":"Whether the offset applies before or after the source date.","type":"string","enum":["Before","After"]},"dueOffset":{"description":"ISO-8601 duration (e.g. `P7D`, `PT4H30M`). Weeks are stored as days, so `P2W` reads back as `P14D`, and with `BusinessDaysOnly` each of those days is a business day.","type":"string"},"businessDaysHandlingMode":{"title":"BusinessDaysHandlingMode","description":"How non-business days are handled when calculating the due date. `AllDays` counts every day. `BusinessDaysOnly` counts only Monday–Friday. `ShiftToNextBusinessDay` calculates using all days then moves a Saturday/Sunday result to the next Monday.","type":"string","enum":["AllDays","BusinessDaysOnly","ShiftToNextBusinessDay"]}}},"TaskPosition":{"title":"TaskPosition","description":"Where to place this task in the workflow revision. `Top` — before all existing tasks. `Bottom` — after all existing tasks (default when `position` is omitted). `After` — immediately after the task identified by `taskId`.","oneOf":[{"title":"TaskPositionAfter","type":"object","required":["taskId","type"],"properties":{"taskId":{"title":"EntityID","description":"The ID of the Task.","type":"string"},"type":{"description":"Discriminator value for this variant. See the parent oneOf for the full set of values.","type":"string","const":"After"}}},{"title":"TaskPositionBottom","type":"object","required":["type"],"properties":{"type":{"description":"Discriminator value for this variant. See the parent oneOf for the full set of values.","type":"string","const":"Bottom"}}},{"title":"TaskPositionTop","type":"object","required":["type"],"properties":{"type":{"description":"Discriminator value for this variant. See the parent oneOf for the full set of values.","type":"string","const":"Top"}}}],"required":["type"],"discriminator":{"propertyName":"type","mapping":{"After":"#/components/schemas/TaskPositionAfter","Bottom":"#/components/schemas/TaskPositionBottom","Top":"#/components/schemas/TaskPositionTop"}}},"TaskPositionAfter":{"title":"TaskPositionAfter","type":"object","required":["taskId","type"],"properties":{"taskId":{"title":"EntityID","description":"The ID of the Task.","type":"string"},"type":{"description":"Discriminator value for this variant. See the parent oneOf for the full set of values.","type":"string","const":"After"}}},"TaskPositionBottom":{"title":"TaskPositionBottom","type":"object","required":["type"],"properties":{"type":{"description":"Discriminator value for this variant. See the parent oneOf for the full set of values.","type":"string","const":"Bottom"}}},"TaskPositionTop":{"title":"TaskPositionTop","type":"object","required":["type"],"properties":{"type":{"description":"Discriminator value for this variant. See the parent oneOf for the full set of values.","type":"string","const":"Top"}}},"TaskType":{"title":"TaskType","description":"What the task does.\n\n- `Standard` — a regular task that a user manually checks off when done.\n- `Approval` — an approval task; a reviewer approves or rejects it, gating subsequent tasks.\n- `AI` — an automated task that runs an AI prompt to populate form field values.\n- `Code` — an automated task that runs a custom code snippet.\n","type":"string","enum":["Standard","Approval","AI","Code"]},"TaskType1":{"title":"TaskType","description":"What the task does.\n\n- `Standard` — a regular task that a user manually checks off when done.\n- `Approval` — an approval task; a reviewer approves or rejects it, gating subsequent tasks.\n- `AI` — an automated task that runs an AI prompt to populate form field values.\n- `Code` — an automated task that runs a custom code snippet.\n","type":"string","enum":["Standard","Approval","AI","Code"]},"TestAuthResponse":{"title":"TestAuthResponse","type":"object","required":["apiKeyLabel"],"properties":{"apiKeyLabel":{"type":"string"}}},"Type":{"title":"Type","type":"string","enum":["CrossLink","Email","Embed","File","FormField","Image","Text","Video"]},"UpdateChecklistDueDateRuleRequest":{"title":"UpdateChecklistDueDateRuleRequest","type":"object","properties":{"rule":{"title":"DueDateRuleBody","description":"The rule to set; omit or send `null` to clear the existing rule.","type":"object","required":["sourceType","offsetDirection","dueOffset","businessDaysHandlingMode"],"properties":{"sourceType":{"description":"How the workflow run's due date is derived. `ChecklistStartDate` bases the due date on the workflow run's start date. `FormFieldValue` bases it on a Date form field value (requires `sourceWidgetId`).","type":"string","enum":["FormFieldValue","ChecklistStartDate"]},"sourceWidgetId":{"title":"EntityID","description":"For `sourceType=FormField`: the ID of the Members form field whose value drives the rule's assignees at runtime. Absent for `sourceType=ChecklistInitiator`.","type":"string"},"offsetDirection":{"description":"Whether the offset applies before or after the source date.","type":"string","enum":["Before","After"]},"dueOffset":{"description":"ISO-8601 duration (e.g. `P7D`, `PT4H30M`). Weeks are stored as days, so `P2W` reads back as `P14D`, and with `BusinessDaysOnly` each of those days is a business day.","type":"string"},"businessDaysHandlingMode":{"title":"BusinessDaysHandlingMode","description":"How non-business days are handled when calculating the due date. `AllDays` counts every day. `BusinessDaysOnly` counts only Monday–Friday. `ShiftToNextBusinessDay` calculates using all days then moves a Saturday/Sunday result to the next Monday.","type":"string","enum":["AllDays","BusinessDaysOnly","ShiftToNextBusinessDay"]}}}}},"UpdateCommentRequest":{"title":"UpdateCommentRequest","type":"object","required":["text"],"properties":{"text":{"type":"string","minLength":1}}},"UpdateDataSetField":{"title":"UpdateDataSetField","type":"object","required":["name","fieldType"],"properties":{"id":{"title":"EntityID","description":"The resource's ID.","type":"string"},"name":{"description":"Display name.","type":"string","minLength":1},"fieldType":{"title":"ColumnType","description":"Data type of the column.\n\n- `Text` — free-form string.\n- `Number` — numeric value.\n- `DateTime` — ISO-8601 date-time.\n","type":"string","enum":["Text","DateTime","Number"]}}},"UpdateDataSetIncomingWebhookRequest":{"title":"UpdateDataSetIncomingWebhookRequest","type":"object","required":["name","automationApp","status","config"],"properties":{"name":{"description":"Display name.","type":"string"},"automationApp":{"type":"string"},"status":{"description":"Incoming webhook lifecycle.\n\n- `Active` — the webhook accepts and processes incoming payloads.\n- `Disabled` — the URL still resolves but payloads are dropped without writing to the data set.\n- `Deleted` — the webhook is soft-deleted; only returned by endpoints that explicitly include\n  deleted records.\n","type":"string","enum":["Active","Disabled","Deleted"]},"config":{"title":"DataSetIncomingWebhookConfigRequest","description":"Field-specific configuration. Shape depends on `fieldType`.","type":"object","required":["columns"],"properties":{"columns":{"description":"Cell values keyed by column ID.","type":"object","additionalProperties":{"type":"string"}},"keyColumn":{"description":"Name of the column used as the unique key when reconciling rows on upsert.","type":"string"}}}}},"UpdateDataSetRequest":{"title":"UpdateDataSetRequest","type":"object","required":["name"],"properties":{"name":{"description":"Display name.","type":"string","minLength":1},"fields":{"description":"Form field definitions or column definitions, depending on context.","type":"array","minItems":1,"items":{"title":"UpdateDataSetField","type":"object","required":["name","fieldType"],"properties":{"id":{"title":"EntityID","description":"The resource's ID.","type":"string"},"name":{"description":"Display name.","type":"string","minLength":1},"fieldType":{"title":"ColumnType","description":"Data type of the column.\n\n- `Text` — free-form string.\n- `Number` — numeric value.\n- `DateTime` — ISO-8601 date-time.\n","type":"string","enum":["Text","DateTime","Number"]}}}}}},"UpdateDataSetRowRequest":{"title":"UpdateDataSetRowRequest","type":"object","properties":{"cells":{"type":"array","items":{"title":"SimplifiedCell","type":"object","required":["fieldId","value"],"properties":{"fieldId":{"title":"EntityID","description":"The ID of the form field.","type":"string"},"value":{"description":"The option's stored value.","oneOf":[{"type":"null"},{"type":"number"},{"type":"string"}]}}}}}},"UpdateDateFormFieldRequest":{"title":"UpdateDateFormFieldRequest","type":"object","required":["hiddenByDefault","required","config","constraints","type","fieldType"],"properties":{"hiddenByDefault":{"description":"When `true`, the widget is hidden by default; conditional logic rules can reveal it at runtime. Defaults to `false`.","type":"boolean"},"position":{"title":"WidgetPosition","description":"Where to place this widget on the task. `Top` — before all existing widgets. `Bottom` — after all existing widgets (default when `position` is omitted). `After` — immediately after the widget identified by `widgetId`.","oneOf":[{"title":"WidgetPositionAfter","type":"object","required":["widgetId","type"],"properties":{"widgetId":{"title":"EntityID","description":"The ID of the widget.","type":"string"},"type":{"description":"Discriminator value for this variant. See the parent oneOf for the full set of values.","type":"string","const":"After"}}},{"title":"WidgetPositionBottom","type":"object","required":["type"],"properties":{"type":{"description":"Discriminator value for this variant. See the parent oneOf for the full set of values.","type":"string","const":"Bottom"}}},{"title":"WidgetPositionTop","type":"object","required":["type"],"properties":{"type":{"description":"Discriminator value for this variant. See the parent oneOf for the full set of values.","type":"string","const":"Top"}}}],"required":["type"],"discriminator":{"propertyName":"type","mapping":{"After":"#/components/schemas/WidgetPositionAfter","Bottom":"#/components/schemas/WidgetPositionBottom","Top":"#/components/schemas/WidgetPositionTop"}}},"label":{"description":"Display label shown to the end user.","type":"string","maxLength":255},"required":{"description":"When `true`, the form field must have a value before its task can be completed.","type":"boolean"},"config":{"title":"PublicApiDateFormFieldConfig","description":"Field-specific configuration. Shape depends on `fieldType`.","type":"object","properties":{"defaultValue":{"description":"Default value pre-filled when a new workflow run is created.","type":"string"},"timeOption":{"description":"How time-of-day is handled on this Date field.\n\n- `Included` — the field always captures both date and time.\n- `Excluded` — date only; time is never captured.\n- `Optional` — the user picks whether to include a time.\n","type":"string","enum":["Included","Excluded","Optional"]}}},"constraints":{"title":"PublicApiDateFormFieldConstraints","description":"Field-specific validation constraints. Shape depends on `fieldType`.","type":"object","properties":{"afterDate":{"description":"Earliest accepted date (inclusive). Pair with `afterDateSourceType`.","type":"string","format":"date-time"},"beforeDate":{"description":"Latest accepted date (inclusive). Pair with `beforeDateSourceType`.","type":"string","format":"date-time"},"afterDateFormFieldWidgetGroupId":{"title":"EntityID","description":"When `afterDateSourceType=FormField`, the ID of the Date form field whose value is the lower bound.","type":"string"},"beforeDateFormFieldWidgetGroupId":{"title":"EntityID","description":"When `beforeDateSourceType=FormField`, the ID of the Date form field whose value is the upper bound.","type":"string"},"afterDateSourceType":{"description":"How the before/after constraint date is derived.\n\n- `SpecificDate` — an absolute date supplied as `afterDate` / `beforeDate`.\n- `FormFieldValue` — derived from another Date form field (`afterDateField` / `beforeDateField`).\n- `TaskDueDate` — relative to the containing task's due date.\n- `ChecklistStartDate` / `ChecklistDueDate` — relative to the workflow run's start or due date.\n","type":"string","enum":["SpecificDate","FormFieldValue","TaskDueDate","ChecklistStartDate","ChecklistDueDate"]},"beforeDateSourceType":{"description":"How the before/after constraint date is derived.\n\n- `SpecificDate` — an absolute date supplied as `afterDate` / `beforeDate`.\n- `FormFieldValue` — derived from another Date form field (`afterDateField` / `beforeDateField`).\n- `TaskDueDate` — relative to the containing task's due date.\n- `ChecklistStartDate` / `ChecklistDueDate` — relative to the workflow run's start or due date.\n","type":"string","enum":["SpecificDate","FormFieldValue","TaskDueDate","ChecklistStartDate","ChecklistDueDate"]},"afterDateOffset":{"description":"ISO 8601 duration (e.g. `P7D`, `P1Y2M`).","type":"string"},"beforeDateOffset":{"description":"ISO 8601 duration (e.g. `P7D`, `P1Y2M`).","type":"string"}}},"type":{"description":"Discriminator value for this variant. See the parent oneOf for the full set of values.","examples":["FormField"],"type":"string","enum":["FormField"]},"fieldType":{"description":"Form-field subtype discriminator (only relevant when widget `type` is `FormField`).\n\n- `Text` — short text input (≤255 characters).\n- `Textarea` — long-form text.\n- `Email` — email address.\n- `Url` — website / URL.\n- `Number` — numeric input with optional unit and constraints.\n- `Date` — date or date+time picker.\n- `Select` — dropdown; user picks one option.\n- `MultiChoice` — checkboxes; user picks one or more options.\n- `MultiSelect` — Subtasks: a checklist of sub-items inside the task.\n- `Members` — assignee picker (selects organization users).\n- `File` — single file upload.\n- `MultiFile` — multi-file upload (in-app \"File Upload\").\n- `Document` — document approval field; links the task to a document review.\n- `Table` — rows × columns of cells; users fill cell values.\n- `SendRichEmail` — pre-written email embedded in the task; sent manually by the user or\n  automatically when the task is completed.\n- `Hidden` — only visible when editing the workflow; populated by integrations or default values.\n- `Snippet` — only visible when editing; passes static text or merge tags into automations.\n","type":"string","enum":["Date","Document","Email","File","Hidden","Members","MultiChoice","MultiFile","MultiSelect","Number","Select","SendRichEmail","Snippet","Table","Text","Textarea","Url"],"const":"Date"}}},"UpdateDocumentFormFieldRequest":{"title":"UpdateDocumentFormFieldRequest","type":"object","required":["hiddenByDefault","required","config","type","fieldType"],"properties":{"hiddenByDefault":{"description":"When `true`, the widget is hidden by default; conditional logic rules can reveal it at runtime. Defaults to `false`.","type":"boolean"},"position":{"title":"WidgetPosition","description":"Where to place this widget on the task. `Top` — before all existing widgets. `Bottom` — after all existing widgets (default when `position` is omitted). `After` — immediately after the widget identified by `widgetId`.","oneOf":[{"title":"WidgetPositionAfter","type":"object","required":["widgetId","type"],"properties":{"widgetId":{"title":"EntityID","description":"The ID of the widget.","type":"string"},"type":{"description":"Discriminator value for this variant. See the parent oneOf for the full set of values.","type":"string","const":"After"}}},{"title":"WidgetPositionBottom","type":"object","required":["type"],"properties":{"type":{"description":"Discriminator value for this variant. See the parent oneOf for the full set of values.","type":"string","const":"Bottom"}}},{"title":"WidgetPositionTop","type":"object","required":["type"],"properties":{"type":{"description":"Discriminator value for this variant. See the parent oneOf for the full set of values.","type":"string","const":"Top"}}}],"required":["type"],"discriminator":{"propertyName":"type","mapping":{"After":"#/components/schemas/WidgetPositionAfter","Bottom":"#/components/schemas/WidgetPositionBottom","Top":"#/components/schemas/WidgetPositionTop"}}},"label":{"description":"Display label shown to the end user.","type":"string","maxLength":255},"required":{"description":"When `true`, the form field must have a value before its task can be completed.","type":"boolean"},"config":{"title":"PublicApiDocumentFormFieldConfig","description":"Field-specific configuration. Shape depends on `fieldType`.","type":"object","required":["reviewRequest"],"properties":{"reviewRequest":{"description":"When `true`, the email requires explicit user review/send rather than auto-send.","type":"boolean"},"defaultValue":{"description":"Default value pre-filled when a new workflow run is created.","type":"string"}}},"type":{"description":"Discriminator value for this variant. See the parent oneOf for the full set of values.","examples":["FormField"],"type":"string","enum":["FormField"]},"fieldType":{"description":"Form-field subtype discriminator (only relevant when widget `type` is `FormField`).\n\n- `Text` — short text input (≤255 characters).\n- `Textarea` — long-form text.\n- `Email` — email address.\n- `Url` — website / URL.\n- `Number` — numeric input with optional unit and constraints.\n- `Date` — date or date+time picker.\n- `Select` — dropdown; user picks one option.\n- `MultiChoice` — checkboxes; user picks one or more options.\n- `MultiSelect` — Subtasks: a checklist of sub-items inside the task.\n- `Members` — assignee picker (selects organization users).\n- `File` — single file upload.\n- `MultiFile` — multi-file upload (in-app \"File Upload\").\n- `Document` — document approval field; links the task to a document review.\n- `Table` — rows × columns of cells; users fill cell values.\n- `SendRichEmail` — pre-written email embedded in the task; sent manually by the user or\n  automatically when the task is completed.\n- `Hidden` — only visible when editing the workflow; populated by integrations or default values.\n- `Snippet` — only visible when editing; passes static text or merge tags into automations.\n","type":"string","enum":["Date","Document","Email","File","Hidden","Members","MultiChoice","MultiFile","MultiSelect","Number","Select","SendRichEmail","Snippet","Table","Text","Textarea","Url"],"const":"Document"}}},"UpdateEmailFormFieldRequest":{"title":"UpdateEmailFormFieldRequest","type":"object","required":["hiddenByDefault","required","config","constraints","type","fieldType"],"properties":{"hiddenByDefault":{"description":"When `true`, the widget is hidden by default; conditional logic rules can reveal it at runtime. Defaults to `false`.","type":"boolean"},"position":{"title":"WidgetPosition","description":"Where to place this widget on the task. `Top` — before all existing widgets. `Bottom` — after all existing widgets (default when `position` is omitted). `After` — immediately after the widget identified by `widgetId`.","oneOf":[{"title":"WidgetPositionAfter","type":"object","required":["widgetId","type"],"properties":{"widgetId":{"title":"EntityID","description":"The ID of the widget.","type":"string"},"type":{"description":"Discriminator value for this variant. See the parent oneOf for the full set of values.","type":"string","const":"After"}}},{"title":"WidgetPositionBottom","type":"object","required":["type"],"properties":{"type":{"description":"Discriminator value for this variant. See the parent oneOf for the full set of values.","type":"string","const":"Bottom"}}},{"title":"WidgetPositionTop","type":"object","required":["type"],"properties":{"type":{"description":"Discriminator value for this variant. See the parent oneOf for the full set of values.","type":"string","const":"Top"}}}],"required":["type"],"discriminator":{"propertyName":"type","mapping":{"After":"#/components/schemas/WidgetPositionAfter","Bottom":"#/components/schemas/WidgetPositionBottom","Top":"#/components/schemas/WidgetPositionTop"}}},"label":{"description":"Display label shown to the end user.","type":"string","maxLength":255},"required":{"description":"When `true`, the form field must have a value before its task can be completed.","type":"boolean"},"config":{"title":"PublicApiEmailFormFieldConfig","description":"Field-specific configuration. Shape depends on `fieldType`.","type":"object","properties":{"placeholder":{"description":"Placeholder hint shown in the input when no value has been entered.","type":"string"},"defaultValue":{"description":"Default value pre-filled when a new workflow run is created.","type":"string"}}},"constraints":{"title":"PublicApiEmailFormFieldConstraints","description":"Field-specific validation constraints. Shape depends on `fieldType`.","type":"object","properties":{"domains":{"description":"Allowed (or blocked, depending on `restriction`) email domains for this field.","type":"array","items":{"type":"string"}},"restriction":{"description":"How the `domains` list filters allowed email addresses.\n\n- `Allow` — only emails whose domain is in the list are accepted.\n- `Block` — emails whose domain is in the list are rejected; all others accepted.\n","type":"string","enum":["Allow","Block"]}}},"type":{"description":"Discriminator value for this variant. See the parent oneOf for the full set of values.","examples":["FormField"],"type":"string","enum":["FormField"]},"fieldType":{"description":"Form-field subtype discriminator (only relevant when widget `type` is `FormField`).\n\n- `Text` — short text input (≤255 characters).\n- `Textarea` — long-form text.\n- `Email` — email address.\n- `Url` — website / URL.\n- `Number` — numeric input with optional unit and constraints.\n- `Date` — date or date+time picker.\n- `Select` — dropdown; user picks one option.\n- `MultiChoice` — checkboxes; user picks one or more options.\n- `MultiSelect` — Subtasks: a checklist of sub-items inside the task.\n- `Members` — assignee picker (selects organization users).\n- `File` — single file upload.\n- `MultiFile` — multi-file upload (in-app \"File Upload\").\n- `Document` — document approval field; links the task to a document review.\n- `Table` — rows × columns of cells; users fill cell values.\n- `SendRichEmail` — pre-written email embedded in the task; sent manually by the user or\n  automatically when the task is completed.\n- `Hidden` — only visible when editing the workflow; populated by integrations or default values.\n- `Snippet` — only visible when editing; passes static text or merge tags into automations.\n","type":"string","enum":["Date","Document","Email","File","Hidden","Members","MultiChoice","MultiFile","MultiSelect","Number","Select","SendRichEmail","Snippet","Table","Text","Textarea","Url"],"const":"Email"}}},"UpdateFileFormFieldRequest":{"title":"UpdateFileFormFieldRequest","type":"object","required":["hiddenByDefault","required","config","constraints","type","fieldType"],"properties":{"hiddenByDefault":{"description":"When `true`, the widget is hidden by default; conditional logic rules can reveal it at runtime. Defaults to `false`.","type":"boolean"},"position":{"title":"WidgetPosition","description":"Where to place this widget on the task. `Top` — before all existing widgets. `Bottom` — after all existing widgets (default when `position` is omitted). `After` — immediately after the widget identified by `widgetId`.","oneOf":[{"title":"WidgetPositionAfter","type":"object","required":["widgetId","type"],"properties":{"widgetId":{"title":"EntityID","description":"The ID of the widget.","type":"string"},"type":{"description":"Discriminator value for this variant. See the parent oneOf for the full set of values.","type":"string","const":"After"}}},{"title":"WidgetPositionBottom","type":"object","required":["type"],"properties":{"type":{"description":"Discriminator value for this variant. See the parent oneOf for the full set of values.","type":"string","const":"Bottom"}}},{"title":"WidgetPositionTop","type":"object","required":["type"],"properties":{"type":{"description":"Discriminator value for this variant. See the parent oneOf for the full set of values.","type":"string","const":"Top"}}}],"required":["type"],"discriminator":{"propertyName":"type","mapping":{"After":"#/components/schemas/WidgetPositionAfter","Bottom":"#/components/schemas/WidgetPositionBottom","Top":"#/components/schemas/WidgetPositionTop"}}},"label":{"description":"Display label shown to the end user.","type":"string","maxLength":255},"required":{"description":"When `true`, the form field must have a value before its task can be completed.","type":"boolean"},"config":{"title":"PublicApiFileFormFieldConfig","description":"Field-specific configuration. Shape depends on `fieldType`.","type":"object","properties":{"placeholder":{"description":"Placeholder hint shown in the input when no value has been entered.","type":"string"},"extractTextContent":{"description":"When `true`, server extracts text from uploaded documents for use in merge tags.","type":"boolean"}}},"constraints":{"title":"PublicApiFileFormFieldConstraints","description":"Field-specific validation constraints. Shape depends on `fieldType`.","type":"object","properties":{"extensions":{"description":"Allowed file extensions, including the leading dot (e.g. `.pdf`, `.docx`).","type":"array","items":{"type":"string"}}}},"type":{"description":"Discriminator value for this variant. See the parent oneOf for the full set of values.","examples":["FormField"],"type":"string","enum":["FormField"]},"fieldType":{"description":"Form-field subtype discriminator (only relevant when widget `type` is `FormField`).\n\n- `Text` — short text input (≤255 characters).\n- `Textarea` — long-form text.\n- `Email` — email address.\n- `Url` — website / URL.\n- `Number` — numeric input with optional unit and constraints.\n- `Date` — date or date+time picker.\n- `Select` — dropdown; user picks one option.\n- `MultiChoice` — checkboxes; user picks one or more options.\n- `MultiSelect` — Subtasks: a checklist of sub-items inside the task.\n- `Members` — assignee picker (selects organization users).\n- `File` — single file upload.\n- `MultiFile` — multi-file upload (in-app \"File Upload\").\n- `Document` — document approval field; links the task to a document review.\n- `Table` — rows × columns of cells; users fill cell values.\n- `SendRichEmail` — pre-written email embedded in the task; sent manually by the user or\n  automatically when the task is completed.\n- `Hidden` — only visible when editing the workflow; populated by integrations or default values.\n- `Snippet` — only visible when editing; passes static text or merge tags into automations.\n","type":"string","enum":["Date","Document","Email","File","Hidden","Members","MultiChoice","MultiFile","MultiSelect","Number","Select","SendRichEmail","Snippet","Table","Text","Textarea","Url"],"const":"File"}}},"UpdateFolderRequest":{"title":"UpdateFolderRequest","type":"object","required":["name"],"properties":{"name":{"description":"Display name.","type":"string","minLength":1}}},"UpdateFormFieldWidgetRequest":{"title":"UpdateFormFieldWidgetRequest","description":"Update payload for a form field widget. The `fieldType` discriminator selects the variant — see `fieldType` for what each value collects.","oneOf":[{"title":"UpdateDateFormFieldRequest","type":"object","required":["hiddenByDefault","required","config","constraints","type","fieldType"],"properties":{"hiddenByDefault":{"description":"When `true`, the widget is hidden by default; conditional logic rules can reveal it at runtime. Defaults to `false`.","type":"boolean"},"position":{"title":"WidgetPosition","description":"Where to place this widget on the task. `Top` — before all existing widgets. `Bottom` — after all existing widgets (default when `position` is omitted). `After` — immediately after the widget identified by `widgetId`.","oneOf":[{"title":"WidgetPositionAfter","type":"object","required":["widgetId","type"],"properties":{"widgetId":{"title":"EntityID","description":"The ID of the widget.","type":"string"},"type":{"description":"Discriminator value for this variant. See the parent oneOf for the full set of values.","type":"string","const":"After"}}},{"title":"WidgetPositionBottom","type":"object","required":["type"],"properties":{"type":{"description":"Discriminator value for this variant. See the parent oneOf for the full set of values.","type":"string","const":"Bottom"}}},{"title":"WidgetPositionTop","type":"object","required":["type"],"properties":{"type":{"description":"Discriminator value for this variant. See the parent oneOf for the full set of values.","type":"string","const":"Top"}}}],"required":["type"],"discriminator":{"propertyName":"type","mapping":{"After":"#/components/schemas/WidgetPositionAfter","Bottom":"#/components/schemas/WidgetPositionBottom","Top":"#/components/schemas/WidgetPositionTop"}}},"label":{"description":"Display label shown to the end user.","type":"string","maxLength":255},"required":{"description":"When `true`, the form field must have a value before its task can be completed.","type":"boolean"},"config":{"title":"PublicApiDateFormFieldConfig","description":"Field-specific configuration. Shape depends on `fieldType`.","type":"object","properties":{"defaultValue":{"description":"Default value pre-filled when a new workflow run is created.","type":"string"},"timeOption":{"description":"How time-of-day is handled on this Date field.\n\n- `Included` — the field always captures both date and time.\n- `Excluded` — date only; time is never captured.\n- `Optional` — the user picks whether to include a time.\n","type":"string","enum":["Included","Excluded","Optional"]}}},"constraints":{"title":"PublicApiDateFormFieldConstraints","description":"Field-specific validation constraints. Shape depends on `fieldType`.","type":"object","properties":{"afterDate":{"description":"Earliest accepted date (inclusive). Pair with `afterDateSourceType`.","type":"string","format":"date-time"},"beforeDate":{"description":"Latest accepted date (inclusive). Pair with `beforeDateSourceType`.","type":"string","format":"date-time"},"afterDateFormFieldWidgetGroupId":{"title":"EntityID","description":"When `afterDateSourceType=FormField`, the ID of the Date form field whose value is the lower bound.","type":"string"},"beforeDateFormFieldWidgetGroupId":{"title":"EntityID","description":"When `beforeDateSourceType=FormField`, the ID of the Date form field whose value is the upper bound.","type":"string"},"afterDateSourceType":{"description":"How the before/after constraint date is derived.\n\n- `SpecificDate` — an absolute date supplied as `afterDate` / `beforeDate`.\n- `FormFieldValue` — derived from another Date form field (`afterDateField` / `beforeDateField`).\n- `TaskDueDate` — relative to the containing task's due date.\n- `ChecklistStartDate` / `ChecklistDueDate` — relative to the workflow run's start or due date.\n","type":"string","enum":["SpecificDate","FormFieldValue","TaskDueDate","ChecklistStartDate","ChecklistDueDate"]},"beforeDateSourceType":{"description":"How the before/after constraint date is derived.\n\n- `SpecificDate` — an absolute date supplied as `afterDate` / `beforeDate`.\n- `FormFieldValue` — derived from another Date form field (`afterDateField` / `beforeDateField`).\n- `TaskDueDate` — relative to the containing task's due date.\n- `ChecklistStartDate` / `ChecklistDueDate` — relative to the workflow run's start or due date.\n","type":"string","enum":["SpecificDate","FormFieldValue","TaskDueDate","ChecklistStartDate","ChecklistDueDate"]},"afterDateOffset":{"description":"ISO 8601 duration (e.g. `P7D`, `P1Y2M`).","type":"string"},"beforeDateOffset":{"description":"ISO 8601 duration (e.g. `P7D`, `P1Y2M`).","type":"string"}}},"type":{"description":"Discriminator value for this variant. See the parent oneOf for the full set of values.","examples":["FormField"],"type":"string","enum":["FormField"]},"fieldType":{"description":"Form-field subtype discriminator (only relevant when widget `type` is `FormField`).\n\n- `Text` — short text input (≤255 characters).\n- `Textarea` — long-form text.\n- `Email` — email address.\n- `Url` — website / URL.\n- `Number` — numeric input with optional unit and constraints.\n- `Date` — date or date+time picker.\n- `Select` — dropdown; user picks one option.\n- `MultiChoice` — checkboxes; user picks one or more options.\n- `MultiSelect` — Subtasks: a checklist of sub-items inside the task.\n- `Members` — assignee picker (selects organization users).\n- `File` — single file upload.\n- `MultiFile` — multi-file upload (in-app \"File Upload\").\n- `Document` — document approval field; links the task to a document review.\n- `Table` — rows × columns of cells; users fill cell values.\n- `SendRichEmail` — pre-written email embedded in the task; sent manually by the user or\n  automatically when the task is completed.\n- `Hidden` — only visible when editing the workflow; populated by integrations or default values.\n- `Snippet` — only visible when editing; passes static text or merge tags into automations.\n","type":"string","enum":["Date","Document","Email","File","Hidden","Members","MultiChoice","MultiFile","MultiSelect","Number","Select","SendRichEmail","Snippet","Table","Text","Textarea","Url"],"const":"Date"}}},{"title":"UpdateDocumentFormFieldRequest","type":"object","required":["hiddenByDefault","required","config","type","fieldType"],"properties":{"hiddenByDefault":{"description":"When `true`, the widget is hidden by default; conditional logic rules can reveal it at runtime. Defaults to `false`.","type":"boolean"},"position":{"title":"WidgetPosition","description":"Where to place this widget on the task. `Top` — before all existing widgets. `Bottom` — after all existing widgets (default when `position` is omitted). `After` — immediately after the widget identified by `widgetId`.","oneOf":[{"title":"WidgetPositionAfter","type":"object","required":["widgetId","type"],"properties":{"widgetId":{"title":"EntityID","description":"The ID of the widget.","type":"string"},"type":{"description":"Discriminator value for this variant. See the parent oneOf for the full set of values.","type":"string","const":"After"}}},{"title":"WidgetPositionBottom","type":"object","required":["type"],"properties":{"type":{"description":"Discriminator value for this variant. See the parent oneOf for the full set of values.","type":"string","const":"Bottom"}}},{"title":"WidgetPositionTop","type":"object","required":["type"],"properties":{"type":{"description":"Discriminator value for this variant. See the parent oneOf for the full set of values.","type":"string","const":"Top"}}}],"required":["type"],"discriminator":{"propertyName":"type","mapping":{"After":"#/components/schemas/WidgetPositionAfter","Bottom":"#/components/schemas/WidgetPositionBottom","Top":"#/components/schemas/WidgetPositionTop"}}},"label":{"description":"Display label shown to the end user.","type":"string","maxLength":255},"required":{"description":"When `true`, the form field must have a value before its task can be completed.","type":"boolean"},"config":{"title":"PublicApiDocumentFormFieldConfig","description":"Field-specific configuration. Shape depends on `fieldType`.","type":"object","required":["reviewRequest"],"properties":{"reviewRequest":{"description":"When `true`, the email requires explicit user review/send rather than auto-send.","type":"boolean"},"defaultValue":{"description":"Default value pre-filled when a new workflow run is created.","type":"string"}}},"type":{"description":"Discriminator value for this variant. See the parent oneOf for the full set of values.","examples":["FormField"],"type":"string","enum":["FormField"]},"fieldType":{"description":"Form-field subtype discriminator (only relevant when widget `type` is `FormField`).\n\n- `Text` — short text input (≤255 characters).\n- `Textarea` — long-form text.\n- `Email` — email address.\n- `Url` — website / URL.\n- `Number` — numeric input with optional unit and constraints.\n- `Date` — date or date+time picker.\n- `Select` — dropdown; user picks one option.\n- `MultiChoice` — checkboxes; user picks one or more options.\n- `MultiSelect` — Subtasks: a checklist of sub-items inside the task.\n- `Members` — assignee picker (selects organization users).\n- `File` — single file upload.\n- `MultiFile` — multi-file upload (in-app \"File Upload\").\n- `Document` — document approval field; links the task to a document review.\n- `Table` — rows × columns of cells; users fill cell values.\n- `SendRichEmail` — pre-written email embedded in the task; sent manually by the user or\n  automatically when the task is completed.\n- `Hidden` — only visible when editing the workflow; populated by integrations or default values.\n- `Snippet` — only visible when editing; passes static text or merge tags into automations.\n","type":"string","enum":["Date","Document","Email","File","Hidden","Members","MultiChoice","MultiFile","MultiSelect","Number","Select","SendRichEmail","Snippet","Table","Text","Textarea","Url"],"const":"Document"}}},{"title":"UpdateEmailFormFieldRequest","type":"object","required":["hiddenByDefault","required","config","constraints","type","fieldType"],"properties":{"hiddenByDefault":{"description":"When `true`, the widget is hidden by default; conditional logic rules can reveal it at runtime. Defaults to `false`.","type":"boolean"},"position":{"title":"WidgetPosition","description":"Where to place this widget on the task. `Top` — before all existing widgets. `Bottom` — after all existing widgets (default when `position` is omitted). `After` — immediately after the widget identified by `widgetId`.","oneOf":[{"title":"WidgetPositionAfter","type":"object","required":["widgetId","type"],"properties":{"widgetId":{"title":"EntityID","description":"The ID of the widget.","type":"string"},"type":{"description":"Discriminator value for this variant. See the parent oneOf for the full set of values.","type":"string","const":"After"}}},{"title":"WidgetPositionBottom","type":"object","required":["type"],"properties":{"type":{"description":"Discriminator value for this variant. See the parent oneOf for the full set of values.","type":"string","const":"Bottom"}}},{"title":"WidgetPositionTop","type":"object","required":["type"],"properties":{"type":{"description":"Discriminator value for this variant. See the parent oneOf for the full set of values.","type":"string","const":"Top"}}}],"required":["type"],"discriminator":{"propertyName":"type","mapping":{"After":"#/components/schemas/WidgetPositionAfter","Bottom":"#/components/schemas/WidgetPositionBottom","Top":"#/components/schemas/WidgetPositionTop"}}},"label":{"description":"Display label shown to the end user.","type":"string","maxLength":255},"required":{"description":"When `true`, the form field must have a value before its task can be completed.","type":"boolean"},"config":{"title":"PublicApiEmailFormFieldConfig","description":"Field-specific configuration. Shape depends on `fieldType`.","type":"object","properties":{"placeholder":{"description":"Placeholder hint shown in the input when no value has been entered.","type":"string"},"defaultValue":{"description":"Default value pre-filled when a new workflow run is created.","type":"string"}}},"constraints":{"title":"PublicApiEmailFormFieldConstraints","description":"Field-specific validation constraints. Shape depends on `fieldType`.","type":"object","properties":{"domains":{"description":"Allowed (or blocked, depending on `restriction`) email domains for this field.","type":"array","items":{"type":"string"}},"restriction":{"description":"How the `domains` list filters allowed email addresses.\n\n- `Allow` — only emails whose domain is in the list are accepted.\n- `Block` — emails whose domain is in the list are rejected; all others accepted.\n","type":"string","enum":["Allow","Block"]}}},"type":{"description":"Discriminator value for this variant. See the parent oneOf for the full set of values.","examples":["FormField"],"type":"string","enum":["FormField"]},"fieldType":{"description":"Form-field subtype discriminator (only relevant when widget `type` is `FormField`).\n\n- `Text` — short text input (≤255 characters).\n- `Textarea` — long-form text.\n- `Email` — email address.\n- `Url` — website / URL.\n- `Number` — numeric input with optional unit and constraints.\n- `Date` — date or date+time picker.\n- `Select` — dropdown; user picks one option.\n- `MultiChoice` — checkboxes; user picks one or more options.\n- `MultiSelect` — Subtasks: a checklist of sub-items inside the task.\n- `Members` — assignee picker (selects organization users).\n- `File` — single file upload.\n- `MultiFile` — multi-file upload (in-app \"File Upload\").\n- `Document` — document approval field; links the task to a document review.\n- `Table` — rows × columns of cells; users fill cell values.\n- `SendRichEmail` — pre-written email embedded in the task; sent manually by the user or\n  automatically when the task is completed.\n- `Hidden` — only visible when editing the workflow; populated by integrations or default values.\n- `Snippet` — only visible when editing; passes static text or merge tags into automations.\n","type":"string","enum":["Date","Document","Email","File","Hidden","Members","MultiChoice","MultiFile","MultiSelect","Number","Select","SendRichEmail","Snippet","Table","Text","Textarea","Url"],"const":"Email"}}},{"title":"UpdateFileFormFieldRequest","type":"object","required":["hiddenByDefault","required","config","constraints","type","fieldType"],"properties":{"hiddenByDefault":{"description":"When `true`, the widget is hidden by default; conditional logic rules can reveal it at runtime. Defaults to `false`.","type":"boolean"},"position":{"title":"WidgetPosition","description":"Where to place this widget on the task. `Top` — before all existing widgets. `Bottom` — after all existing widgets (default when `position` is omitted). `After` — immediately after the widget identified by `widgetId`.","oneOf":[{"title":"WidgetPositionAfter","type":"object","required":["widgetId","type"],"properties":{"widgetId":{"title":"EntityID","description":"The ID of the widget.","type":"string"},"type":{"description":"Discriminator value for this variant. See the parent oneOf for the full set of values.","type":"string","const":"After"}}},{"title":"WidgetPositionBottom","type":"object","required":["type"],"properties":{"type":{"description":"Discriminator value for this variant. See the parent oneOf for the full set of values.","type":"string","const":"Bottom"}}},{"title":"WidgetPositionTop","type":"object","required":["type"],"properties":{"type":{"description":"Discriminator value for this variant. See the parent oneOf for the full set of values.","type":"string","const":"Top"}}}],"required":["type"],"discriminator":{"propertyName":"type","mapping":{"After":"#/components/schemas/WidgetPositionAfter","Bottom":"#/components/schemas/WidgetPositionBottom","Top":"#/components/schemas/WidgetPositionTop"}}},"label":{"description":"Display label shown to the end user.","type":"string","maxLength":255},"required":{"description":"When `true`, the form field must have a value before its task can be completed.","type":"boolean"},"config":{"title":"PublicApiFileFormFieldConfig","description":"Field-specific configuration. Shape depends on `fieldType`.","type":"object","properties":{"placeholder":{"description":"Placeholder hint shown in the input when no value has been entered.","type":"string"},"extractTextContent":{"description":"When `true`, server extracts text from uploaded documents for use in merge tags.","type":"boolean"}}},"constraints":{"title":"PublicApiFileFormFieldConstraints","description":"Field-specific validation constraints. Shape depends on `fieldType`.","type":"object","properties":{"extensions":{"description":"Allowed file extensions, including the leading dot (e.g. `.pdf`, `.docx`).","type":"array","items":{"type":"string"}}}},"type":{"description":"Discriminator value for this variant. See the parent oneOf for the full set of values.","examples":["FormField"],"type":"string","enum":["FormField"]},"fieldType":{"description":"Form-field subtype discriminator (only relevant when widget `type` is `FormField`).\n\n- `Text` — short text input (≤255 characters).\n- `Textarea` — long-form text.\n- `Email` — email address.\n- `Url` — website / URL.\n- `Number` — numeric input with optional unit and constraints.\n- `Date` — date or date+time picker.\n- `Select` — dropdown; user picks one option.\n- `MultiChoice` — checkboxes; user picks one or more options.\n- `MultiSelect` — Subtasks: a checklist of sub-items inside the task.\n- `Members` — assignee picker (selects organization users).\n- `File` — single file upload.\n- `MultiFile` — multi-file upload (in-app \"File Upload\").\n- `Document` — document approval field; links the task to a document review.\n- `Table` — rows × columns of cells; users fill cell values.\n- `SendRichEmail` — pre-written email embedded in the task; sent manually by the user or\n  automatically when the task is completed.\n- `Hidden` — only visible when editing the workflow; populated by integrations or default values.\n- `Snippet` — only visible when editing; passes static text or merge tags into automations.\n","type":"string","enum":["Date","Document","Email","File","Hidden","Members","MultiChoice","MultiFile","MultiSelect","Number","Select","SendRichEmail","Snippet","Table","Text","Textarea","Url"],"const":"File"}}},{"title":"UpdateHiddenFormFieldRequest","type":"object","required":["hiddenByDefault","required","config","type","fieldType"],"properties":{"hiddenByDefault":{"description":"When `true`, the widget is hidden by default; conditional logic rules can reveal it at runtime. Defaults to `false`.","type":"boolean"},"position":{"title":"WidgetPosition","description":"Where to place this widget on the task. `Top` — before all existing widgets. `Bottom` — after all existing widgets (default when `position` is omitted). `After` — immediately after the widget identified by `widgetId`.","oneOf":[{"title":"WidgetPositionAfter","type":"object","required":["widgetId","type"],"properties":{"widgetId":{"title":"EntityID","description":"The ID of the widget.","type":"string"},"type":{"description":"Discriminator value for this variant. See the parent oneOf for the full set of values.","type":"string","const":"After"}}},{"title":"WidgetPositionBottom","type":"object","required":["type"],"properties":{"type":{"description":"Discriminator value for this variant. See the parent oneOf for the full set of values.","type":"string","const":"Bottom"}}},{"title":"WidgetPositionTop","type":"object","required":["type"],"properties":{"type":{"description":"Discriminator value for this variant. See the parent oneOf for the full set of values.","type":"string","const":"Top"}}}],"required":["type"],"discriminator":{"propertyName":"type","mapping":{"After":"#/components/schemas/WidgetPositionAfter","Bottom":"#/components/schemas/WidgetPositionBottom","Top":"#/components/schemas/WidgetPositionTop"}}},"label":{"description":"Display label shown to the end user.","type":"string","maxLength":255},"required":{"description":"When `true`, the form field must have a value before its task can be completed.","type":"boolean"},"config":{"title":"PublicApiHiddenFormFieldConfig","description":"Field-specific configuration. Shape depends on `fieldType`.","type":"object","properties":{"defaultValue":{"description":"Default value pre-filled when a new workflow run is created.","type":"string"}}},"type":{"description":"Discriminator value for this variant. See the parent oneOf for the full set of values.","examples":["FormField"],"type":"string","enum":["FormField"]},"fieldType":{"description":"Form-field subtype discriminator (only relevant when widget `type` is `FormField`).\n\n- `Text` — short text input (≤255 characters).\n- `Textarea` — long-form text.\n- `Email` — email address.\n- `Url` — website / URL.\n- `Number` — numeric input with optional unit and constraints.\n- `Date` — date or date+time picker.\n- `Select` — dropdown; user picks one option.\n- `MultiChoice` — checkboxes; user picks one or more options.\n- `MultiSelect` — Subtasks: a checklist of sub-items inside the task.\n- `Members` — assignee picker (selects organization users).\n- `File` — single file upload.\n- `MultiFile` — multi-file upload (in-app \"File Upload\").\n- `Document` — document approval field; links the task to a document review.\n- `Table` — rows × columns of cells; users fill cell values.\n- `SendRichEmail` — pre-written email embedded in the task; sent manually by the user or\n  automatically when the task is completed.\n- `Hidden` — only visible when editing the workflow; populated by integrations or default values.\n- `Snippet` — only visible when editing; passes static text or merge tags into automations.\n","type":"string","enum":["Date","Document","Email","File","Hidden","Members","MultiChoice","MultiFile","MultiSelect","Number","Select","SendRichEmail","Snippet","Table","Text","Textarea","Url"],"const":"Hidden"}}},{"title":"UpdateMembersFormFieldRequest","type":"object","required":["hiddenByDefault","required","config","type","fieldType"],"properties":{"hiddenByDefault":{"description":"When `true`, the widget is hidden by default; conditional logic rules can reveal it at runtime. Defaults to `false`.","type":"boolean"},"position":{"title":"WidgetPosition","description":"Where to place this widget on the task. `Top` — before all existing widgets. `Bottom` — after all existing widgets (default when `position` is omitted). `After` — immediately after the widget identified by `widgetId`.","oneOf":[{"title":"WidgetPositionAfter","type":"object","required":["widgetId","type"],"properties":{"widgetId":{"title":"EntityID","description":"The ID of the widget.","type":"string"},"type":{"description":"Discriminator value for this variant. See the parent oneOf for the full set of values.","type":"string","const":"After"}}},{"title":"WidgetPositionBottom","type":"object","required":["type"],"properties":{"type":{"description":"Discriminator value for this variant. See the parent oneOf for the full set of values.","type":"string","const":"Bottom"}}},{"title":"WidgetPositionTop","type":"object","required":["type"],"properties":{"type":{"description":"Discriminator value for this variant. See the parent oneOf for the full set of values.","type":"string","const":"Top"}}}],"required":["type"],"discriminator":{"propertyName":"type","mapping":{"After":"#/components/schemas/WidgetPositionAfter","Bottom":"#/components/schemas/WidgetPositionBottom","Top":"#/components/schemas/WidgetPositionTop"}}},"label":{"description":"Display label shown to the end user.","type":"string","maxLength":255},"required":{"description":"When `true`, the form field must have a value before its task can be completed.","type":"boolean"},"config":{"title":"PublicApiMembersFormFieldConfig","description":"Field-specific configuration. Shape depends on `fieldType`.","type":"object","properties":{"defaultValue":{"description":"Default value pre-filled when a new workflow run is created.","type":"string"},"groupId":{"title":"EntityID","description":"The ID of an organization group.","type":"string"}}},"type":{"description":"Discriminator value for this variant. See the parent oneOf for the full set of values.","examples":["FormField"],"type":"string","enum":["FormField"]},"fieldType":{"description":"Form-field subtype discriminator (only relevant when widget `type` is `FormField`).\n\n- `Text` — short text input (≤255 characters).\n- `Textarea` — long-form text.\n- `Email` — email address.\n- `Url` — website / URL.\n- `Number` — numeric input with optional unit and constraints.\n- `Date` — date or date+time picker.\n- `Select` — dropdown; user picks one option.\n- `MultiChoice` — checkboxes; user picks one or more options.\n- `MultiSelect` — Subtasks: a checklist of sub-items inside the task.\n- `Members` — assignee picker (selects organization users).\n- `File` — single file upload.\n- `MultiFile` — multi-file upload (in-app \"File Upload\").\n- `Document` — document approval field; links the task to a document review.\n- `Table` — rows × columns of cells; users fill cell values.\n- `SendRichEmail` — pre-written email embedded in the task; sent manually by the user or\n  automatically when the task is completed.\n- `Hidden` — only visible when editing the workflow; populated by integrations or default values.\n- `Snippet` — only visible when editing; passes static text or merge tags into automations.\n","type":"string","enum":["Date","Document","Email","File","Hidden","Members","MultiChoice","MultiFile","MultiSelect","Number","Select","SendRichEmail","Snippet","Table","Text","Textarea","Url"],"const":"Members"}}},{"title":"UpdateMultiChoiceFormFieldRequest","type":"object","required":["hiddenByDefault","required","config","type","fieldType"],"properties":{"hiddenByDefault":{"description":"When `true`, the widget is hidden by default; conditional logic rules can reveal it at runtime. Defaults to `false`.","type":"boolean"},"position":{"title":"WidgetPosition","description":"Where to place this widget on the task. `Top` — before all existing widgets. `Bottom` — after all existing widgets (default when `position` is omitted). `After` — immediately after the widget identified by `widgetId`.","oneOf":[{"title":"WidgetPositionAfter","type":"object","required":["widgetId","type"],"properties":{"widgetId":{"title":"EntityID","description":"The ID of the widget.","type":"string"},"type":{"description":"Discriminator value for this variant. See the parent oneOf for the full set of values.","type":"string","const":"After"}}},{"title":"WidgetPositionBottom","type":"object","required":["type"],"properties":{"type":{"description":"Discriminator value for this variant. See the parent oneOf for the full set of values.","type":"string","const":"Bottom"}}},{"title":"WidgetPositionTop","type":"object","required":["type"],"properties":{"type":{"description":"Discriminator value for this variant. See the parent oneOf for the full set of values.","type":"string","const":"Top"}}}],"required":["type"],"discriminator":{"propertyName":"type","mapping":{"After":"#/components/schemas/WidgetPositionAfter","Bottom":"#/components/schemas/WidgetPositionBottom","Top":"#/components/schemas/WidgetPositionTop"}}},"label":{"description":"Display label shown to the end user.","type":"string","maxLength":255},"required":{"description":"When `true`, the form field must have a value before its task can be completed.","type":"boolean"},"config":{"title":"PublicApiMultiChoiceFormFieldConfig","description":"Field-specific configuration. Shape depends on `fieldType`.","type":"object","properties":{"items":{"description":"Available options for selection-style form fields.","type":"array","items":{"title":"PublicApiFormFieldItem","type":"object","required":["name"],"properties":{"id":{"title":"EntityID","description":"The resource's ID.","type":"string"},"name":{"description":"Display name.","type":"string"}}}}}},"type":{"description":"Discriminator value for this variant. See the parent oneOf for the full set of values.","examples":["FormField"],"type":"string","enum":["FormField"]},"fieldType":{"description":"Form-field subtype discriminator (only relevant when widget `type` is `FormField`).\n\n- `Text` — short text input (≤255 characters).\n- `Textarea` — long-form text.\n- `Email` — email address.\n- `Url` — website / URL.\n- `Number` — numeric input with optional unit and constraints.\n- `Date` — date or date+time picker.\n- `Select` — dropdown; user picks one option.\n- `MultiChoice` — checkboxes; user picks one or more options.\n- `MultiSelect` — Subtasks: a checklist of sub-items inside the task.\n- `Members` — assignee picker (selects organization users).\n- `File` — single file upload.\n- `MultiFile` — multi-file upload (in-app \"File Upload\").\n- `Document` — document approval field; links the task to a document review.\n- `Table` — rows × columns of cells; users fill cell values.\n- `SendRichEmail` — pre-written email embedded in the task; sent manually by the user or\n  automatically when the task is completed.\n- `Hidden` — only visible when editing the workflow; populated by integrations or default values.\n- `Snippet` — only visible when editing; passes static text or merge tags into automations.\n","type":"string","enum":["Date","Document","Email","File","Hidden","Members","MultiChoice","MultiFile","MultiSelect","Number","Select","SendRichEmail","Snippet","Table","Text","Textarea","Url"],"const":"MultiChoice"}}},{"title":"UpdateMultiFileFormFieldRequest","type":"object","required":["hiddenByDefault","required","config","constraints","type","fieldType"],"properties":{"hiddenByDefault":{"description":"When `true`, the widget is hidden by default; conditional logic rules can reveal it at runtime. Defaults to `false`.","type":"boolean"},"position":{"title":"WidgetPosition","description":"Where to place this widget on the task. `Top` — before all existing widgets. `Bottom` — after all existing widgets (default when `position` is omitted). `After` — immediately after the widget identified by `widgetId`.","oneOf":[{"title":"WidgetPositionAfter","type":"object","required":["widgetId","type"],"properties":{"widgetId":{"title":"EntityID","description":"The ID of the widget.","type":"string"},"type":{"description":"Discriminator value for this variant. See the parent oneOf for the full set of values.","type":"string","const":"After"}}},{"title":"WidgetPositionBottom","type":"object","required":["type"],"properties":{"type":{"description":"Discriminator value for this variant. See the parent oneOf for the full set of values.","type":"string","const":"Bottom"}}},{"title":"WidgetPositionTop","type":"object","required":["type"],"properties":{"type":{"description":"Discriminator value for this variant. See the parent oneOf for the full set of values.","type":"string","const":"Top"}}}],"required":["type"],"discriminator":{"propertyName":"type","mapping":{"After":"#/components/schemas/WidgetPositionAfter","Bottom":"#/components/schemas/WidgetPositionBottom","Top":"#/components/schemas/WidgetPositionTop"}}},"label":{"description":"Display label shown to the end user.","type":"string","maxLength":255},"required":{"description":"When `true`, the form field must have a value before its task can be completed.","type":"boolean"},"config":{"title":"PublicApiMultiFileFormFieldConfig","description":"Field-specific configuration. Shape depends on `fieldType`.","type":"object","properties":{"placeholder":{"description":"Placeholder hint shown in the input when no value has been entered.","type":"string"},"extractTextContent":{"description":"When `true`, server extracts text from uploaded documents for use in merge tags.","type":"boolean"}}},"constraints":{"title":"PublicApiMultiFileFormFieldConstraints","description":"Field-specific validation constraints. Shape depends on `fieldType`.","type":"object","properties":{"extensions":{"description":"Allowed file extensions, including the leading dot (e.g. `.pdf`, `.docx`).","type":"array","items":{"type":"string"}},"mode":{"description":"Whether the field accepts a single file or multiple files.\n\n- `Single` — only one file may be uploaded.\n- `Multiple` — multiple files may be uploaded.\n","type":"string","enum":["Multiple","Single"]}}},"type":{"description":"Discriminator value for this variant. See the parent oneOf for the full set of values.","examples":["FormField"],"type":"string","enum":["FormField"]},"fieldType":{"description":"Form-field subtype discriminator (only relevant when widget `type` is `FormField`).\n\n- `Text` — short text input (≤255 characters).\n- `Textarea` — long-form text.\n- `Email` — email address.\n- `Url` — website / URL.\n- `Number` — numeric input with optional unit and constraints.\n- `Date` — date or date+time picker.\n- `Select` — dropdown; user picks one option.\n- `MultiChoice` — checkboxes; user picks one or more options.\n- `MultiSelect` — Subtasks: a checklist of sub-items inside the task.\n- `Members` — assignee picker (selects organization users).\n- `File` — single file upload.\n- `MultiFile` — multi-file upload (in-app \"File Upload\").\n- `Document` — document approval field; links the task to a document review.\n- `Table` — rows × columns of cells; users fill cell values.\n- `SendRichEmail` — pre-written email embedded in the task; sent manually by the user or\n  automatically when the task is completed.\n- `Hidden` — only visible when editing the workflow; populated by integrations or default values.\n- `Snippet` — only visible when editing; passes static text or merge tags into automations.\n","type":"string","enum":["Date","Document","Email","File","Hidden","Members","MultiChoice","MultiFile","MultiSelect","Number","Select","SendRichEmail","Snippet","Table","Text","Textarea","Url"],"const":"MultiFile"}}},{"title":"UpdateMultiSelectFormFieldRequest","type":"object","required":["hiddenByDefault","required","config","type","fieldType"],"properties":{"hiddenByDefault":{"description":"When `true`, the widget is hidden by default; conditional logic rules can reveal it at runtime. Defaults to `false`.","type":"boolean"},"position":{"title":"WidgetPosition","description":"Where to place this widget on the task. `Top` — before all existing widgets. `Bottom` — after all existing widgets (default when `position` is omitted). `After` — immediately after the widget identified by `widgetId`.","oneOf":[{"title":"WidgetPositionAfter","type":"object","required":["widgetId","type"],"properties":{"widgetId":{"title":"EntityID","description":"The ID of the widget.","type":"string"},"type":{"description":"Discriminator value for this variant. See the parent oneOf for the full set of values.","type":"string","const":"After"}}},{"title":"WidgetPositionBottom","type":"object","required":["type"],"properties":{"type":{"description":"Discriminator value for this variant. See the parent oneOf for the full set of values.","type":"string","const":"Bottom"}}},{"title":"WidgetPositionTop","type":"object","required":["type"],"properties":{"type":{"description":"Discriminator value for this variant. See the parent oneOf for the full set of values.","type":"string","const":"Top"}}}],"required":["type"],"discriminator":{"propertyName":"type","mapping":{"After":"#/components/schemas/WidgetPositionAfter","Bottom":"#/components/schemas/WidgetPositionBottom","Top":"#/components/schemas/WidgetPositionTop"}}},"label":{"description":"Display label shown to the end user.","type":"string","maxLength":255},"required":{"description":"When `true`, the form field must have a value before its task can be completed.","type":"boolean"},"config":{"title":"PublicApiMultiSelectFormFieldConfig","description":"Field-specific configuration. Shape depends on `fieldType`.","type":"object","properties":{"items":{"description":"Available options for selection-style form fields.","type":"array","items":{"title":"PublicApiFormFieldItem","type":"object","required":["name"],"properties":{"id":{"title":"EntityID","description":"The resource's ID.","type":"string"},"name":{"description":"Display name.","type":"string"}}}}}},"type":{"description":"Discriminator value for this variant. See the parent oneOf for the full set of values.","examples":["FormField"],"type":"string","enum":["FormField"]},"fieldType":{"description":"Form-field subtype discriminator (only relevant when widget `type` is `FormField`).\n\n- `Text` — short text input (≤255 characters).\n- `Textarea` — long-form text.\n- `Email` — email address.\n- `Url` — website / URL.\n- `Number` — numeric input with optional unit and constraints.\n- `Date` — date or date+time picker.\n- `Select` — dropdown; user picks one option.\n- `MultiChoice` — checkboxes; user picks one or more options.\n- `MultiSelect` — Subtasks: a checklist of sub-items inside the task.\n- `Members` — assignee picker (selects organization users).\n- `File` — single file upload.\n- `MultiFile` — multi-file upload (in-app \"File Upload\").\n- `Document` — document approval field; links the task to a document review.\n- `Table` — rows × columns of cells; users fill cell values.\n- `SendRichEmail` — pre-written email embedded in the task; sent manually by the user or\n  automatically when the task is completed.\n- `Hidden` — only visible when editing the workflow; populated by integrations or default values.\n- `Snippet` — only visible when editing; passes static text or merge tags into automations.\n","type":"string","enum":["Date","Document","Email","File","Hidden","Members","MultiChoice","MultiFile","MultiSelect","Number","Select","SendRichEmail","Snippet","Table","Text","Textarea","Url"],"const":"MultiSelect"}}},{"title":"UpdateNumberFormFieldRequest","type":"object","required":["hiddenByDefault","required","config","constraints","type","fieldType"],"properties":{"hiddenByDefault":{"description":"When `true`, the widget is hidden by default; conditional logic rules can reveal it at runtime. Defaults to `false`.","type":"boolean"},"position":{"title":"WidgetPosition","description":"Where to place this widget on the task. `Top` — before all existing widgets. `Bottom` — after all existing widgets (default when `position` is omitted). `After` — immediately after the widget identified by `widgetId`.","oneOf":[{"title":"WidgetPositionAfter","type":"object","required":["widgetId","type"],"properties":{"widgetId":{"title":"EntityID","description":"The ID of the widget.","type":"string"},"type":{"description":"Discriminator value for this variant. See the parent oneOf for the full set of values.","type":"string","const":"After"}}},{"title":"WidgetPositionBottom","type":"object","required":["type"],"properties":{"type":{"description":"Discriminator value for this variant. See the parent oneOf for the full set of values.","type":"string","const":"Bottom"}}},{"title":"WidgetPositionTop","type":"object","required":["type"],"properties":{"type":{"description":"Discriminator value for this variant. See the parent oneOf for the full set of values.","type":"string","const":"Top"}}}],"required":["type"],"discriminator":{"propertyName":"type","mapping":{"After":"#/components/schemas/WidgetPositionAfter","Bottom":"#/components/schemas/WidgetPositionBottom","Top":"#/components/schemas/WidgetPositionTop"}}},"label":{"description":"Display label shown to the end user.","type":"string","maxLength":255},"required":{"description":"When `true`, the form field must have a value before its task can be completed.","type":"boolean"},"config":{"title":"PublicApiNumberFormFieldConfig","description":"Field-specific configuration. Shape depends on `fieldType`.","type":"object","properties":{"placeholder":{"description":"Placeholder hint shown in the input when no value has been entered.","type":"string"},"defaultValue":{"description":"Default value pre-filled when a new workflow run is created.","type":"string"},"unit":{"description":"Unit label rendered next to the numeric value (e.g. `kg`, `$`, `%`).","type":"string"},"unitLocation":{"description":"Where the unit symbol appears relative to the number.\n\n- `prefix` — before the number (e.g. `$100`).\n- `suffix` — after the number (e.g. `100 USD`).\n","type":"string","enum":["prefix","suffix"]}}},"constraints":{"title":"PublicApiNumberFormFieldConstraints","description":"Field-specific validation constraints. Shape depends on `fieldType`.","type":"object","properties":{"minDigits":{"description":"Minimum number of digits.","type":"integer","format":"int32"},"maxDigits":{"description":"Maximum number of digits.","type":"integer","format":"int32"},"minValue":{"description":"Minimum numeric value.","type":"integer","format":"int32"},"maxValue":{"description":"Maximum numeric value.","type":"integer","format":"int32"},"decimalPlaces":{"description":"Number of decimal places to accept (0 means integers only).","type":"integer","format":"int32"},"allowNegative":{"description":"When `true`, negative numbers are accepted.","type":"boolean"}}},"type":{"description":"Discriminator value for this variant. See the parent oneOf for the full set of values.","examples":["FormField"],"type":"string","enum":["FormField"]},"fieldType":{"description":"Form-field subtype discriminator (only relevant when widget `type` is `FormField`).\n\n- `Text` — short text input (≤255 characters).\n- `Textarea` — long-form text.\n- `Email` — email address.\n- `Url` — website / URL.\n- `Number` — numeric input with optional unit and constraints.\n- `Date` — date or date+time picker.\n- `Select` — dropdown; user picks one option.\n- `MultiChoice` — checkboxes; user picks one or more options.\n- `MultiSelect` — Subtasks: a checklist of sub-items inside the task.\n- `Members` — assignee picker (selects organization users).\n- `File` — single file upload.\n- `MultiFile` — multi-file upload (in-app \"File Upload\").\n- `Document` — document approval field; links the task to a document review.\n- `Table` — rows × columns of cells; users fill cell values.\n- `SendRichEmail` — pre-written email embedded in the task; sent manually by the user or\n  automatically when the task is completed.\n- `Hidden` — only visible when editing the workflow; populated by integrations or default values.\n- `Snippet` — only visible when editing; passes static text or merge tags into automations.\n","type":"string","enum":["Date","Document","Email","File","Hidden","Members","MultiChoice","MultiFile","MultiSelect","Number","Select","SendRichEmail","Snippet","Table","Text","Textarea","Url"],"const":"Number"}}},{"title":"UpdateSelectFormFieldRequest","type":"object","required":["hiddenByDefault","required","config","type","fieldType"],"properties":{"hiddenByDefault":{"description":"When `true`, the widget is hidden by default; conditional logic rules can reveal it at runtime. Defaults to `false`.","type":"boolean"},"position":{"title":"WidgetPosition","description":"Where to place this widget on the task. `Top` — before all existing widgets. `Bottom` — after all existing widgets (default when `position` is omitted). `After` — immediately after the widget identified by `widgetId`.","oneOf":[{"title":"WidgetPositionAfter","type":"object","required":["widgetId","type"],"properties":{"widgetId":{"title":"EntityID","description":"The ID of the widget.","type":"string"},"type":{"description":"Discriminator value for this variant. See the parent oneOf for the full set of values.","type":"string","const":"After"}}},{"title":"WidgetPositionBottom","type":"object","required":["type"],"properties":{"type":{"description":"Discriminator value for this variant. See the parent oneOf for the full set of values.","type":"string","const":"Bottom"}}},{"title":"WidgetPositionTop","type":"object","required":["type"],"properties":{"type":{"description":"Discriminator value for this variant. See the parent oneOf for the full set of values.","type":"string","const":"Top"}}}],"required":["type"],"discriminator":{"propertyName":"type","mapping":{"After":"#/components/schemas/WidgetPositionAfter","Bottom":"#/components/schemas/WidgetPositionBottom","Top":"#/components/schemas/WidgetPositionTop"}}},"label":{"description":"Display label shown to the end user.","type":"string","maxLength":255},"required":{"description":"When `true`, the form field must have a value before its task can be completed.","type":"boolean"},"config":{"title":"PublicApiSelectFormFieldConfig","description":"Field-specific configuration. Shape depends on `fieldType`.","type":"object","properties":{"items":{"description":"Available options for selection-style form fields.","type":"array","items":{"title":"PublicApiFormFieldItem","type":"object","required":["name"],"properties":{"id":{"title":"EntityID","description":"The resource's ID.","type":"string"},"name":{"description":"Display name.","type":"string"}}}},"defaultValue":{"description":"Default value pre-filled when a new workflow run is created.","type":"string"}}},"type":{"description":"Discriminator value for this variant. See the parent oneOf for the full set of values.","examples":["FormField"],"type":"string","enum":["FormField"]},"fieldType":{"description":"Form-field subtype discriminator (only relevant when widget `type` is `FormField`).\n\n- `Text` — short text input (≤255 characters).\n- `Textarea` — long-form text.\n- `Email` — email address.\n- `Url` — website / URL.\n- `Number` — numeric input with optional unit and constraints.\n- `Date` — date or date+time picker.\n- `Select` — dropdown; user picks one option.\n- `MultiChoice` — checkboxes; user picks one or more options.\n- `MultiSelect` — Subtasks: a checklist of sub-items inside the task.\n- `Members` — assignee picker (selects organization users).\n- `File` — single file upload.\n- `MultiFile` — multi-file upload (in-app \"File Upload\").\n- `Document` — document approval field; links the task to a document review.\n- `Table` — rows × columns of cells; users fill cell values.\n- `SendRichEmail` — pre-written email embedded in the task; sent manually by the user or\n  automatically when the task is completed.\n- `Hidden` — only visible when editing the workflow; populated by integrations or default values.\n- `Snippet` — only visible when editing; passes static text or merge tags into automations.\n","type":"string","enum":["Date","Document","Email","File","Hidden","Members","MultiChoice","MultiFile","MultiSelect","Number","Select","SendRichEmail","Snippet","Table","Text","Textarea","Url"],"const":"Select"}}},{"title":"UpdateSendRichEmailFormFieldRequest","type":"object","required":["hiddenByDefault","required","config","type","fieldType"],"properties":{"hiddenByDefault":{"description":"When `true`, the widget is hidden by default; conditional logic rules can reveal it at runtime. Defaults to `false`.","type":"boolean"},"position":{"title":"WidgetPosition","description":"Where to place this widget on the task. `Top` — before all existing widgets. `Bottom` — after all existing widgets (default when `position` is omitted). `After` — immediately after the widget identified by `widgetId`.","oneOf":[{"title":"WidgetPositionAfter","type":"object","required":["widgetId","type"],"properties":{"widgetId":{"title":"EntityID","description":"The ID of the widget.","type":"string"},"type":{"description":"Discriminator value for this variant. See the parent oneOf for the full set of values.","type":"string","const":"After"}}},{"title":"WidgetPositionBottom","type":"object","required":["type"],"properties":{"type":{"description":"Discriminator value for this variant. See the parent oneOf for the full set of values.","type":"string","const":"Bottom"}}},{"title":"WidgetPositionTop","type":"object","required":["type"],"properties":{"type":{"description":"Discriminator value for this variant. See the parent oneOf for the full set of values.","type":"string","const":"Top"}}}],"required":["type"],"discriminator":{"propertyName":"type","mapping":{"After":"#/components/schemas/WidgetPositionAfter","Bottom":"#/components/schemas/WidgetPositionBottom","Top":"#/components/schemas/WidgetPositionTop"}}},"label":{"description":"Display label shown to the end user.","type":"string","maxLength":255},"required":{"description":"When `true`, the form field must have a value before its task can be completed.","type":"boolean"},"config":{"title":"PublicApiSendRichEmailFormFieldConfig","description":"Field-specific configuration. Shape depends on `fieldType`.","type":"object","required":["bodyEditor"],"properties":{"to":{"description":"Default recipient list (To). Comma-separated email addresses or merge tags.","type":"array","items":{"type":"string"}},"cc":{"description":"Default CC list. Comma-separated email addresses or merge tags.","type":"array","items":{"type":"string"}},"bcc":{"description":"Default BCC list. Comma-separated email addresses or merge tags.","type":"array","items":{"type":"string"}},"replyTo":{"description":"Default Reply-To address. An email address or merge tag.","type":"array","items":{"type":"string"}},"subject":{"description":"Default email subject. May contain merge tags.","type":"string"},"body":{"description":"Default email body. May contain merge tags.","type":"string"},"bodyEditor":{"description":"Editor used to author the email body.\n\n- `RichText` — rich-text editor with formatting.\n- `HTML` — raw HTML editor.\n- `PlainText` — plain text editor.\n","type":"string","enum":["RichText","HTML","PlainText"]},"editAllowed":{"description":"When `true`, users running the workflow can edit the email before sending.","type":"boolean"}}},"type":{"description":"Discriminator value for this variant. See the parent oneOf for the full set of values.","examples":["FormField"],"type":"string","enum":["FormField"]},"fieldType":{"description":"Form-field subtype discriminator (only relevant when widget `type` is `FormField`).\n\n- `Text` — short text input (≤255 characters).\n- `Textarea` — long-form text.\n- `Email` — email address.\n- `Url` — website / URL.\n- `Number` — numeric input with optional unit and constraints.\n- `Date` — date or date+time picker.\n- `Select` — dropdown; user picks one option.\n- `MultiChoice` — checkboxes; user picks one or more options.\n- `MultiSelect` — Subtasks: a checklist of sub-items inside the task.\n- `Members` — assignee picker (selects organization users).\n- `File` — single file upload.\n- `MultiFile` — multi-file upload (in-app \"File Upload\").\n- `Document` — document approval field; links the task to a document review.\n- `Table` — rows × columns of cells; users fill cell values.\n- `SendRichEmail` — pre-written email embedded in the task; sent manually by the user or\n  automatically when the task is completed.\n- `Hidden` — only visible when editing the workflow; populated by integrations or default values.\n- `Snippet` — only visible when editing; passes static text or merge tags into automations.\n","type":"string","enum":["Date","Document","Email","File","Hidden","Members","MultiChoice","MultiFile","MultiSelect","Number","Select","SendRichEmail","Snippet","Table","Text","Textarea","Url"],"const":"SendRichEmail"}}},{"title":"UpdateSnippetFormFieldRequest","type":"object","required":["hiddenByDefault","required","config","type","fieldType"],"properties":{"hiddenByDefault":{"description":"When `true`, the widget is hidden by default; conditional logic rules can reveal it at runtime. Defaults to `false`.","type":"boolean"},"position":{"title":"WidgetPosition","description":"Where to place this widget on the task. `Top` — before all existing widgets. `Bottom` — after all existing widgets (default when `position` is omitted). `After` — immediately after the widget identified by `widgetId`.","oneOf":[{"title":"WidgetPositionAfter","type":"object","required":["widgetId","type"],"properties":{"widgetId":{"title":"EntityID","description":"The ID of the widget.","type":"string"},"type":{"description":"Discriminator value for this variant. See the parent oneOf for the full set of values.","type":"string","const":"After"}}},{"title":"WidgetPositionBottom","type":"object","required":["type"],"properties":{"type":{"description":"Discriminator value for this variant. See the parent oneOf for the full set of values.","type":"string","const":"Bottom"}}},{"title":"WidgetPositionTop","type":"object","required":["type"],"properties":{"type":{"description":"Discriminator value for this variant. See the parent oneOf for the full set of values.","type":"string","const":"Top"}}}],"required":["type"],"discriminator":{"propertyName":"type","mapping":{"After":"#/components/schemas/WidgetPositionAfter","Bottom":"#/components/schemas/WidgetPositionBottom","Top":"#/components/schemas/WidgetPositionTop"}}},"label":{"description":"Display label shown to the end user.","type":"string","maxLength":255},"required":{"description":"When `true`, the form field must have a value before its task can be completed.","type":"boolean"},"config":{"title":"PublicApiSnippetFormFieldConfig","description":"Field-specific configuration. Shape depends on `fieldType`.","type":"object","properties":{"value":{"description":"The option's stored value.","type":"string"}}},"type":{"description":"Discriminator value for this variant. See the parent oneOf for the full set of values.","examples":["FormField"],"type":"string","enum":["FormField"]},"fieldType":{"description":"Form-field subtype discriminator (only relevant when widget `type` is `FormField`).\n\n- `Text` — short text input (≤255 characters).\n- `Textarea` — long-form text.\n- `Email` — email address.\n- `Url` — website / URL.\n- `Number` — numeric input with optional unit and constraints.\n- `Date` — date or date+time picker.\n- `Select` — dropdown; user picks one option.\n- `MultiChoice` — checkboxes; user picks one or more options.\n- `MultiSelect` — Subtasks: a checklist of sub-items inside the task.\n- `Members` — assignee picker (selects organization users).\n- `File` — single file upload.\n- `MultiFile` — multi-file upload (in-app \"File Upload\").\n- `Document` — document approval field; links the task to a document review.\n- `Table` — rows × columns of cells; users fill cell values.\n- `SendRichEmail` — pre-written email embedded in the task; sent manually by the user or\n  automatically when the task is completed.\n- `Hidden` — only visible when editing the workflow; populated by integrations or default values.\n- `Snippet` — only visible when editing; passes static text or merge tags into automations.\n","type":"string","enum":["Date","Document","Email","File","Hidden","Members","MultiChoice","MultiFile","MultiSelect","Number","Select","SendRichEmail","Snippet","Table","Text","Textarea","Url"],"const":"Snippet"}}},{"title":"UpdateTableFormFieldRequest","type":"object","required":["hiddenByDefault","required","config","type","fieldType"],"properties":{"hiddenByDefault":{"description":"When `true`, the widget is hidden by default; conditional logic rules can reveal it at runtime. Defaults to `false`.","type":"boolean"},"position":{"title":"WidgetPosition","description":"Where to place this widget on the task. `Top` — before all existing widgets. `Bottom` — after all existing widgets (default when `position` is omitted). `After` — immediately after the widget identified by `widgetId`.","oneOf":[{"title":"WidgetPositionAfter","type":"object","required":["widgetId","type"],"properties":{"widgetId":{"title":"EntityID","description":"The ID of the widget.","type":"string"},"type":{"description":"Discriminator value for this variant. See the parent oneOf for the full set of values.","type":"string","const":"After"}}},{"title":"WidgetPositionBottom","type":"object","required":["type"],"properties":{"type":{"description":"Discriminator value for this variant. See the parent oneOf for the full set of values.","type":"string","const":"Bottom"}}},{"title":"WidgetPositionTop","type":"object","required":["type"],"properties":{"type":{"description":"Discriminator value for this variant. See the parent oneOf for the full set of values.","type":"string","const":"Top"}}}],"required":["type"],"discriminator":{"propertyName":"type","mapping":{"After":"#/components/schemas/WidgetPositionAfter","Bottom":"#/components/schemas/WidgetPositionBottom","Top":"#/components/schemas/WidgetPositionTop"}}},"label":{"description":"Display label shown to the end user.","type":"string","maxLength":255},"required":{"description":"When `true`, the form field must have a value before its task can be completed.","type":"boolean"},"config":{"title":"PublicApiTableFormFieldConfig","description":"Field-specific configuration. Shape depends on `fieldType`.","type":"object","properties":{"columnDefs":{"description":"Data set column definitions (name + type per column).","type":"array","items":{"title":"PublicApiTableFormFieldColumn","type":"object","required":["id","name","columnType"],"properties":{"id":{"title":"EntityID","description":"The resource's ID.","type":"string"},"name":{"description":"Display name.","type":"string"},"columnType":{"description":"Data type a Table column accepts.\n\n- `Text` — free-form short text.\n","type":"string","enum":["Text"]}}}},"defaultValue":{"description":"Default value pre-filled when a new workflow run is created.","type":"string"}}},"type":{"description":"Discriminator value for this variant. See the parent oneOf for the full set of values.","examples":["FormField"],"type":"string","enum":["FormField"]},"fieldType":{"description":"Form-field subtype discriminator (only relevant when widget `type` is `FormField`).\n\n- `Text` — short text input (≤255 characters).\n- `Textarea` — long-form text.\n- `Email` — email address.\n- `Url` — website / URL.\n- `Number` — numeric input with optional unit and constraints.\n- `Date` — date or date+time picker.\n- `Select` — dropdown; user picks one option.\n- `MultiChoice` — checkboxes; user picks one or more options.\n- `MultiSelect` — Subtasks: a checklist of sub-items inside the task.\n- `Members` — assignee picker (selects organization users).\n- `File` — single file upload.\n- `MultiFile` — multi-file upload (in-app \"File Upload\").\n- `Document` — document approval field; links the task to a document review.\n- `Table` — rows × columns of cells; users fill cell values.\n- `SendRichEmail` — pre-written email embedded in the task; sent manually by the user or\n  automatically when the task is completed.\n- `Hidden` — only visible when editing the workflow; populated by integrations or default values.\n- `Snippet` — only visible when editing; passes static text or merge tags into automations.\n","type":"string","enum":["Date","Document","Email","File","Hidden","Members","MultiChoice","MultiFile","MultiSelect","Number","Select","SendRichEmail","Snippet","Table","Text","Textarea","Url"],"const":"Table"}}},{"title":"UpdateTextFormFieldRequest","type":"object","required":["hiddenByDefault","required","config","constraints","type","fieldType"],"properties":{"hiddenByDefault":{"description":"When `true`, the widget is hidden by default; conditional logic rules can reveal it at runtime. Defaults to `false`.","type":"boolean"},"position":{"title":"WidgetPosition","description":"Where to place this widget on the task. `Top` — before all existing widgets. `Bottom` — after all existing widgets (default when `position` is omitted). `After` — immediately after the widget identified by `widgetId`.","oneOf":[{"title":"WidgetPositionAfter","type":"object","required":["widgetId","type"],"properties":{"widgetId":{"title":"EntityID","description":"The ID of the widget.","type":"string"},"type":{"description":"Discriminator value for this variant. See the parent oneOf for the full set of values.","type":"string","const":"After"}}},{"title":"WidgetPositionBottom","type":"object","required":["type"],"properties":{"type":{"description":"Discriminator value for this variant. See the parent oneOf for the full set of values.","type":"string","const":"Bottom"}}},{"title":"WidgetPositionTop","type":"object","required":["type"],"properties":{"type":{"description":"Discriminator value for this variant. See the parent oneOf for the full set of values.","type":"string","const":"Top"}}}],"required":["type"],"discriminator":{"propertyName":"type","mapping":{"After":"#/components/schemas/WidgetPositionAfter","Bottom":"#/components/schemas/WidgetPositionBottom","Top":"#/components/schemas/WidgetPositionTop"}}},"label":{"description":"Display label shown to the end user.","type":"string","maxLength":255},"required":{"description":"When `true`, the form field must have a value before its task can be completed.","type":"boolean"},"config":{"title":"PublicApiTextFormFieldConfig","description":"Field-specific configuration. Shape depends on `fieldType`.","type":"object","properties":{"placeholder":{"description":"Placeholder hint shown in the input when no value has been entered.","type":"string"},"defaultValue":{"description":"Default value pre-filled when a new workflow run is created.","type":"string"}}},"constraints":{"title":"PublicApiTextFormFieldConstraints","description":"Field-specific validation constraints. Shape depends on `fieldType`.","type":"object","properties":{"min":{"description":"Inclusive lower bound.","type":"integer","format":"int32"},"max":{"description":"Inclusive upper bound.","type":"integer","format":"int32"}}},"type":{"description":"Discriminator value for this variant. See the parent oneOf for the full set of values.","examples":["FormField"],"type":"string","enum":["FormField"]},"fieldType":{"description":"Form-field subtype discriminator (only relevant when widget `type` is `FormField`).\n\n- `Text` — short text input (≤255 characters).\n- `Textarea` — long-form text.\n- `Email` — email address.\n- `Url` — website / URL.\n- `Number` — numeric input with optional unit and constraints.\n- `Date` — date or date+time picker.\n- `Select` — dropdown; user picks one option.\n- `MultiChoice` — checkboxes; user picks one or more options.\n- `MultiSelect` — Subtasks: a checklist of sub-items inside the task.\n- `Members` — assignee picker (selects organization users).\n- `File` — single file upload.\n- `MultiFile` — multi-file upload (in-app \"File Upload\").\n- `Document` — document approval field; links the task to a document review.\n- `Table` — rows × columns of cells; users fill cell values.\n- `SendRichEmail` — pre-written email embedded in the task; sent manually by the user or\n  automatically when the task is completed.\n- `Hidden` — only visible when editing the workflow; populated by integrations or default values.\n- `Snippet` — only visible when editing; passes static text or merge tags into automations.\n","type":"string","enum":["Date","Document","Email","File","Hidden","Members","MultiChoice","MultiFile","MultiSelect","Number","Select","SendRichEmail","Snippet","Table","Text","Textarea","Url"],"const":"Text"}}},{"title":"UpdateTextareaFormFieldRequest","type":"object","required":["hiddenByDefault","required","config","constraints","type","fieldType"],"properties":{"hiddenByDefault":{"description":"When `true`, the widget is hidden by default; conditional logic rules can reveal it at runtime. Defaults to `false`.","type":"boolean"},"position":{"title":"WidgetPosition","description":"Where to place this widget on the task. `Top` — before all existing widgets. `Bottom` — after all existing widgets (default when `position` is omitted). `After` — immediately after the widget identified by `widgetId`.","oneOf":[{"title":"WidgetPositionAfter","type":"object","required":["widgetId","type"],"properties":{"widgetId":{"title":"EntityID","description":"The ID of the widget.","type":"string"},"type":{"description":"Discriminator value for this variant. See the parent oneOf for the full set of values.","type":"string","const":"After"}}},{"title":"WidgetPositionBottom","type":"object","required":["type"],"properties":{"type":{"description":"Discriminator value for this variant. See the parent oneOf for the full set of values.","type":"string","const":"Bottom"}}},{"title":"WidgetPositionTop","type":"object","required":["type"],"properties":{"type":{"description":"Discriminator value for this variant. See the parent oneOf for the full set of values.","type":"string","const":"Top"}}}],"required":["type"],"discriminator":{"propertyName":"type","mapping":{"After":"#/components/schemas/WidgetPositionAfter","Bottom":"#/components/schemas/WidgetPositionBottom","Top":"#/components/schemas/WidgetPositionTop"}}},"label":{"description":"Display label shown to the end user.","type":"string","maxLength":255},"required":{"description":"When `true`, the form field must have a value before its task can be completed.","type":"boolean"},"config":{"title":"PublicApiTextareaFormFieldConfig","description":"Field-specific configuration. Shape depends on `fieldType`.","type":"object","properties":{"placeholder":{"description":"Placeholder hint shown in the input when no value has been entered.","type":"string"},"defaultValue":{"description":"Default value pre-filled when a new workflow run is created.","type":"string"},"format":{"description":"Editor style for this Textarea field.\n\n- `PlainText` — plain text.\n- `RichText` — rich-text editor with formatting (bold, lists, links, etc.).\n","type":"string","enum":["PlainText","RichText"]}}},"constraints":{"title":"PublicApiTextareaFormFieldConstraints","description":"Field-specific validation constraints. Shape depends on `fieldType`.","type":"object","properties":{"min":{"description":"Inclusive lower bound.","type":"integer","format":"int32"},"max":{"description":"Inclusive upper bound.","type":"integer","format":"int32"}}},"type":{"description":"Discriminator value for this variant. See the parent oneOf for the full set of values.","examples":["FormField"],"type":"string","enum":["FormField"]},"fieldType":{"description":"Form-field subtype discriminator (only relevant when widget `type` is `FormField`).\n\n- `Text` — short text input (≤255 characters).\n- `Textarea` — long-form text.\n- `Email` — email address.\n- `Url` — website / URL.\n- `Number` — numeric input with optional unit and constraints.\n- `Date` — date or date+time picker.\n- `Select` — dropdown; user picks one option.\n- `MultiChoice` — checkboxes; user picks one or more options.\n- `MultiSelect` — Subtasks: a checklist of sub-items inside the task.\n- `Members` — assignee picker (selects organization users).\n- `File` — single file upload.\n- `MultiFile` — multi-file upload (in-app \"File Upload\").\n- `Document` — document approval field; links the task to a document review.\n- `Table` — rows × columns of cells; users fill cell values.\n- `SendRichEmail` — pre-written email embedded in the task; sent manually by the user or\n  automatically when the task is completed.\n- `Hidden` — only visible when editing the workflow; populated by integrations or default values.\n- `Snippet` — only visible when editing; passes static text or merge tags into automations.\n","type":"string","enum":["Date","Document","Email","File","Hidden","Members","MultiChoice","MultiFile","MultiSelect","Number","Select","SendRichEmail","Snippet","Table","Text","Textarea","Url"],"const":"Textarea"}}},{"title":"UpdateUrlFormFieldRequest","type":"object","required":["hiddenByDefault","required","config","type","fieldType"],"properties":{"hiddenByDefault":{"description":"When `true`, the widget is hidden by default; conditional logic rules can reveal it at runtime. Defaults to `false`.","type":"boolean"},"position":{"title":"WidgetPosition","description":"Where to place this widget on the task. `Top` — before all existing widgets. `Bottom` — after all existing widgets (default when `position` is omitted). `After` — immediately after the widget identified by `widgetId`.","oneOf":[{"title":"WidgetPositionAfter","type":"object","required":["widgetId","type"],"properties":{"widgetId":{"title":"EntityID","description":"The ID of the widget.","type":"string"},"type":{"description":"Discriminator value for this variant. See the parent oneOf for the full set of values.","type":"string","const":"After"}}},{"title":"WidgetPositionBottom","type":"object","required":["type"],"properties":{"type":{"description":"Discriminator value for this variant. See the parent oneOf for the full set of values.","type":"string","const":"Bottom"}}},{"title":"WidgetPositionTop","type":"object","required":["type"],"properties":{"type":{"description":"Discriminator value for this variant. See the parent oneOf for the full set of values.","type":"string","const":"Top"}}}],"required":["type"],"discriminator":{"propertyName":"type","mapping":{"After":"#/components/schemas/WidgetPositionAfter","Bottom":"#/components/schemas/WidgetPositionBottom","Top":"#/components/schemas/WidgetPositionTop"}}},"label":{"description":"Display label shown to the end user.","type":"string","maxLength":255},"required":{"description":"When `true`, the form field must have a value before its task can be completed.","type":"boolean"},"config":{"title":"PublicApiUrlFormFieldConfig","description":"Field-specific configuration. Shape depends on `fieldType`.","type":"object","properties":{"defaultValue":{"description":"Default value pre-filled when a new workflow run is created.","type":"string"}}},"type":{"description":"Discriminator value for this variant. See the parent oneOf for the full set of values.","examples":["FormField"],"type":"string","enum":["FormField"]},"fieldType":{"description":"Form-field subtype discriminator (only relevant when widget `type` is `FormField`).\n\n- `Text` — short text input (≤255 characters).\n- `Textarea` — long-form text.\n- `Email` — email address.\n- `Url` — website / URL.\n- `Number` — numeric input with optional unit and constraints.\n- `Date` — date or date+time picker.\n- `Select` — dropdown; user picks one option.\n- `MultiChoice` — checkboxes; user picks one or more options.\n- `MultiSelect` — Subtasks: a checklist of sub-items inside the task.\n- `Members` — assignee picker (selects organization users).\n- `File` — single file upload.\n- `MultiFile` — multi-file upload (in-app \"File Upload\").\n- `Document` — document approval field; links the task to a document review.\n- `Table` — rows × columns of cells; users fill cell values.\n- `SendRichEmail` — pre-written email embedded in the task; sent manually by the user or\n  automatically when the task is completed.\n- `Hidden` — only visible when editing the workflow; populated by integrations or default values.\n- `Snippet` — only visible when editing; passes static text or merge tags into automations.\n","type":"string","enum":["Date","Document","Email","File","Hidden","Members","MultiChoice","MultiFile","MultiSelect","Number","Select","SendRichEmail","Snippet","Table","Text","Textarea","Url"],"const":"Url"}}}],"required":["fieldType"],"discriminator":{"propertyName":"fieldType","mapping":{"Date":"#/components/schemas/UpdateDateFormFieldRequest","Document":"#/components/schemas/UpdateDocumentFormFieldRequest","Email":"#/components/schemas/UpdateEmailFormFieldRequest","File":"#/components/schemas/UpdateFileFormFieldRequest","Hidden":"#/components/schemas/UpdateHiddenFormFieldRequest","Members":"#/components/schemas/UpdateMembersFormFieldRequest","MultiChoice":"#/components/schemas/UpdateMultiChoiceFormFieldRequest","MultiFile":"#/components/schemas/UpdateMultiFileFormFieldRequest","MultiSelect":"#/components/schemas/UpdateMultiSelectFormFieldRequest","Number":"#/components/schemas/UpdateNumberFormFieldRequest","Select":"#/components/schemas/UpdateSelectFormFieldRequest","SendRichEmail":"#/components/schemas/UpdateSendRichEmailFormFieldRequest","Snippet":"#/components/schemas/UpdateSnippetFormFieldRequest","Table":"#/components/schemas/UpdateTableFormFieldRequest","Text":"#/components/schemas/UpdateTextFormFieldRequest","Textarea":"#/components/schemas/UpdateTextareaFormFieldRequest","Url":"#/components/schemas/UpdateUrlFormFieldRequest"}},"properties":{"type":{"description":"Discriminator value for this variant. See the parent oneOf for the full set of values.","type":"string","const":"FormField"},"hiddenByDefault":{"description":"When `true`, the widget is hidden by default; conditional logic rules can reveal it at runtime. Defaults to `false`.","type":"boolean"},"position":{"title":"WidgetPosition","description":"Where to place this widget on the task. `Top` — before all existing widgets. `Bottom` — after all existing widgets (default when `position` is omitted). `After` — immediately after the widget identified by `widgetId`.","oneOf":[{"title":"WidgetPositionAfter","type":"object","required":["widgetId","type"],"properties":{"widgetId":{"title":"EntityID","description":"The ID of the widget.","type":"string"},"type":{"description":"Discriminator value for this variant. See the parent oneOf for the full set of values.","type":"string","const":"After"}}},{"title":"WidgetPositionBottom","type":"object","required":["type"],"properties":{"type":{"description":"Discriminator value for this variant. See the parent oneOf for the full set of values.","type":"string","const":"Bottom"}}},{"title":"WidgetPositionTop","type":"object","required":["type"],"properties":{"type":{"description":"Discriminator value for this variant. See the parent oneOf for the full set of values.","type":"string","const":"Top"}}}],"required":["type"],"discriminator":{"propertyName":"type","mapping":{"After":"#/components/schemas/WidgetPositionAfter","Bottom":"#/components/schemas/WidgetPositionBottom","Top":"#/components/schemas/WidgetPositionTop"}}},"label":{"description":"Display label shown to the end user.","type":"string","maxLength":255},"required":{"description":"When `true`, the form field must have a value before its task can be completed.","type":"boolean"},"config":{"description":"Field-specific configuration. Shape depends on `fieldType`.","anyOf":[{"title":"PublicApiDateFormFieldConfig","type":"object","properties":{"defaultValue":{"description":"Default value pre-filled when a new workflow run is created.","type":"string"},"timeOption":{"description":"How time-of-day is handled on this Date field.\n\n- `Included` — the field always captures both date and time.\n- `Excluded` — date only; time is never captured.\n- `Optional` — the user picks whether to include a time.\n","type":"string","enum":["Included","Excluded","Optional"]}}},{"title":"PublicApiDocumentFormFieldConfig","type":"object","required":["reviewRequest"],"properties":{"reviewRequest":{"description":"When `true`, the email requires explicit user review/send rather than auto-send.","type":"boolean"},"defaultValue":{"description":"Default value pre-filled when a new workflow run is created.","type":"string"}}},{"title":"PublicApiEmailFormFieldConfig","type":"object","properties":{"placeholder":{"description":"Placeholder hint shown in the input when no value has been entered.","type":"string"},"defaultValue":{"description":"Default value pre-filled when a new workflow run is created.","type":"string"}}},{"title":"PublicApiFileFormFieldConfig","type":"object","properties":{"placeholder":{"description":"Placeholder hint shown in the input when no value has been entered.","type":"string"},"extractTextContent":{"description":"When `true`, server extracts text from uploaded documents for use in merge tags.","type":"boolean"}}},{"title":"PublicApiHiddenFormFieldConfig","type":"object","properties":{"defaultValue":{"description":"Default value pre-filled when a new workflow run is created.","type":"string"}}},{"title":"PublicApiMembersFormFieldConfig","type":"object","properties":{"defaultValue":{"description":"Default value pre-filled when a new workflow run is created.","type":"string"},"groupId":{"title":"EntityID","description":"The ID of an organization group.","type":"string"}}},{"title":"PublicApiMultiChoiceFormFieldConfig","type":"object","properties":{"items":{"description":"Available options for selection-style form fields.","type":"array","items":{"title":"PublicApiFormFieldItem","type":"object","required":["name"],"properties":{"id":{"title":"EntityID","description":"The resource's ID.","type":"string"},"name":{"description":"Display name.","type":"string"}}}}}},{"title":"PublicApiMultiFileFormFieldConfig","type":"object","properties":{"placeholder":{"description":"Placeholder hint shown in the input when no value has been entered.","type":"string"},"extractTextContent":{"description":"When `true`, server extracts text from uploaded documents for use in merge tags.","type":"boolean"}}},{"title":"PublicApiMultiSelectFormFieldConfig","type":"object","properties":{"items":{"description":"Available options for selection-style form fields.","type":"array","items":{"title":"PublicApiFormFieldItem","type":"object","required":["name"],"properties":{"id":{"title":"EntityID","description":"The resource's ID.","type":"string"},"name":{"description":"Display name.","type":"string"}}}}}},{"title":"PublicApiNumberFormFieldConfig","type":"object","properties":{"placeholder":{"description":"Placeholder hint shown in the input when no value has been entered.","type":"string"},"defaultValue":{"description":"Default value pre-filled when a new workflow run is created.","type":"string"},"unit":{"description":"Unit label rendered next to the numeric value (e.g. `kg`, `$`, `%`).","type":"string"},"unitLocation":{"description":"Where the unit symbol appears relative to the number.\n\n- `prefix` — before the number (e.g. `$100`).\n- `suffix` — after the number (e.g. `100 USD`).\n","type":"string","enum":["prefix","suffix"]}}},{"title":"PublicApiSelectFormFieldConfig","type":"object","properties":{"items":{"description":"Available options for selection-style form fields.","type":"array","items":{"title":"PublicApiFormFieldItem","type":"object","required":["name"],"properties":{"id":{"title":"EntityID","description":"The resource's ID.","type":"string"},"name":{"description":"Display name.","type":"string"}}}},"defaultValue":{"description":"Default value pre-filled when a new workflow run is created.","type":"string"}}},{"title":"PublicApiSendRichEmailFormFieldConfig","type":"object","required":["bodyEditor"],"properties":{"to":{"description":"Default recipient list (To). Comma-separated email addresses or merge tags.","type":"array","items":{"type":"string"}},"cc":{"description":"Default CC list. Comma-separated email addresses or merge tags.","type":"array","items":{"type":"string"}},"bcc":{"description":"Default BCC list. Comma-separated email addresses or merge tags.","type":"array","items":{"type":"string"}},"replyTo":{"description":"Default Reply-To address. An email address or merge tag.","type":"array","items":{"type":"string"}},"subject":{"description":"Default email subject. May contain merge tags.","type":"string"},"body":{"description":"Default email body. May contain merge tags.","type":"string"},"bodyEditor":{"description":"Editor used to author the email body.\n\n- `RichText` — rich-text editor with formatting.\n- `HTML` — raw HTML editor.\n- `PlainText` — plain text editor.\n","type":"string","enum":["RichText","HTML","PlainText"]},"editAllowed":{"description":"When `true`, users running the workflow can edit the email before sending.","type":"boolean"}}},{"title":"PublicApiSnippetFormFieldConfig","type":"object","properties":{"value":{"description":"The option's stored value.","type":"string"}}},{"title":"PublicApiTableFormFieldConfig","type":"object","properties":{"columnDefs":{"description":"Data set column definitions (name + type per column).","type":"array","items":{"title":"PublicApiTableFormFieldColumn","type":"object","required":["id","name","columnType"],"properties":{"id":{"title":"EntityID","description":"The resource's ID.","type":"string"},"name":{"description":"Display name.","type":"string"},"columnType":{"description":"Data type a Table column accepts.\n\n- `Text` — free-form short text.\n","type":"string","enum":["Text"]}}}},"defaultValue":{"description":"Default value pre-filled when a new workflow run is created.","type":"string"}}},{"title":"PublicApiTextFormFieldConfig","type":"object","properties":{"placeholder":{"description":"Placeholder hint shown in the input when no value has been entered.","type":"string"},"defaultValue":{"description":"Default value pre-filled when a new workflow run is created.","type":"string"}}},{"title":"PublicApiTextareaFormFieldConfig","type":"object","properties":{"placeholder":{"description":"Placeholder hint shown in the input when no value has been entered.","type":"string"},"defaultValue":{"description":"Default value pre-filled when a new workflow run is created.","type":"string"},"format":{"description":"Editor style for this Textarea field.\n\n- `PlainText` — plain text.\n- `RichText` — rich-text editor with formatting (bold, lists, links, etc.).\n","type":"string","enum":["PlainText","RichText"]}}},{"title":"PublicApiUrlFormFieldConfig","type":"object","properties":{"defaultValue":{"description":"Default value pre-filled when a new workflow run is created.","type":"string"}}}]},"constraints":{"description":"Field-specific validation constraints. Shape depends on `fieldType`.","anyOf":[{"title":"PublicApiDateFormFieldConstraints","type":"object","properties":{"afterDate":{"description":"Earliest accepted date (inclusive). Pair with `afterDateSourceType`.","type":"string","format":"date-time"},"beforeDate":{"description":"Latest accepted date (inclusive). Pair with `beforeDateSourceType`.","type":"string","format":"date-time"},"afterDateFormFieldWidgetGroupId":{"title":"EntityID","description":"When `afterDateSourceType=FormField`, the ID of the Date form field whose value is the lower bound.","type":"string"},"beforeDateFormFieldWidgetGroupId":{"title":"EntityID","description":"When `beforeDateSourceType=FormField`, the ID of the Date form field whose value is the upper bound.","type":"string"},"afterDateSourceType":{"description":"How the before/after constraint date is derived.\n\n- `SpecificDate` — an absolute date supplied as `afterDate` / `beforeDate`.\n- `FormFieldValue` — derived from another Date form field (`afterDateField` / `beforeDateField`).\n- `TaskDueDate` — relative to the containing task's due date.\n- `ChecklistStartDate` / `ChecklistDueDate` — relative to the workflow run's start or due date.\n","type":"string","enum":["SpecificDate","FormFieldValue","TaskDueDate","ChecklistStartDate","ChecklistDueDate"]},"beforeDateSourceType":{"description":"How the before/after constraint date is derived.\n\n- `SpecificDate` — an absolute date supplied as `afterDate` / `beforeDate`.\n- `FormFieldValue` — derived from another Date form field (`afterDateField` / `beforeDateField`).\n- `TaskDueDate` — relative to the containing task's due date.\n- `ChecklistStartDate` / `ChecklistDueDate` — relative to the workflow run's start or due date.\n","type":"string","enum":["SpecificDate","FormFieldValue","TaskDueDate","ChecklistStartDate","ChecklistDueDate"]},"afterDateOffset":{"description":"ISO 8601 duration (e.g. `P7D`, `P1Y2M`).","type":"string"},"beforeDateOffset":{"description":"ISO 8601 duration (e.g. `P7D`, `P1Y2M`).","type":"string"}}},{"title":"PublicApiEmailFormFieldConstraints","type":"object","properties":{"domains":{"description":"Allowed (or blocked, depending on `restriction`) email domains for this field.","type":"array","items":{"type":"string"}},"restriction":{"description":"How the `domains` list filters allowed email addresses.\n\n- `Allow` — only emails whose domain is in the list are accepted.\n- `Block` — emails whose domain is in the list are rejected; all others accepted.\n","type":"string","enum":["Allow","Block"]}}},{"title":"PublicApiFileFormFieldConstraints","type":"object","properties":{"extensions":{"description":"Allowed file extensions, including the leading dot (e.g. `.pdf`, `.docx`).","type":"array","items":{"type":"string"}}}},{"title":"PublicApiMultiFileFormFieldConstraints","type":"object","properties":{"extensions":{"description":"Allowed file extensions, including the leading dot (e.g. `.pdf`, `.docx`).","type":"array","items":{"type":"string"}},"mode":{"description":"Whether the field accepts a single file or multiple files.\n\n- `Single` — only one file may be uploaded.\n- `Multiple` — multiple files may be uploaded.\n","type":"string","enum":["Multiple","Single"]}}},{"title":"PublicApiNumberFormFieldConstraints","type":"object","properties":{"minDigits":{"description":"Minimum number of digits.","type":"integer","format":"int32"},"maxDigits":{"description":"Maximum number of digits.","type":"integer","format":"int32"},"minValue":{"description":"Minimum numeric value.","type":"integer","format":"int32"},"maxValue":{"description":"Maximum numeric value.","type":"integer","format":"int32"},"decimalPlaces":{"description":"Number of decimal places to accept (0 means integers only).","type":"integer","format":"int32"},"allowNegative":{"description":"When `true`, negative numbers are accepted.","type":"boolean"}}},{"title":"PublicApiTextFormFieldConstraints","type":"object","properties":{"min":{"description":"Inclusive lower bound.","type":"integer","format":"int32"},"max":{"description":"Inclusive upper bound.","type":"integer","format":"int32"}}},{"title":"PublicApiTextareaFormFieldConstraints","type":"object","properties":{"min":{"description":"Inclusive lower bound.","type":"integer","format":"int32"},"max":{"description":"Inclusive upper bound.","type":"integer","format":"int32"}}}]},"fieldType":{"description":"Form-field subtype discriminator (only relevant when widget `type` is `FormField`).\n\n- `Text` — short text input (≤255 characters).\n- `Textarea` — long-form text.\n- `Email` — email address.\n- `Url` — website / URL.\n- `Number` — numeric input with optional unit and constraints.\n- `Date` — date or date+time picker.\n- `Select` — dropdown; user picks one option.\n- `MultiChoice` — checkboxes; user picks one or more options.\n- `MultiSelect` — Subtasks: a checklist of sub-items inside the task.\n- `Members` — assignee picker (selects organization users).\n- `File` — single file upload.\n- `MultiFile` — multi-file upload (in-app \"File Upload\").\n- `Document` — document approval field; links the task to a document review.\n- `Table` — rows × columns of cells; users fill cell values.\n- `SendRichEmail` — pre-written email embedded in the task; sent manually by the user or\n  automatically when the task is completed.\n- `Hidden` — only visible when editing the workflow; populated by integrations or default values.\n- `Snippet` — only visible when editing; passes static text or merge tags into automations.\n","type":"string","enum":["Date","Document","Email","File","Hidden","Members","MultiChoice","MultiFile","MultiSelect","Number","Select","SendRichEmail","Snippet","Table","Text","Textarea","Url"]}}},"UpdateHiddenFormFieldRequest":{"title":"UpdateHiddenFormFieldRequest","type":"object","required":["hiddenByDefault","required","config","type","fieldType"],"properties":{"hiddenByDefault":{"description":"When `true`, the widget is hidden by default; conditional logic rules can reveal it at runtime. Defaults to `false`.","type":"boolean"},"position":{"title":"WidgetPosition","description":"Where to place this widget on the task. `Top` — before all existing widgets. `Bottom` — after all existing widgets (default when `position` is omitted). `After` — immediately after the widget identified by `widgetId`.","oneOf":[{"title":"WidgetPositionAfter","type":"object","required":["widgetId","type"],"properties":{"widgetId":{"title":"EntityID","description":"The ID of the widget.","type":"string"},"type":{"description":"Discriminator value for this variant. See the parent oneOf for the full set of values.","type":"string","const":"After"}}},{"title":"WidgetPositionBottom","type":"object","required":["type"],"properties":{"type":{"description":"Discriminator value for this variant. See the parent oneOf for the full set of values.","type":"string","const":"Bottom"}}},{"title":"WidgetPositionTop","type":"object","required":["type"],"properties":{"type":{"description":"Discriminator value for this variant. See the parent oneOf for the full set of values.","type":"string","const":"Top"}}}],"required":["type"],"discriminator":{"propertyName":"type","mapping":{"After":"#/components/schemas/WidgetPositionAfter","Bottom":"#/components/schemas/WidgetPositionBottom","Top":"#/components/schemas/WidgetPositionTop"}}},"label":{"description":"Display label shown to the end user.","type":"string","maxLength":255},"required":{"description":"When `true`, the form field must have a value before its task can be completed.","type":"boolean"},"config":{"title":"PublicApiHiddenFormFieldConfig","description":"Field-specific configuration. Shape depends on `fieldType`.","type":"object","properties":{"defaultValue":{"description":"Default value pre-filled when a new workflow run is created.","type":"string"}}},"type":{"description":"Discriminator value for this variant. See the parent oneOf for the full set of values.","examples":["FormField"],"type":"string","enum":["FormField"]},"fieldType":{"description":"Form-field subtype discriminator (only relevant when widget `type` is `FormField`).\n\n- `Text` — short text input (≤255 characters).\n- `Textarea` — long-form text.\n- `Email` — email address.\n- `Url` — website / URL.\n- `Number` — numeric input with optional unit and constraints.\n- `Date` — date or date+time picker.\n- `Select` — dropdown; user picks one option.\n- `MultiChoice` — checkboxes; user picks one or more options.\n- `MultiSelect` — Subtasks: a checklist of sub-items inside the task.\n- `Members` — assignee picker (selects organization users).\n- `File` — single file upload.\n- `MultiFile` — multi-file upload (in-app \"File Upload\").\n- `Document` — document approval field; links the task to a document review.\n- `Table` — rows × columns of cells; users fill cell values.\n- `SendRichEmail` — pre-written email embedded in the task; sent manually by the user or\n  automatically when the task is completed.\n- `Hidden` — only visible when editing the workflow; populated by integrations or default values.\n- `Snippet` — only visible when editing; passes static text or merge tags into automations.\n","type":"string","enum":["Date","Document","Email","File","Hidden","Members","MultiChoice","MultiFile","MultiSelect","Number","Select","SendRichEmail","Snippet","Table","Text","Textarea","Url"],"const":"Hidden"}}},"UpdateMembersFormFieldRequest":{"title":"UpdateMembersFormFieldRequest","type":"object","required":["hiddenByDefault","required","config","type","fieldType"],"properties":{"hiddenByDefault":{"description":"When `true`, the widget is hidden by default; conditional logic rules can reveal it at runtime. Defaults to `false`.","type":"boolean"},"position":{"title":"WidgetPosition","description":"Where to place this widget on the task. `Top` — before all existing widgets. `Bottom` — after all existing widgets (default when `position` is omitted). `After` — immediately after the widget identified by `widgetId`.","oneOf":[{"title":"WidgetPositionAfter","type":"object","required":["widgetId","type"],"properties":{"widgetId":{"title":"EntityID","description":"The ID of the widget.","type":"string"},"type":{"description":"Discriminator value for this variant. See the parent oneOf for the full set of values.","type":"string","const":"After"}}},{"title":"WidgetPositionBottom","type":"object","required":["type"],"properties":{"type":{"description":"Discriminator value for this variant. See the parent oneOf for the full set of values.","type":"string","const":"Bottom"}}},{"title":"WidgetPositionTop","type":"object","required":["type"],"properties":{"type":{"description":"Discriminator value for this variant. See the parent oneOf for the full set of values.","type":"string","const":"Top"}}}],"required":["type"],"discriminator":{"propertyName":"type","mapping":{"After":"#/components/schemas/WidgetPositionAfter","Bottom":"#/components/schemas/WidgetPositionBottom","Top":"#/components/schemas/WidgetPositionTop"}}},"label":{"description":"Display label shown to the end user.","type":"string","maxLength":255},"required":{"description":"When `true`, the form field must have a value before its task can be completed.","type":"boolean"},"config":{"title":"PublicApiMembersFormFieldConfig","description":"Field-specific configuration. Shape depends on `fieldType`.","type":"object","properties":{"defaultValue":{"description":"Default value pre-filled when a new workflow run is created.","type":"string"},"groupId":{"title":"EntityID","description":"The ID of an organization group.","type":"string"}}},"type":{"description":"Discriminator value for this variant. See the parent oneOf for the full set of values.","examples":["FormField"],"type":"string","enum":["FormField"]},"fieldType":{"description":"Form-field subtype discriminator (only relevant when widget `type` is `FormField`).\n\n- `Text` — short text input (≤255 characters).\n- `Textarea` — long-form text.\n- `Email` — email address.\n- `Url` — website / URL.\n- `Number` — numeric input with optional unit and constraints.\n- `Date` — date or date+time picker.\n- `Select` — dropdown; user picks one option.\n- `MultiChoice` — checkboxes; user picks one or more options.\n- `MultiSelect` — Subtasks: a checklist of sub-items inside the task.\n- `Members` — assignee picker (selects organization users).\n- `File` — single file upload.\n- `MultiFile` — multi-file upload (in-app \"File Upload\").\n- `Document` — document approval field; links the task to a document review.\n- `Table` — rows × columns of cells; users fill cell values.\n- `SendRichEmail` — pre-written email embedded in the task; sent manually by the user or\n  automatically when the task is completed.\n- `Hidden` — only visible when editing the workflow; populated by integrations or default values.\n- `Snippet` — only visible when editing; passes static text or merge tags into automations.\n","type":"string","enum":["Date","Document","Email","File","Hidden","Members","MultiChoice","MultiFile","MultiSelect","Number","Select","SendRichEmail","Snippet","Table","Text","Textarea","Url"],"const":"Members"}}},"UpdateMultiChoiceFormFieldRequest":{"title":"UpdateMultiChoiceFormFieldRequest","type":"object","required":["hiddenByDefault","required","config","type","fieldType"],"properties":{"hiddenByDefault":{"description":"When `true`, the widget is hidden by default; conditional logic rules can reveal it at runtime. Defaults to `false`.","type":"boolean"},"position":{"title":"WidgetPosition","description":"Where to place this widget on the task. `Top` — before all existing widgets. `Bottom` — after all existing widgets (default when `position` is omitted). `After` — immediately after the widget identified by `widgetId`.","oneOf":[{"title":"WidgetPositionAfter","type":"object","required":["widgetId","type"],"properties":{"widgetId":{"title":"EntityID","description":"The ID of the widget.","type":"string"},"type":{"description":"Discriminator value for this variant. See the parent oneOf for the full set of values.","type":"string","const":"After"}}},{"title":"WidgetPositionBottom","type":"object","required":["type"],"properties":{"type":{"description":"Discriminator value for this variant. See the parent oneOf for the full set of values.","type":"string","const":"Bottom"}}},{"title":"WidgetPositionTop","type":"object","required":["type"],"properties":{"type":{"description":"Discriminator value for this variant. See the parent oneOf for the full set of values.","type":"string","const":"Top"}}}],"required":["type"],"discriminator":{"propertyName":"type","mapping":{"After":"#/components/schemas/WidgetPositionAfter","Bottom":"#/components/schemas/WidgetPositionBottom","Top":"#/components/schemas/WidgetPositionTop"}}},"label":{"description":"Display label shown to the end user.","type":"string","maxLength":255},"required":{"description":"When `true`, the form field must have a value before its task can be completed.","type":"boolean"},"config":{"title":"PublicApiMultiChoiceFormFieldConfig","description":"Field-specific configuration. Shape depends on `fieldType`.","type":"object","properties":{"items":{"description":"Available options for selection-style form fields.","type":"array","items":{"title":"PublicApiFormFieldItem","type":"object","required":["name"],"properties":{"id":{"title":"EntityID","description":"The resource's ID.","type":"string"},"name":{"description":"Display name.","type":"string"}}}}}},"type":{"description":"Discriminator value for this variant. See the parent oneOf for the full set of values.","examples":["FormField"],"type":"string","enum":["FormField"]},"fieldType":{"description":"Form-field subtype discriminator (only relevant when widget `type` is `FormField`).\n\n- `Text` — short text input (≤255 characters).\n- `Textarea` — long-form text.\n- `Email` — email address.\n- `Url` — website / URL.\n- `Number` — numeric input with optional unit and constraints.\n- `Date` — date or date+time picker.\n- `Select` — dropdown; user picks one option.\n- `MultiChoice` — checkboxes; user picks one or more options.\n- `MultiSelect` — Subtasks: a checklist of sub-items inside the task.\n- `Members` — assignee picker (selects organization users).\n- `File` — single file upload.\n- `MultiFile` — multi-file upload (in-app \"File Upload\").\n- `Document` — document approval field; links the task to a document review.\n- `Table` — rows × columns of cells; users fill cell values.\n- `SendRichEmail` — pre-written email embedded in the task; sent manually by the user or\n  automatically when the task is completed.\n- `Hidden` — only visible when editing the workflow; populated by integrations or default values.\n- `Snippet` — only visible when editing; passes static text or merge tags into automations.\n","type":"string","enum":["Date","Document","Email","File","Hidden","Members","MultiChoice","MultiFile","MultiSelect","Number","Select","SendRichEmail","Snippet","Table","Text","Textarea","Url"],"const":"MultiChoice"}}},"UpdateMultiFileFormFieldRequest":{"title":"UpdateMultiFileFormFieldRequest","type":"object","required":["hiddenByDefault","required","config","constraints","type","fieldType"],"properties":{"hiddenByDefault":{"description":"When `true`, the widget is hidden by default; conditional logic rules can reveal it at runtime. Defaults to `false`.","type":"boolean"},"position":{"title":"WidgetPosition","description":"Where to place this widget on the task. `Top` — before all existing widgets. `Bottom` — after all existing widgets (default when `position` is omitted). `After` — immediately after the widget identified by `widgetId`.","oneOf":[{"title":"WidgetPositionAfter","type":"object","required":["widgetId","type"],"properties":{"widgetId":{"title":"EntityID","description":"The ID of the widget.","type":"string"},"type":{"description":"Discriminator value for this variant. See the parent oneOf for the full set of values.","type":"string","const":"After"}}},{"title":"WidgetPositionBottom","type":"object","required":["type"],"properties":{"type":{"description":"Discriminator value for this variant. See the parent oneOf for the full set of values.","type":"string","const":"Bottom"}}},{"title":"WidgetPositionTop","type":"object","required":["type"],"properties":{"type":{"description":"Discriminator value for this variant. See the parent oneOf for the full set of values.","type":"string","const":"Top"}}}],"required":["type"],"discriminator":{"propertyName":"type","mapping":{"After":"#/components/schemas/WidgetPositionAfter","Bottom":"#/components/schemas/WidgetPositionBottom","Top":"#/components/schemas/WidgetPositionTop"}}},"label":{"description":"Display label shown to the end user.","type":"string","maxLength":255},"required":{"description":"When `true`, the form field must have a value before its task can be completed.","type":"boolean"},"config":{"title":"PublicApiMultiFileFormFieldConfig","description":"Field-specific configuration. Shape depends on `fieldType`.","type":"object","properties":{"placeholder":{"description":"Placeholder hint shown in the input when no value has been entered.","type":"string"},"extractTextContent":{"description":"When `true`, server extracts text from uploaded documents for use in merge tags.","type":"boolean"}}},"constraints":{"title":"PublicApiMultiFileFormFieldConstraints","description":"Field-specific validation constraints. Shape depends on `fieldType`.","type":"object","properties":{"extensions":{"description":"Allowed file extensions, including the leading dot (e.g. `.pdf`, `.docx`).","type":"array","items":{"type":"string"}},"mode":{"description":"Whether the field accepts a single file or multiple files.\n\n- `Single` — only one file may be uploaded.\n- `Multiple` — multiple files may be uploaded.\n","type":"string","enum":["Multiple","Single"]}}},"type":{"description":"Discriminator value for this variant. See the parent oneOf for the full set of values.","examples":["FormField"],"type":"string","enum":["FormField"]},"fieldType":{"description":"Form-field subtype discriminator (only relevant when widget `type` is `FormField`).\n\n- `Text` — short text input (≤255 characters).\n- `Textarea` — long-form text.\n- `Email` — email address.\n- `Url` — website / URL.\n- `Number` — numeric input with optional unit and constraints.\n- `Date` — date or date+time picker.\n- `Select` — dropdown; user picks one option.\n- `MultiChoice` — checkboxes; user picks one or more options.\n- `MultiSelect` — Subtasks: a checklist of sub-items inside the task.\n- `Members` — assignee picker (selects organization users).\n- `File` — single file upload.\n- `MultiFile` — multi-file upload (in-app \"File Upload\").\n- `Document` — document approval field; links the task to a document review.\n- `Table` — rows × columns of cells; users fill cell values.\n- `SendRichEmail` — pre-written email embedded in the task; sent manually by the user or\n  automatically when the task is completed.\n- `Hidden` — only visible when editing the workflow; populated by integrations or default values.\n- `Snippet` — only visible when editing; passes static text or merge tags into automations.\n","type":"string","enum":["Date","Document","Email","File","Hidden","Members","MultiChoice","MultiFile","MultiSelect","Number","Select","SendRichEmail","Snippet","Table","Text","Textarea","Url"],"const":"MultiFile"}}},"UpdateMultiSelectFormFieldRequest":{"title":"UpdateMultiSelectFormFieldRequest","type":"object","required":["hiddenByDefault","required","config","type","fieldType"],"properties":{"hiddenByDefault":{"description":"When `true`, the widget is hidden by default; conditional logic rules can reveal it at runtime. Defaults to `false`.","type":"boolean"},"position":{"title":"WidgetPosition","description":"Where to place this widget on the task. `Top` — before all existing widgets. `Bottom` — after all existing widgets (default when `position` is omitted). `After` — immediately after the widget identified by `widgetId`.","oneOf":[{"title":"WidgetPositionAfter","type":"object","required":["widgetId","type"],"properties":{"widgetId":{"title":"EntityID","description":"The ID of the widget.","type":"string"},"type":{"description":"Discriminator value for this variant. See the parent oneOf for the full set of values.","type":"string","const":"After"}}},{"title":"WidgetPositionBottom","type":"object","required":["type"],"properties":{"type":{"description":"Discriminator value for this variant. See the parent oneOf for the full set of values.","type":"string","const":"Bottom"}}},{"title":"WidgetPositionTop","type":"object","required":["type"],"properties":{"type":{"description":"Discriminator value for this variant. See the parent oneOf for the full set of values.","type":"string","const":"Top"}}}],"required":["type"],"discriminator":{"propertyName":"type","mapping":{"After":"#/components/schemas/WidgetPositionAfter","Bottom":"#/components/schemas/WidgetPositionBottom","Top":"#/components/schemas/WidgetPositionTop"}}},"label":{"description":"Display label shown to the end user.","type":"string","maxLength":255},"required":{"description":"When `true`, the form field must have a value before its task can be completed.","type":"boolean"},"config":{"title":"PublicApiMultiSelectFormFieldConfig","description":"Field-specific configuration. Shape depends on `fieldType`.","type":"object","properties":{"items":{"description":"Available options for selection-style form fields.","type":"array","items":{"title":"PublicApiFormFieldItem","type":"object","required":["name"],"properties":{"id":{"title":"EntityID","description":"The resource's ID.","type":"string"},"name":{"description":"Display name.","type":"string"}}}}}},"type":{"description":"Discriminator value for this variant. See the parent oneOf for the full set of values.","examples":["FormField"],"type":"string","enum":["FormField"]},"fieldType":{"description":"Form-field subtype discriminator (only relevant when widget `type` is `FormField`).\n\n- `Text` — short text input (≤255 characters).\n- `Textarea` — long-form text.\n- `Email` — email address.\n- `Url` — website / URL.\n- `Number` — numeric input with optional unit and constraints.\n- `Date` — date or date+time picker.\n- `Select` — dropdown; user picks one option.\n- `MultiChoice` — checkboxes; user picks one or more options.\n- `MultiSelect` — Subtasks: a checklist of sub-items inside the task.\n- `Members` — assignee picker (selects organization users).\n- `File` — single file upload.\n- `MultiFile` — multi-file upload (in-app \"File Upload\").\n- `Document` — document approval field; links the task to a document review.\n- `Table` — rows × columns of cells; users fill cell values.\n- `SendRichEmail` — pre-written email embedded in the task; sent manually by the user or\n  automatically when the task is completed.\n- `Hidden` — only visible when editing the workflow; populated by integrations or default values.\n- `Snippet` — only visible when editing; passes static text or merge tags into automations.\n","type":"string","enum":["Date","Document","Email","File","Hidden","Members","MultiChoice","MultiFile","MultiSelect","Number","Select","SendRichEmail","Snippet","Table","Text","Textarea","Url"],"const":"MultiSelect"}}},"UpdateMultipleFormFieldValuesRequest":{"title":"UpdateMultipleFormFieldValuesRequest","type":"object","properties":{"fields":{"description":"Form field definitions or column definitions, depending on context.","type":"array","items":{"type":"object","required":["id"],"properties":{"id":{"title":"EntityID","description":"The resource's ID.","type":"string"},"value":{"description":"The form field value (e.g. text, date as ISO string, URL or user email for Users field)","type":"string"},"values":{"description":"List of form field values","type":"array","items":{"type":"string"}},"timeHidden":{"description":"Whether to hide the time portion and display the date only for Date form fields.","type":"boolean"},"dataSetRowId":{"title":"EntityID","type":"string"}}}}}},"UpdateMultipleFormFieldValuesResponse":{"title":"UpdateMultipleFormFieldValuesResponse","type":"object","properties":{"fields":{"description":"Form field definitions or column definitions, depending on context.","type":"array","items":{"title":"SimplifiedFormFieldValue","type":"object","required":["id","workflowRunId","taskId","key","data","fieldType"],"properties":{"id":{"title":"EntityID","description":"The resource's ID.","type":"string"},"updatedDate":{"description":"When the resource was last modified. ISO-8601 UTC.","type":"string","format":"date-time"},"updatedBy":{"title":"PublicApiUser","description":"User who last modified the resource.","examples":[{"id":"iUu2eOU2Q-sBoX6ZjZV9pQ","email":"jane.doe@example.com","username":"Jane Doe"}],"type":"object","required":["id","email","username"],"properties":{"id":{"title":"EntityID","description":"The resource's ID.","type":"string"},"email":{"description":"The user's email address (also their login identifier).","type":"string"},"username":{"description":"The user's display name (e.g. `Jane Doe`).","type":"string"}}},"workflowRunId":{"title":"EntityID","description":"The ID of the Workflow Run.","type":"string"},"taskId":{"title":"EntityID","description":"The ID of the Task.","type":"string"},"key":{"description":"Unique key based on the label. This is used when referencing the form field as a [variable](https://www.process.st/help/docs/variables/)","type":"string"},"label":{"description":"User defined label","type":"string"},"data":{"description":"The form field's value, encoded as JSON. Shape depends on `fieldType` — e.g. a string for `Text`, a number for `Number`, an array of selected option keys for `MultiChoice`."},"fieldType":{"description":"Form-field subtype discriminator (only relevant when widget `type` is `FormField`).\n\n- `Text` — short text input (≤255 characters).\n- `Textarea` — long-form text.\n- `Email` — email address.\n- `Url` — website / URL.\n- `Number` — numeric input with optional unit and constraints.\n- `Date` — date or date+time picker.\n- `Select` — dropdown; user picks one option.\n- `MultiChoice` — checkboxes; user picks one or more options.\n- `MultiSelect` — Subtasks: a checklist of sub-items inside the task.\n- `Members` — assignee picker (selects organization users).\n- `File` — single file upload.\n- `MultiFile` — multi-file upload (in-app \"File Upload\").\n- `Document` — document approval field; links the task to a document review.\n- `Table` — rows × columns of cells; users fill cell values.\n- `SendRichEmail` — pre-written email embedded in the task; sent manually by the user or\n  automatically when the task is completed.\n- `Hidden` — only visible when editing the workflow; populated by integrations or default values.\n- `Snippet` — only visible when editing; passes static text or merge tags into automations.\n","type":"string","enum":["Date","Document","Email","File","Hidden","Members","MultiChoice","MultiFile","MultiSelect","Number","Select","SendRichEmail","Snippet","Table","Text","Textarea","Url"]},"dataSetLinked":{"description":"When `true`, this field is bound to a data set row; its value is synchronised from the linked record.","type":"boolean"},"links":{"description":"Navigable HATEOAS links to related resources. Each entry has a `name` (RFC-5988 relation), an `href` URL, and a `type` (`Api` or `App`).","type":"array","items":{"title":"Link","description":"A HATEOAS link to a related resource. Use these to navigate between resources without constructing URLs by hand.","type":"object","required":["name","href","type"],"properties":{"name":{"description":"Standard link relation name (RFC 5988) indicating this link's role. Common values include `self`, `edit`, `related`, `previous`, `next`.","type":"string"},"href":{"title":"Uri","description":"URL of the linked resource.","examples":["https://api.process.st/api/v1.1/resource/XXX"],"type":"string"},"rel":{"description":"Optional. The kind of resource this link points to (e.g. `Workflow`, `Task`, `Comment`).","type":"string","enum":["Approval Task","Approvals","Assignees","Comment","Data Set Records","Data Sets","Form Field Values","Subject Task","Task","Tasks","Users","Webhook","Workflow","Workflow Run"]},"type":{"description":"Whether this link targets an API endpoint or a Process Street app URL. `Api` — a callable API endpoint you can fetch directly. `App` — a browser-facing URL in the Process Street UI.","type":"string","enum":["Api","App"]}}}}}}}}},"UpdateNumberFormFieldRequest":{"title":"UpdateNumberFormFieldRequest","type":"object","required":["hiddenByDefault","required","config","constraints","type","fieldType"],"properties":{"hiddenByDefault":{"description":"When `true`, the widget is hidden by default; conditional logic rules can reveal it at runtime. Defaults to `false`.","type":"boolean"},"position":{"title":"WidgetPosition","description":"Where to place this widget on the task. `Top` — before all existing widgets. `Bottom` — after all existing widgets (default when `position` is omitted). `After` — immediately after the widget identified by `widgetId`.","oneOf":[{"title":"WidgetPositionAfter","type":"object","required":["widgetId","type"],"properties":{"widgetId":{"title":"EntityID","description":"The ID of the widget.","type":"string"},"type":{"description":"Discriminator value for this variant. See the parent oneOf for the full set of values.","type":"string","const":"After"}}},{"title":"WidgetPositionBottom","type":"object","required":["type"],"properties":{"type":{"description":"Discriminator value for this variant. See the parent oneOf for the full set of values.","type":"string","const":"Bottom"}}},{"title":"WidgetPositionTop","type":"object","required":["type"],"properties":{"type":{"description":"Discriminator value for this variant. See the parent oneOf for the full set of values.","type":"string","const":"Top"}}}],"required":["type"],"discriminator":{"propertyName":"type","mapping":{"After":"#/components/schemas/WidgetPositionAfter","Bottom":"#/components/schemas/WidgetPositionBottom","Top":"#/components/schemas/WidgetPositionTop"}}},"label":{"description":"Display label shown to the end user.","type":"string","maxLength":255},"required":{"description":"When `true`, the form field must have a value before its task can be completed.","type":"boolean"},"config":{"title":"PublicApiNumberFormFieldConfig","description":"Field-specific configuration. Shape depends on `fieldType`.","type":"object","properties":{"placeholder":{"description":"Placeholder hint shown in the input when no value has been entered.","type":"string"},"defaultValue":{"description":"Default value pre-filled when a new workflow run is created.","type":"string"},"unit":{"description":"Unit label rendered next to the numeric value (e.g. `kg`, `$`, `%`).","type":"string"},"unitLocation":{"description":"Where the unit symbol appears relative to the number.\n\n- `prefix` — before the number (e.g. `$100`).\n- `suffix` — after the number (e.g. `100 USD`).\n","type":"string","enum":["prefix","suffix"]}}},"constraints":{"title":"PublicApiNumberFormFieldConstraints","description":"Field-specific validation constraints. Shape depends on `fieldType`.","type":"object","properties":{"minDigits":{"description":"Minimum number of digits.","type":"integer","format":"int32"},"maxDigits":{"description":"Maximum number of digits.","type":"integer","format":"int32"},"minValue":{"description":"Minimum numeric value.","type":"integer","format":"int32"},"maxValue":{"description":"Maximum numeric value.","type":"integer","format":"int32"},"decimalPlaces":{"description":"Number of decimal places to accept (0 means integers only).","type":"integer","format":"int32"},"allowNegative":{"description":"When `true`, negative numbers are accepted.","type":"boolean"}}},"type":{"description":"Discriminator value for this variant. See the parent oneOf for the full set of values.","examples":["FormField"],"type":"string","enum":["FormField"]},"fieldType":{"description":"Form-field subtype discriminator (only relevant when widget `type` is `FormField`).\n\n- `Text` — short text input (≤255 characters).\n- `Textarea` — long-form text.\n- `Email` — email address.\n- `Url` — website / URL.\n- `Number` — numeric input with optional unit and constraints.\n- `Date` — date or date+time picker.\n- `Select` — dropdown; user picks one option.\n- `MultiChoice` — checkboxes; user picks one or more options.\n- `MultiSelect` — Subtasks: a checklist of sub-items inside the task.\n- `Members` — assignee picker (selects organization users).\n- `File` — single file upload.\n- `MultiFile` — multi-file upload (in-app \"File Upload\").\n- `Document` — document approval field; links the task to a document review.\n- `Table` — rows × columns of cells; users fill cell values.\n- `SendRichEmail` — pre-written email embedded in the task; sent manually by the user or\n  automatically when the task is completed.\n- `Hidden` — only visible when editing the workflow; populated by integrations or default values.\n- `Snippet` — only visible when editing; passes static text or merge tags into automations.\n","type":"string","enum":["Date","Document","Email","File","Hidden","Members","MultiChoice","MultiFile","MultiSelect","Number","Select","SendRichEmail","Snippet","Table","Text","Textarea","Url"],"const":"Number"}}},"UpdateOneOffTaskRequest":{"title":"UpdateOneOffTaskRequest","type":"object","required":["name","required"],"properties":{"name":{"description":"Display name.","type":"string","minLength":1},"description":{"description":"Optional long-form description.","type":"string"},"dueDate":{"description":"Due date. ISO-8601 UTC.","type":"string","format":"date-time"},"required":{"description":"When `true`, the form field must have a value before its task can be completed.","type":"boolean"},"linkedWorkflowRunId":{"title":"EntityID","type":"string"},"assigneeEmails":{"type":"array","minItems":1,"items":{"type":"string"}},"subtasks":{"type":"array","items":{"title":"UpdateSubtaskRequest","type":"object","required":["name","status"],"properties":{"id":{"title":"EntityID","description":"The resource's ID.","type":"string"},"name":{"description":"Display name.","type":"string","minLength":1},"status":{"title":"Status","description":"Whether this subtask has been checked off.\n\n- `Completed` — the subtask is checked.\n- `NotCompleted` — the subtask is unchecked.\n","type":"string","enum":["Completed","NotCompleted"]}}}}}},"UpdatePageCrossLinkWidgetRequest":{"title":"UpdatePageCrossLinkWidgetRequest","type":"object","required":["hiddenByDefault","type"],"properties":{"hiddenByDefault":{"description":"When `true`, the widget is hidden by default; conditional logic rules can reveal it at runtime. Defaults to `false`.","type":"boolean"},"position":{"title":"WidgetPosition","description":"Where to place this widget on the task. `Top` — before all existing widgets. `Bottom` — after all existing widgets (default when `position` is omitted). `After` — immediately after the widget identified by `widgetId`.","oneOf":[{"title":"WidgetPositionAfter","type":"object","required":["widgetId","type"],"properties":{"widgetId":{"title":"EntityID","description":"The ID of the widget.","type":"string"},"type":{"description":"Discriminator value for this variant. See the parent oneOf for the full set of values.","type":"string","const":"After"}}},{"title":"WidgetPositionBottom","type":"object","required":["type"],"properties":{"type":{"description":"Discriminator value for this variant. See the parent oneOf for the full set of values.","type":"string","const":"Bottom"}}},{"title":"WidgetPositionTop","type":"object","required":["type"],"properties":{"type":{"description":"Discriminator value for this variant. See the parent oneOf for the full set of values.","type":"string","const":"Top"}}}],"required":["type"],"discriminator":{"propertyName":"type","mapping":{"After":"#/components/schemas/WidgetPositionAfter","Bottom":"#/components/schemas/WidgetPositionBottom","Top":"#/components/schemas/WidgetPositionTop"}}},"linkedTemplateId":{"title":"EntityID","description":"The ID of the linked workflow or page that this CrossLink widget points to.","type":"string"},"type":{"description":"Discriminator value for this variant. See the parent oneOf for the full set of values.","type":"string","enum":["Text","Image","File","Video","Embed","CrossLink"],"const":"CrossLink"}}},"UpdatePageEmbedWidgetRequest":{"title":"UpdatePageEmbedWidgetRequest","type":"object","required":["hiddenByDefault","type"],"properties":{"hiddenByDefault":{"description":"When `true`, the widget is hidden by default; conditional logic rules can reveal it at runtime. Defaults to `false`.","type":"boolean"},"position":{"title":"WidgetPosition","description":"Where to place this widget on the task. `Top` — before all existing widgets. `Bottom` — after all existing widgets (default when `position` is omitted). `After` — immediately after the widget identified by `widgetId`.","oneOf":[{"title":"WidgetPositionAfter","type":"object","required":["widgetId","type"],"properties":{"widgetId":{"title":"EntityID","description":"The ID of the widget.","type":"string"},"type":{"description":"Discriminator value for this variant. See the parent oneOf for the full set of values.","type":"string","const":"After"}}},{"title":"WidgetPositionBottom","type":"object","required":["type"],"properties":{"type":{"description":"Discriminator value for this variant. See the parent oneOf for the full set of values.","type":"string","const":"Bottom"}}},{"title":"WidgetPositionTop","type":"object","required":["type"],"properties":{"type":{"description":"Discriminator value for this variant. See the parent oneOf for the full set of values.","type":"string","const":"Top"}}}],"required":["type"],"discriminator":{"propertyName":"type","mapping":{"After":"#/components/schemas/WidgetPositionAfter","Bottom":"#/components/schemas/WidgetPositionBottom","Top":"#/components/schemas/WidgetPositionTop"}}},"url":{"description":"Target URL.","type":"string","maxLength":4000},"type":{"description":"Discriminator value for this variant. See the parent oneOf for the full set of values.","type":"string","enum":["Text","Image","File","Video","Embed","CrossLink"],"const":"Embed"}}},"UpdatePageFileWidgetRequest":{"title":"UpdatePageFileWidgetRequest","type":"object","required":["hiddenByDefault","type"],"properties":{"hiddenByDefault":{"description":"When `true`, the widget is hidden by default; conditional logic rules can reveal it at runtime. Defaults to `false`.","type":"boolean"},"position":{"title":"WidgetPosition","description":"Where to place this widget on the task. `Top` — before all existing widgets. `Bottom` — after all existing widgets (default when `position` is omitted). `After` — immediately after the widget identified by `widgetId`.","oneOf":[{"title":"WidgetPositionAfter","type":"object","required":["widgetId","type"],"properties":{"widgetId":{"title":"EntityID","description":"The ID of the widget.","type":"string"},"type":{"description":"Discriminator value for this variant. See the parent oneOf for the full set of values.","type":"string","const":"After"}}},{"title":"WidgetPositionBottom","type":"object","required":["type"],"properties":{"type":{"description":"Discriminator value for this variant. See the parent oneOf for the full set of values.","type":"string","const":"Bottom"}}},{"title":"WidgetPositionTop","type":"object","required":["type"],"properties":{"type":{"description":"Discriminator value for this variant. See the parent oneOf for the full set of values.","type":"string","const":"Top"}}}],"required":["type"],"discriminator":{"propertyName":"type","mapping":{"After":"#/components/schemas/WidgetPositionAfter","Bottom":"#/components/schemas/WidgetPositionBottom","Top":"#/components/schemas/WidgetPositionTop"}}},"description":{"description":"Optional long-form description.","type":"string"},"type":{"description":"Discriminator value for this variant. See the parent oneOf for the full set of values.","type":"string","enum":["Text","Image","File","Video","Embed","CrossLink"],"const":"File"}}},"UpdatePageImageWidgetRequest":{"title":"UpdatePageImageWidgetRequest","type":"object","required":["hiddenByDefault","type"],"properties":{"hiddenByDefault":{"description":"When `true`, the widget is hidden by default; conditional logic rules can reveal it at runtime. Defaults to `false`.","type":"boolean"},"position":{"title":"WidgetPosition","description":"Where to place this widget on the task. `Top` — before all existing widgets. `Bottom` — after all existing widgets (default when `position` is omitted). `After` — immediately after the widget identified by `widgetId`.","oneOf":[{"title":"WidgetPositionAfter","type":"object","required":["widgetId","type"],"properties":{"widgetId":{"title":"EntityID","description":"The ID of the widget.","type":"string"},"type":{"description":"Discriminator value for this variant. See the parent oneOf for the full set of values.","type":"string","const":"After"}}},{"title":"WidgetPositionBottom","type":"object","required":["type"],"properties":{"type":{"description":"Discriminator value for this variant. See the parent oneOf for the full set of values.","type":"string","const":"Bottom"}}},{"title":"WidgetPositionTop","type":"object","required":["type"],"properties":{"type":{"description":"Discriminator value for this variant. See the parent oneOf for the full set of values.","type":"string","const":"Top"}}}],"required":["type"],"discriminator":{"propertyName":"type","mapping":{"After":"#/components/schemas/WidgetPositionAfter","Bottom":"#/components/schemas/WidgetPositionBottom","Top":"#/components/schemas/WidgetPositionTop"}}},"caption":{"description":"Caption text rendered with the image.","type":"string"},"type":{"description":"Discriminator value for this variant. See the parent oneOf for the full set of values.","type":"string","enum":["Text","Image","File","Video","Embed","CrossLink"],"const":"Image"}}},"UpdatePageRequest":{"title":"UpdatePageRequest","type":"object","required":["name","folderId","shareLevel"],"properties":{"name":{"description":"Display name.","type":"string","maxLength":255,"minLength":1},"description":{"description":"Optional free-form description of the page.","type":"string","maxLength":255},"folderId":{"title":"EntityID","description":"The ID of the Folder.","type":"string"},"shareLevel":{"description":"Controls who can view this page. `None` — only organization members can view this page. `View` — anyone with the link can view this page.","type":"string","enum":["None","View"]},"referenceId":{"description":"Version prefix used when version control is enabled on this page. Combined with the version number to form the full version identifier.","type":"string"}}},"UpdatePageRevisionRequest":{"title":"UpdatePageRevisionRequest","type":"object","required":["changeType"],"properties":{"changeType":{"title":"ChangeType","description":"Whether the changes in this revision are significant. `Material` — substantial changes; bumps the major version (e.g. `1.3` → `2.0`). `NonMaterial` — minor edits like wording or typo fixes; bumps the minor version (e.g. `1.3` → `1.4`).","type":"string","enum":["Material","NonMaterial"]},"changeExplanation":{"description":"Optional human-readable explanation of what changed in this revision; surfaced in revision history.","type":"string","maxLength":1000}}},"UpdatePageTextWidgetRequest":{"title":"UpdatePageTextWidgetRequest","type":"object","required":["hiddenByDefault","type"],"properties":{"hiddenByDefault":{"description":"When `true`, the widget is hidden by default; conditional logic rules can reveal it at runtime. Defaults to `false`.","type":"boolean"},"position":{"title":"WidgetPosition","description":"Where to place this widget on the task. `Top` — before all existing widgets. `Bottom` — after all existing widgets (default when `position` is omitted). `After` — immediately after the widget identified by `widgetId`.","oneOf":[{"title":"WidgetPositionAfter","type":"object","required":["widgetId","type"],"properties":{"widgetId":{"title":"EntityID","description":"The ID of the widget.","type":"string"},"type":{"description":"Discriminator value for this variant. See the parent oneOf for the full set of values.","type":"string","const":"After"}}},{"title":"WidgetPositionBottom","type":"object","required":["type"],"properties":{"type":{"description":"Discriminator value for this variant. See the parent oneOf for the full set of values.","type":"string","const":"Bottom"}}},{"title":"WidgetPositionTop","type":"object","required":["type"],"properties":{"type":{"description":"Discriminator value for this variant. See the parent oneOf for the full set of values.","type":"string","const":"Top"}}}],"required":["type"],"discriminator":{"propertyName":"type","mapping":{"After":"#/components/schemas/WidgetPositionAfter","Bottom":"#/components/schemas/WidgetPositionBottom","Top":"#/components/schemas/WidgetPositionTop"}}},"content":{"description":"Rich text content. May contain merge tags.","type":"string"},"type":{"description":"Discriminator value for this variant. See the parent oneOf for the full set of values.","type":"string","enum":["Text","Image","File","Video","Embed","CrossLink"],"const":"Text"}}},"UpdatePageVideoWidgetRequest":{"title":"UpdatePageVideoWidgetRequest","type":"object","required":["hiddenByDefault","type"],"properties":{"hiddenByDefault":{"description":"When `true`, the widget is hidden by default; conditional logic rules can reveal it at runtime. Defaults to `false`.","type":"boolean"},"position":{"title":"WidgetPosition","description":"Where to place this widget on the task. `Top` — before all existing widgets. `Bottom` — after all existing widgets (default when `position` is omitted). `After` — immediately after the widget identified by `widgetId`.","oneOf":[{"title":"WidgetPositionAfter","type":"object","required":["widgetId","type"],"properties":{"widgetId":{"title":"EntityID","description":"The ID of the widget.","type":"string"},"type":{"description":"Discriminator value for this variant. See the parent oneOf for the full set of values.","type":"string","const":"After"}}},{"title":"WidgetPositionBottom","type":"object","required":["type"],"properties":{"type":{"description":"Discriminator value for this variant. See the parent oneOf for the full set of values.","type":"string","const":"Bottom"}}},{"title":"WidgetPositionTop","type":"object","required":["type"],"properties":{"type":{"description":"Discriminator value for this variant. See the parent oneOf for the full set of values.","type":"string","const":"Top"}}}],"required":["type"],"discriminator":{"propertyName":"type","mapping":{"After":"#/components/schemas/WidgetPositionAfter","Bottom":"#/components/schemas/WidgetPositionBottom","Top":"#/components/schemas/WidgetPositionTop"}}},"description":{"description":"Optional long-form description.","type":"string"},"url":{"description":"Target URL.","type":"string"},"type":{"description":"Discriminator value for this variant. See the parent oneOf for the full set of values.","type":"string","enum":["Text","Image","File","Video","Embed","CrossLink"],"const":"Video"}}},"UpdatePageWidgetRequest":{"title":"UpdatePageWidgetRequest","description":"Update payload for a page widget. The `type` discriminator selects the widget kind — `Text`, `Image`, `File`, `Video`, `Embed`, or `CrossLink`. Pages do not support form-field widgets.","oneOf":[{"title":"UpdatePageCrossLinkWidgetRequest","type":"object","required":["hiddenByDefault","type"],"properties":{"hiddenByDefault":{"description":"When `true`, the widget is hidden by default; conditional logic rules can reveal it at runtime. Defaults to `false`.","type":"boolean"},"position":{"title":"WidgetPosition","description":"Where to place this widget on the task. `Top` — before all existing widgets. `Bottom` — after all existing widgets (default when `position` is omitted). `After` — immediately after the widget identified by `widgetId`.","oneOf":[{"title":"WidgetPositionAfter","type":"object","required":["widgetId","type"],"properties":{"widgetId":{"title":"EntityID","description":"The ID of the widget.","type":"string"},"type":{"description":"Discriminator value for this variant. See the parent oneOf for the full set of values.","type":"string","const":"After"}}},{"title":"WidgetPositionBottom","type":"object","required":["type"],"properties":{"type":{"description":"Discriminator value for this variant. See the parent oneOf for the full set of values.","type":"string","const":"Bottom"}}},{"title":"WidgetPositionTop","type":"object","required":["type"],"properties":{"type":{"description":"Discriminator value for this variant. See the parent oneOf for the full set of values.","type":"string","const":"Top"}}}],"required":["type"],"discriminator":{"propertyName":"type","mapping":{"After":"#/components/schemas/WidgetPositionAfter","Bottom":"#/components/schemas/WidgetPositionBottom","Top":"#/components/schemas/WidgetPositionTop"}}},"linkedTemplateId":{"title":"EntityID","description":"The ID of the linked workflow or page that this CrossLink widget points to.","type":"string"},"type":{"description":"Discriminator value for this variant. See the parent oneOf for the full set of values.","type":"string","enum":["Text","Image","File","Video","Embed","CrossLink"],"const":"CrossLink"}}},{"title":"UpdatePageEmbedWidgetRequest","type":"object","required":["hiddenByDefault","type"],"properties":{"hiddenByDefault":{"description":"When `true`, the widget is hidden by default; conditional logic rules can reveal it at runtime. Defaults to `false`.","type":"boolean"},"position":{"title":"WidgetPosition","description":"Where to place this widget on the task. `Top` — before all existing widgets. `Bottom` — after all existing widgets (default when `position` is omitted). `After` — immediately after the widget identified by `widgetId`.","oneOf":[{"title":"WidgetPositionAfter","type":"object","required":["widgetId","type"],"properties":{"widgetId":{"title":"EntityID","description":"The ID of the widget.","type":"string"},"type":{"description":"Discriminator value for this variant. See the parent oneOf for the full set of values.","type":"string","const":"After"}}},{"title":"WidgetPositionBottom","type":"object","required":["type"],"properties":{"type":{"description":"Discriminator value for this variant. See the parent oneOf for the full set of values.","type":"string","const":"Bottom"}}},{"title":"WidgetPositionTop","type":"object","required":["type"],"properties":{"type":{"description":"Discriminator value for this variant. See the parent oneOf for the full set of values.","type":"string","const":"Top"}}}],"required":["type"],"discriminator":{"propertyName":"type","mapping":{"After":"#/components/schemas/WidgetPositionAfter","Bottom":"#/components/schemas/WidgetPositionBottom","Top":"#/components/schemas/WidgetPositionTop"}}},"url":{"description":"Target URL.","type":"string","maxLength":4000},"type":{"description":"Discriminator value for this variant. See the parent oneOf for the full set of values.","type":"string","enum":["Text","Image","File","Video","Embed","CrossLink"],"const":"Embed"}}},{"title":"UpdatePageFileWidgetRequest","type":"object","required":["hiddenByDefault","type"],"properties":{"hiddenByDefault":{"description":"When `true`, the widget is hidden by default; conditional logic rules can reveal it at runtime. Defaults to `false`.","type":"boolean"},"position":{"title":"WidgetPosition","description":"Where to place this widget on the task. `Top` — before all existing widgets. `Bottom` — after all existing widgets (default when `position` is omitted). `After` — immediately after the widget identified by `widgetId`.","oneOf":[{"title":"WidgetPositionAfter","type":"object","required":["widgetId","type"],"properties":{"widgetId":{"title":"EntityID","description":"The ID of the widget.","type":"string"},"type":{"description":"Discriminator value for this variant. See the parent oneOf for the full set of values.","type":"string","const":"After"}}},{"title":"WidgetPositionBottom","type":"object","required":["type"],"properties":{"type":{"description":"Discriminator value for this variant. See the parent oneOf for the full set of values.","type":"string","const":"Bottom"}}},{"title":"WidgetPositionTop","type":"object","required":["type"],"properties":{"type":{"description":"Discriminator value for this variant. See the parent oneOf for the full set of values.","type":"string","const":"Top"}}}],"required":["type"],"discriminator":{"propertyName":"type","mapping":{"After":"#/components/schemas/WidgetPositionAfter","Bottom":"#/components/schemas/WidgetPositionBottom","Top":"#/components/schemas/WidgetPositionTop"}}},"description":{"description":"Optional long-form description.","type":"string"},"type":{"description":"Discriminator value for this variant. See the parent oneOf for the full set of values.","type":"string","enum":["Text","Image","File","Video","Embed","CrossLink"],"const":"File"}}},{"title":"UpdatePageImageWidgetRequest","type":"object","required":["hiddenByDefault","type"],"properties":{"hiddenByDefault":{"description":"When `true`, the widget is hidden by default; conditional logic rules can reveal it at runtime. Defaults to `false`.","type":"boolean"},"position":{"title":"WidgetPosition","description":"Where to place this widget on the task. `Top` — before all existing widgets. `Bottom` — after all existing widgets (default when `position` is omitted). `After` — immediately after the widget identified by `widgetId`.","oneOf":[{"title":"WidgetPositionAfter","type":"object","required":["widgetId","type"],"properties":{"widgetId":{"title":"EntityID","description":"The ID of the widget.","type":"string"},"type":{"description":"Discriminator value for this variant. See the parent oneOf for the full set of values.","type":"string","const":"After"}}},{"title":"WidgetPositionBottom","type":"object","required":["type"],"properties":{"type":{"description":"Discriminator value for this variant. See the parent oneOf for the full set of values.","type":"string","const":"Bottom"}}},{"title":"WidgetPositionTop","type":"object","required":["type"],"properties":{"type":{"description":"Discriminator value for this variant. See the parent oneOf for the full set of values.","type":"string","const":"Top"}}}],"required":["type"],"discriminator":{"propertyName":"type","mapping":{"After":"#/components/schemas/WidgetPositionAfter","Bottom":"#/components/schemas/WidgetPositionBottom","Top":"#/components/schemas/WidgetPositionTop"}}},"caption":{"description":"Caption text rendered with the image.","type":"string"},"type":{"description":"Discriminator value for this variant. See the parent oneOf for the full set of values.","type":"string","enum":["Text","Image","File","Video","Embed","CrossLink"],"const":"Image"}}},{"title":"UpdatePageTextWidgetRequest","type":"object","required":["hiddenByDefault","type"],"properties":{"hiddenByDefault":{"description":"When `true`, the widget is hidden by default; conditional logic rules can reveal it at runtime. Defaults to `false`.","type":"boolean"},"position":{"title":"WidgetPosition","description":"Where to place this widget on the task. `Top` — before all existing widgets. `Bottom` — after all existing widgets (default when `position` is omitted). `After` — immediately after the widget identified by `widgetId`.","oneOf":[{"title":"WidgetPositionAfter","type":"object","required":["widgetId","type"],"properties":{"widgetId":{"title":"EntityID","description":"The ID of the widget.","type":"string"},"type":{"description":"Discriminator value for this variant. See the parent oneOf for the full set of values.","type":"string","const":"After"}}},{"title":"WidgetPositionBottom","type":"object","required":["type"],"properties":{"type":{"description":"Discriminator value for this variant. See the parent oneOf for the full set of values.","type":"string","const":"Bottom"}}},{"title":"WidgetPositionTop","type":"object","required":["type"],"properties":{"type":{"description":"Discriminator value for this variant. See the parent oneOf for the full set of values.","type":"string","const":"Top"}}}],"required":["type"],"discriminator":{"propertyName":"type","mapping":{"After":"#/components/schemas/WidgetPositionAfter","Bottom":"#/components/schemas/WidgetPositionBottom","Top":"#/components/schemas/WidgetPositionTop"}}},"content":{"description":"Rich text content. May contain merge tags.","type":"string"},"type":{"description":"Discriminator value for this variant. See the parent oneOf for the full set of values.","type":"string","enum":["Text","Image","File","Video","Embed","CrossLink"],"const":"Text"}}},{"title":"UpdatePageVideoWidgetRequest","type":"object","required":["hiddenByDefault","type"],"properties":{"hiddenByDefault":{"description":"When `true`, the widget is hidden by default; conditional logic rules can reveal it at runtime. Defaults to `false`.","type":"boolean"},"position":{"title":"WidgetPosition","description":"Where to place this widget on the task. `Top` — before all existing widgets. `Bottom` — after all existing widgets (default when `position` is omitted). `After` — immediately after the widget identified by `widgetId`.","oneOf":[{"title":"WidgetPositionAfter","type":"object","required":["widgetId","type"],"properties":{"widgetId":{"title":"EntityID","description":"The ID of the widget.","type":"string"},"type":{"description":"Discriminator value for this variant. See the parent oneOf for the full set of values.","type":"string","const":"After"}}},{"title":"WidgetPositionBottom","type":"object","required":["type"],"properties":{"type":{"description":"Discriminator value for this variant. See the parent oneOf for the full set of values.","type":"string","const":"Bottom"}}},{"title":"WidgetPositionTop","type":"object","required":["type"],"properties":{"type":{"description":"Discriminator value for this variant. See the parent oneOf for the full set of values.","type":"string","const":"Top"}}}],"required":["type"],"discriminator":{"propertyName":"type","mapping":{"After":"#/components/schemas/WidgetPositionAfter","Bottom":"#/components/schemas/WidgetPositionBottom","Top":"#/components/schemas/WidgetPositionTop"}}},"description":{"description":"Optional long-form description.","type":"string"},"url":{"description":"Target URL.","type":"string"},"type":{"description":"Discriminator value for this variant. See the parent oneOf for the full set of values.","type":"string","enum":["Text","Image","File","Video","Embed","CrossLink"],"const":"Video"}}}],"required":["type"],"discriminator":{"propertyName":"type","mapping":{"CrossLink":"#/components/schemas/UpdatePageCrossLinkWidgetRequest","Embed":"#/components/schemas/UpdatePageEmbedWidgetRequest","File":"#/components/schemas/UpdatePageFileWidgetRequest","Image":"#/components/schemas/UpdatePageImageWidgetRequest","Text":"#/components/schemas/UpdatePageTextWidgetRequest","Video":"#/components/schemas/UpdatePageVideoWidgetRequest"}}},"UpdateSelectFormFieldRequest":{"title":"UpdateSelectFormFieldRequest","type":"object","required":["hiddenByDefault","required","config","type","fieldType"],"properties":{"hiddenByDefault":{"description":"When `true`, the widget is hidden by default; conditional logic rules can reveal it at runtime. Defaults to `false`.","type":"boolean"},"position":{"title":"WidgetPosition","description":"Where to place this widget on the task. `Top` — before all existing widgets. `Bottom` — after all existing widgets (default when `position` is omitted). `After` — immediately after the widget identified by `widgetId`.","oneOf":[{"title":"WidgetPositionAfter","type":"object","required":["widgetId","type"],"properties":{"widgetId":{"title":"EntityID","description":"The ID of the widget.","type":"string"},"type":{"description":"Discriminator value for this variant. See the parent oneOf for the full set of values.","type":"string","const":"After"}}},{"title":"WidgetPositionBottom","type":"object","required":["type"],"properties":{"type":{"description":"Discriminator value for this variant. See the parent oneOf for the full set of values.","type":"string","const":"Bottom"}}},{"title":"WidgetPositionTop","type":"object","required":["type"],"properties":{"type":{"description":"Discriminator value for this variant. See the parent oneOf for the full set of values.","type":"string","const":"Top"}}}],"required":["type"],"discriminator":{"propertyName":"type","mapping":{"After":"#/components/schemas/WidgetPositionAfter","Bottom":"#/components/schemas/WidgetPositionBottom","Top":"#/components/schemas/WidgetPositionTop"}}},"label":{"description":"Display label shown to the end user.","type":"string","maxLength":255},"required":{"description":"When `true`, the form field must have a value before its task can be completed.","type":"boolean"},"config":{"title":"PublicApiSelectFormFieldConfig","description":"Field-specific configuration. Shape depends on `fieldType`.","type":"object","properties":{"items":{"description":"Available options for selection-style form fields.","type":"array","items":{"title":"PublicApiFormFieldItem","type":"object","required":["name"],"properties":{"id":{"title":"EntityID","description":"The resource's ID.","type":"string"},"name":{"description":"Display name.","type":"string"}}}},"defaultValue":{"description":"Default value pre-filled when a new workflow run is created.","type":"string"}}},"type":{"description":"Discriminator value for this variant. See the parent oneOf for the full set of values.","examples":["FormField"],"type":"string","enum":["FormField"]},"fieldType":{"description":"Form-field subtype discriminator (only relevant when widget `type` is `FormField`).\n\n- `Text` — short text input (≤255 characters).\n- `Textarea` — long-form text.\n- `Email` — email address.\n- `Url` — website / URL.\n- `Number` — numeric input with optional unit and constraints.\n- `Date` — date or date+time picker.\n- `Select` — dropdown; user picks one option.\n- `MultiChoice` — checkboxes; user picks one or more options.\n- `MultiSelect` — Subtasks: a checklist of sub-items inside the task.\n- `Members` — assignee picker (selects organization users).\n- `File` — single file upload.\n- `MultiFile` — multi-file upload (in-app \"File Upload\").\n- `Document` — document approval field; links the task to a document review.\n- `Table` — rows × columns of cells; users fill cell values.\n- `SendRichEmail` — pre-written email embedded in the task; sent manually by the user or\n  automatically when the task is completed.\n- `Hidden` — only visible when editing the workflow; populated by integrations or default values.\n- `Snippet` — only visible when editing; passes static text or merge tags into automations.\n","type":"string","enum":["Date","Document","Email","File","Hidden","Members","MultiChoice","MultiFile","MultiSelect","Number","Select","SendRichEmail","Snippet","Table","Text","Textarea","Url"],"const":"Select"}}},"UpdateSendRichEmailFormFieldRequest":{"title":"UpdateSendRichEmailFormFieldRequest","type":"object","required":["hiddenByDefault","required","config","type","fieldType"],"properties":{"hiddenByDefault":{"description":"When `true`, the widget is hidden by default; conditional logic rules can reveal it at runtime. Defaults to `false`.","type":"boolean"},"position":{"title":"WidgetPosition","description":"Where to place this widget on the task. `Top` — before all existing widgets. `Bottom` — after all existing widgets (default when `position` is omitted). `After` — immediately after the widget identified by `widgetId`.","oneOf":[{"title":"WidgetPositionAfter","type":"object","required":["widgetId","type"],"properties":{"widgetId":{"title":"EntityID","description":"The ID of the widget.","type":"string"},"type":{"description":"Discriminator value for this variant. See the parent oneOf for the full set of values.","type":"string","const":"After"}}},{"title":"WidgetPositionBottom","type":"object","required":["type"],"properties":{"type":{"description":"Discriminator value for this variant. See the parent oneOf for the full set of values.","type":"string","const":"Bottom"}}},{"title":"WidgetPositionTop","type":"object","required":["type"],"properties":{"type":{"description":"Discriminator value for this variant. See the parent oneOf for the full set of values.","type":"string","const":"Top"}}}],"required":["type"],"discriminator":{"propertyName":"type","mapping":{"After":"#/components/schemas/WidgetPositionAfter","Bottom":"#/components/schemas/WidgetPositionBottom","Top":"#/components/schemas/WidgetPositionTop"}}},"label":{"description":"Display label shown to the end user.","type":"string","maxLength":255},"required":{"description":"When `true`, the form field must have a value before its task can be completed.","type":"boolean"},"config":{"title":"PublicApiSendRichEmailFormFieldConfig","description":"Field-specific configuration. Shape depends on `fieldType`.","type":"object","required":["bodyEditor"],"properties":{"to":{"description":"Default recipient list (To). Comma-separated email addresses or merge tags.","type":"array","items":{"type":"string"}},"cc":{"description":"Default CC list. Comma-separated email addresses or merge tags.","type":"array","items":{"type":"string"}},"bcc":{"description":"Default BCC list. Comma-separated email addresses or merge tags.","type":"array","items":{"type":"string"}},"replyTo":{"description":"Default Reply-To address. An email address or merge tag.","type":"array","items":{"type":"string"}},"subject":{"description":"Default email subject. May contain merge tags.","type":"string"},"body":{"description":"Default email body. May contain merge tags.","type":"string"},"bodyEditor":{"description":"Editor used to author the email body.\n\n- `RichText` — rich-text editor with formatting.\n- `HTML` — raw HTML editor.\n- `PlainText` — plain text editor.\n","type":"string","enum":["RichText","HTML","PlainText"]},"editAllowed":{"description":"When `true`, users running the workflow can edit the email before sending.","type":"boolean"}}},"type":{"description":"Discriminator value for this variant. See the parent oneOf for the full set of values.","examples":["FormField"],"type":"string","enum":["FormField"]},"fieldType":{"description":"Form-field subtype discriminator (only relevant when widget `type` is `FormField`).\n\n- `Text` — short text input (≤255 characters).\n- `Textarea` — long-form text.\n- `Email` — email address.\n- `Url` — website / URL.\n- `Number` — numeric input with optional unit and constraints.\n- `Date` — date or date+time picker.\n- `Select` — dropdown; user picks one option.\n- `MultiChoice` — checkboxes; user picks one or more options.\n- `MultiSelect` — Subtasks: a checklist of sub-items inside the task.\n- `Members` — assignee picker (selects organization users).\n- `File` — single file upload.\n- `MultiFile` — multi-file upload (in-app \"File Upload\").\n- `Document` — document approval field; links the task to a document review.\n- `Table` — rows × columns of cells; users fill cell values.\n- `SendRichEmail` — pre-written email embedded in the task; sent manually by the user or\n  automatically when the task is completed.\n- `Hidden` — only visible when editing the workflow; populated by integrations or default values.\n- `Snippet` — only visible when editing; passes static text or merge tags into automations.\n","type":"string","enum":["Date","Document","Email","File","Hidden","Members","MultiChoice","MultiFile","MultiSelect","Number","Select","SendRichEmail","Snippet","Table","Text","Textarea","Url"],"const":"SendRichEmail"}}},"UpdateSnippetFormFieldRequest":{"title":"UpdateSnippetFormFieldRequest","type":"object","required":["hiddenByDefault","required","config","type","fieldType"],"properties":{"hiddenByDefault":{"description":"When `true`, the widget is hidden by default; conditional logic rules can reveal it at runtime. Defaults to `false`.","type":"boolean"},"position":{"title":"WidgetPosition","description":"Where to place this widget on the task. `Top` — before all existing widgets. `Bottom` — after all existing widgets (default when `position` is omitted). `After` — immediately after the widget identified by `widgetId`.","oneOf":[{"title":"WidgetPositionAfter","type":"object","required":["widgetId","type"],"properties":{"widgetId":{"title":"EntityID","description":"The ID of the widget.","type":"string"},"type":{"description":"Discriminator value for this variant. See the parent oneOf for the full set of values.","type":"string","const":"After"}}},{"title":"WidgetPositionBottom","type":"object","required":["type"],"properties":{"type":{"description":"Discriminator value for this variant. See the parent oneOf for the full set of values.","type":"string","const":"Bottom"}}},{"title":"WidgetPositionTop","type":"object","required":["type"],"properties":{"type":{"description":"Discriminator value for this variant. See the parent oneOf for the full set of values.","type":"string","const":"Top"}}}],"required":["type"],"discriminator":{"propertyName":"type","mapping":{"After":"#/components/schemas/WidgetPositionAfter","Bottom":"#/components/schemas/WidgetPositionBottom","Top":"#/components/schemas/WidgetPositionTop"}}},"label":{"description":"Display label shown to the end user.","type":"string","maxLength":255},"required":{"description":"When `true`, the form field must have a value before its task can be completed.","type":"boolean"},"config":{"title":"PublicApiSnippetFormFieldConfig","description":"Field-specific configuration. Shape depends on `fieldType`.","type":"object","properties":{"value":{"description":"The option's stored value.","type":"string"}}},"type":{"description":"Discriminator value for this variant. See the parent oneOf for the full set of values.","examples":["FormField"],"type":"string","enum":["FormField"]},"fieldType":{"description":"Form-field subtype discriminator (only relevant when widget `type` is `FormField`).\n\n- `Text` — short text input (≤255 characters).\n- `Textarea` — long-form text.\n- `Email` — email address.\n- `Url` — website / URL.\n- `Number` — numeric input with optional unit and constraints.\n- `Date` — date or date+time picker.\n- `Select` — dropdown; user picks one option.\n- `MultiChoice` — checkboxes; user picks one or more options.\n- `MultiSelect` — Subtasks: a checklist of sub-items inside the task.\n- `Members` — assignee picker (selects organization users).\n- `File` — single file upload.\n- `MultiFile` — multi-file upload (in-app \"File Upload\").\n- `Document` — document approval field; links the task to a document review.\n- `Table` — rows × columns of cells; users fill cell values.\n- `SendRichEmail` — pre-written email embedded in the task; sent manually by the user or\n  automatically when the task is completed.\n- `Hidden` — only visible when editing the workflow; populated by integrations or default values.\n- `Snippet` — only visible when editing; passes static text or merge tags into automations.\n","type":"string","enum":["Date","Document","Email","File","Hidden","Members","MultiChoice","MultiFile","MultiSelect","Number","Select","SendRichEmail","Snippet","Table","Text","Textarea","Url"],"const":"Snippet"}}},"UpdateSubtaskRequest":{"title":"UpdateSubtaskRequest","type":"object","required":["name","status"],"properties":{"id":{"title":"EntityID","description":"The resource's ID.","type":"string"},"name":{"description":"Display name.","type":"string","minLength":1},"status":{"title":"Status","description":"Whether this subtask has been checked off.\n\n- `Completed` — the subtask is checked.\n- `NotCompleted` — the subtask is unchecked.\n","type":"string","enum":["Completed","NotCompleted"]}}},"UpdateTableFormFieldRequest":{"title":"UpdateTableFormFieldRequest","type":"object","required":["hiddenByDefault","required","config","type","fieldType"],"properties":{"hiddenByDefault":{"description":"When `true`, the widget is hidden by default; conditional logic rules can reveal it at runtime. Defaults to `false`.","type":"boolean"},"position":{"title":"WidgetPosition","description":"Where to place this widget on the task. `Top` — before all existing widgets. `Bottom` — after all existing widgets (default when `position` is omitted). `After` — immediately after the widget identified by `widgetId`.","oneOf":[{"title":"WidgetPositionAfter","type":"object","required":["widgetId","type"],"properties":{"widgetId":{"title":"EntityID","description":"The ID of the widget.","type":"string"},"type":{"description":"Discriminator value for this variant. See the parent oneOf for the full set of values.","type":"string","const":"After"}}},{"title":"WidgetPositionBottom","type":"object","required":["type"],"properties":{"type":{"description":"Discriminator value for this variant. See the parent oneOf for the full set of values.","type":"string","const":"Bottom"}}},{"title":"WidgetPositionTop","type":"object","required":["type"],"properties":{"type":{"description":"Discriminator value for this variant. See the parent oneOf for the full set of values.","type":"string","const":"Top"}}}],"required":["type"],"discriminator":{"propertyName":"type","mapping":{"After":"#/components/schemas/WidgetPositionAfter","Bottom":"#/components/schemas/WidgetPositionBottom","Top":"#/components/schemas/WidgetPositionTop"}}},"label":{"description":"Display label shown to the end user.","type":"string","maxLength":255},"required":{"description":"When `true`, the form field must have a value before its task can be completed.","type":"boolean"},"config":{"title":"PublicApiTableFormFieldConfig","description":"Field-specific configuration. Shape depends on `fieldType`.","type":"object","properties":{"columnDefs":{"description":"Data set column definitions (name + type per column).","type":"array","items":{"title":"PublicApiTableFormFieldColumn","type":"object","required":["id","name","columnType"],"properties":{"id":{"title":"EntityID","description":"The resource's ID.","type":"string"},"name":{"description":"Display name.","type":"string"},"columnType":{"description":"Data type a Table column accepts.\n\n- `Text` — free-form short text.\n","type":"string","enum":["Text"]}}}},"defaultValue":{"description":"Default value pre-filled when a new workflow run is created.","type":"string"}}},"type":{"description":"Discriminator value for this variant. See the parent oneOf for the full set of values.","examples":["FormField"],"type":"string","enum":["FormField"]},"fieldType":{"description":"Form-field subtype discriminator (only relevant when widget `type` is `FormField`).\n\n- `Text` — short text input (≤255 characters).\n- `Textarea` — long-form text.\n- `Email` — email address.\n- `Url` — website / URL.\n- `Number` — numeric input with optional unit and constraints.\n- `Date` — date or date+time picker.\n- `Select` — dropdown; user picks one option.\n- `MultiChoice` — checkboxes; user picks one or more options.\n- `MultiSelect` — Subtasks: a checklist of sub-items inside the task.\n- `Members` — assignee picker (selects organization users).\n- `File` — single file upload.\n- `MultiFile` — multi-file upload (in-app \"File Upload\").\n- `Document` — document approval field; links the task to a document review.\n- `Table` — rows × columns of cells; users fill cell values.\n- `SendRichEmail` — pre-written email embedded in the task; sent manually by the user or\n  automatically when the task is completed.\n- `Hidden` — only visible when editing the workflow; populated by integrations or default values.\n- `Snippet` — only visible when editing; passes static text or merge tags into automations.\n","type":"string","enum":["Date","Document","Email","File","Hidden","Members","MultiChoice","MultiFile","MultiSelect","Number","Select","SendRichEmail","Snippet","Table","Text","Textarea","Url"],"const":"Table"}}},"UpdateTaskAssignmentRuleRequest":{"title":"UpdateTaskAssignmentRuleRequest","description":"An assignment rule. The `type` discriminator field selects the variant: `Static` — assigns a specific named user (requires `email`). `Dynamic` — derives the assignee at runtime from a source like the workflow run initiator or a form field (requires `sourceType`).","oneOf":[{"title":"DynamicAssignmentRuleRequest","type":"object","required":["sourceType","type"],"properties":{"sourceType":{"description":"How assignees are derived. `ChecklistInitiator` assigns the user who started the workflow run; `FormField` pulls assignees from a Members or Email form field (requires `sourceWidgetId`); `DocumentOwner` and `DocumentAuthor` pull from the source document.","type":"string","enum":["ChecklistInitiator","FormField","DocumentOwner","DocumentAuthor"]},"sourceWidgetId":{"title":"EntityID","description":"For `sourceType=FormField`: the ID of the Members form field whose value drives the rule's assignees at runtime. Absent for `sourceType=ChecklistInitiator`.","type":"string"},"type":{"description":"Discriminator value for this variant. See the parent oneOf for the full set of values.","type":"string","const":"Dynamic"}}},{"title":"StaticAssignmentRuleRequest","type":"object","required":["email","type"],"properties":{"email":{"description":"Email address.","type":"string"},"type":{"description":"Discriminator value for this variant. See the parent oneOf for the full set of values.","type":"string","const":"Static"}}}],"required":["type"],"discriminator":{"propertyName":"type","mapping":{"Dynamic":"#/components/schemas/DynamicAssignmentRuleRequest","Static":"#/components/schemas/StaticAssignmentRuleRequest"}}},"UpdateTaskDueDateRuleRequest":{"title":"UpdateTaskDueDateRuleRequest","type":"object","properties":{"rule":{"title":"TaskDueDateRuleBody","description":"The rule to set; omit or send `null` to clear the existing rule.","type":"object","required":["sourceType","offsetDirection","dueOffset","businessDaysHandlingMode"],"properties":{"sourceType":{"description":"How the task's due date is derived. `ChecklistStartDate` / `ChecklistDueDate` — relative to the workflow run's start or due date. `TaskCompletedDate` / `TaskDueDate` — relative to a specific source task (requires `sourceTaskId`). `PreviousTaskCompletedDate` — relative to the task immediately before this one. `FormFieldValue` — relative to a Date form field value (requires `sourceWidgetId`).","type":"string","enum":["FormFieldValue","TaskCompletedDate","PreviousTaskCompletedDate","TaskDueDate","ChecklistStartDate","ChecklistDueDate"]},"sourceWidgetId":{"title":"EntityID","description":"For `sourceType=FormField`: the ID of the Members form field whose value drives the rule's assignees at runtime. Absent for `sourceType=ChecklistInitiator`.","type":"string"},"sourceTaskId":{"title":"EntityID","type":"string"},"offsetDirection":{"description":"Whether the offset applies before or after the source date.","type":"string","enum":["Before","After"]},"dueOffset":{"description":"ISO-8601 duration (e.g. `P7D`, `PT4H30M`). Weeks are stored as days, so `P2W` reads back as `P14D`, and with `BusinessDaysOnly` each of those days is a business day.","type":"string"},"businessDaysHandlingMode":{"title":"BusinessDaysHandlingMode","description":"How non-business days are handled when calculating the due date. `AllDays` counts every day. `BusinessDaysOnly` counts only Monday–Friday. `ShiftToNextBusinessDay` calculates using all days then moves a Saturday/Sunday result to the next Monday.","type":"string","enum":["AllDays","BusinessDaysOnly","ShiftToNextBusinessDay"]}}}}},"UpdateTaskPermissionRuleRequest":{"title":"UpdateTaskPermissionRuleRequest","oneOf":[{"title":"DynamicPermissionRuleRequest","type":"object","required":["sourceType","taskRead","taskUpdate","type"],"properties":{"sourceType":{"title":"SourceType","description":"Where the user(s) that get task access are pulled from at runtime.\n\n- `ChecklistInitiator` — grants access to the user who started the workflow run.\n- `FormField` — grants access to users referenced by a form field on the run (`sourceWidgetId`\n  identifies which Members form field).\n","type":"string","enum":["ChecklistInitiator","FormField"]},"sourceWidgetId":{"title":"EntityID","description":"For `sourceType=FormField`: the ID of the Members form field whose value drives the rule's assignees at runtime. Absent for `sourceType=ChecklistInitiator`.","type":"string"},"taskRead":{"description":"When `true`, the rule grants read access to the task.","type":"boolean"},"taskUpdate":{"description":"When `true`, the rule grants update access to the task (check off, edit form fields).","type":"boolean"},"type":{"description":"Discriminator value for this variant. See the parent oneOf for the full set of values.","type":"string","const":"Dynamic"}}},{"title":"StaticPermissionRuleRequest","type":"object","required":["email","taskRead","taskUpdate","type"],"properties":{"email":{"description":"Email address.","type":"string"},"taskRead":{"description":"When `true`, the rule grants read access to the task.","type":"boolean"},"taskUpdate":{"description":"When `true`, the rule grants update access to the task (check off, edit form fields).","type":"boolean"},"type":{"description":"Discriminator value for this variant. See the parent oneOf for the full set of values.","type":"string","const":"Static"}}}],"required":["type"],"discriminator":{"propertyName":"type","mapping":{"Dynamic":"#/components/schemas/DynamicPermissionRuleRequest","Static":"#/components/schemas/StaticPermissionRuleRequest"}}},"UpdateTaskRequest":{"title":"UpdateTaskRequest","type":"object","required":["status"],"properties":{"status":{"description":"Whether the task is complete.\n\n- `NotCompleted` — the task has not yet been checked off.\n- `Completed` — the task has been checked off.\n","type":"string","enum":["NotCompleted","Completed"]},"dueDate":{"description":"Due date. ISO-8601 UTC.","type":"string","format":"date-time"}}},"UpdateTextFormFieldRequest":{"title":"UpdateTextFormFieldRequest","type":"object","required":["hiddenByDefault","required","config","constraints","type","fieldType"],"properties":{"hiddenByDefault":{"description":"When `true`, the widget is hidden by default; conditional logic rules can reveal it at runtime. Defaults to `false`.","type":"boolean"},"position":{"title":"WidgetPosition","description":"Where to place this widget on the task. `Top` — before all existing widgets. `Bottom` — after all existing widgets (default when `position` is omitted). `After` — immediately after the widget identified by `widgetId`.","oneOf":[{"title":"WidgetPositionAfter","type":"object","required":["widgetId","type"],"properties":{"widgetId":{"title":"EntityID","description":"The ID of the widget.","type":"string"},"type":{"description":"Discriminator value for this variant. See the parent oneOf for the full set of values.","type":"string","const":"After"}}},{"title":"WidgetPositionBottom","type":"object","required":["type"],"properties":{"type":{"description":"Discriminator value for this variant. See the parent oneOf for the full set of values.","type":"string","const":"Bottom"}}},{"title":"WidgetPositionTop","type":"object","required":["type"],"properties":{"type":{"description":"Discriminator value for this variant. See the parent oneOf for the full set of values.","type":"string","const":"Top"}}}],"required":["type"],"discriminator":{"propertyName":"type","mapping":{"After":"#/components/schemas/WidgetPositionAfter","Bottom":"#/components/schemas/WidgetPositionBottom","Top":"#/components/schemas/WidgetPositionTop"}}},"label":{"description":"Display label shown to the end user.","type":"string","maxLength":255},"required":{"description":"When `true`, the form field must have a value before its task can be completed.","type":"boolean"},"config":{"title":"PublicApiTextFormFieldConfig","description":"Field-specific configuration. Shape depends on `fieldType`.","type":"object","properties":{"placeholder":{"description":"Placeholder hint shown in the input when no value has been entered.","type":"string"},"defaultValue":{"description":"Default value pre-filled when a new workflow run is created.","type":"string"}}},"constraints":{"title":"PublicApiTextFormFieldConstraints","description":"Field-specific validation constraints. Shape depends on `fieldType`.","type":"object","properties":{"min":{"description":"Inclusive lower bound.","type":"integer","format":"int32"},"max":{"description":"Inclusive upper bound.","type":"integer","format":"int32"}}},"type":{"description":"Discriminator value for this variant. See the parent oneOf for the full set of values.","examples":["FormField"],"type":"string","enum":["FormField"]},"fieldType":{"description":"Form-field subtype discriminator (only relevant when widget `type` is `FormField`).\n\n- `Text` — short text input (≤255 characters).\n- `Textarea` — long-form text.\n- `Email` — email address.\n- `Url` — website / URL.\n- `Number` — numeric input with optional unit and constraints.\n- `Date` — date or date+time picker.\n- `Select` — dropdown; user picks one option.\n- `MultiChoice` — checkboxes; user picks one or more options.\n- `MultiSelect` — Subtasks: a checklist of sub-items inside the task.\n- `Members` — assignee picker (selects organization users).\n- `File` — single file upload.\n- `MultiFile` — multi-file upload (in-app \"File Upload\").\n- `Document` — document approval field; links the task to a document review.\n- `Table` — rows × columns of cells; users fill cell values.\n- `SendRichEmail` — pre-written email embedded in the task; sent manually by the user or\n  automatically when the task is completed.\n- `Hidden` — only visible when editing the workflow; populated by integrations or default values.\n- `Snippet` — only visible when editing; passes static text or merge tags into automations.\n","type":"string","enum":["Date","Document","Email","File","Hidden","Members","MultiChoice","MultiFile","MultiSelect","Number","Select","SendRichEmail","Snippet","Table","Text","Textarea","Url"],"const":"Text"}}},"UpdateTextareaFormFieldRequest":{"title":"UpdateTextareaFormFieldRequest","type":"object","required":["hiddenByDefault","required","config","constraints","type","fieldType"],"properties":{"hiddenByDefault":{"description":"When `true`, the widget is hidden by default; conditional logic rules can reveal it at runtime. Defaults to `false`.","type":"boolean"},"position":{"title":"WidgetPosition","description":"Where to place this widget on the task. `Top` — before all existing widgets. `Bottom` — after all existing widgets (default when `position` is omitted). `After` — immediately after the widget identified by `widgetId`.","oneOf":[{"title":"WidgetPositionAfter","type":"object","required":["widgetId","type"],"properties":{"widgetId":{"title":"EntityID","description":"The ID of the widget.","type":"string"},"type":{"description":"Discriminator value for this variant. See the parent oneOf for the full set of values.","type":"string","const":"After"}}},{"title":"WidgetPositionBottom","type":"object","required":["type"],"properties":{"type":{"description":"Discriminator value for this variant. See the parent oneOf for the full set of values.","type":"string","const":"Bottom"}}},{"title":"WidgetPositionTop","type":"object","required":["type"],"properties":{"type":{"description":"Discriminator value for this variant. See the parent oneOf for the full set of values.","type":"string","const":"Top"}}}],"required":["type"],"discriminator":{"propertyName":"type","mapping":{"After":"#/components/schemas/WidgetPositionAfter","Bottom":"#/components/schemas/WidgetPositionBottom","Top":"#/components/schemas/WidgetPositionTop"}}},"label":{"description":"Display label shown to the end user.","type":"string","maxLength":255},"required":{"description":"When `true`, the form field must have a value before its task can be completed.","type":"boolean"},"config":{"title":"PublicApiTextareaFormFieldConfig","description":"Field-specific configuration. Shape depends on `fieldType`.","type":"object","properties":{"placeholder":{"description":"Placeholder hint shown in the input when no value has been entered.","type":"string"},"defaultValue":{"description":"Default value pre-filled when a new workflow run is created.","type":"string"},"format":{"description":"Editor style for this Textarea field.\n\n- `PlainText` — plain text.\n- `RichText` — rich-text editor with formatting (bold, lists, links, etc.).\n","type":"string","enum":["PlainText","RichText"]}}},"constraints":{"title":"PublicApiTextareaFormFieldConstraints","description":"Field-specific validation constraints. Shape depends on `fieldType`.","type":"object","properties":{"min":{"description":"Inclusive lower bound.","type":"integer","format":"int32"},"max":{"description":"Inclusive upper bound.","type":"integer","format":"int32"}}},"type":{"description":"Discriminator value for this variant. See the parent oneOf for the full set of values.","examples":["FormField"],"type":"string","enum":["FormField"]},"fieldType":{"description":"Form-field subtype discriminator (only relevant when widget `type` is `FormField`).\n\n- `Text` — short text input (≤255 characters).\n- `Textarea` — long-form text.\n- `Email` — email address.\n- `Url` — website / URL.\n- `Number` — numeric input with optional unit and constraints.\n- `Date` — date or date+time picker.\n- `Select` — dropdown; user picks one option.\n- `MultiChoice` — checkboxes; user picks one or more options.\n- `MultiSelect` — Subtasks: a checklist of sub-items inside the task.\n- `Members` — assignee picker (selects organization users).\n- `File` — single file upload.\n- `MultiFile` — multi-file upload (in-app \"File Upload\").\n- `Document` — document approval field; links the task to a document review.\n- `Table` — rows × columns of cells; users fill cell values.\n- `SendRichEmail` — pre-written email embedded in the task; sent manually by the user or\n  automatically when the task is completed.\n- `Hidden` — only visible when editing the workflow; populated by integrations or default values.\n- `Snippet` — only visible when editing; passes static text or merge tags into automations.\n","type":"string","enum":["Date","Document","Email","File","Hidden","Members","MultiChoice","MultiFile","MultiSelect","Number","Select","SendRichEmail","Snippet","Table","Text","Textarea","Url"],"const":"Textarea"}}},"UpdateUrlFormFieldRequest":{"title":"UpdateUrlFormFieldRequest","type":"object","required":["hiddenByDefault","required","config","type","fieldType"],"properties":{"hiddenByDefault":{"description":"When `true`, the widget is hidden by default; conditional logic rules can reveal it at runtime. Defaults to `false`.","type":"boolean"},"position":{"title":"WidgetPosition","description":"Where to place this widget on the task. `Top` — before all existing widgets. `Bottom` — after all existing widgets (default when `position` is omitted). `After` — immediately after the widget identified by `widgetId`.","oneOf":[{"title":"WidgetPositionAfter","type":"object","required":["widgetId","type"],"properties":{"widgetId":{"title":"EntityID","description":"The ID of the widget.","type":"string"},"type":{"description":"Discriminator value for this variant. See the parent oneOf for the full set of values.","type":"string","const":"After"}}},{"title":"WidgetPositionBottom","type":"object","required":["type"],"properties":{"type":{"description":"Discriminator value for this variant. See the parent oneOf for the full set of values.","type":"string","const":"Bottom"}}},{"title":"WidgetPositionTop","type":"object","required":["type"],"properties":{"type":{"description":"Discriminator value for this variant. See the parent oneOf for the full set of values.","type":"string","const":"Top"}}}],"required":["type"],"discriminator":{"propertyName":"type","mapping":{"After":"#/components/schemas/WidgetPositionAfter","Bottom":"#/components/schemas/WidgetPositionBottom","Top":"#/components/schemas/WidgetPositionTop"}}},"label":{"description":"Display label shown to the end user.","type":"string","maxLength":255},"required":{"description":"When `true`, the form field must have a value before its task can be completed.","type":"boolean"},"config":{"title":"PublicApiUrlFormFieldConfig","description":"Field-specific configuration. Shape depends on `fieldType`.","type":"object","properties":{"defaultValue":{"description":"Default value pre-filled when a new workflow run is created.","type":"string"}}},"type":{"description":"Discriminator value for this variant. See the parent oneOf for the full set of values.","examples":["FormField"],"type":"string","enum":["FormField"]},"fieldType":{"description":"Form-field subtype discriminator (only relevant when widget `type` is `FormField`).\n\n- `Text` — short text input (≤255 characters).\n- `Textarea` — long-form text.\n- `Email` — email address.\n- `Url` — website / URL.\n- `Number` — numeric input with optional unit and constraints.\n- `Date` — date or date+time picker.\n- `Select` — dropdown; user picks one option.\n- `MultiChoice` — checkboxes; user picks one or more options.\n- `MultiSelect` — Subtasks: a checklist of sub-items inside the task.\n- `Members` — assignee picker (selects organization users).\n- `File` — single file upload.\n- `MultiFile` — multi-file upload (in-app \"File Upload\").\n- `Document` — document approval field; links the task to a document review.\n- `Table` — rows × columns of cells; users fill cell values.\n- `SendRichEmail` — pre-written email embedded in the task; sent manually by the user or\n  automatically when the task is completed.\n- `Hidden` — only visible when editing the workflow; populated by integrations or default values.\n- `Snippet` — only visible when editing; passes static text or merge tags into automations.\n","type":"string","enum":["Date","Document","Email","File","Hidden","Members","MultiChoice","MultiFile","MultiSelect","Number","Select","SendRichEmail","Snippet","Table","Text","Textarea","Url"],"const":"Url"}}},"UpdateWebhookRequest":{"title":"UpdateWebhookRequest","type":"object","required":["url"],"properties":{"url":{"description":"Target URL.","type":"string"},"triggers":{"type":"array","uniqueItems":true,"items":{"description":"Event that fires the outgoing webhook.\n\n- `TaskChecked` — a task is marked complete.\n- `TaskUnchecked` — a task is marked incomplete after having been completed.\n- `TaskCheckedUnchecked` — fires for either of the above (single subscription for both).\n- `TaskReady` — all prerequisite tasks/stop tasks are clear and this task becomes actionable.\n- `WorkflowRunCreated` — a new workflow run is created.\n- `WorkflowRunCompleted` — all tasks on a run are complete.\n","type":"string","enum":["TaskChecked","TaskUnchecked","TaskCheckedUnchecked","TaskReady","WorkflowRunCreated","WorkflowRunCompleted"]}},"workflowId":{"title":"EntityID","description":"The ID of the Workflow.","type":"string"},"taskId":{"title":"EntityID","description":"The ID of the Task.","type":"string"}}},"UpdateWidgetRequest":{"title":"UpdateWidgetRequest","description":"Update payload for a workflow widget. The `type` discriminator selects the widget kind — `FormField` (further discriminated by `fieldType`), `Text`, `Image`, `File`, `Video`, `Embed`, or `CrossLink`.","oneOf":[{"title":"UpdateFormFieldWidgetRequest","description":"Update payload for a form field widget. The `fieldType` discriminator selects the variant — see `fieldType` for what each value collects.","oneOf":[{"title":"UpdateDateFormFieldRequest","type":"object","required":["hiddenByDefault","required","config","constraints","type","fieldType"],"properties":{"hiddenByDefault":{"description":"When `true`, the widget is hidden by default; conditional logic rules can reveal it at runtime. Defaults to `false`.","type":"boolean"},"position":{"title":"WidgetPosition","description":"Where to place this widget on the task. `Top` — before all existing widgets. `Bottom` — after all existing widgets (default when `position` is omitted). `After` — immediately after the widget identified by `widgetId`.","oneOf":[{"title":"WidgetPositionAfter","type":"object","required":["widgetId","type"],"properties":{"widgetId":{"title":"EntityID","description":"The ID of the widget.","type":"string"},"type":{"description":"Discriminator value for this variant. See the parent oneOf for the full set of values.","type":"string","const":"After"}}},{"title":"WidgetPositionBottom","type":"object","required":["type"],"properties":{"type":{"description":"Discriminator value for this variant. See the parent oneOf for the full set of values.","type":"string","const":"Bottom"}}},{"title":"WidgetPositionTop","type":"object","required":["type"],"properties":{"type":{"description":"Discriminator value for this variant. See the parent oneOf for the full set of values.","type":"string","const":"Top"}}}],"required":["type"],"discriminator":{"propertyName":"type","mapping":{"After":"#/components/schemas/WidgetPositionAfter","Bottom":"#/components/schemas/WidgetPositionBottom","Top":"#/components/schemas/WidgetPositionTop"}}},"label":{"description":"Display label shown to the end user.","type":"string","maxLength":255},"required":{"description":"When `true`, the form field must have a value before its task can be completed.","type":"boolean"},"config":{"title":"PublicApiDateFormFieldConfig","description":"Field-specific configuration. Shape depends on `fieldType`.","type":"object","properties":{"defaultValue":{"description":"Default value pre-filled when a new workflow run is created.","type":"string"},"timeOption":{"description":"How time-of-day is handled on this Date field.\n\n- `Included` — the field always captures both date and time.\n- `Excluded` — date only; time is never captured.\n- `Optional` — the user picks whether to include a time.\n","type":"string","enum":["Included","Excluded","Optional"]}}},"constraints":{"title":"PublicApiDateFormFieldConstraints","description":"Field-specific validation constraints. Shape depends on `fieldType`.","type":"object","properties":{"afterDate":{"description":"Earliest accepted date (inclusive). Pair with `afterDateSourceType`.","type":"string","format":"date-time"},"beforeDate":{"description":"Latest accepted date (inclusive). Pair with `beforeDateSourceType`.","type":"string","format":"date-time"},"afterDateFormFieldWidgetGroupId":{"title":"EntityID","description":"When `afterDateSourceType=FormField`, the ID of the Date form field whose value is the lower bound.","type":"string"},"beforeDateFormFieldWidgetGroupId":{"title":"EntityID","description":"When `beforeDateSourceType=FormField`, the ID of the Date form field whose value is the upper bound.","type":"string"},"afterDateSourceType":{"description":"How the before/after constraint date is derived.\n\n- `SpecificDate` — an absolute date supplied as `afterDate` / `beforeDate`.\n- `FormFieldValue` — derived from another Date form field (`afterDateField` / `beforeDateField`).\n- `TaskDueDate` — relative to the containing task's due date.\n- `ChecklistStartDate` / `ChecklistDueDate` — relative to the workflow run's start or due date.\n","type":"string","enum":["SpecificDate","FormFieldValue","TaskDueDate","ChecklistStartDate","ChecklistDueDate"]},"beforeDateSourceType":{"description":"How the before/after constraint date is derived.\n\n- `SpecificDate` — an absolute date supplied as `afterDate` / `beforeDate`.\n- `FormFieldValue` — derived from another Date form field (`afterDateField` / `beforeDateField`).\n- `TaskDueDate` — relative to the containing task's due date.\n- `ChecklistStartDate` / `ChecklistDueDate` — relative to the workflow run's start or due date.\n","type":"string","enum":["SpecificDate","FormFieldValue","TaskDueDate","ChecklistStartDate","ChecklistDueDate"]},"afterDateOffset":{"description":"ISO 8601 duration (e.g. `P7D`, `P1Y2M`).","type":"string"},"beforeDateOffset":{"description":"ISO 8601 duration (e.g. `P7D`, `P1Y2M`).","type":"string"}}},"type":{"description":"Discriminator value for this variant. See the parent oneOf for the full set of values.","examples":["FormField"],"type":"string","enum":["FormField"]},"fieldType":{"description":"Form-field subtype discriminator (only relevant when widget `type` is `FormField`).\n\n- `Text` — short text input (≤255 characters).\n- `Textarea` — long-form text.\n- `Email` — email address.\n- `Url` — website / URL.\n- `Number` — numeric input with optional unit and constraints.\n- `Date` — date or date+time picker.\n- `Select` — dropdown; user picks one option.\n- `MultiChoice` — checkboxes; user picks one or more options.\n- `MultiSelect` — Subtasks: a checklist of sub-items inside the task.\n- `Members` — assignee picker (selects organization users).\n- `File` — single file upload.\n- `MultiFile` — multi-file upload (in-app \"File Upload\").\n- `Document` — document approval field; links the task to a document review.\n- `Table` — rows × columns of cells; users fill cell values.\n- `SendRichEmail` — pre-written email embedded in the task; sent manually by the user or\n  automatically when the task is completed.\n- `Hidden` — only visible when editing the workflow; populated by integrations or default values.\n- `Snippet` — only visible when editing; passes static text or merge tags into automations.\n","type":"string","enum":["Date","Document","Email","File","Hidden","Members","MultiChoice","MultiFile","MultiSelect","Number","Select","SendRichEmail","Snippet","Table","Text","Textarea","Url"],"const":"Date"}}},{"title":"UpdateDocumentFormFieldRequest","type":"object","required":["hiddenByDefault","required","config","type","fieldType"],"properties":{"hiddenByDefault":{"description":"When `true`, the widget is hidden by default; conditional logic rules can reveal it at runtime. Defaults to `false`.","type":"boolean"},"position":{"title":"WidgetPosition","description":"Where to place this widget on the task. `Top` — before all existing widgets. `Bottom` — after all existing widgets (default when `position` is omitted). `After` — immediately after the widget identified by `widgetId`.","oneOf":[{"title":"WidgetPositionAfter","type":"object","required":["widgetId","type"],"properties":{"widgetId":{"title":"EntityID","description":"The ID of the widget.","type":"string"},"type":{"description":"Discriminator value for this variant. See the parent oneOf for the full set of values.","type":"string","const":"After"}}},{"title":"WidgetPositionBottom","type":"object","required":["type"],"properties":{"type":{"description":"Discriminator value for this variant. See the parent oneOf for the full set of values.","type":"string","const":"Bottom"}}},{"title":"WidgetPositionTop","type":"object","required":["type"],"properties":{"type":{"description":"Discriminator value for this variant. See the parent oneOf for the full set of values.","type":"string","const":"Top"}}}],"required":["type"],"discriminator":{"propertyName":"type","mapping":{"After":"#/components/schemas/WidgetPositionAfter","Bottom":"#/components/schemas/WidgetPositionBottom","Top":"#/components/schemas/WidgetPositionTop"}}},"label":{"description":"Display label shown to the end user.","type":"string","maxLength":255},"required":{"description":"When `true`, the form field must have a value before its task can be completed.","type":"boolean"},"config":{"title":"PublicApiDocumentFormFieldConfig","description":"Field-specific configuration. Shape depends on `fieldType`.","type":"object","required":["reviewRequest"],"properties":{"reviewRequest":{"description":"When `true`, the email requires explicit user review/send rather than auto-send.","type":"boolean"},"defaultValue":{"description":"Default value pre-filled when a new workflow run is created.","type":"string"}}},"type":{"description":"Discriminator value for this variant. See the parent oneOf for the full set of values.","examples":["FormField"],"type":"string","enum":["FormField"]},"fieldType":{"description":"Form-field subtype discriminator (only relevant when widget `type` is `FormField`).\n\n- `Text` — short text input (≤255 characters).\n- `Textarea` — long-form text.\n- `Email` — email address.\n- `Url` — website / URL.\n- `Number` — numeric input with optional unit and constraints.\n- `Date` — date or date+time picker.\n- `Select` — dropdown; user picks one option.\n- `MultiChoice` — checkboxes; user picks one or more options.\n- `MultiSelect` — Subtasks: a checklist of sub-items inside the task.\n- `Members` — assignee picker (selects organization users).\n- `File` — single file upload.\n- `MultiFile` — multi-file upload (in-app \"File Upload\").\n- `Document` — document approval field; links the task to a document review.\n- `Table` — rows × columns of cells; users fill cell values.\n- `SendRichEmail` — pre-written email embedded in the task; sent manually by the user or\n  automatically when the task is completed.\n- `Hidden` — only visible when editing the workflow; populated by integrations or default values.\n- `Snippet` — only visible when editing; passes static text or merge tags into automations.\n","type":"string","enum":["Date","Document","Email","File","Hidden","Members","MultiChoice","MultiFile","MultiSelect","Number","Select","SendRichEmail","Snippet","Table","Text","Textarea","Url"],"const":"Document"}}},{"title":"UpdateEmailFormFieldRequest","type":"object","required":["hiddenByDefault","required","config","constraints","type","fieldType"],"properties":{"hiddenByDefault":{"description":"When `true`, the widget is hidden by default; conditional logic rules can reveal it at runtime. Defaults to `false`.","type":"boolean"},"position":{"title":"WidgetPosition","description":"Where to place this widget on the task. `Top` — before all existing widgets. `Bottom` — after all existing widgets (default when `position` is omitted). `After` — immediately after the widget identified by `widgetId`.","oneOf":[{"title":"WidgetPositionAfter","type":"object","required":["widgetId","type"],"properties":{"widgetId":{"title":"EntityID","description":"The ID of the widget.","type":"string"},"type":{"description":"Discriminator value for this variant. See the parent oneOf for the full set of values.","type":"string","const":"After"}}},{"title":"WidgetPositionBottom","type":"object","required":["type"],"properties":{"type":{"description":"Discriminator value for this variant. See the parent oneOf for the full set of values.","type":"string","const":"Bottom"}}},{"title":"WidgetPositionTop","type":"object","required":["type"],"properties":{"type":{"description":"Discriminator value for this variant. See the parent oneOf for the full set of values.","type":"string","const":"Top"}}}],"required":["type"],"discriminator":{"propertyName":"type","mapping":{"After":"#/components/schemas/WidgetPositionAfter","Bottom":"#/components/schemas/WidgetPositionBottom","Top":"#/components/schemas/WidgetPositionTop"}}},"label":{"description":"Display label shown to the end user.","type":"string","maxLength":255},"required":{"description":"When `true`, the form field must have a value before its task can be completed.","type":"boolean"},"config":{"title":"PublicApiEmailFormFieldConfig","description":"Field-specific configuration. Shape depends on `fieldType`.","type":"object","properties":{"placeholder":{"description":"Placeholder hint shown in the input when no value has been entered.","type":"string"},"defaultValue":{"description":"Default value pre-filled when a new workflow run is created.","type":"string"}}},"constraints":{"title":"PublicApiEmailFormFieldConstraints","description":"Field-specific validation constraints. Shape depends on `fieldType`.","type":"object","properties":{"domains":{"description":"Allowed (or blocked, depending on `restriction`) email domains for this field.","type":"array","items":{"type":"string"}},"restriction":{"description":"How the `domains` list filters allowed email addresses.\n\n- `Allow` — only emails whose domain is in the list are accepted.\n- `Block` — emails whose domain is in the list are rejected; all others accepted.\n","type":"string","enum":["Allow","Block"]}}},"type":{"description":"Discriminator value for this variant. See the parent oneOf for the full set of values.","examples":["FormField"],"type":"string","enum":["FormField"]},"fieldType":{"description":"Form-field subtype discriminator (only relevant when widget `type` is `FormField`).\n\n- `Text` — short text input (≤255 characters).\n- `Textarea` — long-form text.\n- `Email` — email address.\n- `Url` — website / URL.\n- `Number` — numeric input with optional unit and constraints.\n- `Date` — date or date+time picker.\n- `Select` — dropdown; user picks one option.\n- `MultiChoice` — checkboxes; user picks one or more options.\n- `MultiSelect` — Subtasks: a checklist of sub-items inside the task.\n- `Members` — assignee picker (selects organization users).\n- `File` — single file upload.\n- `MultiFile` — multi-file upload (in-app \"File Upload\").\n- `Document` — document approval field; links the task to a document review.\n- `Table` — rows × columns of cells; users fill cell values.\n- `SendRichEmail` — pre-written email embedded in the task; sent manually by the user or\n  automatically when the task is completed.\n- `Hidden` — only visible when editing the workflow; populated by integrations or default values.\n- `Snippet` — only visible when editing; passes static text or merge tags into automations.\n","type":"string","enum":["Date","Document","Email","File","Hidden","Members","MultiChoice","MultiFile","MultiSelect","Number","Select","SendRichEmail","Snippet","Table","Text","Textarea","Url"],"const":"Email"}}},{"title":"UpdateFileFormFieldRequest","type":"object","required":["hiddenByDefault","required","config","constraints","type","fieldType"],"properties":{"hiddenByDefault":{"description":"When `true`, the widget is hidden by default; conditional logic rules can reveal it at runtime. Defaults to `false`.","type":"boolean"},"position":{"title":"WidgetPosition","description":"Where to place this widget on the task. `Top` — before all existing widgets. `Bottom` — after all existing widgets (default when `position` is omitted). `After` — immediately after the widget identified by `widgetId`.","oneOf":[{"title":"WidgetPositionAfter","type":"object","required":["widgetId","type"],"properties":{"widgetId":{"title":"EntityID","description":"The ID of the widget.","type":"string"},"type":{"description":"Discriminator value for this variant. See the parent oneOf for the full set of values.","type":"string","const":"After"}}},{"title":"WidgetPositionBottom","type":"object","required":["type"],"properties":{"type":{"description":"Discriminator value for this variant. See the parent oneOf for the full set of values.","type":"string","const":"Bottom"}}},{"title":"WidgetPositionTop","type":"object","required":["type"],"properties":{"type":{"description":"Discriminator value for this variant. See the parent oneOf for the full set of values.","type":"string","const":"Top"}}}],"required":["type"],"discriminator":{"propertyName":"type","mapping":{"After":"#/components/schemas/WidgetPositionAfter","Bottom":"#/components/schemas/WidgetPositionBottom","Top":"#/components/schemas/WidgetPositionTop"}}},"label":{"description":"Display label shown to the end user.","type":"string","maxLength":255},"required":{"description":"When `true`, the form field must have a value before its task can be completed.","type":"boolean"},"config":{"title":"PublicApiFileFormFieldConfig","description":"Field-specific configuration. Shape depends on `fieldType`.","type":"object","properties":{"placeholder":{"description":"Placeholder hint shown in the input when no value has been entered.","type":"string"},"extractTextContent":{"description":"When `true`, server extracts text from uploaded documents for use in merge tags.","type":"boolean"}}},"constraints":{"title":"PublicApiFileFormFieldConstraints","description":"Field-specific validation constraints. Shape depends on `fieldType`.","type":"object","properties":{"extensions":{"description":"Allowed file extensions, including the leading dot (e.g. `.pdf`, `.docx`).","type":"array","items":{"type":"string"}}}},"type":{"description":"Discriminator value for this variant. See the parent oneOf for the full set of values.","examples":["FormField"],"type":"string","enum":["FormField"]},"fieldType":{"description":"Form-field subtype discriminator (only relevant when widget `type` is `FormField`).\n\n- `Text` — short text input (≤255 characters).\n- `Textarea` — long-form text.\n- `Email` — email address.\n- `Url` — website / URL.\n- `Number` — numeric input with optional unit and constraints.\n- `Date` — date or date+time picker.\n- `Select` — dropdown; user picks one option.\n- `MultiChoice` — checkboxes; user picks one or more options.\n- `MultiSelect` — Subtasks: a checklist of sub-items inside the task.\n- `Members` — assignee picker (selects organization users).\n- `File` — single file upload.\n- `MultiFile` — multi-file upload (in-app \"File Upload\").\n- `Document` — document approval field; links the task to a document review.\n- `Table` — rows × columns of cells; users fill cell values.\n- `SendRichEmail` — pre-written email embedded in the task; sent manually by the user or\n  automatically when the task is completed.\n- `Hidden` — only visible when editing the workflow; populated by integrations or default values.\n- `Snippet` — only visible when editing; passes static text or merge tags into automations.\n","type":"string","enum":["Date","Document","Email","File","Hidden","Members","MultiChoice","MultiFile","MultiSelect","Number","Select","SendRichEmail","Snippet","Table","Text","Textarea","Url"],"const":"File"}}},{"title":"UpdateHiddenFormFieldRequest","type":"object","required":["hiddenByDefault","required","config","type","fieldType"],"properties":{"hiddenByDefault":{"description":"When `true`, the widget is hidden by default; conditional logic rules can reveal it at runtime. Defaults to `false`.","type":"boolean"},"position":{"title":"WidgetPosition","description":"Where to place this widget on the task. `Top` — before all existing widgets. `Bottom` — after all existing widgets (default when `position` is omitted). `After` — immediately after the widget identified by `widgetId`.","oneOf":[{"title":"WidgetPositionAfter","type":"object","required":["widgetId","type"],"properties":{"widgetId":{"title":"EntityID","description":"The ID of the widget.","type":"string"},"type":{"description":"Discriminator value for this variant. See the parent oneOf for the full set of values.","type":"string","const":"After"}}},{"title":"WidgetPositionBottom","type":"object","required":["type"],"properties":{"type":{"description":"Discriminator value for this variant. See the parent oneOf for the full set of values.","type":"string","const":"Bottom"}}},{"title":"WidgetPositionTop","type":"object","required":["type"],"properties":{"type":{"description":"Discriminator value for this variant. See the parent oneOf for the full set of values.","type":"string","const":"Top"}}}],"required":["type"],"discriminator":{"propertyName":"type","mapping":{"After":"#/components/schemas/WidgetPositionAfter","Bottom":"#/components/schemas/WidgetPositionBottom","Top":"#/components/schemas/WidgetPositionTop"}}},"label":{"description":"Display label shown to the end user.","type":"string","maxLength":255},"required":{"description":"When `true`, the form field must have a value before its task can be completed.","type":"boolean"},"config":{"title":"PublicApiHiddenFormFieldConfig","description":"Field-specific configuration. Shape depends on `fieldType`.","type":"object","properties":{"defaultValue":{"description":"Default value pre-filled when a new workflow run is created.","type":"string"}}},"type":{"description":"Discriminator value for this variant. See the parent oneOf for the full set of values.","examples":["FormField"],"type":"string","enum":["FormField"]},"fieldType":{"description":"Form-field subtype discriminator (only relevant when widget `type` is `FormField`).\n\n- `Text` — short text input (≤255 characters).\n- `Textarea` — long-form text.\n- `Email` — email address.\n- `Url` — website / URL.\n- `Number` — numeric input with optional unit and constraints.\n- `Date` — date or date+time picker.\n- `Select` — dropdown; user picks one option.\n- `MultiChoice` — checkboxes; user picks one or more options.\n- `MultiSelect` — Subtasks: a checklist of sub-items inside the task.\n- `Members` — assignee picker (selects organization users).\n- `File` — single file upload.\n- `MultiFile` — multi-file upload (in-app \"File Upload\").\n- `Document` — document approval field; links the task to a document review.\n- `Table` — rows × columns of cells; users fill cell values.\n- `SendRichEmail` — pre-written email embedded in the task; sent manually by the user or\n  automatically when the task is completed.\n- `Hidden` — only visible when editing the workflow; populated by integrations or default values.\n- `Snippet` — only visible when editing; passes static text or merge tags into automations.\n","type":"string","enum":["Date","Document","Email","File","Hidden","Members","MultiChoice","MultiFile","MultiSelect","Number","Select","SendRichEmail","Snippet","Table","Text","Textarea","Url"],"const":"Hidden"}}},{"title":"UpdateMembersFormFieldRequest","type":"object","required":["hiddenByDefault","required","config","type","fieldType"],"properties":{"hiddenByDefault":{"description":"When `true`, the widget is hidden by default; conditional logic rules can reveal it at runtime. Defaults to `false`.","type":"boolean"},"position":{"title":"WidgetPosition","description":"Where to place this widget on the task. `Top` — before all existing widgets. `Bottom` — after all existing widgets (default when `position` is omitted). `After` — immediately after the widget identified by `widgetId`.","oneOf":[{"title":"WidgetPositionAfter","type":"object","required":["widgetId","type"],"properties":{"widgetId":{"title":"EntityID","description":"The ID of the widget.","type":"string"},"type":{"description":"Discriminator value for this variant. See the parent oneOf for the full set of values.","type":"string","const":"After"}}},{"title":"WidgetPositionBottom","type":"object","required":["type"],"properties":{"type":{"description":"Discriminator value for this variant. See the parent oneOf for the full set of values.","type":"string","const":"Bottom"}}},{"title":"WidgetPositionTop","type":"object","required":["type"],"properties":{"type":{"description":"Discriminator value for this variant. See the parent oneOf for the full set of values.","type":"string","const":"Top"}}}],"required":["type"],"discriminator":{"propertyName":"type","mapping":{"After":"#/components/schemas/WidgetPositionAfter","Bottom":"#/components/schemas/WidgetPositionBottom","Top":"#/components/schemas/WidgetPositionTop"}}},"label":{"description":"Display label shown to the end user.","type":"string","maxLength":255},"required":{"description":"When `true`, the form field must have a value before its task can be completed.","type":"boolean"},"config":{"title":"PublicApiMembersFormFieldConfig","description":"Field-specific configuration. Shape depends on `fieldType`.","type":"object","properties":{"defaultValue":{"description":"Default value pre-filled when a new workflow run is created.","type":"string"},"groupId":{"title":"EntityID","description":"The ID of an organization group.","type":"string"}}},"type":{"description":"Discriminator value for this variant. See the parent oneOf for the full set of values.","examples":["FormField"],"type":"string","enum":["FormField"]},"fieldType":{"description":"Form-field subtype discriminator (only relevant when widget `type` is `FormField`).\n\n- `Text` — short text input (≤255 characters).\n- `Textarea` — long-form text.\n- `Email` — email address.\n- `Url` — website / URL.\n- `Number` — numeric input with optional unit and constraints.\n- `Date` — date or date+time picker.\n- `Select` — dropdown; user picks one option.\n- `MultiChoice` — checkboxes; user picks one or more options.\n- `MultiSelect` — Subtasks: a checklist of sub-items inside the task.\n- `Members` — assignee picker (selects organization users).\n- `File` — single file upload.\n- `MultiFile` — multi-file upload (in-app \"File Upload\").\n- `Document` — document approval field; links the task to a document review.\n- `Table` — rows × columns of cells; users fill cell values.\n- `SendRichEmail` — pre-written email embedded in the task; sent manually by the user or\n  automatically when the task is completed.\n- `Hidden` — only visible when editing the workflow; populated by integrations or default values.\n- `Snippet` — only visible when editing; passes static text or merge tags into automations.\n","type":"string","enum":["Date","Document","Email","File","Hidden","Members","MultiChoice","MultiFile","MultiSelect","Number","Select","SendRichEmail","Snippet","Table","Text","Textarea","Url"],"const":"Members"}}},{"title":"UpdateMultiChoiceFormFieldRequest","type":"object","required":["hiddenByDefault","required","config","type","fieldType"],"properties":{"hiddenByDefault":{"description":"When `true`, the widget is hidden by default; conditional logic rules can reveal it at runtime. Defaults to `false`.","type":"boolean"},"position":{"title":"WidgetPosition","description":"Where to place this widget on the task. `Top` — before all existing widgets. `Bottom` — after all existing widgets (default when `position` is omitted). `After` — immediately after the widget identified by `widgetId`.","oneOf":[{"title":"WidgetPositionAfter","type":"object","required":["widgetId","type"],"properties":{"widgetId":{"title":"EntityID","description":"The ID of the widget.","type":"string"},"type":{"description":"Discriminator value for this variant. See the parent oneOf for the full set of values.","type":"string","const":"After"}}},{"title":"WidgetPositionBottom","type":"object","required":["type"],"properties":{"type":{"description":"Discriminator value for this variant. See the parent oneOf for the full set of values.","type":"string","const":"Bottom"}}},{"title":"WidgetPositionTop","type":"object","required":["type"],"properties":{"type":{"description":"Discriminator value for this variant. See the parent oneOf for the full set of values.","type":"string","const":"Top"}}}],"required":["type"],"discriminator":{"propertyName":"type","mapping":{"After":"#/components/schemas/WidgetPositionAfter","Bottom":"#/components/schemas/WidgetPositionBottom","Top":"#/components/schemas/WidgetPositionTop"}}},"label":{"description":"Display label shown to the end user.","type":"string","maxLength":255},"required":{"description":"When `true`, the form field must have a value before its task can be completed.","type":"boolean"},"config":{"title":"PublicApiMultiChoiceFormFieldConfig","description":"Field-specific configuration. Shape depends on `fieldType`.","type":"object","properties":{"items":{"description":"Available options for selection-style form fields.","type":"array","items":{"title":"PublicApiFormFieldItem","type":"object","required":["name"],"properties":{"id":{"title":"EntityID","description":"The resource's ID.","type":"string"},"name":{"description":"Display name.","type":"string"}}}}}},"type":{"description":"Discriminator value for this variant. See the parent oneOf for the full set of values.","examples":["FormField"],"type":"string","enum":["FormField"]},"fieldType":{"description":"Form-field subtype discriminator (only relevant when widget `type` is `FormField`).\n\n- `Text` — short text input (≤255 characters).\n- `Textarea` — long-form text.\n- `Email` — email address.\n- `Url` — website / URL.\n- `Number` — numeric input with optional unit and constraints.\n- `Date` — date or date+time picker.\n- `Select` — dropdown; user picks one option.\n- `MultiChoice` — checkboxes; user picks one or more options.\n- `MultiSelect` — Subtasks: a checklist of sub-items inside the task.\n- `Members` — assignee picker (selects organization users).\n- `File` — single file upload.\n- `MultiFile` — multi-file upload (in-app \"File Upload\").\n- `Document` — document approval field; links the task to a document review.\n- `Table` — rows × columns of cells; users fill cell values.\n- `SendRichEmail` — pre-written email embedded in the task; sent manually by the user or\n  automatically when the task is completed.\n- `Hidden` — only visible when editing the workflow; populated by integrations or default values.\n- `Snippet` — only visible when editing; passes static text or merge tags into automations.\n","type":"string","enum":["Date","Document","Email","File","Hidden","Members","MultiChoice","MultiFile","MultiSelect","Number","Select","SendRichEmail","Snippet","Table","Text","Textarea","Url"],"const":"MultiChoice"}}},{"title":"UpdateMultiFileFormFieldRequest","type":"object","required":["hiddenByDefault","required","config","constraints","type","fieldType"],"properties":{"hiddenByDefault":{"description":"When `true`, the widget is hidden by default; conditional logic rules can reveal it at runtime. Defaults to `false`.","type":"boolean"},"position":{"title":"WidgetPosition","description":"Where to place this widget on the task. `Top` — before all existing widgets. `Bottom` — after all existing widgets (default when `position` is omitted). `After` — immediately after the widget identified by `widgetId`.","oneOf":[{"title":"WidgetPositionAfter","type":"object","required":["widgetId","type"],"properties":{"widgetId":{"title":"EntityID","description":"The ID of the widget.","type":"string"},"type":{"description":"Discriminator value for this variant. See the parent oneOf for the full set of values.","type":"string","const":"After"}}},{"title":"WidgetPositionBottom","type":"object","required":["type"],"properties":{"type":{"description":"Discriminator value for this variant. See the parent oneOf for the full set of values.","type":"string","const":"Bottom"}}},{"title":"WidgetPositionTop","type":"object","required":["type"],"properties":{"type":{"description":"Discriminator value for this variant. See the parent oneOf for the full set of values.","type":"string","const":"Top"}}}],"required":["type"],"discriminator":{"propertyName":"type","mapping":{"After":"#/components/schemas/WidgetPositionAfter","Bottom":"#/components/schemas/WidgetPositionBottom","Top":"#/components/schemas/WidgetPositionTop"}}},"label":{"description":"Display label shown to the end user.","type":"string","maxLength":255},"required":{"description":"When `true`, the form field must have a value before its task can be completed.","type":"boolean"},"config":{"title":"PublicApiMultiFileFormFieldConfig","description":"Field-specific configuration. Shape depends on `fieldType`.","type":"object","properties":{"placeholder":{"description":"Placeholder hint shown in the input when no value has been entered.","type":"string"},"extractTextContent":{"description":"When `true`, server extracts text from uploaded documents for use in merge tags.","type":"boolean"}}},"constraints":{"title":"PublicApiMultiFileFormFieldConstraints","description":"Field-specific validation constraints. Shape depends on `fieldType`.","type":"object","properties":{"extensions":{"description":"Allowed file extensions, including the leading dot (e.g. `.pdf`, `.docx`).","type":"array","items":{"type":"string"}},"mode":{"description":"Whether the field accepts a single file or multiple files.\n\n- `Single` — only one file may be uploaded.\n- `Multiple` — multiple files may be uploaded.\n","type":"string","enum":["Multiple","Single"]}}},"type":{"description":"Discriminator value for this variant. See the parent oneOf for the full set of values.","examples":["FormField"],"type":"string","enum":["FormField"]},"fieldType":{"description":"Form-field subtype discriminator (only relevant when widget `type` is `FormField`).\n\n- `Text` — short text input (≤255 characters).\n- `Textarea` — long-form text.\n- `Email` — email address.\n- `Url` — website / URL.\n- `Number` — numeric input with optional unit and constraints.\n- `Date` — date or date+time picker.\n- `Select` — dropdown; user picks one option.\n- `MultiChoice` — checkboxes; user picks one or more options.\n- `MultiSelect` — Subtasks: a checklist of sub-items inside the task.\n- `Members` — assignee picker (selects organization users).\n- `File` — single file upload.\n- `MultiFile` — multi-file upload (in-app \"File Upload\").\n- `Document` — document approval field; links the task to a document review.\n- `Table` — rows × columns of cells; users fill cell values.\n- `SendRichEmail` — pre-written email embedded in the task; sent manually by the user or\n  automatically when the task is completed.\n- `Hidden` — only visible when editing the workflow; populated by integrations or default values.\n- `Snippet` — only visible when editing; passes static text or merge tags into automations.\n","type":"string","enum":["Date","Document","Email","File","Hidden","Members","MultiChoice","MultiFile","MultiSelect","Number","Select","SendRichEmail","Snippet","Table","Text","Textarea","Url"],"const":"MultiFile"}}},{"title":"UpdateMultiSelectFormFieldRequest","type":"object","required":["hiddenByDefault","required","config","type","fieldType"],"properties":{"hiddenByDefault":{"description":"When `true`, the widget is hidden by default; conditional logic rules can reveal it at runtime. Defaults to `false`.","type":"boolean"},"position":{"title":"WidgetPosition","description":"Where to place this widget on the task. `Top` — before all existing widgets. `Bottom` — after all existing widgets (default when `position` is omitted). `After` — immediately after the widget identified by `widgetId`.","oneOf":[{"title":"WidgetPositionAfter","type":"object","required":["widgetId","type"],"properties":{"widgetId":{"title":"EntityID","description":"The ID of the widget.","type":"string"},"type":{"description":"Discriminator value for this variant. See the parent oneOf for the full set of values.","type":"string","const":"After"}}},{"title":"WidgetPositionBottom","type":"object","required":["type"],"properties":{"type":{"description":"Discriminator value for this variant. See the parent oneOf for the full set of values.","type":"string","const":"Bottom"}}},{"title":"WidgetPositionTop","type":"object","required":["type"],"properties":{"type":{"description":"Discriminator value for this variant. See the parent oneOf for the full set of values.","type":"string","const":"Top"}}}],"required":["type"],"discriminator":{"propertyName":"type","mapping":{"After":"#/components/schemas/WidgetPositionAfter","Bottom":"#/components/schemas/WidgetPositionBottom","Top":"#/components/schemas/WidgetPositionTop"}}},"label":{"description":"Display label shown to the end user.","type":"string","maxLength":255},"required":{"description":"When `true`, the form field must have a value before its task can be completed.","type":"boolean"},"config":{"title":"PublicApiMultiSelectFormFieldConfig","description":"Field-specific configuration. Shape depends on `fieldType`.","type":"object","properties":{"items":{"description":"Available options for selection-style form fields.","type":"array","items":{"title":"PublicApiFormFieldItem","type":"object","required":["name"],"properties":{"id":{"title":"EntityID","description":"The resource's ID.","type":"string"},"name":{"description":"Display name.","type":"string"}}}}}},"type":{"description":"Discriminator value for this variant. See the parent oneOf for the full set of values.","examples":["FormField"],"type":"string","enum":["FormField"]},"fieldType":{"description":"Form-field subtype discriminator (only relevant when widget `type` is `FormField`).\n\n- `Text` — short text input (≤255 characters).\n- `Textarea` — long-form text.\n- `Email` — email address.\n- `Url` — website / URL.\n- `Number` — numeric input with optional unit and constraints.\n- `Date` — date or date+time picker.\n- `Select` — dropdown; user picks one option.\n- `MultiChoice` — checkboxes; user picks one or more options.\n- `MultiSelect` — Subtasks: a checklist of sub-items inside the task.\n- `Members` — assignee picker (selects organization users).\n- `File` — single file upload.\n- `MultiFile` — multi-file upload (in-app \"File Upload\").\n- `Document` — document approval field; links the task to a document review.\n- `Table` — rows × columns of cells; users fill cell values.\n- `SendRichEmail` — pre-written email embedded in the task; sent manually by the user or\n  automatically when the task is completed.\n- `Hidden` — only visible when editing the workflow; populated by integrations or default values.\n- `Snippet` — only visible when editing; passes static text or merge tags into automations.\n","type":"string","enum":["Date","Document","Email","File","Hidden","Members","MultiChoice","MultiFile","MultiSelect","Number","Select","SendRichEmail","Snippet","Table","Text","Textarea","Url"],"const":"MultiSelect"}}},{"title":"UpdateNumberFormFieldRequest","type":"object","required":["hiddenByDefault","required","config","constraints","type","fieldType"],"properties":{"hiddenByDefault":{"description":"When `true`, the widget is hidden by default; conditional logic rules can reveal it at runtime. Defaults to `false`.","type":"boolean"},"position":{"title":"WidgetPosition","description":"Where to place this widget on the task. `Top` — before all existing widgets. `Bottom` — after all existing widgets (default when `position` is omitted). `After` — immediately after the widget identified by `widgetId`.","oneOf":[{"title":"WidgetPositionAfter","type":"object","required":["widgetId","type"],"properties":{"widgetId":{"title":"EntityID","description":"The ID of the widget.","type":"string"},"type":{"description":"Discriminator value for this variant. See the parent oneOf for the full set of values.","type":"string","const":"After"}}},{"title":"WidgetPositionBottom","type":"object","required":["type"],"properties":{"type":{"description":"Discriminator value for this variant. See the parent oneOf for the full set of values.","type":"string","const":"Bottom"}}},{"title":"WidgetPositionTop","type":"object","required":["type"],"properties":{"type":{"description":"Discriminator value for this variant. See the parent oneOf for the full set of values.","type":"string","const":"Top"}}}],"required":["type"],"discriminator":{"propertyName":"type","mapping":{"After":"#/components/schemas/WidgetPositionAfter","Bottom":"#/components/schemas/WidgetPositionBottom","Top":"#/components/schemas/WidgetPositionTop"}}},"label":{"description":"Display label shown to the end user.","type":"string","maxLength":255},"required":{"description":"When `true`, the form field must have a value before its task can be completed.","type":"boolean"},"config":{"title":"PublicApiNumberFormFieldConfig","description":"Field-specific configuration. Shape depends on `fieldType`.","type":"object","properties":{"placeholder":{"description":"Placeholder hint shown in the input when no value has been entered.","type":"string"},"defaultValue":{"description":"Default value pre-filled when a new workflow run is created.","type":"string"},"unit":{"description":"Unit label rendered next to the numeric value (e.g. `kg`, `$`, `%`).","type":"string"},"unitLocation":{"description":"Where the unit symbol appears relative to the number.\n\n- `prefix` — before the number (e.g. `$100`).\n- `suffix` — after the number (e.g. `100 USD`).\n","type":"string","enum":["prefix","suffix"]}}},"constraints":{"title":"PublicApiNumberFormFieldConstraints","description":"Field-specific validation constraints. Shape depends on `fieldType`.","type":"object","properties":{"minDigits":{"description":"Minimum number of digits.","type":"integer","format":"int32"},"maxDigits":{"description":"Maximum number of digits.","type":"integer","format":"int32"},"minValue":{"description":"Minimum numeric value.","type":"integer","format":"int32"},"maxValue":{"description":"Maximum numeric value.","type":"integer","format":"int32"},"decimalPlaces":{"description":"Number of decimal places to accept (0 means integers only).","type":"integer","format":"int32"},"allowNegative":{"description":"When `true`, negative numbers are accepted.","type":"boolean"}}},"type":{"description":"Discriminator value for this variant. See the parent oneOf for the full set of values.","examples":["FormField"],"type":"string","enum":["FormField"]},"fieldType":{"description":"Form-field subtype discriminator (only relevant when widget `type` is `FormField`).\n\n- `Text` — short text input (≤255 characters).\n- `Textarea` — long-form text.\n- `Email` — email address.\n- `Url` — website / URL.\n- `Number` — numeric input with optional unit and constraints.\n- `Date` — date or date+time picker.\n- `Select` — dropdown; user picks one option.\n- `MultiChoice` — checkboxes; user picks one or more options.\n- `MultiSelect` — Subtasks: a checklist of sub-items inside the task.\n- `Members` — assignee picker (selects organization users).\n- `File` — single file upload.\n- `MultiFile` — multi-file upload (in-app \"File Upload\").\n- `Document` — document approval field; links the task to a document review.\n- `Table` — rows × columns of cells; users fill cell values.\n- `SendRichEmail` — pre-written email embedded in the task; sent manually by the user or\n  automatically when the task is completed.\n- `Hidden` — only visible when editing the workflow; populated by integrations or default values.\n- `Snippet` — only visible when editing; passes static text or merge tags into automations.\n","type":"string","enum":["Date","Document","Email","File","Hidden","Members","MultiChoice","MultiFile","MultiSelect","Number","Select","SendRichEmail","Snippet","Table","Text","Textarea","Url"],"const":"Number"}}},{"title":"UpdateSelectFormFieldRequest","type":"object","required":["hiddenByDefault","required","config","type","fieldType"],"properties":{"hiddenByDefault":{"description":"When `true`, the widget is hidden by default; conditional logic rules can reveal it at runtime. Defaults to `false`.","type":"boolean"},"position":{"title":"WidgetPosition","description":"Where to place this widget on the task. `Top` — before all existing widgets. `Bottom` — after all existing widgets (default when `position` is omitted). `After` — immediately after the widget identified by `widgetId`.","oneOf":[{"title":"WidgetPositionAfter","type":"object","required":["widgetId","type"],"properties":{"widgetId":{"title":"EntityID","description":"The ID of the widget.","type":"string"},"type":{"description":"Discriminator value for this variant. See the parent oneOf for the full set of values.","type":"string","const":"After"}}},{"title":"WidgetPositionBottom","type":"object","required":["type"],"properties":{"type":{"description":"Discriminator value for this variant. See the parent oneOf for the full set of values.","type":"string","const":"Bottom"}}},{"title":"WidgetPositionTop","type":"object","required":["type"],"properties":{"type":{"description":"Discriminator value for this variant. See the parent oneOf for the full set of values.","type":"string","const":"Top"}}}],"required":["type"],"discriminator":{"propertyName":"type","mapping":{"After":"#/components/schemas/WidgetPositionAfter","Bottom":"#/components/schemas/WidgetPositionBottom","Top":"#/components/schemas/WidgetPositionTop"}}},"label":{"description":"Display label shown to the end user.","type":"string","maxLength":255},"required":{"description":"When `true`, the form field must have a value before its task can be completed.","type":"boolean"},"config":{"title":"PublicApiSelectFormFieldConfig","description":"Field-specific configuration. Shape depends on `fieldType`.","type":"object","properties":{"items":{"description":"Available options for selection-style form fields.","type":"array","items":{"title":"PublicApiFormFieldItem","type":"object","required":["name"],"properties":{"id":{"title":"EntityID","description":"The resource's ID.","type":"string"},"name":{"description":"Display name.","type":"string"}}}},"defaultValue":{"description":"Default value pre-filled when a new workflow run is created.","type":"string"}}},"type":{"description":"Discriminator value for this variant. See the parent oneOf for the full set of values.","examples":["FormField"],"type":"string","enum":["FormField"]},"fieldType":{"description":"Form-field subtype discriminator (only relevant when widget `type` is `FormField`).\n\n- `Text` — short text input (≤255 characters).\n- `Textarea` — long-form text.\n- `Email` — email address.\n- `Url` — website / URL.\n- `Number` — numeric input with optional unit and constraints.\n- `Date` — date or date+time picker.\n- `Select` — dropdown; user picks one option.\n- `MultiChoice` — checkboxes; user picks one or more options.\n- `MultiSelect` — Subtasks: a checklist of sub-items inside the task.\n- `Members` — assignee picker (selects organization users).\n- `File` — single file upload.\n- `MultiFile` — multi-file upload (in-app \"File Upload\").\n- `Document` — document approval field; links the task to a document review.\n- `Table` — rows × columns of cells; users fill cell values.\n- `SendRichEmail` — pre-written email embedded in the task; sent manually by the user or\n  automatically when the task is completed.\n- `Hidden` — only visible when editing the workflow; populated by integrations or default values.\n- `Snippet` — only visible when editing; passes static text or merge tags into automations.\n","type":"string","enum":["Date","Document","Email","File","Hidden","Members","MultiChoice","MultiFile","MultiSelect","Number","Select","SendRichEmail","Snippet","Table","Text","Textarea","Url"],"const":"Select"}}},{"title":"UpdateSendRichEmailFormFieldRequest","type":"object","required":["hiddenByDefault","required","config","type","fieldType"],"properties":{"hiddenByDefault":{"description":"When `true`, the widget is hidden by default; conditional logic rules can reveal it at runtime. Defaults to `false`.","type":"boolean"},"position":{"title":"WidgetPosition","description":"Where to place this widget on the task. `Top` — before all existing widgets. `Bottom` — after all existing widgets (default when `position` is omitted). `After` — immediately after the widget identified by `widgetId`.","oneOf":[{"title":"WidgetPositionAfter","type":"object","required":["widgetId","type"],"properties":{"widgetId":{"title":"EntityID","description":"The ID of the widget.","type":"string"},"type":{"description":"Discriminator value for this variant. See the parent oneOf for the full set of values.","type":"string","const":"After"}}},{"title":"WidgetPositionBottom","type":"object","required":["type"],"properties":{"type":{"description":"Discriminator value for this variant. See the parent oneOf for the full set of values.","type":"string","const":"Bottom"}}},{"title":"WidgetPositionTop","type":"object","required":["type"],"properties":{"type":{"description":"Discriminator value for this variant. See the parent oneOf for the full set of values.","type":"string","const":"Top"}}}],"required":["type"],"discriminator":{"propertyName":"type","mapping":{"After":"#/components/schemas/WidgetPositionAfter","Bottom":"#/components/schemas/WidgetPositionBottom","Top":"#/components/schemas/WidgetPositionTop"}}},"label":{"description":"Display label shown to the end user.","type":"string","maxLength":255},"required":{"description":"When `true`, the form field must have a value before its task can be completed.","type":"boolean"},"config":{"title":"PublicApiSendRichEmailFormFieldConfig","description":"Field-specific configuration. Shape depends on `fieldType`.","type":"object","required":["bodyEditor"],"properties":{"to":{"description":"Default recipient list (To). Comma-separated email addresses or merge tags.","type":"array","items":{"type":"string"}},"cc":{"description":"Default CC list. Comma-separated email addresses or merge tags.","type":"array","items":{"type":"string"}},"bcc":{"description":"Default BCC list. Comma-separated email addresses or merge tags.","type":"array","items":{"type":"string"}},"replyTo":{"description":"Default Reply-To address. An email address or merge tag.","type":"array","items":{"type":"string"}},"subject":{"description":"Default email subject. May contain merge tags.","type":"string"},"body":{"description":"Default email body. May contain merge tags.","type":"string"},"bodyEditor":{"description":"Editor used to author the email body.\n\n- `RichText` — rich-text editor with formatting.\n- `HTML` — raw HTML editor.\n- `PlainText` — plain text editor.\n","type":"string","enum":["RichText","HTML","PlainText"]},"editAllowed":{"description":"When `true`, users running the workflow can edit the email before sending.","type":"boolean"}}},"type":{"description":"Discriminator value for this variant. See the parent oneOf for the full set of values.","examples":["FormField"],"type":"string","enum":["FormField"]},"fieldType":{"description":"Form-field subtype discriminator (only relevant when widget `type` is `FormField`).\n\n- `Text` — short text input (≤255 characters).\n- `Textarea` — long-form text.\n- `Email` — email address.\n- `Url` — website / URL.\n- `Number` — numeric input with optional unit and constraints.\n- `Date` — date or date+time picker.\n- `Select` — dropdown; user picks one option.\n- `MultiChoice` — checkboxes; user picks one or more options.\n- `MultiSelect` — Subtasks: a checklist of sub-items inside the task.\n- `Members` — assignee picker (selects organization users).\n- `File` — single file upload.\n- `MultiFile` — multi-file upload (in-app \"File Upload\").\n- `Document` — document approval field; links the task to a document review.\n- `Table` — rows × columns of cells; users fill cell values.\n- `SendRichEmail` — pre-written email embedded in the task; sent manually by the user or\n  automatically when the task is completed.\n- `Hidden` — only visible when editing the workflow; populated by integrations or default values.\n- `Snippet` — only visible when editing; passes static text or merge tags into automations.\n","type":"string","enum":["Date","Document","Email","File","Hidden","Members","MultiChoice","MultiFile","MultiSelect","Number","Select","SendRichEmail","Snippet","Table","Text","Textarea","Url"],"const":"SendRichEmail"}}},{"title":"UpdateSnippetFormFieldRequest","type":"object","required":["hiddenByDefault","required","config","type","fieldType"],"properties":{"hiddenByDefault":{"description":"When `true`, the widget is hidden by default; conditional logic rules can reveal it at runtime. Defaults to `false`.","type":"boolean"},"position":{"title":"WidgetPosition","description":"Where to place this widget on the task. `Top` — before all existing widgets. `Bottom` — after all existing widgets (default when `position` is omitted). `After` — immediately after the widget identified by `widgetId`.","oneOf":[{"title":"WidgetPositionAfter","type":"object","required":["widgetId","type"],"properties":{"widgetId":{"title":"EntityID","description":"The ID of the widget.","type":"string"},"type":{"description":"Discriminator value for this variant. See the parent oneOf for the full set of values.","type":"string","const":"After"}}},{"title":"WidgetPositionBottom","type":"object","required":["type"],"properties":{"type":{"description":"Discriminator value for this variant. See the parent oneOf for the full set of values.","type":"string","const":"Bottom"}}},{"title":"WidgetPositionTop","type":"object","required":["type"],"properties":{"type":{"description":"Discriminator value for this variant. See the parent oneOf for the full set of values.","type":"string","const":"Top"}}}],"required":["type"],"discriminator":{"propertyName":"type","mapping":{"After":"#/components/schemas/WidgetPositionAfter","Bottom":"#/components/schemas/WidgetPositionBottom","Top":"#/components/schemas/WidgetPositionTop"}}},"label":{"description":"Display label shown to the end user.","type":"string","maxLength":255},"required":{"description":"When `true`, the form field must have a value before its task can be completed.","type":"boolean"},"config":{"title":"PublicApiSnippetFormFieldConfig","description":"Field-specific configuration. Shape depends on `fieldType`.","type":"object","properties":{"value":{"description":"The option's stored value.","type":"string"}}},"type":{"description":"Discriminator value for this variant. See the parent oneOf for the full set of values.","examples":["FormField"],"type":"string","enum":["FormField"]},"fieldType":{"description":"Form-field subtype discriminator (only relevant when widget `type` is `FormField`).\n\n- `Text` — short text input (≤255 characters).\n- `Textarea` — long-form text.\n- `Email` — email address.\n- `Url` — website / URL.\n- `Number` — numeric input with optional unit and constraints.\n- `Date` — date or date+time picker.\n- `Select` — dropdown; user picks one option.\n- `MultiChoice` — checkboxes; user picks one or more options.\n- `MultiSelect` — Subtasks: a checklist of sub-items inside the task.\n- `Members` — assignee picker (selects organization users).\n- `File` — single file upload.\n- `MultiFile` — multi-file upload (in-app \"File Upload\").\n- `Document` — document approval field; links the task to a document review.\n- `Table` — rows × columns of cells; users fill cell values.\n- `SendRichEmail` — pre-written email embedded in the task; sent manually by the user or\n  automatically when the task is completed.\n- `Hidden` — only visible when editing the workflow; populated by integrations or default values.\n- `Snippet` — only visible when editing; passes static text or merge tags into automations.\n","type":"string","enum":["Date","Document","Email","File","Hidden","Members","MultiChoice","MultiFile","MultiSelect","Number","Select","SendRichEmail","Snippet","Table","Text","Textarea","Url"],"const":"Snippet"}}},{"title":"UpdateTableFormFieldRequest","type":"object","required":["hiddenByDefault","required","config","type","fieldType"],"properties":{"hiddenByDefault":{"description":"When `true`, the widget is hidden by default; conditional logic rules can reveal it at runtime. Defaults to `false`.","type":"boolean"},"position":{"title":"WidgetPosition","description":"Where to place this widget on the task. `Top` — before all existing widgets. `Bottom` — after all existing widgets (default when `position` is omitted). `After` — immediately after the widget identified by `widgetId`.","oneOf":[{"title":"WidgetPositionAfter","type":"object","required":["widgetId","type"],"properties":{"widgetId":{"title":"EntityID","description":"The ID of the widget.","type":"string"},"type":{"description":"Discriminator value for this variant. See the parent oneOf for the full set of values.","type":"string","const":"After"}}},{"title":"WidgetPositionBottom","type":"object","required":["type"],"properties":{"type":{"description":"Discriminator value for this variant. See the parent oneOf for the full set of values.","type":"string","const":"Bottom"}}},{"title":"WidgetPositionTop","type":"object","required":["type"],"properties":{"type":{"description":"Discriminator value for this variant. See the parent oneOf for the full set of values.","type":"string","const":"Top"}}}],"required":["type"],"discriminator":{"propertyName":"type","mapping":{"After":"#/components/schemas/WidgetPositionAfter","Bottom":"#/components/schemas/WidgetPositionBottom","Top":"#/components/schemas/WidgetPositionTop"}}},"label":{"description":"Display label shown to the end user.","type":"string","maxLength":255},"required":{"description":"When `true`, the form field must have a value before its task can be completed.","type":"boolean"},"config":{"title":"PublicApiTableFormFieldConfig","description":"Field-specific configuration. Shape depends on `fieldType`.","type":"object","properties":{"columnDefs":{"description":"Data set column definitions (name + type per column).","type":"array","items":{"title":"PublicApiTableFormFieldColumn","type":"object","required":["id","name","columnType"],"properties":{"id":{"title":"EntityID","description":"The resource's ID.","type":"string"},"name":{"description":"Display name.","type":"string"},"columnType":{"description":"Data type a Table column accepts.\n\n- `Text` — free-form short text.\n","type":"string","enum":["Text"]}}}},"defaultValue":{"description":"Default value pre-filled when a new workflow run is created.","type":"string"}}},"type":{"description":"Discriminator value for this variant. See the parent oneOf for the full set of values.","examples":["FormField"],"type":"string","enum":["FormField"]},"fieldType":{"description":"Form-field subtype discriminator (only relevant when widget `type` is `FormField`).\n\n- `Text` — short text input (≤255 characters).\n- `Textarea` — long-form text.\n- `Email` — email address.\n- `Url` — website / URL.\n- `Number` — numeric input with optional unit and constraints.\n- `Date` — date or date+time picker.\n- `Select` — dropdown; user picks one option.\n- `MultiChoice` — checkboxes; user picks one or more options.\n- `MultiSelect` — Subtasks: a checklist of sub-items inside the task.\n- `Members` — assignee picker (selects organization users).\n- `File` — single file upload.\n- `MultiFile` — multi-file upload (in-app \"File Upload\").\n- `Document` — document approval field; links the task to a document review.\n- `Table` — rows × columns of cells; users fill cell values.\n- `SendRichEmail` — pre-written email embedded in the task; sent manually by the user or\n  automatically when the task is completed.\n- `Hidden` — only visible when editing the workflow; populated by integrations or default values.\n- `Snippet` — only visible when editing; passes static text or merge tags into automations.\n","type":"string","enum":["Date","Document","Email","File","Hidden","Members","MultiChoice","MultiFile","MultiSelect","Number","Select","SendRichEmail","Snippet","Table","Text","Textarea","Url"],"const":"Table"}}},{"title":"UpdateTextFormFieldRequest","type":"object","required":["hiddenByDefault","required","config","constraints","type","fieldType"],"properties":{"hiddenByDefault":{"description":"When `true`, the widget is hidden by default; conditional logic rules can reveal it at runtime. Defaults to `false`.","type":"boolean"},"position":{"title":"WidgetPosition","description":"Where to place this widget on the task. `Top` — before all existing widgets. `Bottom` — after all existing widgets (default when `position` is omitted). `After` — immediately after the widget identified by `widgetId`.","oneOf":[{"title":"WidgetPositionAfter","type":"object","required":["widgetId","type"],"properties":{"widgetId":{"title":"EntityID","description":"The ID of the widget.","type":"string"},"type":{"description":"Discriminator value for this variant. See the parent oneOf for the full set of values.","type":"string","const":"After"}}},{"title":"WidgetPositionBottom","type":"object","required":["type"],"properties":{"type":{"description":"Discriminator value for this variant. See the parent oneOf for the full set of values.","type":"string","const":"Bottom"}}},{"title":"WidgetPositionTop","type":"object","required":["type"],"properties":{"type":{"description":"Discriminator value for this variant. See the parent oneOf for the full set of values.","type":"string","const":"Top"}}}],"required":["type"],"discriminator":{"propertyName":"type","mapping":{"After":"#/components/schemas/WidgetPositionAfter","Bottom":"#/components/schemas/WidgetPositionBottom","Top":"#/components/schemas/WidgetPositionTop"}}},"label":{"description":"Display label shown to the end user.","type":"string","maxLength":255},"required":{"description":"When `true`, the form field must have a value before its task can be completed.","type":"boolean"},"config":{"title":"PublicApiTextFormFieldConfig","description":"Field-specific configuration. Shape depends on `fieldType`.","type":"object","properties":{"placeholder":{"description":"Placeholder hint shown in the input when no value has been entered.","type":"string"},"defaultValue":{"description":"Default value pre-filled when a new workflow run is created.","type":"string"}}},"constraints":{"title":"PublicApiTextFormFieldConstraints","description":"Field-specific validation constraints. Shape depends on `fieldType`.","type":"object","properties":{"min":{"description":"Inclusive lower bound.","type":"integer","format":"int32"},"max":{"description":"Inclusive upper bound.","type":"integer","format":"int32"}}},"type":{"description":"Discriminator value for this variant. See the parent oneOf for the full set of values.","examples":["FormField"],"type":"string","enum":["FormField"]},"fieldType":{"description":"Form-field subtype discriminator (only relevant when widget `type` is `FormField`).\n\n- `Text` — short text input (≤255 characters).\n- `Textarea` — long-form text.\n- `Email` — email address.\n- `Url` — website / URL.\n- `Number` — numeric input with optional unit and constraints.\n- `Date` — date or date+time picker.\n- `Select` — dropdown; user picks one option.\n- `MultiChoice` — checkboxes; user picks one or more options.\n- `MultiSelect` — Subtasks: a checklist of sub-items inside the task.\n- `Members` — assignee picker (selects organization users).\n- `File` — single file upload.\n- `MultiFile` — multi-file upload (in-app \"File Upload\").\n- `Document` — document approval field; links the task to a document review.\n- `Table` — rows × columns of cells; users fill cell values.\n- `SendRichEmail` — pre-written email embedded in the task; sent manually by the user or\n  automatically when the task is completed.\n- `Hidden` — only visible when editing the workflow; populated by integrations or default values.\n- `Snippet` — only visible when editing; passes static text or merge tags into automations.\n","type":"string","enum":["Date","Document","Email","File","Hidden","Members","MultiChoice","MultiFile","MultiSelect","Number","Select","SendRichEmail","Snippet","Table","Text","Textarea","Url"],"const":"Text"}}},{"title":"UpdateTextareaFormFieldRequest","type":"object","required":["hiddenByDefault","required","config","constraints","type","fieldType"],"properties":{"hiddenByDefault":{"description":"When `true`, the widget is hidden by default; conditional logic rules can reveal it at runtime. Defaults to `false`.","type":"boolean"},"position":{"title":"WidgetPosition","description":"Where to place this widget on the task. `Top` — before all existing widgets. `Bottom` — after all existing widgets (default when `position` is omitted). `After` — immediately after the widget identified by `widgetId`.","oneOf":[{"title":"WidgetPositionAfter","type":"object","required":["widgetId","type"],"properties":{"widgetId":{"title":"EntityID","description":"The ID of the widget.","type":"string"},"type":{"description":"Discriminator value for this variant. See the parent oneOf for the full set of values.","type":"string","const":"After"}}},{"title":"WidgetPositionBottom","type":"object","required":["type"],"properties":{"type":{"description":"Discriminator value for this variant. See the parent oneOf for the full set of values.","type":"string","const":"Bottom"}}},{"title":"WidgetPositionTop","type":"object","required":["type"],"properties":{"type":{"description":"Discriminator value for this variant. See the parent oneOf for the full set of values.","type":"string","const":"Top"}}}],"required":["type"],"discriminator":{"propertyName":"type","mapping":{"After":"#/components/schemas/WidgetPositionAfter","Bottom":"#/components/schemas/WidgetPositionBottom","Top":"#/components/schemas/WidgetPositionTop"}}},"label":{"description":"Display label shown to the end user.","type":"string","maxLength":255},"required":{"description":"When `true`, the form field must have a value before its task can be completed.","type":"boolean"},"config":{"title":"PublicApiTextareaFormFieldConfig","description":"Field-specific configuration. Shape depends on `fieldType`.","type":"object","properties":{"placeholder":{"description":"Placeholder hint shown in the input when no value has been entered.","type":"string"},"defaultValue":{"description":"Default value pre-filled when a new workflow run is created.","type":"string"},"format":{"description":"Editor style for this Textarea field.\n\n- `PlainText` — plain text.\n- `RichText` — rich-text editor with formatting (bold, lists, links, etc.).\n","type":"string","enum":["PlainText","RichText"]}}},"constraints":{"title":"PublicApiTextareaFormFieldConstraints","description":"Field-specific validation constraints. Shape depends on `fieldType`.","type":"object","properties":{"min":{"description":"Inclusive lower bound.","type":"integer","format":"int32"},"max":{"description":"Inclusive upper bound.","type":"integer","format":"int32"}}},"type":{"description":"Discriminator value for this variant. See the parent oneOf for the full set of values.","examples":["FormField"],"type":"string","enum":["FormField"]},"fieldType":{"description":"Form-field subtype discriminator (only relevant when widget `type` is `FormField`).\n\n- `Text` — short text input (≤255 characters).\n- `Textarea` — long-form text.\n- `Email` — email address.\n- `Url` — website / URL.\n- `Number` — numeric input with optional unit and constraints.\n- `Date` — date or date+time picker.\n- `Select` — dropdown; user picks one option.\n- `MultiChoice` — checkboxes; user picks one or more options.\n- `MultiSelect` — Subtasks: a checklist of sub-items inside the task.\n- `Members` — assignee picker (selects organization users).\n- `File` — single file upload.\n- `MultiFile` — multi-file upload (in-app \"File Upload\").\n- `Document` — document approval field; links the task to a document review.\n- `Table` — rows × columns of cells; users fill cell values.\n- `SendRichEmail` — pre-written email embedded in the task; sent manually by the user or\n  automatically when the task is completed.\n- `Hidden` — only visible when editing the workflow; populated by integrations or default values.\n- `Snippet` — only visible when editing; passes static text or merge tags into automations.\n","type":"string","enum":["Date","Document","Email","File","Hidden","Members","MultiChoice","MultiFile","MultiSelect","Number","Select","SendRichEmail","Snippet","Table","Text","Textarea","Url"],"const":"Textarea"}}},{"title":"UpdateUrlFormFieldRequest","type":"object","required":["hiddenByDefault","required","config","type","fieldType"],"properties":{"hiddenByDefault":{"description":"When `true`, the widget is hidden by default; conditional logic rules can reveal it at runtime. Defaults to `false`.","type":"boolean"},"position":{"title":"WidgetPosition","description":"Where to place this widget on the task. `Top` — before all existing widgets. `Bottom` — after all existing widgets (default when `position` is omitted). `After` — immediately after the widget identified by `widgetId`.","oneOf":[{"title":"WidgetPositionAfter","type":"object","required":["widgetId","type"],"properties":{"widgetId":{"title":"EntityID","description":"The ID of the widget.","type":"string"},"type":{"description":"Discriminator value for this variant. See the parent oneOf for the full set of values.","type":"string","const":"After"}}},{"title":"WidgetPositionBottom","type":"object","required":["type"],"properties":{"type":{"description":"Discriminator value for this variant. See the parent oneOf for the full set of values.","type":"string","const":"Bottom"}}},{"title":"WidgetPositionTop","type":"object","required":["type"],"properties":{"type":{"description":"Discriminator value for this variant. See the parent oneOf for the full set of values.","type":"string","const":"Top"}}}],"required":["type"],"discriminator":{"propertyName":"type","mapping":{"After":"#/components/schemas/WidgetPositionAfter","Bottom":"#/components/schemas/WidgetPositionBottom","Top":"#/components/schemas/WidgetPositionTop"}}},"label":{"description":"Display label shown to the end user.","type":"string","maxLength":255},"required":{"description":"When `true`, the form field must have a value before its task can be completed.","type":"boolean"},"config":{"title":"PublicApiUrlFormFieldConfig","description":"Field-specific configuration. Shape depends on `fieldType`.","type":"object","properties":{"defaultValue":{"description":"Default value pre-filled when a new workflow run is created.","type":"string"}}},"type":{"description":"Discriminator value for this variant. See the parent oneOf for the full set of values.","examples":["FormField"],"type":"string","enum":["FormField"]},"fieldType":{"description":"Form-field subtype discriminator (only relevant when widget `type` is `FormField`).\n\n- `Text` — short text input (≤255 characters).\n- `Textarea` — long-form text.\n- `Email` — email address.\n- `Url` — website / URL.\n- `Number` — numeric input with optional unit and constraints.\n- `Date` — date or date+time picker.\n- `Select` — dropdown; user picks one option.\n- `MultiChoice` — checkboxes; user picks one or more options.\n- `MultiSelect` — Subtasks: a checklist of sub-items inside the task.\n- `Members` — assignee picker (selects organization users).\n- `File` — single file upload.\n- `MultiFile` — multi-file upload (in-app \"File Upload\").\n- `Document` — document approval field; links the task to a document review.\n- `Table` — rows × columns of cells; users fill cell values.\n- `SendRichEmail` — pre-written email embedded in the task; sent manually by the user or\n  automatically when the task is completed.\n- `Hidden` — only visible when editing the workflow; populated by integrations or default values.\n- `Snippet` — only visible when editing; passes static text or merge tags into automations.\n","type":"string","enum":["Date","Document","Email","File","Hidden","Members","MultiChoice","MultiFile","MultiSelect","Number","Select","SendRichEmail","Snippet","Table","Text","Textarea","Url"],"const":"Url"}}}],"required":["fieldType"],"discriminator":{"propertyName":"fieldType","mapping":{"Date":"#/components/schemas/UpdateDateFormFieldRequest","Document":"#/components/schemas/UpdateDocumentFormFieldRequest","Email":"#/components/schemas/UpdateEmailFormFieldRequest","File":"#/components/schemas/UpdateFileFormFieldRequest","Hidden":"#/components/schemas/UpdateHiddenFormFieldRequest","Members":"#/components/schemas/UpdateMembersFormFieldRequest","MultiChoice":"#/components/schemas/UpdateMultiChoiceFormFieldRequest","MultiFile":"#/components/schemas/UpdateMultiFileFormFieldRequest","MultiSelect":"#/components/schemas/UpdateMultiSelectFormFieldRequest","Number":"#/components/schemas/UpdateNumberFormFieldRequest","Select":"#/components/schemas/UpdateSelectFormFieldRequest","SendRichEmail":"#/components/schemas/UpdateSendRichEmailFormFieldRequest","Snippet":"#/components/schemas/UpdateSnippetFormFieldRequest","Table":"#/components/schemas/UpdateTableFormFieldRequest","Text":"#/components/schemas/UpdateTextFormFieldRequest","Textarea":"#/components/schemas/UpdateTextareaFormFieldRequest","Url":"#/components/schemas/UpdateUrlFormFieldRequest"}},"properties":{"type":{"description":"Discriminator value for this variant. See the parent oneOf for the full set of values.","type":"string","const":"FormField"},"hiddenByDefault":{"description":"When `true`, the widget is hidden by default; conditional logic rules can reveal it at runtime. Defaults to `false`.","type":"boolean"},"position":{"title":"WidgetPosition","description":"Where to place this widget on the task. `Top` — before all existing widgets. `Bottom` — after all existing widgets (default when `position` is omitted). `After` — immediately after the widget identified by `widgetId`.","oneOf":[{"title":"WidgetPositionAfter","type":"object","required":["widgetId","type"],"properties":{"widgetId":{"title":"EntityID","description":"The ID of the widget.","type":"string"},"type":{"description":"Discriminator value for this variant. See the parent oneOf for the full set of values.","type":"string","const":"After"}}},{"title":"WidgetPositionBottom","type":"object","required":["type"],"properties":{"type":{"description":"Discriminator value for this variant. See the parent oneOf for the full set of values.","type":"string","const":"Bottom"}}},{"title":"WidgetPositionTop","type":"object","required":["type"],"properties":{"type":{"description":"Discriminator value for this variant. See the parent oneOf for the full set of values.","type":"string","const":"Top"}}}],"required":["type"],"discriminator":{"propertyName":"type","mapping":{"After":"#/components/schemas/WidgetPositionAfter","Bottom":"#/components/schemas/WidgetPositionBottom","Top":"#/components/schemas/WidgetPositionTop"}}},"label":{"description":"Display label shown to the end user.","type":"string","maxLength":255},"required":{"description":"When `true`, the form field must have a value before its task can be completed.","type":"boolean"},"config":{"description":"Field-specific configuration. Shape depends on `fieldType`.","anyOf":[{"title":"PublicApiDateFormFieldConfig","type":"object","properties":{"defaultValue":{"description":"Default value pre-filled when a new workflow run is created.","type":"string"},"timeOption":{"description":"How time-of-day is handled on this Date field.\n\n- `Included` — the field always captures both date and time.\n- `Excluded` — date only; time is never captured.\n- `Optional` — the user picks whether to include a time.\n","type":"string","enum":["Included","Excluded","Optional"]}}},{"title":"PublicApiDocumentFormFieldConfig","type":"object","required":["reviewRequest"],"properties":{"reviewRequest":{"description":"When `true`, the email requires explicit user review/send rather than auto-send.","type":"boolean"},"defaultValue":{"description":"Default value pre-filled when a new workflow run is created.","type":"string"}}},{"title":"PublicApiEmailFormFieldConfig","type":"object","properties":{"placeholder":{"description":"Placeholder hint shown in the input when no value has been entered.","type":"string"},"defaultValue":{"description":"Default value pre-filled when a new workflow run is created.","type":"string"}}},{"title":"PublicApiFileFormFieldConfig","type":"object","properties":{"placeholder":{"description":"Placeholder hint shown in the input when no value has been entered.","type":"string"},"extractTextContent":{"description":"When `true`, server extracts text from uploaded documents for use in merge tags.","type":"boolean"}}},{"title":"PublicApiHiddenFormFieldConfig","type":"object","properties":{"defaultValue":{"description":"Default value pre-filled when a new workflow run is created.","type":"string"}}},{"title":"PublicApiMembersFormFieldConfig","type":"object","properties":{"defaultValue":{"description":"Default value pre-filled when a new workflow run is created.","type":"string"},"groupId":{"title":"EntityID","description":"The ID of an organization group.","type":"string"}}},{"title":"PublicApiMultiChoiceFormFieldConfig","type":"object","properties":{"items":{"description":"Available options for selection-style form fields.","type":"array","items":{"title":"PublicApiFormFieldItem","type":"object","required":["name"],"properties":{"id":{"title":"EntityID","description":"The resource's ID.","type":"string"},"name":{"description":"Display name.","type":"string"}}}}}},{"title":"PublicApiMultiFileFormFieldConfig","type":"object","properties":{"placeholder":{"description":"Placeholder hint shown in the input when no value has been entered.","type":"string"},"extractTextContent":{"description":"When `true`, server extracts text from uploaded documents for use in merge tags.","type":"boolean"}}},{"title":"PublicApiMultiSelectFormFieldConfig","type":"object","properties":{"items":{"description":"Available options for selection-style form fields.","type":"array","items":{"title":"PublicApiFormFieldItem","type":"object","required":["name"],"properties":{"id":{"title":"EntityID","description":"The resource's ID.","type":"string"},"name":{"description":"Display name.","type":"string"}}}}}},{"title":"PublicApiNumberFormFieldConfig","type":"object","properties":{"placeholder":{"description":"Placeholder hint shown in the input when no value has been entered.","type":"string"},"defaultValue":{"description":"Default value pre-filled when a new workflow run is created.","type":"string"},"unit":{"description":"Unit label rendered next to the numeric value (e.g. `kg`, `$`, `%`).","type":"string"},"unitLocation":{"description":"Where the unit symbol appears relative to the number.\n\n- `prefix` — before the number (e.g. `$100`).\n- `suffix` — after the number (e.g. `100 USD`).\n","type":"string","enum":["prefix","suffix"]}}},{"title":"PublicApiSelectFormFieldConfig","type":"object","properties":{"items":{"description":"Available options for selection-style form fields.","type":"array","items":{"title":"PublicApiFormFieldItem","type":"object","required":["name"],"properties":{"id":{"title":"EntityID","description":"The resource's ID.","type":"string"},"name":{"description":"Display name.","type":"string"}}}},"defaultValue":{"description":"Default value pre-filled when a new workflow run is created.","type":"string"}}},{"title":"PublicApiSendRichEmailFormFieldConfig","type":"object","required":["bodyEditor"],"properties":{"to":{"description":"Default recipient list (To). Comma-separated email addresses or merge tags.","type":"array","items":{"type":"string"}},"cc":{"description":"Default CC list. Comma-separated email addresses or merge tags.","type":"array","items":{"type":"string"}},"bcc":{"description":"Default BCC list. Comma-separated email addresses or merge tags.","type":"array","items":{"type":"string"}},"replyTo":{"description":"Default Reply-To address. An email address or merge tag.","type":"array","items":{"type":"string"}},"subject":{"description":"Default email subject. May contain merge tags.","type":"string"},"body":{"description":"Default email body. May contain merge tags.","type":"string"},"bodyEditor":{"description":"Editor used to author the email body.\n\n- `RichText` — rich-text editor with formatting.\n- `HTML` — raw HTML editor.\n- `PlainText` — plain text editor.\n","type":"string","enum":["RichText","HTML","PlainText"]},"editAllowed":{"description":"When `true`, users running the workflow can edit the email before sending.","type":"boolean"}}},{"title":"PublicApiSnippetFormFieldConfig","type":"object","properties":{"value":{"description":"The option's stored value.","type":"string"}}},{"title":"PublicApiTableFormFieldConfig","type":"object","properties":{"columnDefs":{"description":"Data set column definitions (name + type per column).","type":"array","items":{"title":"PublicApiTableFormFieldColumn","type":"object","required":["id","name","columnType"],"properties":{"id":{"title":"EntityID","description":"The resource's ID.","type":"string"},"name":{"description":"Display name.","type":"string"},"columnType":{"description":"Data type a Table column accepts.\n\n- `Text` — free-form short text.\n","type":"string","enum":["Text"]}}}},"defaultValue":{"description":"Default value pre-filled when a new workflow run is created.","type":"string"}}},{"title":"PublicApiTextFormFieldConfig","type":"object","properties":{"placeholder":{"description":"Placeholder hint shown in the input when no value has been entered.","type":"string"},"defaultValue":{"description":"Default value pre-filled when a new workflow run is created.","type":"string"}}},{"title":"PublicApiTextareaFormFieldConfig","type":"object","properties":{"placeholder":{"description":"Placeholder hint shown in the input when no value has been entered.","type":"string"},"defaultValue":{"description":"Default value pre-filled when a new workflow run is created.","type":"string"},"format":{"description":"Editor style for this Textarea field.\n\n- `PlainText` — plain text.\n- `RichText` — rich-text editor with formatting (bold, lists, links, etc.).\n","type":"string","enum":["PlainText","RichText"]}}},{"title":"PublicApiUrlFormFieldConfig","type":"object","properties":{"defaultValue":{"description":"Default value pre-filled when a new workflow run is created.","type":"string"}}}]},"constraints":{"description":"Field-specific validation constraints. Shape depends on `fieldType`.","anyOf":[{"title":"PublicApiDateFormFieldConstraints","type":"object","properties":{"afterDate":{"description":"Earliest accepted date (inclusive). Pair with `afterDateSourceType`.","type":"string","format":"date-time"},"beforeDate":{"description":"Latest accepted date (inclusive). Pair with `beforeDateSourceType`.","type":"string","format":"date-time"},"afterDateFormFieldWidgetGroupId":{"title":"EntityID","description":"When `afterDateSourceType=FormField`, the ID of the Date form field whose value is the lower bound.","type":"string"},"beforeDateFormFieldWidgetGroupId":{"title":"EntityID","description":"When `beforeDateSourceType=FormField`, the ID of the Date form field whose value is the upper bound.","type":"string"},"afterDateSourceType":{"description":"How the before/after constraint date is derived.\n\n- `SpecificDate` — an absolute date supplied as `afterDate` / `beforeDate`.\n- `FormFieldValue` — derived from another Date form field (`afterDateField` / `beforeDateField`).\n- `TaskDueDate` — relative to the containing task's due date.\n- `ChecklistStartDate` / `ChecklistDueDate` — relative to the workflow run's start or due date.\n","type":"string","enum":["SpecificDate","FormFieldValue","TaskDueDate","ChecklistStartDate","ChecklistDueDate"]},"beforeDateSourceType":{"description":"How the before/after constraint date is derived.\n\n- `SpecificDate` — an absolute date supplied as `afterDate` / `beforeDate`.\n- `FormFieldValue` — derived from another Date form field (`afterDateField` / `beforeDateField`).\n- `TaskDueDate` — relative to the containing task's due date.\n- `ChecklistStartDate` / `ChecklistDueDate` — relative to the workflow run's start or due date.\n","type":"string","enum":["SpecificDate","FormFieldValue","TaskDueDate","ChecklistStartDate","ChecklistDueDate"]},"afterDateOffset":{"description":"ISO 8601 duration (e.g. `P7D`, `P1Y2M`).","type":"string"},"beforeDateOffset":{"description":"ISO 8601 duration (e.g. `P7D`, `P1Y2M`).","type":"string"}}},{"title":"PublicApiEmailFormFieldConstraints","type":"object","properties":{"domains":{"description":"Allowed (or blocked, depending on `restriction`) email domains for this field.","type":"array","items":{"type":"string"}},"restriction":{"description":"How the `domains` list filters allowed email addresses.\n\n- `Allow` — only emails whose domain is in the list are accepted.\n- `Block` — emails whose domain is in the list are rejected; all others accepted.\n","type":"string","enum":["Allow","Block"]}}},{"title":"PublicApiFileFormFieldConstraints","type":"object","properties":{"extensions":{"description":"Allowed file extensions, including the leading dot (e.g. `.pdf`, `.docx`).","type":"array","items":{"type":"string"}}}},{"title":"PublicApiMultiFileFormFieldConstraints","type":"object","properties":{"extensions":{"description":"Allowed file extensions, including the leading dot (e.g. `.pdf`, `.docx`).","type":"array","items":{"type":"string"}},"mode":{"description":"Whether the field accepts a single file or multiple files.\n\n- `Single` — only one file may be uploaded.\n- `Multiple` — multiple files may be uploaded.\n","type":"string","enum":["Multiple","Single"]}}},{"title":"PublicApiNumberFormFieldConstraints","type":"object","properties":{"minDigits":{"description":"Minimum number of digits.","type":"integer","format":"int32"},"maxDigits":{"description":"Maximum number of digits.","type":"integer","format":"int32"},"minValue":{"description":"Minimum numeric value.","type":"integer","format":"int32"},"maxValue":{"description":"Maximum numeric value.","type":"integer","format":"int32"},"decimalPlaces":{"description":"Number of decimal places to accept (0 means integers only).","type":"integer","format":"int32"},"allowNegative":{"description":"When `true`, negative numbers are accepted.","type":"boolean"}}},{"title":"PublicApiTextFormFieldConstraints","type":"object","properties":{"min":{"description":"Inclusive lower bound.","type":"integer","format":"int32"},"max":{"description":"Inclusive upper bound.","type":"integer","format":"int32"}}},{"title":"PublicApiTextareaFormFieldConstraints","type":"object","properties":{"min":{"description":"Inclusive lower bound.","type":"integer","format":"int32"},"max":{"description":"Inclusive upper bound.","type":"integer","format":"int32"}}}]},"fieldType":{"description":"Form-field subtype discriminator (only relevant when widget `type` is `FormField`).\n\n- `Text` — short text input (≤255 characters).\n- `Textarea` — long-form text.\n- `Email` — email address.\n- `Url` — website / URL.\n- `Number` — numeric input with optional unit and constraints.\n- `Date` — date or date+time picker.\n- `Select` — dropdown; user picks one option.\n- `MultiChoice` — checkboxes; user picks one or more options.\n- `MultiSelect` — Subtasks: a checklist of sub-items inside the task.\n- `Members` — assignee picker (selects organization users).\n- `File` — single file upload.\n- `MultiFile` — multi-file upload (in-app \"File Upload\").\n- `Document` — document approval field; links the task to a document review.\n- `Table` — rows × columns of cells; users fill cell values.\n- `SendRichEmail` — pre-written email embedded in the task; sent manually by the user or\n  automatically when the task is completed.\n- `Hidden` — only visible when editing the workflow; populated by integrations or default values.\n- `Snippet` — only visible when editing; passes static text or merge tags into automations.\n","type":"string","enum":["Date","Document","Email","File","Hidden","Members","MultiChoice","MultiFile","MultiSelect","Number","Select","SendRichEmail","Snippet","Table","Text","Textarea","Url"]}}},{"title":"UpdateWorkflowCrossLinkWidgetRequest","type":"object","required":["hiddenByDefault","type"],"properties":{"hiddenByDefault":{"description":"When `true`, the widget is hidden by default; conditional logic rules can reveal it at runtime. Defaults to `false`.","type":"boolean"},"position":{"title":"WidgetPosition","description":"Where to place this widget on the task. `Top` — before all existing widgets. `Bottom` — after all existing widgets (default when `position` is omitted). `After` — immediately after the widget identified by `widgetId`.","oneOf":[{"title":"WidgetPositionAfter","type":"object","required":["widgetId","type"],"properties":{"widgetId":{"title":"EntityID","description":"The ID of the widget.","type":"string"},"type":{"description":"Discriminator value for this variant. See the parent oneOf for the full set of values.","type":"string","const":"After"}}},{"title":"WidgetPositionBottom","type":"object","required":["type"],"properties":{"type":{"description":"Discriminator value for this variant. See the parent oneOf for the full set of values.","type":"string","const":"Bottom"}}},{"title":"WidgetPositionTop","type":"object","required":["type"],"properties":{"type":{"description":"Discriminator value for this variant. See the parent oneOf for the full set of values.","type":"string","const":"Top"}}}],"required":["type"],"discriminator":{"propertyName":"type","mapping":{"After":"#/components/schemas/WidgetPositionAfter","Bottom":"#/components/schemas/WidgetPositionBottom","Top":"#/components/schemas/WidgetPositionTop"}}},"linkedTemplateId":{"title":"EntityID","description":"The ID of the linked workflow or page that this CrossLink widget points to.","type":"string"},"type":{"description":"Discriminator value for this variant. See the parent oneOf for the full set of values.","type":"string","enum":["FormField","Text","Image","File","Video","Embed","CrossLink"],"const":"CrossLink"}}},{"title":"UpdateWorkflowEmbedWidgetRequest","type":"object","required":["hiddenByDefault","type"],"properties":{"hiddenByDefault":{"description":"When `true`, the widget is hidden by default; conditional logic rules can reveal it at runtime. Defaults to `false`.","type":"boolean"},"position":{"title":"WidgetPosition","description":"Where to place this widget on the task. `Top` — before all existing widgets. `Bottom` — after all existing widgets (default when `position` is omitted). `After` — immediately after the widget identified by `widgetId`.","oneOf":[{"title":"WidgetPositionAfter","type":"object","required":["widgetId","type"],"properties":{"widgetId":{"title":"EntityID","description":"The ID of the widget.","type":"string"},"type":{"description":"Discriminator value for this variant. See the parent oneOf for the full set of values.","type":"string","const":"After"}}},{"title":"WidgetPositionBottom","type":"object","required":["type"],"properties":{"type":{"description":"Discriminator value for this variant. See the parent oneOf for the full set of values.","type":"string","const":"Bottom"}}},{"title":"WidgetPositionTop","type":"object","required":["type"],"properties":{"type":{"description":"Discriminator value for this variant. See the parent oneOf for the full set of values.","type":"string","const":"Top"}}}],"required":["type"],"discriminator":{"propertyName":"type","mapping":{"After":"#/components/schemas/WidgetPositionAfter","Bottom":"#/components/schemas/WidgetPositionBottom","Top":"#/components/schemas/WidgetPositionTop"}}},"url":{"description":"Target URL.","type":"string","maxLength":4000},"type":{"description":"Discriminator value for this variant. See the parent oneOf for the full set of values.","type":"string","enum":["FormField","Text","Image","File","Video","Embed","CrossLink"],"const":"Embed"}}},{"title":"UpdateWorkflowFileWidgetRequest","type":"object","required":["hiddenByDefault","type"],"properties":{"hiddenByDefault":{"description":"When `true`, the widget is hidden by default; conditional logic rules can reveal it at runtime. Defaults to `false`.","type":"boolean"},"position":{"title":"WidgetPosition","description":"Where to place this widget on the task. `Top` — before all existing widgets. `Bottom` — after all existing widgets (default when `position` is omitted). `After` — immediately after the widget identified by `widgetId`.","oneOf":[{"title":"WidgetPositionAfter","type":"object","required":["widgetId","type"],"properties":{"widgetId":{"title":"EntityID","description":"The ID of the widget.","type":"string"},"type":{"description":"Discriminator value for this variant. See the parent oneOf for the full set of values.","type":"string","const":"After"}}},{"title":"WidgetPositionBottom","type":"object","required":["type"],"properties":{"type":{"description":"Discriminator value for this variant. See the parent oneOf for the full set of values.","type":"string","const":"Bottom"}}},{"title":"WidgetPositionTop","type":"object","required":["type"],"properties":{"type":{"description":"Discriminator value for this variant. See the parent oneOf for the full set of values.","type":"string","const":"Top"}}}],"required":["type"],"discriminator":{"propertyName":"type","mapping":{"After":"#/components/schemas/WidgetPositionAfter","Bottom":"#/components/schemas/WidgetPositionBottom","Top":"#/components/schemas/WidgetPositionTop"}}},"description":{"description":"Optional long-form description.","type":"string"},"type":{"description":"Discriminator value for this variant. See the parent oneOf for the full set of values.","type":"string","enum":["FormField","Text","Image","File","Video","Embed","CrossLink"],"const":"File"}}},{"title":"UpdateWorkflowImageWidgetRequest","type":"object","required":["hiddenByDefault","type"],"properties":{"hiddenByDefault":{"description":"When `true`, the widget is hidden by default; conditional logic rules can reveal it at runtime. Defaults to `false`.","type":"boolean"},"position":{"title":"WidgetPosition","description":"Where to place this widget on the task. `Top` — before all existing widgets. `Bottom` — after all existing widgets (default when `position` is omitted). `After` — immediately after the widget identified by `widgetId`.","oneOf":[{"title":"WidgetPositionAfter","type":"object","required":["widgetId","type"],"properties":{"widgetId":{"title":"EntityID","description":"The ID of the widget.","type":"string"},"type":{"description":"Discriminator value for this variant. See the parent oneOf for the full set of values.","type":"string","const":"After"}}},{"title":"WidgetPositionBottom","type":"object","required":["type"],"properties":{"type":{"description":"Discriminator value for this variant. See the parent oneOf for the full set of values.","type":"string","const":"Bottom"}}},{"title":"WidgetPositionTop","type":"object","required":["type"],"properties":{"type":{"description":"Discriminator value for this variant. See the parent oneOf for the full set of values.","type":"string","const":"Top"}}}],"required":["type"],"discriminator":{"propertyName":"type","mapping":{"After":"#/components/schemas/WidgetPositionAfter","Bottom":"#/components/schemas/WidgetPositionBottom","Top":"#/components/schemas/WidgetPositionTop"}}},"caption":{"description":"Caption text rendered with the image.","type":"string"},"type":{"description":"Discriminator value for this variant. See the parent oneOf for the full set of values.","type":"string","enum":["FormField","Text","Image","File","Video","Embed","CrossLink"],"const":"Image"}}},{"title":"UpdateWorkflowTextWidgetRequest","type":"object","required":["hiddenByDefault","type"],"properties":{"hiddenByDefault":{"description":"When `true`, the widget is hidden by default; conditional logic rules can reveal it at runtime. Defaults to `false`.","type":"boolean"},"position":{"title":"WidgetPosition","description":"Where to place this widget on the task. `Top` — before all existing widgets. `Bottom` — after all existing widgets (default when `position` is omitted). `After` — immediately after the widget identified by `widgetId`.","oneOf":[{"title":"WidgetPositionAfter","type":"object","required":["widgetId","type"],"properties":{"widgetId":{"title":"EntityID","description":"The ID of the widget.","type":"string"},"type":{"description":"Discriminator value for this variant. See the parent oneOf for the full set of values.","type":"string","const":"After"}}},{"title":"WidgetPositionBottom","type":"object","required":["type"],"properties":{"type":{"description":"Discriminator value for this variant. See the parent oneOf for the full set of values.","type":"string","const":"Bottom"}}},{"title":"WidgetPositionTop","type":"object","required":["type"],"properties":{"type":{"description":"Discriminator value for this variant. See the parent oneOf for the full set of values.","type":"string","const":"Top"}}}],"required":["type"],"discriminator":{"propertyName":"type","mapping":{"After":"#/components/schemas/WidgetPositionAfter","Bottom":"#/components/schemas/WidgetPositionBottom","Top":"#/components/schemas/WidgetPositionTop"}}},"content":{"description":"Rich text content. May contain merge tags.","type":"string"},"type":{"description":"Discriminator value for this variant. See the parent oneOf for the full set of values.","type":"string","enum":["FormField","Text","Image","File","Video","Embed","CrossLink"],"const":"Text"}}},{"title":"UpdateWorkflowVideoWidgetRequest","type":"object","required":["hiddenByDefault","type"],"properties":{"hiddenByDefault":{"description":"When `true`, the widget is hidden by default; conditional logic rules can reveal it at runtime. Defaults to `false`.","type":"boolean"},"position":{"title":"WidgetPosition","description":"Where to place this widget on the task. `Top` — before all existing widgets. `Bottom` — after all existing widgets (default when `position` is omitted). `After` — immediately after the widget identified by `widgetId`.","oneOf":[{"title":"WidgetPositionAfter","type":"object","required":["widgetId","type"],"properties":{"widgetId":{"title":"EntityID","description":"The ID of the widget.","type":"string"},"type":{"description":"Discriminator value for this variant. See the parent oneOf for the full set of values.","type":"string","const":"After"}}},{"title":"WidgetPositionBottom","type":"object","required":["type"],"properties":{"type":{"description":"Discriminator value for this variant. See the parent oneOf for the full set of values.","type":"string","const":"Bottom"}}},{"title":"WidgetPositionTop","type":"object","required":["type"],"properties":{"type":{"description":"Discriminator value for this variant. See the parent oneOf for the full set of values.","type":"string","const":"Top"}}}],"required":["type"],"discriminator":{"propertyName":"type","mapping":{"After":"#/components/schemas/WidgetPositionAfter","Bottom":"#/components/schemas/WidgetPositionBottom","Top":"#/components/schemas/WidgetPositionTop"}}},"description":{"description":"Optional long-form description.","type":"string"},"url":{"description":"Target URL.","type":"string"},"type":{"description":"Discriminator value for this variant. See the parent oneOf for the full set of values.","type":"string","enum":["FormField","Text","Image","File","Video","Embed","CrossLink"],"const":"Video"}}}],"required":["type"],"discriminator":{"propertyName":"type","mapping":{"CrossLink":"#/components/schemas/UpdateWorkflowCrossLinkWidgetRequest","Embed":"#/components/schemas/UpdateWorkflowEmbedWidgetRequest","File":"#/components/schemas/UpdateWorkflowFileWidgetRequest","FormField":"#/components/schemas/UpdateFormFieldWidgetRequest","Image":"#/components/schemas/UpdateWorkflowImageWidgetRequest","Text":"#/components/schemas/UpdateWorkflowTextWidgetRequest","Video":"#/components/schemas/UpdateWorkflowVideoWidgetRequest"}}},"UpdateWorkflowCrossLinkWidgetRequest":{"title":"UpdateWorkflowCrossLinkWidgetRequest","type":"object","required":["hiddenByDefault","type"],"properties":{"hiddenByDefault":{"description":"When `true`, the widget is hidden by default; conditional logic rules can reveal it at runtime. Defaults to `false`.","type":"boolean"},"position":{"title":"WidgetPosition","description":"Where to place this widget on the task. `Top` — before all existing widgets. `Bottom` — after all existing widgets (default when `position` is omitted). `After` — immediately after the widget identified by `widgetId`.","oneOf":[{"title":"WidgetPositionAfter","type":"object","required":["widgetId","type"],"properties":{"widgetId":{"title":"EntityID","description":"The ID of the widget.","type":"string"},"type":{"description":"Discriminator value for this variant. See the parent oneOf for the full set of values.","type":"string","const":"After"}}},{"title":"WidgetPositionBottom","type":"object","required":["type"],"properties":{"type":{"description":"Discriminator value for this variant. See the parent oneOf for the full set of values.","type":"string","const":"Bottom"}}},{"title":"WidgetPositionTop","type":"object","required":["type"],"properties":{"type":{"description":"Discriminator value for this variant. See the parent oneOf for the full set of values.","type":"string","const":"Top"}}}],"required":["type"],"discriminator":{"propertyName":"type","mapping":{"After":"#/components/schemas/WidgetPositionAfter","Bottom":"#/components/schemas/WidgetPositionBottom","Top":"#/components/schemas/WidgetPositionTop"}}},"linkedTemplateId":{"title":"EntityID","description":"The ID of the linked workflow or page that this CrossLink widget points to.","type":"string"},"type":{"description":"Discriminator value for this variant. See the parent oneOf for the full set of values.","type":"string","enum":["FormField","Text","Image","File","Video","Embed","CrossLink"],"const":"CrossLink"}}},"UpdateWorkflowEmbedWidgetRequest":{"title":"UpdateWorkflowEmbedWidgetRequest","type":"object","required":["hiddenByDefault","type"],"properties":{"hiddenByDefault":{"description":"When `true`, the widget is hidden by default; conditional logic rules can reveal it at runtime. Defaults to `false`.","type":"boolean"},"position":{"title":"WidgetPosition","description":"Where to place this widget on the task. `Top` — before all existing widgets. `Bottom` — after all existing widgets (default when `position` is omitted). `After` — immediately after the widget identified by `widgetId`.","oneOf":[{"title":"WidgetPositionAfter","type":"object","required":["widgetId","type"],"properties":{"widgetId":{"title":"EntityID","description":"The ID of the widget.","type":"string"},"type":{"description":"Discriminator value for this variant. See the parent oneOf for the full set of values.","type":"string","const":"After"}}},{"title":"WidgetPositionBottom","type":"object","required":["type"],"properties":{"type":{"description":"Discriminator value for this variant. See the parent oneOf for the full set of values.","type":"string","const":"Bottom"}}},{"title":"WidgetPositionTop","type":"object","required":["type"],"properties":{"type":{"description":"Discriminator value for this variant. See the parent oneOf for the full set of values.","type":"string","const":"Top"}}}],"required":["type"],"discriminator":{"propertyName":"type","mapping":{"After":"#/components/schemas/WidgetPositionAfter","Bottom":"#/components/schemas/WidgetPositionBottom","Top":"#/components/schemas/WidgetPositionTop"}}},"url":{"description":"Target URL.","type":"string","maxLength":4000},"type":{"description":"Discriminator value for this variant. See the parent oneOf for the full set of values.","type":"string","enum":["FormField","Text","Image","File","Video","Embed","CrossLink"],"const":"Embed"}}},"UpdateWorkflowFileWidgetRequest":{"title":"UpdateWorkflowFileWidgetRequest","type":"object","required":["hiddenByDefault","type"],"properties":{"hiddenByDefault":{"description":"When `true`, the widget is hidden by default; conditional logic rules can reveal it at runtime. Defaults to `false`.","type":"boolean"},"position":{"title":"WidgetPosition","description":"Where to place this widget on the task. `Top` — before all existing widgets. `Bottom` — after all existing widgets (default when `position` is omitted). `After` — immediately after the widget identified by `widgetId`.","oneOf":[{"title":"WidgetPositionAfter","type":"object","required":["widgetId","type"],"properties":{"widgetId":{"title":"EntityID","description":"The ID of the widget.","type":"string"},"type":{"description":"Discriminator value for this variant. See the parent oneOf for the full set of values.","type":"string","const":"After"}}},{"title":"WidgetPositionBottom","type":"object","required":["type"],"properties":{"type":{"description":"Discriminator value for this variant. See the parent oneOf for the full set of values.","type":"string","const":"Bottom"}}},{"title":"WidgetPositionTop","type":"object","required":["type"],"properties":{"type":{"description":"Discriminator value for this variant. See the parent oneOf for the full set of values.","type":"string","const":"Top"}}}],"required":["type"],"discriminator":{"propertyName":"type","mapping":{"After":"#/components/schemas/WidgetPositionAfter","Bottom":"#/components/schemas/WidgetPositionBottom","Top":"#/components/schemas/WidgetPositionTop"}}},"description":{"description":"Optional long-form description.","type":"string"},"type":{"description":"Discriminator value for this variant. See the parent oneOf for the full set of values.","type":"string","enum":["FormField","Text","Image","File","Video","Embed","CrossLink"],"const":"File"}}},"UpdateWorkflowImageWidgetRequest":{"title":"UpdateWorkflowImageWidgetRequest","type":"object","required":["hiddenByDefault","type"],"properties":{"hiddenByDefault":{"description":"When `true`, the widget is hidden by default; conditional logic rules can reveal it at runtime. Defaults to `false`.","type":"boolean"},"position":{"title":"WidgetPosition","description":"Where to place this widget on the task. `Top` — before all existing widgets. `Bottom` — after all existing widgets (default when `position` is omitted). `After` — immediately after the widget identified by `widgetId`.","oneOf":[{"title":"WidgetPositionAfter","type":"object","required":["widgetId","type"],"properties":{"widgetId":{"title":"EntityID","description":"The ID of the widget.","type":"string"},"type":{"description":"Discriminator value for this variant. See the parent oneOf for the full set of values.","type":"string","const":"After"}}},{"title":"WidgetPositionBottom","type":"object","required":["type"],"properties":{"type":{"description":"Discriminator value for this variant. See the parent oneOf for the full set of values.","type":"string","const":"Bottom"}}},{"title":"WidgetPositionTop","type":"object","required":["type"],"properties":{"type":{"description":"Discriminator value for this variant. See the parent oneOf for the full set of values.","type":"string","const":"Top"}}}],"required":["type"],"discriminator":{"propertyName":"type","mapping":{"After":"#/components/schemas/WidgetPositionAfter","Bottom":"#/components/schemas/WidgetPositionBottom","Top":"#/components/schemas/WidgetPositionTop"}}},"caption":{"description":"Caption text rendered with the image.","type":"string"},"type":{"description":"Discriminator value for this variant. See the parent oneOf for the full set of values.","type":"string","enum":["FormField","Text","Image","File","Video","Embed","CrossLink"],"const":"Image"}}},"UpdateWorkflowIncomingWebhookRequest":{"title":"UpdateWorkflowIncomingWebhookRequest","type":"object","required":["name","automationApp","status","config"],"properties":{"name":{"description":"Display name.","type":"string"},"automationApp":{"type":"string"},"status":{"description":"Incoming webhook lifecycle.\n\n- `Active` — the webhook accepts and processes incoming payloads.\n- `Disabled` — the URL still resolves but payloads are dropped without triggering a run.\n- `Deleted` — the webhook is soft-deleted; only returned by endpoints that explicitly include deleted records.\n","type":"string","enum":["Active","Disabled","Deleted"]},"config":{"title":"CreateWorkflowIncomingWebhookConfigRequest","description":"Field-specific configuration. Shape depends on `fieldType`.","type":"object","properties":{"properties":{"description":"Mapping from workflow-run property names (e.g. `Name`, `DueDate`, `Assignees`) to JSONPath expressions in the incoming payload.","type":"object","additionalProperties":{"type":"string"}},"formFields":{"description":"Mapping from form-field IDs to JSONPath expressions in the incoming payload.","type":"object","additionalProperties":{"type":"string"}}}}}},"UpdateWorkflowLogicRuleRequest":{"title":"UpdateWorkflowLogicRuleRequest","type":"object","required":["condition","action","targets"],"properties":{"condition":{"title":"OrCondition","type":"object","properties":{"or":{"description":"List of AND-groups; the OR-condition matches if any group matches.","type":"array","items":{"title":"AndGroup","type":"object","properties":{"and":{"description":"List of conditions that must all match (AND combined within a group).","type":"array","items":{"title":"LeafCondition","type":"object","required":["widgetId","operator"],"properties":{"widgetId":{"title":"EntityID","description":"The ID of the widget.","type":"string"},"operator":{"description":"Comparison operator (e.g. `Is`, `IsNot`, `Contains`, `IsEmpty`).","type":"string"},"value":{"description":"The option's stored value.","type":"string"}}}}}}}}},"action":{"title":"WorkflowLogicRuleAction","description":"What the rule does to its targets when conditions match. `Show` reveals tasks/widgets that are hidden by default. `Hide` conceals tasks/widgets that are visible by default.","type":"string","enum":["Show","Hide"]},"targets":{"title":"PublicApiTargets","type":"object","properties":{"taskIds":{"description":"IDs of the tasks this rule applies to.","type":"array","items":{"title":"EntityID","type":"string"}},"widgetIds":{"description":"IDs of the widgets (form fields) this rule applies to.","type":"array","items":{"title":"EntityID","type":"string"}}}},"position":{"title":"RulePosition","description":"Where to place this logic rule in the workflow revision. `Top` — before all existing rules. `Bottom` — after all existing rules (default when `position` is omitted). `After` — immediately after the rule identified by `ruleId`.","oneOf":[{"title":"RulePositionAfter","type":"object","required":["ruleId","type"],"properties":{"ruleId":{"title":"EntityID","type":"string"},"type":{"description":"Discriminator value for this variant. See the parent oneOf for the full set of values.","type":"string","const":"After"}}},{"title":"RulePositionBottom","type":"object","required":["type"],"properties":{"type":{"description":"Discriminator value for this variant. See the parent oneOf for the full set of values.","type":"string","const":"Bottom"}}},{"title":"RulePositionTop","type":"object","required":["type"],"properties":{"type":{"description":"Discriminator value for this variant. See the parent oneOf for the full set of values.","type":"string","const":"Top"}}}],"required":["type"],"discriminator":{"propertyName":"type","mapping":{"After":"#/components/schemas/RulePositionAfter","Bottom":"#/components/schemas/RulePositionBottom","Top":"#/components/schemas/RulePositionTop"}}},"description":{"description":"Optional long-form description.","type":"string","maxLength":255}}},"UpdateWorkflowRequest":{"title":"UpdateWorkflowRequest","type":"object","required":["name","folderId","shareLevel","runLinkShareLevel","allowComments","sharedRunsByDefault"],"properties":{"name":{"description":"Display name.","type":"string","maxLength":255,"minLength":1},"description":{"description":"Optional free-form description of the workflow.","type":"string","maxLength":255},"folderId":{"description":"The ID of the Folder","examples":["ujB3DsVb3YEBoX6Zj6Zxxw"],"type":"string"},"shareLevel":{"description":"Controls who can access this workflow. `None` — only organization members can view and run this workflow (when permitted). `Overview` — used only for Forms; viewers see the form name and background image but not the content. `View` — anyone with the link can view this workflow. `Run` — anyone with the link can view and run this workflow. Setting this to any value other than `None` may return `403 Forbidden` (\"too new\") — anti-spam protection blocks organizations without an eligible paid subscription outright, and blocks startup-plan organizations younger than 7 days.","type":"string","enum":["None","Overview","View","Run"]},"runLinkShareLevel":{"description":"Controls who can run this workflow via a run link. `Organization` — only authenticated organization members with run permission can use the run link. `Public` — anyone with the link can run the workflow without a Process Street account; all runs created from a public link are automatically shared. Setting this to `Public` may return `403 Forbidden` (\"too new\") — anti-spam protection blocks organizations without an eligible paid subscription outright, and blocks startup-plan organizations younger than 7 days.","type":"string","enum":["Organization","Public"]},"allowComments":{"description":"When `true`, comments are enabled on workflow runs created from this workflow.","type":"boolean"},"sharedRunsByDefault":{"description":"When `true`, new workflow runs created from this workflow have their share link enabled by default. Recipients of the share link can fill in form fields and complete tasks without a Process Street account.","type":"boolean"},"referenceId":{"description":"Version prefix used when version control is enabled on this workflow. Combined with the version number to form the full version identifier.","type":"string","maxLength":100}}},"UpdateWorkflowRevisionRequest":{"title":"UpdateWorkflowRevisionRequest","type":"object","required":["changeType"],"properties":{"changeType":{"title":"ChangeType","description":"Whether the changes in this revision are significant. `Material` — substantial changes; bumps the major version (e.g. `1.3` → `2.0`). `NonMaterial` — minor edits like wording or typo fixes; bumps the minor version (e.g. `1.3` → `1.4`).","type":"string","enum":["Material","NonMaterial"]},"changeExplanation":{"description":"Optional human-readable explanation of what changed in this revision; surfaced in revision history.","type":"string","maxLength":1000},"defaultChecklistName":{"description":"Default name applied to new workflow runs created from this revision when the caller does not provide one. Supports merge tags (e.g. `{{form.customer_name}}`).","type":"string","maxLength":500}}},"UpdateWorkflowRunRequest":{"title":"UpdateWorkflowRunRequest","type":"object","required":["name","status","shared"],"properties":{"name":{"description":"The new name for the Workflow Run","type":"string"},"status":{"description":"The status for the Workflow Run","type":"string","enum":["Active","Completed","Archived","Deleted"]},"shared":{"description":"Whether or not the Workflow Run is shared (i.e. can be seen without logging in)","type":"boolean"},"dueDate":{"description":"The due date for the Workflow Run","type":"string","format":"date-time"}}},"UpdateWorkflowTaskRequest":{"title":"UpdateWorkflowTaskRequest","type":"object","required":["stop","hiddenByDefault"],"properties":{"name":{"description":"Display name.","type":"string","maxLength":255},"stop":{"type":"boolean"},"hiddenByDefault":{"description":"When `true`, the widget is hidden by default; conditional logic rules can reveal it at runtime. Defaults to `false`.","type":"boolean"},"dueOffset":{"type":"string"},"position":{"title":"TaskPosition","description":"Where to place this task in the workflow revision. `Top` — before all existing tasks. `Bottom` — after all existing tasks (default when `position` is omitted). `After` — immediately after the task identified by `taskId`.","oneOf":[{"title":"TaskPositionAfter","type":"object","required":["taskId","type"],"properties":{"taskId":{"title":"EntityID","description":"The ID of the Task.","type":"string"},"type":{"description":"Discriminator value for this variant. See the parent oneOf for the full set of values.","type":"string","const":"After"}}},{"title":"TaskPositionBottom","type":"object","required":["type"],"properties":{"type":{"description":"Discriminator value for this variant. See the parent oneOf for the full set of values.","type":"string","const":"Bottom"}}},{"title":"TaskPositionTop","type":"object","required":["type"],"properties":{"type":{"description":"Discriminator value for this variant. See the parent oneOf for the full set of values.","type":"string","const":"Top"}}}],"required":["type"],"discriminator":{"propertyName":"type","mapping":{"After":"#/components/schemas/TaskPositionAfter","Bottom":"#/components/schemas/TaskPositionBottom","Top":"#/components/schemas/TaskPositionTop"}}}}},"UpdateWorkflowTextWidgetRequest":{"title":"UpdateWorkflowTextWidgetRequest","type":"object","required":["hiddenByDefault","type"],"properties":{"hiddenByDefault":{"description":"When `true`, the widget is hidden by default; conditional logic rules can reveal it at runtime. Defaults to `false`.","type":"boolean"},"position":{"title":"WidgetPosition","description":"Where to place this widget on the task. `Top` — before all existing widgets. `Bottom` — after all existing widgets (default when `position` is omitted). `After` — immediately after the widget identified by `widgetId`.","oneOf":[{"title":"WidgetPositionAfter","type":"object","required":["widgetId","type"],"properties":{"widgetId":{"title":"EntityID","description":"The ID of the widget.","type":"string"},"type":{"description":"Discriminator value for this variant. See the parent oneOf for the full set of values.","type":"string","const":"After"}}},{"title":"WidgetPositionBottom","type":"object","required":["type"],"properties":{"type":{"description":"Discriminator value for this variant. See the parent oneOf for the full set of values.","type":"string","const":"Bottom"}}},{"title":"WidgetPositionTop","type":"object","required":["type"],"properties":{"type":{"description":"Discriminator value for this variant. See the parent oneOf for the full set of values.","type":"string","const":"Top"}}}],"required":["type"],"discriminator":{"propertyName":"type","mapping":{"After":"#/components/schemas/WidgetPositionAfter","Bottom":"#/components/schemas/WidgetPositionBottom","Top":"#/components/schemas/WidgetPositionTop"}}},"content":{"description":"Rich text content. May contain merge tags.","type":"string"},"type":{"description":"Discriminator value for this variant. See the parent oneOf for the full set of values.","type":"string","enum":["FormField","Text","Image","File","Video","Embed","CrossLink"],"const":"Text"}}},"UpdateWorkflowVideoWidgetRequest":{"title":"UpdateWorkflowVideoWidgetRequest","type":"object","required":["hiddenByDefault","type"],"properties":{"hiddenByDefault":{"description":"When `true`, the widget is hidden by default; conditional logic rules can reveal it at runtime. Defaults to `false`.","type":"boolean"},"position":{"title":"WidgetPosition","description":"Where to place this widget on the task. `Top` — before all existing widgets. `Bottom` — after all existing widgets (default when `position` is omitted). `After` — immediately after the widget identified by `widgetId`.","oneOf":[{"title":"WidgetPositionAfter","type":"object","required":["widgetId","type"],"properties":{"widgetId":{"title":"EntityID","description":"The ID of the widget.","type":"string"},"type":{"description":"Discriminator value for this variant. See the parent oneOf for the full set of values.","type":"string","const":"After"}}},{"title":"WidgetPositionBottom","type":"object","required":["type"],"properties":{"type":{"description":"Discriminator value for this variant. See the parent oneOf for the full set of values.","type":"string","const":"Bottom"}}},{"title":"WidgetPositionTop","type":"object","required":["type"],"properties":{"type":{"description":"Discriminator value for this variant. See the parent oneOf for the full set of values.","type":"string","const":"Top"}}}],"required":["type"],"discriminator":{"propertyName":"type","mapping":{"After":"#/components/schemas/WidgetPositionAfter","Bottom":"#/components/schemas/WidgetPositionBottom","Top":"#/components/schemas/WidgetPositionTop"}}},"description":{"description":"Optional long-form description.","type":"string"},"url":{"description":"Target URL.","type":"string"},"type":{"description":"Discriminator value for this variant. See the parent oneOf for the full set of values.","type":"string","enum":["FormField","Text","Image","File","Video","Embed","CrossLink"],"const":"Video"}}},"UploadAttachmentRequest":{"title":"UploadAttachmentRequest","type":"object","required":["workflowRunId","taskId"],"properties":{"workflowRunId":{"title":"EntityID","description":"The ID of the Workflow Run.","type":"string"},"taskId":{"title":"EntityID","description":"The ID of the Task.","type":"string"},"file":{"description":"Uploaded file reference. Use the upload endpoint to attach content.","type":"string","format":"binary"},"fileBase64":{"title":"FileBase64","type":"object","required":["content","filename"],"properties":{"content":{"description":"Rich text content. May contain merge tags.","type":"string"},"filename":{"type":"string"}}},"fileUploadId":{"type":"string"}}},"UploadFormFieldValueRequest":{"title":"UploadFormFieldValueRequest","type":"object","properties":{"file":{"description":"Uploaded file reference. Use the upload endpoint to attach content.","type":"array","items":{"type":"string","format":"binary"}},"fileBase64":{"type":"array","items":{"title":"FileBase64","type":"object","required":["content","filename"],"properties":{"content":{"description":"Rich text content. May contain merge tags.","type":"string"},"filename":{"type":"string"}}}},"fileUploadId":{"type":"string"}}},"UploadWidgetFileRequest":{"title":"UploadWidgetFileRequest","type":"object","properties":{"file":{"description":"Uploaded file reference. Use the upload endpoint to attach content.","type":"string","format":"binary"},"fileBase64":{"title":"FileBase64","type":"object","required":["content","filename"],"properties":{"content":{"description":"Rich text content. May contain merge tags.","type":"string"},"filename":{"type":"string"}}},"fileUploadId":{"type":"string"}}},"UpsertApprovalRequest":{"title":"UpsertApprovalRequest","type":"object","required":["approvalTaskId","status"],"properties":{"approvalTaskId":{"examples":["gk859Y-hgloBoX6ZoTZy8A"],"type":"string"},"subjectTaskId":{"examples":["gk859Y-hgloBoX6ZoTZy8A"],"type":"string"},"status":{"description":"Outcome of an approval task review.\n\n- `Approved` — the reviewer accepted the subject task(s).\n- `Rejected` — the reviewer rejected; subject tasks return to the assignee for rework.\n","type":"string","enum":["Approved","Rejected"]},"comment":{"type":"string"}}},"Uri":{"title":"Uri","description":"URL of the linked resource.","examples":["https://api.process.st/api/v1.1/resource/XXX"],"type":"string"},"VariableType":{"title":"VariableType","description":"The kind of merge tag variable this is.\n\n- `Standard` — built-in variable like `{{workflow.name}}` or `{{run.startedDate}}`.\n- `FormField` — resolves to a form field value on the workflow run.\n- `DataSet` — resolves to a column from a linked data set row.\n- `EmailTrigger` — populated from an inbound email that triggered the workflow run.\n- `DocumentReview` — available on workflows using the Document Approvals feature.\n","type":"string","enum":["Standard","FormField","DataSet","EmailTrigger","DocumentReview"]},"VariableType1":{"title":"VariableType","description":"The kind of merge tag variable this is.\n\n- `Standard` — built-in variable like `{{workflow.name}}` or `{{run.startedDate}}`.\n- `FormField` — resolves to a form field value on the workflow run.\n- `DataSet` — resolves to a column from a linked data set row.\n- `EmailTrigger` — populated from an inbound email that triggered the workflow run.\n- `DocumentReview` — available on workflows using the Document Approvals feature\n  (see https://www.process.st/help/docs/document-approvals/).\n","type":"string","enum":["Standard","FormField","DataSet","EmailTrigger","DocumentReview"]},"Visibility":{"title":"Visibility","description":"Who can see this one-off task. `Private` — only the creator and assignees. `Public` — visible to anyone in the organization.","type":"string","enum":["Private","Public"]},"WebhookResponse":{"title":"WebhookResponse","type":"object","required":["id"],"properties":{"id":{"description":"The ID of the Webhook","examples":["vY_E4R4bPzUBoX6Zm2N3Dg"],"type":"string"},"links":{"description":"Navigable HATEOAS links to related resources. Each entry has a `name` (RFC-5988 relation), an `href` URL, and a `type` (`Api` or `App`).","type":"array","items":{"title":"Link","description":"A HATEOAS link to a related resource. Use these to navigate between resources without constructing URLs by hand.","type":"object","required":["name","href","type"],"properties":{"name":{"description":"Standard link relation name (RFC 5988) indicating this link's role. Common values include `self`, `edit`, `related`, `previous`, `next`.","type":"string"},"href":{"title":"Uri","description":"URL of the linked resource.","examples":["https://api.process.st/api/v1.1/resource/XXX"],"type":"string"},"rel":{"description":"Optional. The kind of resource this link points to (e.g. `Workflow`, `Task`, `Comment`).","type":"string","enum":["Approval Task","Approvals","Assignees","Comment","Data Set Records","Data Sets","Form Field Values","Subject Task","Task","Tasks","Users","Webhook","Workflow","Workflow Run"]},"type":{"description":"Whether this link targets an API endpoint or a Process Street app URL. `Api` — a callable API endpoint you can fetch directly. `App` — a browser-facing URL in the Process Street UI.","type":"string","enum":["Api","App"]}}}}}},"Weekly":{"title":"Weekly","type":"object","required":["interval","weekDay","frequency"],"properties":{"interval":{"description":"Recurrence interval. For a Weekly schedule with `interval=2`, fires every other week.","type":"integer","format":"int32"},"weekDay":{"description":"Day of the week the workflow runs on. Only used by `Weekly` rules.","type":"string","enum":["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"]},"frequency":{"description":"How often the workflow runs. The other fields on the rule depend on this value:\n`Daily` uses only `interval`, `Weekly` adds `weekDay`, `Monthly` adds `by`, `Yearly` uses only `interval`.","type":"string","enum":["Daily","Weekly","Monthly","Yearly"],"const":"Weekly"}}},"WidgetPosition":{"title":"WidgetPosition","description":"Where to place this widget on the task. `Top` — before all existing widgets. `Bottom` — after all existing widgets (default when `position` is omitted). `After` — immediately after the widget identified by `widgetId`.","oneOf":[{"title":"WidgetPositionAfter","type":"object","required":["widgetId","type"],"properties":{"widgetId":{"title":"EntityID","description":"The ID of the widget.","type":"string"},"type":{"description":"Discriminator value for this variant. See the parent oneOf for the full set of values.","type":"string","const":"After"}}},{"title":"WidgetPositionBottom","type":"object","required":["type"],"properties":{"type":{"description":"Discriminator value for this variant. See the parent oneOf for the full set of values.","type":"string","const":"Bottom"}}},{"title":"WidgetPositionTop","type":"object","required":["type"],"properties":{"type":{"description":"Discriminator value for this variant. See the parent oneOf for the full set of values.","type":"string","const":"Top"}}}],"required":["type"],"discriminator":{"propertyName":"type","mapping":{"After":"#/components/schemas/WidgetPositionAfter","Bottom":"#/components/schemas/WidgetPositionBottom","Top":"#/components/schemas/WidgetPositionTop"}}},"WidgetPositionAfter":{"title":"WidgetPositionAfter","type":"object","required":["widgetId","type"],"properties":{"widgetId":{"title":"EntityID","description":"The ID of the widget.","type":"string"},"type":{"description":"Discriminator value for this variant. See the parent oneOf for the full set of values.","type":"string","const":"After"}}},"WidgetPositionBottom":{"title":"WidgetPositionBottom","type":"object","required":["type"],"properties":{"type":{"description":"Discriminator value for this variant. See the parent oneOf for the full set of values.","type":"string","const":"Bottom"}}},"WidgetPositionTop":{"title":"WidgetPositionTop","type":"object","required":["type"],"properties":{"type":{"description":"Discriminator value for this variant. See the parent oneOf for the full set of values.","type":"string","const":"Top"}}},"WidgetType":{"title":"WidgetType","description":"Widget kind discriminator.\n\n- `FormField` — collects user input (Text, Number, Date, etc. — see `fieldType`).\n- `Text` — rich text content displayed on the task.\n- `Image` — image content displayed on the task.\n- `File` — downloadable file attached to the task.\n- `Video` — video content (uploaded or linked from a hosting service).\n- `Embed` — embedded external content via URL.\n- `CrossLink` — link to another workflow or page.\n","type":"string","enum":["FormField","Text","Image","File","Video","Embed","CrossLink"]},"WorkflowLogicRuleAction":{"title":"WorkflowLogicRuleAction","description":"What the rule does to its targets when conditions match. `Show` reveals tasks/widgets that are hidden by default. `Hide` conceals tasks/widgets that are visible by default.","type":"string","enum":["Show","Hide"]},"WorkflowPermissionEntry":{"title":"WorkflowPermissionEntry","type":"object","required":["email","accessLevel"],"properties":{"email":{"description":"Email address.","type":"string"},"accessLevel":{"description":"Access level granted to a user or group on this workflow. `Edit` — edit the workflow, run new workflow runs, and view all runs created from it. `EditViewOwn` — edit the workflow and run new runs, but only view runs assigned to them (available on some plans). `ViewAll` — view the workflow and all runs, plus run new runs; cannot edit the workflow. `Run` — view the workflow, run new runs, and view runs assigned to them. `View` — view the workflow and only runs assigned to them; cannot run.","type":"string","enum":["Edit","EditViewOwn","ViewAll","Run","View"]}}},"Yearly":{"title":"Yearly","type":"object","required":["interval","frequency"],"properties":{"interval":{"description":"Recurrence interval. For a Weekly schedule with `interval=2`, fires every other week.","type":"integer","format":"int32"},"frequency":{"description":"How often the workflow runs. The other fields on the rule depend on this value:\n`Daily` uses only `interval`, `Weekly` adds `weekDay`, `Monthly` adds `by`, `Yearly` uses only `interval`.","type":"string","enum":["Daily","Weekly","Monthly","Yearly"],"const":"Yearly"}}}},"securitySchemes":{"apiKeyAuth":{"type":"apiKey","name":"X-API-Key","in":"header"},"httpAuth":{"type":"http","description":"Bearer token (beta)","scheme":"bearer"}}},"x-tagGroups":[{"name":"Workflows","tags":["Workflows","Workflow Revisions","Form Fields","Workflow Logic Rules","Workflow Tasks","Workflow Task Assignment Rules","Workflow Widgets","Workflow Due Date Rules","Workflow Task Due Date Rules","Workflow Incoming Webhooks","Scheduled Workflows"]},{"name":"Workflow Runs","tags":["Workflow Runs","Tasks","Form Field Values","Comments","Attachments"]},{"name":"Pages","tags":["Pages","Page Revisions","Page Widgets"]},{"name":"Data Sets","tags":["Data Sets","Data Set Incoming Webhooks"]},{"name":"Other","tags":["Folders","One-Off Tasks","Users","Webhooks","File Uploads","Utilities","My Work"]}]}