> ## Documentation Index
> Fetch the complete documentation index at: https://docs.open.cx/llms.txt
> Use this file to discover all available pages before exploring further.

> List all available workflow action types and trigger types with their metadata. Use when managing deterministic workflow definitions and triggering or inspecting their runs.

# [Beta] List available action and trigger types



## OpenAPI

````yaml get /workflows/definitions
openapi: 3.1.0
info:
  title: OpenCX API
  description: >

    OpenCX is an AI-powered, all-in-one platform for customer support and
    outbound communications.


    Use this API to manage your OpenCX organization's AI agents, actions,
    conversations, contacts, and more.


    To get started, generate a new API key from the dashboard.


    ## Authentication

    All API endpoints require authentication using a Bearer token. You can
    generate an API key from your OpenCX dashboard.


    ## Rate Limiting

    API requests are rate limited to ensure fair usage. The current limits are:

    - 100 requests per minute for standard endpoints

    - 1000 requests per minute for streaming endpoints


    ## Error Handling

    The API uses standard HTTP status codes and returns detailed error messages
    in the response body.
  version: 1.0-beta
  license:
    name: MIT
    url: https://opensource.org/licenses/MIT
servers:
  - url: https://api.open.cx
    description: Production
security:
  - bearerAuth: []
paths:
  /workflows/definitions:
    get:
      tags:
        - Workflows (Beta)
      summary: '[Beta] List available action and trigger types'
      description: >-
        List all available workflow action types and trigger types with their
        metadata. Use this to discover what actions and triggers are available
        when building workflows programmatically.
      operationId: listWorkflowDefinitions
      responses:
        '200':
          description: Default Response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/WorkflowDefinitionsPublicDto'
        '500':
          description: Internal Server Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDto'
