openapi: 3.0.1
info:
  contact:
    email: platformsupport@workiva.com
    name: Workiva Inc
    url: https://www.workiva.com
  description: |
    The Connected Processes API allows users to create, modify and run processes.
    Key to understanding connected processes is understanding how processes are connected
    to actions and tasks.\n\n
    Process: A process refers to a collection of jobs that need to be performed to achieve
    a desired result. In Connected Processes, each process is associated with a tree structure
    defining the execution order for the process' jobs.\n
    Process Instance: A process instance is an individual execution of a process.
    There is a 1:N relationship between a Process and a Process Instance.\n
    Job: Each process is defined as a collection of job's that are organized in a
    tree structure.\n
    Job Instance: A job instance is an execution of a job. Similar to a Process,
    there is a 1:N relationship between a Job and a Job Instance.\n
    Argument: Each Job and Job Instance has arguments that define the input for each
    job / job instance. These arguments are associated with the Action that executes the Job.\n
    Action: An action is a unit of work. Actions are responsible for executing job instances.\n\n
    An example of using this API is available at
    https://wiki.atl.workiva.net/display/WORKFLOW/Creating+a+New+Process+Action
  title: Connected Processes API
  version: "1.0"
servers:
  - url: https://api.app.wdesk.com
    description: US
  - url: https://api.eu.wdesk.com
    description: EU
  - url: https://api.apac.wdesk.com
    description: APAC
security:
  - oauth: []
tags:
  - description: Create, modify, delete and run processes
    name: Process
  - description: Add and modify job runs
    name: JobRun
  - description: Retrieve and manage process runs
    name: ProcessRun
  - description: |
      Before your application can access private data using other Workiva APIs, it must obtain an access token that grants access to those APIs.

      Use the IAM REST API endpoint to exchange your OAuth credentials (client_id and client_secret) for a token.
    name: IAM
paths:
  /oauth2/token:
    post:
      summary: Retrieve a token
      description: |
        Include the client_id and client_secret in the body of the request as form encoded parameters. For example, the body of the request would be `grant_type=client_credentials&client_id=<client_id>&client_secret=<client_secret>`. The client can optionally specify a `scope` parameter to limit the scope of the returned [access token](ref:helpers#bearertoken). In turn, the server uses a `scope` response parameter to inform the client of the scope of the actual access token issued. The actual `scope` returned may not match the `scope` requested. Subsequent requests to Workiva APIs are authorized using the bearer token.
      operationId: tokenRequest
      security: []
      tags:
        - IAM
      requestBody:
        content:
          application/x-www-form-urlencoded:
            schema:
              properties:
                client_id:
                  description: A previously obtained client id.
                  type: string
                client_secret:
                  description: A previously obtained client secret.
                  type: string
                grant_type:
                  description: The grant type for the Bearer token. Must be client_credentials.
                  type: string
                  enum:
                    - client_credentials
                scope:
                  description: The scope of the access request.
                  type: string
              required:
                - grant_type
              type: object
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BearerToken'
          description: OK
          headers: {}
        "400":
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/IamError'
          description: Bad Request
          headers: {}
        "401":
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/IamError'
          description: Unauthorized
          headers: {}
  /processRuns/{processRunId}:
    get:
      description: Retrieve a ProcessRun (running instance of a Process) by its unique identifier.
      operationId: getProcessRun
      parameters:
        - description: Identifier of the ProcessRun
          in: path
          name: processRunId
          required: true
          schema:
            minLength: 1
            type: string
        - description: If true, excludes auto-generated certification child jobs from the response
          in: query
          name: excludeGeneratedJobs
          required: false
          schema:
            type: boolean
      responses:
        "200":
          content:
            application/json:
              examples:
                ProcessRun:
                  description: A running Process instance
                  value:
                    autoClose: true
                    businessDaysOfWeek:
                      - monday
                      - tuesday
                      - wednesday
                      - thursday
                      - friday
                    certAutoApprove: true
                    created:
                      dateTime: "2024-10-30T15:03:27Z"
                      user:
                        id: V1ZVd2VyFzU3NiQ1NDA4NjIzNzk2MjD
                    dueDate: "2024-12-31"
                    id: processrun-xyz789
                    ipmBetaEnabled: false
                    iwmOptOut: false
                    modified:
                      dateTime: "2024-10-30T15:03:27Z"
                      user:
                        id: V1ZVd2VyFzU3NiQ1NDA4NjIzNzk2MjD
                    name: Q4 2024 Financial Close
                    process: process-abc123
                    relativeDates: false
                    revision: 5
                    root:
                      children:
                        - jobRun:
                            action: sendTask
                            actionStatus: Completed
                            arguments:
                              sendTaskArgs:
                                assignee:
                                  id: user-abc123
                                  type: user
                                document: doc-xyz789
                                title: Review Q4 financial report
                              type: sendTask
                            id: jobrun-001
                            job: job-template-001
                            metadata:
                              sendTaskMetadata:
                                cancelCleanupComplete: false
                                permalink: https://app.wdesk.com/a/abc123/tasks/task-001
                                status: Completed
                                task: task-001
                                taskCancelled: false
                                taskCancelledNotificationSent: false
                              type: sendTask
                            ordinal: 0
                            readOnly: false
                            status: complete
                          type: job
                        - jobRun:
                            action: contentRequest
                            actionStatus: Waiting
                            arguments:
                              contentRequestArgs:
                                approver:
                                  id: manager-ghi789
                                  type: user
                                assignee:
                                  id: user-abc123
                                  type: user
                                document: doc-balance123
                                title: Update balance sheet
                              type: contentRequest
                            id: jobrun-002
                            job: job-template-002
                            metadata:
                              contentRequestMetadata:
                                cancelCleanupComplete: false
                                permalink: https://app.wdesk.com/a/abc123/tasks/task-002
                                status: Created
                                task: task-002
                                taskCancelled: false
                                taskCancelledNotificationSent: false
                              type: contentRequest
                            ordinal: 1
                            readOnly: false
                            status: waiting
                          type: job
                        - jobRun:
                            action: sendTask
                            actionStatus: Running
                            arguments:
                              sendTaskArgs:
                                assignee:
                                  id: user-abc123
                                  type: user
                                document: doc-final456
                                title: Final sign-off
                              type: sendTask
                            id: jobrun-003
                            job: job-template-003
                            ordinal: 2
                            readOnly: false
                            status: running
                          type: job
                      id: grouprun-root123
                      name: Main Workflow
                      parallel: false
                      readOnly: false
                      status: running
                    status: running
                    statusCounts:
                      Completed: 1
                      Running: 1
                      Waiting: 1
              schema:
                $ref: '#/components/schemas/ProcessRun'
          description: ProcessRun retrieved successfully
          headers: {}
        "400":
          content:
            application/json:
              examples:
                400 Error Response:
                  description: An invalid request.
                  value:
                    code: invalidUser
                    documentationUrl: http://developerdocs.example.com
                    message: The provided user is invalid.
                    meta:
                      argumentName: assignee
                      jobId: job1234
                    target: assignee
              schema:
                $ref: '#/components/schemas/Error'
          description: Invalid request
          headers: {}
        "401":
          content:
            application/json:
              examples:
                401 Unauthenticated Error Response:
                  description: An unauthenticated request.
                  value:
                    code: Unauthorized
                    message: Bad credentials
              schema:
                $ref: '#/components/schemas/Error'
          description: Unauthenticated request.
          headers: {}
        "403":
          content:
            application/json:
              examples:
                403 Forbidden Error Response:
                  description: Requestor does not have appropriate permissions for requested action.
                  value:
                    code: "403"
                    message: Forbidden
              schema:
                $ref: '#/components/schemas/Error'
          description: Unauthorized
          headers: {}
        "404":
          content:
            application/json:
              examples:
                404 Not Found Error Response:
                  description: A requested resource could not be found.
                  value:
                    code: "404"
                    message: Could not find process id 51bcc3ec3d0b4aadb69659e2a7ed767b
              schema:
                $ref: '#/components/schemas/Error'
          description: Not found
          headers: {}
        "409":
          content:
            application/json:
              examples:
                409 Collision Exception:
                  description: |
                    A request cannot be completed because it conflicts with the current state of the target
                    resource on the server.
                  value:
                    code: "409"
                    message: Letter is not in a status that supports submissions
              schema:
                $ref: '#/components/schemas/Error'
          description: Collision
          headers: {}
        "429":
          content:
            application/json:
              examples:
                429 Too Many Requests:
                  description: |
                    The client (like a web browser) has sent too many requests to a server in a given amount of time.
                  value:
                    code: "429"
                    message: Rate limit of 1000 per 60 seconds exceeded for listJobs requests. Retry request in 10 seconds.
              schema:
                $ref: '#/components/schemas/Error'
          description: Too Many Requests
          headers: {}
        "500":
          content:
            application/json:
              examples:
                500 Server Error:
                  description: |
                    The server encountered an unexpected condition that prevented it from fulfilling the request.
                    This is a generic error message, meaning the server cannot provide a more specific error code.
                  value:
                    code: "500"
                    message: unknown error
              schema:
                $ref: '#/components/schemas/Error'
          description: Server error
          headers: {}
        "503":
          content:
            application/json:
              examples:
                503 Server Error:
                  description: |
                    The server is currently unable to handle the request due to a temporary overload or scheduled
                    maintenance. This status code implies that the server is functional and understands the request,
                    but it cannot fulfill it at the moment.
                  value:
                    code: "503"
                    message: Service Unavailable.
              schema:
                $ref: '#/components/schemas/Error'
          description: Service Unavailable
          headers: {}
      summary: Get a ProcessRun by id
      tags:
        - ProcessRun
      security:
        - oauth:
            - file:read
  /processRuns/{processRunId}/jobRuns:
    post:
      description: Create one or more Job runs in a running Process. The Job runs can be added at a specific location in the Process run by specifying either a relative sibling Job run and/or a parent Group run. If neither is specified, the Job runs will be added to the end of the Process' job run list
      operationId: createJobRuns
      parameters:
        - description: Identifier of the process run
          in: path
          name: processRunId
          required: true
          schema:
            minLength: 1
            type: string
        - description: If present, the job runs will be created relative to this sibling job or group id in the target parent group.
          in: query
          name: relativeSiblingId
          required: false
          schema:
            type: string
        - description: If present, the newly created job runs will be placed in this group.
          in: query
          name: parentGroupId
          required: false
          schema:
            type: string
        - description: If true, new job runs will be inserted before relativeSiblingId. Defaults to true.
          in: query
          name: before
          required: false
          schema:
            type: string
      requestBody:
        content:
          application/json:
            examples:
              Job Runs:
                description: Job Runs to create in the existing Process Run
                value:
                  - action: sendTask
                    arguments:
                      sendTaskArgs:
                        assignee:
                          id: user123
                          type: user
                        dueDate: "2024-12-15"
                        title: Review Q4 financial report
                      type: sendTask
                    triggerType: whenEligible
                  - action: contentRequest
                    arguments:
                      contentRequestArgs:
                        approver:
                          id: manager456
                          type: user
                        assignee:
                          id: user123
                          type: user
                        document: doc456
                        instructions: Please fill out rows 1-10 in the spreadsheet.
                        section: section-id-123
                        title: Content Request 1
                      type: contentRequest
                    triggerType: whenEligible
            schema:
              items:
                $ref: '#/components/schemas/JobRun'
              type: array
        description: The list of job runs to create in the existing process run
        required: true
      responses:
        "201":
          content:
            application/json:
              examples:
                List of JobRuns:
                  description: A list of JobRuns successfully created
                  value:
                    - action: sendTask
                      arguments:
                        sendTaskArgs:
                          approver:
                            id: manager456
                            type: user
                          assignee:
                            id: user123
                            type: user
                          document: doc789
                          dueDate: "2024-12-15"
                          title: Review Q4 financial report
                        type: sendTask
                      id: job-new123
                      ordinal: 0
                      parent: groupinstance-parent-789
                      triggerType: whenEligible
              schema:
                items:
                  $ref: '#/components/schemas/JobRun'
                type: array
          description: Job runs created successfully
          headers: {}
        "400":
          content:
            application/json:
              examples:
                400 Error Response:
                  description: An invalid request.
                  value:
                    code: invalidUser
                    documentationUrl: http://developerdocs.example.com
                    message: The provided user is invalid.
                    meta:
                      argumentName: assignee
                      jobId: job1234
                    target: assignee
              schema:
                $ref: '#/components/schemas/Error'
          description: Invalid request
          headers: {}
        "401":
          content:
            application/json:
              examples:
                401 Unauthenticated Error Response:
                  description: An unauthenticated request.
                  value:
                    code: Unauthorized
                    message: Bad credentials
              schema:
                $ref: '#/components/schemas/Error'
          description: Unauthenticated request.
          headers: {}
        "403":
          content:
            application/json:
              examples:
                403 Forbidden Error Response:
                  description: Requestor does not have appropriate permissions for requested action.
                  value:
                    code: "403"
                    message: Forbidden
              schema:
                $ref: '#/components/schemas/Error'
          description: Unauthorized
          headers: {}
        "404":
          content:
            application/json:
              examples:
                404 Not Found Error Response:
                  description: A requested resource could not be found.
                  value:
                    code: "404"
                    message: Could not find process id 51bcc3ec3d0b4aadb69659e2a7ed767b
              schema:
                $ref: '#/components/schemas/Error'
          description: Not found
          headers: {}
        "409":
          content:
            application/json:
              examples:
                409 Collision Exception:
                  description: |
                    A request cannot be completed because it conflicts with the current state of the target
                    resource on the server.
                  value:
                    code: "409"
                    message: Letter is not in a status that supports submissions
              schema:
                $ref: '#/components/schemas/Error'
          description: Collision
          headers: {}
        "429":
          content:
            application/json:
              examples:
                429 Too Many Requests:
                  description: |
                    The client (like a web browser) has sent too many requests to a server in a given amount of time.
                  value:
                    code: "429"
                    message: Rate limit of 1000 per 60 seconds exceeded for listJobs requests. Retry request in 10 seconds.
              schema:
                $ref: '#/components/schemas/Error'
          description: Too Many Requests
          headers: {}
        "500":
          content:
            application/json:
              examples:
                500 Server Error:
                  description: |
                    The server encountered an unexpected condition that prevented it from fulfilling the request.
                    This is a generic error message, meaning the server cannot provide a more specific error code.
                  value:
                    code: "500"
                    message: unknown error
              schema:
                $ref: '#/components/schemas/Error'
          description: Server error
          headers: {}
        "503":
          content:
            application/json:
              examples:
                503 Server Error:
                  description: |
                    The server is currently unable to handle the request due to a temporary overload or scheduled
                    maintenance. This status code implies that the server is functional and understands the request,
                    but it cannot fulfill it at the moment.
                  value:
                    code: "503"
                    message: Service Unavailable.
              schema:
                $ref: '#/components/schemas/Error'
          description: Service Unavailable
          headers: {}
      summary: Create one or more Job runs in a running Process
      tags:
        - JobRun
      security:
        - oauth:
            - file:write
  /processes:
    post:
      description: Create a new Process with the specified configuration and Job hierarchy.
      operationId: createProcess
      requestBody:
        content:
          application/json:
            examples:
              Process with Send Task Job:
                description: A process with a send task job
                value:
                  autoClose: true
                  businessDaysOfWeek:
                    - monday
                    - tuesday
                    - wednesday
                    - thursday
                    - friday
                  businessStartDate: "2024-01-01"
                  certAutoApprove: false
                  dueDate: "2024-12-31"
                  name: Annual Performance Review Process
                  relativeDates: true
                  root:
                    children:
                      - job:
                          arguments:
                            sendTaskArgs:
                              approverDueDate: "2024-12-20"
                              approverUser: userId5678
                              assigneeUser: userId1234
                              dueDate: "2024-12-15"
                              instructions: Please complete your annual self-assessment by reviewing your accomplishments and setting goals for next year.
                              title: Complete Self-Assessment
                            type: sendTask
                        type: job
                    name: Performance Review Workflow
                    parallel: false
                    readOnly: false
                    triggerType: whenEligible
            schema:
              $ref: '#/components/schemas/Process'
        description: Process creation request with job hierarchy and configuration
        required: true
      responses:
        "201":
          content:
            application/json:
              examples:
                Created Process:
                  description: Newly created process definition
                  value:
                    autoClose: true
                    businessDaysOfWeek:
                      - monday
                      - tuesday
                      - wednesday
                      - thursday
                      - friday
                    businessStartDate: "2024-01-01"
                    certAutoApprove: false
                    created:
                      dateTime: "2019-10-30T15:03:27Z"
                      user:
                        id: V1ZVd2VyFzU3NiQ1NDA4NjIzNzk2MjD
                    dueDate: "2024-12-31"
                    id: process-new789
                    modified:
                      dateTime: "2019-10-30T15:03:27Z"
                      user:
                        id: V1ZVd2VyFzU3NiQ1NDA4NjIzNzk2MjD
                    name: Annual Performance Review Process
                    relativeDates: true
                    revision: 1
                    root:
                      children:
                        - job:
                            arguments:
                              type: sendTask
                            id: job-new123
                          type: job
                      id: root-group-new456
                      name: Performance Review Workflow
                      parallel: false
                      readOnly: false
                      triggerType: whenEligible
              schema:
                $ref: '#/components/schemas/Process'
          description: Process created successfully
          headers: {}
        "400":
          content:
            application/json:
              examples:
                400 Error Response:
                  description: An invalid request.
                  value:
                    code: invalidUser
                    documentationUrl: http://developerdocs.example.com
                    message: The provided user is invalid.
                    meta:
                      argumentName: assignee
                      jobId: job1234
                    target: assignee
              schema:
                $ref: '#/components/schemas/Error'
          description: Invalid request
          headers: {}
        "401":
          content:
            application/json:
              examples:
                401 Unauthenticated Error Response:
                  description: An unauthenticated request.
                  value:
                    code: Unauthorized
                    message: Bad credentials
              schema:
                $ref: '#/components/schemas/Error'
          description: Unauthenticated request.
          headers: {}
        "403":
          content:
            application/json:
              examples:
                403 Forbidden Error Response:
                  description: Requestor does not have appropriate permissions for requested action.
                  value:
                    code: "403"
                    message: Forbidden
              schema:
                $ref: '#/components/schemas/Error'
          description: Unauthorized
          headers: {}
        "404":
          content:
            application/json:
              examples:
                404 Not Found Error Response:
                  description: A requested resource could not be found.
                  value:
                    code: "404"
                    message: Could not find process id 51bcc3ec3d0b4aadb69659e2a7ed767b
              schema:
                $ref: '#/components/schemas/Error'
          description: Not found
          headers: {}
        "409":
          content:
            application/json:
              examples:
                409 Collision Exception:
                  description: |
                    A request cannot be completed because it conflicts with the current state of the target
                    resource on the server.
                  value:
                    code: "409"
                    message: Letter is not in a status that supports submissions
              schema:
                $ref: '#/components/schemas/Error'
          description: Collision
          headers: {}
        "429":
          content:
            application/json:
              examples:
                429 Too Many Requests:
                  description: |
                    The client (like a web browser) has sent too many requests to a server in a given amount of time.
                  value:
                    code: "429"
                    message: Rate limit of 1000 per 60 seconds exceeded for listJobs requests. Retry request in 10 seconds.
              schema:
                $ref: '#/components/schemas/Error'
          description: Too Many Requests
          headers: {}
        "500":
          content:
            application/json:
              examples:
                500 Server Error:
                  description: |
                    The server encountered an unexpected condition that prevented it from fulfilling the request.
                    This is a generic error message, meaning the server cannot provide a more specific error code.
                  value:
                    code: "500"
                    message: unknown error
              schema:
                $ref: '#/components/schemas/Error'
          description: Server error
          headers: {}
        "503":
          content:
            application/json:
              examples:
                503 Server Error:
                  description: |
                    The server is currently unable to handle the request due to a temporary overload or scheduled
                    maintenance. This status code implies that the server is functional and understands the request,
                    but it cannot fulfill it at the moment.
                  value:
                    code: "503"
                    message: Service Unavailable.
              schema:
                $ref: '#/components/schemas/Error'
          description: Service Unavailable
          headers: {}
      summary: Create a Process
      tags:
        - Process
      security:
        - oauth:
            - file:write
  /processes/{processId}:
    delete:
      description: Move a Process to trash by its id. The Process can be restored later.
      operationId: trashProcess
      parameters:
        - description: The process id
          in: path
          name: processId
          required: true
          schema:
            minLength: 1
            type: string
      responses:
        "204":
          description: Process deleted successfully
          headers: {}
        "400":
          content:
            application/json:
              examples:
                400 Error Response:
                  description: An invalid request.
                  value:
                    code: invalidUser
                    documentationUrl: http://developerdocs.example.com
                    message: The provided user is invalid.
                    meta:
                      argumentName: assignee
                      jobId: job1234
                    target: assignee
              schema:
                $ref: '#/components/schemas/Error'
          description: Invalid request
          headers: {}
        "401":
          content:
            application/json:
              examples:
                401 Unauthenticated Error Response:
                  description: An unauthenticated request.
                  value:
                    code: Unauthorized
                    message: Bad credentials
              schema:
                $ref: '#/components/schemas/Error'
          description: Unauthenticated request.
          headers: {}
        "403":
          content:
            application/json:
              examples:
                403 Forbidden Error Response:
                  description: Requestor does not have appropriate permissions for requested action.
                  value:
                    code: "403"
                    message: Forbidden
              schema:
                $ref: '#/components/schemas/Error'
          description: Unauthorized
          headers: {}
        "404":
          content:
            application/json:
              examples:
                404 Not Found Error Response:
                  description: A requested resource could not be found.
                  value:
                    code: "404"
                    message: Could not find process id 51bcc3ec3d0b4aadb69659e2a7ed767b
              schema:
                $ref: '#/components/schemas/Error'
          description: Not found
          headers: {}
        "409":
          content:
            application/json:
              examples:
                409 Collision Exception:
                  description: |
                    A request cannot be completed because it conflicts with the current state of the target
                    resource on the server.
                  value:
                    code: "409"
                    message: Letter is not in a status that supports submissions
              schema:
                $ref: '#/components/schemas/Error'
          description: Collision
          headers: {}
        "429":
          content:
            application/json:
              examples:
                429 Too Many Requests:
                  description: |
                    The client (like a web browser) has sent too many requests to a server in a given amount of time.
                  value:
                    code: "429"
                    message: Rate limit of 1000 per 60 seconds exceeded for listJobs requests. Retry request in 10 seconds.
              schema:
                $ref: '#/components/schemas/Error'
          description: Too Many Requests
          headers: {}
        "500":
          content:
            application/json:
              examples:
                500 Server Error:
                  description: |
                    The server encountered an unexpected condition that prevented it from fulfilling the request.
                    This is a generic error message, meaning the server cannot provide a more specific error code.
                  value:
                    code: "500"
                    message: unknown error
              schema:
                $ref: '#/components/schemas/Error'
          description: Server error
          headers: {}
        "503":
          content:
            application/json:
              examples:
                503 Server Error:
                  description: |
                    The server is currently unable to handle the request due to a temporary overload or scheduled
                    maintenance. This status code implies that the server is functional and understands the request,
                    but it cannot fulfill it at the moment.
                  value:
                    code: "503"
                    message: Service Unavailable.
              schema:
                $ref: '#/components/schemas/Error'
          description: Service Unavailable
          headers: {}
      summary: Delete a Process
      tags:
        - Process
      security:
        - oauth:
            - file:write
    get:
      description: Retrieve a Process by its id.
      operationId: getProcess
      parameters:
        - description: Identifier of the process
          in: path
          name: processId
          required: true
          schema:
            minLength: 1
            type: string
        - in: query
          name: excludeGeneratedJobs
          required: false
          schema:
            type: boolean
      responses:
        "200":
          content:
            application/json:
              examples:
                Process Definition:
                  description: A Process definition
                  value:
                    autoClose: true
                    businessDaysOfWeek:
                      - monday
                      - tuesday
                      - wednesday
                      - thursday
                      - friday
                    businessStartDate: "2024-01-01"
                    certAutoApprove: true
                    created:
                      dateTime: "2019-10-30T15:03:27Z"
                      user:
                        id: V1ZVd2VyFzU3NiQ1NDA4NjIzNzk2MjD
                    dueDate: "2024-12-31"
                    id: process-abc123
                    modified:
                      dateTime: "2019-10-30T15:03:27Z"
                      user:
                        id: V1ZVd2VyFzU3NiQ1NDA4NjIzNzk2MjD
                    name: Q4 2024 Financial Close Process
                    relativeDates: true
                    revision: 3
                    root:
                      children:
                        - job:
                            arguments:
                              type: sendTask
                            id: job-new123
                          type: job
                      id: root-group-123
                      name: Main Workflow
                      parallel: false
                      readOnly: false
                      triggerType: whenEligible
              schema:
                $ref: '#/components/schemas/Process'
          description: Process retrieved successfully
          headers: {}
        "400":
          content:
            application/json:
              examples:
                400 Error Response:
                  description: An invalid request.
                  value:
                    code: invalidUser
                    documentationUrl: http://developerdocs.example.com
                    message: The provided user is invalid.
                    meta:
                      argumentName: assignee
                      jobId: job1234
                    target: assignee
              schema:
                $ref: '#/components/schemas/Error'
          description: Invalid request
          headers: {}
        "401":
          content:
            application/json:
              examples:
                401 Unauthenticated Error Response:
                  description: An unauthenticated request.
                  value:
                    code: Unauthorized
                    message: Bad credentials
              schema:
                $ref: '#/components/schemas/Error'
          description: Unauthenticated request.
          headers: {}
        "403":
          content:
            application/json:
              examples:
                403 Forbidden Error Response:
                  description: Requestor does not have appropriate permissions for requested action.
                  value:
                    code: "403"
                    message: Forbidden
              schema:
                $ref: '#/components/schemas/Error'
          description: Unauthorized
          headers: {}
        "404":
          content:
            application/json:
              examples:
                404 Not Found Error Response:
                  description: A requested resource could not be found.
                  value:
                    code: "404"
                    message: Could not find process id 51bcc3ec3d0b4aadb69659e2a7ed767b
              schema:
                $ref: '#/components/schemas/Error'
          description: Not found
          headers: {}
        "409":
          content:
            application/json:
              examples:
                409 Collision Exception:
                  description: |
                    A request cannot be completed because it conflicts with the current state of the target
                    resource on the server.
                  value:
                    code: "409"
                    message: Letter is not in a status that supports submissions
              schema:
                $ref: '#/components/schemas/Error'
          description: Collision
          headers: {}
        "429":
          content:
            application/json:
              examples:
                429 Too Many Requests:
                  description: |
                    The client (like a web browser) has sent too many requests to a server in a given amount of time.
                  value:
                    code: "429"
                    message: Rate limit of 1000 per 60 seconds exceeded for listJobs requests. Retry request in 10 seconds.
              schema:
                $ref: '#/components/schemas/Error'
          description: Too Many Requests
          headers: {}
        "500":
          content:
            application/json:
              examples:
                500 Server Error:
                  description: |
                    The server encountered an unexpected condition that prevented it from fulfilling the request.
                    This is a generic error message, meaning the server cannot provide a more specific error code.
                  value:
                    code: "500"
                    message: unknown error
              schema:
                $ref: '#/components/schemas/Error'
          description: Server error
          headers: {}
        "503":
          content:
            application/json:
              examples:
                503 Server Error:
                  description: |
                    The server is currently unable to handle the request due to a temporary overload or scheduled
                    maintenance. This status code implies that the server is functional and understands the request,
                    but it cannot fulfill it at the moment.
                  value:
                    code: "503"
                    message: Service Unavailable.
              schema:
                $ref: '#/components/schemas/Error'
          description: Service Unavailable
          headers: {}
      summary: Get a Process by id
      tags:
        - Process
      security:
        - oauth:
            - file:read
    patch:
      description: Update top-level Process fields via JSON Patch.
      operationId: patchProcess
      parameters:
        - description: Identifier of the process
          in: path
          name: processId
          required: true
          schema:
            minLength: 1
            type: string
      requestBody:
        content:
          application/json-patch+json:
            examples:
              Update AutoClose and Cert Settings:
                description: Disable auto-close and enable cert auto-approve
                value:
                  - op: replace
                    path: /autoClose
                    value: false
                  - op: replace
                    path: /certAutoApprove
                    value: true
              Update Default Cert Reminders:
                description: Configure default reminders for certification signers
                value:
                  - op: replace
                    path: /defaultCertSignerReminders
                    value:
                      mode: custom
                      scheduledReminders:
                        - reminder:
                            body: Please complete your certification task.
                            subject: Certification Reminder
                          schedule:
                            relativeSchedule:
                              offsets:
                                - P1D
                                - P3D
                              time: 09:00:00
                              timezone: America/New_York
                            type: relative
              Update Process Name and Due Date:
                description: Update the process name and extend the due date
                value:
                  - op: replace
                    path: /name
                    value: Q4 2024 Financial Close Process - Updated
                  - op: replace
                    path: /dueDate
                    value: "2025-01-15T23:59:59Z"
              Update Root Group Settings:
                description: Change the root group's parallel execution mode and trigger type
                value:
                  - op: replace
                    path: /root/parallel
                    value: true
                  - op: replace
                    path: /root/triggerType
                    value: manual
            schema:
              $ref: '#/components/schemas/ProcessJSONPatchDocument'
        description: JSON Patch document for updating Process fields
        required: true
      responses:
        "200":
          content:
            application/json:
              examples:
                Updated Process:
                  description: Process after applying JSON Patch operations
                  value:
                    autoClose: false
                    certAutoApprove: true
                    created:
                      dateTime: "2019-10-30T15:03:27Z"
                      user:
                        id: V1ZVd2VyFzU3NiQ1NDA4NjIzNzk2MjD
                    dueDate: "2025-01-15"
                    id: process-abc123
                    modified:
                      dateTime: "2019-10-30T15:03:27Z"
                      user:
                        id: V1ZVd2VyFzU3NiQ1NDA4NjIzNzk2MjD
                    name: Q4 2024 Financial Close Process - Updated
                    relativeDates: false
                    revision: 4
                    root:
                      id: root-group-123
                      name: Main Workflow
                      parallel: false
                      readOnly: false
                      triggerType: whenEligible
              schema:
                $ref: '#/components/schemas/Process'
          description: Process updated successfully
          headers: {}
        "400":
          content:
            application/json:
              examples:
                400 Error Response:
                  description: An invalid request.
                  value:
                    code: invalidUser
                    documentationUrl: http://developerdocs.example.com
                    message: The provided user is invalid.
                    meta:
                      argumentName: assignee
                      jobId: job1234
                    target: assignee
              schema:
                $ref: '#/components/schemas/Error'
          description: Invalid request
          headers: {}
        "401":
          content:
            application/json:
              examples:
                401 Unauthenticated Error Response:
                  description: An unauthenticated request.
                  value:
                    code: Unauthorized
                    message: Bad credentials
              schema:
                $ref: '#/components/schemas/Error'
          description: Unauthenticated request.
          headers: {}
        "403":
          content:
            application/json:
              examples:
                403 Forbidden Error Response:
                  description: Requestor does not have appropriate permissions for requested action.
                  value:
                    code: "403"
                    message: Forbidden
              schema:
                $ref: '#/components/schemas/Error'
          description: Unauthorized
          headers: {}
        "404":
          content:
            application/json:
              examples:
                404 Not Found Error Response:
                  description: A requested resource could not be found.
                  value:
                    code: "404"
                    message: Could not find process id 51bcc3ec3d0b4aadb69659e2a7ed767b
              schema:
                $ref: '#/components/schemas/Error'
          description: Not found
          headers: {}
        "409":
          content:
            application/json:
              examples:
                409 Collision Exception:
                  description: |
                    A request cannot be completed because it conflicts with the current state of the target
                    resource on the server.
                  value:
                    code: "409"
                    message: Letter is not in a status that supports submissions
              schema:
                $ref: '#/components/schemas/Error'
          description: Collision
          headers: {}
        "429":
          content:
            application/json:
              examples:
                429 Too Many Requests:
                  description: |
                    The client (like a web browser) has sent too many requests to a server in a given amount of time.
                  value:
                    code: "429"
                    message: Rate limit of 1000 per 60 seconds exceeded for listJobs requests. Retry request in 10 seconds.
              schema:
                $ref: '#/components/schemas/Error'
          description: Too Many Requests
          headers: {}
        "500":
          content:
            application/json:
              examples:
                500 Server Error:
                  description: |
                    The server encountered an unexpected condition that prevented it from fulfilling the request.
                    This is a generic error message, meaning the server cannot provide a more specific error code.
                  value:
                    code: "500"
                    message: unknown error
              schema:
                $ref: '#/components/schemas/Error'
          description: Server error
          headers: {}
        "503":
          content:
            application/json:
              examples:
                503 Server Error:
                  description: |
                    The server is currently unable to handle the request due to a temporary overload or scheduled
                    maintenance. This status code implies that the server is functional and understands the request,
                    but it cannot fulfill it at the moment.
                  value:
                    code: "503"
                    message: Service Unavailable.
              schema:
                $ref: '#/components/schemas/Error'
          description: Service Unavailable
          headers: {}
      summary: Update a Process
      tags:
        - Process
      security:
        - oauth:
            - file:write
  /processes/{processId}/batchUpdates:
    post:
      description: Updates names for specified jobs and groups.
      operationId: batchUpdateProcess
      parameters:
        - description: Identifier of the process
          in: path
          name: processId
          required: true
          schema:
            minLength: 1
            type: string
      requestBody:
        content:
          application/json:
            examples:
              Bulk Update Job and Group Names:
                description: Update names for multiple jobs and groups in a single request
                value:
                  data:
                    - id: jobId123
                      newName: newJobTitle
                      type: jobName
                    - id: groupId123
                      newName: newGroupTitle
                      type: groupName
            schema:
              $ref: '#/components/schemas/BatchUpdate'
        description: Request containing jobs and groups to update the names on
        required: true
      responses:
        "200":
          content:
            application/json:
              examples:
                Updated Process:
                  description: Process after updating the root group's name
                  value:
                    autoClose: false
                    certAutoApprove: true
                    created:
                      dateTime: "2019-10-30T15:03:27Z"
                      user:
                        id: V1ZVd2VyFzU3NiQ1NDA4NjIzNzk2MjD
                    dueDate: "2025-01-15"
                    id: process-abc123
                    modified:
                      dateTime: "2025-10-30T15:03:27Z"
                      user:
                        id: V1ZVd2VyFzU3NiQ1NDA4NjIzNzk2MjD
                    name: Q4 2024 Financial Close Process - Updated
                    relativeDates: false
                    revision: 4
                    root:
                      id: root-group-123
                      name: Main Workflow Updated
                      parallel: false
                      readOnly: false
                      triggerType: whenEligible
              schema:
                $ref: '#/components/schemas/Process'
          description: Process updated successfully
          headers: {}
        "400":
          content:
            application/json:
              examples:
                400 Error Response:
                  description: An invalid request.
                  value:
                    code: invalidUser
                    documentationUrl: http://developerdocs.example.com
                    message: The provided user is invalid.
                    meta:
                      argumentName: assignee
                      jobId: job1234
                    target: assignee
              schema:
                $ref: '#/components/schemas/Error'
          description: Invalid request
          headers: {}
        "401":
          content:
            application/json:
              examples:
                401 Unauthenticated Error Response:
                  description: An unauthenticated request.
                  value:
                    code: Unauthorized
                    message: Bad credentials
              schema:
                $ref: '#/components/schemas/Error'
          description: Unauthenticated request.
          headers: {}
        "403":
          content:
            application/json:
              examples:
                403 Forbidden Error Response:
                  description: Requestor does not have appropriate permissions for requested action.
                  value:
                    code: "403"
                    message: Forbidden
              schema:
                $ref: '#/components/schemas/Error'
          description: Unauthorized
          headers: {}
        "404":
          content:
            application/json:
              examples:
                404 Not Found Error Response:
                  description: A requested resource could not be found.
                  value:
                    code: "404"
                    message: Could not find process id 51bcc3ec3d0b4aadb69659e2a7ed767b
              schema:
                $ref: '#/components/schemas/Error'
          description: Not found
          headers: {}
        "409":
          content:
            application/json:
              examples:
                409 Collision Exception:
                  description: |
                    A request cannot be completed because it conflicts with the current state of the target
                    resource on the server.
                  value:
                    code: "409"
                    message: Letter is not in a status that supports submissions
              schema:
                $ref: '#/components/schemas/Error'
          description: Collision
          headers: {}
        "429":
          content:
            application/json:
              examples:
                429 Too Many Requests:
                  description: |
                    The client (like a web browser) has sent too many requests to a server in a given amount of time.
                  value:
                    code: "429"
                    message: Rate limit of 1000 per 60 seconds exceeded for listJobs requests. Retry request in 10 seconds.
              schema:
                $ref: '#/components/schemas/Error'
          description: Too Many Requests
          headers: {}
        "500":
          content:
            application/json:
              examples:
                500 Server Error:
                  description: |
                    The server encountered an unexpected condition that prevented it from fulfilling the request.
                    This is a generic error message, meaning the server cannot provide a more specific error code.
                  value:
                    code: "500"
                    message: unknown error
              schema:
                $ref: '#/components/schemas/Error'
          description: Server error
          headers: {}
        "503":
          content:
            application/json:
              examples:
                503 Server Error:
                  description: |
                    The server is currently unable to handle the request due to a temporary overload or scheduled
                    maintenance. This status code implies that the server is functional and understands the request,
                    but it cannot fulfill it at the moment.
                  value:
                    code: "503"
                    message: Service Unavailable.
              schema:
                $ref: '#/components/schemas/Error'
          description: Service Unavailable
          headers: {}
      summary: Bulk update group and job names.
      tags:
        - Process
      security:
        - oauth:
            - file:write
  /processes/{processId}/restore:
    post:
      description: Restore a previously deleted Process from trash by its id.
      operationId: restoreProcessById
      parameters:
        - description: The process' id
          in: path
          name: processId
          required: true
          schema:
            minLength: 1
            type: string
      responses:
        "200":
          content:
            application/json:
              examples:
                Restored Process:
                  description: Process that has been restored from trash
                  value:
                    autoClose: true
                    certAutoApprove: true
                    created:
                      dateTime: "2019-10-30T15:03:27Z"
                      user:
                        id: V1ZVd2VyFzU3NiQ1NDA4NjIzNzk2MjD
                    dueDate: "2024-12-31"
                    id: process-abc123
                    modified:
                      dateTime: "2019-10-30T15:03:27Z"
                      user:
                        id: V1ZVd2VyFzU3NiQ1NDA4NjIzNzk2MjD
                    name: Q4 2024 Financial Close Process
                    relativeDates: false
                    revision: 6
                    root:
                      id: root-group-123
                      name: Main Workflow
                      parallel: false
                      readOnly: false
                      triggerType: whenEligible
              schema:
                $ref: '#/components/schemas/Process'
          description: Process restored successfully
          headers: {}
        "400":
          content:
            application/json:
              examples:
                400 Error Response:
                  description: An invalid request.
                  value:
                    code: invalidUser
                    documentationUrl: http://developerdocs.example.com
                    message: The provided user is invalid.
                    meta:
                      argumentName: assignee
                      jobId: job1234
                    target: assignee
              schema:
                $ref: '#/components/schemas/Error'
          description: Invalid request
          headers: {}
        "401":
          content:
            application/json:
              examples:
                401 Unauthenticated Error Response:
                  description: An unauthenticated request.
                  value:
                    code: Unauthorized
                    message: Bad credentials
              schema:
                $ref: '#/components/schemas/Error'
          description: Unauthenticated request.
          headers: {}
        "403":
          content:
            application/json:
              examples:
                403 Forbidden Error Response:
                  description: Requestor does not have appropriate permissions for requested action.
                  value:
                    code: "403"
                    message: Forbidden
              schema:
                $ref: '#/components/schemas/Error'
          description: Unauthorized
          headers: {}
        "404":
          content:
            application/json:
              examples:
                404 Not Found Error Response:
                  description: A requested resource could not be found.
                  value:
                    code: "404"
                    message: Could not find process id 51bcc3ec3d0b4aadb69659e2a7ed767b
              schema:
                $ref: '#/components/schemas/Error'
          description: Not found
          headers: {}
        "409":
          content:
            application/json:
              examples:
                409 Collision Exception:
                  description: |
                    A request cannot be completed because it conflicts with the current state of the target
                    resource on the server.
                  value:
                    code: "409"
                    message: Letter is not in a status that supports submissions
              schema:
                $ref: '#/components/schemas/Error'
          description: Collision
          headers: {}
        "429":
          content:
            application/json:
              examples:
                429 Too Many Requests:
                  description: |
                    The client (like a web browser) has sent too many requests to a server in a given amount of time.
                  value:
                    code: "429"
                    message: Rate limit of 1000 per 60 seconds exceeded for listJobs requests. Retry request in 10 seconds.
              schema:
                $ref: '#/components/schemas/Error'
          description: Too Many Requests
          headers: {}
        "500":
          content:
            application/json:
              examples:
                500 Server Error:
                  description: |
                    The server encountered an unexpected condition that prevented it from fulfilling the request.
                    This is a generic error message, meaning the server cannot provide a more specific error code.
                  value:
                    code: "500"
                    message: unknown error
              schema:
                $ref: '#/components/schemas/Error'
          description: Server error
          headers: {}
        "503":
          content:
            application/json:
              examples:
                503 Server Error:
                  description: |
                    The server is currently unable to handle the request due to a temporary overload or scheduled
                    maintenance. This status code implies that the server is functional and understands the request,
                    but it cannot fulfill it at the moment.
                  value:
                    code: "503"
                    message: Service Unavailable.
              schema:
                $ref: '#/components/schemas/Error'
          description: Service Unavailable
          headers: {}
      summary: Restore a Process
      tags:
        - Process
      security:
        - oauth:
            - file:write
  /processes/{processId}/run:
    post:
      description: Run an existing Process by its id, creating a new ProcessRun.
      operationId: runProcess
      parameters:
        - description: Identifier of the Process
          in: path
          name: processId
          required: true
          schema:
            minLength: 1
            type: string
      requestBody:
        content:
          application/json:
            examples:
              Process run options with an email being sent after Process completion or cancellation.:
                description: |
                  Process run options with an email being sent after Process completion or cancellation.
                value:
                  sendProcessCompleteEmail: true
            schema:
              $ref: '#/components/schemas/ProcessRunOptions'
        description: Optional Process run options
      responses:
        "201":
          content:
            application/json:
              examples:
                Started ProcessRun:
                  description: A newly started ProcessRun
                  value:
                    created:
                      dateTime: "2019-10-30T15:03:27Z"
                      user:
                        id: V1ZVd2VyFzU3NiQ1NDA4NjIzNzk2MjD
                    modified:
                      dateTime: "2019-10-30T15:03:27Z"
                      user:
                        id: V1ZVd2VyFzU3NiQ1NDA4NjIzNzk2MjD
                    status: running
                    process: process-id-abc123
                    id: processrun-xyz789
                    revision: 0
                    statusCounts:
                      waiting: 1
                    name: Q4 2024 Financial Close Process - Run
                    root:
                      id: grouprun-root123
                      name: Main Workflow
                      status: waiting
                      parallel: false
                      readOnly: false
                      children:
                        - type: job
                          job:
                            id: 279f5c8b93f8433284bba8e0d51b3441
                            revision: 0
                            arguments:
                              type: sendTask
                              sendTaskArgs:
                                title: Complete Self-Assessment
                                instructions: Please complete your annual self-assessment by reviewing your accomplishments and setting goals for next year.
                                assigneeUser: userId1234
                                approverUser: userId5678
                                dueDate: "2024-12-15T17:00:00Z"
                                approverDueDate: "2024-12-20T17:00:00Z"
                            status: waiting
                            actionStatus: waiting
                            readOnly: false
                            ordinal: 0
                            created:
                              dateTime: "2025-10-20T15:56:27Z"
                              user:
                                id: V1ZVd2VyFzU3NiQ1NDA4NjIzNzk2MjD
                            modified:
                              dateTime: "2025-10-20T15:56:27Z"
                              user:
                                id: V1ZVd2VyFzU3NiQ1NDA4NjIzNzk2MjD
                            metadata:
                              type: sendTask
                    dueDate: "2024-12-31"
                    autoClose: true
                    certAutoApprove: true
                    ipmBetaEnabled: false
                    iwmOptOut: false
                    relativeDates: false
              schema:
                $ref: '#/components/schemas/ProcessRun'
          description: Process run started successfully
          headers: {}
        "400":
          content:
            application/json:
              examples:
                400 Error Response:
                  description: An invalid request.
                  value:
                    code: invalidUser
                    documentationUrl: http://developerdocs.example.com
                    message: The provided user is invalid.
                    meta:
                      argumentName: assignee
                      jobId: job1234
                    target: assignee
              schema:
                $ref: '#/components/schemas/Error'
          description: Invalid request
          headers: {}
        "401":
          content:
            application/json:
              examples:
                401 Unauthenticated Error Response:
                  description: An unauthenticated request.
                  value:
                    code: Unauthorized
                    message: Bad credentials
              schema:
                $ref: '#/components/schemas/Error'
          description: Unauthenticated request.
          headers: {}
        "403":
          content:
            application/json:
              examples:
                403 Forbidden Error Response:
                  description: Requestor does not have appropriate permissions for requested action.
                  value:
                    code: "403"
                    message: Forbidden
              schema:
                $ref: '#/components/schemas/Error'
          description: Unauthorized
          headers: {}
        "404":
          content:
            application/json:
              examples:
                404 Not Found Error Response:
                  description: A requested resource could not be found.
                  value:
                    code: "404"
                    message: Could not find process id 51bcc3ec3d0b4aadb69659e2a7ed767b
              schema:
                $ref: '#/components/schemas/Error'
          description: Not found
          headers: {}
        "409":
          content:
            application/json:
              examples:
                409 Collision Exception:
                  description: |
                    A request cannot be completed because it conflicts with the current state of the target
                    resource on the server.
                  value:
                    code: "409"
                    message: Letter is not in a status that supports submissions
              schema:
                $ref: '#/components/schemas/Error'
          description: Collision
          headers: {}
        "429":
          content:
            application/json:
              examples:
                429 Too Many Requests:
                  description: |
                    The client (like a web browser) has sent too many requests to a server in a given amount of time.
                  value:
                    code: "429"
                    message: Rate limit of 1000 per 60 seconds exceeded for listJobs requests. Retry request in 10 seconds.
              schema:
                $ref: '#/components/schemas/Error'
          description: Too Many Requests
          headers: {}
        "500":
          content:
            application/json:
              examples:
                500 Server Error:
                  description: |
                    The server encountered an unexpected condition that prevented it from fulfilling the request.
                    This is a generic error message, meaning the server cannot provide a more specific error code.
                  value:
                    code: "500"
                    message: unknown error
              schema:
                $ref: '#/components/schemas/Error'
          description: Server error
          headers: {}
        "503":
          content:
            application/json:
              examples:
                503 Server Error:
                  description: |
                    The server is currently unable to handle the request due to a temporary overload or scheduled
                    maintenance. This status code implies that the server is functional and understands the request,
                    but it cannot fulfill it at the moment.
                  value:
                    code: "503"
                    message: Service Unavailable.
              schema:
                $ref: '#/components/schemas/Error'
          description: Service Unavailable
          headers: {}
      summary: Run a Process
      tags:
        - Process
      security:
        - oauth:
            - file:write
  /processes/{processId}/validation:
    post:
      description: Run a validation check on a Process and return any structural or configuration errors found. Returns an empty errors array if the Process is valid.
      operationId: validateProcess
      parameters:
        - description: Identifier of the process
          in: path
          name: processId
          required: true
          schema:
            minLength: 1
            type: string
      responses:
        "200":
          content:
            application/json:
              examples:
                Invalid Process:
                  description: Process with validation errors
                  value:
                    errors:
                      - code: MISSING_REQUIRED_FIELD
                        message: 'Job is missing required field: assigneeUser'
                        target: /root/children/0/job
                      - code: INVALID_DUE_DATE
                        message: Due date must be in the future
                        target: /dueDate
                Valid Process:
                  description: Process with no validation errors
                  value:
                    errors: []
              schema:
                $ref: '#/components/schemas/ProcessValidationResults'
          description: Validation completed successfully
          headers: {}
        "400":
          content:
            application/json:
              examples:
                400 Error Response:
                  description: An invalid request.
                  value:
                    code: invalidUser
                    documentationUrl: http://developerdocs.example.com
                    message: The provided user is invalid.
                    meta:
                      argumentName: assignee
                      jobId: job1234
                    target: assignee
              schema:
                $ref: '#/components/schemas/Error'
          description: Invalid request
          headers: {}
        "401":
          content:
            application/json:
              examples:
                401 Unauthenticated Error Response:
                  description: An unauthenticated request.
                  value:
                    code: Unauthorized
                    message: Bad credentials
              schema:
                $ref: '#/components/schemas/Error'
          description: Unauthenticated request.
          headers: {}
        "403":
          content:
            application/json:
              examples:
                403 Forbidden Error Response:
                  description: Requestor does not have appropriate permissions for requested action.
                  value:
                    code: "403"
                    message: Forbidden
              schema:
                $ref: '#/components/schemas/Error'
          description: Unauthorized
          headers: {}
        "404":
          content:
            application/json:
              examples:
                404 Not Found Error Response:
                  description: A requested resource could not be found.
                  value:
                    code: "404"
                    message: Could not find process id 51bcc3ec3d0b4aadb69659e2a7ed767b
              schema:
                $ref: '#/components/schemas/Error'
          description: Not found
          headers: {}
        "409":
          content:
            application/json:
              examples:
                409 Collision Exception:
                  description: |
                    A request cannot be completed because it conflicts with the current state of the target
                    resource on the server.
                  value:
                    code: "409"
                    message: Letter is not in a status that supports submissions
              schema:
                $ref: '#/components/schemas/Error'
          description: Collision
          headers: {}
        "429":
          content:
            application/json:
              examples:
                429 Too Many Requests:
                  description: |
                    The client (like a web browser) has sent too many requests to a server in a given amount of time.
                  value:
                    code: "429"
                    message: Rate limit of 1000 per 60 seconds exceeded for listJobs requests. Retry request in 10 seconds.
              schema:
                $ref: '#/components/schemas/Error'
          description: Too Many Requests
          headers: {}
        "500":
          content:
            application/json:
              examples:
                500 Server Error:
                  description: |
                    The server encountered an unexpected condition that prevented it from fulfilling the request.
                    This is a generic error message, meaning the server cannot provide a more specific error code.
                  value:
                    code: "500"
                    message: unknown error
              schema:
                $ref: '#/components/schemas/Error'
          description: Server error
          headers: {}
        "503":
          content:
            application/json:
              examples:
                503 Server Error:
                  description: |
                    The server is currently unable to handle the request due to a temporary overload or scheduled
                    maintenance. This status code implies that the server is functional and understands the request,
                    but it cannot fulfill it at the moment.
                  value:
                    code: "503"
                    message: Service Unavailable.
              schema:
                $ref: '#/components/schemas/Error'
          description: Service Unavailable
          headers: {}
      summary: Validate a Process
      tags:
        - Process
      security:
        - oauth:
            - file:read
components:
  securitySchemes:
    oauth:
      type: oauth2
      flows:
        clientCredentials:
          tokenUrl: /oauth2/token
          scopes:
            activity:read: Read Activity data.
            file:read: Read files.
            file:write: Write files.
  headers: {}
  schemas:
    BearerToken:
      description: |
        [Bearer token](ref:helpers#bearertoken) to use in subsequent requests to the Workiva APIs.
      properties:
        access_token:
          description: The opaque string used to authorize and make requests on behalf of the user
          type: string
        expires_in:
          description: The number of seconds the access token is valid
          type: integer
        scope:
          description: The limits of the user's access with the token, such as Read or Create
          type: string
        token_type:
          description: The type of access token; typically bearer
          type: string
      required:
        - access_token
        - expires_in
        - token_type
        - scope
      type: object
    IamError:
      description: Error response object containing an error code.
      properties:
        error:
          description: |
            The possible `error` codes are:
            - `invalid_request` - The request is missing a required parameter, includes an invalid parameter
              value, includes a parameter more than once, or is otherwise malformed.
            - `unauthorized_client` - The client is not authorized to request an authorization
              code using this method.
            - `access_denied` - The resource owner or authorization server denied the request.
            - `unsupported_response_type` - The authorization server does not support obtaining an authorization
              code using this method.
            - `invalid_scope` - The requested scope is invalid, unknown, or malformed.
            - `server_error` - The authorization server encountered an unexpected condition that prevented it
              from fulfilling the request.
            - `temporarily_unavailable` - The authorization server is currently unable to handle the request
              due to a temporary overloading or maintenance of the server.
          type: string
        error_description:
          description: Human-readable ASCII text providing additional information.
          type: string
        error_uri:
          description: |
            A URI identifying a human-readable web page with information about the error.
          type: string
      type: object
    User:
      description: Reference to a platform user.
      example:
        id: V1ZVd2VyFzU3NiQ1NDA4NjIzNzk2MjD
      properties:
        id:
          description: The unique identifier of the user
          example: V1ZVd2VyFzU3NiQ1NDA4NjIzNzk2MjD
          maxLength: 36
          type: string
      type: object
    Action:
      description: |
        When the action was performed, and details about the user who did it.
      example:
        dateTime: "2019-10-30T15:03:27Z"
        user:
          id: V1ZVd2VyFzU3NiQ1NDA4NjIzNzk2MjD
      properties:
        dateTime:
          description: Date and time (in UTC) that the user performed the audited action.
          example: "2019-10-30T15:03:27Z"
          format: date-time
          readOnly: false
          type: string
        user:
          $ref: '#/components/schemas/User'
      type: object
    ReminderNotificationData:
      description: |
        The notification content for a reminder email.
        Defines the subject line and body text that will be included in reminder emails sent to task participants.
      example:
        body: Please complete your assigned task by the due date.
        subject: 'Reminder: Task due soon'
      properties:
        body:
          description: |
            The body content for the reminder email.
            This is the main message text that provides details about the task and what action is needed.
          example: This is a reminder that your assigned task is due soon. Please complete your review promptly.
          maxLength: 5000
          minLength: 0
          type: string
        subject:
          description: |
            The subject line for the reminder email.
            This appears in the email subject and should clearly indicate the purpose of the reminder.
            A required field.
          example: 'Reminder: Task due soon'
          maxLength: 1000
          minLength: 0
          type: string
      required:
        - body
        - subject
      type: object
    ReminderScheduleAbsolute:
      description: |
        Reminder schedule that sends reminders on specific absolute dates at a configured time.
        Defines an exact set of dates when reminders should be sent, along with the time and timezone
        for sending. Useful for scheduling reminders on predetermined calendar dates.
      nullable: true
      properties:
        dates:
          description: |
            Specific dates on which reminders will be sent at the configured time in the specified timezone.
            At least one date must be provided.
          example:
            - "2024-12-10"
            - "2024-12-13"
            - "2024-12-14"
          items:
            description: |
              Specific dates on which reminders will be sent at the configured time in the specified timezone.
              At least one date must be provided.
            format: date
            type: string
          minItems: 1
          type: array
          uniqueItems: true
        time:
          description: Time in the specified timezone that reminders will be sent each day.
          example: 09:00:00
          type: string
        timezone:
          description: Timezone for the time specified that reminders will be sent out each day.
          example: America/New_York
          type: string
      required:
        - dates
      type: object
    ReminderDateRange:
      description: |
        Defines a date range for sending reminders with optional day-of-week filtering.
        Specifies when reminders should start and stop being sent, and optionally restricts
        reminders to specific days of the week within that range.
      example:
        days:
          - monday
          - wednesday
          - friday
        end: "2024-01-31"
        start: "2024-01-15"
      properties:
        days:
          description: |
            Days of the week between the `start` and `end` date range that reminder will be sent.
          example:
            - monday
            - wednesday
            - friday
          items:
            description: |
              The days of the week.
            enum:
              - monday
              - tuesday
              - wednesday
              - thursday
              - friday
              - saturday
              - sunday
            example: wednesday
            nullable: true
            type: string
          nullable: true
          type: array
          uniqueItems: true
        end:
          description: Reminders will stop being sent after this date.
          example: "2024-01-31"
          format: date
          type: string
        start:
          description: Start date (inclusive) that reminders will start being sent.
          example: "2024-01-15"
          format: date
          type: string
      required:
        - end
        - start
      type: object
    ReminderScheduleRange:
      description: |
        Reminder schedule that configures reminders be sent from a start to an end date while the associated
        work remains incomplete.
      nullable: true
      properties:
        range:
          $ref: '#/components/schemas/ReminderDateRange'
        time:
          description: Time in the specified timezone that reminders will be sent each day.
          example: 09:00:00
          type: string
        timezone:
          description: |
            Timezone for the time specified that reminders will be sent out each day.
            If not specified defaults to UTC.
          example: America/New_York
          type: string
      required:
        - range
        - time
      type: object
    ReminderRelativeRange:
      description: |
        ISO-8601 duration relative to a due date for when a reminder will start and stop being sent as long as the
        associated task is "incomplete".
      properties:
        end:
          description: The ISO 8601 duration (relative to the due date) to stop sending reminders
          example: P0D
          type: string
        start:
          description: The ISO 8601 duration (relative to the due date) to start sending a reminder
          example: -P3D
          type: string
      type: object
    ReminderScheduleRelativeRange:
      description: |
        Reminder schedule that sends reminders throughout a range relative to the associated due date at the
        specified time while the associated task is incomplete.
      nullable: true
      properties:
        relativeRange:
          $ref: '#/components/schemas/ReminderRelativeRange'
        time:
          description: Time in the specified timezone that reminders will be sent each day.
          example: 17:33:00
          type: string
        timezone:
          description: Timezone for the time specified that reminders will be sent out each day.
          example: UTC
          type: string
      type: object
    ReminderScheduleRelative:
      description: |
        Reminder schedule that sends reminders relative to the associated due date based on provided offsets which
        are ISO-8601 durations that must be evenly divisible by a day.
      nullable: true
      properties:
        offsets:
          description: |
            Offsets from the associated due date that a reminder will be sent.
            Duration amount specified must be evenly divisible by days.
          example:
            - -P3D
            - -P1D
            - P0D
          items:
            description: |
              Offsets from the associated due date that a reminder will be sent.
              Duration amount specified must be evenly divisible by days.
            example: '["-P3D","-P1D","P0D"]'
            type: string
          minItems: 1
          type: array
          uniqueItems: true
        time:
          description: Time in the specified timezone that reminders will be sent each day.
          example: 09:00:00
          type: string
        timezone:
          description: |
            Timezone for the time specified that reminders will be sent out each day.
            If not specified defaults to UTC.
          example: America/New_York
          type: string
      required:
        - offsets
        - time
      type: object
    ReminderSchedule:
      description: |
        The `type` specified dictates which corresponding ReminderSchedule sibling field will be populated.
      example:
        relativeSchedule:
          offsets:
            - P1D
            - P3D
          time: 09:00:00
          timezone: America/New_York
        type: relative
      properties:
        absoluteSchedule:
          $ref: '#/components/schemas/ReminderScheduleAbsolute'
        rangeSchedule:
          $ref: '#/components/schemas/ReminderScheduleRange'
        relativeRangeSchedule:
          $ref: '#/components/schemas/ReminderScheduleRelativeRange'
        relativeSchedule:
          $ref: '#/components/schemas/ReminderScheduleRelative'
        type:
          description: |
            Indicates the type of reminder schedule being used in the ReminderSchedule payload.
          enum:
            - relativeRange
            - absolute
            - range
            - relative
          example: relativeRange
          type: string
      required:
        - type
      type: object
    ReminderConfig:
      description: |
        A single reminder configuration pairing a schedule (when to send) with notification details
        (subject and body content) for reminder emails.
      example:
        reminder:
          body: Please complete your assigned task by the due date.
          subject: 'Reminder: Task due soon'
        schedule:
          relativeSchedule:
            offsets:
              - P1D
              - P3D
            time: 09:00:00
            timezone: America/New_York
          type: relative
      nullable: true
      properties:
        reminder:
          $ref: '#/components/schemas/ReminderNotificationData'
        schedule:
          $ref: '#/components/schemas/ReminderSchedule'
      type: object
    ReminderData:
      description: |
        Configuration for reminder emails that will be sent to participants about incomplete tasks.
        Supports multiple reminder modes including system defaults, process defaults, custom schedules, or no reminders.
      example:
        mode: default
      properties:
        mode:
          description: The mode that determines which reminder strategy to use for sending task reminder emails.
          enum:
            - none
            - custom
            - default
            - processDefault
          example: default
          type: string
        scheduledReminders:
          description: |
            List of custom reminder configurations defining when and how reminder emails should be sent.
            Only used when mode is set to `custom`. Each configuration specifies a schedule and notification details.
          example:
            - reminder:
                body: Please complete your assigned task.
                subject: 'Reminder: Task due soon'
              schedule:
                relativeSchedule:
                  offsets:
                    - P1D
                    - P3D
                  time: 09:00:00
                  timezone: America/New_York
                type: relative
          items:
            $ref: '#/components/schemas/ReminderConfig'
          maxItems: 3
          minItems: 0
          nullable: true
          type: array
      type: object
    Participant:
      description: A participant, currently only users allowed.
      example:
        id: userId1231231
        type: user
      properties:
        id:
          description: |
            The unique identifier of the participant. For user participants, this is the user id.
          example: user123
          maxLength: 36
          minLength: 1
          type: string
        type:
          description: The type of participant.
          enum:
            - user
          example: user
          type: string
      required:
        - id
        - type
      type: object
    CertApproverArguments:
      description: |
        Read-only certification generated approver action arguments.
      example:
        participants:
          - id: approver123
            type: user
      nullable: true
      properties:
        participants:
          description: |
            List of participants involved in this certification approver action. These are the users
            who are responsible for approving the certification after it has been signed.
          example:
            - id: manager123
              type: user
            - id: supervisor456
              type: user
          items:
            $ref: '#/components/schemas/Participant'
          type: array
      type: object
    CertPhaseFinalizerArguments:
      description: |
        Read-only certification generated arguments for `certificationPhaseFinalizerGenerated` actions.
      example:
        certPhaseBeingFinalized: signing
      nullable: true
      properties:
        certPhaseBeingFinalized:
          description: The phase of certification that is being finalized.
          enum:
            - signing
            - approval
          example: signing
          type: string
      required:
        - certPhaseBeingFinalized
      type: object
    CertSignerArguments:
      description: |
        Read-only certification generated signer action arguments.
      example:
        participants:
          - id: signer123
            type: user
      nullable: true
      properties:
        participants:
          description: |
            List of participants involved in this certification signer action. These are the users
            who are responsible for signing and completing the certification.
          example:
            - id: signer123
              type: user
            - id: signer456
              type: user
          items:
            $ref: '#/components/schemas/Participant'
          type: array
      type: object
    CertificationStep:
      description: |
        A single step in a certification workflow that defines who needs to participate and how the step
        should be completed. Steps are executed in sequence according to their order in the certification.
      example:
        completionMode: all
        participants:
          - id: user123
            type: user
        type: signer
      properties:
        completionMode:
          description: |
            The completion mode that determines how many participants need to complete the step for it to be considered
            done. For example, all participants, or a single participant.
          enum:
            - one
            - all
          example: all
          type: string
        participants:
          description: |
            List of participants who are responsible for completing this certification step.
            The participants will either sign or approve depending on the step type.
          example:
            - id: user123
              type: user
            - id: user456
              type: user
          items:
            $ref: '#/components/schemas/Participant'
          type: array
        type:
          description: |
            The type of certification step, which determines the action participants need to take.
            Can be either 'signer' or 'approver'.
          enum:
            - approver
            - signer
          example: signer
          type: string
      type: object
    CertificationArguments:
      description: Input for `certification` actions.
      example:
        sourceLetter: letter-template-789abc
        steps:
          - completionMode: all
            participants:
              - id: signer123
                type: user
            type: signer
        title: Q4 2024 Certification
      nullable: true
      properties:
        approverScheduledReminderData:
          $ref: '#/components/schemas/ReminderData'
        approversDueDate:
          description: |
            The due date for approvers to complete their approval tasks. This applies to all approval steps that occur
            after signing steps in the certification workflow.
          example: "2024-12-20"
          format: date
          type: string
        assigneeScheduledReminderData:
          $ref: '#/components/schemas/ReminderData'
        assigneesDueDate:
          description: |
            The due date for signers (assignees) to complete their portion of the certification. This applies to all
            signing steps in the certification workflow.
          example: "2024-12-15"
          format: date
          type: string
        instructions:
          description: |
            Detailed instructions for participants explaining what needs to be certified and any specific guidance
            for completing the certification.
          example: Please review and certify that all financial controls are operating effectively for Q4 2024. Ensure all questions are answered accurately and completely.
          maxLength: 2000
          minLength: 0
          type: string
        notificationSignerMessage:
          description: |
            Custom message body for email notifications sent to signers. If not provided, a default message will be used.
          example: You have been assigned a certification that requires your signature. Please review all questions and provide your responses by the due date.
          maxLength: 5000
          minLength: 0
          type: string
        notificationSignerSubject:
          description: |
            Custom subject line for email notifications sent to signers. If not provided, a default subject will be used.
          example: 'Action Required: Q4 2024 Financial Controls Certification'
          maxLength: 1000
          minLength: 0
          type: string
        sourceLetter:
          description: |
            The id of the source letter template to use for this certification. This letter contains the questions and
            structure that signers will respond to during the certification process.
          example: letter-template-789abc
          maxLength: 32
          minLength: 0
          type: string
        steps:
          description: |
            The certification steps that define the workflow. Each step contains participants who will either sign or
            approve the certification. Steps are executed in the order they are defined.
          example:
            - completionMode: all
              participants:
                - id: user123
                  type: user
              type: signer
            - completionMode: one
              participants:
                - id: manager456
                  type: user
              type: approver
          items:
            $ref: '#/components/schemas/CertificationStep'
          type: array
        title:
          description: The title of the certification that will be displayed to participants.
          example: Q4 2024 Financial Controls Certification
          maxLength: 500
          minLength: 0
          type: string
      type: object
    ContentRequestArguments:
      description: Input for `contentRequest` actions.
      example:
        approver:
          id: manager456
          type: user
        assignee:
          id: user123
          type: user
        document: doc789
        dueDate: "2024-12-15"
        title: Review financial statement
      nullable: true
      properties:
        approver:
          $ref: '#/components/schemas/Participant'
        approverDueDate:
          description: |
            The due date by which the approver must review and approve the content. This applies after the
            assignee has completed their portion.
          example: "2024-12-20"
          format: date
          type: string
        approverScheduledReminderData:
          $ref: '#/components/schemas/ReminderData'
        assignee:
          $ref: '#/components/schemas/Participant'
        assigneeScheduledReminderData:
          $ref: '#/components/schemas/ReminderData'
        document:
          description: |
            The document id where the content is being requested. The assignee will receive edit permissions
            to this document to provide the requested content.
          example: doc789
          type: string
        dueDate:
          description: |
            The due date by which the assignee must provide the requested content. This is when the assignee's
            task portion should be completed.
          example: "2024-12-15"
          format: date
          type: string
        instructions:
          description: |
            Detailed instructions explaining what content is being requested and any specific guidance
            for completing the request.
          example: Please provide a detailed analysis of Q4 2024 revenue trends, including comparisons to prior quarters and key drivers of changes.
          type: string
        section:
          description: |
            The specific section id within the document where content is being requested. If provided,
            permissions will be scoped to this section. If not provided, permissions apply to the entire document.
          example: section101
          type: string
        title:
          description: The title of the content request that will be displayed to the assignee and approver.
          example: Provide Q4 2024 revenue analysis
          type: string
      type: object
    SendTaskArguments:
      description: Input for `sendTask` actions.
      example:
        approver:
          id: manager456
          type: user
        assignee:
          id: user123
          type: user
        document: doc789
        dueDate: "2024-12-15"
        title: Complete risk assessment
      nullable: true
      properties:
        approver:
          $ref: '#/components/schemas/Participant'
        approverDueDate:
          description: |
            The date when the approver's review and approval is due.
            This is typically set after the assignee's due date to allow time for approval after completion.
          example: "2024-12-20"
          format: date
          nullable: true
          type: string
        approverScheduledReminderData:
          $ref: '#/components/schemas/ReminderData'
        assignee:
          $ref: '#/components/schemas/Participant'
        assigneeScheduledReminderData:
          $ref: '#/components/schemas/ReminderData'
        document:
          description: |
            The id of the wDesk document associated with this task.
            This document is where the task work should be performed or reviewed.
          example: doc789
          nullable: true
          type: string
        dueDate:
          description: |
            The date when the assignee's portion of the task is due.
            The assignee is expected to complete their work by this deadline.
          example: "2024-12-15"
          format: date
          nullable: true
          type: string
        instructions:
          description: |
            Detailed instructions for the task assignee describing what work needs to be completed.
            This field is optional and can provide additional context beyond the title.
          example: Please review the attached financial statements for Q4 2024 and provide approval by the due date.
          maxLength: 2000
          minLength: 0
          nullable: true
          type: string
        section:
          description: |
            The id of the specific section within the document where the task work should be focused.
            This field is optional and helps direct the assignee and approver to the relevant part of the document.
            If a value for the section field is provided, a value for document field must also be provided.
          example: section101
          nullable: true
          type: string
        title:
          description: |
            The title of the task that will be displayed to both the assignee and approver.
            This should be a concise summary of what needs to be done.
            A value for this field is required before an action with these arguments can be started.
          example: Review quarterly financial statements
          nullable: true
          type: string
      type: object
    ActionArguments:
      description: |
        Container for action-specific arguments for a Job.
        The type field indicates which specific arguments field contains the data.
        Only one of the argument fields will be populated based on the action type.
      example:
        sendTaskArgs:
          assigneeUser: user123
          document: doc789
          title: Review Q4 financial report
        type: sendTask
      nullable: true
      properties:
        certApproverArgs:
          $ref: '#/components/schemas/CertApproverArguments'
        certPhaseFinalizerArgs:
          $ref: '#/components/schemas/CertPhaseFinalizerArguments'
        certSignerArgs:
          $ref: '#/components/schemas/CertSignerArguments'
        certificationArgs:
          $ref: '#/components/schemas/CertificationArguments'
        contentRequestArgs:
          $ref: '#/components/schemas/ContentRequestArguments'
        sendTaskArgs:
          $ref: '#/components/schemas/SendTaskArguments'
        type:
          description: |
            The type of action the Job is performing.
            Dictates the type of arguments need to be passed to the Job.
          enum:
            - sendTask
            - contentRequest
            - certificationApproverGenerated
            - certificationSignerGenerated
            - certificationConditionalApproverGenerated
            - certificationPhaseFinalizerGenerated
            - certification
          example: sendTask
          type: string
      required:
        - type
      type: object
    ProcessGroupRun:
      description: A run-time grouping of JobRuns and other GroupRuns.
      example:
        id: root-group-123
        name: Main Workflow Run
        parallel: false
        readOnly: false
        status: running
      properties:
        active:
          description: If present, indicates whether new and existing JobRuns in this GroupRun will be run.
          example: true
          nullable: true
          type: boolean
        children:
          description: The children of this GroupRun. Children can be a JobRun or another GroupRun.
          example:
            - jobRun:
                id: jobinstance-123
                status: waiting
              type: job
            - groupRun:
                id: groupRun-456
                name: Sub-tasks
                parallel: false
                readOnly: false
                status: waiting
              type: group
          items:
            $ref: '#/components/schemas/ProcessGroupRunChild'
          type: array
        childrenEligibleToStartCount:
          description: If present, indicates the number of children under this group that are eligible to start.
          example: 5
          format: int32
          nullable: true
          type: integer
        created:
          $ref: '#/components/schemas/Action'
        eligibleToStart:
          description: If present, indicates whether Start can be called on this GroupRun.
          example: true
          nullable: true
          type: boolean
        id:
          description: The GroupRun's unique identifier
          example: groupRun-abc123
          type: string
        modified:
          $ref: '#/components/schemas/Action'
        name:
          description: The name of the GroupRun.
          example: Q4 Financial Review Tasks
          type: string
        ordinal:
          description: The zero-based index representing the location of this child within its parent group
          example: 0
          format: int32
          readOnly: true
          type: integer
        parallel:
          description: If true, JobRuns within this GroupRun are run in parallel. If false, serial.
          example: false
          type: boolean
        parent:
          description: |
            The id of this child's parent.  Not present if the parent is the root GroupRun of the ProcessRun.
          example: parent-groupinstance-789
          nullable: true
          type: string
        readOnly:
          description: Whether this GroupRun is read-only.
          example: false
          type: boolean
        revision:
          description: The revision number of the current representation of the GroupRun.
          example: 3
          format: int64
          type: integer
        status:
          description: |
            The general execution status of the JobRun.  The same set of statuses apply to all
            JobRuns.  For action specific statuses see a JobRun's action status.
          enum:
            - waiting
            - running
            - cancelling
            - complete
            - cancelled
            - error
            - errorHold
          example: running
          type: string
        statusCounts:
          additionalProperties:
            description: Convenience map of JobRun statuses to the number of JobRuns with that status.
            format: int64
            type: integer
          description: Convenience map of JobRun statuses to the number of JobRuns with that status.
          example:
            complete: 5
            running: 3
            waiting: 2
          type: object
        triggerType:
          description: What triggers a group child to execute.
          enum:
            - whenEligible
            - manual
          example: whenEligible
          nullable: true
          type: string
      required:
        - parallel
        - readOnly
      type: object
    JobRun:
      description: |
        An instantiation of a Job created when a Process is started or when a new action is added to a running Process.
        An action's implementation can be carried out by multiple JobRuns that make up a single action's
        implementation.  A JobRun's action type is dictated by the type of "arguments" that are passed to it.  The
        arguments are action specific.
      example:
        job-instance-1:
          id: job-instance-1
          status: complete
        job-instance-2:
          id: job-instance-2
          status: running
      properties:
        action:
          description: |
            The type of action the Job is performing.
            Dictates the type of arguments need to be passed to the Job.
          enum:
            - sendTask
            - contentRequest
            - certificationApproverGenerated
            - certificationSignerGenerated
            - certificationConditionalApproverGenerated
            - certificationPhaseFinalizerGenerated
            - certification
          example: sendTask
          type: string
        actionStatus:
          description: |
            An action specific status. Actions can define their own set of statuses that vary from the more general
            orchestration status contained by the "status" field.
          example: Completed
          readOnly: false
          type: string
        arguments:
          $ref: '#/components/schemas/ActionArguments'
        certExceptionResponseSelected:
          description: |
            (Certifications only), If present, indicates whether an exceptional response has been selected for a question in
            the job.
          example: true
          type: boolean
        certExplanationPresent:
          description: |
            (Certifications only), If present, indicates whether an explanational is present for a question in the job.
          example: false
          type: boolean
        created:
          $ref: '#/components/schemas/Action'
        eligibleToStart:
          description: If present, indicates whether start can be called on this JobRun.
          example: true
          nullable: true
          type: boolean
        errorCode:
          description: An error code, representing the reason why a JobRun was moved into ERROR or ERROR_HOLD state.
          example: ACTION_EXECUTION_FAILED
          nullable: true
          readOnly: false
          type: string
        generated:
          $ref: '#/components/schemas/ProcessGroupRun'
        id:
          description: The JobRun's unique identifier.
          example: jobRun-abc123
          readOnly: false
          type: string
        job:
          description: The id of the Process Job this JobRun was created from.
          example: job-def456
          nullable: true
          readOnly: false
          type: string
        lastReminder:
          $ref: '#/components/schemas/LastReminder'
        metadata:
          $ref: '#/components/schemas/ActionMetadata'
        modified:
          $ref: '#/components/schemas/Action'
        nextReminder:
          $ref: '#/components/schemas/NextReminder'
        ordinal:
          description: The zero-based index representing the location of this JobRun within its parent Group
          example: 0
          format: int32
          readOnly: false
          type: integer
        parent:
          description: The id of this JobRun's parent. Not present if the parent is the root group of the Process.
          example: parent-groupinstance-123
          nullable: true
          type: string
        readOnly:
          description: Whether this JobRun is read-only.
          example: false
          readOnly: false
          type: boolean
        revision:
          description: The revision number of the current representation of the JobRun.
          example: 5
          format: int64
          readOnly: false
          type: integer
        runStarted:
          description: The time when this JobRun was started
          example: "2024-01-12T09:00:00Z"
          format: date-time
          nullable: true
          readOnly: false
          type: string
        status:
          description: |
            The general execution status of the JobRun.  The same set of statuses apply to all
            JobRuns.  For action specific statuses see a JobRun's action status.
          enum:
            - waiting
            - running
            - cancelling
            - complete
            - cancelled
            - error
            - errorHold
          example: waiting
          readOnly: false
          type: string
        tags:
          description: The tag link, category, and value information associated with this Job.
          example:
            - category:
                id: category-456
                name: Priority
              id: taglink-123
              target: jobRun-abc123
              targetType: jobRun
              value:
                id: value-789
                value: High
          items:
            $ref: '#/components/schemas/TagLink'
          readOnly: false
          type: array
          uniqueItems: true
        triggerType:
          description: What triggers a group child to execute.
          enum:
            - whenEligible
            - manual
          example: whenEligible
          nullable: true
          type: string
      type: object
    ProcessGroupRunChild:
      description: |
        Represents a child element within a GroupRun in a running process (runtime).
        A "group run" child can be either a JobRun or another nested GroupRun, reflecting
        the hierarchical structure of work execution. The type field determines which specific child type is present.
      example:
        jobRun:
          id: jobinstance-123
          status: waiting
        type: job
      properties:
        groupRun:
          $ref: '#/components/schemas/ProcessGroupRun'
        jobRun:
          $ref: '#/components/schemas/JobRun'
        type:
          description: |
            The type of GroupRun child.
            The corresponding JobRun or GroupRun details will be provided below.
          enum:
            - group
            - job
          example: job
          type: string
      type: object
    LastReminder:
      description: |
        Information about the most recent reminder that was sent for a task.
        Contains the timestamp of when the reminder was sent and the role of the recipient who received it.
      example:
        recipientRole: approver
        sent: "2024-01-14T09:00:00Z"
      nullable: true
      properties:
        recipientRole:
          description: The role of the recipient for reminder notifications.
          enum:
            - assignee
            - approver
          example: assignee
          readOnly: false
          type: string
        sent:
          description: Timestamp of when the last reminder was sent.
          example: "2024-01-14T09:00:00Z"
          format: date-time
          readOnly: false
          type: string
      type: object
    CertificationApproverActionMetadata:
      description: |
        Read-only metadata for a certification approver action.
        Contains information about who approved the certification and inherits task execution details
        from the parent TaskMetadata.
      example:
        approvedByUser: userId2342
        cancelCleanupComplete: false
        newApproverModifyEmailSent: false
        newAssigneeModifyEmailSent: false
        previousApproverModifyEmailSent: false
        previousAssigneeModifyEmailSent: false
        taskCancelled: false
        taskCancelledNotificationSent: false
        taskModificationComplete: false
      nullable: true
      properties:
        approvedByUser:
          description: |
            User id for user who approved this approver job.
          example: user456
          maxLength: 36
          readOnly: false
          type: string
        assigneeCompletedDate:
          description: The date and time the task moved into "awaiting approval" status.
          example: "2024-10-15T10:15:00Z"
          format: date-time
          readOnly: false
          type: string
        awaitingApprovalEventUser:
          description: The user id of the user who caused the task to move into "awaiting approval" status.
          example: user-123456
          readOnly: false
          type: string
        completedDate:
          description: The date and time the task associated with this action was approved, completed or cancelled.
          example: "2024-10-15T14:30:00Z"
          format: date-time
          readOnly: false
          type: string
        created:
          $ref: '#/components/schemas/Action'
        permalink:
          description: A stable URL that links to the created task.
          example: https://app.wdesk.com/tasks/task-abc123-def456-789012
          readOnly: false
          type: string
        sourceUrl:
          description: The URL of a wDesk resource that is associated with this task.
          example: https://app.wdesk.com/docs/document-xyz789
          readOnly: false
          type: string
        status:
          description: The status of the task associated with this action.
          example: completed
          readOnly: false
          type: string
        task:
          description: The id of the created task associated with this action.
          example: task-abc123-def456-789012
          readOnly: false
          type: string
        taskCancelled:
          description: Whether the associated task with this action has been canceled.
          example: false
          readOnly: false
          type: boolean
      required:
        - taskCancelled
      type: object
    CertificationConditionalApproverActionMetadata:
      description: |
        Read-only metadata for the certification generated conditional approver action.
      example:
        cancelCleanupComplete: false
        conditionalApprover:
          id: user2342
          type: user
        newApproverModifyEmailSent: false
        newAssigneeModifyEmailSent: false
        previousApproverModifyEmailSent: false
        previousAssigneeModifyEmailSent: false
        taskCancelled: false
        taskCancelledNotificationSent: false
        taskModificationComplete: false
      nullable: true
      properties:
        approvedByUser:
          description: |
            The id of the user who approved this conditional approver step allowing the certification to be signed.
          example: user456
          maxLength: 36
          nullable: true
          readOnly: false
          type: string
        assigneeCompletedDate:
          description: The date and time the task moved into "awaiting approval" status.
          example: "2024-10-15T10:15:00Z"
          format: date-time
          readOnly: false
          type: string
        awaitingApprovalEventUser:
          description: The user id of the user who caused the task to move into "awaiting approval" status.
          example: user-123456
          readOnly: false
          type: string
        completedDate:
          description: The date and time the task associated with this action was approved, completed or cancelled.
          example: "2024-10-15T14:30:00Z"
          format: date-time
          readOnly: false
          type: string
        conditionalApprover:
          $ref: '#/components/schemas/Participant'
        created:
          $ref: '#/components/schemas/Action'
        effectiveStatus:
          description: |
            Translates "Created" status into "Awaiting Approval".
          example: Awaiting Approval
          readOnly: false
          type: string
        permalink:
          description: A stable URL that links to the created task.
          example: https://app.wdesk.com/tasks/task-abc123-def456-789012
          readOnly: false
          type: string
        sourceUrl:
          description: The URL of a wDesk resource that is associated with this task.
          example: https://app.wdesk.com/docs/document-xyz789
          readOnly: false
          type: string
        status:
          description: The status of the task associated with this action.
          example: completed
          readOnly: false
          type: string
        task:
          description: The id of the created task associated with this action.
          example: task-abc123-def456-789012
          readOnly: false
          type: string
        taskCancelled:
          description: Whether the associated task with this action has been canceled.
          example: false
          readOnly: false
          type: boolean
      required:
        - taskCancelled
      type: object
    CertificationSignerActionMetadata:
      description: |
        Read-only metadata about an individual certification signer action.
      example:
        cancelCleanupComplete: false
        markAsSignedExplanationNote: explanationNoteId
        newApproverModifyEmailSent: false
        newAssigneeModifyEmailSent: false
        previousApproverModifyEmailSent: false
        previousAssigneeModifyEmailSent: false
        signature: John Signer
        signerUser: signerUserId
        taskCancelled: false
        taskCancelledNotificationSent: false
        taskModificationComplete: false
      nullable: true
      properties:
        assigneeCompletedDate:
          description: The date and time the task moved into "awaiting approval" status.
          example: "2024-10-15T10:15:00Z"
          format: date-time
          readOnly: false
          type: string
        awaitingApprovalEventUser:
          description: The user id of the user who caused the task to move into "awaiting approval" status.
          example: user-123456
          readOnly: false
          type: string
        completedDate:
          description: The date and time the task associated with this action was approved, completed or cancelled.
          example: "2024-10-15T14:30:00Z"
          format: date-time
          readOnly: false
          type: string
        created:
          $ref: '#/components/schemas/Action'
        markAsSignedExplanationNote:
          description: |
            If this certification signer action was "marked as signed" meaning someone signed on behalf of the actual
            assignee, this will contain the certification note id that links to that signer's explanation as to why they
            marked this certification signed for another user.
          example: note-abc123
          nullable: true
          readOnly: false
          type: string
        permalink:
          description: A stable URL that links to the created task.
          example: https://app.wdesk.com/tasks/task-abc123-def456-789012
          readOnly: false
          type: string
        signature:
          description: |
            What the user who signed this certification signed as.
          example: John Doe, CFO
          nullable: true
          readOnly: false
          type: string
        signerUser:
          description: |
            User id for user that signed this signer action.
          example: user123
          nullable: true
          readOnly: false
          type: string
        sourceUrl:
          description: The URL of a wDesk resource that is associated with this task.
          example: https://app.wdesk.com/docs/document-xyz789
          readOnly: false
          type: string
        status:
          description: The status of the task associated with this action.
          example: completed
          readOnly: false
          type: string
        task:
          description: The id of the created task associated with this action.
          example: task-abc123-def456-789012
          readOnly: false
          type: string
        taskCancelled:
          description: Whether the associated task with this action has been canceled.
          example: false
          readOnly: false
          type: boolean
      required:
        - taskCancelled
      type: object
    CertificationGeneratorActionMetadata:
      description: |
        Read-only metadata for a Certification action.
      example:
        finalLetterSubmission: finalLetterSubmissionId32342
        letterInstance: letterInstanceId23423
      nullable: true
      properties:
        finalLetterSubmission:
          description: |
            The id of the final letter submission.  All the signers submitted responses for a certification get stored
            in a final letter submission.  While individuals are working on their own submission, that is their own
            personal letter submission until they decide to submit it, at which time their answers get stored into the final
            letter submission.
          example: submission-xyz789
          maxLength: 32
          readOnly: false
          type: string
        letterInstance:
          description: |
            The id of the certification letter instance associated with this certification action.
            The letter instance, is the instantiation of the source letter chosen for this certification.
            Many certifications can share the same source letter, but each certification gets their own
            letter instance which stores their responses and status.
          example: letterinstance-abc123
          maxLength: 32
          readOnly: false
          type: string
      type: object
    ContentRequestMetadata:
      description: |
        Read-only metadata about a "content request" action.
      example:
        cancelCleanupComplete: false
        newApproverModifyEmailSent: false
        newAssigneeModifyEmailSent: false
        permalink: https://app.wdesk.com/tasks/task-456
        previousApproverModifyEmailSent: false
        previousAssigneeModifyEmailSent: false
        status: waiting
        task: task-456
        taskCancelled: false
        taskCancelledNotificationSent: false
        taskModificationComplete: false
      nullable: true
      properties:
        assigneeCompletedDate:
          description: The date and time the task moved into "awaiting approval" status.
          example: "2024-10-15T10:15:00Z"
          format: date-time
          readOnly: false
          type: string
        awaitingApprovalEventUser:
          description: The user id of the user who caused the task to move into "awaiting approval" status.
          example: user-123456
          readOnly: false
          type: string
        completedDate:
          description: The date and time the task associated with this action was approved, completed or cancelled.
          example: "2024-10-15T14:30:00Z"
          format: date-time
          readOnly: false
          type: string
        created:
          $ref: '#/components/schemas/Action'
        permalink:
          description: A stable URL that links to the created task.
          example: https://app.wdesk.com/tasks/task-abc123-def456-789012
          readOnly: false
          type: string
        sourceUrl:
          description: The URL of a wDesk resource that is associated with this task.
          example: https://app.wdesk.com/docs/document-xyz789
          readOnly: false
          type: string
        status:
          description: The status of the task associated with this action.
          example: completed
          readOnly: false
          type: string
        task:
          description: The id of the created task associated with this action.
          example: task-abc123-def456-789012
          readOnly: false
          type: string
        taskCancelled:
          description: Whether the associated task with this action has been canceled.
          example: false
          readOnly: false
          type: boolean
      required:
        - taskCancelled
      type: object
    SendTaskMetadata:
      description: |
        Read-only metadata about a "send task" action.
      example:
        cancelCleanupComplete: false
        newApproverModifyEmailSent: false
        newAssigneeModifyEmailSent: false
        permalink: https://app.wdesk.com/tasks/task-456
        previousApproverModifyEmailSent: false
        previousAssigneeModifyEmailSent: false
        status: waiting
        task: task-456
        taskCancelled: false
        taskCancelledNotificationSent: false
        taskModificationComplete: false
      nullable: true
      properties:
        assigneeCompletedDate:
          description: The date and time the task moved into "awaiting approval" status.
          example: "2024-10-15T10:15:00Z"
          format: date-time
          readOnly: false
          type: string
        awaitingApprovalEventUser:
          description: The user id of the user who caused the task to move into "awaiting approval" status.
          example: user-123456
          readOnly: false
          type: string
        completedDate:
          description: The date and time the task associated with this action was approved, completed or cancelled.
          example: "2024-10-15T14:30:00Z"
          format: date-time
          readOnly: false
          type: string
        created:
          $ref: '#/components/schemas/Action'
        permalink:
          description: A stable URL that links to the created task.
          example: https://app.wdesk.com/tasks/task-abc123-def456-789012
          readOnly: false
          type: string
        sourceUrl:
          description: The URL of a wDesk resource that is associated with this task.
          example: https://app.wdesk.com/docs/document-xyz789
          readOnly: false
          type: string
        status:
          description: The status of the task associated with this action.
          example: completed
          readOnly: false
          type: string
        task:
          description: The id of the created task associated with this action.
          example: task-abc123-def456-789012
          readOnly: false
          type: string
        taskCancelled:
          description: Whether the associated task with this action has been canceled.
          example: false
          readOnly: false
          type: boolean
      required:
        - taskCancelled
      type: object
    ActionMetadata:
      description: |
        Read-only action specific metadata associated with a JobRun.
      example:
        sendTaskMetadata:
          cancelCleanupComplete: false
          newApproverModifyEmailSent: false
          newAssigneeModifyEmailSent: false
          permalink: https://app.wdesk.com/tasks/task-456
          previousApproverModifyEmailSent: false
          previousAssigneeModifyEmailSent: false
          status: waiting
          task: task-456
          taskCancelled: false
          taskCancelledNotificationSent: false
          taskModificationComplete: false
        type: sendTask
      nullable: true
      properties:
        certApproverMetadata:
          $ref: '#/components/schemas/CertificationApproverActionMetadata'
        certConditionalApproverMetadata:
          $ref: '#/components/schemas/CertificationConditionalApproverActionMetadata'
        certSignerMetadata:
          $ref: '#/components/schemas/CertificationSignerActionMetadata'
        certificationMetadata:
          $ref: '#/components/schemas/CertificationGeneratorActionMetadata'
        contentRequestMetadata:
          $ref: '#/components/schemas/ContentRequestMetadata'
        sendTaskMetadata:
          $ref: '#/components/schemas/SendTaskMetadata'
        type:
          description: |
            The type of action the Job is performing.
            Dictates the type of arguments need to be passed to the Job.
          enum:
            - sendTask
            - contentRequest
            - certificationApproverGenerated
            - certificationSignerGenerated
            - certificationConditionalApproverGenerated
            - certificationPhaseFinalizerGenerated
            - certification
          example: sendTask
          readOnly: false
          type: string
      type: object
    NextReminder:
      description: |
        Information about the next scheduled reminder for a task.
        Contains the date when the next reminder will be sent and the role of the recipient who will receive it.
      example:
        date: "2024-03-28"
        recipientRole: assignee
      nullable: true
      properties:
        date:
          description: Date that the next reminder will be sent.
          example: "2024-01-16"
          format: date
          readOnly: false
          type: string
        recipientRole:
          description: The role of the recipient for reminder notifications.
          enum:
            - assignee
            - approver
          example: approver
          readOnly: false
          type: string
      type: object
    TagCategory:
      description: Tag category. Organizes a collection of tags.
      example:
        color: '#FF5733'
        id: category-456
        name: Department
      properties:
        color:
          description: The color of this tag category
          example: '#FF5733'
          maxLength: 32
          type: string
        id:
          description: The id of the tag category
          example: category-456
          maxLength: 32
          readOnly: false
          type: string
        name:
          description: The name of the tag category
          example: Department
          maxLength: 255
          type: string
      type: object
    TagValue:
      description: Tag value response.
      example:
        category: category-456
        id: value-789
        value: Finance
      properties:
        category:
          description: The id of the tag category that this value is associated with.
          example: category-456
          maxLength: 32
          type: string
        id:
          description: The id of the tag value.
          example: value-789
          maxLength: 32
          type: string
        value:
          description: The value held by this tag value.
          example: Finance
          maxLength: 255
          type: string
      type: object
    TagLink:
      description: |
        Represents a tag association linking a category and value to a specific entity.
        Tag links allow for flexible metadata categorization of Jobs, JobRuns, and other
        Process entities. Each link connects a target entity to a specific tag category-value pair.
      example:
        category:
          color: '#FF5733'
          id: category-456
          name: Department
        id: taglinkid234234
        target: jobId1231231
        targetType: job
        value:
          category: category-456
          id: value-789
          value: Finance
      properties:
        category:
          $ref: '#/components/schemas/TagCategory'
        id:
          description: The id of the tag link.
          example: taglink-123
          maxLength: 32
          readOnly: false
          type: string
        target:
          description: The id of the target entity associated with this tag.
          example: job-789
          type: string
        targetType:
          description: |
            The target type for a tag.  What this tag is describing.
          enum:
            - job
            - jobRun
          example: job
          type: string
        value:
          $ref: '#/components/schemas/TagValue'
      required:
        - category
        - id
        - target
        - targetType
        - value
      type: object
    ProcessRun:
      description: |
        A Process that has been started.  An instantiation of a Process.
      properties:
        autoClose:
          description: If this process is configured to automatically close once all actions are completed or canceled.
          example: true
          readOnly: true
          type: boolean
        businessDateExclusions:
          description: |2
              Individual dates that are excluded as business days of this ProcessRun.
              Impacts relative date calculations.
          example:
            - "2024-12-25"
            - "2024-01-01"
          items:
            description: |2
                Individual dates that are excluded as business days of this ProcessRun.
                Impacts relative date calculations.
            format: date
            type: string
          readOnly: true
          type: array
          uniqueItems: true
        businessDateInclusions:
          description: |2
              Individual dates that are included as business days of this ProcessRun, regardless of exclusion rules.
          example:
            - "2024-12-28"
          items:
            description: |2
                Individual dates that are included as business days of this ProcessRun, regardless of exclusion rules.
            format: date
            type: string
          readOnly: true
          type: array
          uniqueItems: true
        businessDaysOfWeek:
          description: |2
              The days of the week that are deemed "working days" for this ProcessRun.
              Impacts relative date calculations.
          example:
            - monday
            - tuesday
            - wednesday
            - thursday
            - friday
          items:
            description: |
              The days of the week.
            enum:
              - monday
              - tuesday
              - wednesday
              - thursday
              - friday
              - saturday
              - sunday
            example: wednesday
            type: string
          readOnly: true
          type: array
          uniqueItems: true
        businessEndDate:
          description: The end date for the ProcessRun.
          example: "2024-12-31"
          format: date
          readOnly: true
          type: string
        businessStartDate:
          description: Date for when the ProcessRun should start for anchoring relative dates
          example: "2024-01-01"
          format: date
          readOnly: true
          type: string
        calendars:
          description: |2
              A set of calendar ids associated with this ProcessRun.  The events of these calendars are displayed in
              calendar ux components in Processes.
          example:
            - calendar-123
            - calendar-456
          items:
            description: |2
                A set of calendar ids associated with this ProcessRun.  The events of these calendars are displayed in
                calendar ux components in Processes.
            example: '["calendar-123","calendar-456"]'
            type: string
          readOnly: true
          type: array
          uniqueItems: true
        certAutoApprove:
          description: If certification auto approval is turned on for certification actions on this process.
          example: true
          readOnly: true
          type: boolean
        completedDate:
          description: When the ProcessRun was completed.
          example: "2024-12-30T18:30:00Z"
          format: date-time
          readOnly: true
          type: string
        created:
          $ref: '#/components/schemas/Action'
        defaultCertApproverReminders:
          $ref: '#/components/schemas/ReminderData'
        defaultCertSignerReminders:
          $ref: '#/components/schemas/ReminderData'
        dueDate:
          description: When the Process is due.
          example: "2024-12-31"
          format: date
          readOnly: true
          type: string
        id:
          description: The Process' unique identifier.
          example: processinstance-xyz789
          readOnly: true
          type: string
        jobRunMap:
          additionalProperties:
            $ref: '#/components/schemas/JobRun'
          description: Convenience map of JobRun id to JobRun.
          example:
            job-instance-1:
              id: job-instance-1
              status: complete
            job-instance-2:
              id: job-instance-2
              status: running
          readOnly: true
          type: object
        managerUser:
          description: The userId of the user this ProcessRun runs as.
          example: manager123
          readOnly: true
          type: string
        modified:
          $ref: '#/components/schemas/Action'
        name:
          description: The name of the ProcessRun.
          example: Q4 2024 Financial Close
          readOnly: true
          type: string
        process:
          description: The Process id that was started that created this ProcessRun.
          example: process-abc123
          readOnly: true
          type: string
        relativeDates:
          description: |2
              If relative dates are enabled for this process.  Enables automatic shifting of dates based on the
              ProcessRun start date and business days configuration.
          example: false
          readOnly: true
          type: boolean
        revision:
          description: The revision number of the current representation of the Process
          example: 5
          format: int64
          readOnly: true
          type: integer
        root:
          $ref: '#/components/schemas/ProcessGroupRun'
        status:
          description: |
            The general execution status of the JobRun.  The same set of statuses apply to all
            JobRuns.  For action specific statuses see a JobRun's action status.
          enum:
            - waiting
            - running
            - cancelling
            - complete
            - cancelled
            - error
            - errorHold
          example: running
          readOnly: true
          type: string
        statusCounts:
          additionalProperties:
            description: Convenience map of JobRun action statuses to the number of JobRuns with that status.
            format: int64
            type: integer
          description: Convenience map of JobRun action statuses to the number of JobRuns with that status.
          example:
            Completed: 5
            Running: 3
            Waiting: 2
          readOnly: true
          type: object
      required:
        - autoClose
        - certAutoApprove
        - relativeDates
      type: object
    ErrorDetail:
      description: |
        Detailed error information for a specific validation or processing failure.
        Provides granular error context including error codes, messages, and the specific field or resource
        that caused the error. Typically used as part of an array of errors in an error response.
      example:
        code: VALIDATION_ERROR
        message: Field 'title' is required
        target: title
      nullable: true
      properties:
        code:
          description: One of a server-defined set of error codes.
          example: VALIDATION_ERROR
          type: string
        message:
          description: A human-readable representation of the error.
          example: Field 'title' is required but was not provided
          type: string
        meta:
          additionalProperties:
            description: Contains additional metadata about the failure - ie "jobId", "argumentName",etc
            example: '{"fieldName":"title","jobId":"job-abc123"}'
            nullable: true
            type: string
          description: Contains additional metadata about the failure - ie "jobId", "argumentName",etc
          example:
            fieldName: title
            jobId: job-abc123
          nullable: true
          type: object
        target:
          description: The target of the error.
          example: title
          nullable: true
          type: string
      type: object
    Error:
      description: |
        Standard error response returned by the API when a request fails.
        Provides detailed information about what went wrong including error codes, human-readable messages,
        and additional context to help diagnose and fix the issue.
      properties:
        code:
          description: One of a server-defined set of error codes.
          example: INVALID_ARGUMENT
          type: string
        details:
          description: An array of details about the error.
          example:
            - code: VALIDATION_ERROR
              message: Field 'title' is required
              target: title
          items:
            $ref: '#/components/schemas/ErrorDetail'
          nullable: true
          type: array
        documentationUrl:
          description: Link to some documentation relevant to the issue or endpoint in use.
          example: https://developers.workiva.com/workiva-platform/reference/platform-authentication
          nullable: true
          type: string
        message:
          description: A human-readable representation of the error.
          example: The provided job id is invalid or does not exist
          type: string
        meta:
          additionalProperties:
            description: Contains additional metadata about the failure - ie "jobId", "argumentName",etc
            example: '{"jobId":"job-abc123","argumentName":"title"}'
            nullable: true
            type: string
          description: Contains additional metadata about the failure - ie "jobId", "argumentName",etc
          example:
            argumentName: title
            jobId: job-abc123
          nullable: true
          type: object
        target:
          description: The target of the error.
          example: jobId
          nullable: true
          type: string
      required:
        - code
      type: object
    ProcessGroup:
      description: Group of Jobs and other Groups in a Process.
      example:
        id: root-group-123
        name: Main Workflow
        parallel: false
        readOnly: false
        triggerType: whenEligible
      properties:
        children:
          description: The children of this group. Children can be a job or another group.
          example:
            - job:
                id: job-123
                triggerType: whenEligible
              type: job
            - group:
                id: group-456
                name: Sub-group
                parallel: true
                readOnly: false
              type: group
          items:
            $ref: '#/components/schemas/ProcessGroupChild'
          type: array
        created:
          $ref: '#/components/schemas/Action'
        dueDate:
          description: The due date of the group.
          example: "2024-12-31"
          format: date
          type: string
        id:
          description: The Group's unique identifier
          example: group-abc123
          readOnly: false
          type: string
        modified:
          $ref: '#/components/schemas/Action'
        name:
          description: The name of the group.
          example: Financial Review Tasks
          type: string
        ordinal:
          description: The zero-based index representing the location of this group within its parent group
          example: 0
          format: int32
          readOnly: true
          type: integer
        parallel:
          description: If true, execute jobs in this group in parallel. If false, serial.
          example: false
          type: boolean
        parent:
          description: The id of this child's parent.  Not present if the parent is the root group of the Process.
          example: parent-group-789
          nullable: true
          type: string
        readOnly:
          description: Whether this Group is read-only.
          example: false
          readOnly: false
          type: boolean
        revision:
          description: The revision number of the current representation of the Group
          example: 2
          format: int64
          readOnly: true
          type: integer
        triggerType:
          description: What triggers a group child to execute.
          enum:
            - whenEligible
            - manual
          example: whenEligible
          type: string
      required:
        - parallel
        - readOnly
      type: object
    ProcessJob:
      description: |2
          A build-time representation of work to be done.
          The type of `action` the Job is dictates the type of `arguments` passed to it.
          The `arguments` represent the input to the Job, describing the work to be done.
          A Job can be built incrementally and only at the time it is attempted to be started,
          or a call to the Process' health-check endpoint will it and its arguments be validated.
      example:
        arguments:
          sendTaskArgs:
            title: Complete audit review
          type: sendTask
        id: job-xyz789
        triggerType: manual
      properties:
        action:
          description: |
            The type of action the Job is performing.
            Dictates the type of arguments need to be passed to the Job.
          enum:
            - sendTask
            - contentRequest
            - certificationApproverGenerated
            - certificationSignerGenerated
            - certificationConditionalApproverGenerated
            - certificationPhaseFinalizerGenerated
            - certification
          example: sendTask
          type: string
        arguments:
          $ref: '#/components/schemas/ActionArguments'
        created:
          $ref: '#/components/schemas/Action'
        generated:
          $ref: '#/components/schemas/ProcessGroup'
        id:
          description: The Job's unique identifier
          example: job-abc123
          readOnly: false
          type: string
        modified:
          $ref: '#/components/schemas/Action'
        ordinal:
          description: The zero-based index representing the location of this Job within its parent group
          example: 0
          format: int32
          readOnly: true
          type: integer
        parent:
          description: The id of this Job's parent. Not present if the parent is the root group of the Process.
          example: parent-group-123
          nullable: true
          type: string
        readOnly:
          description: Whether this Job is read-only.
          example: false
          readOnly: true
          type: boolean
        revision:
          description: The revision number of the current representation of the Job
          example: 2
          format: int64
          readOnly: true
          type: integer
        tags:
          description: The tag link, category, and value information associated with this Job.
          example:
            - category:
                color: '#FF5733'
                id: category-456
                name: Department
              id: taglink-123
              target: job-abc123
              targetType: job
              value:
                id: value-789
                value: Finance
          items:
            $ref: '#/components/schemas/TagLink'
          readOnly: true
          type: array
          uniqueItems: true
        triggerType:
          description: What triggers a group child to execute.
          enum:
            - whenEligible
            - manual
          example: whenEligible
          nullable: true
          type: string
      type: object
    ProcessGroupChild:
      description: |
        Represents a child element within a Group in a process definition (build-time).
        A group child can be either a Job or another nested Group, creating a hierarchical structure
        for organizing work. The type field determines which specific child type is present.
      example:
        job:
          id: job-123
          triggerType: whenEligible
        type: job
      properties:
        group:
          $ref: '#/components/schemas/ProcessGroup'
        job:
          $ref: '#/components/schemas/ProcessJob'
        type:
          description: |
            The type of group child.
            The corresponding job or group details will be provided below.
          enum:
            - group
            - job
          example: job
          type: string
      required:
        - type
      type: object
    Process:
      description: |2
          Build-time representation of a Process whose work is described by a collection of Jobs contained in its
          `root` Group.
      properties:
        autoClose:
          description: If this process is configured to automatically close once all actions are completed or canceled.
          example: true
          type: boolean
        businessDateExclusions:
          description: |2
              Individual dates that are excluded as business days of this Process.  Impacts relative date calculations.
          example:
            - "2024-12-25"
            - "2024-01-01"
          items:
            description: |2
                Individual dates that are excluded as business days of this Process.  Impacts relative date calculations.
            format: date
            type: string
          type: array
          uniqueItems: true
        businessDateInclusions:
          description: |2
              Individual dates that are included as business days of this Process, regardless of exclusion rules.
          example:
            - "2024-12-28"
          items:
            description: |2
                Individual dates that are included as business days of this Process, regardless of exclusion rules.
            format: date
            type: string
          type: array
          uniqueItems: true
        businessDaysOfWeek:
          description: |2
              The days of the week that are deemed "working days" for this Process.  Impacts relative date calculations.
          example:
            - monday
            - tuesday
            - wednesday
            - thursday
            - friday
          items:
            description: |
              The days of the week.
            enum:
              - monday
              - tuesday
              - wednesday
              - thursday
              - friday
              - saturday
              - sunday
            example: wednesday
            type: string
          type: array
          uniqueItems: true
        businessEndDate:
          description: The end date for the process.
          example: "2024-12-31"
          format: date
          type: string
        businessStartDate:
          description: Date for when the process should start for anchoring relative dates
          example: "2024-01-01"
          format: date
          type: string
        calendars:
          description: |2
              A set of calendar ids associated with this process.  The events of these calendars are displayed in calendar
              ux components in Processes.
          example:
            - calendar-123
            - calendar-456
          items:
            description: |2
                A set of calendar ids associated with this process.  The events of these calendars are displayed in calendar
                ux components in Processes.
            example: '["calendar-123","calendar-456"]'
            type: string
          type: array
          uniqueItems: true
        certAutoApprove:
          description: If certification auto approval is turned on for certification actions on this process.
          example: true
          type: boolean
        created:
          $ref: '#/components/schemas/Action'
        defaultCertApproverReminders:
          $ref: '#/components/schemas/ReminderData'
        defaultCertSignerReminders:
          $ref: '#/components/schemas/ReminderData'
        dueDate:
          description: When the Process is due.
          example: "2026-01-01"
          format: date
          type: string
        id:
          description: The Process' unique identifier.
          example: e7b9920095e342889190b4d7eaeca6fa
          maxLength: 32
          minLength: 1
          readOnly: false
          type: string
        modified:
          $ref: '#/components/schemas/Action'
        name:
          description: The name of the Process.
          example: Q4 2024 Financial Close Process
          type: string
        processTemplate:
          description: The id of the ProcessTemplate that this Process was created from.
          example: 9e20a5aeaaf84d5ba676233938ac4222
          maxLength: 32
          readOnly: true
          type: string
        relativeDates:
          description: |2
              If relative dates are enabled for this process.  Enables automatic shifting of dates based on the
              Process start date and business days configuration.
          example: false
          type: boolean
        revision:
          description: The revision number of the current representation of the Process
          example: 3
          format: int64
          readOnly: true
          type: integer
        root:
          $ref: '#/components/schemas/ProcessGroup'
        sourceProcessRun:
          description: The id of ProcessRun that this Process was copied from.
          example: 9e20a5aeaaf84d5ba676233938ac4222
          maxLength: 32
          readOnly: true
          type: string
      required:
        - autoClose
        - certAutoApprove
        - relativeDates
      type: object
    ProcessJSONPatchDocument:
      description: |
        A JSON Patch document as defined by RFC 6902. An array of patch operations. Valid "path" and operation ("op") combinations below:
            <ul>
            <li>/dueDate : "remove" and "replace"
            <li>/businessStartDate : "remove" and "replace"
            <li>/businessEndDate : "remove" and "replace"
            <li>/businessDaysOfWeek : "remove" and "replace"
            <li>/businessDateExclusions : "remove" and "replace"
            <li>/businessDateInclusions : "remove" and "replace"
            <li>/calendarIds : "remove" and "replace"
            <li>/name : "replace"
            <li>/autoClose : "replace"
            <li>/ipmBetaEnabled : "replace"
            <li>/iwmOptOut : "replace"
            <li>/relativeDates : "replace"
            <li>/root/parallel : "replace"
            <li>/root/triggerType : "replace"
            <li>/certAutoApprove : "replace"
            <li>/defaultCertSignerReminders : "remove" and "replace"
            <li>/defaultCertApproverReminders : "remove" and "replace"
            </ul>
      example:
        - op: remove
          path: /dueDate
        - op: replace
          path: /autoClose
          value: true
      items:
        description: |
          Represents a single JSON Patch operation as defined by RFC 6902 that is valid for patching Processes.Valid "path" and operation ("op") combinations below:
              <ul>
              <li>/dueDate : "remove" and "replace"
              <li>/businessStartDate : "remove" and "replace"
              <li>/businessEndDate : "remove" and "replace"
              <li>/businessDaysOfWeek : "remove" and "replace"
              <li>/businessDateExclusions : "remove" and "replace"
              <li>/businessDateInclusions : "remove" and "replace"
              <li>/calendarIds : "remove" and "replace"
              <li>/name : "replace"
              <li>/autoClose : "replace"
              <li>/ipmBetaEnabled : "replace"
              <li>/iwmOptOut : "replace"
              <li>/relativeDates : "replace"
              <li>/root/parallel : "replace"
              <li>/root/triggerType : "replace"
              <li>/certAutoApprove : "replace"
              <li>/defaultCertSignerReminders : "remove" and "replace"
              <li>/defaultCertApproverReminders : "remove" and "replace"
              </ul>
        example:
          op: replace
          path: /dueDate
          value: "2024-05-01T23:59:59Z"
        properties:
          op:
            description: The JSON Patch operation to perform.
            enum:
              - remove
              - replace
            example: replace
            type: string
          path:
            description: JSON Pointer to the target location.
            example: /dueDate
            pattern: ^(/[^/~]*(~[01][^/~]*)*)*$
            type: string
          value:
            description: The value to replace the target with.
            example: "2024-12-31T23:59:59Z"
        required:
          - op
          - path
        type: object
      type: array
    ProcessGroupNameUpdate:
      description: A request to update a Group's name.
      example:
        id: groupId2342342
        newName: new group name
      nullable: true
      properties:
        id:
          description: The id of the group whose name will be updated.
          example: groupId23423423423
          minLength: 1
          type: string
        newName:
          description: The new name for our group.
          example: This is our new name.
          minLength: 1
          type: string
      required:
        - id
        - newName
      type: object
    JobNameUpdate:
      description: A request to update a Job's name.
      example:
        id: jobId2342342
        newName: new job name
      nullable: true
      properties:
        id:
          description: The id of the job whose name will be updated.
          example: jobId2342342
          minLength: 1
          type: string
        newName:
          description: The new name for the targeted job.
          example: This is our new name.
          minLength: 1
          type: string
      required:
        - id
        - newName
      type: object
    BatchUpdateItem:
      description: Represents a single batch update request contained in a larger overall batch update.
      example:
        jobNameUpdate:
          id: jobId123
          newName: new job name
        type: jobName
      properties:
        groupNameUpdate:
          $ref: '#/components/schemas/ProcessGroupNameUpdate'
        jobNameUpdate:
          $ref: '#/components/schemas/JobNameUpdate'
        type:
          description: The type of the update being requested.
          enum:
            - jobName
            - groupName
          example: jobName
          type: string
      required:
        - type
      type: object
    BatchUpdate:
      description: A collection of updates to be done as a batch against the Process.
      properties:
        data:
          description: List of updates to apply to the Process as a batch.
          example:
            - id: jobId123
              newName: newJobTitle
              type: jobName
            - id: groupId123
              newName: newGroupTitle
              type: groupName
          items:
            $ref: '#/components/schemas/BatchUpdateItem'
          maxItems: 3000
          minItems: 0
          type: array
      required:
        - data
      type: object
    ProcessRunOptions:
      description: |
        Options that can change details about the execution of the Process, including whether or not to send an
        email notification to the ProcessRun creator upon the completion or cancellation of the Process.
      example:
        sendProcessCompleteEmail: false
      properties:
        sendProcessCompleteEmail:
          description: |
            If true (the default value), then when the Process is completed or cancelled an email notification is sent to the
            user who started the Process.
          example: true
          type: boolean
      type: object
    ProcessValidationResults:
      description: Process validation result
      properties:
        errors:
          description: Set of validation errors found in the process definition.
          example:
            - code: MISSING_REQUIRED_FIELD
              message: Job is missing required 'action' field
              meta:
                field: action
                jobId: job-abc123
              target: job-abc123
          items:
            $ref: '#/components/schemas/Error'
          type: array
          uniqueItems: true
      type: object
