Webex Flows API

The Flows API from Webex — 11 operation(s) for flows.

OpenAPI Specification

webex-flows-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: Webex Contact Center Flows API
  version: 1.0.0
  description: The Webex Contact Center APIs allow developers to deeply integrate, configure, and manage cloud-based contact center solutions. These APIs cover agent lifecycle management, queue and routing configuration, customer journey tracking, and access to real-time and historical analytics. Use cases include embedding agent controls in custom UIs, automating workforce management, integrating with CRM and ticketing systems, and building custom reporting dashboards. The APIs empower organizations to deliver personalized, efficient customer experiences and optimize contact center operations.
  x-provenance:
    method: harvested
    authored_by: Cisco Webex
    harvested_by: API Evangelist
    harvested_on: '2026-08-19'
    first_party: true
    note: Published by Cisco. Retrieved unmodified except for this x-provenance block.
    provider_published: true
  x-evidence:
  - type: source
    url: https://github.com/webex/webex-openapi-specs/blob/main/public-spec/webex-contact-center.json
  - type: raw
    url: https://raw.githubusercontent.com/webex/webex-openapi-specs/main/public-spec/webex-contact-center.json
tags:
- name: Flows
paths:
  /{orgId}/project/{projectId}/flows:
    get:
      tags:
      - Flows
      summary: List Flows or Subflows
      description: 'Returns a list of flows in response. Channel-based filtering can be applied with the `searchBy` query parameter (for example, `channelType|telephony`, `channelType|workItem`, `channelType|customMessaging`, `channelType|genericAction`). Channel visibility may be constrained by organization feature flags.


        Scope: `cjp:config_read`. Roles: [`Organizational Full Admin`, `Supervisor`, `Contact Center Service Admin`, `User Admin`]'
      operationId: findFlowsUsingGET
      parameters:
      - name: flowType
        in: query
        description: Either of 'FLOW' or 'SUBFLOW'.
        schema:
          type: string
          default: FLOW
        example: FLOW
      - name: ids
        in: query
        description: Filters results based on a comma-separated list of flow IDs. If provided, only flows with those IDs will be fetched in the response.
        style: form
        schema:
          type: array
          items:
            type: string
        example:
        - 668e4b2d928d471e41da03d1
        - 668e3ee2928d471e41da03cb
      - name: orgId
        in: path
        description: Organization ID.
        required: true
        schema:
          type: string
        example: 8eb7da9a-c81c-4d13-b08b-38fdeb7330d8
      - name: page
        in: query
        description: Defines the number of the displayed page. The page number starts from 0.
        schema:
          type: integer
          format: int32
          default: 0
        example: 0
      - name: partialNameSearch
        in: query
        description: Performs a partial string match on the name of the flow. If the flow name contains the given string it will be fetched in the response.
        schema:
          type: string
        example: flow1
      - name: searchBy
        in: query
        description: Filter expression in the format `<field>|<value>`. Supports searching by `channelType` (for example, `channelType|telephony`, `channelType|workItem`, `channelType|customMessaging`, `channelType|genericAction`).
        schema:
          type: string
        example: channelType|customMessaging
      - name: projectId
        in: path
        description: 'Project ID. System generated value which is the same across orgs and environments. Always use: 5e5c9ad6d61f870d6d778c1b.'
        required: true
        schema:
          type: string
        example: 5e5c9ad6d61f870d6d778c1b
      - name: size
        in: query
        description: Defines the number of items to be displayed on a page. If the number specified is more than allowed max page size, the API will automatically adjust the page size to the max page size.
        schema:
          type: integer
          format: int32
          default: 10
        example: 10
      - name: includePagination
        in: query
        description: If set to true then a different paginated response object containing the page metadata (currentPage, totalRecords, pageSize, totalPages) will be returned. The flow objects will be in an array named "data".
        required: false
        schema:
          type: boolean
          default: false
        example: false
      - name: isValidation
        in: query
        description: If true, validates the existence of flows by ID regardless of the caller's RBAC access. Intended for internal Task Management use cases.
        required: false
        schema:
          type: boolean
          default: false
        example: false
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/BasicFlow'
                example:
                - id: 65c28d9db2a2375974066579
                  name: TestFlow
                  flowType: FLOW
                  status: Draft
                  orgId: 8eb7da9a-c81c-4d13-b08b-38fdeb7330d8
                  version: 1
        '400':
          description: Bad request
          content: {}
        '401':
          description: Unauthorized
          content: {}
        '403':
          description: Forbidden
          content: {}
        '404':
          description: Not Found
          content: {}
        '500':
          description: Internal Server Error
          content: {}
  /{orgId}/project/{projectId}/flows:search:
    get:
      tags:
      - Flows
      summary: Search Flows
      description: 'Returns a list of flows in response. The search is case-sensitive.


        Scope: `cjp:config_read`. Roles: [`Organizational Full Admin`, `Supervisor`, `Contact Center Service Admin`, `User Admin`]'
      operationId: searchFlows
      parameters:
      - name: orgId
        in: path
        description: Organization ID.
        required: true
        schema:
          type: string
        example: 8eb7da9a-c81c-4d13-b08b-38fdeb7330d8
      - name: projectId
        in: path
        description: 'Project ID. System generated value which is the same across orgs and environments. Always use: 5e5c9ad6d61f870d6d778c1b.'
        required: true
        schema:
          type: string
        example: 5e5c9ad6d61f870d6d778c1b
      - name: query
        in: query
        description: Searches for flows with the given query. The search is case-sensitive.
        required: true
        schema:
          type: string
        example: flow1
      - name: flowType
        in: query
        description: Either of 'FLOW' or 'SUBFLOW' or 'ALL'. Default value is 'ALL'.
        required: false
        schema:
          type: string
          default: ALL
        example: FLOW
      - name: page
        in: query
        description: Defines the number of the displayed page. The page number starts from 0.
        required: false
        schema:
          type: integer
          format: int32
          default: 0
        example: 0
      - name: size
        in: query
        description: Defines the number of items to be displayed on a page. If the number specified is more than allowed max page size, the API will automatically adjust the page size to the max page size.
        required: false
        schema:
          type: integer
          format: int32
          default: 100
        example: 10
      - name: keyValueFilter
        in: query
        description: 'Filters results based on key-value pairs. Format: ''key1|value1,key2|value2''. This will add a filter on normalizedFlow collection directly instead of running query on atlas.'
        required: false
        schema:
          type: string
          default: ''
        example: activityName|Queue,flowType|FLOW
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/FlowSearchResponse'
        '400':
          description: Bad request
          content: {}
        '401':
          description: Unauthorized
          content: {}
        '403':
          description: Forbidden
          content: {}
        '404':
          description: Not Found
          content: {}
        '500':
          description: Internal Server Error
          content: {}
  /{orgId}/project/{projectId}/flows/{flowId}:
    delete:
      tags:
      - Flows
      summary: Delete a Flow or Subflow
      description: 'Permanently deletes a flow or subflow. Flows deleted via this API are removed permanently and cannot be recovered.


        Scope: `cjp:config_write`. Roles: [`Organizational Full Admin`, `Contact Center Service Admin`]'
      operationId: deleteFlowUsingDELETE
      parameters:
      - name: orgId
        in: path
        description: Organization ID.
        required: true
        schema:
          type: string
        example: 8eb7da9a-c81c-4d13-b08b-38fdeb7330d8
      - name: projectId
        in: path
        description: 'Project ID. System generated value which is the same across orgs and environments. Always use: 5e5c9ad6d61f870d6d778c1b.'
        required: true
        schema:
          type: string
        example: 5e5c9ad6d61f870d6d778c1b
      - name: flowId
        in: path
        description: ID of the flow/subflow to delete.
        required: true
        schema:
          type: string
        example: 661c7bc712eaf357de7e4aeb
      - name: force
        in: query
        description: If 'yes', the flow is deleted even if it is still referenced by other entities. Defaults to 'no'.
        required: false
        schema:
          type: string
          default: 'no'
        example: 'no'
      - name: skipRsEPCheck
        in: query
        description: If true, skips the check for routing strategy and entry point associations before deleting the flow.
        required: false
        schema:
          type: boolean
          default: true
        example: true
      - name: flowType
        in: query
        description: Either of 'FLOW' or 'SUBFLOW'.
        required: false
        schema:
          type: string
          default: FLOW
        example: FLOW
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: string
                example: OK
        '400':
          description: Bad Request
          content: {}
        '401':
          description: Unauthorized
          content: {}
        '403':
          description: Forbidden
          content: {}
        '404':
          description: Not Found
          content: {}
        '500':
          description: Internal Server Error
          content: {}
  /{orgId}/project/{projectId}/flows/{flowId}:publish:
    post:
      tags:
      - Flows
      summary: Publish a Flow or Subflow
      description: 'Returns the published flow in response.


        The Publish API validates the basic structure of the flows. We recommend manually verifying the published flows before proceeding with live traffic.


        Scope: `cjp:config_write`. Roles: [`Organizational Full Admin`, `Supervisor`, `Contact Center Service Admin`, `User Admin`]'
      operationId: publishFlowVersionUsingPOST
      parameters:
      - name: flowId
        in: path
        description: ID of the flow/subflow to publish.
        required: true
        schema:
          type: string
        example: 661c7bc712eaf357de7e4aeb
      - name: orgId
        in: path
        description: Organization ID.
        required: true
        schema:
          type: string
        example: 8eb7da9a-c81c-4d13-b08b-38fdeb7330d8
      - name: projectId
        in: path
        description: 'Project ID. System generated value which is the same across orgs and environments. Always use: 5e5c9ad6d61f870d6d778c1b.'
        required: true
        schema:
          type: string
        example: 5e5c9ad6d61f870d6d778c1b
      - name: TrackingId
        in: header
        description: ID for tracking.
        schema:
          type: string
        example: 491fed1e-de7f-11ef-9cd2-0242ac120002
      - name: skipValidation
        in: query
        description: If true, the flow's pre-publish validation is skipped. Use with care.
        required: false
        schema:
          type: boolean
          default: false
        example: false
      - name: flowType
        in: query
        description: Either of 'FLOW' or 'SUBFLOW'.
        required: false
        schema:
          type: string
          default: FLOW
        example: FLOW
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/PublishParameters'
        required: true
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/FlowRes'
        '201':
          description: Created
          content: {}
        '400':
          description: Bad request
          content: {}
        '401':
          description: Unauthorized
          content: {}
        '403':
          description: Forbidden
          content: {}
        '404':
          description: Not Found
          content: {}
        '500':
          description: Internal Server Error
          content: {}
      x-codegen-request-body-name: PublishParameters
  /{orgId}/project/{projectId}/flows/{flowId}:lock:
    post:
      tags:
      - Flows
      summary: Lock a Flow or Subflow
      description: 'Lock a flow to prevent concurrent edits by other users. Locks expire after 15 minutes of inactivity.


        Scope: `cjp:config_write`. Roles: [`Organizational Full Admin`, `Contact Center Service Admin`]'
      operationId: lockFlowUsingPOST
      parameters:
      - name: flowId
        in: path
        description: Flow ID.
        required: true
        schema:
          type: string
        example: 661c7bc712eaf357de7e4aeb
      - name: orgId
        in: path
        description: Organization ID.
        required: true
        schema:
          type: string
        example: 8eb7da9a-c81c-4d13-b08b-38fdeb7330d8
      - name: projectId
        in: path
        description: 'Project ID. System generated value which is the same across orgs and environments. Always use: 5e5c9ad6d61f870d6d778c1b.'
        required: true
        schema:
          type: string
        example: 5e5c9ad6d61f870d6d778c1b
      - name: flowType
        in: query
        description: Either of 'FLOW' or 'SUBFLOW'.
        required: false
        schema:
          type: string
          default: FLOW
        example: FLOW
      responses:
        '200':
          description: Lock confirmation with expiry information.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/FlowLockResponse'
        '401':
          description: Unauthorized.
          content: {}
        '403':
          description: Forbidden.
          content: {}
        '404':
          description: Not Found.
          content: {}
        '409':
          description: Conflict — the flow is already locked by another user.
          content: {}
        '429':
          description: Too Many Requests.
          content: {}
  /{orgId}/project/{projectId}/flows/{flowId}:unlock:
    post:
      tags:
      - Flows
      summary: Unlock a Flow or Subflow
      description: 'Release the lock on a flow to allow other users to edit it.


        Scope: `cjp:config_write`. Roles: [`Organizational Full Admin`, `Contact Center Service Admin`]'
      operationId: unlockFlowUsingPOST
      parameters:
      - name: flowId
        in: path
        description: Flow ID.
        required: true
        schema:
          type: string
        example: 661c7bc712eaf357de7e4aeb
      - name: orgId
        in: path
        description: Organization ID.
        required: true
        schema:
          type: string
        example: 8eb7da9a-c81c-4d13-b08b-38fdeb7330d8
      - name: projectId
        in: path
        description: 'Project ID. System generated value which is the same across orgs and environments. Always use: 5e5c9ad6d61f870d6d778c1b.'
        required: true
        schema:
          type: string
        example: 5e5c9ad6d61f870d6d778c1b
      - name: flowType
        in: query
        description: Either of 'FLOW' or 'SUBFLOW'.
        required: false
        schema:
          type: string
          default: FLOW
        example: FLOW
      responses:
        '200':
          description: Unlock confirmation.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/FlowLockResponse'
        '401':
          description: Unauthorized.
          content: {}
        '403':
          description: Forbidden.
          content: {}
        '404':
          description: Not Found.
          content: {}
        '429':
          description: Too Many Requests.
          content: {}
  /{orgId}/project/{projectId}/v2/flows:validate:
    post:
      tags:
      - Flows
      summary: Validate a Flow
      description: 'Dry-run validate a flow definition without persisting it. Use this to check correctness before importing.


        Note: validation is more lenient than import. A flow that passes `:validate` can still be rejected by `:import` (for example, a missing start activity), so a successful validation does not guarantee a successful import.


        Scope: `cjp:config_write`'
      operationId: validateFlowV2
      parameters:
      - name: orgId
        in: path
        description: Organization ID.
        required: true
        schema:
          type: string
        example: 8eb7da9a-c81c-4d13-b08b-38fdeb7330d8
      - name: projectId
        in: path
        description: 'Project ID. System generated value which is the same across orgs and environments. Always use: 5e5c9ad6d61f870d6d778c1b.'
        required: true
        schema:
          type: string
        example: 5e5c9ad6d61f870d6d778c1b
      requestBody:
        description: Flow JSON document to validate.
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/FlowV2'
        required: true
      responses:
        '200':
          description: Validation result.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/FlowV2ValidationResult'
        '400':
          description: Bad Request — Invalid flow schema or missing required fields.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/FlowV2ErrorResponse'
        '401':
          description: Unauthorized.
          content: {}
        '403':
          description: Forbidden.
          content: {}
        '404':
          description: Not Found.
          content: {}
        '429':
          description: Too Many Requests.
          content: {}
  /{orgId}/project/{projectId}/v2/flows:import:
    post:
      tags:
      - Flows
      summary: Import a Flow
      description: 'Import a new flow from a flow definition. Creates the flow in draft state and returns the assigned flow metadata, including `flowId`.


        Scope: `cjp:config_write`'
      operationId: importFlowV2
      parameters:
      - name: orgId
        in: path
        description: Organization ID.
        required: true
        schema:
          type: string
        example: 8eb7da9a-c81c-4d13-b08b-38fdeb7330d8
      - name: projectId
        in: path
        description: 'Project ID. System generated value which is the same across orgs and environments. Always use: 5e5c9ad6d61f870d6d778c1b.'
        required: true
        schema:
          type: string
        example: 5e5c9ad6d61f870d6d778c1b
      - name: overwrite
        in: query
        description: If true, replaces an existing flow with the same name. Defaults to false.
        required: false
        schema:
          type: boolean
          default: false
        example: false
      - name: flowType
        in: query
        description: Either of 'FLOW' or 'SUBFLOW'.
        required: false
        schema:
          type: string
          default: FLOW
        example: FLOW
      requestBody:
        description: Flow JSON document to import.
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/FlowV2'
        required: true
      responses:
        '201':
          description: Created — flow metadata including the assigned `flowId`.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/FlowV2Metadata'
        '400':
          description: Bad Request.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/FlowV2ErrorResponse'
        '401':
          description: Unauthorized.
          content: {}
        '403':
          description: Forbidden.
          content: {}
        '404':
          description: Not Found.
          content: {}
        '409':
          description: Conflict — a flow with the same name already exists and `overwrite` is false.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/FlowV2ErrorResponse'
        '422':
          description: Unprocessable Entity — flow document failed validation.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/FlowV2ValidationResult'
        '429':
          description: Too Many Requests.
          content: {}
  /{orgId}/project/{projectId}/v2/flows/{flowId}:
    get:
      tags:
      - Flows
      summary: Get a Flow
      description: 'Retrieve the current draft of a flow as a flow document. To fetch a specific published version, use the `:export` endpoint.


        Scope: `cjp:config_read`'
      operationId: getFlowV2
      parameters:
      - name: orgId
        in: path
        description: Organization ID.
        required: true
        schema:
          type: string
        example: 8eb7da9a-c81c-4d13-b08b-38fdeb7330d8
      - name: projectId
        in: path
        description: 'Project ID. System generated value which is the same across orgs and environments. Always use: 5e5c9ad6d61f870d6d778c1b.'
        required: true
        schema:
          type: string
        example: 5e5c9ad6d61f870d6d778c1b
      - name: flowId
        in: path
        description: Flow ID.
        required: true
        schema:
          type: string
        example: 661c7bc712eaf357de7e4aeb
      - name: flowType
        in: query
        description: Either of 'FLOW' or 'SUBFLOW'.
        required: false
        schema:
          type: string
          default: FLOW
        example: FLOW
      responses:
        '200':
          description: Flow JSON document.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/FlowV2'
        '401':
          description: Unauthorized.
          content: {}
        '403':
          description: Forbidden.
          content: {}
        '404':
          description: Not Found.
          content: {}
        '429':
          description: Too Many Requests.
          content: {}
    post:
      tags:
      - Flows
      summary: Save a Flow Draft
      description: 'Save a complete flow document as the current draft, replacing the existing draft. Pass `expectedVersion` as a query parameter to enable optimistic locking; the request fails with `409 Conflict` if the server-side version does not match. Omit `expectedVersion` to skip the check.


        Scope: `cjp:config_write`'
      operationId: saveFlowV2Draft
      parameters:
      - name: orgId
        in: path
        description: Organization ID.
        required: true
        schema:
          type: string
        example: 8eb7da9a-c81c-4d13-b08b-38fdeb7330d8
      - name: projectId
        in: path
        description: 'Project ID. System generated value which is the same across orgs and environments. Always use: 5e5c9ad6d61f870d6d778c1b.'
        required: true
        schema:
          type: string
        example: 5e5c9ad6d61f870d6d778c1b
      - name: flowId
        in: path
        description: Flow ID.
        required: true
        schema:
          type: string
        example: 661c7bc712eaf357de7e4aeb
      - name: expectedVersion
        in: query
        description: Expected current draft version for optimistic locking. The request fails with 409 Conflict if the server-side version does not match. Omit to skip the check.
        required: false
        schema:
          type: integer
          format: int32
        example: 3
      - name: flowType
        in: query
        description: Either of 'FLOW' or 'SUBFLOW'.
        required: false
        schema:
          type: string
          default: FLOW
        example: FLOW
      requestBody:
        description: Complete Flow JSON document.
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/FlowV2'
        required: true
      responses:
        '200':
          description: Updated flow metadata, including the new `version`.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/FlowV2Metadata'
        '400':
          description: Bad Request.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/FlowV2ErrorResponse'
        '401':
          description: Unauthorized.
          content: {}
        '403':
          description: Forbidden.
          content: {}
        '404':
          description: Not Found.
          content: {}
        '409':
          description: Conflict — `expectedVersion` does not match the current draft version.
          content: {}
        '422':
          description: Unprocessable Entity — flow document failed validation.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/FlowV2ValidationResult'
        '429':
          description: Too Many Requests.
          content: {}
    patch:
      tags:
      - Flows
      summary: Patch a Flow Draft
      description: 'Apply partial updates to an existing flow draft without replacing the entire document. The patch body is a Patch Draft Contract — server-side merge, idempotent, and re-validated after the merge. The patch is rejected if the merged document fails validation, so the draft is never left in a broken state. The body may also include top-level overrides such as `name` and `description`.


        Pass `expectedVersion` as a query parameter to enable optimistic locking; the request fails with `409 Conflict` if the server-side version does not match. Omit `expectedVersion` to skip the check.


        Scope: `cjp:config_write`'
      operationId: patchFlowV2Draft
      parameters:
      - name: orgId
        in: path
        description: Organization ID.
        required: true
        schema:
          type: string
        example: 8eb7da9a-c81c-4d13-b08b-38fdeb7330d8
      - name: projectId
        in: path
        description: 'Project ID. System generated value which is the same across orgs and environments. Always use: 5e5c9ad6d61f870d6d778c1b.'
        required: true
        schema:
          type: string
        example: 5e5c9ad6d61f870d6d778c1b
      - name: flowId
        in: path
        description: Flow ID.
        required: true
        schema:
          type: string
        example: 661c7bc712eaf357de7e4aeb
      - name: expectedVersion
        in: query
        description: Expected current draft version for optimistic locking. The request fails with 409 Conflict if the server-side version does not match. Omit to skip the check.
        required: false
        schema:
          type: integer
          format: int32
        example: 3
      - name: flowType
        in: query
        description: Either of 'FLOW' or 'SUBFLOW'.
        required: false
        schema:
          type: string
          default: FLOW
        example: FLOW
      requestBody:
        description: Patch Draft Contract document.
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/PatchDraftContract'
        required: true
      responses:
        '200':
          description: Updated flow metadata, including the new `version`.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/FlowV2Metadata'
        '400':
          description: Bad Request.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/FlowV2ErrorResponse'
        '401':
          description: Unauthorized.
          content: {}
        '403':
          description: Forbidden.
          content: {}
        '404':
          description: Not Found.
          content: {}
        '409':
          description: Conflict — `expectedVersion` does not match the current draft version.
          content: {}
        '422':
          description: Unprocessable Entity — merged flow document failed validation.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/FlowV2ValidationResult'
        '429':
          description: Too Many Requests.
          content: {}
  /{orgId}/project/{projectId}/v2/flows/{flowId}:validate:
    get:
      tags:
      - Flows
      summary: Validate an Existing Flow Draft
      description: 'Validate the current draft of an existing flow (read-only operation).


        Scope: `cjp:config_read`'
      operationId: validateExistingFlowV2
      parameters:
      - name: orgId
        in: path
        description: Organization ID.
        required: true
        schema:
          type: string
        example: 8eb7da9a-c81c-4d13-b08b-38fdeb7330d8
      - name: projectId
        in: path
        description: 'Project ID. System generated value which is the same across orgs and environments. Always use: 5e5c9ad6d61f870d6d778c1b.'
        required: true
        schema:
          type: string
        example: 5e5c9ad6d61f870d6d778c1b
      - name: flowId
        in: path
        description: Flow ID.
        required: true
        schema:
          type: string
        example: 661c7bc712eaf357de7e4aeb
      - name: versionId
        in: query
        description: Version to validate. Use 'draft' for the current draft, or a specific version ObjectId.
        required: false
        schema:
          type: string
          default: draft
        example: draft
      - name: flowType
        in: query
        description: Either of 'FLOW' or 'SUBFLOW'.
        required: false
        schema:
          type: string
          default: FLOW
        example: FLOW
      responses:
        '200':
          description: Validation result.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/FlowV2DraftValidationResult'
        '401':
          description: Unauthorized.
          content: {}
        '403':
          description: Forbidden.
          content: {}
        '404':
          description: Not Found.
          content: {}
        '429':
          description: Too Many Requests.
          content: {}
  /{orgId}/project/{projectId}/v2/flows/{flowId}:export:
    get:
      tags:
      - Flows
      summary: Export a Flow
      description: 'Export a flow as a flow document for backup, migration, or version control.


        Scope: `cjp:config_read`'
      operationId: exportFlowV2
      parameters:
      - name: orgId
        in: path
        description: Organization ID.
        required: true
        schema:
          type: string
        example: 8eb7da9a-c81c-4d13-b08b-38fdeb7330d8
      - name: projectId
        in: path
        description: 'Project ID. System generated value which is the same across orgs and environments. Always use: 5e5c9ad6d61f870d6d778c1b.'
        required: true
        schema:
          type: string
        example: 5e5c9ad6d61f870d6d778c1b
      - name: flowId
        in: path
        description: Flow ID.
        required: true
        schema:
          type: string

# --- truncated at 32 KB (83 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/webex/refs/heads/main/openapi/webex-flows-api-openapi.yml