openapi: 3.0.1
info:
  title: Kestra
  license:
    name: Apache 2.0
    url: https://raw.githubusercontent.com/kestra-io/kestra/master/LICENSE
  version: 2.0.5
tags:
- name: Flows
  description: Flows API
- name: Templates
  description: Templates API
- name: Executions
  description: Executions API
- name: Logs
  description: Logs API
- name: Plugins
  description: Plugins API
- name: Stats
  description: Stats API
- name: Misc
  description: Misc API
- name: Blueprints
  description: Blueprints API
- name: Metrics
  description: Metrics API
paths:
  /api/v1/basicAuthValidationErrors:
    get:
      tags:
      - Misc
      summary: Retrieve the instance configuration.
      description: Global endpoint available to all users.
      operationId: getBasicAuthConfigErrors
      responses:
        '200':
          description: getBasicAuthConfigErrors 200 response
          content:
            application/json:
              schema:
                type: array
                items:
                  type: string
        '401':
          description: Authentication required
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
        '403':
          description: Access denied
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
        '500':
          description: Internal server error
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
  /api/v1/configs:
    get:
      tags:
      - Misc
      summary: Retrieve the instance configuration.
      description: Requires authentication; see /configs/login for the public, unauthenticated subset used by the login page.
      operationId: getConfiguration
      responses:
        '200':
          description: getConfiguration 200 response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/MiscController.Configuration'
        '401':
          description: Authentication required
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
        '403':
          description: Access denied
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
        '500':
          description: Internal server error
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
  /api/v1/configs/login:
    get:
      tags:
      - Misc
      summary: Retrieve the configuration required by the login page.
      description: Public endpoint available to unauthenticated users; exposes only what the login/setup UI needs.
      operationId: getLoginConfiguration
      responses:
        '200':
          description: getLoginConfiguration 200 response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/MiscController.LoginConfiguration'
        '401':
          description: Authentication required
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
        '403':
          description: Access denied
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
        '500':
          description: Internal server error
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
  /api/v1/login:
    post:
      tags:
      - Misc
      summary: Authenticate with basic auth credentials.
      description: On success, issues an HttpOnly session cookie holding the credentials, plus a non-HttpOnly flag cookie the UI reads to know it is logged in.
      operationId: login
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/MiscController.LoginRequest'
        required: true
      responses:
        '200':
          description: login 200 response
          content:
            application/json:
              schema:
                type: object
        '401':
          description: Authentication required
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
        '403':
          description: Access denied
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
        '500':
          description: Internal server error
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
  /api/v1/logout:
    post:
      tags:
      - Misc
      summary: Clear the basic auth session cookie.
      operationId: logout
      responses:
        '200':
          description: logout 200 response
          content:
            application/json:
              schema:
                type: object
        '401':
          description: Authentication required
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
        '403':
          description: Access denied
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
        '500':
          description: Internal server error
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
  /api/v1/main/ai/generate/flow:
    post:
      tags:
      - AI
      summary: Generate or regenerate a flow based on a prompt
      operationId: generateFlow
      requestBody:
        description: Prompt and context required for flow generation
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/AiController.FlowGenerationPrompt'
        required: true
      responses:
        '200':
          description: generateFlow 200 response
          content:
            application/yaml:
              schema:
                type: string
        '401':
          description: Authentication required
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
        '403':
          description: Access denied
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
        '500':
          description: Internal server error
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
  /api/v1/main/ai/providers:
    get:
      tags:
      - AI
      summary: List available AI providers
      operationId: getProviders
      responses:
        '200':
          description: getProviders 200 response
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/AiController.AiProviderResponse'
        '401':
          description: Authentication required
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
        '403':
          description: Access denied
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
        '500':
          description: Internal server error
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
  /api/v1/pebble/filters:
    get:
      tags:
      - Misc
      summary: Retrieve the list of available Pebble expression filters.
      operationId: getExpressionFilters
      responses:
        '200':
          description: getExpressionFilters 200 response
          content:
            application/json:
              schema:
                type: array
                items:
                  type: string
        '401':
          description: Authentication required
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
        '403':
          description: Access denied
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
        '500':
          description: Internal server error
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
  /api/v1/pebble/functions:
    get:
      tags:
      - Misc
      summary: Retrieve the available Pebble expression functions with their arguments and defaults.
      operationId: getExpressionFunctions
      responses:
        '200':
          description: getExpressionFunctions 200 response
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/PebbleFunction'
        '401':
          description: Authentication required
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
        '403':
          description: Access denied
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
        '500':
          description: Internal server error
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
  /api/v1/plugins:
    get:
      tags:
      - Plugins
      summary: Get list of plugins
      operationId: listPlugins
      parameters:
      - name: page
        in: query
        description: The current page
        explode: false
        schema:
          type: integer
          format: int32
          default: 1
      - name: size
        in: query
        description: The current page size
        explode: false
        schema:
          maximum: 1000
          type: integer
          format: int32
          default: 1000
      - name: sort
        in: query
        description: A list of sort fields
        explode: false
        schema:
          type: array
          nullable: true
          items:
            type: string
      - name: filters
        in: query
        description: A list of query filters
        explode: false
        schema:
          type: array
          nullable: true
          items:
            $ref: '#/components/schemas/QueryFilter'
      responses:
        '200':
          description: listPlugins 200 response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PagedResults_Plugin_'
        '401':
          description: Authentication required
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
        '403':
          description: Access denied
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
        '500':
          description: Internal server error
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
  /api/v1/plugins/auto-install/detect:
    post:
      tags:
      - Plugins
      summary: Detect missing plugins in a flow
      description: Parses the provided flow YAML, identifies task and trigger types that are not yet registered, and maps them to their Maven artifacts via the plugin catalog. Returns 403 when the auto-install feature is disabled on this instance.
      operationId: detectMissingPlugins
      requestBody:
        content:
          text/plain:
            schema:
              type: string
        required: true
      responses:
        '200':
          description: Detection result
          content:
            application/json:
              schema:
                type: object
        '403':
          description: Auto-install feature is disabled on this instance
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
        '401':
          description: Authentication required
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
        '500':
          description: Internal server error
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
  /api/v1/plugins/groups/subgroups:
    get:
      tags:
      - Plugins
      summary: Get plugins group by subgroups
      operationId: getPluginBySubgroups
      responses:
        '200':
          description: getPluginBySubgroups 200 response
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/Plugin'
        '401':
          description: Authentication required
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
        '403':
          description: Access denied
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
        '500':
          description: Internal server error
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
  /api/v1/plugins/icons:
    get:
      tags:
      - Plugins
      summary: Get plugins icons
      description: 'Answers the icon metadata of every registered class. The `icon` field is always null here: icon bytes are served per class, and cached by the browser, by `GET /plugins/icons/{cls}/icon.svg`. `hash` is non-null exactly when the class has an icon, so callers can still tell which classes to render an icon for.'
      operationId: getPluginIcons
      responses:
        '200':
          description: getPluginIcons 200 response
          content:
            application/json:
              schema:
                type: object
                additionalProperties:
                  $ref: '#/components/schemas/PluginIcon'
        '401':
          description: Authentication required
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
        '403':
          description: Access denied
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
        '500':
          description: Internal server error
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
  /api/v1/plugins/icons/groups:
    get:
      tags:
      - Plugins
      summary: Get plugin group and subgroup icons
      description: Answers the icon metadata of every plugin group and subgroup. As on `GET /plugins/icons` the `icon` field is always null; the bytes come from `GET /plugins/icons/{cls}/icon.svg`.
      operationId: getPluginGroupIcons
      responses:
        '200':
          description: getPluginGroupIcons 200 response
          content:
            application/json:
              schema:
                type: object
                additionalProperties:
                  $ref: '#/components/schemas/PluginIcon'
        '401':
          description: Authentication required
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
        '403':
          description: Access denied
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
        '500':
          description: Internal server error
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
  /api/v1/plugins/icons/{cls}:
    get:
      tags:
      - Plugins
      summary: Get a single plugin icon
      description: 'Lightweight alternative to `GET /plugins/icons` for resolving one icon at a time, so callers don''t have to download the whole plugin catalog just to render one task icon. Not every class has an icon, which is a normal outcome (not every plugin ships one), so this always answers 200 with `icon: null` rather than 404 — a bare 404 here would be indistinguishable, to the frontend''s shared HTTP client, from a genuine routing error and trip its global error page.'
      operationId: getPluginIcon
      parameters:
      - name: cls
        in: path
        description: The plugin full class name
        required: true
        schema:
          type: string
      responses:
        '200':
          description: getPluginIcon 200 response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PluginController.PluginIconResponse'
        '401':
          description: Authentication required
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
        '403':
          description: Access denied
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
        '500':
          description: Internal server error
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
  /api/v1/plugins/icons/{cls}/icon.svg:
    get:
      tags:
      - Plugins
      summary: Get a single plugin icon as a raw SVG
      description: Serves the plugin icon as a real, browser-cacheable `image/svg+xml` resource so it can be referenced directly from an `<img src>` or CSS `mask-image` instead of being inlined as a data URI. Falls back to the Kestra plugin catalog when the class or group isn't locally registered, or is registered but ships no bundled icon. Cached indefinitely by the browser — callers append `PluginIcon#hash` as a query param so the URL changes whenever the icon's bytes do.
      operationId: getPluginIconSvg
      parameters:
      - name: cls
        in: path
        description: The plugin full class name
        required: true
        schema:
          type: string
      responses:
        '200':
          description: getPluginIconSvg 200 response
          content:
            image/svg+xml:
              schema:
                type: string
                format: binary
        '401':
          description: Authentication required
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
        '403':
          description: Access denied
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
        '500':
          description: Internal server error
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
  /api/v1/plugins/inputs:
    get:
      tags:
      - Plugins
      summary: Get all types for an inputs
      operationId: getAllInputTypes
      responses:
        '200':
          description: getAllInputTypes 200 response
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/InputType'
        '401':
          description: Authentication required
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
        '403':
          description: Access denied
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
        '500':
          description: Internal server error
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
  /api/v1/plugins/inputs/{type}:
    get:
      tags:
      - Plugins
      summary: Get the JSON schema for an input type
      description: The schema will be a [JSON Schema Draft 7](http://json-schema.org/draft-07/schema)
      operationId: getSchemaFromInputType
      parameters:
      - name: type
        in: path
        description: The schema needed
        required: true
        schema:
          $ref: '#/components/schemas/Type'
      responses:
        '200':
          description: getSchemaFromInputType 200 response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DocumentationWithSchema'
        '401':
          description: Authentication required
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
        '403':
          description: Access denied
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
        '500':
          description: Internal server error
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
  /api/v1/plugins/install:
    post:
      tags:
      - Plugins
      summary: Start async plugin installation
      description: Enqueues installation of the specified plugin artifacts and returns a job id immediately (HTTP 202). Poll GET /plugins/install/{jobId} for status and per-artifact byte-level progress. Only artifacts provided by the plugin catalog (as returned by POST /plugins/auto-install/detect) are accepted. In distributed (EE) deployments the installation is propagated cluster-wide after the job succeeds. Returns 403 when the auto-install feature is disabled on this instance.
      operationId: installPlugins
      requestBody:
        content:
          application/json:
            schema:
              type: array
              items:
                $ref: '#/components/schemas/PluginArtifact'
        required: true
      responses:
        '202':
          description: Installation job accepted
        '400':
          description: An artifact is not part of the plugin catalog
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
        '403':
          description: Auto-install feature is disabled on this instance
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
        '429':
          description: Too many install jobs are already pending or running
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
        '401':
          description: Authentication required
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
        '500':
          description: Internal server error
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
  /api/v1/plugins/install/{jobId}:
    get:
      tags:
      - Plugins
      summary: Get plugin installation job status
      description: Returns the current state of an async plugin installation job, including per-artifact byte-level transfer progress. Returns 404 when the job is unknown or has been evicted (jobs are kept for one hour after completion).
      operationId: getInstallJob
      parameters:
      - name: jobId
        in: path
        required: true
        schema:
          type: string
          format: uuid
      responses:
        '200':
          description: Job snapshot
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PluginInstallJob'
        '404':
          description: Job not found
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
        '401':
          description: Authentication required
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
        '403':
          description: Access denied
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
        '500':
          description: Internal server error
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
  /api/v1/plugins/pluginUiManifest:
    post:
      tags:
      - Plugins
      summary: Get plugins group by subgroups
      operationId: getPluginUiManifest
      requestBody:
        content:
          application/json:
            schema:
              type: array
              items:
                $ref: '#/components/schemas/TaskWithVersion'
        required: true
      responses:
        '200':
          description: getPluginUiManifest 200 response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PluginUiManifest'
        '401':
          description: Authentication required
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
        '403':
          description: Access denied
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
        '500':
          description: Internal server error
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
  /api/v1/plugins/properties/{type}:
    get:
      tags:
      - Plugins
      summary: Get the properties part of the JSON schema for a type
      description: The schema will be a [JSON Schema Draft 7](http://json-schema.org/draft-07/schema)
      operationId: getPropertiesFromType
      parameters:
      - name: type
        in: path
        description: The schema needed
        required: true
        schema:
          $ref: '#/components/schemas/SchemaType'
      responses:
        '200':
          description: getPropertiesFromType 200 response
          content:
            application/json:
              schema:
                type: object
                additionalProperties:
                  type: object
        '401':
          description: Authentication required
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
        '403':
          description: Access denied
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
        '500':
          description: Internal server error
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
  /api/v1/plugins/schemas/{type}:
    get:
      tags:
      - Plugins
      summary: Get the JSON schema for a type
      description: The schema will be a [JSON Schema Draft 7](http://json-schema.org/draft-07/schema)
      operationId: getSchemasFromType
      parameters:
      - name: type
        in: path
        description: The schema needed
        required: true
        schema:
          $ref: '#/components/schemas/SchemaType'
      - name: arrayOf
        in: query
        description: If schema should be an array of requested type
        explode: false
        schema:
          type: boolean
          nullable: true
          default: false
      - name: includeCatalog
        in: query
        description: Whether to merge the pre-baked plugin schema bundle for un-installed types
        explode: false
        schema:
          type: boolean
          nullable: true
          default: false
      responses:
        '200':
          description: getSchemasFromType 200 response
          content:
            application/json:
              schema:
                type: object
                additionalProperties:
                  type: object
        '401':
          description: Authentication required
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
        '403':
          description: Access denied
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
        '500':
          description: Internal server error
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
  /api/v1/plugins/triggers:
    get:
      tags:
      - Plugins
      summary: Get list of trigger plugins grouped by category
      description: Feeds the 'Add Trigger' catalog UI. Returns one entry per non-internal, non-deprecated trigger class, classified as core (bundled with Kestra Core), realtime (implements RealtimeTriggerInterface) or app (implements PollingTriggerInterface).
      operationId: listTriggerPlugins
      responses:
        '200':
          description: listTriggerPlugins 200 response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PagedResults_PluginController.ApiTriggerPlugin_'
        '401':
          description: Authentication required
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
        '403':
          description: Access denied
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
        '500':
          description: Internal server error
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
  /api/v1/plugins/{cls}:
    get:
      tags:
      - Plugins
      summary: Get plugin documentation
      operationId: getPluginDocumentation
      parameters:
      - name: cls
        in: path
        description: The plugin full class name
        required: true
        schema:
          type: string
      - name: all
        in: query
        description: Include all the properties
        explode: false
        schema:
          type: boolean
          default: false
      responses:
        '200':
          description: getPluginDocumentation 200 response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DocumentationWithSchema'
        '401':
          description: Authentication required
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
        '403':
          description: Access denied
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
        '500':
          description: Internal server error
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
  /api/v1/plugins/{cls}/versions:
    get:
      tags:
      - Plugins
      summary: Get all versions for a plugin
      operationId: getPluginVersions
      parameters:
      - name: cls
        in: path
        description: The plugin type
        required: true
        schema:
          type: string
      responses:
        '200':
          description: getPluginVersions 200 response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PluginController.ApiPluginVersions'
        '401':
          description: Authentication required
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
        '403':
          description: Access denied
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
        '500':
          description: Internal server error
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
  /api/v1/plugins/{cls}/versions/{version}:
    get:
      tags:
      - Plugins
      summary: Get plugin documentation
      operationId: getPluginDocumentationFromVersion
      parameters:
      - name: cls
        in: path
        description: The plugin type
        required: true
        schema:
          type: string
      - name: version
        in: path
        description: The plugin version
        required: true
        schema:
          type: string
      - name: all
        in: query
        description: Include all the properties
        explode: false
        schema:
          type: boolean
          default: false
      responses:
        '200':
          description: getPluginDocumentationFromVersion 200 response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DocumentationWithSchema'
        '401':
          description: Authentication required
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
        '403':
          description: Access denied
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
        '500':
          description: Internal server error
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
  /api/v1/plugins/{group}/pluginUi/{path}:
    get:
      tags:
      - Plugins
      summary: Get plugins group by subgroups
      operationId: getPluginUi
      parameters:
      - name: group
        in: path
        description: The plugin group
        required: true
        schema:
          type: string
      - name: path
        in: path
        description: The file path
        required: true
        schema:
          pattern: .*
          type: string
      responses:
        '200':
          description: getPluginUi 200 response
          content:
            application/json:
              schema:
                type: string
                format: binary
        '401':
          description: Authentication required
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
        '403':
          description: Access denied
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
        '500':
          description: Internal server error
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
  /api/v1/{tenant}/ai/threads:
    post:
      tags:
      - AI
      summary: Create a Copilot conversation thread
      operationId: create
      parameters:
      - name: tenant
        in: path
        required: true
        schema:
          type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ApiCreateThreadRequest'
        required: true
      responses:
        '200':
          description: create 200 response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiThreadSummary'
        '401':
          description: Authentication required
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
        '403':
          description: Access denied
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
        '500':
          description: Internal server error
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
  /api/v1/{tenant}/ai/threads/{threadId}:
    get:
      tags:
      - AI
      summary: Fetch a Copilot thread with its full message history
      operationId: get
      parameters:
      - name: threadId
        in: path
        required: true
        schema:
          type: string
      - name: tenant
        in: path
        required: true
        schema:
          type: string
      responses:
        '200':
          description: get 200 response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiThreadDetail'
        '401':
          description: Authentication required
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
        '403':
          description: Access denied
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
        '500':
          description: Internal server error
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
  /api/v1/{tenant}/ai/threads/{threadId}/chat:
    post:
      tags:
      - AI
      summary: Open a streaming agent chat turn (SSE)
      operationId: chat
      parameters:
      - name: threadId
        in: path
        required: true
        schema:
          type: string
      - name: tenant
        in: path
        required: true
        schema:
          type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ApiChatTurnRequest'
        required: true
      responses:
        '200':
          description: chat 200 response
          content:
            text/event-stream:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/Event_Object_'
        '401':
          description: Authentication required
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
        '403':
          description: Access denied
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
        '500':
          description: Internal server error
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
  /api/v1/{tenant}/ai/threads/{threadId}/confirm:
    post:
      tags:
      - AI
      summary: Confirm a proposed action and stream the resumed turn (SSE)
      operationId: confirm
      parameters:
      - name: threadId
        in: path
        required: true
        schema:
          type: string
      - name: tenant
        in: path
        required: true
        schema:
          type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ApiConfirmActionRequest'
        required: true
      responses:
        '200':
          description: confirm 200 response
          content:
            text/event-stream:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/Event_Object_'
        '401':
          description: Authentication required
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
        '403':
          description: Access denied
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
        '500':
          description: Internal server error
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
  /api/v1/{tenant}/basicAuth:
    post:
      tags:
      - Misc
      summary: Configure basic authentication for the instance.
      description: Sets up basic authentication credentials. Once credentials already exist, the request must also carry the current password.
      operationId: createBasicAuth
      parameters:
      - name: tenant
        in: path
        required: true
        schema:
          type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/BasicAuthCredentials'
        required: true
      responses:
        '200':
          description: createBasicAuth 200 response
          content:
            application/json:
              schema:
                type: object
        '401':
          description: Authentication required
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
        '403':
          description: Access denied
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
        '500':
          description: Internal server error
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
  /api/v1/{tenant}/blueprints/community/{kind}:
    get:
      tags:
      - Blueprints
      summary: List all blueprints
      description: Community blueprints are served by an external API, so complex query filters are not supported. Only top-level `QUERY` and `TAGS` conditions are honored; logical (AND/OR) and nested filter groups are rejected with a 400.
      operationId: searchBlueprints
      parameters:
      - name: sort
        in: query
        description: The sort of current page
        explode: false
        schema:
          type: string
          nullable: true
      - name: page
        in: query
        description: The current page
        explode: false
        schema:
          minimum: 1
          type: integer
          format: int32
          default: 1
      - name: size
        in: query
        description: The current page size
        explode: false
        schema:
          maximum: 1000
          minimum: 1
          type: integer
          format: int32
          default: 1
      - name: kind
        in: path
        description: The blueprint kind
        required: true
        schema:
          $ref: '#/components/schemas/BlueprintController.Kind'
      - name: filters
        in: query
        description: 'A list of query filters. Complex filters are not supported: only top-level QUERY and TAGS conditions are honored, and logical (AND/OR) or nested filter groups are rejected.'
        explode: false
        schema:
          type: array
          nullable: true
          items:
            $ref: '#/components/schemas/QueryFilter'
      - name: tenant
        in: path
        required: true
        schema:
          type: string
      responses:
        '200':
          description: searchBlueprints 200 response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PagedResults_BlueprintController.ApiBlueprintItem_'
        '401':
          description: Authentication required
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
        '403':
          description: Access denied
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
        '500':
          description: Internal server error
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
  /api/v1/{tenant}/blueprints/community/{kind}/tags:
    get:
      tags:
      - Blueprint Tags
      summary: List blueprint tags matching the filter
      description: Community blueprints are served by an external API, so complex query filters are not supported. Only top-level `QUERY` and `TAGS` conditions are honored; logical (AND/OR) and nested filter groups are rejected with a 400.
      operationId: listBlueprintTags
      parameters:
      - name: kind
        in: path
        description: The blueprint kind
        required: true
        schema:
          $ref: '#/components/schemas/BlueprintController.Kind'
      - name: filters
        in: query
        description: 'A list of query filters. Complex filters are not supported: only top-level QUERY and TAGS conditions are honored, and logical (AND/OR) or nested filter groups are rejected.'
        explode: false
        schema:
          type: array
          nullable: true
          items:
            $ref: '#/components/schemas/QueryFilter'
      - name: tenant
        in: path
        required: true
        schema:
          type: string
      responses:
        '200':
          description: listBlueprintTags 200 response
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/BlueprintController.ApiBlueprintTagItem'
        '401':
          description: Authentication required
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
        '403':
          description: Access denied
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
        '500':
          description: Internal server error
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
  /api/v1/{tenant}/blueprints/community/{kind}/{id}:
    get:
      tags:
      - Blueprints
      summary: Get a blueprint
      operationId: getBlueprint
      parameters:
      - name: id
        in: path
        description: The blueprint id
        required: true
        schema:
          type: string
      - name: kind
        in: path
        description: The blueprint kind
        required: true
        schema:
          $ref: '#/components/schemas/BlueprintController.Kind'
      - name: tenant
        in: path
        required: true
        schema:
          type: string
      responses:
        '200':
          description: getBlueprint 200 response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BlueprintController.ApiBlueprintItemWithSource'
        '401':
          description: Authentication required
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
        '403':
          description: Access denied
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
        '500':
          description: Internal server error
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
  /api/v1/{tenant}/blueprints/community/{kind}/{id}/graph:
    get:
      tags:
      - Blueprints
      summary: Get a blueprint graph
      operationId: getBlueprintGraph
      parameters:
      - name: id
        in: path
        description: The blueprint id
        required: true
        schema:
          type: string
      - name: kind
        in: path
        description: The blueprint kind
        required: true
        schema:
          $ref: '#/components/schemas/BlueprintController.Kind'
      - name: tenant
        in: path
        required: true
        schema:
          type: string
      responses:
        '200':
          description: getBlueprintGraph 200 response
          content:
            application/json:
              schema:
                type: object
                additionalProperties:
                  type: object
        '401':
          description: Authentication required
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
        '403':
          description: Access denied
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
        '500':
          description: Internal server error
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
  /api/v1/{tenant}/blueprints/community/{kind}/{id}/source:
    get:
      tags:
      - Blueprints
      summary: Get a blueprint flow
      operationId: getBlueprintSource
      parameters:
      - name: id
        in: path
        description: The blueprint id
        required: true
        schema:
          type: string
      - name: kind
        in: path
        description: The blueprint kind
        required: true
        schema:
          $ref: '#/components/schemas/BlueprintController.Kind'
      - name: tenant
        in: path
        required: true
        schema:
          type: string
      responses:
        '200':
          description: getBlueprintSource 200 response
          content:
            application/yaml:
              schema:
                type: string
        '401':
          description: Authentication required
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
        '403':
          description: Access denied
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
        '500':
          description: Internal server error
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
  /api/v1/{tenant}/cluster/metrics/{serviceType}:
    get:
      tags:
      - Services
      summary: Get metrics for running services
      operationId: metrics
      parameters:
      - name: serviceType
        in: query
        required: true
        explode: false
        schema:
          $ref: '#/components/schemas/ServiceType'
      - name: tenant
        in: path
        required: true
        schema:
          type: string
      responses:
        '200':
          description: metrics 200 response
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/Metric'
        '401':
          description: Authentication required
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
        '403':
          description: Access denied
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
        '500':
          description: Internal server error
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
  /api/v1/{tenant}/cluster/services/{id}:
    get:
      tags:
      - Services
      summary: Get details about a service
      operationId: getService
      parameters:
      - name: id
        in: path
        required: true
        schema:
          type: string
      - name: tenant
        in: path
        required: true
        schema:
          type: string
      responses:
        '200':
          description: getService 200 response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ServiceInstance'
        '401':
          description: Authentication required
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
        '403':
          description: Access denied
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
        '500':
          description: Internal server error
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
  /api/v1/{tenant}/concurrency-limit/search:
    get:
      tags:
      - Flows
      summary: Search for flow concurrency limits
      operationId: searchConcurrencyLimits
      parameters:
      - name: tenant
        in: path
        required: true
        schema:
          type: string
      responses:
        '200':
          description: searchConcurrencyLimits 200 response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PagedResults_ConcurrencyLimit_'
        '401':
          description: Authentication required
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
        '403':
          description: Access denied
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
        '500':
          description: Internal server error
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
  /api/v1/{tenant}/concurrency-limit/{namespace}/{flowId}:
    get:
      tags:
      - Flows
      summary: Get the concurrency limit of a flow
      operationId: getConcurrencyLimit
      parameters:
      - name: namespace
        in: path
        required: true
        schema:
          type: string
      - name: flowId
        in: path
        required: true
        schema:
          type: string
      - name: tenant
        in: path
        required: true
        schema:
          type: string
      responses:
        '200':
          description: getConcurrencyLimit 200 response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ConcurrencyLimit'
        '401':
          description: Authentication required
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
        '403':
          description: Access denied
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
        '500':
          description: Internal server error
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
    put:
      tags:
      - Flows
      summary: Update a flow concurrency limit
      operationId: updateConcurrencyLimit
      parameters:
      - name: namespace
        in: path
        required: true
        schema:
          type: string
      - name: flowId
        in: path
        required: true
        schema:
          type: string
      - name: tenant
        in: path
        required: true
        schema:
          type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ConcurrencyLimit'
        required: true
      responses:
        '200':
          description: updateConcurrencyLimit 200 response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ConcurrencyLimit'
        '401':
          description: Authentication required
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
        '403':
          description: Access denied
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
        '500':
          description: Internal server error
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
  /api/v1/{tenant}/dashboards:
    get:
      tags:
      - Dashboards
      summary: Search for dashboards
      operationId: searchDashboards
      parameters:
      - name: page
        in: query
        description: The current page
        explode: false
        schema:
          minimum: 1
          type: integer
          format: int32
          default: 1
      - name: size
        in: query
        description: The current page size
        explode: false
        schema:
          maximum: 1000
          minimum: 1
          type: integer
          format: int32
          default: 10
      - name: q
        in: query
        description: The filter query
        explode: false
        schema:
          type: string
          nullable: true
      - name: sort
        in: query
        description: The sort of current page
        explode: false
        schema:
          type: array
          nullable: true
          items:
            type: string
      - name: tenant
        in: path
        required: true
        schema:
          type: string
      responses:
        '200':
          description: searchDashboards 200 response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PagedResults_DashboardController.DashboardResponse_'
        '401':
          description: Authentication required
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
        '403':
          description: Access denied
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
        '500':
          description: Internal server error
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
  /api/v1/{tenant}/dashboards/charts/export:
    post:
      tags:
      - Dashboards
      summary: Export a chart data
      operationId: exportChart
      parameters:
      - name: format
        in: query
        description: The export format
        explode: false
        schema:
          $ref: '#/components/schemas/ExportFormat'
      - name: tenant
        in: path
        required: true
        schema:
          type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/DashboardController.PreviewRequest'
        required: true
      responses:
        '200':
          description: exportChart 200 response
          content:
            application/octet-stream:
              schema:
                type: string
                format: binary
        '401':
          description: Authentication required
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
        '403':
          description: Access denied
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
        '500':
          description: Internal server error
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
  /api/v1/{tenant}/dashboards/charts/preview:
    post:
      tags:
      - Dashboards
      summary: Preview a chart data
      operationId: previewChart
      parameters:
      - name: tenant
        in: path
        required: true
        schema:
          type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/DashboardController.PreviewRequest'
        required: true
      responses:
        '200':
          description: previewChart 200 response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PagedResults_Map_String.Object__'
        '401':
          description: Authentication required
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
        '403':
          description: Access denied
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
        '500':
          description: Internal server error
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
  /api/v1/{tenant}/dashboards/defaults/definitions:
    get:
      tags:
      - Dashboards
      summary: Get the built-in default dashboard definitions
      operationId: getDefaultDashboardDefinitions
      parameters:
      - name: tenant
        in: path
        required: true
        schema:
          type: string
      responses:
        '200':
          description: getDefaultDashboardDefinitions 200 response
          content:
            application/json:
              schema:
                type: object
                additionalProperties:
                  type: string
        '401':
          description: Authentication required
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
        '403':
          description: Access denied
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
        '500':
          description: Internal server error
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
  /api/v1/{tenant}/dashboards/{id}:
    get:
      tags:
      - Dashboards
      summary: Get a dashboard
      operationId: getDashboard
      parameters:
      - name: id
        in: path
        description: The dashboard id
        required: true
        schema:
          type: string
      - name: tenant
        in: path
        required: true
        schema:
          type: string
      responses:
        '200':
          description: getDashboard 200 response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DashboardController.DashboardResponse'
        '401':
          description: Authentication required
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
        '403':
          description: Access denied
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
        '500':
          description: Internal server error
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
  /api/v1/{tenant}/dashboards/{id}/charts/{chartId}/export:
    post:
      tags:
      - Dashboards
      summary: Export a dashboard chart data
      operationId: exportDashboardChart
      parameters:
      - name: id
        in: path
        description: The dashboard id
        required: true
        schema:
          type: string
      - name: chartId
        in: path
        description: The chart id
        required: true
        schema:
          type: string
      - name: format
        in: query
        description: The export format
        explode: false
        schema:
          $ref: '#/components/schemas/ExportFormat'
      - name: tenant
        in: path
        required: true
        schema:
          type: string
      requestBody:
        description: The filters to apply, some can override chart definition like labels & namespace
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ChartFiltersOverrides'
        required: true
      responses:
        '200':
          description: exportDashboardChart 200 response
          content:
            application/octet-stream:
              schema:
                type: string
                format: binary
        '401':
          description: Authentication required
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
        '403':
          description: Access denied
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
        '500':
          description: Internal server error
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
  /api/v1/{tenant}/executions:
    get:
      tags:
      - Executions
      summary: Search for executions for a flow
      operationId: searchExecutionsByFlowId
      parameters:
      - name: namespace
        in: query
        description: The flow namespace
        required: true
        explode: false
        schema:
          type: string
      - name: flowId
        in: query
        description: The flow id
        required: true
        explode: false
        schema:
          type: string
      - name: page
        in: query
        description: The current page
        explode: false
        schema:
          minimum: 1
          type: integer
          format: int32
          default: 1
      - name: size
        in: query
        description: The current page size
        explode: false
        schema:
          maximum: 1000
          minimum: 1
          type: integer
          format: int32
          default: 10
      - name: tenant
        in: path
        required: true
        schema:
          type: string
      responses:
        '200':
          description: searchExecutionsByFlowId 200 response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PagedResults_ApiLightExecution_'
        '401':
          description: Authentication required
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
        '403':
          description: Access denied
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
        '500':
          description: Internal server error
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
  /api/v1/{tenant}/executions/by-ids:
    delete:
      tags:
      - Executions
      summary: Delete a list of executions
      operationId: deleteExecutionsByIds
      parameters:
      - name: includeNonTerminated
        in: query
        description: Whether to delete non-terminated executions
        explode: false
        schema:
          type: boolean
          nullable: true
          default: false
      - name: deleteLogs
        in: query
        description: Whether to delete execution logs
        required: false
        explode: false
        schema:
          type: boolean
          default: true
      - name: deleteMetrics
        in: query
        description: Whether to delete execution metrics
        required: false
        explode: false
        schema:
          type: boolean
          default: true
      - name: deleteStorage
        in: query
        description: Whether to delete execution files in the internal storage
        required: false
        explode: false
        schema:
          type: boolean
          default: true
      - name: tenant
        in: path
        required: true
        schema:
          type: string
      requestBody:
        description: The execution id
        content:
          application/json:
            schema:
              type: array
              items:
                type: string
        required: true
      responses:
        '200':
          description: On success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BulkResponse'
        '400':
          description: Validation errors
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
        '401':
          description: Authentication required
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
        '403':
          description: Access denied
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
        '500':
          description: Internal server error
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
  /api/v1/{tenant}/executions/by-query:
    delete:
      tags:
      - Executions
      summary: Delete executions filter by query parameters
      operationId: deleteExecutionsByQuery
      parameters:
      - name: filters
        in: query
        description: 'Filters. PHP-style nested query is used - examples: `filters[timeRange][EQUALS]=PT168H`, `filters[scope][EQUALS]=USER`, `filters[state][IN]=FAILED,CANCELLED`, `filters[labels][NOT_EQUALS][foo]=bar`, `filters[namespace][CONTAINS]=test`'
        required: true
        explode: false
        schema:
          type: array
          items:
            $ref: '#/components/schemas/QueryFilter'
      - name: includeNonTerminated
        in: query
        description: Whether to delete non-terminated executions
        explode: false
        schema:
          type: boolean
          nullable: true
          default: false
      - name: deleteLogs
        in: query
        description: Whether to delete execution logs
        required: false
        explode: false
        schema:
          type: boolean
          default: true
      - name: deleteMetrics
        in: query
        description: Whether to delete execution metrics
        required: false
        explode: false
        schema:
          type: boolean
          default: true
      - name: deleteStorage
        in: query
        description: Whether to delete execution files in the internal storage
        required: false
        explode: false
        schema:
          type: boolean
          default: true
      - name: tenant
        in: path
        required: true
        schema:
          type: string
      responses:
        '200':
          description: On success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BulkResponse'
        '400':
          description: Validation errors
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
        '401':
          description: Authentication required
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
        '403':
          description: Access denied
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
        '500':
          description: Internal server error
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
  /api/v1/{tenant}/executions/change-status/by-ids:
    post:
      tags:
      - Executions
      summary: Change executions state by id asynchronously
      operationId: updateExecutionsStatusByIds
      parameters:
      - name: newStatus
        in: query
        description: The new state of the executions
        required: true
        explode: false
        schema:
          $ref: '#/components/schemas/State.Type'
      - name: tenant
        in: path
        required: true
        schema:
          type: string
      requestBody:
        description: The list of executions id
        content:
          application/json:
            schema:
              type: array
              items:
                type: string
        required: true
      responses:
        '202':
          description: Accepted
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiAsyncOperationResponse'
        '400':
          description: Validation errors
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
        '401':
          description: Authentication required
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
        '403':
          description: Access denied
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
        '500':
          description: Internal server error
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
  /api/v1/{tenant}/executions/change-status/by-query:
    post:
      tags:
      - Executions
      summary: Change executions state by query parameters asynchronously
      operationId: updateExecutionsStatusByQuery
      parameters:
      - name: filters
        in: query
        description: 'Filters. PHP-style nested query is used - examples: `filters[timeRange][EQUALS]=PT168H`, `filters[scope][EQUALS]=USER`, `filters[state][IN]=FAILED,CANCELLED`, `filters[labels][NOT_EQUALS][foo]=bar`, `filters[namespace][CONTAINS]=test`'
        required: true
        explode: false
        schema:
          type: array
          items:
            $ref: '#/components/schemas/QueryFilter'
      - name: newStatus
        in: query
        description: The new state of the executions
        required: true
        explode: false
        schema:
          $ref: '#/components/schemas/State.Type'
      - name: tenant
        in: path
        required: true
        schema:
          type: string
      responses:
        '202':
          description: Accepted
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiAsyncOperationResponse'
        '400':
          description: Validation errors
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
        '401':
          description: Authentication required
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
        '403':
          description: Access denied
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
        '500':
          description: Internal server error
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
  /api/v1/{tenant}/executions/distinct-field-values:
    get:
      tags:
      - Executions
      summary: List distinct values for one of the executions filter fields, optionally narrowed by additional query filters
      operationId: findDistinctFieldValues
      parameters:
      - name: field
        in: query
        description: The field whose distinct values to return. Must be a field supported by the EXECUTION resource.
        required: true
        explode: false
        schema:
          $ref: '#/components/schemas/QueryFilter.Field'
      - name: filters
        in: query
        description: 'Additional filters to narrow the distinct values. PHP-style nested query is used - examples: `filters[flowId][CONTAINS]=test`, `filters[state][IN]=FAILED,WARNING`'
        required: true
        explode: false
        schema:
          type: array
          items:
            $ref: '#/components/schemas/QueryFilter'
      - name: size
        in: query
        description: Maximum number of distinct values to return.
        explode: false
        schema:
          maximum: 1000
          minimum: 1
          type: integer
          format: int32
          default: 100
      - name: tenant
        in: path
        required: true
        schema:
          type: string
      responses:
        '200':
          description: findDistinctFieldValues 200 response
          content:
            application/json:
              schema:
                type: array
                items:
                  type: string
        '401':
          description: Authentication required
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
        '403':
          description: Access denied
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
        '500':
          description: Internal server error
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
  /api/v1/{tenant}/executions/export/by-query/csv:
    get:
      tags:
      - Executions
      summary: Export all executions as a streamed CSV file
      operationId: exportExecutions
      parameters:
      - name: filters
        in: query
        description: 'Filters. PHP-style nested query is used - examples: `filters[timeRange][EQUALS]=PT168H`, `filters[scope][EQUALS]=USER`, `filters[state][IN]=FAILED,CANCELLED`, `filters[labels][NOT_EQUALS][foo]=bar`, `filters[namespace][CONTAINS]=test`'
        required: true
        explode: false
        schema:
          type: array
          items:
            $ref: '#/components/schemas/QueryFilter'
      - name: tenant
        in: path
        required: true
        schema:
          type: string
      responses:
        '200':
          description: exportExecutions 200 response
          content:
            text/csv:
              schema:
                type: array
                items:
                  type: string
        '401':
          description: Authentication required
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
        '403':
          description: Access denied
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
        '500':
          description: Internal server error
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
  /api/v1/{tenant}/executions/flows/{namespace}/{flowId}:
    get:
      tags:
      - Executions
      summary: Get flow information's for an execution
      operationId: getFlowFromExecution
      parameters:
      - name: namespace
        in: path
        description: The namespace of the flow
        required: true
        schema:
          type: string
      - name: flowId
        in: path
        description: The flow id
        required: true
        schema:
          type: string
      - name: revision
        in: query
        description: The flow revision
        explode: false
        schema:
          type: integer
          format: int32
          nullable: true
      - name: tenant
        in: path
        required: true
        schema:
          type: string
      responses:
        '200':
          description: getFlowFromExecution 200 response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/FlowForExecution'
        '401':
          description: Authentication required
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
        '403':
          description: Access denied
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
        '500':
          description: Internal server error
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
  /api/v1/{tenant}/executions/force-run/by-ids:
    post:
      tags:
      - Executions
      summary: Force run a list of executions asynchronously
      operationId: forceRunByIds
      parameters:
      - name: tenant
        in: path
        required: true
        schema:
          type: string
      requestBody:
        description: The list of executions id
        content:
          application/json:
            schema:
              type: array
              items:
                type: string
        required: true
      responses:
        '202':
          description: Accepted
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiAsyncOperationResponse'
        '400':
          description: Validation errors
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
        '401':
          description: Authentication required
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
        '403':
          description: Access denied
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
        '500':
          description: Internal server error
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
  /api/v1/{tenant}/executions/force-run/by-query:
    post:
      tags:
      - Executions
      summary: Force run executions filter by query parameters asynchronously
      operationId: forceRunExecutionsByQuery
      parameters:
      - name: filters
        in: query
        description: 'Filters. PHP-style nested query is used - examples: `filters[timeRange][EQUALS]=PT168H`, `filters[scope][EQUALS]=USER`, `filters[state][IN]=FAILED,CANCELLED`, `filters[labels][NOT_EQUALS][foo]=bar`, `filters[namespace][CONTAINS]=test`'
        required: true
        explode: false
        schema:
          type: array
          items:
            $ref: '#/components/schemas/QueryFilter'
      - name: tenant
        in: path
        required: true
        schema:
          type: string
      responses:
        '202':
          description: Accepted
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiAsyncOperationResponse'
        '400':
          description: Validation errors
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
        '401':
          description: Authentication required
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
        '403':
          description: Access denied
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
        '500':
          description: Internal server error
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
  /api/v1/{tenant}/executions/kill/by-ids:
    delete:
      tags:
      - Executions
      summary: Kill a list of executions asynchronously
      operationId: killExecutionsByIds
      parameters:
      - name: tenant
        in: path
        required: true
        schema:
          type: string
      requestBody:
        description: The list of executions id
        content:
          application/json:
            schema:
              type: array
              items:
                type: string
        required: true
      responses:
        '202':
          description: Accepted
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiAsyncOperationResponse'
        '400':
          description: Validation errors
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
        '401':
          description: Authentication required
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
        '403':
          description: Access denied
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
        '500':
          description: Internal server error
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
  /api/v1/{tenant}/executions/kill/by-query:
    delete:
      tags:
      - Executions
      summary: Kill executions filter by query parameters
      operationId: killExecutionsByQuery
      parameters:
      - name: filters
        in: query
        description: 'Filters. PHP-style nested query is used - examples: `filters[timeRange][EQUALS]=PT168H`, `filters[scope][EQUALS]=USER`, `filters[state][IN]=FAILED,CANCELLED`, `filters[labels][NOT_EQUALS][foo]=bar`, `filters[namespace][CONTAINS]=test`'
        required: true
        explode: false
        schema:
          type: array
          items:
            $ref: '#/components/schemas/QueryFilter'
      - name: tenant
        in: path
        required: true
        schema:
          type: string
      responses:
        '202':
          description: Accepted
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiAsyncOperationResponse'
        '400':
          description: Validation errors
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
        '401':
          description: Authentication required
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
        '403':
          description: Access denied
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
        '500':
          description: Internal server error
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
  /api/v1/{tenant}/executions/labels/by-ids:
    post:
      tags:
      - Executions
      summary: Set labels on a list of executions asynchronously
      operationId: setLabelsOnTerminatedExecutionsByIds
      parameters:
      - name: tenant
        in: path
        required: true
        schema:
          type: string
      requestBody:
        description: The request containing a list of labels and a list of executions
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ExecutionController.SetLabelsByIdsRequest'
        required: true
      responses:
        '202':
          description: Accepted
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiAsyncOperationResponse'
        '400':
          description: Validation errors
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
        '401':
          description: Authentication required
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
        '403':
          description: Access denied
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
        '500':
          description: Internal server error
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
  /api/v1/{tenant}/executions/labels/by-query:
    post:
      tags:
      - Executions
      summary: Set label on executions filter by query parameters asynchronously
      operationId: setLabelsOnTerminatedExecutionsByQuery
      parameters:
      - name: filters
        in: query
        description: 'Filters. PHP-style nested query is used - examples: `filters[timeRange][EQUALS]=PT168H`, `filters[scope][EQUALS]=USER`, `filters[state][IN]=FAILED,CANCELLED`, `filters[labels][NOT_EQUALS][foo]=bar`, `filters[namespace][CONTAINS]=test`'
        required: true
        explode: false
        schema:
          type: array
          items:
            $ref: '#/components/schemas/QueryFilter'
      - name: tenant
        in: path
        required: true
        schema:
          type: string
      requestBody:
        description: The labels to add to the execution
        content:
          application/json:
            schema:
              type: array
              items:
                $ref: '#/components/schemas/Label'
        required: true
      responses:
        '202':
          description: Accepted
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiAsyncOperationResponse'
        '400':
          description: Validation errors
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
        '401':
          description: Authentication required
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
        '403':
          description: Access denied
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
        '500':
          description: Internal server error
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
  /api/v1/{tenant}/executions/latest:
    post:
      tags:
      - Executions
      summary: Get the latest execution for given flows
      operationId: getLatestExecutions
      parameters:
      - name: tenant
        in: path
        required: true
        schema:
          type: string
      requestBody:
        content:
          application/json:
            schema:
              type: array
              items:
                $ref: '#/components/schemas/ExecutionRepositoryInterface.FlowFilter'
        required: true
      responses:
        '200':
          description: getLatestExecutions 200 response
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/ExecutionController.LastExecutionResponse'
        '401':
          description: Authentication required
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
        '403':
          description: Access denied
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
        '500':
          description: Internal server error
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
  /api/v1/{tenant}/executions/namespaces:
    get:
      tags:
      - Executions
      summary: Get all namespaces that have executable flows
      operationId: listExecutableDistinctNamespaces
      parameters:
      - name: tenant
        in: path
        required: true
        schema:
          type: string
      responses:
        '200':
          description: listExecutableDistinctNamespaces 200 response
          content:
            application/json:
              schema:
                type: array
                items:
                  type: string
        '401':
          description: Authentication required
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
        '403':
          description: Access denied
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
        '500':
          description: Internal server error
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
  /api/v1/{tenant}/executions/namespaces/{namespace}/flows:
    get:
      tags:
      - Executions
      summary: Get all flow ids for a namespace. Data returned are FlowForExecution containing minimal information about a Flow for when you are allowed to executing but not reading.
      operationId: listFlowExecutionsByNamespace
      parameters:
      - name: namespace
        in: path
        description: The namespace
        required: true
        schema:
          type: string
      - name: tenant
        in: path
        required: true
        schema:
          type: string
      responses:
        '200':
          description: listFlowExecutionsByNamespace 200 response
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/FlowForExecution'
        '401':
          description: Authentication required
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
        '403':
          description: Access denied
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
        '500':
          description: Internal server error
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
  /api/v1/{tenant}/executions/namespaces/{namespace}/flows/{flowId}/average-duration:
    get:
      tags:
      - Executions
      summary: Get the average duration of the recent executions of a flow, used to estimate the progress of a running execution.
      operationId: getExecutionAverageDuration
      parameters:
      - name: namespace
        in: path
        description: The flow namespace
        required: true
        schema:
          type: string
      - name: flowId
        in: path
        description: The flow id
        required: true
        schema:
          type: string
      - name: tenant
        in: path
        required: true
        schema:
          type: string
      responses:
        '200':
          description: getExecutionAverageDuration 200 response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ExecutionController.ExecutionAverageDuration'
        '401':
          description: Authentication required
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
        '403':
          description: Access denied
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
        '500':
          description: Internal server error
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
  /api/v1/{tenant}/executions/pause/by-ids:
    post:
      tags:
      - Executions
      summary: Pause a list of running executions asynchronously
      operationId: pauseExecutionsByIds
      parameters:
      - name: tenant
        in: path
        required: true
        schema:
          type: string
      requestBody:
        description: The list of executions id
        content:
          application/json:
            schema:
              type: array
              items:
                type: string
        required: true
      responses:
        '202':
          description: Accepted
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiAsyncOperationResponse'
        '400':
          description: Validation errors
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
        '401':
          description: Authentication required
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
        '403':
          description: Access denied
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
        '500':
          description: Internal server error
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
  /api/v1/{tenant}/executions/pause/by-query:
    post:
      tags:
      - Executions
      summary: Pause executions filter by query parameters asynchronously
      operationId: pauseExecutionsByQuery
      parameters:
      - name: filters
        in: query
        description: 'Filters. PHP-style nested query is used - examples: `filters[timeRange][EQUALS]=PT168H`, `filters[scope][EQUALS]=USER`, `filters[state][IN]=FAILED,CANCELLED`, `filters[labels][NOT_EQUALS][foo]=bar`, `filters[namespace][CONTAINS]=test`'
        required: true
        explode: false
        schema:
          type: array
          items:
            $ref: '#/components/schemas/QueryFilter'
      - name: tenant
        in: path
        required: true
        schema:
          type: string
      responses:
        '202':
          description: Accepted
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiAsyncOperationResponse'
        '400':
          description: Validation errors
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
        '401':
          description: Authentication required
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
        '403':
          description: Access denied
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
        '500':
          description: Internal server error
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
  /api/v1/{tenant}/executions/replay/by-ids:
    post:
      tags:
      - Executions
      summary: Create new executions from old ones asynchronously. Keep the flow revision
      operationId: replayExecutionsByIds
      parameters:
      - name: latestRevision
        in: query
        description: If latest revision should be used
        explode: false
        schema:
          type: boolean
          nullable: true
          default: false
      - name: tenant
        in: path
        required: true
        schema:
          type: string
      requestBody:
        description: The list of executions id
        content:
          application/json:
            schema:
              type: array
              items:
                type: string
        required: true
      responses:
        '202':
          description: Accepted
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiAsyncOperationResponse'
        '400':
          description: Validation errors
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
        '401':
          description: Authentication required
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
        '403':
          description: Access denied
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
        '500':
          description: Internal server error
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
  /api/v1/{tenant}/executions/replay/by-query:
    post:
      tags:
      - Executions
      summary: Create new executions from old ones filter by query parameters asynchronously. Keep the flow revision
      operationId: replayExecutionsByQuery
      parameters:
      - name: filters
        in: query
        description: 'Filters. PHP-style nested query is used - examples: `filters[timeRange][EQUALS]=PT168H`, `filters[scope][EQUALS]=USER`, `filters[state][IN]=FAILED,CANCELLED`, `filters[labels][NOT_EQUALS][foo]=bar`, `filters[namespace][CONTAINS]=test`'
        required: true
        explode: false
        schema:
          type: array
          items:
            $ref: '#/components/schemas/QueryFilter'
      - name: latestRevision
        in: query
        description: If latest revision should be used
        explode: false
        schema:
          type: boolean
          nullable: true
          default: false
      - name: tenant
        in: path
        required: true
        schema:
          type: string
      responses:
        '202':
          description: Accepted
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiAsyncOperationResponse'
        '400':
          description: Validation errors
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
        '401':
          description: Authentication required
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
        '403':
          description: Access denied
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
        '500':
          description: Internal server error
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
  /api/v1/{tenant}/executions/restart/by-ids:
    post:
      tags:
      - Executions
      summary: Restart a list of executions asynchronously
      operationId: restartExecutionsByIds
      parameters:
      - name: latestRevision
        in: query
        description: If latest revision should be used
        explode: false
        schema:
          type: boolean
          nullable: true
          default: false
      - name: tenant
        in: path
        required: true
        schema:
          type: string
      requestBody:
        description: The list of executions id
        content:
          application/json:
            schema:
              type: array
              items:
                type: string
        required: true
      responses:
        '202':
          description: Accepted
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiAsyncOperationResponse'
        '400':
          description: Validation errors
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
        '401':
          description: Authentication required
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
        '403':
          description: Access denied
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
        '500':
          description: Internal server error
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
  /api/v1/{tenant}/executions/restart/by-query:
    post:
      tags:
      - Executions
      summary: Restart executions filter by query parameters asynchronously
      operationId: restartExecutionsByQuery
      parameters:
      - name: filters
        in: query
        description: 'Filters. PHP-style nested query is used - examples: `filters[timeRange][EQUALS]=PT168H`, `filters[scope][EQUALS]=USER`, `filters[state][IN]=FAILED,CANCELLED`, `filters[labels][NOT_EQUALS][foo]=bar`, `filters[namespace][CONTAINS]=test`'
        required: true
        explode: false
        schema:
          type: array
          items:
            $ref: '#/components/schemas/QueryFilter'
      - name: latestRevision
        in: query
        description: If latest revision should be used
        explode: false
        schema:
          type: boolean
          nullable: true
          default: false
      - name: tenant
        in: path
        required: true
        schema:
          type: string
      responses:
        '202':
          description: Accepted
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiAsyncOperationResponse'
        '400':
          description: Validation errors
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
        '401':
          description: Authentication required
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
        '403':
          description: Access denied
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
        '500':
          description: Internal server error
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
  /api/v1/{tenant}/executions/resume/by-ids:
    post:
      tags:
      - Executions
      summary: Resume a list of paused executions asynchronously
      operationId: resumeExecutionsByIds
      parameters:
      - name: tenant
        in: path
        required: true
        schema:
          type: string
      requestBody:
        description: The list of executions id
        content:
          application/json:
            schema:
              type: array
              items:
                type: string
        required: true
      responses:
        '202':
          description: Accepted
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiAsyncOperationResponse'
        '400':
          description: Validation errors
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
        '401':
          description: Authentication required
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
        '403':
          description: Access denied
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
        '500':
          description: Internal server error
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
  /api/v1/{tenant}/executions/resume/by-query:
    post:
      tags:
      - Executions
      summary: Resume executions filter by query parameters asynchronously
      operationId: resumeExecutionsByQuery
      parameters:
      - name: filters
        in: query
        description: 'Filters. PHP-style nested query is used - examples: `filters[timeRange][EQUALS]=PT168H`, `filters[scope][EQUALS]=USER`, `filters[state][IN]=FAILED,CANCELLED`, `filters[labels][NOT_EQUALS][foo]=bar`, `filters[namespace][CONTAINS]=test`'
        required: true
        explode: false
        schema:
          type: array
          items:
            $ref: '#/components/schemas/QueryFilter'
      - name: tenant
        in: path
        required: true
        schema:
          type: string
      responses:
        '202':
          description: Accepted
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiAsyncOperationResponse'
        '400':
          description: Validation errors
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
        '401':
          description: Authentication required
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
        '403':
          description: Access denied
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
        '500':
          description: Internal server error
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
  /api/v1/{tenant}/executions/search:
    get:
      tags:
      - Executions
      summary: Search for executions
      operationId: searchExecutions
      parameters:
      - name: page
        in: query
        description: The current page
        explode: false
        schema:
          minimum: 1
          type: integer
          format: int32
          default: 1
      - name: size
        in: query
        description: The current page size
        explode: false
        schema:
          maximum: 1000
          minimum: 1
          type: integer
          format: int32
          default: 10
      - name: sort
        in: query
        description: The sort of current page
        explode: false
        schema:
          type: array
          nullable: true
          items:
            type: string
        examples:
          Sort by start date in ascending order:
            value: state.startDate:asc
          Sort by namespace in descending order:
            value: namespace:desc
      - name: filters
        in: query
        description: 'Filters. PHP-style nested query is used - examples: `filters[timeRange][EQUALS]=PT168H`, `filters[scope][EQUALS]=USER`, `filters[state][IN]=FAILED,CANCELLED`, `filters[labels][NOT_EQUALS][foo]=bar`, `filters[namespace][CONTAINS]=test`'
        required: true
        explode: false
        schema:
          type: array
          items:
            $ref: '#/components/schemas/QueryFilter'
      - name: dateFilter
        in: query
        description: Which execution date field the time interval is applied to
        explode: false
        schema:
          nullable: true
          allOf:
          - $ref: '#/components/schemas/ExecutionRepositoryInterface.DateFilter'
      - name: tenant
        in: path
        required: true
        schema:
          type: string
      responses:
        '200':
          description: searchExecutions 200 response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PagedResults_ApiLightExecution_'
        '401':
          description: Authentication required
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
        '403':
          description: Access denied
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
        '500':
          description: Internal server error
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
  /api/v1/{tenant}/executions/unqueue/by-ids:
    post:
      tags:
      - Executions
      summary: Unqueue a list of executions asynchronously
      operationId: unqueueExecutionsByIds
      parameters:
      - name: state
        in: query
        description: The new state of the unqueued executions
        explode: false
        schema:
          nullable: true
          allOf:
          - $ref: '#/components/schemas/State.Type'
      - name: tenant
        in: path
        required: true
        schema:
          type: string
      requestBody:
        description: The list of executions id
        content:
          application/json:
            schema:
              type: array
              items:
                type: string
        required: true
      responses:
        '202':
          description: Accepted
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiAsyncOperationResponse'
        '400':
          description: Validation errors
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
        '401':
          description: Authentication required
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
        '403':
          description: Access denied
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
        '500':
          description: Internal server error
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
  /api/v1/{tenant}/executions/unqueue/by-query:
    post:
      tags:
      - Executions
      summary: Unqueue executions filter by query parameters asynchronously
      operationId: unqueueExecutionsByQuery
      parameters:
      - name: filters
        in: query
        description: 'Filters. PHP-style nested query is used - examples: `filters[timeRange][EQUALS]=PT168H`, `filters[scope][EQUALS]=USER`, `filters[state][IN]=FAILED,CANCELLED`, `filters[labels][NOT_EQUALS][foo]=bar`, `filters[namespace][CONTAINS]=test`'
        required: true
        explode: false
        schema:
          type: array
          items:
            $ref: '#/components/schemas/QueryFilter'
      - name: newState
        in: query
        description: The new state of the unqueued executions
        explode: false
        schema:
          nullable: true
          allOf:
          - $ref: '#/components/schemas/State.Type'
      - name: tenant
        in: path
        required: true
        schema:
          type: string
      responses:
        '202':
          description: Accepted
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiAsyncOperationResponse'
        '400':
          description: Validation errors
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
        '401':
          description: Authentication required
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
        '403':
          description: Access denied
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
        '500':
          description: Internal server error
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
  /api/v1/{tenant}/executions/webhook/{namespace}/{id}/{key}:
    get:
      tags:
      - Executions
      summary: Trigger a new execution by GET webhook trigger
      operationId: triggerExecutionByGetWebhook
      parameters:
      - name: namespace
        in: path
        description: The flow namespace
        required: true
        schema:
          type: string
      - name: id
        in: path
        description: The flow id
        required: true
        schema:
          type: string
      - name: key
        in: path
        description: The webhook trigger uid
        required: true
        schema:
          type: string
      - name: tenant
        in: path
        required: true
        schema:
          type: string
      responses:
        '200':
          description: On success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/WebhookResponse'
        '401':
          description: Authentication required
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
        '403':
          description: Access denied
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
        '500':
          description: Internal server error
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
    put:
      tags:
      - Executions
      summary: Trigger a new execution by PUT webhook trigger
      operationId: triggerExecutionByPutWebhook
      parameters:
      - name: namespace
        in: path
        description: The flow namespace
        required: true
        schema:
          type: string
      - name: id
        in: path
        description: The flow id
        required: true
        schema:
          type: string
      - name: key
        in: path
        description: The webhook trigger uid
        required: true
        schema:
          type: string
      - name: tenant
        in: path
        required: true
        schema:
          type: string
      requestBody:
        description: 'The webhook payload, of any content type. What the flow sees of it depends on the `fetchType` of the trigger: `trigger.body` by default, `trigger.uri` when the trigger stores it. A `multipart/form-data` payload is handled by a dedicated route: its file parts are stored in Kestra''s internal storage and reach the flow as `trigger.parts`, its other parts as `trigger.formFields`.'
        content:
          '*/*':
            schema:
              type: string
          multipart/form-data:
            schema:
              type: object
              description: 'A form whose part names are chosen by the caller: each file part is exposed on `trigger.parts` with the URI of its content in Kestra''s internal storage, each other part on `trigger.formFields`.'
      responses:
        '200':
          description: On success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/WebhookResponse'
        '401':
          description: Authentication required
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
        '403':
          description: Access denied
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
        '500':
          description: Internal server error
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
    post:
      tags:
      - Executions
      summary: Trigger a new execution by POST webhook trigger
      operationId: triggerExecutionByPostWebhook
      parameters:
      - name: namespace
        in: path
        description: The flow namespace
        required: true
        schema:
          type: string
      - name: id
        in: path
        description: The flow id
        required: true
        schema:
          type: string
      - name: key
        in: path
        description: The webhook trigger uid
        required: true
        schema:
          type: string
      - name: tenant
        in: path
        required: true
        schema:
          type: string
      requestBody:
        description: 'The webhook payload, of any content type. What the flow sees of it depends on the `fetchType` of the trigger: `trigger.body` by default, `trigger.uri` when the trigger stores it. A `multipart/form-data` payload is handled by a dedicated route: its file parts are stored in Kestra''s internal storage and reach the flow as `trigger.parts`, its other parts as `trigger.formFields`.'
        content:
          '*/*':
            schema:
              type: string
          multipart/form-data:
            schema:
              type: object
              description: 'A form whose part names are chosen by the caller: each file part is exposed on `trigger.parts` with the URI of its content in Kestra''s internal storage, each other part on `trigger.formFields`.'
      responses:
        '200':
          description: On success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/WebhookResponse'
        '401':
          description: Authentication required
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
        '403':
          description: Access denied
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
        '500':
          description: Internal server error
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
  /api/v1/{tenant}/executions/webhook/{namespace}/{id}/{key}/{path}:
    get:
      tags:
      - Executions
      summary: Trigger a new execution by GET webhook trigger
      operationId: triggerExecutionByGetWebhookWithPath
      parameters:
      - name: namespace
        in: path
        description: The flow namespace
        required: true
        schema:
          type: string
      - name: id
        in: path
        description: The flow id
        required: true
        schema:
          type: string
      - name: key
        in: path
        description: The webhook trigger uid
        required: true
        schema:
          type: string
      - name: path
        in: path
        description: Optional additional path segments
        required: true
        schema:
          type: string
          nullable: true
      - name: tenant
        in: path
        required: true
        schema:
          type: string
      responses:
        '200':
          description: On success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/WebhookResponse'
        '401':
          description: Authentication required
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
        '403':
          description: Access denied
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
        '500':
          description: Internal server error
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
    put:
      tags:
      - Executions
      summary: Trigger a new execution by PUT webhook trigger
      operationId: triggerExecutionByPutWebhookWithPath
      parameters:
      - name: namespace
        in: path
        description: The flow namespace
        required: true
        schema:
          type: string
      - name: id
        in: path
        description: The flow id
        required: true
        schema:
          type: string
      - name: key
        in: path
        description: The webhook trigger uid
        required: true
        schema:
          type: string
      - name: path
        in: path
        description: Optional additional path segments
        required: true
        schema:
          type: string
          nullable: true
      - name: tenant
        in: path
        required: true
        schema:
          type: string
      requestBody:
        description: 'The webhook payload, of any content type. What the flow sees of it depends on the `fetchType` of the trigger: `trigger.body` by default, `trigger.uri` when the trigger stores it. A `multipart/form-data` payload is handled by a dedicated route: its file parts are stored in Kestra''s internal storage and reach the flow as `trigger.parts`, its other parts as `trigger.formFields`.'
        content:
          '*/*':
            schema:
              type: string
          multipart/form-data:
            schema:
              type: object
              description: 'A form whose part names are chosen by the caller: each file part is exposed on `trigger.parts` with the URI of its content in Kestra''s internal storage, each other part on `trigger.formFields`.'
      responses:
        '200':
          description: On success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/WebhookResponse'
        '401':
          description: Authentication required
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
        '403':
          description: Access denied
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
        '500':
          description: Internal server error
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
    post:
      tags:
      - Executions
      summary: Trigger a new execution by POST webhook trigger
      operationId: triggerExecutionByPostWebhookWithPath
      parameters:
      - name: namespace
        in: path
        description: The flow namespace
        required: true
        schema:
          type: string
      - name: id
        in: path
        description: The flow id
        required: true
        schema:
          type: string
      - name: key
        in: path
        description: The webhook trigger uid
        required: true
        schema:
          type: string
      - name: path
        in: path
        description: Optional additional path segments
        required: true
        schema:
          type: string
          nullable: true
      - name: tenant
        in: path
        required: true
        schema:
          type: string
      requestBody:
        description: 'The webhook payload, of any content type. What the flow sees of it depends on the `fetchType` of the trigger: `trigger.body` by default, `trigger.uri` when the trigger stores it. A `multipart/form-data` payload is handled by a dedicated route: its file parts are stored in Kestra''s internal storage and reach the flow as `trigger.parts`, its other parts as `trigger.formFields`.'
        content:
          '*/*':
            schema:
              type: string
          multipart/form-data:
            schema:
              type: object
              description: 'A form whose part names are chosen by the caller: each file part is exposed on `trigger.parts` with the URI of its content in Kestra''s internal storage, each other part on `trigger.formFields`.'
      responses:
        '200':
          description: On success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/WebhookResponse'
        '401':
          description: Authentication required
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
        '403':
          description: Access denied
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
        '500':
          description: Internal server error
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
  /api/v1/{tenant}/executions/{executionId}:
    get:
      tags:
      - Executions
      summary: Get an execution
      operationId: getExecution
      parameters:
      - name: executionId
        in: path
        description: The execution id
        required: true
        schema:
          type: string
      - name: tenant
        in: path
        required: true
        schema:
          type: string
      responses:
        '200':
          description: getExecution 200 response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiExecution'
        '401':
          description: Authentication required
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
        '403':
          description: Access denied
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
        '500':
          description: Internal server error
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
    delete:
      tags:
      - Executions
      summary: Delete an execution
      operationId: deleteExecution
      parameters:
      - name: executionId
        in: path
        description: The execution id
        required: true
        schema:
          type: string
      - name: deleteLogs
        in: query
        description: Whether to delete execution logs
        required: false
        explode: false
        schema:
          type: boolean
          default: true
      - name: deleteMetrics
        in: query
        description: Whether to delete execution metrics
        required: false
        explode: false
        schema:
          type: boolean
          default: true
      - name: deleteStorage
        in: query
        description: Whether to delete execution files in the internal storage
        required: false
        explode: false
        schema:
          type: boolean
          default: true
      - name: tenant
        in: path
        required: true
        schema:
          type: string
      responses:
        '204':
          description: On success
        '401':
          description: Authentication required
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
        '403':
          description: Access denied
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
        '500':
          description: Internal server error
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
  /api/v1/{tenant}/executions/{executionId}/actions/change-status:
    post:
      tags:
      - Executions
      summary: Change the state of an execution
      operationId: updateExecutionStatus
      parameters:
      - name: executionId
        in: path
        description: The execution id
        required: true
        schema:
          type: string
      - name: status
        in: query
        description: The new state of the execution
        required: true
        explode: false
        schema:
          $ref: '#/components/schemas/State.Type'
      - name: tenant
        in: path
        required: true
        schema:
          type: string
      responses:
        '200':
          description: On success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Execution'
        '409':
          description: if the execution state cannot be changed
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
        '401':
          description: Authentication required
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
        '403':
          description: Access denied
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
        '500':
          description: Internal server error
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
  /api/v1/{tenant}/executions/{executionId}/actions/eval:
    post:
      tags:
      - Executions
      summary: Evaluate a variable expression for this execution
      operationId: evalExpression
      parameters:
      - name: executionId
        in: path
        description: The execution id
        required: true
        schema:
          type: string
      - name: tenant
        in: path
        required: true
        schema:
          type: string
      requestBody:
        description: The Pebble expression that should be evaluated
        content:
          text/plain:
            schema:
              type: string
        required: true
      responses:
        '200':
          description: evalExpression 200 response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ExecutionController.EvalResult'
        '401':
          description: Authentication required
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
        '403':
          description: Access denied
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
        '500':
          description: Internal server error
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
  /api/v1/{tenant}/executions/{executionId}/actions/eval/{taskRunId}:
    post:
      tags:
      - Executions
      summary: Evaluate a variable expression for this taskrun
      operationId: evalTaskRunExpression
      parameters:
      - name: executionId
        in: path
        description: The execution id
        required: true
        schema:
          type: string
      - name: taskRunId
        in: path
        description: The taskrun id
        required: true
        schema:
          type: string
      - name: tenant
        in: path
        required: true
        schema:
          type: string
      requestBody:
        description: The Pebble expression that should be evaluated
        content:
          text/plain:
            schema:
              type: string
        required: true
      responses:
        '200':
          description: evalTaskRunExpression 200 response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ExecutionController.EvalResult'
        '401':
          description: Authentication required
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
        '403':
          description: Access denied
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
        '500':
          description: Internal server error
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
  /api/v1/{tenant}/executions/{executionId}/actions/force-run:
    post:
      tags:
      - Executions
      summary: Force run an execution
      operationId: forceRunExecution
      parameters:
      - name: executionId
        in: path
        description: The execution id
        required: true
        schema:
          type: string
      - name: tenant
        in: path
        required: true
        schema:
          type: string
      responses:
        '200':
          description: On success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Execution'
        '409':
          description: if the execution cannot be force-run
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
        '401':
          description: Authentication required
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
        '403':
          description: Access denied
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
        '500':
          description: Internal server error
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
  /api/v1/{tenant}/executions/{executionId}/actions/kill:
    delete:
      tags:
      - Executions
      summary: Kill an execution
      operationId: killExecution
      parameters:
      - name: executionId
        in: path
        description: The execution id
        required: true
        schema:
          type: string
      - name: isOnKillCascade
        in: query
        description: Specifies whether killing the execution also kill all subflow executions.
        explode: false
        schema:
          type: boolean
          default: true
      - name: tenant
        in: path
        required: true
        schema:
          type: string
      responses:
        '200':
          description: On success
          content:
            text/json:
              schema:
                $ref: '#/components/schemas/Execution'
        '409':
          description: if the executions is already finished
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
        '404':
          description: if the executions is not found
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
        '401':
          description: Authentication required
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
        '403':
          description: Access denied
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
        '500':
          description: Internal server error
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
  /api/v1/{tenant}/executions/{executionId}/actions/labels:
    post:
      tags:
      - Executions
      summary: Add or update labels of a terminated execution
      operationId: setLabelsOnTerminatedExecution
      parameters:
      - name: executionId
        in: path
        description: The execution id
        required: true
        schema:
          type: string
      - name: tenant
        in: path
        required: true
        schema:
          type: string
      requestBody:
        description: The labels to add to the execution
        content:
          application/json:
            schema:
              type: array
              items:
                $ref: '#/components/schemas/Label'
        required: true
      responses:
        '200':
          description: On success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Execution'
        '404':
          description: If the execution cannot be found
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
        '400':
          description: If the execution is not terminated
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
        '409':
          description: If labels cannot be applied
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
        '401':
          description: Authentication required
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
        '403':
          description: Access denied
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
        '500':
          description: Internal server error
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
  /api/v1/{tenant}/executions/{executionId}/actions/pause:
    post:
      tags:
      - Executions
      summary: Pause a running execution.
      operationId: pauseExecution
      parameters:
      - name: executionId
        in: path
        description: The execution id
        required: true
        schema:
          type: string
      - name: tenant
        in: path
        required: true
        schema:
          type: string
      responses:
        '200':
          description: On success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Execution'
        '409':
          description: if the executions is not running
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
        '401':
          description: Authentication required
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
        '403':
          description: Access denied
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
        '500':
          description: Internal server error
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
  /api/v1/{tenant}/executions/{executionId}/actions/replay:
    post:
      tags:
      - Executions
      summary: Create a new execution from an old one and start it from a specified task run id
      operationId: replayExecution
      parameters:
      - name: executionId
        in: path
        description: the original execution id to clone
        required: true
        schema:
          type: string
      - name: taskRunId
        in: query
        description: The taskrun id
        explode: false
        schema:
          type: string
          nullable: true
      - name: revision
        in: query
        description: The flow revision to use for new execution
        explode: false
        schema:
          type: integer
          format: int32
          nullable: true
      - name: breakpoints
        in: query
        description: Set a list of breakpoints at specific tasks 'id.value', separated by a coma.
        explode: false
        schema:
          type: string
          nullable: true
      - name: tenant
        in: path
        required: true
        schema:
          type: string
      responses:
        '200':
          description: On success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Execution'
        '409':
          description: if the execution cannot be replayed
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
        '401':
          description: Authentication required
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
        '403':
          description: Access denied
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
        '500':
          description: Internal server error
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
  /api/v1/{tenant}/executions/{executionId}/actions/replay-with-inputs:
    post:
      tags:
      - Executions
      summary: Create a new execution from an old one and start it from a specified task run id
      operationId: replayExecutionWithinputs
      parameters:
      - name: executionId
        in: path
        description: the original execution id to clone
        required: true
        schema:
          type: string
      - name: taskRunId
        in: query
        description: The taskrun id
        explode: false
        schema:
          type: string
          nullable: true
      - name: revision
        in: query
        description: The flow revision to use for new execution
        explode: false
        schema:
          type: integer
          format: int32
          nullable: true
      - name: breakpoints
        in: query
        description: Set a list of breakpoints at specific tasks 'id.value', separated by a coma.
        explode: false
        schema:
          type: string
          nullable: true
      - name: tenant
        in: path
        required: true
        schema:
          type: string
      requestBody:
        description: The inputs (multipart map)
        content:
          multipart/form-data:
            schema:
              type: array
              additionalProperties: true
              items:
                type: string
                format: binary
        required: true
      responses:
        '200':
          description: On success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Execution'
        '409':
          description: if the execution cannot be replayed
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
        '401':
          description: Authentication required
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
        '403':
          description: Access denied
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
        '500':
          description: Internal server error
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
      x-sdk-customization:
        x-multipart: 'true'
  /api/v1/{tenant}/executions/{executionId}/actions/restart:
    post:
      tags:
      - Executions
      summary: Restart a new execution from an old one
      operationId: restartExecution
      parameters:
      - name: executionId
        in: path
        description: The execution id
        required: true
        schema:
          type: string
      - name: revision
        in: query
        description: The flow revision to use for new execution
        explode: false
        schema:
          type: integer
          format: int32
          nullable: true
      - name: tenant
        in: path
        required: true
        schema:
          type: string
      responses:
        '200':
          description: On success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Execution'
        '409':
          description: if the execution cannot be restarted
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
        '401':
          description: Authentication required
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
        '403':
          description: Access denied
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
        '500':
          description: Internal server error
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
  /api/v1/{tenant}/executions/{executionId}/actions/resume:
    post:
      tags:
      - Executions
      summary: Resume a paused execution.
      operationId: resumeExecution
      parameters:
      - name: executionId
        in: path
        description: The execution id
        required: true
        schema:
          type: string
      - name: tenant
        in: path
        required: true
        schema:
          type: string
      requestBody:
        description: The inputs
        content:
          multipart/form-data:
            schema:
              type: array
              items:
                type: string
                format: binary
      responses:
        '200':
          description: On success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Execution'
        '409':
          description: if the executions is not paused
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
        '401':
          description: Authentication required
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
        '403':
          description: Access denied
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
        '500':
          description: Internal server error
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
      x-sdk-customization:
        x-multipart: 'true'
  /api/v1/{tenant}/executions/{executionId}/actions/resume-from-breakpoint:
    post:
      tags:
      - Executions
      summary: Resume an execution from a breakpoint (in the 'BREAKPOINT' state).
      operationId: resumeExecutionFromBreakpoint
      parameters:
      - name: executionId
        in: path
        description: The execution id
        required: true
        schema:
          type: string
      - name: breakpoints
        in: query
        description: '"Set a list of breakpoints at specific tasks ''id.value'', separated by a coma.'
        explode: false
        schema:
          type: string
          nullable: true
      - name: tenant
        in: path
        required: true
        schema:
          type: string
      responses:
        '200':
          description: On success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Execution'
        '409':
          description: If the executions is not in the 'BREAKPOINT' state or has no breakpoint
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
        '401':
          description: Authentication required
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
        '403':
          description: Access denied
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
        '500':
          description: Internal server error
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
  /api/v1/{tenant}/executions/{executionId}/actions/resume/validate:
    post:
      tags:
      - Executions
      summary: Validate inputs to resume a paused execution.
      operationId: validateResumeExecutionInputs
      parameters:
      - name: executionId
        in: path
        description: The execution id
        required: true
        schema:
          type: string
      - name: tenant
        in: path
        required: true
        schema:
          type: string
      requestBody:
        description: The inputs
        content:
          multipart/form-data:
            schema:
              type: array
              items:
                type: string
                format: binary
      responses:
        '204':
          description: On success
        '409':
          description: if the executions is not paused
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
        '401':
          description: Authentication required
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
        '403':
          description: Access denied
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
        '500':
          description: Internal server error
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
  /api/v1/{tenant}/executions/{executionId}/actions/state:
    post:
      tags:
      - Executions
      summary: Change state for a taskrun in an execution
      operationId: updateTaskRunState
      parameters:
      - name: executionId
        in: path
        description: The execution id
        required: true
        schema:
          type: string
      - name: tenant
        in: path
        required: true
        schema:
          type: string
      requestBody:
        description: the taskRun id and state to apply
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ExecutionController.StateRequest'
        required: true
      responses:
        '200':
          description: On success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Execution'
        '409':
          description: if the task run state cannot be changed
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
        '401':
          description: Authentication required
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
        '403':
          description: Access denied
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
        '500':
          description: Internal server error
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
  /api/v1/{tenant}/executions/{executionId}/actions/unqueue:
    post:
      tags:
      - Executions
      summary: Unqueue an execution
      operationId: unqueueExecution
      parameters:
      - name: executionId
        in: path
        description: The execution id
        required: true
        schema:
          type: string
      - name: state
        in: query
        description: The new state of the execution
        explode: false
        schema:
          nullable: true
          allOf:
          - $ref: '#/components/schemas/State.Type'
      - name: tenant
        in: path
        required: true
        schema:
          type: string
      responses:
        '200':
          description: On success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Execution'
        '409':
          description: if the execution cannot be unqueued
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
        '401':
          description: Authentication required
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
        '403':
          description: Access denied
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
        '500':
          description: Internal server error
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
  /api/v1/{tenant}/executions/{executionId}/file:
    get:
      tags:
      - Executions
      summary: Download file for an execution
      operationId: downloadFileFromExecution
      parameters:
      - name: executionId
        in: path
        description: The execution id
        required: true
        schema:
          type: string
      - name: path
        in: query
        description: The internal storage uri
        required: true
        explode: false
        schema:
          type: string
          format: uri
      - name: format
        in: query
        description: The requested file format; RAW returns the raw bytes (default), JSONL converts Ion records to JSON Lines
        explode: false
        schema:
          $ref: '#/components/schemas/FileFormat'
      - name: tenant
        in: path
        required: true
        schema:
          type: string
      responses:
        '200':
          description: downloadFileFromExecution 200 response
          content:
            application/octet-stream:
              schema:
                type: string
                format: binary
            application/x-ndjson:
              schema:
                type: string
                format: binary
        '401':
          description: Authentication required
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
        '403':
          description: Access denied
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
        '500':
          description: Internal server error
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
  /api/v1/{tenant}/executions/{executionId}/file/metas:
    get:
      tags:
      - Executions
      summary: Get file meta information for an execution
      operationId: getFileMetadatasFromExecution
      parameters:
      - name: executionId
        in: path
        description: The execution id
        required: true
        schema:
          type: string
      - name: path
        in: query
        description: The internal storage uri
        required: true
        explode: false
        schema:
          type: string
          format: uri
      - name: tenant
        in: path
        required: true
        schema:
          type: string
      responses:
        '200':
          description: getFileMetadatasFromExecution 200 response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/FileMetas'
        '401':
          description: Authentication required
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
        '403':
          description: Access denied
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
        '500':
          description: Internal server error
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
  /api/v1/{tenant}/executions/{executionId}/file/preview:
    get:
      tags:
      - Executions
      summary: Get file preview for an execution
      operationId: previewFileFromExecution
      parameters:
      - name: executionId
        in: path
        description: The execution id
        required: true
        schema:
          type: string
      - name: path
        in: query
        description: The internal storage uri
        required: true
        explode: false
        schema:
          type: string
          format: uri
      - name: maxRows
        in: query
        description: The max row returns
        explode: false
        schema:
          type: integer
          format: int32
          nullable: true
      - name: encoding
        in: query
        description: The file encoding as Java charset name. Defaults to UTF-8
        explode: false
        schema:
          type: string
          default: UTF-8
        example: ISO-8859-1
      - name: tenant
        in: path
        required: true
        schema:
          type: string
      responses:
        '200':
          description: previewFileFromExecution 200 response
          content:
            application/json:
              schema:
                type: object
        '401':
          description: Authentication required
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
        '403':
          description: Access denied
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
        '500':
          description: Internal server error
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
  /api/v1/{tenant}/executions/{executionId}/flow:
    get:
      tags:
      - Executions
      summary: Get flow information's for an execution
      operationId: getFlowFromExecutionById
      parameters:
      - name: executionId
        in: path
        description: The execution that you want flow information
        required: true
        schema:
          type: string
      - name: tenant
        in: path
        required: true
        schema:
          type: string
      responses:
        '200':
          description: getFlowFromExecutionById 200 response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/FlowForExecution'
        '401':
          description: Authentication required
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
        '403':
          description: Access denied
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
        '500':
          description: Internal server error
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
  /api/v1/{tenant}/executions/{executionId}/follow:
    get:
      tags:
      - Executions
      summary: Follow an execution
      operationId: followExecution
      parameters:
      - name: executionId
        in: path
        description: The execution id
        required: true
        schema:
          type: string
      - name: tenant
        in: path
        required: true
        schema:
          type: string
      responses:
        '200':
          description: followExecution 200 response
          content:
            text/event-stream:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/Event_Execution_'
        '401':
          description: Authentication required
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
        '403':
          description: Access denied
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
        '500':
          description: Internal server error
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
      x-sdk-customization:
        x-replace-follow-execution: 'true'
        x-skipped: 'true'
  /api/v1/{tenant}/executions/{executionId}/follow-dependencies:
    get:
      tags:
      - Executions
      summary: Follow all execution dependencies executions
      operationId: followDependenciesExecutions
      parameters:
      - name: executionId
        in: path
        description: The execution id
        required: true
        schema:
          type: string
      - name: destinationOnly
        in: query
        description: If true, list only destination dependencies, otherwise list also source dependencies
        explode: false
        schema:
          type: boolean
          default: false
      - name: expandAll
        in: query
        description: If true, expand all dependencies recursively
        explode: false
        schema:
          type: boolean
          default: false
      - name: tenant
        in: path
        required: true
        schema:
          type: string
      responses:
        '200':
          description: followDependenciesExecutions 200 response
          content:
            text/event-stream:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/Event_ExecutionStatusEvent_'
        '401':
          description: Authentication required
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
        '403':
          description: Access denied
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
        '500':
          description: Internal server error
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
      x-sdk-customization:
        x-replace-follow-dependencies-execution: 'true'
        x-skipped: 'true'
  /api/v1/{tenant}/executions/{executionId}/graph:
    get:
      tags:
      - Executions
      summary: Generate a graph for an execution
      operationId: getExecutionFlowGraph
      parameters:
      - name: executionId
        in: path
        description: The execution id
        required: true
        schema:
          type: string
      - name: subflows
        in: query
        description: The subflow tasks to display
        explode: false
        schema:
          type: array
          nullable: true
          items:
            type: string
      - name: tenant
        in: path
        required: true
        schema:
          type: string
      responses:
        '200':
          description: getExecutionFlowGraph 200 response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/FlowGraph'
        '401':
          description: Authentication required
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
        '403':
          description: Access denied
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
        '500':
          description: Internal server error
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
  /api/v1/{tenant}/executions/{namespace}/{id}:
    post:
      tags:
      - Executions
      summary: Create a new execution for a flow
      operationId: createExecution
      parameters:
      - name: namespace
        in: path
        description: The flow namespace
        required: true
        schema:
          type: string
      - name: id
        in: path
        description: The flow id
        required: true
        schema:
          type: string
      - name: labels
        in: query
        description: The labels as a list of 'key:value'
        schema:
          type: array
          nullable: true
          items:
            type: string
      - name: wait
        in: query
        description: If the server will wait the end of the execution
        explode: false
        schema:
          type: boolean
          default: false
      - name: revision
        in: query
        description: The flow revision or latest if null
        explode: false
        schema:
          type: integer
          format: int32
          nullable: true
      - name: scheduleDate
        in: query
        description: Schedule the flow on a specific date
        explode: false
        schema:
          type: string
          format: date-time
          nullable: true
      - name: breakpoints
        in: query
        description: Set a list of breakpoints at specific tasks 'id.value', separated by a coma.
        explode: false
        schema:
          type: string
          nullable: true
      - name: kind
        in: query
        description: Specific execution kind
        explode: false
        schema:
          nullable: true
          allOf:
          - $ref: '#/components/schemas/ExecutionKind'
      - name: tenant
        in: path
        required: true
        schema:
          type: string
      requestBody:
        description: The inputs
        content:
          multipart/form-data:
            schema:
              type: array
              items:
                type: string
                format: binary
      responses:
        '409':
          description: if the flow is disabled
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
        '200':
          description: On execution created
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ExecutionController.ExecutionResponse'
        '401':
          description: Authentication required
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
        '403':
          description: Access denied
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
        '500':
          description: Internal server error
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
      x-sdk-customization:
        x-multipart: 'true'
  /api/v1/{tenant}/executions/{namespace}/{id}/validate:
    post:
      tags:
      - Executions
      summary: Validate the creation of a new execution for a flow
      operationId: validateNewExecutionInputs
      parameters:
      - name: namespace
        in: path
        description: The flow namespace
        required: true
        schema:
          type: string
      - name: id
        in: path
        description: The flow id
        required: true
        schema:
          type: string
      - name: labels
        in: query
        description: The labels as a list of 'key:value'
        schema:
          type: array
          nullable: true
          items:
            type: string
      - name: revision
        in: query
        description: The flow revision or latest if null
        explode: false
        schema:
          type: integer
          format: int32
          nullable: true
      - name: tenant
        in: path
        required: true
        schema:
          type: string
      requestBody:
        description: The inputs
        content:
          multipart/form-data:
            schema:
              type: array
              items:
                type: string
                format: binary
      responses:
        '409':
          description: if the flow is disabled
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
        '200':
          description: validateNewExecutionInputs 200 response
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/ExecutionController.ApiValidateExecutionInputsResponse'
        '401':
          description: Authentication required
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
        '403':
          description: Access denied
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
        '500':
          description: Internal server error
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
  /api/v1/{tenant}/expressions/render:
    post:
      tags:
      - Expressions
      summary: Render Pebble expressions for display
      description: 'Renders a list of Pebble expressions for display purposes only, using a restricted engine: secret() is masked as [secret: KEY], env() is kept raw, only a safe allowlist of pure functions is invoked, and anything else is kept raw. Resolution is all-or-nothing per expression: an expression that references anything unresolvable is returned unchanged. Provide an executionId to resolve against an execution context, or a flow source to resolve against a flow context; otherwise only globals are available.'
      operationId: renderExpressions
      parameters:
      - name: tenant
        in: path
        required: true
        schema:
          type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ExpressionController.RenderExpressionRequest'
        required: true
      responses:
        '200':
          description: renderExpressions 200 response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ExpressionController.RenderedExpressions'
        '401':
          description: Authentication required
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
        '403':
          description: Access denied
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
        '500':
          description: Internal server error
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
  /api/v1/{tenant}/flows:
    post:
      tags:
      - Flows
      summary: Create a flow from yaml source
      operationId: createFlow
      parameters:
      - name: draft
        in: query
        description: Save the flow as a draft. Drafts are not picked up by webhooks, schedules or subflows and are not validated for constraint violations.
        explode: false
        schema:
          type: boolean
          default: false
      - name: tenant
        in: path
        required: true
        schema:
          type: string
      requestBody:
        description: The flow source code
        content:
          application/x-yaml:
            schema:
              type: string
        required: true
      responses:
        '200':
          description: createFlow 200 response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/FlowWithSource'
        '401':
          description: Authentication required
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
        '403':
          description: Access denied
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
        '500':
          description: Internal server error
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
  /api/v1/{tenant}/flows/bulk:
    post:
      tags:
      - Flows
      summary: Update from multiples yaml sources
      description: |-
        All flow will be created / updated for this namespace.
        Flow that already created but not in `flows` will be deleted if the query delete is `true`
      operationId: bulkUpdateFlows
      parameters:
      - name: delete
        in: query
        description: If missing flow should be deleted
        explode: false
        schema:
          type: boolean
          default: true
      - name: namespace
        in: query
        description: The namespace where to update flows
        explode: false
        schema:
          type: string
          nullable: true
      - name: allowNamespaceChild
        in: query
        description: If namespace child should are allowed to be updated
        explode: false
        schema:
          type: boolean
          default: false
      - name: tenant
        in: path
        required: true
        schema:
          type: string
      requestBody:
        description: A list of flows source code split with "---"
        content:
          application/x-yaml:
            schema:
              type: string
              nullable: true
      responses:
        '200':
          description: bulkUpdateFlows 200 response
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/FlowInterface'
        '401':
          description: Authentication required
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
        '403':
          description: Access denied
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
        '500':
          description: Internal server error
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
  /api/v1/{tenant}/flows/delete/by-ids:
    delete:
      tags:
      - Flows
      summary: Delete flows by their IDs.
      operationId: deleteFlowsByIds
      parameters:
      - name: tenant
        in: path
        required: true
        schema:
          type: string
      requestBody:
        description: A list of tuple flow ID and namespace as flow identifiers
        content:
          application/json:
            schema:
              type: array
              items:
                $ref: '#/components/schemas/IdWithNamespace'
        required: true
      responses:
        '200':
          description: On success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BulkResponse'
        '401':
          description: Authentication required
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
        '403':
          description: Access denied
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
        '500':
          description: Internal server error
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
  /api/v1/{tenant}/flows/delete/by-query:
    delete:
      tags:
      - Flows
      summary: Delete flows returned by the query parameters.
      operationId: deleteFlowsByQuery
      parameters:
      - name: filters
        in: query
        description: 'Filters. PHP-style nested query is used - examples: `filters[labels][NOT_EQUALS][foo]=bar`, `filters[namespace][CONTAINS]=test`'
        required: true
        explode: false
        schema:
          type: array
          items:
            $ref: '#/components/schemas/QueryFilter'
      - name: tenant
        in: path
        required: true
        schema:
          type: string
      responses:
        '200':
          description: On success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BulkResponse'
        '401':
          description: Authentication required
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
        '403':
          description: Access denied
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
        '500':
          description: Internal server error
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
  /api/v1/{tenant}/flows/deprecated:
    get:
      tags:
      - Flows
      summary: List flows containing deprecated tasks
      operationId: listDeprecated
      parameters:
      - name: namespace
        in: query
        description: A namespace filter prefix
        explode: false
        schema:
          type: string
          nullable: true
      - name: tenant
        in: path
        required: true
        schema:
          type: string
      responses:
        '200':
          description: listDeprecated 200 response
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/FlowController.FlowWithDeprecatedTasks'
        '401':
          description: Authentication required
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
        '403':
          description: Access denied
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
        '500':
          description: Internal server error
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
  /api/v1/{tenant}/flows/disable/by-ids:
    post:
      tags:
      - Flows
      summary: Disable flows by their IDs.
      operationId: disableFlowsByIds
      parameters:
      - name: tenant
        in: path
        required: true
        schema:
          type: string
      requestBody:
        description: A list of tuple flow ID and namespace as flow identifiers
        content:
          application/json:
            schema:
              type: array
              items:
                $ref: '#/components/schemas/IdWithNamespace'
        required: true
      responses:
        '200':
          description: On success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BulkResponse'
        '401':
          description: Authentication required
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
        '403':
          description: Access denied
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
        '500':
          description: Internal server error
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
  /api/v1/{tenant}/flows/disable/by-query:
    post:
      tags:
      - Flows
      summary: Disable flows returned by the query parameters.
      operationId: disableFlowsByQuery
      parameters:
      - name: filters
        in: query
        description: 'Filters. PHP-style nested query is used - examples: `filters[labels][NOT_EQUALS][foo]=bar`, `filters[namespace][CONTAINS]=test`'
        required: true
        explode: false
        schema:
          type: array
          items:
            $ref: '#/components/schemas/QueryFilter'
      - name: tenant
        in: path
        required: true
        schema:
          type: string
      responses:
        '200':
          description: On success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BulkResponse'
        '401':
          description: Authentication required
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
        '403':
          description: Access denied
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
        '500':
          description: Internal server error
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
  /api/v1/{tenant}/flows/distinct-namespaces:
    get:
      tags:
      - Flows
      summary: List all distinct namespaces
      operationId: listDistinctNamespaces
      parameters:
      - name: q
        in: query
        description: A string filter
        explode: false
        schema:
          type: string
          nullable: true
      - name: tenant
        in: path
        required: true
        schema:
          type: string
      responses:
        '200':
          description: listDistinctNamespaces 200 response
          content:
            application/json:
              schema:
                type: array
                items:
                  type: string
        '401':
          description: Authentication required
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
        '403':
          description: Access denied
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
        '500':
          description: Internal server error
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
  /api/v1/{tenant}/flows/enable/by-ids:
    post:
      tags:
      - Flows
      summary: Enable flows by their IDs.
      operationId: enableFlowsByIds
      parameters:
      - name: tenant
        in: path
        required: true
        schema:
          type: string
      requestBody:
        description: A list of tuple flow ID and namespace as flow identifiers
        content:
          application/json:
            schema:
              type: array
              items:
                $ref: '#/components/schemas/IdWithNamespace'
        required: true
      responses:
        '200':
          description: On success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BulkResponse'
        '401':
          description: Authentication required
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
        '403':
          description: Access denied
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
        '500':
          description: Internal server error
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
  /api/v1/{tenant}/flows/enable/by-query:
    post:
      tags:
      - Flows
      summary: Enable flows returned by the query parameters.
      operationId: enableFlowsByQuery
      parameters:
      - name: filters
        in: query
        description: 'Filters. PHP-style nested query is used - examples: `filters[labels][NOT_EQUALS][foo]=bar`, `filters[namespace][CONTAINS]=test`'
        required: true
        explode: false
        schema:
          type: array
          items:
            $ref: '#/components/schemas/QueryFilter'
      - name: tenant
        in: path
        required: true
        schema:
          type: string
      responses:
        '200':
          description: On success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BulkResponse'
        '401':
          description: Authentication required
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
        '403':
          description: Access denied
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
        '500':
          description: Internal server error
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
  /api/v1/{tenant}/flows/export/by-ids:
    post:
      tags:
      - Flows
      summary: Export flows as a ZIP archive of yaml sources.
      operationId: exportFlowsByIds
      parameters:
      - name: tenant
        in: path
        required: true
        schema:
          type: string
      requestBody:
        description: A list of tuple flow ID and namespace as flow identifiers
        content:
          application/json:
            schema:
              type: array
              items:
                $ref: '#/components/schemas/IdWithNamespace'
        required: true
      responses:
        '200':
          description: exportFlowsByIds 200 response
          content:
            application/octet-stream:
              schema:
                type: string
                format: binary
        '401':
          description: Authentication required
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
        '403':
          description: Access denied
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
        '500':
          description: Internal server error
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
  /api/v1/{tenant}/flows/export/by-query:
    get:
      tags:
      - Flows
      summary: Export flows as a ZIP archive of yaml sources.
      operationId: exportFlowsByQuery
      parameters:
      - name: filters
        in: query
        description: 'Filters. PHP-style nested query is used - examples: `filters[labels][NOT_EQUALS][foo]=bar`, `filters[namespace][CONTAINS]=test`'
        required: true
        explode: false
        schema:
          type: array
          items:
            $ref: '#/components/schemas/QueryFilter'
      - name: tenant
        in: path
        required: true
        schema:
          type: string
      responses:
        '200':
          description: exportFlowsByQuery 200 response
          content:
            application/octet-stream:
              schema:
                type: string
                format: binary
        '401':
          description: Authentication required
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
        '403':
          description: Access denied
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
        '500':
          description: Internal server error
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
  /api/v1/{tenant}/flows/export/by-query/csv:
    get:
      tags:
      - Flows
      summary: Export all flows as a streamed CSV file
      operationId: exportFlows
      parameters:
      - name: filters
        in: query
        description: 'Filters. PHP-style nested query is used - examples: `filters[labels][NOT_EQUALS][foo]=bar`, `filters[namespace][CONTAINS]=test`'
        required: true
        explode: false
        schema:
          type: array
          items:
            $ref: '#/components/schemas/QueryFilter'
      - name: tenant
        in: path
        required: true
        schema:
          type: string
      responses:
        '200':
          description: exportFlows 200 response
          content:
            text/csv:
              schema:
                type: array
                items:
                  type: string
        '401':
          description: Authentication required
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
        '403':
          description: Access denied
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
        '500':
          description: Internal server error
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
  /api/v1/{tenant}/flows/expressions:
    post:
      tags:
      - Flows
      summary: Get available Pebble expressions for a flow
      description: Returns a categorized map of expression strings available for autocompletion in the No-Code editor.
      operationId: expressions
      parameters:
      - name: taskId
        in: query
        description: Optional task ID to scope outputs to prior tasks
        explode: false
        schema:
          type: string
          nullable: true
      - name: tenant
        in: path
        required: true
        schema:
          type: string
      requestBody:
        description: The flow source code
        content:
          application/x-yaml:
            schema:
              type: string
        required: true
      responses:
        '200':
          description: Categorized expressions map
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ExpressionContext'
        '401':
          description: Authentication required
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
        '403':
          description: Access denied
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
        '500':
          description: Internal server error
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
  /api/v1/{tenant}/flows/graph:
    post:
      tags:
      - Flows
      summary: Generate a graph for a flow source
      operationId: generateFlowGraphFromSource
      parameters:
      - name: subflows
        in: query
        description: The subflow tasks to display
        explode: false
        schema:
          type: array
          nullable: true
          items:
            type: string
      - name: tenant
        in: path
        required: true
        schema:
          type: string
      requestBody:
        description: The flow source code
        content:
          application/x-yaml:
            schema:
              type: string
        required: true
      responses:
        '200':
          description: generateFlowGraphFromSource 200 response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/FlowGraph'
        '401':
          description: Authentication required
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
        '403':
          description: Access denied
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
        '500':
          description: Internal server error
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
  /api/v1/{tenant}/flows/import:
    post:
      tags:
      - Flows
      summary: |2
            Import flows as a ZIP archive of yaml sources or a multi-objects YAML file.
            When sending a Yaml that contains one or more flows, a list of index is returned.
            When sending a ZIP archive, a list of files that couldn't be imported is returned.
      operationId: importFlows
      parameters:
      - name: failOnError
        in: query
        description: If should fail on invalid flows
        explode: false
        schema:
          type: boolean
          default: false
      - name: tenant
        in: path
        required: true
        schema:
          type: string
      requestBody:
        content:
          multipart/form-data:
            schema:
              type: object
              properties:
                fileUpload:
                  type: string
                  description: The file to import, can be a ZIP archive or a multi-objects YAML file
                  format: binary
            encoding:
              fileUpload:
                contentType: application/octet-stream
                explode: false
        required: true
      responses:
        '200':
          description: On success
          content:
            application/json:
              schema:
                type: array
                items:
                  type: string
        '401':
          description: Authentication required
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
        '403':
          description: Access denied
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
        '500':
          description: Internal server error
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
  /api/v1/{tenant}/flows/search:
    get:
      tags:
      - Flows
      summary: Search for flows
      operationId: searchFlows
      parameters:
      - name: page
        in: query
        description: The current page
        explode: false
        schema:
          minimum: 1
          type: integer
          format: int32
          default: 1
      - name: size
        in: query
        description: The current page size
        explode: false
        schema:
          maximum: 1000
          minimum: 1
          type: integer
          format: int32
          default: 10
      - name: sort
        in: query
        description: The sort of current page
        explode: false
        schema:
          type: array
          nullable: true
          items:
            type: string
        examples:
          Sort by namespace in ascending order:
            value: namespace:asc
          Sort by flow ID in descending order:
            value: id:desc
      - name: filters
        in: query
        description: 'Filters. PHP-style nested query is used - examples: `filters[labels][NOT_EQUALS][foo]=bar`, `filters[namespace][CONTAINS]=test`'
        required: true
        explode: false
        schema:
          type: array
          items:
            $ref: '#/components/schemas/QueryFilter'
      - name: tenant
        in: path
        required: true
        schema:
          type: string
      responses:
        '200':
          description: searchFlows 200 response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PagedResults_Flow_'
        '401':
          description: Authentication required
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
        '403':
          description: Access denied
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
        '500':
          description: Internal server error
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
  /api/v1/{tenant}/flows/source:
    get:
      tags:
      - Flows
      summary: Search for flows source code
      operationId: searchFlowsBySourceCode
      parameters:
      - name: page
        in: query
        description: The current page
        explode: false
        schema:
          minimum: 1
          type: integer
          format: int32
          default: 1
      - name: size
        in: query
        description: The current page size
        explode: false
        schema:
          maximum: 1000
          minimum: 1
          type: integer
          format: int32
          default: 10
      - name: sort
        in: query
        description: The sort of current page
        explode: false
        schema:
          type: array
          nullable: true
          items:
            type: string
      - name: q
        in: query
        description: A string filter
        explode: false
        schema:
          type: string
          nullable: true
      - name: namespace
        in: query
        description: A namespace filter prefix
        explode: false
        schema:
          type: string
          nullable: true
      - name: caseSensitive
        in: query
        description: Whether the query must match with exact case
        explode: false
        schema:
          type: boolean
          default: false
      - name: wholeWord
        in: query
        description: Whether the query must match on word boundaries only
        explode: false
        schema:
          type: boolean
          default: false
      - name: regex
        in: query
        description: Whether the query is a regular expression rather than a literal string
        explode: false
        schema:
          type: boolean
          default: false
      - name: scope
        in: query
        description: Restricts matches to a top-level section of the flow YAML
        explode: false
        schema:
          $ref: '#/components/schemas/SourceSearchScope'
      - name: tenant
        in: path
        required: true
        schema:
          type: string
      responses:
        '200':
          description: searchFlowsBySourceCode 200 response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PagedResults_SourceSearchResult_'
        '401':
          description: Authentication required
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
        '403':
          description: Access denied
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
        '500':
          description: Internal server error
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
  /api/v1/{tenant}/flows/source/replace/apply:
    post:
      tags:
      - Flows
      summary: Apply a Source Search replace-all operation
      description: Replaces every match in the given flows and persists the new revisions. Flows the caller is not allowed to edit are skipped.
      operationId: applyReplaceBySourceCode
      parameters:
      - name: tenant
        in: path
        required: true
        schema:
          type: string
      requestBody:
        description: The search query, replacement and target flows
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/SourceSearchReplaceApplyRequest'
        required: true
      responses:
        '200':
          description: applyReplaceBySourceCode 200 response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SourceSearchReplaceApplyResponse'
        '401':
          description: Authentication required
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
        '403':
          description: Access denied
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
        '500':
          description: Internal server error
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
  /api/v1/{tenant}/flows/source/replace/line:
    post:
      tags:
      - Flows
      summary: Apply a Source Search replace on a single match line
      description: Replaces the matches on one line of one flow and persists the new revision. Returns the flow as skipped if it is not editable or fails validation.
      operationId: replaceLineBySourceCode
      parameters:
      - name: tenant
        in: path
        required: true
        schema:
          type: string
      requestBody:
        description: The search query, replacement and target match line
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/SourceSearchReplaceLineRequest'
        required: true
      responses:
        '200':
          description: replaceLineBySourceCode 200 response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SourceSearchReplaceApplyResponse'
        '401':
          description: Authentication required
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
        '403':
          description: Access denied
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
        '500':
          description: Internal server error
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
  /api/v1/{tenant}/flows/source/replace/preview:
    post:
      tags:
      - Flows
      summary: Preview a Source Search replace-all operation
      description: Computes the matched lines and their proposed replacement for every matching flow, without persisting anything.
      operationId: previewReplaceBySourceCode
      parameters:
      - name: tenant
        in: path
        required: true
        schema:
          type: string
      requestBody:
        description: The search query and replacement
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/SourceSearchReplacePreviewRequest'
        required: true
      responses:
        '200':
          description: previewReplaceBySourceCode 200 response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SourceSearchReplacePreviewResponse'
        '401':
          description: Authentication required
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
        '403':
          description: Access denied
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
        '500':
          description: Internal server error
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
  /api/v1/{tenant}/flows/validate:
    post:
      tags:
      - Flows
      summary: Validate a list of flows
      operationId: validateFlows
      parameters:
      - name: tenant
        in: path
        required: true
        schema:
          type: string
      requestBody:
        description: Flows as YAML string or multipart files
        content:
          application/x-yaml:
            schema:
              type: string
          multipart/form-data:
            schema:
              type: object
        required: true
      responses:
        '200':
          description: validateFlows 200 response
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/ValidateConstraintViolation'
        '401':
          description: Authentication required
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
        '403':
          description: Access denied
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
        '500':
          description: Internal server error
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
  /api/v1/{tenant}/flows/validate/task:
    post:
      tags:
      - Flows
      summary: Validate a task
      operationId: validateTask
      parameters:
      - name: section
        in: query
        description: 'The flow section the definition belongs to (triggers, or any task-holding section: tasks, errors, finally, afterExecution)'
        required: true
        explode: false
        schema:
          type: string
      - name: tenant
        in: path
        required: true
        schema:
          type: string
      requestBody:
        description: A task definition that can be from tasks or triggers
        content:
          application/x-yaml:
            schema:
              type: object
          application/json:
            schema:
              type: object
            example: null
        required: true
      responses:
        '200':
          description: validateTask 200 response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ValidateConstraintViolation'
        '401':
          description: Authentication required
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
        '403':
          description: Access denied
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
        '500':
          description: Internal server error
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
  /api/v1/{tenant}/flows/validate/trigger:
    post:
      tags:
      - Flows
      summary: Validate trigger
      operationId: validateTrigger
      parameters:
      - name: tenant
        in: path
        required: true
        schema:
          type: string
      requestBody:
        description: The trigger
        content:
          application/json:
            schema:
              type: object
        required: true
      responses:
        '200':
          description: validateTrigger 200 response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ValidateConstraintViolation'
        '401':
          description: Authentication required
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
        '403':
          description: Access denied
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
        '500':
          description: Internal server error
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
  /api/v1/{tenant}/flows/{namespace}:
    get:
      tags:
      - Flows
      summary: Retrieve all flows from a given namespace
      operationId: listFlowsByNamespace
      parameters:
      - name: namespace
        in: path
        description: Namespace to filter flows
        required: true
        schema:
          type: string
      - name: tenant
        in: path
        required: true
        schema:
          type: string
      responses:
        '200':
          description: listFlowsByNamespace 200 response
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/Flow'
        '401':
          description: Authentication required
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
        '403':
          description: Access denied
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
        '500':
          description: Internal server error
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
    post:
      tags:
      - Flows
      summary: Update a complete namespace from yaml source
      description: |-
        All flows will be created / updated for this namespace.
        Existing flows missing from `flows` will be deleted if the query delete is `true`
      operationId: updateFlowsInNamespace
      parameters:
      - name: delete
        in: query
        description: If missing flows should be deleted
        explode: false
        schema:
          type: boolean
          default: true
      - name: override
        in: query
        description: If namespace of all provided flows should be overridden
        explode: false
        schema:
          type: boolean
          default: false
      - name: namespace
        in: path
        description: The flow namespace
        required: true
        schema:
          type: string
      - name: tenant
        in: path
        required: true
        schema:
          type: string
      requestBody:
        description: A list of flow files
        content:
          application/x-yaml:
            schema:
              type: string
              nullable: true
      responses:
        '200':
          description: updateFlowsInNamespace 200 response
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/FlowInterface'
        '401':
          description: Authentication required
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
        '403':
          description: Access denied
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
        '500':
          description: Internal server error
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
  /api/v1/{tenant}/flows/{namespace}/{id}:
    get:
      tags:
      - Flows
      summary: Get a flow
      operationId: getFlow
      parameters:
      - name: namespace
        in: path
        description: The flow namespace
        required: true
        schema:
          type: string
      - name: id
        in: path
        description: The flow id
        required: true
        schema:
          type: string
      - name: source
        in: query
        description: Include the source code
        explode: false
        schema:
          type: boolean
          default: false
      - name: revision
        in: query
        description: Get latest revision by default
        explode: false
        schema:
          type: integer
          format: int32
          nullable: true
      - name: allowDeleted
        in: query
        description: Get flow even if deleted
        explode: false
        schema:
          type: boolean
          default: false
      - name: tenant
        in: path
        required: true
        schema:
          type: string
      responses:
        '200':
          description: On success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/FlowWithSource'
        '401':
          description: Authentication required
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
        '403':
          description: Access denied
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
        '500':
          description: Internal server error
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
    put:
      tags:
      - Flows
      summary: Update a flow
      operationId: updateFlow
      parameters:
      - name: namespace
        in: path
        description: The flow namespace
        required: true
        schema:
          type: string
      - name: id
        in: path
        description: The flow id
        required: true
        schema:
          type: string
      - name: draft
        in: query
        description: Save the flow as a draft. Drafts are not picked up by webhooks, schedules or subflows and are not validated for constraint violations.
        explode: false
        schema:
          type: boolean
          default: false
      - name: tenant
        in: path
        required: true
        schema:
          type: string
      requestBody:
        description: The flow source code
        content:
          application/x-yaml:
            schema:
              type: string
        required: true
      responses:
        '200':
          description: On success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/FlowWithSource'
        '401':
          description: Authentication required
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
        '403':
          description: Access denied
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
        '500':
          description: Internal server error
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
    delete:
      tags:
      - Flows
      summary: Delete a flow
      operationId: deleteFlow
      parameters:
      - name: namespace
        in: path
        description: The flow namespace
        required: true
        schema:
          type: string
      - name: id
        in: path
        description: The flow id
        required: true
        schema:
          type: string
      - name: tenant
        in: path
        required: true
        schema:
          type: string
      responses:
        '204':
          description: On success
        '401':
          description: Authentication required
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
        '403':
          description: Access denied
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
        '500':
          description: Internal server error
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
  /api/v1/{tenant}/flows/{namespace}/{id}/dependencies:
    get:
      tags:
      - Flows
      summary: Get flow dependencies
      operationId: getFlowDependencies
      parameters:
      - name: namespace
        in: path
        description: The flow namespace
        required: true
        schema:
          type: string
      - name: id
        in: path
        description: The flow id
        required: true
        schema:
          type: string
      - name: destinationOnly
        in: query
        description: If true, list only destination dependencies, otherwise list also source dependencies
        explode: false
        schema:
          type: boolean
          default: false
      - name: expandAll
        in: query
        description: If true, expand all dependencies recursively
        explode: false
        schema:
          type: boolean
          default: false
      - name: tenant
        in: path
        required: true
        schema:
          type: string
      responses:
        '200':
          description: getFlowDependencies 200 response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/FlowTopologyGraph'
        '401':
          description: Authentication required
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
        '403':
          description: Access denied
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
        '500':
          description: Internal server error
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
  /api/v1/{tenant}/flows/{namespace}/{id}/graph:
    get:
      tags:
      - Flows
      summary: Generate a graph for a flow
      operationId: generateFlowGraph
      parameters:
      - name: namespace
        in: path
        description: The flow namespace
        required: true
        schema:
          type: string
      - name: id
        in: path
        description: The flow id
        required: true
        schema:
          type: string
      - name: revision
        in: query
        description: The flow revision
        explode: false
        schema:
          type: integer
          format: int32
          nullable: true
      - name: subflows
        in: query
        description: The subflow tasks to display
        explode: false
        schema:
          type: array
          nullable: true
          items:
            type: string
      - name: tenant
        in: path
        required: true
        schema:
          type: string
      responses:
        '200':
          description: Return a FlowGraph object
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/FlowGraph'
        '401':
          description: Authentication required
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
        '403':
          description: Access denied
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
        '500':
          description: Internal server error
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
  /api/v1/{tenant}/flows/{namespace}/{id}/revisions:
    get:
      tags:
      - Flows
      summary: Get revisions for a flow
      operationId: listFlowRevisions
      parameters:
      - name: namespace
        in: path
        description: The flow namespace
        required: true
        schema:
          type: string
      - name: id
        in: path
        description: The flow id
        required: true
        schema:
          type: string
      - name: allowDelete
        in: query
        explode: false
        schema:
          type: boolean
          default: false
      - name: tenant
        in: path
        required: true
        schema:
          type: string
      responses:
        '200':
          description: listFlowRevisions 200 response
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/FlowWithSource'
        '401':
          description: Authentication required
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
        '403':
          description: Access denied
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
        '500':
          description: Internal server error
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
    delete:
      tags:
      - Flows
      summary: Delete revisions for a flow
      operationId: deleteRevisions
      parameters:
      - name: namespace
        in: path
        description: The flow namespace
        required: true
        schema:
          type: string
      - name: id
        in: path
        description: The flow id
        required: true
        schema:
          type: string
      - name: revisions
        in: query
        required: true
        explode: false
        schema:
          minItems: 1
          type: array
          items:
            minimum: 1
            type: integer
            format: int32
      - name: tenant
        in: path
        required: true
        schema:
          type: string
      responses:
        '200':
          description: deleteRevisions 200 response
        '401':
          description: Authentication required
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
        '403':
          description: Access denied
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
        '500':
          description: Internal server error
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
  /api/v1/{tenant}/flows/{namespace}/{id}/tasks/{taskId}:
    get:
      tags:
      - Flows
      summary: Get a flow task
      operationId: getTaskFromFlow
      parameters:
      - name: namespace
        in: path
        description: The flow namespace
        required: true
        schema:
          type: string
      - name: id
        in: path
        description: The flow id
        required: true
        schema:
          type: string
      - name: taskId
        in: path
        description: The task id
        required: true
        schema:
          type: string
      - name: revision
        in: query
        description: The flow revision
        explode: false
        schema:
          type: integer
          format: int32
          nullable: true
      - name: tenant
        in: path
        required: true
        schema:
          type: string
      responses:
        '200':
          description: getTaskFromFlow 200 response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Task'
        '401':
          description: Authentication required
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
        '403':
          description: Access denied
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
        '500':
          description: Internal server error
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
  /api/v1/{tenant}/kv:
    get:
      tags:
      - KV
      summary: List all keys
      operationId: listAllKeys
      parameters:
      - name: page
        in: query
        description: The current page
        explode: false
        schema:
          type: integer
          format: int32
          default: 1
      - name: size
        in: query
        description: The current page size
        explode: false
        schema:
          maximum: 1000
          type: integer
          format: int32
          default: 10
      - name: sort
        in: query
        description: The sort of current page
        explode: false
        schema:
          type: array
          nullable: true
          items:
            type: string
        examples:
          Sort by key in ascending order:
            value: key:asc
          Sort by description in descending order:
            value: description:desc
      - name: filters
        in: query
        description: 'Filters. PHP-style nested query is used - example: `filters[namespace][IN]=company.team`'
        required: true
        explode: false
        schema:
          type: array
          items:
            $ref: '#/components/schemas/QueryFilter'
      - name: tenant
        in: path
        required: true
        schema:
          type: string
      responses:
        '200':
          description: listAllKeys 200 response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PagedResults_KVEntry_'
        '401':
          description: Authentication required
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
        '403':
          description: Access denied
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
        '500':
          description: Internal server error
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
  /api/v1/{tenant}/logs/search:
    get:
      tags:
      - Logs
      summary: Search for logs
      operationId: searchLogs
      parameters:
      - name: page
        in: query
        description: The current page
        explode: false
        schema:
          minimum: 1
          type: integer
          format: int32
          default: 1
      - name: size
        in: query
        description: The current page size
        explode: false
        schema:
          maximum: 1000
          minimum: 1
          type: integer
          format: int32
          default: 10
      - name: sort
        in: query
        description: The sort of current page
        explode: false
        schema:
          type: array
          nullable: true
          items:
            type: string
        examples:
          Sort by timestamp in ascending order:
            value: timestamp:asc
      - name: cursor
        in: query
        description: An opaque cursor token (from a previous response's nextCursor) for cursor-paginated log stores
        explode: false
        schema:
          type: string
          nullable: true
      - name: filters
        in: query
        description: 'Filters. PHP-style nested query is used - examples: `filters[flowId][EQUALS]=hello-world`, `filters[timeRange][EQUALS]=P7D`, `filters[level][EQUALS]=DEBUG`'
        explode: false
        schema:
          type: array
          nullable: true
          items:
            $ref: '#/components/schemas/QueryFilter'
      - name: tenant
        in: path
        required: true
        schema:
          type: string
      responses:
        '200':
          description: searchLogs 200 response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CursorOrOffsetPagedResults_LogEntry_'
        '401':
          description: Authentication required
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
        '403':
          description: Access denied
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
        '500':
          description: Internal server error
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
  /api/v1/{tenant}/logs/{executionId}:
    get:
      tags:
      - Logs
      summary: Get logs for a specific execution, taskrun or task
      operationId: listLogsFromExecution
      parameters:
      - name: executionId
        in: path
        description: The execution id
        required: true
        schema:
          type: string
      - name: filters
        in: query
        description: Filters
        explode: false
        schema:
          type: array
          nullable: true
          items:
            $ref: '#/components/schemas/QueryFilter'
      - name: tenant
        in: path
        required: true
        schema:
          type: string
      responses:
        '200':
          description: listLogsFromExecution 200 response
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/LogEntry'
        '401':
          description: Authentication required
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
        '403':
          description: Access denied
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
        '500':
          description: Internal server error
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
    delete:
      tags:
      - Logs
      summary: Delete logs for a specific execution, taskrun or task
      operationId: deleteLogsFromExecution
      parameters:
      - name: executionId
        in: path
        description: The execution id
        required: true
        schema:
          type: string
      - name: minLevel
        in: query
        description: The min log level filter
        explode: false
        schema:
          nullable: true
          allOf:
          - $ref: '#/components/schemas/Level'
      - name: taskRunId
        in: query
        description: The taskrun id
        explode: false
        schema:
          type: string
          nullable: true
      - name: taskId
        in: query
        description: The task id
        explode: false
        schema:
          type: string
          nullable: true
      - name: attempt
        in: query
        description: The attempt number
        explode: false
        schema:
          type: integer
          format: int32
          nullable: true
      - name: tenant
        in: path
        required: true
        schema:
          type: string
      responses:
        '200':
          description: deleteLogsFromExecution 200 response
        '401':
          description: Authentication required
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
        '403':
          description: Access denied
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
        '500':
          description: Internal server error
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
  /api/v1/{tenant}/logs/{executionId}/download:
    get:
      tags:
      - Logs
      summary: Download logs for a specific execution, taskrun or task
      operationId: downloadLogsFromExecution
      parameters:
      - name: executionId
        in: path
        description: The execution id
        required: true
        schema:
          type: string
      - name: filters
        in: query
        description: Filters
        explode: false
        schema:
          type: array
          nullable: true
          items:
            $ref: '#/components/schemas/QueryFilter'
      - name: tenant
        in: path
        required: true
        schema:
          type: string
      responses:
        '200':
          description: downloadLogsFromExecution 200 response
          content:
            text/plain:
              schema:
                type: string
                format: binary
        '401':
          description: Authentication required
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
        '403':
          description: Access denied
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
        '500':
          description: Internal server error
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
  /api/v1/{tenant}/logs/{executionId}/follow:
    get:
      tags:
      - Logs
      summary: Follow logs for a specific execution
      operationId: followLogsFromExecution
      parameters:
      - name: executionId
        in: path
        description: The execution id
        required: true
        schema:
          type: string
      - name: filters
        in: query
        description: Filters
        explode: false
        schema:
          type: array
          nullable: true
          items:
            $ref: '#/components/schemas/QueryFilter'
      - name: tenant
        in: path
        required: true
        schema:
          type: string
      responses:
        '200':
          description: followLogsFromExecution 200 response
          content:
            text/event-stream:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/Event_FollowLogEvent_'
        '401':
          description: Authentication required
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
        '403':
          description: Access denied
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
        '500':
          description: Internal server error
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
  /api/v1/{tenant}/logs/{namespace}/{flowId}:
    delete:
      tags:
      - Logs
      summary: Delete logs for a specific execution, taskrun or task
      operationId: deleteLogsFromFlow
      parameters:
      - name: namespace
        in: path
        description: The namespace
        required: true
        schema:
          type: string
      - name: flowId
        in: path
        description: The flow identifier
        required: true
        schema:
          type: string
      - name: triggerId
        in: query
        description: The trigger id
        explode: false
        schema:
          type: string
          nullable: true
      - name: tenant
        in: path
        required: true
        schema:
          type: string
      responses:
        '200':
          description: deleteLogsFromFlow 200 response
        '401':
          description: Authentication required
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
        '403':
          description: Access denied
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
        '500':
          description: Internal server error
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
  /api/v1/{tenant}/mcp-servers:
    get:
      tags:
      - Mcp
      summary: List MCP servers
      operationId: listMcps
      parameters:
      - name: page
        in: query
        description: The current page
        explode: false
        schema:
          minimum: 1
          type: integer
          format: int32
          default: 1
      - name: size
        in: query
        description: The current page size
        explode: false
        schema:
          maximum: 1000
          minimum: 1
          type: integer
          format: int32
          default: 10
      - name: sort
        in: query
        description: The sort of current page
        explode: false
        schema:
          type: array
          nullable: true
          items:
            type: string
      - name: tenant
        in: path
        required: true
        schema:
          type: string
      responses:
        '200':
          description: listMcps 200 response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PagedResults_ApiMcpServer_'
        '401':
          description: Authentication required
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
        '403':
          description: Access denied
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
        '500':
          description: Internal server error
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
    post:
      tags:
      - Mcp
      summary: Create an MCP server
      operationId: createMcp
      parameters:
      - name: tenant
        in: path
        required: true
        schema:
          type: string
      requestBody:
        description: The MCP server to create
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ApiMcpServer'
        required: true
      responses:
        '200':
          description: createMcp 200 response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiMcpServer'
        '401':
          description: Authentication required
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
        '403':
          description: Access denied
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
        '500':
          description: Internal server error
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
  /api/v1/{tenant}/mcp-servers/{id}:
    get:
      tags:
      - Mcp
      summary: Get an MCP server
      operationId: getMcp
      parameters:
      - name: id
        in: path
        description: The MCP server id
        required: true
        schema:
          type: string
      - name: tenant
        in: path
        required: true
        schema:
          type: string
      responses:
        '200':
          description: getMcp 200 response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiMcpServer'
        '401':
          description: Authentication required
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
        '403':
          description: Access denied
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
        '500':
          description: Internal server error
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
    put:
      tags:
      - Mcp
      summary: Update an MCP server
      operationId: updateMcp
      parameters:
      - name: id
        in: path
        description: The MCP server id
        required: true
        schema:
          type: string
      - name: tenant
        in: path
        required: true
        schema:
          type: string
      requestBody:
        description: The MCP server to update
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ApiMcpServer'
        required: true
      responses:
        '200':
          description: updateMcp 200 response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiMcpServer'
        '401':
          description: Authentication required
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
        '403':
          description: Access denied
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
        '500':
          description: Internal server error
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
    delete:
      tags:
      - Mcp
      summary: Delete an MCP server
      operationId: deleteMcp
      parameters:
      - name: id
        in: path
        description: The MCP server id
        required: true
        schema:
          type: string
      - name: tenant
        in: path
        required: true
        schema:
          type: string
      responses:
        '200':
          description: deleteMcp 200 response
        '401':
          description: Authentication required
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
        '403':
          description: Access denied
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
        '500':
          description: Internal server error
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
  /api/v1/{tenant}/mcp-servers/{id}/toggle:
    patch:
      tags:
      - Mcp
      summary: Toggle an MCP server's enabled state
      operationId: toggleMcp
      parameters:
      - name: id
        in: path
        description: The MCP server id
        required: true
        schema:
          type: string
      - name: tenant
        in: path
        required: true
        schema:
          type: string
      responses:
        '200':
          description: toggleMcp 200 response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiMcpServer'
        '401':
          description: Authentication required
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
        '403':
          description: Access denied
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
        '500':
          description: Internal server error
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
  /api/v1/{tenant}/mcp-servers/{id}/tools:
    get:
      tags:
      - Mcp
      summary: List tools exposed by an MCP server
      operationId: listTools
      parameters:
      - name: id
        in: path
        description: The MCP server id
        required: true
        schema:
          type: string
      - name: tenant
        in: path
        required: true
        schema:
          type: string
      responses:
        '200':
          description: listTools 200 response
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/McpServerController.ApiMcpTool'
        '401':
          description: Authentication required
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
        '403':
          description: Access denied
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
        '500':
          description: Internal server error
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
  /api/v1/{tenant}/mcp/{id}:
    get:
      operationId: handleGetRequest
      parameters:
      - name: tenant
        in: path
        required: true
        schema:
          type: string
      - name: id
        in: path
        required: true
        schema:
          type: string
      responses:
        '200':
          description: handleGetRequest 200 response
          content:
            text/event-stream:
              schema:
                type: object
    post:
      operationId: handleRequest
      parameters:
      - name: tenant
        in: path
        required: true
        schema:
          type: string
      - name: id
        in: path
        required: true
        schema:
          type: string
      responses:
        '200':
          description: handleRequest 200 response
          content:
            text/event-stream:
              schema:
                type: object
            application/json:
              schema:
                type: object
    delete:
      operationId: handleDeleteRequest
      parameters:
      - name: tenant
        in: path
        required: true
        schema:
          type: string
      - name: id
        in: path
        required: true
        schema:
          type: string
      responses:
        '200':
          description: handleDeleteRequest 200 response
          content:
            text/event-stream:
              schema:
                type: object
            application/json:
              schema:
                type: object
  /api/v1/{tenant}/metrics/aggregates/{namespace}/{flowId}/{metric}:
    get:
      tags:
      - Metrics
      summary: Get metrics aggregations for a specific flow
      operationId: aggregateMetricsFromFlow
      parameters:
      - name: namespace
        in: path
        description: The namespace
        required: true
        schema:
          type: string
      - name: flowId
        in: path
        description: The flow Id
        required: true
        schema:
          type: string
      - name: metric
        in: path
        description: The metric name
        required: true
        schema:
          type: string
      - name: startDate
        in: query
        description: The start datetime, default to now - 30 days
        schema:
          type: string
          format: date-time
          nullable: true
      - name: endDate
        in: query
        description: The end datetime, default to now
        schema:
          type: string
          format: date-time
          nullable: true
      - name: aggregation
        in: query
        description: 'The type of aggregation: avg, sum, min or max'
        explode: false
        schema:
          type: string
          default: sum
      - name: tenant
        in: path
        required: true
        schema:
          type: string
      responses:
        '200':
          description: aggregateMetricsFromFlow 200 response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/MetricAggregations'
        '401':
          description: Authentication required
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
        '403':
          description: Access denied
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
        '500':
          description: Internal server error
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
  /api/v1/{tenant}/metrics/aggregates/{namespace}/{flowId}/{taskId}/{metric}:
    get:
      tags:
      - Metrics
      summary: Get metrics aggregations for a specific flow
      operationId: aggregateMetricsFromTask
      parameters:
      - name: namespace
        in: path
        description: The namespace
        required: true
        schema:
          type: string
      - name: flowId
        in: path
        description: The flow Id
        required: true
        schema:
          type: string
      - name: taskId
        in: path
        description: The task Id
        required: true
        schema:
          type: string
      - name: metric
        in: path
        description: The metric name
        required: true
        schema:
          type: string
      - name: startDate
        in: query
        description: The start datetime, default to now - 30 days
        schema:
          type: string
          format: date-time
          nullable: true
      - name: endDate
        in: query
        description: The end datetime, default to now
        schema:
          type: string
          format: date-time
          nullable: true
      - name: aggregation
        in: query
        description: 'The type of aggregation: avg, sum, min or max'
        explode: false
        schema:
          type: string
          default: sum
      - name: tenant
        in: path
        required: true
        schema:
          type: string
      responses:
        '200':
          description: aggregateMetricsFromTask 200 response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/MetricAggregations'
        '401':
          description: Authentication required
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
        '403':
          description: Access denied
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
        '500':
          description: Internal server error
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
  /api/v1/{tenant}/metrics/names/{namespace}/{flowId}:
    get:
      tags:
      - Metrics
      summary: Get metrics names for a specific flow
      operationId: listFlowMetrics
      parameters:
      - name: namespace
        in: path
        description: The namespace
        required: true
        schema:
          type: string
      - name: flowId
        in: path
        description: The flow Id
        required: true
        schema:
          type: string
      - name: tenant
        in: path
        required: true
        schema:
          type: string
      responses:
        '200':
          description: listFlowMetrics 200 response
          content:
            application/json:
              schema:
                type: array
                items:
                  type: string
        '401':
          description: Authentication required
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
        '403':
          description: Access denied
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
        '500':
          description: Internal server error
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
  /api/v1/{tenant}/metrics/names/{namespace}/{flowId}/{taskId}:
    get:
      tags:
      - Metrics
      summary: Get metrics names for a specific task in a flow
      operationId: listTaskMetrics
      parameters:
      - name: namespace
        in: path
        description: The namespace
        required: true
        schema:
          type: string
      - name: flowId
        in: path
        description: The flow Id
        required: true
        schema:
          type: string
      - name: taskId
        in: path
        description: The task Id
        required: true
        schema:
          type: string
      - name: tenant
        in: path
        required: true
        schema:
          type: string
      responses:
        '200':
          description: listTaskMetrics 200 response
          content:
            application/json:
              schema:
                type: array
                items:
                  type: string
        '401':
          description: Authentication required
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
        '403':
          description: Access denied
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
        '500':
          description: Internal server error
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
  /api/v1/{tenant}/metrics/tasks/{namespace}/{flowId}:
    get:
      tags:
      - Metrics
      summary: Get tasks id that have metrics for a specific flow, include deleted or renamed tasks
      operationId: listTasksWithMetrics
      parameters:
      - name: namespace
        in: path
        description: The namespace
        required: true
        schema:
          type: string
      - name: flowId
        in: path
        description: The flow Id
        required: true
        schema:
          type: string
      - name: tenant
        in: path
        required: true
        schema:
          type: string
      responses:
        '200':
          description: listTasksWithMetrics 200 response
          content:
            application/json:
              schema:
                type: array
                items:
                  type: string
        '401':
          description: Authentication required
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
        '403':
          description: Access denied
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
        '500':
          description: Internal server error
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
  /api/v1/{tenant}/metrics/{executionId}:
    get:
      tags:
      - Metrics
      summary: Get metrics for a specific execution
      operationId: searchByExecution
      parameters:
      - name: page
        in: query
        description: The current page
        explode: false
        schema:
          minimum: 1
          type: integer
          format: int32
          default: 1
      - name: size
        in: query
        description: The current page size
        explode: false
        schema:
          maximum: 1000
          minimum: 1
          type: integer
          format: int32
          default: 10
      - name: sort
        in: query
        description: The sort of current page
        explode: false
        schema:
          type: array
          nullable: true
          items:
            type: string
      - name: executionId
        in: path
        description: The execution id
        required: true
        schema:
          type: string
      - name: taskRunId
        in: query
        description: The taskrun id
        explode: false
        schema:
          type: string
          nullable: true
      - name: taskId
        in: query
        description: The task id
        explode: false
        schema:
          type: string
          nullable: true
      - name: tenant
        in: path
        required: true
        schema:
          type: string
      responses:
        '200':
          description: searchByExecution 200 response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PagedResults_MetricEntry_'
        '401':
          description: Authentication required
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
        '403':
          description: Access denied
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
        '500':
          description: Internal server error
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
  /api/v1/{tenant}/namespaces/autocomplete:
    post:
      tags:
      - Namespaces
      summary: List namespaces for autocomplete
      description: Returns a list of namespaces for use in autocomplete fields, optionally allowing to filter by query and ids. Used especially for binding creation.
      operationId: autocompleteNamespaces
      parameters:
      - name: tenant
        in: path
        required: true
        schema:
          type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ApiAutocomplete'
        required: true
      responses:
        '200':
          description: autocompleteNamespaces 200 response
          content:
            application/json:
              schema:
                type: array
                items:
                  type: string
        '401':
          description: Authentication required
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
        '403':
          description: Access denied
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
        '500':
          description: Internal server error
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
  /api/v1/{tenant}/namespaces/search:
    get:
      tags:
      - Namespaces
      summary: Search for namespaces
      operationId: searchNamespaces
      parameters:
      - name: page
        in: query
        description: The current page
        explode: false
        schema:
          minimum: 1
          type: integer
          format: int32
          default: 1
      - name: size
        in: query
        description: The current page size
        explode: false
        schema:
          maximum: 1000
          minimum: 1
          type: integer
          format: int32
          default: 10
      - name: sort
        in: query
        description: The sort of current page
        explode: false
        schema:
          type: array
          nullable: true
          items:
            type: string
      - name: existing
        in: query
        description: Return only existing namespace
        explode: false
        schema:
          type: boolean
          default: false
      - name: filters
        in: query
        description: A list of query filters
        explode: false
        schema:
          type: array
          nullable: true
          items:
            $ref: '#/components/schemas/QueryFilter'
      - name: tenant
        in: path
        required: true
        schema:
          type: string
      responses:
        '200':
          description: searchNamespaces 200 response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PagedResults_Namespace_'
        '401':
          description: Authentication required
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
        '403':
          description: Access denied
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
        '500':
          description: Internal server error
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
  /api/v1/{tenant}/namespaces/{id}:
    get:
      tags:
      - Namespaces
      summary: Get a namespace
      operationId: getNamespace
      parameters:
      - name: id
        in: path
        description: The namespace id
        required: true
        schema:
          type: string
      - name: tenant
        in: path
        required: true
        schema:
          type: string
      responses:
        '200':
          description: getNamespace 200 response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NamespaceLight'
        '401':
          description: Authentication required
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
        '403':
          description: Access denied
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
        '500':
          description: Internal server error
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
  /api/v1/{tenant}/namespaces/{namespace}/dependencies:
    get:
      tags:
      - Flows
      summary: Get flow dependencies
      operationId: getFlowDependenciesFromNamespace
      parameters:
      - name: namespace
        in: path
        description: The flow namespace
        required: true
        schema:
          type: string
      - name: destinationOnly
        in: query
        description: if true, list only destination dependencies, otherwise list also source dependencies
        explode: false
        schema:
          type: boolean
          default: false
      - name: tenant
        in: path
        required: true
        schema:
          type: string
      responses:
        '200':
          description: getFlowDependenciesFromNamespace 200 response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/FlowTopologyGraph'
        '401':
          description: Authentication required
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
        '403':
          description: Access denied
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
        '500':
          description: Internal server error
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
  /api/v1/{tenant}/namespaces/{namespace}/files:
    get:
      tags:
      - Files
      summary: Get namespace file content
      operationId: getFileContent
      parameters:
      - name: namespace
        in: path
        description: The namespace id
        required: true
        schema:
          type: string
      - name: path
        in: query
        description: The internal storage uri
        required: true
        explode: false
        schema:
          type: string
      - name: revision
        in: query
        description: The revision, if not provided, the latest revision will be returned
        explode: false
        schema:
          type: integer
          format: int32
          nullable: true
      - name: tenant
        in: path
        required: true
        schema:
          type: string
      responses:
        '200':
          description: getFileContent 200 response
          content:
            application/octet-stream:
              schema:
                type: string
                format: binary
        '401':
          description: Authentication required
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
        '403':
          description: Access denied
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
        '500':
          description: Internal server error
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
    put:
      tags:
      - Files
      summary: Move a file or directory
      operationId: moveFileDirectory
      parameters:
      - name: namespace
        in: path
        description: The namespace id
        required: true
        schema:
          type: string
      - name: from
        in: query
        description: The internal storage uri to move from
        required: true
        explode: false
        schema:
          type: string
          format: uri
      - name: to
        in: query
        description: The internal storage uri to move to
        required: true
        explode: false
        schema:
          type: string
          format: uri
      - name: tenant
        in: path
        required: true
        schema:
          type: string
      responses:
        '200':
          description: moveFileDirectory 200 response
        '401':
          description: Authentication required
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
        '403':
          description: Access denied
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
        '500':
          description: Internal server error
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
    post:
      tags:
      - Files
      summary: Create a file
      operationId: createNamespaceFile
      parameters:
      - name: namespace
        in: path
        description: The namespace id
        required: true
        schema:
          type: string
      - name: path
        in: query
        description: The internal storage uri
        required: true
        explode: false
        schema:
          type: string
      - name: tenant
        in: path
        required: true
        schema:
          type: string
      requestBody:
        content:
          multipart/form-data:
            schema:
              type: object
              properties:
                fileContent:
                  type: string
                  description: The file to upload
                  format: binary
            encoding:
              fileContent:
                contentType: application/octet-stream
                explode: false
        required: true
      responses:
        '200':
          description: createNamespaceFile 200 response
        '401':
          description: Authentication required
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
        '403':
          description: Access denied
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
        '500':
          description: Internal server error
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
    delete:
      tags:
      - Files
      summary: Delete a file or directory
      operationId: deleteFileDirectory
      parameters:
      - name: namespace
        in: path
        description: The namespace id
        required: true
        schema:
          type: string
      - name: path
        in: query
        description: The internal storage uri of the file / directory to delete
        required: true
        explode: false
        schema:
          type: string
      - name: tenant
        in: path
        required: true
        schema:
          type: string
      responses:
        '200':
          description: deleteFileDirectory 200 response
        '401':
          description: Authentication required
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
        '403':
          description: Access denied
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
        '500':
          description: Internal server error
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
  /api/v1/{tenant}/namespaces/{namespace}/files/directory:
    get:
      tags:
      - Files
      summary: List directory content
      operationId: listNamespaceDirectoryFiles
      parameters:
      - name: namespace
        in: path
        description: The namespace id
        required: true
        schema:
          type: string
      - name: path
        in: query
        description: The internal storage uri
        explode: false
        schema:
          type: string
          nullable: true
      - name: tenant
        in: path
        required: true
        schema:
          type: string
      responses:
        '200':
          description: listNamespaceDirectoryFiles 200 response
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/FileAttributes'
        '401':
          description: Authentication required
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
        '403':
          description: Access denied
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
        '500':
          description: Internal server error
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
    post:
      tags:
      - Files
      summary: Create a directory
      operationId: createNamespaceDirectory
      parameters:
      - name: namespace
        in: path
        description: The namespace id
        required: true
        schema:
          type: string
      - name: path
        in: query
        description: The internal storage uri
        explode: false
        schema:
          type: string
          nullable: true
      - name: tenant
        in: path
        required: true
        schema:
          type: string
      responses:
        '200':
          description: createNamespaceDirectory 200 response
        '401':
          description: Authentication required
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
        '403':
          description: Access denied
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
        '500':
          description: Internal server error
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
  /api/v1/{tenant}/namespaces/{namespace}/files/export:
    get:
      tags:
      - Files
      summary: Export namespace files as a ZIP
      operationId: exportNamespaceFiles
      parameters:
      - name: namespace
        in: path
        description: The namespace id
        required: true
        schema:
          type: string
      - name: tenant
        in: path
        required: true
        schema:
          type: string
      responses:
        '200':
          description: exportNamespaceFiles 200 response
          content:
            application/octet-stream:
              schema:
                type: string
                format: binary
        '401':
          description: Authentication required
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
        '403':
          description: Access denied
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
        '500':
          description: Internal server error
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
  /api/v1/{tenant}/namespaces/{namespace}/files/revisions:
    get:
      tags:
      - Files
      summary: Get namespace file revisions
      operationId: getFileRevisions
      parameters:
      - name: namespace
        in: path
        description: The namespace id
        required: true
        schema:
          type: string
      - name: path
        in: query
        description: The internal storage uri
        explode: false
        schema:
          type: string
          nullable: true
      - name: tenant
        in: path
        required: true
        schema:
          type: string
      responses:
        '200':
          description: getFileRevisions 200 response
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/NamespaceFileRevision'
        '401':
          description: Authentication required
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
        '403':
          description: Access denied
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
        '500':
          description: Internal server error
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
  /api/v1/{tenant}/namespaces/{namespace}/files/search:
    get:
      tags:
      - Files
      summary: Find files which path contain the given string in their URI
      operationId: searchNamespaceFiles
      parameters:
      - name: namespace
        in: path
        description: The namespace id
        required: true
        schema:
          type: string
      - name: q
        in: query
        description: The string the file path should contain
        required: true
        explode: false
        schema:
          type: string
      - name: tenant
        in: path
        required: true
        schema:
          type: string
      responses:
        '200':
          description: searchNamespaceFiles 200 response
          content:
            application/json:
              schema:
                type: array
                items:
                  type: string
        '401':
          description: Authentication required
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
        '403':
          description: Access denied
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
        '500':
          description: Internal server error
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
  /api/v1/{tenant}/namespaces/{namespace}/files/stats:
    get:
      tags:
      - Files
      summary: Get namespace file stats such as size, creation & modification dates and type
      operationId: getFileMetadatas
      parameters:
      - name: namespace
        in: path
        description: The namespace id
        required: true
        schema:
          type: string
      - name: path
        in: query
        description: The internal storage uri
        explode: false
        schema:
          type: string
          nullable: true
      - name: tenant
        in: path
        required: true
        schema:
          type: string
      responses:
        '200':
          description: getFileMetadatas 200 response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/FileAttributes'
        '401':
          description: Authentication required
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
        '403':
          description: Access denied
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
        '500':
          description: Internal server error
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
  /api/v1/{tenant}/namespaces/{namespace}/inherited-secrets:
    get:
      tags:
      - Namespaces
      summary: List inherited secrets
      operationId: getInheritedSecrets
      parameters:
      - name: namespace
        in: path
        description: The namespace id
        required: true
        schema:
          type: string
      - name: tenant
        in: path
        required: true
        schema:
          type: string
      responses:
        '200':
          description: getInheritedSecrets 200 response
          content:
            application/json:
              schema:
                type: object
                additionalProperties:
                  type: array
                  items:
                    type: string
        '401':
          description: Authentication required
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
        '403':
          description: Access denied
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
        '500':
          description: Internal server error
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
  /api/v1/{tenant}/namespaces/{namespace}/kv:
    delete:
      tags:
      - KV
      summary: Bulk-delete multiple key/value pairs from the given namespace.
      operationId: deleteKeyValues
      parameters:
      - name: namespace
        in: path
        description: The namespace id
        required: true
        schema:
          type: string
      - name: tenant
        in: path
        required: true
        schema:
          type: string
      requestBody:
        description: The keys
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/KVController.ApiDeleteBulkRequest'
        required: true
      responses:
        '200':
          description: deleteKeyValues 200 response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/KVController.ApiDeleteBulkResponse'
        '401':
          description: Authentication required
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
        '403':
          description: Access denied
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
        '500':
          description: Internal server error
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
  /api/v1/{tenant}/namespaces/{namespace}/kv/inheritance:
    get:
      tags:
      - KV
      summary: List all keys for inherited namespaces
      operationId: listKeysWithInheritence
      parameters:
      - name: namespace
        in: path
        description: The namespace id
        required: true
        schema:
          type: string
      - name: tenant
        in: path
        required: true
        schema:
          type: string
      responses:
        '200':
          description: listKeysWithInheritence 200 response
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/KVEntry'
        '401':
          description: Authentication required
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
        '403':
          description: Access denied
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
        '500':
          description: Internal server error
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
  /api/v1/{tenant}/namespaces/{namespace}/kv/{key}:
    get:
      tags:
      - KV
      summary: Get value for a key
      operationId: getKeyValue
      parameters:
      - name: namespace
        in: path
        description: The namespace id
        required: true
        schema:
          type: string
      - name: key
        in: path
        description: The key
        required: true
        schema:
          type: string
      - name: tenant
        in: path
        required: true
        schema:
          type: string
      responses:
        '200':
          description: getKeyValue 200 response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/KVController.KvDetail'
        '401':
          description: Authentication required
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
        '403':
          description: Access denied
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
        '500':
          description: Internal server error
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
    put:
      tags:
      - KV
      summary: Puts a key-value pair in store
      operationId: setKeyValue
      parameters:
      - name: namespace
        in: path
        description: The namespace id
        required: true
        schema:
          type: string
      - name: key
        in: path
        description: The key
        required: true
        schema:
          type: string
      - name: tenant
        in: path
        required: true
        schema:
          type: string
      requestBody:
        description: The value of the key
        content:
          text/plain:
            schema:
              type: string
        required: true
      responses:
        '200':
          description: setKeyValue 200 response
        '401':
          description: Authentication required
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
        '403':
          description: Access denied
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
        '500':
          description: Internal server error
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
    delete:
      tags:
      - KV
      summary: Delete a key-value pair
      operationId: deleteKeyValue
      parameters:
      - name: namespace
        in: path
        description: The namespace id
        required: true
        schema:
          type: string
      - name: key
        in: path
        description: The key
        required: true
        schema:
          type: string
      - name: tenant
        in: path
        required: true
        schema:
          type: string
      responses:
        '200':
          description: deleteKeyValue 200 response
          content:
            application/json:
              schema:
                type: boolean
        '401':
          description: Authentication required
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
        '403':
          description: Access denied
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
        '500':
          description: Internal server error
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
  /api/v1/{tenant}/outputs/executions/{executionId}:
    get:
      tags:
      - Outputs
      summary: Get the flow-level outputs of an execution
      operationId: getExecutionOutputs
      parameters:
      - name: executionId
        in: path
        description: The execution id
        required: true
        schema:
          type: string
      - name: tenant
        in: path
        required: true
        schema:
          type: string
      responses:
        '200':
          description: The execution outputs as a map of output names to their values
          content:
            application/json:
              schema:
                type: object
                additionalProperties: true
        '401':
          description: Authentication required
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
        '403':
          description: Access denied
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
        '500':
          description: Internal server error
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
  /api/v1/{tenant}/outputs/tasks/{executionId}:
    get:
      tags:
      - Outputs
      summary: List the task runs of an execution having outputs
      operationId: getTaskOutputsInformation
      parameters:
      - name: executionId
        in: path
        description: The execution id
        required: true
        schema:
          type: string
      - name: tenant
        in: path
        required: true
        schema:
          type: string
      responses:
        '200':
          description: getTaskOutputsInformation 200 response
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/OutputController.TaskOutputInformation'
        '401':
          description: Authentication required
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
        '403':
          description: Access denied
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
        '500':
          description: Internal server error
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
  /api/v1/{tenant}/outputs/tasks/{executionId}/{taskRunId}:
    get:
      tags:
      - Outputs
      summary: Get task run outputs
      operationId: getTaskRunOutputs
      parameters:
      - name: executionId
        in: path
        description: The execution id
        required: true
        schema:
          type: string
      - name: taskRunId
        in: path
        description: The task run id
        required: true
        schema:
          type: string
      - name: tenant
        in: path
        required: true
        schema:
          type: string
      responses:
        '200':
          description: The task run outputs as a map of output names to their values
          content:
            application/json:
              schema:
                type: object
                additionalProperties: true
        '401':
          description: Authentication required
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
        '403':
          description: Access denied
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
        '500':
          description: Internal server error
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
  /api/v1/{tenant}/secrets:
    get:
      tags:
      - Secrets
      summary: Search secrets of all namespaces
      operationId: listSecrets
      parameters:
      - name: page
        in: query
        description: The current page
        explode: false
        schema:
          type: integer
          format: int32
          default: 1
      - name: size
        in: query
        description: The current page size
        explode: false
        schema:
          maximum: 1000
          type: integer
          format: int32
          default: 10
      - name: sort
        in: query
        description: The sort of current page
        explode: false
        schema:
          type: array
          nullable: true
          items:
            type: string
      - name: filters
        in: query
        description: Filters
        required: true
        explode: false
        schema:
          type: array
          items:
            $ref: '#/components/schemas/QueryFilter'
      - name: tenant
        in: path
        required: true
        schema:
          type: string
      responses:
        '200':
          description: listSecrets 200 response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiSecretListResponse_ApiSecretMeta_'
        '401':
          description: Authentication required
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
        '403':
          description: Access denied
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
        '500':
          description: Internal server error
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
  /api/v1/{tenant}/triggers/backfill/create:
    put:
      tags:
      - Triggers
      summary: Create a backfill
      operationId: createBackfill
      parameters:
      - name: tenant
        in: path
        required: true
        schema:
          type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/TriggerController.ApiCreateBackfillRequest'
        required: true
      responses:
        '200':
          description: On success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiTriggerState'
        '409':
          description: If the backfill cannot be created
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
        '401':
          description: Authentication required
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
        '403':
          description: Access denied
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
        '500':
          description: Internal server error
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
  /api/v1/{tenant}/triggers/backfill/delete:
    post:
      tags:
      - Triggers
      summary: Delete a backfill
      operationId: deleteBackfill
      parameters:
      - name: tenant
        in: path
        required: true
        schema:
          type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/TriggerController.ApiTriggerId'
        required: true
      responses:
        '200':
          description: On success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiTriggerState'
        '409':
          description: If the backfill cannot be deleted
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
        '401':
          description: Authentication required
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
        '403':
          description: Access denied
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
        '500':
          description: Internal server error
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
  /api/v1/{tenant}/triggers/backfill/delete/by-query:
    post:
      tags:
      - Triggers
      summary: Delete backfill for triggers matching query asynchronously
      operationId: deleteBackfillByQuery
      parameters:
      - name: filters
        in: query
        description: 'Filters. PHP-style nested query is used - examples: `filters[flowId][EQUALS]=hello-world`, `filters[namespace][CONTAINS]=test`'
        required: true
        explode: false
        schema:
          type: array
          items:
            $ref: '#/components/schemas/QueryFilter'
      - name: tenant
        in: path
        required: true
        schema:
          type: string
      responses:
        '202':
          description: Accepted
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiAsyncOperationResponse'
        '401':
          description: Authentication required
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
        '403':
          description: Access denied
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
        '500':
          description: Internal server error
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
  /api/v1/{tenant}/triggers/backfill/delete/by-triggers:
    post:
      tags:
      - Triggers
      summary: Delete backfill for given triggers asynchronously
      operationId: deleteBackfillByIds
      parameters:
      - name: tenant
        in: path
        required: true
        schema:
          type: string
      requestBody:
        content:
          application/json:
            schema:
              type: array
              items:
                $ref: '#/components/schemas/TriggerController.ApiTriggerId'
        required: true
      responses:
        '202':
          description: Accepted
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiAsyncOperationResponse'
        '401':
          description: Authentication required
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
        '403':
          description: Access denied
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
        '500':
          description: Internal server error
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
  /api/v1/{tenant}/triggers/backfill/pause:
    put:
      tags:
      - Triggers
      summary: Pause a backfill
      operationId: pauseBackfill
      parameters:
      - name: tenant
        in: path
        required: true
        schema:
          type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/TriggerController.ApiTriggerId'
        required: true
      responses:
        '200':
          description: On success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiTriggerState'
        '409':
          description: If the backfill cannot be paused
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
        '401':
          description: Authentication required
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
        '403':
          description: Access denied
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
        '500':
          description: Internal server error
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
  /api/v1/{tenant}/triggers/backfill/pause/by-query:
    post:
      tags:
      - Triggers
      summary: Pause backfill for triggers matching query asynchronously
      operationId: pauseBackfillByQuery
      parameters:
      - name: filters
        in: query
        description: 'Filters. PHP-style nested query is used - examples: `filters[flowId][EQUALS]=hello-world`, `filters[namespace][CONTAINS]=test`'
        required: true
        explode: false
        schema:
          type: array
          items:
            $ref: '#/components/schemas/QueryFilter'
      - name: tenant
        in: path
        required: true
        schema:
          type: string
      responses:
        '202':
          description: Accepted
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiAsyncOperationResponse'
        '401':
          description: Authentication required
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
        '403':
          description: Access denied
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
        '500':
          description: Internal server error
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
  /api/v1/{tenant}/triggers/backfill/pause/by-triggers:
    post:
      tags:
      - Triggers
      summary: Pause backfill for given triggers asynchronously
      operationId: pauseBackfillByIds
      parameters:
      - name: tenant
        in: path
        required: true
        schema:
          type: string
      requestBody:
        content:
          application/json:
            schema:
              type: array
              items:
                $ref: '#/components/schemas/TriggerController.ApiTriggerId'
        required: true
      responses:
        '202':
          description: Accepted
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiAsyncOperationResponse'
        '401':
          description: Authentication required
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
        '403':
          description: Access denied
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
        '500':
          description: Internal server error
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
  /api/v1/{tenant}/triggers/backfill/unpause:
    put:
      tags:
      - Triggers
      summary: Unpause a backfill
      operationId: unpauseBackfill
      parameters:
      - name: tenant
        in: path
        required: true
        schema:
          type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/TriggerController.ApiTriggerId'
        required: true
      responses:
        '200':
          description: On success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiTriggerState'
        '409':
          description: If the backfill cannot be resumed
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
        '401':
          description: Authentication required
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
        '403':
          description: Access denied
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
        '500':
          description: Internal server error
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
  /api/v1/{tenant}/triggers/backfill/unpause/by-query:
    post:
      tags:
      - Triggers
      summary: Unpause backfill for triggers matching query asynchronously
      operationId: unpauseBackfillByQuery
      parameters:
      - name: filters
        in: query
        description: 'Filters. PHP-style nested query is used - examples: `filters[flowId][EQUALS]=hello-world`, `filters[namespace][CONTAINS]=test`'
        required: true
        explode: false
        schema:
          type: array
          items:
            $ref: '#/components/schemas/QueryFilter'
      - name: tenant
        in: path
        required: true
        schema:
          type: string
      responses:
        '202':
          description: Accepted
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiAsyncOperationResponse'
        '401':
          description: Authentication required
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
        '403':
          description: Access denied
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
        '500':
          description: Internal server error
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
  /api/v1/{tenant}/triggers/backfill/unpause/by-triggers:
    post:
      tags:
      - Triggers
      summary: Unpause backfill for given triggers asynchronously
      operationId: unpauseBackfillByIds
      parameters:
      - name: tenant
        in: path
        required: true
        schema:
          type: string
      requestBody:
        content:
          application/json:
            schema:
              type: array
              items:
                $ref: '#/components/schemas/TriggerController.ApiTriggerId'
        required: true
      responses:
        '202':
          description: Accepted
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiAsyncOperationResponse'
        '401':
          description: Authentication required
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
        '403':
          description: Access denied
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
        '500':
          description: Internal server error
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
  /api/v1/{tenant}/triggers/delete/by-query:
    delete:
      tags:
      - Triggers
      summary: Delete triggers by query parameters asynchronously
      operationId: deleteTriggersByQuery
      parameters:
      - name: tenant
        in: path
        required: true
        schema:
          type: string
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                filters:
                  type: array
                  description: 'Filters. PHP-style nested query is used - examples: `filters[flowId][EQUALS]=hello-world`, `filters[namespace][CONTAINS]=test`'
                  items:
                    $ref: '#/components/schemas/QueryFilter'
        required: true
      responses:
        '202':
          description: Accepted
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiAsyncOperationResponse'
        '401':
          description: Authentication required
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
        '403':
          description: Access denied
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
        '500':
          description: Internal server error
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
  /api/v1/{tenant}/triggers/delete/by-triggers:
    delete:
      tags:
      - Triggers
      summary: Delete given triggers asynchronously
      operationId: deleteTriggersByIds
      parameters:
      - name: tenant
        in: path
        required: true
        schema:
          type: string
      requestBody:
        content:
          application/json:
            schema:
              type: array
              items:
                $ref: '#/components/schemas/TriggerController.ApiTriggerId'
        required: true
      responses:
        '202':
          description: Accepted
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiAsyncOperationResponse'
        '401':
          description: Authentication required
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
        '403':
          description: Access denied
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
        '500':
          description: Internal server error
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
  /api/v1/{tenant}/triggers/export/by-query/csv:
    get:
      tags:
      - Triggers
      summary: Export all triggers as a streamed CSV file
      operationId: exportTriggers
      parameters:
      - name: filters
        in: query
        description: 'Filters. PHP-style nested query is used - examples: `filters[flowId][EQUALS]=hello-world`, `filters[namespace][CONTAINS]=test`'
        required: true
        explode: false
        schema:
          type: array
          items:
            $ref: '#/components/schemas/QueryFilter'
      - name: tenant
        in: path
        required: true
        schema:
          type: string
      responses:
        '200':
          description: Ok
          content:
            text/csv:
              schema:
                type: string
        '401':
          description: Authentication required
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
        '403':
          description: Access denied
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
        '500':
          description: Internal server error
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
  /api/v1/{tenant}/triggers/search:
    get:
      tags:
      - Triggers
      summary: Search for triggers
      operationId: searchTriggers
      parameters:
      - name: page
        in: query
        description: The current page
        explode: false
        schema:
          minimum: 1
          type: integer
          format: int32
          default: 1
      - name: size
        in: query
        description: The current page size
        explode: false
        schema:
          maximum: 1000
          minimum: 1
          type: integer
          format: int32
          default: 10
      - name: sort
        in: query
        description: The sort of current page
        explode: false
        schema:
          type: array
          nullable: true
          items:
            type: string
        examples:
          Sort by next evaluation date in ascending order:
            value: nextEvaluationDate:asc
          Sort by trigger ID in descending order:
            value: triggerId:desc
      - name: filters
        in: query
        description: 'Filters. PHP-style nested query is used - examples: `filters[flowId][EQUALS]=hello-world`, `filters[namespace][CONTAINS]=test`'
        required: true
        explode: false
        schema:
          type: array
          items:
            $ref: '#/components/schemas/QueryFilter'
      - name: dateFilter
        in: query
        description: Which trigger date field the time interval is applied to
        explode: false
        schema:
          type: string
          nullable: true
          enum:
          - NEXT_EXECUTION_DATE
          - LAST_TRIGGERED_DATE
          x-enum-varnames:
          - QUERY
          - SCOPE
          - NAMESPACE
          - KIND
          - POLICY_SCOPE
          - ENFORCEMENT
          - LABELS
          - TAGS
          - METADATA
          - FLOW_ID
          - FLOW_REVISION
          - ID
          - ASSET_ID
          - TYPE
          - ACTION
          - CREATED
          - UPDATED
          - START_DATE
          - END_DATE
          - EXPIRATION_DATE
          - STATE
          - STATUS
          - SEVERITY
          - ASSIGNEE
          - EMAIL
          - TIME_RANGE
          - PARENT_ID
          - TRIGGER_EXECUTION_ID
          - TRIGGER_ID
          - TRIGGER_STATE
          - EXECUTION_ID
          - TASK_ID
          - TASK_RUN_ID
          - ATTEMPT_NUMBER
          - CHILD_FILTER
          - WORKER_ID
          - EXISTING_ONLY
          - USER_ID
          - RESOURCES
          - DETAILS
          - LEVEL
          - PATH
          - PARENT_PATH
          - VERSION
          - ENABLED
          - USERNAME
          - NAME
          - GROUP
          - EXTERNAL_ID
          - EXPIRED_AT
          - INSTANCE_OWNER
          - SOURCE
          - LOCKED
          - LAST_TRIGGERED_DATE
          - NEXT_EXECUTION_DATE
          - ARTIFACT_ID
          x-type: String
      - name: tenant
        in: path
        required: true
        schema:
          type: string
      responses:
        '200':
          description: searchTriggers 200 response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PagedResults_ApiTriggerAndState_'
        '401':
          description: Authentication required
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
        '403':
          description: Access denied
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
        '500':
          description: Internal server error
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
  /api/v1/{tenant}/triggers/set-disabled:
    put:
      tags:
      - Triggers
      summary: Disable/enable a trigger
      operationId: disableTriggerById
      parameters:
      - name: tenant
        in: path
        required: true
        schema:
          type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/TriggerController.ApiDisableTriggerRequest'
        required: true
      responses:
        '200':
          description: On success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiTriggerState'
        '409':
          description: If the trigger state cannot be changed
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
        '401':
          description: Authentication required
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
        '403':
          description: Access denied
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
        '500':
          description: Internal server error
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
  /api/v1/{tenant}/triggers/set-disabled/by-query:
    post:
      tags:
      - Triggers
      summary: Disable/enable triggers by query parameters asynchronously
      operationId: disabledTriggersByQuery
      parameters:
      - name: filters
        in: query
        description: 'Filters. PHP-style nested query is used - examples: `filters[flowId][EQUALS]=hello-world`, `filters[namespace][CONTAINS]=test`'
        required: true
        explode: false
        schema:
          type: array
          items:
            $ref: '#/components/schemas/QueryFilter'
      - name: disabled
        in: query
        description: The disabled state
        explode: false
        schema:
          type: boolean
          default: true
      - name: recoverMissedSchedules
        in: query
        description: When true, missed schedules are recovered on enable according to the trigger's recoverMissedSchedules configuration; omitted or false, missed schedules are skipped
        explode: false
        schema:
          type: boolean
          nullable: true
      - name: tenant
        in: path
        required: true
        schema:
          type: string
      responses:
        '202':
          description: Accepted
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiAsyncOperationResponse'
        '401':
          description: Authentication required
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
        '403':
          description: Access denied
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
        '500':
          description: Internal server error
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
  /api/v1/{tenant}/triggers/set-disabled/by-triggers:
    post:
      tags:
      - Triggers
      summary: Disable/enable given triggers asynchronously
      operationId: disabledTriggersByIds
      parameters:
      - name: tenant
        in: path
        required: true
        schema:
          type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/TriggerController.SetDisabledRequest'
        required: true
      responses:
        '202':
          description: Accepted
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiAsyncOperationResponse'
        '401':
          description: Authentication required
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
        '403':
          description: Access denied
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
        '500':
          description: Internal server error
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
  /api/v1/{tenant}/triggers/unlock/by-query:
    post:
      tags:
      - Triggers
      summary: Unlock triggers by query parameters asynchronously
      operationId: unlockTriggersByQuery
      parameters:
      - name: filters
        in: query
        description: 'Filters. PHP-style nested query is used - examples: `filters[flowId][EQUALS]=hello-world`, `filters[namespace][CONTAINS]=test`'
        required: true
        explode: false
        schema:
          type: array
          items:
            $ref: '#/components/schemas/QueryFilter'
      - name: tenant
        in: path
        required: true
        schema:
          type: string
      responses:
        '202':
          description: Accepted
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiAsyncOperationResponse'
        '401':
          description: Authentication required
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
        '403':
          description: Access denied
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
        '500':
          description: Internal server error
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
  /api/v1/{tenant}/triggers/unlock/by-triggers:
    post:
      tags:
      - Triggers
      summary: Unlock given triggers asynchronously
      operationId: unlockTriggersByIds
      parameters:
      - name: tenant
        in: path
        required: true
        schema:
          type: string
      requestBody:
        content:
          application/json:
            schema:
              type: array
              items:
                $ref: '#/components/schemas/TriggerController.ApiTriggerId'
        required: true
      responses:
        '202':
          description: Accepted
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiAsyncOperationResponse'
        '401':
          description: Authentication required
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
        '403':
          description: Access denied
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
        '500':
          description: Internal server error
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
  /api/v1/{tenant}/triggers/{namespace}/{flowId}:
    get:
      tags:
      - Triggers
      summary: Get all triggers for a flow
      operationId: searchTriggersForFlow
      parameters:
      - name: page
        in: query
        description: The current page
        explode: false
        schema:
          minimum: 1
          type: integer
          format: int32
          default: 1
      - name: size
        in: query
        description: The current page size
        explode: false
        schema:
          maximum: 1000
          minimum: 1
          type: integer
          format: int32
          default: 10
      - name: sort
        in: query
        description: The sort of current page
        explode: false
        schema:
          type: array
          nullable: true
          items:
            type: string
      - name: q
        in: query
        description: A string filter
        explode: false
        schema:
          type: string
          nullable: true
      - name: namespace
        in: path
        description: The namespace
        required: true
        schema:
          type: string
      - name: flowId
        in: path
        description: The flow id
        required: true
        schema:
          type: string
      - name: tenant
        in: path
        required: true
        schema:
          type: string
      responses:
        '200':
          description: searchTriggersForFlow 200 response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PagedResults_ApiTriggerState_'
        '401':
          description: Authentication required
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
        '403':
          description: Access denied
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
        '500':
          description: Internal server error
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
  /api/v1/{tenant}/triggers/{namespace}/{flowId}/{triggerId}:
    delete:
      tags:
      - Triggers
      summary: Delete a trigger
      operationId: deleteTrigger
      parameters:
      - name: namespace
        in: path
        description: The namespace
        required: true
        schema:
          type: string
      - name: flowId
        in: path
        description: The flow id
        required: true
        schema:
          type: string
      - name: triggerId
        in: path
        description: The trigger id
        required: true
        schema:
          type: string
      - name: tenant
        in: path
        required: true
        schema:
          type: string
      responses:
        '204':
          description: On success
        '409':
          description: If the trigger cannot be deleted
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
        '401':
          description: Authentication required
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
        '403':
          description: Access denied
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
        '500':
          description: Internal server error
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
  /api/v1/{tenant}/triggers/{namespace}/{flowId}/{triggerId}/restart:
    post:
      tags:
      - Triggers
      summary: Restart a trigger
      operationId: restartTrigger
      parameters:
      - name: namespace
        in: path
        description: The namespace
        required: true
        schema:
          type: string
      - name: flowId
        in: path
        description: The flow id
        required: true
        schema:
          type: string
      - name: triggerId
        in: path
        description: The trigger id
        required: true
        schema:
          type: string
      - name: tenant
        in: path
        required: true
        schema:
          type: string
      responses:
        '200':
          description: On success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiTriggerState'
        '409':
          description: If the trigger cannot be restarted
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
        '401':
          description: Authentication required
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
        '403':
          description: Access denied
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
        '500':
          description: Internal server error
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
  /api/v1/{tenant}/triggers/{namespace}/{flowId}/{triggerId}/unlock:
    post:
      tags:
      - Triggers
      summary: Unlock a trigger
      operationId: unlockTrigger
      parameters:
      - name: namespace
        in: path
        description: The namespace
        required: true
        schema:
          type: string
      - name: flowId
        in: path
        description: The flow id
        required: true
        schema:
          type: string
      - name: triggerId
        in: path
        description: The trigger id
        required: true
        schema:
          type: string
      - name: tenant
        in: path
        required: true
        schema:
          type: string
      responses:
        '200':
          description: On success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiTriggerState'
        '409':
          description: If the trigger is already unlocked or is a realtime trigger
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
        '401':
          description: Authentication required
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
        '403':
          description: Access denied
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
        '500':
          description: Internal server error
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
  /api/v1/{tenant}/usages/all:
    get:
      tags:
      - Misc
      summary: Retrieve instance usage information
      operationId: getUsages
      parameters:
      - name: tenant
        in: path
        required: true
        schema:
          type: string
      responses:
        '200':
          description: getUsages 200 response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/MiscController.ApiUsage'
        '401':
          description: Authentication required
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
        '403':
          description: Access denied
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
        '500':
          description: Internal server error
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
components:
  schemas:
    AbstractFlow:
      required:
      - deleted
      - disabled
      - draft
      - id
      - namespace
      type: object
      properties:
        id:
          maxLength: 100
          minLength: 1
          pattern: ^[a-zA-Z0-9][a-zA-Z0-9._-]*
          type: string
        namespace:
          maxLength: 150
          minLength: 1
          pattern: ^[a-z0-9][a-z0-9._-]*
          type: string
        revision:
          minimum: 1
          type: integer
          format: int32
        updated:
          type: string
          description: The timestamp when this revision was created or last updated.
          format: date-time
        description:
          type: string
        inputs:
          type: array
          items:
            $ref: '#/components/schemas/Input_Object_'
        outputs:
          type: array
          items:
            $ref: '#/components/schemas/Output'
        disabled:
          title: Whether the flow is disabled.
          type: boolean
          description: 'A disabled flow does not run: its triggers are paused and new executions are rejected.'
        draft:
          type: boolean
          description: Whether this flow revision is a draft. Draft revisions are skipped when an execution starts without an explicit revision (webhooks, schedules, subflows, manual triggers). Executions can still target a draft by passing the revision explicitly.
        labels:
          description: Labels as a list of Label (key/value pairs) or as a map of string to string.
          oneOf:
          - $ref: '#/components/schemas/Map_Object.Object_'
        variables:
          type: object
        workerSelector:
          description: Routing requirements (tags + fallback) for this flow.
          allOf:
          - $ref: '#/components/schemas/WorkerSelector'
        deleted:
          type: boolean
    AbstractGraph:
      type: object
      properties:
        uid:
          type: string
        type:
          type: string
        branchType:
          $ref: '#/components/schemas/AbstractGraph.BranchType'
    AbstractGraph.BranchType:
      type: string
      enum:
      - ERROR
      - FINALLY
      - AFTER_EXECUTION
    AbstractTrigger:
      required:
      - id
      - type
      - when
      type: object
      properties:
        id:
          title: A unique ID for the whole flow.
          maxLength: 256
          minLength: 1
          pattern: ^[a-zA-Z0-9][a-zA-Z0-9_-]*
          type: string
          x-size-message: Trigger id must be at most 256 characters
        type:
          title: The class name for this current trigger.
          minLength: 1
          pattern: ^[A-Za-z_$][A-Za-z0-9_$]*(\.[A-Za-z_$][A-Za-z0-9_$]*)*$
          type: string
        version:
          title: Plugin Version
          type: string
          description: |
            Defines the version of the plugin to use.

            The version must follow the Semantic Versioning (SemVer) specification:
              - A single-digit MAJOR version (e.g., `1`).
              - A MAJOR.MINOR version (e.g., `1.1`).
              - A MAJOR.MINOR.PATCH version, optionally with any qualifier
                (e.g., `1.1.2`, `1.1.0-SNAPSHOT`).
        description:
          type: string
        when:
          title: A condition that determines whether the trigger should run.
          type: string
          description: A Pebble expression evaluated at trigger time. The trigger fires only when the expression evaluates to a truthy value (`true`, a non-empty string, a non-zero number). Use this to gate trigger execution on dynamic runtime values such as execution labels, flow variables, or environment conditions.
        disabled:
          type: boolean
          default: false
        workerSelector:
          description: Routing requirements (tags + fallback) for this trigger.
          allOf:
          - $ref: '#/components/schemas/WorkerSelector'
        policyRefs:
          type: array
          description: 'Identifiers of `enforcement: REFERENCE` governance policies to attach to this trigger and everything nested under it (Enterprise Edition; ignored in the open-source edition).'
          items:
            type: string
        logLevel:
          $ref: '#/components/schemas/Level'
        labels:
          title: The labels to pass to the execution created.
          description: Label values are dynamic and can reference trigger variables.
          oneOf:
          - type: array
          - $ref: '#/components/schemas/Map_Object.Object_'
        stopAfter:
          title: List of execution states after which a trigger should be stopped (a.k.a. disabled).
          type: array
          items:
            $ref: '#/components/schemas/State.Type'
        logToFile:
          type: boolean
        failOnTriggerError:
          type: boolean
        allowConcurrent:
          title: Specifies whether a trigger is allowed to start a new execution even if a previous run is still in progress.
          type: boolean
        assets:
          $ref: '#/components/schemas/AssetsDeclaration'
    AbstractTriggerForExecution:
      required:
      - id
      - type
      type: object
      properties:
        id:
          title: A unique ID for the whole flow.
          minLength: 1
          pattern: ^[a-zA-Z0-9][a-zA-Z0-9_-]*
          type: string
        type:
          title: The class name for this current trigger.
          minLength: 1
          pattern: ^[A-Za-z_$][A-Za-z0-9_$]*(\.[A-Za-z_$][A-Za-z0-9_$]*)*$
          type: string
        version:
          title: Plugin Version
          type: string
          description: |
            Defines the version of the plugin to use.

            The version must follow the Semantic Versioning (SemVer) specification:
              - A single-digit MAJOR version (e.g., `1`).
              - A MAJOR.MINOR version (e.g., `1.1`).
              - A MAJOR.MINOR.PATCH version, optionally with any qualifier
                (e.g., `1.1.2`, `1.1.0-SNAPSHOT`).
    AgentMessageRole:
      type: string
      enum:
      - USER
      - ASSISTANT
      - TOOL
      - SYSTEM
    AgentMessageType:
      type: string
      enum:
      - TEXT
      - TOOL_CALL
      - TOOL_RESULT
      - PROPOSED_ACTION
      - ARTEFACT_DRAFT
      - CANCELLED
    AgentMode:
      type: string
      enum:
      - ASK
      - PLAN
      - EDIT
    AgentThinking:
      type: object
      properties:
        text:
          type: string
          nullable: true
        signature:
          type: string
          nullable: true
        redacted:
          type: array
          nullable: true
          items:
            type: string
    AgentThreadStatus:
      type: string
      enum:
      - IDLE
      - RUNNING
      - AWAITING_CONFIRMATION
    AgentToolCall:
      type: object
      properties:
        id:
          type: string
          nullable: true
        kind:
          $ref: '#/components/schemas/AgentToolCall.Kind'
        tool:
          type: string
        family:
          nullable: true
          allOf:
          - $ref: '#/components/schemas/AgentToolFamily'
        arguments:
          type: object
          additionalProperties:
            type: object
        thinking:
          nullable: true
          allOf:
          - $ref: '#/components/schemas/AgentThinking'
    AgentToolCall.Kind:
      type: string
      enum:
      - PLATFORM
      - AUTHORING
    AgentToolFamily:
      type: string
      enum:
      - READ
      - MUTATE
      - ACT
    AiController.AiProviderResponse:
      type: object
      properties:
        id:
          type: string
        displayName:
          type: string
        isDefault:
          type: boolean
    AiController.FlowGenerationPrompt:
      type: object
      allOf:
      - $ref: '#/components/schemas/FlowGenerationPrompt'
      - type: object
        properties:
          providerId:
            type: string
    ApiAsyncOperationResponse:
      type: object
      properties:
        operationId:
          type: string
          description: The operation identifier used to correlate logs and progress indicators
        totalItems:
          type: integer
          description: The number of domain events submitted for asynchronous processing
          format: int32
      description: Response body returned by batch mutating endpoints that accept the request and schedule processing asynchronously. The caller uses `operationId` to correlate logs and progress indicators; `totalItems` is the count of domain events submitted.
    ApiAutocomplete:
      type: object
      properties:
        q:
          type: string
          nullable: true
        ids:
          type: array
          nullable: true
          items:
            type: string
        existingOnly:
          type: boolean
    ApiChatTurnRequest:
      type: object
      properties:
        prompt:
          type: string
        mode:
          nullable: true
          allOf:
          - $ref: '#/components/schemas/AgentMode'
        additionalContext:
          type: object
          additionalProperties:
            type: object
          nullable: true
        providerId:
          type: string
          nullable: true
      description: |-
        A single chat turn request.


        `additionalContext` is arbitrary, caller-supplied context (e.g. what the user is currently
        looking at) that is rendered into the conversation for this turn only: it is appended at the end of
        the model input and is *not* persisted in the thread's message history.
    ApiConfirmActionRequest:
      type: object
      properties:
        confirmationId:
          type: string
        decision:
          $ref: '#/components/schemas/ApiDecision'
        reason:
          type: string
          nullable: true
        providerId:
          type: string
          nullable: true
    ApiCreateThreadRequest:
      type: object
      properties:
        mode:
          nullable: true
          allOf:
          - $ref: '#/components/schemas/AgentMode'
        title:
          type: string
          nullable: true
    ApiDecision:
      type: string
      enum:
      - APPROVE
      - REJECT
    ApiExecution:
      required:
      - flowId
      - flowRevision
      - id
      - metadata
      - namespace
      - originalId
      - state
      - tenantId
      type: object
      properties:
        tenantId:
          type: string
        id:
          type: string
        namespace:
          type: string
        flowId:
          type: string
        flowRevision:
          type: integer
          format: int32
        taskRunList:
          type: array
          items:
            $ref: '#/components/schemas/ApiTaskRun'
        inputs:
          type: object
          additionalProperties:
            type: object
        labels:
          type: array
          items:
            $ref: '#/components/schemas/Label'
        variables:
          type: object
          additionalProperties:
            type: object
        state:
          $ref: '#/components/schemas/State'
        parentId:
          type: string
        originalId:
          type: string
        trigger:
          $ref: '#/components/schemas/ExecutionTrigger'
        metadata:
          $ref: '#/components/schemas/ExecutionMetadata'
        scheduleDate:
          type: string
          format: date-time
        traceParent:
          type: string
        fixtures:
          type: array
          items:
            $ref: '#/components/schemas/TaskFixture'
        kind:
          $ref: '#/components/schemas/ExecutionKind'
        breakpoints:
          type: array
          items:
            $ref: '#/components/schemas/Breakpoint'
        loopRun:
          $ref: '#/components/schemas/LoopRun'
    ApiLightExecution:
      required:
      - flowId
      - flowRevision
      - id
      - namespace
      - originalId
      - state
      - tenantId
      type: object
      properties:
        tenantId:
          type: string
        id:
          type: string
        namespace:
          type: string
        flowId:
          type: string
        flowRevision:
          type: integer
          format: int32
        inputs:
          type: object
          additionalProperties:
            type: object
        labels:
          type: array
          items:
            $ref: '#/components/schemas/Label'
        state:
          $ref: '#/components/schemas/State'
        parentId:
          type: string
        originalId:
          type: string
        trigger:
          $ref: '#/components/schemas/ExecutionTrigger'
        scheduleDate:
          type: string
          format: date-time
        kind:
          $ref: '#/components/schemas/ExecutionKind'
        loopRun:
          $ref: '#/components/schemas/LoopRun'
    ApiMcpServer:
      required:
      - id
      type: object
      properties:
        id:
          minLength: 1
          pattern: ^[a-z0-9][a-z0-9_-]*
          type: string
          description: Unique identifier of the MCP server.
        description:
          type: string
          description: Human-readable description of the MCP server.
        instructions:
          type: string
          description: Instructions sent to the AI model when using this server.
        serverType:
          description: Visibility of the server.
          allOf:
          - $ref: '#/components/schemas/McpServer.ServerType'
        authType:
          description: Authentication type for private servers.
          allOf:
          - $ref: '#/components/schemas/McpServer.AuthType'
        oauthProvider:
          type: string
          description: OAuth provider key from micronaut.security.oauth2.clients. Required when authType is OAUTH.
        oauthScopesSupported:
          type: array
          description: Scopes advertised in the server's RFC 9728 Protected Resource Metadata document. Only meaningful when authType is OAUTH. When null or empty the field is omitted from the PRM document.
          items:
            type: string
        disabled:
          type: boolean
          description: Whether the MCP server is disabled.
        isDefault:
          type: boolean
          description: Whether this is the default MCP server, auto-provisioned per tenant.
          readOnly: true
        created:
          type: string
          description: Timestamp when the server was created.
          format: date-time
          readOnly: true
        updated:
          type: string
          description: Timestamp when the server was last updated.
          format: date-time
          readOnly: true
      description: |-
        API DTO for MCP server creation, update, and retrieval.


        Decouples the public API contract from the internal McpServer domain object.
        Read-only fields (`isDefault`, `created`, `updated`) are
        populated in responses and ignored in request bodies.
    ApiMessageView:
      type: object
      properties:
        uid:
          type: string
        role:
          $ref: '#/components/schemas/AgentMessageRole'
        type:
          $ref: '#/components/schemas/AgentMessageType'
        content:
          type: string
          nullable: true
        toolCall:
          nullable: true
          allOf:
          - $ref: '#/components/schemas/AgentToolCall'
        toolResult:
          type: object
          additionalProperties:
            type: object
          nullable: true
        draft:
          nullable: true
          allOf:
          - $ref: '#/components/schemas/ArtefactDraft'
        createdAt:
          type: string
          format: date-time
    ApiSecretListResponse_ApiSecretMeta_:
      required:
      - readOnly
      - results
      type: object
      properties:
        readOnly:
          type: boolean
        results:
          type: array
          items:
            $ref: '#/components/schemas/ApiSecretMeta'
        total:
          type: integer
          format: int64
    ApiSecretMeta:
      required:
      - key
      type: object
      properties:
        key:
          type: string
    ApiTaskRun:
      required:
      - id
      - state
      - taskId
      type: object
      properties:
        id:
          type: string
        taskId:
          type: string
        parentTaskRunId:
          type: string
        value:
          type: string
        attempts:
          type: array
          items:
            $ref: '#/components/schemas/TaskRunAttempt'
        assetEmits:
          type: array
          items:
            $ref: '#/components/schemas/AssetsInOut'
        state:
          $ref: '#/components/schemas/State'
        iteration:
          type: integer
          format: int32
        dynamic:
          type: boolean
        forceExecution:
          type: boolean
    ApiThreadDetail:
      type: object
      properties:
        uid:
          type: string
        title:
          type: string
          nullable: true
        mode:
          $ref: '#/components/schemas/AgentMode'
        status:
          $ref: '#/components/schemas/AgentThreadStatus'
        pendingConfirmationId:
          type: string
          nullable: true
        messages:
          type: array
          items:
            $ref: '#/components/schemas/ApiMessageView'
    ApiThreadSummary:
      type: object
      properties:
        uid:
          type: string
        title:
          type: string
          nullable: true
        mode:
          $ref: '#/components/schemas/AgentMode'
        status:
          $ref: '#/components/schemas/AgentThreadStatus'
        createdAt:
          type: string
          format: date-time
        updatedAt:
          type: string
          format: date-time
        lastTurnAt:
          type: string
          format: date-time
          nullable: true
    ApiTriggerAndState:
      required:
      - state
      - trigger
      type: object
      properties:
        trigger:
          $ref: '#/components/schemas/AbstractTrigger'
        state:
          $ref: '#/components/schemas/ApiTriggerState'
      description: API DTO combining a trigger definition with its runtime state.
    ApiTriggerState:
      required:
      - flowId
      - namespace
      - triggerId
      - updatedAt
      type: object
      properties:
        namespace:
          type: string
        flowId:
          type: string
        triggerId:
          type: string
        updatedAt:
          type: string
          format: date-time
        evaluatedAt:
          type: string
          format: date-time
        nextEvaluationDate:
          type: string
          format: date-time
        backfill:
          $ref: '#/components/schemas/Backfill'
        stopAfter:
          type: array
          items:
            $ref: '#/components/schemas/State.Type'
        disabled:
          type: boolean
        sourceDisabled:
          type: boolean
        locked:
          type: boolean
        workerId:
          type: string
        lastTriggeredDate:
          type: string
          format: date-time
        executionId:
          type: string
        kind:
          $ref: '#/components/schemas/TriggerType'
      description: |-
        API DTO for exposing trigger state to the UI.


        Excludes internal scheduler fields (`tenantId`, `vnode`, `lastEventId`). The
        scheduler's `type` is exposed as `kind` to not clash with the trigger definition's
        `type` (the plugin class) when both are merged by API consumers.


        `disabled` is the runtime disable alone; a consumer deciding whether a trigger will fire has
        to read `sourceDisabled` as well, which mirrors the flow definition's own flag.
    ArtefactDraft:
      type: object
      properties:
        draftId:
          type: string
        kind:
          $ref: '#/components/schemas/ArtefactKind'
        yaml:
          type: string
        valid:
          type: boolean
        constraints:
          type: string
          nullable: true
    ArtefactKind:
      type: string
      enum:
      - FLOW
      - DASHBOARD
      - APP
    Asset:
      required:
      - id
      - type
      type: object
      properties:
        namespace:
          maxLength: 150
          minLength: 1
          pattern: ^[a-z0-9][a-z0-9._-]*
          type: string
        id:
          maxLength: 150
          minLength: 1
          pattern: ^[a-zA-Z0-9][a-zA-Z0-9._:-]*
          type: string
        type:
          minLength: 1
          type: string
        displayName:
          type: string
        description:
          type: string
        metadata:
          type: object
          additionalProperties:
            type: object
    AssetFailureBehavior:
      type: string
      enum:
      - IGNORE
      - FAIL
      - WARN
    AssetIdentifier:
      required:
      - id
      type: object
      properties:
        id:
          minLength: 1
          type: string
        type:
          type: string
    AssetsDeclaration:
      type: object
      properties:
        enableAuto:
          description: Whether to auto-register assets referenced dynamically at runtime that are not statically declared in inputs or outputs.
          allOf:
          - $ref: '#/components/schemas/Property_Boolean_'
        inputs:
          description: The assets consumed as inputs.
          allOf:
          - $ref: '#/components/schemas/Property_List_AssetIdentifier__'
        outputs:
          description: The assets produced as outputs.
          allOf:
          - $ref: '#/components/schemas/Property_List_Asset__'
        assetFailureBehavior:
          title: Asset failure behavior
          description: 'Behavior applied to the task state when a declared asset fails to render, emit, or be persisted (e.g. a lock conflict): FAIL escalates it to FAILED, WARN (default) warns it if it would otherwise succeed, IGNORE leaves the state untouched.'
          allOf:
          - $ref: '#/components/schemas/Property_AssetFailureBehavior_'
    AssetsInOut:
      type: object
      properties:
        inputs:
          type: array
          items:
            $ref: '#/components/schemas/AssetIdentifier'
        outputs:
          type: array
          items:
            $ref: '#/components/schemas/Asset'
    Backfill:
      title: A backfill configuration.
      required:
      - start
      type: object
      properties:
        start:
          title: The start date.
          type: string
          format: date-time
        end:
          title: The end date.
          type: string
          format: date-time
        currentDate:
          title: The current date of the backfill being done.
          type: string
          format: date-time
        paused:
          title: Whether the backfill is paused.
          type: boolean
        inputs:
          title: The inputs to pass to the backfilled executions.
          type: object
          additionalProperties:
            type: object
        labels:
          title: The labels to pass to the backfilled executions.
          type: array
          items:
            $ref: '#/components/schemas/Label'
        previousNextExecutionDate:
          title: The nextExecutionDate before the backfill was created.
          type: string
          format: date-time
    BasicAuthCredentials:
      type: object
      properties:
        uid:
          type: string
        username:
          type: string
        password:
          type: string
        currentPassword:
          type: string
    BlueprintController.ApiBlueprintItem:
      type: object
      properties:
        id:
          type: string
        title:
          type: string
        description:
          type: string
        includedTasks:
          type: array
          items:
            type: string
        tags:
          type: array
          items:
            type: string
        publishedAt:
          type: string
          format: date-time
    BlueprintController.ApiBlueprintItemWithSource:
      type: object
      allOf:
      - $ref: '#/components/schemas/BlueprintController.ApiBlueprintItem'
      - type: object
        properties:
          source:
            type: string
          kind:
            $ref: '#/components/schemas/BlueprintController.Kind'
    BlueprintController.ApiBlueprintTagItem:
      type: object
      properties:
        id:
          type: string
        name:
          type: string
        publishedAt:
          type: string
          format: date-time
    BlueprintController.Kind:
      type: string
      enum:
      - APP
      - DASHBOARD
      - FLOW
    Breakpoint:
      required:
      - id
      type: object
      properties:
        id:
          type: string
        value:
          type: string
          nullable: true
    BulkResponse:
      type: object
      properties:
        count:
          type: integer
          description: The number of items successfully processed
          format: int32
    Cache:
      required:
      - enabled
      type: object
      properties:
        enabled:
          type: boolean
        ttl:
          type: string
    ChartFiltersOverrides:
      type: object
      properties:
        startDate:
          type: string
          format: date-time
        endDate:
          type: string
          format: date-time
        pageSize:
          type: integer
          format: int32
        pageNumber:
          type: integer
          format: int32
        namespace:
          type: string
        labels:
          type: object
          additionalProperties:
            type: string
        filters:
          type: array
          items:
            $ref: '#/components/schemas/QueryFilter'
    Chart_ChartOption_:
      required:
      - id
      - type
      type: object
      properties:
        id:
          minLength: 1
          pattern: ^[a-zA-Z0-9][a-zA-Z0-9_-]*
          type: string
        type:
          minLength: 1
          pattern: ^[A-Za-z_$][A-Za-z0-9_$]*(\.[A-Za-z_$][A-Za-z0-9_$]*)*$
          type: string
        chartOptions:
          type: object
    Check:
      required:
      - message
      - when
      type: object
      properties:
        condition:
          type: string
          deprecated: true
        when:
          minLength: 1
          type: string
        message:
          minLength: 1
          type: string
        style:
          $ref: '#/components/schemas/Check.Style'
        behavior:
          $ref: '#/components/schemas/Check.Behavior'
    Check.Behavior:
      type: string
      enum:
      - BLOCK_EXECUTION
      - FAIL_EXECUTION
      - CREATE_EXECUTION
    Check.Style:
      type: string
      enum:
      - ERROR
      - SUCCESS
      - WARNING
      - INFO
    Concurrency:
      required:
      - behavior
      - limit
      type: object
      properties:
        limit:
          minimum: 1
          type: integer
          format: int32
        behavior:
          $ref: '#/components/schemas/Concurrency.Behavior'
    Concurrency.Behavior:
      type: string
      enum:
      - QUEUE
      - CANCEL
      - FAIL
    ConcurrencyLimit:
      required:
      - flowId
      - namespace
      - tenantId
      type: object
      properties:
        tenantId:
          type: string
        namespace:
          type: string
        flowId:
          type: string
        running:
          minimum: 0
          type: integer
          format: int32
    CursorOrOffsetPagedResults_LogEntry_:
      required:
      - results
      - type
      type: object
      properties:
        results:
          type: array
          items:
            $ref: '#/components/schemas/LogEntry'
        total:
          type: integer
          description: Exact total row count --- present when the store can compute it (offset mode), omitted when it can't (cursor mode).
          format: int64
        type:
          description: 'Pagination mode of this response: PaginationType#OFFSET (with an exact `total`) or PaginationType#CURSOR (forward-only, no `total`).'
          allOf:
          - $ref: '#/components/schemas/PaginationType'
        nextCursor:
          type: string
          description: Opaque token to fetch the page that continues after this one; only present in cursor mode. Cursor pagination is forward-only (there is no "previous" --- external log stores don't offer one). A non-empty page always carries a `nextCursor`, so the client keeps paging until it gets back an empty page (not until `nextCursor` is null).
      description: 'Paged response for stores that may not know their exact row count (e.g. an external log store): `total` is only present when the backing store can compute it. Kept as a separate type from PagedResults rather than a shared `total` field: only this path can legitimately omit `total`, so the OpenAPI schema (and generated SDK types) can still mark `total` as required on every other, always-countable, endpoint. When `total` is absent, pagination falls back to an opaque cursor (`type`/`nextCursor`) since there is no page count to offset from.'
    DailyExecutionStatistics:
      required:
      - duration
      - startDate
      type: object
      properties:
        startDate:
          type: string
          format: date-time
        duration:
          $ref: '#/components/schemas/DailyExecutionStatistics.Duration'
        taskRunsDuration:
          $ref: '#/components/schemas/DailyExecutionStatistics.Duration'
        executionCounts:
          type: object
          properties:
            CREATED:
              type: integer
              format: int64
            SUBMITTED:
              type: integer
              format: int64
            RUNNING:
              type: integer
              format: int64
            PAUSED:
              type: integer
              format: int64
            RESTARTED:
              type: integer
              format: int64
            KILLING:
              type: integer
              format: int64
            SUCCESS:
              type: integer
              format: int64
            WARNING:
              type: integer
              format: int64
            FAILED:
              type: integer
              format: int64
            KILLED:
              type: integer
              format: int64
            CANCELLED:
              type: integer
              format: int64
            QUEUED:
              type: integer
              format: int64
            RETRYING:
              type: integer
              format: int64
            RETRIED:
              type: integer
              format: int64
            SKIPPED:
              type: integer
              format: int64
            BREAKPOINT:
              type: integer
              format: int64
            RESUBMITTED:
              type: integer
              format: int64
        groupBy:
          type: string
    DailyExecutionStatistics.Duration:
      required:
      - avg
      - count
      - max
      - min
      - sum
      type: object
      properties:
        min:
          type: string
        avg:
          type: string
        max:
          type: string
        sum:
          type: string
        count:
          type: integer
          format: int64
    DashboardController.DashboardResponse:
      required:
      - deleted
      - id
      - title
      type: object
      properties:
        tenantId:
          type: string
        id:
          minLength: 1
          type: string
        title:
          minLength: 1
          type: string
        description:
          type: string
        timeWindow:
          $ref: '#/components/schemas/TimeWindow'
        charts:
          type: array
          items:
            $ref: '#/components/schemas/Chart_ChartOption_'
        deleted:
          type: boolean
        created:
          type: string
          format: date-time
        updated:
          type: string
          format: date-time
        sourceCode:
          type: string
    DashboardController.PreviewRequest:
      required:
      - chart
      type: object
      properties:
        chart:
          minLength: 1
          type: string
        globalFilter:
          nullable: true
          allOf:
          - $ref: '#/components/schemas/ChartFiltersOverrides'
    DependsOn:
      type: object
      properties:
        inputs:
          type: array
          nullable: true
          items:
            type: string
        condition:
          type: string
          nullable: true
    DocumentationWithSchema:
      type: object
      properties:
        markdown:
          type: string
        schema:
          $ref: '#/components/schemas/PluginSchema'
    EditionProvider.Edition:
      type: string
      enum:
      - OSS
      - EE
    Event_ExecutionStatusEvent_:
      type: object
      properties:
        data:
          $ref: '#/components/schemas/ExecutionStatusEvent'
        id:
          type: string
        name:
          type: string
        comment:
          type: string
        retry:
          type: string
    Event_Execution_:
      type: object
      properties:
        data:
          $ref: '#/components/schemas/Execution'
        id:
          type: string
        name:
          type: string
        comment:
          type: string
        retry:
          type: string
    Event_FollowLogEvent_:
      type: object
      properties:
        data:
          $ref: '#/components/schemas/FollowLogEvent'
        id:
          type: string
        name:
          type: string
        comment:
          type: string
        retry:
          type: string
    Event_Object_:
      type: object
      properties:
        data:
          type: object
        id:
          type: string
        name:
          type: string
        comment:
          type: string
        retry:
          type: string
    ExecutableTask.SubflowId:
      type: object
      properties:
        namespace:
          type: string
        flowId:
          type: string
        revision:
          type: integer
          format: int32
          nullable: true
    Execution:
      required:
      - deleted
      - flowId
      - flowRevision
      - id
      - metadata
      - namespace
      - originalId
      - state
      type: object
      properties:
        labels:
          type: array
          items:
            $ref: '#/components/schemas/Label'
        id:
          type: string
        namespace:
          type: string
        flowId:
          type: string
        flowRevision:
          type: integer
          format: int32
        taskRunList:
          type: array
          items:
            $ref: '#/components/schemas/TaskRun'
        inputs:
          type: object
        variables:
          type: object
        state:
          $ref: '#/components/schemas/State'
        parentId:
          type: string
        originalId:
          type: string
        trigger:
          $ref: '#/components/schemas/ExecutionTrigger'
        deleted:
          type: boolean
        metadata:
          $ref: '#/components/schemas/ExecutionMetadata'
        scheduleDate:
          type: string
          format: date-time
          nullable: true
        traceParent:
          type: string
        fixtures:
          type: array
          nullable: true
          items:
            $ref: '#/components/schemas/TaskFixture'
        kind:
          nullable: true
          allOf:
          - $ref: '#/components/schemas/ExecutionKind'
        breakpoints:
          type: array
          nullable: true
          items:
            $ref: '#/components/schemas/Breakpoint'
        loopRun:
          nullable: true
          allOf:
          - $ref: '#/components/schemas/LoopRun'
    ExecutionController.ApiValidateExecutionInputsResponse:
      required:
      - checks
      - id
      - inputs
      - namespace
      type: object
      properties:
        id:
          type: string
        namespace:
          type: string
        inputs:
          type: array
          items:
            $ref: '#/components/schemas/ExecutionController.ApiValidateExecutionInputsResponse.ApiInputAndValue'
        checks:
          type: array
          items:
            $ref: '#/components/schemas/ExecutionController.ApiValidateExecutionInputsResponse.ApiCheckFailure'
    ExecutionController.ApiValidateExecutionInputsResponse.ApiCheckFailure:
      required:
      - behavior
      - message
      - style
      type: object
      properties:
        message:
          type: string
        style:
          $ref: '#/components/schemas/Check.Style'
        behavior:
          $ref: '#/components/schemas/Check.Behavior'
    ExecutionController.ApiValidateExecutionInputsResponse.ApiInputAndValue:
      required:
      - errors
      - input
      type: object
      properties:
        input:
          $ref: '#/components/schemas/Input_Object_'
        value:
          type: object
        enabled:
          type: boolean
        isDefault:
          type: boolean
        errors:
          type: array
          items:
            $ref: '#/components/schemas/ExecutionController.ApiValidateExecutionInputsResponse.ApiInputError'
    ExecutionController.ApiValidateExecutionInputsResponse.ApiInputError:
      required:
      - message
      type: object
      properties:
        message:
          type: string
        renderError:
          type: boolean
    ExecutionController.EvalResult:
      type: object
      properties:
        result:
          type: string
        error:
          type: string
    ExecutionController.ExecutionAverageDuration:
      type: object
      properties:
        avgDurationMs:
          type: integer
          description: the average duration in milliseconds, or `null` when the flow has no terminated execution in the lookback window.
          format: int64
          nullable: true
        count:
          type: integer
          description: the number of executions the average was computed from.
          format: int64
      description: The average duration of the recent executions of a flow.
    ExecutionController.ExecutionResponse:
      required:
      - deleted
      type: object
      allOf:
      - $ref: '#/components/schemas/Execution'
      - type: object
        properties:
          deleted:
            type: boolean
          url:
            type: string
            format: uri
    ExecutionController.LastExecutionResponse:
      required:
      - flowId
      - id
      - namespace
      - startDate
      - status
      type: object
      properties:
        id:
          type: string
        flowId:
          type: string
        namespace:
          type: string
        startDate:
          type: string
          format: date-time
        status:
          $ref: '#/components/schemas/State.Type'
    ExecutionController.SetLabelsByIdsRequest:
      required:
      - executionLabels
      - executionsId
      type: object
      properties:
        executionsId:
          type: array
          items:
            type: string
        executionLabels:
          type: array
          items:
            $ref: '#/components/schemas/Label'
    ExecutionController.StateRequest:
      required:
      - state
      - taskRunId
      type: object
      properties:
        taskRunId:
          type: string
        state:
          $ref: '#/components/schemas/State.Type'
    ExecutionKind:
      type: string
      enum:
      - NORMAL
      - TEST
      - PLAYGROUND
      - LOOP
    ExecutionMetadata:
      required:
      - originalCreatedDate
      type: object
      properties:
        attemptNumber:
          type: integer
          format: int32
        originalCreatedDate:
          type: string
          format: date-time
        concurrencyScopes:
          type: array
          items:
            type: string
        executionDepth:
          type: integer
          format: int32
    ExecutionRepositoryInterface.DateFilter:
      type: string
      enum:
      - START_DATE
      - END_DATE
      - START_OR_END_DATE
    ExecutionRepositoryInterface.FlowFilter:
      required:
      - id
      - namespace
      type: object
      properties:
        namespace:
          type: string
        id:
          type: string
    ExecutionStatusEvent:
      required:
      - executionId
      - flowId
      - namespace
      - state
      - tenantId
      type: object
      properties:
        executionId:
          type: string
        tenantId:
          type: string
        namespace:
          type: string
        flowId:
          type: string
        state:
          $ref: '#/components/schemas/State'
    ExecutionTrigger:
      required:
      - id
      - type
      type: object
      properties:
        id:
          type: string
        type:
          type: string
        variables:
          type: object
          additionalProperties: true
        logFile:
          type: string
          format: uri
    ExecutionUsage:
      type: object
      properties:
        dailyExecutionsCount:
          type: array
          items:
            $ref: '#/components/schemas/DailyExecutionStatistics'
    ExportFormat:
      type: string
      enum:
      - CSV
      - ION
    ExpressionContext:
      type: object
      properties:
        categories:
          type: object
          properties:
            taskOutputs:
              type: array
            executionContext:
              type: array
            inputs:
              type: array
            variables:
              type: array
            secrets:
              type: array
            kvPairs:
              type: array
            namespaceFiles:
              type: array
            filters:
              type: array
            functions:
              type: array
            appContext:
              type: array
    ExpressionController.RenderExpressionRequest:
      required:
      - expressions
      type: object
      properties:
        expressions:
          maxItems: 500
          minItems: 1
          type: array
          description: The raw Pebble expressions to render
          items:
            type: string
        executionId:
          type: string
          description: Resolve against this execution's context
          nullable: true
        namespace:
          type: string
          description: Resolve against this flow's context (with flowId)
          nullable: true
        flowId:
          type: string
          description: Resolve against this flow's context (with namespace)
          nullable: true
        flow:
          type: string
          description: Resolve against this flow source's context (YAML)
          nullable: true
    ExpressionController.RenderedExpressions:
      type: object
      properties:
        rendered:
          type: object
          additionalProperties:
            type: string
          description: Rendered values keyed by their raw expression
    FileAttributes:
      type: object
      properties:
        fileName:
          type: string
        lastModifiedTime:
          type: integer
          format: int64
        creationTime:
          type: integer
          format: int64
        type:
          $ref: '#/components/schemas/FileAttributes.FileType'
        size:
          type: integer
          format: int64
        metadata:
          type: object
          additionalProperties:
            type: string
    FileAttributes.FileType:
      type: string
      enum:
      - File
      - Directory
      x-enum-varnames:
      - File
      - Directory
    FileFormat:
      type: string
      description: Requested format for a file download from execution outputs.
      enum:
      - RAW
      - JSONL
      x-enum-descriptions:
      - Return the raw file bytes as-is (default).
      - Convert Ion records to JSON Lines (one compact JSON object per line, `.jsonl`).
    FileMetas:
      required:
      - size
      type: object
      properties:
        size:
          type: integer
          format: int64
    Flow:
      required:
      - deleted
      - disabled
      - draft
      - id
      - namespace
      - tasks
      type: object
      allOf:
      - $ref: '#/components/schemas/AbstractFlow'
      - type: object
        properties:
          id:
            maxLength: 100
            minLength: 1
            pattern: ^[a-zA-Z0-9][a-zA-Z0-9._-]*
            type: string
          namespace:
            maxLength: 150
            minLength: 1
            pattern: ^[a-z0-9][a-z0-9._-]*
            type: string
          revision:
            minimum: 1
            type: integer
            format: int32
          description:
            type: string
          inputs:
            type: array
            items:
              $ref: '#/components/schemas/Input_Object_'
          disabled:
            title: Whether the flow is disabled.
            type: boolean
            description: 'A disabled flow does not run: its triggers are paused and new executions are rejected.'
          draft:
            type: boolean
            description: Whether this flow revision is a draft. Draft revisions are skipped when an execution starts without an explicit revision (webhooks, schedules, subflows, manual triggers). Executions can still target a draft by passing the revision explicitly.
          labels:
            description: Labels as a list of Label (key/value pairs) or as a map of string to string.
            oneOf:
            - $ref: '#/components/schemas/Map_Object.Object_'
          workerSelector:
            description: Routing requirements (tags + fallback) for this flow.
            allOf:
            - $ref: '#/components/schemas/WorkerSelector'
          deleted:
            type: boolean
          finally:
            type: array
            items:
              $ref: '#/components/schemas/Task'
          variables:
            type: object
          tasks:
            minItems: 1
            type: array
            additionalProperties: true
            items:
              $ref: '#/components/schemas/Task'
          errors:
            type: array
            items:
              $ref: '#/components/schemas/Task'
          afterExecution:
            type: array
            items:
              $ref: '#/components/schemas/Task'
          triggers:
            type: array
            items:
              $ref: '#/components/schemas/AbstractTrigger'
          policyRefs:
            title: References to governance policies (Enterprise Edition).
            type: array
            description: 'Identifiers of `enforcement: REFERENCE` policies to attach to this flow, resolved within the flow''s tenant/namespace scope chain. Enterprise Edition only; parsed but ignored in the open-source edition.'
            items:
              type: string
          concurrency:
            title: Concurrency
            description: Limits the number of concurrent executions of the flow.
            allOf:
            - $ref: '#/components/schemas/Concurrency'
          outputs:
            title: Output values available and exposes to other flows.
            type: array
            description: Output values make information about the execution of your Flow available and expose for other Kestra flows to use. Output values are similar to return values in programming languages.
            items:
              $ref: '#/components/schemas/Output'
          retry:
            title: Retry
            type: object
            description: Retry policy applied when the flow fails.
          sla:
            type: array
            items:
              $ref: '#/components/schemas/SLA'
          checks:
            title: Conditions evaluated before the flow is executed.
            type: array
            description: A list of conditions that are evaluated before the flow is executed.  If no checks are defined, the flow executes normally.
            items:
              $ref: '#/components/schemas/Check'
          quotas:
            title: Quotas evaluated before the flow is executed (EE only).
            type: array
            description: |-
              A list of quotas that are evaluated before the flow is executed. If no quotas are defined, the flow executes normally.
              Quotas can also be defined at the namespace and tenant level.
            items:
              $ref: '#/components/schemas/Quota'
    FlowController.FlowWithDeprecatedTasks:
      type: object
      properties:
        namespace:
          type: string
        flowId:
          type: string
        revision:
          type: integer
          format: int32
        deprecatedTasks:
          type: array
          items:
            $ref: '#/components/schemas/FlowService.TaskDeprecation'
    FlowForExecution:
      required:
      - deleted
      - disabled
      - draft
      - id
      - namespace
      - tasks
      type: object
      allOf:
      - $ref: '#/components/schemas/AbstractFlow'
      - type: object
        properties:
          id:
            maxLength: 100
            minLength: 1
            pattern: ^[a-zA-Z0-9][a-zA-Z0-9._-]*
            type: string
          namespace:
            maxLength: 150
            minLength: 1
            pattern: ^[a-z0-9][a-z0-9._-]*
            type: string
          revision:
            minimum: 1
            type: integer
            format: int32
          description:
            type: string
          inputs:
            type: array
            items:
              $ref: '#/components/schemas/Input_Object_'
          outputs:
            type: array
            items:
              $ref: '#/components/schemas/Output'
          disabled:
            title: Whether the flow is disabled.
            type: boolean
            description: 'A disabled flow does not run: its triggers are paused and new executions are rejected.'
          draft:
            type: boolean
            description: Whether this flow revision is a draft. Draft revisions are skipped when an execution starts without an explicit revision (webhooks, schedules, subflows, manual triggers). Executions can still target a draft by passing the revision explicitly.
          labels:
            description: Labels as a list of Label (key/value pairs) or as a map of string to string.
            oneOf:
            - $ref: '#/components/schemas/Map_Object.Object_'
          variables:
            type: object
          workerSelector:
            description: Routing requirements (tags + fallback) for this flow.
            allOf:
            - $ref: '#/components/schemas/WorkerSelector'
          deleted:
            type: boolean
          tasks:
            minItems: 1
            type: array
            items:
              $ref: '#/components/schemas/TaskForExecution'
          errors:
            type: array
            items:
              $ref: '#/components/schemas/TaskForExecution'
          finally:
            type: array
            items:
              $ref: '#/components/schemas/TaskForExecution'
          afterExecution:
            type: array
            items:
              $ref: '#/components/schemas/TaskForExecution'
          triggers:
            type: array
            items:
              $ref: '#/components/schemas/AbstractTriggerForExecution'
    FlowGenerationPrompt:
      required:
      - conversationId
      - userPrompt
      type: object
      properties:
        conversationId:
          type: string
        userPrompt:
          type: string
        yaml:
          type: string
        namespace:
          type: string
    FlowGraph:
      type: object
      properties:
        nodes:
          type: array
          items:
            $ref: '#/components/schemas/AbstractGraph'
        edges:
          type: array
          items:
            $ref: '#/components/schemas/FlowGraph.Edge'
        clusters:
          type: array
          items:
            $ref: '#/components/schemas/FlowGraph.Cluster'
        flowables:
          type: array
          items:
            type: string
    FlowGraph.Cluster:
      type: object
      properties:
        cluster:
          $ref: '#/components/schemas/AbstractGraph'
        nodes:
          type: array
          items:
            type: string
        parents:
          type: array
          items:
            type: string
        start:
          type: string
        end:
          type: string
    FlowGraph.Edge:
      type: object
      properties:
        source:
          type: string
        target:
          type: string
        relation:
          $ref: '#/components/schemas/Relation'
    FlowId:
      type: object
      properties:
        id:
          type: string
        namespace:
          type: string
        revision:
          type: integer
          format: int32
        tenantId:
          type: string
    FlowInterface:
      type: object
      allOf:
      - $ref: '#/components/schemas/FlowId'
      - $ref: '#/components/schemas/SoftDeletable_FlowInterface_'
      - $ref: '#/components/schemas/TenantInterface'
      - type: object
        properties:
          description:
            type: string
          disabled:
            type: boolean
          deleted:
            type: boolean
          draft:
            type: boolean
          labels:
            type: array
            items:
              $ref: '#/components/schemas/Label'
          inputs:
            type: array
            items:
              $ref: '#/components/schemas/Input_Object_'
          outputs:
            type: array
            items:
              $ref: '#/components/schemas/Output'
          variables:
            type: object
            additionalProperties:
              type: object
          workerSelector:
            $ref: '#/components/schemas/WorkerSelector'
          concurrency:
            $ref: '#/components/schemas/Concurrency'
          quotas:
            type: array
            items:
              $ref: '#/components/schemas/Quota'
          sla:
            type: array
            items:
              $ref: '#/components/schemas/SLA'
          source:
            type: string
    FlowNode:
      required:
      - uid
      type: object
      properties:
        uid:
          type: string
        namespace:
          type: string
        id:
          type: string
    FlowRelation:
      type: string
      enum:
      - FLOW_TASK
      - FLOW_TRIGGER
      - SUBFLOW_FUNCTION
    FlowService.TaskDeprecation:
      type: object
      properties:
        taskId:
          type: string
        taskType:
          type: string
        replacement:
          type: string
          nullable: true
    FlowTopologyGraph:
      type: object
      properties:
        nodes:
          type: array
          items:
            $ref: '#/components/schemas/FlowNode'
        edges:
          type: array
          items:
            $ref: '#/components/schemas/FlowTopologyGraph.Edge'
    FlowTopologyGraph.Edge:
      type: object
      properties:
        source:
          type: string
        target:
          type: string
        relation:
          $ref: '#/components/schemas/FlowRelation'
    FlowUsage:
      type: object
      properties:
        count:
          type: integer
          format: int64
        namespacesCount:
          type: integer
          format: int64
        taskTypeCount:
          type: object
          additionalProperties:
            type: integer
            format: int64
        triggerTypeCount:
          type: object
          additionalProperties:
            type: integer
            format: int64
        taskRunnerTypeCount:
          type: object
          additionalProperties:
            type: integer
            format: int64
        inputTypeCount:
          type: object
          additionalProperties:
            type: integer
            format: int64
        hasInputsCount:
          type: integer
          format: int64
        hasOutputsCount:
          type: integer
          format: int64
        hasLabelsCount:
          type: integer
          format: int64
        hasVariablesCount:
          type: integer
          format: int64
        hasWorkerSelectorCount:
          type: integer
          format: int64
        hasErrorsCount:
          type: integer
          format: int64
        hasFinallyCount:
          type: integer
          format: int64
        hasAfterExecutionCount:
          type: integer
          format: int64
        hasTriggersCount:
          type: integer
          format: int64
        hasConcurrencyCount:
          type: integer
          format: int64
        hasRetryCount:
          type: integer
          format: int64
        hasSlaCount:
          type: integer
          format: int64
        hasChecksCount:
          type: integer
          format: int64
        hasQuotasCount:
          type: integer
          format: int64
        tasks:
          $ref: '#/components/schemas/FlowUsage.TaskUsage'
        triggers:
          $ref: '#/components/schemas/FlowUsage.TriggerUsage'
    FlowUsage.TaskUsage:
      type: object
      properties:
        hasRetryCount:
          type: integer
          format: int64
        hasTimeoutCount:
          type: integer
          format: int64
        hasWorkerSelectorCount:
          type: integer
          format: int64
        hasAllowFailureCount:
          type: integer
          format: int64
        hasLogToFileCount:
          type: integer
          format: int64
        hasRunIfCount:
          type: integer
          format: int64
        hasAllowWarningCount:
          type: integer
          format: int64
        hasCacheCount:
          type: integer
          format: int64
        hasAssetsCount:
          type: integer
          format: int64
        hasErrorsCount:
          type: integer
          format: int64
        hasFinallyCount:
          type: integer
          format: int64
    FlowUsage.TriggerUsage:
      type: object
      properties:
        hasWhenCount:
          type: integer
          format: int64
        hasWorkerSelectorCount:
          type: integer
          format: int64
        hasLabelsCount:
          type: integer
          format: int64
        hasStopAfterCount:
          type: integer
          format: int64
        hasLogToFileCount:
          type: integer
          format: int64
        hasFailOnErrorCount:
          type: integer
          format: int64
        hasAllowConcurrentCount:
          type: integer
          format: int64
        hasAssetsCount:
          type: integer
          format: int64
    FlowWithSource:
      required:
      - deleted
      - disabled
      - draft
      - id
      - namespace
      type: object
      allOf:
      - $ref: '#/components/schemas/Flow'
      - $ref: '#/components/schemas/AbstractFlow'
      - type: object
        properties:
          id:
            maxLength: 100
            minLength: 1
            pattern: ^[a-zA-Z0-9][a-zA-Z0-9._-]*
            type: string
          namespace:
            maxLength: 150
            minLength: 1
            pattern: ^[a-z0-9][a-z0-9._-]*
            type: string
          revision:
            minimum: 1
            type: integer
            format: int32
          description:
            type: string
          inputs:
            type: array
            items:
              $ref: '#/components/schemas/Input_Object_'
          disabled:
            title: Whether the flow is disabled.
            type: boolean
            description: 'A disabled flow does not run: its triggers are paused and new executions are rejected.'
          draft:
            type: boolean
            description: Whether this flow revision is a draft. Draft revisions are skipped when an execution starts without an explicit revision (webhooks, schedules, subflows, manual triggers). Executions can still target a draft by passing the revision explicitly.
          labels:
            description: Labels as a list of Label (key/value pairs) or as a map of string to string.
            oneOf:
            - $ref: '#/components/schemas/Map_Object.Object_'
          workerSelector:
            description: Routing requirements (tags + fallback) for this flow.
            allOf:
            - $ref: '#/components/schemas/WorkerSelector'
          deleted:
            type: boolean
          variables:
            type: object
          concurrency:
            title: Concurrency
            description: Limits the number of concurrent executions of the flow.
            allOf:
            - $ref: '#/components/schemas/Concurrency'
          outputs:
            title: Output values available and exposes to other flows.
            type: array
            description: Output values make information about the execution of your Flow available and expose for other Kestra flows to use. Output values are similar to return values in programming languages.
            items:
              $ref: '#/components/schemas/Output'
          sla:
            type: array
            items:
              $ref: '#/components/schemas/SLA'
          quotas:
            title: Quotas evaluated before the flow is executed (EE only).
            type: array
            description: |-
              A list of quotas that are evaluated before the flow is executed. If no quotas are defined, the flow executes normally.
              Quotas can also be defined at the namespace and tenant level.
            items:
              $ref: '#/components/schemas/Quota'
          source:
            type: string
    FollowLogEvent:
      type: object
      properties:
        tenantId:
          type: string
        namespace:
          type: string
        flowId:
          type: string
        taskId:
          type: string
        executionId:
          type: string
        taskRunId:
          type: string
        attemptNumber:
          type: integer
          format: int32
        triggerId:
          type: string
        timestamp:
          type: string
          format: date-time
        level:
          $ref: '#/components/schemas/Level'
        thread:
          type: string
        message:
          type: string
        executionKind:
          $ref: '#/components/schemas/ExecutionKind'
        progress:
          type: string
    IdWithNamespace:
      type: object
      properties:
        namespace:
          type: string
        id:
          type: string
    InputType:
      type: object
      properties:
        type:
          type: string
        cls:
          type: string
    Input_Object_:
      required:
      - id
      - type
      type: object
      properties:
        id:
          title: The ID of the input.
          minLength: 1
          pattern: ^[a-zA-Z0-9][.a-zA-Z0-9_-]*
          type: string
        type:
          title: The type of the input.
          allOf:
          - $ref: '#/components/schemas/Type'
        description:
          title: The description of the input.
          type: string
        dependsOn:
          title: The dependencies of the input.
          allOf:
          - $ref: '#/components/schemas/DependsOn'
        required:
          title: Whether the input is required.
          type: boolean
        defaults:
          title: The default value to use if no value is specified.
          allOf:
          - $ref: '#/components/schemas/Property_Object_'
        prefill:
          title: The suggested value for the input.
          description: Optional UI hint for pre-filling the input. Cannot be used together with a default value.
          allOf:
          - $ref: '#/components/schemas/Property_Object_'
        displayName:
          title: The display name of the input.
          type: string
    KVController.ApiDeleteBulkRequest:
      type: object
      properties:
        keys:
          type: array
          items:
            type: string
      description: API Request for the bulk-delete operation.
    KVController.ApiDeleteBulkResponse:
      type: object
      properties:
        keys:
          type: array
          items:
            type: string
      description: API Response for the bulk-delete operation.
    KVController.KvDetail:
      type: object
      properties:
        type:
          $ref: '#/components/schemas/KVType'
        value:
          type: object
        revision:
          type: integer
          format: int32
        updated:
          type: string
          format: date-time
    KVEntry:
      type: object
      properties:
        namespace:
          type: string
        key:
          type: string
        revision:
          type: integer
          format: int32
        description:
          type: string
          nullable: true
        creationDate:
          type: string
          format: date-time
        updateDate:
          type: string
          format: date-time
        expirationDate:
          type: string
          format: date-time
          nullable: true
    KVType:
      type: string
      enum:
      - STRING
      - NUMBER
      - BOOLEAN
      - DATETIME
      - DATE
      - DURATION
      - JSON
    Label:
      required:
      - key
      - value
      type: object
      properties:
        key:
          minLength: 1
          pattern: ^[\p{Ll}][\p{L}0-9._-]*$
          type: string
          x-pattern-message: Invalid label key. A valid key contains only lowercase letters numbers hyphens (-) underscores (_) or periods (.) and must begin with a lowercase letter.
        value:
          minLength: 1
          type: string
      description: A key/value pair that can be attached to a Flow or Execution. Labels are often used to organize and categorize objects.
    Level:
      type: string
      enum:
      - ERROR
      - WARN
      - INFO
      - DEBUG
      - TRACE
    LogEntry:
      required:
      - flowId
      - namespace
      type: object
      properties:
        namespace:
          type: string
        flowId:
          type: string
        taskId:
          type: string
          nullable: true
        executionId:
          type: string
          nullable: true
        taskRunId:
          type: string
          nullable: true
        attemptNumber:
          type: integer
          format: int32
          nullable: true
        triggerId:
          type: string
          nullable: true
        timestamp:
          type: string
          format: date-time
        level:
          $ref: '#/components/schemas/Level'
        thread:
          type: string
        message:
          type: string
        executionKind:
          nullable: true
          allOf:
          - $ref: '#/components/schemas/ExecutionKind'
        progress:
          type: string
          nullable: true
    LoopRun:
      type: object
      properties:
        parent:
          $ref: '#/components/schemas/Execution'
        taskId:
          type: string
        taskRunId:
          type: string
        index:
          type: integer
          format: int32
        key:
          type: string
          nullable: true
        value:
          type: string
        parents:
          type: array
          items:
            $ref: '#/components/schemas/LoopRun.Parent'
    LoopRun.Parent:
      type: object
      properties:
        index:
          type: integer
          format: int32
        key:
          type: string
          nullable: true
        value:
          type: string
    Map_Object.Object_:
      type: object
      properties:
        empty:
          type: boolean
    McpServer.AuthType:
      type: string
      description: Authentication type for private servers.
      enum:
      - BASIC
      - API_TOKEN
      - OAUTH
    McpServer.ServerType:
      type: string
      description: Visibility of the server.
      enum:
      - PRIVATE
      - PUBLIC
    McpServerController.ApiMcpTool:
      type: object
      properties:
        toolName:
          type: string
          description: Unique MCP tool identifier (the trigger's `toolName`). This is the name AI agents use to invoke the tool.
        triggerId:
          type: string
          description: Trigger id within the flow (the `id` field of the McpToolTrigger). Distinct from `toolName`.
        title:
          type: string
          description: Human-readable display title shown to AI agents.
        description:
          type: string
          description: Description of what the tool does and when an AI agent should call it.
        annotations:
          description: MCP tool behavioural annotations.
          allOf:
          - $ref: '#/components/schemas/McpServerController.ApiMcpTool.Annotations'
        namespace:
          type: string
          description: Namespace of the flow that defines this tool.
        flowId:
          type: string
          description: Id of the flow that defines this tool.
        flowRevision:
          type: integer
          description: Revision of the flow that defines this tool.
          format: int32
        disabled:
          type: boolean
          description: Whether this tool is currently disabled (trigger disabled or flow disabled).
      description: 'API DTO for a single tool exposed by an MCP server. A tool is the projection of an McpToolTrigger on a flow: one trigger emits one tool. Carries the MCP-facing identifiers/metadata plus the originating flow location so the admin UI can cross-link to the flow that defines it.'
    McpServerController.ApiMcpTool.Annotations:
      type: object
      properties:
        readOnly:
          type: boolean
        openWorld:
          type: boolean
        destructive:
          type: boolean
        idempotent:
          type: boolean
        returnDirect:
          type: boolean
      description: MCP tool behavioural annotations.
    Metric:
      type: object
      properties:
        name:
          type: string
        type:
          type: string
        description:
          type: string
        baseUnit:
          type: string
        tags:
          type: array
          items:
            $ref: '#/components/schemas/Metric.Tag'
        value:
          type: number
    Metric.Tag:
      type: object
      properties:
        key:
          type: string
        value:
          type: string
    MetricAggregation:
      required:
      - date
      - name
      type: object
      properties:
        name:
          type: string
        value:
          type: number
          format: double
        date:
          type: string
          format: date-time
    MetricAggregations:
      required:
      - aggregations
      - groupBy
      type: object
      properties:
        groupBy:
          type: string
        aggregations:
          type: array
          items:
            $ref: '#/components/schemas/MetricAggregation'
    MetricEntry:
      required:
      - flowId
      - name
      - namespace
      - timestamp
      - type
      - value
      type: object
      properties:
        namespace:
          type: string
        flowId:
          type: string
        taskId:
          type: string
          nullable: true
        executionId:
          type: string
          nullable: true
        taskRunId:
          type: string
          nullable: true
        type:
          type: string
        name:
          type: string
        value:
          type: number
          format: double
        timestamp:
          type: string
          format: date-time
        tags:
          type: object
          additionalProperties:
            type: string
          nullable: true
        executionKind:
          nullable: true
          allOf:
          - $ref: '#/components/schemas/ExecutionKind'
    MiscController.ApiUsage:
      type: object
      properties:
        flows:
          $ref: '#/components/schemas/FlowUsage'
        executions:
          $ref: '#/components/schemas/ExecutionUsage'
    MiscController.Configuration:
      type: object
      properties:
        uuid:
          type: string
        version:
          type: string
        edition:
          $ref: '#/components/schemas/EditionProvider.Edition'
        commitId:
          type: string
        chartDefaultDuration:
          type: string
        flowTemplate:
          type: string
        commitDate:
          type: string
          format: date-time
        versionUpgrade:
          $ref: '#/components/schemas/VersionService.VersionUpgrade'
        isCustomDashboardsEnabled:
          type: boolean
        isAnonymousUsageEnabled:
          type: boolean
        isUiAnonymousUsageEnabled:
          type: boolean
        environment:
          $ref: '#/components/schemas/MiscController.Environment'
        url:
          type: string
        preview:
          $ref: '#/components/schemas/MiscController.Preview'
        systemNamespace:
          type: string
        hiddenLabelsPrefixes:
          type: array
          items:
            type: string
        isAiEnabled:
          type: boolean
        isAiApiKeyConfigured:
          type: boolean
        isBasicAuthInitialized:
          type: boolean
        pluginsHash:
          type: integer
          format: int64
        isPluginAutoInstallEnabled:
          type: boolean
    MiscController.Environment:
      type: object
      properties:
        name:
          type: string
        color:
          type: string
    MiscController.LoginConfiguration:
      type: object
      properties:
        isBasicAuthInitialized:
          type: boolean
      description: Minimal configuration exposed to unauthenticated callers for the login/setup UI.
    MiscController.LoginRequest:
      type: object
      properties:
        username:
          type: string
        password:
          type: string
    MiscController.Preview:
      type: object
      properties:
        initial:
          type: integer
          format: int32
        max:
          type: integer
          format: int32
    NamespaceFileRevision:
      type: object
      properties:
        revision:
          type: integer
          format: int32
    NamespaceLight:
      required:
      - id
      type: object
      properties:
        id:
          pattern: ^[a-z0-9][a-z0-9._-]*
          type: string
    Output:
      required:
      - id
      - type
      - value
      type: object
      properties:
        id:
          minLength: 1
          pattern: ^[a-zA-Z0-9][.a-zA-Z0-9_-]*
          type: string
        description:
          type: string
        value:
          oneOf:
          - type: object
          - type: string
        type:
          $ref: '#/components/schemas/Type'
        displayName:
          type: string
        required:
          type: boolean
    OutputController.TaskOutputInformation:
      type: object
      properties:
        taskId:
          type: string
        taskRunId:
          type: string
        value:
          type: string
        iteration:
          type: integer
          format: int32
        inline:
          type: boolean
    PagedResults_ApiLightExecution_:
      required:
      - results
      - total
      type: object
      properties:
        results:
          type: array
          items:
            $ref: '#/components/schemas/ApiLightExecution'
        total:
          type: integer
          format: int64
      description: 'Paged response for the offset-pagination endpoints (the vast majority of list APIs): a store that always knows its row count, so both `results` and `total` are always present. A store that may not know its total (e.g. an external log store) uses CursorOrOffsetPagedResults --- see that class for why the two are kept apart.'
    PagedResults_ApiMcpServer_:
      required:
      - results
      - total
      type: object
      properties:
        results:
          type: array
          items:
            $ref: '#/components/schemas/ApiMcpServer'
        total:
          type: integer
          format: int64
      description: 'Paged response for the offset-pagination endpoints (the vast majority of list APIs): a store that always knows its row count, so both `results` and `total` are always present. A store that may not know its total (e.g. an external log store) uses CursorOrOffsetPagedResults --- see that class for why the two are kept apart.'
    PagedResults_ApiTriggerAndState_:
      required:
      - results
      - total
      type: object
      properties:
        results:
          type: array
          items:
            $ref: '#/components/schemas/ApiTriggerAndState'
        total:
          type: integer
          format: int64
      description: 'Paged response for the offset-pagination endpoints (the vast majority of list APIs): a store that always knows its row count, so both `results` and `total` are always present. A store that may not know its total (e.g. an external log store) uses CursorOrOffsetPagedResults --- see that class for why the two are kept apart.'
    PagedResults_ApiTriggerState_:
      required:
      - results
      - total
      type: object
      properties:
        results:
          type: array
          items:
            $ref: '#/components/schemas/ApiTriggerState'
        total:
          type: integer
          format: int64
      description: 'Paged response for the offset-pagination endpoints (the vast majority of list APIs): a store that always knows its row count, so both `results` and `total` are always present. A store that may not know its total (e.g. an external log store) uses CursorOrOffsetPagedResults --- see that class for why the two are kept apart.'
    PagedResults_BlueprintController.ApiBlueprintItem_:
      required:
      - results
      - total
      type: object
      properties:
        results:
          type: array
          items:
            $ref: '#/components/schemas/BlueprintController.ApiBlueprintItem'
        total:
          type: integer
          format: int64
      description: 'Paged response for the offset-pagination endpoints (the vast majority of list APIs): a store that always knows its row count, so both `results` and `total` are always present. A store that may not know its total (e.g. an external log store) uses CursorOrOffsetPagedResults --- see that class for why the two are kept apart.'
    PagedResults_ConcurrencyLimit_:
      required:
      - results
      - total
      type: object
      properties:
        results:
          type: array
          items:
            $ref: '#/components/schemas/ConcurrencyLimit'
        total:
          type: integer
          format: int64
      description: 'Paged response for the offset-pagination endpoints (the vast majority of list APIs): a store that always knows its row count, so both `results` and `total` are always present. A store that may not know its total (e.g. an external log store) uses CursorOrOffsetPagedResults --- see that class for why the two are kept apart.'
    PagedResults_DashboardController.DashboardResponse_:
      required:
      - results
      - total
      type: object
      properties:
        results:
          type: array
          items:
            $ref: '#/components/schemas/DashboardController.DashboardResponse'
        total:
          type: integer
          format: int64
      description: 'Paged response for the offset-pagination endpoints (the vast majority of list APIs): a store that always knows its row count, so both `results` and `total` are always present. A store that may not know its total (e.g. an external log store) uses CursorOrOffsetPagedResults --- see that class for why the two are kept apart.'
    PagedResults_Flow_:
      required:
      - results
      - total
      type: object
      properties:
        results:
          type: array
          items:
            $ref: '#/components/schemas/Flow'
        total:
          type: integer
          format: int64
      description: 'Paged response for the offset-pagination endpoints (the vast majority of list APIs): a store that always knows its row count, so both `results` and `total` are always present. A store that may not know its total (e.g. an external log store) uses CursorOrOffsetPagedResults --- see that class for why the two are kept apart.'
    PagedResults_KVEntry_:
      required:
      - results
      - total
      type: object
      properties:
        results:
          type: array
          items:
            $ref: '#/components/schemas/KVEntry'
        total:
          type: integer
          format: int64
      description: 'Paged response for the offset-pagination endpoints (the vast majority of list APIs): a store that always knows its row count, so both `results` and `total` are always present. A store that may not know its total (e.g. an external log store) uses CursorOrOffsetPagedResults --- see that class for why the two are kept apart.'
    PagedResults_Map_String.Object__:
      required:
      - results
      - total
      type: object
      properties:
        results:
          type: array
          items:
            type: object
            additionalProperties:
              type: object
        total:
          type: integer
          format: int64
      description: 'Paged response for the offset-pagination endpoints (the vast majority of list APIs): a store that always knows its row count, so both `results` and `total` are always present. A store that may not know its total (e.g. an external log store) uses CursorOrOffsetPagedResults --- see that class for why the two are kept apart.'
    PagedResults_MetricEntry_:
      required:
      - results
      - total
      type: object
      properties:
        results:
          type: array
          items:
            $ref: '#/components/schemas/MetricEntry'
        total:
          type: integer
          format: int64
      description: 'Paged response for the offset-pagination endpoints (the vast majority of list APIs): a store that always knows its row count, so both `results` and `total` are always present. A store that may not know its total (e.g. an external log store) uses CursorOrOffsetPagedResults --- see that class for why the two are kept apart.'
    PagedResults_Namespace_:
      required:
      - results
      - total
      type: object
      properties:
        results:
          type: array
          items:
            $ref: '#/components/schemas/NamespaceLight'
        total:
          type: integer
          format: int64
      description: 'Paged response for the offset-pagination endpoints (the vast majority of list APIs): a store that always knows its row count, so both `results` and `total` are always present. A store that may not know its total (e.g. an external log store) uses CursorOrOffsetPagedResults --- see that class for why the two are kept apart.'
    PagedResults_PluginController.ApiTriggerPlugin_:
      required:
      - results
      - total
      type: object
      properties:
        results:
          type: array
          items:
            $ref: '#/components/schemas/PluginController.ApiTriggerPlugin'
        total:
          type: integer
          format: int64
      description: 'Paged response for the offset-pagination endpoints (the vast majority of list APIs): a store that always knows its row count, so both `results` and `total` are always present. A store that may not know its total (e.g. an external log store) uses CursorOrOffsetPagedResults --- see that class for why the two are kept apart.'
    PagedResults_Plugin_:
      required:
      - results
      - total
      type: object
      properties:
        results:
          type: array
          items:
            $ref: '#/components/schemas/Plugin'
        total:
          type: integer
          format: int64
      description: 'Paged response for the offset-pagination endpoints (the vast majority of list APIs): a store that always knows its row count, so both `results` and `total` are always present. A store that may not know its total (e.g. an external log store) uses CursorOrOffsetPagedResults --- see that class for why the two are kept apart.'
    PagedResults_SourceSearchResult_:
      required:
      - results
      - total
      type: object
      properties:
        results:
          type: array
          items:
            $ref: '#/components/schemas/SourceSearchResult'
        total:
          type: integer
          format: int64
      description: 'Paged response for the offset-pagination endpoints (the vast majority of list APIs): a store that always knows its row count, so both `results` and `total` are always present. A store that may not know its total (e.g. an external log store) uses CursorOrOffsetPagedResults --- see that class for why the two are kept apart.'
    PaginationType:
      type: string
      enum:
      - OFFSET
      - CURSOR
    PebbleFunction:
      type: object
      properties:
        name:
          type: string
        arguments:
          type: array
          items:
            $ref: '#/components/schemas/PebbleFunction.Argument'
    PebbleFunction.Argument:
      type: object
      properties:
        name:
          type: string
        defaultValue:
          type: string
          nullable: true
    Plugin:
      type: object
      properties:
        name:
          type: string
        title:
          type: string
        description:
          type: string
        license:
          type: string
        longDescription:
          type: string
        group:
          type: string
        version:
          type: string
        manifest:
          type: object
          additionalProperties:
            type: string
        guides:
          type: array
          items:
            type: string
        aliases:
          type: array
          items:
            type: string
        tasks:
          type: array
          items:
            $ref: '#/components/schemas/Plugin.PluginElementMetadata'
        triggers:
          type: array
          items:
            $ref: '#/components/schemas/Plugin.PluginElementMetadata'
        controllers:
          type: array
          items:
            $ref: '#/components/schemas/Plugin.PluginElementMetadata'
        storages:
          type: array
          items:
            $ref: '#/components/schemas/Plugin.PluginElementMetadata'
        secrets:
          type: array
          items:
            $ref: '#/components/schemas/Plugin.PluginElementMetadata'
        taskRunners:
          type: array
          items:
            $ref: '#/components/schemas/Plugin.PluginElementMetadata'
        apps:
          type: array
          items:
            $ref: '#/components/schemas/Plugin.PluginElementMetadata'
        appBlocks:
          type: array
          items:
            $ref: '#/components/schemas/Plugin.PluginElementMetadata'
        charts:
          type: array
          items:
            $ref: '#/components/schemas/Plugin.PluginElementMetadata'
        dataFilters:
          type: array
          items:
            $ref: '#/components/schemas/Plugin.PluginElementMetadata'
        dataFiltersKPI:
          type: array
          items:
            $ref: '#/components/schemas/Plugin.PluginElementMetadata'
        logExporters:
          type: array
          items:
            $ref: '#/components/schemas/Plugin.PluginElementMetadata'
        additionalPlugins:
          type: array
          items:
            $ref: '#/components/schemas/Plugin.PluginElementMetadata'
        categories:
          type: array
          items:
            $ref: '#/components/schemas/PluginSubGroup.PluginCategory'
        subGroup:
          type: string
    Plugin.PluginElementMetadata:
      type: object
      properties:
        cls:
          type: string
        deprecated:
          type: boolean
        title:
          type: string
        description:
          type: string
        aliases:
          type: array
          items:
            type: string
    PluginArtifact:
      type: object
      properties:
        groupId:
          type: string
        artifactId:
          type: string
        extension:
          type: string
        classifier:
          type: string
        version:
          type: string
        uri:
          type: string
          format: uri
    PluginController.ApiPluginVersions:
      type: object
      properties:
        type:
          type: string
        versions:
          type: array
          items:
            type: string
    PluginController.ApiTriggerPlugin:
      type: object
      properties:
        type:
          type: string
          description: fully qualified class name (for example `io.kestra.plugin.core.trigger.Schedule`)
        name:
          type: string
          description: human-readable name (Schema#title if set, otherwise simple class name)
        pluginTitle:
          type: string
          description: the owning plugin's (or subgroup's) human-readable, correctly-cased title (for example `"MongoDB"` or `"Debezium MongoDB"`), resolved from its own declared metadata rather than guessed from the class package --- used by the UI to disambiguate triggers from different plugins that otherwise share the same last Java package segment (see io.kestra.core.docs.Plugin#titleFor)
        pluginGroupTitle:
          type: string
          description: the owning plugin artifact's manifest title (for example `"NATS"` for every subgroup of the NATS plugin) - coarser than `pluginTitle`, which falls back to a bare package segment (such as `"core"`) when a subgroup declares no title; the UI escalates to this when `pluginTitle` alone still collides
        description:
          type: string
          description: one-line description from the plugin
        group:
          $ref: '#/components/schemas/TriggerPluginCategory'
        ee:
          type: boolean
          description: true when the trigger is only available in Enterprise Edition (bundled with EE core, or shipped by a plugin distributed under an Enterprise license)
        icon:
          type: string
          description: icon key resolvable via `GET /api/v1/plugins/icons`
        deprecated:
          type: boolean
          description: whether the trigger is deprecated
      description: Lightweight descriptor of a trigger plugin class for the "Add Trigger" catalog UI.
    PluginController.PluginIconResponse:
      type: object
      properties:
        icon:
          nullable: true
          allOf:
          - $ref: '#/components/schemas/PluginIcon'
      description: 'Always-present wrapper around a possibly-absent PluginIcon, so the response body itself is never null. Micronaut treats a null response body as a 404, which would defeat the purpose of #getPluginIcon always answering 200.'
    PluginDistribution:
      type: string
      enum:
      - OSS
      - EE
    PluginIcon:
      type: object
      properties:
        name:
          type: string
        icon:
          type: string
        flowable:
          type: boolean
        monochrome:
          type: boolean
        hash:
          type: string
    PluginInstallJob:
      type: object
      properties:
        id:
          type: string
          format: uuid
        status:
          $ref: '#/components/schemas/PluginInstallJob.Status'
        artifacts:
          type: array
          items:
            $ref: '#/components/schemas/PluginArtifact'
        progress:
          type: object
          additionalProperties:
            $ref: '#/components/schemas/PluginInstallJob.ArtifactProgress'
        startedAt:
          type: string
          format: date-time
        finishedAt:
          type: string
          format: date-time
        error:
          type: string
    PluginInstallJob.ArtifactProgress:
      type: object
      properties:
        resource:
          type: string
        transferred:
          type: integer
          format: int64
        total:
          type: integer
          format: int64
        state:
          $ref: '#/components/schemas/PluginInstallJob.ArtifactState'
    PluginInstallJob.ArtifactState:
      type: string
      enum:
      - STARTED
      - PROGRESSING
      - SUCCEEDED
      - FAILED
    PluginInstallJob.Status:
      type: string
      enum:
      - PENDING
      - RUNNING
      - SUCCEEDED
      - FAILED
    PluginSchema:
      type: object
      properties:
        properties:
          type: object
          additionalProperties:
            type: object
        outputs:
          type: object
          additionalProperties:
            type: object
        definitions:
          type: object
          additionalProperties:
            type: object
    PluginSubGroup.PluginCategory:
      type: string
      enum:
      - DATABASE
      - MESSAGING
      - SCRIPT
      - TRANSFORMATION
      - BATCH
      - ALERTING
      - CLOUD
      - STORAGE
      - OTHER
      - TOOL
      - AI
      - CORE
      - INGESTION
      - BI
      - BUSINESS
      - DATA
      - INFRASTRUCTURE
      x-deprecated:
      - DATABASE
      - MESSAGING
      - SCRIPT
      - TRANSFORMATION
      - BATCH
      - ALERTING
      - STORAGE
      - OTHER
      - TOOL
      - INGESTION
      - BI
    PluginUiManifest:
      type: object
      properties:
        manifest:
          type: object
          additionalProperties:
            type: array
            items:
              $ref: '#/components/schemas/PluginUiModuleWithGroup'
    PluginUiModuleWithGroup:
      type: object
      properties:
        uiModule:
          type: string
        group:
          type: string
        staticInfo:
          type: object
          additionalProperties:
            type: object
        styles:
          type: array
          items:
            type: string
        sourceHash:
          type: string
        distribution:
          $ref: '#/components/schemas/PluginDistribution'
    ProblemDetail:
      type: object
      properties:
        type:
          type: string
          description: Stable, machine-readable identifier of the problem kind, resolving to its documentation. This is what clients branch on.
          format: uri
          example: https://kestra.io/docs/api-reference/problems/entity-already-exists
        title:
          type: string
          description: Short, human-readable summary of the problem kind. Stable for a given type and never parameterised.
          example: Entity already exists
        status:
          type: integer
          description: The HTTP status code, repeated here for convenience.
          format: int32
          example: 409
        detail:
          type: string
          description: Human-readable explanation specific to this occurrence.
          example: A flow with id 'my-flow' already exists in namespace 'company.team'.
        instance:
          type: string
          description: The path of the request that produced this problem.
          example: /api/v1/main/flows
        errors:
          type: array
          description: Field-level errors, when several problems are reported at once.
          items:
            $ref: '#/components/schemas/ProblemError'
        traceId:
          type: string
          description: Correlation identifier for the matching server-side log entry. Present on server errors only.
          example: 4bf92f3577b34da6a3ce929d0e0e4736
      description: An RFC 9457 problem details document describing a failed request.
    ProblemError:
      type: object
      properties:
        detail:
          type: string
          description: What is wrong with this field.
          example: must not be null
        pointer:
          type: string
          description: RFC 6901 JSON Pointer locating the field in the submitted document.
          example: /tasks/0/type
        path:
          type: string
          description: Human-friendly path locating the field, naming tasks and inputs by id. Not a JSON Pointer.
          example: tasks[my-task].type
        type:
          type: string
          description: Problem type of this individual error, when it differs per item. Follows the same URI scheme as the enclosing document.
          format: uri
          example: https://kestra.io/docs/api-reference/problems/not-found
      description: A single field-level error inside a problem details document.
    Property_AssetFailureBehavior_:
      type: object
      properties:
        expression:
          type: string
        value:
          $ref: '#/components/schemas/AssetFailureBehavior'
      oneOf:
      - type: object
      - type: string
    Property_Boolean_:
      type: object
      properties:
        expression:
          type: string
        value:
          type: boolean
      oneOf:
      - type: object
      - type: string
    Property_Duration_:
      type: object
      properties:
        expression:
          type: string
        value:
          type: string
      oneOf:
      - type: object
      - type: string
    Property_List_AssetIdentifier__:
      type: object
      properties:
        expression:
          type: string
        value:
          type: array
          items:
            $ref: '#/components/schemas/AssetIdentifier'
      oneOf:
      - type: object
      - type: string
    Property_List_Asset__:
      type: object
      properties:
        expression:
          type: string
        value:
          type: array
          items:
            $ref: '#/components/schemas/Asset'
      oneOf:
      - type: object
      - type: string
    Property_Object_:
      type: object
      properties:
        expression:
          type: string
        value:
          type: object
      oneOf:
      - type: object
      - type: string
    Property_String_:
      type: object
      properties:
        expression:
          type: string
        value:
          type: string
      oneOf:
      - type: object
      - type: string
    QueryFilter:
      type: object
      properties:
        field:
          $ref: '#/components/schemas/QueryFilter.Field'
        operation:
          $ref: '#/components/schemas/QueryFilter.Op'
        value:
          type: object
        logical:
          $ref: '#/components/schemas/QueryFilter.Logical'
        children:
          type: array
          items:
            $ref: '#/components/schemas/QueryFilter'
    QueryFilter.Field:
      type: string
      enum:
      - q
      - scope
      - namespace
      - kind
      - POLICY_SCOPE
      - ENFORCEMENT
      - labels
      - tags
      - metadata
      - flowId
      - flowRevision
      - id
      - assetId
      - type
      - action
      - created
      - updated
      - startDate
      - endDate
      - expirationDate
      - state
      - status
      - SEVERITY
      - ASSIGNEE
      - email
      - timeRange
      - parentId
      - triggerExecutionId
      - triggerId
      - triggerState
      - executionId
      - taskId
      - taskRunId
      - attemptNumber
      - childFilter
      - workerId
      - existingOnly
      - userId
      - resources
      - details
      - level
      - path
      - parentPath
      - version
      - enabled
      - username
      - name
      - groupList
      - external_id
      - expired_at
      - instance_owner
      - source
      - locked
      - lastTriggeredDate
      - nextExecutionDate
      - artifactId
      x-enum-varnames:
      - QUERY
      - SCOPE
      - NAMESPACE
      - KIND
      - POLICY_SCOPE
      - ENFORCEMENT
      - LABELS
      - TAGS
      - METADATA
      - FLOW_ID
      - FLOW_REVISION
      - ID
      - ASSET_ID
      - TYPE
      - ACTION
      - CREATED
      - UPDATED
      - START_DATE
      - END_DATE
      - EXPIRATION_DATE
      - STATE
      - STATUS
      - SEVERITY
      - ASSIGNEE
      - EMAIL
      - TIME_RANGE
      - PARENT_ID
      - TRIGGER_EXECUTION_ID
      - TRIGGER_ID
      - TRIGGER_STATE
      - EXECUTION_ID
      - TASK_ID
      - TASK_RUN_ID
      - ATTEMPT_NUMBER
      - CHILD_FILTER
      - WORKER_ID
      - EXISTING_ONLY
      - USER_ID
      - RESOURCES
      - DETAILS
      - LEVEL
      - PATH
      - PARENT_PATH
      - VERSION
      - ENABLED
      - USERNAME
      - NAME
      - GROUP
      - EXTERNAL_ID
      - EXPIRED_AT
      - INSTANCE_OWNER
      - SOURCE
      - LOCKED
      - LAST_TRIGGERED_DATE
      - NEXT_EXECUTION_DATE
      - ARTIFACT_ID
      x-type: String
    QueryFilter.Logical:
      type: string
      enum:
      - and
      - or
      x-type: String
    QueryFilter.Op:
      type: string
      enum:
      - EQUALS
      - NOT_EQUALS
      - GREATER_THAN
      - LESS_THAN
      - GREATER_THAN_OR_EQUAL_TO
      - LESS_THAN_OR_EQUAL_TO
      - IN
      - NOT_IN
      - STARTS_WITH
      - ENDS_WITH
      - CONTAINS
      - NOT_CONTAINS
      - IS_NULL
      - IS_NOT_NULL
      - REGEX
      - PREFIX
    Quota:
      required:
      - behavior
      - duration
      - limit
      type: object
      properties:
        duration:
          type: string
        limit:
          minimum: 0
          exclusiveMinimum: true
          type: integer
          format: int64
        behavior:
          $ref: '#/components/schemas/Quota.Behavior'
    Quota.Behavior:
      type: string
      enum:
      - FAIL
      - CANCEL
    Relation:
      type: object
      properties:
        relationType:
          $ref: '#/components/schemas/RelationType'
        value:
          type: string
    RelationType:
      type: string
      enum:
      - SEQUENTIAL
      - CHOICE
      - ERROR
      - FINALLY
      - AFTER_EXECUTION
      - PARALLEL
      - DYNAMIC
    SLA:
      required:
      - behavior
      - id
      - type
      type: object
      properties:
        id:
          minLength: 1
          type: string
        type:
          $ref: '#/components/schemas/SLA.Type'
        behavior:
          $ref: '#/components/schemas/SLA.Behavior'
        labels:
          oneOf:
          - type: array
          - $ref: '#/components/schemas/Map_Object.Object_'
    SLA.Behavior:
      type: string
      enum:
      - FAIL
      - CANCEL
      - NONE
    SLA.Type:
      type: string
      enum:
      - MAX_DURATION
      - EXECUTION_ASSERTION
    SchemaType:
      type: string
      enum:
      - FLOW
      - TASK
      - TRIGGER
      - APPS
      - TESTSUITES
      - DASHBOARD
      - REUSABLEINPUTS
      - POLICY
    ServerInstance:
      required:
      - hostname
      - id
      - metrics
      - props
      - type
      - version
      type: object
      properties:
        id:
          type: string
        type:
          $ref: '#/components/schemas/ServerInstance.Type'
        version:
          type: string
        hostname:
          type: string
        props:
          type: object
          additionalProperties:
            type: object
        metrics:
          type: array
          items:
            $ref: '#/components/schemas/Metric'
    ServerInstance.Type:
      type: string
      enum:
      - SERVER
      - STANDALONE
    Service.ServiceState:
      type: string
      enum:
      - CREATED
      - RUNNING
      - ERROR
      - DISCONNECTED
      - TERMINATING
      - TERMINATED_GRACEFULLY
      - TERMINATED_FORCED
      - NOT_RUNNING
      - INACTIVE
      - MAINTENANCE
    ServiceInstance:
      type: object
      properties:
        server:
          $ref: '#/components/schemas/ServerInstance'
        metrics:
          type: array
          items:
            $ref: '#/components/schemas/Metric'
        state:
          $ref: '#/components/schemas/Service.ServiceState'
        id:
          type: string
        type:
          $ref: '#/components/schemas/ServiceType'
        createdAt:
          type: string
          format: date-time
        updatedAt:
          type: string
          format: date-time
        events:
          type: array
          items:
            $ref: '#/components/schemas/ServiceInstance.TimestampedEvent'
        props:
          type: object
          additionalProperties:
            type: object
        seqId:
          type: integer
          format: int64
    ServiceInstance.TimestampedEvent:
      type: object
      properties:
        ts:
          type: string
          format: date-time
        value:
          type: string
        type:
          type: string
        state:
          $ref: '#/components/schemas/Service.ServiceState'
    ServiceType:
      type: string
      enum:
      - EXECUTOR
      - INDEXER
      - SCHEDULER
      - WEBSERVER
      - WORKER
      - SYSTEM_WORKER
      - CONTROLLER
      - INVALID
    SoftDeletable_FlowInterface_:
      type: object
      properties:
        deleted:
          type: boolean
    SourceMatch:
      type: object
      properties:
        line:
          type: integer
          format: int32
        column:
          type: integer
          format: int32
        snippet:
          type: string
    SourceSearchReplaceApplyRequest:
      required:
      - flows
      - query
      - replacement
      type: object
      properties:
        query:
          minLength: 1
          type: string
        caseSensitive:
          type: boolean
        wholeWord:
          type: boolean
        regex:
          type: boolean
        scope:
          nullable: true
          allOf:
          - $ref: '#/components/schemas/SourceSearchScope'
        replacement:
          type: string
        flows:
          maxItems: 1000
          minItems: 1
          type: array
          items:
            $ref: '#/components/schemas/IdWithNamespace'
    SourceSearchReplaceApplyResponse:
      type: object
      properties:
        updated:
          type: array
          description: The flows that were rewritten, with their new revision.
          items:
            $ref: '#/components/schemas/FlowWithSource'
        skipped:
          type: array
          description: The flows that were left untouched, each with the reason it was skipped.
          items:
            $ref: '#/components/schemas/SourceSearchReplaceApplyResponse.SkippedFlow'
    SourceSearchReplaceApplyResponse.SkipReason:
      type: string
      enum:
      - NOT_FOUND
      - READ_ONLY
      - NO_CHANGE
      - NO_MATCH
      - INVALID_FLOW
      - UNKNOWN
      x-enum-descriptions:
      - The flow no longer exists, or was deleted between the search and the replace.
      - The caller cannot edit the flow, or the flow carries the `system.readOnly` label.
      - The replacement left the source unchanged, so no new revision was needed.
      - The requested match no longer exists at the given line and column.
      - The rewritten source is not a valid flow.
      - ''
    SourceSearchReplaceApplyResponse.SkippedFlow:
      type: object
      properties:
        namespace:
          type: string
        id:
          type: string
        reason:
          $ref: '#/components/schemas/SourceSearchReplaceApplyResponse.SkipReason'
        message:
          type: string
          description: The underlying validation error, when the reason is INVALID_FLOW.
          nullable: true
      description: A flow that the replace operation did not modify, and why.
    SourceSearchReplaceLineRequest:
      required:
      - id
      - namespace
      - query
      - replacement
      type: object
      properties:
        query:
          minLength: 1
          type: string
        caseSensitive:
          type: boolean
        wholeWord:
          type: boolean
        regex:
          type: boolean
        replacement:
          type: string
        namespace:
          minLength: 1
          type: string
        id:
          minLength: 1
          type: string
        line:
          minimum: 1
          type: integer
          format: int32
        column:
          minimum: 0
          type: integer
          format: int32
    SourceSearchReplacePreviewRequest:
      required:
      - query
      - replacement
      type: object
      properties:
        query:
          minLength: 1
          type: string
        caseSensitive:
          type: boolean
        wholeWord:
          type: boolean
        regex:
          type: boolean
        namespace:
          type: string
          nullable: true
        scope:
          nullable: true
          allOf:
          - $ref: '#/components/schemas/SourceSearchScope'
        replacement:
          type: string
    SourceSearchReplacePreviewResponse:
      type: object
      properties:
        totalMatches:
          type: integer
          format: int32
        totalFlows:
          type: integer
          format: int32
        editableFlowCount:
          type: integer
          format: int32
        flows:
          type: array
          items:
            $ref: '#/components/schemas/SourceSearchReplacePreviewResponse.FlowMatches'
    SourceSearchReplacePreviewResponse.FlowMatches:
      type: object
      properties:
        namespace:
          type: string
        id:
          type: string
        editable:
          type: boolean
        matches:
          type: array
          items:
            $ref: '#/components/schemas/SourceSearchReplacePreviewResponse.Match'
    SourceSearchReplacePreviewResponse.Match:
      type: object
      properties:
        line:
          type: integer
          format: int32
        before:
          type: string
        after:
          type: string
    SourceSearchResult:
      type: object
      properties:
        namespace:
          type: string
        id:
          type: string
        editable:
          type: boolean
        matches:
          type: array
          items:
            $ref: '#/components/schemas/SourceMatch'
    SourceSearchScope:
      type: string
      enum:
      - ALL
      - TASKS
      - TRIGGERS
      - INPUTS
    State:
      required:
      - current
      - getDuration
      - getEndDate
      - getStartDate
      - histories
      type: object
      properties:
        duration:
          type: string
          nullable: true
          readOnly: true
        startDate:
          type: string
          format: date-time
          readOnly: true
        endDate:
          type: string
          format: date-time
          nullable: true
          readOnly: true
        current:
          $ref: '#/components/schemas/State.Type'
        histories:
          type: array
          items:
            $ref: '#/components/schemas/State.History'
        getDuration:
          type: string
          readOnly: true
        getStartDate:
          type: string
          format: date-time
          readOnly: true
        getEndDate:
          type: string
          format: date-time
          readOnly: true
    State.History:
      required:
      - date
      - state
      type: object
      properties:
        state:
          $ref: '#/components/schemas/State.Type'
        date:
          type: string
          format: date-time
    State.Type:
      type: string
      enum:
      - CREATED
      - SUBMITTED
      - RUNNING
      - PAUSED
      - RESTARTED
      - KILLING
      - SUCCESS
      - WARNING
      - FAILED
      - KILLED
      - CANCELLED
      - QUEUED
      - RETRYING
      - RETRIED
      - SKIPPED
      - BREAKPOINT
      - RESUBMITTED
    Task:
      required:
      - id
      - type
      type: object
      properties:
        id:
          maxLength: 256
          minLength: 1
          pattern: ^[a-zA-Z0-9][a-zA-Z0-9_-]*
          type: string
          x-size-message: Task id must be at most 256 characters
        type:
          title: The class name of this task.
          minLength: 1
          pattern: ^[A-Za-z_$][A-Za-z0-9_$]*(\.[A-Za-z_$][A-Za-z0-9_$]*)*$
          type: string
        version:
          title: Plugin Version
          type: string
          description: |
            Defines the version of the plugin to use.

            The version must follow the Semantic Versioning (SemVer) specification:
              - A single-digit MAJOR version (e.g., `1`).
              - A MAJOR.MINOR version (e.g., `1.1`).
              - A MAJOR.MINOR.PATCH version, optionally with any qualifier
                (e.g., `1.1.2`, `1.1.0-SNAPSHOT`).
        description:
          type: string
        retry:
          title: Retry
          type: object
          description: Retry policy applied when the task fails.
        timeout:
          $ref: '#/components/schemas/Property_Duration_'
        disabled:
          type: boolean
        workerSelector:
          description: Routing requirements (tags + fallback) for this task.
          allOf:
          - $ref: '#/components/schemas/WorkerSelector'
        policyRefs:
          type: array
          description: 'Identifiers of `enforcement: REFERENCE` governance policies to attach to this task and everything nested under it (Enterprise Edition; ignored in the open-source edition).'
          items:
            type: string
        logLevel:
          $ref: '#/components/schemas/Level'
        allowFailure:
          type: boolean
        logToFile:
          type: boolean
        runIf:
          type: string
        allowWarning:
          type: boolean
        taskCache:
          $ref: '#/components/schemas/Cache'
        assets:
          description: Assets this task consumes as inputs or produces as outputs, for lineage tracking and the asset graph (Enterprise Edition). A flow declaring this property on a task is rejected in the open-source edition.
          nullable: true
          allOf:
          - $ref: '#/components/schemas/AssetsDeclaration'
    TaskFixture:
      required:
      - id
      type: object
      properties:
        id:
          type: string
        value:
          type: string
        state:
          $ref: '#/components/schemas/State.Type'
        outputs:
          type: object
          additionalProperties:
            type: object
        assets:
          type: array
          items:
            $ref: '#/components/schemas/Asset'
        description:
          $ref: '#/components/schemas/Property_String_'
    TaskForExecution:
      required:
      - id
      - type
      type: object
      properties:
        id:
          minLength: 1
          pattern: ^[a-zA-Z0-9][a-zA-Z0-9_-]*
          type: string
        type:
          title: The class name of this task.
          minLength: 1
          pattern: ^[A-Za-z_$][A-Za-z0-9_$]*(\.[A-Za-z_$][A-Za-z0-9_$]*)*$
          type: string
        version:
          title: Plugin Version
          type: string
          description: |
            Defines the version of the plugin to use.

            The version must follow the Semantic Versioning (SemVer) specification:
              - A single-digit MAJOR version (e.g., `1`).
              - A MAJOR.MINOR version (e.g., `1.1`).
              - A MAJOR.MINOR.PATCH version, optionally with any qualifier
                (e.g., `1.1.2`, `1.1.0-SNAPSHOT`).
        tasks:
          type: array
          items:
            $ref: '#/components/schemas/TaskForExecution'
        inputs:
          type: array
          items:
            $ref: '#/components/schemas/Input_Object_'
        subflowId:
          $ref: '#/components/schemas/ExecutableTask.SubflowId'
    TaskRun:
      required:
      - executionId
      - flowId
      - id
      - namespace
      - state
      - taskId
      type: object
      properties:
        assets:
          deprecated: true
          allOf:
          - $ref: '#/components/schemas/AssetsInOut'
        id:
          type: string
        executionId:
          type: string
        namespace:
          type: string
        flowId:
          type: string
        taskId:
          type: string
        parentTaskRunId:
          type: string
        value:
          type: string
        attempts:
          type: array
          items:
            $ref: '#/components/schemas/TaskRunAttempt'
        assetEmits:
          type: array
          nullable: true
          items:
            $ref: '#/components/schemas/AssetsInOut'
        state:
          $ref: '#/components/schemas/State'
        iteration:
          type: integer
          format: int32
        dynamic:
          type: boolean
        forceExecution:
          type: boolean
    TaskRunAttempt:
      required:
      - state
      type: object
      properties:
        state:
          $ref: '#/components/schemas/State'
        workerId:
          type: string
          nullable: true
        logFile:
          type: string
          format: uri
          nullable: true
    TaskWithVersion:
      type: object
      properties:
        cls:
          type: string
        version:
          type: string
    TenantInterface:
      type: object
      properties:
        tenantId:
          type: string
    TimeWindow:
      type: object
      properties:
        default:
          type: string
        max:
          type: string
    TriggerController.ApiCreateBackfillRequest:
      required:
      - backfill
      type: object
      properties:
        namespace:
          type: string
        flowId:
          type: string
        triggerId:
          type: string
        backfill:
          $ref: '#/components/schemas/TriggerController.ApiCreateBackfillRequest.Backfill'
    TriggerController.ApiCreateBackfillRequest.Backfill:
      type: object
      properties:
        start:
          type: string
          format: date-time
        end:
          type: string
          format: date-time
        inputs:
          type: object
          additionalProperties:
            type: object
        labels:
          type: array
          items:
            $ref: '#/components/schemas/Label'
    TriggerController.ApiDisableTriggerRequest:
      type: object
      properties:
        namespace:
          type: string
        flowId:
          type: string
        triggerId:
          type: string
        disabled:
          type: boolean
        recoverMissedSchedules:
          type: boolean
          nullable: true
    TriggerController.ApiTriggerId:
      type: object
      properties:
        namespace:
          type: string
        flowId:
          type: string
        triggerId:
          type: string
    TriggerController.SetDisabledRequest:
      required:
      - disabled
      - triggers
      type: object
      properties:
        triggers:
          minItems: 1
          type: array
          items:
            $ref: '#/components/schemas/TriggerController.ApiTriggerId'
        disabled:
          type: boolean
        recoverMissedSchedules:
          type: boolean
          nullable: true
    TriggerPluginCategory:
      type: string
      description: |-
        Category bucket for the "Add Trigger" catalog in the UI.


        Derived from the owning RegisteredPlugin's provenance and the interfaces the trigger
        class implements:

        * #CORE - trigger is bundled with Kestra (no external plugin location).
        * #REALTIME - external trigger implementing RealtimeTriggerInterface.
        * #APP - external trigger, typically implementing PollingTriggerInterface.
        Core precedence wins over realtime/app so a bundled core trigger (for example Webhook) is CORE even if it otherwise looks like a realtime or polling trigger.
      enum:
      - core
      - realtime
      - app
      x-type: String
    TriggerType:
      type: string
      enum:
      - SCHEDULE
      - POLLING
      - REALTIME
    Type:
      type: string
      enum:
      - STRING
      - SELECT
      - INT
      - FLOAT
      - BOOL
      - DATETIME
      - DATE
      - TIME
      - DURATION
      - FILE
      - JSON
      - ION
      - URI
      - SECRET
      - ARRAY
      - MULTISELECT
      - YAML
      - EMAIL
      - FORM
      - REUSABLE_INPUTS
    ValidateConstraintViolation:
      required:
      - index
      type: object
      properties:
        index:
          type: integer
          format: int32
        filename:
          type: string
        namespace:
          type: string
        flow:
          type: string
        constraints:
          type: string
        outdated:
          type: boolean
        deprecationPaths:
          type: array
          items:
            type: string
        warnings:
          type: array
          items:
            type: string
        infos:
          type: array
          items:
            type: string
    VersionService.VersionUpgrade:
      type: object
      properties:
        from:
          type: string
        to:
          type: string
        at:
          type: string
          format: date-time
    WebhookResponse:
      type: object
      properties:
        tenantId:
          type: string
        id:
          type: string
        namespace:
          type: string
        flowId:
          type: string
        flowRevision:
          type: integer
          format: int32
        trigger:
          $ref: '#/components/schemas/ExecutionTrigger'
        outputs:
          type: object
          additionalProperties:
            type: object
        labels:
          type: array
          items:
            $ref: '#/components/schemas/Label'
        state:
          $ref: '#/components/schemas/State'
        url:
          type: string
          format: uri
    WorkerQueueFallback:
      type: string
      description: Strategy when no worker is available. Defaults to FAIL when null.
      enum:
      - FAIL
      - WAIT
      - CANCEL
      - IGNORE
    WorkerSelector:
      type: object
      properties:
        tags:
          maxItems: 20
          type: array
          description: 'Required tags used to route to a matching Worker Queue. Each tag is an RFC 1123 label: lowercase alphanumerics and hyphens, must start and end with alphanumeric, max 64 chars per tag, max 20 tags.'
          items:
            type: string
        match:
          description: 'How selector tags are matched against a Worker Queue''s tag set. ALL: queue tags must be a superset of the selector tags. ANY: queue tags must intersect the selector tags. Defaults to ALL when null.'
          allOf:
          - $ref: '#/components/schemas/WorkerSelectorMatch'
        fallback:
          description: Strategy when no worker is available. Defaults to FAIL when null.
          allOf:
          - $ref: '#/components/schemas/WorkerQueueFallback'
    WorkerSelectorMatch:
      type: string
      description: 'How selector tags are matched against a Worker Queue''s tag set. ALL: queue tags must be a superset of the selector tags. ANY: queue tags must intersect the selector tags. Defaults to ALL when null.'
      enum:
      - ALL
      - ANY
