src/platform/plugins/shared/workflows_management/README.md
This plugin contains the Workflows management application and APIs.
The workflows management plugin provides the user interface and management capabilities for creating, editing, scheduling, and monitoring workflows. It serves as the primary interface for workflow operations and integrates with the workflows execution engine.
To use workflows, you need an active Enterprise license. Workflows are not available on Basic or Standard licenses.
The workflows feature UI setting is enabled by default, it can be disabled via Kibana config with:
uiSettings.overrides:
workflows:ui:enabled: false
If running in Serverless or Cloud dev environments, you can disable it via API:
POST kbn://internal/kibana/settings
{
"changes": {
"workflows:ui:enabled": false
}
}
The workflows management plugin provides:
The management plugin follows a layered architecture:
┌─────────────────────────────────────────┐
│ Public UI Layer │
│ (React components, forms, visualizer) │
└─────────────────────────────────────────┘
↓
┌─────────────────────────────────────────┐
│ Server API Layer │
│ (REST endpoints, validation) │
└─────────────────────────────────────────┘
↓
┌─────────────────────────────────────────┐
│ Service Layer │
│ (Business logic, workflow management) │
└─────────────────────────────────────────┘
↓
┌─────────────────────────────────────────┐
│ Storage & Execution Layer │
│ (Saved Objects, Task Manager, Engine) │
└─────────────────────────────────────────┘
| Plugin | Purpose |
|---|---|
workflowsExecutionEngine | Core execution runtime for workflows |
taskManager | Scheduled execution management |
actions | Connector and action support |
features | Feature registration and capabilities |
security | Access control and authentication |
triggersActionsUi | Action configuration UI |
spaces | Multi-tenancy support |
navigation | UI navigation |
data, dataViews | Data layer and index patterns |
esUiShared | Shared Elasticsearch UI components |
stackConnectors | Built-in connector types |
fieldFormats | Field formatting utilities |
unifiedSearch | Search capabilities |
embeddable | Workflow visualization |
| Plugin | Purpose |
|---|---|
alerting | Integration with alerting framework |
serverless | Serverless-specific features |
This section summarizes how public Workflows HTTP APIs are versioned and how that appears in documentation. For authoritative paths, parameters, and examples, use the generated OpenAPI surface.
| Topic | Detail |
|---|---|
| API date version | Public routes use version 2023-10-31 (see API_VERSION in server/api/routes/utils/route_constants.ts). |
| Version header | Send elastic-api-version: 2023-10-31 on requests to public endpoints, consistent with Kibana HTTP API versioning. |
| Stack introduction | Public Workflows REST APIs are annotated with since: 9.4.0 for stack deployments. |
| License | An Enterprise license is required (see Requirements). |
| Privileges | Access is enforced via workflowsManagement feature privileges (see route security blocks under server/api/routes/). |
UI setting workflows:ui:enabled | Controls whether the Workflows management application and related UI are registered in the browser. It does not remove public REST routes under /api/workflows; those routes remain subject to license and authorization checks. |
| Spaces | Public URLs are space-aware (for example /s/{space_id}/api/workflows in documentation); see Spaces. |
Public HTTP APIs live under /api/workflows (space-aware in docs as /s/{space_id}/api/workflows/...). Send elastic-api-version: 2023-10-31 on requests.
OpenAPI (OAS) documentation for these endpoints: use the generated bundles—kibana.yaml (stateful) and kibana.serverless.yaml (serverless)—or the published Workflows API group (stateful) and Workflows API group (serverless). Each public operation lists parameters, request bodies, responses, and examples.
| Method | Path | Summary |
|---|---|---|
| GET | /api/workflows | List workflows (pagination and filters via query string). |
| POST | /api/workflows | Bulk create workflows. |
| DELETE | /api/workflows | Bulk delete workflows. |
| POST | /api/workflows/mget | Get multiple workflows by ID. |
| POST | /api/workflows/export | Export workflows. |
| GET | /api/workflows/stats | Workflow statistics. |
| GET | /api/workflows/aggs | Workflow aggregations. |
| GET | /api/workflows/connectors | Available connector types. |
| GET | /api/workflows/schema | Workflow JSON schema. |
| POST | /api/workflows/workflow | Create a workflow. |
| GET | /api/workflows/workflow/{id} | Get a workflow by ID. |
| PUT | /api/workflows/workflow/{id} | Update a workflow. |
| DELETE | /api/workflows/workflow/{id} | Delete a workflow. |
| POST | /api/workflows/workflow/{id}/clone | Clone a workflow. |
| POST | /api/workflows/workflow/{id}/run | Run a workflow. |
| GET | /api/workflows/workflow/{workflowId}/executions | List executions for a workflow. |
| GET | /api/workflows/workflow/{workflowId}/executions/steps | List step executions for a workflow. |
| POST | /api/workflows/workflow/{workflowId}/executions/cancel | Cancel all active executions for a workflow. |
| POST | /api/workflows/test | Test a workflow without persisting it. |
| POST | /api/workflows/step/test | Test a single workflow step. |
| GET | /api/workflows/executions/{executionId} | Get an execution by ID. |
| GET | /api/workflows/executions/{executionId}/children | List child executions. |
| GET | /api/workflows/executions/{executionId}/logs | Execution logs. |
| GET | /api/workflows/executions/{executionId}/step/{stepExecutionId} | Get a step execution. |
| POST | /api/workflows/executions/{executionId}/cancel | Cancel an execution. |
| POST | /api/workflows/executions/{executionId}/resume | Resume an execution. |
| GET | /api/workflows/executions/{executionId}/trigger_event_trace | Trigger event trace for an execution. |
These routes use access: internal and are not included in the public OpenAPI bundles above. They use a numeric elastic-api-version (see INTERNAL_API_VERSION in server/api/routes/utils/route_constants.ts). For validate, example payloads live in validate_workflow.yaml.
| Method | Path | Purpose |
|---|---|---|
| GET | /internal/workflows/config | Execution engine feature flags for the plugin. |
| POST | /internal/workflows/disable | Disable all workflows (administrative). |
| POST | /api/workflows/validate | Validate a workflow YAML definition without saving. |
The workflows management UI is available at /app/workflows when the feature flag is enabled.
/app/workflows - Workflow library (home page)/app/workflows/new - Create new workflow/app/workflows/edit/{id} - Edit existing workflow/app/workflows/{id} - View workflow details/app/workflows/{id}/executions - View workflow execution history/app/workflows/executions/{executionId} - View execution detailsMany list endpoints accept page and size (or route-specific defaults) as query parameters on GET requests. Exact fields and response envelopes differ by route—use the OpenAPI entries for each operation.
Examples (add elastic-api-version: 2023-10-31 and auth headers as for any public Kibana API):
List workflows (free-text query plus pagination):
GET /api/workflows?page=1&size=20&query=sales
List executions for a workflow:
GET /api/workflows/workflow/{workflowId}/executions?page=1&size=20
Execution logs (see the workflows OpenAPI operation for required vs optional query fields such as size, page, and stepExecutionId):
GET /api/workflows/executions/{executionId}/logs
workflows_management/
├── common/ # Shared code (types, schemas, utilities)
├── public/ # Browser-side code
│ ├── application.tsx # Main application entry
│ ├── components/ # React components
│ ├── features/ # Feature modules
│ ├── pages/ # Page components
│ └── ...
├── server/ # Server-side code
│ ├── workflows_management/ # Core service and API
│ │ ├── routes/ # API route handlers
│ │ └── ...
│ ├── storage/ # Data persistence layer
│ ├── tasks/ # Task manager integration
│ └── ...
└── README.md # This file
kibana.dev.ymlyarn es snapshotyarn start/app/workflows# Run unit tests
yarn test:jest src/platform/plugins/shared/workflows_management
# Running a specific test
yarn test:jest -- $path # (e.g. src/platform/plugins/shared/workflows_management/public/widgets/workflow_yaml_editor/lib/snippets/insert_trigger_snippet.test.ts)
# Run integration tests
yarn test:jest_integration src/platform/plugins/shared/workflows_management
# Run FTR tests (if available)
yarn test:ftr --config x-pack/test/workflows_management_api_integration/config.ts
All API endpoints require authentication. The plugin integrates with Kibana's security framework:
read privilege on workflowswrite privilege on workflowsexecute privilege on workflowsdelete privilege on workflowsWorkflows are space-aware and respect Kibana Spaces boundaries.
Plugin Owner: @elastic/workflows-eng