components:
  schemas:
    WorkflowDefinitionsPublicDto:
      $schema: https://json-schema.org/draft/2020-12/schema
      $id: '#/components/schemas/WorkflowDefinitionsPublicDto'
      type: object
      properties:
        action_types:
          type: array
          items:
            $ref: '#/components/schemas/ActionTypePublicDto'
          description: Available action types with their input/output schemas
        trigger_types:
          type: array
          items:
            $ref: '#/components/schemas/TriggerTypePublicDto'
          description: Available trigger types
        block_types:
          type: array
          items:
            type: object
            properties:
              type:
                type: string
              name:
                type: string
              description:
                type: string
            required:
              - type
              - name
              - description
            additionalProperties: false
          description: Available control-flow block types
        operators:
          type: array
          items:
            $ref: '#/components/schemas/OperatorPublicDto'
          description: >-
            Condition operators for if-else blocks, from the engine registry.
            This is the complete set the runtime evaluates — always pick
            "operatorName" from this list.
        extra_variables:
          type: array
          items: {}
          description: >-
            Field schemas for the extra reference scopes available in every run,
            beyond the trigger payload and step outputs. Each entry's "name" is
            the scope root and its "properties" are the referenceable fields:
            {{metadata.<field>}} (date/time of the run), {{run.<field>}},
            {{workflow.<field>}}, {{organization.<field>}}, and
            {{variables.<key>}} for the organization's global variables. Leaf
            scopes have no "properties" and are referenced directly, e.g.
            {{routingSkills}} — a JSON string of every org skill (name +
            description).
      required:
        - action_types
        - trigger_types
        - block_types
        - operators
        - extra_variables
      additionalProperties: false
    ErrorDto:
      type: object
      properties:
        statusCode:
          type: integer
        message:
          type: string
        error:
          type: string
    ActionTypePublicDto:
      $schema: https://json-schema.org/draft/2020-12/schema
      $id: '#/components/schemas/ActionTypePublicDto'
      type: object
      properties:
        type:
          type: string
          description: >-
            Action type identifier (e.g. "ask-ai", "send-webhook"). Use this as
            the "type" in workflow_blocks.
        name:
          type: string
          description: Human-readable name
        description:
          description: What this action does
          type: string
        category:
          type: string
          description: Action category (e.g. "AI", "Session", "Outbound")
        icon:
          type: string
          description: Icon name
        input_fields:
          anyOf:
            - type: array
              items:
                $ref: '#/components/schemas/FieldSchemaPublicDto'
            - type: 'null'
          description: >-
            Input fields this action accepts. Pass these in the "input" object
            of the workflow block.
        output_fields:
          anyOf:
            - type: array
              items:
                $ref: '#/components/schemas/FieldSchemaPublicDto'
            - type: 'null'
          description: >-
            Output fields this action produces. Reference via
            {{step_id.field_name}}.
        input_shape:
          anyOf:
            - {}
            - type: 'null'
          description: >-
            Raw nested input schema for actions whose inputs include
            `Field.Object` or `Field.JsonSchema` properties (e.g. ask-ai's
            resultShape, make-http-call's responseSchema). When set, this is the
            source of truth — input_fields is a flattened summary.
        output_shape:
          anyOf:
            - {}
            - type: 'null'
          description: Raw nested output schema, same shape as input_shape for outputs.
        supported_trigger_types:
          anyOf:
            - type: array
              items:
                type: string
            - type: 'null'
          description: >-
            Trigger types this action is compatible with. Filter actions by this
            when composing a workflow for a specific trigger. Null means
            compatible with any trigger.
        can_test:
          type: boolean
          description: >-
            Whether this action supports being tested in isolation via the
            dashboard test runner.
      required:
        - type
        - name
        - description
        - category
        - icon
        - input_fields
        - output_fields
        - input_shape
        - output_shape
        - supported_trigger_types
        - can_test
      additionalProperties: false
    TriggerTypePublicDto:
      $schema: https://json-schema.org/draft/2020-12/schema
      $id: '#/components/schemas/TriggerTypePublicDto'
      type: object
      properties:
        type:
          type: string
          description: >-
            Trigger type identifier. Use this as the "trigger_type" when
            creating a workflow.
        name:
          type: string
          description: Human-readable name
        description:
          type: string
          description: What this trigger does
        icon:
          type: string
          description: Icon name
        payload_def:
          anyOf:
            - {}
            - type: 'null'
          description: >-
            Field schema for the trigger payload (the event shape the runtime
            receives). For triggers whose payload is defined per-workflow
            (`ai-trigger`, `form-trigger`, `manual-ticket-trigger`), this is
            empty — the real per-workflow payload contract lives in
            configuration_def's `Field.JsonSchema`-typed property
            (aiPayloadShape / formSchema) that the workflow author sets via
            trigger_configuration.
        configuration_def:
          anyOf:
            - {}
            - type: 'null'
          description: >-
            Field schema for the trigger configuration. When non-empty, the
            workflow author MUST set every required property in
            trigger_configuration. Examples: ai-trigger needs
            theGoalOfTheWorkflow + aiPayloadShape; cron-trigger needs
            cronExpression; webhook needs accessControl.
      required:
        - type
        - name
        - description
        - icon
        - payload_def
        - configuration_def
      additionalProperties: false
    OperatorPublicDto:
      $schema: https://json-schema.org/draft/2020-12/schema
      $id: '#/components/schemas/OperatorPublicDto'
      type: object
      properties:
        name:
          type: string
          description: >-
            Operator identifier — use this exact value as "operatorName" in
            conditions (e.g. "equals", "notEquals", "stringContains").
        display_name:
          type: string
          description: Human-readable name
        type:
          type: string
          enum:
            - Unary
            - Binary
            - Logical
          description: >-
            Operator arity. "Unary": condition takes "left" only. "Binary":
            condition takes "left" and "right". "Logical": "and"/"or" take a
            "conditions" array of nested conditions; "not" takes a single
            "condition".
        applies_to:
          type: array
          items:
            type: string
            enum:
              - String
              - Number
              - Boolean
              - Array
              - Object
              - DateTime
              - LongText
              - Url
              - Email
              - Select
              - LazySelect
              - Code
              - MultiSelect
              - LazyMultiSelect
              - JsonSchema
              - Any
              - AnyObject
              - RichText
              - File
              - PhoneNumber
              - DateOnly
              - CronExpression
              - Integer
          description: Field types this operator can be applied to
      required:
        - name
        - display_name
        - type
        - applies_to
      additionalProperties: false
    FieldSchemaPublicDto:
      $schema: https://json-schema.org/draft/2020-12/schema
      $id: '#/components/schemas/FieldSchemaPublicDto'
      type: object
      properties:
        name:
          type: string
          description: Field name (use as key in input object)
        type:
          type: string
          description: 'Field type: text, number, boolean, select, object, array, etc.'
        display_name:
          type: string
          description: Human-readable label
        description:
          description: What this field does
          type: string
        required:
          type: boolean
          description: Whether this field must be provided
      required:
        - name
        - type
        - display_name
        - required
      additionalProperties: false
  securitySchemes:
    bearerAuth:
      type: http
      scheme: bearer
      bearerFormat: JWT

````