diff --git a/.ci/validation/package-lock.json b/.ci/validation/package-lock.json
index 3976d2eb..86398d4e 100644
--- a/.ci/validation/package-lock.json
+++ b/.ci/validation/package-lock.json
@@ -1,12 +1,12 @@
{
"name": "validation",
- "version": "0.9.0-snapshot",
+ "version": "1.0.0",
"lockfileVersion": 3,
"requires": true,
"packages": {
"": {
"name": "validation",
- "version": "0.9.0-snapshot",
+ "version": "1.0.0",
"license": "ISC",
"dependencies": {
"ajv": "^8.12.0",
@@ -1820,10 +1820,11 @@
"dev": true
},
"node_modules/cross-spawn": {
- "version": "7.0.3",
- "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz",
- "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==",
+ "version": "7.0.6",
+ "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.6.tgz",
+ "integrity": "sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==",
"dev": true,
+ "license": "MIT",
"peer": true,
"dependencies": {
"path-key": "^3.1.0",
diff --git a/.ci/validation/package.json b/.ci/validation/package.json
index c1f07f2b..64f29145 100644
--- a/.ci/validation/package.json
+++ b/.ci/validation/package.json
@@ -1,6 +1,6 @@
{
"name": "validation",
- "version": "0.9.0-snapshot",
+ "version": "1.0.0",
"description": "",
"main": "src/index.js",
"scripts": {
diff --git a/.ci/validation/src/index.ts b/.ci/validation/src/index.ts
index ce6b7055..ec8a28de 100644
--- a/.ci/validation/src/index.ts
+++ b/.ci/validation/src/index.ts
@@ -24,8 +24,7 @@ export module SWSchemaValidator {
const ajv = new Ajv({ strict: false, allowUnionTypes: true });
addFormats(ajv);
- const workflowSchemaId =
- "https://serverlessworkflow.io/schemas/1.0.0-alpha5/workflow.yaml";
+ const workflowSchemaId = "https://serverlessworkflow.io/schemas/1.0.0/workflow.yaml";
const schemaPath = "../../../schema";
export const defaultEncoding = "utf-8";
diff --git a/.ci/validation/test/fixtures/invalid/extra-property-in-call.yaml b/.ci/validation/test/fixtures/invalid/extra-property-in-call.yaml
index 095c3f4c..adf6a73f 100644
--- a/.ci/validation/test/fixtures/invalid/extra-property-in-call.yaml
+++ b/.ci/validation/test/fixtures/invalid/extra-property-in-call.yaml
@@ -1,5 +1,5 @@
document:
- dsl: '1.0.0-alpha5'
+ dsl: '1.0.0'
namespace: examples
name: two-tasks-in-one-item
version: '0.1.0'
diff --git a/.ci/validation/test/fixtures/invalid/listen-any-until-any-until.yaml b/.ci/validation/test/fixtures/invalid/listen-any-until-any-until.yaml
index c9f32f62..16033a2a 100644
--- a/.ci/validation/test/fixtures/invalid/listen-any-until-any-until.yaml
+++ b/.ci/validation/test/fixtures/invalid/listen-any-until-any-until.yaml
@@ -1,5 +1,5 @@
document:
- dsl: '1.0.0-alpha1'
+ dsl: '1.0.0'
namespace: test
name: listen-to-any
version: '0.1.0'
diff --git a/.ci/validation/test/fixtures/invalid/two-tasks-in-one-item.yaml b/.ci/validation/test/fixtures/invalid/two-tasks-in-one-item.yaml
index 21fda815..ba15a80d 100644
--- a/.ci/validation/test/fixtures/invalid/two-tasks-in-one-item.yaml
+++ b/.ci/validation/test/fixtures/invalid/two-tasks-in-one-item.yaml
@@ -1,5 +1,5 @@
document:
- dsl: '1.0.0-alpha5'
+ dsl: '1.0.0'
namespace: examples
name: two-tasks-in-one-item
version: '0.1.0'
diff --git a/.gitignore b/.gitignore
index 723ef36f..090a1f02 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1 +1,2 @@
-.idea
\ No newline at end of file
+.idea
+.DS_Store
diff --git a/README.md b/README.md
index daafec20..229797ac 100644
--- a/README.md
+++ b/README.md
@@ -57,7 +57,7 @@ It encompasses a comprehensive suite of components and tools designed to facilit
1. **[DSL](dsl.md) (Domain Specific Language)**: The core of the ecosystem, defining the fundamental syntax and semantics of Serverless Workflow specifications.
-2. **[CTK](/ctk/readme.md) (Conformance Test Kit)**: A set of Gherkin features utilized for both conformance testing and Behavior Driven Design (BDD), ensuring compliance and facilitating testing across implementations.
+2. **[CTK](/ctk/README.md) (Conformance Test Kit)**: A set of Gherkin features utilized for both conformance testing and Behavior Driven Design (BDD), ensuring compliance and facilitating testing across implementations.
3. **[SDKs](#sdks) (Software Development Kits)**: These enable developers to interact with serverless workflows in various programming languages, providing functionalities such as reading, writing, building, and validating workflows.
@@ -90,6 +90,7 @@ No matter your preferred language, our SDKs provide the tools you need to levera
| Name | About |
| --- | --- |
| [Apache KIE SonataFlow](https://sonataflow.org) | Apache KIE SonataFlow is a tool for building cloud-native workflow applications. You can use it to do the services and events orchestration and choreography. |
+| [Lemline](https://github.com/lemline/lemline) | Lemline is a highly scalable runtime running on top of your existing messaging infrastructure. |
| [Synapse](https://github.com/serverlessworkflow/synapse) | Synapse is a scalable, cross-platform, fully customizable platform for managing and running Serverless Workflows. |
### Tooling
@@ -112,8 +113,9 @@ It is a member project of the [CNCF Serverless Working Group](https://github.com
The documentation for Serverless Workflow includes:
-- [**DSL**](dsl.md): Documents the fundamentals aspects and concepts of the Serverless Workflow DSL
-- [**DSL Reference**](dsl-reference.md): References all the definitions used by the Serverless Workflow DSL
+- [**DSL**](dsl.md): Documents the fundamentals aspects and concepts of the Serverless Workflow DSL.
+- [**DSL Reference**](dsl-reference.md): References all the definitions used by the Serverless Workflow DSL.
+- [**Comparison**](comparison.md): See how Serverless Workflow compares to other DSLs.
- [**Examples**](./examples/README.md): A collection of practical examples demonstrating specific features and functionalities of Serverless Workflow.
- [**Use Cases**](./use-cases/README.md): Detailed use cases illustrating how Serverless Workflow can be applied in various real-world scenarios.
diff --git a/comparison.md b/comparison.md
new file mode 100644
index 00000000..d438cf89
--- /dev/null
+++ b/comparison.md
@@ -0,0 +1,83 @@
+# Workflow Comparison
+
+This document provides a detailed comparison of various workflow orchestration platforms, including **Serverless Workflow**, **AWS Step Functions**, **Google Workflows**, **Argo Workflows**, **BPMN Workflows**, **Prefect**, and **Dagster**. The comparison highlights the key features, pricing models, and the data manipulation capabilities of each platform. This guide aims to help you understand the core strengths and limitations of each platform and assist you in selecting the best workflow engine based on your use case.
+
+This comparison is intended for general informational purposes only. While every effort has been made to ensure accuracy, each workflow technology has its own unique features and capabilities. The descriptions provided are based on **out-of-the-box features** as of the latest available documentation. Some features may require additional configuration, extensions, or integrations. Users should verify specific features with the official documentation of each platform to ensure compatibility with their use cases.
+
+---
+
+## Overview
+
+In this section, we provide a high-level summary of each platform's key attributes, including core focus, definition language, ownership model, and pricing structure. This overview helps you understand the fundamental differences and similarities between the platforms, allowing you to evaluate which one best fits your needs and organizational requirements.
+
+| Trait | Serverless Workflow | AWS Step Functions | Google Workflows | Argo Workflows | BPMN Workflows | Prefect | Dagster |
+|----------------------------------|:-------------------:|:------------------:|:----------------:|:--------------:|:--------------:|:-------:|:-------:|
+| **Core Focus** | Event-driven & cloud-agnostic workflow orchestration | AWS service orchestration | Google Cloud service orchestration | Kubernetes-native workflow automation | Business process automation | Data pipeline orchestration | Data pipeline orchestration |
+| **Definition Language** | JSON/YAML | JSON | YAML | YAML | BPMN XML | Python | Python |
+| **Ownership** | Open-Source (CNCF) | Proprietary (AWS) | Proprietary (Google) | Open-Source (CNCF) | Open-Source (BPMN Standard) | Open-Source (Core) | Open-Source (Core) |
+| **Pricing Model** | Free | Paid | Paid | Free | Free | Free | Free |
+| **Cloud Integrations** | Agnostic | AWS | Google Cloud | Agnostic | Agnostic | Agnostic | Agnostic |
+| **Vendor Lock-In** | No | Yes | Yes | No | No | No | No |
+| **Portability** | High | Low | Low | High | High | High | High |
+| **Use Cases** | Event-driven processes, microservices orchestration, ETL, data transformation | AWS service automation, microservices coordination | Google Cloud service automation, API workflows | CI/CD, ML pipelines, Kubernetes-native workflows | Business process automation, human-centric workflows | ETL, data transformation, data pipeline orchestration | ETL, analytics, machine learning workflows |
+| **Extensibility** | High | Limited | Limited | High | High | High | High |
+| **Data Transformation Language** | jq, JavaScript | JSON Path | - | - | - | Python | Python |
+| **Business Logic Support** | High | Medium | Medium | High | High | High | High |
+| **Data Lineage** | Workflow and task level metadata, built-in logs | No native data lineage tracking | No native data lineage tracking | Workflow artifacts, limited data lineage capabilities | Process history tracking; manual tracing required | Data lineage tracking with extensive visualization and querying tools | Data lineage tracking with extensive visualization and querying tools |
+
+---
+
+## Features
+
+This section compares the core features of each platform, including data handling, execution control, event processing, and integration capabilities. We evaluate how each platform supports critical workflow orchestration functionalities, helping you assess their suitability for various use cases.
+
+| Feature | Serverless Workflow | AWS Step Functions | Google Workflows | Argo Workflows | BPMN Workflows | Prefect | Dagster |
+|------------------------------|:-------------------:|:------------------:|:----------------:|:--------------:|:--------------:|:-------:|:-------:|
+| **Retries** | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
+| **Timeouts** | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
+| **Error Handling** | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
+| **Error Propagation** | ✅ | ❌ | ❌ | ❌ | ✅ | ✅ | ✅ |
+| **Parallel Execution** | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
+| **Iterative Execution** | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
+| **Subflow Execution** | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
+| **Conditional Execution** | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
+| **Lifecycle Reporting** | ✅ | ❌ | ❌ | ✅ | ✅ | ✅ | ✅ |
+| **Event Emission** | ✅ | ✅ | ✅ | ✅ | ✅ | ❌ | ❌ |
+| **Event Correlation** | ✅ | ❌ | ❌ | ❌ | ✅ | ❌ | ❌ |
+| **Event Streaming** | ✅ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ |
+| **Complex Event Processing** | ✅ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ |
+| **Custom Execution Units** | ✅ | ❌ | ❌ | ✅ | ✅ | ✅ | ✅ |
+| **Execution Interception** | ✅ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ |
+| **OpenAPI Execution** | ✅ | ❌ | ✅ | ❌ | ❌ | ❌ | ❌ |
+| **AsyncAPI Execution** | ✅ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ |
+| **HTTP Execution** | ✅ | ✅ | ✅ | ✅ | ❌ | ✅ | ✅ |
+| **GRPC Execution** | ✅ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ |
+| **Script Execution** | ✅ | ❌ | ❌ | ✅ | ❌ | ✅ | ✅ |
+| **Container Execution** | ✅ | ❌ | ❌ | ✅ | ❌ | ❌ | ❌ |
+| **Data Filtering** | ✅ | ❌ | ✅ | ✅ | ✅ | ✅ | ✅ |
+| **Data Mutation** | ✅ | ❌ | ✅ | ✅ | ✅ | ✅ | ✅ |
+| **Data Context Management** | ✅ | ❌ | ❌ | ✅ | ✅ | ✅ | ✅ |
+| **Event-based Triggering** | ✅ | ✅ | ✅ | ✅ | ✅ | ❌ | ❌ |
+| **CRON-based Triggering** | ✅ | ❌ | ❌ | ✅ | ✅ | ✅ | ✅ |
+| **Delayed Triggering** | ✅ | ❌ | ❌ | ✅ | ✅ | ✅ | ✅ |
+
+---
+
+## Key Takeaways
+
+- **Event-Driven & Cloud-Agnostic**: **Serverless Workflow** shines with its **cloud-agnostic** design, enabling seamless orchestration across multiple cloud providers and on-prem environments. Whether you're running workflows in AWS, GCP, or any other cloud, it adapts to your infrastructure.
+
+- **Advanced Event Handling**: **Serverless Workflow** excels in **event-driven orchestration**, supporting **event streaming**, **complex event processing**, and **event correlation**, out of the box. This makes it an ideal choice for dynamic, event-driven architectures, offering real-time data processing capabilities that many other platforms lack.
+
+- **Flexible Data Manipulation**: With full support for **runtime expressions**, **Serverless Workflow** enables advanced data filtering, mutation, and evaluation using expression languages like **JavaScript** and **jq**, giving you the power to manipulate and transform data directly within workflows.
+
+- **Scalability & Extensibility**: Built for scalability, **Serverless Workflow** integrates effortlessly into microservice architectures and supports custom execution units and extensions. You can define and extend workflows as per your needs, enabling customized workflows that grow with your business.
+
+- **No Vendor Lock-In**: Unlike proprietary services, **Serverless Workflow** is open-source and cloud-agnostic, ensuring **no vendor lock-in**. You have full control over deployment and execution, allowing you to avoid reliance on a single cloud provider.
+
+- **Robust Monitoring & Reporting**: With built-in **lifecycle reporting**, **Serverless Workflow** provides comprehensive insights into your workflow execution. Real-time monitoring, task-level metadata, and detailed logs help you maintain visibility and ensure smooth operations.
+
+**Serverless Workflow** stands out as the ideal solution for businesses seeking flexibility, scalability, and advanced event-driven processing without the constraints of proprietary platforms. Whether you are orchestrating complex workflows, integrating cloud services, or managing large-scale data transformations, **Serverless Workflow** is built to scale with your needs and help you stay ahead.
+
+---
+
diff --git a/ctk/features/branch.feature b/ctk/features/branch.feature
index 481f73ad..3fa03df4 100644
--- a/ctk/features/branch.feature
+++ b/ctk/features/branch.feature
@@ -8,7 +8,7 @@ Feature: Composite Task
Given a workflow with definition:
"""yaml
document:
- dsl: '1.0.0-alpha5'
+ dsl: '1.0.0'
namespace: default
name: fork
version: '1.0.0'
diff --git a/ctk/features/call.feature b/ctk/features/call.feature
index c78f894f..f5425918 100644
--- a/ctk/features/call.feature
+++ b/ctk/features/call.feature
@@ -11,7 +11,7 @@ Feature: Call Task
Given a workflow with definition:
"""yaml
document:
- dsl: '1.0.0-alpha5'
+ dsl: '1.0.0'
namespace: default
name: http-call-with-content-output
version: '1.0.0'
@@ -40,7 +40,7 @@ Feature: Call Task
Given a workflow with definition:
"""yaml
document:
- dsl: '1.0.0-alpha5'
+ dsl: '1.0.0'
namespace: default
name: http-call-with-response-output
version: '1.0.0'
@@ -68,7 +68,7 @@ Feature: Call Task
Given a workflow with definition:
"""yaml
document:
- dsl: '1.0.0-alpha5'
+ dsl: '1.0.0'
namespace: default
name: http-call-with-basic-auth
version: '1.0.0'
@@ -98,7 +98,7 @@ Feature: Call Task
Given a workflow with definition:
"""yaml
document:
- dsl: '1.0.0-alpha5'
+ dsl: '1.0.0'
namespace: default
name: openapi-call-with-content-output
version: '1.0.0'
@@ -127,7 +127,7 @@ Feature: Call Task
Given a workflow with definition:
"""yaml
document:
- dsl: '1.0.0-alpha5'
+ dsl: '1.0.0'
namespace: default
name: openapi-call-with-response-output
version: '1.0.0'
diff --git a/ctk/features/data-flow.feature b/ctk/features/data-flow.feature
index 73b4af5b..01faa9eb 100644
--- a/ctk/features/data-flow.feature
+++ b/ctk/features/data-flow.feature
@@ -8,7 +8,7 @@ Feature: Data Flow
Given a workflow with definition:
"""yaml
document:
- dsl: '1.0.0-alpha5'
+ dsl: '1.0.0'
namespace: default
name: output-filtering
version: '1.0.0'
@@ -36,7 +36,7 @@ Feature: Data Flow
Given a workflow with definition:
"""yaml
document:
- dsl: '1.0.0-alpha5'
+ dsl: '1.0.0'
namespace: default
name: output-filtering
version: '1.0.0'
@@ -65,7 +65,7 @@ Feature: Data Flow
Given a workflow with definition:
"""yaml
document:
- dsl: '1.0.0-alpha5'
+ dsl: '1.0.0'
namespace: default
name: non-object-output
version: '1.0.0'
diff --git a/ctk/features/do.feature b/ctk/features/do.feature
index 9c894190..3831e3a0 100644
--- a/ctk/features/do.feature
+++ b/ctk/features/do.feature
@@ -8,7 +8,7 @@ Feature: Composite Task
Given a workflow with definition:
"""yaml
document:
- dsl: '1.0.0-alpha5'
+ dsl: '1.0.0'
namespace: default
name: do
version: '1.0.0'
diff --git a/ctk/features/emit.feature b/ctk/features/emit.feature
index 9e33df05..ef3a7815 100644
--- a/ctk/features/emit.feature
+++ b/ctk/features/emit.feature
@@ -8,7 +8,7 @@ Feature: Emit Task
Given a workflow with definition:
"""yaml
document:
- dsl: '1.0.0-alpha5'
+ dsl: '1.0.0'
namespace: default
name: emit
version: '1.0.0'
diff --git a/ctk/features/flow.feature b/ctk/features/flow.feature
index b5a7b3fe..b27d15a4 100644
--- a/ctk/features/flow.feature
+++ b/ctk/features/flow.feature
@@ -7,7 +7,7 @@ Feature: Flow Directive
Given a workflow with definition:
"""yaml
document:
- dsl: '1.0.0-alpha5'
+ dsl: '1.0.0'
namespace: default
name: implicit-sequence
version: '1.0.0'
@@ -35,7 +35,7 @@ Feature: Flow Directive
Given a workflow with definition:
"""yaml
document:
- dsl: '1.0.0-alpha5'
+ dsl: '1.0.0'
namespace: default
name: explicit-sequence
version: '1.0.0'
diff --git a/ctk/features/for.feature b/ctk/features/for.feature
index c36bf65b..92cc94df 100644
--- a/ctk/features/for.feature
+++ b/ctk/features/for.feature
@@ -10,7 +10,7 @@ Feature: For Task
Given a workflow with definition:
"""yaml
document:
- dsl: '1.0.0-alpha5'
+ dsl: '1.0.0'
namespace: default
name: for
version: '1.0.0'
diff --git a/ctk/features/raise.feature b/ctk/features/raise.feature
index f4d02221..b1ecf179 100644
--- a/ctk/features/raise.feature
+++ b/ctk/features/raise.feature
@@ -7,7 +7,7 @@ Feature: Raise Task
Given a workflow with definition:
"""yaml
document:
- dsl: '1.0.0-alpha5'
+ dsl: '1.0.0'
namespace: default
name: raise-custom-error
version: '1.0.0'
diff --git a/ctk/features/set.feature b/ctk/features/set.feature
index eaae30f1..56d71fd7 100644
--- a/ctk/features/set.feature
+++ b/ctk/features/set.feature
@@ -8,7 +8,7 @@ Feature: Set Task
Given a workflow with definition:
"""yaml
document:
- dsl: '1.0.0-alpha5'
+ dsl: '1.0.0'
namespace: default
name: set
version: '1.0.0'
diff --git a/ctk/features/switch.feature b/ctk/features/switch.feature
index e56c5dc4..567398e1 100644
--- a/ctk/features/switch.feature
+++ b/ctk/features/switch.feature
@@ -7,7 +7,7 @@ Feature: Switch Task
Given a workflow with definition:
"""yaml
document:
- dsl: '1.0.0-alpha5'
+ dsl: '1.0.0'
namespace: default
name: switch-match
version: '1.0.0'
@@ -52,7 +52,7 @@ Feature: Switch Task
Given a workflow with definition:
"""yaml
document:
- dsl: '1.0.0-alpha5'
+ dsl: '1.0.0'
namespace: default
name: switch-default-implicit
version: '1.0.0'
@@ -95,7 +95,7 @@ Feature: Switch Task
Given a workflow with definition:
"""yaml
document:
- dsl: '1.0.0-alpha5'
+ dsl: '1.0.0'
namespace: default
name: switch-default-implicit
version: '1.0.0'
diff --git a/ctk/features/try.feature b/ctk/features/try.feature
index 404e5604..6ac7800c 100644
--- a/ctk/features/try.feature
+++ b/ctk/features/try.feature
@@ -11,7 +11,7 @@ Feature: Try Task
Given a workflow with definition:
"""yaml
document:
- dsl: '1.0.0-alpha5'
+ dsl: '1.0.0'
namespace: default
name: try-catch-404
version: '1.0.0'
@@ -55,7 +55,7 @@ Feature: Try Task
Given a workflow with definition:
"""yaml
document:
- dsl: '1.0.0-alpha5'
+ dsl: '1.0.0'
namespace: default
name: try-catch-503
version: '1.0.0'
diff --git a/dsl-reference.md b/dsl-reference.md
index 01172417..a6a9e9e3 100644
--- a/dsl-reference.md
+++ b/dsl-reference.md
@@ -101,7 +101,7 @@ A [workflow](#workflow) serves as a blueprint outlining the series of [tasks](#t
| document | [`document`](#document) | `yes` | Documents the defined workflow. |
| input | [`input`](#input) | `no` | Configures the workflow's input. |
| use | [`use`](#use) | `no` | Defines the workflow's reusable components, if any. |
-| do | [`map[string, task][]`](#task) | `yes` | The [task(s)](#task) that must be performed by the [workflow](#workflow). |
+| do | [`map[string, task]`](#task) | `yes` | The [task(s)](#task) that must be performed by the [workflow](#workflow). |
| timeout | `string`
[`timeout`](#timeout) | `no` | The configuration, if any, of the workflow's timeout.
*If a `string`, must be the name of a [timeout](#timeout) defined in the [workflow's reusable components](#use).* |
| output | [`output`](#output) | `no` | Configures the workflow's output. |
| schedule | [`schedule`](#schedule) | `no` | Configures the workflow's schedule, if any. |
@@ -129,9 +129,9 @@ Defines the workflow's reusable components.
| Name | Type | Required | Description|
|:--|:---:|:---:|:---|
| authentications | [`map[string, authentication]`](#authentication) | `no` | A name/value mapping of the workflow's reusable authentication policies. |
-| catalogs | [`map[string, catalog]`(#catalog)] | `no` | A name/value mapping of the workflow's reusable resource catalogs. |
+| catalogs | [`map[string, catalog]`](#catalog) | `no` | A name/value mapping of the workflow's reusable resource catalogs. |
| errors | [`map[string, error]`](#error) | `no` | A name/value mapping of the workflow's reusable errors. |
-| extensions | [`map[string, extension][]`](#extension) | `no` | A list of the workflow's reusable extensions. |
+| extensions | [`map[string, extension]`](#extension) | `no` | A list of the workflow's reusable extensions. |
| functions | [`map[string, task]`](#task) | `no` | A name/value mapping of the workflow's reusable tasks. |
| retries | [`map[string, retryPolicy]`](#retry) | `no` | A name/value mapping of the workflow's reusable retry policies. |
| secrets | `string[]` | `no` | A list containing the workflow's secrets. |
@@ -161,7 +161,7 @@ Configures a workflow's runtime expression evaluation.
```yaml
document:
- dsl: '1.0.0-alpha5'
+ dsl: '1.0.0'
namespace: test
name: order-pet
version: '0.1.0'
@@ -302,7 +302,7 @@ Enables the execution of a specified function within a workflow, allowing seamle
```yaml
document:
- dsl: '1.0.0-alpha5'
+ dsl: '1.0.0'
namespace: test
name: call-example
version: '0.1.0'
@@ -342,7 +342,7 @@ The [AsyncAPI Call](#asyncapi-call) enables workflows to interact with external
```yaml
document:
- dsl: '1.0.0-alpha5'
+ dsl: '1.0.0'
namespace: test
name: asyncapi-example
version: '0.1.0'
@@ -398,7 +398,7 @@ The [gRPC Call](#grpc-call) enables communication with external systems via the
```yaml
document:
- dsl: '1.0.0-alpha5'
+ dsl: '1.0.0'
namespace: test
name: grpc-example
version: '0.1.0'
@@ -437,7 +437,7 @@ The [HTTP Call](#http-call) enables workflows to interact with external services
```yaml
document:
- dsl: '1.0.0-alpha5'
+ dsl: '1.0.0'
namespace: test
name: http-example
version: '0.1.0'
@@ -468,7 +468,7 @@ The [OpenAPI Call](#openapi-call) enables workflows to interact with external se
```yaml
document:
- dsl: '1.0.0-alpha5'
+ dsl: '1.0.0'
namespace: test
name: openapi-example
version: '0.1.0'
@@ -491,13 +491,13 @@ Serves as a fundamental building block within workflows, enabling the sequential
| Name | Type | Required | Description|
|:--|:---:|:---:|:---|
-| do | [`map[string, task][]`](#task) | `no` | The tasks to perform sequentially. |
+| do | [`map[string, task]`](#task) | `no` | The tasks to perform sequentially. |
##### Examples
```yaml
document:
- dsl: '1.0.0-alpha5'
+ dsl: '1.0.0'
namespace: test
name: do-example
version: '0.1.0'
@@ -562,7 +562,7 @@ Allows workflows to publish events to event brokers or messaging systems, facili
```yaml
document:
- dsl: '1.0.0-alpha5'
+ dsl: '1.0.0'
namespace: test
name: emit-example
version: '0.1.0'
@@ -594,13 +594,13 @@ Allows workflows to iterate over a collection of items, executing a defined set
| for.in | `string` | `yes` | A [runtime expression](dsl.md#runtime-expressions) used to get the collection to enumerate. |
| for.at | `string` | `no` | The name of the variable used to store the index of the current item being enumerated.
Defaults to `index`. |
| while | `string` | `no` | A [runtime expression](dsl.md#runtime-expressions) that represents the condition, if any, that must be met for the iteration to continue. |
-| do | [`task`](#task) | `yes` | The task to perform for each item in the collection. |
+| do | [`map[string, task]`](#task) | `yes` | The [task(s)](#task) to perform for each item in the collection. |
##### Examples
```yaml
document:
- dsl: '1.0.0-alpha5'
+ dsl: '1.0.0'
namespace: test
name: for-example
version: '0.1.0'
@@ -630,14 +630,14 @@ Allows workflows to execute multiple subtasks concurrently, enabling parallel pr
| Name | Type | Required | Description|
|:--|:---:|:---:|:---|
-| fork.branches | [`map[string, task][]`](#task) | `no` | The tasks to perform concurrently. |
+| fork.branches | [`map[string, task]`](#task) | `no` | The tasks to perform concurrently. |
| fork.compete | `boolean` | `no` | Indicates whether or not the concurrent [`tasks`](#task) are racing against each other, with a single possible winner, which sets the composite task's output.
*If set to `false`, the task returns an array that includes the outputs from each branch, preserving the order in which the branches are declared.*
*If to `true`, the task returns only the output of the winning branch.*
*Defaults to `false`.* |
##### Examples
```yaml
document:
- dsl: '1.0.0-alpha5'
+ dsl: '1.0.0'
namespace: test
name: fork-example
version: '0.1.0'
@@ -690,7 +690,7 @@ Provides a mechanism for workflows to await and react to external events, enabli
```yaml
document:
- dsl: '1.0.0-alpha5'
+ dsl: '1.0.0'
namespace: test
name: listen-example
version: '0.1.0'
@@ -721,7 +721,7 @@ Intentionally triggers and propagates errors. By employing the "Raise" task, wor
```yaml
document:
- dsl: '1.0.0-alpha5'
+ dsl: '1.0.0'
namespace: test
name: raise-example
version: '0.1.0'
@@ -788,7 +788,7 @@ Provides the capability to execute external [containers](#container-process), [s
```yaml
document:
- dsl: '1.0.0-alpha5'
+ dsl: '1.0.0'
namespace: test
name: run-example
version: '0.1.0'
@@ -839,7 +839,7 @@ Enables the execution of external processes encapsulated within a containerized
```yaml
document:
- dsl: '1.0.0-alpha5'
+ dsl: '1.0.0'
namespace: test
name: run-container-example
version: '0.1.0'
@@ -882,7 +882,7 @@ Enables the execution of custom scripts or code within a workflow, empowering wo
```yaml
document:
- dsl: '1.0.0-alpha5'
+ dsl: '1.0.0'
namespace: test
name: run-script-example
version: '0.1.0'
@@ -913,7 +913,7 @@ Enables the execution of shell commands within a workflow, enabling workflows to
```yaml
document:
- dsl: '1.0.0-alpha5'
+ dsl: '1.0.0'
namespace: test
name: run-shell-example
version: '0.1.0'
@@ -940,7 +940,7 @@ Enables the invocation and execution of nested workflows within a parent workflo
```yaml
document:
- dsl: '1.0.0-alpha5'
+ dsl: '1.0.0'
namespace: test
name: run-workflow-example
version: '0.1.0'
@@ -962,14 +962,14 @@ A task used to set data.
##### Properties
| Name | Type | Required | Description |
-|:--|:---:|:---:|:---|
-| set | `object` | `yes` | A name/value mapping of the data to set. |
+|:-------|:------:|:----------:|:-------------|
+| set | `map`
`string` | `yes` | The data to set.
*Can be an object or a direct runtime expression.* |
##### Examples
```yaml
document:
- dsl: '1.0.0-alpha5'
+ dsl: '1.0.0'
namespace: default
name: set-example
version: '0.1.0'
@@ -979,6 +979,8 @@ do:
shape: circle
size: ${ .configuration.size }
fill: ${ .configuration.fill }
+ - setColor:
+ set: ${ .configuration.color }
```
#### Switch
@@ -995,7 +997,7 @@ Enables conditional branching within workflows, allowing them to dynamically sel
```yaml
document:
- dsl: '1.0.0-alpha5'
+ dsl: '1.0.0'
namespace: test
name: switch-example
version: '0.1.0'
@@ -1072,14 +1074,14 @@ Serves as a mechanism within workflows to handle errors gracefully, potentially
| Name | Type | Required | Description|
|:--|:---:|:---:|:---|
-| try | [`map[string, task][]`](#task) | `yes` | The task(s) to perform. |
+| try | [`map[string, task]`](#task) | `yes` | The task(s) to perform. |
| catch | [`catch`](#catch) | `yes` | Configures the errors to catch and how to handle them. |
##### Examples
```yaml
document:
- dsl: '1.0.0-alpha5'
+ dsl: '1.0.0'
namespace: test
name: try-example
version: '0.1.0'
@@ -1115,12 +1117,12 @@ Defines the configuration of a catch clause, which a concept used to catch error
| Name | Type | Required | Description |
|:--|:---:|:---:|:---|
-| errors | [`errorFilter`](#retry) | `no` | The definition of the errors to catch. |
+| errors | [`errorFilter`](#error) | `no` | The definition of the errors to catch. |
| as | `string` | `no` | The name of the runtime expression variable to save the error as. Defaults to 'error'. |
| when | `string`| `no` | A runtime expression used to determine whether or not to catch the filtered error. |
| exceptWhen | `string` | `no` | A runtime expression used to determine whether or not to catch the filtered error. |
| retry | `string`
[`retryPolicy`](#retry) | `no` | The [`retry policy`](#retry) to use, if any, when catching [`errors`](#error).
*If a `string`, must be the name of a [retry policy](#retry) defined in the [workflow's reusable components](#use).* |
-| do | [`map[string, task][]`](#task) | `no` | The definition of the task(s) to run when catching an error. |
+| do | [`map[string, task]`](#task) | `no` | The definition of the task(s) to run when catching an error. |
#### Wait
@@ -1136,7 +1138,7 @@ Allows workflows to pause or delay their execution for a specified period of tim
```yaml
document:
- dsl: '1.0.0-alpha5'
+ dsl: '1.0.0'
namespace: test
name: wait-example
version: '0.1.0'
@@ -1153,9 +1155,12 @@ Flow Directives are commands within a workflow that dictate its progression.
| Directive | Description |
| --------- | ----------- |
| `"continue"` | Instructs the workflow to proceed with the next task in line. This action may conclude the execution of a particular workflow or branch if there are not task defined after the continue one. |
-| `"exit"` | Halts the current branch's execution, potentially terminating the entire workflow if the current task resides within the main branch. |
+| `"exit"` | Completes the current scope's execution, potentially terminating the entire workflow if the current task resides within the main `do` scope. |
| `"end"` | Provides a graceful conclusion to the workflow execution, signaling its completion explicitly. |
-| `string` | Continues the workflow at the task with the specified name |
+| `string` | Continues the workflow at the task with the specified name. |
+
+> [!WARNING]
+> Flow directives may only redirect to tasks declared within their own scope. In other words, they cannot target tasks at a different depth.
### Lifecycle Events
@@ -1540,9 +1545,6 @@ updatedAt: '2024-07-26T16:59:57-05:00'
status: completed
```
-> [!WARNING]
-> Flow directives may only redirect to tasks declared within their own scope. In other words, they cannot target tasks at a different depth.
-
### External Resource
Defines an external resource.
@@ -1586,7 +1588,7 @@ Defines the mechanism used to authenticate users and workflows attempting to acc
```yaml
document:
- dsl: '1.0.0-alpha5'
+ dsl: '1.0.0'
namespace: test
name: authentication-example
version: '0.1.0'
@@ -1623,7 +1625,7 @@ Defines the fundamentals of a 'basic' authentication.
```yaml
document:
- dsl: '1.0.0-alpha5'
+ dsl: '1.0.0'
namespace: test
name: basic-authentication-example
version: '0.1.0'
@@ -1658,7 +1660,7 @@ Defines the fundamentals of a 'bearer' authentication
```yaml
document:
- dsl: '1.0.0-alpha5'
+ dsl: '1.0.0'
namespace: test
name: bearer-authentication-example
version: '0.1.0'
@@ -1692,7 +1694,7 @@ Defines the fundamentals of a 'digest' authentication.
```yaml
document:
- dsl: '1.0.0-alpha5'
+ dsl: '1.0.0'
namespace: test
name: digest-authentication-example
version: '0.1.0'
@@ -1743,7 +1745,7 @@ Defines the fundamentals of an 'oauth2' authentication.
```yaml
document:
- dsl: '1.0.0-alpha5'
+ dsl: '1.0.0'
namespace: test
name: oauth2-authentication-example
version: '0.1.0'
@@ -1805,7 +1807,7 @@ Defines the fundamentals of an 'oidc' authentication.
```yaml
document:
- dsl: '1.0.0-alpha5'
+ dsl: '1.0.0'
namespace: test
name: oidc-authentication-example
version: '0.1.0'
@@ -1845,7 +1847,7 @@ For more information about catalogs, refer to the [Serverless Workflow DSL docum
```yaml
document:
- dsl: '1.0.0-alpha5'
+ dsl: '1.0.0'
namespace: test
name: catalog-example
version: '0.1.0'
@@ -1877,15 +1879,15 @@ Extensions enable the execution of tasks prior to those they extend, offering th
|----------|:----:|:--------:|-------------|
| extend | `string` | `yes` | The type of task to extend
Supported values are: `call`, `composite`, `emit`, `extension`, `for`, `listen`, `raise`, `run`, `set`, `switch`, `try`, `wait` and `all` |
| when | `string` | `no` | A runtime expression used to determine whether or not the extension should apply in the specified context |
-| before | [`map[string, task][]`](#task) | `no` | The task to execute, if any, before the extended task |
-| after | [`map[string, task][]`](#task) | `no` | The task to execute, if any, after the extended task |
+| before | [`map[string, task]`](#task) | `no` | The task to execute, if any, before the extended task |
+| after | [`map[string, task]`](#task) | `no` | The task to execute, if any, after the extended task |
#### Examples
*Perform logging before and after any non-extension task is run:*
```yaml
document:
- dsl: '1.0.0-alpha5'
+ dsl: '1.0.0'
namespace: test
name: logging-extension-example
version: '0.1.0'
@@ -1920,7 +1922,7 @@ do:
*Intercept HTTP calls to 'https://mocked.service.com' and mock its response:*
```yaml
document:
- dsl: '1.0.0-alpha5'
+ dsl: '1.0.0'
namespace: test
name: intercept-extension-example
version: '0.1.0'
@@ -1958,8 +1960,8 @@ Defines the [Problem Details RFC](https://datatracker.ietf.org/doc/html/rfc7807)
| type | [`uri-template`](#uri-template) | `yes` | A URI reference that identifies the [`error`](#error) type.
For cross-compatibility concerns, it is strongly recommended to use [Standard Error Types](#standard-error-types) whenever possible.
Runtimes **MUST** ensure that the property has been set when raising or escalating the [`error`](#error). |
| status | `integer` | `yes` | The status code generated by the origin for this occurrence of the [`error`](#error).
For cross-compatibility concerns, it is strongly recommended to use [HTTP Status Codes](https://datatracker.ietf.org/doc/html/rfc7231#section-6) whenever possible.
Runtimes **MUST** ensure that the property has been set when raising or escalating the [`error`](#error). |
| instance | `string` | `no` | A [JSON Pointer](https://datatracker.ietf.org/doc/html/rfc6901) used to reference the component the [`error`](#error) originates from.
Runtimes **MUST** set the property when raising or escalating the [`error`](#error). Otherwise ignore. |
-| title | `string` | `no` | A short, human-readable summary of the [`error`](#error). |
-| detail | `string` | `no` | A human-readable explanation specific to this occurrence of the [`error`](#error). |
+| title | `string` | `no` | A short, human-readable summary of the [`error`](#error) or a [runtime expression](dsl.md#runtime-expressions) |
+| detail | `string` | `no` | A human-readable explanation specific to this occurrence of the [`error`](#error) or a [runtime expression](dsl.md#runtime-expressions) |
#### Examples
@@ -2236,7 +2238,7 @@ Defines a workflow or task timeout.
```yaml
document:
- dsl: '1.0.0-alpha5'
+ dsl: '1.0.0'
namespace: default
name: timeout-example
version: '0.1.0'
@@ -2378,7 +2380,7 @@ Describes the result of a process.
```yaml
document:
- dsl: '1.0.0-alpha5'
+ dsl: '1.0.0'
namespace: test
name: run-container-example
version: '0.1.0'
@@ -2432,7 +2434,7 @@ Configures the target server of an AsyncAPI operation.
```yaml
document:
- dsl: '1.0.0-alpha5'
+ dsl: '1.0.0'
namespace: test
name: asyncapi-example
version: '0.1.0'
@@ -2470,7 +2472,7 @@ Configures an AsyncAPI message to publish.
```yaml
document:
- dsl: '1.0.0-alpha5'
+ dsl: '1.0.0'
namespace: test
name: asyncapi-example
version: '0.1.0'
@@ -2535,7 +2537,7 @@ Configures a subscription to an AsyncAPI operation.
```yaml
document:
- dsl: '1.0.0-alpha5'
+ dsl: '1.0.0'
namespace: test
name: asyncapi-example
version: '0.1.0'
@@ -2572,7 +2574,7 @@ Configures the lifetime of an AsyncAPI subscription
```yaml
document:
- dsl: '1.0.0-alpha5'
+ dsl: '1.0.0'
namespace: test
name: asyncapi-example
version: '0.1.0'
@@ -2602,7 +2604,7 @@ Configures the iteration over each item (event or message) consumed by a subscri
|:-----|:----:|:--------:|:------------|
| item | `string` | `no` | The name of the variable used to store the current item being enumerated.
*Defaults to `item`.* |
| at | `string` | `no` | The name of the variable used to store the index of the current item being enumerated.
*Defaults to `index`.* |
-| do | [`map[string, task][]`](#task) | `no` | The tasks to perform for each consumed item. |
+| do | [`map[string, task]`](#task) | `no` | The tasks to perform for each consumed item. |
| output | [`output`](#output) | `no` | An object, if any, used to customize the item's output and to document its schema. |
| export | [`export`](#export) | `no` | An object, if any, used to customize the content of the workflow context. |
@@ -2610,7 +2612,7 @@ Configures the iteration over each item (event or message) consumed by a subscri
```yaml
document:
- dsl: '1.0.0-alpha5'
+ dsl: '1.0.0'
namespace: test
name: asyncapi-example
version: '0.1.0'
diff --git a/dsl.md b/dsl.md
index bd41c32c..747a123f 100644
--- a/dsl.md
+++ b/dsl.md
@@ -241,7 +241,7 @@ Before the workflow starts, the input data provided to the workflow can be valid
The execution only proceeds if the input is valid. Otherwise, it will fault with a [ValidationError (https://serverlessworkflow.io/spec/1.0.0/errors/validation)](dsl-reference.md#error).
2. **Transform Workflow Input**
-Before the workflow starts, the input data provided to the workflow can be transformed to ensure only relevant data in the expected format is passed into the workflow context. This can be done using the top level `input.from` expression. It evaluates on the raw workflow input and defaults to the identity expression which leaves the input unchanged. This step allows the workflow to start with a clean and focused dataset, reducing potential overhead and complexity in subsequent tasks. The result of this expression will set as the initial value for the `$context` runtime expression argument and be passed to the first task.
+Before the workflow starts, the input data provided to the workflow can be transformed to ensure only relevant data in the expected format is passed into the workflow context. This can be done using the top level `input.from` expression. It evaluates on the raw workflow input and defaults to the identity expression which leaves the input unchanged. This step allows the workflow to start with a clean and focused dataset, reducing potential overhead and complexity in subsequent tasks. The result of this expression will set as the initial value for the `$input` runtime expression argument and be passed to the first task.
*Example: If the workflow receives a JSON object as input, a transformation can be applied to remove unnecessary fields and retain only those that are required for the workflow's execution.*
@@ -566,7 +566,7 @@ This format ensures that the function, its version, and the catalog it belongs t
*Calling a custom function defined within a catalog:*
```yaml
document:
- dsl: '1.0.0-alpha5'
+ dsl: '1.0.0'
namespace: test
name: catalog-example
version: '0.1.0'
@@ -667,7 +667,7 @@ The following example demonstrates how to use the `validateEmailAddress` custom
```yaml
# workflow.yaml
document:
- dsl: '1.0.0-alpha5'
+ dsl: '1.0.0'
namespace: default
name: customFunctionWorkflow
version: '0.1.0'
@@ -735,7 +735,7 @@ See the [DSL reference](dsl-reference.md#extension) for more details about exten
*Sample logging extension:*
```yaml
document:
- dsl: '1.0.0-alpha5'
+ dsl: '1.0.0'
namespace: test
name: sample-workflow
version: '0.1.0'
diff --git a/examples/accumulate-room-readings.yaml b/examples/accumulate-room-readings.yaml
index 82fc7a02..306652e0 100644
--- a/examples/accumulate-room-readings.yaml
+++ b/examples/accumulate-room-readings.yaml
@@ -1,5 +1,5 @@
document:
- dsl: '1.0.0-alpha5'
+ dsl: '1.0.0'
namespace: examples
name: accumulate-room-readings
version: '0.1.0'
diff --git a/examples/authentication-bearer-uri-format.yaml b/examples/authentication-bearer-uri-format.yaml
index b0019fbb..e68f3f05 100644
--- a/examples/authentication-bearer-uri-format.yaml
+++ b/examples/authentication-bearer-uri-format.yaml
@@ -1,5 +1,5 @@
document:
- dsl: '1.0.0-alpha5'
+ dsl: '1.0.0'
namespace: examples
name: bearer-auth
version: '0.1.0'
diff --git a/examples/authentication-bearer.yaml b/examples/authentication-bearer.yaml
index f0c42741..c064038a 100644
--- a/examples/authentication-bearer.yaml
+++ b/examples/authentication-bearer.yaml
@@ -1,5 +1,5 @@
document:
- dsl: '1.0.0-alpha5'
+ dsl: '1.0.0'
namespace: examples
name: bearer-auth-uri-format
version: '0.1.0'
diff --git a/examples/authentication-oauth2-secret.yaml b/examples/authentication-oauth2-secret.yaml
index 635076ab..18ce2a28 100644
--- a/examples/authentication-oauth2-secret.yaml
+++ b/examples/authentication-oauth2-secret.yaml
@@ -1,8 +1,8 @@
document:
- dsl: 1.0.0-alpha1
+ dsl: '1.0.0'
namespace: examples
name: oauth2-authentication
- version: 1.0.0-alpha1
+ version: '1.0.0'
use:
secrets:
- mySecret
diff --git a/examples/authentication-oauth2.yaml b/examples/authentication-oauth2.yaml
index 625a1e2c..9008ac7d 100644
--- a/examples/authentication-oauth2.yaml
+++ b/examples/authentication-oauth2.yaml
@@ -1,5 +1,5 @@
document:
- dsl: '1.0.0-alpha5'
+ dsl: '1.0.0'
namespace: examples
name: oauth2-authentication
version: '0.1.0'
diff --git a/examples/authentication-oidc-secret.yaml b/examples/authentication-oidc-secret.yaml
index 19c387c1..f37cca5d 100644
--- a/examples/authentication-oidc-secret.yaml
+++ b/examples/authentication-oidc-secret.yaml
@@ -1,8 +1,8 @@
document:
- dsl: 1.0.0-alpha1
+ dsl: '1.0.0'
namespace: examples
name: oidc-authentication
- version: 1.0.0-alpha1
+ version: '1.0.0'
use:
secrets:
- mySecret
diff --git a/examples/authentication-oidc.yaml b/examples/authentication-oidc.yaml
index 18aec74d..c23d3b71 100644
--- a/examples/authentication-oidc.yaml
+++ b/examples/authentication-oidc.yaml
@@ -1,5 +1,5 @@
document:
- dsl: '1.0.0-alpha5'
+ dsl: '1.0.0'
namespace: examples
name: oidc-authentication
version: '0.1.0'
diff --git a/examples/authentication-reusable.yaml b/examples/authentication-reusable.yaml
index a5da803d..cdabf302 100644
--- a/examples/authentication-reusable.yaml
+++ b/examples/authentication-reusable.yaml
@@ -1,5 +1,5 @@
document:
- dsl: '1.0.0-alpha5'
+ dsl: '1.0.0'
namespace: examples
name: bearer-auth
version: '0.1.0'
diff --git a/examples/call-asyncapi-publish.yaml b/examples/call-asyncapi-publish.yaml
index 93438242..285b8b22 100644
--- a/examples/call-asyncapi-publish.yaml
+++ b/examples/call-asyncapi-publish.yaml
@@ -1,5 +1,5 @@
document:
- dsl: '1.0.0-alpha5'
+ dsl: '1.0.0'
namespace: examples
name: bearer-auth
version: '0.1.0'
diff --git a/examples/call-asyncapi-subscribe-consume-amount.yaml b/examples/call-asyncapi-subscribe-consume-amount.yaml
index 29eb1cc3..69aa8701 100644
--- a/examples/call-asyncapi-subscribe-consume-amount.yaml
+++ b/examples/call-asyncapi-subscribe-consume-amount.yaml
@@ -1,5 +1,5 @@
document:
- dsl: '1.0.0-alpha5'
+ dsl: '1.0.0'
namespace: examples
name: bearer-auth
version: '0.1.0'
diff --git a/examples/call-asyncapi-subscribe-consume-forever-foreach.yaml b/examples/call-asyncapi-subscribe-consume-forever-foreach.yaml
index b9b9fe95..66f612f2 100644
--- a/examples/call-asyncapi-subscribe-consume-forever-foreach.yaml
+++ b/examples/call-asyncapi-subscribe-consume-forever-foreach.yaml
@@ -1,5 +1,5 @@
document:
- dsl: '1.0.0-alpha5'
+ dsl: '1.0.0'
namespace: examples
name: bearer-auth
version: '0.1.0'
diff --git a/examples/call-asyncapi-subscribe-consume-until.yaml b/examples/call-asyncapi-subscribe-consume-until.yaml
index bec5a4f0..33501513 100644
--- a/examples/call-asyncapi-subscribe-consume-until.yaml
+++ b/examples/call-asyncapi-subscribe-consume-until.yaml
@@ -1,5 +1,5 @@
document:
- dsl: '1.0.0-alpha5'
+ dsl: '1.0.0'
namespace: examples
name: bearer-auth
version: '0.1.0'
diff --git a/examples/call-asyncapi-subscribe-consume-while.yaml b/examples/call-asyncapi-subscribe-consume-while.yaml
index 58c2e1ed..1588d353 100644
--- a/examples/call-asyncapi-subscribe-consume-while.yaml
+++ b/examples/call-asyncapi-subscribe-consume-while.yaml
@@ -1,5 +1,5 @@
document:
- dsl: '1.0.0-alpha5'
+ dsl: '1.0.0'
namespace: examples
name: bearer-auth
version: '0.1.0'
diff --git a/examples/call-custom-function-cataloged.yaml b/examples/call-custom-function-cataloged.yaml
index 0f978ec2..6613b17e 100644
--- a/examples/call-custom-function-cataloged.yaml
+++ b/examples/call-custom-function-cataloged.yaml
@@ -1,5 +1,5 @@
document:
- dsl: '1.0.0-alpha5'
+ dsl: '1.0.0'
namespace: samples
name: call-custom-function-cataloged
version: '0.1.0'
diff --git a/examples/call-custom-function-inline.yaml b/examples/call-custom-function-inline.yaml
index fbb636b4..a450a2ef 100644
--- a/examples/call-custom-function-inline.yaml
+++ b/examples/call-custom-function-inline.yaml
@@ -1,5 +1,5 @@
document:
- dsl: '1.0.0-alpha5'
+ dsl: '1.0.0'
namespace: samples
name: call-custom-function-inline
version: '0.1.0'
diff --git a/examples/call-grpc.yaml b/examples/call-grpc.yaml
index ed4858a3..9f9a7e6d 100644
--- a/examples/call-grpc.yaml
+++ b/examples/call-grpc.yaml
@@ -1,5 +1,5 @@
document:
- dsl: '1.0.0-alpha5'
+ dsl: '1.0.0'
namespace: test
name: grpc-example
version: '0.1.0'
diff --git a/examples/call-http-endpoint-interpolation-shorthand.yaml b/examples/call-http-endpoint-interpolation-shorthand.yaml
index 7adf3132..9ac1852b 100644
--- a/examples/call-http-endpoint-interpolation-shorthand.yaml
+++ b/examples/call-http-endpoint-interpolation-shorthand.yaml
@@ -1,5 +1,5 @@
document:
- dsl: '1.0.0-alpha5'
+ dsl: '1.0.0'
namespace: examples
name: call-http-shorthand-endpoint
version: '0.1.0'
diff --git a/examples/call-http-endpoint-interpolation.yaml b/examples/call-http-endpoint-interpolation.yaml
index 8380a9aa..d31f43e1 100644
--- a/examples/call-http-endpoint-interpolation.yaml
+++ b/examples/call-http-endpoint-interpolation.yaml
@@ -1,5 +1,5 @@
document:
- dsl: '1.0.0-alpha5'
+ dsl: '1.0.0'
namespace: examples
name: call-http-shorthand-endpoint
version: '0.1.0'
diff --git a/examples/call-http-query-headers-expressions.yaml b/examples/call-http-query-headers-expressions.yaml
new file mode 100644
index 00000000..eee27820
--- /dev/null
+++ b/examples/call-http-query-headers-expressions.yaml
@@ -0,0 +1,31 @@
+# yaml-language-server: $schema=../schema/workflow.yaml
+document:
+ dsl: '1.0.0'
+ namespace: examples
+ name: http-query-headers-expressions
+ version: '1.0.0'
+input:
+ schema:
+ format: json
+ document:
+ type: object
+ required:
+ - searchQuery
+ properties:
+ searchQuery:
+ type: string
+do:
+ - setQueryAndHeaders:
+ set:
+ query:
+ search: ${.searchQuery}
+ headers:
+ Accept: application/json
+ - searchStarWarsCharacters:
+ call: http
+ with:
+ method: get
+ endpoint: https://swapi.dev/api/people/
+ headers: ${.headers}
+ query: ${.query}
+
diff --git a/examples/call-http-query-parameters.yaml b/examples/call-http-query-parameters.yaml
index f17d3043..3e1198c7 100644
--- a/examples/call-http-query-parameters.yaml
+++ b/examples/call-http-query-parameters.yaml
@@ -1,9 +1,9 @@
# yaml-language-server: $schema=../schema/workflow.yaml
document:
- dsl: 1.0.0-alpha2
+ dsl: '1.0.0'
namespace: examples
name: http-query-params
- version: 1.0.0-alpha2
+ version: '1.0.0'
input:
schema:
format: json
diff --git a/examples/call-http-redirect.yaml b/examples/call-http-redirect.yaml
index 819bd7fa..afae6c47 100644
--- a/examples/call-http-redirect.yaml
+++ b/examples/call-http-redirect.yaml
@@ -1,9 +1,9 @@
# yaml-language-server: $schema=../schema/workflow.yaml
document:
- dsl: 1.0.0-alpha2
+ dsl: '1.0.0'
namespace: examples
name: http-query-params
- version: 1.0.0-alpha2
+ version: '1.0.0'
input:
schema:
format: json
diff --git a/examples/call-openapi-redirect.yaml b/examples/call-openapi-redirect.yaml
index 424fbd3f..11deffaa 100644
--- a/examples/call-openapi-redirect.yaml
+++ b/examples/call-openapi-redirect.yaml
@@ -1,5 +1,5 @@
document:
- dsl: '1.0.0-alpha5'
+ dsl: '1.0.0'
namespace: test
name: openapi-example
version: '0.1.0'
diff --git a/examples/call-openapi.yaml b/examples/call-openapi.yaml
index 5331d783..90826f93 100644
--- a/examples/call-openapi.yaml
+++ b/examples/call-openapi.yaml
@@ -1,5 +1,5 @@
document:
- dsl: '1.0.0-alpha5'
+ dsl: '1.0.0'
namespace: test
name: openapi-example
version: '0.1.0'
diff --git a/examples/conditional-task.yaml b/examples/conditional-task.yaml
index dd412dec..b0981e8b 100644
--- a/examples/conditional-task.yaml
+++ b/examples/conditional-task.yaml
@@ -1,5 +1,5 @@
document:
- dsl: '1.0.0-alpha5'
+ dsl: '1.0.0'
namespace: default
name: conditional-task
version: '0.1.0'
diff --git a/examples/do-multiple.yaml b/examples/do-multiple.yaml
index 882f9847..032d1dc0 100644
--- a/examples/do-multiple.yaml
+++ b/examples/do-multiple.yaml
@@ -1,5 +1,5 @@
document:
- dsl: '1.0.0-alpha5'
+ dsl: '1.0.0'
namespace: examples
name: call-http-shorthand-endpoint
version: '0.1.0'
diff --git a/examples/do-single.yaml b/examples/do-single.yaml
index 7adf3132..9ac1852b 100644
--- a/examples/do-single.yaml
+++ b/examples/do-single.yaml
@@ -1,5 +1,5 @@
document:
- dsl: '1.0.0-alpha5'
+ dsl: '1.0.0'
namespace: examples
name: call-http-shorthand-endpoint
version: '0.1.0'
diff --git a/examples/emit.yaml b/examples/emit.yaml
index d4d6d559..82fe2823 100644
--- a/examples/emit.yaml
+++ b/examples/emit.yaml
@@ -1,5 +1,5 @@
document:
- dsl: '1.0.0-alpha5'
+ dsl: '1.0.0'
namespace: test
name: emit
version: '0.1.0'
diff --git a/examples/for.yaml b/examples/for.yaml
index 629a9672..333fcb25 100644
--- a/examples/for.yaml
+++ b/examples/for.yaml
@@ -1,5 +1,5 @@
document:
- dsl: '1.0.0-alpha5'
+ dsl: '1.0.0'
namespace: test
name: for-example
version: '0.1.0'
diff --git a/examples/fork.yaml b/examples/fork.yaml
index 2d6708c3..41934624 100644
--- a/examples/fork.yaml
+++ b/examples/fork.yaml
@@ -1,5 +1,5 @@
document:
- dsl: '1.0.0-alpha5'
+ dsl: '1.0.0'
namespace: test
name: fork-example
version: '0.1.0'
diff --git a/examples/listen-to-all read-envelope.yaml b/examples/listen-to-all read-envelope.yaml
index c54682e2..bfb07ef3 100644
--- a/examples/listen-to-all read-envelope.yaml
+++ b/examples/listen-to-all read-envelope.yaml
@@ -1,5 +1,5 @@
document:
- dsl: '1.0.0-alpha5'
+ dsl: '1.0.0'
namespace: test
name: listen-to-all-read-envelope
version: '0.1.0'
diff --git a/examples/listen-to-all.yaml b/examples/listen-to-all.yaml
index 15ce80b4..c865d121 100644
--- a/examples/listen-to-all.yaml
+++ b/examples/listen-to-all.yaml
@@ -1,5 +1,5 @@
document:
- dsl: '1.0.0-alpha5'
+ dsl: '1.0.0'
namespace: test
name: listen-to-all
version: '0.1.0'
diff --git a/examples/listen-to-any-filter.yaml b/examples/listen-to-any-filter.yaml
index 677e8e51..131611f1 100644
--- a/examples/listen-to-any-filter.yaml
+++ b/examples/listen-to-any-filter.yaml
@@ -1,5 +1,5 @@
document:
- dsl: '1.0.0-alpha5'
+ dsl: '1.0.0'
namespace: test
name: listen-to-any-filter
version: '0.1.0'
diff --git a/examples/listen-to-any-forever-foreach.yaml b/examples/listen-to-any-forever-foreach.yaml
index 22c01a2e..53f93bc9 100644
--- a/examples/listen-to-any-forever-foreach.yaml
+++ b/examples/listen-to-any-forever-foreach.yaml
@@ -1,5 +1,5 @@
document:
- dsl: '1.0.0-alpha1'
+ dsl: '1.0.0'
namespace: test
name: listen-to-any-while-foreach
version: '0.1.0'
diff --git a/examples/listen-to-any-until-condition.yaml b/examples/listen-to-any-until-condition.yaml
index 9d611f5b..2f60222e 100644
--- a/examples/listen-to-any-until-condition.yaml
+++ b/examples/listen-to-any-until-condition.yaml
@@ -1,5 +1,5 @@
document:
- dsl: '1.0.0-alpha1'
+ dsl: '1.0.0'
namespace: test
name: listen-to-any
version: '0.1.0'
diff --git a/examples/listen-to-any-until-consumed.yaml b/examples/listen-to-any-until-consumed.yaml
index 7c46cc13..7e6a9601 100644
--- a/examples/listen-to-any-until-consumed.yaml
+++ b/examples/listen-to-any-until-consumed.yaml
@@ -1,5 +1,5 @@
document:
- dsl: '1.0.0-alpha1'
+ dsl: '1.0.0'
namespace: test
name: listen-to-any
version: '0.1.0'
diff --git a/examples/listen-to-any.yaml b/examples/listen-to-any.yaml
index b4a9fcb9..f3a3ba06 100644
--- a/examples/listen-to-any.yaml
+++ b/examples/listen-to-any.yaml
@@ -1,5 +1,5 @@
document:
- dsl: '1.0.0-alpha5'
+ dsl: '1.0.0'
namespace: test
name: listen-to-any
version: '0.1.0'
diff --git a/examples/listen-to-one.yaml b/examples/listen-to-one.yaml
index b1760e86..00089e15 100644
--- a/examples/listen-to-one.yaml
+++ b/examples/listen-to-one.yaml
@@ -1,5 +1,5 @@
document:
- dsl: '1.0.0-alpha5'
+ dsl: '1.0.0'
namespace: test
name: listen-to-one
version: '0.1.0'
diff --git a/examples/mock-service-extension.yaml b/examples/mock-service-extension.yaml
index 5e2244b0..c0a78740 100644
--- a/examples/mock-service-extension.yaml
+++ b/examples/mock-service-extension.yaml
@@ -1,5 +1,5 @@
document:
- dsl: '1.0.0-alpha5'
+ dsl: '1.0.0'
namespace: test
name: sample-workflow
version: 0.1.0
diff --git a/examples/raise-inline.yaml b/examples/raise-inline.yaml
index b4bcac88..b190c877 100644
--- a/examples/raise-inline.yaml
+++ b/examples/raise-inline.yaml
@@ -1,5 +1,5 @@
document:
- dsl: '1.0.0-alpha5'
+ dsl: '1.0.0'
namespace: test
name: raise-not-implemented
version: '0.1.0'
diff --git a/examples/raise-reusable.yaml b/examples/raise-reusable.yaml
index ea6f3206..5724ff6e 100644
--- a/examples/raise-reusable.yaml
+++ b/examples/raise-reusable.yaml
@@ -1,5 +1,5 @@
document:
- dsl: '1.0.0-alpha5'
+ dsl: '1.0.0'
namespace: test
name: raise-not-implemented
version: '0.1.0'
diff --git a/examples/run-container-cleanup-always.yaml b/examples/run-container-cleanup-always.yaml
index f399d07b..7608625e 100644
--- a/examples/run-container-cleanup-always.yaml
+++ b/examples/run-container-cleanup-always.yaml
@@ -1,5 +1,5 @@
document:
- dsl: '1.0.0-alpha5'
+ dsl: '1.0.0'
namespace: test
name: run-container
version: '0.1.0'
diff --git a/examples/run-container-cleanup-eventually.yaml b/examples/run-container-cleanup-eventually.yaml
index 58fbfdf3..036b9ff9 100644
--- a/examples/run-container-cleanup-eventually.yaml
+++ b/examples/run-container-cleanup-eventually.yaml
@@ -1,5 +1,5 @@
document:
- dsl: '1.0.0-alpha5'
+ dsl: '1.0.0'
namespace: test
name: run-container
version: '0.1.0'
diff --git a/examples/run-container-with-name.yaml b/examples/run-container-with-name.yaml
index 45fd36a0..6275373a 100644
--- a/examples/run-container-with-name.yaml
+++ b/examples/run-container-with-name.yaml
@@ -1,5 +1,5 @@
document:
- dsl: '1.0.0-alpha5'
+ dsl: '1.0.0'
namespace: test
name: run-container-with-name
version: '0.1.0'
diff --git a/examples/run-container.yaml b/examples/run-container.yaml
index b12b795d..5c7cfc98 100644
--- a/examples/run-container.yaml
+++ b/examples/run-container.yaml
@@ -1,5 +1,5 @@
document:
- dsl: '1.0.0-alpha5'
+ dsl: '1.0.0'
namespace: test
name: run-container
version: '0.1.0'
diff --git a/examples/run-return-all.yaml b/examples/run-return-all.yaml
index 0de552f3..58fa739f 100644
--- a/examples/run-return-all.yaml
+++ b/examples/run-return-all.yaml
@@ -1,5 +1,5 @@
document:
- dsl: '1.0.0-alpha5'
+ dsl: '1.0.0'
namespace: test
name: run-container
version: '0.1.0'
diff --git a/examples/run-return-code.yaml b/examples/run-return-code.yaml
index 9ea77ab9..ef19937a 100644
--- a/examples/run-return-code.yaml
+++ b/examples/run-return-code.yaml
@@ -1,5 +1,5 @@
document:
- dsl: '1.0.0-alpha5'
+ dsl: '1.0.0'
namespace: test
name: run-container
version: '0.1.0'
diff --git a/examples/run-return-none.yaml b/examples/run-return-none.yaml
index ee9359b1..94d1386b 100644
--- a/examples/run-return-none.yaml
+++ b/examples/run-return-none.yaml
@@ -1,5 +1,5 @@
document:
- dsl: '1.0.0-alpha5'
+ dsl: '1.0.0'
namespace: test
name: run-container
version: '0.1.0'
diff --git a/examples/run-return-stderr.yaml b/examples/run-return-stderr.yaml
index 940ca991..e9d84b32 100644
--- a/examples/run-return-stderr.yaml
+++ b/examples/run-return-stderr.yaml
@@ -1,5 +1,5 @@
document:
- dsl: '1.0.0-alpha5'
+ dsl: '1.0.0'
namespace: test
name: run-container
version: '0.1.0'
diff --git a/examples/run-script-with-arguments.yaml b/examples/run-script-with-arguments.yaml
index f07bdd55..2f4c02a6 100644
--- a/examples/run-script-with-arguments.yaml
+++ b/examples/run-script-with-arguments.yaml
@@ -1,5 +1,5 @@
document:
- dsl: '1.0.0-alpha5'
+ dsl: '1.0.0'
namespace: samples
name: run-script-with-arguments
version: 0.1.0
diff --git a/examples/run-subflow.yaml b/examples/run-subflow.yaml
index fd038cdc..dea9cf15 100644
--- a/examples/run-subflow.yaml
+++ b/examples/run-subflow.yaml
@@ -1,5 +1,5 @@
document:
- dsl: '1.0.0-alpha5'
+ dsl: '1.0.0'
namespace: test
name: run-subflow
version: '0.1.0'
diff --git a/examples/schedule-cron.yaml b/examples/schedule-cron.yaml
index 080f077c..330fe7a7 100644
--- a/examples/schedule-cron.yaml
+++ b/examples/schedule-cron.yaml
@@ -1,5 +1,5 @@
document:
- dsl: '1.0.0-alpha5'
+ dsl: '1.0.0'
namespace: examples
name: cron-schedule
version: '0.1.0'
diff --git a/examples/schedule-event-driven.yaml b/examples/schedule-event-driven.yaml
index 5447e8b7..0913796f 100644
--- a/examples/schedule-event-driven.yaml
+++ b/examples/schedule-event-driven.yaml
@@ -1,5 +1,5 @@
document:
- dsl: '1.0.0-alpha5'
+ dsl: '1.0.0'
namespace: examples
name: event-driven-schedule
version: '0.1.0'
diff --git a/examples/set-expression.yaml b/examples/set-expression.yaml
new file mode 100644
index 00000000..32b5e887
--- /dev/null
+++ b/examples/set-expression.yaml
@@ -0,0 +1,13 @@
+document:
+ dsl: '1.0.0'
+ namespace: test
+ name: set
+ version: '0.1.0'
+schedule:
+ on:
+ one:
+ with:
+ type: io.serverlessworkflow.samples.events.trigger.v1
+do:
+ - initialize:
+ set: ${ $workflow.input[0] }
\ No newline at end of file
diff --git a/examples/set.yaml b/examples/set.yaml
index 7009862a..e1e64af6 100644
--- a/examples/set.yaml
+++ b/examples/set.yaml
@@ -1,5 +1,5 @@
document:
- dsl: '1.0.0-alpha5'
+ dsl: '1.0.0'
namespace: test
name: set
version: '0.1.0'
@@ -8,7 +8,7 @@ schedule:
one:
with:
type: io.serverlessworkflow.samples.events.trigger.v1
-do:
+do:
- initialize:
set:
startEvent: ${ $workflow.input[0] }
\ No newline at end of file
diff --git a/examples/star-wars-homeworld.yaml b/examples/star-wars-homeworld.yaml
index 103f1838..5154c345 100644
--- a/examples/star-wars-homeworld.yaml
+++ b/examples/star-wars-homeworld.yaml
@@ -1,9 +1,9 @@
# yaml-language-server: $schema=../schema/workflow.yaml
document:
- dsl: 1.0.0-alpha2
+ dsl: 1.0.0
namespace: examples
name: star-wars-homeplanet
- version: 1.0.0-alpha2
+ version: 1.0.0
input:
schema:
format: json
diff --git a/examples/switch-then-string.yaml b/examples/switch-then-string.yaml
index d46882c4..5e26817a 100644
--- a/examples/switch-then-string.yaml
+++ b/examples/switch-then-string.yaml
@@ -1,5 +1,5 @@
document:
- dsl: '1.0.0-alpha5'
+ dsl: '1.0.0'
namespace: test
name: sample-workflow
version: 0.1.0
diff --git a/examples/try-catch-retry-inline.yaml b/examples/try-catch-retry-inline.yaml
index 3712f6f4..78361277 100644
--- a/examples/try-catch-retry-inline.yaml
+++ b/examples/try-catch-retry-inline.yaml
@@ -1,5 +1,5 @@
document:
- dsl: '1.0.0-alpha5'
+ dsl: '1.0.0'
namespace: default
name: try-catch-retry
version: '0.1.0'
diff --git a/examples/try-catch-retry-reusable.yaml b/examples/try-catch-retry-reusable.yaml
index 4f919d24..126de084 100644
--- a/examples/try-catch-retry-reusable.yaml
+++ b/examples/try-catch-retry-reusable.yaml
@@ -1,5 +1,5 @@
document:
- dsl: '1.0.0-alpha5'
+ dsl: '1.0.0'
namespace: default
name: try-catch-retry
version: '0.1.0'
diff --git a/examples/try-catch-then.yaml b/examples/try-catch-then.yaml
index db33f2b6..56957fe4 100644
--- a/examples/try-catch-then.yaml
+++ b/examples/try-catch-then.yaml
@@ -1,5 +1,5 @@
document:
- dsl: '1.0.0-alpha5'
+ dsl: '1.0.0'
namespace: default
name: try-catch
version: '0.1.0'
diff --git a/examples/try-catch.yaml b/examples/try-catch.yaml
index 8294433c..7a2e4805 100644
--- a/examples/try-catch.yaml
+++ b/examples/try-catch.yaml
@@ -1,5 +1,5 @@
document:
- dsl: '1.0.0-alpha5'
+ dsl: '1.0.0'
namespace: default
name: try-catch
version: '0.1.0'
diff --git a/examples/wait-duration-inline.yaml b/examples/wait-duration-inline.yaml
index e083f221..f854275e 100644
--- a/examples/wait-duration-inline.yaml
+++ b/examples/wait-duration-inline.yaml
@@ -1,5 +1,5 @@
document:
- dsl: '1.0.0-alpha5'
+ dsl: '1.0.0'
namespace: test
name: wait-duration-inline
version: '0.1.0'
diff --git a/examples/wait-duration-iso8601.yaml b/examples/wait-duration-iso8601.yaml
index 21a486d7..56e32b4d 100644
--- a/examples/wait-duration-iso8601.yaml
+++ b/examples/wait-duration-iso8601.yaml
@@ -1,5 +1,5 @@
document:
- dsl: '1.0.0-alpha5'
+ dsl: '1.0.0'
namespace: test
name: wait-duration-8601
version: '0.1.0'
diff --git a/schema/workflow.yaml b/schema/workflow.yaml
index 488461c6..9405bfa3 100644
--- a/schema/workflow.yaml
+++ b/schema/workflow.yaml
@@ -1,4 +1,4 @@
-$id: https://serverlessworkflow.io/schemas/1.0.0-alpha5/workflow.yaml
+$id: https://serverlessworkflow.io/schemas/1.0.0/workflow.yaml
$schema: https://json-schema.org/draft/2020-12/schema
description: Serverless Workflow DSL - Workflow Schema.
type: object
@@ -310,10 +310,10 @@ $defs:
type: string
title: WithGRPCServiceHost
description: The hostname of the GRPC service to call.
- pattern: ^[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?$
+ pattern: ^[a-zA-Z0-9](?:[a-zA-Z0-9-.]{0,61}[a-zA-Z0-9])?$
port:
type: integer
- title: WithGRPCServicePost
+ title: WithGRPCServicePort
description: The port number of the GRPC service to call.
minimum: 0
maximum: 65535
@@ -357,14 +357,22 @@ $defs:
description: The HTTP endpoint to send the request to.
$ref: '#/$defs/endpoint'
headers:
- type: object
+ oneOf:
+ - type: object
+ additionalProperties:
+ type: string
+ - $ref: '#/$defs/runtimeExpression'
title: HTTPHeaders
description: A name/value mapping of the headers, if any, of the HTTP request to perform.
body:
title: HTTPBody
description: The body, if any, of the HTTP request to perform.
query:
- type: object
+ oneOf:
+ - type: object
+ additionalProperties:
+ type: string
+ - $ref: '#/$defs/runtimeExpression'
title: HTTPQuery
description: A name/value mapping of the query parameters, if any, of the HTTP request to perform.
additionalProperties: true
@@ -759,11 +767,13 @@ $defs:
unevaluatedProperties: false
properties:
set:
- type: object
+ oneOf:
+ - type: object
+ minProperties: 1
+ additionalProperties: true
+ - type: string
title: SetTaskConfiguration
description: The data to set.
- minProperties: 1
- additionalProperties: true
switchTask:
type: object
$ref: '#/$defs/taskBase'
@@ -975,37 +985,35 @@ $defs:
description: The configuration of the OAuth2 authentication policy.
unevaluatedProperties: false
oneOf:
- - type: object
+ - $ref: '#/$defs/oauth2AuthenticationProperties'
+ type: object
title: OAuth2ConnectAuthenticationProperties
description: The inline configuration of the OAuth2 authentication policy.
unevaluatedProperties: false
- allOf:
- - $ref: '#/$defs/oauth2AuthenticationProperties'
- - type: object
+ properties:
+ endpoints:
+ type: object
+ title: OAuth2AuthenticationPropertiesEndpoints
+ description: The endpoint configurations for OAuth2.
properties:
- endpoints:
- type: object
- title: OAuth2AuthenticationPropertiesEndpoints
- description: The endpoint configurations for OAuth2.
- properties:
- token:
- type: string
- format: uri-template
- default: /oauth2/token
- title: OAuth2TokenEndpoint
- description: The relative path to the token endpoint. Defaults to `/oauth2/token`.
- revocation:
- type: string
- format: uri-template
- default: /oauth2/revoke
- title: OAuth2RevocationEndpoint
- description: The relative path to the revocation endpoint. Defaults to `/oauth2/revoke`.
- introspection:
- type: string
- format: uri-template
- default: /oauth2/introspect
- title: OAuth2IntrospectionEndpoint
- description: The relative path to the introspection endpoint. Defaults to `/oauth2/introspect`.
+ token:
+ type: string
+ format: uri-template
+ default: /oauth2/token
+ title: OAuth2TokenEndpoint
+ description: The relative path to the token endpoint. Defaults to `/oauth2/token`.
+ revocation:
+ type: string
+ format: uri-template
+ default: /oauth2/revoke
+ title: OAuth2RevocationEndpoint
+ description: The relative path to the revocation endpoint. Defaults to `/oauth2/revoke`.
+ introspection:
+ type: string
+ format: uri-template
+ default: /oauth2/introspect
+ title: OAuth2IntrospectionEndpoint
+ description: The relative path to the introspection endpoint. Defaults to `/oauth2/introspect`.
- $ref: '#/$defs/secretBasedAuthenticationPolicy'
title: OAuth2AuthenticationPolicySecret
description: Secret based configuration of the OAuth2 authentication policy.
@@ -1188,13 +1196,21 @@ $defs:
title: ExpressionErrorInstance
description: An expression based error instance.
title:
- type: string
- title: ErrorTitle
description: A short, human-readable summary of the error.
+ title: ErrorTitle
+ anyOf:
+ - $ref: '#/$defs/runtimeExpression'
+ title: ExpressionErrorTitle
+ - type: string
+ title: LiteralErrorTitle
detail:
- type: string
title: ErrorDetails
description: A human-readable explanation specific to this occurrence of the error.
+ anyOf:
+ - $ref: '#/$defs/runtimeExpression'
+ title: ExpressionErrorDetails
+ - type: string
+ title: LiteralErrorDetails
required: [ type, status ]
errorFilter:
type: object
@@ -1663,18 +1679,14 @@ $defs:
type: object
title: AsyncApiMessagePayload
description: The message's payload, if any.
- additionalProperties: true
headers:
type: object
title: AsyncApiMessageHeaders
description: The message's headers, if any.
- additionalProperties: true
asyncApiInboundMessage:
- type: object
+ $ref: '#/$defs/asyncApiOutboundMessage'
title: AsyncApiInboundMessage
description: Represents a message counsumed by an AsyncAPI subscription.
- allOf:
- - $ref: '#/$defs/asyncApiOutboundMessage'
properties:
correlationId:
type: string
@@ -1713,20 +1725,20 @@ $defs:
- properties:
amount:
type: integer
- title: AsyncApiMessageConsumptionPolicyAmount
description: The amount of (filtered) messages to consume before disposing of the subscription.
+ title: AsyncApiMessageConsumptionPolicyAmount
required: [ amount ]
- properties:
while:
$ref: '#/$defs/runtimeExpression'
- title: AsyncApiMessageConsumptionPolicyWhile
description: A runtime expression evaluated after each consumed (filtered) message to decide if message consumption should continue.
+ title: AsyncApiMessageConsumptionPolicyWhile
required: [ while ]
- properties:
until:
$ref: '#/$defs/runtimeExpression'
- title: AsyncApiMessageConsumptionPolicyUntil
description: A runtime expression evaluated before each consumed (filtered) message to decide if message consumption should continue.
+ title: AsyncApiMessageConsumptionPolicyUntil
required: [ until ]
subscriptionIterator:
type: object
diff --git a/use-cases/automated-data-backup/README.md b/use-cases/automated-data-backup/README.md
index 17feed9a..25906a71 100644
--- a/use-cases/automated-data-backup/README.md
+++ b/use-cases/automated-data-backup/README.md
@@ -54,7 +54,7 @@ The following diagram represents the high-level flow of the workflow:
```yaml
document:
- dsl: '1.0.0-alpha5'
+ dsl: '1.0.0'
namespace: default
name: sql-export-to-minio
version: 0.1.2
diff --git a/use-cases/managing-ev-charging-stations/README.md b/use-cases/managing-ev-charging-stations/README.md
index 7f50fd20..35e41091 100644
--- a/use-cases/managing-ev-charging-stations/README.md
+++ b/use-cases/managing-ev-charging-stations/README.md
@@ -70,7 +70,7 @@ The following diagram represents the high-level flow of the workflow:
```yaml
document:
- dsl: '1.0.0-alpha5'
+ dsl: '1.0.0'
namespace: default
name: manage-ev-charging-stations
version: '0.1.0'
diff --git a/use-cases/managing-github-issues/README.md b/use-cases/managing-github-issues/README.md
index c5a99c42..d320c4e5 100644
--- a/use-cases/managing-github-issues/README.md
+++ b/use-cases/managing-github-issues/README.md
@@ -63,7 +63,7 @@ The following diagram represents the high-level flow of the workflow:
```yaml
document:
- dsl: '1.0.0-alpha5'
+ dsl: '1.0.0'
namespace: default
name: manage-github-issues
version: '0.1.0'
diff --git a/use-cases/multi-agent-ai-content-generation/README.md b/use-cases/multi-agent-ai-content-generation/README.md
index f0607754..abb633fd 100644
--- a/use-cases/multi-agent-ai-content-generation/README.md
+++ b/use-cases/multi-agent-ai-content-generation/README.md
@@ -66,7 +66,7 @@ The following diagram represents the high-level flow of the workflow:
```yaml
document:
- dsl: '1.0.0-alpha5'
+ dsl: '1.0.0'
namespace: default
name: multi-agent-collaboration-for-ai-content
version: '0.1.0'
Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.
Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.
Alternative Proxies: