openapi: 3.2.0 info: title: Webex Contact Center Activities 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: Activities paths: /{orgId}/project/{projectId}/v2/activities: get: tags: - Activities summary: List Activity Definitions description: 'List all available activity types with their full schemas, including inputs, outputs, ports, and descriptions. The response is sufficient on its own to construct nodes — there is no separate schema endpoint. Scope: `cjp:config_read`' operationId: listActivityDefinitions 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 responses: '200': description: Array of activity definitions. content: application/json: schema: type: array items: $ref: '#/components/schemas/ActivityV2' example: - activityName: play-message displayName: Play Message category: core group: action activityType: action '401': description: Unauthorized. content: {} '403': description: Forbidden. content: {} '404': description: Not Found. content: {} '429': description: Too Many Requests. content: {} /{orgId}/project/{projectId}/v2/activities/{activityName}: get: tags: - Activities summary: Describe an Activity description: 'Retrieve a single activity''s full definition, including inputs, outputs, named ports, and the JSON Schema for its inputs — all returned inline. Scope: `cjp:config_read`' operationId: describeActivity 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: activityName in: path description: Activity type name (e.g., `play-message`, `queue-contact`). required: true schema: type: string example: play-message responses: '200': description: Activity definition. content: application/json: schema: $ref: '#/components/schemas/ActivityV2' '401': description: Unauthorized. content: {} '403': description: Forbidden. content: {} '404': description: Not Found. content: {} '429': description: Too Many Requests. content: {} /{orgId}/project/{projectId}/v2/activities/{activityName}/inputs/{inputName}/choices: get: tags: - Activities summary: Get Activity Input Choices description: 'Resolve choices for an activity input. Use this when an activity input requires a value from a predefined or dynamically resolved set (e.g., available queues, audio files, agents). This endpoint is only valid for inputs that expose choices (an input whose definition includes `allowedValues` or a `choicesEndpoint`, as returned by `describeActivity`). Calling it for an input that does not support choices returns 400. Pass `search` to filter the choices (type-ahead). Add `validate=true` together with `search` to do a point-lookup of a single value instead of filtering — the match is against the choice''s `value` (its ID), not its display `name`. For a cascading input whose allowed values depend on a sibling input, supply the parent with `parentInputName` and `parentValue`; otherwise a cascading input returns 400. Filtering and validation apply only to dynamic (`choicesEndpoint`-backed) inputs. A static input always returns its full enumerated list regardless of `search`/`validate`. Scope: `cjp:config_read`' operationId: getActivityInputChoices 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: activityName in: path description: Activity type name. required: true schema: type: string example: queue-contact - name: inputName in: path description: Input field name. Must be an input that exposes choices (has `allowedValues` or a `choicesEndpoint`). required: true schema: type: string example: channelType - name: search in: query description: Search text used to filter the returned choices (type-ahead). When `validate=true`, this is instead the single value to look up. required: false schema: type: string example: support - name: validate in: query description: When `true` and `search` is supplied, performs a point-lookup of the single value in `search` (matched against the choice's `value`/ID) instead of filtering. required: false schema: type: boolean default: false example: false - name: parentValue in: query description: Parent input value for a cascading/dynamic input (for example, the selected `channelType`). required: false schema: type: string example: TELEPHONY - name: parentInputName in: query description: Parent input name for a cascading/dynamic input. Required when `parentValue` is provided. required: false schema: type: string example: channelType responses: '200': description: Resolved choices for the input, plus resolution metadata. content: application/json: schema: $ref: '#/components/schemas/ActivityInputChoices' '400': description: Bad Request — a cascading input was queried without its parent (`parentInputName`/`parentValue`), or the input does not support choices. 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: {} components: schemas: FlowV2ValidationError: title: FlowV2ValidationError type: object description: A single validation error against a flow document. properties: activityName: type: string description: Name of the activity the error relates to. example: play-message condition: type: string description: Edge condition the error relates to, when applicable. example: onTimeout from: type: string description: Source node label of the offending edge, when applicable. example: WelcomeMessage edge: type: string description: Human-readable description of the offending edge, when applicable. example: WelcomeMessage->DisconnectContact(onTimeout) suggestion: type: string description: Suggested fix. example: 'Use one of: default, error' message: type: string description: Human-readable explanation of the error. example: Condition 'onTimeout' is not valid for activity 'play-message'. severity: type: string description: Severity of the issue. enum: - ERROR example: ERROR ActivityInputChoices: title: ActivityInputChoices type: object description: Resolved choices for an activity input, returned by the activity input choices endpoint, along with resolution metadata. additionalProperties: true example: count: 2 source: static choices: - name: Voice value: TELEPHONY - name: Work item value: WORK_ITEM parentInputName: '' parentValue: '' isSearchEnabled: false resolvedInput: channelType activity: queue-lookup input: channelType properties: count: type: integer description: Number of choices returned. example: 2 source: type: string description: How the choices were resolved. enum: - list - search - validate - dynamic - static example: static choices: type: array description: The resolved choices. items: $ref: '#/components/schemas/ActivityChoiceEntry' parentInputName: type: string description: Parent input name echoed back for cascading resolution (empty when not cascading). example: '' parentValue: type: string description: Parent input value echoed back for cascading resolution (empty when not cascading). example: '' isSearchEnabled: type: boolean description: True when the input supports server-side search/filtering. example: false resolvedInput: type: string description: The input name the choices were resolved for. example: channelType activity: type: string description: The activity name the input belongs to. example: queue-lookup input: type: string description: The requested input name. example: channelType ActivityChoiceEntry: title: ActivityChoiceEntry type: object description: A single resolved choice for an activity input. additionalProperties: true properties: name: type: string description: Human-readable label shown in authoring UIs. example: Main Support Queue value: type: string description: The choice value/ID, suitable for use as the activity input value. example: Main_Support_Queue FlowV2ErrorResponse: title: FlowV2ErrorResponse type: object description: Standard error envelope returned by flow endpoints. For 400 (bad request) and 422 (validation failure), `details[]` carries field-level error information. additionalProperties: true example: code: INVALID_FLOW message: Flow document failed validation. details: - path: /nodes/2/inputs/queue code: UNKNOWN_QUEUE message: Queue 'Main_Support_Quueue' was not found in the project. properties: code: type: string description: Stable, machine-readable error code. example: INVALID_FLOW message: type: string description: Human-readable error message. example: Flow document failed validation. details: type: array description: Per-issue error details. Populated for 400 and 422 responses. items: $ref: '#/components/schemas/FlowV2ValidationError' ActivityOutput: title: ActivityOutput type: object description: A single output field produced by an activity. additionalProperties: true properties: name: type: string description: Output field name. example: callerEnteredDigits type: type: string description: Output data type. example: STRING description: type: string description: Human-readable description of the output. example: Digits the caller entered before timeout. ActivityOutputPort: title: ActivityOutputPort type: object description: An output port the activity may exit through. Edges reference a port via their `condition`. additionalProperties: true properties: condition: type: string description: Port condition. An edge's `condition` must match one of these verbatim (for example, `default`, `error`). example: default label: type: string description: Human-readable port label shown in authoring UIs. May be empty. example: default isErrorPath: type: boolean description: True if this port is the activity's error path. example: false ActivityV2: title: ActivityV2 type: object description: Definition of an activity type, including its inputs, outputs, and named output ports. additionalProperties: true example: activityName: play-message displayName: Play Message category: core group: action activityType: action inputs: [] outputs: [] outputPorts: - condition: error label: '' isErrorPath: true - condition: default label: default isErrorPath: false properties: activityName: type: string description: Stable activity type identifier referenced by a flow node's `properties.activityName`. Read the value verbatim from this endpoint; it is not always kebab-case (for example, `SetCallerID`, `Feedback-V2`, `queue-lookup`). example: play-message displayName: type: string description: Human-readable name shown in authoring UIs. example: Play Message category: type: string description: High-level grouping the activity belongs to (for example, `core`). example: core group: type: string description: Group the activity belongs to. An open set; observed values include `action`, `enum-gateway`, `http-request`, `parse-activity`, `set-variable`, and `terminating-action`. Read the value verbatim rather than assuming a fixed set. example: action activityType: type: string description: Underlying activity classification used by the runtime (for example, `action`, `start`). example: action inputs: type: array description: Declared inputs for the activity. items: $ref: '#/components/schemas/ActivityInput' outputs: type: array description: Declared outputs for the activity. items: $ref: '#/components/schemas/ActivityOutput' outputPorts: type: array description: Output ports the activity may exit through. An edge's `condition` must match one of these ports' `condition` values. items: $ref: '#/components/schemas/ActivityOutputPort' ActivityInput: title: ActivityInput type: object description: A single input field on an activity definition. additionalProperties: true properties: name: type: string description: Input field name. example: channelType type: type: string description: Input data type (for example, `string`, `boolean`, `int`, `object[]`). example: string required: type: boolean description: True if the input must be supplied. example: true defaultValue: description: Default value applied when the input is not supplied. May be null. Type matches `type`. example: null showOnCondition: type: - string - 'null' description: Expression controlling when this input is shown in authoring UIs, evaluated against sibling input values. Null when the input is always shown. example: toggle == false isSecure: type: boolean description: True if the input holds sensitive data that should be masked. example: false allowedValues: type: - array - 'null' description: Enumerated allowed values for a static-choice input. Null when the input is unconstrained or resolves its choices dynamically via `choicesEndpoint`. items: type: string example: - TELEPHONY - WORK_ITEM choicesEndpoint: type: - string - 'null' description: Relative endpoint used to resolve choices dynamically for this input. Null when the input has no dynamic choices. example: GET /v2/activities/play-message/inputs/audioFile/choices children: type: array description: Nested inputs for composite/object inputs. Empty when the input has no children. items: $ref: '#/components/schemas/ActivityInput' description: type: string description: Human-readable description of the input. example: Channel type the contact arrived on. securitySchemes: oauth2: flows: authorizationCode: authorizationUrl: / scopes: {} tokenUrl: / type: oauth2 bearer-key: type: http description: e.g. Bearer YOUR_AUTHORIZATION_TOKEN scheme: bearer bearerFormat: JWT BEARER_TOKEN_FROM_CI: type: http in: header scheme: bearer Bearer: type: http description: e.g. Bearer YOUR_AUTHORIZATION_TOKEN scheme: bearer bearerFormat: JWT bearerAuth: type: http scheme: bearer bearerFormat: JWT description: JWT bearer token authentication. Obtain your token from the Webex Developer Portal.