diff --git a/.dockerignore b/.dockerignore
new file mode 100644
index 0000000..a44058c
--- /dev/null
+++ b/.dockerignore
@@ -0,0 +1,3 @@
+.DS_Store
+node_modules
+dist
\ No newline at end of file
diff --git a/.github/CODEOWNERS b/.github/CODEOWNERS
index b3b4d5b..9460ce3 100644
--- a/.github/CODEOWNERS
+++ b/.github/CODEOWNERS
@@ -1 +1 @@
-* @tsurdilo @manuelstein @falko @duglin
\ No newline at end of file
+* @ricardozanini @cdavernas
\ No newline at end of file
diff --git a/.github/ISSUE_TEMPLATE/bug.yml b/.github/ISSUE_TEMPLATE/bug.yml
new file mode 100644
index 0000000..099edc1
--- /dev/null
+++ b/.github/ISSUE_TEMPLATE/bug.yml
@@ -0,0 +1,56 @@
+name: Bug Report
+description: Create a bug report
+labels: ["type: bug"]
+body:
+- type: markdown
+ attributes:
+ value: |
+ :pray: Thanks for taking the time to fill out this bug report!
+
+- type: markdown
+ attributes:
+ value: |
+ ## Bug Report
+
+- type: textarea
+ id: i-tried-this
+ attributes:
+ label: "I tried this:"
+ placeholder: "What did you try to do?"
+ validations:
+ required: true
+
+- type: textarea
+ id: instead-what-happened
+ attributes:
+ label: "This happened:"
+ placeholder: "What happened instead of what you've expected?"
+ validations:
+ required: true
+
+- type: textarea
+ id: what-did-you-expect
+ attributes:
+ label: "I expected this:"
+ placeholder: "What did you expect to happen? Describe the output or behavior you expected to see (unless it's obvious)."
+
+- type: textarea
+ id: workaround
+ attributes:
+ label: "Is there a workaround?"
+ placeholder: "What's the workaround to avoid this issue?"
+
+- type: textarea
+ attributes:
+ label: Anything else?
+ placeholder: |
+ Links? References? Logs? Anything that will give us more context about the issue you are encountering.
+ Tip: You can attach images or log files by dragging files in.
+
+- type: textarea
+ attributes:
+ label: Community Notes
+ value: |
+
+ * Please vote by adding a 👍 reaction to the issue to help us prioritize.
+ * If you are interested to work on this issue, please leave a comment.name: Bug Report 🐞
diff --git a/.github/ISSUE_TEMPLATE/config.yml b/.github/ISSUE_TEMPLATE/config.yml
new file mode 100644
index 0000000..8e9f916
--- /dev/null
+++ b/.github/ISSUE_TEMPLATE/config.yml
@@ -0,0 +1,2 @@
+blank_issues_enabled: false
+contact_links: []
\ No newline at end of file
diff --git a/.github/ISSUE_TEMPLATE/feature.yml b/.github/ISSUE_TEMPLATE/feature.yml
new file mode 100644
index 0000000..86db065
--- /dev/null
+++ b/.github/ISSUE_TEMPLATE/feature.yml
@@ -0,0 +1,47 @@
+name: Feature Request
+description: Create a feature request
+labels: ["type: enhancement"]
+body:
+- type: markdown
+ attributes:
+ value: |
+ :pray: Thanks for taking the time to fill out this feature request!
+
+- type: markdown
+ attributes:
+ value: |
+ ## Feature Request
+
+- type: textarea
+ id: what-would-you-like-to-be-added
+ attributes:
+ label: "What would you like to be added?"
+ placeholder: "Description of the feature you'd like to see."
+ validations:
+ required: true
+
+- type: textarea
+ id: proposals
+ attributes:
+ label: "Proposal(s):"
+ placeholder: "Describe your proposal(s) and any relevant details here."
+
+- type: textarea
+ id: alternatives
+ attributes:
+ label: "Alternative(s):"
+ placeholder: "Describe any alternative approaches, options, or suggestions you’d like to consider."
+
+- type: textarea
+ id: additional-info
+ attributes:
+ label: "Additional info:"
+ placeholder: "Provide any supplementary details, context, or supporting information here."
+
+- type: textarea
+ attributes:
+ label: Community Notes
+ value: |
+
+ * Please vote by adding a 👍 reaction to the feature to help us prioritize.
+ * If you are interested to work on this feature, please leave a comment.
diff --git a/.github/OWNERS b/.github/OWNERS
index 78528e0..35b8508 100644
--- a/.github/OWNERS
+++ b/.github/OWNERS
@@ -1,12 +1,8 @@
reviewers:
- - tsurdilo
- - manuelstein
- - falko
- - duglin
+ - ricardozanini
+ - cdavernas
approvers:
- - tsurdilo
- - manuelstein
- - falko
- - duglin
+ - ricardozanini
+ - cdavernas
labels:
- sig/contributor-experience
\ No newline at end of file
diff --git a/.github/workflows/greetings.yml b/.github/workflows/greetings.yml
deleted file mode 100644
index f5154c8..0000000
--- a/.github/workflows/greetings.yml
+++ /dev/null
@@ -1,27 +0,0 @@
-# Copyright 2020 The Serverless Workflow Specification Authors
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-name: Greetings
-
-on: [pull_request, issues]
-
-jobs:
- greeting:
- runs-on: ubuntu-latest
- steps:
- - uses: actions/first-interaction@v1
- with:
- repo-token: ${{ secrets.GITHUB_TOKEN }}
- issue-message: 'Hello @${{ github.actor }} , thank you for submitting an issue!'
- pr-message: 'Hello @${{ github.actor }} , thank you submitting a pull request!'
diff --git a/.gitignore b/.gitignore
new file mode 100644
index 0000000..d1745cb
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1,24 @@
+# build output
+dist/
+
+# generated types
+.astro/
+
+# dependencies
+node_modules/
+
+# logs
+npm-debug.log*
+yarn-debug.log*
+yarn-error.log*
+pnpm-debug.log*
+
+# environment variables
+.env
+.env.production
+
+# macOS-specific files
+.DS_Store
+
+# jetbrains setting folder
+.idea/
\ No newline at end of file
diff --git a/.gitpod.yml b/.gitpod.yml
new file mode 100644
index 0000000..dcd10cd
--- /dev/null
+++ b/.gitpod.yml
@@ -0,0 +1,17 @@
+tasks:
+ - init: npm install
+ command: npm run dev
+
+ports:
+ - port: 4321
+ onOpen: open-browser
+
+# Enable prebuilds of your project to enable faster workspace start times.
+# https://www.gitpod.io/docs/prebuilds/#configure-the-github-app
+github:
+ prebuilds:
+ master: true
+ branches: true
+ pullRequests: true
+ pullRequestsFromForks: true
+ addCheck: true
\ No newline at end of file
diff --git a/.nvmrc b/.nvmrc
new file mode 100644
index 0000000..726a201
--- /dev/null
+++ b/.nvmrc
@@ -0,0 +1 @@
+20.11.1
\ No newline at end of file
diff --git a/.vscode/extensions.json b/.vscode/extensions.json
new file mode 100644
index 0000000..22a1505
--- /dev/null
+++ b/.vscode/extensions.json
@@ -0,0 +1,4 @@
+{
+ "recommendations": ["astro-build.astro-vscode"],
+ "unwantedRecommendations": []
+}
diff --git a/.vscode/launch.json b/.vscode/launch.json
new file mode 100644
index 0000000..d642209
--- /dev/null
+++ b/.vscode/launch.json
@@ -0,0 +1,11 @@
+{
+ "version": "0.2.0",
+ "configurations": [
+ {
+ "command": "./node_modules/.bin/astro dev",
+ "name": "Development server",
+ "request": "launch",
+ "type": "node-terminal"
+ }
+ ]
+}
diff --git a/CNAME b/CNAME
new file mode 100644
index 0000000..57a3d28
--- /dev/null
+++ b/CNAME
@@ -0,0 +1 @@
+open-workflow-specification.org
\ No newline at end of file
diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md
new file mode 100644
index 0000000..db177d4
--- /dev/null
+++ b/CONTRIBUTING.md
@@ -0,0 +1,28 @@
+# How to Contribute
+
+We'd love to accept your patches and contributions to this project. There are
+just a few small guidelines you need to follow.
+
+## Contributor License Agreement
+
+Contributions to this project must be accompanied by a Contributor License
+Agreement. You (or your employer) retain the copyright to your contribution;
+this simply gives us permission to use and redistribute your contributions as
+part of the project. Head over to to see
+your current agreements on file or to sign a new one.
+
+You generally only need to submit a CLA once, so if you've already submitted one
+(even if it was for a different project), you probably don't need to do it
+again.
+
+## Code reviews
+
+All submissions, including submissions by project members, require review. We
+use GitHub pull requests for this purpose. Consult
+[GitHub Help](https://help.github.com/articles/about-pull-requests/) for more
+information on using pull requests.
+
+## Community Guidelines
+
+This project follows
+[Google's Open Source Community Guidelines](https://opensource.google.com/conduct/).
diff --git a/Dockerfile b/Dockerfile
new file mode 100644
index 0000000..8980ed3
--- /dev/null
+++ b/Dockerfile
@@ -0,0 +1,7 @@
+FROM node:lts
+WORKDIR /app
+COPY . .
+RUN npm i
+RUN npx astro telemetry disable
+EXPOSE 4321
+CMD ["npx", "astro", "dev", "--host"]
\ No newline at end of file
diff --git a/README.md b/README.md
index 257fab2..c6cc063 100644
--- a/README.md
+++ b/README.md
@@ -1,4 +1,40 @@
-## Serverless Workflow Specification Website
+# Open Workflow Specification Website Repository
-This repository includes the sources for the Serverless Workflow Specification Website -
-[serverlessworkflow.io](http://serverlessworkflow.io)
\ No newline at end of file
+This repository hosts the website for the [Open Workflow Specification](https://github.com/serverlessworkflow/specification) project at [https://serverlessworkflow.io](https://serverlessworkflow.io).
+
+## 🧑 Contributing to the website
+
+The website uses [Astro](https://astro.build/). You can find more information about how to get started with this stack [here](https://docs.astro.build/en/getting-started/).
+
+For the styling, it relies on [TailWind CSS](https://tailwindcss.com/) and [Daisy UI](https://daisyui.com/).
+
+To contribute to the website you don't need to have in-deth web design knowledge:
+- To publish a blog post just add a new Markdown page to the [`blog`](src/content/blog) directory. You can always use the blog posts in this repository as a reference.
+- For more complex changes to the website, have a look at the [Astro Docs](https://docs.astro.build/en/getting-started/)
+
+## 🚀 Project Structure
+
+To learn more about the folder structure of an Astro project, refer to [our guide on project structure](https://docs.astro.build/en/basics/project-structure/).
+
+## 🧞 Commands
+
+All commands are run from the root of the project, from a terminal:
+
+| Command | Action |
+| :------------------------ | :----------------------------------------------- |
+| `npm install` | Installs dependencies |
+| `npm run dev` | Starts local dev server at `localhost:4321` |
+| `npm run build` | Build your production site to `./dist/` |
+| `npm run preview` | Preview your build locally, before deploying |
+| `npm run astro ...` | Run CLI commands like `astro add`, `astro check` |
+| `npm run astro -- --help` | Get help using the Astro CLI |
+
+
+Alternatively, you can use Docker to run the project and connect on `localhost:4321`:
+```
+docker compose up --remove-orphans --watch
+```
+
+## 👀 Want to learn more?
+
+Feel free to check [our documentation](https://docs.astro.build) or jump into our [Discord server](https://astro.build/chat).
diff --git a/astro.config.mjs b/astro.config.mjs
new file mode 100644
index 0000000..dbac2ec
--- /dev/null
+++ b/astro.config.mjs
@@ -0,0 +1,26 @@
+// @ts-check
+import { defineConfig } from 'astro/config';
+import mdx from '@astrojs/mdx';
+import sitemap from '@astrojs/sitemap';
+import tailwindcss from "@tailwindcss/vite";
+import netlify from '@astrojs/netlify';
+
+// https://astro.build/config
+export default defineConfig({
+ site: 'https://open-workflow-specification.org/',
+ integrations: [mdx(), sitemap()],
+ markdown: {
+ syntaxHighlight: 'shiki',
+ shikiConfig: {
+ themes: {
+ light: 'github-light',
+ dark: 'github-dark',
+ },
+ wrap: true,
+ },
+ },
+ adapter: netlify(),
+ vite: {
+ plugins: [tailwindcss()],
+ }
+});
\ No newline at end of file
diff --git a/css/sws.css b/css/sws.css
deleted file mode 100644
index 7d3f321..0000000
--- a/css/sws.css
+++ /dev/null
@@ -1,63 +0,0 @@
-/**
- * Copyright 2020 The Serverless Workflow Specification Authors
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-body {
- font-family: 'Lato', sans-serif;
-}
-header {
- padding: 156px 0 100px;
-}
-section {
- padding: 150px 0;
-}
-.section-dark {
- background-color: #000000;
- color: #ffffff;
-}
-hr{
- height: 4px;
- background-color: #a332ff;
- border: none;
-}
-a {
- color: #a332ff;
-}
-.navbar-custom {
- background-color: #000000;
-}
-.navbar-custom .navbar-brand,
-.navbar-custom .navbar-text {
- color: #ffffff
-}
-.navbar-custom .navbar-nav .nav-link {
- color: #ffffff
-}
-.navbar-custom .nav-item.active .nav-link,
-.navbar-custom .nav-item:focus .nav-link,
-.navbar-custom .nav-item:hover .nav-link {
- color: #ffffff;
-}
-.footer-custom {
- background-color: #000000;
-}
-.welcome-custom {
- background-color: #000000;
-}
-.hr-short{
- height: 4px;
- background-color: #a332ff;
- border: none;
-}
\ No newline at end of file
diff --git a/docker-compose.yaml b/docker-compose.yaml
new file mode 100644
index 0000000..58e890b
--- /dev/null
+++ b/docker-compose.yaml
@@ -0,0 +1,15 @@
+services:
+ site:
+ build:
+ context: .
+ ports:
+ - "4321:4321"
+ develop:
+ watch:
+ - action: sync
+ path: ./
+ target: /app
+ ignore:
+ - node_modules/
+ - .astro/
+ - .vscode/
\ No newline at end of file
diff --git a/img/ce-logo-blue.png b/img/ce-logo-blue.png
deleted file mode 100644
index 73a90be..0000000
Binary files a/img/ce-logo-blue.png and /dev/null differ
diff --git a/img/ce-logo-white.png b/img/ce-logo-white.png
deleted file mode 100644
index 9dc3506..0000000
Binary files a/img/ce-logo-white.png and /dev/null differ
diff --git a/img/cncf-color.png b/img/cncf-color.png
deleted file mode 100644
index 97796cb..0000000
Binary files a/img/cncf-color.png and /dev/null differ
diff --git a/img/cncf-white.png b/img/cncf-white.png
deleted file mode 100644
index 9c3fd07..0000000
Binary files a/img/cncf-white.png and /dev/null differ
diff --git a/img/spec-goals-ws.png b/img/spec-goals-ws.png
deleted file mode 100644
index 53722bd..0000000
Binary files a/img/spec-goals-ws.png and /dev/null differ
diff --git a/img/sw-logo-header.png b/img/sw-logo-header.png
deleted file mode 100644
index c1fd957..0000000
Binary files a/img/sw-logo-header.png and /dev/null differ
diff --git a/img/sw-logo-nav.png b/img/sw-logo-nav.png
deleted file mode 100644
index c3c5425..0000000
Binary files a/img/sw-logo-nav.png and /dev/null differ
diff --git a/index.html b/index.html
deleted file mode 100644
index f91a441..0000000
--- a/index.html
+++ /dev/null
@@ -1,263 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- Serverless Workflow Specification
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
Serverless Workflow
-
- A specification for defining declarative workflow models
- that orchestrate Event-driven, Serverless applications.
-
-
-
-
-
-
-
-
-
-
Why Serverless Workflow
-
-
- Workflows have become key components of Serverless applications, yet implementations tend
- to describe workflows differently.
-
-
-
-
-
- Consistency
-
-
- The lack of a common way of describing serverless workflows means developers
- do not have a consistent way of modelling their serverless orchestrations.
-
-
-
-
-
- Portability
-
-
- The portability and productivity we can achieve from modeling serverless workflows is hindered overall.
-
-
-
-
-
- Accessibility
-
-
- No common workflow format means no common libraries, tooling, and infrastructure for modeling
- serverless workflows across different cloud platforms and/or containers.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
What is Serverless Workflow
-
-
- Serverless Workflow is a specification
- for describing workflows in a common way.
- Serverless Workflow seeks to provide a vendor-neutral and platform-independent markup for
- orchestrating services on cloud and container platforms.
-
-
-
-
-
-
-
-
-
- Serverless Workflow is a new effort and it's still under active development.
- Its working group consists of a number of leaders in the business automation industry and enthusiasts in that field.
- The specification is under the Cloud Native Computing Foundation .
-
-
-
-
-
-
-
-
-
-
-
Contribute to the Serverless Workflow Specification
-
-
- Serverless Workflow is organized via the CNCF's Serverless Working Group .
-
- It is hosted by the Cloud Native Computing Foundation (CNCF) and was approved as a
- Cloud Native Sandbox level project on July 14, 2020
-
- Everyone is encouraged to join us! If you're interested in contributing, please collaborate with us via:
-
-
-
- As contributors and maintainers of this project, and in the interest of fostering
- an open and welcoming community, we pledge to respect all people who contribute
- through reporting issues, posting feature requests, updating documentation,
- submitting pull requests or patches, and other activities.
-
-
- We are committed to making participation in this project a harassment-free experience for
- everyone, regardless of level of experience, gender, gender identity and expression,
- sexual orientation, disability, personal appearance, body size, race, ethnicity, age,
- religion, or nationality.
-
-
- See our full project Code of Conduct information here .
-
-
-
-
-
-
-
-
-
-
-
Resources
-
-
-
Videos and Presentations
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/js/sws.js b/js/sws.js
deleted file mode 100644
index 0e9e782..0000000
--- a/js/sws.js
+++ /dev/null
@@ -1,45 +0,0 @@
-/**
- * Copyright 2020 The Serverless Workflow Specification Authors
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-(function($) {
- "use strict";
-
- // Smooth scrolling using jQuery easing
- $('a.js-scroll-trigger[href*="#"]:not([href="#"])').click(function() {
- if (location.pathname.replace(/^\//, '') == this.pathname.replace(/^\//, '') && location.hostname == this.hostname) {
- var target = $(this.hash);
- target = target.length ? target : $('[name=' + this.hash.slice(1) + ']');
- if (target.length) {
- $('html, body').animate({
- scrollTop: (target.offset().top - 56)
- }, 1000, "easeInOutExpo");
- return false;
- }
- }
- });
-
- // Closes responsive menu when a scroll trigger link is clicked
- $('.js-scroll-trigger').click(function() {
- $('.navbar-collapse').collapse('hide');
- });
-
- // Activate scrollspy to add active class to navbar items on scroll
- $('body').scrollspy({
- target: '#mainNav',
- offset: 56
- });
-
-})(jQuery);
\ No newline at end of file
diff --git a/netlify.toml b/netlify.toml
new file mode 100644
index 0000000..cfee5f9
--- /dev/null
+++ b/netlify.toml
@@ -0,0 +1,3 @@
+[build]
+command = "npm run build"
+publish = "dist"
\ No newline at end of file
diff --git a/package-lock.json b/package-lock.json
new file mode 100644
index 0000000..828a267
--- /dev/null
+++ b/package-lock.json
@@ -0,0 +1,7640 @@
+{
+ "name": "website",
+ "version": "0.0.1",
+ "lockfileVersion": 3,
+ "requires": true,
+ "packages": {
+ "": {
+ "name": "website",
+ "version": "0.0.1",
+ "dependencies": {
+ "@astrojs/mdx": "^4.2.2",
+ "@astrojs/netlify": "^6.2.4",
+ "@astrojs/rss": "^4.0.11",
+ "@astrojs/sitemap": "^3.3.0",
+ "@tailwindcss/vite": "^4.0.13",
+ "astro": "^5.5.5",
+ "tailwindcss": "^4.0.13"
+ },
+ "devDependencies": {
+ "@tailwindcss/typography": "^0.5.16",
+ "daisyui": "^5.0.2"
+ }
+ },
+ "node_modules/@astrojs/compiler": {
+ "version": "2.13.1",
+ "resolved": "https://registry.npmjs.org/@astrojs/compiler/-/compiler-2.13.1.tgz",
+ "integrity": "sha512-f3FN83d2G/v32ipNClRKgYv30onQlMZX1vCeZMjPsMMPl1mDpmbl0+N5BYo4S/ofzqJyS5hvwacEo0CCVDn/Qg==",
+ "license": "MIT"
+ },
+ "node_modules/@astrojs/internal-helpers": {
+ "version": "0.6.1",
+ "resolved": "https://registry.npmjs.org/@astrojs/internal-helpers/-/internal-helpers-0.6.1.tgz",
+ "integrity": "sha512-l5Pqf6uZu31aG+3Lv8nl/3s4DbUzdlxTWDof4pEpto6GUJNhhCbelVi9dEyurOVyqaelwmS9oSyOWOENSfgo9A==",
+ "license": "MIT"
+ },
+ "node_modules/@astrojs/markdown-remark": {
+ "version": "6.3.1",
+ "resolved": "https://registry.npmjs.org/@astrojs/markdown-remark/-/markdown-remark-6.3.1.tgz",
+ "integrity": "sha512-c5F5gGrkczUaTVgmMW9g1YMJGzOtRvjjhw6IfGuxarM6ct09MpwysP10US729dy07gg8y+ofVifezvP3BNsWZg==",
+ "dependencies": {
+ "@astrojs/internal-helpers": "0.6.1",
+ "@astrojs/prism": "3.2.0",
+ "github-slugger": "^2.0.0",
+ "hast-util-from-html": "^2.0.3",
+ "hast-util-to-text": "^4.0.2",
+ "import-meta-resolve": "^4.1.0",
+ "js-yaml": "^4.1.0",
+ "mdast-util-definitions": "^6.0.0",
+ "rehype-raw": "^7.0.0",
+ "rehype-stringify": "^10.0.1",
+ "remark-gfm": "^4.0.1",
+ "remark-parse": "^11.0.0",
+ "remark-rehype": "^11.1.1",
+ "remark-smartypants": "^3.0.2",
+ "shiki": "^3.0.0",
+ "smol-toml": "^1.3.1",
+ "unified": "^11.0.5",
+ "unist-util-remove-position": "^5.0.0",
+ "unist-util-visit": "^5.0.0",
+ "unist-util-visit-parents": "^6.0.1",
+ "vfile": "^6.0.3"
+ }
+ },
+ "node_modules/@astrojs/mdx": {
+ "version": "4.2.2",
+ "resolved": "https://registry.npmjs.org/@astrojs/mdx/-/mdx-4.2.2.tgz",
+ "integrity": "sha512-nWDvuCPenxoxbog3YK3yVWF3Jw7Lq1+ziWSAOc9fy6zAUbPDSr2bt3c6r6+oa1ll0miCQByj5UVts6eJvN/y+g==",
+ "dependencies": {
+ "@astrojs/markdown-remark": "6.3.1",
+ "@mdx-js/mdx": "^3.1.0",
+ "acorn": "^8.14.1",
+ "es-module-lexer": "^1.6.0",
+ "estree-util-visit": "^2.0.0",
+ "hast-util-to-html": "^9.0.5",
+ "kleur": "^4.1.5",
+ "rehype-raw": "^7.0.0",
+ "remark-gfm": "^4.0.1",
+ "remark-smartypants": "^3.0.2",
+ "source-map": "^0.7.4",
+ "unist-util-visit": "^5.0.0",
+ "vfile": "^6.0.3"
+ },
+ "engines": {
+ "node": "^18.17.1 || ^20.3.0 || >=22.0.0"
+ },
+ "peerDependencies": {
+ "astro": "^5.0.0"
+ }
+ },
+ "node_modules/@astrojs/netlify": {
+ "version": "6.2.4",
+ "resolved": "https://registry.npmjs.org/@astrojs/netlify/-/netlify-6.2.4.tgz",
+ "integrity": "sha512-Pk1ZRDgH4cmrIqIuYQn1DJjNKRLNjybHoYWMoZnE+zP2NLQFirR15FQFKGbg8S3+zWQ1EptOBAb/ETnXpbwepA==",
+ "dependencies": {
+ "@astrojs/internal-helpers": "0.6.1",
+ "@astrojs/underscore-redirects": "0.6.0",
+ "@netlify/blobs": "^8.1.1",
+ "@netlify/functions": "^3.0.1",
+ "@vercel/nft": "^0.29.2",
+ "esbuild": "^0.25.0",
+ "tinyglobby": "^0.2.12",
+ "vite": "^6.2.3"
+ },
+ "peerDependencies": {
+ "astro": "^5.3.0"
+ }
+ },
+ "node_modules/@astrojs/prism": {
+ "version": "3.2.0",
+ "resolved": "https://registry.npmjs.org/@astrojs/prism/-/prism-3.2.0.tgz",
+ "integrity": "sha512-GilTHKGCW6HMq7y3BUv9Ac7GMe/MO9gi9GW62GzKtth0SwukCu/qp2wLiGpEujhY+VVhaG9v7kv/5vFzvf4NYw==",
+ "dependencies": {
+ "prismjs": "^1.29.0"
+ },
+ "engines": {
+ "node": "^18.17.1 || ^20.3.0 || >=22.0.0"
+ }
+ },
+ "node_modules/@astrojs/rss": {
+ "version": "4.0.11",
+ "resolved": "https://registry.npmjs.org/@astrojs/rss/-/rss-4.0.11.tgz",
+ "integrity": "sha512-3e3H8i6kc97KGnn9iaZBJpIkdoQi8MmR5zH5R+dWsfCM44lLTszOqy1OBfGGxDt56mpQkYVtZJWoxMyWuUZBfw==",
+ "license": "MIT",
+ "dependencies": {
+ "fast-xml-parser": "^4.5.0",
+ "kleur": "^4.1.5"
+ }
+ },
+ "node_modules/@astrojs/sitemap": {
+ "version": "3.3.0",
+ "resolved": "https://registry.npmjs.org/@astrojs/sitemap/-/sitemap-3.3.0.tgz",
+ "integrity": "sha512-nYE4lKQtk+Kbrw/w0G0TTgT724co0jUsU4tPlHY9au5HmTBKbwiCLwO/15b1/y13aZ4Kr9ZbMeMHlXuwn0ty4Q==",
+ "dependencies": {
+ "sitemap": "^8.0.0",
+ "stream-replace-string": "^2.0.0",
+ "zod": "^3.24.2"
+ }
+ },
+ "node_modules/@astrojs/telemetry": {
+ "version": "3.3.0",
+ "resolved": "https://registry.npmjs.org/@astrojs/telemetry/-/telemetry-3.3.0.tgz",
+ "integrity": "sha512-UFBgfeldP06qu6khs/yY+q1cDAaArM2/7AEIqQ9Cuvf7B1hNLq0xDrZkct+QoIGyjq56y8IaE2I3CTvG99mlhQ==",
+ "license": "MIT",
+ "dependencies": {
+ "ci-info": "^4.2.0",
+ "debug": "^4.4.0",
+ "dlv": "^1.1.3",
+ "dset": "^3.1.4",
+ "is-docker": "^3.0.0",
+ "is-wsl": "^3.1.0",
+ "which-pm-runs": "^1.1.0"
+ },
+ "engines": {
+ "node": "18.20.8 || ^20.3.0 || >=22.0.0"
+ }
+ },
+ "node_modules/@astrojs/underscore-redirects": {
+ "version": "0.6.0",
+ "resolved": "https://registry.npmjs.org/@astrojs/underscore-redirects/-/underscore-redirects-0.6.0.tgz",
+ "integrity": "sha512-dnJgFpaM955IFNIkEEmMaaIdWXRdeZs1ID6mlGBqdjh6NiCXfKmOdq7L4fd9Dd/tr18fkLrOJ25IUJSxRAEhjQ==",
+ "license": "MIT"
+ },
+ "node_modules/@babel/helper-string-parser": {
+ "version": "7.27.1",
+ "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.27.1.tgz",
+ "integrity": "sha512-qMlSxKbpRlAridDExk92nSobyDdpPijUq2DW6oDnUqd0iOGxmQjyqhMIihI9+zv4LPyZdRje2cavWPbCbWm3eA==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/helper-validator-identifier": {
+ "version": "7.28.5",
+ "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.28.5.tgz",
+ "integrity": "sha512-qSs4ifwzKJSV39ucNjsvc6WVHs6b7S03sOh2OcHF9UHfVPqWWALUsNUVzhSBiItjRZoLHx7nIarVjqKVusUZ1Q==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/parser": {
+ "version": "7.29.2",
+ "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.29.2.tgz",
+ "integrity": "sha512-4GgRzy/+fsBa72/RZVJmGKPmZu9Byn8o4MoLpmNe1m8ZfYnz5emHLQz3U4gLud6Zwl0RZIcgiLD7Uq7ySFuDLA==",
+ "license": "MIT",
+ "dependencies": {
+ "@babel/types": "^7.29.0"
+ },
+ "bin": {
+ "parser": "bin/babel-parser.js"
+ },
+ "engines": {
+ "node": ">=6.0.0"
+ }
+ },
+ "node_modules/@babel/types": {
+ "version": "7.29.0",
+ "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.29.0.tgz",
+ "integrity": "sha512-LwdZHpScM4Qz8Xw2iKSzS+cfglZzJGvofQICy7W7v4caru4EaAmyUuO6BGrbyQ2mYV11W0U8j5mBhd14dd3B0A==",
+ "license": "MIT",
+ "dependencies": {
+ "@babel/helper-string-parser": "^7.27.1",
+ "@babel/helper-validator-identifier": "^7.28.5"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@capsizecss/unpack": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/@capsizecss/unpack/-/unpack-4.0.0.tgz",
+ "integrity": "sha512-VERIM64vtTP1C4mxQ5thVT9fK0apjPFobqybMtA1UdUujWka24ERHbRHFGmpbbhp73MhV+KSsHQH9C6uOTdEQA==",
+ "license": "MIT",
+ "dependencies": {
+ "fontkitten": "^1.0.0"
+ },
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/@emnapi/runtime": {
+ "version": "1.5.0",
+ "resolved": "https://registry.npmjs.org/@emnapi/runtime/-/runtime-1.5.0.tgz",
+ "integrity": "sha512-97/BJ3iXHww3djw6hYIfErCZFee7qCtrneuLa20UXFCOTCfBM2cvQHjWJ2EG0s0MtdNwInarqCTz35i4wWXHsQ==",
+ "license": "MIT",
+ "optional": true,
+ "dependencies": {
+ "tslib": "^2.4.0"
+ }
+ },
+ "node_modules/@esbuild/aix-ppc64": {
+ "version": "0.25.1",
+ "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.25.1.tgz",
+ "integrity": "sha512-kfYGy8IdzTGy+z0vFGvExZtxkFlA4zAxgKEahG9KE1ScBjpQnFsNOX8KTU5ojNru5ed5CVoJYXFtoxaq5nFbjQ==",
+ "cpu": [
+ "ppc64"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "aix"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/@esbuild/android-arm": {
+ "version": "0.25.1",
+ "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.25.1.tgz",
+ "integrity": "sha512-dp+MshLYux6j/JjdqVLnMglQlFu+MuVeNrmT5nk6q07wNhCdSnB7QZj+7G8VMUGh1q+vj2Bq8kRsuyA00I/k+Q==",
+ "cpu": [
+ "arm"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "android"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/@esbuild/android-arm64": {
+ "version": "0.25.1",
+ "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.25.1.tgz",
+ "integrity": "sha512-50tM0zCJW5kGqgG7fQ7IHvQOcAn9TKiVRuQ/lN0xR+T2lzEFvAi1ZcS8DiksFcEpf1t/GYOeOfCAgDHFpkiSmA==",
+ "cpu": [
+ "arm64"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "android"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/@esbuild/android-x64": {
+ "version": "0.25.1",
+ "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.25.1.tgz",
+ "integrity": "sha512-GCj6WfUtNldqUzYkN/ITtlhwQqGWu9S45vUXs7EIYf+7rCiiqH9bCloatO9VhxsL0Pji+PF4Lz2XXCES+Q8hDw==",
+ "cpu": [
+ "x64"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "android"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/@esbuild/darwin-arm64": {
+ "version": "0.25.1",
+ "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.25.1.tgz",
+ "integrity": "sha512-5hEZKPf+nQjYoSr/elb62U19/l1mZDdqidGfmFutVUjjUZrOazAtwK+Kr+3y0C/oeJfLlxo9fXb1w7L+P7E4FQ==",
+ "cpu": [
+ "arm64"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "darwin"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/@esbuild/darwin-x64": {
+ "version": "0.25.1",
+ "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.25.1.tgz",
+ "integrity": "sha512-hxVnwL2Dqs3fM1IWq8Iezh0cX7ZGdVhbTfnOy5uURtao5OIVCEyj9xIzemDi7sRvKsuSdtCAhMKarxqtlyVyfA==",
+ "cpu": [
+ "x64"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "darwin"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/@esbuild/freebsd-arm64": {
+ "version": "0.25.1",
+ "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.25.1.tgz",
+ "integrity": "sha512-1MrCZs0fZa2g8E+FUo2ipw6jw5qqQiH+tERoS5fAfKnRx6NXH31tXBKI3VpmLijLH6yriMZsxJtaXUyFt/8Y4A==",
+ "cpu": [
+ "arm64"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "freebsd"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/@esbuild/freebsd-x64": {
+ "version": "0.25.1",
+ "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.25.1.tgz",
+ "integrity": "sha512-0IZWLiTyz7nm0xuIs0q1Y3QWJC52R8aSXxe40VUxm6BB1RNmkODtW6LHvWRrGiICulcX7ZvyH6h5fqdLu4gkww==",
+ "cpu": [
+ "x64"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "freebsd"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/@esbuild/linux-arm": {
+ "version": "0.25.1",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.25.1.tgz",
+ "integrity": "sha512-NdKOhS4u7JhDKw9G3cY6sWqFcnLITn6SqivVArbzIaf3cemShqfLGHYMx8Xlm/lBit3/5d7kXvriTUGa5YViuQ==",
+ "cpu": [
+ "arm"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/@esbuild/linux-arm64": {
+ "version": "0.25.1",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.25.1.tgz",
+ "integrity": "sha512-jaN3dHi0/DDPelk0nLcXRm1q7DNJpjXy7yWaWvbfkPvI+7XNSc/lDOnCLN7gzsyzgu6qSAmgSvP9oXAhP973uQ==",
+ "cpu": [
+ "arm64"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/@esbuild/linux-ia32": {
+ "version": "0.25.1",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.25.1.tgz",
+ "integrity": "sha512-OJykPaF4v8JidKNGz8c/q1lBO44sQNUQtq1KktJXdBLn1hPod5rE/Hko5ugKKZd+D2+o1a9MFGUEIUwO2YfgkQ==",
+ "cpu": [
+ "ia32"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/@esbuild/linux-loong64": {
+ "version": "0.25.1",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.25.1.tgz",
+ "integrity": "sha512-nGfornQj4dzcq5Vp835oM/o21UMlXzn79KobKlcs3Wz9smwiifknLy4xDCLUU0BWp7b/houtdrgUz7nOGnfIYg==",
+ "cpu": [
+ "loong64"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/@esbuild/linux-mips64el": {
+ "version": "0.25.1",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.25.1.tgz",
+ "integrity": "sha512-1osBbPEFYwIE5IVB/0g2X6i1qInZa1aIoj1TdL4AaAb55xIIgbg8Doq6a5BzYWgr+tEcDzYH67XVnTmUzL+nXg==",
+ "cpu": [
+ "mips64el"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/@esbuild/linux-ppc64": {
+ "version": "0.25.1",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.25.1.tgz",
+ "integrity": "sha512-/6VBJOwUf3TdTvJZ82qF3tbLuWsscd7/1w+D9LH0W/SqUgM5/JJD0lrJ1fVIfZsqB6RFmLCe0Xz3fmZc3WtyVg==",
+ "cpu": [
+ "ppc64"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/@esbuild/linux-riscv64": {
+ "version": "0.25.1",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.25.1.tgz",
+ "integrity": "sha512-nSut/Mx5gnilhcq2yIMLMe3Wl4FK5wx/o0QuuCLMtmJn+WeWYoEGDN1ipcN72g1WHsnIbxGXd4i/MF0gTcuAjQ==",
+ "cpu": [
+ "riscv64"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/@esbuild/linux-s390x": {
+ "version": "0.25.1",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.25.1.tgz",
+ "integrity": "sha512-cEECeLlJNfT8kZHqLarDBQso9a27o2Zd2AQ8USAEoGtejOrCYHNtKP8XQhMDJMtthdF4GBmjR2au3x1udADQQQ==",
+ "cpu": [
+ "s390x"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/@esbuild/linux-x64": {
+ "version": "0.25.1",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.25.1.tgz",
+ "integrity": "sha512-xbfUhu/gnvSEg+EGovRc+kjBAkrvtk38RlerAzQxvMzlB4fXpCFCeUAYzJvrnhFtdeyVCDANSjJvOvGYoeKzFA==",
+ "cpu": [
+ "x64"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/@esbuild/netbsd-arm64": {
+ "version": "0.25.1",
+ "resolved": "https://registry.npmjs.org/@esbuild/netbsd-arm64/-/netbsd-arm64-0.25.1.tgz",
+ "integrity": "sha512-O96poM2XGhLtpTh+s4+nP7YCCAfb4tJNRVZHfIE7dgmax+yMP2WgMd2OecBuaATHKTHsLWHQeuaxMRnCsH8+5g==",
+ "cpu": [
+ "arm64"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "netbsd"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/@esbuild/netbsd-x64": {
+ "version": "0.25.1",
+ "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.25.1.tgz",
+ "integrity": "sha512-X53z6uXip6KFXBQ+Krbx25XHV/NCbzryM6ehOAeAil7X7oa4XIq+394PWGnwaSQ2WRA0KI6PUO6hTO5zeF5ijA==",
+ "cpu": [
+ "x64"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "netbsd"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/@esbuild/openbsd-arm64": {
+ "version": "0.25.1",
+ "resolved": "https://registry.npmjs.org/@esbuild/openbsd-arm64/-/openbsd-arm64-0.25.1.tgz",
+ "integrity": "sha512-Na9T3szbXezdzM/Kfs3GcRQNjHzM6GzFBeU1/6IV/npKP5ORtp9zbQjvkDJ47s6BCgaAZnnnu/cY1x342+MvZg==",
+ "cpu": [
+ "arm64"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "openbsd"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/@esbuild/openbsd-x64": {
+ "version": "0.25.1",
+ "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.25.1.tgz",
+ "integrity": "sha512-T3H78X2h1tszfRSf+txbt5aOp/e7TAz3ptVKu9Oyir3IAOFPGV6O9c2naym5TOriy1l0nNf6a4X5UXRZSGX/dw==",
+ "cpu": [
+ "x64"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "openbsd"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/@esbuild/openharmony-arm64": {
+ "version": "0.27.7",
+ "resolved": "https://registry.npmjs.org/@esbuild/openharmony-arm64/-/openharmony-arm64-0.27.7.tgz",
+ "integrity": "sha512-+KrvYb/C8zA9CU/g0sR6w2RBw7IGc5J2BPnc3dYc5VJxHCSF1yNMxTV5LQ7GuKteQXZtspjFbiuW5/dOj7H4Yw==",
+ "cpu": [
+ "arm64"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "openharmony"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/@esbuild/sunos-x64": {
+ "version": "0.25.1",
+ "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.25.1.tgz",
+ "integrity": "sha512-2H3RUvcmULO7dIE5EWJH8eubZAI4xw54H1ilJnRNZdeo8dTADEZ21w6J22XBkXqGJbe0+wnNJtw3UXRoLJnFEg==",
+ "cpu": [
+ "x64"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "sunos"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/@esbuild/win32-arm64": {
+ "version": "0.25.1",
+ "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.25.1.tgz",
+ "integrity": "sha512-GE7XvrdOzrb+yVKB9KsRMq+7a2U/K5Cf/8grVFRAGJmfADr/e/ODQ134RK2/eeHqYV5eQRFxb1hY7Nr15fv1NQ==",
+ "cpu": [
+ "arm64"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "win32"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/@esbuild/win32-ia32": {
+ "version": "0.25.1",
+ "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.25.1.tgz",
+ "integrity": "sha512-uOxSJCIcavSiT6UnBhBzE8wy3n0hOkJsBOzy7HDAuTDE++1DJMRRVCPGisULScHL+a/ZwdXPpXD3IyFKjA7K8A==",
+ "cpu": [
+ "ia32"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "win32"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/@esbuild/win32-x64": {
+ "version": "0.25.1",
+ "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.25.1.tgz",
+ "integrity": "sha512-Y1EQdcfwMSeQN/ujR5VayLOJ1BHaK+ssyk0AEzPjC+t1lITgsnccPqFjb6V+LsTp/9Iov4ysfjxLaGJ9RPtkVg==",
+ "cpu": [
+ "x64"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "win32"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/@img/sharp-darwin-arm64": {
+ "version": "0.34.3",
+ "resolved": "https://registry.npmjs.org/@img/sharp-darwin-arm64/-/sharp-darwin-arm64-0.34.3.tgz",
+ "integrity": "sha512-ryFMfvxxpQRsgZJqBd4wsttYQbCxsJksrv9Lw/v798JcQ8+w84mBWuXwl+TT0WJ/WrYOLaYpwQXi3sA9nTIaIg==",
+ "cpu": [
+ "arm64"
+ ],
+ "license": "Apache-2.0",
+ "optional": true,
+ "os": [
+ "darwin"
+ ],
+ "engines": {
+ "node": "^18.17.0 || ^20.3.0 || >=21.0.0"
+ },
+ "funding": {
+ "url": "https://opencollective.com/libvips"
+ },
+ "optionalDependencies": {
+ "@img/sharp-libvips-darwin-arm64": "1.2.0"
+ }
+ },
+ "node_modules/@img/sharp-darwin-x64": {
+ "version": "0.34.3",
+ "resolved": "https://registry.npmjs.org/@img/sharp-darwin-x64/-/sharp-darwin-x64-0.34.3.tgz",
+ "integrity": "sha512-yHpJYynROAj12TA6qil58hmPmAwxKKC7reUqtGLzsOHfP7/rniNGTL8tjWX6L3CTV4+5P4ypcS7Pp+7OB+8ihA==",
+ "cpu": [
+ "x64"
+ ],
+ "license": "Apache-2.0",
+ "optional": true,
+ "os": [
+ "darwin"
+ ],
+ "engines": {
+ "node": "^18.17.0 || ^20.3.0 || >=21.0.0"
+ },
+ "funding": {
+ "url": "https://opencollective.com/libvips"
+ },
+ "optionalDependencies": {
+ "@img/sharp-libvips-darwin-x64": "1.2.0"
+ }
+ },
+ "node_modules/@img/sharp-libvips-darwin-arm64": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/@img/sharp-libvips-darwin-arm64/-/sharp-libvips-darwin-arm64-1.2.0.tgz",
+ "integrity": "sha512-sBZmpwmxqwlqG9ueWFXtockhsxefaV6O84BMOrhtg/YqbTaRdqDE7hxraVE3y6gVM4eExmfzW4a8el9ArLeEiQ==",
+ "cpu": [
+ "arm64"
+ ],
+ "license": "LGPL-3.0-or-later",
+ "optional": true,
+ "os": [
+ "darwin"
+ ],
+ "funding": {
+ "url": "https://opencollective.com/libvips"
+ }
+ },
+ "node_modules/@img/sharp-libvips-darwin-x64": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/@img/sharp-libvips-darwin-x64/-/sharp-libvips-darwin-x64-1.2.0.tgz",
+ "integrity": "sha512-M64XVuL94OgiNHa5/m2YvEQI5q2cl9d/wk0qFTDVXcYzi43lxuiFTftMR1tOnFQovVXNZJ5TURSDK2pNe9Yzqg==",
+ "cpu": [
+ "x64"
+ ],
+ "license": "LGPL-3.0-or-later",
+ "optional": true,
+ "os": [
+ "darwin"
+ ],
+ "funding": {
+ "url": "https://opencollective.com/libvips"
+ }
+ },
+ "node_modules/@img/sharp-libvips-linux-arm": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-arm/-/sharp-libvips-linux-arm-1.2.0.tgz",
+ "integrity": "sha512-mWd2uWvDtL/nvIzThLq3fr2nnGfyr/XMXlq8ZJ9WMR6PXijHlC3ksp0IpuhK6bougvQrchUAfzRLnbsen0Cqvw==",
+ "cpu": [
+ "arm"
+ ],
+ "license": "LGPL-3.0-or-later",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "funding": {
+ "url": "https://opencollective.com/libvips"
+ }
+ },
+ "node_modules/@img/sharp-libvips-linux-arm64": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-arm64/-/sharp-libvips-linux-arm64-1.2.0.tgz",
+ "integrity": "sha512-RXwd0CgG+uPRX5YYrkzKyalt2OJYRiJQ8ED/fi1tq9WQW2jsQIn0tqrlR5l5dr/rjqq6AHAxURhj2DVjyQWSOA==",
+ "cpu": [
+ "arm64"
+ ],
+ "license": "LGPL-3.0-or-later",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "funding": {
+ "url": "https://opencollective.com/libvips"
+ }
+ },
+ "node_modules/@img/sharp-libvips-linux-ppc64": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-ppc64/-/sharp-libvips-linux-ppc64-1.2.0.tgz",
+ "integrity": "sha512-Xod/7KaDDHkYu2phxxfeEPXfVXFKx70EAFZ0qyUdOjCcxbjqyJOEUpDe6RIyaunGxT34Anf9ue/wuWOqBW2WcQ==",
+ "cpu": [
+ "ppc64"
+ ],
+ "license": "LGPL-3.0-or-later",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "funding": {
+ "url": "https://opencollective.com/libvips"
+ }
+ },
+ "node_modules/@img/sharp-libvips-linux-s390x": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-s390x/-/sharp-libvips-linux-s390x-1.2.0.tgz",
+ "integrity": "sha512-eMKfzDxLGT8mnmPJTNMcjfO33fLiTDsrMlUVcp6b96ETbnJmd4uvZxVJSKPQfS+odwfVaGifhsB07J1LynFehw==",
+ "cpu": [
+ "s390x"
+ ],
+ "license": "LGPL-3.0-or-later",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "funding": {
+ "url": "https://opencollective.com/libvips"
+ }
+ },
+ "node_modules/@img/sharp-libvips-linux-x64": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-x64/-/sharp-libvips-linux-x64-1.2.0.tgz",
+ "integrity": "sha512-ZW3FPWIc7K1sH9E3nxIGB3y3dZkpJlMnkk7z5tu1nSkBoCgw2nSRTFHI5pB/3CQaJM0pdzMF3paf9ckKMSE9Tg==",
+ "cpu": [
+ "x64"
+ ],
+ "license": "LGPL-3.0-or-later",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "funding": {
+ "url": "https://opencollective.com/libvips"
+ }
+ },
+ "node_modules/@img/sharp-libvips-linuxmusl-arm64": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linuxmusl-arm64/-/sharp-libvips-linuxmusl-arm64-1.2.0.tgz",
+ "integrity": "sha512-UG+LqQJbf5VJ8NWJ5Z3tdIe/HXjuIdo4JeVNADXBFuG7z9zjoegpzzGIyV5zQKi4zaJjnAd2+g2nna8TZvuW9Q==",
+ "cpu": [
+ "arm64"
+ ],
+ "license": "LGPL-3.0-or-later",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "funding": {
+ "url": "https://opencollective.com/libvips"
+ }
+ },
+ "node_modules/@img/sharp-libvips-linuxmusl-x64": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linuxmusl-x64/-/sharp-libvips-linuxmusl-x64-1.2.0.tgz",
+ "integrity": "sha512-SRYOLR7CXPgNze8akZwjoGBoN1ThNZoqpOgfnOxmWsklTGVfJiGJoC/Lod7aNMGA1jSsKWM1+HRX43OP6p9+6Q==",
+ "cpu": [
+ "x64"
+ ],
+ "license": "LGPL-3.0-or-later",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "funding": {
+ "url": "https://opencollective.com/libvips"
+ }
+ },
+ "node_modules/@img/sharp-linux-arm": {
+ "version": "0.34.3",
+ "resolved": "https://registry.npmjs.org/@img/sharp-linux-arm/-/sharp-linux-arm-0.34.3.tgz",
+ "integrity": "sha512-oBK9l+h6KBN0i3dC8rYntLiVfW8D8wH+NPNT3O/WBHeW0OQWCjfWksLUaPidsrDKpJgXp3G3/hkmhptAW0I3+A==",
+ "cpu": [
+ "arm"
+ ],
+ "license": "Apache-2.0",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": "^18.17.0 || ^20.3.0 || >=21.0.0"
+ },
+ "funding": {
+ "url": "https://opencollective.com/libvips"
+ },
+ "optionalDependencies": {
+ "@img/sharp-libvips-linux-arm": "1.2.0"
+ }
+ },
+ "node_modules/@img/sharp-linux-arm64": {
+ "version": "0.34.3",
+ "resolved": "https://registry.npmjs.org/@img/sharp-linux-arm64/-/sharp-linux-arm64-0.34.3.tgz",
+ "integrity": "sha512-QdrKe3EvQrqwkDrtuTIjI0bu6YEJHTgEeqdzI3uWJOH6G1O8Nl1iEeVYRGdj1h5I21CqxSvQp1Yv7xeU3ZewbA==",
+ "cpu": [
+ "arm64"
+ ],
+ "license": "Apache-2.0",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": "^18.17.0 || ^20.3.0 || >=21.0.0"
+ },
+ "funding": {
+ "url": "https://opencollective.com/libvips"
+ },
+ "optionalDependencies": {
+ "@img/sharp-libvips-linux-arm64": "1.2.0"
+ }
+ },
+ "node_modules/@img/sharp-linux-ppc64": {
+ "version": "0.34.3",
+ "resolved": "https://registry.npmjs.org/@img/sharp-linux-ppc64/-/sharp-linux-ppc64-0.34.3.tgz",
+ "integrity": "sha512-GLtbLQMCNC5nxuImPR2+RgrviwKwVql28FWZIW1zWruy6zLgA5/x2ZXk3mxj58X/tszVF69KK0Is83V8YgWhLA==",
+ "cpu": [
+ "ppc64"
+ ],
+ "license": "Apache-2.0",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": "^18.17.0 || ^20.3.0 || >=21.0.0"
+ },
+ "funding": {
+ "url": "https://opencollective.com/libvips"
+ },
+ "optionalDependencies": {
+ "@img/sharp-libvips-linux-ppc64": "1.2.0"
+ }
+ },
+ "node_modules/@img/sharp-linux-s390x": {
+ "version": "0.34.3",
+ "resolved": "https://registry.npmjs.org/@img/sharp-linux-s390x/-/sharp-linux-s390x-0.34.3.tgz",
+ "integrity": "sha512-3gahT+A6c4cdc2edhsLHmIOXMb17ltffJlxR0aC2VPZfwKoTGZec6u5GrFgdR7ciJSsHT27BD3TIuGcuRT0KmQ==",
+ "cpu": [
+ "s390x"
+ ],
+ "license": "Apache-2.0",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": "^18.17.0 || ^20.3.0 || >=21.0.0"
+ },
+ "funding": {
+ "url": "https://opencollective.com/libvips"
+ },
+ "optionalDependencies": {
+ "@img/sharp-libvips-linux-s390x": "1.2.0"
+ }
+ },
+ "node_modules/@img/sharp-linux-x64": {
+ "version": "0.34.3",
+ "resolved": "https://registry.npmjs.org/@img/sharp-linux-x64/-/sharp-linux-x64-0.34.3.tgz",
+ "integrity": "sha512-8kYso8d806ypnSq3/Ly0QEw90V5ZoHh10yH0HnrzOCr6DKAPI6QVHvwleqMkVQ0m+fc7EH8ah0BB0QPuWY6zJQ==",
+ "cpu": [
+ "x64"
+ ],
+ "license": "Apache-2.0",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": "^18.17.0 || ^20.3.0 || >=21.0.0"
+ },
+ "funding": {
+ "url": "https://opencollective.com/libvips"
+ },
+ "optionalDependencies": {
+ "@img/sharp-libvips-linux-x64": "1.2.0"
+ }
+ },
+ "node_modules/@img/sharp-linuxmusl-arm64": {
+ "version": "0.34.3",
+ "resolved": "https://registry.npmjs.org/@img/sharp-linuxmusl-arm64/-/sharp-linuxmusl-arm64-0.34.3.tgz",
+ "integrity": "sha512-vAjbHDlr4izEiXM1OTggpCcPg9tn4YriK5vAjowJsHwdBIdx0fYRsURkxLG2RLm9gyBq66gwtWI8Gx0/ov+JKQ==",
+ "cpu": [
+ "arm64"
+ ],
+ "license": "Apache-2.0",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": "^18.17.0 || ^20.3.0 || >=21.0.0"
+ },
+ "funding": {
+ "url": "https://opencollective.com/libvips"
+ },
+ "optionalDependencies": {
+ "@img/sharp-libvips-linuxmusl-arm64": "1.2.0"
+ }
+ },
+ "node_modules/@img/sharp-linuxmusl-x64": {
+ "version": "0.34.3",
+ "resolved": "https://registry.npmjs.org/@img/sharp-linuxmusl-x64/-/sharp-linuxmusl-x64-0.34.3.tgz",
+ "integrity": "sha512-gCWUn9547K5bwvOn9l5XGAEjVTTRji4aPTqLzGXHvIr6bIDZKNTA34seMPgM0WmSf+RYBH411VavCejp3PkOeQ==",
+ "cpu": [
+ "x64"
+ ],
+ "license": "Apache-2.0",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": "^18.17.0 || ^20.3.0 || >=21.0.0"
+ },
+ "funding": {
+ "url": "https://opencollective.com/libvips"
+ },
+ "optionalDependencies": {
+ "@img/sharp-libvips-linuxmusl-x64": "1.2.0"
+ }
+ },
+ "node_modules/@img/sharp-wasm32": {
+ "version": "0.34.3",
+ "resolved": "https://registry.npmjs.org/@img/sharp-wasm32/-/sharp-wasm32-0.34.3.tgz",
+ "integrity": "sha512-+CyRcpagHMGteySaWos8IbnXcHgfDn7pO2fiC2slJxvNq9gDipYBN42/RagzctVRKgxATmfqOSulgZv5e1RdMg==",
+ "cpu": [
+ "wasm32"
+ ],
+ "license": "Apache-2.0 AND LGPL-3.0-or-later AND MIT",
+ "optional": true,
+ "dependencies": {
+ "@emnapi/runtime": "^1.4.4"
+ },
+ "engines": {
+ "node": "^18.17.0 || ^20.3.0 || >=21.0.0"
+ },
+ "funding": {
+ "url": "https://opencollective.com/libvips"
+ }
+ },
+ "node_modules/@img/sharp-win32-arm64": {
+ "version": "0.34.3",
+ "resolved": "https://registry.npmjs.org/@img/sharp-win32-arm64/-/sharp-win32-arm64-0.34.3.tgz",
+ "integrity": "sha512-MjnHPnbqMXNC2UgeLJtX4XqoVHHlZNd+nPt1kRPmj63wURegwBhZlApELdtxM2OIZDRv/DFtLcNhVbd1z8GYXQ==",
+ "cpu": [
+ "arm64"
+ ],
+ "license": "Apache-2.0 AND LGPL-3.0-or-later",
+ "optional": true,
+ "os": [
+ "win32"
+ ],
+ "engines": {
+ "node": "^18.17.0 || ^20.3.0 || >=21.0.0"
+ },
+ "funding": {
+ "url": "https://opencollective.com/libvips"
+ }
+ },
+ "node_modules/@img/sharp-win32-ia32": {
+ "version": "0.34.3",
+ "resolved": "https://registry.npmjs.org/@img/sharp-win32-ia32/-/sharp-win32-ia32-0.34.3.tgz",
+ "integrity": "sha512-xuCdhH44WxuXgOM714hn4amodJMZl3OEvf0GVTm0BEyMeA2to+8HEdRPShH0SLYptJY1uBw+SCFP9WVQi1Q/cw==",
+ "cpu": [
+ "ia32"
+ ],
+ "license": "Apache-2.0 AND LGPL-3.0-or-later",
+ "optional": true,
+ "os": [
+ "win32"
+ ],
+ "engines": {
+ "node": "^18.17.0 || ^20.3.0 || >=21.0.0"
+ },
+ "funding": {
+ "url": "https://opencollective.com/libvips"
+ }
+ },
+ "node_modules/@img/sharp-win32-x64": {
+ "version": "0.34.3",
+ "resolved": "https://registry.npmjs.org/@img/sharp-win32-x64/-/sharp-win32-x64-0.34.3.tgz",
+ "integrity": "sha512-OWwz05d++TxzLEv4VnsTz5CmZ6mI6S05sfQGEMrNrQcOEERbX46332IvE7pO/EUiw7jUrrS40z/M7kPyjfl04g==",
+ "cpu": [
+ "x64"
+ ],
+ "license": "Apache-2.0 AND LGPL-3.0-or-later",
+ "optional": true,
+ "os": [
+ "win32"
+ ],
+ "engines": {
+ "node": "^18.17.0 || ^20.3.0 || >=21.0.0"
+ },
+ "funding": {
+ "url": "https://opencollective.com/libvips"
+ }
+ },
+ "node_modules/@isaacs/cliui": {
+ "version": "8.0.2",
+ "resolved": "https://registry.npmjs.org/@isaacs/cliui/-/cliui-8.0.2.tgz",
+ "integrity": "sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==",
+ "license": "ISC",
+ "dependencies": {
+ "string-width": "^5.1.2",
+ "string-width-cjs": "npm:string-width@^4.2.0",
+ "strip-ansi": "^7.0.1",
+ "strip-ansi-cjs": "npm:strip-ansi@^6.0.1",
+ "wrap-ansi": "^8.1.0",
+ "wrap-ansi-cjs": "npm:wrap-ansi@^7.0.0"
+ },
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/@isaacs/cliui/node_modules/emoji-regex": {
+ "version": "9.2.2",
+ "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz",
+ "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==",
+ "license": "MIT"
+ },
+ "node_modules/@isaacs/cliui/node_modules/string-width": {
+ "version": "5.1.2",
+ "resolved": "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz",
+ "integrity": "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==",
+ "license": "MIT",
+ "dependencies": {
+ "eastasianwidth": "^0.2.0",
+ "emoji-regex": "^9.2.2",
+ "strip-ansi": "^7.0.1"
+ },
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/@isaacs/cliui/node_modules/wrap-ansi": {
+ "version": "8.1.0",
+ "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-8.1.0.tgz",
+ "integrity": "sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==",
+ "license": "MIT",
+ "dependencies": {
+ "ansi-styles": "^6.1.0",
+ "string-width": "^5.0.1",
+ "strip-ansi": "^7.0.1"
+ },
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/wrap-ansi?sponsor=1"
+ }
+ },
+ "node_modules/@isaacs/fs-minipass": {
+ "version": "4.0.1",
+ "resolved": "https://registry.npmjs.org/@isaacs/fs-minipass/-/fs-minipass-4.0.1.tgz",
+ "integrity": "sha512-wgm9Ehl2jpeqP3zw/7mo3kRHFp5MEDhqAdwy1fTGkHAwnkGOVsgpvQhL8B5n1qlb01jV3n/bI0ZfZp5lWA1k4w==",
+ "license": "ISC",
+ "dependencies": {
+ "minipass": "^7.0.4"
+ },
+ "engines": {
+ "node": ">=18.0.0"
+ }
+ },
+ "node_modules/@jridgewell/sourcemap-codec": {
+ "version": "1.5.5",
+ "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.5.tgz",
+ "integrity": "sha512-cYQ9310grqxueWbl+WuIUIaiUaDcj7WOq5fVhEljNVgRfOUhY9fy2zTvfoqWsnebh8Sl70VScFbICvJnLKB0Og==",
+ "license": "MIT"
+ },
+ "node_modules/@mapbox/node-pre-gyp": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/@mapbox/node-pre-gyp/-/node-pre-gyp-2.0.0.tgz",
+ "integrity": "sha512-llMXd39jtP0HpQLVI37Bf1m2ADlEb35GYSh1SDSLsBhR+5iCxiNGlT31yqbNtVHygHAtMy6dWFERpU2JgufhPg==",
+ "license": "BSD-3-Clause",
+ "dependencies": {
+ "consola": "^3.2.3",
+ "detect-libc": "^2.0.0",
+ "https-proxy-agent": "^7.0.5",
+ "node-fetch": "^2.6.7",
+ "nopt": "^8.0.0",
+ "semver": "^7.5.3",
+ "tar": "^7.4.0"
+ },
+ "bin": {
+ "node-pre-gyp": "bin/node-pre-gyp"
+ },
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/@mdx-js/mdx": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/@mdx-js/mdx/-/mdx-3.1.0.tgz",
+ "integrity": "sha512-/QxEhPAvGwbQmy1Px8F899L5Uc2KZ6JtXwlCgJmjSTBedwOZkByYcBG4GceIGPXRDsmfxhHazuS+hlOShRLeDw==",
+ "license": "MIT",
+ "dependencies": {
+ "@types/estree": "^1.0.0",
+ "@types/estree-jsx": "^1.0.0",
+ "@types/hast": "^3.0.0",
+ "@types/mdx": "^2.0.0",
+ "collapse-white-space": "^2.0.0",
+ "devlop": "^1.0.0",
+ "estree-util-is-identifier-name": "^3.0.0",
+ "estree-util-scope": "^1.0.0",
+ "estree-walker": "^3.0.0",
+ "hast-util-to-jsx-runtime": "^2.0.0",
+ "markdown-extensions": "^2.0.0",
+ "recma-build-jsx": "^1.0.0",
+ "recma-jsx": "^1.0.0",
+ "recma-stringify": "^1.0.0",
+ "rehype-recma": "^1.0.0",
+ "remark-mdx": "^3.0.0",
+ "remark-parse": "^11.0.0",
+ "remark-rehype": "^11.0.0",
+ "source-map": "^0.7.0",
+ "unified": "^11.0.0",
+ "unist-util-position-from-estree": "^2.0.0",
+ "unist-util-stringify-position": "^4.0.0",
+ "unist-util-visit": "^5.0.0",
+ "vfile": "^6.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/unified"
+ }
+ },
+ "node_modules/@netlify/blobs": {
+ "version": "8.1.1",
+ "resolved": "https://registry.npmjs.org/@netlify/blobs/-/blobs-8.1.1.tgz",
+ "integrity": "sha512-7Dg3PzArvQ0Owq4wpkLECC9iaDBOxuWUN2uwbQtUF6tZssyez2QN+eO0CjuIhhZUivbw+X9bwsyiEjWkdJnv/A==",
+ "license": "MIT",
+ "engines": {
+ "node": "^14.16.0 || >=16.0.0"
+ }
+ },
+ "node_modules/@netlify/functions": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/@netlify/functions/-/functions-3.0.1.tgz",
+ "integrity": "sha512-KqVvGatPnn3lw80vXsFbYV3H2S9FI9TQHneFVR6BBvfHWiqTvs8NwUoBpnUWgqPKKeUMuynycDabeSi9CW2WWw==",
+ "license": "MIT",
+ "dependencies": {
+ "@netlify/serverless-functions-api": "1.35.0"
+ },
+ "engines": {
+ "node": ">=18.0.0"
+ }
+ },
+ "node_modules/@netlify/serverless-functions-api": {
+ "version": "1.35.0",
+ "resolved": "https://registry.npmjs.org/@netlify/serverless-functions-api/-/serverless-functions-api-1.35.0.tgz",
+ "integrity": "sha512-BH9eF3s7bUbqkcEUMR7dne/iCXSpZD10KVkGcs53eDrON5pKxsMdXvrdAx/q0HD24vJgHXGXObGSr5sjPllGEA==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=18.0.0"
+ }
+ },
+ "node_modules/@oslojs/encoding": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/@oslojs/encoding/-/encoding-1.1.0.tgz",
+ "integrity": "sha512-70wQhgYmndg4GCPxPPxPGevRKqTIJ2Nh4OkiMWmDAVYsTQ+Ta7Sq+rPevXyXGdzr30/qZBnyOalCszoMxlyldQ==",
+ "license": "MIT"
+ },
+ "node_modules/@pkgjs/parseargs": {
+ "version": "0.11.0",
+ "resolved": "https://registry.npmjs.org/@pkgjs/parseargs/-/parseargs-0.11.0.tgz",
+ "integrity": "sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==",
+ "license": "MIT",
+ "optional": true,
+ "engines": {
+ "node": ">=14"
+ }
+ },
+ "node_modules/@rollup/pluginutils": {
+ "version": "5.3.0",
+ "resolved": "https://registry.npmjs.org/@rollup/pluginutils/-/pluginutils-5.3.0.tgz",
+ "integrity": "sha512-5EdhGZtnu3V88ces7s53hhfK5KSASnJZv8Lulpc04cWO3REESroJXg73DFsOmgbU2BhwV0E20bu2IDZb3VKW4Q==",
+ "license": "MIT",
+ "dependencies": {
+ "@types/estree": "^1.0.0",
+ "estree-walker": "^2.0.2",
+ "picomatch": "^4.0.2"
+ },
+ "engines": {
+ "node": ">=14.0.0"
+ },
+ "peerDependencies": {
+ "rollup": "^1.20.0||^2.0.0||^3.0.0||^4.0.0"
+ },
+ "peerDependenciesMeta": {
+ "rollup": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/@rollup/pluginutils/node_modules/estree-walker": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-2.0.2.tgz",
+ "integrity": "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==",
+ "license": "MIT"
+ },
+ "node_modules/@rollup/rollup-android-arm-eabi": {
+ "version": "4.60.1",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.60.1.tgz",
+ "integrity": "sha512-d6FinEBLdIiK+1uACUttJKfgZREXrF0Qc2SmLII7W2AD8FfiZ9Wjd+rD/iRuf5s5dWrr1GgwXCvPqOuDquOowA==",
+ "cpu": [
+ "arm"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "android"
+ ]
+ },
+ "node_modules/@rollup/rollup-android-arm64": {
+ "version": "4.60.1",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.60.1.tgz",
+ "integrity": "sha512-YjG/EwIDvvYI1YvYbHvDz/BYHtkY4ygUIXHnTdLhG+hKIQFBiosfWiACWortsKPKU/+dUwQQCKQM3qrDe8c9BA==",
+ "cpu": [
+ "arm64"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "android"
+ ]
+ },
+ "node_modules/@rollup/rollup-darwin-arm64": {
+ "version": "4.60.1",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.60.1.tgz",
+ "integrity": "sha512-mjCpF7GmkRtSJwon+Rq1N8+pI+8l7w5g9Z3vWj4T7abguC4Czwi3Yu/pFaLvA3TTeMVjnu3ctigusqWUfjZzvw==",
+ "cpu": [
+ "arm64"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "darwin"
+ ]
+ },
+ "node_modules/@rollup/rollup-darwin-x64": {
+ "version": "4.60.1",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.60.1.tgz",
+ "integrity": "sha512-haZ7hJ1JT4e9hqkoT9R/19XW2QKqjfJVv+i5AGg57S+nLk9lQnJ1F/eZloRO3o9Scy9CM3wQ9l+dkXtcBgN5Ew==",
+ "cpu": [
+ "x64"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "darwin"
+ ]
+ },
+ "node_modules/@rollup/rollup-freebsd-arm64": {
+ "version": "4.60.1",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-arm64/-/rollup-freebsd-arm64-4.60.1.tgz",
+ "integrity": "sha512-czw90wpQq3ZsAVBlinZjAYTKduOjTywlG7fEeWKUA7oCmpA8xdTkxZZlwNJKWqILlq0wehoZcJYfBvOyhPTQ6w==",
+ "cpu": [
+ "arm64"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "freebsd"
+ ]
+ },
+ "node_modules/@rollup/rollup-freebsd-x64": {
+ "version": "4.60.1",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-x64/-/rollup-freebsd-x64-4.60.1.tgz",
+ "integrity": "sha512-KVB2rqsxTHuBtfOeySEyzEOB7ltlB/ux38iu2rBQzkjbwRVlkhAGIEDiiYnO2kFOkJp+Z7pUXKyrRRFuFUKt+g==",
+ "cpu": [
+ "x64"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "freebsd"
+ ]
+ },
+ "node_modules/@rollup/rollup-linux-arm-gnueabihf": {
+ "version": "4.60.1",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.60.1.tgz",
+ "integrity": "sha512-L+34Qqil+v5uC0zEubW7uByo78WOCIrBvci69E7sFASRl0X7b/MB6Cqd1lky/CtcSVTydWa2WZwFuWexjS5o6g==",
+ "cpu": [
+ "arm"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ]
+ },
+ "node_modules/@rollup/rollup-linux-arm-musleabihf": {
+ "version": "4.60.1",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.60.1.tgz",
+ "integrity": "sha512-n83O8rt4v34hgFzlkb1ycniJh7IR5RCIqt6mz1VRJD6pmhRi0CXdmfnLu9dIUS6buzh60IvACM842Ffb3xd6Gg==",
+ "cpu": [
+ "arm"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ]
+ },
+ "node_modules/@rollup/rollup-linux-arm64-gnu": {
+ "version": "4.60.1",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.60.1.tgz",
+ "integrity": "sha512-Nql7sTeAzhTAja3QXeAI48+/+GjBJ+QmAH13snn0AJSNL50JsDqotyudHyMbO2RbJkskbMbFJfIJKWA6R1LCJQ==",
+ "cpu": [
+ "arm64"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ]
+ },
+ "node_modules/@rollup/rollup-linux-arm64-musl": {
+ "version": "4.60.1",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.60.1.tgz",
+ "integrity": "sha512-+pUymDhd0ys9GcKZPPWlFiZ67sTWV5UU6zOJat02M1+PiuSGDziyRuI/pPue3hoUwm2uGfxdL+trT6Z9rxnlMA==",
+ "cpu": [
+ "arm64"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ]
+ },
+ "node_modules/@rollup/rollup-linux-loong64-gnu": {
+ "version": "4.60.1",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-loong64-gnu/-/rollup-linux-loong64-gnu-4.60.1.tgz",
+ "integrity": "sha512-VSvgvQeIcsEvY4bKDHEDWcpW4Yw7BtlKG1GUT4FzBUlEKQK0rWHYBqQt6Fm2taXS+1bXvJT6kICu5ZwqKCnvlQ==",
+ "cpu": [
+ "loong64"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ]
+ },
+ "node_modules/@rollup/rollup-linux-loong64-musl": {
+ "version": "4.60.1",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-loong64-musl/-/rollup-linux-loong64-musl-4.60.1.tgz",
+ "integrity": "sha512-4LqhUomJqwe641gsPp6xLfhqWMbQV04KtPp7/dIp0nzPxAkNY1AbwL5W0MQpcalLYk07vaW9Kp1PBhdpZYYcEw==",
+ "cpu": [
+ "loong64"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ]
+ },
+ "node_modules/@rollup/rollup-linux-ppc64-gnu": {
+ "version": "4.60.1",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-ppc64-gnu/-/rollup-linux-ppc64-gnu-4.60.1.tgz",
+ "integrity": "sha512-tLQQ9aPvkBxOc/EUT6j3pyeMD6Hb8QF2BTBnCQWP/uu1lhc9AIrIjKnLYMEroIz/JvtGYgI9dF3AxHZNaEH0rw==",
+ "cpu": [
+ "ppc64"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ]
+ },
+ "node_modules/@rollup/rollup-linux-ppc64-musl": {
+ "version": "4.60.1",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-ppc64-musl/-/rollup-linux-ppc64-musl-4.60.1.tgz",
+ "integrity": "sha512-RMxFhJwc9fSXP6PqmAz4cbv3kAyvD1etJFjTx4ONqFP9DkTkXsAMU4v3Vyc5BgzC+anz7nS/9tp4obsKfqkDHg==",
+ "cpu": [
+ "ppc64"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ]
+ },
+ "node_modules/@rollup/rollup-linux-riscv64-gnu": {
+ "version": "4.60.1",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.60.1.tgz",
+ "integrity": "sha512-QKgFl+Yc1eEk6MmOBfRHYF6lTxiiiV3/z/BRrbSiW2I7AFTXoBFvdMEyglohPj//2mZS4hDOqeB0H1ACh3sBbg==",
+ "cpu": [
+ "riscv64"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ]
+ },
+ "node_modules/@rollup/rollup-linux-riscv64-musl": {
+ "version": "4.60.1",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-musl/-/rollup-linux-riscv64-musl-4.60.1.tgz",
+ "integrity": "sha512-RAjXjP/8c6ZtzatZcA1RaQr6O1TRhzC+adn8YZDnChliZHviqIjmvFwHcxi4JKPSDAt6Uhf/7vqcBzQJy0PDJg==",
+ "cpu": [
+ "riscv64"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ]
+ },
+ "node_modules/@rollup/rollup-linux-s390x-gnu": {
+ "version": "4.60.1",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.60.1.tgz",
+ "integrity": "sha512-wcuocpaOlaL1COBYiA89O6yfjlp3RwKDeTIA0hM7OpmhR1Bjo9j31G1uQVpDlTvwxGn2nQs65fBFL5UFd76FcQ==",
+ "cpu": [
+ "s390x"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ]
+ },
+ "node_modules/@rollup/rollup-linux-x64-gnu": {
+ "version": "4.60.1",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.60.1.tgz",
+ "integrity": "sha512-77PpsFQUCOiZR9+LQEFg9GClyfkNXj1MP6wRnzYs0EeWbPcHs02AXu4xuUbM1zhwn3wqaizle3AEYg5aeoohhg==",
+ "cpu": [
+ "x64"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ]
+ },
+ "node_modules/@rollup/rollup-linux-x64-musl": {
+ "version": "4.60.1",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.60.1.tgz",
+ "integrity": "sha512-5cIATbk5vynAjqqmyBjlciMJl1+R/CwX9oLk/EyiFXDWd95KpHdrOJT//rnUl4cUcskrd0jCCw3wpZnhIHdD9w==",
+ "cpu": [
+ "x64"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ]
+ },
+ "node_modules/@rollup/rollup-openbsd-x64": {
+ "version": "4.60.1",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-openbsd-x64/-/rollup-openbsd-x64-4.60.1.tgz",
+ "integrity": "sha512-cl0w09WsCi17mcmWqqglez9Gk8isgeWvoUZ3WiJFYSR3zjBQc2J5/ihSjpl+VLjPqjQ/1hJRcqBfLjssREQILw==",
+ "cpu": [
+ "x64"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "openbsd"
+ ]
+ },
+ "node_modules/@rollup/rollup-openharmony-arm64": {
+ "version": "4.60.1",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-openharmony-arm64/-/rollup-openharmony-arm64-4.60.1.tgz",
+ "integrity": "sha512-4Cv23ZrONRbNtbZa37mLSueXUCtN7MXccChtKpUnQNgF010rjrjfHx3QxkS2PI7LqGT5xXyYs1a7LbzAwT0iCA==",
+ "cpu": [
+ "arm64"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "openharmony"
+ ]
+ },
+ "node_modules/@rollup/rollup-win32-arm64-msvc": {
+ "version": "4.60.1",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.60.1.tgz",
+ "integrity": "sha512-i1okWYkA4FJICtr7KpYzFpRTHgy5jdDbZiWfvny21iIKky5YExiDXP+zbXzm3dUcFpkEeYNHgQ5fuG236JPq0g==",
+ "cpu": [
+ "arm64"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "win32"
+ ]
+ },
+ "node_modules/@rollup/rollup-win32-ia32-msvc": {
+ "version": "4.60.1",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.60.1.tgz",
+ "integrity": "sha512-u09m3CuwLzShA0EYKMNiFgcjjzwqtUMLmuCJLeZWjjOYA3IT2Di09KaxGBTP9xVztWyIWjVdsB2E9goMjZvTQg==",
+ "cpu": [
+ "ia32"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "win32"
+ ]
+ },
+ "node_modules/@rollup/rollup-win32-x64-gnu": {
+ "version": "4.60.1",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-gnu/-/rollup-win32-x64-gnu-4.60.1.tgz",
+ "integrity": "sha512-k+600V9Zl1CM7eZxJgMyTUzmrmhB/0XZnF4pRypKAlAgxmedUA+1v9R+XOFv56W4SlHEzfeMtzujLJD22Uz5zg==",
+ "cpu": [
+ "x64"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "win32"
+ ]
+ },
+ "node_modules/@rollup/rollup-win32-x64-msvc": {
+ "version": "4.60.1",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.60.1.tgz",
+ "integrity": "sha512-lWMnixq/QzxyhTV6NjQJ4SFo1J6PvOX8vUx5Wb4bBPsEb+8xZ89Bz6kOXpfXj9ak9AHTQVQzlgzBEc1SyM27xQ==",
+ "cpu": [
+ "x64"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "win32"
+ ]
+ },
+ "node_modules/@shikijs/core": {
+ "version": "3.23.0",
+ "resolved": "https://registry.npmjs.org/@shikijs/core/-/core-3.23.0.tgz",
+ "integrity": "sha512-NSWQz0riNb67xthdm5br6lAkvpDJRTgB36fxlo37ZzM2yq0PQFFzbd8psqC2XMPgCzo1fW6cVi18+ArJ44wqgA==",
+ "license": "MIT",
+ "dependencies": {
+ "@shikijs/types": "3.23.0",
+ "@shikijs/vscode-textmate": "^10.0.2",
+ "@types/hast": "^3.0.4",
+ "hast-util-to-html": "^9.0.5"
+ }
+ },
+ "node_modules/@shikijs/engine-javascript": {
+ "version": "3.23.0",
+ "resolved": "https://registry.npmjs.org/@shikijs/engine-javascript/-/engine-javascript-3.23.0.tgz",
+ "integrity": "sha512-aHt9eiGFobmWR5uqJUViySI1bHMqrAgamWE1TYSUoftkAeCCAiGawPMwM+VCadylQtF4V3VNOZ5LmfItH5f3yA==",
+ "license": "MIT",
+ "dependencies": {
+ "@shikijs/types": "3.23.0",
+ "@shikijs/vscode-textmate": "^10.0.2",
+ "oniguruma-to-es": "^4.3.4"
+ }
+ },
+ "node_modules/@shikijs/engine-oniguruma": {
+ "version": "3.23.0",
+ "resolved": "https://registry.npmjs.org/@shikijs/engine-oniguruma/-/engine-oniguruma-3.23.0.tgz",
+ "integrity": "sha512-1nWINwKXxKKLqPibT5f4pAFLej9oZzQTsby8942OTlsJzOBZ0MWKiwzMsd+jhzu8YPCHAswGnnN1YtQfirL35g==",
+ "license": "MIT",
+ "dependencies": {
+ "@shikijs/types": "3.23.0",
+ "@shikijs/vscode-textmate": "^10.0.2"
+ }
+ },
+ "node_modules/@shikijs/langs": {
+ "version": "3.23.0",
+ "resolved": "https://registry.npmjs.org/@shikijs/langs/-/langs-3.23.0.tgz",
+ "integrity": "sha512-2Ep4W3Re5aB1/62RSYQInK9mM3HsLeB91cHqznAJMuylqjzNVAVCMnNWRHFtcNHXsoNRayP9z1qj4Sq3nMqYXg==",
+ "license": "MIT",
+ "dependencies": {
+ "@shikijs/types": "3.23.0"
+ }
+ },
+ "node_modules/@shikijs/themes": {
+ "version": "3.23.0",
+ "resolved": "https://registry.npmjs.org/@shikijs/themes/-/themes-3.23.0.tgz",
+ "integrity": "sha512-5qySYa1ZgAT18HR/ypENL9cUSGOeI2x+4IvYJu4JgVJdizn6kG4ia5Q1jDEOi7gTbN4RbuYtmHh0W3eccOrjMA==",
+ "license": "MIT",
+ "dependencies": {
+ "@shikijs/types": "3.23.0"
+ }
+ },
+ "node_modules/@shikijs/types": {
+ "version": "3.23.0",
+ "resolved": "https://registry.npmjs.org/@shikijs/types/-/types-3.23.0.tgz",
+ "integrity": "sha512-3JZ5HXOZfYjsYSk0yPwBrkupyYSLpAE26Qc0HLghhZNGTZg/SKxXIIgoxOpmmeQP0RRSDJTk1/vPfw9tbw+jSQ==",
+ "license": "MIT",
+ "dependencies": {
+ "@shikijs/vscode-textmate": "^10.0.2",
+ "@types/hast": "^3.0.4"
+ }
+ },
+ "node_modules/@shikijs/vscode-textmate": {
+ "version": "10.0.2",
+ "resolved": "https://registry.npmjs.org/@shikijs/vscode-textmate/-/vscode-textmate-10.0.2.tgz",
+ "integrity": "sha512-83yeghZ2xxin3Nj8z1NMd/NCuca+gsYXswywDy5bHvwlWL8tpTQmzGeUuHd9FC3E/SBEMvzJRwWEOz5gGes9Qg==",
+ "license": "MIT"
+ },
+ "node_modules/@tailwindcss/node": {
+ "version": "4.0.13",
+ "resolved": "https://registry.npmjs.org/@tailwindcss/node/-/node-4.0.13.tgz",
+ "integrity": "sha512-P9TmtE9Vew0vv5FwyD4bsg/dHHsIsAuUXkenuGUc5gm8fYgaxpdoxIKngCyEMEQxyCKR8PQY5V5VrrKNOx7exg==",
+ "license": "MIT",
+ "dependencies": {
+ "enhanced-resolve": "^5.18.1",
+ "jiti": "^2.4.2",
+ "tailwindcss": "4.0.13"
+ }
+ },
+ "node_modules/@tailwindcss/oxide": {
+ "version": "4.0.13",
+ "resolved": "https://registry.npmjs.org/@tailwindcss/oxide/-/oxide-4.0.13.tgz",
+ "integrity": "sha512-pTH3Ex5zAWC9LbS+WsYAFmkXQW3NRjmvxkKJY3NP1x0KHBWjz0Q2uGtdGMJzsa0EwoZ7wq9RTbMH1UNPceCpWw==",
+ "license": "MIT",
+ "engines": {
+ "node": ">= 10"
+ },
+ "optionalDependencies": {
+ "@tailwindcss/oxide-android-arm64": "4.0.13",
+ "@tailwindcss/oxide-darwin-arm64": "4.0.13",
+ "@tailwindcss/oxide-darwin-x64": "4.0.13",
+ "@tailwindcss/oxide-freebsd-x64": "4.0.13",
+ "@tailwindcss/oxide-linux-arm-gnueabihf": "4.0.13",
+ "@tailwindcss/oxide-linux-arm64-gnu": "4.0.13",
+ "@tailwindcss/oxide-linux-arm64-musl": "4.0.13",
+ "@tailwindcss/oxide-linux-x64-gnu": "4.0.13",
+ "@tailwindcss/oxide-linux-x64-musl": "4.0.13",
+ "@tailwindcss/oxide-win32-arm64-msvc": "4.0.13",
+ "@tailwindcss/oxide-win32-x64-msvc": "4.0.13"
+ }
+ },
+ "node_modules/@tailwindcss/oxide-android-arm64": {
+ "version": "4.0.13",
+ "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-android-arm64/-/oxide-android-arm64-4.0.13.tgz",
+ "integrity": "sha512-+9zmwaPQ8A9ycDcdb+hRkMn6NzsmZ4YJBsW5Xqq5EdOu9xlIgmuMuJauVzDPB5BSbIWfhPdZ+le8NeRZpl1coA==",
+ "cpu": [
+ "arm64"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "android"
+ ],
+ "engines": {
+ "node": ">= 10"
+ }
+ },
+ "node_modules/@tailwindcss/oxide-darwin-arm64": {
+ "version": "4.0.13",
+ "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-darwin-arm64/-/oxide-darwin-arm64-4.0.13.tgz",
+ "integrity": "sha512-Bj1QGlEJSjs/205CIRfb5/jeveOqzJ4pFMdRxu0gyiYWxBRyxsExXqaD+7162wnLP/EDKh6S1MC9E/1GwEhLtA==",
+ "cpu": [
+ "arm64"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "darwin"
+ ],
+ "engines": {
+ "node": ">= 10"
+ }
+ },
+ "node_modules/@tailwindcss/oxide-darwin-x64": {
+ "version": "4.0.13",
+ "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-darwin-x64/-/oxide-darwin-x64-4.0.13.tgz",
+ "integrity": "sha512-lRTkxjTpMGXhLLM5GjZ0MtjPczMuhAo9j7PeSsaU6Imkm7W7RbrXfT8aP934kS7cBBV+HKN5U19Z0WWaORfb8Q==",
+ "cpu": [
+ "x64"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "darwin"
+ ],
+ "engines": {
+ "node": ">= 10"
+ }
+ },
+ "node_modules/@tailwindcss/oxide-freebsd-x64": {
+ "version": "4.0.13",
+ "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-freebsd-x64/-/oxide-freebsd-x64-4.0.13.tgz",
+ "integrity": "sha512-p/YLyKhs+xFibVeAPlpMGDVMKgjChgzs12VnDFaaqRSJoOz+uJgRSKiir2tn50e7Nm4YYw35q/DRBwpDBNo1MQ==",
+ "cpu": [
+ "x64"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "freebsd"
+ ],
+ "engines": {
+ "node": ">= 10"
+ }
+ },
+ "node_modules/@tailwindcss/oxide-linux-arm-gnueabihf": {
+ "version": "4.0.13",
+ "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-linux-arm-gnueabihf/-/oxide-linux-arm-gnueabihf-4.0.13.tgz",
+ "integrity": "sha512-Ua/5ydE/QOTX8jHuc7M9ICWnaLi6K2MV/r+Ws2OppsOjy8tdlPbqYainJJ6Kl7ofm524K+4Fk9CQITPzeIESPw==",
+ "cpu": [
+ "arm"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">= 10"
+ }
+ },
+ "node_modules/@tailwindcss/oxide-linux-arm64-gnu": {
+ "version": "4.0.13",
+ "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-linux-arm64-gnu/-/oxide-linux-arm64-gnu-4.0.13.tgz",
+ "integrity": "sha512-/W1+Q6tBAVgZWh/bhfOHo4n7Ryh6E7zYj4bJd9SRbkPyLtRioyK3bi6RLuDj57sa7Amk/DeomSV9iycS0xqIPA==",
+ "cpu": [
+ "arm64"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">= 10"
+ }
+ },
+ "node_modules/@tailwindcss/oxide-linux-arm64-musl": {
+ "version": "4.0.13",
+ "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-linux-arm64-musl/-/oxide-linux-arm64-musl-4.0.13.tgz",
+ "integrity": "sha512-GQj6TWevNxwsYw20FdT2r2d1f7uiRsF07iFvNYxPIvIyPEV74eZ0zgFEsAH1daK1OxPy+LXdZ4grV17P5tVzhQ==",
+ "cpu": [
+ "arm64"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">= 10"
+ }
+ },
+ "node_modules/@tailwindcss/oxide-linux-x64-gnu": {
+ "version": "4.0.13",
+ "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-linux-x64-gnu/-/oxide-linux-x64-gnu-4.0.13.tgz",
+ "integrity": "sha512-sQRH09faifF9w9WS6TKDWr1oLi4hoPx0EIWXZHQK/jcjarDpXGQ2DbF0KnALJCwWBxOIP/1nrmU01fZwwMzY3g==",
+ "cpu": [
+ "x64"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">= 10"
+ }
+ },
+ "node_modules/@tailwindcss/oxide-linux-x64-musl": {
+ "version": "4.0.13",
+ "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-linux-x64-musl/-/oxide-linux-x64-musl-4.0.13.tgz",
+ "integrity": "sha512-Or1N8DIF3tP+LsloJp+UXLTIMMHMUcWXFhJLCsM4T7MzFzxkeReewRWXfk5mk137cdqVeUEH/R50xAhY1mOkTQ==",
+ "cpu": [
+ "x64"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">= 10"
+ }
+ },
+ "node_modules/@tailwindcss/oxide-win32-arm64-msvc": {
+ "version": "4.0.13",
+ "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-win32-arm64-msvc/-/oxide-win32-arm64-msvc-4.0.13.tgz",
+ "integrity": "sha512-u2mQyqCFrr9vVTP6sfDRfGE6bhOX3/7rInehzxNhHX1HYRIx09H3sDdXzTxnZWKOjIg3qjFTCrYFUZckva5PIg==",
+ "cpu": [
+ "arm64"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "win32"
+ ],
+ "engines": {
+ "node": ">= 10"
+ }
+ },
+ "node_modules/@tailwindcss/oxide-win32-x64-msvc": {
+ "version": "4.0.13",
+ "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-win32-x64-msvc/-/oxide-win32-x64-msvc-4.0.13.tgz",
+ "integrity": "sha512-sOEc4iCanp1Yqyeu9suQcEzfaUcHnqjBUgDg0ZXpjUMUwdSi37S1lu1RGoV1BYInvvGu3y3HHTmvsSfDhx2L8w==",
+ "cpu": [
+ "x64"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "win32"
+ ],
+ "engines": {
+ "node": ">= 10"
+ }
+ },
+ "node_modules/@tailwindcss/typography": {
+ "version": "0.5.16",
+ "resolved": "https://registry.npmjs.org/@tailwindcss/typography/-/typography-0.5.16.tgz",
+ "integrity": "sha512-0wDLwCVF5V3x3b1SGXPCDcdsbDHMBe+lkFzBRaHeLvNi+nrrnZ1lA18u+OTWO8iSWU2GxUOCvlXtDuqftc1oiA==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "lodash.castarray": "^4.4.0",
+ "lodash.isplainobject": "^4.0.6",
+ "lodash.merge": "^4.6.2",
+ "postcss-selector-parser": "6.0.10"
+ },
+ "peerDependencies": {
+ "tailwindcss": ">=3.0.0 || insiders || >=4.0.0-alpha.20 || >=4.0.0-beta.1"
+ }
+ },
+ "node_modules/@tailwindcss/vite": {
+ "version": "4.0.13",
+ "resolved": "https://registry.npmjs.org/@tailwindcss/vite/-/vite-4.0.13.tgz",
+ "integrity": "sha512-0XTd/NoVUAktIDaA4MdXhve0QWYh7WlZg20EHCuBFR80F8FhbVkRX+AY5cjbUP/IO2itHzt0iHc0iSE5kBUMhQ==",
+ "license": "MIT",
+ "dependencies": {
+ "@tailwindcss/node": "4.0.13",
+ "@tailwindcss/oxide": "4.0.13",
+ "lightningcss": "1.29.2",
+ "tailwindcss": "4.0.13"
+ },
+ "peerDependencies": {
+ "vite": "^5.2.0 || ^6"
+ }
+ },
+ "node_modules/@types/acorn": {
+ "version": "4.0.6",
+ "resolved": "https://registry.npmjs.org/@types/acorn/-/acorn-4.0.6.tgz",
+ "integrity": "sha512-veQTnWP+1D/xbxVrPC3zHnCZRjSrKfhbMUlEA43iMZLu7EsnTtkJklIuwrCPbOi8YkvDQAiW05VQQFvvz9oieQ==",
+ "license": "MIT",
+ "dependencies": {
+ "@types/estree": "*"
+ }
+ },
+ "node_modules/@types/debug": {
+ "version": "4.1.12",
+ "resolved": "https://registry.npmjs.org/@types/debug/-/debug-4.1.12.tgz",
+ "integrity": "sha512-vIChWdVG3LG1SMxEvI/AK+FWJthlrqlTu7fbrlywTkkaONwk/UAGaULXRlf8vkzFBLVm0zkMdCquhL5aOjhXPQ==",
+ "license": "MIT",
+ "dependencies": {
+ "@types/ms": "*"
+ }
+ },
+ "node_modules/@types/estree": {
+ "version": "1.0.8",
+ "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.8.tgz",
+ "integrity": "sha512-dWHzHa2WqEXI/O1E9OjrocMTKJl2mSrEolh1Iomrv6U+JuNwaHXsXx9bLu5gG7BUWFIN0skIQJQ/L1rIex4X6w==",
+ "license": "MIT"
+ },
+ "node_modules/@types/estree-jsx": {
+ "version": "1.0.5",
+ "resolved": "https://registry.npmjs.org/@types/estree-jsx/-/estree-jsx-1.0.5.tgz",
+ "integrity": "sha512-52CcUVNFyfb1A2ALocQw/Dd1BQFNmSdkuC3BkZ6iqhdMfQz7JWOFRuJFloOzjk+6WijU56m9oKXFAXc7o3Towg==",
+ "license": "MIT",
+ "dependencies": {
+ "@types/estree": "*"
+ }
+ },
+ "node_modules/@types/hast": {
+ "version": "3.0.4",
+ "resolved": "https://registry.npmjs.org/@types/hast/-/hast-3.0.4.tgz",
+ "integrity": "sha512-WPs+bbQw5aCj+x6laNGWLH3wviHtoCv/P3+otBhbOhJgG8qtpdAMlTCxLtsTWA7LH1Oh/bFCHsBn0TPS5m30EQ==",
+ "license": "MIT",
+ "dependencies": {
+ "@types/unist": "*"
+ }
+ },
+ "node_modules/@types/mdast": {
+ "version": "4.0.4",
+ "resolved": "https://registry.npmjs.org/@types/mdast/-/mdast-4.0.4.tgz",
+ "integrity": "sha512-kGaNbPh1k7AFzgpud/gMdvIm5xuECykRR+JnWKQno9TAXVa6WIVCGTPvYGekIDL4uwCZQSYbUxNBSb1aUo79oA==",
+ "license": "MIT",
+ "dependencies": {
+ "@types/unist": "*"
+ }
+ },
+ "node_modules/@types/mdx": {
+ "version": "2.0.13",
+ "resolved": "https://registry.npmjs.org/@types/mdx/-/mdx-2.0.13.tgz",
+ "integrity": "sha512-+OWZQfAYyio6YkJb3HLxDrvnx6SWWDbC0zVPfBRzUk0/nqoDyf6dNxQi3eArPe8rJ473nobTMQ/8Zk+LxJ+Yuw==",
+ "license": "MIT"
+ },
+ "node_modules/@types/ms": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/@types/ms/-/ms-2.1.0.tgz",
+ "integrity": "sha512-GsCCIZDE/p3i96vtEqx+7dBUGXrc7zeSK3wwPHIaRThS+9OhWIXRqzs4d6k1SVU8g91DrNRWxWUGhp5KXQb2VA==",
+ "license": "MIT"
+ },
+ "node_modules/@types/nlcst": {
+ "version": "2.0.3",
+ "resolved": "https://registry.npmjs.org/@types/nlcst/-/nlcst-2.0.3.tgz",
+ "integrity": "sha512-vSYNSDe6Ix3q+6Z7ri9lyWqgGhJTmzRjZRqyq15N0Z/1/UnVsno9G/N40NBijoYx2seFDIl0+B2mgAb9mezUCA==",
+ "license": "MIT",
+ "dependencies": {
+ "@types/unist": "*"
+ }
+ },
+ "node_modules/@types/node": {
+ "version": "22.13.10",
+ "resolved": "https://registry.npmjs.org/@types/node/-/node-22.13.10.tgz",
+ "integrity": "sha512-I6LPUvlRH+O6VRUqYOcMudhaIdUVWfsjnZavnsraHvpBwaEyMN29ry+0UVJhImYL16xsscu0aske3yA+uPOWfw==",
+ "license": "MIT",
+ "dependencies": {
+ "undici-types": "~6.20.0"
+ }
+ },
+ "node_modules/@types/sax": {
+ "version": "1.2.7",
+ "resolved": "https://registry.npmjs.org/@types/sax/-/sax-1.2.7.tgz",
+ "integrity": "sha512-rO73L89PJxeYM3s3pPPjiPgVVcymqU490g0YO5n5By0k2Erzj6tay/4lr1CHAAU4JyOWd1rpQ8bCf6cZfHU96A==",
+ "license": "MIT",
+ "dependencies": {
+ "@types/node": "*"
+ }
+ },
+ "node_modules/@types/unist": {
+ "version": "3.0.3",
+ "resolved": "https://registry.npmjs.org/@types/unist/-/unist-3.0.3.tgz",
+ "integrity": "sha512-ko/gIFJRv177XgZsZcBwnqJN5x/Gien8qNOn0D5bQU/zAzVf9Zt3BlcUiLqhV9y4ARk0GbT3tnUiPNgnTXzc/Q==",
+ "license": "MIT"
+ },
+ "node_modules/@ungap/structured-clone": {
+ "version": "1.3.0",
+ "resolved": "https://registry.npmjs.org/@ungap/structured-clone/-/structured-clone-1.3.0.tgz",
+ "integrity": "sha512-WmoN8qaIAo7WTYWbAZuG8PYEhn5fkz7dZrqTBZ7dtt//lL2Gwms1IcnQ5yHqjDfX8Ft5j4YzDM23f87zBfDe9g==",
+ "license": "ISC"
+ },
+ "node_modules/@vercel/nft": {
+ "version": "0.29.2",
+ "resolved": "https://registry.npmjs.org/@vercel/nft/-/nft-0.29.2.tgz",
+ "integrity": "sha512-A/Si4mrTkQqJ6EXJKv5EYCDQ3NL6nJXxG8VGXePsaiQigsomHYQC9xSpX8qGk7AEZk4b1ssbYIqJ0ISQQ7bfcA==",
+ "license": "MIT",
+ "dependencies": {
+ "@mapbox/node-pre-gyp": "^2.0.0",
+ "@rollup/pluginutils": "^5.1.3",
+ "acorn": "^8.6.0",
+ "acorn-import-attributes": "^1.9.5",
+ "async-sema": "^3.1.1",
+ "bindings": "^1.4.0",
+ "estree-walker": "2.0.2",
+ "glob": "^10.4.5",
+ "graceful-fs": "^4.2.9",
+ "node-gyp-build": "^4.2.2",
+ "picomatch": "^4.0.2",
+ "resolve-from": "^5.0.0"
+ },
+ "bin": {
+ "nft": "out/cli.js"
+ },
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/@vercel/nft/node_modules/estree-walker": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-2.0.2.tgz",
+ "integrity": "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==",
+ "license": "MIT"
+ },
+ "node_modules/abbrev": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-3.0.0.tgz",
+ "integrity": "sha512-+/kfrslGQ7TNV2ecmQwMJj/B65g5KVq1/L3SGVZ3tCYGqlzFuFCGBZJtMP99wH3NpEUyAjn0zPdPUg0D+DwrOA==",
+ "license": "ISC",
+ "engines": {
+ "node": "^18.17.0 || >=20.5.0"
+ }
+ },
+ "node_modules/acorn": {
+ "version": "8.15.0",
+ "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.15.0.tgz",
+ "integrity": "sha512-NZyJarBfL7nWwIq+FDL6Zp/yHEhePMNnnJ0y3qfieCrmNvYct8uvtiV41UvlSe6apAfk0fY1FbWx+NwfmpvtTg==",
+ "license": "MIT",
+ "bin": {
+ "acorn": "bin/acorn"
+ },
+ "engines": {
+ "node": ">=0.4.0"
+ }
+ },
+ "node_modules/acorn-import-attributes": {
+ "version": "1.9.5",
+ "resolved": "https://registry.npmjs.org/acorn-import-attributes/-/acorn-import-attributes-1.9.5.tgz",
+ "integrity": "sha512-n02Vykv5uA3eHGM/Z2dQrcD56kL8TyDb2p1+0P83PClMnC/nc+anbQRhIOWnSq4Ke/KvDPrY3C9hDtC/A3eHnQ==",
+ "license": "MIT",
+ "peerDependencies": {
+ "acorn": "^8"
+ }
+ },
+ "node_modules/acorn-jsx": {
+ "version": "5.3.2",
+ "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz",
+ "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==",
+ "license": "MIT",
+ "peerDependencies": {
+ "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0"
+ }
+ },
+ "node_modules/agent-base": {
+ "version": "7.1.3",
+ "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-7.1.3.tgz",
+ "integrity": "sha512-jRR5wdylq8CkOe6hei19GGZnxM6rBGwFl3Bg0YItGDimvjGtAvdZk4Pu6Cl4u4Igsws4a1fd1Vq3ezrhn4KmFw==",
+ "license": "MIT",
+ "engines": {
+ "node": ">= 14"
+ }
+ },
+ "node_modules/ansi-align": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/ansi-align/-/ansi-align-3.0.1.tgz",
+ "integrity": "sha512-IOfwwBF5iczOjp/WeY4YxyjqAFMQoZufdQWDd19SEExbVLNXqvpzSJ/M7Za4/sCPmQ0+GRquoA7bGcINcxew6w==",
+ "license": "ISC",
+ "dependencies": {
+ "string-width": "^4.1.0"
+ }
+ },
+ "node_modules/ansi-align/node_modules/ansi-regex": {
+ "version": "5.0.1",
+ "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz",
+ "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/ansi-align/node_modules/emoji-regex": {
+ "version": "8.0.0",
+ "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz",
+ "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==",
+ "license": "MIT"
+ },
+ "node_modules/ansi-align/node_modules/string-width": {
+ "version": "4.2.3",
+ "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz",
+ "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==",
+ "license": "MIT",
+ "dependencies": {
+ "emoji-regex": "^8.0.0",
+ "is-fullwidth-code-point": "^3.0.0",
+ "strip-ansi": "^6.0.1"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/ansi-align/node_modules/strip-ansi": {
+ "version": "6.0.1",
+ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz",
+ "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==",
+ "license": "MIT",
+ "dependencies": {
+ "ansi-regex": "^5.0.1"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/ansi-regex": {
+ "version": "6.1.0",
+ "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.1.0.tgz",
+ "integrity": "sha512-7HSX4QQb4CspciLpVFwyRe79O3xsIZDDLER21kERQ71oaPodF8jL725AgJMFAYbooIqolJoRLuM81SpeUkpkvA==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/ansi-regex?sponsor=1"
+ }
+ },
+ "node_modules/ansi-styles": {
+ "version": "6.2.1",
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.1.tgz",
+ "integrity": "sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/ansi-styles?sponsor=1"
+ }
+ },
+ "node_modules/anymatch": {
+ "version": "3.1.3",
+ "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz",
+ "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==",
+ "license": "ISC",
+ "dependencies": {
+ "normalize-path": "^3.0.0",
+ "picomatch": "^2.0.4"
+ },
+ "engines": {
+ "node": ">= 8"
+ }
+ },
+ "node_modules/anymatch/node_modules/picomatch": {
+ "version": "2.3.2",
+ "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.2.tgz",
+ "integrity": "sha512-V7+vQEJ06Z+c5tSye8S+nHUfI51xoXIXjHQ99cQtKUkQqqO1kO/KCJUfZXuB47h/YBlDhah2H3hdUGXn8ie0oA==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=8.6"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/jonschlinkert"
+ }
+ },
+ "node_modules/arg": {
+ "version": "5.0.2",
+ "resolved": "https://registry.npmjs.org/arg/-/arg-5.0.2.tgz",
+ "integrity": "sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg==",
+ "license": "MIT"
+ },
+ "node_modules/argparse": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz",
+ "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q=="
+ },
+ "node_modules/aria-query": {
+ "version": "5.3.2",
+ "resolved": "https://registry.npmjs.org/aria-query/-/aria-query-5.3.2.tgz",
+ "integrity": "sha512-COROpnaoap1E2F000S62r6A60uHZnmlvomhfyT2DlTcrY1OrBKn2UhH7qn5wTC9zMvD0AY7csdPSNwKP+7WiQw==",
+ "license": "Apache-2.0",
+ "engines": {
+ "node": ">= 0.4"
+ }
+ },
+ "node_modules/array-iterate": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/array-iterate/-/array-iterate-2.0.1.tgz",
+ "integrity": "sha512-I1jXZMjAgCMmxT4qxXfPXa6SthSoE8h6gkSI9BGGNv8mP8G/v0blc+qFnZu6K42vTOiuME596QaLO0TP3Lk0xg==",
+ "license": "MIT",
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/wooorm"
+ }
+ },
+ "node_modules/astring": {
+ "version": "1.9.0",
+ "resolved": "https://registry.npmjs.org/astring/-/astring-1.9.0.tgz",
+ "integrity": "sha512-LElXdjswlqjWrPpJFg1Fx4wpkOCxj1TDHlSV4PlaRxHGWko024xICaa97ZkMfs6DRKlCguiAI+rbXv5GWwXIkg==",
+ "license": "MIT",
+ "bin": {
+ "astring": "bin/astring"
+ }
+ },
+ "node_modules/astro": {
+ "version": "5.18.1",
+ "resolved": "https://registry.npmjs.org/astro/-/astro-5.18.1.tgz",
+ "integrity": "sha512-m4VWilWZ+Xt6NPoYzC4CgGZim/zQUO7WFL0RHCH0AiEavF1153iC3+me2atDvXpf/yX4PyGUeD8wZLq1cirT3g==",
+ "license": "MIT",
+ "dependencies": {
+ "@astrojs/compiler": "^2.13.0",
+ "@astrojs/internal-helpers": "0.7.6",
+ "@astrojs/markdown-remark": "6.3.11",
+ "@astrojs/telemetry": "3.3.0",
+ "@capsizecss/unpack": "^4.0.0",
+ "@oslojs/encoding": "^1.1.0",
+ "@rollup/pluginutils": "^5.3.0",
+ "acorn": "^8.15.0",
+ "aria-query": "^5.3.2",
+ "axobject-query": "^4.1.0",
+ "boxen": "8.0.1",
+ "ci-info": "^4.3.1",
+ "clsx": "^2.1.1",
+ "common-ancestor-path": "^1.0.1",
+ "cookie": "^1.1.1",
+ "cssesc": "^3.0.0",
+ "debug": "^4.4.3",
+ "deterministic-object-hash": "^2.0.2",
+ "devalue": "^5.6.2",
+ "diff": "^8.0.3",
+ "dlv": "^1.1.3",
+ "dset": "^3.1.4",
+ "es-module-lexer": "^1.7.0",
+ "esbuild": "^0.27.3",
+ "estree-walker": "^3.0.3",
+ "flattie": "^1.1.1",
+ "fontace": "~0.4.0",
+ "github-slugger": "^2.0.0",
+ "html-escaper": "3.0.3",
+ "http-cache-semantics": "^4.2.0",
+ "import-meta-resolve": "^4.2.0",
+ "js-yaml": "^4.1.1",
+ "magic-string": "^0.30.21",
+ "magicast": "^0.5.1",
+ "mrmime": "^2.0.1",
+ "neotraverse": "^0.6.18",
+ "p-limit": "^6.2.0",
+ "p-queue": "^8.1.1",
+ "package-manager-detector": "^1.6.0",
+ "piccolore": "^0.1.3",
+ "picomatch": "^4.0.3",
+ "prompts": "^2.4.2",
+ "rehype": "^13.0.2",
+ "semver": "^7.7.3",
+ "shiki": "^3.21.0",
+ "smol-toml": "^1.6.0",
+ "svgo": "^4.0.0",
+ "tinyexec": "^1.0.2",
+ "tinyglobby": "^0.2.15",
+ "tsconfck": "^3.1.6",
+ "ultrahtml": "^1.6.0",
+ "unifont": "~0.7.3",
+ "unist-util-visit": "^5.0.0",
+ "unstorage": "^1.17.4",
+ "vfile": "^6.0.3",
+ "vite": "^6.4.1",
+ "vitefu": "^1.1.1",
+ "xxhash-wasm": "^1.1.0",
+ "yargs-parser": "^21.1.1",
+ "yocto-spinner": "^0.2.3",
+ "zod": "^3.25.76",
+ "zod-to-json-schema": "^3.25.1",
+ "zod-to-ts": "^1.2.0"
+ },
+ "bin": {
+ "astro": "astro.js"
+ },
+ "engines": {
+ "node": "18.20.8 || ^20.3.0 || >=22.0.0",
+ "npm": ">=9.6.5",
+ "pnpm": ">=7.1.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/astrodotbuild"
+ },
+ "optionalDependencies": {
+ "sharp": "^0.34.0"
+ }
+ },
+ "node_modules/astro/node_modules/@astrojs/internal-helpers": {
+ "version": "0.7.6",
+ "resolved": "https://registry.npmjs.org/@astrojs/internal-helpers/-/internal-helpers-0.7.6.tgz",
+ "integrity": "sha512-GOle7smBWKfMSP8osUIGOlB5kaHdQLV3foCsf+5Q9Wsuu+C6Fs3Ez/ttXmhjZ1HkSgsogcM1RXSjjOVieHq16Q==",
+ "license": "MIT"
+ },
+ "node_modules/astro/node_modules/@astrojs/markdown-remark": {
+ "version": "6.3.11",
+ "resolved": "https://registry.npmjs.org/@astrojs/markdown-remark/-/markdown-remark-6.3.11.tgz",
+ "integrity": "sha512-hcaxX/5aC6lQgHeGh1i+aauvSwIT6cfyFjKWvExYSxUhZZBBdvCliOtu06gbQyhbe0pGJNoNmqNlQZ5zYUuIyQ==",
+ "license": "MIT",
+ "dependencies": {
+ "@astrojs/internal-helpers": "0.7.6",
+ "@astrojs/prism": "3.3.0",
+ "github-slugger": "^2.0.0",
+ "hast-util-from-html": "^2.0.3",
+ "hast-util-to-text": "^4.0.2",
+ "import-meta-resolve": "^4.2.0",
+ "js-yaml": "^4.1.1",
+ "mdast-util-definitions": "^6.0.0",
+ "rehype-raw": "^7.0.0",
+ "rehype-stringify": "^10.0.1",
+ "remark-gfm": "^4.0.1",
+ "remark-parse": "^11.0.0",
+ "remark-rehype": "^11.1.2",
+ "remark-smartypants": "^3.0.2",
+ "shiki": "^3.21.0",
+ "smol-toml": "^1.6.0",
+ "unified": "^11.0.5",
+ "unist-util-remove-position": "^5.0.0",
+ "unist-util-visit": "^5.0.0",
+ "unist-util-visit-parents": "^6.0.2",
+ "vfile": "^6.0.3"
+ }
+ },
+ "node_modules/astro/node_modules/@astrojs/prism": {
+ "version": "3.3.0",
+ "resolved": "https://registry.npmjs.org/@astrojs/prism/-/prism-3.3.0.tgz",
+ "integrity": "sha512-q8VwfU/fDZNoDOf+r7jUnMC2//H2l0TuQ6FkGJL8vD8nw/q5KiL3DS1KKBI3QhI9UQhpJ5dc7AtqfbXWuOgLCQ==",
+ "license": "MIT",
+ "dependencies": {
+ "prismjs": "^1.30.0"
+ },
+ "engines": {
+ "node": "18.20.8 || ^20.3.0 || >=22.0.0"
+ }
+ },
+ "node_modules/astro/node_modules/@esbuild/aix-ppc64": {
+ "version": "0.27.7",
+ "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.27.7.tgz",
+ "integrity": "sha512-EKX3Qwmhz1eMdEJokhALr0YiD0lhQNwDqkPYyPhiSwKrh7/4KRjQc04sZ8db+5DVVnZ1LmbNDI1uAMPEUBnQPg==",
+ "cpu": [
+ "ppc64"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "aix"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/astro/node_modules/@esbuild/android-arm": {
+ "version": "0.27.7",
+ "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.27.7.tgz",
+ "integrity": "sha512-jbPXvB4Yj2yBV7HUfE2KHe4GJX51QplCN1pGbYjvsyCZbQmies29EoJbkEc+vYuU5o45AfQn37vZlyXy4YJ8RQ==",
+ "cpu": [
+ "arm"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "android"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/astro/node_modules/@esbuild/android-arm64": {
+ "version": "0.27.7",
+ "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.27.7.tgz",
+ "integrity": "sha512-62dPZHpIXzvChfvfLJow3q5dDtiNMkwiRzPylSCfriLvZeq0a1bWChrGx/BbUbPwOrsWKMn8idSllklzBy+dgQ==",
+ "cpu": [
+ "arm64"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "android"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/astro/node_modules/@esbuild/android-x64": {
+ "version": "0.27.7",
+ "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.27.7.tgz",
+ "integrity": "sha512-x5VpMODneVDb70PYV2VQOmIUUiBtY3D3mPBG8NxVk5CogneYhkR7MmM3yR/uMdITLrC1ml/NV1rj4bMJuy9MCg==",
+ "cpu": [
+ "x64"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "android"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/astro/node_modules/@esbuild/darwin-arm64": {
+ "version": "0.27.7",
+ "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.27.7.tgz",
+ "integrity": "sha512-5lckdqeuBPlKUwvoCXIgI2D9/ABmPq3Rdp7IfL70393YgaASt7tbju3Ac+ePVi3KDH6N2RqePfHnXkaDtY9fkw==",
+ "cpu": [
+ "arm64"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "darwin"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/astro/node_modules/@esbuild/darwin-x64": {
+ "version": "0.27.7",
+ "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.27.7.tgz",
+ "integrity": "sha512-rYnXrKcXuT7Z+WL5K980jVFdvVKhCHhUwid+dDYQpH+qu+TefcomiMAJpIiC2EM3Rjtq0sO3StMV/+3w3MyyqQ==",
+ "cpu": [
+ "x64"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "darwin"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/astro/node_modules/@esbuild/freebsd-arm64": {
+ "version": "0.27.7",
+ "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.27.7.tgz",
+ "integrity": "sha512-B48PqeCsEgOtzME2GbNM2roU29AMTuOIN91dsMO30t+Ydis3z/3Ngoj5hhnsOSSwNzS+6JppqWsuhTp6E82l2w==",
+ "cpu": [
+ "arm64"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "freebsd"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/astro/node_modules/@esbuild/freebsd-x64": {
+ "version": "0.27.7",
+ "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.27.7.tgz",
+ "integrity": "sha512-jOBDK5XEjA4m5IJK3bpAQF9/Lelu/Z9ZcdhTRLf4cajlB+8VEhFFRjWgfy3M1O4rO2GQ/b2dLwCUGpiF/eATNQ==",
+ "cpu": [
+ "x64"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "freebsd"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/astro/node_modules/@esbuild/linux-arm": {
+ "version": "0.27.7",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.27.7.tgz",
+ "integrity": "sha512-RkT/YXYBTSULo3+af8Ib0ykH8u2MBh57o7q/DAs3lTJlyVQkgQvlrPTnjIzzRPQyavxtPtfg0EopvDyIt0j1rA==",
+ "cpu": [
+ "arm"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/astro/node_modules/@esbuild/linux-arm64": {
+ "version": "0.27.7",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.27.7.tgz",
+ "integrity": "sha512-RZPHBoxXuNnPQO9rvjh5jdkRmVizktkT7TCDkDmQ0W2SwHInKCAV95GRuvdSvA7w4VMwfCjUiPwDi0ZO6Nfe9A==",
+ "cpu": [
+ "arm64"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/astro/node_modules/@esbuild/linux-ia32": {
+ "version": "0.27.7",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.27.7.tgz",
+ "integrity": "sha512-GA48aKNkyQDbd3KtkplYWT102C5sn/EZTY4XROkxONgruHPU72l+gW+FfF8tf2cFjeHaRbWpOYa/uRBz/Xq1Pg==",
+ "cpu": [
+ "ia32"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/astro/node_modules/@esbuild/linux-loong64": {
+ "version": "0.27.7",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.27.7.tgz",
+ "integrity": "sha512-a4POruNM2oWsD4WKvBSEKGIiWQF8fZOAsycHOt6JBpZ+JN2n2JH9WAv56SOyu9X5IqAjqSIPTaJkqN8F7XOQ5Q==",
+ "cpu": [
+ "loong64"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/astro/node_modules/@esbuild/linux-mips64el": {
+ "version": "0.27.7",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.27.7.tgz",
+ "integrity": "sha512-KabT5I6StirGfIz0FMgl1I+R1H73Gp0ofL9A3nG3i/cYFJzKHhouBV5VWK1CSgKvVaG4q1RNpCTR2LuTVB3fIw==",
+ "cpu": [
+ "mips64el"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/astro/node_modules/@esbuild/linux-ppc64": {
+ "version": "0.27.7",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.27.7.tgz",
+ "integrity": "sha512-gRsL4x6wsGHGRqhtI+ifpN/vpOFTQtnbsupUF5R5YTAg+y/lKelYR1hXbnBdzDjGbMYjVJLJTd2OFmMewAgwlQ==",
+ "cpu": [
+ "ppc64"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/astro/node_modules/@esbuild/linux-riscv64": {
+ "version": "0.27.7",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.27.7.tgz",
+ "integrity": "sha512-hL25LbxO1QOngGzu2U5xeXtxXcW+/GvMN3ejANqXkxZ/opySAZMrc+9LY/WyjAan41unrR3YrmtTsUpwT66InQ==",
+ "cpu": [
+ "riscv64"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/astro/node_modules/@esbuild/linux-s390x": {
+ "version": "0.27.7",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.27.7.tgz",
+ "integrity": "sha512-2k8go8Ycu1Kb46vEelhu1vqEP+UeRVj2zY1pSuPdgvbd5ykAw82Lrro28vXUrRmzEsUV0NzCf54yARIK8r0fdw==",
+ "cpu": [
+ "s390x"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/astro/node_modules/@esbuild/linux-x64": {
+ "version": "0.27.7",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.27.7.tgz",
+ "integrity": "sha512-hzznmADPt+OmsYzw1EE33ccA+HPdIqiCRq7cQeL1Jlq2gb1+OyWBkMCrYGBJ+sxVzve2ZJEVeePbLM2iEIZSxA==",
+ "cpu": [
+ "x64"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/astro/node_modules/@esbuild/netbsd-arm64": {
+ "version": "0.27.7",
+ "resolved": "https://registry.npmjs.org/@esbuild/netbsd-arm64/-/netbsd-arm64-0.27.7.tgz",
+ "integrity": "sha512-b6pqtrQdigZBwZxAn1UpazEisvwaIDvdbMbmrly7cDTMFnw/+3lVxxCTGOrkPVnsYIosJJXAsILG9XcQS+Yu6w==",
+ "cpu": [
+ "arm64"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "netbsd"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/astro/node_modules/@esbuild/netbsd-x64": {
+ "version": "0.27.7",
+ "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.27.7.tgz",
+ "integrity": "sha512-OfatkLojr6U+WN5EDYuoQhtM+1xco+/6FSzJJnuWiUw5eVcicbyK3dq5EeV/QHT1uy6GoDhGbFpprUiHUYggrw==",
+ "cpu": [
+ "x64"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "netbsd"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/astro/node_modules/@esbuild/openbsd-arm64": {
+ "version": "0.27.7",
+ "resolved": "https://registry.npmjs.org/@esbuild/openbsd-arm64/-/openbsd-arm64-0.27.7.tgz",
+ "integrity": "sha512-AFuojMQTxAz75Fo8idVcqoQWEHIXFRbOc1TrVcFSgCZtQfSdc1RXgB3tjOn/krRHENUB4j00bfGjyl2mJrU37A==",
+ "cpu": [
+ "arm64"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "openbsd"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/astro/node_modules/@esbuild/openbsd-x64": {
+ "version": "0.27.7",
+ "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.27.7.tgz",
+ "integrity": "sha512-+A1NJmfM8WNDv5CLVQYJ5PshuRm/4cI6WMZRg1by1GwPIQPCTs1GLEUHwiiQGT5zDdyLiRM/l1G0Pv54gvtKIg==",
+ "cpu": [
+ "x64"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "openbsd"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/astro/node_modules/@esbuild/sunos-x64": {
+ "version": "0.27.7",
+ "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.27.7.tgz",
+ "integrity": "sha512-ikktIhFBzQNt/QDyOL580ti9+5mL/YZeUPKU2ivGtGjdTYoqz6jObj6nOMfhASpS4GU4Q/Clh1QtxWAvcYKamA==",
+ "cpu": [
+ "x64"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "sunos"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/astro/node_modules/@esbuild/win32-arm64": {
+ "version": "0.27.7",
+ "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.27.7.tgz",
+ "integrity": "sha512-7yRhbHvPqSpRUV7Q20VuDwbjW5kIMwTHpptuUzV+AA46kiPze5Z7qgt6CLCK3pWFrHeNfDd1VKgyP4O+ng17CA==",
+ "cpu": [
+ "arm64"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "win32"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/astro/node_modules/@esbuild/win32-ia32": {
+ "version": "0.27.7",
+ "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.27.7.tgz",
+ "integrity": "sha512-SmwKXe6VHIyZYbBLJrhOoCJRB/Z1tckzmgTLfFYOfpMAx63BJEaL9ExI8x7v0oAO3Zh6D/Oi1gVxEYr5oUCFhw==",
+ "cpu": [
+ "ia32"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "win32"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/astro/node_modules/@esbuild/win32-x64": {
+ "version": "0.27.7",
+ "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.27.7.tgz",
+ "integrity": "sha512-56hiAJPhwQ1R4i+21FVF7V8kSD5zZTdHcVuRFMW0hn753vVfQN8xlx4uOPT4xoGH0Z/oVATuR82AiqSTDIpaHg==",
+ "cpu": [
+ "x64"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "win32"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/astro/node_modules/esbuild": {
+ "version": "0.27.7",
+ "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.27.7.tgz",
+ "integrity": "sha512-IxpibTjyVnmrIQo5aqNpCgoACA/dTKLTlhMHihVHhdkxKyPO1uBBthumT0rdHmcsk9uMonIWS0m4FljWzILh3w==",
+ "hasInstallScript": true,
+ "license": "MIT",
+ "bin": {
+ "esbuild": "bin/esbuild"
+ },
+ "engines": {
+ "node": ">=18"
+ },
+ "optionalDependencies": {
+ "@esbuild/aix-ppc64": "0.27.7",
+ "@esbuild/android-arm": "0.27.7",
+ "@esbuild/android-arm64": "0.27.7",
+ "@esbuild/android-x64": "0.27.7",
+ "@esbuild/darwin-arm64": "0.27.7",
+ "@esbuild/darwin-x64": "0.27.7",
+ "@esbuild/freebsd-arm64": "0.27.7",
+ "@esbuild/freebsd-x64": "0.27.7",
+ "@esbuild/linux-arm": "0.27.7",
+ "@esbuild/linux-arm64": "0.27.7",
+ "@esbuild/linux-ia32": "0.27.7",
+ "@esbuild/linux-loong64": "0.27.7",
+ "@esbuild/linux-mips64el": "0.27.7",
+ "@esbuild/linux-ppc64": "0.27.7",
+ "@esbuild/linux-riscv64": "0.27.7",
+ "@esbuild/linux-s390x": "0.27.7",
+ "@esbuild/linux-x64": "0.27.7",
+ "@esbuild/netbsd-arm64": "0.27.7",
+ "@esbuild/netbsd-x64": "0.27.7",
+ "@esbuild/openbsd-arm64": "0.27.7",
+ "@esbuild/openbsd-x64": "0.27.7",
+ "@esbuild/openharmony-arm64": "0.27.7",
+ "@esbuild/sunos-x64": "0.27.7",
+ "@esbuild/win32-arm64": "0.27.7",
+ "@esbuild/win32-ia32": "0.27.7",
+ "@esbuild/win32-x64": "0.27.7"
+ }
+ },
+ "node_modules/async-sema": {
+ "version": "3.1.1",
+ "resolved": "https://registry.npmjs.org/async-sema/-/async-sema-3.1.1.tgz",
+ "integrity": "sha512-tLRNUXati5MFePdAk8dw7Qt7DpxPB60ofAgn8WRhW6a2rcimZnYBP9oxHiv0OHy+Wz7kPMG+t4LGdt31+4EmGg==",
+ "license": "MIT"
+ },
+ "node_modules/axobject-query": {
+ "version": "4.1.0",
+ "resolved": "https://registry.npmjs.org/axobject-query/-/axobject-query-4.1.0.tgz",
+ "integrity": "sha512-qIj0G9wZbMGNLjLmg1PT6v2mE9AH2zlnADJD/2tC6E00hgmhUOfEB6greHPAfLRSufHqROIUTkw6E+M3lH0PTQ==",
+ "license": "Apache-2.0",
+ "engines": {
+ "node": ">= 0.4"
+ }
+ },
+ "node_modules/bail": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/bail/-/bail-2.0.2.tgz",
+ "integrity": "sha512-0xO6mYd7JB2YesxDKplafRpsiOzPt9V02ddPCLbY1xYGPOX24NTyN50qnUxgCPcSoYMhKpAuBTjQoRZCAkUDRw==",
+ "license": "MIT",
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/wooorm"
+ }
+ },
+ "node_modules/balanced-match": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz",
+ "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==",
+ "license": "MIT"
+ },
+ "node_modules/base-64": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/base-64/-/base-64-1.0.0.tgz",
+ "integrity": "sha512-kwDPIFCGx0NZHog36dj+tHiwP4QMzsZ3AgMViUBKI0+V5n4U0ufTCUMhnQ04diaRI8EX/QcPfql7zlhZ7j4zgg==",
+ "license": "MIT"
+ },
+ "node_modules/bindings": {
+ "version": "1.5.0",
+ "resolved": "https://registry.npmjs.org/bindings/-/bindings-1.5.0.tgz",
+ "integrity": "sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ==",
+ "license": "MIT",
+ "dependencies": {
+ "file-uri-to-path": "1.0.0"
+ }
+ },
+ "node_modules/boolbase": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz",
+ "integrity": "sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==",
+ "license": "ISC"
+ },
+ "node_modules/boxen": {
+ "version": "8.0.1",
+ "resolved": "https://registry.npmjs.org/boxen/-/boxen-8.0.1.tgz",
+ "integrity": "sha512-F3PH5k5juxom4xktynS7MoFY+NUWH5LC4CnH11YB8NPew+HLpmBLCybSAEyb2F+4pRXhuhWqFesoQd6DAyc2hw==",
+ "license": "MIT",
+ "dependencies": {
+ "ansi-align": "^3.0.1",
+ "camelcase": "^8.0.0",
+ "chalk": "^5.3.0",
+ "cli-boxes": "^3.0.0",
+ "string-width": "^7.2.0",
+ "type-fest": "^4.21.0",
+ "widest-line": "^5.0.0",
+ "wrap-ansi": "^9.0.0"
+ },
+ "engines": {
+ "node": ">=18"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/brace-expansion": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.1.0.tgz",
+ "integrity": "sha512-TN1kCZAgdgweJhWWpgKYrQaMNHcDULHkWwQIspdtjV4Y5aurRdZpjAqn6yX3FPqTA9ngHCc4hJxMAMgGfve85w==",
+ "license": "MIT",
+ "dependencies": {
+ "balanced-match": "^1.0.0"
+ }
+ },
+ "node_modules/camelcase": {
+ "version": "8.0.0",
+ "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-8.0.0.tgz",
+ "integrity": "sha512-8WB3Jcas3swSvjIeA2yvCJ+Miyz5l1ZmB6HFb9R1317dt9LCQoswg/BGrmAmkWVEszSrrg4RwmO46qIm2OEnSA==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=16"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/ccount": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/ccount/-/ccount-2.0.1.tgz",
+ "integrity": "sha512-eyrF0jiFpY+3drT6383f1qhkbGsLSifNAjA61IUjZjmLCWjItY6LB9ft9YhoDgwfmclB2zhu51Lc7+95b8NRAg==",
+ "license": "MIT",
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/wooorm"
+ }
+ },
+ "node_modules/chalk": {
+ "version": "5.4.1",
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-5.4.1.tgz",
+ "integrity": "sha512-zgVZuo2WcZgfUEmsn6eO3kINexW8RAE4maiQ8QNs8CtpPCSyMiYsULR3HQYkm3w8FIA3SberyMJMSldGsW+U3w==",
+ "license": "MIT",
+ "engines": {
+ "node": "^12.17.0 || ^14.13 || >=16.0.0"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/chalk?sponsor=1"
+ }
+ },
+ "node_modules/character-entities": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/character-entities/-/character-entities-2.0.2.tgz",
+ "integrity": "sha512-shx7oQ0Awen/BRIdkjkvz54PnEEI/EjwXDSIZp86/KKdbafHh1Df/RYGBhn4hbe2+uKC9FnT5UCEdyPz3ai9hQ==",
+ "license": "MIT",
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/wooorm"
+ }
+ },
+ "node_modules/character-entities-html4": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/character-entities-html4/-/character-entities-html4-2.1.0.tgz",
+ "integrity": "sha512-1v7fgQRj6hnSwFpq1Eu0ynr/CDEw0rXo2B61qXrLNdHZmPKgb7fqS1a2JwF0rISo9q77jDI8VMEHoApn8qDoZA==",
+ "license": "MIT",
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/wooorm"
+ }
+ },
+ "node_modules/character-entities-legacy": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/character-entities-legacy/-/character-entities-legacy-3.0.0.tgz",
+ "integrity": "sha512-RpPp0asT/6ufRm//AJVwpViZbGM/MkjQFxJccQRHmISF/22NBtsHqAWmL+/pmkPWoIUJdWyeVleTl1wydHATVQ==",
+ "license": "MIT",
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/wooorm"
+ }
+ },
+ "node_modules/character-reference-invalid": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/character-reference-invalid/-/character-reference-invalid-2.0.1.tgz",
+ "integrity": "sha512-iBZ4F4wRbyORVsu0jPV7gXkOsGYjGHPmAyv+HiHG8gi5PtC9KI2j1+v8/tlibRvjoWX027ypmG/n0HtO5t7unw==",
+ "license": "MIT",
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/wooorm"
+ }
+ },
+ "node_modules/chokidar": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-5.0.0.tgz",
+ "integrity": "sha512-TQMmc3w+5AxjpL8iIiwebF73dRDF4fBIieAqGn9RGCWaEVwQ6Fb2cGe31Yns0RRIzii5goJ1Y7xbMwo1TxMplw==",
+ "license": "MIT",
+ "dependencies": {
+ "readdirp": "^5.0.0"
+ },
+ "engines": {
+ "node": ">= 20.19.0"
+ },
+ "funding": {
+ "url": "https://paulmillr.com/funding/"
+ }
+ },
+ "node_modules/chownr": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/chownr/-/chownr-3.0.0.tgz",
+ "integrity": "sha512-+IxzY9BZOQd/XuYPRmrvEVjF/nqj5kgT4kEq7VofrDoM1MxoRjEWkrCC3EtLi59TVawxTAn+orJwFQcrqEN1+g==",
+ "license": "BlueOak-1.0.0",
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/ci-info": {
+ "version": "4.4.0",
+ "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-4.4.0.tgz",
+ "integrity": "sha512-77PSwercCZU2Fc4sX94eF8k8Pxte6JAwL4/ICZLFjJLqegs7kCuAsqqj/70NQF6TvDpgFjkubQB2FW2ZZddvQg==",
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/sibiraj-s"
+ }
+ ],
+ "license": "MIT",
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/cli-boxes": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/cli-boxes/-/cli-boxes-3.0.0.tgz",
+ "integrity": "sha512-/lzGpEWL/8PfI0BmBOPRwp0c/wFNX1RdUML3jK/RcSBA9T8mZDdQpqYBKtCFTOfQbwPqWEOpjqW+Fnayc0969g==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/clsx": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/clsx/-/clsx-2.1.1.tgz",
+ "integrity": "sha512-eYm0QWBtUrBWZWG0d386OGAw16Z995PiOVo2B7bjWSbHedGl5e0ZWaq65kOGgUSNesEIDkB9ISbTg/JK9dhCZA==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/collapse-white-space": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/collapse-white-space/-/collapse-white-space-2.1.0.tgz",
+ "integrity": "sha512-loKTxY1zCOuG4j9f6EPnuyyYkf58RnhhWTvRoZEokgB+WbdXehfjFviyOVYkqzEWz1Q5kRiZdBYS5SwxbQYwzw==",
+ "license": "MIT",
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/wooorm"
+ }
+ },
+ "node_modules/color": {
+ "version": "4.2.3",
+ "resolved": "https://registry.npmjs.org/color/-/color-4.2.3.tgz",
+ "integrity": "sha512-1rXeuUUiGGrykh+CeBdu5Ie7OJwinCgQY0bc7GCRxy5xVHy+moaqkpL/jqQq0MtQOeYcrqEz4abc5f0KtU7W4A==",
+ "license": "MIT",
+ "optional": true,
+ "dependencies": {
+ "color-convert": "^2.0.1",
+ "color-string": "^1.9.0"
+ },
+ "engines": {
+ "node": ">=12.5.0"
+ }
+ },
+ "node_modules/color-convert": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
+ "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
+ "license": "MIT",
+ "dependencies": {
+ "color-name": "~1.1.4"
+ },
+ "engines": {
+ "node": ">=7.0.0"
+ }
+ },
+ "node_modules/color-name": {
+ "version": "1.1.4",
+ "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
+ "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
+ "license": "MIT"
+ },
+ "node_modules/color-string": {
+ "version": "1.9.1",
+ "resolved": "https://registry.npmjs.org/color-string/-/color-string-1.9.1.tgz",
+ "integrity": "sha512-shrVawQFojnZv6xM40anx4CkoDP+fZsw/ZerEMsW/pyzsRbElpsL/DBVW7q3ExxwusdNXI3lXpuhEZkzs8p5Eg==",
+ "license": "MIT",
+ "optional": true,
+ "dependencies": {
+ "color-name": "^1.0.0",
+ "simple-swizzle": "^0.2.2"
+ }
+ },
+ "node_modules/comma-separated-tokens": {
+ "version": "2.0.3",
+ "resolved": "https://registry.npmjs.org/comma-separated-tokens/-/comma-separated-tokens-2.0.3.tgz",
+ "integrity": "sha512-Fu4hJdvzeylCfQPp9SGWidpzrMs7tTrlu6Vb8XGaRGck8QSNZJJp538Wrb60Lax4fPwR64ViY468OIUTbRlGZg==",
+ "license": "MIT",
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/wooorm"
+ }
+ },
+ "node_modules/commander": {
+ "version": "11.1.0",
+ "resolved": "https://registry.npmjs.org/commander/-/commander-11.1.0.tgz",
+ "integrity": "sha512-yPVavfyCcRhmorC7rWlkHn15b4wDVgVmBA7kV4QVBsF7kv/9TKJAbAXVTxvTnwP8HHKjRCJDClKbciiYS7p0DQ==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=16"
+ }
+ },
+ "node_modules/common-ancestor-path": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/common-ancestor-path/-/common-ancestor-path-1.0.1.tgz",
+ "integrity": "sha512-L3sHRo1pXXEqX8VU28kfgUY+YGsk09hPqZiZmLacNib6XNTCM8ubYeT7ryXQw8asB1sKgcU5lkB7ONug08aB8w==",
+ "license": "ISC"
+ },
+ "node_modules/consola": {
+ "version": "3.4.0",
+ "resolved": "https://registry.npmjs.org/consola/-/consola-3.4.0.tgz",
+ "integrity": "sha512-EiPU8G6dQG0GFHNR8ljnZFki/8a+cQwEQ+7wpxdChl02Q8HXlwEZWD5lqAF8vC2sEC3Tehr8hy7vErz88LHyUA==",
+ "license": "MIT",
+ "engines": {
+ "node": "^14.18.0 || >=16.10.0"
+ }
+ },
+ "node_modules/cookie": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/cookie/-/cookie-1.1.1.tgz",
+ "integrity": "sha512-ei8Aos7ja0weRpFzJnEA9UHJ/7XQmqglbRwnf2ATjcB9Wq874VKH9kfjjirM6UhU2/E5fFYadylyhFldcqSidQ==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=18"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/express"
+ }
+ },
+ "node_modules/cookie-es": {
+ "version": "1.2.3",
+ "resolved": "https://registry.npmjs.org/cookie-es/-/cookie-es-1.2.3.tgz",
+ "integrity": "sha512-lXVyvUvrNXblMqzIRrxHb57UUVmqsSWlxqt3XIjCkUP0wDAf6uicO6KMbEgYrMNtEvWgWHwe42CKxPu9MYAnWw==",
+ "license": "MIT"
+ },
+ "node_modules/cross-spawn": {
+ "version": "7.0.6",
+ "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.6.tgz",
+ "integrity": "sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==",
+ "license": "MIT",
+ "dependencies": {
+ "path-key": "^3.1.0",
+ "shebang-command": "^2.0.0",
+ "which": "^2.0.1"
+ },
+ "engines": {
+ "node": ">= 8"
+ }
+ },
+ "node_modules/crossws": {
+ "version": "0.3.5",
+ "resolved": "https://registry.npmjs.org/crossws/-/crossws-0.3.5.tgz",
+ "integrity": "sha512-ojKiDvcmByhwa8YYqbQI/hg7MEU0NC03+pSdEq4ZUnZR9xXpwk7E43SMNGkn+JxJGPFtNvQ48+vV2p+P1ml5PA==",
+ "license": "MIT",
+ "dependencies": {
+ "uncrypto": "^0.1.3"
+ }
+ },
+ "node_modules/css-select": {
+ "version": "5.2.2",
+ "resolved": "https://registry.npmjs.org/css-select/-/css-select-5.2.2.tgz",
+ "integrity": "sha512-TizTzUddG/xYLA3NXodFM0fSbNizXjOKhqiQQwvhlspadZokn1KDy0NZFS0wuEubIYAV5/c1/lAr0TaaFXEXzw==",
+ "license": "BSD-2-Clause",
+ "dependencies": {
+ "boolbase": "^1.0.0",
+ "css-what": "^6.1.0",
+ "domhandler": "^5.0.2",
+ "domutils": "^3.0.1",
+ "nth-check": "^2.0.1"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/fb55"
+ }
+ },
+ "node_modules/css-tree": {
+ "version": "3.2.1",
+ "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-3.2.1.tgz",
+ "integrity": "sha512-X7sjQzceUhu1u7Y/ylrRZFU2FS6LRiFVp6rKLPg23y3x3c3DOKAwuXGDp+PAGjh6CSnCjYeAul8pcT8bAl+lSA==",
+ "license": "MIT",
+ "dependencies": {
+ "mdn-data": "2.27.1",
+ "source-map-js": "^1.2.1"
+ },
+ "engines": {
+ "node": "^10 || ^12.20.0 || ^14.13.0 || >=15.0.0"
+ }
+ },
+ "node_modules/css-what": {
+ "version": "6.2.2",
+ "resolved": "https://registry.npmjs.org/css-what/-/css-what-6.2.2.tgz",
+ "integrity": "sha512-u/O3vwbptzhMs3L1fQE82ZSLHQQfto5gyZzwteVIEyeaY5Fc7R4dapF/BvRoSYFeqfBk4m0V1Vafq5Pjv25wvA==",
+ "license": "BSD-2-Clause",
+ "engines": {
+ "node": ">= 6"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/fb55"
+ }
+ },
+ "node_modules/cssesc": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz",
+ "integrity": "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==",
+ "license": "MIT",
+ "bin": {
+ "cssesc": "bin/cssesc"
+ },
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/csso": {
+ "version": "5.0.5",
+ "resolved": "https://registry.npmjs.org/csso/-/csso-5.0.5.tgz",
+ "integrity": "sha512-0LrrStPOdJj+SPCCrGhzryycLjwcgUSHBtxNA8aIDxf0GLsRh1cKYhB00Gd1lDOS4yGH69+SNn13+TWbVHETFQ==",
+ "license": "MIT",
+ "dependencies": {
+ "css-tree": "~2.2.0"
+ },
+ "engines": {
+ "node": "^10 || ^12.20.0 || ^14.13.0 || >=15.0.0",
+ "npm": ">=7.0.0"
+ }
+ },
+ "node_modules/csso/node_modules/css-tree": {
+ "version": "2.2.1",
+ "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-2.2.1.tgz",
+ "integrity": "sha512-OA0mILzGc1kCOCSJerOeqDxDQ4HOh+G8NbOJFOTgOCzpw7fCBubk0fEyxp8AgOL/jvLgYA/uV0cMbe43ElF1JA==",
+ "license": "MIT",
+ "dependencies": {
+ "mdn-data": "2.0.28",
+ "source-map-js": "^1.0.1"
+ },
+ "engines": {
+ "node": "^10 || ^12.20.0 || ^14.13.0 || >=15.0.0",
+ "npm": ">=7.0.0"
+ }
+ },
+ "node_modules/csso/node_modules/mdn-data": {
+ "version": "2.0.28",
+ "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.28.tgz",
+ "integrity": "sha512-aylIc7Z9y4yzHYAJNuESG3hfhC+0Ibp/MAMiaOZgNv4pmEdFyfZhhhny4MNiAfWdBQ1RQ2mfDWmM1x8SvGyp8g==",
+ "license": "CC0-1.0"
+ },
+ "node_modules/daisyui": {
+ "version": "5.0.2",
+ "resolved": "https://registry.npmjs.org/daisyui/-/daisyui-5.0.2.tgz",
+ "integrity": "sha512-AfOlwcE+Ukwuh2NSrMDE8VXOl9UWidj2Q5f64DEYqtZVW0Z9pELBA50iGEKg2FpBUvztFY5DFv7+eZgRts70BA==",
+ "dev": true,
+ "license": "MIT",
+ "funding": {
+ "url": "https://github.com/saadeghi/daisyui?sponsor=1"
+ }
+ },
+ "node_modules/debug": {
+ "version": "4.4.3",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.3.tgz",
+ "integrity": "sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==",
+ "license": "MIT",
+ "dependencies": {
+ "ms": "^2.1.3"
+ },
+ "engines": {
+ "node": ">=6.0"
+ },
+ "peerDependenciesMeta": {
+ "supports-color": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/decode-named-character-reference": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/decode-named-character-reference/-/decode-named-character-reference-1.1.0.tgz",
+ "integrity": "sha512-Wy+JTSbFThEOXQIR2L6mxJvEs+veIzpmqD7ynWxMXGpnk3smkHQOp6forLdHsKpAMW9iJpaBBIxz285t1n1C3w==",
+ "license": "MIT",
+ "dependencies": {
+ "character-entities": "^2.0.0"
+ },
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/wooorm"
+ }
+ },
+ "node_modules/defu": {
+ "version": "6.1.7",
+ "resolved": "https://registry.npmjs.org/defu/-/defu-6.1.7.tgz",
+ "integrity": "sha512-7z22QmUWiQ/2d0KkdYmANbRUVABpZ9SNYyH5vx6PZ+nE5bcC0l7uFvEfHlyld/HcGBFTL536ClDt3DEcSlEJAQ==",
+ "license": "MIT"
+ },
+ "node_modules/dequal": {
+ "version": "2.0.3",
+ "resolved": "https://registry.npmjs.org/dequal/-/dequal-2.0.3.tgz",
+ "integrity": "sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/destr": {
+ "version": "2.0.5",
+ "resolved": "https://registry.npmjs.org/destr/-/destr-2.0.5.tgz",
+ "integrity": "sha512-ugFTXCtDZunbzasqBxrK93Ik/DRYsO6S/fedkWEMKqt04xZ4csmnmwGDBAb07QWNaGMAmnTIemsYZCksjATwsA==",
+ "license": "MIT"
+ },
+ "node_modules/detect-libc": {
+ "version": "2.0.4",
+ "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-2.0.4.tgz",
+ "integrity": "sha512-3UDv+G9CsCKO1WKMGw9fwq/SWJYbI0c5Y7LU1AXYoDdbhE2AHQ6N6Nb34sG8Fj7T5APy8qXDCKuuIHd1BR0tVA==",
+ "license": "Apache-2.0",
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/deterministic-object-hash": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/deterministic-object-hash/-/deterministic-object-hash-2.0.2.tgz",
+ "integrity": "sha512-KxektNH63SrbfUyDiwXqRb1rLwKt33AmMv+5Nhsw1kqZ13SJBRTgZHtGbE+hH3a1mVW1cz+4pqSWVPAtLVXTzQ==",
+ "license": "MIT",
+ "dependencies": {
+ "base-64": "^1.0.0"
+ },
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/devalue": {
+ "version": "5.7.1",
+ "resolved": "https://registry.npmjs.org/devalue/-/devalue-5.7.1.tgz",
+ "integrity": "sha512-MUbZ586EgQqdRnC4yDrlod3BEdyvE4TapGYHMW2CiaW+KkkFmWEFqBUaLltEZCGi0iFXCEjRF0OjF0DV2QHjOA==",
+ "license": "MIT"
+ },
+ "node_modules/devlop": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/devlop/-/devlop-1.1.0.tgz",
+ "integrity": "sha512-RWmIqhcFf1lRYBvNmr7qTNuyCt/7/ns2jbpp1+PalgE/rDQcBT0fioSMUpJ93irlUhC5hrg4cYqe6U+0ImW0rA==",
+ "license": "MIT",
+ "dependencies": {
+ "dequal": "^2.0.0"
+ },
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/wooorm"
+ }
+ },
+ "node_modules/diff": {
+ "version": "8.0.4",
+ "resolved": "https://registry.npmjs.org/diff/-/diff-8.0.4.tgz",
+ "integrity": "sha512-DPi0FmjiSU5EvQV0++GFDOJ9ASQUVFh5kD+OzOnYdi7n3Wpm9hWWGfB/O2blfHcMVTL5WkQXSnRiK9makhrcnw==",
+ "license": "BSD-3-Clause",
+ "engines": {
+ "node": ">=0.3.1"
+ }
+ },
+ "node_modules/dlv": {
+ "version": "1.1.3",
+ "resolved": "https://registry.npmjs.org/dlv/-/dlv-1.1.3.tgz",
+ "integrity": "sha512-+HlytyjlPKnIG8XuRG8WvmBP8xs8P71y+SKKS6ZXWoEgLuePxtDoUEiH7WkdePWrQ5JBpE6aoVqfZfJUQkjXwA==",
+ "license": "MIT"
+ },
+ "node_modules/dom-serializer": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-2.0.0.tgz",
+ "integrity": "sha512-wIkAryiqt/nV5EQKqQpo3SToSOV9J0DnbJqwK7Wv/Trc92zIAYZ4FlMu+JPFW1DfGFt81ZTCGgDEabffXeLyJg==",
+ "license": "MIT",
+ "dependencies": {
+ "domelementtype": "^2.3.0",
+ "domhandler": "^5.0.2",
+ "entities": "^4.2.0"
+ },
+ "funding": {
+ "url": "https://github.com/cheeriojs/dom-serializer?sponsor=1"
+ }
+ },
+ "node_modules/domelementtype": {
+ "version": "2.3.0",
+ "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.3.0.tgz",
+ "integrity": "sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==",
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/fb55"
+ }
+ ],
+ "license": "BSD-2-Clause"
+ },
+ "node_modules/domhandler": {
+ "version": "5.0.3",
+ "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-5.0.3.tgz",
+ "integrity": "sha512-cgwlv/1iFQiFnU96XXgROh8xTeetsnJiDsTc7TYCLFd9+/WNkIqPTxiM/8pSd8VIrhXGTf1Ny1q1hquVqDJB5w==",
+ "license": "BSD-2-Clause",
+ "dependencies": {
+ "domelementtype": "^2.3.0"
+ },
+ "engines": {
+ "node": ">= 4"
+ },
+ "funding": {
+ "url": "https://github.com/fb55/domhandler?sponsor=1"
+ }
+ },
+ "node_modules/domutils": {
+ "version": "3.2.2",
+ "resolved": "https://registry.npmjs.org/domutils/-/domutils-3.2.2.tgz",
+ "integrity": "sha512-6kZKyUajlDuqlHKVX1w7gyslj9MPIXzIFiz/rGu35uC1wMi+kMhQwGhl4lt9unC9Vb9INnY9Z3/ZA3+FhASLaw==",
+ "license": "BSD-2-Clause",
+ "dependencies": {
+ "dom-serializer": "^2.0.0",
+ "domelementtype": "^2.3.0",
+ "domhandler": "^5.0.3"
+ },
+ "funding": {
+ "url": "https://github.com/fb55/domutils?sponsor=1"
+ }
+ },
+ "node_modules/dset": {
+ "version": "3.1.4",
+ "resolved": "https://registry.npmjs.org/dset/-/dset-3.1.4.tgz",
+ "integrity": "sha512-2QF/g9/zTaPDc3BjNcVTGoBbXBgYfMTTceLaYcFJ/W9kggFUkhxD/hMEeuLKbugyef9SqAx8cpgwlIP/jinUTA==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/eastasianwidth": {
+ "version": "0.2.0",
+ "resolved": "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz",
+ "integrity": "sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==",
+ "license": "MIT"
+ },
+ "node_modules/emoji-regex": {
+ "version": "10.4.0",
+ "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-10.4.0.tgz",
+ "integrity": "sha512-EC+0oUMY1Rqm4O6LLrgjtYDvcVYTy7chDnM4Q7030tP4Kwj3u/pR6gP9ygnp2CJMK5Gq+9Q2oqmrFJAz01DXjw==",
+ "license": "MIT"
+ },
+ "node_modules/enhanced-resolve": {
+ "version": "5.18.1",
+ "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.18.1.tgz",
+ "integrity": "sha512-ZSW3ma5GkcQBIpwZTSRAI8N71Uuwgs93IezB7mf7R60tC8ZbJideoDNKjHn2O9KIlx6rkGTTEk1xUCK2E1Y2Yg==",
+ "license": "MIT",
+ "dependencies": {
+ "graceful-fs": "^4.2.4",
+ "tapable": "^2.2.0"
+ },
+ "engines": {
+ "node": ">=10.13.0"
+ }
+ },
+ "node_modules/entities": {
+ "version": "4.5.0",
+ "resolved": "https://registry.npmjs.org/entities/-/entities-4.5.0.tgz",
+ "integrity": "sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==",
+ "license": "BSD-2-Clause",
+ "engines": {
+ "node": ">=0.12"
+ },
+ "funding": {
+ "url": "https://github.com/fb55/entities?sponsor=1"
+ }
+ },
+ "node_modules/es-module-lexer": {
+ "version": "1.7.0",
+ "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-1.7.0.tgz",
+ "integrity": "sha512-jEQoCwk8hyb2AZziIOLhDqpm5+2ww5uIE6lkO/6jcOCusfk6LhMHpXXfBLXTZ7Ydyt0j4VoUQv6uGNYbdW+kBA==",
+ "license": "MIT"
+ },
+ "node_modules/esast-util-from-estree": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/esast-util-from-estree/-/esast-util-from-estree-2.0.0.tgz",
+ "integrity": "sha512-4CyanoAudUSBAn5K13H4JhsMH6L9ZP7XbLVe/dKybkxMO7eDyLsT8UHl9TRNrU2Gr9nz+FovfSIjuXWJ81uVwQ==",
+ "license": "MIT",
+ "dependencies": {
+ "@types/estree-jsx": "^1.0.0",
+ "devlop": "^1.0.0",
+ "estree-util-visit": "^2.0.0",
+ "unist-util-position-from-estree": "^2.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/unified"
+ }
+ },
+ "node_modules/esast-util-from-js": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/esast-util-from-js/-/esast-util-from-js-2.0.1.tgz",
+ "integrity": "sha512-8Ja+rNJ0Lt56Pcf3TAmpBZjmx8ZcK5Ts4cAzIOjsjevg9oSXJnl6SUQ2EevU8tv3h6ZLWmoKL5H4fgWvdvfETw==",
+ "license": "MIT",
+ "dependencies": {
+ "@types/estree-jsx": "^1.0.0",
+ "acorn": "^8.0.0",
+ "esast-util-from-estree": "^2.0.0",
+ "vfile-message": "^4.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/unified"
+ }
+ },
+ "node_modules/esbuild": {
+ "version": "0.25.1",
+ "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.25.1.tgz",
+ "integrity": "sha512-BGO5LtrGC7vxnqucAe/rmvKdJllfGaYWdyABvyMoXQlfYMb2bbRuReWR5tEGE//4LcNJj9XrkovTqNYRFZHAMQ==",
+ "hasInstallScript": true,
+ "license": "MIT",
+ "bin": {
+ "esbuild": "bin/esbuild"
+ },
+ "engines": {
+ "node": ">=18"
+ },
+ "optionalDependencies": {
+ "@esbuild/aix-ppc64": "0.25.1",
+ "@esbuild/android-arm": "0.25.1",
+ "@esbuild/android-arm64": "0.25.1",
+ "@esbuild/android-x64": "0.25.1",
+ "@esbuild/darwin-arm64": "0.25.1",
+ "@esbuild/darwin-x64": "0.25.1",
+ "@esbuild/freebsd-arm64": "0.25.1",
+ "@esbuild/freebsd-x64": "0.25.1",
+ "@esbuild/linux-arm": "0.25.1",
+ "@esbuild/linux-arm64": "0.25.1",
+ "@esbuild/linux-ia32": "0.25.1",
+ "@esbuild/linux-loong64": "0.25.1",
+ "@esbuild/linux-mips64el": "0.25.1",
+ "@esbuild/linux-ppc64": "0.25.1",
+ "@esbuild/linux-riscv64": "0.25.1",
+ "@esbuild/linux-s390x": "0.25.1",
+ "@esbuild/linux-x64": "0.25.1",
+ "@esbuild/netbsd-arm64": "0.25.1",
+ "@esbuild/netbsd-x64": "0.25.1",
+ "@esbuild/openbsd-arm64": "0.25.1",
+ "@esbuild/openbsd-x64": "0.25.1",
+ "@esbuild/sunos-x64": "0.25.1",
+ "@esbuild/win32-arm64": "0.25.1",
+ "@esbuild/win32-ia32": "0.25.1",
+ "@esbuild/win32-x64": "0.25.1"
+ }
+ },
+ "node_modules/escape-string-regexp": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-5.0.0.tgz",
+ "integrity": "sha512-/veY75JbMK4j1yjvuUxuVsiS/hr/4iHs9FTT6cgTexxdE0Ly/glccBAkloH/DofkjRbZU3bnoj38mOmhkZ0lHw==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/estree-util-attach-comments": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/estree-util-attach-comments/-/estree-util-attach-comments-3.0.0.tgz",
+ "integrity": "sha512-cKUwm/HUcTDsYh/9FgnuFqpfquUbwIqwKM26BVCGDPVgvaCl/nDCCjUfiLlx6lsEZ3Z4RFxNbOQ60pkaEwFxGw==",
+ "license": "MIT",
+ "dependencies": {
+ "@types/estree": "^1.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/unified"
+ }
+ },
+ "node_modules/estree-util-build-jsx": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/estree-util-build-jsx/-/estree-util-build-jsx-3.0.1.tgz",
+ "integrity": "sha512-8U5eiL6BTrPxp/CHbs2yMgP8ftMhR5ww1eIKoWRMlqvltHF8fZn5LRDvTKuxD3DUn+shRbLGqXemcP51oFCsGQ==",
+ "license": "MIT",
+ "dependencies": {
+ "@types/estree-jsx": "^1.0.0",
+ "devlop": "^1.0.0",
+ "estree-util-is-identifier-name": "^3.0.0",
+ "estree-walker": "^3.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/unified"
+ }
+ },
+ "node_modules/estree-util-is-identifier-name": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/estree-util-is-identifier-name/-/estree-util-is-identifier-name-3.0.0.tgz",
+ "integrity": "sha512-hFtqIDZTIUZ9BXLb8y4pYGyk6+wekIivNVTcmvk8NoOh+VeRn5y6cEHzbURrWbfp1fIqdVipilzj+lfaadNZmg==",
+ "license": "MIT",
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/unified"
+ }
+ },
+ "node_modules/estree-util-scope": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/estree-util-scope/-/estree-util-scope-1.0.0.tgz",
+ "integrity": "sha512-2CAASclonf+JFWBNJPndcOpA8EMJwa0Q8LUFJEKqXLW6+qBvbFZuF5gItbQOs/umBUkjviCSDCbBwU2cXbmrhQ==",
+ "license": "MIT",
+ "dependencies": {
+ "@types/estree": "^1.0.0",
+ "devlop": "^1.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/unified"
+ }
+ },
+ "node_modules/estree-util-to-js": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/estree-util-to-js/-/estree-util-to-js-2.0.0.tgz",
+ "integrity": "sha512-WDF+xj5rRWmD5tj6bIqRi6CkLIXbbNQUcxQHzGysQzvHmdYG2G7p/Tf0J0gpxGgkeMZNTIjT/AoSvC9Xehcgdg==",
+ "license": "MIT",
+ "dependencies": {
+ "@types/estree-jsx": "^1.0.0",
+ "astring": "^1.8.0",
+ "source-map": "^0.7.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/unified"
+ }
+ },
+ "node_modules/estree-util-visit": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/estree-util-visit/-/estree-util-visit-2.0.0.tgz",
+ "integrity": "sha512-m5KgiH85xAhhW8Wta0vShLcUvOsh3LLPI2YVwcbio1l7E09NTLL1EyMZFM1OyWowoH0skScNbhOPl4kcBgzTww==",
+ "license": "MIT",
+ "dependencies": {
+ "@types/estree-jsx": "^1.0.0",
+ "@types/unist": "^3.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/unified"
+ }
+ },
+ "node_modules/estree-walker": {
+ "version": "3.0.3",
+ "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-3.0.3.tgz",
+ "integrity": "sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g==",
+ "license": "MIT",
+ "dependencies": {
+ "@types/estree": "^1.0.0"
+ }
+ },
+ "node_modules/eventemitter3": {
+ "version": "5.0.4",
+ "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-5.0.4.tgz",
+ "integrity": "sha512-mlsTRyGaPBjPedk6Bvw+aqbsXDtoAyAzm5MO7JgU+yVRyMQ5O8bD4Kcci7BS85f93veegeCPkL8R4GLClnjLFw==",
+ "license": "MIT"
+ },
+ "node_modules/extend": {
+ "version": "3.0.2",
+ "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz",
+ "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==",
+ "license": "MIT"
+ },
+ "node_modules/fast-xml-parser": {
+ "version": "4.5.6",
+ "resolved": "https://registry.npmjs.org/fast-xml-parser/-/fast-xml-parser-4.5.6.tgz",
+ "integrity": "sha512-Yd4vkROfJf8AuJrDIVMVmYfULKmIJszVsMv7Vo71aocsKgFxpdlpSHXSaInvyYfgw2PRuObQSW2GFpVMUjxu9A==",
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/NaturalIntelligence"
+ }
+ ],
+ "license": "MIT",
+ "dependencies": {
+ "strnum": "^1.0.5"
+ },
+ "bin": {
+ "fxparser": "src/cli/cli.js"
+ }
+ },
+ "node_modules/fdir": {
+ "version": "6.5.0",
+ "resolved": "https://registry.npmjs.org/fdir/-/fdir-6.5.0.tgz",
+ "integrity": "sha512-tIbYtZbucOs0BRGqPJkshJUYdL+SDH7dVM8gjy+ERp3WAUjLEFJE+02kanyHtwjWOnwrKYBiwAmM0p4kLJAnXg==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=12.0.0"
+ },
+ "peerDependencies": {
+ "picomatch": "^3 || ^4"
+ },
+ "peerDependenciesMeta": {
+ "picomatch": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/file-uri-to-path": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz",
+ "integrity": "sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw==",
+ "license": "MIT"
+ },
+ "node_modules/flattie": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/flattie/-/flattie-1.1.1.tgz",
+ "integrity": "sha512-9UbaD6XdAL97+k/n+N7JwX46K/M6Zc6KcFYskrYL8wbBV/Uyk0CTAMY0VT+qiK5PM7AIc9aTWYtq65U7T+aCNQ==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/fontace": {
+ "version": "0.4.1",
+ "resolved": "https://registry.npmjs.org/fontace/-/fontace-0.4.1.tgz",
+ "integrity": "sha512-lDMvbAzSnHmbYMTEld5qdtvNH2/pWpICOqpean9IgC7vUbUJc3k+k5Dokp85CegamqQpFbXf0rAVkbzpyTA8aw==",
+ "license": "MIT",
+ "dependencies": {
+ "fontkitten": "^1.0.2"
+ }
+ },
+ "node_modules/fontkitten": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/fontkitten/-/fontkitten-1.0.3.tgz",
+ "integrity": "sha512-Wp1zXWPVUPBmfoa3Cqc9ctaKuzKAV6uLstRqlR56kSjplf5uAce+qeyYym7F+PHbGTk+tCEdkCW6RD7DX/gBZw==",
+ "license": "MIT",
+ "dependencies": {
+ "tiny-inflate": "^1.0.3"
+ },
+ "engines": {
+ "node": ">=20"
+ }
+ },
+ "node_modules/foreground-child": {
+ "version": "3.3.1",
+ "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-3.3.1.tgz",
+ "integrity": "sha512-gIXjKqtFuWEgzFRJA9WCQeSJLZDjgJUOMCMzxtvFq/37KojM1BFGufqsCy0r4qSQmYLsZYMeyRqzIWOMup03sw==",
+ "license": "ISC",
+ "dependencies": {
+ "cross-spawn": "^7.0.6",
+ "signal-exit": "^4.0.1"
+ },
+ "engines": {
+ "node": ">=14"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/isaacs"
+ }
+ },
+ "node_modules/fsevents": {
+ "version": "2.3.3",
+ "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz",
+ "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==",
+ "hasInstallScript": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "darwin"
+ ],
+ "engines": {
+ "node": "^8.16.0 || ^10.6.0 || >=11.0.0"
+ }
+ },
+ "node_modules/get-east-asian-width": {
+ "version": "1.3.0",
+ "resolved": "https://registry.npmjs.org/get-east-asian-width/-/get-east-asian-width-1.3.0.tgz",
+ "integrity": "sha512-vpeMIQKxczTD/0s2CdEWHcb0eeJe6TFjxb+J5xgX7hScxqrGuyjmv4c1D4A/gelKfyox0gJJwIHF+fLjeaM8kQ==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=18"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/github-slugger": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/github-slugger/-/github-slugger-2.0.0.tgz",
+ "integrity": "sha512-IaOQ9puYtjrkq7Y0Ygl9KDZnrf/aiUJYUpVf89y8kyaxbRG7Y1SrX/jaumrv81vc61+kiMempujsM3Yw7w5qcw=="
+ },
+ "node_modules/glob": {
+ "version": "10.5.0",
+ "resolved": "https://registry.npmjs.org/glob/-/glob-10.5.0.tgz",
+ "integrity": "sha512-DfXN8DfhJ7NH3Oe7cFmu3NCu1wKbkReJ8TorzSAFbSKrlNaQSKfIzqYqVY8zlbs2NLBbWpRiU52GX2PbaBVNkg==",
+ "deprecated": "Old versions of glob are not supported, and contain widely publicized security vulnerabilities, which have been fixed in the current version. Please update. Support for old versions may be purchased (at exorbitant rates) by contacting i@izs.me",
+ "license": "ISC",
+ "dependencies": {
+ "foreground-child": "^3.1.0",
+ "jackspeak": "^3.1.2",
+ "minimatch": "^9.0.4",
+ "minipass": "^7.1.2",
+ "package-json-from-dist": "^1.0.0",
+ "path-scurry": "^1.11.1"
+ },
+ "bin": {
+ "glob": "dist/esm/bin.mjs"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/isaacs"
+ }
+ },
+ "node_modules/graceful-fs": {
+ "version": "4.2.11",
+ "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz",
+ "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==",
+ "license": "ISC"
+ },
+ "node_modules/h3": {
+ "version": "1.15.11",
+ "resolved": "https://registry.npmjs.org/h3/-/h3-1.15.11.tgz",
+ "integrity": "sha512-L3THSe2MPeBwgIZVSH5zLdBBU90TOxarvhK9d04IDY2AmVS8j2Jz2LIWtwsGOU3lu2I5jCN7FNvVfY2+XyF+mg==",
+ "license": "MIT",
+ "dependencies": {
+ "cookie-es": "^1.2.3",
+ "crossws": "^0.3.5",
+ "defu": "^6.1.6",
+ "destr": "^2.0.5",
+ "iron-webcrypto": "^1.2.1",
+ "node-mock-http": "^1.0.4",
+ "radix3": "^1.1.2",
+ "ufo": "^1.6.3",
+ "uncrypto": "^0.1.3"
+ }
+ },
+ "node_modules/hast-util-from-html": {
+ "version": "2.0.3",
+ "resolved": "https://registry.npmjs.org/hast-util-from-html/-/hast-util-from-html-2.0.3.tgz",
+ "integrity": "sha512-CUSRHXyKjzHov8yKsQjGOElXy/3EKpyX56ELnkHH34vDVw1N1XSQ1ZcAvTyAPtGqLTuKP/uxM+aLkSPqF/EtMw==",
+ "license": "MIT",
+ "dependencies": {
+ "@types/hast": "^3.0.0",
+ "devlop": "^1.1.0",
+ "hast-util-from-parse5": "^8.0.0",
+ "parse5": "^7.0.0",
+ "vfile": "^6.0.0",
+ "vfile-message": "^4.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/unified"
+ }
+ },
+ "node_modules/hast-util-from-parse5": {
+ "version": "8.0.3",
+ "resolved": "https://registry.npmjs.org/hast-util-from-parse5/-/hast-util-from-parse5-8.0.3.tgz",
+ "integrity": "sha512-3kxEVkEKt0zvcZ3hCRYI8rqrgwtlIOFMWkbclACvjlDw8Li9S2hk/d51OI0nr/gIpdMHNepwgOKqZ/sy0Clpyg==",
+ "license": "MIT",
+ "dependencies": {
+ "@types/hast": "^3.0.0",
+ "@types/unist": "^3.0.0",
+ "devlop": "^1.0.0",
+ "hastscript": "^9.0.0",
+ "property-information": "^7.0.0",
+ "vfile": "^6.0.0",
+ "vfile-location": "^5.0.0",
+ "web-namespaces": "^2.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/unified"
+ }
+ },
+ "node_modules/hast-util-is-element": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/hast-util-is-element/-/hast-util-is-element-3.0.0.tgz",
+ "integrity": "sha512-Val9mnv2IWpLbNPqc/pUem+a7Ipj2aHacCwgNfTiK0vJKl0LF+4Ba4+v1oPHFpf3bLYmreq0/l3Gud9S5OH42g==",
+ "dependencies": {
+ "@types/hast": "^3.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/unified"
+ }
+ },
+ "node_modules/hast-util-parse-selector": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/hast-util-parse-selector/-/hast-util-parse-selector-4.0.0.tgz",
+ "integrity": "sha512-wkQCkSYoOGCRKERFWcxMVMOcYE2K1AaNLU8DXS9arxnLOUEWbOXKXiJUNzEpqZ3JOKpnha3jkFrumEjVliDe7A==",
+ "license": "MIT",
+ "dependencies": {
+ "@types/hast": "^3.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/unified"
+ }
+ },
+ "node_modules/hast-util-raw": {
+ "version": "9.1.0",
+ "resolved": "https://registry.npmjs.org/hast-util-raw/-/hast-util-raw-9.1.0.tgz",
+ "integrity": "sha512-Y8/SBAHkZGoNkpzqqfCldijcuUKh7/su31kEBp67cFY09Wy0mTRgtsLYsiIxMJxlu0f6AA5SUTbDR8K0rxnbUw==",
+ "license": "MIT",
+ "dependencies": {
+ "@types/hast": "^3.0.0",
+ "@types/unist": "^3.0.0",
+ "@ungap/structured-clone": "^1.0.0",
+ "hast-util-from-parse5": "^8.0.0",
+ "hast-util-to-parse5": "^8.0.0",
+ "html-void-elements": "^3.0.0",
+ "mdast-util-to-hast": "^13.0.0",
+ "parse5": "^7.0.0",
+ "unist-util-position": "^5.0.0",
+ "unist-util-visit": "^5.0.0",
+ "vfile": "^6.0.0",
+ "web-namespaces": "^2.0.0",
+ "zwitch": "^2.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/unified"
+ }
+ },
+ "node_modules/hast-util-to-estree": {
+ "version": "3.1.3",
+ "resolved": "https://registry.npmjs.org/hast-util-to-estree/-/hast-util-to-estree-3.1.3.tgz",
+ "integrity": "sha512-48+B/rJWAp0jamNbAAf9M7Uf//UVqAoMmgXhBdxTDJLGKY+LRnZ99qcG+Qjl5HfMpYNzS5v4EAwVEF34LeAj7w==",
+ "license": "MIT",
+ "dependencies": {
+ "@types/estree": "^1.0.0",
+ "@types/estree-jsx": "^1.0.0",
+ "@types/hast": "^3.0.0",
+ "comma-separated-tokens": "^2.0.0",
+ "devlop": "^1.0.0",
+ "estree-util-attach-comments": "^3.0.0",
+ "estree-util-is-identifier-name": "^3.0.0",
+ "hast-util-whitespace": "^3.0.0",
+ "mdast-util-mdx-expression": "^2.0.0",
+ "mdast-util-mdx-jsx": "^3.0.0",
+ "mdast-util-mdxjs-esm": "^2.0.0",
+ "property-information": "^7.0.0",
+ "space-separated-tokens": "^2.0.0",
+ "style-to-js": "^1.0.0",
+ "unist-util-position": "^5.0.0",
+ "zwitch": "^2.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/unified"
+ }
+ },
+ "node_modules/hast-util-to-html": {
+ "version": "9.0.5",
+ "resolved": "https://registry.npmjs.org/hast-util-to-html/-/hast-util-to-html-9.0.5.tgz",
+ "integrity": "sha512-OguPdidb+fbHQSU4Q4ZiLKnzWo8Wwsf5bZfbvu7//a9oTYoqD/fWpe96NuHkoS9h0ccGOTe0C4NGXdtS0iObOw==",
+ "license": "MIT",
+ "dependencies": {
+ "@types/hast": "^3.0.0",
+ "@types/unist": "^3.0.0",
+ "ccount": "^2.0.0",
+ "comma-separated-tokens": "^2.0.0",
+ "hast-util-whitespace": "^3.0.0",
+ "html-void-elements": "^3.0.0",
+ "mdast-util-to-hast": "^13.0.0",
+ "property-information": "^7.0.0",
+ "space-separated-tokens": "^2.0.0",
+ "stringify-entities": "^4.0.0",
+ "zwitch": "^2.0.4"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/unified"
+ }
+ },
+ "node_modules/hast-util-to-jsx-runtime": {
+ "version": "2.3.6",
+ "resolved": "https://registry.npmjs.org/hast-util-to-jsx-runtime/-/hast-util-to-jsx-runtime-2.3.6.tgz",
+ "integrity": "sha512-zl6s8LwNyo1P9uw+XJGvZtdFF1GdAkOg8ujOw+4Pyb76874fLps4ueHXDhXWdk6YHQ6OgUtinliG7RsYvCbbBg==",
+ "license": "MIT",
+ "dependencies": {
+ "@types/estree": "^1.0.0",
+ "@types/hast": "^3.0.0",
+ "@types/unist": "^3.0.0",
+ "comma-separated-tokens": "^2.0.0",
+ "devlop": "^1.0.0",
+ "estree-util-is-identifier-name": "^3.0.0",
+ "hast-util-whitespace": "^3.0.0",
+ "mdast-util-mdx-expression": "^2.0.0",
+ "mdast-util-mdx-jsx": "^3.0.0",
+ "mdast-util-mdxjs-esm": "^2.0.0",
+ "property-information": "^7.0.0",
+ "space-separated-tokens": "^2.0.0",
+ "style-to-js": "^1.0.0",
+ "unist-util-position": "^5.0.0",
+ "vfile-message": "^4.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/unified"
+ }
+ },
+ "node_modules/hast-util-to-parse5": {
+ "version": "8.0.0",
+ "resolved": "https://registry.npmjs.org/hast-util-to-parse5/-/hast-util-to-parse5-8.0.0.tgz",
+ "integrity": "sha512-3KKrV5ZVI8if87DVSi1vDeByYrkGzg4mEfeu4alwgmmIeARiBLKCZS2uw5Gb6nU9x9Yufyj3iudm6i7nl52PFw==",
+ "license": "MIT",
+ "dependencies": {
+ "@types/hast": "^3.0.0",
+ "comma-separated-tokens": "^2.0.0",
+ "devlop": "^1.0.0",
+ "property-information": "^6.0.0",
+ "space-separated-tokens": "^2.0.0",
+ "web-namespaces": "^2.0.0",
+ "zwitch": "^2.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/unified"
+ }
+ },
+ "node_modules/hast-util-to-parse5/node_modules/property-information": {
+ "version": "6.5.0",
+ "resolved": "https://registry.npmjs.org/property-information/-/property-information-6.5.0.tgz",
+ "integrity": "sha512-PgTgs/BlvHxOu8QuEN7wi5A0OmXaBcHpmCSTehcs6Uuu9IkDIEo13Hy7n898RHfrQ49vKCoGeWZSaAK01nwVig==",
+ "license": "MIT",
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/wooorm"
+ }
+ },
+ "node_modules/hast-util-to-text": {
+ "version": "4.0.2",
+ "resolved": "https://registry.npmjs.org/hast-util-to-text/-/hast-util-to-text-4.0.2.tgz",
+ "integrity": "sha512-KK6y/BN8lbaq654j7JgBydev7wuNMcID54lkRav1P0CaE1e47P72AWWPiGKXTJU271ooYzcvTAn/Zt0REnvc7A==",
+ "dependencies": {
+ "@types/hast": "^3.0.0",
+ "@types/unist": "^3.0.0",
+ "hast-util-is-element": "^3.0.0",
+ "unist-util-find-after": "^5.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/unified"
+ }
+ },
+ "node_modules/hast-util-whitespace": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/hast-util-whitespace/-/hast-util-whitespace-3.0.0.tgz",
+ "integrity": "sha512-88JUN06ipLwsnv+dVn+OIYOvAuvBMy/Qoi6O7mQHxdPXpjy+Cd6xRkWwux7DKO+4sYILtLBRIKgsdpS2gQc7qw==",
+ "license": "MIT",
+ "dependencies": {
+ "@types/hast": "^3.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/unified"
+ }
+ },
+ "node_modules/hastscript": {
+ "version": "9.0.1",
+ "resolved": "https://registry.npmjs.org/hastscript/-/hastscript-9.0.1.tgz",
+ "integrity": "sha512-g7df9rMFX/SPi34tyGCyUBREQoKkapwdY/T04Qn9TDWfHhAYt4/I0gMVirzK5wEzeUqIjEB+LXC/ypb7Aqno5w==",
+ "license": "MIT",
+ "dependencies": {
+ "@types/hast": "^3.0.0",
+ "comma-separated-tokens": "^2.0.0",
+ "hast-util-parse-selector": "^4.0.0",
+ "property-information": "^7.0.0",
+ "space-separated-tokens": "^2.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/unified"
+ }
+ },
+ "node_modules/html-escaper": {
+ "version": "3.0.3",
+ "resolved": "https://registry.npmjs.org/html-escaper/-/html-escaper-3.0.3.tgz",
+ "integrity": "sha512-RuMffC89BOWQoY0WKGpIhn5gX3iI54O6nRA0yC124NYVtzjmFWBIiFd8M0x+ZdX0P9R4lADg1mgP8C7PxGOWuQ==",
+ "license": "MIT"
+ },
+ "node_modules/html-void-elements": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/html-void-elements/-/html-void-elements-3.0.0.tgz",
+ "integrity": "sha512-bEqo66MRXsUGxWHV5IP0PUiAWwoEjba4VCzg0LjFJBpchPaTfyfCKTG6bc5F8ucKec3q5y6qOdGyYTSBEvhCrg==",
+ "license": "MIT",
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/wooorm"
+ }
+ },
+ "node_modules/http-cache-semantics": {
+ "version": "4.2.0",
+ "resolved": "https://registry.npmjs.org/http-cache-semantics/-/http-cache-semantics-4.2.0.tgz",
+ "integrity": "sha512-dTxcvPXqPvXBQpq5dUr6mEMJX4oIEFv6bwom3FDwKRDsuIjjJGANqhBuoAn9c1RQJIdAKav33ED65E2ys+87QQ==",
+ "license": "BSD-2-Clause"
+ },
+ "node_modules/https-proxy-agent": {
+ "version": "7.0.6",
+ "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-7.0.6.tgz",
+ "integrity": "sha512-vK9P5/iUfdl95AI+JVyUuIcVtd4ofvtrOr3HNtM2yxC9bnMbEdp3x01OhQNnjb8IJYi38VlTE3mBXwcfvywuSw==",
+ "license": "MIT",
+ "dependencies": {
+ "agent-base": "^7.1.2",
+ "debug": "4"
+ },
+ "engines": {
+ "node": ">= 14"
+ }
+ },
+ "node_modules/import-meta-resolve": {
+ "version": "4.2.0",
+ "resolved": "https://registry.npmjs.org/import-meta-resolve/-/import-meta-resolve-4.2.0.tgz",
+ "integrity": "sha512-Iqv2fzaTQN28s/FwZAoFq0ZSs/7hMAHJVX+w8PZl3cY19Pxk6jFFalxQoIfW2826i/fDLXv8IiEZRIT0lDuWcg==",
+ "license": "MIT",
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/wooorm"
+ }
+ },
+ "node_modules/inline-style-parser": {
+ "version": "0.2.4",
+ "resolved": "https://registry.npmjs.org/inline-style-parser/-/inline-style-parser-0.2.4.tgz",
+ "integrity": "sha512-0aO8FkhNZlj/ZIbNi7Lxxr12obT7cL1moPfE4tg1LkX7LlLfC6DeX4l2ZEud1ukP9jNQyNnfzQVqwbwmAATY4Q==",
+ "license": "MIT"
+ },
+ "node_modules/iron-webcrypto": {
+ "version": "1.2.1",
+ "resolved": "https://registry.npmjs.org/iron-webcrypto/-/iron-webcrypto-1.2.1.tgz",
+ "integrity": "sha512-feOM6FaSr6rEABp/eDfVseKyTMDt+KGpeB35SkVn9Tyn0CqvVsY3EwI0v5i8nMHyJnzCIQf7nsy3p41TPkJZhg==",
+ "license": "MIT",
+ "funding": {
+ "url": "https://github.com/sponsors/brc-dd"
+ }
+ },
+ "node_modules/is-alphabetical": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/is-alphabetical/-/is-alphabetical-2.0.1.tgz",
+ "integrity": "sha512-FWyyY60MeTNyeSRpkM2Iry0G9hpr7/9kD40mD/cGQEuilcZYS4okz8SN2Q6rLCJ8gbCt6fN+rC+6tMGS99LaxQ==",
+ "license": "MIT",
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/wooorm"
+ }
+ },
+ "node_modules/is-alphanumerical": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/is-alphanumerical/-/is-alphanumerical-2.0.1.tgz",
+ "integrity": "sha512-hmbYhX/9MUMF5uh7tOXyK/n0ZvWpad5caBA17GsC6vyuCqaWliRG5K1qS9inmUhEMaOBIW7/whAnSwveW/LtZw==",
+ "license": "MIT",
+ "dependencies": {
+ "is-alphabetical": "^2.0.0",
+ "is-decimal": "^2.0.0"
+ },
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/wooorm"
+ }
+ },
+ "node_modules/is-arrayish": {
+ "version": "0.3.2",
+ "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.3.2.tgz",
+ "integrity": "sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ==",
+ "license": "MIT",
+ "optional": true
+ },
+ "node_modules/is-decimal": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/is-decimal/-/is-decimal-2.0.1.tgz",
+ "integrity": "sha512-AAB9hiomQs5DXWcRB1rqsxGUstbRroFOPPVAomNk/3XHR5JyEZChOyTWe2oayKnsSsr/kcGqF+z6yuH6HHpN0A==",
+ "license": "MIT",
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/wooorm"
+ }
+ },
+ "node_modules/is-docker": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-3.0.0.tgz",
+ "integrity": "sha512-eljcgEDlEns/7AXFosB5K/2nCM4P7FQPkGc/DWLy5rmFEWvZayGrik1d9/QIY5nJ4f9YsVvBkA6kJpHn9rISdQ==",
+ "license": "MIT",
+ "bin": {
+ "is-docker": "cli.js"
+ },
+ "engines": {
+ "node": "^12.20.0 || ^14.13.1 || >=16.0.0"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/is-fullwidth-code-point": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz",
+ "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/is-hexadecimal": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/is-hexadecimal/-/is-hexadecimal-2.0.1.tgz",
+ "integrity": "sha512-DgZQp241c8oO6cA1SbTEWiXeoxV42vlcJxgH+B3hi1AiqqKruZR3ZGF8In3fj4+/y/7rHvlOZLZtgJ/4ttYGZg==",
+ "license": "MIT",
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/wooorm"
+ }
+ },
+ "node_modules/is-inside-container": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/is-inside-container/-/is-inside-container-1.0.0.tgz",
+ "integrity": "sha512-KIYLCCJghfHZxqjYBE7rEy0OBuTd5xCHS7tHVgvCLkx7StIoaxwNW3hCALgEUjFfeRk+MG/Qxmp/vtETEF3tRA==",
+ "license": "MIT",
+ "dependencies": {
+ "is-docker": "^3.0.0"
+ },
+ "bin": {
+ "is-inside-container": "cli.js"
+ },
+ "engines": {
+ "node": ">=14.16"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/is-plain-obj": {
+ "version": "4.1.0",
+ "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-4.1.0.tgz",
+ "integrity": "sha512-+Pgi+vMuUNkJyExiMBt5IlFoMyKnr5zhJ4Uspz58WOhBF5QoIZkFyNHIbBAtHwzVAgk5RtndVNsDRN61/mmDqg==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/is-wsl": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-3.1.0.tgz",
+ "integrity": "sha512-UcVfVfaK4Sc4m7X3dUSoHoozQGBEFeDC+zVo06t98xe8CzHSZZBekNXH+tu0NalHolcJ/QAGqS46Hef7QXBIMw==",
+ "license": "MIT",
+ "dependencies": {
+ "is-inside-container": "^1.0.0"
+ },
+ "engines": {
+ "node": ">=16"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/isexe": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz",
+ "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==",
+ "license": "ISC"
+ },
+ "node_modules/jackspeak": {
+ "version": "3.4.3",
+ "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-3.4.3.tgz",
+ "integrity": "sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw==",
+ "license": "BlueOak-1.0.0",
+ "dependencies": {
+ "@isaacs/cliui": "^8.0.2"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/isaacs"
+ },
+ "optionalDependencies": {
+ "@pkgjs/parseargs": "^0.11.0"
+ }
+ },
+ "node_modules/jiti": {
+ "version": "2.4.2",
+ "resolved": "https://registry.npmjs.org/jiti/-/jiti-2.4.2.tgz",
+ "integrity": "sha512-rg9zJN+G4n2nfJl5MW3BMygZX56zKPNVEYYqq7adpmMh4Jn2QNEwhvQlFy6jPVdcod7txZtKHWnyZiA3a0zP7A==",
+ "license": "MIT",
+ "bin": {
+ "jiti": "lib/jiti-cli.mjs"
+ }
+ },
+ "node_modules/js-yaml": {
+ "version": "4.1.1",
+ "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.1.tgz",
+ "integrity": "sha512-qQKT4zQxXl8lLwBtHMWwaTcGfFOZviOJet3Oy/xmGk2gZH677CJM9EvtfdSkgWcATZhj/55JZ0rmy3myCT5lsA==",
+ "license": "MIT",
+ "dependencies": {
+ "argparse": "^2.0.1"
+ },
+ "bin": {
+ "js-yaml": "bin/js-yaml.js"
+ }
+ },
+ "node_modules/kleur": {
+ "version": "4.1.5",
+ "resolved": "https://registry.npmjs.org/kleur/-/kleur-4.1.5.tgz",
+ "integrity": "sha512-o+NO+8WrRiQEE4/7nwRJhN1HWpVmJm511pBHUxPLtp0BUISzlBplORYSmTclCnJvQq2tKu/sgl3xVpkc7ZWuQQ==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/lightningcss": {
+ "version": "1.29.2",
+ "resolved": "https://registry.npmjs.org/lightningcss/-/lightningcss-1.29.2.tgz",
+ "integrity": "sha512-6b6gd/RUXKaw5keVdSEtqFVdzWnU5jMxTUjA2bVcMNPLwSQ08Sv/UodBVtETLCn7k4S1Ibxwh7k68IwLZPgKaA==",
+ "license": "MPL-2.0",
+ "dependencies": {
+ "detect-libc": "^2.0.3"
+ },
+ "engines": {
+ "node": ">= 12.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/parcel"
+ },
+ "optionalDependencies": {
+ "lightningcss-darwin-arm64": "1.29.2",
+ "lightningcss-darwin-x64": "1.29.2",
+ "lightningcss-freebsd-x64": "1.29.2",
+ "lightningcss-linux-arm-gnueabihf": "1.29.2",
+ "lightningcss-linux-arm64-gnu": "1.29.2",
+ "lightningcss-linux-arm64-musl": "1.29.2",
+ "lightningcss-linux-x64-gnu": "1.29.2",
+ "lightningcss-linux-x64-musl": "1.29.2",
+ "lightningcss-win32-arm64-msvc": "1.29.2",
+ "lightningcss-win32-x64-msvc": "1.29.2"
+ }
+ },
+ "node_modules/lightningcss-darwin-arm64": {
+ "version": "1.29.2",
+ "resolved": "https://registry.npmjs.org/lightningcss-darwin-arm64/-/lightningcss-darwin-arm64-1.29.2.tgz",
+ "integrity": "sha512-cK/eMabSViKn/PG8U/a7aCorpeKLMlK0bQeNHmdb7qUnBkNPnL+oV5DjJUo0kqWsJUapZsM4jCfYItbqBDvlcA==",
+ "cpu": [
+ "arm64"
+ ],
+ "license": "MPL-2.0",
+ "optional": true,
+ "os": [
+ "darwin"
+ ],
+ "engines": {
+ "node": ">= 12.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/parcel"
+ }
+ },
+ "node_modules/lightningcss-darwin-x64": {
+ "version": "1.29.2",
+ "resolved": "https://registry.npmjs.org/lightningcss-darwin-x64/-/lightningcss-darwin-x64-1.29.2.tgz",
+ "integrity": "sha512-j5qYxamyQw4kDXX5hnnCKMf3mLlHvG44f24Qyi2965/Ycz829MYqjrVg2H8BidybHBp9kom4D7DR5VqCKDXS0w==",
+ "cpu": [
+ "x64"
+ ],
+ "license": "MPL-2.0",
+ "optional": true,
+ "os": [
+ "darwin"
+ ],
+ "engines": {
+ "node": ">= 12.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/parcel"
+ }
+ },
+ "node_modules/lightningcss-freebsd-x64": {
+ "version": "1.29.2",
+ "resolved": "https://registry.npmjs.org/lightningcss-freebsd-x64/-/lightningcss-freebsd-x64-1.29.2.tgz",
+ "integrity": "sha512-wDk7M2tM78Ii8ek9YjnY8MjV5f5JN2qNVO+/0BAGZRvXKtQrBC4/cn4ssQIpKIPP44YXw6gFdpUF+Ps+RGsCwg==",
+ "cpu": [
+ "x64"
+ ],
+ "license": "MPL-2.0",
+ "optional": true,
+ "os": [
+ "freebsd"
+ ],
+ "engines": {
+ "node": ">= 12.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/parcel"
+ }
+ },
+ "node_modules/lightningcss-linux-arm-gnueabihf": {
+ "version": "1.29.2",
+ "resolved": "https://registry.npmjs.org/lightningcss-linux-arm-gnueabihf/-/lightningcss-linux-arm-gnueabihf-1.29.2.tgz",
+ "integrity": "sha512-IRUrOrAF2Z+KExdExe3Rz7NSTuuJ2HvCGlMKoquK5pjvo2JY4Rybr+NrKnq0U0hZnx5AnGsuFHjGnNT14w26sg==",
+ "cpu": [
+ "arm"
+ ],
+ "license": "MPL-2.0",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">= 12.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/parcel"
+ }
+ },
+ "node_modules/lightningcss-linux-arm64-gnu": {
+ "version": "1.29.2",
+ "resolved": "https://registry.npmjs.org/lightningcss-linux-arm64-gnu/-/lightningcss-linux-arm64-gnu-1.29.2.tgz",
+ "integrity": "sha512-KKCpOlmhdjvUTX/mBuaKemp0oeDIBBLFiU5Fnqxh1/DZ4JPZi4evEH7TKoSBFOSOV3J7iEmmBaw/8dpiUvRKlQ==",
+ "cpu": [
+ "arm64"
+ ],
+ "license": "MPL-2.0",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">= 12.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/parcel"
+ }
+ },
+ "node_modules/lightningcss-linux-arm64-musl": {
+ "version": "1.29.2",
+ "resolved": "https://registry.npmjs.org/lightningcss-linux-arm64-musl/-/lightningcss-linux-arm64-musl-1.29.2.tgz",
+ "integrity": "sha512-Q64eM1bPlOOUgxFmoPUefqzY1yV3ctFPE6d/Vt7WzLW4rKTv7MyYNky+FWxRpLkNASTnKQUaiMJ87zNODIrrKQ==",
+ "cpu": [
+ "arm64"
+ ],
+ "license": "MPL-2.0",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">= 12.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/parcel"
+ }
+ },
+ "node_modules/lightningcss-linux-x64-gnu": {
+ "version": "1.29.2",
+ "resolved": "https://registry.npmjs.org/lightningcss-linux-x64-gnu/-/lightningcss-linux-x64-gnu-1.29.2.tgz",
+ "integrity": "sha512-0v6idDCPG6epLXtBH/RPkHvYx74CVziHo6TMYga8O2EiQApnUPZsbR9nFNrg2cgBzk1AYqEd95TlrsL7nYABQg==",
+ "cpu": [
+ "x64"
+ ],
+ "license": "MPL-2.0",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">= 12.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/parcel"
+ }
+ },
+ "node_modules/lightningcss-linux-x64-musl": {
+ "version": "1.29.2",
+ "resolved": "https://registry.npmjs.org/lightningcss-linux-x64-musl/-/lightningcss-linux-x64-musl-1.29.2.tgz",
+ "integrity": "sha512-rMpz2yawkgGT8RULc5S4WiZopVMOFWjiItBT7aSfDX4NQav6M44rhn5hjtkKzB+wMTRlLLqxkeYEtQ3dd9696w==",
+ "cpu": [
+ "x64"
+ ],
+ "license": "MPL-2.0",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">= 12.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/parcel"
+ }
+ },
+ "node_modules/lightningcss-win32-arm64-msvc": {
+ "version": "1.29.2",
+ "resolved": "https://registry.npmjs.org/lightningcss-win32-arm64-msvc/-/lightningcss-win32-arm64-msvc-1.29.2.tgz",
+ "integrity": "sha512-nL7zRW6evGQqYVu/bKGK+zShyz8OVzsCotFgc7judbt6wnB2KbiKKJwBE4SGoDBQ1O94RjW4asrCjQL4i8Fhbw==",
+ "cpu": [
+ "arm64"
+ ],
+ "license": "MPL-2.0",
+ "optional": true,
+ "os": [
+ "win32"
+ ],
+ "engines": {
+ "node": ">= 12.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/parcel"
+ }
+ },
+ "node_modules/lightningcss-win32-x64-msvc": {
+ "version": "1.29.2",
+ "resolved": "https://registry.npmjs.org/lightningcss-win32-x64-msvc/-/lightningcss-win32-x64-msvc-1.29.2.tgz",
+ "integrity": "sha512-EdIUW3B2vLuHmv7urfzMI/h2fmlnOQBk1xlsDxkN1tCWKjNFjfLhGxYk8C8mzpSfr+A6jFFIi8fU6LbQGsRWjA==",
+ "cpu": [
+ "x64"
+ ],
+ "license": "MPL-2.0",
+ "optional": true,
+ "os": [
+ "win32"
+ ],
+ "engines": {
+ "node": ">= 12.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/parcel"
+ }
+ },
+ "node_modules/lodash.castarray": {
+ "version": "4.4.0",
+ "resolved": "https://registry.npmjs.org/lodash.castarray/-/lodash.castarray-4.4.0.tgz",
+ "integrity": "sha512-aVx8ztPv7/2ULbArGJ2Y42bG1mEQ5mGjpdvrbJcJFU3TbYybe+QlLS4pst9zV52ymy2in1KpFPiZnAOATxD4+Q==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/lodash.isplainobject": {
+ "version": "4.0.6",
+ "resolved": "https://registry.npmjs.org/lodash.isplainobject/-/lodash.isplainobject-4.0.6.tgz",
+ "integrity": "sha512-oSXzaWypCMHkPC3NvBEaPHf0KsA5mvPrOPgQWDsbg8n7orZ290M0BmC/jgRZ4vcJ6DTAhjrsSYgdsW/F+MFOBA==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/lodash.merge": {
+ "version": "4.6.2",
+ "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz",
+ "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/longest-streak": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/longest-streak/-/longest-streak-3.1.0.tgz",
+ "integrity": "sha512-9Ri+o0JYgehTaVBBDoMqIl8GXtbWg711O3srftcHhZ0dqnETqLaoIK0x17fUw9rFSlK/0NlsKe0Ahhyl5pXE2g==",
+ "license": "MIT",
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/wooorm"
+ }
+ },
+ "node_modules/lru-cache": {
+ "version": "10.4.3",
+ "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.4.3.tgz",
+ "integrity": "sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==",
+ "license": "ISC"
+ },
+ "node_modules/magic-string": {
+ "version": "0.30.21",
+ "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.21.tgz",
+ "integrity": "sha512-vd2F4YUyEXKGcLHoq+TEyCjxueSeHnFxyyjNp80yg0XV4vUhnDer/lvvlqM/arB5bXQN5K2/3oinyCRyx8T2CQ==",
+ "license": "MIT",
+ "dependencies": {
+ "@jridgewell/sourcemap-codec": "^1.5.5"
+ }
+ },
+ "node_modules/magicast": {
+ "version": "0.5.2",
+ "resolved": "https://registry.npmjs.org/magicast/-/magicast-0.5.2.tgz",
+ "integrity": "sha512-E3ZJh4J3S9KfwdjZhe2afj6R9lGIN5Pher1pF39UGrXRqq/VDaGVIGN13BjHd2u8B61hArAGOnso7nBOouW3TQ==",
+ "license": "MIT",
+ "dependencies": {
+ "@babel/parser": "^7.29.0",
+ "@babel/types": "^7.29.0",
+ "source-map-js": "^1.2.1"
+ }
+ },
+ "node_modules/markdown-extensions": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/markdown-extensions/-/markdown-extensions-2.0.0.tgz",
+ "integrity": "sha512-o5vL7aDWatOTX8LzaS1WMoaoxIiLRQJuIKKe2wAw6IeULDHaqbiqiggmx+pKvZDb1Sj+pE46Sn1T7lCqfFtg1Q==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=16"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/markdown-table": {
+ "version": "3.0.4",
+ "resolved": "https://registry.npmjs.org/markdown-table/-/markdown-table-3.0.4.tgz",
+ "integrity": "sha512-wiYz4+JrLyb/DqW2hkFJxP7Vd7JuTDm77fvbM8VfEQdmSMqcImWeeRbHwZjBjIFki/VaMK2BhFi7oUUZeM5bqw==",
+ "license": "MIT",
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/wooorm"
+ }
+ },
+ "node_modules/mdast-util-definitions": {
+ "version": "6.0.0",
+ "resolved": "https://registry.npmjs.org/mdast-util-definitions/-/mdast-util-definitions-6.0.0.tgz",
+ "integrity": "sha512-scTllyX6pnYNZH/AIp/0ePz6s4cZtARxImwoPJ7kS42n+MnVsI4XbnG6d4ibehRIldYMWM2LD7ImQblVhUejVQ==",
+ "dependencies": {
+ "@types/mdast": "^4.0.0",
+ "@types/unist": "^3.0.0",
+ "unist-util-visit": "^5.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/unified"
+ }
+ },
+ "node_modules/mdast-util-find-and-replace": {
+ "version": "3.0.2",
+ "resolved": "https://registry.npmjs.org/mdast-util-find-and-replace/-/mdast-util-find-and-replace-3.0.2.tgz",
+ "integrity": "sha512-Tmd1Vg/m3Xz43afeNxDIhWRtFZgM2VLyaf4vSTYwudTyeuTneoL3qtWMA5jeLyz/O1vDJmmV4QuScFCA2tBPwg==",
+ "license": "MIT",
+ "dependencies": {
+ "@types/mdast": "^4.0.0",
+ "escape-string-regexp": "^5.0.0",
+ "unist-util-is": "^6.0.0",
+ "unist-util-visit-parents": "^6.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/unified"
+ }
+ },
+ "node_modules/mdast-util-from-markdown": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/mdast-util-from-markdown/-/mdast-util-from-markdown-2.0.2.tgz",
+ "integrity": "sha512-uZhTV/8NBuw0WHkPTrCqDOl0zVe1BIng5ZtHoDk49ME1qqcjYmmLmOf0gELgcRMxN4w2iuIeVso5/6QymSrgmA==",
+ "license": "MIT",
+ "dependencies": {
+ "@types/mdast": "^4.0.0",
+ "@types/unist": "^3.0.0",
+ "decode-named-character-reference": "^1.0.0",
+ "devlop": "^1.0.0",
+ "mdast-util-to-string": "^4.0.0",
+ "micromark": "^4.0.0",
+ "micromark-util-decode-numeric-character-reference": "^2.0.0",
+ "micromark-util-decode-string": "^2.0.0",
+ "micromark-util-normalize-identifier": "^2.0.0",
+ "micromark-util-symbol": "^2.0.0",
+ "micromark-util-types": "^2.0.0",
+ "unist-util-stringify-position": "^4.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/unified"
+ }
+ },
+ "node_modules/mdast-util-gfm": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/mdast-util-gfm/-/mdast-util-gfm-3.1.0.tgz",
+ "integrity": "sha512-0ulfdQOM3ysHhCJ1p06l0b0VKlhU0wuQs3thxZQagjcjPrlFRqY215uZGHHJan9GEAXd9MbfPjFJz+qMkVR6zQ==",
+ "license": "MIT",
+ "dependencies": {
+ "mdast-util-from-markdown": "^2.0.0",
+ "mdast-util-gfm-autolink-literal": "^2.0.0",
+ "mdast-util-gfm-footnote": "^2.0.0",
+ "mdast-util-gfm-strikethrough": "^2.0.0",
+ "mdast-util-gfm-table": "^2.0.0",
+ "mdast-util-gfm-task-list-item": "^2.0.0",
+ "mdast-util-to-markdown": "^2.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/unified"
+ }
+ },
+ "node_modules/mdast-util-gfm-autolink-literal": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/mdast-util-gfm-autolink-literal/-/mdast-util-gfm-autolink-literal-2.0.1.tgz",
+ "integrity": "sha512-5HVP2MKaP6L+G6YaxPNjuL0BPrq9orG3TsrZ9YXbA3vDw/ACI4MEsnoDpn6ZNm7GnZgtAcONJyPhOP8tNJQavQ==",
+ "license": "MIT",
+ "dependencies": {
+ "@types/mdast": "^4.0.0",
+ "ccount": "^2.0.0",
+ "devlop": "^1.0.0",
+ "mdast-util-find-and-replace": "^3.0.0",
+ "micromark-util-character": "^2.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/unified"
+ }
+ },
+ "node_modules/mdast-util-gfm-footnote": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/mdast-util-gfm-footnote/-/mdast-util-gfm-footnote-2.1.0.tgz",
+ "integrity": "sha512-sqpDWlsHn7Ac9GNZQMeUzPQSMzR6Wv0WKRNvQRg0KqHh02fpTz69Qc1QSseNX29bhz1ROIyNyxExfawVKTm1GQ==",
+ "license": "MIT",
+ "dependencies": {
+ "@types/mdast": "^4.0.0",
+ "devlop": "^1.1.0",
+ "mdast-util-from-markdown": "^2.0.0",
+ "mdast-util-to-markdown": "^2.0.0",
+ "micromark-util-normalize-identifier": "^2.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/unified"
+ }
+ },
+ "node_modules/mdast-util-gfm-strikethrough": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/mdast-util-gfm-strikethrough/-/mdast-util-gfm-strikethrough-2.0.0.tgz",
+ "integrity": "sha512-mKKb915TF+OC5ptj5bJ7WFRPdYtuHv0yTRxK2tJvi+BDqbkiG7h7u/9SI89nRAYcmap2xHQL9D+QG/6wSrTtXg==",
+ "license": "MIT",
+ "dependencies": {
+ "@types/mdast": "^4.0.0",
+ "mdast-util-from-markdown": "^2.0.0",
+ "mdast-util-to-markdown": "^2.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/unified"
+ }
+ },
+ "node_modules/mdast-util-gfm-table": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/mdast-util-gfm-table/-/mdast-util-gfm-table-2.0.0.tgz",
+ "integrity": "sha512-78UEvebzz/rJIxLvE7ZtDd/vIQ0RHv+3Mh5DR96p7cS7HsBhYIICDBCu8csTNWNO6tBWfqXPWekRuj2FNOGOZg==",
+ "license": "MIT",
+ "dependencies": {
+ "@types/mdast": "^4.0.0",
+ "devlop": "^1.0.0",
+ "markdown-table": "^3.0.0",
+ "mdast-util-from-markdown": "^2.0.0",
+ "mdast-util-to-markdown": "^2.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/unified"
+ }
+ },
+ "node_modules/mdast-util-gfm-task-list-item": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/mdast-util-gfm-task-list-item/-/mdast-util-gfm-task-list-item-2.0.0.tgz",
+ "integrity": "sha512-IrtvNvjxC1o06taBAVJznEnkiHxLFTzgonUdy8hzFVeDun0uTjxxrRGVaNFqkU1wJR3RBPEfsxmU6jDWPofrTQ==",
+ "license": "MIT",
+ "dependencies": {
+ "@types/mdast": "^4.0.0",
+ "devlop": "^1.0.0",
+ "mdast-util-from-markdown": "^2.0.0",
+ "mdast-util-to-markdown": "^2.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/unified"
+ }
+ },
+ "node_modules/mdast-util-mdx": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/mdast-util-mdx/-/mdast-util-mdx-3.0.0.tgz",
+ "integrity": "sha512-JfbYLAW7XnYTTbUsmpu0kdBUVe+yKVJZBItEjwyYJiDJuZ9w4eeaqks4HQO+R7objWgS2ymV60GYpI14Ug554w==",
+ "license": "MIT",
+ "dependencies": {
+ "mdast-util-from-markdown": "^2.0.0",
+ "mdast-util-mdx-expression": "^2.0.0",
+ "mdast-util-mdx-jsx": "^3.0.0",
+ "mdast-util-mdxjs-esm": "^2.0.0",
+ "mdast-util-to-markdown": "^2.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/unified"
+ }
+ },
+ "node_modules/mdast-util-mdx-expression": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/mdast-util-mdx-expression/-/mdast-util-mdx-expression-2.0.1.tgz",
+ "integrity": "sha512-J6f+9hUp+ldTZqKRSg7Vw5V6MqjATc+3E4gf3CFNcuZNWD8XdyI6zQ8GqH7f8169MM6P7hMBRDVGnn7oHB9kXQ==",
+ "license": "MIT",
+ "dependencies": {
+ "@types/estree-jsx": "^1.0.0",
+ "@types/hast": "^3.0.0",
+ "@types/mdast": "^4.0.0",
+ "devlop": "^1.0.0",
+ "mdast-util-from-markdown": "^2.0.0",
+ "mdast-util-to-markdown": "^2.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/unified"
+ }
+ },
+ "node_modules/mdast-util-mdx-jsx": {
+ "version": "3.2.0",
+ "resolved": "https://registry.npmjs.org/mdast-util-mdx-jsx/-/mdast-util-mdx-jsx-3.2.0.tgz",
+ "integrity": "sha512-lj/z8v0r6ZtsN/cGNNtemmmfoLAFZnjMbNyLzBafjzikOM+glrjNHPlf6lQDOTccj9n5b0PPihEBbhneMyGs1Q==",
+ "license": "MIT",
+ "dependencies": {
+ "@types/estree-jsx": "^1.0.0",
+ "@types/hast": "^3.0.0",
+ "@types/mdast": "^4.0.0",
+ "@types/unist": "^3.0.0",
+ "ccount": "^2.0.0",
+ "devlop": "^1.1.0",
+ "mdast-util-from-markdown": "^2.0.0",
+ "mdast-util-to-markdown": "^2.0.0",
+ "parse-entities": "^4.0.0",
+ "stringify-entities": "^4.0.0",
+ "unist-util-stringify-position": "^4.0.0",
+ "vfile-message": "^4.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/unified"
+ }
+ },
+ "node_modules/mdast-util-mdxjs-esm": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/mdast-util-mdxjs-esm/-/mdast-util-mdxjs-esm-2.0.1.tgz",
+ "integrity": "sha512-EcmOpxsZ96CvlP03NghtH1EsLtr0n9Tm4lPUJUBccV9RwUOneqSycg19n5HGzCf+10LozMRSObtVr3ee1WoHtg==",
+ "license": "MIT",
+ "dependencies": {
+ "@types/estree-jsx": "^1.0.0",
+ "@types/hast": "^3.0.0",
+ "@types/mdast": "^4.0.0",
+ "devlop": "^1.0.0",
+ "mdast-util-from-markdown": "^2.0.0",
+ "mdast-util-to-markdown": "^2.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/unified"
+ }
+ },
+ "node_modules/mdast-util-phrasing": {
+ "version": "4.1.0",
+ "resolved": "https://registry.npmjs.org/mdast-util-phrasing/-/mdast-util-phrasing-4.1.0.tgz",
+ "integrity": "sha512-TqICwyvJJpBwvGAMZjj4J2n0X8QWp21b9l0o7eXyVJ25YNWYbJDVIyD1bZXE6WtV6RmKJVYmQAKWa0zWOABz2w==",
+ "license": "MIT",
+ "dependencies": {
+ "@types/mdast": "^4.0.0",
+ "unist-util-is": "^6.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/unified"
+ }
+ },
+ "node_modules/mdast-util-to-hast": {
+ "version": "13.2.1",
+ "resolved": "https://registry.npmjs.org/mdast-util-to-hast/-/mdast-util-to-hast-13.2.1.tgz",
+ "integrity": "sha512-cctsq2wp5vTsLIcaymblUriiTcZd0CwWtCbLvrOzYCDZoWyMNV8sZ7krj09FSnsiJi3WVsHLM4k6Dq/yaPyCXA==",
+ "license": "MIT",
+ "dependencies": {
+ "@types/hast": "^3.0.0",
+ "@types/mdast": "^4.0.0",
+ "@ungap/structured-clone": "^1.0.0",
+ "devlop": "^1.0.0",
+ "micromark-util-sanitize-uri": "^2.0.0",
+ "trim-lines": "^3.0.0",
+ "unist-util-position": "^5.0.0",
+ "unist-util-visit": "^5.0.0",
+ "vfile": "^6.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/unified"
+ }
+ },
+ "node_modules/mdast-util-to-markdown": {
+ "version": "2.1.2",
+ "resolved": "https://registry.npmjs.org/mdast-util-to-markdown/-/mdast-util-to-markdown-2.1.2.tgz",
+ "integrity": "sha512-xj68wMTvGXVOKonmog6LwyJKrYXZPvlwabaryTjLh9LuvovB/KAH+kvi8Gjj+7rJjsFi23nkUxRQv1KqSroMqA==",
+ "license": "MIT",
+ "dependencies": {
+ "@types/mdast": "^4.0.0",
+ "@types/unist": "^3.0.0",
+ "longest-streak": "^3.0.0",
+ "mdast-util-phrasing": "^4.0.0",
+ "mdast-util-to-string": "^4.0.0",
+ "micromark-util-classify-character": "^2.0.0",
+ "micromark-util-decode-string": "^2.0.0",
+ "unist-util-visit": "^5.0.0",
+ "zwitch": "^2.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/unified"
+ }
+ },
+ "node_modules/mdast-util-to-string": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/mdast-util-to-string/-/mdast-util-to-string-4.0.0.tgz",
+ "integrity": "sha512-0H44vDimn51F0YwvxSJSm0eCDOJTRlmN0R1yBh4HLj9wiV1Dn0QoXGbvFAWj2hSItVTlCmBF1hqKlIyUBVFLPg==",
+ "license": "MIT",
+ "dependencies": {
+ "@types/mdast": "^4.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/unified"
+ }
+ },
+ "node_modules/mdn-data": {
+ "version": "2.27.1",
+ "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.27.1.tgz",
+ "integrity": "sha512-9Yubnt3e8A0OKwxYSXyhLymGW4sCufcLG6VdiDdUGVkPhpqLxlvP5vl1983gQjJl3tqbrM731mjaZaP68AgosQ==",
+ "license": "CC0-1.0"
+ },
+ "node_modules/micromark": {
+ "version": "4.0.2",
+ "resolved": "https://registry.npmjs.org/micromark/-/micromark-4.0.2.tgz",
+ "integrity": "sha512-zpe98Q6kvavpCr1NPVSCMebCKfD7CA2NqZ+rykeNhONIJBpc1tFKt9hucLGwha3jNTNI8lHpctWJWoimVF4PfA==",
+ "funding": [
+ {
+ "type": "GitHub Sponsors",
+ "url": "https://github.com/sponsors/unifiedjs"
+ },
+ {
+ "type": "OpenCollective",
+ "url": "https://opencollective.com/unified"
+ }
+ ],
+ "license": "MIT",
+ "dependencies": {
+ "@types/debug": "^4.0.0",
+ "debug": "^4.0.0",
+ "decode-named-character-reference": "^1.0.0",
+ "devlop": "^1.0.0",
+ "micromark-core-commonmark": "^2.0.0",
+ "micromark-factory-space": "^2.0.0",
+ "micromark-util-character": "^2.0.0",
+ "micromark-util-chunked": "^2.0.0",
+ "micromark-util-combine-extensions": "^2.0.0",
+ "micromark-util-decode-numeric-character-reference": "^2.0.0",
+ "micromark-util-encode": "^2.0.0",
+ "micromark-util-normalize-identifier": "^2.0.0",
+ "micromark-util-resolve-all": "^2.0.0",
+ "micromark-util-sanitize-uri": "^2.0.0",
+ "micromark-util-subtokenize": "^2.0.0",
+ "micromark-util-symbol": "^2.0.0",
+ "micromark-util-types": "^2.0.0"
+ }
+ },
+ "node_modules/micromark-core-commonmark": {
+ "version": "2.0.3",
+ "resolved": "https://registry.npmjs.org/micromark-core-commonmark/-/micromark-core-commonmark-2.0.3.tgz",
+ "integrity": "sha512-RDBrHEMSxVFLg6xvnXmb1Ayr2WzLAWjeSATAoxwKYJV94TeNavgoIdA0a9ytzDSVzBy2YKFK+emCPOEibLeCrg==",
+ "funding": [
+ {
+ "type": "GitHub Sponsors",
+ "url": "https://github.com/sponsors/unifiedjs"
+ },
+ {
+ "type": "OpenCollective",
+ "url": "https://opencollective.com/unified"
+ }
+ ],
+ "license": "MIT",
+ "dependencies": {
+ "decode-named-character-reference": "^1.0.0",
+ "devlop": "^1.0.0",
+ "micromark-factory-destination": "^2.0.0",
+ "micromark-factory-label": "^2.0.0",
+ "micromark-factory-space": "^2.0.0",
+ "micromark-factory-title": "^2.0.0",
+ "micromark-factory-whitespace": "^2.0.0",
+ "micromark-util-character": "^2.0.0",
+ "micromark-util-chunked": "^2.0.0",
+ "micromark-util-classify-character": "^2.0.0",
+ "micromark-util-html-tag-name": "^2.0.0",
+ "micromark-util-normalize-identifier": "^2.0.0",
+ "micromark-util-resolve-all": "^2.0.0",
+ "micromark-util-subtokenize": "^2.0.0",
+ "micromark-util-symbol": "^2.0.0",
+ "micromark-util-types": "^2.0.0"
+ }
+ },
+ "node_modules/micromark-extension-gfm": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/micromark-extension-gfm/-/micromark-extension-gfm-3.0.0.tgz",
+ "integrity": "sha512-vsKArQsicm7t0z2GugkCKtZehqUm31oeGBV/KVSorWSy8ZlNAv7ytjFhvaryUiCUJYqs+NoE6AFhpQvBTM6Q4w==",
+ "license": "MIT",
+ "dependencies": {
+ "micromark-extension-gfm-autolink-literal": "^2.0.0",
+ "micromark-extension-gfm-footnote": "^2.0.0",
+ "micromark-extension-gfm-strikethrough": "^2.0.0",
+ "micromark-extension-gfm-table": "^2.0.0",
+ "micromark-extension-gfm-tagfilter": "^2.0.0",
+ "micromark-extension-gfm-task-list-item": "^2.0.0",
+ "micromark-util-combine-extensions": "^2.0.0",
+ "micromark-util-types": "^2.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/unified"
+ }
+ },
+ "node_modules/micromark-extension-gfm-autolink-literal": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/micromark-extension-gfm-autolink-literal/-/micromark-extension-gfm-autolink-literal-2.1.0.tgz",
+ "integrity": "sha512-oOg7knzhicgQ3t4QCjCWgTmfNhvQbDDnJeVu9v81r7NltNCVmhPy1fJRX27pISafdjL+SVc4d3l48Gb6pbRypw==",
+ "license": "MIT",
+ "dependencies": {
+ "micromark-util-character": "^2.0.0",
+ "micromark-util-sanitize-uri": "^2.0.0",
+ "micromark-util-symbol": "^2.0.0",
+ "micromark-util-types": "^2.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/unified"
+ }
+ },
+ "node_modules/micromark-extension-gfm-footnote": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/micromark-extension-gfm-footnote/-/micromark-extension-gfm-footnote-2.1.0.tgz",
+ "integrity": "sha512-/yPhxI1ntnDNsiHtzLKYnE3vf9JZ6cAisqVDauhp4CEHxlb4uoOTxOCJ+9s51bIB8U1N1FJ1RXOKTIlD5B/gqw==",
+ "license": "MIT",
+ "dependencies": {
+ "devlop": "^1.0.0",
+ "micromark-core-commonmark": "^2.0.0",
+ "micromark-factory-space": "^2.0.0",
+ "micromark-util-character": "^2.0.0",
+ "micromark-util-normalize-identifier": "^2.0.0",
+ "micromark-util-sanitize-uri": "^2.0.0",
+ "micromark-util-symbol": "^2.0.0",
+ "micromark-util-types": "^2.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/unified"
+ }
+ },
+ "node_modules/micromark-extension-gfm-strikethrough": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/micromark-extension-gfm-strikethrough/-/micromark-extension-gfm-strikethrough-2.1.0.tgz",
+ "integrity": "sha512-ADVjpOOkjz1hhkZLlBiYA9cR2Anf8F4HqZUO6e5eDcPQd0Txw5fxLzzxnEkSkfnD0wziSGiv7sYhk/ktvbf1uw==",
+ "license": "MIT",
+ "dependencies": {
+ "devlop": "^1.0.0",
+ "micromark-util-chunked": "^2.0.0",
+ "micromark-util-classify-character": "^2.0.0",
+ "micromark-util-resolve-all": "^2.0.0",
+ "micromark-util-symbol": "^2.0.0",
+ "micromark-util-types": "^2.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/unified"
+ }
+ },
+ "node_modules/micromark-extension-gfm-table": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/micromark-extension-gfm-table/-/micromark-extension-gfm-table-2.1.1.tgz",
+ "integrity": "sha512-t2OU/dXXioARrC6yWfJ4hqB7rct14e8f7m0cbI5hUmDyyIlwv5vEtooptH8INkbLzOatzKuVbQmAYcbWoyz6Dg==",
+ "license": "MIT",
+ "dependencies": {
+ "devlop": "^1.0.0",
+ "micromark-factory-space": "^2.0.0",
+ "micromark-util-character": "^2.0.0",
+ "micromark-util-symbol": "^2.0.0",
+ "micromark-util-types": "^2.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/unified"
+ }
+ },
+ "node_modules/micromark-extension-gfm-tagfilter": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/micromark-extension-gfm-tagfilter/-/micromark-extension-gfm-tagfilter-2.0.0.tgz",
+ "integrity": "sha512-xHlTOmuCSotIA8TW1mDIM6X2O1SiX5P9IuDtqGonFhEK0qgRI4yeC6vMxEV2dgyr2TiD+2PQ10o+cOhdVAcwfg==",
+ "license": "MIT",
+ "dependencies": {
+ "micromark-util-types": "^2.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/unified"
+ }
+ },
+ "node_modules/micromark-extension-gfm-task-list-item": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/micromark-extension-gfm-task-list-item/-/micromark-extension-gfm-task-list-item-2.1.0.tgz",
+ "integrity": "sha512-qIBZhqxqI6fjLDYFTBIa4eivDMnP+OZqsNwmQ3xNLE4Cxwc+zfQEfbs6tzAo2Hjq+bh6q5F+Z8/cksrLFYWQQw==",
+ "license": "MIT",
+ "dependencies": {
+ "devlop": "^1.0.0",
+ "micromark-factory-space": "^2.0.0",
+ "micromark-util-character": "^2.0.0",
+ "micromark-util-symbol": "^2.0.0",
+ "micromark-util-types": "^2.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/unified"
+ }
+ },
+ "node_modules/micromark-extension-mdx-expression": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/micromark-extension-mdx-expression/-/micromark-extension-mdx-expression-3.0.0.tgz",
+ "integrity": "sha512-sI0nwhUDz97xyzqJAbHQhp5TfaxEvZZZ2JDqUo+7NvyIYG6BZ5CPPqj2ogUoPJlmXHBnyZUzISg9+oUmU6tUjQ==",
+ "funding": [
+ {
+ "type": "GitHub Sponsors",
+ "url": "https://github.com/sponsors/unifiedjs"
+ },
+ {
+ "type": "OpenCollective",
+ "url": "https://opencollective.com/unified"
+ }
+ ],
+ "license": "MIT",
+ "dependencies": {
+ "@types/estree": "^1.0.0",
+ "devlop": "^1.0.0",
+ "micromark-factory-mdx-expression": "^2.0.0",
+ "micromark-factory-space": "^2.0.0",
+ "micromark-util-character": "^2.0.0",
+ "micromark-util-events-to-acorn": "^2.0.0",
+ "micromark-util-symbol": "^2.0.0",
+ "micromark-util-types": "^2.0.0"
+ }
+ },
+ "node_modules/micromark-extension-mdx-jsx": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/micromark-extension-mdx-jsx/-/micromark-extension-mdx-jsx-3.0.1.tgz",
+ "integrity": "sha512-vNuFb9czP8QCtAQcEJn0UJQJZA8Dk6DXKBqx+bg/w0WGuSxDxNr7hErW89tHUY31dUW4NqEOWwmEUNhjTFmHkg==",
+ "license": "MIT",
+ "dependencies": {
+ "@types/acorn": "^4.0.0",
+ "@types/estree": "^1.0.0",
+ "devlop": "^1.0.0",
+ "estree-util-is-identifier-name": "^3.0.0",
+ "micromark-factory-mdx-expression": "^2.0.0",
+ "micromark-factory-space": "^2.0.0",
+ "micromark-util-character": "^2.0.0",
+ "micromark-util-events-to-acorn": "^2.0.0",
+ "micromark-util-symbol": "^2.0.0",
+ "micromark-util-types": "^2.0.0",
+ "vfile-message": "^4.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/unified"
+ }
+ },
+ "node_modules/micromark-extension-mdx-md": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/micromark-extension-mdx-md/-/micromark-extension-mdx-md-2.0.0.tgz",
+ "integrity": "sha512-EpAiszsB3blw4Rpba7xTOUptcFeBFi+6PY8VnJ2hhimH+vCQDirWgsMpz7w1XcZE7LVrSAUGb9VJpG9ghlYvYQ==",
+ "license": "MIT",
+ "dependencies": {
+ "micromark-util-types": "^2.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/unified"
+ }
+ },
+ "node_modules/micromark-extension-mdxjs": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/micromark-extension-mdxjs/-/micromark-extension-mdxjs-3.0.0.tgz",
+ "integrity": "sha512-A873fJfhnJ2siZyUrJ31l34Uqwy4xIFmvPY1oj+Ean5PHcPBYzEsvqvWGaWcfEIr11O5Dlw3p2y0tZWpKHDejQ==",
+ "license": "MIT",
+ "dependencies": {
+ "acorn": "^8.0.0",
+ "acorn-jsx": "^5.0.0",
+ "micromark-extension-mdx-expression": "^3.0.0",
+ "micromark-extension-mdx-jsx": "^3.0.0",
+ "micromark-extension-mdx-md": "^2.0.0",
+ "micromark-extension-mdxjs-esm": "^3.0.0",
+ "micromark-util-combine-extensions": "^2.0.0",
+ "micromark-util-types": "^2.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/unified"
+ }
+ },
+ "node_modules/micromark-extension-mdxjs-esm": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/micromark-extension-mdxjs-esm/-/micromark-extension-mdxjs-esm-3.0.0.tgz",
+ "integrity": "sha512-DJFl4ZqkErRpq/dAPyeWp15tGrcrrJho1hKK5uBS70BCtfrIFg81sqcTVu3Ta+KD1Tk5vAtBNElWxtAa+m8K9A==",
+ "license": "MIT",
+ "dependencies": {
+ "@types/estree": "^1.0.0",
+ "devlop": "^1.0.0",
+ "micromark-core-commonmark": "^2.0.0",
+ "micromark-util-character": "^2.0.0",
+ "micromark-util-events-to-acorn": "^2.0.0",
+ "micromark-util-symbol": "^2.0.0",
+ "micromark-util-types": "^2.0.0",
+ "unist-util-position-from-estree": "^2.0.0",
+ "vfile-message": "^4.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/unified"
+ }
+ },
+ "node_modules/micromark-factory-destination": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/micromark-factory-destination/-/micromark-factory-destination-2.0.1.tgz",
+ "integrity": "sha512-Xe6rDdJlkmbFRExpTOmRj9N3MaWmbAgdpSrBQvCFqhezUn4AHqJHbaEnfbVYYiexVSs//tqOdY/DxhjdCiJnIA==",
+ "funding": [
+ {
+ "type": "GitHub Sponsors",
+ "url": "https://github.com/sponsors/unifiedjs"
+ },
+ {
+ "type": "OpenCollective",
+ "url": "https://opencollective.com/unified"
+ }
+ ],
+ "license": "MIT",
+ "dependencies": {
+ "micromark-util-character": "^2.0.0",
+ "micromark-util-symbol": "^2.0.0",
+ "micromark-util-types": "^2.0.0"
+ }
+ },
+ "node_modules/micromark-factory-label": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/micromark-factory-label/-/micromark-factory-label-2.0.1.tgz",
+ "integrity": "sha512-VFMekyQExqIW7xIChcXn4ok29YE3rnuyveW3wZQWWqF4Nv9Wk5rgJ99KzPvHjkmPXF93FXIbBp6YdW3t71/7Vg==",
+ "funding": [
+ {
+ "type": "GitHub Sponsors",
+ "url": "https://github.com/sponsors/unifiedjs"
+ },
+ {
+ "type": "OpenCollective",
+ "url": "https://opencollective.com/unified"
+ }
+ ],
+ "license": "MIT",
+ "dependencies": {
+ "devlop": "^1.0.0",
+ "micromark-util-character": "^2.0.0",
+ "micromark-util-symbol": "^2.0.0",
+ "micromark-util-types": "^2.0.0"
+ }
+ },
+ "node_modules/micromark-factory-mdx-expression": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/micromark-factory-mdx-expression/-/micromark-factory-mdx-expression-2.0.2.tgz",
+ "integrity": "sha512-5E5I2pFzJyg2CtemqAbcyCktpHXuJbABnsb32wX2U8IQKhhVFBqkcZR5LRm1WVoFqa4kTueZK4abep7wdo9nrw==",
+ "funding": [
+ {
+ "type": "GitHub Sponsors",
+ "url": "https://github.com/sponsors/unifiedjs"
+ },
+ {
+ "type": "OpenCollective",
+ "url": "https://opencollective.com/unified"
+ }
+ ],
+ "license": "MIT",
+ "dependencies": {
+ "@types/estree": "^1.0.0",
+ "devlop": "^1.0.0",
+ "micromark-factory-space": "^2.0.0",
+ "micromark-util-character": "^2.0.0",
+ "micromark-util-events-to-acorn": "^2.0.0",
+ "micromark-util-symbol": "^2.0.0",
+ "micromark-util-types": "^2.0.0",
+ "unist-util-position-from-estree": "^2.0.0",
+ "vfile-message": "^4.0.0"
+ }
+ },
+ "node_modules/micromark-factory-space": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/micromark-factory-space/-/micromark-factory-space-2.0.1.tgz",
+ "integrity": "sha512-zRkxjtBxxLd2Sc0d+fbnEunsTj46SWXgXciZmHq0kDYGnck/ZSGj9/wULTV95uoeYiK5hRXP2mJ98Uo4cq/LQg==",
+ "funding": [
+ {
+ "type": "GitHub Sponsors",
+ "url": "https://github.com/sponsors/unifiedjs"
+ },
+ {
+ "type": "OpenCollective",
+ "url": "https://opencollective.com/unified"
+ }
+ ],
+ "license": "MIT",
+ "dependencies": {
+ "micromark-util-character": "^2.0.0",
+ "micromark-util-types": "^2.0.0"
+ }
+ },
+ "node_modules/micromark-factory-title": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/micromark-factory-title/-/micromark-factory-title-2.0.1.tgz",
+ "integrity": "sha512-5bZ+3CjhAd9eChYTHsjy6TGxpOFSKgKKJPJxr293jTbfry2KDoWkhBb6TcPVB4NmzaPhMs1Frm9AZH7OD4Cjzw==",
+ "funding": [
+ {
+ "type": "GitHub Sponsors",
+ "url": "https://github.com/sponsors/unifiedjs"
+ },
+ {
+ "type": "OpenCollective",
+ "url": "https://opencollective.com/unified"
+ }
+ ],
+ "license": "MIT",
+ "dependencies": {
+ "micromark-factory-space": "^2.0.0",
+ "micromark-util-character": "^2.0.0",
+ "micromark-util-symbol": "^2.0.0",
+ "micromark-util-types": "^2.0.0"
+ }
+ },
+ "node_modules/micromark-factory-whitespace": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/micromark-factory-whitespace/-/micromark-factory-whitespace-2.0.1.tgz",
+ "integrity": "sha512-Ob0nuZ3PKt/n0hORHyvoD9uZhr+Za8sFoP+OnMcnWK5lngSzALgQYKMr9RJVOWLqQYuyn6ulqGWSXdwf6F80lQ==",
+ "funding": [
+ {
+ "type": "GitHub Sponsors",
+ "url": "https://github.com/sponsors/unifiedjs"
+ },
+ {
+ "type": "OpenCollective",
+ "url": "https://opencollective.com/unified"
+ }
+ ],
+ "license": "MIT",
+ "dependencies": {
+ "micromark-factory-space": "^2.0.0",
+ "micromark-util-character": "^2.0.0",
+ "micromark-util-symbol": "^2.0.0",
+ "micromark-util-types": "^2.0.0"
+ }
+ },
+ "node_modules/micromark-util-character": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/micromark-util-character/-/micromark-util-character-2.1.1.tgz",
+ "integrity": "sha512-wv8tdUTJ3thSFFFJKtpYKOYiGP2+v96Hvk4Tu8KpCAsTMs6yi+nVmGh1syvSCsaxz45J6Jbw+9DD6g97+NV67Q==",
+ "funding": [
+ {
+ "type": "GitHub Sponsors",
+ "url": "https://github.com/sponsors/unifiedjs"
+ },
+ {
+ "type": "OpenCollective",
+ "url": "https://opencollective.com/unified"
+ }
+ ],
+ "license": "MIT",
+ "dependencies": {
+ "micromark-util-symbol": "^2.0.0",
+ "micromark-util-types": "^2.0.0"
+ }
+ },
+ "node_modules/micromark-util-chunked": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/micromark-util-chunked/-/micromark-util-chunked-2.0.1.tgz",
+ "integrity": "sha512-QUNFEOPELfmvv+4xiNg2sRYeS/P84pTW0TCgP5zc9FpXetHY0ab7SxKyAQCNCc1eK0459uoLI1y5oO5Vc1dbhA==",
+ "funding": [
+ {
+ "type": "GitHub Sponsors",
+ "url": "https://github.com/sponsors/unifiedjs"
+ },
+ {
+ "type": "OpenCollective",
+ "url": "https://opencollective.com/unified"
+ }
+ ],
+ "license": "MIT",
+ "dependencies": {
+ "micromark-util-symbol": "^2.0.0"
+ }
+ },
+ "node_modules/micromark-util-classify-character": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/micromark-util-classify-character/-/micromark-util-classify-character-2.0.1.tgz",
+ "integrity": "sha512-K0kHzM6afW/MbeWYWLjoHQv1sgg2Q9EccHEDzSkxiP/EaagNzCm7T/WMKZ3rjMbvIpvBiZgwR3dKMygtA4mG1Q==",
+ "funding": [
+ {
+ "type": "GitHub Sponsors",
+ "url": "https://github.com/sponsors/unifiedjs"
+ },
+ {
+ "type": "OpenCollective",
+ "url": "https://opencollective.com/unified"
+ }
+ ],
+ "license": "MIT",
+ "dependencies": {
+ "micromark-util-character": "^2.0.0",
+ "micromark-util-symbol": "^2.0.0",
+ "micromark-util-types": "^2.0.0"
+ }
+ },
+ "node_modules/micromark-util-combine-extensions": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/micromark-util-combine-extensions/-/micromark-util-combine-extensions-2.0.1.tgz",
+ "integrity": "sha512-OnAnH8Ujmy59JcyZw8JSbK9cGpdVY44NKgSM7E9Eh7DiLS2E9RNQf0dONaGDzEG9yjEl5hcqeIsj4hfRkLH/Bg==",
+ "funding": [
+ {
+ "type": "GitHub Sponsors",
+ "url": "https://github.com/sponsors/unifiedjs"
+ },
+ {
+ "type": "OpenCollective",
+ "url": "https://opencollective.com/unified"
+ }
+ ],
+ "license": "MIT",
+ "dependencies": {
+ "micromark-util-chunked": "^2.0.0",
+ "micromark-util-types": "^2.0.0"
+ }
+ },
+ "node_modules/micromark-util-decode-numeric-character-reference": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/micromark-util-decode-numeric-character-reference/-/micromark-util-decode-numeric-character-reference-2.0.2.tgz",
+ "integrity": "sha512-ccUbYk6CwVdkmCQMyr64dXz42EfHGkPQlBj5p7YVGzq8I7CtjXZJrubAYezf7Rp+bjPseiROqe7G6foFd+lEuw==",
+ "funding": [
+ {
+ "type": "GitHub Sponsors",
+ "url": "https://github.com/sponsors/unifiedjs"
+ },
+ {
+ "type": "OpenCollective",
+ "url": "https://opencollective.com/unified"
+ }
+ ],
+ "license": "MIT",
+ "dependencies": {
+ "micromark-util-symbol": "^2.0.0"
+ }
+ },
+ "node_modules/micromark-util-decode-string": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/micromark-util-decode-string/-/micromark-util-decode-string-2.0.1.tgz",
+ "integrity": "sha512-nDV/77Fj6eH1ynwscYTOsbK7rR//Uj0bZXBwJZRfaLEJ1iGBR6kIfNmlNqaqJf649EP0F3NWNdeJi03elllNUQ==",
+ "funding": [
+ {
+ "type": "GitHub Sponsors",
+ "url": "https://github.com/sponsors/unifiedjs"
+ },
+ {
+ "type": "OpenCollective",
+ "url": "https://opencollective.com/unified"
+ }
+ ],
+ "license": "MIT",
+ "dependencies": {
+ "decode-named-character-reference": "^1.0.0",
+ "micromark-util-character": "^2.0.0",
+ "micromark-util-decode-numeric-character-reference": "^2.0.0",
+ "micromark-util-symbol": "^2.0.0"
+ }
+ },
+ "node_modules/micromark-util-encode": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/micromark-util-encode/-/micromark-util-encode-2.0.1.tgz",
+ "integrity": "sha512-c3cVx2y4KqUnwopcO9b/SCdo2O67LwJJ/UyqGfbigahfegL9myoEFoDYZgkT7f36T0bLrM9hZTAaAyH+PCAXjw==",
+ "funding": [
+ {
+ "type": "GitHub Sponsors",
+ "url": "https://github.com/sponsors/unifiedjs"
+ },
+ {
+ "type": "OpenCollective",
+ "url": "https://opencollective.com/unified"
+ }
+ ],
+ "license": "MIT"
+ },
+ "node_modules/micromark-util-events-to-acorn": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/micromark-util-events-to-acorn/-/micromark-util-events-to-acorn-2.0.2.tgz",
+ "integrity": "sha512-Fk+xmBrOv9QZnEDguL9OI9/NQQp6Hz4FuQ4YmCb/5V7+9eAh1s6AYSvL20kHkD67YIg7EpE54TiSlcsf3vyZgA==",
+ "funding": [
+ {
+ "type": "GitHub Sponsors",
+ "url": "https://github.com/sponsors/unifiedjs"
+ },
+ {
+ "type": "OpenCollective",
+ "url": "https://opencollective.com/unified"
+ }
+ ],
+ "license": "MIT",
+ "dependencies": {
+ "@types/acorn": "^4.0.0",
+ "@types/estree": "^1.0.0",
+ "@types/unist": "^3.0.0",
+ "devlop": "^1.0.0",
+ "estree-util-visit": "^2.0.0",
+ "micromark-util-symbol": "^2.0.0",
+ "micromark-util-types": "^2.0.0",
+ "vfile-message": "^4.0.0"
+ }
+ },
+ "node_modules/micromark-util-html-tag-name": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/micromark-util-html-tag-name/-/micromark-util-html-tag-name-2.0.1.tgz",
+ "integrity": "sha512-2cNEiYDhCWKI+Gs9T0Tiysk136SnR13hhO8yW6BGNyhOC4qYFnwF1nKfD3HFAIXA5c45RrIG1ub11GiXeYd1xA==",
+ "funding": [
+ {
+ "type": "GitHub Sponsors",
+ "url": "https://github.com/sponsors/unifiedjs"
+ },
+ {
+ "type": "OpenCollective",
+ "url": "https://opencollective.com/unified"
+ }
+ ],
+ "license": "MIT"
+ },
+ "node_modules/micromark-util-normalize-identifier": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/micromark-util-normalize-identifier/-/micromark-util-normalize-identifier-2.0.1.tgz",
+ "integrity": "sha512-sxPqmo70LyARJs0w2UclACPUUEqltCkJ6PhKdMIDuJ3gSf/Q+/GIe3WKl0Ijb/GyH9lOpUkRAO2wp0GVkLvS9Q==",
+ "funding": [
+ {
+ "type": "GitHub Sponsors",
+ "url": "https://github.com/sponsors/unifiedjs"
+ },
+ {
+ "type": "OpenCollective",
+ "url": "https://opencollective.com/unified"
+ }
+ ],
+ "license": "MIT",
+ "dependencies": {
+ "micromark-util-symbol": "^2.0.0"
+ }
+ },
+ "node_modules/micromark-util-resolve-all": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/micromark-util-resolve-all/-/micromark-util-resolve-all-2.0.1.tgz",
+ "integrity": "sha512-VdQyxFWFT2/FGJgwQnJYbe1jjQoNTS4RjglmSjTUlpUMa95Htx9NHeYW4rGDJzbjvCsl9eLjMQwGeElsqmzcHg==",
+ "funding": [
+ {
+ "type": "GitHub Sponsors",
+ "url": "https://github.com/sponsors/unifiedjs"
+ },
+ {
+ "type": "OpenCollective",
+ "url": "https://opencollective.com/unified"
+ }
+ ],
+ "license": "MIT",
+ "dependencies": {
+ "micromark-util-types": "^2.0.0"
+ }
+ },
+ "node_modules/micromark-util-sanitize-uri": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/micromark-util-sanitize-uri/-/micromark-util-sanitize-uri-2.0.1.tgz",
+ "integrity": "sha512-9N9IomZ/YuGGZZmQec1MbgxtlgougxTodVwDzzEouPKo3qFWvymFHWcnDi2vzV1ff6kas9ucW+o3yzJK9YB1AQ==",
+ "funding": [
+ {
+ "type": "GitHub Sponsors",
+ "url": "https://github.com/sponsors/unifiedjs"
+ },
+ {
+ "type": "OpenCollective",
+ "url": "https://opencollective.com/unified"
+ }
+ ],
+ "license": "MIT",
+ "dependencies": {
+ "micromark-util-character": "^2.0.0",
+ "micromark-util-encode": "^2.0.0",
+ "micromark-util-symbol": "^2.0.0"
+ }
+ },
+ "node_modules/micromark-util-subtokenize": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/micromark-util-subtokenize/-/micromark-util-subtokenize-2.1.0.tgz",
+ "integrity": "sha512-XQLu552iSctvnEcgXw6+Sx75GflAPNED1qx7eBJ+wydBb2KCbRZe+NwvIEEMM83uml1+2WSXpBAcp9IUCgCYWA==",
+ "funding": [
+ {
+ "type": "GitHub Sponsors",
+ "url": "https://github.com/sponsors/unifiedjs"
+ },
+ {
+ "type": "OpenCollective",
+ "url": "https://opencollective.com/unified"
+ }
+ ],
+ "license": "MIT",
+ "dependencies": {
+ "devlop": "^1.0.0",
+ "micromark-util-chunked": "^2.0.0",
+ "micromark-util-symbol": "^2.0.0",
+ "micromark-util-types": "^2.0.0"
+ }
+ },
+ "node_modules/micromark-util-symbol": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/micromark-util-symbol/-/micromark-util-symbol-2.0.1.tgz",
+ "integrity": "sha512-vs5t8Apaud9N28kgCrRUdEed4UJ+wWNvicHLPxCa9ENlYuAY31M0ETy5y1vA33YoNPDFTghEbnh6efaE8h4x0Q==",
+ "funding": [
+ {
+ "type": "GitHub Sponsors",
+ "url": "https://github.com/sponsors/unifiedjs"
+ },
+ {
+ "type": "OpenCollective",
+ "url": "https://opencollective.com/unified"
+ }
+ ],
+ "license": "MIT"
+ },
+ "node_modules/micromark-util-types": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/micromark-util-types/-/micromark-util-types-2.0.2.tgz",
+ "integrity": "sha512-Yw0ECSpJoViF1qTU4DC6NwtC4aWGt1EkzaQB8KPPyCRR8z9TWeV0HbEFGTO+ZY1wB22zmxnJqhPyTpOVCpeHTA==",
+ "funding": [
+ {
+ "type": "GitHub Sponsors",
+ "url": "https://github.com/sponsors/unifiedjs"
+ },
+ {
+ "type": "OpenCollective",
+ "url": "https://opencollective.com/unified"
+ }
+ ],
+ "license": "MIT"
+ },
+ "node_modules/minimatch": {
+ "version": "9.0.9",
+ "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.9.tgz",
+ "integrity": "sha512-OBwBN9AL4dqmETlpS2zasx+vTeWclWzkblfZk7KTA5j3jeOONz/tRCnZomUyvNg83wL5Zv9Ss6HMJXAgL8R2Yg==",
+ "license": "ISC",
+ "dependencies": {
+ "brace-expansion": "^2.0.2"
+ },
+ "engines": {
+ "node": ">=16 || 14 >=14.17"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/isaacs"
+ }
+ },
+ "node_modules/minipass": {
+ "version": "7.1.2",
+ "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.2.tgz",
+ "integrity": "sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==",
+ "license": "ISC",
+ "engines": {
+ "node": ">=16 || 14 >=14.17"
+ }
+ },
+ "node_modules/minizlib": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/minizlib/-/minizlib-3.1.0.tgz",
+ "integrity": "sha512-KZxYo1BUkWD2TVFLr0MQoM8vUUigWD3LlD83a/75BqC+4qE0Hb1Vo5v1FgcfaNXvfXzr+5EhQ6ing/CaBijTlw==",
+ "license": "MIT",
+ "dependencies": {
+ "minipass": "^7.1.2"
+ },
+ "engines": {
+ "node": ">= 18"
+ }
+ },
+ "node_modules/mrmime": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/mrmime/-/mrmime-2.0.1.tgz",
+ "integrity": "sha512-Y3wQdFg2Va6etvQ5I82yUhGdsKrcYox6p7FfL1LbK2J4V01F9TGlepTIhnK24t7koZibmg82KGglhA1XK5IsLQ==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/ms": {
+ "version": "2.1.3",
+ "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz",
+ "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==",
+ "license": "MIT"
+ },
+ "node_modules/nanoid": {
+ "version": "3.3.9",
+ "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.9.tgz",
+ "integrity": "sha512-SppoicMGpZvbF1l3z4x7No3OlIjP7QJvC9XR7AhZr1kL133KHnKPztkKDc+Ir4aJ/1VhTySrtKhrsycmrMQfvg==",
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/ai"
+ }
+ ],
+ "license": "MIT",
+ "bin": {
+ "nanoid": "bin/nanoid.cjs"
+ },
+ "engines": {
+ "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1"
+ }
+ },
+ "node_modules/neotraverse": {
+ "version": "0.6.18",
+ "resolved": "https://registry.npmjs.org/neotraverse/-/neotraverse-0.6.18.tgz",
+ "integrity": "sha512-Z4SmBUweYa09+o6pG+eASabEpP6QkQ70yHj351pQoEXIs8uHbaU2DWVmzBANKgflPa47A50PtB2+NgRpQvr7vA==",
+ "license": "MIT",
+ "engines": {
+ "node": ">= 10"
+ }
+ },
+ "node_modules/nlcst-to-string": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/nlcst-to-string/-/nlcst-to-string-4.0.0.tgz",
+ "integrity": "sha512-YKLBCcUYKAg0FNlOBT6aI91qFmSiFKiluk655WzPF+DDMA02qIyy8uiRqI8QXtcFpEvll12LpL5MXqEmAZ+dcA==",
+ "license": "MIT",
+ "dependencies": {
+ "@types/nlcst": "^2.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/unified"
+ }
+ },
+ "node_modules/node-fetch": {
+ "version": "2.7.0",
+ "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.7.0.tgz",
+ "integrity": "sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==",
+ "license": "MIT",
+ "dependencies": {
+ "whatwg-url": "^5.0.0"
+ },
+ "engines": {
+ "node": "4.x || >=6.0.0"
+ },
+ "peerDependencies": {
+ "encoding": "^0.1.0"
+ },
+ "peerDependenciesMeta": {
+ "encoding": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/node-fetch-native": {
+ "version": "1.6.7",
+ "resolved": "https://registry.npmjs.org/node-fetch-native/-/node-fetch-native-1.6.7.tgz",
+ "integrity": "sha512-g9yhqoedzIUm0nTnTqAQvueMPVOuIY16bqgAJJC8XOOubYFNwz6IER9qs0Gq2Xd0+CecCKFjtdDTMA4u4xG06Q==",
+ "license": "MIT"
+ },
+ "node_modules/node-gyp-build": {
+ "version": "4.8.4",
+ "resolved": "https://registry.npmjs.org/node-gyp-build/-/node-gyp-build-4.8.4.tgz",
+ "integrity": "sha512-LA4ZjwlnUblHVgq0oBF3Jl/6h/Nvs5fzBLwdEF4nuxnFdsfajde4WfxtJr3CaiH+F6ewcIB/q4jQ4UzPyid+CQ==",
+ "license": "MIT",
+ "bin": {
+ "node-gyp-build": "bin.js",
+ "node-gyp-build-optional": "optional.js",
+ "node-gyp-build-test": "build-test.js"
+ }
+ },
+ "node_modules/node-mock-http": {
+ "version": "1.0.4",
+ "resolved": "https://registry.npmjs.org/node-mock-http/-/node-mock-http-1.0.4.tgz",
+ "integrity": "sha512-8DY+kFsDkNXy1sJglUfuODx1/opAGJGyrTuFqEoN90oRc2Vk0ZbD4K2qmKXBBEhZQzdKHIVfEJpDU8Ak2NJEvQ==",
+ "license": "MIT"
+ },
+ "node_modules/nopt": {
+ "version": "8.1.0",
+ "resolved": "https://registry.npmjs.org/nopt/-/nopt-8.1.0.tgz",
+ "integrity": "sha512-ieGu42u/Qsa4TFktmaKEwM6MQH0pOWnaB3htzh0JRtx84+Mebc0cbZYN5bC+6WTZ4+77xrL9Pn5m7CV6VIkV7A==",
+ "license": "ISC",
+ "dependencies": {
+ "abbrev": "^3.0.0"
+ },
+ "bin": {
+ "nopt": "bin/nopt.js"
+ },
+ "engines": {
+ "node": "^18.17.0 || >=20.5.0"
+ }
+ },
+ "node_modules/normalize-path": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz",
+ "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/nth-check": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-2.1.1.tgz",
+ "integrity": "sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==",
+ "license": "BSD-2-Clause",
+ "dependencies": {
+ "boolbase": "^1.0.0"
+ },
+ "funding": {
+ "url": "https://github.com/fb55/nth-check?sponsor=1"
+ }
+ },
+ "node_modules/ofetch": {
+ "version": "1.5.1",
+ "resolved": "https://registry.npmjs.org/ofetch/-/ofetch-1.5.1.tgz",
+ "integrity": "sha512-2W4oUZlVaqAPAil6FUg/difl6YhqhUR7x2eZY4bQCko22UXg3hptq9KLQdqFClV+Wu85UX7hNtdGTngi/1BxcA==",
+ "license": "MIT",
+ "dependencies": {
+ "destr": "^2.0.5",
+ "node-fetch-native": "^1.6.7",
+ "ufo": "^1.6.1"
+ }
+ },
+ "node_modules/ohash": {
+ "version": "2.0.11",
+ "resolved": "https://registry.npmjs.org/ohash/-/ohash-2.0.11.tgz",
+ "integrity": "sha512-RdR9FQrFwNBNXAr4GixM8YaRZRJ5PUWbKYbE5eOsrwAjJW0q2REGcf79oYPsLyskQCZG1PLN+S/K1V00joZAoQ==",
+ "license": "MIT"
+ },
+ "node_modules/oniguruma-parser": {
+ "version": "0.12.1",
+ "resolved": "https://registry.npmjs.org/oniguruma-parser/-/oniguruma-parser-0.12.1.tgz",
+ "integrity": "sha512-8Unqkvk1RYc6yq2WBYRj4hdnsAxVze8i7iPfQr8e4uSP3tRv0rpZcbGUDvxfQQcdwHt/e9PrMvGCsa8OqG9X3w==",
+ "license": "MIT"
+ },
+ "node_modules/oniguruma-to-es": {
+ "version": "4.3.5",
+ "resolved": "https://registry.npmjs.org/oniguruma-to-es/-/oniguruma-to-es-4.3.5.tgz",
+ "integrity": "sha512-Zjygswjpsewa0NLTsiizVuMQZbp0MDyM6lIt66OxsF21npUDlzpHi1Mgb/qhQdkb+dWFTzJmFbEWdvZgRho8eQ==",
+ "license": "MIT",
+ "dependencies": {
+ "oniguruma-parser": "^0.12.1",
+ "regex": "^6.1.0",
+ "regex-recursion": "^6.0.2"
+ }
+ },
+ "node_modules/p-limit": {
+ "version": "6.2.0",
+ "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-6.2.0.tgz",
+ "integrity": "sha512-kuUqqHNUqoIWp/c467RI4X6mmyuojY5jGutNU0wVTmEOOfcuwLqyMVoAi9MKi2Ak+5i9+nhmrK4ufZE8069kHA==",
+ "license": "MIT",
+ "dependencies": {
+ "yocto-queue": "^1.1.1"
+ },
+ "engines": {
+ "node": ">=18"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/p-queue": {
+ "version": "8.1.1",
+ "resolved": "https://registry.npmjs.org/p-queue/-/p-queue-8.1.1.tgz",
+ "integrity": "sha512-aNZ+VfjobsWryoiPnEApGGmf5WmNsCo9xu8dfaYamG5qaLP7ClhLN6NgsFe6SwJ2UbLEBK5dv9x8Mn5+RVhMWQ==",
+ "license": "MIT",
+ "dependencies": {
+ "eventemitter3": "^5.0.1",
+ "p-timeout": "^6.1.2"
+ },
+ "engines": {
+ "node": ">=18"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/p-timeout": {
+ "version": "6.1.4",
+ "resolved": "https://registry.npmjs.org/p-timeout/-/p-timeout-6.1.4.tgz",
+ "integrity": "sha512-MyIV3ZA/PmyBN/ud8vV9XzwTrNtR4jFrObymZYnZqMmW0zA8Z17vnT0rBgFE/TlohB+YCHqXMgZzb3Csp49vqg==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=14.16"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/package-json-from-dist": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/package-json-from-dist/-/package-json-from-dist-1.0.1.tgz",
+ "integrity": "sha512-UEZIS3/by4OC8vL3P2dTXRETpebLI2NiI5vIrjaD/5UtrkFX/tNbwjTSRAGC/+7CAo2pIcBaRgWmcBBHcsaCIw==",
+ "license": "BlueOak-1.0.0"
+ },
+ "node_modules/package-manager-detector": {
+ "version": "1.6.0",
+ "resolved": "https://registry.npmjs.org/package-manager-detector/-/package-manager-detector-1.6.0.tgz",
+ "integrity": "sha512-61A5ThoTiDG/C8s8UMZwSorAGwMJ0ERVGj2OjoW5pAalsNOg15+iQiPzrLJ4jhZ1HJzmC2PIHT2oEiH3R5fzNA==",
+ "license": "MIT"
+ },
+ "node_modules/parse-entities": {
+ "version": "4.0.2",
+ "resolved": "https://registry.npmjs.org/parse-entities/-/parse-entities-4.0.2.tgz",
+ "integrity": "sha512-GG2AQYWoLgL877gQIKeRPGO1xF9+eG1ujIb5soS5gPvLQ1y2o8FL90w2QWNdf9I361Mpp7726c+lj3U0qK1uGw==",
+ "license": "MIT",
+ "dependencies": {
+ "@types/unist": "^2.0.0",
+ "character-entities-legacy": "^3.0.0",
+ "character-reference-invalid": "^2.0.0",
+ "decode-named-character-reference": "^1.0.0",
+ "is-alphanumerical": "^2.0.0",
+ "is-decimal": "^2.0.0",
+ "is-hexadecimal": "^2.0.0"
+ },
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/wooorm"
+ }
+ },
+ "node_modules/parse-entities/node_modules/@types/unist": {
+ "version": "2.0.11",
+ "resolved": "https://registry.npmjs.org/@types/unist/-/unist-2.0.11.tgz",
+ "integrity": "sha512-CmBKiL6NNo/OqgmMn95Fk9Whlp2mtvIv+KNpQKN2F4SjvrEesubTRWGYSg+BnWZOnlCaSTU1sMpsBOzgbYhnsA==",
+ "license": "MIT"
+ },
+ "node_modules/parse-latin": {
+ "version": "7.0.0",
+ "resolved": "https://registry.npmjs.org/parse-latin/-/parse-latin-7.0.0.tgz",
+ "integrity": "sha512-mhHgobPPua5kZ98EF4HWiH167JWBfl4pvAIXXdbaVohtK7a6YBOy56kvhCqduqyo/f3yrHFWmqmiMg/BkBkYYQ==",
+ "license": "MIT",
+ "dependencies": {
+ "@types/nlcst": "^2.0.0",
+ "@types/unist": "^3.0.0",
+ "nlcst-to-string": "^4.0.0",
+ "unist-util-modify-children": "^4.0.0",
+ "unist-util-visit-children": "^3.0.0",
+ "vfile": "^6.0.0"
+ },
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/wooorm"
+ }
+ },
+ "node_modules/parse5": {
+ "version": "7.2.1",
+ "resolved": "https://registry.npmjs.org/parse5/-/parse5-7.2.1.tgz",
+ "integrity": "sha512-BuBYQYlv1ckiPdQi/ohiivi9Sagc9JG+Ozs0r7b/0iK3sKmrb0b9FdWdBbOdx6hBCM/F9Ir82ofnBhtZOjCRPQ==",
+ "license": "MIT",
+ "dependencies": {
+ "entities": "^4.5.0"
+ },
+ "funding": {
+ "url": "https://github.com/inikulin/parse5?sponsor=1"
+ }
+ },
+ "node_modules/path-key": {
+ "version": "3.1.1",
+ "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz",
+ "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/path-scurry": {
+ "version": "1.11.1",
+ "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-1.11.1.tgz",
+ "integrity": "sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==",
+ "license": "BlueOak-1.0.0",
+ "dependencies": {
+ "lru-cache": "^10.2.0",
+ "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0"
+ },
+ "engines": {
+ "node": ">=16 || 14 >=14.18"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/isaacs"
+ }
+ },
+ "node_modules/piccolore": {
+ "version": "0.1.3",
+ "resolved": "https://registry.npmjs.org/piccolore/-/piccolore-0.1.3.tgz",
+ "integrity": "sha512-o8bTeDWjE086iwKrROaDf31K0qC/BENdm15/uH9usSC/uZjJOKb2YGiVHfLY4GhwsERiPI1jmwI2XrA7ACOxVw==",
+ "license": "ISC"
+ },
+ "node_modules/picocolors": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz",
+ "integrity": "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==",
+ "license": "ISC"
+ },
+ "node_modules/picomatch": {
+ "version": "4.0.4",
+ "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.4.tgz",
+ "integrity": "sha512-QP88BAKvMam/3NxH6vj2o21R6MjxZUAd6nlwAS/pnGvN9IVLocLHxGYIzFhg6fUQ+5th6P4dv4eW9jX3DSIj7A==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/jonschlinkert"
+ }
+ },
+ "node_modules/postcss": {
+ "version": "8.5.3",
+ "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.5.3.tgz",
+ "integrity": "sha512-dle9A3yYxlBSrt8Fu+IpjGT8SY8hN0mlaA6GY8t0P5PjIOZemULz/E2Bnm/2dcUOena75OTNkHI76uZBNUUq3A==",
+ "funding": [
+ {
+ "type": "opencollective",
+ "url": "https://opencollective.com/postcss/"
+ },
+ {
+ "type": "tidelift",
+ "url": "https://tidelift.com/funding/github/npm/postcss"
+ },
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/ai"
+ }
+ ],
+ "license": "MIT",
+ "dependencies": {
+ "nanoid": "^3.3.8",
+ "picocolors": "^1.1.1",
+ "source-map-js": "^1.2.1"
+ },
+ "engines": {
+ "node": "^10 || ^12 || >=14"
+ }
+ },
+ "node_modules/postcss-selector-parser": {
+ "version": "6.0.10",
+ "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.10.tgz",
+ "integrity": "sha512-IQ7TZdoaqbT+LCpShg46jnZVlhWD2w6iQYAcYXfHARZ7X1t/UGhhceQDs5X0cGqKvYlHNOuv7Oa1xmb0oQuA3w==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "cssesc": "^3.0.0",
+ "util-deprecate": "^1.0.2"
+ },
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/prismjs": {
+ "version": "1.30.0",
+ "resolved": "https://registry.npmjs.org/prismjs/-/prismjs-1.30.0.tgz",
+ "integrity": "sha512-DEvV2ZF2r2/63V+tK8hQvrR2ZGn10srHbXviTlcv7Kpzw8jWiNTqbVgjO3IY8RxrrOUF8VPMQQFysYYYv0YZxw==",
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/prompts": {
+ "version": "2.4.2",
+ "resolved": "https://registry.npmjs.org/prompts/-/prompts-2.4.2.tgz",
+ "integrity": "sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q==",
+ "license": "MIT",
+ "dependencies": {
+ "kleur": "^3.0.3",
+ "sisteransi": "^1.0.5"
+ },
+ "engines": {
+ "node": ">= 6"
+ }
+ },
+ "node_modules/prompts/node_modules/kleur": {
+ "version": "3.0.3",
+ "resolved": "https://registry.npmjs.org/kleur/-/kleur-3.0.3.tgz",
+ "integrity": "sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/property-information": {
+ "version": "7.0.0",
+ "resolved": "https://registry.npmjs.org/property-information/-/property-information-7.0.0.tgz",
+ "integrity": "sha512-7D/qOz/+Y4X/rzSB6jKxKUsQnphO046ei8qxG59mtM3RG3DHgTK81HrxrmoDVINJb8NKT5ZsRbwHvQ6B68Iyhg==",
+ "license": "MIT",
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/wooorm"
+ }
+ },
+ "node_modules/radix3": {
+ "version": "1.1.2",
+ "resolved": "https://registry.npmjs.org/radix3/-/radix3-1.1.2.tgz",
+ "integrity": "sha512-b484I/7b8rDEdSDKckSSBA8knMpcdsXudlE/LNL639wFoHKwLbEkQFZHWEYwDC0wa0FKUcCY+GAF73Z7wxNVFA==",
+ "license": "MIT"
+ },
+ "node_modules/readdirp": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-5.0.0.tgz",
+ "integrity": "sha512-9u/XQ1pvrQtYyMpZe7DXKv2p5CNvyVwzUB6uhLAnQwHMSgKMBR62lc7AHljaeteeHXn11XTAaLLUVZYVZyuRBQ==",
+ "license": "MIT",
+ "engines": {
+ "node": ">= 20.19.0"
+ },
+ "funding": {
+ "type": "individual",
+ "url": "https://paulmillr.com/funding/"
+ }
+ },
+ "node_modules/recma-build-jsx": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/recma-build-jsx/-/recma-build-jsx-1.0.0.tgz",
+ "integrity": "sha512-8GtdyqaBcDfva+GUKDr3nev3VpKAhup1+RvkMvUxURHpW7QyIvk9F5wz7Vzo06CEMSilw6uArgRqhpiUcWp8ew==",
+ "license": "MIT",
+ "dependencies": {
+ "@types/estree": "^1.0.0",
+ "estree-util-build-jsx": "^3.0.0",
+ "vfile": "^6.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/unified"
+ }
+ },
+ "node_modules/recma-jsx": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/recma-jsx/-/recma-jsx-1.0.0.tgz",
+ "integrity": "sha512-5vwkv65qWwYxg+Atz95acp8DMu1JDSqdGkA2Of1j6rCreyFUE/gp15fC8MnGEuG1W68UKjM6x6+YTWIh7hZM/Q==",
+ "license": "MIT",
+ "dependencies": {
+ "acorn-jsx": "^5.0.0",
+ "estree-util-to-js": "^2.0.0",
+ "recma-parse": "^1.0.0",
+ "recma-stringify": "^1.0.0",
+ "unified": "^11.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/unified"
+ }
+ },
+ "node_modules/recma-parse": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/recma-parse/-/recma-parse-1.0.0.tgz",
+ "integrity": "sha512-OYLsIGBB5Y5wjnSnQW6t3Xg7q3fQ7FWbw/vcXtORTnyaSFscOtABg+7Pnz6YZ6c27fG1/aN8CjfwoUEUIdwqWQ==",
+ "license": "MIT",
+ "dependencies": {
+ "@types/estree": "^1.0.0",
+ "esast-util-from-js": "^2.0.0",
+ "unified": "^11.0.0",
+ "vfile": "^6.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/unified"
+ }
+ },
+ "node_modules/recma-stringify": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/recma-stringify/-/recma-stringify-1.0.0.tgz",
+ "integrity": "sha512-cjwII1MdIIVloKvC9ErQ+OgAtwHBmcZ0Bg4ciz78FtbT8In39aAYbaA7zvxQ61xVMSPE8WxhLwLbhif4Js2C+g==",
+ "license": "MIT",
+ "dependencies": {
+ "@types/estree": "^1.0.0",
+ "estree-util-to-js": "^2.0.0",
+ "unified": "^11.0.0",
+ "vfile": "^6.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/unified"
+ }
+ },
+ "node_modules/regex": {
+ "version": "6.1.0",
+ "resolved": "https://registry.npmjs.org/regex/-/regex-6.1.0.tgz",
+ "integrity": "sha512-6VwtthbV4o/7+OaAF9I5L5V3llLEsoPyq9P1JVXkedTP33c7MfCG0/5NOPcSJn0TzXcG9YUrR0gQSWioew3LDg==",
+ "license": "MIT",
+ "dependencies": {
+ "regex-utilities": "^2.3.0"
+ }
+ },
+ "node_modules/regex-recursion": {
+ "version": "6.0.2",
+ "resolved": "https://registry.npmjs.org/regex-recursion/-/regex-recursion-6.0.2.tgz",
+ "integrity": "sha512-0YCaSCq2VRIebiaUviZNs0cBz1kg5kVS2UKUfNIx8YVs1cN3AV7NTctO5FOKBA+UT2BPJIWZauYHPqJODG50cg==",
+ "license": "MIT",
+ "dependencies": {
+ "regex-utilities": "^2.3.0"
+ }
+ },
+ "node_modules/regex-utilities": {
+ "version": "2.3.0",
+ "resolved": "https://registry.npmjs.org/regex-utilities/-/regex-utilities-2.3.0.tgz",
+ "integrity": "sha512-8VhliFJAWRaUiVvREIiW2NXXTmHs4vMNnSzuJVhscgmGav3g9VDxLrQndI3dZZVVdp0ZO/5v0xmX516/7M9cng==",
+ "license": "MIT"
+ },
+ "node_modules/rehype": {
+ "version": "13.0.2",
+ "resolved": "https://registry.npmjs.org/rehype/-/rehype-13.0.2.tgz",
+ "integrity": "sha512-j31mdaRFrwFRUIlxGeuPXXKWQxet52RBQRvCmzl5eCefn/KGbomK5GMHNMsOJf55fgo3qw5tST5neDuarDYR2A==",
+ "license": "MIT",
+ "dependencies": {
+ "@types/hast": "^3.0.0",
+ "rehype-parse": "^9.0.0",
+ "rehype-stringify": "^10.0.0",
+ "unified": "^11.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/unified"
+ }
+ },
+ "node_modules/rehype-parse": {
+ "version": "9.0.1",
+ "resolved": "https://registry.npmjs.org/rehype-parse/-/rehype-parse-9.0.1.tgz",
+ "integrity": "sha512-ksCzCD0Fgfh7trPDxr2rSylbwq9iYDkSn8TCDmEJ49ljEUBxDVCzCHv7QNzZOfODanX4+bWQ4WZqLCRWYLfhag==",
+ "license": "MIT",
+ "dependencies": {
+ "@types/hast": "^3.0.0",
+ "hast-util-from-html": "^2.0.0",
+ "unified": "^11.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/unified"
+ }
+ },
+ "node_modules/rehype-raw": {
+ "version": "7.0.0",
+ "resolved": "https://registry.npmjs.org/rehype-raw/-/rehype-raw-7.0.0.tgz",
+ "integrity": "sha512-/aE8hCfKlQeA8LmyeyQvQF3eBiLRGNlfBJEvWH7ivp9sBqs7TNqBL5X3v157rM4IFETqDnIOO+z5M/biZbo9Ww==",
+ "license": "MIT",
+ "dependencies": {
+ "@types/hast": "^3.0.0",
+ "hast-util-raw": "^9.0.0",
+ "vfile": "^6.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/unified"
+ }
+ },
+ "node_modules/rehype-recma": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/rehype-recma/-/rehype-recma-1.0.0.tgz",
+ "integrity": "sha512-lqA4rGUf1JmacCNWWZx0Wv1dHqMwxzsDWYMTowuplHF3xH0N/MmrZ/G3BDZnzAkRmxDadujCjaKM2hqYdCBOGw==",
+ "license": "MIT",
+ "dependencies": {
+ "@types/estree": "^1.0.0",
+ "@types/hast": "^3.0.0",
+ "hast-util-to-estree": "^3.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/unified"
+ }
+ },
+ "node_modules/rehype-stringify": {
+ "version": "10.0.1",
+ "resolved": "https://registry.npmjs.org/rehype-stringify/-/rehype-stringify-10.0.1.tgz",
+ "integrity": "sha512-k9ecfXHmIPuFVI61B9DeLPN0qFHfawM6RsuX48hoqlaKSF61RskNjSm1lI8PhBEM0MRdLxVVm4WmTqJQccH9mA==",
+ "license": "MIT",
+ "dependencies": {
+ "@types/hast": "^3.0.0",
+ "hast-util-to-html": "^9.0.0",
+ "unified": "^11.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/unified"
+ }
+ },
+ "node_modules/remark-gfm": {
+ "version": "4.0.1",
+ "resolved": "https://registry.npmjs.org/remark-gfm/-/remark-gfm-4.0.1.tgz",
+ "integrity": "sha512-1quofZ2RQ9EWdeN34S79+KExV1764+wCUGop5CPL1WGdD0ocPpu91lzPGbwWMECpEpd42kJGQwzRfyov9j4yNg==",
+ "license": "MIT",
+ "dependencies": {
+ "@types/mdast": "^4.0.0",
+ "mdast-util-gfm": "^3.0.0",
+ "micromark-extension-gfm": "^3.0.0",
+ "remark-parse": "^11.0.0",
+ "remark-stringify": "^11.0.0",
+ "unified": "^11.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/unified"
+ }
+ },
+ "node_modules/remark-mdx": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/remark-mdx/-/remark-mdx-3.1.0.tgz",
+ "integrity": "sha512-Ngl/H3YXyBV9RcRNdlYsZujAmhsxwzxpDzpDEhFBVAGthS4GDgnctpDjgFl/ULx5UEDzqtW1cyBSNKqYYrqLBA==",
+ "license": "MIT",
+ "dependencies": {
+ "mdast-util-mdx": "^3.0.0",
+ "micromark-extension-mdxjs": "^3.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/unified"
+ }
+ },
+ "node_modules/remark-parse": {
+ "version": "11.0.0",
+ "resolved": "https://registry.npmjs.org/remark-parse/-/remark-parse-11.0.0.tgz",
+ "integrity": "sha512-FCxlKLNGknS5ba/1lmpYijMUzX2esxW5xQqjWxw2eHFfS2MSdaHVINFmhjo+qN1WhZhNimq0dZATN9pH0IDrpA==",
+ "license": "MIT",
+ "dependencies": {
+ "@types/mdast": "^4.0.0",
+ "mdast-util-from-markdown": "^2.0.0",
+ "micromark-util-types": "^2.0.0",
+ "unified": "^11.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/unified"
+ }
+ },
+ "node_modules/remark-rehype": {
+ "version": "11.1.2",
+ "resolved": "https://registry.npmjs.org/remark-rehype/-/remark-rehype-11.1.2.tgz",
+ "integrity": "sha512-Dh7l57ianaEoIpzbp0PC9UKAdCSVklD8E5Rpw7ETfbTl3FqcOOgq5q2LVDhgGCkaBv7p24JXikPdvhhmHvKMsw==",
+ "license": "MIT",
+ "dependencies": {
+ "@types/hast": "^3.0.0",
+ "@types/mdast": "^4.0.0",
+ "mdast-util-to-hast": "^13.0.0",
+ "unified": "^11.0.0",
+ "vfile": "^6.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/unified"
+ }
+ },
+ "node_modules/remark-smartypants": {
+ "version": "3.0.2",
+ "resolved": "https://registry.npmjs.org/remark-smartypants/-/remark-smartypants-3.0.2.tgz",
+ "integrity": "sha512-ILTWeOriIluwEvPjv67v7Blgrcx+LZOkAUVtKI3putuhlZm84FnqDORNXPPm+HY3NdZOMhyDwZ1E+eZB/Df5dA==",
+ "license": "MIT",
+ "dependencies": {
+ "retext": "^9.0.0",
+ "retext-smartypants": "^6.0.0",
+ "unified": "^11.0.4",
+ "unist-util-visit": "^5.0.0"
+ },
+ "engines": {
+ "node": ">=16.0.0"
+ }
+ },
+ "node_modules/remark-stringify": {
+ "version": "11.0.0",
+ "resolved": "https://registry.npmjs.org/remark-stringify/-/remark-stringify-11.0.0.tgz",
+ "integrity": "sha512-1OSmLd3awB/t8qdoEOMazZkNsfVTeY4fTsgzcQFdXNq8ToTN4ZGwrMnlda4K6smTFKD+GRV6O48i6Z4iKgPPpw==",
+ "license": "MIT",
+ "dependencies": {
+ "@types/mdast": "^4.0.0",
+ "mdast-util-to-markdown": "^2.0.0",
+ "unified": "^11.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/unified"
+ }
+ },
+ "node_modules/resolve-from": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz",
+ "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/retext": {
+ "version": "9.0.0",
+ "resolved": "https://registry.npmjs.org/retext/-/retext-9.0.0.tgz",
+ "integrity": "sha512-sbMDcpHCNjvlheSgMfEcVrZko3cDzdbe1x/e7G66dFp0Ff7Mldvi2uv6JkJQzdRcvLYE8CA8Oe8siQx8ZOgTcA==",
+ "license": "MIT",
+ "dependencies": {
+ "@types/nlcst": "^2.0.0",
+ "retext-latin": "^4.0.0",
+ "retext-stringify": "^4.0.0",
+ "unified": "^11.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/unified"
+ }
+ },
+ "node_modules/retext-latin": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/retext-latin/-/retext-latin-4.0.0.tgz",
+ "integrity": "sha512-hv9woG7Fy0M9IlRQloq/N6atV82NxLGveq+3H2WOi79dtIYWN8OaxogDm77f8YnVXJL2VD3bbqowu5E3EMhBYA==",
+ "license": "MIT",
+ "dependencies": {
+ "@types/nlcst": "^2.0.0",
+ "parse-latin": "^7.0.0",
+ "unified": "^11.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/unified"
+ }
+ },
+ "node_modules/retext-smartypants": {
+ "version": "6.2.0",
+ "resolved": "https://registry.npmjs.org/retext-smartypants/-/retext-smartypants-6.2.0.tgz",
+ "integrity": "sha512-kk0jOU7+zGv//kfjXEBjdIryL1Acl4i9XNkHxtM7Tm5lFiCog576fjNC9hjoR7LTKQ0DsPWy09JummSsH1uqfQ==",
+ "license": "MIT",
+ "dependencies": {
+ "@types/nlcst": "^2.0.0",
+ "nlcst-to-string": "^4.0.0",
+ "unist-util-visit": "^5.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/unified"
+ }
+ },
+ "node_modules/retext-stringify": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/retext-stringify/-/retext-stringify-4.0.0.tgz",
+ "integrity": "sha512-rtfN/0o8kL1e+78+uxPTqu1Klt0yPzKuQ2BfWwwfgIUSayyzxpM1PJzkKt4V8803uB9qSy32MvI7Xep9khTpiA==",
+ "license": "MIT",
+ "dependencies": {
+ "@types/nlcst": "^2.0.0",
+ "nlcst-to-string": "^4.0.0",
+ "unified": "^11.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/unified"
+ }
+ },
+ "node_modules/rollup": {
+ "version": "4.60.1",
+ "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.60.1.tgz",
+ "integrity": "sha512-VmtB2rFU/GroZ4oL8+ZqXgSA38O6GR8KSIvWmEFv63pQ0G6KaBH9s07PO8XTXP4vI+3UJUEypOfjkGfmSBBR0w==",
+ "license": "MIT",
+ "dependencies": {
+ "@types/estree": "1.0.8"
+ },
+ "bin": {
+ "rollup": "dist/bin/rollup"
+ },
+ "engines": {
+ "node": ">=18.0.0",
+ "npm": ">=8.0.0"
+ },
+ "optionalDependencies": {
+ "@rollup/rollup-android-arm-eabi": "4.60.1",
+ "@rollup/rollup-android-arm64": "4.60.1",
+ "@rollup/rollup-darwin-arm64": "4.60.1",
+ "@rollup/rollup-darwin-x64": "4.60.1",
+ "@rollup/rollup-freebsd-arm64": "4.60.1",
+ "@rollup/rollup-freebsd-x64": "4.60.1",
+ "@rollup/rollup-linux-arm-gnueabihf": "4.60.1",
+ "@rollup/rollup-linux-arm-musleabihf": "4.60.1",
+ "@rollup/rollup-linux-arm64-gnu": "4.60.1",
+ "@rollup/rollup-linux-arm64-musl": "4.60.1",
+ "@rollup/rollup-linux-loong64-gnu": "4.60.1",
+ "@rollup/rollup-linux-loong64-musl": "4.60.1",
+ "@rollup/rollup-linux-ppc64-gnu": "4.60.1",
+ "@rollup/rollup-linux-ppc64-musl": "4.60.1",
+ "@rollup/rollup-linux-riscv64-gnu": "4.60.1",
+ "@rollup/rollup-linux-riscv64-musl": "4.60.1",
+ "@rollup/rollup-linux-s390x-gnu": "4.60.1",
+ "@rollup/rollup-linux-x64-gnu": "4.60.1",
+ "@rollup/rollup-linux-x64-musl": "4.60.1",
+ "@rollup/rollup-openbsd-x64": "4.60.1",
+ "@rollup/rollup-openharmony-arm64": "4.60.1",
+ "@rollup/rollup-win32-arm64-msvc": "4.60.1",
+ "@rollup/rollup-win32-ia32-msvc": "4.60.1",
+ "@rollup/rollup-win32-x64-gnu": "4.60.1",
+ "@rollup/rollup-win32-x64-msvc": "4.60.1",
+ "fsevents": "~2.3.2"
+ }
+ },
+ "node_modules/sax": {
+ "version": "1.6.0",
+ "resolved": "https://registry.npmjs.org/sax/-/sax-1.6.0.tgz",
+ "integrity": "sha512-6R3J5M4AcbtLUdZmRv2SygeVaM7IhrLXu9BmnOGmmACak8fiUtOsYNWUS4uK7upbmHIBbLBeFeI//477BKLBzA==",
+ "license": "BlueOak-1.0.0",
+ "engines": {
+ "node": ">=11.0.0"
+ }
+ },
+ "node_modules/semver": {
+ "version": "7.7.4",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.4.tgz",
+ "integrity": "sha512-vFKC2IEtQnVhpT78h1Yp8wzwrf8CM+MzKMHGJZfBtzhZNycRFnXsHk6E5TxIkkMsgNS7mdX3AGB7x2QM2di4lA==",
+ "license": "ISC",
+ "bin": {
+ "semver": "bin/semver.js"
+ },
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/sharp": {
+ "version": "0.34.3",
+ "resolved": "https://registry.npmjs.org/sharp/-/sharp-0.34.3.tgz",
+ "integrity": "sha512-eX2IQ6nFohW4DbvHIOLRB3MHFpYqaqvXd3Tp5e/T/dSH83fxaNJQRvDMhASmkNTsNTVF2/OOopzRCt7xokgPfg==",
+ "hasInstallScript": true,
+ "license": "Apache-2.0",
+ "optional": true,
+ "dependencies": {
+ "color": "^4.2.3",
+ "detect-libc": "^2.0.4",
+ "semver": "^7.7.2"
+ },
+ "engines": {
+ "node": "^18.17.0 || ^20.3.0 || >=21.0.0"
+ },
+ "funding": {
+ "url": "https://opencollective.com/libvips"
+ },
+ "optionalDependencies": {
+ "@img/sharp-darwin-arm64": "0.34.3",
+ "@img/sharp-darwin-x64": "0.34.3",
+ "@img/sharp-libvips-darwin-arm64": "1.2.0",
+ "@img/sharp-libvips-darwin-x64": "1.2.0",
+ "@img/sharp-libvips-linux-arm": "1.2.0",
+ "@img/sharp-libvips-linux-arm64": "1.2.0",
+ "@img/sharp-libvips-linux-ppc64": "1.2.0",
+ "@img/sharp-libvips-linux-s390x": "1.2.0",
+ "@img/sharp-libvips-linux-x64": "1.2.0",
+ "@img/sharp-libvips-linuxmusl-arm64": "1.2.0",
+ "@img/sharp-libvips-linuxmusl-x64": "1.2.0",
+ "@img/sharp-linux-arm": "0.34.3",
+ "@img/sharp-linux-arm64": "0.34.3",
+ "@img/sharp-linux-ppc64": "0.34.3",
+ "@img/sharp-linux-s390x": "0.34.3",
+ "@img/sharp-linux-x64": "0.34.3",
+ "@img/sharp-linuxmusl-arm64": "0.34.3",
+ "@img/sharp-linuxmusl-x64": "0.34.3",
+ "@img/sharp-wasm32": "0.34.3",
+ "@img/sharp-win32-arm64": "0.34.3",
+ "@img/sharp-win32-ia32": "0.34.3",
+ "@img/sharp-win32-x64": "0.34.3"
+ }
+ },
+ "node_modules/shebang-command": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz",
+ "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==",
+ "license": "MIT",
+ "dependencies": {
+ "shebang-regex": "^3.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/shebang-regex": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz",
+ "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/shiki": {
+ "version": "3.23.0",
+ "resolved": "https://registry.npmjs.org/shiki/-/shiki-3.23.0.tgz",
+ "integrity": "sha512-55Dj73uq9ZXL5zyeRPzHQsK7Nbyt6Y10k5s7OjuFZGMhpp4r/rsLBH0o/0fstIzX1Lep9VxefWljK/SKCzygIA==",
+ "license": "MIT",
+ "dependencies": {
+ "@shikijs/core": "3.23.0",
+ "@shikijs/engine-javascript": "3.23.0",
+ "@shikijs/engine-oniguruma": "3.23.0",
+ "@shikijs/langs": "3.23.0",
+ "@shikijs/themes": "3.23.0",
+ "@shikijs/types": "3.23.0",
+ "@shikijs/vscode-textmate": "^10.0.2",
+ "@types/hast": "^3.0.4"
+ }
+ },
+ "node_modules/signal-exit": {
+ "version": "4.1.0",
+ "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz",
+ "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==",
+ "license": "ISC",
+ "engines": {
+ "node": ">=14"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/isaacs"
+ }
+ },
+ "node_modules/simple-swizzle": {
+ "version": "0.2.2",
+ "resolved": "https://registry.npmjs.org/simple-swizzle/-/simple-swizzle-0.2.2.tgz",
+ "integrity": "sha512-JA//kQgZtbuY83m+xT+tXJkmJncGMTFT+C+g2h2R9uxkYIrE2yy9sgmcLhCnw57/WSD+Eh3J97FPEDFnbXnDUg==",
+ "license": "MIT",
+ "optional": true,
+ "dependencies": {
+ "is-arrayish": "^0.3.1"
+ }
+ },
+ "node_modules/sisteransi": {
+ "version": "1.0.5",
+ "resolved": "https://registry.npmjs.org/sisteransi/-/sisteransi-1.0.5.tgz",
+ "integrity": "sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==",
+ "license": "MIT"
+ },
+ "node_modules/sitemap": {
+ "version": "8.0.0",
+ "resolved": "https://registry.npmjs.org/sitemap/-/sitemap-8.0.0.tgz",
+ "integrity": "sha512-+AbdxhM9kJsHtruUF39bwS/B0Fytw6Fr1o4ZAIAEqA6cke2xcoO2GleBw9Zw7nRzILVEgz7zBM5GiTJjie1G9A==",
+ "license": "MIT",
+ "dependencies": {
+ "@types/node": "^17.0.5",
+ "@types/sax": "^1.2.1",
+ "arg": "^5.0.0",
+ "sax": "^1.2.4"
+ },
+ "bin": {
+ "sitemap": "dist/cli.js"
+ },
+ "engines": {
+ "node": ">=14.0.0",
+ "npm": ">=6.0.0"
+ }
+ },
+ "node_modules/sitemap/node_modules/@types/node": {
+ "version": "17.0.45",
+ "resolved": "https://registry.npmjs.org/@types/node/-/node-17.0.45.tgz",
+ "integrity": "sha512-w+tIMs3rq2afQdsPJlODhoUEKzFP1ayaoyl1CcnwtIlsVe7K7bA1NGm4s3PraqTLlXnbIN84zuBlxBWo1u9BLw==",
+ "license": "MIT"
+ },
+ "node_modules/smol-toml": {
+ "version": "1.6.1",
+ "resolved": "https://registry.npmjs.org/smol-toml/-/smol-toml-1.6.1.tgz",
+ "integrity": "sha512-dWUG8F5sIIARXih1DTaQAX4SsiTXhInKf1buxdY9DIg4ZYPZK5nGM1VRIYmEbDbsHt7USo99xSLFu5Q1IqTmsg==",
+ "license": "BSD-3-Clause",
+ "engines": {
+ "node": ">= 18"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/cyyynthia"
+ }
+ },
+ "node_modules/source-map": {
+ "version": "0.7.4",
+ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.4.tgz",
+ "integrity": "sha512-l3BikUxvPOcn5E74dZiq5BGsTb5yEwhaTSzccU6t4sDOH8NWJCstKO5QT2CvtFoK6F0saL7p9xHAqHOlCPJygA==",
+ "license": "BSD-3-Clause",
+ "engines": {
+ "node": ">= 8"
+ }
+ },
+ "node_modules/source-map-js": {
+ "version": "1.2.1",
+ "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.1.tgz",
+ "integrity": "sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==",
+ "license": "BSD-3-Clause",
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/space-separated-tokens": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/space-separated-tokens/-/space-separated-tokens-2.0.2.tgz",
+ "integrity": "sha512-PEGlAwrG8yXGXRjW32fGbg66JAlOAwbObuqVoJpv/mRgoWDQfgH1wDPvtzWyUSNAXBGSk8h755YDbbcEy3SH2Q==",
+ "license": "MIT",
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/wooorm"
+ }
+ },
+ "node_modules/stream-replace-string": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/stream-replace-string/-/stream-replace-string-2.0.0.tgz",
+ "integrity": "sha512-TlnjJ1C0QrmxRNrON00JvaFFlNh5TTG00APw23j74ET7gkQpTASi6/L2fuiav8pzK715HXtUeClpBTw2NPSn6w==",
+ "license": "MIT"
+ },
+ "node_modules/string-width": {
+ "version": "7.2.0",
+ "resolved": "https://registry.npmjs.org/string-width/-/string-width-7.2.0.tgz",
+ "integrity": "sha512-tsaTIkKW9b4N+AEj+SVA+WhJzV7/zMhcSu78mLKWSk7cXMOSHsBKFWUs0fWwq8QyK3MgJBQRX6Gbi4kYbdvGkQ==",
+ "license": "MIT",
+ "dependencies": {
+ "emoji-regex": "^10.3.0",
+ "get-east-asian-width": "^1.0.0",
+ "strip-ansi": "^7.1.0"
+ },
+ "engines": {
+ "node": ">=18"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/string-width-cjs": {
+ "name": "string-width",
+ "version": "4.2.3",
+ "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz",
+ "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==",
+ "license": "MIT",
+ "dependencies": {
+ "emoji-regex": "^8.0.0",
+ "is-fullwidth-code-point": "^3.0.0",
+ "strip-ansi": "^6.0.1"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/string-width-cjs/node_modules/ansi-regex": {
+ "version": "5.0.1",
+ "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz",
+ "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/string-width-cjs/node_modules/emoji-regex": {
+ "version": "8.0.0",
+ "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz",
+ "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==",
+ "license": "MIT"
+ },
+ "node_modules/string-width-cjs/node_modules/strip-ansi": {
+ "version": "6.0.1",
+ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz",
+ "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==",
+ "license": "MIT",
+ "dependencies": {
+ "ansi-regex": "^5.0.1"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/stringify-entities": {
+ "version": "4.0.4",
+ "resolved": "https://registry.npmjs.org/stringify-entities/-/stringify-entities-4.0.4.tgz",
+ "integrity": "sha512-IwfBptatlO+QCJUo19AqvrPNqlVMpW9YEL2LIVY+Rpv2qsjCGxaDLNRgeGsQWJhfItebuJhsGSLjaBbNSQ+ieg==",
+ "license": "MIT",
+ "dependencies": {
+ "character-entities-html4": "^2.0.0",
+ "character-entities-legacy": "^3.0.0"
+ },
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/wooorm"
+ }
+ },
+ "node_modules/strip-ansi": {
+ "version": "7.1.0",
+ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz",
+ "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==",
+ "license": "MIT",
+ "dependencies": {
+ "ansi-regex": "^6.0.1"
+ },
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/strip-ansi?sponsor=1"
+ }
+ },
+ "node_modules/strip-ansi-cjs": {
+ "name": "strip-ansi",
+ "version": "6.0.1",
+ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz",
+ "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==",
+ "license": "MIT",
+ "dependencies": {
+ "ansi-regex": "^5.0.1"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/strip-ansi-cjs/node_modules/ansi-regex": {
+ "version": "5.0.1",
+ "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz",
+ "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/strnum": {
+ "version": "1.1.2",
+ "resolved": "https://registry.npmjs.org/strnum/-/strnum-1.1.2.tgz",
+ "integrity": "sha512-vrN+B7DBIoTTZjnPNewwhx6cBA/H+IS7rfW68n7XxC1y7uoiGQBxaKzqucGUgavX15dJgiGztLJ8vxuEzwqBdA==",
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/NaturalIntelligence"
+ }
+ ],
+ "license": "MIT"
+ },
+ "node_modules/style-to-js": {
+ "version": "1.1.16",
+ "resolved": "https://registry.npmjs.org/style-to-js/-/style-to-js-1.1.16.tgz",
+ "integrity": "sha512-/Q6ld50hKYPH3d/r6nr117TZkHR0w0kGGIVfpG9N6D8NymRPM9RqCUv4pRpJ62E5DqOYx2AFpbZMyCPnjQCnOw==",
+ "license": "MIT",
+ "dependencies": {
+ "style-to-object": "1.0.8"
+ }
+ },
+ "node_modules/style-to-object": {
+ "version": "1.0.8",
+ "resolved": "https://registry.npmjs.org/style-to-object/-/style-to-object-1.0.8.tgz",
+ "integrity": "sha512-xT47I/Eo0rwJmaXC4oilDGDWLohVhR6o/xAQcPQN8q6QBuZVL8qMYL85kLmST5cPjAorwvqIA4qXTRQoYHaL6g==",
+ "license": "MIT",
+ "dependencies": {
+ "inline-style-parser": "0.2.4"
+ }
+ },
+ "node_modules/svgo": {
+ "version": "4.0.1",
+ "resolved": "https://registry.npmjs.org/svgo/-/svgo-4.0.1.tgz",
+ "integrity": "sha512-XDpWUOPC6FEibaLzjfe0ucaV0YrOjYotGJO1WpF0Zd+n6ZGEQUsSugaoLq9QkEZtAfQIxT42UChcssDVPP3+/w==",
+ "license": "MIT",
+ "dependencies": {
+ "commander": "^11.1.0",
+ "css-select": "^5.1.0",
+ "css-tree": "^3.0.1",
+ "css-what": "^6.1.0",
+ "csso": "^5.0.5",
+ "picocolors": "^1.1.1",
+ "sax": "^1.5.0"
+ },
+ "bin": {
+ "svgo": "bin/svgo.js"
+ },
+ "engines": {
+ "node": ">=16"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/svgo"
+ }
+ },
+ "node_modules/tailwindcss": {
+ "version": "4.0.13",
+ "resolved": "https://registry.npmjs.org/tailwindcss/-/tailwindcss-4.0.13.tgz",
+ "integrity": "sha512-gbvFrB0fOsTv/OugXWi2PtflJ4S6/ctu6Mmn3bCftmLY/6xRsQVEJPgIIpABwpZ52DpONkCA3bEj5b54MHxF2Q==",
+ "license": "MIT"
+ },
+ "node_modules/tapable": {
+ "version": "2.2.1",
+ "resolved": "https://registry.npmjs.org/tapable/-/tapable-2.2.1.tgz",
+ "integrity": "sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/tar": {
+ "version": "7.5.13",
+ "resolved": "https://registry.npmjs.org/tar/-/tar-7.5.13.tgz",
+ "integrity": "sha512-tOG/7GyXpFevhXVh8jOPJrmtRpOTsYqUIkVdVooZYJS/z8WhfQUX8RJILmeuJNinGAMSu1veBr4asSHFt5/hng==",
+ "license": "BlueOak-1.0.0",
+ "dependencies": {
+ "@isaacs/fs-minipass": "^4.0.0",
+ "chownr": "^3.0.0",
+ "minipass": "^7.1.2",
+ "minizlib": "^3.1.0",
+ "yallist": "^5.0.0"
+ },
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/tiny-inflate": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/tiny-inflate/-/tiny-inflate-1.0.3.tgz",
+ "integrity": "sha512-pkY1fj1cKHb2seWDy0B16HeWyczlJA9/WW3u3c4z/NiWDsO3DOU5D7nhTLE9CF0yXv/QZFY7sEJmj24dK+Rrqw==",
+ "license": "MIT"
+ },
+ "node_modules/tinyexec": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/tinyexec/-/tinyexec-1.1.1.tgz",
+ "integrity": "sha512-VKS/ZaQhhkKFMANmAOhhXVoIfBXblQxGX1myCQ2faQrfmobMftXeJPcZGp0gS07ocvGJWDLZGyOZDadDBqYIJg==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/tinyglobby": {
+ "version": "0.2.15",
+ "resolved": "https://registry.npmjs.org/tinyglobby/-/tinyglobby-0.2.15.tgz",
+ "integrity": "sha512-j2Zq4NyQYG5XMST4cbs02Ak8iJUdxRM0XI5QyxXuZOzKOINmWurp3smXu3y5wDcJrptwpSjgXHzIQxR0omXljQ==",
+ "license": "MIT",
+ "dependencies": {
+ "fdir": "^6.5.0",
+ "picomatch": "^4.0.3"
+ },
+ "engines": {
+ "node": ">=12.0.0"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/SuperchupuDev"
+ }
+ },
+ "node_modules/tr46": {
+ "version": "0.0.3",
+ "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz",
+ "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==",
+ "license": "MIT"
+ },
+ "node_modules/trim-lines": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/trim-lines/-/trim-lines-3.0.1.tgz",
+ "integrity": "sha512-kRj8B+YHZCc9kQYdWfJB2/oUl9rA99qbowYYBtr4ui4mZyAQ2JpvVBd/6U2YloATfqBhBTSMhTpgBHtU0Mf3Rg==",
+ "license": "MIT",
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/wooorm"
+ }
+ },
+ "node_modules/trough": {
+ "version": "2.2.0",
+ "resolved": "https://registry.npmjs.org/trough/-/trough-2.2.0.tgz",
+ "integrity": "sha512-tmMpK00BjZiUyVyvrBK7knerNgmgvcV/KLVyuma/SC+TQN167GrMRciANTz09+k3zW8L8t60jWO1GpfkZdjTaw==",
+ "license": "MIT",
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/wooorm"
+ }
+ },
+ "node_modules/tsconfck": {
+ "version": "3.1.6",
+ "resolved": "https://registry.npmjs.org/tsconfck/-/tsconfck-3.1.6.tgz",
+ "integrity": "sha512-ks6Vjr/jEw0P1gmOVwutM3B7fWxoWBL2KRDb1JfqGVawBmO5UsvmWOQFGHBPl5yxYz4eERr19E6L7NMv+Fej4w==",
+ "license": "MIT",
+ "bin": {
+ "tsconfck": "bin/tsconfck.js"
+ },
+ "engines": {
+ "node": "^18 || >=20"
+ },
+ "peerDependencies": {
+ "typescript": "^5.0.0"
+ },
+ "peerDependenciesMeta": {
+ "typescript": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/tslib": {
+ "version": "2.8.1",
+ "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz",
+ "integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==",
+ "license": "0BSD",
+ "optional": true
+ },
+ "node_modules/type-fest": {
+ "version": "4.37.0",
+ "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-4.37.0.tgz",
+ "integrity": "sha512-S/5/0kFftkq27FPNye0XM1e2NsnoD/3FS+pBmbjmmtLT6I+i344KoOf7pvXreaFsDamWeaJX55nczA1m5PsBDg==",
+ "license": "(MIT OR CC0-1.0)",
+ "engines": {
+ "node": ">=16"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/typescript": {
+ "version": "5.8.2",
+ "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.8.2.tgz",
+ "integrity": "sha512-aJn6wq13/afZp/jT9QZmwEjDqqvSGp1VT5GVg+f/t6/oVyrgXM6BY1h9BRh/O5p3PlUPAe+WuiEZOmb/49RqoQ==",
+ "license": "Apache-2.0",
+ "peer": true,
+ "bin": {
+ "tsc": "bin/tsc",
+ "tsserver": "bin/tsserver"
+ },
+ "engines": {
+ "node": ">=14.17"
+ }
+ },
+ "node_modules/ufo": {
+ "version": "1.6.3",
+ "resolved": "https://registry.npmjs.org/ufo/-/ufo-1.6.3.tgz",
+ "integrity": "sha512-yDJTmhydvl5lJzBmy/hyOAA0d+aqCBuwl818haVdYCRrWV84o7YyeVm4QlVHStqNrrJSTb6jKuFAVqAFsr+K3Q==",
+ "license": "MIT"
+ },
+ "node_modules/ultrahtml": {
+ "version": "1.6.0",
+ "resolved": "https://registry.npmjs.org/ultrahtml/-/ultrahtml-1.6.0.tgz",
+ "integrity": "sha512-R9fBn90VTJrqqLDwyMph+HGne8eqY1iPfYhPzZrvKpIfwkWZbcYlfpsb8B9dTvBfpy1/hqAD7Wi8EKfP9e8zdw==",
+ "license": "MIT"
+ },
+ "node_modules/uncrypto": {
+ "version": "0.1.3",
+ "resolved": "https://registry.npmjs.org/uncrypto/-/uncrypto-0.1.3.tgz",
+ "integrity": "sha512-Ql87qFHB3s/De2ClA9e0gsnS6zXG27SkTiSJwjCc9MebbfapQfuPzumMIUMi38ezPZVNFcHI9sUIepeQfw8J8Q==",
+ "license": "MIT"
+ },
+ "node_modules/undici-types": {
+ "version": "6.20.0",
+ "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-6.20.0.tgz",
+ "integrity": "sha512-Ny6QZ2Nju20vw1SRHe3d9jVu6gJ+4e3+MMpqu7pqE5HT6WsTSlce++GQmK5UXS8mzV8DSYHrQH+Xrf2jVcuKNg==",
+ "license": "MIT"
+ },
+ "node_modules/unified": {
+ "version": "11.0.5",
+ "resolved": "https://registry.npmjs.org/unified/-/unified-11.0.5.tgz",
+ "integrity": "sha512-xKvGhPWw3k84Qjh8bI3ZeJjqnyadK+GEFtazSfZv/rKeTkTjOJho6mFqh2SM96iIcZokxiOpg78GazTSg8+KHA==",
+ "license": "MIT",
+ "dependencies": {
+ "@types/unist": "^3.0.0",
+ "bail": "^2.0.0",
+ "devlop": "^1.0.0",
+ "extend": "^3.0.0",
+ "is-plain-obj": "^4.0.0",
+ "trough": "^2.0.0",
+ "vfile": "^6.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/unified"
+ }
+ },
+ "node_modules/unifont": {
+ "version": "0.7.4",
+ "resolved": "https://registry.npmjs.org/unifont/-/unifont-0.7.4.tgz",
+ "integrity": "sha512-oHeis4/xl42HUIeHuNZRGEvxj5AaIKR+bHPNegRq5LV1gdc3jundpONbjglKpihmJf+dswygdMJn3eftGIMemg==",
+ "license": "MIT",
+ "dependencies": {
+ "css-tree": "^3.1.0",
+ "ofetch": "^1.5.1",
+ "ohash": "^2.0.11"
+ }
+ },
+ "node_modules/unist-util-find-after": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/unist-util-find-after/-/unist-util-find-after-5.0.0.tgz",
+ "integrity": "sha512-amQa0Ep2m6hE2g72AugUItjbuM8X8cGQnFoHk0pGfrFeT9GZhzN5SW8nRsiGKK7Aif4CrACPENkA6P/Lw6fHGQ==",
+ "dependencies": {
+ "@types/unist": "^3.0.0",
+ "unist-util-is": "^6.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/unified"
+ }
+ },
+ "node_modules/unist-util-is": {
+ "version": "6.0.0",
+ "resolved": "https://registry.npmjs.org/unist-util-is/-/unist-util-is-6.0.0.tgz",
+ "integrity": "sha512-2qCTHimwdxLfz+YzdGfkqNlH0tLi9xjTnHddPmJwtIG9MGsdbutfTc4P+haPD7l7Cjxf/WZj+we5qfVPvvxfYw==",
+ "license": "MIT",
+ "dependencies": {
+ "@types/unist": "^3.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/unified"
+ }
+ },
+ "node_modules/unist-util-modify-children": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/unist-util-modify-children/-/unist-util-modify-children-4.0.0.tgz",
+ "integrity": "sha512-+tdN5fGNddvsQdIzUF3Xx82CU9sMM+fA0dLgR9vOmT0oPT2jH+P1nd5lSqfCfXAw+93NhcXNY2qqvTUtE4cQkw==",
+ "license": "MIT",
+ "dependencies": {
+ "@types/unist": "^3.0.0",
+ "array-iterate": "^2.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/unified"
+ }
+ },
+ "node_modules/unist-util-position": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/unist-util-position/-/unist-util-position-5.0.0.tgz",
+ "integrity": "sha512-fucsC7HjXvkB5R3kTCO7kUjRdrS0BJt3M/FPxmHMBOm8JQi2BsHAHFsy27E0EolP8rp0NzXsJ+jNPyDWvOJZPA==",
+ "license": "MIT",
+ "dependencies": {
+ "@types/unist": "^3.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/unified"
+ }
+ },
+ "node_modules/unist-util-position-from-estree": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/unist-util-position-from-estree/-/unist-util-position-from-estree-2.0.0.tgz",
+ "integrity": "sha512-KaFVRjoqLyF6YXCbVLNad/eS4+OfPQQn2yOd7zF/h5T/CSL2v8NpN6a5TPvtbXthAGw5nG+PuTtq+DdIZr+cRQ==",
+ "license": "MIT",
+ "dependencies": {
+ "@types/unist": "^3.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/unified"
+ }
+ },
+ "node_modules/unist-util-remove-position": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/unist-util-remove-position/-/unist-util-remove-position-5.0.0.tgz",
+ "integrity": "sha512-Hp5Kh3wLxv0PHj9m2yZhhLt58KzPtEYKQQ4yxfYFEO7EvHwzyDYnduhHnY1mDxoqr7VUwVuHXk9RXKIiYS1N8Q==",
+ "dependencies": {
+ "@types/unist": "^3.0.0",
+ "unist-util-visit": "^5.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/unified"
+ }
+ },
+ "node_modules/unist-util-stringify-position": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/unist-util-stringify-position/-/unist-util-stringify-position-4.0.0.tgz",
+ "integrity": "sha512-0ASV06AAoKCDkS2+xw5RXJywruurpbC4JZSm7nr7MOt1ojAzvyyaO+UxZf18j8FCF6kmzCZKcAgN/yu2gm2XgQ==",
+ "license": "MIT",
+ "dependencies": {
+ "@types/unist": "^3.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/unified"
+ }
+ },
+ "node_modules/unist-util-visit": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/unist-util-visit/-/unist-util-visit-5.0.0.tgz",
+ "integrity": "sha512-MR04uvD+07cwl/yhVuVWAtw+3GOR/knlL55Nd/wAdblk27GCVt3lqpTivy/tkJcZoNPzTwS1Y+KMojlLDhoTzg==",
+ "license": "MIT",
+ "dependencies": {
+ "@types/unist": "^3.0.0",
+ "unist-util-is": "^6.0.0",
+ "unist-util-visit-parents": "^6.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/unified"
+ }
+ },
+ "node_modules/unist-util-visit-children": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/unist-util-visit-children/-/unist-util-visit-children-3.0.0.tgz",
+ "integrity": "sha512-RgmdTfSBOg04sdPcpTSD1jzoNBjt9a80/ZCzp5cI9n1qPzLZWF9YdvWGN2zmTumP1HWhXKdUWexjy/Wy/lJ7tA==",
+ "license": "MIT",
+ "dependencies": {
+ "@types/unist": "^3.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/unified"
+ }
+ },
+ "node_modules/unist-util-visit-parents": {
+ "version": "6.0.2",
+ "resolved": "https://registry.npmjs.org/unist-util-visit-parents/-/unist-util-visit-parents-6.0.2.tgz",
+ "integrity": "sha512-goh1s1TBrqSqukSc8wrjwWhL0hiJxgA8m4kFxGlQ+8FYQ3C/m11FcTs4YYem7V664AhHVvgoQLk890Ssdsr2IQ==",
+ "license": "MIT",
+ "dependencies": {
+ "@types/unist": "^3.0.0",
+ "unist-util-is": "^6.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/unified"
+ }
+ },
+ "node_modules/unstorage": {
+ "version": "1.17.5",
+ "resolved": "https://registry.npmjs.org/unstorage/-/unstorage-1.17.5.tgz",
+ "integrity": "sha512-0i3iqvRfx29hkNntHyQvJTpf5W9dQ9ZadSoRU8+xVlhVtT7jAX57fazYO9EHvcRCfBCyi5YRya7XCDOsbTgkPg==",
+ "license": "MIT",
+ "dependencies": {
+ "anymatch": "^3.1.3",
+ "chokidar": "^5.0.0",
+ "destr": "^2.0.5",
+ "h3": "^1.15.10",
+ "lru-cache": "^11.2.7",
+ "node-fetch-native": "^1.6.7",
+ "ofetch": "^1.5.1",
+ "ufo": "^1.6.3"
+ },
+ "peerDependencies": {
+ "@azure/app-configuration": "^1.8.0",
+ "@azure/cosmos": "^4.2.0",
+ "@azure/data-tables": "^13.3.0",
+ "@azure/identity": "^4.6.0",
+ "@azure/keyvault-secrets": "^4.9.0",
+ "@azure/storage-blob": "^12.26.0",
+ "@capacitor/preferences": "^6 || ^7 || ^8",
+ "@deno/kv": ">=0.9.0",
+ "@netlify/blobs": "^6.5.0 || ^7.0.0 || ^8.1.0 || ^9.0.0 || ^10.0.0",
+ "@planetscale/database": "^1.19.0",
+ "@upstash/redis": "^1.34.3",
+ "@vercel/blob": ">=0.27.1",
+ "@vercel/functions": "^2.2.12 || ^3.0.0",
+ "@vercel/kv": "^1 || ^2 || ^3",
+ "aws4fetch": "^1.0.20",
+ "db0": ">=0.2.1",
+ "idb-keyval": "^6.2.1",
+ "ioredis": "^5.4.2",
+ "uploadthing": "^7.4.4"
+ },
+ "peerDependenciesMeta": {
+ "@azure/app-configuration": {
+ "optional": true
+ },
+ "@azure/cosmos": {
+ "optional": true
+ },
+ "@azure/data-tables": {
+ "optional": true
+ },
+ "@azure/identity": {
+ "optional": true
+ },
+ "@azure/keyvault-secrets": {
+ "optional": true
+ },
+ "@azure/storage-blob": {
+ "optional": true
+ },
+ "@capacitor/preferences": {
+ "optional": true
+ },
+ "@deno/kv": {
+ "optional": true
+ },
+ "@netlify/blobs": {
+ "optional": true
+ },
+ "@planetscale/database": {
+ "optional": true
+ },
+ "@upstash/redis": {
+ "optional": true
+ },
+ "@vercel/blob": {
+ "optional": true
+ },
+ "@vercel/functions": {
+ "optional": true
+ },
+ "@vercel/kv": {
+ "optional": true
+ },
+ "aws4fetch": {
+ "optional": true
+ },
+ "db0": {
+ "optional": true
+ },
+ "idb-keyval": {
+ "optional": true
+ },
+ "ioredis": {
+ "optional": true
+ },
+ "uploadthing": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/unstorage/node_modules/lru-cache": {
+ "version": "11.3.5",
+ "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-11.3.5.tgz",
+ "integrity": "sha512-NxVFwLAnrd9i7KUBxC4DrUhmgjzOs+1Qm50D3oF1/oL+r1NpZ4gA7xvG0/zJ8evR7zIKn4vLf7qTNduWFtCrRw==",
+ "license": "BlueOak-1.0.0",
+ "engines": {
+ "node": "20 || >=22"
+ }
+ },
+ "node_modules/util-deprecate": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz",
+ "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/vfile": {
+ "version": "6.0.3",
+ "resolved": "https://registry.npmjs.org/vfile/-/vfile-6.0.3.tgz",
+ "integrity": "sha512-KzIbH/9tXat2u30jf+smMwFCsno4wHVdNmzFyL+T/L3UGqqk6JKfVqOFOZEpZSHADH1k40ab6NUIXZq422ov3Q==",
+ "license": "MIT",
+ "dependencies": {
+ "@types/unist": "^3.0.0",
+ "vfile-message": "^4.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/unified"
+ }
+ },
+ "node_modules/vfile-location": {
+ "version": "5.0.3",
+ "resolved": "https://registry.npmjs.org/vfile-location/-/vfile-location-5.0.3.tgz",
+ "integrity": "sha512-5yXvWDEgqeiYiBe1lbxYF7UMAIm/IcopxMHrMQDq3nvKcjPKIhZklUKL+AE7J7uApI4kwe2snsK+eI6UTj9EHg==",
+ "license": "MIT",
+ "dependencies": {
+ "@types/unist": "^3.0.0",
+ "vfile": "^6.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/unified"
+ }
+ },
+ "node_modules/vfile-message": {
+ "version": "4.0.2",
+ "resolved": "https://registry.npmjs.org/vfile-message/-/vfile-message-4.0.2.tgz",
+ "integrity": "sha512-jRDZ1IMLttGj41KcZvlrYAaI3CfqpLpfpf+Mfig13viT6NKvRzWZ+lXz0Y5D60w6uJIBAOGq9mSHf0gktF0duw==",
+ "license": "MIT",
+ "dependencies": {
+ "@types/unist": "^3.0.0",
+ "unist-util-stringify-position": "^4.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/unified"
+ }
+ },
+ "node_modules/vite": {
+ "version": "6.4.2",
+ "resolved": "https://registry.npmjs.org/vite/-/vite-6.4.2.tgz",
+ "integrity": "sha512-2N/55r4JDJ4gdrCvGgINMy+HH3iRpNIz8K6SFwVsA+JbQScLiC+clmAxBgwiSPgcG9U15QmvqCGWzMbqda5zGQ==",
+ "license": "MIT",
+ "dependencies": {
+ "esbuild": "^0.25.0",
+ "fdir": "^6.4.4",
+ "picomatch": "^4.0.2",
+ "postcss": "^8.5.3",
+ "rollup": "^4.34.9",
+ "tinyglobby": "^0.2.13"
+ },
+ "bin": {
+ "vite": "bin/vite.js"
+ },
+ "engines": {
+ "node": "^18.0.0 || ^20.0.0 || >=22.0.0"
+ },
+ "funding": {
+ "url": "https://github.com/vitejs/vite?sponsor=1"
+ },
+ "optionalDependencies": {
+ "fsevents": "~2.3.3"
+ },
+ "peerDependencies": {
+ "@types/node": "^18.0.0 || ^20.0.0 || >=22.0.0",
+ "jiti": ">=1.21.0",
+ "less": "*",
+ "lightningcss": "^1.21.0",
+ "sass": "*",
+ "sass-embedded": "*",
+ "stylus": "*",
+ "sugarss": "*",
+ "terser": "^5.16.0",
+ "tsx": "^4.8.1",
+ "yaml": "^2.4.2"
+ },
+ "peerDependenciesMeta": {
+ "@types/node": {
+ "optional": true
+ },
+ "jiti": {
+ "optional": true
+ },
+ "less": {
+ "optional": true
+ },
+ "lightningcss": {
+ "optional": true
+ },
+ "sass": {
+ "optional": true
+ },
+ "sass-embedded": {
+ "optional": true
+ },
+ "stylus": {
+ "optional": true
+ },
+ "sugarss": {
+ "optional": true
+ },
+ "terser": {
+ "optional": true
+ },
+ "tsx": {
+ "optional": true
+ },
+ "yaml": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/vitefu": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/vitefu/-/vitefu-1.1.1.tgz",
+ "integrity": "sha512-B/Fegf3i8zh0yFbpzZ21amWzHmuNlLlmJT6n7bu5e+pCHUKQIfXSYokrqOBGEMMe9UG2sostKQF9mml/vYaWJQ==",
+ "license": "MIT",
+ "workspaces": [
+ "tests/deps/*",
+ "tests/projects/*",
+ "tests/projects/workspace/packages/*"
+ ],
+ "peerDependencies": {
+ "vite": "^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0-beta.0"
+ },
+ "peerDependenciesMeta": {
+ "vite": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/web-namespaces": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/web-namespaces/-/web-namespaces-2.0.1.tgz",
+ "integrity": "sha512-bKr1DkiNa2krS7qxNtdrtHAmzuYGFQLiQ13TsorsdT6ULTkPLKuu5+GsFpDlg6JFjUTwX2DyhMPG2be8uPrqsQ==",
+ "license": "MIT",
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/wooorm"
+ }
+ },
+ "node_modules/webidl-conversions": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz",
+ "integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==",
+ "license": "BSD-2-Clause"
+ },
+ "node_modules/whatwg-url": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz",
+ "integrity": "sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==",
+ "license": "MIT",
+ "dependencies": {
+ "tr46": "~0.0.3",
+ "webidl-conversions": "^3.0.0"
+ }
+ },
+ "node_modules/which": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz",
+ "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==",
+ "license": "ISC",
+ "dependencies": {
+ "isexe": "^2.0.0"
+ },
+ "bin": {
+ "node-which": "bin/node-which"
+ },
+ "engines": {
+ "node": ">= 8"
+ }
+ },
+ "node_modules/which-pm-runs": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/which-pm-runs/-/which-pm-runs-1.1.0.tgz",
+ "integrity": "sha512-n1brCuqClxfFfq/Rb0ICg9giSZqCS+pLtccdag6C2HyufBrh3fBOiy9nb6ggRMvWOVH5GrdJskj5iGTZNxd7SA==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/widest-line": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/widest-line/-/widest-line-5.0.0.tgz",
+ "integrity": "sha512-c9bZp7b5YtRj2wOe6dlj32MK+Bx/M/d+9VB2SHM1OtsUHR0aV0tdP6DWh/iMt0kWi1t5g1Iudu6hQRNd1A4PVA==",
+ "license": "MIT",
+ "dependencies": {
+ "string-width": "^7.0.0"
+ },
+ "engines": {
+ "node": ">=18"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/wrap-ansi": {
+ "version": "9.0.0",
+ "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-9.0.0.tgz",
+ "integrity": "sha512-G8ura3S+3Z2G+mkgNRq8dqaFZAuxfsxpBB8OCTGRTCtp+l/v9nbFNmCUP1BZMts3G1142MsZfn6eeUKrr4PD1Q==",
+ "license": "MIT",
+ "dependencies": {
+ "ansi-styles": "^6.2.1",
+ "string-width": "^7.0.0",
+ "strip-ansi": "^7.1.0"
+ },
+ "engines": {
+ "node": ">=18"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/wrap-ansi?sponsor=1"
+ }
+ },
+ "node_modules/wrap-ansi-cjs": {
+ "name": "wrap-ansi",
+ "version": "7.0.0",
+ "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz",
+ "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==",
+ "license": "MIT",
+ "dependencies": {
+ "ansi-styles": "^4.0.0",
+ "string-width": "^4.1.0",
+ "strip-ansi": "^6.0.0"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/wrap-ansi?sponsor=1"
+ }
+ },
+ "node_modules/wrap-ansi-cjs/node_modules/ansi-regex": {
+ "version": "5.0.1",
+ "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz",
+ "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/wrap-ansi-cjs/node_modules/ansi-styles": {
+ "version": "4.3.0",
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
+ "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
+ "license": "MIT",
+ "dependencies": {
+ "color-convert": "^2.0.1"
+ },
+ "engines": {
+ "node": ">=8"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/ansi-styles?sponsor=1"
+ }
+ },
+ "node_modules/wrap-ansi-cjs/node_modules/emoji-regex": {
+ "version": "8.0.0",
+ "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz",
+ "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==",
+ "license": "MIT"
+ },
+ "node_modules/wrap-ansi-cjs/node_modules/string-width": {
+ "version": "4.2.3",
+ "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz",
+ "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==",
+ "license": "MIT",
+ "dependencies": {
+ "emoji-regex": "^8.0.0",
+ "is-fullwidth-code-point": "^3.0.0",
+ "strip-ansi": "^6.0.1"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/wrap-ansi-cjs/node_modules/strip-ansi": {
+ "version": "6.0.1",
+ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz",
+ "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==",
+ "license": "MIT",
+ "dependencies": {
+ "ansi-regex": "^5.0.1"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/xxhash-wasm": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/xxhash-wasm/-/xxhash-wasm-1.1.0.tgz",
+ "integrity": "sha512-147y/6YNh+tlp6nd/2pWq38i9h6mz/EuQ6njIrmW8D1BS5nCqs0P6DG+m6zTGnNz5I+uhZ0SHxBs9BsPrwcKDA==",
+ "license": "MIT"
+ },
+ "node_modules/yallist": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/yallist/-/yallist-5.0.0.tgz",
+ "integrity": "sha512-YgvUTfwqyc7UXVMrB+SImsVYSmTS8X/tSrtdNZMImM+n7+QTriRXyXim0mBrTXNeqzVF0KWGgHPeiyViFFrNDw==",
+ "license": "BlueOak-1.0.0",
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/yargs-parser": {
+ "version": "21.1.1",
+ "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz",
+ "integrity": "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==",
+ "license": "ISC",
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/yocto-queue": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-1.2.0.tgz",
+ "integrity": "sha512-KHBC7z61OJeaMGnF3wqNZj+GGNXOyypZviiKpQeiHirG5Ib1ImwcLBH70rbMSkKfSmUNBsdf2PwaEJtKvgmkNw==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=12.20"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/yocto-spinner": {
+ "version": "0.2.3",
+ "resolved": "https://registry.npmjs.org/yocto-spinner/-/yocto-spinner-0.2.3.tgz",
+ "integrity": "sha512-sqBChb33loEnkoXte1bLg45bEBsOP9N1kzQh5JZNKj/0rik4zAPTNSAVPj3uQAdc6slYJ0Ksc403G2XgxsJQFQ==",
+ "license": "MIT",
+ "dependencies": {
+ "yoctocolors": "^2.1.1"
+ },
+ "engines": {
+ "node": ">=18.19"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/yoctocolors": {
+ "version": "2.1.2",
+ "resolved": "https://registry.npmjs.org/yoctocolors/-/yoctocolors-2.1.2.tgz",
+ "integrity": "sha512-CzhO+pFNo8ajLM2d2IW/R93ipy99LWjtwblvC1RsoSUMZgyLbYFr221TnSNT7GjGdYui6P459mw9JH/g/zW2ug==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=18"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/zod": {
+ "version": "3.25.76",
+ "resolved": "https://registry.npmjs.org/zod/-/zod-3.25.76.tgz",
+ "integrity": "sha512-gzUt/qt81nXsFGKIFcC3YnfEAx5NkunCfnDlvuBSSFS02bcXu4Lmea0AFIUwbLWxWPx3d9p8S5QoaujKcNQxcQ==",
+ "license": "MIT",
+ "funding": {
+ "url": "https://github.com/sponsors/colinhacks"
+ }
+ },
+ "node_modules/zod-to-json-schema": {
+ "version": "3.25.2",
+ "resolved": "https://registry.npmjs.org/zod-to-json-schema/-/zod-to-json-schema-3.25.2.tgz",
+ "integrity": "sha512-O/PgfnpT1xKSDeQYSCfRI5Gy3hPf91mKVDuYLUHZJMiDFptvP41MSnWofm8dnCm0256ZNfZIM7DSzuSMAFnjHA==",
+ "license": "ISC",
+ "peerDependencies": {
+ "zod": "^3.25.28 || ^4"
+ }
+ },
+ "node_modules/zod-to-ts": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/zod-to-ts/-/zod-to-ts-1.2.0.tgz",
+ "integrity": "sha512-x30XE43V+InwGpvTySRNz9kB7qFU8DlyEy7BsSTCHPH1R0QasMmHWZDCzYm6bVXtj/9NNJAZF3jW8rzFvH5OFA==",
+ "peerDependencies": {
+ "typescript": "^4.9.4 || ^5.0.2",
+ "zod": "^3"
+ }
+ },
+ "node_modules/zwitch": {
+ "version": "2.0.4",
+ "resolved": "https://registry.npmjs.org/zwitch/-/zwitch-2.0.4.tgz",
+ "integrity": "sha512-bXE4cR/kVZhKZX/RjPEflHaKVhUVl85noU3v6b8apfQEc1x4A+zBxjZ4lN8LqGd6WZ3dl98pY4o717VFmoPp+A==",
+ "license": "MIT",
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/wooorm"
+ }
+ }
+ }
+}
diff --git a/package.json b/package.json
new file mode 100644
index 0000000..bb1e002
--- /dev/null
+++ b/package.json
@@ -0,0 +1,24 @@
+{
+ "name": "website",
+ "type": "module",
+ "version": "0.0.1",
+ "scripts": {
+ "dev": "astro dev",
+ "build": "astro build",
+ "preview": "astro preview",
+ "astro": "astro"
+ },
+ "dependencies": {
+ "@astrojs/mdx": "^4.2.2",
+ "@astrojs/netlify": "^6.2.4",
+ "@astrojs/rss": "^4.0.11",
+ "@astrojs/sitemap": "^3.3.0",
+ "@tailwindcss/vite": "^4.0.13",
+ "astro": "^5.5.5",
+ "tailwindcss": "^4.0.13"
+ },
+ "devDependencies": {
+ "@tailwindcss/typography": "^0.5.16",
+ "daisyui": "^5.0.2"
+ }
+}
diff --git a/public/_headers b/public/_headers
new file mode 100644
index 0000000..ec65ad1
--- /dev/null
+++ b/public/_headers
@@ -0,0 +1,5 @@
+# See: https://docs.netlify.com/routing/headers/
+# https://answers.netlify.com/t/access-control-allow-origin-policy/1813
+/*
+ Access-Control-Allow-Origin: *
+ Access-Control-Allow-Methods: OPTIONS, GET
\ No newline at end of file
diff --git a/public/_redirects b/public/_redirects
new file mode 100644
index 0000000..f0648f4
--- /dev/null
+++ b/public/_redirects
@@ -0,0 +1,5 @@
+# See: https://docs.netlify.com/routing/redirects/
+# https://docs.netlify.com/routing/redirects/redirect-options/
+/schemas/previous/* /schemas/0.9/:splat 200
+/schemas/latest/* /schemas/1.0.3/:splat 200
+/schemas/snapshot/* /schemas/1.0.3/:splat 200
diff --git a/public/icons/android-icon-144x144.png b/public/icons/android-icon-144x144.png
new file mode 100644
index 0000000..19aa472
Binary files /dev/null and b/public/icons/android-icon-144x144.png differ
diff --git a/public/icons/android-icon-192x192.png b/public/icons/android-icon-192x192.png
new file mode 100644
index 0000000..7797924
Binary files /dev/null and b/public/icons/android-icon-192x192.png differ
diff --git a/public/icons/android-icon-36x36.png b/public/icons/android-icon-36x36.png
new file mode 100644
index 0000000..d4786a2
Binary files /dev/null and b/public/icons/android-icon-36x36.png differ
diff --git a/public/icons/android-icon-48x48.png b/public/icons/android-icon-48x48.png
new file mode 100644
index 0000000..7ab3dac
Binary files /dev/null and b/public/icons/android-icon-48x48.png differ
diff --git a/public/icons/android-icon-72x72.png b/public/icons/android-icon-72x72.png
new file mode 100644
index 0000000..abf48b9
Binary files /dev/null and b/public/icons/android-icon-72x72.png differ
diff --git a/public/icons/android-icon-96x96.png b/public/icons/android-icon-96x96.png
new file mode 100644
index 0000000..8fb72dd
Binary files /dev/null and b/public/icons/android-icon-96x96.png differ
diff --git a/public/icons/apple-icon-114x114.png b/public/icons/apple-icon-114x114.png
new file mode 100644
index 0000000..c4ce2a2
Binary files /dev/null and b/public/icons/apple-icon-114x114.png differ
diff --git a/public/icons/apple-icon-120x120.png b/public/icons/apple-icon-120x120.png
new file mode 100644
index 0000000..a3909fc
Binary files /dev/null and b/public/icons/apple-icon-120x120.png differ
diff --git a/public/icons/apple-icon-144x144.png b/public/icons/apple-icon-144x144.png
new file mode 100644
index 0000000..19aa472
Binary files /dev/null and b/public/icons/apple-icon-144x144.png differ
diff --git a/public/icons/apple-icon-152x152.png b/public/icons/apple-icon-152x152.png
new file mode 100644
index 0000000..f024619
Binary files /dev/null and b/public/icons/apple-icon-152x152.png differ
diff --git a/public/icons/apple-icon-180x180.png b/public/icons/apple-icon-180x180.png
new file mode 100644
index 0000000..2367eff
Binary files /dev/null and b/public/icons/apple-icon-180x180.png differ
diff --git a/public/icons/apple-icon-57x57.png b/public/icons/apple-icon-57x57.png
new file mode 100644
index 0000000..7253eb0
Binary files /dev/null and b/public/icons/apple-icon-57x57.png differ
diff --git a/public/icons/apple-icon-60x60.png b/public/icons/apple-icon-60x60.png
new file mode 100644
index 0000000..9f510da
Binary files /dev/null and b/public/icons/apple-icon-60x60.png differ
diff --git a/public/icons/apple-icon-72x72.png b/public/icons/apple-icon-72x72.png
new file mode 100644
index 0000000..abf48b9
Binary files /dev/null and b/public/icons/apple-icon-72x72.png differ
diff --git a/public/icons/apple-icon-76x76.png b/public/icons/apple-icon-76x76.png
new file mode 100644
index 0000000..81c6314
Binary files /dev/null and b/public/icons/apple-icon-76x76.png differ
diff --git a/public/icons/apple-icon-precomposed.png b/public/icons/apple-icon-precomposed.png
new file mode 100644
index 0000000..a831645
Binary files /dev/null and b/public/icons/apple-icon-precomposed.png differ
diff --git a/public/icons/apple-icon.png b/public/icons/apple-icon.png
new file mode 100644
index 0000000..a831645
Binary files /dev/null and b/public/icons/apple-icon.png differ
diff --git a/public/icons/apple-touch-icon-180x180.png b/public/icons/apple-touch-icon-180x180.png
new file mode 100644
index 0000000..2367eff
Binary files /dev/null and b/public/icons/apple-touch-icon-180x180.png differ
diff --git a/public/icons/browserconfig.xml b/public/icons/browserconfig.xml
new file mode 100644
index 0000000..e12ed54
--- /dev/null
+++ b/public/icons/browserconfig.xml
@@ -0,0 +1,2 @@
+
+#ffffff
\ No newline at end of file
diff --git a/public/icons/favicon-16x16.png b/public/icons/favicon-16x16.png
new file mode 100644
index 0000000..6fc13ab
Binary files /dev/null and b/public/icons/favicon-16x16.png differ
diff --git a/public/icons/favicon-32x32.png b/public/icons/favicon-32x32.png
new file mode 100644
index 0000000..7990495
Binary files /dev/null and b/public/icons/favicon-32x32.png differ
diff --git a/public/icons/favicon-96x96.png b/public/icons/favicon-96x96.png
new file mode 100644
index 0000000..8fb72dd
Binary files /dev/null and b/public/icons/favicon-96x96.png differ
diff --git a/public/icons/favicon.ico b/public/icons/favicon.ico
new file mode 100644
index 0000000..a211f97
Binary files /dev/null and b/public/icons/favicon.ico differ
diff --git a/public/icons/logo.svg b/public/icons/logo.svg
new file mode 100644
index 0000000..a8457c9
--- /dev/null
+++ b/public/icons/logo.svg
@@ -0,0 +1,7 @@
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/public/icons/manifest.json b/public/icons/manifest.json
new file mode 100644
index 0000000..ec7c350
--- /dev/null
+++ b/public/icons/manifest.json
@@ -0,0 +1,41 @@
+{
+ "name": "App",
+ "icons": [
+ {
+ "src": "android-icon-36x36.png",
+ "sizes": "36x36",
+ "type": "image\/png",
+ "density": "0.75"
+ },
+ {
+ "src": "android-icon-48x48.png",
+ "sizes": "48x48",
+ "type": "image\/png",
+ "density": "1.0"
+ },
+ {
+ "src": "android-icon-72x72.png",
+ "sizes": "72x72",
+ "type": "image\/png",
+ "density": "1.5"
+ },
+ {
+ "src": "android-icon-96x96.png",
+ "sizes": "96x96",
+ "type": "image\/png",
+ "density": "2.0"
+ },
+ {
+ "src": "android-icon-144x144.png",
+ "sizes": "144x144",
+ "type": "image\/png",
+ "density": "3.0"
+ },
+ {
+ "src": "android-icon-192x192.png",
+ "sizes": "192x192",
+ "type": "image\/png",
+ "density": "4.0"
+ }
+ ]
+}
\ No newline at end of file
diff --git a/public/icons/ms-icon-144x144.png b/public/icons/ms-icon-144x144.png
new file mode 100644
index 0000000..19aa472
Binary files /dev/null and b/public/icons/ms-icon-144x144.png differ
diff --git a/public/icons/ms-icon-150x150.png b/public/icons/ms-icon-150x150.png
new file mode 100644
index 0000000..8d3f649
Binary files /dev/null and b/public/icons/ms-icon-150x150.png differ
diff --git a/public/icons/ms-icon-310x310.png b/public/icons/ms-icon-310x310.png
new file mode 100644
index 0000000..9eafa4e
Binary files /dev/null and b/public/icons/ms-icon-310x310.png differ
diff --git a/public/icons/ms-icon-70x70.png b/public/icons/ms-icon-70x70.png
new file mode 100644
index 0000000..995df9b
Binary files /dev/null and b/public/icons/ms-icon-70x70.png differ
diff --git a/public/img/banners/banner1.jpg b/public/img/banners/banner1.jpg
new file mode 100644
index 0000000..5ac8e10
Binary files /dev/null and b/public/img/banners/banner1.jpg differ
diff --git a/public/img/banners/banner2.jpg b/public/img/banners/banner2.jpg
new file mode 100644
index 0000000..f4fb717
Binary files /dev/null and b/public/img/banners/banner2.jpg differ
diff --git a/public/img/banners/placeholder-1.png b/public/img/banners/placeholder-1.png
new file mode 100644
index 0000000..7653aa4
Binary files /dev/null and b/public/img/banners/placeholder-1.png differ
diff --git a/public/img/logos/caf.png b/public/img/logos/caf.png
new file mode 100644
index 0000000..5bb49a8
Binary files /dev/null and b/public/img/logos/caf.png differ
diff --git a/public/img/logos/cncf-color-bg.svg b/public/img/logos/cncf-color-bg.svg
new file mode 100644
index 0000000..c8d667f
--- /dev/null
+++ b/public/img/logos/cncf-color-bg.svg
@@ -0,0 +1 @@
+cncf-color-bg.svg
\ No newline at end of file
diff --git a/public/img/logos/cncf-white-logo.svg b/public/img/logos/cncf-white-logo.svg
new file mode 100644
index 0000000..bef1f96
--- /dev/null
+++ b/public/img/logos/cncf-white-logo.svg
@@ -0,0 +1 @@
+cncf-white-logo.svg
\ No newline at end of file
diff --git a/public/img/logos/eventmesh.png b/public/img/logos/eventmesh.png
new file mode 100644
index 0000000..f170267
Binary files /dev/null and b/public/img/logos/eventmesh.png differ
diff --git a/public/img/logos/eventmesh2.png b/public/img/logos/eventmesh2.png
new file mode 100644
index 0000000..e854551
Binary files /dev/null and b/public/img/logos/eventmesh2.png differ
diff --git a/public/img/logos/faasnet.png b/public/img/logos/faasnet.png
new file mode 100644
index 0000000..efac506
Binary files /dev/null and b/public/img/logos/faasnet.png differ
diff --git a/public/img/logos/foxflow.svg b/public/img/logos/foxflow.svg
new file mode 100644
index 0000000..85b4789
--- /dev/null
+++ b/public/img/logos/foxflow.svg
@@ -0,0 +1,12 @@
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/public/img/logos/huawei.png b/public/img/logos/huawei.png
new file mode 100644
index 0000000..a31877b
Binary files /dev/null and b/public/img/logos/huawei.png differ
diff --git a/public/img/logos/huawei.svg b/public/img/logos/huawei.svg
new file mode 100644
index 0000000..7e108e1
--- /dev/null
+++ b/public/img/logos/huawei.svg
@@ -0,0 +1,22 @@
+
+ image
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/public/img/logos/lemlinelogo.png b/public/img/logos/lemlinelogo.png
new file mode 100644
index 0000000..4062c37
Binary files /dev/null and b/public/img/logos/lemlinelogo.png differ
diff --git a/public/img/logos/lf-stacked-color.svg b/public/img/logos/lf-stacked-color.svg
new file mode 100644
index 0000000..e8df47f
--- /dev/null
+++ b/public/img/logos/lf-stacked-color.svg
@@ -0,0 +1,49 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/public/img/logos/lf-stacked-white.svg b/public/img/logos/lf-stacked-white.svg
new file mode 100644
index 0000000..fd7114c
--- /dev/null
+++ b/public/img/logos/lf-stacked-white.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/public/img/logos/neuroglia.png b/public/img/logos/neuroglia.png
new file mode 100644
index 0000000..0f5dfad
Binary files /dev/null and b/public/img/logos/neuroglia.png differ
diff --git a/public/img/logos/quarkusflow.png b/public/img/logos/quarkusflow.png
new file mode 100644
index 0000000..30e1c04
Binary files /dev/null and b/public/img/logos/quarkusflow.png differ
diff --git a/public/img/logos/redhat.svg b/public/img/logos/redhat.svg
new file mode 100644
index 0000000..ec3968b
--- /dev/null
+++ b/public/img/logos/redhat.svg
@@ -0,0 +1,73 @@
+Red Hat logo
+
+
+
+ 2023-12-08T20:43:02.786Z
+ pending
+ TRA3ca3a36b-3fb6-454e-991b-27f2af9b77af
+ Logo
+ 2023-12-08T20:43:02.786Z
+ RGB
+ true
+ Stacked
+ pending
+ 2024-05-28T20:46:41.865Z
+ rhcc-audience:internal
+ Red Hat
+ no
+ DER3ca3a36b-3fb6-454e-991b-27f2af9b77af
+ Standard
+ yes
+ image/svg+xml
+ 2024-05-29T00:30:45.563Z
+
+
+ Red Hat logo
+
+
+ Activate
+ Activate
+ 2024-05-29T00:40:20.246Z
+ workflow-process-service
+ Activate
+ workflow-process-service
+ false
+ 2024-05-29T00:40:20.246Z
+ workflow-process-service
+ 2024-05-29T00:40:20.246Z
+ 250
+ 388
+
+
+ Logo B fits best in spaces that are more square. The hat and wordmark are the same size as they are in logo A, but they’re stacked instead of side by side.
The clear space should be at least the height of the letter "e" all the way around the logo.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/public/img/logos/redhat_reverse.svg b/public/img/logos/redhat_reverse.svg
new file mode 100644
index 0000000..80cf804
--- /dev/null
+++ b/public/img/logos/redhat_reverse.svg
@@ -0,0 +1,73 @@
+Red Hat logo
+
+
+
+ 2023-12-08T20:43:02.386Z
+ pending
+ TRA8ddc1496-47ad-4e37-a42b-040a55220da9
+ Logo
+ 2023-12-08T20:43:02.386Z
+ RGB
+ true
+ Stacked
+ pending
+ 2024-05-28T20:46:48.060Z
+ rhcc-audience:internal
+ Red Hat
+ no
+ DER8ddc1496-47ad-4e37-a42b-040a55220da9
+ Reverse
+ yes
+ image/svg+xml
+ 2024-05-29T00:30:45.052Z
+
+
+ Red Hat logo
+
+
+ Activate
+ Activate
+ 2024-05-29T00:40:36.400Z
+ workflow-process-service
+ Activate
+ workflow-process-service
+ false
+ 2024-05-29T00:40:36.400Z
+ workflow-process-service
+ 2024-05-29T00:40:36.400Z
+ 250
+ 388
+
+
+ Logo B fits best in spaces that are more square. The hat and wordmark are the same size as they are in logo A, but they’re stacked instead of side by side.
The clear space should be at least the height of the letter "e" all the way around the logo.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/public/img/logos/sonataflowlogo.png b/public/img/logos/sonataflowlogo.png
new file mode 100644
index 0000000..7bfd848
Binary files /dev/null and b/public/img/logos/sonataflowlogo.png differ
diff --git a/public/img/logos/sw-logo.png b/public/img/logos/sw-logo.png
new file mode 100644
index 0000000..8d2f068
Binary files /dev/null and b/public/img/logos/sw-logo.png differ
diff --git a/public/img/logos/synapselogo.png b/public/img/logos/synapselogo.png
new file mode 100644
index 0000000..0fca78d
Binary files /dev/null and b/public/img/logos/synapselogo.png differ
diff --git a/public/img/logos/temporal.png b/public/img/logos/temporal.png
new file mode 100644
index 0000000..b53ca6a
Binary files /dev/null and b/public/img/logos/temporal.png differ
diff --git a/public/img/logos/warrify.png b/public/img/logos/warrify.png
new file mode 100644
index 0000000..41190fc
Binary files /dev/null and b/public/img/logos/warrify.png differ
diff --git a/public/img/logos/zigflowlogo.png b/public/img/logos/zigflowlogo.png
new file mode 100644
index 0000000..519ab2a
Binary files /dev/null and b/public/img/logos/zigflowlogo.png differ
diff --git a/public/schemas/0.5/common.json b/public/schemas/0.5/common.json
new file mode 100644
index 0000000..ce2b155
--- /dev/null
+++ b/public/schemas/0.5/common.json
@@ -0,0 +1,15 @@
+{
+ "$id": "https://serverlessworkflow.org/core/0.5/common.json",
+ "$schema": "http://json-schema.org/draft-07/schema#",
+ "description": "Serverless Workflow specification - common schema",
+ "type": "object",
+ "definitions": {
+ "metadata": {
+ "type": "object",
+ "description": "Metadata information",
+ "additionalProperties": {
+ "type": "string"
+ }
+ }
+ }
+}
\ No newline at end of file
diff --git a/public/schemas/0.5/events.json b/public/schemas/0.5/events.json
new file mode 100644
index 0000000..e5d0356
--- /dev/null
+++ b/public/schemas/0.5/events.json
@@ -0,0 +1,129 @@
+{
+ "$id": "https://serverlessworkflow.org/core/0.5/events.json",
+ "$schema": "http://json-schema.org/draft-07/schema#",
+ "description": "Serverless Workflow specification - events schema",
+ "type": "object",
+ "events": {
+ "type": "array",
+ "description": "Workflow CloudEvent definitions. Defines CloudEvents that can be consumed or produced",
+ "items": {
+ "type": "object",
+ "$ref": "#/definitions/eventdef"
+ },
+ "minItems": 1
+ },
+ "required": [
+ "events"
+ ],
+ "definitions": {
+ "eventdef": {
+ "type": "object",
+ "properties": {
+ "name": {
+ "type": "string",
+ "description": "Unique event name",
+ "minLength": 1
+ },
+ "names": {
+ "type": "array",
+ "description": "List of unique event names that share the rest of the properties (source, type, kind, default)",
+ "items": {
+ "type": "string"
+ },
+ "minItems": 2,
+ "uniqueItems": true
+ },
+ "source": {
+ "type": "string",
+ "description": "CloudEvent source"
+ },
+ "type": {
+ "type": "string",
+ "description": "CloudEvent type"
+ },
+ "kind": {
+ "type": "string",
+ "enum": [
+ "consumed",
+ "produced"
+ ],
+ "description": "Defines the CloudEvent as either 'consumed' or 'produced' by the workflow. Default is 'consumed'",
+ "default": "consumed"
+ },
+ "correlation": {
+ "type": "array",
+ "description": "CloudEvent correlation definitions",
+ "minItems": 1,
+ "items": {
+ "type": "object",
+ "$ref": "#/definitions/correlationDef"
+ }
+ },
+ "metadata": {
+ "$ref": "common.json#/definitions/metadata",
+ "description": "Metadata information"
+ }
+ },
+ "if": {
+ "properties": {
+ "kind": {
+ "const": "consumed"
+ }
+ }
+ },
+ "then": {
+ "oneOf": [
+ {
+ "required": [
+ "name",
+ "source",
+ "type"
+ ]
+ },
+ {
+ "required": [
+ "names",
+ "source",
+ "type"
+ ]
+ }
+ ]
+ },
+ "else": {
+ "oneOf": [
+ {
+ "required": [
+ "name",
+ "type"
+ ]
+ },
+ {
+ "required": [
+ "names",
+ "type"
+ ]
+ }
+ ]
+ }
+ },
+ "correlationDef": {
+ "type": "object",
+ "description": "CloudEvent correlation definition",
+ "properties": {
+ "contextAttributeName": {
+ "type": "string",
+ "description": "CloudEvent Extension Context Attribute name",
+ "minLength": 1
+ },
+ "contextAttributeValue": {
+ "type": "string",
+ "description": "CloudEvent Extension Context Attribute value",
+ "minLength": 1
+ }
+ },
+ "required": [
+ "contextAttributeName"
+ ]
+ }
+ }
+}
\ No newline at end of file
diff --git a/public/schemas/0.5/extensions/kpi.json b/public/schemas/0.5/extensions/kpi.json
new file mode 100644
index 0000000..38105d4
--- /dev/null
+++ b/public/schemas/0.5/extensions/kpi.json
@@ -0,0 +1,282 @@
+{
+ "$id": "https://serverlessworkflow.org/extensions/0.5/kpi.json",
+ "$schema": "http://json-schema.org/draft-07/schema#",
+ "description": "Serverless Workflow specification - KPIs Extension Schema",
+ "type": "object",
+ "definitions": {
+ "kpi": {
+ "type": "object",
+ "description": "Serverless Workflow KPI Extension",
+ "properties": {
+ "extensionid": {
+ "type": "string",
+ "default": "workflow-kpi-extension",
+ "description": "Extension unique identifier"
+ },
+ "workflowid": {
+ "type": "string",
+ "minLength": 1,
+ "description": "Workflow definition unique identifier (workflow id property)"
+ },
+ "currency": {
+ "type": "string",
+ "default": "USD",
+ "description": "Unit for all cost-based KPI parameters. Default 'USD'"
+ },
+ "events": {
+ "type": "array",
+ "description": "Events KPIs",
+ "items": {
+ "type": "object",
+ "$ref": "#/definitions/eventskpi"
+ }
+ },
+ "functions": {
+ "type": "array",
+ "description": "Functions KPIs",
+ "items": {
+ "type": "object",
+ "$ref": "#/definitions/functionskpi"
+ }
+ },
+ "states": {
+ "type": "array",
+ "description": "States KPIs",
+ "items": {
+ "type": "object",
+ "$ref": "#/definitions/stateskpi"
+ }
+ },
+ "workflow": {
+ "description": "Workflow KPIs",
+ "$ref": "#/definitions/workflowkpi"
+ }
+ },
+ "required": [
+ "extensionid",
+ "workflowid"
+ ]
+ },
+ "eventskpi": {
+ "type": "object",
+ "properties": {
+ "for": {
+ "type": "string",
+ "description": "References an unique event name in the defined workflow events"
+ },
+ "per": {
+ "description": "Define the kpi thresholds in terms of time and/or num of workflow instances",
+ "$ref": "#/definitions/thresholds"
+ },
+ "maxConsumed": {
+ "type": "string",
+ "description": "If event kind is 'consumed', the max amount of times this event is consumed"
+ },
+ "minConsumed": {
+ "type": "string",
+ "description": "If event kind is 'consumed', the min amount of times this event is consumed"
+ },
+ "avgConsumed": {
+ "type": "string",
+ "description": "If event kind is 'consumed', the avg amount of times this event is consumed"
+ },
+ "maxProduced": {
+ "type": "string",
+ "description": "If event kind is 'produced', the max amount of times this event is produced"
+ },
+ "minProduced": {
+ "type": "string",
+ "description": "If event kind is 'produced', the min amount times this event is produced"
+ },
+ "avgProduced": {
+ "type": "string",
+ "description": "If event kind is 'produced', the avg amount of times this event is produced"
+ }
+ },
+ "required": [
+ "for",
+ "per"
+ ]
+ },
+ "functionskpi": {
+ "type": "object",
+ "allOf": [
+ {
+ "properties": {
+ "for": {
+ "type": "string",
+ "description": "References an unique function name in the defined workflow functions"
+ },
+ "per": {
+ "description": "Define the kpi thresholds in terms of time and/or num of workflow instances",
+ "$ref": "#/definitions/thresholds"
+ },
+ "maxErrors": {
+ "type": "string",
+ "description": "Max number of errors during function invocation"
+ },
+ "maxRetry": {
+ "type": "string",
+ "description": "Max number of retries done for this function invocation"
+ },
+ "maxTimeout": {
+ "type": "string",
+ "description": "Max number of times the function timeout time was reached"
+ }
+ }
+ },
+ {
+ "$ref": "#/definitions/invocationkpis"
+ },
+ {
+ "$ref": "#/definitions/costkpis"
+ }
+ ],
+ "required": [
+ "for",
+ "per"
+ ]
+ },
+ "stateskpi": {
+ "type": "object",
+ "allOf": [
+ {
+ "properties": {
+ "for": {
+ "type": "string",
+ "description": "References an unique state name in the defined workflow events"
+ },
+ "per": {
+ "description": "Define the kpi thresholds in terms of time and/or num of workflow instances",
+ "$ref": "#/definitions/thresholds"
+ }
+ }
+ },
+ {
+ "$ref": "#/definitions/execkpis"
+ },
+ {
+ "$ref": "#/definitions/durationkpis"
+ },
+ {
+ "$ref": "#/definitions/costkpis"
+ }
+ ],
+ "required": [
+ "for",
+ "per"
+ ]
+ },
+ "workflowkpi": {
+ "type": "object",
+ "allOf": [
+ {
+ "properties": {
+ "per": {
+ "description": "Define the kpi thresholds in terms of time and/or num of workflow instances",
+ "$ref": "#/definitions/thresholds"
+ }
+ }
+ },
+ {
+ "$ref": "#/definitions/invocationkpis"
+ },
+ {
+ "$ref": "#/definitions/durationkpis"
+ },
+ {
+ "$ref": "#/definitions/costkpis"
+ }
+ ],
+ "required": [
+ "per"
+ ]
+ },
+ "thresholds": {
+ "type": "object",
+ "properties": {
+ "time": {
+ "type": "string",
+ "default": "PT1D",
+ "description": "ISO_8601 time. 1 day default"
+ },
+ "instances": {
+ "type": "integer",
+ "minimum": 1,
+ "default": 1,
+ "description": "Number of workflow instances"
+ }
+ },
+ "required": [
+ ]
+ },
+ "costkpis": {
+ "type": "object",
+ "properties": {
+ "maxCost": {
+ "type": "string",
+ "description": "Max cost"
+ },
+ "minCost": {
+ "type": "string",
+ "description": "Min cost"
+ },
+ "avgCost": {
+ "type": "string",
+ "description": "Avg cost"
+ }
+ }
+ },
+ "invocationkpis": {
+ "type": "object",
+ "properties": {
+ "maxInvoked": {
+ "type": "string",
+ "description": "Max number of invocation times"
+ },
+ "minInvoked": {
+ "type": "string",
+ "description": "Min number of invocation times"
+ },
+ "avgInvoked": {
+ "type": "string",
+ "description": "Avg number of invocation times"
+ }
+ }
+ },
+ "durationkpis": {
+ "type": "object",
+ "properties": {
+ "maxDuration": {
+ "type": "string",
+ "description": "ISO 8601. Max duration"
+ },
+ "minDuration": {
+ "type": "string",
+ "description": "ISO 8601. Min duration"
+ },
+ "avgDuration": {
+ "type": "string",
+ "description": "ISO 8601. Avg duration"
+ }
+ }
+ },
+ "execkpis": {
+ "type": "object",
+ "properties": {
+ "maxExec": {
+ "type": "string",
+ "description": "Max exec number"
+ },
+ "minExec": {
+ "type": "string",
+ "description": "Min exec numbe"
+ },
+ "avgExec": {
+ "type": "string",
+ "description": "Avg exec number"
+ }
+ }
+ }
+ }
+}
\ No newline at end of file
diff --git a/public/schemas/0.5/functions.json b/public/schemas/0.5/functions.json
new file mode 100644
index 0000000..f912e3a
--- /dev/null
+++ b/public/schemas/0.5/functions.json
@@ -0,0 +1,41 @@
+{
+ "$id": "https://serverlessworkflow.org/core/0.5/functions.json",
+ "$schema": "http://json-schema.org/draft-07/schema#",
+ "description": "Serverless Workflow specification - functions schema",
+ "type": "object",
+ "functions": {
+ "type": "array",
+ "description": "Workflow function definitions",
+ "items": {
+ "type": "object",
+ "$ref": "#/definitions/function"
+ },
+ "minItems": 1
+ },
+ "required": [
+ "functions"
+ ],
+ "definitions": {
+ "function": {
+ "type": "object",
+ "properties": {
+ "name": {
+ "type": "string",
+ "description": "Unique function name",
+ "minLength": 1
+ },
+ "operation": {
+ "type": "string",
+ "description": "Combination of the function/service OpenAPI definition URI and the operationID of the operation that needs to be invoked, separated by a '#'. For example 'https://petstore.swagger.io/v2/swagger.json#getPetById'",
+ "minLength": 1
+ },
+ "metadata": {
+ "$ref": "common.json#/definitions/metadata"
+ }
+ },
+ "required": [
+ "name"
+ ]
+ }
+ }
+}
\ No newline at end of file
diff --git a/public/schemas/0.5/retries.json b/public/schemas/0.5/retries.json
new file mode 100644
index 0000000..871e9d7
--- /dev/null
+++ b/public/schemas/0.5/retries.json
@@ -0,0 +1,54 @@
+{
+ "$id": "https://serverlessworkflow.org/core/0.5/retries.json",
+ "$schema": "http://json-schema.org/draft-07/schema#",
+ "description": "Serverless Workflow specification - retries schema",
+ "type": "object",
+ "retries": {
+ "type": "array",
+ "description": "Workflow Retry definitions. Define retry strategies that can be referenced in states onError definitions",
+ "items": {
+ "type": "object",
+ "$ref": "#/definitions/retrydef"
+ },
+ "minItems": 1
+ },
+ "required": [
+ "retries"
+ ],
+ "definitions": {
+ "retrydef": {
+ "type": "object",
+ "properties": {
+ "name": {
+ "type": "string",
+ "description": "Unique retry strategy name",
+ "minLength": 1
+ },
+ "delay": {
+ "type": "string",
+ "description": "Time delay between retry attempts (ISO 8601 duration format)"
+ },
+ "multiplier": {
+ "type": "string",
+ "description": "Multiplier value by which interval increases during each attempt (ISO 8601 time format)"
+ },
+ "maxAttempts": {
+ "type": ["integer","string"],
+ "minimum": 1,
+ "minLength": 0,
+ "description": "Maximum number of retry attempts."
+ },
+ "jitter": {
+ "type": ["number","string"],
+ "minimum": 0.0,
+ "maximum": 1.0,
+ "description": "If float type, maximum amount of random time added or subtracted from the delay between each retry relative to total delay (between 0.0 and 1.0). If string type, absolute maximum amount of random time added or subtracted from the delay between each retry (ISO 8601 duration format)"
+ }
+ },
+ "required": [
+ "name",
+ "maxAttempts"
+ ]
+ }
+ }
+}
\ No newline at end of file
diff --git a/public/schemas/0.5/workflow.json b/public/schemas/0.5/workflow.json
new file mode 100644
index 0000000..ea3dfc7
--- /dev/null
+++ b/public/schemas/0.5/workflow.json
@@ -0,0 +1,1835 @@
+{
+ "$id": "https://serverlessworkflow.org/core/0.5/workflow.json",
+ "$schema": "http://json-schema.org/draft-07/schema#",
+ "description": "Serverless Workflow specification - workflow schema",
+ "type": "object",
+ "oneOf": [
+ {
+ "properties": {
+ "id": {
+ "type": "string",
+ "description": "Workflow unique identifier",
+ "minLength": 1
+ },
+ "name": {
+ "type": "string",
+ "description": "Workflow name",
+ "minLength": 1
+ },
+ "description": {
+ "type": "string",
+ "description": "Workflow description"
+ },
+ "version": {
+ "type": "string",
+ "description": "Workflow version",
+ "minLength": 1
+ },
+ "schemaVersion": {
+ "type": "string",
+ "description": "Serverless Workflow schema version",
+ "minLength": 1
+ },
+ "dataInputSchema": {
+ "type": "string",
+ "format": "uri",
+ "description": "URI to JSON Schema that workflow data input adheres to"
+ },
+ "dataOutputSchema": {
+ "type": "string",
+ "format": "uri",
+ "description": "URI to JSON Schema that workflow data output adheres to"
+ },
+ "metadata": {
+ "$ref": "common.json#/definitions/metadata"
+ },
+ "events": {
+ "$ref": "events.json#/events"
+ },
+ "functions": {
+ "$ref": "functions.json#/functions"
+ },
+ "retries": {
+ "$ref": "retries.json#/retries"
+ },
+ "states": {
+ "type": "array",
+ "description": "State definitions",
+ "items": {
+ "anyOf": [
+ {
+ "title": "Delay State",
+ "$ref": "#/definitions/delaystate"
+ },
+ {
+ "title": "Event State",
+ "$ref": "#/definitions/eventstate"
+ },
+ {
+ "title": "Operation State",
+ "$ref": "#/definitions/operationstate"
+ },
+ {
+ "title": "Parallel State",
+ "$ref": "#/definitions/parallelstate"
+ },
+ {
+ "title": "Switch State",
+ "$ref": "#/definitions/switchstate"
+ },
+ {
+ "title": "SubFlow State",
+ "$ref": "#/definitions/subflowstate"
+ },
+ {
+ "title": "Inject State",
+ "$ref": "#/definitions/injectstate"
+ },
+ {
+ "title": "ForEach State",
+ "$ref": "#/definitions/foreachstate"
+ },
+ {
+ "title": "Callback State",
+ "$ref": "#/definitions/callbackstate"
+ }
+ ]
+ },
+ "minItems": 1
+ }
+ }
+ },
+ {
+ "properties": {
+ "id": {
+ "type": "string",
+ "description": "Workflow unique identifier",
+ "minLength": 1
+ },
+ "name": {
+ "type": "string",
+ "description": "Workflow name",
+ "minLength": 1
+ },
+ "description": {
+ "type": "string",
+ "description": "Workflow description"
+ },
+ "version": {
+ "type": "string",
+ "description": "Workflow version",
+ "minLength": 1
+ },
+ "schemaVersion": {
+ "type": "string",
+ "description": "Serverless Workflow schema version",
+ "minLength": 1
+ },
+ "dataInputSchema": {
+ "type": "string",
+ "format": "uri",
+ "description": "URI to JSON Schema that workflow data input adheres to"
+ },
+ "dataOutputSchema": {
+ "type": "string",
+ "format": "uri",
+ "description": "URI to JSON Schema that workflow data output adheres to"
+ },
+ "metadata": {
+ "$ref": "common.json#/definitions/metadata"
+ },
+ "events": {
+ "type": "string",
+ "format": "uri",
+ "description": "URI to a resource containing event definitions (json or yaml)"
+ },
+ "functions": {
+ "type": "string",
+ "format": "uri",
+ "description": "URI to a resource containing function definitions (json or yaml)"
+ },
+ "states": {
+ "type": "array",
+ "description": "State definitions",
+ "items": {
+ "anyOf": [
+ {
+ "title": "Delay State",
+ "$ref": "#/definitions/delaystate"
+ },
+ {
+ "title": "Event State",
+ "$ref": "#/definitions/eventstate"
+ },
+ {
+ "title": "Operation State",
+ "$ref": "#/definitions/operationstate"
+ },
+ {
+ "title": "Parallel State",
+ "$ref": "#/definitions/parallelstate"
+ },
+ {
+ "title": "Switch State",
+ "$ref": "#/definitions/switchstate"
+ },
+ {
+ "title": "SubFlow State",
+ "$ref": "#/definitions/subflowstate"
+ },
+ {
+ "title": "Inject State",
+ "$ref": "#/definitions/injectstate"
+ },
+ {
+ "title": "ForEach State",
+ "$ref": "#/definitions/foreachstate"
+ },
+ {
+ "title": "Callback State",
+ "$ref": "#/definitions/callbackstate"
+ }
+ ]
+ },
+ "minItems": 1
+ }
+ }
+ }
+ ],
+ "required": [
+ "id",
+ "name",
+ "version",
+ "states"
+ ],
+ "definitions": {
+ "transition": {
+ "type": "object",
+ "properties": {
+ "expression": {
+ "type": "string",
+ "description": "JsonPath expression. Evaluates to true if returns non-empty result"
+ },
+ "produceEvents": {
+ "type": "array",
+ "description": "Array of events to be produced",
+ "items": {
+ "type": "object",
+ "$ref": "#/definitions/produceeventdef"
+ }
+ },
+ "nextState": {
+ "type": "string",
+ "description": "Name of state to transition to",
+ "minLength": 1
+ }
+ },
+ "required": [
+ "nextState"
+ ]
+ },
+ "error": {
+ "type": "object",
+ "properties": {
+ "error": {
+ "type": "string",
+ "description": "Domain-specific error name, or '*' to indicate all possible errors",
+ "minLength": 1
+ },
+ "code": {
+ "type": "string",
+ "description": "Error code. Can be used in addition to the name to help runtimes resolve to technical errors/exceptions. Should not be defined if error is set to '*'",
+ "minLength": 1
+ },
+ "retryRef": {
+ "type": "string",
+ "description": "References a unique name of a retry definition.",
+ "minLength": 1
+ },
+ "transition": {
+ "description": "Transition to next state to handle the error. If retryRef is defined, this transition is taken only if retries were unsuccessful.",
+ "$ref": "#/definitions/transition"
+ },
+ "end": {
+ "description": "End workflow execution in case of this error. If retryRef is defined, this ends workflow only if retries were unsuccessful.",
+ "$ref": "#/definitions/end"
+ }
+ },
+ "oneOf": [
+ {
+ "required": [
+ "error",
+ "transition"
+ ]
+ },
+ {
+ "required": [
+ "error",
+ "end"
+ ]
+ }
+ ]
+ },
+ "onevents": {
+ "type": "object",
+ "properties": {
+ "eventRefs": {
+ "type" : "array",
+ "description": "References one or more unique event names in the defined workflow events",
+ "minItems": 1,
+ "items": {
+ "type": "string"
+ }
+ },
+ "actionMode": {
+ "type": "string",
+ "enum": [
+ "sequential",
+ "parallel"
+ ],
+ "description": "Specifies how actions are to be performed (in sequence of parallel)",
+ "default": "sequential"
+ },
+ "actions": {
+ "type": "array",
+ "description": "Actions to be performed if expression matches",
+ "items": {
+ "type": "object",
+ "$ref": "#/definitions/action"
+ }
+ },
+ "eventDataFilter": {
+ "$ref": "#/definitions/eventdatafilter"
+ }
+ },
+ "required": [
+ "eventRefs",
+ "actions"
+ ]
+ },
+ "action": {
+ "type": "object",
+ "properties": {
+ "name": {
+ "type": "string",
+ "description": "Unique action definition name"
+ },
+ "functionRef": {
+ "description": "References a reusable function definition",
+ "$ref": "#/definitions/functionref"
+ },
+ "eventRef": {
+ "description": "References a 'trigger' and 'result' reusable event definitions",
+ "$ref": "#/definitions/eventref"
+ },
+ "timeout": {
+ "type": "string",
+ "description": "Time period to wait for function execution to complete"
+ },
+ "actionDataFilter": {
+ "$ref": "#/definitions/actiondatafilter"
+ }
+ },
+ "oneOf": [
+ {
+ "required": [
+ "functionRef"
+ ]
+ },
+ {
+ "required": [
+ "eventRef"
+ ]
+ }
+ ]
+ },
+ "functionref": {
+ "type": "object",
+ "description": "Function Reference",
+ "properties": {
+ "refName": {
+ "type": "string",
+ "description": "Name of the referenced function"
+ },
+ "parameters": {
+ "type": "object",
+ "description": "Function parameters"
+ }
+ },
+ "required": [
+ "refName"
+ ]
+ },
+ "eventref": {
+ "type": "object",
+ "description": "Event References",
+ "properties": {
+ "triggerEventRef": {
+ "type": "string",
+ "description": "Reference to the unique name of a 'produced' event definition"
+ },
+ "resultEventRef": {
+ "type": "string",
+ "description": "Reference to the unique name of a 'consumed' event definition"
+ },
+ "data": {
+ "type": ["string", "object"],
+ "description": "If string type, an expression which selects parts of the states data output to become the data (payload) of the event referenced by 'triggerEventRef'. If object type, a custom object to become the data (payload) of the event referenced by 'triggerEventRef'."
+ },
+ "contextAttributes": {
+ "type": "object",
+ "description": "Add additional extension context attributes to the produced event",
+ "additionalProperties": {
+ "type": "string"
+ }
+ }
+ },
+ "required": [
+ "triggerEventRef",
+ "resultEventRef"
+ ]
+ },
+ "branch": {
+ "type": "object",
+ "description": "Branch Definition",
+ "properties": {
+ "name": {
+ "type": "string",
+ "description": "Branch name"
+ },
+ "actions": {
+ "type": "array",
+ "description": "Actions to be executed in this branch",
+ "items": {
+ "type": "object",
+ "$ref": "#/definitions/action"
+ }
+ },
+ "workflowId": {
+ "type": "string",
+ "description": "Unique Id of a workflow to be executed in this branch"
+ }
+ },
+ "oneOf": [
+ {
+ "required": [
+ "name",
+ "workflowId"
+ ]
+ },
+ {
+ "required": [
+ "name",
+ "actions"
+ ]
+ }
+ ]
+ },
+ "delaystate": {
+ "type": "object",
+ "description": "Causes the workflow execution to delay for a specified duration",
+ "properties": {
+ "id": {
+ "type": "string",
+ "description": "Unique State id",
+ "minLength": 1
+ },
+ "name": {
+ "type": "string",
+ "description": "State name"
+ },
+ "type": {
+ "type": "string",
+ "const": "delay",
+ "description": "State type"
+ },
+ "start": {
+ "$ref": "#/definitions/start",
+ "description": "State start definition"
+ },
+ "end": {
+ "$ref": "#/definitions/end",
+ "description": "State end definition"
+ },
+ "stateDataFilter": {
+ "$ref": "#/definitions/statedatafilter"
+ },
+ "timeDelay": {
+ "type": "string",
+ "description": "Amount of time (ISO 8601 format) to delay"
+ },
+ "onErrors": {
+ "type": "array",
+ "description": "States error handling and retries definitions",
+ "items": {
+ "type": "object",
+ "$ref": "#/definitions/error"
+ }
+ },
+ "transition": {
+ "description": "Next transition of the workflow after the time delay",
+ "$ref": "#/definitions/transition"
+ },
+ "dataInputSchema": {
+ "type": "string",
+ "format": "uri",
+ "description": "URI to JSON Schema that state data input adheres to"
+ },
+ "dataOutputSchema": {
+ "type": "string",
+ "format": "uri",
+ "description": "URI to JSON Schema that state data output adheres to"
+ },
+ "metadata": {
+ "$ref": "common.json#/definitions/metadata"
+ }
+ },
+ "oneOf": [
+ {
+ "required": [
+ "name",
+ "type",
+ "timeDelay",
+ "end"
+ ]
+ },
+ {
+ "required": [
+ "name",
+ "type",
+ "timeDelay",
+ "transition"
+ ]
+ },
+ {
+ "required": [
+ "start",
+ "name",
+ "type",
+ "timeDelay",
+ "transition"
+ ]
+ },
+ {
+ "required": [
+ "start",
+ "name",
+ "type",
+ "timeDelay",
+ "end"
+ ]
+ }
+ ]
+ },
+ "eventstate": {
+ "type": "object",
+ "description": "This state is used to wait for events from event sources, then consumes them and invoke one or more actions to run in sequence or parallel",
+ "properties": {
+ "id": {
+ "type": "string",
+ "description": "Unique State id",
+ "minLength": 1
+ },
+ "name": {
+ "type": "string",
+ "description": "State name"
+ },
+ "type": {
+ "type": "string",
+ "const": "event",
+ "description": "State type"
+ },
+ "exclusive": {
+ "type": "boolean",
+ "default": true,
+ "description": "If true consuming one of the defined events causes its associated actions to be performed. If false all of the defined events must be consumed in order for actions to be performed"
+ },
+ "onEvents": {
+ "type": "array",
+ "description": "Define what events trigger one or more actions to be performed",
+ "items": {
+ "type": "object",
+ "$ref": "#/definitions/onevents"
+ }
+ },
+ "timeout": {
+ "type": "string",
+ "description": "Time period to wait for incoming events (ISO 8601 format)"
+ },
+ "stateDataFilter": {
+ "$ref": "#/definitions/statedatafilter"
+ },
+ "onErrors": {
+ "type": "array",
+ "description": "States error handling and retries definitions",
+ "items": {
+ "type": "object",
+ "$ref": "#/definitions/error"
+ }
+ },
+ "dataInputSchema": {
+ "type": "string",
+ "format": "uri",
+ "description": "URI to JSON Schema that state data input adheres to"
+ },
+ "dataOutputSchema": {
+ "type": "string",
+ "format": "uri",
+ "description": "URI to JSON Schema that state data output adheres to"
+ },
+ "transition": {
+ "description": "Next transition of the workflow after all the actions have been performed",
+ "$ref": "#/definitions/transition"
+ },
+ "start": {
+ "$ref": "#/definitions/start",
+ "description": "State start definition"
+ },
+ "end": {
+ "$ref": "#/definitions/end",
+ "description": "State end definition"
+ },
+ "metadata": {
+ "$ref": "common.json#/definitions/metadata"
+ }
+ },
+ "oneOf": [
+ {
+ "required": [
+ "name",
+ "type",
+ "onEvents",
+ "end"
+ ]
+ },
+ {
+ "required": [
+ "name",
+ "type",
+ "onEvents",
+ "transition"
+ ]
+ },
+ {
+ "required": [
+ "start",
+ "name",
+ "type",
+ "onEvents",
+ "transition"
+ ]
+ },
+ {
+ "required": [
+ "start",
+ "name",
+ "type",
+ "onEvents",
+ "end"
+ ]
+ }
+ ]
+ },
+ "operationstate": {
+ "type": "object",
+ "description": "Defines actions be performed. Does not wait for incoming events",
+ "properties": {
+ "id": {
+ "type": "string",
+ "description": "Unique State id",
+ "minLength": 1
+ },
+ "name": {
+ "type": "string",
+ "description": "State name"
+ },
+ "type": {
+ "type": "string",
+ "const": "operation",
+ "description": "State type"
+ },
+ "start": {
+ "$ref": "#/definitions/start",
+ "description": "State start definition"
+ },
+ "end": {
+ "$ref": "#/definitions/end",
+ "description": "State end definition"
+ },
+ "stateDataFilter": {
+ "$ref": "#/definitions/statedatafilter"
+ },
+ "actionMode": {
+ "type": "string",
+ "enum": [
+ "sequential",
+ "parallel"
+ ],
+ "description": "Specifies whether actions are performed in sequence or in parallel",
+ "default": "sequential"
+ },
+ "actions": {
+ "type": "array",
+ "description": "Actions to be performed",
+ "items": {
+ "type": "object",
+ "$ref": "#/definitions/action"
+ }
+ },
+ "onErrors": {
+ "type": "array",
+ "description": "States error handling and retries definitions",
+ "items": {
+ "type": "object",
+ "$ref": "#/definitions/error"
+ }
+ },
+ "transition": {
+ "description": "Next transition of the workflow after all the actions have been performed",
+ "$ref": "#/definitions/transition"
+ },
+ "dataInputSchema": {
+ "type": "string",
+ "format": "uri",
+ "description": "URI to JSON Schema that state data input adheres to"
+ },
+ "dataOutputSchema": {
+ "type": "string",
+ "format": "uri",
+ "description": "URI to JSON Schema that state data output adheres to"
+ },
+ "metadata": {
+ "$ref": "common.json#/definitions/metadata"
+ }
+ },
+ "oneOf": [
+ {
+ "required": [
+ "name",
+ "type",
+ "actionMode",
+ "actions",
+ "end"
+ ]
+ },
+ {
+ "required": [
+ "name",
+ "type",
+ "actionMode",
+ "actions",
+ "transition"
+ ]
+ },
+ {
+ "required": [
+ "start",
+ "name",
+ "type",
+ "actionMode",
+ "actions",
+ "transition"
+ ]
+ },
+ {
+ "required": [
+ "start",
+ "name",
+ "type",
+ "actionMode",
+ "actions",
+ "end"
+ ]
+ }
+ ]
+ },
+ "parallelstate": {
+ "type": "object",
+ "description": "Consists of a number of states that are executed in parallel",
+ "properties": {
+ "id": {
+ "type": "string",
+ "description": "Unique State id",
+ "minLength": 1
+ },
+ "name": {
+ "type": "string",
+ "description": "State name"
+ },
+ "type": {
+ "type": "string",
+ "const": "parallel",
+ "description": "State type"
+ },
+ "start": {
+ "$ref": "#/definitions/start",
+ "description": "State start definition"
+ },
+ "end": {
+ "$ref": "#/definitions/end",
+ "description": "State end definition"
+ },
+ "stateDataFilter": {
+ "$ref": "#/definitions/statedatafilter"
+ },
+ "branches": {
+ "type": "array",
+ "description": "Branch Definitions",
+ "items": {
+ "type": "object",
+ "$ref": "#/definitions/branch"
+ }
+ },
+ "completionType": {
+ "type" : "string",
+ "enum": ["and", "xor", "n_of_m"],
+ "description": "Option types on how to complete branch execution.",
+ "default": "and"
+ },
+ "n": {
+ "type": ["integer","string"],
+ "minimum": 0,
+ "minLength": 0,
+ "description": "Used when completionType is set to 'n_of_m' to specify the 'N' value"
+ },
+ "onErrors": {
+ "type": "array",
+ "description": "States error handling and retries definitions",
+ "items": {
+ "type": "object",
+ "$ref": "#/definitions/error"
+ }
+ },
+ "transition": {
+ "description": "Next transition of the workflow after all branches have completed execution",
+ "$ref": "#/definitions/transition"
+ },
+ "dataInputSchema": {
+ "type": "string",
+ "format": "uri",
+ "description": "URI to JSON Schema that state data input adheres to"
+ },
+ "dataOutputSchema": {
+ "type": "string",
+ "format": "uri",
+ "description": "URI to JSON Schema that state data output adheres to"
+ },
+ "metadata": {
+ "$ref": "common.json#/definitions/metadata"
+ }
+ },
+ "oneOf": [
+ {
+ "required": [
+ "name",
+ "type",
+ "branches",
+ "end"
+ ]
+ },
+ {
+ "required": [
+ "name",
+ "type",
+ "branches",
+ "transition"
+ ]
+ },
+ {
+ "required": [
+ "start",
+ "name",
+ "type",
+ "branches",
+ "transition"
+ ]
+ },
+ {
+ "required": [
+ "start",
+ "name",
+ "type",
+ "branches",
+ "transition",
+ "end"
+ ]
+ }
+ ]
+ },
+ "switchstate": {
+ "oneOf": [
+ {
+ "$ref": "#/definitions/databasedswitch"
+ },
+ {
+ "$ref": "#/definitions/eventbasedswitch"
+ }
+ ]
+ },
+ "eventbasedswitch": {
+ "type": "object",
+ "description": "Permits transitions to other states based on events",
+ "properties": {
+ "id": {
+ "type": "string",
+ "description": "Unique State id",
+ "minLength": 1
+ },
+ "name": {
+ "type": "string",
+ "description": "State name"
+ },
+ "type": {
+ "type": "string",
+ "const": "switch",
+ "description": "State type"
+ },
+ "start": {
+ "$ref": "#/definitions/start",
+ "description": "State start definition"
+ },
+ "stateDataFilter": {
+ "$ref": "#/definitions/statedatafilter"
+ },
+ "eventConditions": {
+ "type": "array",
+ "description": "Defines conditions evaluated against events",
+ "items": {
+ "type": "object",
+ "$ref": "#/definitions/eventcondition"
+ }
+ },
+ "onErrors": {
+ "type": "array",
+ "description": "States error handling and retries definitions",
+ "items": {
+ "type": "object",
+ "$ref": "#/definitions/error"
+ }
+ },
+ "eventTimeout": {
+ "type": "string",
+ "description": "If eventConditions is used, defines the time period to wait for events (ISO 8601 format)"
+ },
+ "default": {
+ "description": "Default transition of the workflow if there is no matching data conditions. Can include a transition or end definition",
+ "$ref": "#/definitions/defaultdef"
+ },
+ "dataInputSchema": {
+ "type": "string",
+ "format": "uri",
+ "description": "URI to JSON Schema that state data input adheres to"
+ },
+ "dataOutputSchema": {
+ "type": "string",
+ "format": "uri",
+ "description": "URI to JSON Schema that state data output adheres to"
+ },
+ "metadata": {
+ "$ref": "common.json#/definitions/metadata"
+ }
+ },
+ "oneOf": [
+ {
+ "required": [
+ "name",
+ "type",
+ "eventConditions",
+ "default"
+ ]
+ },
+ {
+ "required": [
+ "start",
+ "name",
+ "type",
+ "eventConditions",
+ "default"
+ ]
+ }
+ ]
+ },
+ "databasedswitch": {
+ "type": "object",
+ "description": "Permits transitions to other states based on data conditions",
+ "properties": {
+ "id": {
+ "type": "string",
+ "description": "Unique State id",
+ "minLength": 1
+ },
+ "name": {
+ "type": "string",
+ "description": "State name"
+ },
+ "type": {
+ "type": "string",
+ "const": "switch",
+ "description": "State type"
+ },
+ "start": {
+ "$ref": "#/definitions/start",
+ "description": "State start definition"
+ },
+ "stateDataFilter": {
+ "$ref": "#/definitions/statedatafilter"
+ },
+ "dataConditions": {
+ "type": "array",
+ "description": "Defines conditions evaluated against state data",
+ "items": {
+ "type": "object",
+ "$ref": "#/definitions/datacondition"
+ }
+ },
+ "onErrors": {
+ "type": "array",
+ "description": "States error handling and retries definitions",
+ "items": {
+ "type": "object",
+ "$ref": "#/definitions/error"
+ }
+ },
+ "default": {
+ "description": "Default transition of the workflow if there is no matching data conditions. Can include a transition or end definition",
+ "$ref": "#/definitions/defaultdef"
+ },
+ "dataInputSchema": {
+ "type": "string",
+ "format": "uri",
+ "description": "URI to JSON Schema that state data input adheres to"
+ },
+ "dataOutputSchema": {
+ "type": "string",
+ "format": "uri",
+ "description": "URI to JSON Schema that state data output adheres to"
+ },
+ "metadata": {
+ "$ref": "common.json#/definitions/metadata"
+ }
+ },
+ "oneOf": [
+ {
+ "required": [
+ "name",
+ "type",
+ "dataConditions",
+ "default"
+ ]
+ },
+ {
+ "required": [
+ "start",
+ "name",
+ "type",
+ "dataConditions",
+ "default"
+ ]
+ }
+ ]
+ },
+ "defaultdef": {
+ "type": "object",
+ "description": "Default definition. Can be either a transition or end definition",
+ "properties": {
+ "transition": {
+ "$ref": "#/definitions/transition"
+ },
+ "end": {
+ "$ref": "#/definitions/end"
+ }
+ },
+ "oneOf": [
+ {
+ "required": [
+ "transition"
+ ]
+ },
+ {
+ "required": [
+ "end"
+ ]
+ }
+ ]
+ },
+ "eventcondition": {
+ "oneOf": [
+ {
+ "$ref": "#/definitions/transitioneventcondition"
+ },
+ {
+ "$ref": "#/definitions/enddeventcondition"
+ }
+ ]
+ },
+ "transitioneventcondition": {
+ "type": "object",
+ "description": "Switch state data event condition",
+ "properties": {
+ "name": {
+ "type": "string",
+ "description": "Event condition name"
+ },
+ "eventRef": {
+ "type" : "string",
+ "description": "References an unique event name in the defined workflow events"
+ },
+ "transition": {
+ "description": "Next transition of the workflow if there is valid matches",
+ "$ref": "#/definitions/transition"
+ }
+ },
+ "eventDataFilter": {
+ "description": "Event data filter definition",
+ "$ref": "#/definitions/eventdatafilter"
+ },
+ "metadata": {
+ "$ref": "common.json#/definitions/metadata"
+ },
+ "required": ["eventRef", "transition"]
+ },
+ "enddeventcondition": {
+ "type": "object",
+ "description": "Switch state data event condition",
+ "properties": {
+ "name": {
+ "type": "string",
+ "description": "Event condition name"
+ },
+ "eventRef": {
+ "type" : "string",
+ "description": "References an unique event name in the defined workflow events"
+ },
+ "end": {
+ "$ref": "#/definitions/end",
+ "description": "Explicit transition to end"
+ }
+ },
+ "eventDataFilter": {
+ "description": "Event data filter definition",
+ "$ref": "#/definitions/eventdatafilter"
+ },
+ "metadata": {
+ "$ref": "common.json#/definitions/metadata"
+ },
+ "required": ["eventRef", "transition"]
+ },
+ "datacondition": {
+ "oneOf": [
+ {
+ "$ref": "#/definitions/transitiondatacondition"
+ },
+ {
+ "$ref": "#/definitions/enddatacondition"
+ }
+ ]
+ },
+ "transitiondatacondition": {
+ "type": "object",
+ "description": "Switch state data based condition",
+ "properties": {
+ "name": {
+ "type": "string",
+ "description": "Data condition name"
+ },
+ "condition": {
+ "type": "string",
+ "description": "JsonPath expression evaluated against state data. True if results are not empty"
+ },
+ "transition": {
+ "description": "Next transition of the workflow if there is valid matches",
+ "$ref": "#/definitions/transition"
+ }
+ },
+ "metadata": {
+ "$ref": "common.json#/definitions/metadata"
+ },
+ "required": ["condition", "transition"]
+ },
+ "enddatacondition": {
+ "type": "object",
+ "description": "Switch state data based condition",
+ "properties": {
+ "name": {
+ "type": "string",
+ "description": "Data condition name"
+ },
+ "condition": {
+ "type": "string",
+ "description": "JsonPath expression evaluated against state data. True if results are not empty"
+ },
+ "end": {
+ "$ref": "#/definitions/end",
+ "description": "Explicit transition to end"
+ }
+ },
+ "metadata": {
+ "$ref": "common.json#/definitions/metadata"
+ },
+ "required": ["condition", "end"]
+ },
+ "subflowstate": {
+ "type": "object",
+ "description": "Defines a sub-workflow to be executed",
+ "properties": {
+ "id": {
+ "type": "string",
+ "description": "Unique state id",
+ "minLength": 1
+ },
+ "name": {
+ "type": "string",
+ "description": "State name"
+ },
+ "type": {
+ "type": "string",
+ "const": "subflow",
+ "description": "State type"
+ },
+ "start": {
+ "$ref": "#/definitions/start",
+ "description": "State start definition"
+ },
+ "end": {
+ "$ref": "#/definitions/end",
+ "description": "State end definition"
+ },
+ "waitForCompletion": {
+ "type": "boolean",
+ "default": false,
+ "description": "Workflow execution must wait for sub-workflow to finish before continuing"
+ },
+ "workflowId": {
+ "type": "string",
+ "description": "Sub-workflow unique id"
+ },
+ "stateDataFilter": {
+ "$ref": "#/definitions/statedatafilter"
+ },
+ "onErrors": {
+ "type": "array",
+ "description": "States error handling and retries definitions",
+ "items": {
+ "type": "object",
+ "$ref": "#/definitions/error"
+ }
+ },
+ "transition": {
+ "description": "Next transition of the workflow after SubFlow has completed execution",
+ "$ref": "#/definitions/transition"
+ },
+ "dataInputSchema": {
+ "type": "string",
+ "format": "uri",
+ "description": "URI to JSON Schema that state data input adheres to"
+ },
+ "dataOutputSchema": {
+ "type": "string",
+ "format": "uri",
+ "description": "URI to JSON Schema that state data output adheres to"
+ },
+ "metadata": {
+ "$ref": "common.json#/definitions/metadata"
+ }
+ },
+ "oneOf": [
+ {
+ "required": [
+ "name",
+ "type",
+ "workflowId",
+ "end"
+ ]
+ },
+ {
+ "required": [
+ "name",
+ "type",
+ "workflowId",
+ "transition"
+ ]
+ },
+ {
+ "required": [
+ "start",
+ "name",
+ "type",
+ "workflowId",
+ "transition"
+ ]
+ },
+ {
+ "required": [
+ "start",
+ "name",
+ "type",
+ "workflowId",
+ "end"
+ ]
+ }
+ ]
+ },
+ "injectstate": {
+ "type": "object",
+ "description": "Inject static data into state data. Does not perform any actions",
+ "properties": {
+ "id": {
+ "type": "string",
+ "description": "Unique state id",
+ "minLength": 1
+ },
+ "name": {
+ "type": "string",
+ "description": "State name"
+ },
+ "type": {
+ "type": "string",
+ "const": "inject",
+ "description": "State type"
+ },
+ "start": {
+ "$ref": "#/definitions/start",
+ "description": "State start definition"
+ },
+ "end": {
+ "$ref": "#/definitions/end",
+ "description": "State end definition"
+ },
+ "data": {
+ "type": "object",
+ "description": "JSON object which can be set as states data input and can be manipulated via filters"
+ },
+ "stateDataFilter": {
+ "$ref": "#/definitions/statedatafilter"
+ },
+ "transition": {
+ "description": "Next transition of the workflow after subflow has completed",
+ "$ref": "#/definitions/transition"
+ },
+ "dataInputSchema": {
+ "type": "string",
+ "format": "uri",
+ "description": "URI to JSON Schema that state data input adheres to"
+ },
+ "dataOutputSchema": {
+ "type": "string",
+ "format": "uri",
+ "description": "URI to JSON Schema that state data output adheres to"
+ },
+ "metadata": {
+ "$ref": "common.json#/definitions/metadata"
+ }
+ },
+ "oneOf": [
+ {
+ "required": [
+ "name",
+ "type",
+ "end"
+ ]
+ },
+ {
+ "required": [
+ "name",
+ "type",
+ "transition"
+ ]
+ },
+ {
+ "required": [
+ "start",
+ "name",
+ "type",
+ "transition"
+ ]
+ },
+ {
+ "required": [
+ "start",
+ "name",
+ "type",
+ "end"
+ ]
+ }
+ ]
+ },
+ "foreachstate": {
+ "type": "object",
+ "description": "Execute a set of defined actions or workflows for each element of a data array",
+ "properties": {
+ "id": {
+ "type": "string",
+ "description": "Unique State id",
+ "minLength": 1
+ },
+ "name": {
+ "type": "string",
+ "description": "State name"
+ },
+ "type": {
+ "type": "string",
+ "const": "foreach",
+ "description": "State type"
+ },
+ "start": {
+ "$ref": "#/definitions/start",
+ "description": "State start definition"
+ },
+ "end": {
+ "$ref": "#/definitions/end",
+ "description": "State end definition"
+ },
+ "inputCollection": {
+ "type": "string",
+ "description": "JsonPath expression selecting an array element of the states data"
+ },
+ "outputCollection": {
+ "type": "string",
+ "description": "JsonPath expression specifying an array element of the states data to add the results of each iteration"
+ },
+ "iterationParam": {
+ "type": "string",
+ "description": "Name of the iteration parameter that can be referenced in actions/workflow. For each parallel iteration, this param should contain an unique element of the inputCollection array"
+ },
+ "max": {
+ "type": ["integer","string"],
+ "minimum": 0,
+ "minLength": 0,
+ "description": "Specifies how upper bound on how many iterations may run in parallel"
+ },
+ "actions": {
+ "type": "array",
+ "description": "Actions to be executed for each of the elements of inputCollection",
+ "items": {
+ "type": "object",
+ "$ref": "#/definitions/action"
+ }
+ },
+ "workflowId": {
+ "type": "string",
+ "description": "Unique Id of a workflow to be executed for each of the elements of inputCollection"
+ },
+ "stateDataFilter": {
+ "$ref": "#/definitions/statedatafilter"
+ },
+ "onErrors": {
+ "type": "array",
+ "description": "States error handling and retries definitions",
+ "items": {
+ "type": "object",
+ "$ref": "#/definitions/error"
+ }
+ },
+ "transition": {
+ "description": "Next transition of the workflow after state has completed",
+ "$ref": "#/definitions/transition"
+ },
+ "dataInputSchema": {
+ "type": "string",
+ "format": "uri",
+ "description": "URI to JSON Schema that state data input adheres to"
+ },
+ "dataOutputSchema": {
+ "type": "string",
+ "format": "uri",
+ "description": "URI to JSON Schema that state data output adheres to"
+ },
+ "metadata": {
+ "$ref": "common.json#/definitions/metadata"
+ }
+ },
+ "oneOf": [
+ {
+ "required": [
+ "name",
+ "type",
+ "inputCollection",
+ "inputParameter",
+ "workflowId",
+ "end"
+ ]
+ },
+ {
+ "required": [
+ "name",
+ "type",
+ "inputCollection",
+ "inputParameter",
+ "workflowId",
+ "transition"
+ ]
+ },
+ {
+ "required": [
+ "start",
+ "name",
+ "type",
+ "inputCollection",
+ "inputParameter",
+ "workflowId",
+ "end"
+ ]
+ },
+ {
+ "required": [
+ "start",
+ "name",
+ "type",
+ "inputCollection",
+ "inputParameter",
+ "workflowId",
+ "transition"
+ ]
+ },
+ {
+ "required": [
+ "name",
+ "type",
+ "inputCollection",
+ "inputParameter",
+ "actions",
+ "end"
+ ]
+ },
+ {
+ "required": [
+ "name",
+ "type",
+ "inputCollection",
+ "inputParameter",
+ "actions",
+ "transition"
+ ]
+ },
+ {
+ "required": [
+ "start",
+ "name",
+ "type",
+ "inputCollection",
+ "inputParameter",
+ "actions",
+ "end"
+ ]
+ },
+ {
+ "required": [
+ "start",
+ "name",
+ "type",
+ "inputCollection",
+ "inputParameter",
+ "actions",
+ "transition"
+ ]
+ }
+ ]
+ },
+ "callbackstate": {
+ "type": "object",
+ "description": "This state performs an action, then waits for the callback event that denotes completion of the action",
+ "properties": {
+ "id": {
+ "type": "string",
+ "description": "Unique state id",
+ "minLength": 1
+ },
+ "name": {
+ "type": "string",
+ "description": "State name"
+ },
+ "type": {
+ "type" : "string",
+ "const": "callback",
+ "description": "State type"
+ },
+ "action": {
+ "description": "Defines the action to be executed",
+ "$ref": "#/definitions/action"
+ },
+ "eventRef": {
+ "type" : "string",
+ "description": "References an unique callback event name in the defined workflow events"
+ },
+ "timeout": {
+ "type": "string",
+ "description": "Time period to wait for incoming events (ISO 8601 format)"
+ },
+ "eventDataFilter": {
+ "description": "Callback event data filter definition",
+ "$ref": "#/definitions/eventdatafilter"
+ },
+ "stateDataFilter": {
+ "description": "State data filter definition",
+ "$ref": "#/definitions/statedatafilter"
+ },
+ "onErrors": {
+ "type": "array",
+ "description": "States error handling and retries definitions",
+ "items": {
+ "type": "object",
+ "$ref": "#/definitions/error"
+ }
+ },
+ "dataInputSchema": {
+ "type": "string",
+ "format": "uri",
+ "description": "URI to JSON Schema that state data input adheres to"
+ },
+ "dataOutputSchema": {
+ "type": "string",
+ "format": "uri",
+ "description": "URI to JSON Schema that state data output adheres to"
+ },
+ "transition": {
+ "description": "Next transition of the workflow after all the actions have been performed",
+ "$ref": "#/definitions/transition"
+ },
+ "start": {
+ "$ref": "#/definitions/start",
+ "description": "State start definition"
+ },
+ "end": {
+ "$ref": "#/definitions/end",
+ "description": "State end definition"
+ },
+ "metadata": {
+ "$ref": "common.json#/definitions/metadata"
+ }
+ },
+ "oneOf": [
+ {
+ "required": [
+ "name",
+ "type",
+ "action",
+ "eventRef",
+ "timeout",
+ "end"
+ ]
+ },
+ {
+ "required": [
+ "name",
+ "type",
+ "action",
+ "eventRef",
+ "timeout",
+ "transition"
+ ]
+ },
+ {
+ "required": [
+ "start",
+ "name",
+ "type",
+ "action",
+ "eventRef",
+ "timeout",
+ "end"
+ ]
+ },
+ {
+ "required": [
+ "start",
+ "name",
+ "type",
+ "action",
+ "eventRef",
+ "timeout",
+ "transition"
+ ]
+ }
+ ]
+ },
+ "start": {
+ "type": "object",
+ "description": "State start definition",
+ "properties": {
+ "kind": {
+ "type": "string",
+ "enum": [
+ "default",
+ "scheduled"
+ ],
+ "description": "Kind of start definition"
+ },
+ "schedule": {
+ "description": "If kind is 'scheduled', define when the time/repeating intervals at which workflow instances can/should be started",
+ "$ref": "#/definitions/schedule"
+ }
+ },
+ "if": {
+ "properties": {
+ "kind": {
+ "const": "scheduled"
+ }
+ }
+ },
+ "then": {
+ "required": [
+ "kind",
+ "schedule"
+ ]
+ },
+ "else": {
+ "required": [
+ "kind"
+ ]
+ }
+ },
+ "schedule": {
+ "type": "object",
+ "description": "Start state schedule definition",
+ "properties": {
+ "interval": {
+ "type": "string",
+ "description": "Time interval (ISO 8601 format) describing when the workflow starting state is active"
+ },
+ "cron": {
+ "type": "string",
+ "description": "Repeating interval (cron expression) describing when the workflow starting state should be triggered"
+ },
+ "directInvoke": {
+ "description": "Define if workflow instances can be created outside of the defined interval/cron",
+ "type": "string",
+ "enum": [
+ "allow",
+ "deny"
+ ]
+ },
+ "timezone": {
+ "type": "string",
+ "description": "Timezone name used to evaluate the cron expression. Not used for interval as timezone can be specified there directly. If not specified, should default to local machine timezone."
+ }
+ },
+ "oneOf": [
+ {
+ "required": [
+ "interval",
+ "directInvoke"
+ ]
+ },
+ {
+ "required": [
+ "cron",
+ "directInvoke"
+ ]
+ }
+ ]
+ },
+ "end": {
+ "type": "object",
+ "description": "State end definition",
+ "properties": {
+ "kind": {
+ "type": "string",
+ "enum": [
+ "default",
+ "terminate",
+ "event"
+ ],
+ "description": "Kind of end definition"
+ },
+ "produceEvents": {
+ "type": "array",
+ "description": "Used if kind is event. Array of events to be produced",
+ "items": {
+ "type": "object",
+ "$ref": "#/definitions/produceeventdef"
+ }
+ }
+ },
+ "if": {
+ "properties": {
+ "kind": {
+ "const": "event"
+ }
+ }
+ },
+ "then": {
+ "required": [
+ "kind",
+ "produceEvents"
+ ]
+ },
+ "else": {
+ "required": [
+ "kind"
+ ]
+ }
+ },
+ "produceeventdef": {
+ "type": "object",
+ "description": "Produce an event and set its data",
+ "properties": {
+ "eventRef": {
+ "type": "string",
+ "description": "References a name of a defined event"
+ },
+ "data": {
+ "type": ["string", "object"],
+ "description": "If String, expression which selects parts of the states data output to become the data of the produced event. If object a custom object to become the data of produced event."
+ },
+ "contextAttributes": {
+ "type": "object",
+ "description": "Add additional event extension context attributes",
+ "additionalProperties": {
+ "type": "string"
+ }
+ }
+ },
+ "required": [
+ "eventRef"
+ ]
+ },
+ "statedatafilter": {
+ "type": "object",
+ "properties": {
+ "dataInputPath": {
+ "type": "string",
+ "description": "JsonPath definition that selects parts of the states data input"
+ },
+ "dataOutputPath": {
+ "type": "string",
+ "description": "JsonPath definition that selects parts of the states data output"
+ }
+ },
+ "required": []
+ },
+ "eventdatafilter": {
+ "type": "object",
+ "properties": {
+ "dataOutputPath": {
+ "type": "string",
+ "description": "JsonPath definition that selects parts of the event data, to be merged with the states data"
+ }
+ },
+ "required": []
+ },
+ "actiondatafilter": {
+ "type": "object",
+ "properties": {
+ "dataInputPath": {
+ "type": "string",
+ "description": "JsonPath definition that selects parts of the states data input to be the action data"
+ },
+ "dataResultsPath": {
+ "type": "string",
+ "description": "JsonPath definition that selects parts of the actions data result, to be merged with the states data"
+ }
+ },
+ "required": []
+ },
+ "errordatafilter": {
+ "type": "object",
+ "properties": {
+ "dataOutputPath": {
+ "type": "string",
+ "description": "JsonPath definition that selects parts of the error data, to be merged with the states data"
+ }
+ },
+ "required": []
+ }
+ }
+}
diff --git a/public/schemas/0.6/common.json b/public/schemas/0.6/common.json
new file mode 100644
index 0000000..3d2e4d3
--- /dev/null
+++ b/public/schemas/0.6/common.json
@@ -0,0 +1,15 @@
+{
+ "$id": "https://serverlessworkflow.io/schemas/0.6/common.json",
+ "$schema": "http://json-schema.org/draft-07/schema#",
+ "description": "Serverless Workflow specification - common schema",
+ "type": "object",
+ "definitions": {
+ "metadata": {
+ "type": "object",
+ "description": "Metadata information",
+ "additionalProperties": {
+ "type": "string"
+ }
+ }
+ }
+}
\ No newline at end of file
diff --git a/public/schemas/0.6/events.json b/public/schemas/0.6/events.json
new file mode 100644
index 0000000..7ba488c
--- /dev/null
+++ b/public/schemas/0.6/events.json
@@ -0,0 +1,112 @@
+{
+ "$id": "https://serverlessworkflow.io/schemas/0.6/events.json",
+ "$schema": "http://json-schema.org/draft-07/schema#",
+ "description": "Serverless Workflow specification - events schema",
+ "type": "object",
+ "events": {
+ "oneOf": [
+ {
+ "type": "string",
+ "format": "uri",
+ "description": "URI to a resource containing event definitions (json or yaml)"
+ },
+ {
+ "type": "array",
+ "description": "Workflow CloudEvent definitions. Defines CloudEvents that can be consumed or produced",
+ "items": {
+ "type": "object",
+ "$ref": "#/definitions/eventdef"
+ },
+ "additionalItems": false,
+ "minItems": 1
+ }
+ ]
+ },
+ "required": [
+ "events"
+ ],
+ "definitions": {
+ "eventdef": {
+ "type": "object",
+ "properties": {
+ "name": {
+ "type": "string",
+ "description": "Unique event name",
+ "minLength": 1
+ },
+ "source": {
+ "type": "string",
+ "description": "CloudEvent source"
+ },
+ "type": {
+ "type": "string",
+ "description": "CloudEvent type"
+ },
+ "kind": {
+ "type": "string",
+ "enum": [
+ "consumed",
+ "produced"
+ ],
+ "description": "Defines the CloudEvent as either 'consumed' or 'produced' by the workflow. Default is 'consumed'",
+ "default": "consumed"
+ },
+ "correlation": {
+ "type": "array",
+ "description": "CloudEvent correlation definitions",
+ "minItems": 1,
+ "items": {
+ "type": "object",
+ "$ref": "#/definitions/correlationDef"
+ },
+ "additionalItems": false
+ },
+ "metadata": {
+ "$ref": "common.json#/definitions/metadata",
+ "description": "Metadata information"
+ }
+ },
+ "additionalProperties": false,
+ "if": {
+ "properties": {
+ "kind": {
+ "const": "consumed"
+ }
+ }
+ },
+ "then": {
+ "required": [
+ "name",
+ "source",
+ "type"
+ ]
+ },
+ "else": {
+ "required": [
+ "name",
+ "type"
+ ]
+ }
+ },
+ "correlationDef": {
+ "type": "object",
+ "description": "CloudEvent correlation definition",
+ "properties": {
+ "contextAttributeName": {
+ "type": "string",
+ "description": "CloudEvent Extension Context Attribute name",
+ "minLength": 1
+ },
+ "contextAttributeValue": {
+ "type": "string",
+ "description": "CloudEvent Extension Context Attribute value",
+ "minLength": 1
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "contextAttributeName"
+ ]
+ }
+ }
+}
\ No newline at end of file
diff --git a/public/schemas/0.6/extensions/kpi.json b/public/schemas/0.6/extensions/kpi.json
new file mode 100644
index 0000000..1f12781
--- /dev/null
+++ b/public/schemas/0.6/extensions/kpi.json
@@ -0,0 +1,282 @@
+{
+ "$id": "https://serverlessworkflow.io/schemas/0.6/extensions/kpi.json",
+ "$schema": "http://json-schema.org/draft-07/schema#",
+ "description": "Serverless Workflow specification - KPIs Extension Schema",
+ "type": "object",
+ "definitions": {
+ "kpi": {
+ "type": "object",
+ "description": "Serverless Workflow KPI Extension",
+ "properties": {
+ "extensionid": {
+ "type": "string",
+ "default": "workflow-kpi-extension",
+ "description": "Extension unique identifier"
+ },
+ "workflowid": {
+ "type": "string",
+ "minLength": 1,
+ "description": "Workflow definition unique identifier (workflow id property)"
+ },
+ "currency": {
+ "type": "string",
+ "default": "USD",
+ "description": "Unit for all cost-based KPI parameters. Default 'USD'"
+ },
+ "events": {
+ "type": "array",
+ "description": "Events KPIs",
+ "items": {
+ "type": "object",
+ "$ref": "#/definitions/eventskpi"
+ }
+ },
+ "functions": {
+ "type": "array",
+ "description": "Functions KPIs",
+ "items": {
+ "type": "object",
+ "$ref": "#/definitions/functionskpi"
+ }
+ },
+ "states": {
+ "type": "array",
+ "description": "States KPIs",
+ "items": {
+ "type": "object",
+ "$ref": "#/definitions/stateskpi"
+ }
+ },
+ "workflow": {
+ "description": "Workflow KPIs",
+ "$ref": "#/definitions/workflowkpi"
+ }
+ },
+ "required": [
+ "extensionid",
+ "workflowid"
+ ]
+ },
+ "eventskpi": {
+ "type": "object",
+ "properties": {
+ "for": {
+ "type": "string",
+ "description": "References an unique event name in the defined workflow events"
+ },
+ "per": {
+ "description": "Define the kpi thresholds in terms of time and/or num of workflow instances",
+ "$ref": "#/definitions/thresholds"
+ },
+ "maxConsumed": {
+ "type": "string",
+ "description": "If event kind is 'consumed', the max amount of times this event is consumed"
+ },
+ "minConsumed": {
+ "type": "string",
+ "description": "If event kind is 'consumed', the min amount of times this event is consumed"
+ },
+ "avgConsumed": {
+ "type": "string",
+ "description": "If event kind is 'consumed', the avg amount of times this event is consumed"
+ },
+ "maxProduced": {
+ "type": "string",
+ "description": "If event kind is 'produced', the max amount of times this event is produced"
+ },
+ "minProduced": {
+ "type": "string",
+ "description": "If event kind is 'produced', the min amount times this event is produced"
+ },
+ "avgProduced": {
+ "type": "string",
+ "description": "If event kind is 'produced', the avg amount of times this event is produced"
+ }
+ },
+ "required": [
+ "for",
+ "per"
+ ]
+ },
+ "functionskpi": {
+ "type": "object",
+ "allOf": [
+ {
+ "properties": {
+ "for": {
+ "type": "string",
+ "description": "References an unique function name in the defined workflow functions"
+ },
+ "per": {
+ "description": "Define the kpi thresholds in terms of time and/or num of workflow instances",
+ "$ref": "#/definitions/thresholds"
+ },
+ "maxErrors": {
+ "type": "string",
+ "description": "Max number of errors during function invocation"
+ },
+ "maxRetry": {
+ "type": "string",
+ "description": "Max number of retries done for this function invocation"
+ },
+ "maxTimeout": {
+ "type": "string",
+ "description": "Max number of times the function timeout time was reached"
+ }
+ }
+ },
+ {
+ "$ref": "#/definitions/invocationkpis"
+ },
+ {
+ "$ref": "#/definitions/costkpis"
+ }
+ ],
+ "required": [
+ "for",
+ "per"
+ ]
+ },
+ "stateskpi": {
+ "type": "object",
+ "allOf": [
+ {
+ "properties": {
+ "for": {
+ "type": "string",
+ "description": "References an unique state name in the defined workflow events"
+ },
+ "per": {
+ "description": "Define the kpi thresholds in terms of time and/or num of workflow instances",
+ "$ref": "#/definitions/thresholds"
+ }
+ }
+ },
+ {
+ "$ref": "#/definitions/execkpis"
+ },
+ {
+ "$ref": "#/definitions/durationkpis"
+ },
+ {
+ "$ref": "#/definitions/costkpis"
+ }
+ ],
+ "required": [
+ "for",
+ "per"
+ ]
+ },
+ "workflowkpi": {
+ "type": "object",
+ "allOf": [
+ {
+ "properties": {
+ "per": {
+ "description": "Define the kpi thresholds in terms of time and/or num of workflow instances",
+ "$ref": "#/definitions/thresholds"
+ }
+ }
+ },
+ {
+ "$ref": "#/definitions/invocationkpis"
+ },
+ {
+ "$ref": "#/definitions/durationkpis"
+ },
+ {
+ "$ref": "#/definitions/costkpis"
+ }
+ ],
+ "required": [
+ "per"
+ ]
+ },
+ "thresholds": {
+ "type": "object",
+ "properties": {
+ "time": {
+ "type": "string",
+ "default": "PT1D",
+ "description": "ISO_8601 time. 1 day default"
+ },
+ "instances": {
+ "type": "integer",
+ "minimum": 1,
+ "default": 1,
+ "description": "Number of workflow instances"
+ }
+ },
+ "required": [
+ ]
+ },
+ "costkpis": {
+ "type": "object",
+ "properties": {
+ "maxCost": {
+ "type": "string",
+ "description": "Max cost"
+ },
+ "minCost": {
+ "type": "string",
+ "description": "Min cost"
+ },
+ "avgCost": {
+ "type": "string",
+ "description": "Avg cost"
+ }
+ }
+ },
+ "invocationkpis": {
+ "type": "object",
+ "properties": {
+ "maxInvoked": {
+ "type": "string",
+ "description": "Max number of invocation times"
+ },
+ "minInvoked": {
+ "type": "string",
+ "description": "Min number of invocation times"
+ },
+ "avgInvoked": {
+ "type": "string",
+ "description": "Avg number of invocation times"
+ }
+ }
+ },
+ "durationkpis": {
+ "type": "object",
+ "properties": {
+ "maxDuration": {
+ "type": "string",
+ "description": "ISO 8601. Max duration"
+ },
+ "minDuration": {
+ "type": "string",
+ "description": "ISO 8601. Min duration"
+ },
+ "avgDuration": {
+ "type": "string",
+ "description": "ISO 8601. Avg duration"
+ }
+ }
+ },
+ "execkpis": {
+ "type": "object",
+ "properties": {
+ "maxExec": {
+ "type": "string",
+ "description": "Max exec number"
+ },
+ "minExec": {
+ "type": "string",
+ "description": "Min exec numbe"
+ },
+ "avgExec": {
+ "type": "string",
+ "description": "Avg exec number"
+ }
+ }
+ }
+ }
+}
\ No newline at end of file
diff --git a/public/schemas/0.6/functions.json b/public/schemas/0.6/functions.json
new file mode 100644
index 0000000..6b30cd0
--- /dev/null
+++ b/public/schemas/0.6/functions.json
@@ -0,0 +1,60 @@
+{
+ "$id": "https://serverlessworkflow.io/schemas/0.6/functions.json",
+ "$schema": "http://json-schema.org/draft-07/schema#",
+ "description": "Serverless Workflow specification - functions schema",
+ "type": "object",
+ "functions": {
+ "oneOf": [
+ {
+ "type": "string",
+ "format": "uri",
+ "description": "URI to a resource containing function definitions (json or yaml)"
+ },
+ {
+ "type": "array",
+ "description": "Workflow function definitions",
+ "items": {
+ "type": "object",
+ "$ref": "#/definitions/function"
+ },
+ "additionalItems": false,
+ "minItems": 1
+ }
+ ]
+ },
+ "required": [
+ "functions"
+ ],
+ "definitions": {
+ "function": {
+ "type": "object",
+ "properties": {
+ "name": {
+ "type": "string",
+ "description": "Unique function name",
+ "minLength": 1
+ },
+ "operation": {
+ "type": "string",
+ "description": "If type is `rest`, #. If type is `rpc`, ##. If type is `expression`, defines the workflow expression.",
+ "minLength": 1
+ },
+ "type": {
+ "type": "string",
+ "description": "Defines the function type. Is either `rest`, `rpc` or `expression`. Default is `rest`",
+ "enum": [
+ "rest",
+ "rpc",
+ "expression"
+ ],
+ "default": "rest"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "name",
+ "operation"
+ ]
+ }
+ }
+}
\ No newline at end of file
diff --git a/public/schemas/0.6/retries.json b/public/schemas/0.6/retries.json
new file mode 100644
index 0000000..8264dd8
--- /dev/null
+++ b/public/schemas/0.6/retries.json
@@ -0,0 +1,85 @@
+{
+ "$id": "https://serverlessworkflow.io/schemas/0.6/retries.json",
+ "$schema": "http://json-schema.org/draft-07/schema#",
+ "description": "Serverless Workflow specification - retries schema",
+ "type": "object",
+ "retries": {
+ "oneOf": [
+ {
+ "type": "string",
+ "format": "uri",
+ "description": "URI to a resource containing retry definitions (json or yaml)"
+ },
+ {
+ "type": "array",
+ "description": "Workflow Retry definitions. Define retry strategies that can be referenced in states onError definitions",
+ "items": {
+ "type": "object",
+ "$ref": "#/definitions/retrydef"
+ },
+ "additionalItems": false,
+ "minItems": 1
+ }
+ ]
+ },
+ "required": [
+ "retries"
+ ],
+ "definitions": {
+ "retrydef": {
+ "type": "object",
+ "properties": {
+ "name": {
+ "type": "string",
+ "description": "Unique retry strategy name",
+ "minLength": 1
+ },
+ "delay": {
+ "type": "string",
+ "description": "Time delay between retry attempts (ISO 8601 duration format)"
+ },
+ "maxDelay": {
+ "type": "string",
+ "description": "Maximum time delay between retry attempts (ISO 8601 duration format)"
+ },
+ "increment": {
+ "type": "string",
+ "description": "Static value by which the delay increases during each attempt (ISO 8601 time format)"
+ },
+ "multiplier": {
+ "type": [
+ "number",
+ "string"
+ ],
+ "minimum": 0,
+ "minLength": 1,
+ "multipleOf": 0.01,
+ "description": "Numeric value, if specified the delay between retries is multiplied by this value."
+ },
+ "maxAttempts": {
+ "type": [
+ "number",
+ "string"
+ ],
+ "minimum": 1,
+ "minLength": 0,
+ "description": "Maximum number of retry attempts."
+ },
+ "jitter": {
+ "type": [
+ "number",
+ "string"
+ ],
+ "minimum": 0,
+ "maximum": 1,
+ "description": "If float type, maximum amount of random time added or subtracted from the delay between each retry relative to total delay (between 0 and 1). If string type, absolute maximum amount of random time added or subtracted from the delay between each retry (ISO 8601 duration format)"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "name",
+ "maxAttempts"
+ ]
+ }
+ }
+}
\ No newline at end of file
diff --git a/public/schemas/0.6/workflow.json b/public/schemas/0.6/workflow.json
new file mode 100644
index 0000000..1ce11c5
--- /dev/null
+++ b/public/schemas/0.6/workflow.json
@@ -0,0 +1,1799 @@
+{
+ "$id": "https://serverlessworkflow.io/schemas/0.6/workflow.json",
+ "$schema": "http://json-schema.org/draft-07/schema#",
+ "description": "Serverless Workflow specification - workflow schema",
+ "type": "object",
+ "properties": {
+ "id": {
+ "type": "string",
+ "description": "Workflow unique identifier",
+ "minLength": 1
+ },
+ "name": {
+ "type": "string",
+ "description": "Workflow name",
+ "minLength": 1
+ },
+ "description": {
+ "type": "string",
+ "description": "Workflow description"
+ },
+ "version": {
+ "type": "string",
+ "description": "Workflow version",
+ "minLength": 1
+ },
+ "start": {
+ "$ref": "#/definitions/startdef"
+ },
+ "schemaVersion": {
+ "type": "string",
+ "description": "Serverless Workflow schema version",
+ "minLength": 1
+ },
+ "expressionLang": {
+ "type": "string",
+ "description": "Identifies the expression language used for workflow expressions. Default is 'jq'",
+ "default": "jq",
+ "minLength": 1
+ },
+ "execTimeout": {
+ "$ref": "#/definitions/exectimeout"
+ },
+ "keepActive": {
+ "type": "boolean",
+ "default": false,
+ "description": "If 'true', workflow instances is not terminated when there are no active execution paths. Instance can be terminated via 'terminate end definition' or reaching defined 'execTimeout'"
+ },
+ "metadata": {
+ "$ref": "common.json#/definitions/metadata"
+ },
+ "events": {
+ "$ref": "events.json#/events"
+ },
+ "functions": {
+ "$ref": "functions.json#/functions"
+ },
+ "retries": {
+ "$ref": "retries.json#/retries"
+ },
+ "states": {
+ "type": "array",
+ "description": "State definitions",
+ "items": {
+ "anyOf": [
+ {
+ "title": "Delay State",
+ "$ref": "#/definitions/delaystate"
+ },
+ {
+ "title": "Event State",
+ "$ref": "#/definitions/eventstate"
+ },
+ {
+ "title": "Operation State",
+ "$ref": "#/definitions/operationstate"
+ },
+ {
+ "title": "Parallel State",
+ "$ref": "#/definitions/parallelstate"
+ },
+ {
+ "title": "Switch State",
+ "$ref": "#/definitions/switchstate"
+ },
+ {
+ "title": "SubFlow State",
+ "$ref": "#/definitions/subflowstate"
+ },
+ {
+ "title": "Inject State",
+ "$ref": "#/definitions/injectstate"
+ },
+ {
+ "title": "ForEach State",
+ "$ref": "#/definitions/foreachstate"
+ },
+ {
+ "title": "Callback State",
+ "$ref": "#/definitions/callbackstate"
+ }
+ ]
+ },
+ "additionalItems": false,
+ "minItems": 1
+ }
+ },
+ "required": [
+ "id",
+ "name",
+ "version",
+ "start",
+ "states"
+ ],
+ "definitions": {
+ "crondef": {
+ "oneOf": [
+ {
+ "type": "string",
+ "description": "Cron expression defining when workflow instances should be created (automatically)",
+ "minLength": 1
+ },
+ {
+ "type": "object",
+ "properties": {
+ "expression": {
+ "type": "string",
+ "description": "Repeating interval (cron expression) describing when the workflow instance should be created",
+ "minLength": 1
+ },
+ "validUntil": {
+ "type": "string",
+ "description": "Specific date and time (ISO 8601 format) when the cron expression invocation is no longer valid"
+ }
+ },
+ "additionalProperties": false,
+ "required": ["expression"]
+ }
+ ]
+ },
+ "exectimeout": {
+ "type": "object",
+ "properties": {
+ "duration": {
+ "type": "string",
+ "description": "Timeout duration (ISO 8601 duration format)",
+ "minLength": 1
+ },
+ "interrupt": {
+ "type": "boolean",
+ "description": "If `false`, workflow instance is allowed to finish current execution. If `true`, current workflow execution is abrupted.",
+ "default": false
+ },
+ "runBefore": {
+ "type": "string",
+ "description": "Name of a workflow state to be executed before workflow instance is terminated",
+ "minLength": 1
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "duration"
+ ]
+ },
+ "transition": {
+ "oneOf": [
+ {
+ "type": "string",
+ "description": "Name of state to transition to",
+ "minLength": 1
+ },
+ {
+ "type": "object",
+ "description": "Function Reference",
+ "properties": {
+ "nextState": {
+ "type": "string",
+ "description": "Name of state to transition to",
+ "minLength": 1
+ },
+ "produceEvents": {
+ "type": "array",
+ "description": "Array of events to be produced before the transition happens",
+ "items": {
+ "type": "object",
+ "$ref": "#/definitions/produceeventdef"
+ },
+ "additionalItems": false
+ },
+ "compensate": {
+ "type": "boolean",
+ "default": false,
+ "description": "If set to true, triggers workflow compensation when before this transition is taken. Default is false"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "nextState"
+ ]
+ }
+ ]
+ },
+ "error": {
+ "type": "object",
+ "properties": {
+ "error": {
+ "type": "string",
+ "description": "Domain-specific error name, or '*' to indicate all possible errors",
+ "minLength": 1
+ },
+ "code": {
+ "type": "string",
+ "description": "Error code. Can be used in addition to the name to help runtimes resolve to technical errors/exceptions. Should not be defined if error is set to '*'",
+ "minLength": 1
+ },
+ "retryRef": {
+ "type": "string",
+ "description": "References a unique name of a retry definition.",
+ "minLength": 1
+ },
+ "transition": {
+ "description": "Transition to next state to handle the error. If retryRef is defined, this transition is taken only if retries were unsuccessful.",
+ "$ref": "#/definitions/transition"
+ },
+ "end": {
+ "description": "End workflow execution in case of this error. If retryRef is defined, this ends workflow only if retries were unsuccessful.",
+ "$ref": "#/definitions/end"
+ }
+ },
+ "additionalProperties": false,
+ "oneOf": [
+ {
+ "required": [
+ "error",
+ "transition"
+ ]
+ },
+ {
+ "required": [
+ "error",
+ "end"
+ ]
+ }
+ ]
+ },
+ "onevents": {
+ "type": "object",
+ "properties": {
+ "eventRefs": {
+ "type": "array",
+ "description": "References one or more unique event names in the defined workflow events",
+ "minItems": 1,
+ "items": {
+ "type": "string"
+ },
+ "additionalItems": false
+ },
+ "actionMode": {
+ "type": "string",
+ "enum": [
+ "sequential",
+ "parallel"
+ ],
+ "description": "Specifies how actions are to be performed (in sequence of parallel)",
+ "default": "sequential"
+ },
+ "actions": {
+ "type": "array",
+ "description": "Actions to be performed if expression matches",
+ "items": {
+ "type": "object",
+ "$ref": "#/definitions/action"
+ },
+ "additionalItems": false
+ },
+ "eventDataFilter": {
+ "description": "Event data filter",
+ "$ref": "#/definitions/eventdatafilter"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "eventRefs"
+ ]
+ },
+ "action": {
+ "type": "object",
+ "properties": {
+ "name": {
+ "type": "string",
+ "description": "Unique action definition name"
+ },
+ "functionRef": {
+ "description": "References a function to be invoked",
+ "$ref": "#/definitions/functionref"
+ },
+ "eventRef": {
+ "description": "References a 'trigger' and 'result' reusable event definitions",
+ "$ref": "#/definitions/eventref"
+ },
+ "timeout": {
+ "type": "string",
+ "description": "Time period to wait for function execution to complete"
+ },
+ "actionDataFilter": {
+ "description": "Action data filter",
+ "$ref": "#/definitions/actiondatafilter"
+ }
+ },
+ "additionalProperties": false,
+ "oneOf": [
+ {
+ "required": [
+ "functionRef"
+ ]
+ },
+ {
+ "required": [
+ "eventRef"
+ ]
+ }
+ ]
+ },
+ "functionref": {
+ "oneOf": [
+ {
+ "type": "string",
+ "description": "Name of the referenced function",
+ "minLength": 1
+ },
+ {
+ "type": "object",
+ "description": "Function Reference",
+ "properties": {
+ "refName": {
+ "type": "string",
+ "description": "Name of the referenced function"
+ },
+ "arguments": {
+ "type": "object",
+ "description": "Function arguments/inputs"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "refName"
+ ]
+ }
+ ]
+ },
+ "eventref": {
+ "type": "object",
+ "description": "Event References",
+ "properties": {
+ "triggerEventRef": {
+ "type": "string",
+ "description": "Reference to the unique name of a 'produced' event definition"
+ },
+ "resultEventRef": {
+ "type": "string",
+ "description": "Reference to the unique name of a 'consumed' event definition"
+ },
+ "data": {
+ "type": [
+ "string",
+ "object"
+ ],
+ "description": "If string type, an expression which selects parts of the states data output to become the data (payload) of the event referenced by 'triggerEventRef'. If object type, a custom object to become the data (payload) of the event referenced by 'triggerEventRef'."
+ },
+ "contextAttributes": {
+ "type": "object",
+ "description": "Add additional extension context attributes to the produced event",
+ "additionalProperties": {
+ "type": "string"
+ }
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "triggerEventRef",
+ "resultEventRef"
+ ]
+ },
+ "branch": {
+ "type": "object",
+ "description": "Branch Definition",
+ "properties": {
+ "name": {
+ "type": "string",
+ "description": "Branch name"
+ },
+ "actions": {
+ "type": "array",
+ "description": "Actions to be executed in this branch",
+ "items": {
+ "type": "object",
+ "$ref": "#/definitions/action"
+ },
+ "additionalItems": false
+ },
+ "workflowId": {
+ "type": "string",
+ "description": "Unique Id of a workflow to be executed in this branch"
+ }
+ },
+ "additionalProperties": false,
+ "oneOf": [
+ {
+ "required": [
+ "name",
+ "workflowId"
+ ]
+ },
+ {
+ "required": [
+ "name",
+ "actions"
+ ]
+ }
+ ]
+ },
+ "delaystate": {
+ "type": "object",
+ "description": "Causes the workflow execution to delay for a specified duration",
+ "properties": {
+ "id": {
+ "type": "string",
+ "description": "Unique State id",
+ "minLength": 1
+ },
+ "name": {
+ "type": "string",
+ "description": "State name"
+ },
+ "type": {
+ "type": "string",
+ "const": "delay",
+ "description": "State type"
+ },
+ "end": {
+ "$ref": "#/definitions/end",
+ "description": "State end definition"
+ },
+ "stateDataFilter": {
+ "description": "State data filter",
+ "$ref": "#/definitions/statedatafilter"
+ },
+ "timeDelay": {
+ "type": "string",
+ "description": "Amount of time (ISO 8601 format) to delay"
+ },
+ "onErrors": {
+ "type": "array",
+ "description": "States error handling and retries definitions",
+ "items": {
+ "type": "object",
+ "$ref": "#/definitions/error"
+ },
+ "additionalItems": false
+ },
+ "transition": {
+ "description": "Next transition of the workflow after the time delay",
+ "$ref": "#/definitions/transition"
+ },
+ "compensatedBy": {
+ "type": "string",
+ "minLength": 1,
+ "description": "Unique Name of a workflow state which is responsible for compensation of this state"
+ },
+ "usedForCompensation": {
+ "type": "boolean",
+ "default": false,
+ "description": "If true, this state is used to compensate another state. Default is false"
+ },
+ "metadata": {
+ "$ref": "common.json#/definitions/metadata"
+ }
+ },
+ "additionalProperties": false,
+ "if": {
+ "properties": {
+ "usedForCompensation": {
+ "const": true
+ }
+ },
+ "required": ["usedForCompensation"]
+ },
+ "then": {
+ "required": [
+ "name",
+ "type",
+ "timeDelay"
+ ]
+ },
+ "else": {
+ "oneOf": [
+ {
+ "required": [
+ "name",
+ "type",
+ "timeDelay",
+ "end"
+ ]
+ },
+ {
+ "required": [
+ "name",
+ "type",
+ "timeDelay",
+ "transition"
+ ]
+ }
+ ]
+ }
+ },
+ "eventstate": {
+ "type": "object",
+ "description": "This state is used to wait for events from event sources, then consumes them and invoke one or more actions to run in sequence or parallel",
+ "properties": {
+ "id": {
+ "type": "string",
+ "description": "Unique State id",
+ "minLength": 1
+ },
+ "name": {
+ "type": "string",
+ "description": "State name"
+ },
+ "type": {
+ "type": "string",
+ "const": "event",
+ "description": "State type"
+ },
+ "exclusive": {
+ "type": "boolean",
+ "default": true,
+ "description": "If true consuming one of the defined events causes its associated actions to be performed. If false all of the defined events must be consumed in order for actions to be performed"
+ },
+ "onEvents": {
+ "type": "array",
+ "description": "Define the events to be consumed and optional actions to be performed",
+ "items": {
+ "type": "object",
+ "$ref": "#/definitions/onevents"
+ },
+ "additionalItems": false
+ },
+ "timeout": {
+ "type": "string",
+ "description": "Time period to wait for incoming events (ISO 8601 format)"
+ },
+ "stateDataFilter": {
+ "description": "State data filter",
+ "$ref": "#/definitions/statedatafilter"
+ },
+ "onErrors": {
+ "type": "array",
+ "description": "States error handling and retries definitions",
+ "items": {
+ "type": "object",
+ "$ref": "#/definitions/error"
+ },
+ "additionalItems": false
+ },
+ "transition": {
+ "description": "Next transition of the workflow after all the actions have been performed",
+ "$ref": "#/definitions/transition"
+ },
+ "end": {
+ "$ref": "#/definitions/end",
+ "description": "State end definition"
+ },
+ "compensatedBy": {
+ "type": "string",
+ "minLength": 1,
+ "description": "Unique Name of a workflow state which is responsible for compensation of this state"
+ },
+ "metadata": {
+ "$ref": "common.json#/definitions/metadata"
+ }
+ },
+ "additionalProperties": false,
+ "oneOf": [
+ {
+ "required": [
+ "name",
+ "type",
+ "onEvents",
+ "end"
+ ]
+ },
+ {
+ "required": [
+ "name",
+ "type",
+ "onEvents",
+ "transition"
+ ]
+ }
+ ]
+ },
+ "operationstate": {
+ "type": "object",
+ "description": "Defines actions be performed. Does not wait for incoming events",
+ "properties": {
+ "id": {
+ "type": "string",
+ "description": "Unique State id",
+ "minLength": 1
+ },
+ "name": {
+ "type": "string",
+ "description": "State name"
+ },
+ "type": {
+ "type": "string",
+ "const": "operation",
+ "description": "State type"
+ },
+ "end": {
+ "$ref": "#/definitions/end",
+ "description": "State end definition"
+ },
+ "stateDataFilter": {
+ "description": "State data filter",
+ "$ref": "#/definitions/statedatafilter"
+ },
+ "actionMode": {
+ "type": "string",
+ "enum": [
+ "sequential",
+ "parallel"
+ ],
+ "description": "Specifies whether actions are performed in sequence or in parallel",
+ "default": "sequential"
+ },
+ "actions": {
+ "type": "array",
+ "description": "Actions to be performed",
+ "items": {
+ "type": "object",
+ "$ref": "#/definitions/action"
+ }
+ },
+ "onErrors": {
+ "type": "array",
+ "description": "States error handling and retries definitions",
+ "items": {
+ "type": "object",
+ "$ref": "#/definitions/error"
+ },
+ "additionalItems": false
+ },
+ "transition": {
+ "description": "Next transition of the workflow after all the actions have been performed",
+ "$ref": "#/definitions/transition"
+ },
+ "compensatedBy": {
+ "type": "string",
+ "minLength": 1,
+ "description": "Unique Name of a workflow state which is responsible for compensation of this state"
+ },
+ "usedForCompensation": {
+ "type": "boolean",
+ "default": false,
+ "description": "If true, this state is used to compensate another state. Default is false"
+ },
+ "metadata": {
+ "$ref": "common.json#/definitions/metadata"
+ }
+ },
+ "additionalProperties": false,
+ "if": {
+ "properties": {
+ "usedForCompensation": {
+ "const": true
+ }
+ },
+ "required": ["usedForCompensation"]
+ },
+ "then": {
+ "required": [
+ "name",
+ "type",
+ "actions"
+ ]
+ },
+ "else": {
+ "oneOf": [
+ {
+ "required": [
+ "name",
+ "type",
+ "actions",
+ "end"
+ ]
+ },
+ {
+ "required": [
+ "name",
+ "type",
+ "actions",
+ "transition"
+ ]
+ }
+ ]
+ }
+ },
+ "parallelstate": {
+ "type": "object",
+ "description": "Consists of a number of states that are executed in parallel",
+ "properties": {
+ "id": {
+ "type": "string",
+ "description": "Unique State id",
+ "minLength": 1
+ },
+ "name": {
+ "type": "string",
+ "description": "State name"
+ },
+ "type": {
+ "type": "string",
+ "const": "parallel",
+ "description": "State type"
+ },
+ "end": {
+ "$ref": "#/definitions/end",
+ "description": "State end definition"
+ },
+ "stateDataFilter": {
+ "description": "State data filter",
+ "$ref": "#/definitions/statedatafilter"
+ },
+ "branches": {
+ "type": "array",
+ "description": "Branch Definitions",
+ "items": {
+ "type": "object",
+ "$ref": "#/definitions/branch"
+ },
+ "additionalItems": false
+ },
+ "completionType": {
+ "type": "string",
+ "enum": [
+ "and",
+ "xor",
+ "n_of_m"
+ ],
+ "description": "Option types on how to complete branch execution.",
+ "default": "and"
+ },
+ "n": {
+ "type": [
+ "number",
+ "string"
+ ],
+ "minimum": 0,
+ "minLength": 0,
+ "description": "Used when completionType is set to 'n_of_m' to specify the 'N' value"
+ },
+ "onErrors": {
+ "type": "array",
+ "description": "States error handling and retries definitions",
+ "items": {
+ "type": "object",
+ "$ref": "#/definitions/error"
+ },
+ "additionalItems": false
+ },
+ "transition": {
+ "description": "Next transition of the workflow after all branches have completed execution",
+ "$ref": "#/definitions/transition"
+ },
+ "compensatedBy": {
+ "type": "string",
+ "minLength": 1,
+ "description": "Unique Name of a workflow state which is responsible for compensation of this state"
+ },
+ "usedForCompensation": {
+ "type": "boolean",
+ "default": false,
+ "description": "If true, this state is used to compensate another state. Default is false"
+ },
+ "metadata": {
+ "$ref": "common.json#/definitions/metadata"
+ }
+ },
+ "additionalProperties": false,
+ "if": {
+ "properties": {
+ "usedForCompensation": {
+ "const": true
+ }
+ },
+ "required": ["usedForCompensation"]
+ },
+ "then": {
+ "required": [
+ "name",
+ "type",
+ "branches"
+ ]
+ },
+ "else": {
+ "oneOf": [
+ {
+ "required": [
+ "name",
+ "type",
+ "branches",
+ "end"
+ ]
+ },
+ {
+ "required": [
+ "name",
+ "type",
+ "branches",
+ "transition"
+ ]
+ }
+ ]
+ }
+ },
+ "switchstate": {
+ "oneOf": [
+ {
+ "$ref": "#/definitions/databasedswitch"
+ },
+ {
+ "$ref": "#/definitions/eventbasedswitch"
+ }
+ ]
+ },
+ "eventbasedswitch": {
+ "type": "object",
+ "description": "Permits transitions to other states based on events",
+ "properties": {
+ "id": {
+ "type": "string",
+ "description": "Unique State id",
+ "minLength": 1
+ },
+ "name": {
+ "type": "string",
+ "description": "State name"
+ },
+ "type": {
+ "type": "string",
+ "const": "switch",
+ "description": "State type"
+ },
+ "stateDataFilter": {
+ "description": "State data filter",
+ "$ref": "#/definitions/statedatafilter"
+ },
+ "eventConditions": {
+ "type": "array",
+ "description": "Defines conditions evaluated against events",
+ "items": {
+ "type": "object",
+ "$ref": "#/definitions/eventcondition"
+ },
+ "additionalItems": false
+ },
+ "onErrors": {
+ "type": "array",
+ "description": "States error handling and retries definitions",
+ "items": {
+ "type": "object",
+ "$ref": "#/definitions/error"
+ },
+ "additionalItems": false
+ },
+ "eventTimeout": {
+ "type": "string",
+ "description": "If eventConditions is used, defines the time period to wait for events (ISO 8601 format)"
+ },
+ "default": {
+ "description": "Default transition of the workflow if there is no matching data conditions. Can include a transition or end definition",
+ "$ref": "#/definitions/defaultdef"
+ },
+ "compensatedBy": {
+ "type": "string",
+ "minLength": 1,
+ "description": "Unique Name of a workflow state which is responsible for compensation of this state"
+ },
+ "usedForCompensation": {
+ "type": "boolean",
+ "default": false,
+ "description": "If true, this state is used to compensate another state. Default is false"
+ },
+ "metadata": {
+ "$ref": "common.json#/definitions/metadata"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "name",
+ "type",
+ "eventConditions"
+ ]
+ },
+ "databasedswitch": {
+ "type": "object",
+ "description": "Permits transitions to other states based on data conditions",
+ "properties": {
+ "id": {
+ "type": "string",
+ "description": "Unique State id",
+ "minLength": 1
+ },
+ "name": {
+ "type": "string",
+ "description": "State name"
+ },
+ "type": {
+ "type": "string",
+ "const": "switch",
+ "description": "State type"
+ },
+ "stateDataFilter": {
+ "description": "State data filter",
+ "$ref": "#/definitions/statedatafilter"
+ },
+ "dataConditions": {
+ "type": "array",
+ "description": "Defines conditions evaluated against state data",
+ "items": {
+ "type": "object",
+ "$ref": "#/definitions/datacondition"
+ },
+ "additionalItems": false
+ },
+ "onErrors": {
+ "type": "array",
+ "description": "States error handling and retries definitions",
+ "items": {
+ "type": "object",
+ "$ref": "#/definitions/error"
+ },
+ "additionalItems": false
+ },
+ "default": {
+ "description": "Default transition of the workflow if there is no matching data conditions. Can include a transition or end definition",
+ "$ref": "#/definitions/defaultdef"
+ },
+ "compensatedBy": {
+ "type": "string",
+ "minLength": 1,
+ "description": "Unique Name of a workflow state which is responsible for compensation of this state"
+ },
+ "usedForCompensation": {
+ "type": "boolean",
+ "default": false,
+ "description": "If true, this state is used to compensate another state. Default is false"
+ },
+ "metadata": {
+ "$ref": "common.json#/definitions/metadata"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "name",
+ "type",
+ "dataConditions"
+ ]
+ },
+ "defaultdef": {
+ "type": "object",
+ "description": "Default definition. Can be either a transition or end definition",
+ "properties": {
+ "transition": {
+ "$ref": "#/definitions/transition"
+ },
+ "end": {
+ "$ref": "#/definitions/end"
+ }
+ },
+ "additionalProperties": false,
+ "oneOf": [
+ {
+ "required": [
+ "transition"
+ ]
+ },
+ {
+ "required": [
+ "end"
+ ]
+ }
+ ]
+ },
+ "eventcondition": {
+ "oneOf": [
+ {
+ "$ref": "#/definitions/transitioneventcondition"
+ },
+ {
+ "$ref": "#/definitions/enddeventcondition"
+ }
+ ]
+ },
+ "transitioneventcondition": {
+ "type": "object",
+ "description": "Switch state data event condition",
+ "properties": {
+ "name": {
+ "type": "string",
+ "description": "Event condition name"
+ },
+ "eventRef": {
+ "type": "string",
+ "description": "References an unique event name in the defined workflow events"
+ },
+ "transition": {
+ "description": "Next transition of the workflow if there is valid matches",
+ "$ref": "#/definitions/transition"
+ },
+ "eventDataFilter": {
+ "description": "Event data filter definition",
+ "$ref": "#/definitions/eventdatafilter"
+ },
+ "metadata": {
+ "$ref": "common.json#/definitions/metadata"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "eventRef",
+ "transition"
+ ]
+ },
+ "enddeventcondition": {
+ "type": "object",
+ "description": "Switch state data event condition",
+ "properties": {
+ "name": {
+ "type": "string",
+ "description": "Event condition name"
+ },
+ "eventRef": {
+ "type": "string",
+ "description": "References an unique event name in the defined workflow events"
+ },
+ "end": {
+ "$ref": "#/definitions/end",
+ "description": "Explicit transition to end"
+ },
+ "eventDataFilter": {
+ "description": "Event data filter definition",
+ "$ref": "#/definitions/eventdatafilter"
+ },
+ "metadata": {
+ "$ref": "common.json#/definitions/metadata"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "eventRef",
+ "end"
+ ]
+ },
+ "datacondition": {
+ "oneOf": [
+ {
+ "$ref": "#/definitions/transitiondatacondition"
+ },
+ {
+ "$ref": "#/definitions/enddatacondition"
+ }
+ ]
+ },
+ "transitiondatacondition": {
+ "type": "object",
+ "description": "Switch state data based condition",
+ "properties": {
+ "name": {
+ "type": "string",
+ "description": "Data condition name"
+ },
+ "condition": {
+ "type": "string",
+ "description": "Workflow expression evaluated against state data. Must evaluate to true or false"
+ },
+ "transition": {
+ "description": "Workflow transition if condition is evaluated to true",
+ "$ref": "#/definitions/transition"
+ },
+ "metadata": {
+ "$ref": "common.json#/definitions/metadata"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "condition",
+ "transition"
+ ]
+ },
+ "enddatacondition": {
+ "type": "object",
+ "description": "Switch state data based condition",
+ "properties": {
+ "name": {
+ "type": "string",
+ "description": "Data condition name"
+ },
+ "condition": {
+ "type": "string",
+ "description": "Workflow expression evaluated against state data. Must evaluate to true or false"
+ },
+ "end": {
+ "$ref": "#/definitions/end",
+ "description": "Workflow end definition"
+ },
+ "metadata": {
+ "$ref": "common.json#/definitions/metadata"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "condition",
+ "end"
+ ]
+ },
+ "subflowstate": {
+ "type": "object",
+ "description": "Defines a sub-workflow to be executed",
+ "properties": {
+ "id": {
+ "type": "string",
+ "description": "Unique state id",
+ "minLength": 1
+ },
+ "name": {
+ "type": "string",
+ "description": "State name"
+ },
+ "type": {
+ "type": "string",
+ "const": "subflow",
+ "description": "State type"
+ },
+ "end": {
+ "$ref": "#/definitions/end",
+ "description": "State end definition"
+ },
+ "waitForCompletion": {
+ "type": "boolean",
+ "default": false,
+ "description": "Workflow execution must wait for sub-workflow to finish before continuing"
+ },
+ "workflowId": {
+ "type": "string",
+ "description": "Sub-workflow unique id"
+ },
+ "repeat": {
+ "$ref": "#/definitions/repeat",
+ "description": "SubFlow state repeat exec definition"
+ },
+ "stateDataFilter": {
+ "description": "State data filter",
+ "$ref": "#/definitions/statedatafilter"
+ },
+ "onErrors": {
+ "type": "array",
+ "description": "States error handling and retries definitions",
+ "items": {
+ "type": "object",
+ "$ref": "#/definitions/error"
+ },
+ "additionalItems": false
+ },
+ "transition": {
+ "description": "Next transition of the workflow after SubFlow has completed execution",
+ "$ref": "#/definitions/transition"
+ },
+ "compensatedBy": {
+ "type": "string",
+ "minLength": 1,
+ "description": "Unique Name of a workflow state which is responsible for compensation of this state"
+ },
+ "usedForCompensation": {
+ "type": "boolean",
+ "default": false,
+ "description": "If true, this state is used to compensate another state. Default is false"
+ },
+ "metadata": {
+ "$ref": "common.json#/definitions/metadata"
+ }
+ },
+ "additionalProperties": false,
+ "if": {
+ "properties": {
+ "usedForCompensation": {
+ "const": true
+ }
+ },
+ "required": [
+ "usedForCompensation"
+ ]
+ },
+ "then": {
+ "required": [
+ "name",
+ "type",
+ "workflowId"
+ ]
+ },
+ "else": {
+ "oneOf": [
+ {
+ "required": [
+ "name",
+ "type",
+ "workflowId",
+ "end"
+ ]
+ },
+ {
+ "required": [
+ "name",
+ "type",
+ "workflowId",
+ "transition"
+ ]
+ }
+ ]
+ }
+ },
+ "injectstate": {
+ "type": "object",
+ "description": "Inject static data into state data. Does not perform any actions",
+ "properties": {
+ "id": {
+ "type": "string",
+ "description": "Unique state id",
+ "minLength": 1
+ },
+ "name": {
+ "type": "string",
+ "description": "State name"
+ },
+ "type": {
+ "type": "string",
+ "const": "inject",
+ "description": "State type"
+ },
+ "end": {
+ "$ref": "#/definitions/end",
+ "description": "State end definition"
+ },
+ "data": {
+ "type": "object",
+ "description": "JSON object which can be set as states data input and can be manipulated via filters"
+ },
+ "stateDataFilter": {
+ "description": "State data filter",
+ "$ref": "#/definitions/statedatafilter"
+ },
+ "transition": {
+ "description": "Next transition of the workflow after subflow has completed",
+ "$ref": "#/definitions/transition"
+ },
+ "compensatedBy": {
+ "type": "string",
+ "minLength": 1,
+ "description": "Unique Name of a workflow state which is responsible for compensation of this state"
+ },
+ "usedForCompensation": {
+ "type": "boolean",
+ "default": false,
+ "description": "If true, this state is used to compensate another state. Default is false"
+ },
+ "metadata": {
+ "$ref": "common.json#/definitions/metadata"
+ }
+ },
+ "additionalProperties": false,
+ "if": {
+ "properties": {
+ "usedForCompensation": {
+ "const": true
+ }
+ },
+ "required": ["usedForCompensation"]
+ },
+ "then": {
+ "required": [
+ "name",
+ "type",
+ "data"
+ ]
+ },
+ "else": {
+ "oneOf": [
+ {
+ "required": [
+ "name",
+ "type",
+ "data",
+ "end"
+ ]
+ },
+ {
+ "required": [
+ "name",
+ "type",
+ "data",
+ "transition"
+ ]
+ }
+ ]
+ }
+ },
+ "foreachstate": {
+ "type": "object",
+ "description": "Execute a set of defined actions or workflows for each element of a data array",
+ "properties": {
+ "id": {
+ "type": "string",
+ "description": "Unique State id",
+ "minLength": 1
+ },
+ "name": {
+ "type": "string",
+ "description": "State name"
+ },
+ "type": {
+ "type": "string",
+ "const": "foreach",
+ "description": "State type"
+ },
+ "end": {
+ "$ref": "#/definitions/end",
+ "description": "State end definition"
+ },
+ "inputCollection": {
+ "type": "string",
+ "description": "Workflow expression selecting an array element of the states data"
+ },
+ "outputCollection": {
+ "type": "string",
+ "description": "Workflow expression specifying an array element of the states data to add the results of each iteration"
+ },
+ "iterationParam": {
+ "type": "string",
+ "description": "Name of the iteration parameter that can be referenced in actions/workflow. For each parallel iteration, this param should contain an unique element of the inputCollection array"
+ },
+ "max": {
+ "type": [
+ "number",
+ "string"
+ ],
+ "minimum": 0,
+ "minLength": 0,
+ "description": "Specifies how upper bound on how many iterations may run in parallel"
+ },
+ "actions": {
+ "type": "array",
+ "description": "Actions to be executed for each of the elements of inputCollection",
+ "items": {
+ "type": "object",
+ "$ref": "#/definitions/action"
+ },
+ "additionalItems": false
+ },
+ "workflowId": {
+ "type": "string",
+ "description": "Unique Id of a workflow to be executed for each of the elements of inputCollection"
+ },
+ "stateDataFilter": {
+ "description": "State data filter",
+ "$ref": "#/definitions/statedatafilter"
+ },
+ "onErrors": {
+ "type": "array",
+ "description": "States error handling and retries definitions",
+ "items": {
+ "type": "object",
+ "$ref": "#/definitions/error"
+ },
+ "additionalItems": false
+ },
+ "transition": {
+ "description": "Next transition of the workflow after state has completed",
+ "$ref": "#/definitions/transition"
+ },
+ "compensatedBy": {
+ "type": "string",
+ "minLength": 1,
+ "description": "Unique Name of a workflow state which is responsible for compensation of this state"
+ },
+ "usedForCompensation": {
+ "type": "boolean",
+ "default": false,
+ "description": "If true, this state is used to compensate another state. Default is false"
+ },
+ "metadata": {
+ "$ref": "common.json#/definitions/metadata"
+ }
+ },
+ "additionalProperties": false,
+ "if": {
+ "properties": {
+ "usedForCompensation": {
+ "const": true
+ }
+ },
+ "required": ["usedForCompensation"]
+ },
+ "then": {
+ "required": [
+ "name",
+ "type",
+ "inputCollection",
+ "iterationParam",
+ "workflowId"
+ ]
+ },
+ "else": {
+ "oneOf": [
+ {
+ "required": [
+ "name",
+ "type",
+ "inputCollection",
+ "iterationParam",
+ "workflowId",
+ "end"
+ ]
+ },
+ {
+ "required": [
+ "name",
+ "type",
+ "inputCollection",
+ "iterationParam",
+ "workflowId",
+ "transition"
+ ]
+ },
+ {
+ "required": [
+ "name",
+ "type",
+ "inputCollection",
+ "iterationParam",
+ "actions",
+ "end"
+ ]
+ },
+ {
+ "required": [
+ "name",
+ "type",
+ "inputCollection",
+ "iterationParam",
+ "actions",
+ "transition"
+ ]
+ }
+ ]
+ }
+ },
+ "callbackstate": {
+ "type": "object",
+ "description": "This state performs an action, then waits for the callback event that denotes completion of the action",
+ "properties": {
+ "id": {
+ "type": "string",
+ "description": "Unique state id",
+ "minLength": 1
+ },
+ "name": {
+ "type": "string",
+ "description": "State name"
+ },
+ "type": {
+ "type": "string",
+ "const": "callback",
+ "description": "State type"
+ },
+ "action": {
+ "description": "Defines the action to be executed",
+ "$ref": "#/definitions/action"
+ },
+ "eventRef": {
+ "type": "string",
+ "description": "References an unique callback event name in the defined workflow events"
+ },
+ "timeout": {
+ "type": "string",
+ "description": "Time period to wait for incoming events (ISO 8601 format)"
+ },
+ "eventDataFilter": {
+ "description": "Event data filter",
+ "$ref": "#/definitions/eventdatafilter"
+ },
+ "stateDataFilter": {
+ "description": "State data filter",
+ "$ref": "#/definitions/statedatafilter"
+ },
+ "onErrors": {
+ "type": "array",
+ "description": "States error handling and retries definitions",
+ "items": {
+ "type": "object",
+ "$ref": "#/definitions/error"
+ },
+ "additionalItems": false
+ },
+ "transition": {
+ "description": "Next transition of the workflow after all the actions have been performed",
+ "$ref": "#/definitions/transition"
+ },
+ "end": {
+ "$ref": "#/definitions/end",
+ "description": "State end definition"
+ },
+ "compensatedBy": {
+ "type": "string",
+ "minLength": 1,
+ "description": "Unique Name of a workflow state which is responsible for compensation of this state"
+ },
+ "usedForCompensation": {
+ "type": "boolean",
+ "default": false,
+ "description": "If true, this state is used to compensate another state. Default is false"
+ },
+ "metadata": {
+ "$ref": "common.json#/definitions/metadata"
+ }
+ },
+ "additionalProperties": false,
+ "if": {
+ "properties": {
+ "usedForCompensation": {
+ "const": true
+ }
+ },
+ "required": ["usedForCompensation"]
+ },
+ "then": {
+ "required": [
+ "name",
+ "type",
+ "action",
+ "eventRef",
+ "timeout"
+ ]
+ },
+ "else": {
+ "oneOf": [
+ {
+ "required": [
+ "name",
+ "type",
+ "action",
+ "eventRef",
+ "timeout",
+ "end"
+ ]
+ },
+ {
+ "required": [
+ "name",
+ "type",
+ "action",
+ "eventRef",
+ "timeout",
+ "transition"
+ ]
+ }
+ ]
+ }
+ },
+ "startdef": {
+ "oneOf": [
+ {
+ "type": "string",
+ "description": "Name of the starting workflow state",
+ "minLength": 1
+ },
+ {
+ "type": "object",
+ "description": "Workflow start definition",
+ "properties": {
+ "stateName": {
+ "type": "string",
+ "description": "Name of the starting workflow state",
+ "minLength": 1
+ },
+ "schedule": {
+ "description": "Define the time/repeating intervals or cron at which workflow instances should be automatically started.",
+ "$ref": "#/definitions/schedule"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "stateName",
+ "schedule"
+ ]
+ }
+ ]
+ },
+ "schedule": {
+ "oneOf": [
+ {
+ "type": "string",
+ "description": "Time interval (must be repeating interval) described with ISO 8601 format. Declares when workflow instances will be automatically created. (UTC timezone is assumed)",
+ "minLength": 1
+ },
+ {
+ "type": "object",
+ "description": "Start state schedule definition",
+ "properties": {
+ "interval": {
+ "type": "string",
+ "description": "Time interval (must be repeating interval) described with ISO 8601 format. Declares when workflow instances will be automatically created.",
+ "minLength": 1
+ },
+ "cron": {
+ "$ref": "#/definitions/crondef"
+ },
+ "timezone": {
+ "type": "string",
+ "description": "Timezone name used to evaluate the interval & cron-expression. (default: UTC)"
+ }
+ },
+ "additionalProperties": false,
+ "oneOf": [
+ {
+ "required": [
+ "interval"
+ ]
+ },
+ {
+ "required": [
+ "cron"
+ ]
+ }
+ ]
+ }
+ ]
+ },
+ "end": {
+ "oneOf": [
+ {
+ "type": "boolean",
+ "description": "State end definition",
+ "default": true
+ },
+ {
+ "type": "object",
+ "description": "State end definition",
+ "properties": {
+ "terminate": {
+ "type": "boolean",
+ "default": false,
+ "description": "If true, completes all execution flows in the given workflow instance"
+ },
+ "produceEvents": {
+ "type": "array",
+ "description": "Defines events that should be produced",
+ "items": {
+ "type": "object",
+ "$ref": "#/definitions/produceeventdef"
+ },
+ "additionalItems": false
+ },
+ "compensate": {
+ "type": "boolean",
+ "default": false,
+ "description": "If set to true, triggers workflow compensation. Default is false"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ ]
+ }
+ ]
+ },
+ "produceeventdef": {
+ "type": "object",
+ "description": "Produce an event and set its data",
+ "properties": {
+ "eventRef": {
+ "type": "string",
+ "description": "References a name of a defined event"
+ },
+ "data": {
+ "type": [
+ "string",
+ "object"
+ ],
+ "description": "If String, expression which selects parts of the states data output to become the data of the produced event. If object a custom object to become the data of produced event."
+ },
+ "contextAttributes": {
+ "type": "object",
+ "description": "Add additional event extension context attributes",
+ "additionalProperties": {
+ "type": "string"
+ }
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "eventRef"
+ ]
+ },
+ "statedatafilter": {
+ "type": "object",
+ "properties": {
+ "input": {
+ "type": "string",
+ "description": "Workflow expression to filter the state data input"
+ },
+ "output": {
+ "type": "string",
+ "description": "Workflow expression that filters the state data output"
+ }
+ },
+ "additionalProperties": false,
+ "required": []
+ },
+ "eventdatafilter": {
+ "type": "object",
+ "properties": {
+ "data": {
+ "type": "string",
+ "description": "Workflow expression that filters of the event data (payload)"
+ },
+ "toStateData": {
+ "type": "string",
+ "description": " Workflow expression that selects a state data element to which the event payload should be added/merged into. If not specified, denotes, the top-level state data element."
+ }
+ },
+ "additionalProperties": false,
+ "required": []
+ },
+ "actiondatafilter": {
+ "type": "object",
+ "properties": {
+ "fromStateData": {
+ "type": "string",
+ "description": "Workflow expression that selects state data that the state action can use"
+ },
+ "results": {
+ "type": "string",
+ "description": "Workflow expression that filters the actions data results"
+ },
+ "toStateData": {
+ "type": "string",
+ "description": "Workflow expression that selects a state data element to which the action results should be added/merged into. If not specified, denote, the top-level state data element"
+ }
+ },
+ "additionalProperties": false,
+ "required": []
+ },
+ "repeat": {
+ "type": "object",
+ "properties": {
+ "expression": {
+ "type": "string",
+ "description": "Expression evaluated against SubFlow state data. SubFlow will repeat execution as long as this expression is true or until the max property count is reached",
+ "minLength": 1
+ },
+ "checkBefore": {
+ "type": "boolean",
+ "description": "If true, the expression is evaluated before each repeat execution, if false the expression is evaluated after each repeat execution",
+ "default": true
+ },
+ "max": {
+ "type": "integer",
+ "description": "Sets the maximum amount of repeat executions",
+ "minimum": 0
+ },
+ "continueOnError": {
+ "type": "boolean",
+ "description": "If true, repeats executions in a case unhandled errors propagate from the sub-workflow to this state",
+ "default": false
+ },
+ "stopOnEvents": {
+ "type": "array",
+ "description": "List referencing defined consumed workflow events. SubFlow will repeat execution until one of the defined events is consumed, or until the max property count is reached",
+ "minItems": 1,
+ "items": {
+ "type": "string"
+ },
+ "additionalItems": false
+ }
+ },
+ "additionalProperties": false,
+ "required": []
+ }
+ }
+}
\ No newline at end of file
diff --git a/public/schemas/0.7/auth.json b/public/schemas/0.7/auth.json
new file mode 100644
index 0000000..8678bb9
--- /dev/null
+++ b/public/schemas/0.7/auth.json
@@ -0,0 +1,218 @@
+{
+ "$id": "https://serverlessworkflow.io/schemas/0.7/auth.json",
+ "$schema": "http://json-schema.org/draft-07/schema#",
+ "description": "Serverless Workflow specification - auth schema",
+ "type": "object",
+ "auth": {
+ "oneOf": [
+ {
+ "type": "string",
+ "format": "uri",
+ "description": "URI to a resource containing auth definitions (json or yaml)"
+ },
+ {
+ "type": "array",
+ "description": "Workflow auth definitions",
+ "items": {
+ "type": "object",
+ "$ref": "#/definitions/authdef"
+ },
+ "additionalItems": false,
+ "minItems": 1
+ }
+ ]
+ },
+ "required": [
+ "auth"
+ ],
+ "definitions": {
+ "authdef": {
+ "type": "object",
+ "properties": {
+ "name": {
+ "type": "string",
+ "description": "Unique auth definition name",
+ "minLength": 1
+ },
+ "scheme": {
+ "type": "string",
+ "description": "Defines the auth type",
+ "enum": [
+ "basic",
+ "bearer",
+ "oauth2"
+ ],
+ "default": "basic"
+ },
+ "properties": {
+ "oneOf": [
+ {
+ "type": "string",
+ "description": "Expression referencing a workflow secret that contains all needed auth info"
+ },
+ {
+ "title": "Basic Auth Info",
+ "$ref": "#/definitions/basicpropsdef"
+ },
+ {
+ "title": "Bearer Auth Info State",
+ "$ref": "#/definitions/bearerpropsdef"
+ },
+ {
+ "title": "OAuth2 Info",
+ "$ref": "#/definitions/oauth2propsdef"
+ }
+ ]
+ }
+ },
+ "required": [
+ "name",
+ "properties"
+ ]
+ },
+ "basicpropsdef": {
+ "oneOf": [
+ {
+ "type": "string",
+ "description": "Expression referencing a workflow secret that contains all needed basic auth info"
+ },
+ {
+ "type": "object",
+ "description": "Basic auth information",
+ "properties": {
+ "username": {
+ "type": "string",
+ "description": "String or a workflow expression. Contains the user name",
+ "minLength": 1
+ },
+ "password": {
+ "type": "string",
+ "description": "String or a workflow expression. Contains the user password",
+ "minLength": 1
+ },
+ "metadata": {
+ "$ref": "common.json#/definitions/metadata"
+ }
+ },
+ "required": [
+ "username",
+ "password"
+ ],
+ "additionalProperties": false
+ }
+ ]
+ },
+ "bearerpropsdef": {
+ "oneOf": [
+ {
+ "type": "string",
+ "description": "Expression referencing a workflow secret that contains all needed bearer auth info"
+ },
+ {
+ "type": "object",
+ "description": "Bearer auth information",
+ "properties": {
+ "token": {
+ "type": "string",
+ "description": "String or a workflow expression. Contains the token",
+ "minLength": 1
+ },
+ "metadata": {
+ "$ref": "common.json#/definitions/metadata"
+ }
+ },
+ "required": [
+ "token"
+ ],
+ "additionalProperties": false
+ }
+ ]
+ },
+ "oauth2propsdef": {
+ "oneOf": [
+ {
+ "type": "string",
+ "description": "Expression referencing a workflow secret that contains all needed OAuth2 auth info"
+ },
+ {
+ "type": "object",
+ "description": "OAuth2 information",
+ "properties": {
+ "authority": {
+ "type": "string",
+ "description": "String or a workflow expression. Contains the authority information",
+ "minLength": 1
+ },
+ "grantType": {
+ "type": "string",
+ "description": "Defines the grant type",
+ "enum": [
+ "password",
+ "clientCredentials",
+ "tokenExchange"
+ ],
+ "additionalItems": false
+ },
+ "clientId": {
+ "type": "string",
+ "description": "String or a workflow expression. Contains the client identifier",
+ "minLength": 1
+ },
+ "clientSecret": {
+ "type": "string",
+ "description": "Workflow secret or a workflow expression. Contains the client secret",
+ "minLength": 1
+ },
+ "scopes": {
+ "type": "array",
+ "description": "Array containing strings or workflow expressions. Contains the OAuth2 scopes",
+ "items": {
+ "type": "string"
+ },
+ "minItems": 1,
+ "additionalItems": false
+ },
+ "username": {
+ "type": "string",
+ "description": "String or a workflow expression. Contains the user name. Used only if grantType is 'resourceOwner'",
+ "minLength": 1
+ },
+ "password": {
+ "type": "string",
+ "description": "String or a workflow expression. Contains the user password. Used only if grantType is 'resourceOwner'",
+ "minLength": 1
+ },
+ "audiences": {
+ "type": "array",
+ "description": "Array containing strings or workflow expressions. Contains the OAuth2 audiences",
+ "items": {
+ "type": "string"
+ },
+ "minItems": 1,
+ "additionalItems": false
+ },
+ "subjectToken": {
+ "type": "string",
+ "description": "String or a workflow expression. Contains the subject token",
+ "minLength": 1
+ },
+ "requestedSubject": {
+ "type": "string",
+ "description": "String or a workflow expression. Contains the requested subject",
+ "minLength": 1
+ },
+ "requestedIssuer": {
+ "type": "string",
+ "description": "String or a workflow expression. Contains the requested issuer",
+ "minLength": 1
+ },
+ "metadata": {
+ "$ref": "common.json#/definitions/metadata"
+ }
+ },
+ "required": ["grantType", "clientId"]
+ }
+ ]
+ }
+ }
+}
\ No newline at end of file
diff --git a/public/schemas/0.7/common.json b/public/schemas/0.7/common.json
new file mode 100644
index 0000000..60224c5
--- /dev/null
+++ b/public/schemas/0.7/common.json
@@ -0,0 +1,15 @@
+{
+ "$id": "https://serverlessworkflow.io/schemas/0.7/common.json",
+ "$schema": "http://json-schema.org/draft-07/schema#",
+ "description": "Serverless Workflow specification - common schema",
+ "type": "object",
+ "definitions": {
+ "metadata": {
+ "type": "object",
+ "description": "Metadata information",
+ "additionalProperties": {
+ "type": "string"
+ }
+ }
+ }
+}
\ No newline at end of file
diff --git a/public/schemas/0.7/errors.json b/public/schemas/0.7/errors.json
new file mode 100644
index 0000000..b455eff
--- /dev/null
+++ b/public/schemas/0.7/errors.json
@@ -0,0 +1,53 @@
+{
+ "$id": "https://serverlessworkflow.io/schemas/0.7/errors.json",
+ "$schema": "http://json-schema.org/draft-07/schema#",
+ "description": "Serverless Workflow specification - errors schema",
+ "type": "object",
+ "errors": {
+ "oneOf": [
+ {
+ "type": "string",
+ "format": "uri",
+ "description": "URI to a resource containing error definitions (json or yaml)"
+ },
+ {
+ "type": "array",
+ "description": "Workflow Error definitions. Defines checked errors that can be explicitly handled during workflow execution",
+ "items": {
+ "type": "object",
+ "$ref": "#/definitions/errordef"
+ },
+ "additionalItems": false,
+ "minItems": 1
+ }
+ ]
+ },
+ "required": [
+ "errors"
+ ],
+ "definitions": {
+ "errordef": {
+ "type": "object",
+ "properties": {
+ "name": {
+ "type": "string",
+ "description": "Domain-specific error name",
+ "minLength": 1
+ },
+ "code": {
+ "type": "string",
+ "description": "Error code. Can be used in addition to the name to help runtimes resolve to technical errors/exceptions. Should not be defined if error is set to '*'",
+ "minLength": 1
+ },
+ "description": {
+ "type": "string",
+ "description": "Error description"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "name"
+ ]
+ }
+ }
+}
\ No newline at end of file
diff --git a/public/schemas/0.7/events.json b/public/schemas/0.7/events.json
new file mode 100644
index 0000000..c5c72ae
--- /dev/null
+++ b/public/schemas/0.7/events.json
@@ -0,0 +1,117 @@
+{
+ "$id": "https://serverlessworkflow.io/schemas/0.7/events.json",
+ "$schema": "http://json-schema.org/draft-07/schema#",
+ "description": "Serverless Workflow specification - events schema",
+ "type": "object",
+ "events": {
+ "oneOf": [
+ {
+ "type": "string",
+ "format": "uri",
+ "description": "URI to a resource containing event definitions (json or yaml)"
+ },
+ {
+ "type": "array",
+ "description": "Workflow CloudEvent definitions. Defines CloudEvents that can be consumed or produced",
+ "items": {
+ "type": "object",
+ "$ref": "#/definitions/eventdef"
+ },
+ "additionalItems": false,
+ "minItems": 1
+ }
+ ]
+ },
+ "required": [
+ "events"
+ ],
+ "definitions": {
+ "eventdef": {
+ "type": "object",
+ "properties": {
+ "name": {
+ "type": "string",
+ "description": "Unique event name",
+ "minLength": 1
+ },
+ "source": {
+ "type": "string",
+ "description": "CloudEvent source"
+ },
+ "type": {
+ "type": "string",
+ "description": "CloudEvent type"
+ },
+ "kind": {
+ "type": "string",
+ "enum": [
+ "consumed",
+ "produced"
+ ],
+ "description": "Defines the CloudEvent as either 'consumed' or 'produced' by the workflow. Default is 'consumed'",
+ "default": "consumed"
+ },
+ "correlation": {
+ "type": "array",
+ "description": "CloudEvent correlation definitions",
+ "minItems": 1,
+ "items": {
+ "type": "object",
+ "$ref": "#/definitions/correlationDef"
+ },
+ "additionalItems": false
+ },
+ "dataOnly": {
+ "type": "boolean",
+ "default": true,
+ "description": "If `true`, only the Event payload is accessible to consuming Workflow states. If `false`, both event payload and context attributes should be accessible "
+ },
+ "metadata": {
+ "$ref": "common.json#/definitions/metadata",
+ "description": "Metadata information"
+ }
+ },
+ "additionalProperties": false,
+ "if": {
+ "properties": {
+ "kind": {
+ "const": "consumed"
+ }
+ }
+ },
+ "then": {
+ "required": [
+ "name",
+ "source",
+ "type"
+ ]
+ },
+ "else": {
+ "required": [
+ "name",
+ "type"
+ ]
+ }
+ },
+ "correlationDef": {
+ "type": "object",
+ "description": "CloudEvent correlation definition",
+ "properties": {
+ "contextAttributeName": {
+ "type": "string",
+ "description": "CloudEvent Extension Context Attribute name",
+ "minLength": 1
+ },
+ "contextAttributeValue": {
+ "type": "string",
+ "description": "CloudEvent Extension Context Attribute value",
+ "minLength": 1
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "contextAttributeName"
+ ]
+ }
+ }
+}
\ No newline at end of file
diff --git a/public/schemas/0.7/extensions/kpi.json b/public/schemas/0.7/extensions/kpi.json
new file mode 100644
index 0000000..5013a11
--- /dev/null
+++ b/public/schemas/0.7/extensions/kpi.json
@@ -0,0 +1,282 @@
+{
+ "$id": "https://serverlessworkflow.io/schemas/0.7/extensions/kpi.json",
+ "$schema": "http://json-schema.org/draft-07/schema#",
+ "description": "Serverless Workflow specification - KPIs Extension Schema",
+ "type": "object",
+ "definitions": {
+ "kpi": {
+ "type": "object",
+ "description": "Serverless Workflow KPI Extension",
+ "properties": {
+ "extensionid": {
+ "type": "string",
+ "default": "workflow-kpi-extension",
+ "description": "Extension unique identifier"
+ },
+ "workflowid": {
+ "type": "string",
+ "minLength": 1,
+ "description": "Workflow definition unique identifier (workflow id property)"
+ },
+ "currency": {
+ "type": "string",
+ "default": "USD",
+ "description": "Unit for all cost-based KPI parameters. Default 'USD'"
+ },
+ "events": {
+ "type": "array",
+ "description": "Events KPIs",
+ "items": {
+ "type": "object",
+ "$ref": "#/definitions/eventskpi"
+ }
+ },
+ "functions": {
+ "type": "array",
+ "description": "Functions KPIs",
+ "items": {
+ "type": "object",
+ "$ref": "#/definitions/functionskpi"
+ }
+ },
+ "states": {
+ "type": "array",
+ "description": "States KPIs",
+ "items": {
+ "type": "object",
+ "$ref": "#/definitions/stateskpi"
+ }
+ },
+ "workflow": {
+ "description": "Workflow KPIs",
+ "$ref": "#/definitions/workflowkpi"
+ }
+ },
+ "required": [
+ "extensionid",
+ "workflowid"
+ ]
+ },
+ "eventskpi": {
+ "type": "object",
+ "properties": {
+ "for": {
+ "type": "string",
+ "description": "References an unique event name in the defined workflow events"
+ },
+ "per": {
+ "description": "Define the kpi thresholds in terms of time and/or num of workflow instances",
+ "$ref": "#/definitions/thresholds"
+ },
+ "maxConsumed": {
+ "type": "string",
+ "description": "If event kind is 'consumed', the max amount of times this event is consumed"
+ },
+ "minConsumed": {
+ "type": "string",
+ "description": "If event kind is 'consumed', the min amount of times this event is consumed"
+ },
+ "avgConsumed": {
+ "type": "string",
+ "description": "If event kind is 'consumed', the avg amount of times this event is consumed"
+ },
+ "maxProduced": {
+ "type": "string",
+ "description": "If event kind is 'produced', the max amount of times this event is produced"
+ },
+ "minProduced": {
+ "type": "string",
+ "description": "If event kind is 'produced', the min amount times this event is produced"
+ },
+ "avgProduced": {
+ "type": "string",
+ "description": "If event kind is 'produced', the avg amount of times this event is produced"
+ }
+ },
+ "required": [
+ "for",
+ "per"
+ ]
+ },
+ "functionskpi": {
+ "type": "object",
+ "allOf": [
+ {
+ "properties": {
+ "for": {
+ "type": "string",
+ "description": "References an unique function name in the defined workflow functions"
+ },
+ "per": {
+ "description": "Define the kpi thresholds in terms of time and/or num of workflow instances",
+ "$ref": "#/definitions/thresholds"
+ },
+ "maxErrors": {
+ "type": "string",
+ "description": "Max number of errors during function invocation"
+ },
+ "maxRetry": {
+ "type": "string",
+ "description": "Max number of retries done for this function invocation"
+ },
+ "maxTimeout": {
+ "type": "string",
+ "description": "Max number of times the function timeout time was reached"
+ }
+ }
+ },
+ {
+ "$ref": "#/definitions/invocationkpis"
+ },
+ {
+ "$ref": "#/definitions/costkpis"
+ }
+ ],
+ "required": [
+ "for",
+ "per"
+ ]
+ },
+ "stateskpi": {
+ "type": "object",
+ "allOf": [
+ {
+ "properties": {
+ "for": {
+ "type": "string",
+ "description": "References an unique state name in the defined workflow events"
+ },
+ "per": {
+ "description": "Define the kpi thresholds in terms of time and/or num of workflow instances",
+ "$ref": "#/definitions/thresholds"
+ }
+ }
+ },
+ {
+ "$ref": "#/definitions/execkpis"
+ },
+ {
+ "$ref": "#/definitions/durationkpis"
+ },
+ {
+ "$ref": "#/definitions/costkpis"
+ }
+ ],
+ "required": [
+ "for",
+ "per"
+ ]
+ },
+ "workflowkpi": {
+ "type": "object",
+ "allOf": [
+ {
+ "properties": {
+ "per": {
+ "description": "Define the kpi thresholds in terms of time and/or num of workflow instances",
+ "$ref": "#/definitions/thresholds"
+ }
+ }
+ },
+ {
+ "$ref": "#/definitions/invocationkpis"
+ },
+ {
+ "$ref": "#/definitions/durationkpis"
+ },
+ {
+ "$ref": "#/definitions/costkpis"
+ }
+ ],
+ "required": [
+ "per"
+ ]
+ },
+ "thresholds": {
+ "type": "object",
+ "properties": {
+ "time": {
+ "type": "string",
+ "default": "PT1D",
+ "description": "ISO_8601 time. 1 day default"
+ },
+ "instances": {
+ "type": "integer",
+ "minimum": 1,
+ "default": 1,
+ "description": "Number of workflow instances"
+ }
+ },
+ "required": [
+ ]
+ },
+ "costkpis": {
+ "type": "object",
+ "properties": {
+ "maxCost": {
+ "type": "string",
+ "description": "Max cost"
+ },
+ "minCost": {
+ "type": "string",
+ "description": "Min cost"
+ },
+ "avgCost": {
+ "type": "string",
+ "description": "Avg cost"
+ }
+ }
+ },
+ "invocationkpis": {
+ "type": "object",
+ "properties": {
+ "maxInvoked": {
+ "type": "string",
+ "description": "Max number of invocation times"
+ },
+ "minInvoked": {
+ "type": "string",
+ "description": "Min number of invocation times"
+ },
+ "avgInvoked": {
+ "type": "string",
+ "description": "Avg number of invocation times"
+ }
+ }
+ },
+ "durationkpis": {
+ "type": "object",
+ "properties": {
+ "maxDuration": {
+ "type": "string",
+ "description": "ISO 8601. Max duration"
+ },
+ "minDuration": {
+ "type": "string",
+ "description": "ISO 8601. Min duration"
+ },
+ "avgDuration": {
+ "type": "string",
+ "description": "ISO 8601. Avg duration"
+ }
+ }
+ },
+ "execkpis": {
+ "type": "object",
+ "properties": {
+ "maxExec": {
+ "type": "string",
+ "description": "Max exec number"
+ },
+ "minExec": {
+ "type": "string",
+ "description": "Min exec numbe"
+ },
+ "avgExec": {
+ "type": "string",
+ "description": "Avg exec number"
+ }
+ }
+ }
+ }
+}
\ No newline at end of file
diff --git a/public/schemas/0.7/extensions/ratelimiting.json b/public/schemas/0.7/extensions/ratelimiting.json
new file mode 100644
index 0000000..930ba0c
--- /dev/null
+++ b/public/schemas/0.7/extensions/ratelimiting.json
@@ -0,0 +1,73 @@
+{
+ "$id": "https://serverlessworkflow.io/schemas/0.7/extensions/ratelimiting.json",
+ "$schema": "http://json-schema.org/draft-07/schema#",
+ "description": "Serverless Workflow specification - Various workflow rate limiting settings",
+ "type": "object",
+ "definitions": {
+ "ratelimiting": {
+ "type": "object",
+ "description": "Serverless Workflow Rate Limiting Extension",
+ "properties": {
+ "extensionid": {
+ "type": "string",
+ "default": "workflow-ratelimiting-extension",
+ "description": "Extension unique identifier"
+ },
+ "workflowid": {
+ "type": "string",
+ "minLength": 1,
+ "description": "Workflow definition unique identifier (workflow id property)"
+ },
+ "workflowVersions": {
+ "type": "array",
+ "description": "Workflow versions. If not defined, applies to all workflow instances (regardless of their associated workflow version)",
+ "items": {
+ "type": "string"
+ }
+ },
+ "singleInstance": {
+ "description": "Rate Limit settings per single instance of a workflow with provided workflowid",
+ "$ref": "#/definitions/ratelimits"
+ },
+ "allInstances": {
+ "description": "Rate Limit settings across all instance of a workflow with provided workflowid",
+ "$ref": "#/definitions/ratelimits"
+ }
+ },
+ "required": [
+ "extensionid",
+ "workflowid"
+ ]
+ },
+ "ratelimits": {
+ "type": "object",
+ "properties": {
+ "maxActionsPerSecond": {
+ "type": "number",
+ "default": 0,
+ "description": "Sets the rate limiting on number of actions that can be executed per second. Notice that the number is represented as number type, so that you can set it to less than 1 if needed. For example, set the number to 0.1 means workflow actions can be executed once every 10 seconds. Default zero value means 'unlimited'"
+ },
+ "maxConcurrentActions": {
+ "type": "number",
+ "default": 100,
+ "description": "Maximum number of actions that can be executed in parallel"
+ },
+ "maxProducedEventsPerSecond": {
+ "type": "number",
+ "default": 0,
+ "description": "Sets the rate limiting on number of events that can be produced per second. Notice that the number is represented as number type, so that you can set it to less than 1 if needed. For example, set the number to 0.1 means workflow can produce events once every 10 seconds. Default zero value means 'unlimited'"
+ },
+ "maxStates": {
+ "type": "integer",
+ "default": 0,
+ "description": "Maximum number of workflow states that should be executed. Default is zero, meaning unlimited."
+ },
+ "maxTransitions": {
+ "type": "integer",
+ "default": 0,
+ "description": "Maximum number of workflow transitions that should be executed. Default is zero, meaning unlimited."
+ }
+ }
+ }
+ }
+}
\ No newline at end of file
diff --git a/public/schemas/0.7/functions.json b/public/schemas/0.7/functions.json
new file mode 100644
index 0000000..cb35222
--- /dev/null
+++ b/public/schemas/0.7/functions.json
@@ -0,0 +1,71 @@
+{
+ "$id": "https://serverlessworkflow.io/schemas/0.7/functions.json",
+ "$schema": "http://json-schema.org/draft-07/schema#",
+ "description": "Serverless Workflow specification - functions schema",
+ "type": "object",
+ "functions": {
+ "oneOf": [
+ {
+ "type": "string",
+ "format": "uri",
+ "description": "URI to a resource containing function definitions (json or yaml)"
+ },
+ {
+ "type": "array",
+ "description": "Workflow function definitions",
+ "items": {
+ "type": "object",
+ "$ref": "#/definitions/function"
+ },
+ "additionalItems": false,
+ "minItems": 1
+ }
+ ]
+ },
+ "required": [
+ "functions"
+ ],
+ "definitions": {
+ "function": {
+ "type": "object",
+ "properties": {
+ "name": {
+ "type": "string",
+ "description": "Unique function name",
+ "minLength": 1
+ },
+ "operation": {
+ "type": "string",
+ "description": "If type is `rest`, #. If type is `asyncapi`, #. If type is `rpc`, ##. If type is `graphql`, ##. If type is `odata`, #. If type is `expression`, defines the workflow expression.",
+ "minLength": 1
+ },
+ "type": {
+ "type": "string",
+ "description": "Defines the function type. Is either `rest`, `asyncapi, `rpc`, `graphql`, `odata`, or `expression`. Default is `rest`",
+ "enum": [
+ "rest",
+ "asyncapi",
+ "rpc",
+ "graphql",
+ "odata",
+ "expression"
+ ],
+ "default": "rest"
+ },
+ "authRef": {
+ "type": "string",
+ "description": "References an auth definition name to be used to access to resource defined in the operation parameter",
+ "minLength": 1
+ },
+ "metadata": {
+ "$ref": "common.json#/definitions/metadata"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "name",
+ "operation"
+ ]
+ }
+ }
+}
\ No newline at end of file
diff --git a/public/schemas/0.7/odata.json b/public/schemas/0.7/odata.json
new file mode 100644
index 0000000..27febab
--- /dev/null
+++ b/public/schemas/0.7/odata.json
@@ -0,0 +1,81 @@
+{
+ "$id": "https://serverlessworkflow.io/schemas/0.7/odata.json",
+ "$schema": "http://json-schema.org/draft-07/schema#",
+ "description": "Serverless Workflow specification - OData command options schema",
+ "type": "object",
+ "key": {
+ "type": "string",
+ "description": "The unique identifier of the single entry to query",
+ "minLength": 1
+ },
+ "queryOptions":{
+ "$ref": "#/definitions/queryoptions"
+ },
+ "definitions": {
+ "queryoptions": {
+ "type": "object",
+ "properties": {
+ "filter": {
+ "type": "string",
+ "description": "The $filter system query option allows clients to filter the set of resources that are addressed by a request URL. $filter specifies conditions that MUST be met by a resource for it to be returned in the set of matching resources",
+ "minLength": 1
+ },
+ "expand": {
+ "type": "string",
+ "description": "The $expand system query option allows clients to request related resources when a resource that satisfies a particular request is retrieved",
+ "minLength": 1
+ },
+ "select": {
+ "type": "string",
+ "description": "The $select system query option allows clients to requests a limited set of information for each entity or complex type identified by the ResourcePath and other System Query Options like $filter, $top, $skip etc. The $select query option is often used in conjunction with the $expand query option, to first increase the scope of the resource graph returned ($expand) and then selectively prune that resource graph ($select)",
+ "minLength": 1
+ },
+ "orderBy": {
+ "type": "string",
+ "description": "The $orderby system query option allows clients to request resource in a particular order",
+ "minLength": 1
+ },
+ "top": {
+ "type": "integer",
+ "description": "The $top system query option allows clients a required number of resources. Usually used in conjunction with the $skip query options",
+ "minLength": 1
+ },
+ "skip": {
+ "type": "integer",
+ "description": "The $skip system query option allows clients to skip a given number of resources. Usually used in conjunction with the $top query options",
+ "minLength": 1
+ },
+ "count": {
+ "type": "boolean",
+ "description": "The $count system query option allows clients to request a count of the matching resources included with the resources in the response"
+ },
+ "search": {
+ "type": "string",
+ "description": "The $search system query option allows clients to request items within a collection matching a free-text search expression",
+ "minLength": 1
+ },
+ "format": {
+ "type": "string",
+ "description": "The $format system query option if supported allows clients to request a response in a particular format",
+ "minLength": 1
+ },
+ "compute": {
+ "type": "string",
+ "description": "The $compute system query option allows clients to define computed properties that can be used in a $select or within a $filter or $orderby expression.",
+ "minLength": 1
+ },
+ "index": {
+ "type": "string",
+ "description": "The $index system query option allows clients to do a positional insert into a collection annotated with using the Core.PositionalInsert term (see http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part2-url-conventions.html#VocCore)",
+ "minLength": 1
+ },
+ "schemaVersion": {
+ "type": "string",
+ "description": "The $schemaversion system query option allows clients to specify the version of the schema against which the request is made. The semantics of $schemaversion is covered in the OData-Protocol (http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part2-url-conventions.html#odata) document.",
+ "minLength": 1
+ }
+ },
+ "additionalProperties": false
+ }
+ }
+}
\ No newline at end of file
diff --git a/public/schemas/0.7/retries.json b/public/schemas/0.7/retries.json
new file mode 100644
index 0000000..23df5e3
--- /dev/null
+++ b/public/schemas/0.7/retries.json
@@ -0,0 +1,85 @@
+{
+ "$id": "https://serverlessworkflow.io/schemas/0.7/retries.json",
+ "$schema": "http://json-schema.org/draft-07/schema#",
+ "description": "Serverless Workflow specification - retries schema",
+ "type": "object",
+ "retries": {
+ "oneOf": [
+ {
+ "type": "string",
+ "format": "uri",
+ "description": "URI to a resource containing retry definitions (json or yaml)"
+ },
+ {
+ "type": "array",
+ "description": "Workflow Retry definitions. Define retry strategies that can be referenced in states onError definitions",
+ "items": {
+ "type": "object",
+ "$ref": "#/definitions/retrydef"
+ },
+ "additionalItems": false,
+ "minItems": 1
+ }
+ ]
+ },
+ "required": [
+ "retries"
+ ],
+ "definitions": {
+ "retrydef": {
+ "type": "object",
+ "properties": {
+ "name": {
+ "type": "string",
+ "description": "Unique retry strategy name",
+ "minLength": 1
+ },
+ "delay": {
+ "type": "string",
+ "description": "Time delay between retry attempts (ISO 8601 duration format)"
+ },
+ "maxDelay": {
+ "type": "string",
+ "description": "Maximum time delay between retry attempts (ISO 8601 duration format)"
+ },
+ "increment": {
+ "type": "string",
+ "description": "Static value by which the delay increases during each attempt (ISO 8601 time format)"
+ },
+ "multiplier": {
+ "type": [
+ "number",
+ "string"
+ ],
+ "minimum": 0,
+ "minLength": 1,
+ "multipleOf": 0.01,
+ "description": "Numeric value, if specified the delay between retries is multiplied by this value."
+ },
+ "maxAttempts": {
+ "type": [
+ "number",
+ "string"
+ ],
+ "minimum": 1,
+ "minLength": 0,
+ "description": "Maximum number of retry attempts."
+ },
+ "jitter": {
+ "type": [
+ "number",
+ "string"
+ ],
+ "minimum": 0,
+ "maximum": 1,
+ "description": "If float type, maximum amount of random time added or subtracted from the delay between each retry relative to total delay (between 0 and 1). If string type, absolute maximum amount of random time added or subtracted from the delay between each retry (ISO 8601 duration format)"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "name",
+ "maxAttempts"
+ ]
+ }
+ }
+}
\ No newline at end of file
diff --git a/public/schemas/0.7/secrets.json b/public/schemas/0.7/secrets.json
new file mode 100644
index 0000000..427d68e
--- /dev/null
+++ b/public/schemas/0.7/secrets.json
@@ -0,0 +1,26 @@
+{
+ "$id": "https://serverlessworkflow.io/schemas/0.7/secrets.json",
+ "$schema": "http://json-schema.org/draft-07/schema#",
+ "description": "Serverless Workflow specification - secrets schema",
+ "type": "object",
+ "secrets": {
+ "oneOf": [
+ {
+ "type": "string",
+ "format": "uri",
+ "description": "URI to a resource containing secrets definitions (json or yaml)"
+ },
+ {
+ "type": "array",
+ "description": "Workflow Secrets definitions",
+ "items": {
+ "type": "string"
+ },
+ "minItems": 1
+ }
+ ]
+ },
+ "required": [
+ "secrets"
+ ]
+}
\ No newline at end of file
diff --git a/public/schemas/0.7/timeouts.json b/public/schemas/0.7/timeouts.json
new file mode 100644
index 0000000..c99ef6b
--- /dev/null
+++ b/public/schemas/0.7/timeouts.json
@@ -0,0 +1,118 @@
+{
+ "$id": "https://serverlessworkflow.io/schemas/0.7/timeouts.json",
+ "$schema": "http://json-schema.org/draft-07/schema#",
+ "description": "Serverless Workflow specification - functions schema",
+ "type": "object",
+ "timeouts": {
+ "oneOf": [
+ {
+ "type": "string",
+ "format": "uri",
+ "description": "URI to a resource containing timeouts definitions (json or yaml)"
+ },
+ {
+ "type": "object",
+ "description": "Workflow default timeouts",
+ "properties": {
+ "workflowExecTimeout": {
+ "$ref": "#/definitions/workflowExecTimeout"
+ },
+ "stateExecTimeout": {
+ "$ref": "#/definitions/stateExecTimeout"
+ },
+ "actionExecTimeout": {
+ "$ref": "#/definitions/actionExecTimeout"
+ },
+ "branchExecTimeout": {
+ "$ref": "#/definitions/branchExecTimeout"
+ },
+ "eventTimeout": {
+ "$ref": "#/definitions/eventTimeout"
+ }
+ },
+ "additionalProperties": false,
+ "required": []
+ }
+ ]
+ },
+ "required": [
+ "timeouts"
+ ],
+ "definitions": {
+ "workflowExecTimeout": {
+ "oneOf": [
+ {
+ "type": "string",
+ "description": "Workflow execution timeout duration (ISO 8601 duration format). If not specified should be 'unlimited'",
+ "minLength": 1
+ },
+ {
+ "type": "object",
+ "properties": {
+ "duration": {
+ "type": "string",
+ "description": "Workflow execution timeout duration (ISO 8601 duration format). If not specified should be 'unlimited'",
+ "minLength": 1
+ },
+ "interrupt": {
+ "type": "boolean",
+ "description": "If `false`, workflow instance is allowed to finish current execution. If `true`, current workflow execution is abrupted.",
+ "default": true
+ },
+ "runBefore": {
+ "type": "string",
+ "description": "Name of a workflow state to be executed before workflow instance is terminated",
+ "minLength": 1
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "duration"
+ ]
+ }
+ ]
+ },
+ "stateExecTimeout": {
+ "oneOf": [
+ {
+ "type": "string",
+ "description": "Total state execution timeout (including retries) (ISO 8601 duration format)",
+ "minLength": 1
+ },
+ {
+ "type": "object",
+ "description": "Workflow default timeouts",
+ "properties": {
+ "single": {
+ "type": "string",
+ "description": "Single state execution timeout, not including retries (ISO 8601 duration format)",
+ "minLength": 1
+ },
+ "total": {
+ "type": "string",
+ "description": "Total state execution timeout, including retries (ISO 8601 duration format)",
+ "minLength": 1
+ }
+ },
+ "additionalProperties": false,
+ "required": ["total"]
+ }
+ ]
+ },
+ "actionExecTimeout": {
+ "type": "string",
+ "description": "Single actions definition execution timeout duration (ISO 8601 duration format)",
+ "minLength": 1
+ },
+ "branchExecTimeout": {
+ "type": "string",
+ "description": "Single branch execution timeout duration (ISO 8601 duration format)",
+ "minLength": 1
+ },
+ "eventTimeout": {
+ "type": "string",
+ "description": "Timeout duration to wait for consuming defined events (ISO 8601 duration format)",
+ "minLength": 1
+ }
+ }
+}
\ No newline at end of file
diff --git a/public/schemas/0.7/workflow.json b/public/schemas/0.7/workflow.json
new file mode 100644
index 0000000..b7a7fc2
--- /dev/null
+++ b/public/schemas/0.7/workflow.json
@@ -0,0 +1,1953 @@
+{
+ "$id": "https://serverlessworkflow.io/schemas/0.7/workflow.json",
+ "$schema": "http://json-schema.org/draft-07/schema#",
+ "description": "Serverless Workflow specification - workflow schema",
+ "type": "object",
+ "properties": {
+ "id": {
+ "type": "string",
+ "description": "Workflow unique identifier",
+ "minLength": 1
+ },
+ "key": {
+ "type": "string",
+ "description": "Domain-specific workflow identifier",
+ "minLength": 1
+ },
+ "name": {
+ "type": "string",
+ "description": "Workflow name",
+ "minLength": 1
+ },
+ "description": {
+ "type": "string",
+ "description": "Workflow description"
+ },
+ "version": {
+ "type": "string",
+ "description": "Workflow version",
+ "minLength": 1
+ },
+ "annotations": {
+ "type": "array",
+ "description": "List of helpful terms describing the workflows intended purpose, subject areas, or other important qualities",
+ "minItems": 1,
+ "items": {
+ "type": "string"
+ },
+ "additionalItems": false
+ },
+ "dataInputSchema": {
+ "oneOf": [
+ {
+ "type": "string",
+ "description": "URI of the JSON Schema used to validate the workflow data input",
+ "minLength": 1
+ },
+ {
+ "type": "object",
+ "description": "Workflow data input schema definition",
+ "properties": {
+ "schema": {
+ "type": "string",
+ "description": "URI of the JSON Schema used to validate the workflow data input",
+ "minLength": 1
+ },
+ "failOnValidationErrors": {
+ "type": "boolean",
+ "default": true,
+ "description": "Determines if workflow execution should continue if there are validation errors"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "schema",
+ "failOnValidationErrors"
+ ]
+ }
+ ]
+ },
+ "secrets": {
+ "$ref": "secrets.json#/secrets"
+ },
+ "constants": {
+ "oneOf": [
+ {
+ "type": "string",
+ "format": "uri",
+ "description": "URI to a resource containing constants data (json or yaml)"
+ },
+ {
+ "type": "object",
+ "description": "Workflow constants data (object type)"
+ }
+ ]
+ },
+ "start": {
+ "$ref": "#/definitions/startdef"
+ },
+ "specVersion": {
+ "type": "string",
+ "description": "Serverless Workflow schema version",
+ "minLength": 1
+ },
+ "expressionLang": {
+ "type": "string",
+ "description": "Identifies the expression language used for workflow expressions. Default is 'jq'",
+ "default": "jq",
+ "minLength": 1
+ },
+ "timeouts": {
+ "$ref": "timeouts.json#/timeouts"
+ },
+ "errors": {
+ "$ref": "errors.json#/errors"
+ },
+ "keepActive": {
+ "type": "boolean",
+ "default": false,
+ "description": "If 'true', workflow instances is not terminated when there are no active execution paths. Instance can be terminated via 'terminate end definition' or reaching defined 'workflowExecTimeout'"
+ },
+ "metadata": {
+ "$ref": "common.json#/definitions/metadata"
+ },
+ "events": {
+ "$ref": "events.json#/events"
+ },
+ "functions": {
+ "$ref": "functions.json#/functions"
+ },
+ "autoRetries": {
+ "type": "boolean",
+ "default": false,
+ "description": "If set to true, actions should automatically be retried on unchecked errors. Default is false"
+ },
+ "retries": {
+ "$ref": "retries.json#/retries"
+ },
+ "auth": {
+ "$ref": "auth.json#/auth"
+ },
+ "states": {
+ "type": "array",
+ "description": "State definitions",
+ "items": {
+ "anyOf": [
+ {
+ "title": "Sleep State",
+ "$ref": "#/definitions/sleepstate"
+ },
+ {
+ "title": "Event State",
+ "$ref": "#/definitions/eventstate"
+ },
+ {
+ "title": "Operation State",
+ "$ref": "#/definitions/operationstate"
+ },
+ {
+ "title": "Parallel State",
+ "$ref": "#/definitions/parallelstate"
+ },
+ {
+ "title": "Switch State",
+ "$ref": "#/definitions/switchstate"
+ },
+ {
+ "title": "Inject State",
+ "$ref": "#/definitions/injectstate"
+ },
+ {
+ "title": "ForEach State",
+ "$ref": "#/definitions/foreachstate"
+ },
+ {
+ "title": "Callback State",
+ "$ref": "#/definitions/callbackstate"
+ }
+ ]
+ },
+ "additionalItems": false,
+ "minItems": 1
+ }
+ },
+ "oneOf": [
+ {
+ "required": [
+ "id",
+ "specVersion",
+ "name",
+ "start",
+ "states"
+ ]
+ },
+ {
+ "required": [
+ "key",
+ "specVersion",
+ "name",
+ "start",
+ "states"
+ ]
+ }
+ ],
+ "definitions": {
+ "sleep": {
+ "type": "object",
+ "properties": {
+ "before": {
+ "type": "string",
+ "description": "Amount of time (ISO 8601 duration format) to sleep before function/subflow invocation. Does not apply if 'eventRef' is defined."
+ },
+ "after": {
+ "type": "string",
+ "description": "Amount of time (ISO 8601 duration format) to sleep after function/subflow invocation. Does not apply if 'eventRef' is defined."
+ }
+ },
+ "oneOf": [
+ {
+ "required": [
+ "before"
+ ]
+ },
+ {
+ "required": [
+ "after"
+ ]
+ },
+ {
+ "required": [
+ "before",
+ "after"
+ ]
+ }
+ ]
+ },
+ "crondef": {
+ "oneOf": [
+ {
+ "type": "string",
+ "description": "Cron expression defining when workflow instances should be created (automatically)",
+ "minLength": 1
+ },
+ {
+ "type": "object",
+ "properties": {
+ "expression": {
+ "type": "string",
+ "description": "Repeating interval (cron expression) describing when the workflow instance should be created",
+ "minLength": 1
+ },
+ "validUntil": {
+ "type": "string",
+ "description": "Specific date and time (ISO 8601 format) when the cron expression invocation is no longer valid"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "expression"
+ ]
+ }
+ ]
+ },
+ "continueasdef": {
+ "oneOf": [
+ {
+ "type": "string",
+ "description": "Unique id of the workflow to be continue execution as. Entire state data is passed as data input to next execution",
+ "minLength": 1
+ },
+ {
+ "type": "object",
+ "properties": {
+ "workflowId": {
+ "type": "string",
+ "description": "Unique id of the workflow to continue execution as"
+ },
+ "version": {
+ "type": "string",
+ "description": "Version of the workflow to continue execution as",
+ "minLength": 1
+ },
+ "data": {
+ "type": [
+ "string",
+ "object"
+ ],
+ "description": "If string type, an expression which selects parts of the states data output to become the workflow data input of continued execution. If object type, a custom object to become the workflow data input of the continued execution"
+ },
+ "workflowExecTimeout": {
+ "$ref": "timeouts.json#/definitions/workflowExecTimeout",
+ "description": "Workflow execution timeout to be used by the workflow continuing execution. Overwrites any specific settings set by that workflow"
+ }
+ },
+ "required": [
+ "workflowId"
+ ]
+ }
+ ]
+ },
+ "transition": {
+ "oneOf": [
+ {
+ "type": "string",
+ "description": "Name of state to transition to",
+ "minLength": 1
+ },
+ {
+ "type": "object",
+ "description": "Function Reference",
+ "properties": {
+ "nextState": {
+ "type": "string",
+ "description": "Name of state to transition to",
+ "minLength": 1
+ },
+ "produceEvents": {
+ "type": "array",
+ "description": "Array of events to be produced before the transition happens",
+ "items": {
+ "type": "object",
+ "$ref": "#/definitions/produceeventdef"
+ },
+ "additionalItems": false
+ },
+ "compensate": {
+ "type": "boolean",
+ "default": false,
+ "description": "If set to true, triggers workflow compensation when before this transition is taken. Default is false"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "nextState"
+ ]
+ }
+ ]
+ },
+ "error": {
+ "type": "object",
+ "properties": {
+ "errorRef": {
+ "type": "string",
+ "description": "Reference to a unique workflow error definition. Used of errorRefs is not used",
+ "minLength": 1
+ },
+ "errorRefs": {
+ "type": "array",
+ "description": "References one or more workflow error definitions. Used if errorRef is not used",
+ "minItems": 1,
+ "items": {
+ "type": "string"
+ },
+ "additionalItems": false
+ },
+ "transition": {
+ "description": "Transition to next state to handle the error.",
+ "$ref": "#/definitions/transition"
+ },
+ "end": {
+ "description": "End workflow execution in case of this error.",
+ "$ref": "#/definitions/end"
+ }
+ },
+ "additionalProperties": false,
+ "oneOf": [
+ {
+ "required": [
+ "errorRef",
+ "transition"
+ ]
+ },
+ {
+ "required": [
+ "errorRef",
+ "end"
+ ]
+ },
+ {
+ "required": [
+ "errorRefs",
+ "transition"
+ ]
+ },
+ {
+ "required": [
+ "errorRefs",
+ "end"
+ ]
+ }
+ ]
+ },
+ "onevents": {
+ "type": "object",
+ "properties": {
+ "eventRefs": {
+ "type": "array",
+ "description": "References one or more unique event names in the defined workflow events",
+ "minItems": 1,
+ "items": {
+ "type": "string"
+ },
+ "additionalItems": false
+ },
+ "actionMode": {
+ "type": "string",
+ "enum": [
+ "sequential",
+ "parallel"
+ ],
+ "description": "Specifies how actions are to be performed (in sequence or in parallel)",
+ "default": "sequential"
+ },
+ "actions": {
+ "type": "array",
+ "description": "Actions to be performed if expression matches",
+ "items": {
+ "type": "object",
+ "$ref": "#/definitions/action"
+ },
+ "additionalItems": false
+ },
+ "eventDataFilter": {
+ "description": "Event data filter",
+ "$ref": "#/definitions/eventdatafilter"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "eventRefs"
+ ]
+ },
+ "action": {
+ "type": "object",
+ "properties": {
+ "name": {
+ "type": "string",
+ "description": "Unique action definition name"
+ },
+ "functionRef": {
+ "description": "References a function to be invoked",
+ "$ref": "#/definitions/functionref"
+ },
+ "eventRef": {
+ "description": "References a 'trigger' and 'result' reusable event definitions",
+ "$ref": "#/definitions/eventref"
+ },
+ "subFlowRef": {
+ "description": "References a sub-workflow to invoke",
+ "$ref": "#/definitions/subflowref"
+ },
+ "sleep": {
+ "description": "Defines time periods workflow execution should sleep before / after function execution",
+ "$ref": "#/definitions/sleep"
+ },
+ "retryRef": {
+ "type": "string",
+ "description": "References a defined workflow retry definition. If not defined the default retry policy is assumed"
+ },
+ "nonRetryableErrors": {
+ "type": "array",
+ "description": "List of unique references to defined workflow errors for which the action should not be retried. Used only when `autoRetries` is set to `true`",
+ "minItems": 1,
+ "items": {
+ "type": "string"
+ },
+ "additionalItems": false
+ },
+ "retryableErrors": {
+ "type": "array",
+ "description": "List of unique references to defined workflow errors for which the action should be retried. Used only when `autoRetries` is set to `false`",
+ "minItems": 1,
+ "items": {
+ "type": "string"
+ },
+ "additionalItems": false
+ },
+ "actionDataFilter": {
+ "description": "Action data filter",
+ "$ref": "#/definitions/actiondatafilter"
+ }
+ },
+ "additionalProperties": false,
+ "oneOf": [
+ {
+ "required": [
+ "functionRef"
+ ]
+ },
+ {
+ "required": [
+ "eventRef"
+ ]
+ },
+ {
+ "required": [
+ "subFlowRef"
+ ]
+ }
+ ]
+ },
+ "functionref": {
+ "oneOf": [
+ {
+ "type": "string",
+ "description": "Name of the referenced function",
+ "minLength": 1
+ },
+ {
+ "type": "object",
+ "description": "Function Reference",
+ "properties": {
+ "refName": {
+ "type": "string",
+ "description": "Name of the referenced function"
+ },
+ "arguments": {
+ "type": "object",
+ "description": "Function arguments/inputs"
+ },
+ "selectionSet": {
+ "type": "string",
+ "description": "Only used if function type is 'graphql'. A string containing a valid GraphQL selection set"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "refName"
+ ]
+ }
+ ]
+ },
+ "eventref": {
+ "type": "object",
+ "description": "Event References",
+ "properties": {
+ "triggerEventRef": {
+ "type": "string",
+ "description": "Reference to the unique name of a 'produced' event definition"
+ },
+ "resultEventRef": {
+ "type": "string",
+ "description": "Reference to the unique name of a 'consumed' event definition"
+ },
+ "data": {
+ "type": [
+ "string",
+ "object"
+ ],
+ "description": "If string type, an expression which selects parts of the states data output to become the data (payload) of the event referenced by 'triggerEventRef'. If object type, a custom object to become the data (payload) of the event referenced by 'triggerEventRef'."
+ },
+ "contextAttributes": {
+ "type": "object",
+ "description": "Add additional extension context attributes to the produced event",
+ "additionalProperties": {
+ "type": "string"
+ }
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "triggerEventRef",
+ "resultEventRef"
+ ]
+ },
+ "subflowref": {
+ "oneOf": [
+ {
+ "type": "string",
+ "description": "Unique id of the sub-workflow to be invoked",
+ "minLength": 1
+ },
+ {
+ "type": "object",
+ "description": "Specifies a sub-workflow to be invoked",
+ "properties": {
+ "workflowId": {
+ "type": "string",
+ "description": "Unique id of the sub-workflow to be invoked"
+ },
+ "version": {
+ "type": "string",
+ "description": "Version of the sub-workflow to be invoked",
+ "minLength": 1
+ }
+ },
+ "required": [
+ "workflowId"
+ ]
+ }
+ ]
+ },
+ "branch": {
+ "type": "object",
+ "description": "Branch Definition",
+ "properties": {
+ "name": {
+ "type": "string",
+ "description": "Branch name"
+ },
+ "timeouts": {
+ "type": "object",
+ "description": "State specific timeouts",
+ "properties": {
+ "actionExecTimeout": {
+ "$ref": "timeouts.json#/definitions/actionExecTimeout"
+ },
+ "branchExecTimeout": {
+ "$ref": "timeouts.json#/definitions/branchExecTimeout"
+ }
+ },
+ "required": []
+ },
+ "actions": {
+ "type": "array",
+ "description": "Actions to be executed in this branch",
+ "items": {
+ "type": "object",
+ "$ref": "#/definitions/action"
+ },
+ "additionalItems": false
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "name",
+ "actions"
+ ]
+ },
+ "sleepstate": {
+ "type": "object",
+ "description": "Causes the workflow execution to sleep for a specified duration",
+ "properties": {
+ "id": {
+ "type": "string",
+ "description": "Unique State id",
+ "minLength": 1
+ },
+ "name": {
+ "type": "string",
+ "description": "State name"
+ },
+ "type": {
+ "type": "string",
+ "const": "sleep",
+ "description": "State type"
+ },
+ "end": {
+ "$ref": "#/definitions/end",
+ "description": "State end definition"
+ },
+ "stateDataFilter": {
+ "description": "State data filter",
+ "$ref": "#/definitions/statedatafilter"
+ },
+ "duration": {
+ "type": "string",
+ "description": "Duration (ISO 8601 duration format) to sleep"
+ },
+ "timeouts": {
+ "type": "object",
+ "description": "State specific timeouts",
+ "properties": {
+ "stateExecTimeout": {
+ "$ref": "timeouts.json#/definitions/stateExecTimeout"
+ }
+ },
+ "required": []
+ },
+ "onErrors": {
+ "type": "array",
+ "description": "States error handling definitions",
+ "items": {
+ "type": "object",
+ "$ref": "#/definitions/error"
+ },
+ "additionalItems": false
+ },
+ "transition": {
+ "description": "Next transition of the workflow after the workflow sleep",
+ "$ref": "#/definitions/transition"
+ },
+ "compensatedBy": {
+ "type": "string",
+ "minLength": 1,
+ "description": "Unique Name of a workflow state which is responsible for compensation of this state"
+ },
+ "usedForCompensation": {
+ "type": "boolean",
+ "default": false,
+ "description": "If true, this state is used to compensate another state. Default is false"
+ },
+ "metadata": {
+ "$ref": "common.json#/definitions/metadata"
+ }
+ },
+ "additionalProperties": false,
+ "if": {
+ "properties": {
+ "usedForCompensation": {
+ "const": true
+ }
+ },
+ "required": [
+ "usedForCompensation"
+ ]
+ },
+ "then": {
+ "required": [
+ "name",
+ "type",
+ "duration"
+ ]
+ },
+ "else": {
+ "oneOf": [
+ {
+ "required": [
+ "name",
+ "type",
+ "duration",
+ "end"
+ ]
+ },
+ {
+ "required": [
+ "name",
+ "type",
+ "duration",
+ "transition"
+ ]
+ }
+ ]
+ }
+ },
+ "eventstate": {
+ "type": "object",
+ "description": "This state is used to wait for events from event sources, then consumes them and invoke one or more actions to run in sequence or parallel",
+ "properties": {
+ "id": {
+ "type": "string",
+ "description": "Unique State id",
+ "minLength": 1
+ },
+ "name": {
+ "type": "string",
+ "description": "State name"
+ },
+ "type": {
+ "type": "string",
+ "const": "event",
+ "description": "State type"
+ },
+ "exclusive": {
+ "type": "boolean",
+ "default": true,
+ "description": "If true consuming one of the defined events causes its associated actions to be performed. If false all of the defined events must be consumed in order for actions to be performed"
+ },
+ "onEvents": {
+ "type": "array",
+ "description": "Define the events to be consumed and optional actions to be performed",
+ "items": {
+ "type": "object",
+ "$ref": "#/definitions/onevents"
+ },
+ "additionalItems": false
+ },
+ "timeouts": {
+ "type": "object",
+ "description": "State specific timeouts",
+ "properties": {
+ "stateExecTimeout": {
+ "$ref": "timeouts.json#/definitions/stateExecTimeout"
+ },
+ "actionExecTimeout": {
+ "$ref": "timeouts.json#/definitions/actionExecTimeout"
+ },
+ "eventTimeout": {
+ "$ref": "timeouts.json#/definitions/eventTimeout"
+ }
+ },
+ "required": []
+ },
+ "stateDataFilter": {
+ "description": "State data filter",
+ "$ref": "#/definitions/statedatafilter"
+ },
+ "onErrors": {
+ "type": "array",
+ "description": "States error handling definitions",
+ "items": {
+ "type": "object",
+ "$ref": "#/definitions/error"
+ },
+ "additionalItems": false
+ },
+ "transition": {
+ "description": "Next transition of the workflow after all the actions have been performed",
+ "$ref": "#/definitions/transition"
+ },
+ "end": {
+ "$ref": "#/definitions/end",
+ "description": "State end definition"
+ },
+ "compensatedBy": {
+ "type": "string",
+ "minLength": 1,
+ "description": "Unique Name of a workflow state which is responsible for compensation of this state"
+ },
+ "metadata": {
+ "$ref": "common.json#/definitions/metadata"
+ }
+ },
+ "additionalProperties": false,
+ "oneOf": [
+ {
+ "required": [
+ "name",
+ "type",
+ "onEvents",
+ "end"
+ ]
+ },
+ {
+ "required": [
+ "name",
+ "type",
+ "onEvents",
+ "transition"
+ ]
+ }
+ ]
+ },
+ "operationstate": {
+ "type": "object",
+ "description": "Defines actions be performed. Does not wait for incoming events",
+ "properties": {
+ "id": {
+ "type": "string",
+ "description": "Unique State id",
+ "minLength": 1
+ },
+ "name": {
+ "type": "string",
+ "description": "State name"
+ },
+ "type": {
+ "type": "string",
+ "const": "operation",
+ "description": "State type"
+ },
+ "end": {
+ "$ref": "#/definitions/end",
+ "description": "State end definition"
+ },
+ "stateDataFilter": {
+ "description": "State data filter",
+ "$ref": "#/definitions/statedatafilter"
+ },
+ "actionMode": {
+ "type": "string",
+ "enum": [
+ "sequential",
+ "parallel"
+ ],
+ "description": "Specifies whether actions are performed in sequence or in parallel",
+ "default": "sequential"
+ },
+ "actions": {
+ "type": "array",
+ "description": "Actions to be performed",
+ "items": {
+ "type": "object",
+ "$ref": "#/definitions/action"
+ }
+ },
+ "timeouts": {
+ "type": "object",
+ "description": "State specific timeouts",
+ "properties": {
+ "stateExecTimeout": {
+ "$ref": "timeouts.json#/definitions/stateExecTimeout"
+ },
+ "actionExecTimeout": {
+ "$ref": "timeouts.json#/definitions/actionExecTimeout"
+ }
+ },
+ "required": []
+ },
+ "onErrors": {
+ "type": "array",
+ "description": "States error handling definitions",
+ "items": {
+ "type": "object",
+ "$ref": "#/definitions/error"
+ },
+ "additionalItems": false
+ },
+ "transition": {
+ "description": "Next transition of the workflow after all the actions have been performed",
+ "$ref": "#/definitions/transition"
+ },
+ "compensatedBy": {
+ "type": "string",
+ "minLength": 1,
+ "description": "Unique Name of a workflow state which is responsible for compensation of this state"
+ },
+ "usedForCompensation": {
+ "type": "boolean",
+ "default": false,
+ "description": "If true, this state is used to compensate another state. Default is false"
+ },
+ "metadata": {
+ "$ref": "common.json#/definitions/metadata"
+ }
+ },
+ "additionalProperties": false,
+ "if": {
+ "properties": {
+ "usedForCompensation": {
+ "const": true
+ }
+ },
+ "required": [
+ "usedForCompensation"
+ ]
+ },
+ "then": {
+ "required": [
+ "name",
+ "type",
+ "actions"
+ ]
+ },
+ "else": {
+ "oneOf": [
+ {
+ "required": [
+ "name",
+ "type",
+ "actions",
+ "end"
+ ]
+ },
+ {
+ "required": [
+ "name",
+ "type",
+ "actions",
+ "transition"
+ ]
+ }
+ ]
+ }
+ },
+ "parallelstate": {
+ "type": "object",
+ "description": "Consists of a number of states that are executed in parallel",
+ "properties": {
+ "id": {
+ "type": "string",
+ "description": "Unique State id",
+ "minLength": 1
+ },
+ "name": {
+ "type": "string",
+ "description": "State name"
+ },
+ "type": {
+ "type": "string",
+ "const": "parallel",
+ "description": "State type"
+ },
+ "end": {
+ "$ref": "#/definitions/end",
+ "description": "State end definition"
+ },
+ "stateDataFilter": {
+ "description": "State data filter",
+ "$ref": "#/definitions/statedatafilter"
+ },
+ "timeouts": {
+ "type": "object",
+ "description": "State specific timeouts",
+ "properties": {
+ "stateExecTimeout": {
+ "$ref": "timeouts.json#/definitions/stateExecTimeout"
+ },
+ "branchExecTimeout": {
+ "$ref": "timeouts.json#/definitions/branchExecTimeout"
+ }
+ },
+ "required": []
+ },
+ "branches": {
+ "type": "array",
+ "description": "Branch Definitions",
+ "items": {
+ "type": "object",
+ "$ref": "#/definitions/branch"
+ },
+ "additionalItems": false
+ },
+ "completionType": {
+ "type": "string",
+ "enum": [
+ "allOf",
+ "atLeast"
+ ],
+ "description": "Option types on how to complete branch execution.",
+ "default": "allOf"
+ },
+ "numCompleted": {
+ "type": [
+ "number",
+ "string"
+ ],
+ "minimum": 0,
+ "minLength": 0,
+ "description": "Used when completionType is set to 'atLeast' to specify the minimum number of branches that must complete before the state will transition."
+ },
+ "onErrors": {
+ "type": "array",
+ "description": "States error handling definitions",
+ "items": {
+ "type": "object",
+ "$ref": "#/definitions/error"
+ },
+ "additionalItems": false
+ },
+ "transition": {
+ "description": "Next transition of the workflow after all branches have completed execution",
+ "$ref": "#/definitions/transition"
+ },
+ "compensatedBy": {
+ "type": "string",
+ "minLength": 1,
+ "description": "Unique Name of a workflow state which is responsible for compensation of this state"
+ },
+ "usedForCompensation": {
+ "type": "boolean",
+ "default": false,
+ "description": "If true, this state is used to compensate another state. Default is false"
+ },
+ "metadata": {
+ "$ref": "common.json#/definitions/metadata"
+ }
+ },
+ "additionalProperties": false,
+ "if": {
+ "properties": {
+ "usedForCompensation": {
+ "const": true
+ }
+ },
+ "required": [
+ "usedForCompensation"
+ ]
+ },
+ "then": {
+ "required": [
+ "name",
+ "type",
+ "branches"
+ ]
+ },
+ "else": {
+ "oneOf": [
+ {
+ "required": [
+ "name",
+ "type",
+ "branches",
+ "end"
+ ]
+ },
+ {
+ "required": [
+ "name",
+ "type",
+ "branches",
+ "transition"
+ ]
+ }
+ ]
+ }
+ },
+ "switchstate": {
+ "oneOf": [
+ {
+ "$ref": "#/definitions/databasedswitch"
+ },
+ {
+ "$ref": "#/definitions/eventbasedswitch"
+ }
+ ]
+ },
+ "eventbasedswitch": {
+ "type": "object",
+ "description": "Permits transitions to other states based on events",
+ "properties": {
+ "id": {
+ "type": "string",
+ "description": "Unique State id",
+ "minLength": 1
+ },
+ "name": {
+ "type": "string",
+ "description": "State name"
+ },
+ "type": {
+ "type": "string",
+ "const": "switch",
+ "description": "State type"
+ },
+ "stateDataFilter": {
+ "description": "State data filter",
+ "$ref": "#/definitions/statedatafilter"
+ },
+ "timeouts": {
+ "type": "object",
+ "description": "State specific timeouts",
+ "properties": {
+ "stateExecTimeout": {
+ "$ref": "timeouts.json#/definitions/stateExecTimeout"
+ },
+ "eventTimeout": {
+ "$ref": "timeouts.json#/definitions/eventTimeout"
+ }
+ },
+ "required": []
+ },
+ "eventConditions": {
+ "type": "array",
+ "description": "Defines conditions evaluated against events",
+ "items": {
+ "type": "object",
+ "$ref": "#/definitions/eventcondition"
+ },
+ "additionalItems": false
+ },
+ "onErrors": {
+ "type": "array",
+ "description": "States error handling definitions",
+ "items": {
+ "type": "object",
+ "$ref": "#/definitions/error"
+ },
+ "additionalItems": false
+ },
+ "defaultCondition": {
+ "description": "Default transition of the workflow if there is no matching data conditions. Can include a transition or end definition",
+ "$ref": "#/definitions/defaultconditiondef"
+ },
+ "compensatedBy": {
+ "type": "string",
+ "minLength": 1,
+ "description": "Unique Name of a workflow state which is responsible for compensation of this state"
+ },
+ "usedForCompensation": {
+ "type": "boolean",
+ "default": false,
+ "description": "If true, this state is used to compensate another state. Default is false"
+ },
+ "metadata": {
+ "$ref": "common.json#/definitions/metadata"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "name",
+ "type",
+ "eventConditions"
+ ]
+ },
+ "databasedswitch": {
+ "type": "object",
+ "description": "Permits transitions to other states based on data conditions",
+ "properties": {
+ "id": {
+ "type": "string",
+ "description": "Unique State id",
+ "minLength": 1
+ },
+ "name": {
+ "type": "string",
+ "description": "State name"
+ },
+ "type": {
+ "type": "string",
+ "const": "switch",
+ "description": "State type"
+ },
+ "stateDataFilter": {
+ "description": "State data filter",
+ "$ref": "#/definitions/statedatafilter"
+ },
+ "timeouts": {
+ "type": "object",
+ "description": "State specific timeouts",
+ "properties": {
+ "stateExecTimeout": {
+ "$ref": "timeouts.json#/definitions/stateExecTimeout"
+ }
+ },
+ "required": []
+ },
+ "dataConditions": {
+ "type": "array",
+ "description": "Defines conditions evaluated against state data",
+ "items": {
+ "type": "object",
+ "$ref": "#/definitions/datacondition"
+ },
+ "additionalItems": false
+ },
+ "onErrors": {
+ "type": "array",
+ "description": "States error handling definitions",
+ "items": {
+ "type": "object",
+ "$ref": "#/definitions/error"
+ },
+ "additionalItems": false
+ },
+ "defaultCondition": {
+ "description": "Default transition of the workflow if there is no matching data conditions. Can include a transition or end definition",
+ "$ref": "#/definitions/defaultconditiondef"
+ },
+ "compensatedBy": {
+ "type": "string",
+ "minLength": 1,
+ "description": "Unique Name of a workflow state which is responsible for compensation of this state"
+ },
+ "usedForCompensation": {
+ "type": "boolean",
+ "default": false,
+ "description": "If true, this state is used to compensate another state. Default is false"
+ },
+ "metadata": {
+ "$ref": "common.json#/definitions/metadata"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "name",
+ "type",
+ "dataConditions"
+ ]
+ },
+ "defaultconditiondef": {
+ "type": "object",
+ "description": "DefaultCondition definition. Can be either a transition or end definition",
+ "properties": {
+ "transition": {
+ "$ref": "#/definitions/transition"
+ },
+ "end": {
+ "$ref": "#/definitions/end"
+ }
+ },
+ "additionalProperties": false,
+ "oneOf": [
+ {
+ "required": [
+ "transition"
+ ]
+ },
+ {
+ "required": [
+ "end"
+ ]
+ }
+ ]
+ },
+ "eventcondition": {
+ "oneOf": [
+ {
+ "$ref": "#/definitions/transitioneventcondition"
+ },
+ {
+ "$ref": "#/definitions/enddeventcondition"
+ }
+ ]
+ },
+ "transitioneventcondition": {
+ "type": "object",
+ "description": "Switch state data event condition",
+ "properties": {
+ "name": {
+ "type": "string",
+ "description": "Event condition name"
+ },
+ "eventRef": {
+ "type": "string",
+ "description": "References an unique event name in the defined workflow events"
+ },
+ "transition": {
+ "description": "Next transition of the workflow if there is valid matches",
+ "$ref": "#/definitions/transition"
+ },
+ "eventDataFilter": {
+ "description": "Event data filter definition",
+ "$ref": "#/definitions/eventdatafilter"
+ },
+ "metadata": {
+ "$ref": "common.json#/definitions/metadata"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "eventRef",
+ "transition"
+ ]
+ },
+ "enddeventcondition": {
+ "type": "object",
+ "description": "Switch state data event condition",
+ "properties": {
+ "name": {
+ "type": "string",
+ "description": "Event condition name"
+ },
+ "eventRef": {
+ "type": "string",
+ "description": "References an unique event name in the defined workflow events"
+ },
+ "end": {
+ "$ref": "#/definitions/end",
+ "description": "Explicit transition to end"
+ },
+ "eventDataFilter": {
+ "description": "Event data filter definition",
+ "$ref": "#/definitions/eventdatafilter"
+ },
+ "metadata": {
+ "$ref": "common.json#/definitions/metadata"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "eventRef",
+ "end"
+ ]
+ },
+ "datacondition": {
+ "oneOf": [
+ {
+ "$ref": "#/definitions/transitiondatacondition"
+ },
+ {
+ "$ref": "#/definitions/enddatacondition"
+ }
+ ]
+ },
+ "transitiondatacondition": {
+ "type": "object",
+ "description": "Switch state data based condition",
+ "properties": {
+ "name": {
+ "type": "string",
+ "description": "Data condition name"
+ },
+ "condition": {
+ "type": "string",
+ "description": "Workflow expression evaluated against state data. Must evaluate to true or false"
+ },
+ "transition": {
+ "description": "Workflow transition if condition is evaluated to true",
+ "$ref": "#/definitions/transition"
+ },
+ "metadata": {
+ "$ref": "common.json#/definitions/metadata"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "condition",
+ "transition"
+ ]
+ },
+ "enddatacondition": {
+ "type": "object",
+ "description": "Switch state data based condition",
+ "properties": {
+ "name": {
+ "type": "string",
+ "description": "Data condition name"
+ },
+ "condition": {
+ "type": "string",
+ "description": "Workflow expression evaluated against state data. Must evaluate to true or false"
+ },
+ "end": {
+ "$ref": "#/definitions/end",
+ "description": "Workflow end definition"
+ },
+ "metadata": {
+ "$ref": "common.json#/definitions/metadata"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "condition",
+ "end"
+ ]
+ },
+ "injectstate": {
+ "type": "object",
+ "description": "Inject static data into state data. Does not perform any actions",
+ "properties": {
+ "id": {
+ "type": "string",
+ "description": "Unique state id",
+ "minLength": 1
+ },
+ "name": {
+ "type": "string",
+ "description": "State name"
+ },
+ "type": {
+ "type": "string",
+ "const": "inject",
+ "description": "State type"
+ },
+ "end": {
+ "$ref": "#/definitions/end",
+ "description": "State end definition"
+ },
+ "data": {
+ "type": "object",
+ "description": "JSON object which can be set as states data input and can be manipulated via filters"
+ },
+ "timeouts": {
+ "type": "object",
+ "description": "State specific timeouts",
+ "properties": {
+ "stateExecTimeout": {
+ "$ref": "timeouts.json#/definitions/stateExecTimeout"
+ }
+ },
+ "required": []
+ },
+ "stateDataFilter": {
+ "description": "State data filter",
+ "$ref": "#/definitions/statedatafilter"
+ },
+ "transition": {
+ "description": "Next transition of the workflow after injection has completed",
+ "$ref": "#/definitions/transition"
+ },
+ "compensatedBy": {
+ "type": "string",
+ "minLength": 1,
+ "description": "Unique Name of a workflow state which is responsible for compensation of this state"
+ },
+ "usedForCompensation": {
+ "type": "boolean",
+ "default": false,
+ "description": "If true, this state is used to compensate another state. Default is false"
+ },
+ "metadata": {
+ "$ref": "common.json#/definitions/metadata"
+ }
+ },
+ "additionalProperties": false,
+ "if": {
+ "properties": {
+ "usedForCompensation": {
+ "const": true
+ }
+ },
+ "required": [
+ "usedForCompensation"
+ ]
+ },
+ "then": {
+ "required": [
+ "name",
+ "type",
+ "data"
+ ]
+ },
+ "else": {
+ "oneOf": [
+ {
+ "required": [
+ "name",
+ "type",
+ "data",
+ "end"
+ ]
+ },
+ {
+ "required": [
+ "name",
+ "type",
+ "data",
+ "transition"
+ ]
+ }
+ ]
+ }
+ },
+ "foreachstate": {
+ "type": "object",
+ "description": "Execute a set of defined actions or workflows for each element of a data array",
+ "properties": {
+ "id": {
+ "type": "string",
+ "description": "Unique State id",
+ "minLength": 1
+ },
+ "name": {
+ "type": "string",
+ "description": "State name"
+ },
+ "type": {
+ "type": "string",
+ "const": "foreach",
+ "description": "State type"
+ },
+ "end": {
+ "$ref": "#/definitions/end",
+ "description": "State end definition"
+ },
+ "inputCollection": {
+ "type": "string",
+ "description": "Workflow expression selecting an array element of the states data"
+ },
+ "outputCollection": {
+ "type": "string",
+ "description": "Workflow expression specifying an array element of the states data to add the results of each iteration"
+ },
+ "iterationParam": {
+ "type": "string",
+ "description": "Name of the iteration parameter that can be referenced in actions/workflow. For each parallel iteration, this param should contain an unique element of the inputCollection array"
+ },
+ "batchSize": {
+ "type": [
+ "number",
+ "string"
+ ],
+ "minimum": 0,
+ "minLength": 0,
+ "description": "Specifies how many iterations may run in parallel at the same time. Used if 'mode' property is set to 'parallel' (default)"
+ },
+ "actions": {
+ "type": "array",
+ "description": "Actions to be executed for each of the elements of inputCollection",
+ "items": {
+ "type": "object",
+ "$ref": "#/definitions/action"
+ },
+ "additionalItems": false
+ },
+ "timeouts": {
+ "type": "object",
+ "description": "State specific timeouts",
+ "properties": {
+ "stateExecTimeout": {
+ "$ref": "timeouts.json#/definitions/stateExecTimeout"
+ },
+ "actionExecTimeout": {
+ "$ref": "timeouts.json#/definitions/actionExecTimeout"
+ }
+ },
+ "required": []
+ },
+ "stateDataFilter": {
+ "description": "State data filter",
+ "$ref": "#/definitions/statedatafilter"
+ },
+ "onErrors": {
+ "type": "array",
+ "description": "States error handling definitions",
+ "items": {
+ "type": "object",
+ "$ref": "#/definitions/error"
+ },
+ "additionalItems": false
+ },
+ "transition": {
+ "description": "Next transition of the workflow after state has completed",
+ "$ref": "#/definitions/transition"
+ },
+ "compensatedBy": {
+ "type": "string",
+ "minLength": 1,
+ "description": "Unique Name of a workflow state which is responsible for compensation of this state"
+ },
+ "usedForCompensation": {
+ "type": "boolean",
+ "default": false,
+ "description": "If true, this state is used to compensate another state. Default is false"
+ },
+ "mode": {
+ "type": "string",
+ "enum": [
+ "sequential",
+ "parallel"
+ ],
+ "description": "Specifies how iterations are to be performed (sequentially or in parallel)",
+ "default": "parallel"
+ },
+ "metadata": {
+ "$ref": "common.json#/definitions/metadata"
+ }
+ },
+ "additionalProperties": false,
+ "if": {
+ "properties": {
+ "usedForCompensation": {
+ "const": true
+ }
+ },
+ "required": [
+ "usedForCompensation"
+ ]
+ },
+ "then": {
+ "required": [
+ "name",
+ "type",
+ "inputCollection",
+ "iterationParam",
+ "actions"
+ ]
+ },
+ "else": {
+ "oneOf": [
+ {
+ "required": [
+ "name",
+ "type",
+ "inputCollection",
+ "iterationParam",
+ "actions",
+ "end"
+ ]
+ },
+ {
+ "required": [
+ "name",
+ "type",
+ "inputCollection",
+ "iterationParam",
+ "actions",
+ "transition"
+ ]
+ }
+ ]
+ }
+ },
+ "callbackstate": {
+ "type": "object",
+ "description": "This state performs an action, then waits for the callback event that denotes completion of the action",
+ "properties": {
+ "id": {
+ "type": "string",
+ "description": "Unique state id",
+ "minLength": 1
+ },
+ "name": {
+ "type": "string",
+ "description": "State name"
+ },
+ "type": {
+ "type": "string",
+ "const": "callback",
+ "description": "State type"
+ },
+ "action": {
+ "description": "Defines the action to be executed",
+ "$ref": "#/definitions/action"
+ },
+ "eventRef": {
+ "type": "string",
+ "description": "References an unique callback event name in the defined workflow events"
+ },
+ "timeouts": {
+ "type": "object",
+ "description": "State specific timeouts",
+ "properties": {
+ "stateExecTimeout": {
+ "$ref": "timeouts.json#/definitions/stateExecTimeout"
+ },
+ "actionExecTimeout": {
+ "$ref": "timeouts.json#/definitions/actionExecTimeout"
+ },
+ "eventTimeout": {
+ "$ref": "timeouts.json#/definitions/eventTimeout"
+ }
+ },
+ "required": []
+ },
+ "eventDataFilter": {
+ "description": "Event data filter",
+ "$ref": "#/definitions/eventdatafilter"
+ },
+ "stateDataFilter": {
+ "description": "State data filter",
+ "$ref": "#/definitions/statedatafilter"
+ },
+ "onErrors": {
+ "type": "array",
+ "description": "States error handling definitions",
+ "items": {
+ "type": "object",
+ "$ref": "#/definitions/error"
+ },
+ "additionalItems": false
+ },
+ "transition": {
+ "description": "Next transition of the workflow after all the actions have been performed",
+ "$ref": "#/definitions/transition"
+ },
+ "end": {
+ "$ref": "#/definitions/end",
+ "description": "State end definition"
+ },
+ "compensatedBy": {
+ "type": "string",
+ "minLength": 1,
+ "description": "Unique Name of a workflow state which is responsible for compensation of this state"
+ },
+ "usedForCompensation": {
+ "type": "boolean",
+ "default": false,
+ "description": "If true, this state is used to compensate another state. Default is false"
+ },
+ "metadata": {
+ "$ref": "common.json#/definitions/metadata"
+ }
+ },
+ "additionalProperties": false,
+ "if": {
+ "properties": {
+ "usedForCompensation": {
+ "const": true
+ }
+ },
+ "required": [
+ "usedForCompensation"
+ ]
+ },
+ "then": {
+ "required": [
+ "name",
+ "type",
+ "action",
+ "eventRef"
+ ]
+ },
+ "else": {
+ "oneOf": [
+ {
+ "required": [
+ "name",
+ "type",
+ "action",
+ "eventRef",
+ "end"
+ ]
+ },
+ {
+ "required": [
+ "name",
+ "type",
+ "action",
+ "eventRef",
+ "transition"
+ ]
+ }
+ ]
+ }
+ },
+ "startdef": {
+ "oneOf": [
+ {
+ "type": "string",
+ "description": "Name of the starting workflow state",
+ "minLength": 1
+ },
+ {
+ "type": "object",
+ "description": "Workflow start definition",
+ "properties": {
+ "stateName": {
+ "type": "string",
+ "description": "Name of the starting workflow state",
+ "minLength": 1
+ },
+ "schedule": {
+ "description": "Define the time/repeating intervals or cron at which workflow instances should be automatically started.",
+ "$ref": "#/definitions/schedule"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "stateName",
+ "schedule"
+ ]
+ }
+ ]
+ },
+ "schedule": {
+ "oneOf": [
+ {
+ "type": "string",
+ "description": "Time interval (must be repeating interval) described with ISO 8601 format. Declares when workflow instances will be automatically created. (UTC timezone is assumed)",
+ "minLength": 1
+ },
+ {
+ "type": "object",
+ "description": "Start state schedule definition",
+ "properties": {
+ "interval": {
+ "type": "string",
+ "description": "Time interval (must be repeating interval) described with ISO 8601 format. Declares when workflow instances will be automatically created.",
+ "minLength": 1
+ },
+ "cron": {
+ "$ref": "#/definitions/crondef"
+ },
+ "timezone": {
+ "type": "string",
+ "description": "Timezone name used to evaluate the interval & cron-expression. (default: UTC)"
+ }
+ },
+ "additionalProperties": false,
+ "oneOf": [
+ {
+ "required": [
+ "interval"
+ ]
+ },
+ {
+ "required": [
+ "cron"
+ ]
+ }
+ ]
+ }
+ ]
+ },
+ "end": {
+ "oneOf": [
+ {
+ "type": "boolean",
+ "description": "State end definition",
+ "default": true
+ },
+ {
+ "type": "object",
+ "description": "State end definition",
+ "properties": {
+ "terminate": {
+ "type": "boolean",
+ "default": false,
+ "description": "If true, completes all execution flows in the given workflow instance"
+ },
+ "produceEvents": {
+ "type": "array",
+ "description": "Defines events that should be produced",
+ "items": {
+ "type": "object",
+ "$ref": "#/definitions/produceeventdef"
+ },
+ "additionalItems": false
+ },
+ "compensate": {
+ "type": "boolean",
+ "default": false,
+ "description": "If set to true, triggers workflow compensation. Default is false"
+ },
+ "continueAs": {
+ "$ref": "#/definitions/continueasdef"
+ }
+ },
+ "additionalProperties": false,
+ "required": []
+ }
+ ]
+ },
+ "produceeventdef": {
+ "type": "object",
+ "description": "Produce an event and set its data",
+ "properties": {
+ "eventRef": {
+ "type": "string",
+ "description": "References a name of a defined event"
+ },
+ "data": {
+ "type": [
+ "string",
+ "object"
+ ],
+ "description": "If String, expression which selects parts of the states data output to become the data of the produced event. If object a custom object to become the data of produced event."
+ },
+ "contextAttributes": {
+ "type": "object",
+ "description": "Add additional event extension context attributes",
+ "additionalProperties": {
+ "type": "string"
+ }
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "eventRef"
+ ]
+ },
+ "statedatafilter": {
+ "type": "object",
+ "properties": {
+ "input": {
+ "type": "string",
+ "description": "Workflow expression to filter the state data input"
+ },
+ "output": {
+ "type": "string",
+ "description": "Workflow expression that filters the state data output"
+ }
+ },
+ "additionalProperties": false,
+ "required": []
+ },
+ "eventdatafilter": {
+ "type": "object",
+ "properties": {
+ "data": {
+ "type": "string",
+ "description": "Workflow expression that filters the received event/payload (default: '${ . }')"
+ },
+ "toStateData": {
+ "type": "string",
+ "description": " Workflow expression that selects a state data element to which the filtered event should be added/merged into. If not specified, denotes, the top-level state data element."
+ }
+ },
+ "additionalProperties": false,
+ "required": []
+ },
+ "actiondatafilter": {
+ "type": "object",
+ "properties": {
+ "fromStateData": {
+ "type": "string",
+ "description": "Workflow expression that selects state data that the state action can use"
+ },
+ "results": {
+ "type": "string",
+ "description": "Workflow expression that filters the actions data results"
+ },
+ "toStateData": {
+ "type": "string",
+ "description": "Workflow expression that selects a state data element to which the action results should be added/merged into. If not specified, denote, the top-level state data element"
+ }
+ },
+ "additionalProperties": false,
+ "required": []
+ }
+ }
+}
\ No newline at end of file
diff --git a/public/schemas/0.8/auth.json b/public/schemas/0.8/auth.json
new file mode 100644
index 0000000..e814047
--- /dev/null
+++ b/public/schemas/0.8/auth.json
@@ -0,0 +1,194 @@
+{
+ "$id": "https://serverlessworkflow.io/schemas/0.8/auth.json",
+ "$schema": "http://json-schema.org/draft-07/schema#",
+ "description": "Serverless Workflow specification - auth schema",
+ "type": "object",
+ "auth": {
+ "oneOf": [
+ {
+ "type": "string",
+ "format": "uri",
+ "description": "URI to a resource containing auth definitions (json or yaml)"
+ },
+ {
+ "type": "array",
+ "description": "Workflow auth definitions",
+ "items": {
+ "type": "object",
+ "$ref": "#/definitions/authdef"
+ },
+ "additionalItems": false,
+ "minItems": 1
+ }
+ ]
+ },
+ "required": [
+ "auth"
+ ],
+ "definitions": {
+ "authdef": {
+ "type": "object",
+ "properties": {
+ "name": {
+ "type": "string",
+ "description": "Unique auth definition name",
+ "minLength": 1
+ },
+ "scheme": {
+ "type": "string",
+ "description": "Defines the auth type",
+ "enum": [
+ "basic",
+ "bearer",
+ "oauth2"
+ ],
+ "default": "basic"
+ },
+ "properties": {
+ "oneOf": [
+ {
+ "type": "string",
+ "description": "Expression referencing a workflow secret that contains all needed auth info"
+ },
+ {
+ "title": "Basic Auth Info",
+ "$ref": "#/definitions/basicpropsdef"
+ },
+ {
+ "title": "Bearer Auth Info State",
+ "$ref": "#/definitions/bearerpropsdef"
+ },
+ {
+ "title": "OAuth2 Info",
+ "$ref": "#/definitions/oauth2propsdef"
+ }
+ ]
+ }
+ },
+ "required": [
+ "name",
+ "properties"
+ ]
+ },
+ "basicpropsdef": {
+ "type": "object",
+ "description": "Basic auth information",
+ "properties": {
+ "username": {
+ "type": "string",
+ "description": "String or a workflow expression. Contains the user name",
+ "minLength": 1
+ },
+ "password": {
+ "type": "string",
+ "description": "String or a workflow expression. Contains the user password",
+ "minLength": 1
+ },
+ "metadata": {
+ "$ref": "common.json#/definitions/metadata"
+ }
+ },
+ "required": [
+ "username",
+ "password"
+ ],
+ "additionalProperties": false
+ },
+ "bearerpropsdef": {
+ "type": "object",
+ "description": "Bearer auth information",
+ "properties": {
+ "token": {
+ "type": "string",
+ "description": "String or a workflow expression. Contains the token",
+ "minLength": 1
+ },
+ "metadata": {
+ "$ref": "common.json#/definitions/metadata"
+ }
+ },
+ "required": [
+ "token"
+ ],
+ "additionalProperties": false
+ },
+ "oauth2propsdef": {
+ "type": "object",
+ "description": "OAuth2 information",
+ "properties": {
+ "authority": {
+ "type": "string",
+ "description": "String or a workflow expression. Contains the authority information",
+ "minLength": 1
+ },
+ "grantType": {
+ "type": "string",
+ "description": "Defines the grant type",
+ "enum": [
+ "password",
+ "clientCredentials",
+ "tokenExchange"
+ ],
+ "additionalItems": false
+ },
+ "clientId": {
+ "type": "string",
+ "description": "String or a workflow expression. Contains the client identifier",
+ "minLength": 1
+ },
+ "clientSecret": {
+ "type": "string",
+ "description": "Workflow secret or a workflow expression. Contains the client secret",
+ "minLength": 1
+ },
+ "scopes": {
+ "type": "array",
+ "description": "Array containing strings or workflow expressions. Contains the OAuth2 scopes",
+ "items": {
+ "type": "string"
+ },
+ "minItems": 1,
+ "additionalItems": false
+ },
+ "username": {
+ "type": "string",
+ "description": "String or a workflow expression. Contains the user name. Used only if grantType is 'resourceOwner'",
+ "minLength": 1
+ },
+ "password": {
+ "type": "string",
+ "description": "String or a workflow expression. Contains the user password. Used only if grantType is 'resourceOwner'",
+ "minLength": 1
+ },
+ "audiences": {
+ "type": "array",
+ "description": "Array containing strings or workflow expressions. Contains the OAuth2 audiences",
+ "items": {
+ "type": "string"
+ },
+ "minItems": 1,
+ "additionalItems": false
+ },
+ "subjectToken": {
+ "type": "string",
+ "description": "String or a workflow expression. Contains the subject token",
+ "minLength": 1
+ },
+ "requestedSubject": {
+ "type": "string",
+ "description": "String or a workflow expression. Contains the requested subject",
+ "minLength": 1
+ },
+ "requestedIssuer": {
+ "type": "string",
+ "description": "String or a workflow expression. Contains the requested issuer",
+ "minLength": 1
+ },
+ "metadata": {
+ "$ref": "common.json#/definitions/metadata"
+ }
+ },
+ "required": ["grantType", "clientId"]
+ }
+ }
+}
\ No newline at end of file
diff --git a/public/schemas/0.8/common.json b/public/schemas/0.8/common.json
new file mode 100644
index 0000000..5a3593e
--- /dev/null
+++ b/public/schemas/0.8/common.json
@@ -0,0 +1,15 @@
+{
+ "$id": "https://serverlessworkflow.io/schemas/0.8/common.json",
+ "$schema": "http://json-schema.org/draft-07/schema#",
+ "description": "Serverless Workflow specification - common schema",
+ "type": "object",
+ "definitions": {
+ "metadata": {
+ "type": "object",
+ "description": "Metadata information",
+ "additionalProperties": {
+ "type": "string"
+ }
+ }
+ }
+}
\ No newline at end of file
diff --git a/public/schemas/0.8/errors.json b/public/schemas/0.8/errors.json
new file mode 100644
index 0000000..5208896
--- /dev/null
+++ b/public/schemas/0.8/errors.json
@@ -0,0 +1,53 @@
+{
+ "$id": "https://serverlessworkflow.io/schemas/0.8/errors.json",
+ "$schema": "http://json-schema.org/draft-07/schema#",
+ "description": "Serverless Workflow specification - errors schema",
+ "type": "object",
+ "errors": {
+ "oneOf": [
+ {
+ "type": "string",
+ "format": "uri",
+ "description": "URI to a resource containing error definitions (json or yaml)"
+ },
+ {
+ "type": "array",
+ "description": "Workflow Error definitions. Defines checked errors that can be explicitly handled during workflow execution",
+ "items": {
+ "type": "object",
+ "$ref": "#/definitions/errordef"
+ },
+ "additionalItems": false,
+ "minItems": 1
+ }
+ ]
+ },
+ "required": [
+ "errors"
+ ],
+ "definitions": {
+ "errordef": {
+ "type": "object",
+ "properties": {
+ "name": {
+ "type": "string",
+ "description": "Domain-specific error name",
+ "minLength": 1
+ },
+ "code": {
+ "type": "string",
+ "description": "Error code. Can be used in addition to the name to help runtimes resolve to technical errors/exceptions. Should not be defined if error is set to '*'",
+ "minLength": 1
+ },
+ "description": {
+ "type": "string",
+ "description": "Error description"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "name"
+ ]
+ }
+ }
+}
diff --git a/public/schemas/0.8/events.json b/public/schemas/0.8/events.json
new file mode 100644
index 0000000..61d16e1
--- /dev/null
+++ b/public/schemas/0.8/events.json
@@ -0,0 +1,117 @@
+{
+ "$id": "https://serverlessworkflow.io/schemas/0.8/events.json",
+ "$schema": "http://json-schema.org/draft-07/schema#",
+ "description": "Serverless Workflow specification - events schema",
+ "type": "object",
+ "events": {
+ "oneOf": [
+ {
+ "type": "string",
+ "format": "uri",
+ "description": "URI to a resource containing event definitions (json or yaml)"
+ },
+ {
+ "type": "array",
+ "description": "Workflow CloudEvent definitions. Defines CloudEvents that can be consumed or produced",
+ "items": {
+ "type": "object",
+ "$ref": "#/definitions/eventdef"
+ },
+ "additionalItems": false,
+ "minItems": 1
+ }
+ ]
+ },
+ "required": [
+ "events"
+ ],
+ "definitions": {
+ "eventdef": {
+ "type": "object",
+ "properties": {
+ "name": {
+ "type": "string",
+ "description": "Unique event name",
+ "minLength": 1
+ },
+ "source": {
+ "type": "string",
+ "description": "CloudEvent source"
+ },
+ "type": {
+ "type": "string",
+ "description": "CloudEvent type"
+ },
+ "kind": {
+ "type": "string",
+ "enum": [
+ "consumed",
+ "produced"
+ ],
+ "description": "Defines the CloudEvent as either 'consumed' or 'produced' by the workflow. Default is 'consumed'",
+ "default": "consumed"
+ },
+ "correlation": {
+ "type": "array",
+ "description": "CloudEvent correlation definitions",
+ "minItems": 1,
+ "items": {
+ "type": "object",
+ "$ref": "#/definitions/correlationDef"
+ },
+ "additionalItems": false
+ },
+ "dataOnly": {
+ "type": "boolean",
+ "default": true,
+ "description": "If `true`, only the Event payload is accessible to consuming Workflow states. If `false`, both event payload and context attributes should be accessible "
+ },
+ "metadata": {
+ "$ref": "common.json#/definitions/metadata",
+ "description": "Metadata information"
+ }
+ },
+ "additionalProperties": false,
+ "if": {
+ "properties": {
+ "kind": {
+ "const": "consumed"
+ }
+ }
+ },
+ "then": {
+ "required": [
+ "name",
+ "source",
+ "type"
+ ]
+ },
+ "else": {
+ "required": [
+ "name",
+ "type"
+ ]
+ }
+ },
+ "correlationDef": {
+ "type": "object",
+ "description": "CloudEvent correlation definition",
+ "properties": {
+ "contextAttributeName": {
+ "type": "string",
+ "description": "CloudEvent Extension Context Attribute name",
+ "minLength": 1
+ },
+ "contextAttributeValue": {
+ "type": "string",
+ "description": "CloudEvent Extension Context Attribute value",
+ "minLength": 1
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "contextAttributeName"
+ ]
+ }
+ }
+}
\ No newline at end of file
diff --git a/public/schemas/0.8/extensions/kpi.json b/public/schemas/0.8/extensions/kpi.json
new file mode 100644
index 0000000..08a8138
--- /dev/null
+++ b/public/schemas/0.8/extensions/kpi.json
@@ -0,0 +1,289 @@
+{
+ "$id": "https://serverlessworkflow.io/schemas/0.8/extensions/kpi.json",
+ "$schema": "http://json-schema.org/draft-07/schema#",
+ "description": "Serverless Workflow specification - KPIs Extension Schema",
+ "type": "object",
+ "definitions": {
+ "kpi": {
+ "type": "object",
+ "description": "Serverless Workflow KPI Extension",
+ "properties": {
+ "extensionid": {
+ "type": "string",
+ "default": "workflow-kpi-extension",
+ "description": "Extension unique identifier"
+ },
+ "workflowid": {
+ "type": "string",
+ "minLength": 1,
+ "description": "Workflow definition unique identifier (workflow id property)"
+ },
+ "workflowVersions": {
+ "type": "array",
+ "description": "Workflow versions. If not defined, applies to all workflow instances (regardless of their associated workflow version)",
+ "items": {
+ "type": "string"
+ }
+ },
+ "currency": {
+ "type": "string",
+ "default": "USD",
+ "description": "Unit for all cost-based KPI parameters. Default 'USD'"
+ },
+ "events": {
+ "type": "array",
+ "description": "Events KPIs",
+ "items": {
+ "type": "object",
+ "$ref": "#/definitions/eventskpi"
+ }
+ },
+ "functions": {
+ "type": "array",
+ "description": "Functions KPIs",
+ "items": {
+ "type": "object",
+ "$ref": "#/definitions/functionskpi"
+ }
+ },
+ "states": {
+ "type": "array",
+ "description": "States KPIs",
+ "items": {
+ "type": "object",
+ "$ref": "#/definitions/stateskpi"
+ }
+ },
+ "workflow": {
+ "description": "Workflow KPIs",
+ "$ref": "#/definitions/workflowkpi"
+ }
+ },
+ "required": [
+ "extensionid",
+ "workflowid"
+ ]
+ },
+ "eventskpi": {
+ "type": "object",
+ "properties": {
+ "for": {
+ "type": "string",
+ "description": "References an unique event name in the defined workflow events"
+ },
+ "per": {
+ "description": "Define the kpi thresholds in terms of time and/or num of workflow instances",
+ "$ref": "#/definitions/thresholds"
+ },
+ "maxConsumed": {
+ "type": "string",
+ "description": "If event kind is 'consumed', the max amount of times this event is consumed"
+ },
+ "minConsumed": {
+ "type": "string",
+ "description": "If event kind is 'consumed', the min amount of times this event is consumed"
+ },
+ "avgConsumed": {
+ "type": "string",
+ "description": "If event kind is 'consumed', the avg amount of times this event is consumed"
+ },
+ "maxProduced": {
+ "type": "string",
+ "description": "If event kind is 'produced', the max amount of times this event is produced"
+ },
+ "minProduced": {
+ "type": "string",
+ "description": "If event kind is 'produced', the min amount times this event is produced"
+ },
+ "avgProduced": {
+ "type": "string",
+ "description": "If event kind is 'produced', the avg amount of times this event is produced"
+ }
+ },
+ "required": [
+ "for",
+ "per"
+ ]
+ },
+ "functionskpi": {
+ "type": "object",
+ "allOf": [
+ {
+ "properties": {
+ "for": {
+ "type": "string",
+ "description": "References an unique function name in the defined workflow functions"
+ },
+ "per": {
+ "description": "Define the kpi thresholds in terms of time and/or num of workflow instances",
+ "$ref": "#/definitions/thresholds"
+ },
+ "maxErrors": {
+ "type": "string",
+ "description": "Max number of errors during function invocation"
+ },
+ "maxRetry": {
+ "type": "string",
+ "description": "Max number of retries done for this function invocation"
+ },
+ "maxTimeout": {
+ "type": "string",
+ "description": "Max number of times the function timeout time was reached"
+ }
+ }
+ },
+ {
+ "$ref": "#/definitions/invocationkpis"
+ },
+ {
+ "$ref": "#/definitions/costkpis"
+ }
+ ],
+ "required": [
+ "for",
+ "per"
+ ]
+ },
+ "stateskpi": {
+ "type": "object",
+ "allOf": [
+ {
+ "properties": {
+ "for": {
+ "type": "string",
+ "description": "References an unique state name in the defined workflow events"
+ },
+ "per": {
+ "description": "Define the kpi thresholds in terms of time and/or num of workflow instances",
+ "$ref": "#/definitions/thresholds"
+ }
+ }
+ },
+ {
+ "$ref": "#/definitions/execkpis"
+ },
+ {
+ "$ref": "#/definitions/durationkpis"
+ },
+ {
+ "$ref": "#/definitions/costkpis"
+ }
+ ],
+ "required": [
+ "for",
+ "per"
+ ]
+ },
+ "workflowkpi": {
+ "type": "object",
+ "allOf": [
+ {
+ "properties": {
+ "per": {
+ "description": "Define the kpi thresholds in terms of time and/or num of workflow instances",
+ "$ref": "#/definitions/thresholds"
+ }
+ }
+ },
+ {
+ "$ref": "#/definitions/invocationkpis"
+ },
+ {
+ "$ref": "#/definitions/durationkpis"
+ },
+ {
+ "$ref": "#/definitions/costkpis"
+ }
+ ],
+ "required": [
+ "per"
+ ]
+ },
+ "thresholds": {
+ "type": "object",
+ "properties": {
+ "time": {
+ "type": "string",
+ "default": "PT1D",
+ "description": "ISO_8601 time. 1 day default"
+ },
+ "instances": {
+ "type": "integer",
+ "minimum": 1,
+ "default": 1,
+ "description": "Number of workflow instances"
+ }
+ },
+ "required": [
+ ]
+ },
+ "costkpis": {
+ "type": "object",
+ "properties": {
+ "maxCost": {
+ "type": "string",
+ "description": "Max cost"
+ },
+ "minCost": {
+ "type": "string",
+ "description": "Min cost"
+ },
+ "avgCost": {
+ "type": "string",
+ "description": "Avg cost"
+ }
+ }
+ },
+ "invocationkpis": {
+ "type": "object",
+ "properties": {
+ "maxInvoked": {
+ "type": "string",
+ "description": "Max number of invocation times"
+ },
+ "minInvoked": {
+ "type": "string",
+ "description": "Min number of invocation times"
+ },
+ "avgInvoked": {
+ "type": "string",
+ "description": "Avg number of invocation times"
+ }
+ }
+ },
+ "durationkpis": {
+ "type": "object",
+ "properties": {
+ "maxDuration": {
+ "type": "string",
+ "description": "ISO 8601. Max duration"
+ },
+ "minDuration": {
+ "type": "string",
+ "description": "ISO 8601. Min duration"
+ },
+ "avgDuration": {
+ "type": "string",
+ "description": "ISO 8601. Avg duration"
+ }
+ }
+ },
+ "execkpis": {
+ "type": "object",
+ "properties": {
+ "maxExec": {
+ "type": "string",
+ "description": "Max exec number"
+ },
+ "minExec": {
+ "type": "string",
+ "description": "Min exec numbe"
+ },
+ "avgExec": {
+ "type": "string",
+ "description": "Avg exec number"
+ }
+ }
+ }
+ }
+}
\ No newline at end of file
diff --git a/public/schemas/0.8/extensions/ratelimiting.json b/public/schemas/0.8/extensions/ratelimiting.json
new file mode 100644
index 0000000..a7bc6f2
--- /dev/null
+++ b/public/schemas/0.8/extensions/ratelimiting.json
@@ -0,0 +1,73 @@
+{
+ "$id": "https://serverlessworkflow.io/schemas/0.8/extensions/ratelimiting.json",
+ "$schema": "http://json-schema.org/draft-07/schema#",
+ "description": "Serverless Workflow specification - Various workflow rate limiting settings",
+ "type": "object",
+ "definitions": {
+ "ratelimiting": {
+ "type": "object",
+ "description": "Serverless Workflow Rate Limiting Extension",
+ "properties": {
+ "extensionid": {
+ "type": "string",
+ "default": "workflow-ratelimiting-extension",
+ "description": "Extension unique identifier"
+ },
+ "workflowid": {
+ "type": "string",
+ "minLength": 1,
+ "description": "Workflow definition unique identifier (workflow id property)"
+ },
+ "workflowVersions": {
+ "type": "array",
+ "description": "Workflow versions. If not defined, applies to all workflow instances (regardless of their associated workflow version)",
+ "items": {
+ "type": "string"
+ }
+ },
+ "singleInstance": {
+ "description": "Rate Limit settings per single instance of a workflow with provided workflowid",
+ "$ref": "#/definitions/ratelimits"
+ },
+ "allInstances": {
+ "description": "Rate Limit settings across all instance of a workflow with provided workflowid",
+ "$ref": "#/definitions/ratelimits"
+ }
+ },
+ "required": [
+ "extensionid",
+ "workflowid"
+ ]
+ },
+ "ratelimits": {
+ "type": "object",
+ "properties": {
+ "maxActionsPerSecond": {
+ "type": "number",
+ "default": 0,
+ "description": "Sets the rate limiting on number of actions that can be executed per second. Notice that the number is represented as number type, so that you can set it to less than 1 if needed. For example, set the number to 0.1 means workflow actions can be executed once every 10 seconds. Default zero value means 'unlimited'"
+ },
+ "maxConcurrentActions": {
+ "type": "number",
+ "default": 100,
+ "description": "Maximum number of actions that can be executed in parallel"
+ },
+ "maxProducedEventsPerSecond": {
+ "type": "number",
+ "default": 0,
+ "description": "Sets the rate limiting on number of events that can be produced per second. Notice that the number is represented as number type, so that you can set it to less than 1 if needed. For example, set the number to 0.1 means workflow can produce events once every 10 seconds. Default zero value means 'unlimited'"
+ },
+ "maxStates": {
+ "type": "integer",
+ "default": 0,
+ "description": "Maximum number of workflow states that should be executed. Default is zero, meaning unlimited."
+ },
+ "maxTransitions": {
+ "type": "integer",
+ "default": 0,
+ "description": "Maximum number of workflow transitions that should be executed. Default is zero, meaning unlimited."
+ }
+ }
+ }
+ }
+}
\ No newline at end of file
diff --git a/public/schemas/0.8/functions.json b/public/schemas/0.8/functions.json
new file mode 100644
index 0000000..08f3b34
--- /dev/null
+++ b/public/schemas/0.8/functions.json
@@ -0,0 +1,72 @@
+{
+ "$id": "https://serverlessworkflow.io/schemas/0.8/functions.json",
+ "$schema": "http://json-schema.org/draft-07/schema#",
+ "description": "Serverless Workflow specification - functions schema",
+ "type": "object",
+ "functions": {
+ "oneOf": [
+ {
+ "type": "string",
+ "format": "uri",
+ "description": "URI to a resource containing function definitions (json or yaml)"
+ },
+ {
+ "type": "array",
+ "description": "Workflow function definitions",
+ "items": {
+ "type": "object",
+ "$ref": "#/definitions/function"
+ },
+ "additionalItems": false,
+ "minItems": 1
+ }
+ ]
+ },
+ "required": [
+ "functions"
+ ],
+ "definitions": {
+ "function": {
+ "type": "object",
+ "properties": {
+ "name": {
+ "type": "string",
+ "description": "Unique function name",
+ "minLength": 1
+ },
+ "operation": {
+ "type": "string",
+ "description": "If type is `rest`, #. If type is `asyncapi`, #. If type is `rpc`, ##. If type is `graphql`, ##. If type is `odata`, #. If type is `expression`, defines the workflow expression.",
+ "minLength": 1
+ },
+ "type": {
+ "type": "string",
+ "description": "Defines the function type. Is either `rest`, `asyncapi, `rpc`, `graphql`, `odata`, `expression`, or `custom`. Default is `rest`",
+ "enum": [
+ "rest",
+ "asyncapi",
+ "rpc",
+ "graphql",
+ "odata",
+ "expression",
+ "custom"
+ ],
+ "default": "rest"
+ },
+ "authRef": {
+ "type": "string",
+ "description": "References an auth definition name to be used to access to resource defined in the operation parameter",
+ "minLength": 1
+ },
+ "metadata": {
+ "$ref": "common.json#/definitions/metadata"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "name",
+ "operation"
+ ]
+ }
+ }
+}
\ No newline at end of file
diff --git a/public/schemas/0.8/odata.json b/public/schemas/0.8/odata.json
new file mode 100644
index 0000000..958cd99
--- /dev/null
+++ b/public/schemas/0.8/odata.json
@@ -0,0 +1,81 @@
+{
+ "$id": "https://serverlessworkflow.io/schemas/0.8/odata.json",
+ "$schema": "http://json-schema.org/draft-07/schema#",
+ "description": "Serverless Workflow specification - OData command options schema",
+ "type": "object",
+ "key": {
+ "type": "string",
+ "description": "The unique identifier of the single entry to query",
+ "minLength": 1
+ },
+ "queryOptions":{
+ "$ref": "#/definitions/queryoptions"
+ },
+ "definitions": {
+ "queryoptions": {
+ "type": "object",
+ "properties": {
+ "filter": {
+ "type": "string",
+ "description": "The $filter system query option allows clients to filter the set of resources that are addressed by a request URL. $filter specifies conditions that MUST be met by a resource for it to be returned in the set of matching resources",
+ "minLength": 1
+ },
+ "expand": {
+ "type": "string",
+ "description": "The $expand system query option allows clients to request related resources when a resource that satisfies a particular request is retrieved",
+ "minLength": 1
+ },
+ "select": {
+ "type": "string",
+ "description": "The $select system query option allows clients to requests a limited set of information for each entity or complex type identified by the ResourcePath and other System Query Options like $filter, $top, $skip etc. The $select query option is often used in conjunction with the $expand query option, to first increase the scope of the resource graph returned ($expand) and then selectively prune that resource graph ($select)",
+ "minLength": 1
+ },
+ "orderBy": {
+ "type": "string",
+ "description": "The $orderby system query option allows clients to request resource in a particular order",
+ "minLength": 1
+ },
+ "top": {
+ "type": "integer",
+ "description": "The $top system query option allows clients a required number of resources. Usually used in conjunction with the $skip query options",
+ "minLength": 1
+ },
+ "skip": {
+ "type": "integer",
+ "description": "The $skip system query option allows clients to skip a given number of resources. Usually used in conjunction with the $top query options",
+ "minLength": 1
+ },
+ "count": {
+ "type": "boolean",
+ "description": "The $count system query option allows clients to request a count of the matching resources included with the resources in the response"
+ },
+ "search": {
+ "type": "string",
+ "description": "The $search system query option allows clients to request items within a collection matching a free-text search expression",
+ "minLength": 1
+ },
+ "format": {
+ "type": "string",
+ "description": "The $format system query option if supported allows clients to request a response in a particular format",
+ "minLength": 1
+ },
+ "compute": {
+ "type": "string",
+ "description": "The $compute system query option allows clients to define computed properties that can be used in a $select or within a $filter or $orderby expression.",
+ "minLength": 1
+ },
+ "index": {
+ "type": "string",
+ "description": "The $index system query option allows clients to do a positional insert into a collection annotated with using the Core.PositionalInsert term (see http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part2-url-conventions.html#VocCore)",
+ "minLength": 1
+ },
+ "schemaVersion": {
+ "type": "string",
+ "description": "The $schemaversion system query option allows clients to specify the version of the schema against which the request is made. The semantics of $schemaversion is covered in the OData-Protocol (http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part2-url-conventions.html#odata) document.",
+ "minLength": 1
+ }
+ },
+ "additionalProperties": false
+ }
+ }
+}
\ No newline at end of file
diff --git a/public/schemas/0.8/retries.json b/public/schemas/0.8/retries.json
new file mode 100644
index 0000000..1690abd
--- /dev/null
+++ b/public/schemas/0.8/retries.json
@@ -0,0 +1,85 @@
+{
+ "$id": "https://serverlessworkflow.io/schemas/0.8/retries.json",
+ "$schema": "http://json-schema.org/draft-07/schema#",
+ "description": "Serverless Workflow specification - retries schema",
+ "type": "object",
+ "retries": {
+ "oneOf": [
+ {
+ "type": "string",
+ "format": "uri",
+ "description": "URI to a resource containing retry definitions (json or yaml)"
+ },
+ {
+ "type": "array",
+ "description": "Workflow Retry definitions. Define retry strategies that can be referenced in states onError definitions",
+ "items": {
+ "type": "object",
+ "$ref": "#/definitions/retrydef"
+ },
+ "additionalItems": false,
+ "minItems": 1
+ }
+ ]
+ },
+ "required": [
+ "retries"
+ ],
+ "definitions": {
+ "retrydef": {
+ "type": "object",
+ "properties": {
+ "name": {
+ "type": "string",
+ "description": "Unique retry strategy name",
+ "minLength": 1
+ },
+ "delay": {
+ "type": "string",
+ "description": "Time delay between retry attempts (ISO 8601 duration format)"
+ },
+ "maxDelay": {
+ "type": "string",
+ "description": "Maximum time delay between retry attempts (ISO 8601 duration format)"
+ },
+ "increment": {
+ "type": "string",
+ "description": "Static value by which the delay increases during each attempt (ISO 8601 time format)"
+ },
+ "multiplier": {
+ "type": [
+ "number",
+ "string"
+ ],
+ "minimum": 0,
+ "minLength": 1,
+ "multipleOf": 0.01,
+ "description": "Numeric value, if specified the delay between retries is multiplied by this value."
+ },
+ "maxAttempts": {
+ "type": [
+ "number",
+ "string"
+ ],
+ "minimum": 1,
+ "minLength": 0,
+ "description": "Maximum number of retry attempts."
+ },
+ "jitter": {
+ "type": [
+ "number",
+ "string"
+ ],
+ "minimum": 0,
+ "maximum": 1,
+ "description": "If float type, maximum amount of random time added or subtracted from the delay between each retry relative to total delay (between 0 and 1). If string type, absolute maximum amount of random time added or subtracted from the delay between each retry (ISO 8601 duration format)"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "name",
+ "maxAttempts"
+ ]
+ }
+ }
+}
diff --git a/public/schemas/0.8/secrets.json b/public/schemas/0.8/secrets.json
new file mode 100644
index 0000000..dc553cc
--- /dev/null
+++ b/public/schemas/0.8/secrets.json
@@ -0,0 +1,26 @@
+{
+ "$id": "https://serverlessworkflow.io/schemas/0.8/secrets.json",
+ "$schema": "http://json-schema.org/draft-07/schema#",
+ "description": "Serverless Workflow specification - secrets schema",
+ "type": "object",
+ "secrets": {
+ "oneOf": [
+ {
+ "type": "string",
+ "format": "uri",
+ "description": "URI to a resource containing secrets definitions (json or yaml)"
+ },
+ {
+ "type": "array",
+ "description": "Workflow Secrets definitions",
+ "items": {
+ "type": "string"
+ },
+ "minItems": 1
+ }
+ ]
+ },
+ "required": [
+ "secrets"
+ ]
+}
\ No newline at end of file
diff --git a/public/schemas/0.8/timeouts.json b/public/schemas/0.8/timeouts.json
new file mode 100644
index 0000000..0e0e1b2
--- /dev/null
+++ b/public/schemas/0.8/timeouts.json
@@ -0,0 +1,118 @@
+{
+ "$id": "https://serverlessworkflow.io/schemas/0.8/timeouts.json",
+ "$schema": "http://json-schema.org/draft-07/schema#",
+ "description": "Serverless Workflow specification - functions schema",
+ "type": "object",
+ "timeouts": {
+ "oneOf": [
+ {
+ "type": "string",
+ "format": "uri",
+ "description": "URI to a resource containing timeouts definitions (json or yaml)"
+ },
+ {
+ "type": "object",
+ "description": "Workflow default timeouts",
+ "properties": {
+ "workflowExecTimeout": {
+ "$ref": "#/definitions/workflowExecTimeout"
+ },
+ "stateExecTimeout": {
+ "$ref": "#/definitions/stateExecTimeout"
+ },
+ "actionExecTimeout": {
+ "$ref": "#/definitions/actionExecTimeout"
+ },
+ "branchExecTimeout": {
+ "$ref": "#/definitions/branchExecTimeout"
+ },
+ "eventTimeout": {
+ "$ref": "#/definitions/eventTimeout"
+ }
+ },
+ "additionalProperties": false,
+ "required": []
+ }
+ ]
+ },
+ "required": [
+ "timeouts"
+ ],
+ "definitions": {
+ "workflowExecTimeout": {
+ "oneOf": [
+ {
+ "type": "string",
+ "description": "Workflow execution timeout duration (ISO 8601 duration format). If not specified should be 'unlimited'",
+ "minLength": 1
+ },
+ {
+ "type": "object",
+ "properties": {
+ "duration": {
+ "type": "string",
+ "description": "Workflow execution timeout duration (ISO 8601 duration format). If not specified should be 'unlimited'",
+ "minLength": 1
+ },
+ "interrupt": {
+ "type": "boolean",
+ "description": "If `false`, workflow instance is allowed to finish current execution. If `true`, current workflow execution is abrupted.",
+ "default": true
+ },
+ "runBefore": {
+ "type": "string",
+ "description": "Name of a workflow state to be executed before workflow instance is terminated",
+ "minLength": 1
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "duration"
+ ]
+ }
+ ]
+ },
+ "stateExecTimeout": {
+ "oneOf": [
+ {
+ "type": "string",
+ "description": "Total state execution timeout (including retries) (ISO 8601 duration format)",
+ "minLength": 1
+ },
+ {
+ "type": "object",
+ "description": "Workflow default timeouts",
+ "properties": {
+ "single": {
+ "type": "string",
+ "description": "Single state execution timeout, not including retries (ISO 8601 duration format)",
+ "minLength": 1
+ },
+ "total": {
+ "type": "string",
+ "description": "Total state execution timeout, including retries (ISO 8601 duration format)",
+ "minLength": 1
+ }
+ },
+ "additionalProperties": false,
+ "required": ["total"]
+ }
+ ]
+ },
+ "actionExecTimeout": {
+ "type": "string",
+ "description": "Single actions definition execution timeout duration (ISO 8601 duration format)",
+ "minLength": 1
+ },
+ "branchExecTimeout": {
+ "type": "string",
+ "description": "Single branch execution timeout duration (ISO 8601 duration format)",
+ "minLength": 1
+ },
+ "eventTimeout": {
+ "type": "string",
+ "description": "Timeout duration to wait for consuming defined events (ISO 8601 duration format)",
+ "minLength": 1
+ }
+ }
+}
\ No newline at end of file
diff --git a/public/schemas/0.8/workflow.json b/public/schemas/0.8/workflow.json
new file mode 100644
index 0000000..2d11730
--- /dev/null
+++ b/public/schemas/0.8/workflow.json
@@ -0,0 +1,2008 @@
+{
+ "$id": "https://serverlessworkflow.io/schemas/0.8/workflow.json",
+ "$schema": "http://json-schema.org/draft-07/schema#",
+ "description": "Serverless Workflow specification - workflow schema",
+ "type": "object",
+ "properties": {
+ "id": {
+ "type": "string",
+ "description": "Workflow unique identifier",
+ "minLength": 1
+ },
+ "key": {
+ "type": "string",
+ "description": "Domain-specific workflow identifier",
+ "minLength": 1
+ },
+ "name": {
+ "type": "string",
+ "description": "Workflow name",
+ "minLength": 1
+ },
+ "description": {
+ "type": "string",
+ "description": "Workflow description"
+ },
+ "version": {
+ "type": "string",
+ "description": "Workflow version",
+ "minLength": 1
+ },
+ "annotations": {
+ "type": "array",
+ "description": "List of helpful terms describing the workflows intended purpose, subject areas, or other important qualities",
+ "minItems": 1,
+ "items": {
+ "type": "string"
+ },
+ "additionalItems": false
+ },
+ "dataInputSchema": {
+ "oneOf": [
+ {
+ "type": "string",
+ "description": "URI of the JSON Schema used to validate the workflow data input",
+ "minLength": 1
+ },
+ {
+ "type": "object",
+ "description": "Workflow data input schema definition",
+ "properties": {
+ "schema": {
+ "type": "string",
+ "description": "URI of the JSON Schema used to validate the workflow data input",
+ "minLength": 1
+ },
+ "failOnValidationErrors": {
+ "type": "boolean",
+ "default": true,
+ "description": "Determines if workflow execution should continue if there are validation errors"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "schema",
+ "failOnValidationErrors"
+ ]
+ }
+ ]
+ },
+ "secrets": {
+ "$ref": "secrets.json#/secrets"
+ },
+ "constants": {
+ "oneOf": [
+ {
+ "type": "string",
+ "format": "uri",
+ "description": "URI to a resource containing constants data (json or yaml)"
+ },
+ {
+ "type": "object",
+ "description": "Workflow constants data (object type)"
+ }
+ ]
+ },
+ "start": {
+ "$ref": "#/definitions/startdef"
+ },
+ "specVersion": {
+ "type": "string",
+ "description": "Serverless Workflow schema version",
+ "minLength": 1
+ },
+ "expressionLang": {
+ "type": "string",
+ "description": "Identifies the expression language used for workflow expressions. Default is 'jq'",
+ "default": "jq",
+ "minLength": 1
+ },
+ "timeouts": {
+ "$ref": "timeouts.json#/timeouts"
+ },
+ "errors": {
+ "$ref": "errors.json#/errors"
+ },
+ "keepActive": {
+ "type": "boolean",
+ "default": false,
+ "description": "If 'true', workflow instances is not terminated when there are no active execution paths. Instance can be terminated via 'terminate end definition' or reaching defined 'workflowExecTimeout'"
+ },
+ "metadata": {
+ "$ref": "common.json#/definitions/metadata"
+ },
+ "events": {
+ "$ref": "events.json#/events"
+ },
+ "functions": {
+ "$ref": "functions.json#/functions"
+ },
+ "autoRetries": {
+ "type": "boolean",
+ "default": false,
+ "description": "If set to true, actions should automatically be retried on unchecked errors. Default is false"
+ },
+ "retries": {
+ "$ref": "retries.json#/retries"
+ },
+ "auth": {
+ "$ref": "auth.json#/auth"
+ },
+ "states": {
+ "type": "array",
+ "description": "State definitions",
+ "items": {
+ "anyOf": [
+ {
+ "title": "Sleep State",
+ "$ref": "#/definitions/sleepstate"
+ },
+ {
+ "title": "Event State",
+ "$ref": "#/definitions/eventstate"
+ },
+ {
+ "title": "Operation State",
+ "$ref": "#/definitions/operationstate"
+ },
+ {
+ "title": "Parallel State",
+ "$ref": "#/definitions/parallelstate"
+ },
+ {
+ "title": "Switch State",
+ "$ref": "#/definitions/switchstate"
+ },
+ {
+ "title": "Inject State",
+ "$ref": "#/definitions/injectstate"
+ },
+ {
+ "title": "ForEach State",
+ "$ref": "#/definitions/foreachstate"
+ },
+ {
+ "title": "Callback State",
+ "$ref": "#/definitions/callbackstate"
+ }
+ ]
+ },
+ "additionalItems": false,
+ "minItems": 1
+ }
+ },
+ "oneOf": [
+ {
+ "required": [
+ "id",
+ "specVersion",
+ "states"
+ ]
+ },
+ {
+ "required": [
+ "key",
+ "specVersion",
+ "states"
+ ]
+ }
+ ],
+ "definitions": {
+ "sleep": {
+ "type": "object",
+ "properties": {
+ "before": {
+ "type": "string",
+ "description": "Amount of time (ISO 8601 duration format) to sleep before function/subflow invocation. Does not apply if 'eventRef' is defined."
+ },
+ "after": {
+ "type": "string",
+ "description": "Amount of time (ISO 8601 duration format) to sleep after function/subflow invocation. Does not apply if 'eventRef' is defined."
+ }
+ },
+ "oneOf": [
+ {
+ "required": [
+ "before"
+ ]
+ },
+ {
+ "required": [
+ "after"
+ ]
+ },
+ {
+ "required": [
+ "before",
+ "after"
+ ]
+ }
+ ]
+ },
+ "crondef": {
+ "oneOf": [
+ {
+ "type": "string",
+ "description": "Cron expression defining when workflow instances should be created (automatically)",
+ "minLength": 1
+ },
+ {
+ "type": "object",
+ "properties": {
+ "expression": {
+ "type": "string",
+ "description": "Repeating interval (cron expression) describing when the workflow instance should be created",
+ "minLength": 1
+ },
+ "validUntil": {
+ "type": "string",
+ "description": "Specific date and time (ISO 8601 format) when the cron expression invocation is no longer valid"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "expression"
+ ]
+ }
+ ]
+ },
+ "continueasdef": {
+ "oneOf": [
+ {
+ "type": "string",
+ "description": "Unique id of the workflow to be continue execution as. Entire state data is passed as data input to next execution",
+ "minLength": 1
+ },
+ {
+ "type": "object",
+ "properties": {
+ "workflowId": {
+ "type": "string",
+ "description": "Unique id of the workflow to continue execution as"
+ },
+ "version": {
+ "type": "string",
+ "description": "Version of the workflow to continue execution as",
+ "minLength": 1
+ },
+ "data": {
+ "type": [
+ "string",
+ "object"
+ ],
+ "description": "If string type, an expression which selects parts of the states data output to become the workflow data input of continued execution. If object type, a custom object to become the workflow data input of the continued execution"
+ },
+ "workflowExecTimeout": {
+ "$ref": "timeouts.json#/definitions/workflowExecTimeout",
+ "description": "Workflow execution timeout to be used by the workflow continuing execution. Overwrites any specific settings set by that workflow"
+ }
+ },
+ "required": [
+ "workflowId"
+ ]
+ }
+ ]
+ },
+ "transition": {
+ "oneOf": [
+ {
+ "type": "string",
+ "description": "Name of state to transition to",
+ "minLength": 1
+ },
+ {
+ "type": "object",
+ "description": "Function Reference",
+ "properties": {
+ "nextState": {
+ "type": "string",
+ "description": "Name of state to transition to",
+ "minLength": 1
+ },
+ "produceEvents": {
+ "type": "array",
+ "description": "Array of events to be produced before the transition happens",
+ "items": {
+ "type": "object",
+ "$ref": "#/definitions/produceeventdef"
+ },
+ "additionalItems": false
+ },
+ "compensate": {
+ "type": "boolean",
+ "default": false,
+ "description": "If set to true, triggers workflow compensation when before this transition is taken. Default is false"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "nextState"
+ ]
+ }
+ ]
+ },
+ "error": {
+ "type": "object",
+ "properties": {
+ "errorRef": {
+ "type": "string",
+ "description": "Reference to a unique workflow error definition. Used of errorRefs is not used",
+ "minLength": 1
+ },
+ "errorRefs": {
+ "type": "array",
+ "description": "References one or more workflow error definitions. Used if errorRef is not used",
+ "minItems": 1,
+ "items": {
+ "type": "string"
+ },
+ "additionalItems": false
+ },
+ "transition": {
+ "description": "Transition to next state to handle the error.",
+ "$ref": "#/definitions/transition"
+ },
+ "end": {
+ "description": "End workflow execution in case of this error.",
+ "$ref": "#/definitions/end"
+ }
+ },
+ "additionalProperties": false,
+ "oneOf": [
+ {
+ "required": [
+ "errorRef",
+ "transition"
+ ]
+ },
+ {
+ "required": [
+ "errorRef",
+ "end"
+ ]
+ },
+ {
+ "required": [
+ "errorRefs",
+ "transition"
+ ]
+ },
+ {
+ "required": [
+ "errorRefs",
+ "end"
+ ]
+ }
+ ]
+ },
+ "onevents": {
+ "type": "object",
+ "properties": {
+ "eventRefs": {
+ "type": "array",
+ "description": "References one or more unique event names in the defined workflow events",
+ "minItems": 1,
+ "items": {
+ "type": "string"
+ },
+ "uniqueItems": true,
+ "additionalItems": false
+ },
+ "actionMode": {
+ "type": "string",
+ "enum": [
+ "sequential",
+ "parallel"
+ ],
+ "description": "Specifies how actions are to be performed (in sequence or in parallel)",
+ "default": "sequential"
+ },
+ "actions": {
+ "type": "array",
+ "description": "Actions to be performed if expression matches",
+ "items": {
+ "type": "object",
+ "$ref": "#/definitions/action"
+ },
+ "additionalItems": false
+ },
+ "eventDataFilter": {
+ "description": "Event data filter",
+ "$ref": "#/definitions/eventdatafilter"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "eventRefs"
+ ]
+ },
+ "action": {
+ "type": "object",
+ "properties": {
+ "id": {
+ "type": "string",
+ "description": "Unique action identifier"
+ },
+ "name": {
+ "type": "string",
+ "description": "Unique action definition name"
+ },
+ "functionRef": {
+ "description": "References a function to be invoked",
+ "$ref": "#/definitions/functionref"
+ },
+ "eventRef": {
+ "description": "References a 'trigger' and 'result' reusable event definitions",
+ "$ref": "#/definitions/eventref"
+ },
+ "subFlowRef": {
+ "description": "References a sub-workflow to invoke",
+ "$ref": "#/definitions/subflowref"
+ },
+ "sleep": {
+ "description": "Defines time periods workflow execution should sleep before / after function execution",
+ "$ref": "#/definitions/sleep"
+ },
+ "retryRef": {
+ "type": "string",
+ "description": "References a defined workflow retry definition. If not defined the default retry policy is assumed"
+ },
+ "nonRetryableErrors": {
+ "type": "array",
+ "description": "List of unique references to defined workflow errors for which the action should not be retried. Used only when `autoRetries` is set to `true`",
+ "minItems": 1,
+ "items": {
+ "type": "string"
+ },
+ "additionalItems": false
+ },
+ "retryableErrors": {
+ "type": "array",
+ "description": "List of unique references to defined workflow errors for which the action should be retried. Used only when `autoRetries` is set to `false`",
+ "minItems": 1,
+ "items": {
+ "type": "string"
+ },
+ "additionalItems": false
+ },
+ "actionDataFilter": {
+ "description": "Action data filter",
+ "$ref": "#/definitions/actiondatafilter"
+ },
+ "condition": {
+ "description": "Expression, if defined, must evaluate to true for this action to be performed. If false, action is disregarded",
+ "type": "string",
+ "minLength": 1
+ }
+ },
+ "additionalProperties": false,
+ "oneOf": [
+ {
+ "required": [
+ "functionRef"
+ ]
+ },
+ {
+ "required": [
+ "eventRef"
+ ]
+ },
+ {
+ "required": [
+ "subFlowRef"
+ ]
+ }
+ ]
+ },
+ "functionref": {
+ "oneOf": [
+ {
+ "type": "string",
+ "description": "Name of the referenced function",
+ "minLength": 1
+ },
+ {
+ "type": "object",
+ "description": "Function Reference",
+ "properties": {
+ "refName": {
+ "type": "string",
+ "description": "Name of the referenced function"
+ },
+ "arguments": {
+ "type": "object",
+ "description": "Function arguments/inputs"
+ },
+ "selectionSet": {
+ "type": "string",
+ "description": "Only used if function type is 'graphql'. A string containing a valid GraphQL selection set"
+ },
+ "invoke": {
+ "type": "string",
+ "enum": [
+ "sync",
+ "async"
+ ],
+ "description": "Specifies if the function should be invoked sync or async",
+ "default": "sync"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "refName"
+ ]
+ }
+ ]
+ },
+ "eventref": {
+ "type": "object",
+ "description": "Event References",
+ "properties": {
+ "triggerEventRef": {
+ "type": "string",
+ "description": "Reference to the unique name of a 'produced' event definition"
+ },
+ "resultEventRef": {
+ "type": "string",
+ "description": "Reference to the unique name of a 'consumed' event definition"
+ },
+ "resultEventTimeout": {
+ "type": "string",
+ "description": "Maximum amount of time (ISO 8601 format) to wait for the result event. If not defined it should default to the actionExecutionTimeout"
+ },
+ "data": {
+ "type": [
+ "string",
+ "object"
+ ],
+ "description": "If string type, an expression which selects parts of the states data output to become the data (payload) of the event referenced by 'triggerEventRef'. If object type, a custom object to become the data (payload) of the event referenced by 'triggerEventRef'."
+ },
+ "contextAttributes": {
+ "type": "object",
+ "description": "Add additional extension context attributes to the produced event",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "invoke": {
+ "type": "string",
+ "enum": [
+ "sync",
+ "async"
+ ],
+ "description": "Specifies if the function should be invoked sync or async. Default is sync.",
+ "default": "sync"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "triggerEventRef",
+ "resultEventRef"
+ ]
+ },
+ "subflowref": {
+ "oneOf": [
+ {
+ "type": "string",
+ "description": "Unique id of the sub-workflow to be invoked",
+ "minLength": 1
+ },
+ {
+ "type": "object",
+ "description": "Specifies a sub-workflow to be invoked",
+ "properties": {
+ "workflowId": {
+ "type": "string",
+ "description": "Unique id of the sub-workflow to be invoked"
+ },
+ "version": {
+ "type": "string",
+ "description": "Version of the sub-workflow to be invoked",
+ "minLength": 1
+ },
+ "onParentComplete": {
+ "type": "string",
+ "enum": [
+ "continue",
+ "terminate"
+ ],
+ "description": "If invoke is 'async', specifies how subflow execution should behave when parent workflow completes. Default is 'terminate'",
+ "default": "terminate"
+ },
+ "invoke": {
+ "type": "string",
+ "enum": [
+ "sync",
+ "async"
+ ],
+ "description": "Specifies if the subflow should be invoked sync or async",
+ "default": "sync"
+ }
+ },
+ "required": [
+ "workflowId"
+ ]
+ }
+ ]
+ },
+ "branch": {
+ "type": "object",
+ "description": "Branch Definition",
+ "properties": {
+ "name": {
+ "type": "string",
+ "description": "Branch name"
+ },
+ "timeouts": {
+ "type": "object",
+ "description": "State specific timeouts",
+ "properties": {
+ "actionExecTimeout": {
+ "$ref": "timeouts.json#/definitions/actionExecTimeout"
+ },
+ "branchExecTimeout": {
+ "$ref": "timeouts.json#/definitions/branchExecTimeout"
+ }
+ },
+ "required": []
+ },
+ "actions": {
+ "type": "array",
+ "description": "Actions to be executed in this branch",
+ "items": {
+ "type": "object",
+ "$ref": "#/definitions/action"
+ },
+ "additionalItems": false
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "name",
+ "actions"
+ ]
+ },
+ "sleepstate": {
+ "type": "object",
+ "description": "Causes the workflow execution to sleep for a specified duration",
+ "properties": {
+ "id": {
+ "type": "string",
+ "description": "Unique State id",
+ "minLength": 1
+ },
+ "name": {
+ "type": "string",
+ "description": "State name"
+ },
+ "type": {
+ "type": "string",
+ "const": "sleep",
+ "description": "State type"
+ },
+ "end": {
+ "$ref": "#/definitions/end",
+ "description": "State end definition"
+ },
+ "stateDataFilter": {
+ "description": "State data filter",
+ "$ref": "#/definitions/statedatafilter"
+ },
+ "duration": {
+ "type": "string",
+ "description": "Duration (ISO 8601 duration format) to sleep"
+ },
+ "timeouts": {
+ "type": "object",
+ "description": "State specific timeouts",
+ "properties": {
+ "stateExecTimeout": {
+ "$ref": "timeouts.json#/definitions/stateExecTimeout"
+ }
+ },
+ "required": []
+ },
+ "onErrors": {
+ "type": "array",
+ "description": "States error handling definitions",
+ "items": {
+ "type": "object",
+ "$ref": "#/definitions/error"
+ },
+ "additionalItems": false
+ },
+ "transition": {
+ "description": "Next transition of the workflow after the workflow sleep",
+ "$ref": "#/definitions/transition"
+ },
+ "compensatedBy": {
+ "type": "string",
+ "minLength": 1,
+ "description": "Unique Name of a workflow state which is responsible for compensation of this state"
+ },
+ "usedForCompensation": {
+ "type": "boolean",
+ "default": false,
+ "description": "If true, this state is used to compensate another state. Default is false"
+ },
+ "metadata": {
+ "$ref": "common.json#/definitions/metadata"
+ }
+ },
+ "additionalProperties": false,
+ "if": {
+ "properties": {
+ "usedForCompensation": {
+ "const": true
+ }
+ },
+ "required": [
+ "usedForCompensation"
+ ]
+ },
+ "then": {
+ "required": [
+ "name",
+ "type",
+ "duration"
+ ]
+ },
+ "else": {
+ "oneOf": [
+ {
+ "required": [
+ "name",
+ "type",
+ "duration",
+ "end"
+ ]
+ },
+ {
+ "required": [
+ "name",
+ "type",
+ "duration",
+ "transition"
+ ]
+ }
+ ]
+ }
+ },
+ "eventstate": {
+ "type": "object",
+ "description": "This state is used to wait for events from event sources, then consumes them and invoke one or more actions to run in sequence or parallel",
+ "properties": {
+ "id": {
+ "type": "string",
+ "description": "Unique State id",
+ "minLength": 1
+ },
+ "name": {
+ "type": "string",
+ "description": "State name"
+ },
+ "type": {
+ "type": "string",
+ "const": "event",
+ "description": "State type"
+ },
+ "exclusive": {
+ "type": "boolean",
+ "default": true,
+ "description": "If true consuming one of the defined events causes its associated actions to be performed. If false all of the defined events must be consumed in order for actions to be performed"
+ },
+ "onEvents": {
+ "type": "array",
+ "description": "Define the events to be consumed and optional actions to be performed",
+ "items": {
+ "type": "object",
+ "$ref": "#/definitions/onevents"
+ },
+ "additionalItems": false
+ },
+ "timeouts": {
+ "type": "object",
+ "description": "State specific timeouts",
+ "properties": {
+ "stateExecTimeout": {
+ "$ref": "timeouts.json#/definitions/stateExecTimeout"
+ },
+ "actionExecTimeout": {
+ "$ref": "timeouts.json#/definitions/actionExecTimeout"
+ },
+ "eventTimeout": {
+ "$ref": "timeouts.json#/definitions/eventTimeout"
+ }
+ },
+ "required": []
+ },
+ "stateDataFilter": {
+ "description": "State data filter",
+ "$ref": "#/definitions/statedatafilter"
+ },
+ "onErrors": {
+ "type": "array",
+ "description": "States error handling definitions",
+ "items": {
+ "type": "object",
+ "$ref": "#/definitions/error"
+ },
+ "additionalItems": false
+ },
+ "transition": {
+ "description": "Next transition of the workflow after all the actions have been performed",
+ "$ref": "#/definitions/transition"
+ },
+ "end": {
+ "$ref": "#/definitions/end",
+ "description": "State end definition"
+ },
+ "compensatedBy": {
+ "type": "string",
+ "minLength": 1,
+ "description": "Unique Name of a workflow state which is responsible for compensation of this state"
+ },
+ "metadata": {
+ "$ref": "common.json#/definitions/metadata"
+ }
+ },
+ "additionalProperties": false,
+ "oneOf": [
+ {
+ "required": [
+ "name",
+ "type",
+ "onEvents",
+ "end"
+ ]
+ },
+ {
+ "required": [
+ "name",
+ "type",
+ "onEvents",
+ "transition"
+ ]
+ }
+ ]
+ },
+ "operationstate": {
+ "type": "object",
+ "description": "Defines actions be performed. Does not wait for incoming events",
+ "properties": {
+ "id": {
+ "type": "string",
+ "description": "Unique State id",
+ "minLength": 1
+ },
+ "name": {
+ "type": "string",
+ "description": "State name"
+ },
+ "type": {
+ "type": "string",
+ "const": "operation",
+ "description": "State type"
+ },
+ "end": {
+ "$ref": "#/definitions/end",
+ "description": "State end definition"
+ },
+ "stateDataFilter": {
+ "description": "State data filter",
+ "$ref": "#/definitions/statedatafilter"
+ },
+ "actionMode": {
+ "type": "string",
+ "enum": [
+ "sequential",
+ "parallel"
+ ],
+ "description": "Specifies whether actions are performed in sequence or in parallel",
+ "default": "sequential"
+ },
+ "actions": {
+ "type": "array",
+ "description": "Actions to be performed",
+ "items": {
+ "type": "object",
+ "$ref": "#/definitions/action"
+ }
+ },
+ "timeouts": {
+ "type": "object",
+ "description": "State specific timeouts",
+ "properties": {
+ "stateExecTimeout": {
+ "$ref": "timeouts.json#/definitions/stateExecTimeout"
+ },
+ "actionExecTimeout": {
+ "$ref": "timeouts.json#/definitions/actionExecTimeout"
+ }
+ },
+ "required": []
+ },
+ "onErrors": {
+ "type": "array",
+ "description": "States error handling definitions",
+ "items": {
+ "type": "object",
+ "$ref": "#/definitions/error"
+ },
+ "additionalItems": false
+ },
+ "transition": {
+ "description": "Next transition of the workflow after all the actions have been performed",
+ "$ref": "#/definitions/transition"
+ },
+ "compensatedBy": {
+ "type": "string",
+ "minLength": 1,
+ "description": "Unique Name of a workflow state which is responsible for compensation of this state"
+ },
+ "usedForCompensation": {
+ "type": "boolean",
+ "default": false,
+ "description": "If true, this state is used to compensate another state. Default is false"
+ },
+ "metadata": {
+ "$ref": "common.json#/definitions/metadata"
+ }
+ },
+ "additionalProperties": false,
+ "if": {
+ "properties": {
+ "usedForCompensation": {
+ "const": true
+ }
+ },
+ "required": [
+ "usedForCompensation"
+ ]
+ },
+ "then": {
+ "required": [
+ "name",
+ "type",
+ "actions"
+ ]
+ },
+ "else": {
+ "oneOf": [
+ {
+ "required": [
+ "name",
+ "type",
+ "actions",
+ "end"
+ ]
+ },
+ {
+ "required": [
+ "name",
+ "type",
+ "actions",
+ "transition"
+ ]
+ }
+ ]
+ }
+ },
+ "parallelstate": {
+ "type": "object",
+ "description": "Consists of a number of states that are executed in parallel",
+ "properties": {
+ "id": {
+ "type": "string",
+ "description": "Unique State id",
+ "minLength": 1
+ },
+ "name": {
+ "type": "string",
+ "description": "State name"
+ },
+ "type": {
+ "type": "string",
+ "const": "parallel",
+ "description": "State type"
+ },
+ "end": {
+ "$ref": "#/definitions/end",
+ "description": "State end definition"
+ },
+ "stateDataFilter": {
+ "description": "State data filter",
+ "$ref": "#/definitions/statedatafilter"
+ },
+ "timeouts": {
+ "type": "object",
+ "description": "State specific timeouts",
+ "properties": {
+ "stateExecTimeout": {
+ "$ref": "timeouts.json#/definitions/stateExecTimeout"
+ },
+ "branchExecTimeout": {
+ "$ref": "timeouts.json#/definitions/branchExecTimeout"
+ }
+ },
+ "required": []
+ },
+ "branches": {
+ "type": "array",
+ "description": "Branch Definitions",
+ "items": {
+ "type": "object",
+ "$ref": "#/definitions/branch"
+ },
+ "additionalItems": false
+ },
+ "completionType": {
+ "type": "string",
+ "enum": [
+ "allOf",
+ "atLeast"
+ ],
+ "description": "Option types on how to complete branch execution.",
+ "default": "allOf"
+ },
+ "numCompleted": {
+ "type": [
+ "number",
+ "string"
+ ],
+ "minimum": 0,
+ "minLength": 0,
+ "description": "Used when completionType is set to 'atLeast' to specify the minimum number of branches that must complete before the state will transition."
+ },
+ "onErrors": {
+ "type": "array",
+ "description": "States error handling definitions",
+ "items": {
+ "type": "object",
+ "$ref": "#/definitions/error"
+ },
+ "additionalItems": false
+ },
+ "transition": {
+ "description": "Next transition of the workflow after all branches have completed execution",
+ "$ref": "#/definitions/transition"
+ },
+ "compensatedBy": {
+ "type": "string",
+ "minLength": 1,
+ "description": "Unique Name of a workflow state which is responsible for compensation of this state"
+ },
+ "usedForCompensation": {
+ "type": "boolean",
+ "default": false,
+ "description": "If true, this state is used to compensate another state. Default is false"
+ },
+ "metadata": {
+ "$ref": "common.json#/definitions/metadata"
+ }
+ },
+ "additionalProperties": false,
+ "if": {
+ "properties": {
+ "usedForCompensation": {
+ "const": true
+ }
+ },
+ "required": [
+ "usedForCompensation"
+ ]
+ },
+ "then": {
+ "required": [
+ "name",
+ "type",
+ "branches"
+ ]
+ },
+ "else": {
+ "oneOf": [
+ {
+ "required": [
+ "name",
+ "type",
+ "branches",
+ "end"
+ ]
+ },
+ {
+ "required": [
+ "name",
+ "type",
+ "branches",
+ "transition"
+ ]
+ }
+ ]
+ }
+ },
+ "switchstate": {
+ "oneOf": [
+ {
+ "$ref": "#/definitions/databasedswitchstate"
+ },
+ {
+ "$ref": "#/definitions/eventbasedswitchstate"
+ }
+ ]
+ },
+ "eventbasedswitchstate": {
+ "type": "object",
+ "description": "Permits transitions to other states based on events",
+ "properties": {
+ "id": {
+ "type": "string",
+ "description": "Unique State id",
+ "minLength": 1
+ },
+ "name": {
+ "type": "string",
+ "description": "State name"
+ },
+ "type": {
+ "type": "string",
+ "const": "switch",
+ "description": "State type"
+ },
+ "stateDataFilter": {
+ "description": "State data filter",
+ "$ref": "#/definitions/statedatafilter"
+ },
+ "timeouts": {
+ "type": "object",
+ "description": "State specific timeouts",
+ "properties": {
+ "stateExecTimeout": {
+ "$ref": "timeouts.json#/definitions/stateExecTimeout"
+ },
+ "eventTimeout": {
+ "$ref": "timeouts.json#/definitions/eventTimeout"
+ }
+ },
+ "required": []
+ },
+ "eventConditions": {
+ "type": "array",
+ "description": "Defines conditions evaluated against events",
+ "items": {
+ "type": "object",
+ "$ref": "#/definitions/eventcondition"
+ },
+ "additionalItems": false
+ },
+ "onErrors": {
+ "type": "array",
+ "description": "States error handling definitions",
+ "items": {
+ "type": "object",
+ "$ref": "#/definitions/error"
+ },
+ "additionalItems": false
+ },
+ "defaultCondition": {
+ "description": "Default transition of the workflow if there is no matching data conditions. Can include a transition or end definition",
+ "$ref": "#/definitions/defaultconditiondef"
+ },
+ "compensatedBy": {
+ "type": "string",
+ "minLength": 1,
+ "description": "Unique Name of a workflow state which is responsible for compensation of this state"
+ },
+ "usedForCompensation": {
+ "type": "boolean",
+ "default": false,
+ "description": "If true, this state is used to compensate another state. Default is false"
+ },
+ "metadata": {
+ "$ref": "common.json#/definitions/metadata"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "name",
+ "type",
+ "eventConditions",
+ "defaultCondition"
+ ]
+ },
+ "databasedswitchstate": {
+ "type": "object",
+ "description": "Permits transitions to other states based on data conditions",
+ "properties": {
+ "id": {
+ "type": "string",
+ "description": "Unique State id",
+ "minLength": 1
+ },
+ "name": {
+ "type": "string",
+ "description": "State name"
+ },
+ "type": {
+ "type": "string",
+ "const": "switch",
+ "description": "State type"
+ },
+ "stateDataFilter": {
+ "description": "State data filter",
+ "$ref": "#/definitions/statedatafilter"
+ },
+ "timeouts": {
+ "type": "object",
+ "description": "State specific timeouts",
+ "properties": {
+ "stateExecTimeout": {
+ "$ref": "timeouts.json#/definitions/stateExecTimeout"
+ }
+ },
+ "required": []
+ },
+ "dataConditions": {
+ "type": "array",
+ "description": "Defines conditions evaluated against state data",
+ "items": {
+ "type": "object",
+ "$ref": "#/definitions/datacondition"
+ },
+ "additionalItems": false
+ },
+ "onErrors": {
+ "type": "array",
+ "description": "States error handling definitions",
+ "items": {
+ "type": "object",
+ "$ref": "#/definitions/error"
+ },
+ "additionalItems": false
+ },
+ "defaultCondition": {
+ "description": "Default transition of the workflow if there is no matching data conditions. Can include a transition or end definition",
+ "$ref": "#/definitions/defaultconditiondef"
+ },
+ "compensatedBy": {
+ "type": "string",
+ "minLength": 1,
+ "description": "Unique Name of a workflow state which is responsible for compensation of this state"
+ },
+ "usedForCompensation": {
+ "type": "boolean",
+ "default": false,
+ "description": "If true, this state is used to compensate another state. Default is false"
+ },
+ "metadata": {
+ "$ref": "common.json#/definitions/metadata"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "name",
+ "type",
+ "dataConditions",
+ "defaultCondition"
+ ]
+ },
+ "defaultconditiondef": {
+ "type": "object",
+ "description": "DefaultCondition definition. Can be either a transition or end definition",
+ "properties": {
+ "transition": {
+ "$ref": "#/definitions/transition"
+ },
+ "end": {
+ "$ref": "#/definitions/end"
+ }
+ },
+ "additionalProperties": false,
+ "oneOf": [
+ {
+ "required": [
+ "transition"
+ ]
+ },
+ {
+ "required": [
+ "end"
+ ]
+ }
+ ]
+ },
+ "eventcondition": {
+ "oneOf": [
+ {
+ "$ref": "#/definitions/transitioneventcondition"
+ },
+ {
+ "$ref": "#/definitions/enddeventcondition"
+ }
+ ]
+ },
+ "transitioneventcondition": {
+ "type": "object",
+ "description": "Switch state data event condition",
+ "properties": {
+ "name": {
+ "type": "string",
+ "description": "Event condition name"
+ },
+ "eventRef": {
+ "type": "string",
+ "description": "References an unique event name in the defined workflow events"
+ },
+ "transition": {
+ "description": "Next transition of the workflow if there is valid matches",
+ "$ref": "#/definitions/transition"
+ },
+ "eventDataFilter": {
+ "description": "Event data filter definition",
+ "$ref": "#/definitions/eventdatafilter"
+ },
+ "metadata": {
+ "$ref": "common.json#/definitions/metadata"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "eventRef",
+ "transition"
+ ]
+ },
+ "enddeventcondition": {
+ "type": "object",
+ "description": "Switch state data event condition",
+ "properties": {
+ "name": {
+ "type": "string",
+ "description": "Event condition name"
+ },
+ "eventRef": {
+ "type": "string",
+ "description": "References an unique event name in the defined workflow events"
+ },
+ "end": {
+ "$ref": "#/definitions/end",
+ "description": "Explicit transition to end"
+ },
+ "eventDataFilter": {
+ "description": "Event data filter definition",
+ "$ref": "#/definitions/eventdatafilter"
+ },
+ "metadata": {
+ "$ref": "common.json#/definitions/metadata"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "eventRef",
+ "end"
+ ]
+ },
+ "datacondition": {
+ "oneOf": [
+ {
+ "$ref": "#/definitions/transitiondatacondition"
+ },
+ {
+ "$ref": "#/definitions/enddatacondition"
+ }
+ ]
+ },
+ "transitiondatacondition": {
+ "type": "object",
+ "description": "Switch state data based condition",
+ "properties": {
+ "name": {
+ "type": "string",
+ "description": "Data condition name"
+ },
+ "condition": {
+ "type": "string",
+ "description": "Workflow expression evaluated against state data. Must evaluate to true or false"
+ },
+ "transition": {
+ "description": "Workflow transition if condition is evaluated to true",
+ "$ref": "#/definitions/transition"
+ },
+ "metadata": {
+ "$ref": "common.json#/definitions/metadata"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "condition",
+ "transition"
+ ]
+ },
+ "enddatacondition": {
+ "type": "object",
+ "description": "Switch state data based condition",
+ "properties": {
+ "name": {
+ "type": "string",
+ "description": "Data condition name"
+ },
+ "condition": {
+ "type": "string",
+ "description": "Workflow expression evaluated against state data. Must evaluate to true or false"
+ },
+ "end": {
+ "$ref": "#/definitions/end",
+ "description": "Workflow end definition"
+ },
+ "metadata": {
+ "$ref": "common.json#/definitions/metadata"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "condition",
+ "end"
+ ]
+ },
+ "injectstate": {
+ "type": "object",
+ "description": "Inject static data into state data. Does not perform any actions",
+ "properties": {
+ "id": {
+ "type": "string",
+ "description": "Unique state id",
+ "minLength": 1
+ },
+ "name": {
+ "type": "string",
+ "description": "State name"
+ },
+ "type": {
+ "type": "string",
+ "const": "inject",
+ "description": "State type"
+ },
+ "end": {
+ "$ref": "#/definitions/end",
+ "description": "State end definition"
+ },
+ "data": {
+ "type": "object",
+ "description": "JSON object which can be set as states data input and can be manipulated via filters"
+ },
+ "timeouts": {
+ "type": "object",
+ "description": "State specific timeouts",
+ "properties": {
+ "stateExecTimeout": {
+ "$ref": "timeouts.json#/definitions/stateExecTimeout"
+ }
+ },
+ "required": []
+ },
+ "stateDataFilter": {
+ "description": "State data filter",
+ "$ref": "#/definitions/statedatafilter"
+ },
+ "transition": {
+ "description": "Next transition of the workflow after injection has completed",
+ "$ref": "#/definitions/transition"
+ },
+ "compensatedBy": {
+ "type": "string",
+ "minLength": 1,
+ "description": "Unique Name of a workflow state which is responsible for compensation of this state"
+ },
+ "usedForCompensation": {
+ "type": "boolean",
+ "default": false,
+ "description": "If true, this state is used to compensate another state. Default is false"
+ },
+ "metadata": {
+ "$ref": "common.json#/definitions/metadata"
+ }
+ },
+ "additionalProperties": false,
+ "if": {
+ "properties": {
+ "usedForCompensation": {
+ "const": true
+ }
+ },
+ "required": [
+ "usedForCompensation"
+ ]
+ },
+ "then": {
+ "required": [
+ "name",
+ "type",
+ "data"
+ ]
+ },
+ "else": {
+ "oneOf": [
+ {
+ "required": [
+ "name",
+ "type",
+ "data",
+ "end"
+ ]
+ },
+ {
+ "required": [
+ "name",
+ "type",
+ "data",
+ "transition"
+ ]
+ }
+ ]
+ }
+ },
+ "foreachstate": {
+ "type": "object",
+ "description": "Execute a set of defined actions or workflows for each element of a data array",
+ "properties": {
+ "id": {
+ "type": "string",
+ "description": "Unique State id",
+ "minLength": 1
+ },
+ "name": {
+ "type": "string",
+ "description": "State name"
+ },
+ "type": {
+ "type": "string",
+ "const": "foreach",
+ "description": "State type"
+ },
+ "end": {
+ "$ref": "#/definitions/end",
+ "description": "State end definition"
+ },
+ "inputCollection": {
+ "type": "string",
+ "description": "Workflow expression selecting an array element of the states data"
+ },
+ "outputCollection": {
+ "type": "string",
+ "description": "Workflow expression specifying an array element of the states data to add the results of each iteration"
+ },
+ "iterationParam": {
+ "type": "string",
+ "description": "Name of the iteration parameter that can be referenced in actions/workflow. For each parallel iteration, this param should contain an unique element of the inputCollection array"
+ },
+ "batchSize": {
+ "type": [
+ "number",
+ "string"
+ ],
+ "minimum": 0,
+ "minLength": 0,
+ "description": "Specifies how many iterations may run in parallel at the same time. Used if 'mode' property is set to 'parallel' (default)"
+ },
+ "actions": {
+ "type": "array",
+ "description": "Actions to be executed for each of the elements of inputCollection",
+ "items": {
+ "type": "object",
+ "$ref": "#/definitions/action"
+ },
+ "additionalItems": false
+ },
+ "timeouts": {
+ "type": "object",
+ "description": "State specific timeouts",
+ "properties": {
+ "stateExecTimeout": {
+ "$ref": "timeouts.json#/definitions/stateExecTimeout"
+ },
+ "actionExecTimeout": {
+ "$ref": "timeouts.json#/definitions/actionExecTimeout"
+ }
+ },
+ "required": []
+ },
+ "stateDataFilter": {
+ "description": "State data filter",
+ "$ref": "#/definitions/statedatafilter"
+ },
+ "onErrors": {
+ "type": "array",
+ "description": "States error handling definitions",
+ "items": {
+ "type": "object",
+ "$ref": "#/definitions/error"
+ },
+ "additionalItems": false
+ },
+ "transition": {
+ "description": "Next transition of the workflow after state has completed",
+ "$ref": "#/definitions/transition"
+ },
+ "compensatedBy": {
+ "type": "string",
+ "minLength": 1,
+ "description": "Unique Name of a workflow state which is responsible for compensation of this state"
+ },
+ "usedForCompensation": {
+ "type": "boolean",
+ "default": false,
+ "description": "If true, this state is used to compensate another state. Default is false"
+ },
+ "mode": {
+ "type": "string",
+ "enum": [
+ "sequential",
+ "parallel"
+ ],
+ "description": "Specifies how iterations are to be performed (sequentially or in parallel)",
+ "default": "parallel"
+ },
+ "metadata": {
+ "$ref": "common.json#/definitions/metadata"
+ }
+ },
+ "additionalProperties": false,
+ "if": {
+ "properties": {
+ "usedForCompensation": {
+ "const": true
+ }
+ },
+ "required": [
+ "usedForCompensation"
+ ]
+ },
+ "then": {
+ "required": [
+ "name",
+ "type",
+ "inputCollection",
+ "actions"
+ ]
+ },
+ "else": {
+ "oneOf": [
+ {
+ "required": [
+ "name",
+ "type",
+ "inputCollection",
+ "actions",
+ "end"
+ ]
+ },
+ {
+ "required": [
+ "name",
+ "type",
+ "inputCollection",
+ "actions",
+ "transition"
+ ]
+ }
+ ]
+ }
+ },
+ "callbackstate": {
+ "type": "object",
+ "description": "This state performs an action, then waits for the callback event that denotes completion of the action",
+ "properties": {
+ "id": {
+ "type": "string",
+ "description": "Unique state id",
+ "minLength": 1
+ },
+ "name": {
+ "type": "string",
+ "description": "State name"
+ },
+ "type": {
+ "type": "string",
+ "const": "callback",
+ "description": "State type"
+ },
+ "action": {
+ "description": "Defines the action to be executed",
+ "$ref": "#/definitions/action"
+ },
+ "eventRef": {
+ "type": "string",
+ "description": "References an unique callback event name in the defined workflow events"
+ },
+ "timeouts": {
+ "type": "object",
+ "description": "State specific timeouts",
+ "properties": {
+ "stateExecTimeout": {
+ "$ref": "timeouts.json#/definitions/stateExecTimeout"
+ },
+ "actionExecTimeout": {
+ "$ref": "timeouts.json#/definitions/actionExecTimeout"
+ },
+ "eventTimeout": {
+ "$ref": "timeouts.json#/definitions/eventTimeout"
+ }
+ },
+ "required": []
+ },
+ "eventDataFilter": {
+ "description": "Event data filter",
+ "$ref": "#/definitions/eventdatafilter"
+ },
+ "stateDataFilter": {
+ "description": "State data filter",
+ "$ref": "#/definitions/statedatafilter"
+ },
+ "onErrors": {
+ "type": "array",
+ "description": "States error handling definitions",
+ "items": {
+ "type": "object",
+ "$ref": "#/definitions/error"
+ },
+ "additionalItems": false
+ },
+ "transition": {
+ "description": "Next transition of the workflow after all the actions have been performed",
+ "$ref": "#/definitions/transition"
+ },
+ "end": {
+ "$ref": "#/definitions/end",
+ "description": "State end definition"
+ },
+ "compensatedBy": {
+ "type": "string",
+ "minLength": 1,
+ "description": "Unique Name of a workflow state which is responsible for compensation of this state"
+ },
+ "usedForCompensation": {
+ "type": "boolean",
+ "default": false,
+ "description": "If true, this state is used to compensate another state. Default is false"
+ },
+ "metadata": {
+ "$ref": "common.json#/definitions/metadata"
+ }
+ },
+ "additionalProperties": false,
+ "if": {
+ "properties": {
+ "usedForCompensation": {
+ "const": true
+ }
+ },
+ "required": [
+ "usedForCompensation"
+ ]
+ },
+ "then": {
+ "required": [
+ "name",
+ "type",
+ "action",
+ "eventRef"
+ ]
+ },
+ "else": {
+ "oneOf": [
+ {
+ "required": [
+ "name",
+ "type",
+ "action",
+ "eventRef",
+ "end"
+ ]
+ },
+ {
+ "required": [
+ "name",
+ "type",
+ "action",
+ "eventRef",
+ "transition"
+ ]
+ }
+ ]
+ }
+ },
+ "startdef": {
+ "oneOf": [
+ {
+ "type": "string",
+ "description": "Name of the starting workflow state",
+ "minLength": 1
+ },
+ {
+ "type": "object",
+ "description": "Workflow start definition",
+ "properties": {
+ "stateName": {
+ "type": "string",
+ "description": "Name of the starting workflow state",
+ "minLength": 1
+ },
+ "schedule": {
+ "description": "Define the time/repeating intervals or cron at which workflow instances should be automatically started.",
+ "$ref": "#/definitions/schedule"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "stateName",
+ "schedule"
+ ]
+ }
+ ]
+ },
+ "schedule": {
+ "oneOf": [
+ {
+ "type": "string",
+ "description": "Time interval (must be repeating interval) described with ISO 8601 format. Declares when workflow instances will be automatically created. (UTC timezone is assumed)",
+ "minLength": 1
+ },
+ {
+ "type": "object",
+ "description": "Start state schedule definition",
+ "properties": {
+ "interval": {
+ "type": "string",
+ "description": "Time interval (must be repeating interval) described with ISO 8601 format. Declares when workflow instances will be automatically created.",
+ "minLength": 1
+ },
+ "cron": {
+ "$ref": "#/definitions/crondef"
+ },
+ "timezone": {
+ "type": "string",
+ "description": "Timezone name used to evaluate the interval & cron-expression. (default: UTC)"
+ }
+ },
+ "additionalProperties": false,
+ "oneOf": [
+ {
+ "required": [
+ "interval"
+ ]
+ },
+ {
+ "required": [
+ "cron"
+ ]
+ }
+ ]
+ }
+ ]
+ },
+ "end": {
+ "oneOf": [
+ {
+ "type": "boolean",
+ "description": "State end definition",
+ "default": true
+ },
+ {
+ "type": "object",
+ "description": "State end definition",
+ "properties": {
+ "terminate": {
+ "type": "boolean",
+ "default": false,
+ "description": "If true, completes all execution flows in the given workflow instance"
+ },
+ "produceEvents": {
+ "type": "array",
+ "description": "Defines events that should be produced",
+ "items": {
+ "type": "object",
+ "$ref": "#/definitions/produceeventdef"
+ },
+ "additionalItems": false
+ },
+ "compensate": {
+ "type": "boolean",
+ "default": false,
+ "description": "If set to true, triggers workflow compensation. Default is false"
+ },
+ "continueAs": {
+ "$ref": "#/definitions/continueasdef"
+ }
+ },
+ "additionalProperties": false,
+ "required": []
+ }
+ ]
+ },
+ "produceeventdef": {
+ "type": "object",
+ "description": "Produce an event and set its data",
+ "properties": {
+ "eventRef": {
+ "type": "string",
+ "description": "References a name of a defined event"
+ },
+ "data": {
+ "type": [
+ "string",
+ "object"
+ ],
+ "description": "If String, expression which selects parts of the states data output to become the data of the produced event. If object a custom object to become the data of produced event."
+ },
+ "contextAttributes": {
+ "type": "object",
+ "description": "Add additional event extension context attributes",
+ "additionalProperties": {
+ "type": "string"
+ }
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "eventRef"
+ ]
+ },
+ "statedatafilter": {
+ "type": "object",
+ "properties": {
+ "input": {
+ "type": "string",
+ "description": "Workflow expression to filter the state data input"
+ },
+ "output": {
+ "type": "string",
+ "description": "Workflow expression that filters the state data output"
+ }
+ },
+ "additionalProperties": false,
+ "required": []
+ },
+ "eventdatafilter": {
+ "type": "object",
+ "properties": {
+ "useData": {
+ "type": "boolean",
+ "description": "If set to false, event payload is not added/merged to state data. In this case 'data' and 'toStateData' should be ignored. Default is true.",
+ "default": true
+ },
+ "data": {
+ "type": "string",
+ "description": "Workflow expression that filters the received event payload (default: '${ . }')"
+ },
+ "toStateData": {
+ "type": "string",
+ "description": " Workflow expression that selects a state data element to which the filtered event should be added/merged into. If not specified, denotes, the top-level state data element."
+ }
+ },
+ "additionalProperties": false,
+ "required": []
+ },
+ "actiondatafilter": {
+ "type": "object",
+ "properties": {
+ "fromStateData": {
+ "type": "string",
+ "description": "Workflow expression that selects state data that the state action can use"
+ },
+ "useResults": {
+ "type": "boolean",
+ "description": "If set to false, action data results are not added/merged to state data. In this case 'results' and 'toStateData' should be ignored. Default is true.",
+ "default": true
+ },
+ "results": {
+ "type": "string",
+ "description": "Workflow expression that filters the actions data results"
+ },
+ "toStateData": {
+ "type": "string",
+ "description": "Workflow expression that selects a state data element to which the action results should be added/merged into. If not specified, denote, the top-level state data element"
+ }
+ },
+ "additionalProperties": false,
+ "required": []
+ }
+ }
+}
\ No newline at end of file
diff --git a/public/schemas/0.9/auth.json b/public/schemas/0.9/auth.json
new file mode 100644
index 0000000..3f9f1bd
--- /dev/null
+++ b/public/schemas/0.9/auth.json
@@ -0,0 +1,194 @@
+{
+ "$id": "https://serverlessworkflow.io/schemas/0.9/auth.json",
+ "$schema": "http://json-schema.org/draft-07/schema#",
+ "description": "Serverless Workflow specification - auth schema",
+ "type": "object",
+ "auth": {
+ "oneOf": [
+ {
+ "type": "string",
+ "format": "uri",
+ "description": "URI to a resource containing auth definitions (json or yaml)"
+ },
+ {
+ "type": "array",
+ "description": "Workflow auth definitions",
+ "items": {
+ "type": "object",
+ "$ref": "#/definitions/authdef"
+ },
+ "additionalItems": false,
+ "minItems": 1
+ }
+ ]
+ },
+ "required": [
+ "auth"
+ ],
+ "definitions": {
+ "authdef": {
+ "type": "object",
+ "properties": {
+ "name": {
+ "type": "string",
+ "description": "Unique auth definition name",
+ "minLength": 1
+ },
+ "scheme": {
+ "type": "string",
+ "description": "Defines the auth type",
+ "enum": [
+ "basic",
+ "bearer",
+ "oauth2"
+ ],
+ "default": "basic"
+ },
+ "properties": {
+ "oneOf": [
+ {
+ "type": "string",
+ "description": "Expression referencing a workflow secret that contains all needed auth info"
+ },
+ {
+ "title": "Basic Auth Info",
+ "$ref": "#/definitions/basicpropsdef"
+ },
+ {
+ "title": "Bearer Auth Info State",
+ "$ref": "#/definitions/bearerpropsdef"
+ },
+ {
+ "title": "OAuth2 Info",
+ "$ref": "#/definitions/oauth2propsdef"
+ }
+ ]
+ }
+ },
+ "required": [
+ "name",
+ "properties"
+ ]
+ },
+ "basicpropsdef": {
+ "type": "object",
+ "description": "Basic auth information",
+ "properties": {
+ "username": {
+ "type": "string",
+ "description": "String or a workflow expression. Contains the user name",
+ "minLength": 1
+ },
+ "password": {
+ "type": "string",
+ "description": "String or a workflow expression. Contains the user password",
+ "minLength": 1
+ },
+ "metadata": {
+ "$ref": "common.json#/definitions/metadata"
+ }
+ },
+ "required": [
+ "username",
+ "password"
+ ],
+ "additionalProperties": false
+ },
+ "bearerpropsdef": {
+ "type": "object",
+ "description": "Bearer auth information",
+ "properties": {
+ "token": {
+ "type": "string",
+ "description": "String or a workflow expression. Contains the token",
+ "minLength": 1
+ },
+ "metadata": {
+ "$ref": "common.json#/definitions/metadata"
+ }
+ },
+ "required": [
+ "token"
+ ],
+ "additionalProperties": false
+ },
+ "oauth2propsdef": {
+ "type": "object",
+ "description": "OAuth2 information",
+ "properties": {
+ "authority": {
+ "type": "string",
+ "description": "String or a workflow expression. Contains the authority information",
+ "minLength": 1
+ },
+ "grantType": {
+ "type": "string",
+ "description": "Defines the grant type",
+ "enum": [
+ "password",
+ "clientCredentials",
+ "tokenExchange"
+ ],
+ "additionalItems": false
+ },
+ "clientId": {
+ "type": "string",
+ "description": "String or a workflow expression. Contains the client identifier",
+ "minLength": 1
+ },
+ "clientSecret": {
+ "type": "string",
+ "description": "Workflow secret or a workflow expression. Contains the client secret",
+ "minLength": 1
+ },
+ "scopes": {
+ "type": "array",
+ "description": "Array containing strings or workflow expressions. Contains the OAuth2 scopes",
+ "items": {
+ "type": "string"
+ },
+ "minItems": 1,
+ "additionalItems": false
+ },
+ "username": {
+ "type": "string",
+ "description": "String or a workflow expression. Contains the user name. Used only if grantType is 'resourceOwner'",
+ "minLength": 1
+ },
+ "password": {
+ "type": "string",
+ "description": "String or a workflow expression. Contains the user password. Used only if grantType is 'resourceOwner'",
+ "minLength": 1
+ },
+ "audiences": {
+ "type": "array",
+ "description": "Array containing strings or workflow expressions. Contains the OAuth2 audiences",
+ "items": {
+ "type": "string"
+ },
+ "minItems": 1,
+ "additionalItems": false
+ },
+ "subjectToken": {
+ "type": "string",
+ "description": "String or a workflow expression. Contains the subject token",
+ "minLength": 1
+ },
+ "requestedSubject": {
+ "type": "string",
+ "description": "String or a workflow expression. Contains the requested subject",
+ "minLength": 1
+ },
+ "requestedIssuer": {
+ "type": "string",
+ "description": "String or a workflow expression. Contains the requested issuer",
+ "minLength": 1
+ },
+ "metadata": {
+ "$ref": "common.json#/definitions/metadata"
+ }
+ },
+ "required": ["grantType", "clientId"]
+ }
+ }
+}
\ No newline at end of file
diff --git a/public/schemas/0.9/common.json b/public/schemas/0.9/common.json
new file mode 100644
index 0000000..4322f83
--- /dev/null
+++ b/public/schemas/0.9/common.json
@@ -0,0 +1,15 @@
+{
+ "$id": "https://serverlessworkflow.io/schemas/0.9/common.json",
+ "$schema": "http://json-schema.org/draft-07/schema#",
+ "description": "Serverless Workflow specification - common schema",
+ "type": "object",
+ "definitions": {
+ "metadata": {
+ "type": "object",
+ "description": "Metadata information",
+ "additionalProperties": {
+ "type": "string"
+ }
+ }
+ }
+}
\ No newline at end of file
diff --git a/public/schemas/0.9/errors.json b/public/schemas/0.9/errors.json
new file mode 100644
index 0000000..8d16def
--- /dev/null
+++ b/public/schemas/0.9/errors.json
@@ -0,0 +1,53 @@
+{
+ "$id": "https://serverlessworkflow.io/schemas/0.9/errors.json",
+ "$schema": "http://json-schema.org/draft-07/schema#",
+ "description": "Serverless Workflow specification - errors schema",
+ "type": "object",
+ "errors": {
+ "oneOf": [
+ {
+ "type": "string",
+ "format": "uri",
+ "description": "URI to a resource containing error definitions (json or yaml)"
+ },
+ {
+ "type": "array",
+ "description": "Workflow Error definitions. Defines checked errors that can be explicitly handled during workflow execution",
+ "items": {
+ "type": "object",
+ "$ref": "#/definitions/errordef"
+ },
+ "additionalItems": false,
+ "minItems": 1
+ }
+ ]
+ },
+ "required": [
+ "errors"
+ ],
+ "definitions": {
+ "errordef": {
+ "type": "object",
+ "properties": {
+ "name": {
+ "type": "string",
+ "description": "Domain-specific error name",
+ "minLength": 1
+ },
+ "code": {
+ "type": "string",
+ "description": "Error code. Can be used in addition to the name to help runtimes resolve to technical errors/exceptions. Should not be defined if error is set to '*'",
+ "minLength": 1
+ },
+ "description": {
+ "type": "string",
+ "description": "Error description"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "name"
+ ]
+ }
+ }
+}
\ No newline at end of file
diff --git a/public/schemas/0.9/events.json b/public/schemas/0.9/events.json
new file mode 100644
index 0000000..b86fce2
--- /dev/null
+++ b/public/schemas/0.9/events.json
@@ -0,0 +1,117 @@
+{
+ "$id": "https://serverlessworkflow.io/schemas/0.9/events.json",
+ "$schema": "http://json-schema.org/draft-07/schema#",
+ "description": "Serverless Workflow specification - events schema",
+ "type": "object",
+ "events": {
+ "oneOf": [
+ {
+ "type": "string",
+ "format": "uri",
+ "description": "URI to a resource containing event definitions (json or yaml)"
+ },
+ {
+ "type": "array",
+ "description": "Workflow CloudEvent definitions. Defines CloudEvents that can be consumed or produced",
+ "items": {
+ "type": "object",
+ "$ref": "#/definitions/eventdef"
+ },
+ "additionalItems": false,
+ "minItems": 1
+ }
+ ]
+ },
+ "required": [
+ "events"
+ ],
+ "definitions": {
+ "eventdef": {
+ "type": "object",
+ "properties": {
+ "name": {
+ "type": "string",
+ "description": "Unique event name",
+ "minLength": 1
+ },
+ "source": {
+ "type": "string",
+ "description": "CloudEvent source"
+ },
+ "type": {
+ "type": "string",
+ "description": "CloudEvent type"
+ },
+ "kind": {
+ "type": "string",
+ "enum": [
+ "consumed",
+ "produced"
+ ],
+ "description": "Defines the CloudEvent as either 'consumed' or 'produced' by the workflow. Default is 'consumed'",
+ "default": "consumed"
+ },
+ "correlation": {
+ "type": "array",
+ "description": "CloudEvent correlation definitions",
+ "minItems": 1,
+ "items": {
+ "type": "object",
+ "$ref": "#/definitions/correlationDef"
+ },
+ "additionalItems": false
+ },
+ "dataOnly": {
+ "type": "boolean",
+ "default": true,
+ "description": "If `true`, only the Event payload is accessible to consuming Workflow states. If `false`, both event payload and context attributes should be accessible "
+ },
+ "metadata": {
+ "$ref": "common.json#/definitions/metadata",
+ "description": "Metadata information"
+ }
+ },
+ "additionalProperties": false,
+ "if": {
+ "properties": {
+ "kind": {
+ "const": "consumed"
+ }
+ }
+ },
+ "then": {
+ "required": [
+ "name",
+ "source",
+ "type"
+ ]
+ },
+ "else": {
+ "required": [
+ "name",
+ "type"
+ ]
+ }
+ },
+ "correlationDef": {
+ "type": "object",
+ "description": "CloudEvent correlation definition",
+ "properties": {
+ "contextAttributeName": {
+ "type": "string",
+ "description": "CloudEvent Extension Context Attribute name",
+ "minLength": 1
+ },
+ "contextAttributeValue": {
+ "type": "string",
+ "description": "CloudEvent Extension Context Attribute value",
+ "minLength": 1
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "contextAttributeName"
+ ]
+ }
+ }
+}
\ No newline at end of file
diff --git a/public/schemas/0.9/extensions/kpi.json b/public/schemas/0.9/extensions/kpi.json
new file mode 100644
index 0000000..924bbab
--- /dev/null
+++ b/public/schemas/0.9/extensions/kpi.json
@@ -0,0 +1,289 @@
+{
+ "$id": "https://serverlessworkflow.io/schemas/0.9/extensions/kpi.json",
+ "$schema": "http://json-schema.org/draft-07/schema#",
+ "description": "Serverless Workflow specification - KPIs Extension Schema",
+ "type": "object",
+ "definitions": {
+ "kpi": {
+ "type": "object",
+ "description": "Serverless Workflow KPI Extension",
+ "properties": {
+ "extensionid": {
+ "type": "string",
+ "default": "workflow-kpi-extension",
+ "description": "Extension unique identifier"
+ },
+ "workflowid": {
+ "type": "string",
+ "minLength": 1,
+ "description": "Workflow definition unique identifier (workflow id property)"
+ },
+ "workflowVersions": {
+ "type": "array",
+ "description": "Workflow versions. If not defined, applies to all workflow instances (regardless of their associated workflow version)",
+ "items": {
+ "type": "string"
+ }
+ },
+ "currency": {
+ "type": "string",
+ "default": "USD",
+ "description": "Unit for all cost-based KPI parameters. Default 'USD'"
+ },
+ "events": {
+ "type": "array",
+ "description": "Events KPIs",
+ "items": {
+ "type": "object",
+ "$ref": "#/definitions/eventskpi"
+ }
+ },
+ "functions": {
+ "type": "array",
+ "description": "Functions KPIs",
+ "items": {
+ "type": "object",
+ "$ref": "#/definitions/functionskpi"
+ }
+ },
+ "states": {
+ "type": "array",
+ "description": "States KPIs",
+ "items": {
+ "type": "object",
+ "$ref": "#/definitions/stateskpi"
+ }
+ },
+ "workflow": {
+ "description": "Workflow KPIs",
+ "$ref": "#/definitions/workflowkpi"
+ }
+ },
+ "required": [
+ "extensionid",
+ "workflowid"
+ ]
+ },
+ "eventskpi": {
+ "type": "object",
+ "properties": {
+ "for": {
+ "type": "string",
+ "description": "References an unique event name in the defined workflow events"
+ },
+ "per": {
+ "description": "Define the kpi thresholds in terms of time and/or num of workflow instances",
+ "$ref": "#/definitions/thresholds"
+ },
+ "maxConsumed": {
+ "type": "string",
+ "description": "If event kind is 'consumed', the max amount of times this event is consumed"
+ },
+ "minConsumed": {
+ "type": "string",
+ "description": "If event kind is 'consumed', the min amount of times this event is consumed"
+ },
+ "avgConsumed": {
+ "type": "string",
+ "description": "If event kind is 'consumed', the avg amount of times this event is consumed"
+ },
+ "maxProduced": {
+ "type": "string",
+ "description": "If event kind is 'produced', the max amount of times this event is produced"
+ },
+ "minProduced": {
+ "type": "string",
+ "description": "If event kind is 'produced', the min amount times this event is produced"
+ },
+ "avgProduced": {
+ "type": "string",
+ "description": "If event kind is 'produced', the avg amount of times this event is produced"
+ }
+ },
+ "required": [
+ "for",
+ "per"
+ ]
+ },
+ "functionskpi": {
+ "type": "object",
+ "allOf": [
+ {
+ "properties": {
+ "for": {
+ "type": "string",
+ "description": "References an unique function name in the defined workflow functions"
+ },
+ "per": {
+ "description": "Define the kpi thresholds in terms of time and/or num of workflow instances",
+ "$ref": "#/definitions/thresholds"
+ },
+ "maxErrors": {
+ "type": "string",
+ "description": "Max number of errors during function invocation"
+ },
+ "maxRetry": {
+ "type": "string",
+ "description": "Max number of retries done for this function invocation"
+ },
+ "maxTimeout": {
+ "type": "string",
+ "description": "Max number of times the function timeout time was reached"
+ }
+ }
+ },
+ {
+ "$ref": "#/definitions/invocationkpis"
+ },
+ {
+ "$ref": "#/definitions/costkpis"
+ }
+ ],
+ "required": [
+ "for",
+ "per"
+ ]
+ },
+ "stateskpi": {
+ "type": "object",
+ "allOf": [
+ {
+ "properties": {
+ "for": {
+ "type": "string",
+ "description": "References an unique state name in the defined workflow events"
+ },
+ "per": {
+ "description": "Define the kpi thresholds in terms of time and/or num of workflow instances",
+ "$ref": "#/definitions/thresholds"
+ }
+ }
+ },
+ {
+ "$ref": "#/definitions/execkpis"
+ },
+ {
+ "$ref": "#/definitions/durationkpis"
+ },
+ {
+ "$ref": "#/definitions/costkpis"
+ }
+ ],
+ "required": [
+ "for",
+ "per"
+ ]
+ },
+ "workflowkpi": {
+ "type": "object",
+ "allOf": [
+ {
+ "properties": {
+ "per": {
+ "description": "Define the kpi thresholds in terms of time and/or num of workflow instances",
+ "$ref": "#/definitions/thresholds"
+ }
+ }
+ },
+ {
+ "$ref": "#/definitions/invocationkpis"
+ },
+ {
+ "$ref": "#/definitions/durationkpis"
+ },
+ {
+ "$ref": "#/definitions/costkpis"
+ }
+ ],
+ "required": [
+ "per"
+ ]
+ },
+ "thresholds": {
+ "type": "object",
+ "properties": {
+ "time": {
+ "type": "string",
+ "default": "PT1D",
+ "description": "ISO_8601 time. 1 day default"
+ },
+ "instances": {
+ "type": "integer",
+ "minimum": 1,
+ "default": 1,
+ "description": "Number of workflow instances"
+ }
+ },
+ "required": [
+ ]
+ },
+ "costkpis": {
+ "type": "object",
+ "properties": {
+ "maxCost": {
+ "type": "string",
+ "description": "Max cost"
+ },
+ "minCost": {
+ "type": "string",
+ "description": "Min cost"
+ },
+ "avgCost": {
+ "type": "string",
+ "description": "Avg cost"
+ }
+ }
+ },
+ "invocationkpis": {
+ "type": "object",
+ "properties": {
+ "maxInvoked": {
+ "type": "string",
+ "description": "Max number of invocation times"
+ },
+ "minInvoked": {
+ "type": "string",
+ "description": "Min number of invocation times"
+ },
+ "avgInvoked": {
+ "type": "string",
+ "description": "Avg number of invocation times"
+ }
+ }
+ },
+ "durationkpis": {
+ "type": "object",
+ "properties": {
+ "maxDuration": {
+ "type": "string",
+ "description": "ISO 8601. Max duration"
+ },
+ "minDuration": {
+ "type": "string",
+ "description": "ISO 8601. Min duration"
+ },
+ "avgDuration": {
+ "type": "string",
+ "description": "ISO 8601. Avg duration"
+ }
+ }
+ },
+ "execkpis": {
+ "type": "object",
+ "properties": {
+ "maxExec": {
+ "type": "string",
+ "description": "Max exec number"
+ },
+ "minExec": {
+ "type": "string",
+ "description": "Min exec numbe"
+ },
+ "avgExec": {
+ "type": "string",
+ "description": "Avg exec number"
+ }
+ }
+ }
+ }
+}
\ No newline at end of file
diff --git a/public/schemas/0.9/extensions/ratelimiting.json b/public/schemas/0.9/extensions/ratelimiting.json
new file mode 100644
index 0000000..e9ca507
--- /dev/null
+++ b/public/schemas/0.9/extensions/ratelimiting.json
@@ -0,0 +1,73 @@
+{
+ "$id": "https://serverlessworkflow.io/schemas/0.9/extensions/ratelimiting.json",
+ "$schema": "http://json-schema.org/draft-07/schema#",
+ "description": "Serverless Workflow specification - Various workflow rate limiting settings",
+ "type": "object",
+ "definitions": {
+ "ratelimiting": {
+ "type": "object",
+ "description": "Serverless Workflow Rate Limiting Extension",
+ "properties": {
+ "extensionid": {
+ "type": "string",
+ "default": "workflow-ratelimiting-extension",
+ "description": "Extension unique identifier"
+ },
+ "workflowid": {
+ "type": "string",
+ "minLength": 1,
+ "description": "Workflow definition unique identifier (workflow id property)"
+ },
+ "workflowVersions": {
+ "type": "array",
+ "description": "Workflow versions. If not defined, applies to all workflow instances (regardless of their associated workflow version)",
+ "items": {
+ "type": "string"
+ }
+ },
+ "singleInstance": {
+ "description": "Rate Limit settings per single instance of a workflow with provided workflowid",
+ "$ref": "#/definitions/ratelimits"
+ },
+ "allInstances": {
+ "description": "Rate Limit settings across all instance of a workflow with provided workflowid",
+ "$ref": "#/definitions/ratelimits"
+ }
+ },
+ "required": [
+ "extensionid",
+ "workflowid"
+ ]
+ },
+ "ratelimits": {
+ "type": "object",
+ "properties": {
+ "maxActionsPerSecond": {
+ "type": "number",
+ "default": 0,
+ "description": "Sets the rate limiting on number of actions that can be executed per second. Notice that the number is represented as number type, so that you can set it to less than 1 if needed. For example, set the number to 0.1 means workflow actions can be executed once every 10 seconds. Default zero value means 'unlimited'"
+ },
+ "maxConcurrentActions": {
+ "type": "number",
+ "default": 100,
+ "description": "Maximum number of actions that can be executed in parallel"
+ },
+ "maxProducedEventsPerSecond": {
+ "type": "number",
+ "default": 0,
+ "description": "Sets the rate limiting on number of events that can be produced per second. Notice that the number is represented as number type, so that you can set it to less than 1 if needed. For example, set the number to 0.1 means workflow can produce events once every 10 seconds. Default zero value means 'unlimited'"
+ },
+ "maxStates": {
+ "type": "integer",
+ "default": 0,
+ "description": "Maximum number of workflow states that should be executed. Default is zero, meaning unlimited."
+ },
+ "maxTransitions": {
+ "type": "integer",
+ "default": 0,
+ "description": "Maximum number of workflow transitions that should be executed. Default is zero, meaning unlimited."
+ }
+ }
+ }
+ }
+}
\ No newline at end of file
diff --git a/public/schemas/0.9/functions.json b/public/schemas/0.9/functions.json
new file mode 100644
index 0000000..87a6a8a
--- /dev/null
+++ b/public/schemas/0.9/functions.json
@@ -0,0 +1,72 @@
+{
+ "$id": "https://serverlessworkflow.io/schemas/0.9/functions.json",
+ "$schema": "http://json-schema.org/draft-07/schema#",
+ "description": "Serverless Workflow specification - functions schema",
+ "type": "object",
+ "functions": {
+ "oneOf": [
+ {
+ "type": "string",
+ "format": "uri",
+ "description": "URI to a resource containing function definitions (json or yaml)"
+ },
+ {
+ "type": "array",
+ "description": "Workflow function definitions",
+ "items": {
+ "type": "object",
+ "$ref": "#/definitions/function"
+ },
+ "additionalItems": false,
+ "minItems": 1
+ }
+ ]
+ },
+ "required": [
+ "functions"
+ ],
+ "definitions": {
+ "function": {
+ "type": "object",
+ "properties": {
+ "name": {
+ "type": "string",
+ "description": "Unique function name",
+ "minLength": 1
+ },
+ "operation": {
+ "type": "string",
+ "description": "If type is `rest`, #. If type is `asyncapi`, #. If type is `rpc`, ##. If type is `graphql`, ##. If type is `odata`, #. If type is `expression`, defines the workflow expression.",
+ "minLength": 1
+ },
+ "type": {
+ "type": "string",
+ "description": "Defines the function type. Is either `rest`, `asyncapi, `rpc`, `graphql`, `odata`, `expression`, or `custom`. Default is `rest`",
+ "enum": [
+ "rest",
+ "asyncapi",
+ "rpc",
+ "graphql",
+ "odata",
+ "expression",
+ "custom"
+ ],
+ "default": "rest"
+ },
+ "authRef": {
+ "type": "string",
+ "description": "References an auth definition name to be used to access to resource defined in the operation parameter",
+ "minLength": 1
+ },
+ "metadata": {
+ "$ref": "common.json#/definitions/metadata"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "name",
+ "operation"
+ ]
+ }
+ }
+}
\ No newline at end of file
diff --git a/public/schemas/0.9/odata.json b/public/schemas/0.9/odata.json
new file mode 100644
index 0000000..79df36e
--- /dev/null
+++ b/public/schemas/0.9/odata.json
@@ -0,0 +1,81 @@
+{
+ "$id": "https://serverlessworkflow.io/schemas/0.9/odata.json",
+ "$schema": "http://json-schema.org/draft-07/schema#",
+ "description": "Serverless Workflow specification - OData command options schema",
+ "type": "object",
+ "key": {
+ "type": "string",
+ "description": "The unique identifier of the single entry to query",
+ "minLength": 1
+ },
+ "queryOptions":{
+ "$ref": "#/definitions/queryoptions"
+ },
+ "definitions": {
+ "queryoptions": {
+ "type": "object",
+ "properties": {
+ "filter": {
+ "type": "string",
+ "description": "The $filter system query option allows clients to filter the set of resources that are addressed by a request URL. $filter specifies conditions that MUST be met by a resource for it to be returned in the set of matching resources",
+ "minLength": 1
+ },
+ "expand": {
+ "type": "string",
+ "description": "The $expand system query option allows clients to request related resources when a resource that satisfies a particular request is retrieved",
+ "minLength": 1
+ },
+ "select": {
+ "type": "string",
+ "description": "The $select system query option allows clients to requests a limited set of information for each entity or complex type identified by the ResourcePath and other System Query Options like $filter, $top, $skip etc. The $select query option is often used in conjunction with the $expand query option, to first increase the scope of the resource graph returned ($expand) and then selectively prune that resource graph ($select)",
+ "minLength": 1
+ },
+ "orderBy": {
+ "type": "string",
+ "description": "The $orderby system query option allows clients to request resource in a particular order",
+ "minLength": 1
+ },
+ "top": {
+ "type": "integer",
+ "description": "The $top system query option allows clients a required number of resources. Usually used in conjunction with the $skip query options",
+ "minLength": 1
+ },
+ "skip": {
+ "type": "integer",
+ "description": "The $skip system query option allows clients to skip a given number of resources. Usually used in conjunction with the $top query options",
+ "minLength": 1
+ },
+ "count": {
+ "type": "boolean",
+ "description": "The $count system query option allows clients to request a count of the matching resources included with the resources in the response"
+ },
+ "search": {
+ "type": "string",
+ "description": "The $search system query option allows clients to request items within a collection matching a free-text search expression",
+ "minLength": 1
+ },
+ "format": {
+ "type": "string",
+ "description": "The $format system query option if supported allows clients to request a response in a particular format",
+ "minLength": 1
+ },
+ "compute": {
+ "type": "string",
+ "description": "The $compute system query option allows clients to define computed properties that can be used in a $select or within a $filter or $orderby expression.",
+ "minLength": 1
+ },
+ "index": {
+ "type": "string",
+ "description": "The $index system query option allows clients to do a positional insert into a collection annotated with using the Core.PositionalInsert term (see http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part2-url-conventions.html#VocCore)",
+ "minLength": 1
+ },
+ "schemaVersion": {
+ "type": "string",
+ "description": "The $schemaversion system query option allows clients to specify the version of the schema against which the request is made. The semantics of $schemaversion is covered in the OData-Protocol (http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part2-url-conventions.html#odata) document.",
+ "minLength": 1
+ }
+ },
+ "additionalProperties": false
+ }
+ }
+}
\ No newline at end of file
diff --git a/public/schemas/0.9/retries.json b/public/schemas/0.9/retries.json
new file mode 100644
index 0000000..6b76afb
--- /dev/null
+++ b/public/schemas/0.9/retries.json
@@ -0,0 +1,85 @@
+{
+ "$id": "https://serverlessworkflow.io/schemas/0.9/retries.json",
+ "$schema": "http://json-schema.org/draft-07/schema#",
+ "description": "Serverless Workflow specification - retries schema",
+ "type": "object",
+ "retries": {
+ "oneOf": [
+ {
+ "type": "string",
+ "format": "uri",
+ "description": "URI to a resource containing retry definitions (json or yaml)"
+ },
+ {
+ "type": "array",
+ "description": "Workflow Retry definitions. Define retry strategies that can be referenced in states onError definitions",
+ "items": {
+ "type": "object",
+ "$ref": "#/definitions/retrydef"
+ },
+ "additionalItems": false,
+ "minItems": 1
+ }
+ ]
+ },
+ "required": [
+ "retries"
+ ],
+ "definitions": {
+ "retrydef": {
+ "type": "object",
+ "properties": {
+ "name": {
+ "type": "string",
+ "description": "Unique retry strategy name",
+ "minLength": 1
+ },
+ "delay": {
+ "type": "string",
+ "description": "Time delay between retry attempts (ISO 8601 duration format)"
+ },
+ "maxDelay": {
+ "type": "string",
+ "description": "Maximum time delay between retry attempts (ISO 8601 duration format)"
+ },
+ "increment": {
+ "type": "string",
+ "description": "Static value by which the delay increases during each attempt (ISO 8601 time format)"
+ },
+ "multiplier": {
+ "type": [
+ "number",
+ "string"
+ ],
+ "minimum": 0,
+ "minLength": 1,
+ "multipleOf": 0.01,
+ "description": "Numeric value, if specified the delay between retries is multiplied by this value."
+ },
+ "maxAttempts": {
+ "type": [
+ "number",
+ "string"
+ ],
+ "minimum": 1,
+ "minLength": 0,
+ "description": "Maximum number of retry attempts."
+ },
+ "jitter": {
+ "type": [
+ "number",
+ "string"
+ ],
+ "minimum": 0,
+ "maximum": 1,
+ "description": "If float type, maximum amount of random time added or subtracted from the delay between each retry relative to total delay (between 0 and 1). If string type, absolute maximum amount of random time added or subtracted from the delay between each retry (ISO 8601 duration format)"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "name",
+ "maxAttempts"
+ ]
+ }
+ }
+}
\ No newline at end of file
diff --git a/public/schemas/0.9/secrets.json b/public/schemas/0.9/secrets.json
new file mode 100644
index 0000000..dec1c0c
--- /dev/null
+++ b/public/schemas/0.9/secrets.json
@@ -0,0 +1,26 @@
+{
+ "$id": "https://serverlessworkflow.io/schemas/0.9/secrets.json",
+ "$schema": "http://json-schema.org/draft-07/schema#",
+ "description": "Serverless Workflow specification - secrets schema",
+ "type": "object",
+ "secrets": {
+ "oneOf": [
+ {
+ "type": "string",
+ "format": "uri",
+ "description": "URI to a resource containing secrets definitions (json or yaml)"
+ },
+ {
+ "type": "array",
+ "description": "Workflow Secrets definitions",
+ "items": {
+ "type": "string"
+ },
+ "minItems": 1
+ }
+ ]
+ },
+ "required": [
+ "secrets"
+ ]
+}
\ No newline at end of file
diff --git a/public/schemas/0.9/timeouts.json b/public/schemas/0.9/timeouts.json
new file mode 100644
index 0000000..30ff3c1
--- /dev/null
+++ b/public/schemas/0.9/timeouts.json
@@ -0,0 +1,96 @@
+{
+ "$id": "https://serverlessworkflow.io/schemas/0.9/timeouts.json",
+ "$schema": "http://json-schema.org/draft-07/schema#",
+ "description": "Serverless Workflow specification - functions schema",
+ "type": "object",
+ "timeouts": {
+ "oneOf": [
+ {
+ "type": "string",
+ "format": "uri",
+ "description": "URI to a resource containing timeouts definitions (json or yaml)"
+ },
+ {
+ "type": "object",
+ "description": "Workflow default timeouts",
+ "properties": {
+ "workflowExecTimeout": {
+ "$ref": "#/definitions/workflowExecTimeout"
+ },
+ "stateExecTimeout": {
+ "$ref": "#/definitions/stateExecTimeout"
+ },
+ "actionExecTimeout": {
+ "$ref": "#/definitions/actionExecTimeout"
+ },
+ "branchExecTimeout": {
+ "$ref": "#/definitions/branchExecTimeout"
+ },
+ "eventTimeout": {
+ "$ref": "#/definitions/eventTimeout"
+ }
+ },
+ "additionalProperties": false,
+ "required": []
+ }
+ ]
+ },
+ "required": [
+ "timeouts"
+ ],
+ "definitions": {
+ "workflowExecTimeout": {
+ "oneOf": [
+ {
+ "type": "string",
+ "description": "Workflow execution timeout duration (ISO 8601 duration format). If not specified should be 'unlimited'",
+ "minLength": 1
+ },
+ {
+ "type": "object",
+ "properties": {
+ "duration": {
+ "type": "string",
+ "description": "Workflow execution timeout duration (ISO 8601 duration format). If not specified should be 'unlimited'",
+ "minLength": 1
+ },
+ "interrupt": {
+ "type": "boolean",
+ "description": "If `false`, workflow instance is allowed to finish current execution. If `true`, current workflow execution is abrupted.",
+ "default": true
+ },
+ "runBefore": {
+ "type": "string",
+ "description": "Name of a workflow state to be executed before workflow instance is terminated",
+ "minLength": 1
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "duration"
+ ]
+ }
+ ]
+ },
+ "stateExecTimeout": {
+ "type": "string",
+ "description": "Workflow state execution timeout duration (ISO 8601 duration format)",
+ "minLength": 1
+ },
+ "actionExecTimeout": {
+ "type": "string",
+ "description": "Action execution timeout duration (ISO 8601 duration format)",
+ "minLength": 1
+ },
+ "branchExecTimeout": {
+ "type": "string",
+ "description": "Branch execution timeout duration (ISO 8601 duration format)",
+ "minLength": 1
+ },
+ "eventTimeout": {
+ "type": "string",
+ "description": "Timeout duration to wait for consuming defined events (ISO 8601 duration format)",
+ "minLength": 1
+ }
+ }
+}
\ No newline at end of file
diff --git a/public/schemas/0.9/workflow.json b/public/schemas/0.9/workflow.json
new file mode 100644
index 0000000..455135d
--- /dev/null
+++ b/public/schemas/0.9/workflow.json
@@ -0,0 +1,1897 @@
+{
+ "$id": "https://serverlessworkflow.io/schemas/0.9/workflow.json",
+ "$schema": "http://json-schema.org/draft-07/schema#",
+ "description": "Serverless Workflow specification - workflow schema",
+ "type": "object",
+ "properties": {
+ "id": {
+ "type": "string",
+ "description": "Workflow unique identifier",
+ "minLength": 1
+ },
+ "key": {
+ "type": "string",
+ "description": "Domain-specific workflow identifier",
+ "minLength": 1
+ },
+ "name": {
+ "type": "string",
+ "description": "Workflow name",
+ "minLength": 1
+ },
+ "description": {
+ "type": "string",
+ "description": "Workflow description"
+ },
+ "version": {
+ "type": "string",
+ "description": "Workflow version",
+ "minLength": 1
+ },
+ "annotations": {
+ "type": "array",
+ "description": "List of helpful terms describing the workflows intended purpose, subject areas, or other important qualities",
+ "minItems": 1,
+ "items": {
+ "type": "string"
+ },
+ "additionalItems": false
+ },
+ "dataInputSchema": {
+ "oneOf": [
+ {
+ "type": "string",
+ "description": "URI of the JSON Schema used to validate the workflow data input",
+ "minLength": 1
+ },
+ {
+ "type": "object",
+ "description": "Workflow data input schema definition",
+ "properties": {
+ "schema": {
+ "oneof":[
+ {
+ "type": "string",
+ "description": "URI of the JSON Schema used to validate the workflow data input",
+ "minLength": 1
+ },
+ {
+ "type": "object",
+ "description": "The JSON Schema object used to validate the workflow data input",
+ "$schema": "http://json-schema.org/draft-07/schema#"
+ }
+ ]
+ },
+ "failOnValidationErrors": {
+ "type": "boolean",
+ "default": true,
+ "description": "Determines if workflow execution should continue if there are validation errors"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "schema"
+ ]
+ }
+ ]
+ },
+ "secrets": {
+ "$ref": "secrets.json#/secrets"
+ },
+ "constants": {
+ "oneOf": [
+ {
+ "type": "string",
+ "format": "uri",
+ "description": "URI to a resource containing constants data (json or yaml)"
+ },
+ {
+ "type": "object",
+ "description": "Workflow constants data (object type)"
+ }
+ ]
+ },
+ "start": {
+ "$ref": "#/definitions/startdef"
+ },
+ "specVersion": {
+ "type": "string",
+ "description": "Serverless Workflow schema version",
+ "minLength": 1
+ },
+ "expressionLang": {
+ "type": "string",
+ "description": "Identifies the expression language used for workflow expressions. Default is 'jq'",
+ "default": "jq",
+ "minLength": 1
+ },
+ "timeouts": {
+ "$ref": "timeouts.json#/timeouts"
+ },
+ "errors": {
+ "$ref": "errors.json#/errors"
+ },
+ "keepActive": {
+ "type": "boolean",
+ "default": false,
+ "description": "If 'true', workflow instances is not terminated when there are no active execution paths. Instance can be terminated via 'terminate end definition' or reaching defined 'workflowExecTimeout'"
+ },
+ "metadata": {
+ "$ref": "common.json#/definitions/metadata"
+ },
+ "events": {
+ "$ref": "events.json#/events"
+ },
+ "functions": {
+ "$ref": "functions.json#/functions"
+ },
+ "autoRetries": {
+ "type": "boolean",
+ "default": false,
+ "description": "If set to true, actions should automatically be retried on unchecked errors. Default is false"
+ },
+ "retries": {
+ "$ref": "retries.json#/retries"
+ },
+ "auth": {
+ "$ref": "auth.json#/auth"
+ },
+ "extensions": {
+ "$ref": "workflowextensions.json#/extensions"
+ },
+ "states": {
+ "type": "array",
+ "description": "State definitions",
+ "items": {
+ "anyOf": [
+ {
+ "title": "Sleep State",
+ "$ref": "#/definitions/sleepstate"
+ },
+ {
+ "title": "Event State",
+ "$ref": "#/definitions/eventstate"
+ },
+ {
+ "title": "Operation State",
+ "$ref": "#/definitions/operationstate"
+ },
+ {
+ "title": "Parallel State",
+ "$ref": "#/definitions/parallelstate"
+ },
+ {
+ "title": "Switch State",
+ "$ref": "#/definitions/switchstate"
+ },
+ {
+ "title": "Inject State",
+ "$ref": "#/definitions/injectstate"
+ },
+ {
+ "title": "ForEach State",
+ "$ref": "#/definitions/foreachstate"
+ },
+ {
+ "title": "Callback State",
+ "$ref": "#/definitions/callbackstate"
+ }
+ ]
+ },
+ "additionalItems": false,
+ "minItems": 1
+ }
+ },
+ "oneOf": [
+ {
+ "required": [
+ "id",
+ "specVersion",
+ "states"
+ ]
+ },
+ {
+ "required": [
+ "key",
+ "specVersion",
+ "states"
+ ]
+ }
+ ],
+ "definitions": {
+ "sleep": {
+ "type": "object",
+ "properties": {
+ "before": {
+ "type": "string",
+ "description": "Amount of time (ISO 8601 duration format) to sleep before function/subflow invocation. Does not apply if 'eventRef' is defined."
+ },
+ "after": {
+ "type": "string",
+ "description": "Amount of time (ISO 8601 duration format) to sleep after function/subflow invocation. Does not apply if 'eventRef' is defined."
+ }
+ },
+ "oneOf": [
+ {
+ "required": [
+ "before"
+ ]
+ },
+ {
+ "required": [
+ "after"
+ ]
+ },
+ {
+ "required": [
+ "before",
+ "after"
+ ]
+ }
+ ]
+ },
+ "crondef": {
+ "oneOf": [
+ {
+ "type": "string",
+ "description": "Cron expression defining when workflow instances should be created (automatically)",
+ "minLength": 1
+ },
+ {
+ "type": "object",
+ "properties": {
+ "expression": {
+ "type": "string",
+ "description": "Repeating interval (cron expression) describing when the workflow instance should be created",
+ "minLength": 1
+ },
+ "validUntil": {
+ "type": "string",
+ "description": "Specific date and time (ISO 8601 format) when the cron expression invocation is no longer valid"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "expression"
+ ]
+ }
+ ]
+ },
+ "continueasdef": {
+ "oneOf": [
+ {
+ "type": "string",
+ "description": "Unique id of the workflow to be continue execution as. Entire state data is passed as data input to next execution",
+ "minLength": 1
+ },
+ {
+ "type": "object",
+ "properties": {
+ "workflowId": {
+ "type": "string",
+ "description": "Unique id of the workflow to continue execution as"
+ },
+ "version": {
+ "type": "string",
+ "description": "Version of the workflow to continue execution as",
+ "minLength": 1
+ },
+ "data": {
+ "type": [
+ "string",
+ "object"
+ ],
+ "description": "If string type, an expression which selects parts of the states data output to become the workflow data input of continued execution. If object type, a custom object to become the workflow data input of the continued execution"
+ },
+ "workflowExecTimeout": {
+ "$ref": "timeouts.json#/definitions/workflowExecTimeout",
+ "description": "Workflow execution timeout to be used by the workflow continuing execution. Overwrites any specific settings set by that workflow"
+ }
+ },
+ "required": [
+ "workflowId"
+ ]
+ }
+ ]
+ },
+ "transition": {
+ "oneOf": [
+ {
+ "type": "string",
+ "description": "Name of state to transition to",
+ "minLength": 1
+ },
+ {
+ "type": "object",
+ "description": "Function Reference",
+ "properties": {
+ "nextState": {
+ "type": "string",
+ "description": "Name of state to transition to",
+ "minLength": 1
+ },
+ "produceEvents": {
+ "type": "array",
+ "description": "Array of events to be produced before the transition happens",
+ "items": {
+ "type": "object",
+ "$ref": "#/definitions/produceeventdef"
+ },
+ "additionalItems": false
+ },
+ "compensate": {
+ "type": "boolean",
+ "default": false,
+ "description": "If set to true, triggers workflow compensation when before this transition is taken. Default is false"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "nextState"
+ ]
+ }
+ ]
+ },
+ "error": {
+ "type": "object",
+ "properties": {
+ "errorRef": {
+ "type": "string",
+ "description": "Reference to a unique workflow error definition. Used of errorRefs is not used",
+ "minLength": 1
+ },
+ "errorRefs": {
+ "type": "array",
+ "description": "References one or more workflow error definitions. Used if errorRef is not used",
+ "minItems": 1,
+ "items": {
+ "type": "string"
+ },
+ "additionalItems": false
+ },
+ "transition": {
+ "description": "Transition to next state to handle the error.",
+ "$ref": "#/definitions/transition"
+ },
+ "end": {
+ "description": "End workflow execution in case of this error.",
+ "$ref": "#/definitions/end"
+ }
+ },
+ "additionalProperties": false,
+ "oneOf": [
+ {
+ "required": [
+ "errorRef",
+ "transition"
+ ]
+ },
+ {
+ "required": [
+ "errorRef",
+ "end"
+ ]
+ },
+ {
+ "required": [
+ "errorRefs",
+ "transition"
+ ]
+ },
+ {
+ "required": [
+ "errorRefs",
+ "end"
+ ]
+ }
+ ]
+ },
+ "onevents": {
+ "type": "object",
+ "properties": {
+ "eventRefs": {
+ "type": "array",
+ "description": "References one or more unique event names in the defined workflow events",
+ "minItems": 1,
+ "items": {
+ "type": "string"
+ },
+ "uniqueItems": true,
+ "additionalItems": false
+ },
+ "actionMode": {
+ "type": "string",
+ "enum": [
+ "sequential",
+ "parallel"
+ ],
+ "description": "Specifies how actions are to be performed (in sequence or in parallel)",
+ "default": "sequential"
+ },
+ "actions": {
+ "type": "array",
+ "description": "Actions to be performed if expression matches",
+ "items": {
+ "type": "object",
+ "$ref": "#/definitions/action"
+ },
+ "additionalItems": false
+ },
+ "eventDataFilter": {
+ "description": "Event data filter",
+ "$ref": "#/definitions/eventdatafilter"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "eventRefs"
+ ]
+ },
+ "action": {
+ "type": "object",
+ "properties": {
+ "name": {
+ "type": "string",
+ "description": "Unique action definition name"
+ },
+ "functionRef": {
+ "description": "References a function to be invoked",
+ "$ref": "#/definitions/functionref"
+ },
+ "eventRef": {
+ "description": "References a 'trigger' and 'result' reusable event definitions",
+ "$ref": "#/definitions/eventref"
+ },
+ "subFlowRef": {
+ "description": "References a sub-workflow to invoke",
+ "$ref": "#/definitions/subflowref"
+ },
+ "sleep": {
+ "description": "Defines time periods workflow execution should sleep before / after function execution",
+ "$ref": "#/definitions/sleep"
+ },
+ "retryRef": {
+ "type": "string",
+ "description": "References a defined workflow retry definition. If not defined the default retry policy is assumed"
+ },
+ "nonRetryableErrors": {
+ "type": "array",
+ "description": "List of unique references to defined workflow errors for which the action should not be retried. Used only when `autoRetries` is set to `true`",
+ "minItems": 1,
+ "items": {
+ "type": "string"
+ },
+ "additionalItems": false
+ },
+ "retryableErrors": {
+ "type": "array",
+ "description": "List of unique references to defined workflow errors for which the action should be retried. Used only when `autoRetries` is set to `false`",
+ "minItems": 1,
+ "items": {
+ "type": "string"
+ },
+ "additionalItems": false
+ },
+ "actionDataFilter": {
+ "description": "Action data filter",
+ "$ref": "#/definitions/actiondatafilter"
+ },
+ "condition": {
+ "description": "Expression, if defined, must evaluate to true for this action to be performed. If false, action is disregarded",
+ "type": "string",
+ "minLength": 1
+ }
+ },
+ "additionalProperties": false,
+ "oneOf": [
+ {
+ "required": [
+ "functionRef"
+ ]
+ },
+ {
+ "required": [
+ "eventRef"
+ ]
+ },
+ {
+ "required": [
+ "subFlowRef"
+ ]
+ }
+ ]
+ },
+ "functionref": {
+ "oneOf": [
+ {
+ "type": "string",
+ "description": "Name of the referenced function",
+ "minLength": 1
+ },
+ {
+ "type": "object",
+ "description": "Function Reference",
+ "properties": {
+ "refName": {
+ "type": "string",
+ "description": "Name of the referenced function"
+ },
+ "arguments": {
+ "type": "object",
+ "description": "Function arguments/inputs"
+ },
+ "selectionSet": {
+ "type": "string",
+ "description": "Only used if function type is 'graphql'. A string containing a valid GraphQL selection set"
+ },
+ "invoke": {
+ "type": "string",
+ "enum": [
+ "sync",
+ "async"
+ ],
+ "description": "Specifies if the function should be invoked sync or async",
+ "default": "sync"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "refName"
+ ]
+ }
+ ]
+ },
+ "eventref": {
+ "type": "object",
+ "description": "Event References",
+ "properties": {
+ "produceEventRef": {
+ "type": "string",
+ "description": "Reference to the unique name of a 'produced' event definition"
+ },
+ "consumeEventRef": {
+ "type": "string",
+ "description": "Reference to the unique name of a 'consumed' event definition"
+ },
+ "consumeEventTimeout": {
+ "type": "string",
+ "description": "Maximum amount of time (ISO 8601 format) to wait for the result event. If not defined it should default to the actionExecutionTimeout"
+ },
+ "data": {
+ "type": [
+ "string",
+ "object"
+ ],
+ "description": "If string type, an expression which selects parts of the states data output to become the data (payload) of the event referenced by 'produceEventRef'. If object type, a custom object to become the data (payload) of the event referenced by 'produceEventRef'."
+ },
+ "contextAttributes": {
+ "type": "object",
+ "description": "Add additional extension context attributes to the produced event",
+ "additionalProperties": {
+ "type": "string"
+ }
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "produceEventRef"
+ ]
+ },
+ "subflowref": {
+ "oneOf": [
+ {
+ "type": "string",
+ "description": "Unique id of the sub-workflow to be invoked",
+ "minLength": 1
+ },
+ {
+ "type": "object",
+ "description": "Specifies a sub-workflow to be invoked",
+ "properties": {
+ "workflowId": {
+ "type": "string",
+ "description": "Unique id of the sub-workflow to be invoked"
+ },
+ "version": {
+ "type": "string",
+ "description": "Version of the sub-workflow to be invoked",
+ "minLength": 1
+ },
+ "onParentComplete": {
+ "type": "string",
+ "enum": [
+ "continue",
+ "terminate"
+ ],
+ "description": "If invoke is 'async', specifies how subflow execution should behave when parent workflow completes. Default is 'terminate'",
+ "default": "terminate"
+ },
+ "invoke": {
+ "type": "string",
+ "enum": [
+ "sync",
+ "async"
+ ],
+ "description": "Specifies if the subflow should be invoked sync or async",
+ "default": "sync"
+ }
+ },
+ "required": [
+ "workflowId"
+ ]
+ }
+ ]
+ },
+ "branch": {
+ "type": "object",
+ "description": "Branch Definition",
+ "properties": {
+ "name": {
+ "type": "string",
+ "description": "Branch name"
+ },
+ "timeouts": {
+ "type": "object",
+ "description": "State specific timeouts",
+ "properties": {
+ "actionExecTimeout": {
+ "$ref": "timeouts.json#/definitions/actionExecTimeout"
+ },
+ "branchExecTimeout": {
+ "$ref": "timeouts.json#/definitions/branchExecTimeout"
+ }
+ },
+ "required": []
+ },
+ "actions": {
+ "type": "array",
+ "description": "Actions to be executed in this branch",
+ "items": {
+ "type": "object",
+ "$ref": "#/definitions/action"
+ },
+ "additionalItems": false
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "name",
+ "actions"
+ ]
+ },
+ "sleepstate": {
+ "type": "object",
+ "description": "Causes the workflow execution to sleep for a specified duration",
+ "properties": {
+ "name": {
+ "type": "string",
+ "description": "State name"
+ },
+ "type": {
+ "type": "string",
+ "const": "sleep",
+ "description": "State type"
+ },
+ "end": {
+ "$ref": "#/definitions/end",
+ "description": "State end definition"
+ },
+ "duration": {
+ "type": "string",
+ "description": "Duration (ISO 8601 duration format) to sleep"
+ },
+ "transition": {
+ "description": "Next transition of the workflow after the workflow sleep",
+ "$ref": "#/definitions/transition"
+ },
+ "metadata": {
+ "$ref": "common.json#/definitions/metadata"
+ }
+ },
+ "additionalProperties": false,
+ "oneOf": [
+ {
+ "required": [
+ "name",
+ "type",
+ "duration",
+ "end"
+ ]
+ },
+ {
+ "required": [
+ "name",
+ "type",
+ "duration",
+ "transition"
+ ]
+ }
+ ]
+ },
+ "eventstate": {
+ "type": "object",
+ "description": "This state is used to wait for events from event sources, then consumes them and invoke one or more actions to run in sequence or parallel",
+ "properties": {
+ "name": {
+ "type": "string",
+ "description": "State name"
+ },
+ "type": {
+ "type": "string",
+ "const": "event",
+ "description": "State type"
+ },
+ "exclusive": {
+ "type": "boolean",
+ "default": true,
+ "description": "If true consuming one of the defined events causes its associated actions to be performed. If false all of the defined events must be consumed in order for actions to be performed"
+ },
+ "onEvents": {
+ "type": "array",
+ "description": "Define the events to be consumed and optional actions to be performed",
+ "items": {
+ "type": "object",
+ "$ref": "#/definitions/onevents"
+ },
+ "additionalItems": false
+ },
+ "timeouts": {
+ "type": "object",
+ "description": "State specific timeouts",
+ "properties": {
+ "stateExecTimeout": {
+ "$ref": "timeouts.json#/definitions/stateExecTimeout"
+ },
+ "actionExecTimeout": {
+ "$ref": "timeouts.json#/definitions/actionExecTimeout"
+ },
+ "eventTimeout": {
+ "$ref": "timeouts.json#/definitions/eventTimeout"
+ }
+ },
+ "required": []
+ },
+ "stateDataFilter": {
+ "description": "State data filter",
+ "$ref": "#/definitions/statedatafilter"
+ },
+ "onErrors": {
+ "type": "array",
+ "description": "States error handling definitions",
+ "items": {
+ "type": "object",
+ "$ref": "#/definitions/error"
+ },
+ "additionalItems": false
+ },
+ "transition": {
+ "description": "Next transition of the workflow after all the actions have been performed",
+ "$ref": "#/definitions/transition"
+ },
+ "end": {
+ "$ref": "#/definitions/end",
+ "description": "State end definition"
+ },
+ "compensatedBy": {
+ "type": "string",
+ "minLength": 1,
+ "description": "Unique Name of a workflow state which is responsible for compensation of this state"
+ },
+ "metadata": {
+ "$ref": "common.json#/definitions/metadata"
+ }
+ },
+ "additionalProperties": false,
+ "oneOf": [
+ {
+ "required": [
+ "name",
+ "type",
+ "onEvents",
+ "end"
+ ]
+ },
+ {
+ "required": [
+ "name",
+ "type",
+ "onEvents",
+ "transition"
+ ]
+ }
+ ]
+ },
+ "operationstate": {
+ "type": "object",
+ "description": "Defines actions be performed. Does not wait for incoming events",
+ "properties": {
+ "name": {
+ "type": "string",
+ "description": "State name"
+ },
+ "type": {
+ "type": "string",
+ "const": "operation",
+ "description": "State type"
+ },
+ "end": {
+ "$ref": "#/definitions/end",
+ "description": "State end definition"
+ },
+ "stateDataFilter": {
+ "description": "State data filter",
+ "$ref": "#/definitions/statedatafilter"
+ },
+ "actionMode": {
+ "type": "string",
+ "enum": [
+ "sequential",
+ "parallel"
+ ],
+ "description": "Specifies whether actions are performed in sequence or in parallel",
+ "default": "sequential"
+ },
+ "actions": {
+ "type": "array",
+ "description": "Actions to be performed",
+ "items": {
+ "type": "object",
+ "$ref": "#/definitions/action"
+ }
+ },
+ "timeouts": {
+ "type": "object",
+ "description": "State specific timeouts",
+ "properties": {
+ "stateExecTimeout": {
+ "$ref": "timeouts.json#/definitions/stateExecTimeout"
+ },
+ "actionExecTimeout": {
+ "$ref": "timeouts.json#/definitions/actionExecTimeout"
+ }
+ },
+ "required": []
+ },
+ "onErrors": {
+ "type": "array",
+ "description": "States error handling definitions",
+ "items": {
+ "type": "object",
+ "$ref": "#/definitions/error"
+ },
+ "additionalItems": false
+ },
+ "transition": {
+ "description": "Next transition of the workflow after all the actions have been performed",
+ "$ref": "#/definitions/transition"
+ },
+ "compensatedBy": {
+ "type": "string",
+ "minLength": 1,
+ "description": "Unique Name of a workflow state which is responsible for compensation of this state"
+ },
+ "usedForCompensation": {
+ "type": "boolean",
+ "default": false,
+ "description": "If true, this state is used to compensate another state. Default is false"
+ },
+ "metadata": {
+ "$ref": "common.json#/definitions/metadata"
+ }
+ },
+ "additionalProperties": false,
+ "if": {
+ "properties": {
+ "usedForCompensation": {
+ "const": true
+ }
+ },
+ "required": [
+ "usedForCompensation"
+ ]
+ },
+ "then": {
+ "required": [
+ "name",
+ "type",
+ "actions"
+ ]
+ },
+ "else": {
+ "oneOf": [
+ {
+ "required": [
+ "name",
+ "type",
+ "actions",
+ "end"
+ ]
+ },
+ {
+ "required": [
+ "name",
+ "type",
+ "actions",
+ "transition"
+ ]
+ }
+ ]
+ }
+ },
+ "parallelstate": {
+ "type": "object",
+ "description": "Consists of a number of states that are executed in parallel",
+ "properties": {
+ "name": {
+ "type": "string",
+ "description": "State name"
+ },
+ "type": {
+ "type": "string",
+ "const": "parallel",
+ "description": "State type"
+ },
+ "end": {
+ "$ref": "#/definitions/end",
+ "description": "State end definition"
+ },
+ "stateDataFilter": {
+ "description": "State data filter",
+ "$ref": "#/definitions/statedatafilter"
+ },
+ "timeouts": {
+ "type": "object",
+ "description": "State specific timeouts",
+ "properties": {
+ "stateExecTimeout": {
+ "$ref": "timeouts.json#/definitions/stateExecTimeout"
+ },
+ "branchExecTimeout": {
+ "$ref": "timeouts.json#/definitions/branchExecTimeout"
+ }
+ },
+ "required": []
+ },
+ "branches": {
+ "type": "array",
+ "description": "Branch Definitions",
+ "items": {
+ "type": "object",
+ "$ref": "#/definitions/branch"
+ },
+ "additionalItems": false
+ },
+ "completionType": {
+ "type": "string",
+ "enum": [
+ "allOf",
+ "atLeast"
+ ],
+ "description": "Option types on how to complete branch execution.",
+ "default": "allOf"
+ },
+ "numCompleted": {
+ "type": [
+ "number",
+ "string"
+ ],
+ "minimum": 0,
+ "minLength": 0,
+ "description": "Used when completionType is set to 'atLeast' to specify the minimum number of branches that must complete before the state will transition."
+ },
+ "onErrors": {
+ "type": "array",
+ "description": "States error handling definitions",
+ "items": {
+ "type": "object",
+ "$ref": "#/definitions/error"
+ },
+ "additionalItems": false
+ },
+ "transition": {
+ "description": "Next transition of the workflow after all branches have completed execution",
+ "$ref": "#/definitions/transition"
+ },
+ "compensatedBy": {
+ "type": "string",
+ "minLength": 1,
+ "description": "Unique Name of a workflow state which is responsible for compensation of this state"
+ },
+ "usedForCompensation": {
+ "type": "boolean",
+ "default": false,
+ "description": "If true, this state is used to compensate another state. Default is false"
+ },
+ "metadata": {
+ "$ref": "common.json#/definitions/metadata"
+ }
+ },
+ "additionalProperties": false,
+ "if": {
+ "properties": {
+ "usedForCompensation": {
+ "const": true
+ }
+ },
+ "required": [
+ "usedForCompensation"
+ ]
+ },
+ "then": {
+ "required": [
+ "name",
+ "type",
+ "branches"
+ ]
+ },
+ "else": {
+ "oneOf": [
+ {
+ "required": [
+ "name",
+ "type",
+ "branches",
+ "end"
+ ]
+ },
+ {
+ "required": [
+ "name",
+ "type",
+ "branches",
+ "transition"
+ ]
+ }
+ ]
+ }
+ },
+ "switchstate": {
+ "oneOf": [
+ {
+ "$ref": "#/definitions/databasedswitchstate"
+ },
+ {
+ "$ref": "#/definitions/eventbasedswitchstate"
+ }
+ ]
+ },
+ "eventbasedswitchstate": {
+ "type": "object",
+ "description": "Permits transitions to other states based on events",
+ "properties": {
+ "name": {
+ "type": "string",
+ "description": "State name"
+ },
+ "type": {
+ "type": "string",
+ "const": "switch",
+ "description": "State type"
+ },
+ "stateDataFilter": {
+ "description": "State data filter",
+ "$ref": "#/definitions/statedatafilter"
+ },
+ "timeouts": {
+ "type": "object",
+ "description": "State specific timeouts",
+ "properties": {
+ "stateExecTimeout": {
+ "$ref": "timeouts.json#/definitions/stateExecTimeout"
+ },
+ "eventTimeout": {
+ "$ref": "timeouts.json#/definitions/eventTimeout"
+ }
+ },
+ "required": []
+ },
+ "eventConditions": {
+ "type": "array",
+ "description": "Defines conditions evaluated against events",
+ "items": {
+ "type": "object",
+ "$ref": "#/definitions/eventcondition"
+ },
+ "additionalItems": false
+ },
+ "onErrors": {
+ "type": "array",
+ "description": "States error handling definitions",
+ "items": {
+ "type": "object",
+ "$ref": "#/definitions/error"
+ },
+ "additionalItems": false
+ },
+ "defaultCondition": {
+ "description": "Default transition of the workflow if there is no matching data conditions. Can include a transition or end definition",
+ "$ref": "#/definitions/defaultconditiondef"
+ },
+ "compensatedBy": {
+ "type": "string",
+ "minLength": 1,
+ "description": "Unique Name of a workflow state which is responsible for compensation of this state"
+ },
+ "usedForCompensation": {
+ "type": "boolean",
+ "default": false,
+ "description": "If true, this state is used to compensate another state. Default is false"
+ },
+ "metadata": {
+ "$ref": "common.json#/definitions/metadata"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "name",
+ "type",
+ "eventConditions",
+ "defaultCondition"
+ ]
+ },
+ "databasedswitchstate": {
+ "type": "object",
+ "description": "Permits transitions to other states based on data conditions",
+ "properties": {
+ "name": {
+ "type": "string",
+ "description": "State name"
+ },
+ "type": {
+ "type": "string",
+ "const": "switch",
+ "description": "State type"
+ },
+ "stateDataFilter": {
+ "description": "State data filter",
+ "$ref": "#/definitions/statedatafilter"
+ },
+ "timeouts": {
+ "type": "object",
+ "description": "State specific timeouts",
+ "properties": {
+ "stateExecTimeout": {
+ "$ref": "timeouts.json#/definitions/stateExecTimeout"
+ }
+ },
+ "required": []
+ },
+ "dataConditions": {
+ "type": "array",
+ "description": "Defines conditions evaluated against state data",
+ "items": {
+ "type": "object",
+ "$ref": "#/definitions/datacondition"
+ },
+ "additionalItems": false
+ },
+ "onErrors": {
+ "type": "array",
+ "description": "States error handling definitions",
+ "items": {
+ "type": "object",
+ "$ref": "#/definitions/error"
+ },
+ "additionalItems": false
+ },
+ "defaultCondition": {
+ "description": "Default transition of the workflow if there is no matching data conditions. Can include a transition or end definition",
+ "$ref": "#/definitions/defaultconditiondef"
+ },
+ "compensatedBy": {
+ "type": "string",
+ "minLength": 1,
+ "description": "Unique Name of a workflow state which is responsible for compensation of this state"
+ },
+ "usedForCompensation": {
+ "type": "boolean",
+ "default": false,
+ "description": "If true, this state is used to compensate another state. Default is false"
+ },
+ "metadata": {
+ "$ref": "common.json#/definitions/metadata"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "name",
+ "type",
+ "dataConditions",
+ "defaultCondition"
+ ]
+ },
+ "defaultconditiondef": {
+ "type": "object",
+ "description": "DefaultCondition definition. Can be either a transition or end definition",
+ "properties": {
+ "transition": {
+ "$ref": "#/definitions/transition"
+ },
+ "end": {
+ "$ref": "#/definitions/end"
+ }
+ },
+ "additionalProperties": false,
+ "oneOf": [
+ {
+ "required": [
+ "transition"
+ ]
+ },
+ {
+ "required": [
+ "end"
+ ]
+ }
+ ]
+ },
+ "eventcondition": {
+ "oneOf": [
+ {
+ "$ref": "#/definitions/transitioneventcondition"
+ },
+ {
+ "$ref": "#/definitions/endeventcondition"
+ }
+ ]
+ },
+ "transitioneventcondition": {
+ "type": "object",
+ "description": "Switch state data event condition",
+ "properties": {
+ "name": {
+ "type": "string",
+ "description": "Event condition name"
+ },
+ "eventRef": {
+ "type": "string",
+ "description": "References an unique event name in the defined workflow events"
+ },
+ "transition": {
+ "description": "Next transition of the workflow if there is valid matches",
+ "$ref": "#/definitions/transition"
+ },
+ "eventDataFilter": {
+ "description": "Event data filter definition",
+ "$ref": "#/definitions/eventdatafilter"
+ },
+ "metadata": {
+ "$ref": "common.json#/definitions/metadata"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "eventRef",
+ "transition"
+ ]
+ },
+ "endeventcondition": {
+ "type": "object",
+ "description": "Switch state data event condition",
+ "properties": {
+ "name": {
+ "type": "string",
+ "description": "Event condition name"
+ },
+ "eventRef": {
+ "type": "string",
+ "description": "References an unique event name in the defined workflow events"
+ },
+ "end": {
+ "$ref": "#/definitions/end",
+ "description": "Explicit transition to end"
+ },
+ "eventDataFilter": {
+ "description": "Event data filter definition",
+ "$ref": "#/definitions/eventdatafilter"
+ },
+ "metadata": {
+ "$ref": "common.json#/definitions/metadata"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "eventRef",
+ "end"
+ ]
+ },
+ "datacondition": {
+ "oneOf": [
+ {
+ "$ref": "#/definitions/transitiondatacondition"
+ },
+ {
+ "$ref": "#/definitions/enddatacondition"
+ }
+ ]
+ },
+ "transitiondatacondition": {
+ "type": "object",
+ "description": "Switch state data based condition",
+ "properties": {
+ "name": {
+ "type": "string",
+ "description": "Data condition name"
+ },
+ "condition": {
+ "type": "string",
+ "description": "Workflow expression evaluated against state data. Must evaluate to true or false"
+ },
+ "transition": {
+ "description": "Workflow transition if condition is evaluated to true",
+ "$ref": "#/definitions/transition"
+ },
+ "metadata": {
+ "$ref": "common.json#/definitions/metadata"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "condition",
+ "transition"
+ ]
+ },
+ "enddatacondition": {
+ "type": "object",
+ "description": "Switch state data based condition",
+ "properties": {
+ "name": {
+ "type": "string",
+ "description": "Data condition name"
+ },
+ "condition": {
+ "type": "string",
+ "description": "Workflow expression evaluated against state data. Must evaluate to true or false"
+ },
+ "end": {
+ "$ref": "#/definitions/end",
+ "description": "Workflow end definition"
+ },
+ "metadata": {
+ "$ref": "common.json#/definitions/metadata"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "condition",
+ "end"
+ ]
+ },
+ "injectstate": {
+ "type": "object",
+ "description": "Inject static data into state data. Does not perform any actions",
+ "properties": {
+ "name": {
+ "type": "string",
+ "description": "State name"
+ },
+ "type": {
+ "type": "string",
+ "const": "inject",
+ "description": "State type"
+ },
+ "end": {
+ "$ref": "#/definitions/end",
+ "description": "State end definition"
+ },
+ "data": {
+ "type": "object",
+ "description": "JSON object which can be set as states data input and can be manipulated via filters"
+ },
+ "stateDataFilter": {
+ "description": "State data filter",
+ "$ref": "#/definitions/statedatafilter"
+ },
+ "transition": {
+ "description": "Next transition of the workflow after injection has completed",
+ "$ref": "#/definitions/transition"
+ },
+ "compensatedBy": {
+ "type": "string",
+ "minLength": 1,
+ "description": "Unique Name of a workflow state which is responsible for compensation of this state"
+ },
+ "usedForCompensation": {
+ "type": "boolean",
+ "default": false,
+ "description": "If true, this state is used to compensate another state. Default is false"
+ },
+ "metadata": {
+ "$ref": "common.json#/definitions/metadata"
+ }
+ },
+ "additionalProperties": false,
+ "if": {
+ "properties": {
+ "usedForCompensation": {
+ "const": true
+ }
+ },
+ "required": [
+ "usedForCompensation"
+ ]
+ },
+ "then": {
+ "required": [
+ "name",
+ "type",
+ "data"
+ ]
+ },
+ "else": {
+ "oneOf": [
+ {
+ "required": [
+ "name",
+ "type",
+ "data",
+ "end"
+ ]
+ },
+ {
+ "required": [
+ "name",
+ "type",
+ "data",
+ "transition"
+ ]
+ }
+ ]
+ }
+ },
+ "foreachstate": {
+ "type": "object",
+ "description": "Execute a set of defined actions or workflows for each element of a data array",
+ "properties": {
+ "name": {
+ "type": "string",
+ "description": "State name"
+ },
+ "type": {
+ "type": "string",
+ "const": "foreach",
+ "description": "State type"
+ },
+ "end": {
+ "$ref": "#/definitions/end",
+ "description": "State end definition"
+ },
+ "inputCollection": {
+ "type": "string",
+ "description": "Workflow expression selecting an array element of the states data"
+ },
+ "outputCollection": {
+ "type": "string",
+ "description": "Workflow expression specifying an array element of the states data to add the results of each iteration"
+ },
+ "iterationParam": {
+ "type": "string",
+ "description": "Name of the iteration parameter that can be referenced in actions/workflow. For each parallel iteration, this param should contain an unique element of the inputCollection array"
+ },
+ "batchSize": {
+ "type": [
+ "number",
+ "string"
+ ],
+ "minimum": 0,
+ "minLength": 0,
+ "description": "Specifies how many iterations may run in parallel at the same time. Used if 'mode' property is set to 'parallel' (default)"
+ },
+ "actions": {
+ "type": "array",
+ "description": "Actions to be executed for each of the elements of inputCollection",
+ "items": {
+ "type": "object",
+ "$ref": "#/definitions/action"
+ },
+ "additionalItems": false
+ },
+ "timeouts": {
+ "type": "object",
+ "description": "State specific timeouts",
+ "properties": {
+ "stateExecTimeout": {
+ "$ref": "timeouts.json#/definitions/stateExecTimeout"
+ },
+ "actionExecTimeout": {
+ "$ref": "timeouts.json#/definitions/actionExecTimeout"
+ }
+ },
+ "required": []
+ },
+ "stateDataFilter": {
+ "description": "State data filter",
+ "$ref": "#/definitions/statedatafilter"
+ },
+ "onErrors": {
+ "type": "array",
+ "description": "States error handling definitions",
+ "items": {
+ "type": "object",
+ "$ref": "#/definitions/error"
+ },
+ "additionalItems": false
+ },
+ "transition": {
+ "description": "Next transition of the workflow after state has completed",
+ "$ref": "#/definitions/transition"
+ },
+ "compensatedBy": {
+ "type": "string",
+ "minLength": 1,
+ "description": "Unique Name of a workflow state which is responsible for compensation of this state"
+ },
+ "usedForCompensation": {
+ "type": "boolean",
+ "default": false,
+ "description": "If true, this state is used to compensate another state. Default is false"
+ },
+ "mode": {
+ "type": "string",
+ "enum": [
+ "sequential",
+ "parallel"
+ ],
+ "description": "Specifies how iterations are to be performed (sequentially or in parallel)",
+ "default": "parallel"
+ },
+ "metadata": {
+ "$ref": "common.json#/definitions/metadata"
+ }
+ },
+ "additionalProperties": false,
+ "if": {
+ "properties": {
+ "usedForCompensation": {
+ "const": true
+ }
+ },
+ "required": [
+ "usedForCompensation"
+ ]
+ },
+ "then": {
+ "required": [
+ "name",
+ "type",
+ "inputCollection",
+ "actions"
+ ]
+ },
+ "else": {
+ "oneOf": [
+ {
+ "required": [
+ "name",
+ "type",
+ "inputCollection",
+ "actions",
+ "end"
+ ]
+ },
+ {
+ "required": [
+ "name",
+ "type",
+ "inputCollection",
+ "actions",
+ "transition"
+ ]
+ }
+ ]
+ }
+ },
+ "callbackstate": {
+ "type": "object",
+ "description": "This state performs an action, then waits for the callback event that denotes completion of the action",
+ "properties": {
+ "name": {
+ "type": "string",
+ "description": "State name"
+ },
+ "type": {
+ "type": "string",
+ "const": "callback",
+ "description": "State type"
+ },
+ "action": {
+ "description": "Defines the action to be executed",
+ "$ref": "#/definitions/action"
+ },
+ "eventRef": {
+ "type": "string",
+ "description": "References an unique callback event name in the defined workflow events"
+ },
+ "timeouts": {
+ "type": "object",
+ "description": "State specific timeouts",
+ "properties": {
+ "stateExecTimeout": {
+ "$ref": "timeouts.json#/definitions/stateExecTimeout"
+ },
+ "actionExecTimeout": {
+ "$ref": "timeouts.json#/definitions/actionExecTimeout"
+ },
+ "eventTimeout": {
+ "$ref": "timeouts.json#/definitions/eventTimeout"
+ }
+ },
+ "required": []
+ },
+ "eventDataFilter": {
+ "description": "Event data filter",
+ "$ref": "#/definitions/eventdatafilter"
+ },
+ "stateDataFilter": {
+ "description": "State data filter",
+ "$ref": "#/definitions/statedatafilter"
+ },
+ "onErrors": {
+ "type": "array",
+ "description": "States error handling definitions",
+ "items": {
+ "type": "object",
+ "$ref": "#/definitions/error"
+ },
+ "additionalItems": false
+ },
+ "transition": {
+ "description": "Next transition of the workflow after all the actions have been performed",
+ "$ref": "#/definitions/transition"
+ },
+ "end": {
+ "$ref": "#/definitions/end",
+ "description": "State end definition"
+ },
+ "compensatedBy": {
+ "type": "string",
+ "minLength": 1,
+ "description": "Unique Name of a workflow state which is responsible for compensation of this state"
+ },
+ "usedForCompensation": {
+ "type": "boolean",
+ "default": false,
+ "description": "If true, this state is used to compensate another state. Default is false"
+ },
+ "metadata": {
+ "$ref": "common.json#/definitions/metadata"
+ }
+ },
+ "additionalProperties": false,
+ "if": {
+ "properties": {
+ "usedForCompensation": {
+ "const": true
+ }
+ },
+ "required": [
+ "usedForCompensation"
+ ]
+ },
+ "then": {
+ "required": [
+ "name",
+ "type",
+ "action",
+ "eventRef"
+ ]
+ },
+ "else": {
+ "oneOf": [
+ {
+ "required": [
+ "name",
+ "type",
+ "action",
+ "eventRef",
+ "end"
+ ]
+ },
+ {
+ "required": [
+ "name",
+ "type",
+ "action",
+ "eventRef",
+ "transition"
+ ]
+ }
+ ]
+ }
+ },
+ "startdef": {
+ "oneOf": [
+ {
+ "type": "string",
+ "description": "Name of the starting workflow state",
+ "minLength": 1
+ },
+ {
+ "type": "object",
+ "description": "Workflow start definition",
+ "properties": {
+ "stateName": {
+ "type": "string",
+ "description": "Name of the starting workflow state",
+ "minLength": 1
+ },
+ "schedule": {
+ "description": "Define the time/repeating intervals or cron at which workflow instances should be automatically started.",
+ "$ref": "#/definitions/schedule"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "schedule"
+ ]
+ }
+ ]
+ },
+ "schedule": {
+ "oneOf": [
+ {
+ "type": "string",
+ "description": "Time interval (must be repeating interval) described with ISO 8601 format. Declares when workflow instances will be automatically created. (UTC timezone is assumed)",
+ "minLength": 1
+ },
+ {
+ "type": "object",
+ "description": "Start state schedule definition",
+ "properties": {
+ "interval": {
+ "type": "string",
+ "description": "Time interval (must be repeating interval) described with ISO 8601 format. Declares when workflow instances will be automatically created.",
+ "minLength": 1
+ },
+ "cron": {
+ "$ref": "#/definitions/crondef"
+ },
+ "timezone": {
+ "type": "string",
+ "description": "Timezone name used to evaluate the interval & cron-expression. (default: UTC)"
+ }
+ },
+ "additionalProperties": false,
+ "oneOf": [
+ {
+ "required": [
+ "interval"
+ ]
+ },
+ {
+ "required": [
+ "cron"
+ ]
+ }
+ ]
+ }
+ ]
+ },
+ "end": {
+ "oneOf": [
+ {
+ "type": "boolean",
+ "description": "State end definition",
+ "default": true
+ },
+ {
+ "type": "object",
+ "description": "State end definition",
+ "properties": {
+ "terminate": {
+ "type": "boolean",
+ "default": false,
+ "description": "If true, completes all execution flows in the given workflow instance"
+ },
+ "produceEvents": {
+ "type": "array",
+ "description": "Defines events that should be produced",
+ "items": {
+ "type": "object",
+ "$ref": "#/definitions/produceeventdef"
+ },
+ "additionalItems": false
+ },
+ "compensate": {
+ "type": "boolean",
+ "default": false,
+ "description": "If set to true, triggers workflow compensation. Default is false"
+ },
+ "continueAs": {
+ "$ref": "#/definitions/continueasdef"
+ }
+ },
+ "additionalProperties": false,
+ "required": []
+ }
+ ]
+ },
+ "produceeventdef": {
+ "type": "object",
+ "description": "Produce an event and set its data",
+ "properties": {
+ "eventRef": {
+ "type": "string",
+ "description": "References a name of a defined event"
+ },
+ "data": {
+ "type": [
+ "string",
+ "object"
+ ],
+ "description": "If String, expression which selects parts of the states data output to become the data of the produced event. If object a custom object to become the data of produced event."
+ },
+ "contextAttributes": {
+ "type": "object",
+ "description": "Add additional event extension context attributes",
+ "additionalProperties": {
+ "type": "string"
+ }
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "eventRef"
+ ]
+ },
+ "statedatafilter": {
+ "type": "object",
+ "properties": {
+ "input": {
+ "type": "string",
+ "description": "Workflow expression to filter the state data input"
+ },
+ "output": {
+ "type": "string",
+ "description": "Workflow expression that filters the state data output"
+ }
+ },
+ "additionalProperties": false,
+ "required": []
+ },
+ "eventdatafilter": {
+ "type": "object",
+ "properties": {
+ "useData": {
+ "type": "boolean",
+ "description": "If set to false, event payload is not added/merged to state data. In this case 'data' and 'toStateData' should be ignored. Default is true.",
+ "default": true
+ },
+ "data": {
+ "type": "string",
+ "description": "Workflow expression that filters the received event payload (default: '${ . }')"
+ },
+ "toStateData": {
+ "type": "string",
+ "description": " Workflow expression that selects a state data element to which the filtered event should be added/merged into. If not specified, denotes, the top-level state data element."
+ }
+ },
+ "additionalProperties": false,
+ "required": []
+ },
+ "actiondatafilter": {
+ "type": "object",
+ "properties": {
+ "fromStateData": {
+ "type": "string",
+ "description": "Workflow expression that selects state data that the state action can use"
+ },
+ "useResults": {
+ "type": "boolean",
+ "description": "If set to false, action data results are not added/merged to state data. In this case 'results' and 'toStateData' should be ignored. Default is true.",
+ "default": true
+ },
+ "results": {
+ "type": "string",
+ "description": "Workflow expression that filters the actions data results"
+ },
+ "toStateData": {
+ "type": "string",
+ "description": "Workflow expression that selects a state data element to which the action results should be added/merged into. If not specified, denote, the top-level state data element"
+ }
+ },
+ "additionalProperties": false,
+ "required": []
+ }
+ }
+}
\ No newline at end of file
diff --git a/public/schemas/0.9/workflowextensions.json b/public/schemas/0.9/workflowextensions.json
new file mode 100644
index 0000000..364b543
--- /dev/null
+++ b/public/schemas/0.9/workflowextensions.json
@@ -0,0 +1,50 @@
+{
+ "$id": "https://serverlessworkflow.io/schemas/0.9/extensions.json",
+ "$schema": "http://json-schema.org/draft-07/schema#",
+ "description": "Serverless Workflow specification - extensions schema",
+ "type": "object",
+ "extensions": {
+ "oneOf": [
+ {
+ "type": "string",
+ "format": "uri",
+ "description": "URI to a resource containing workflow extensions definitions (json or yaml)"
+ },
+ {
+ "type": "array",
+ "description": "Workflow extensions definitions",
+ "items": {
+ "type": "object",
+ "$ref": "#/definitions/extension"
+ },
+ "additionalItems": false,
+ "minItems": 1
+ }
+ ]
+ },
+ "required": [
+ "extensions"
+ ],
+ "definitions": {
+ "extension": {
+ "type": "object",
+ "properties": {
+ "extensionId": {
+ "type": "string",
+ "description": "Unique extension id",
+ "minLength": 1
+ },
+ "resource": {
+ "type": "string",
+ "description": "URI to a resource containing this workflow extension definitions (json or yaml)",
+ "minLength": 1
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "extensionId",
+ "resource"
+ ]
+ }
+ }
+}
\ No newline at end of file
diff --git a/public/schemas/1.0.0-alpha1/workflow.json b/public/schemas/1.0.0-alpha1/workflow.json
new file mode 100644
index 0000000..fb34eb8
--- /dev/null
+++ b/public/schemas/1.0.0-alpha1/workflow.json
@@ -0,0 +1,1282 @@
+{
+ "id": "https://open-workflow-specification.org/schemas/1.0.0-alpha1/workflow.json",
+ "$schema": "http://json-schema.org/draft-07/schema",
+ "description": "Open Workflow Specification DSL - Workflow Schema",
+ "type": "object",
+ "properties": {
+ "document": {
+ "type": "object",
+ "properties": {
+ "dsl": {
+ "type": "string",
+ "pattern": "^(0|[1-9]\\d*)\\.(0|[1-9]\\d*)\\.(0|[1-9]\\d*)(?:-((?:0|[1-9]\\d*|\\d*[a-zA-Z-][0-9a-zA-Z-]*)(?:\\.(?:0|[1-9]\\d*|\\d*[a-zA-Z-][0-9a-zA-Z-]*))*))?(?:\\+([0-9a-zA-Z-]+(?:\\.[0-9a-zA-Z-]+)*))?$",
+ "description": "The version of the DSL used by the workflow."
+ },
+ "namespace": {
+ "type": "string",
+ "pattern": "^[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?$",
+ "description": "The workflow's namespace."
+ },
+ "name": {
+ "type": "string",
+ "pattern": "^[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?$",
+ "description": "The workflow's name."
+ },
+ "version": {
+ "type": "string",
+ "pattern": "^(0|[1-9]\\d*)\\.(0|[1-9]\\d*)\\.(0|[1-9]\\d*)(?:-((?:0|[1-9]\\d*|\\d*[a-zA-Z-][0-9a-zA-Z-]*)(?:\\.(?:0|[1-9]\\d*|\\d*[a-zA-Z-][0-9a-zA-Z-]*))*))?(?:\\+([0-9a-zA-Z-]+(?:\\.[0-9a-zA-Z-]+)*))?$",
+ "description": "The workflow's semantic version."
+ },
+ "title": {
+ "type": "string",
+ "description": "The workflow's title."
+ },
+ "summary": {
+ "type": "string",
+ "description": "The workflow's Markdown summary."
+ },
+ "tags": {
+ "type": "object",
+ "description": "A key/value mapping of the workflow's tags, if any.",
+ "additionalProperties": true
+ }
+ },
+ "required": ["dsl", "namespace", "name", "version"],
+ "description": "Documents the workflow"
+ },
+ "input": {
+ "$ref": "#/$defs/input",
+ "description": "Configures the workflow's input."
+ },
+ "use": {
+ "type": "object",
+ "properties": {
+ "authentications": {
+ "type": "object",
+ "additionalProperties": {
+ "$ref": "#/$defs/authenticationPolicy"
+ },
+ "description": "The workflow's reusable authentication policies."
+ },
+ "errors": {
+ "type": "object",
+ "additionalProperties": {
+ "$ref": "#/$defs/error"
+ },
+ "description": "The workflow's reusable errors."
+ },
+ "extensions": {
+ "type": "object",
+ "additionalProperties": {
+ "$ref": "#/$defs/extension"
+ },
+ "description": "The workflow's extensions."
+ },
+ "functions": {
+ "type": "object",
+ "additionalProperties": {
+ "$ref": "#/$defs/task"
+ },
+ "description": "The workflow's reusable functions."
+ },
+ "retries": {
+ "type": "object",
+ "additionalProperties": {
+ "$ref": "#/$defs/retryPolicy"
+ },
+ "description": "The workflow's reusable retry policies."
+ },
+ "secrets": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ },
+ "description": "The workflow's secrets."
+ }
+ },
+ "description": "Defines the workflow's reusable components."
+ },
+ "do": {
+ "type": "object",
+ "minProperties": 1,
+ "additionalProperties": {
+ "$ref": "#/$defs/task"
+ },
+ "description": "Defines the tasks the workflow must perform"
+ },
+ "timeout": {
+ "$ref": "#/$defs/timeout",
+ "description": "The workflow's timeout configuration, if any."
+ },
+ "output": {
+ "$ref": "#/$defs/output",
+ "description": "Configures the workflow's output."
+ },
+ "schedule": {
+ "type": "object",
+ "properties": {
+ "every": {
+ "$ref": "#/$defs/duration",
+ "description": "Specifies the duration of the interval at which the workflow should be executed."
+ },
+ "cron": {
+ "type": "string",
+ "description": "Specifies the schedule using a cron expression, e.g., '0 0 * * *' for daily at midnight.\""
+ },
+ "after": {
+ "$ref": "#/$defs/duration",
+ "description": "Specifies a delay duration that the workflow must wait before starting again after it completes."
+ },
+ "on": {
+ "$ref": "#/$defs/eventConsumptionStrategy",
+ "description": "Specifies the events that trigger the workflow execution."
+ }
+ },
+ "description": "Schedules the workflow"
+ }
+ },
+ "$defs": {
+ "task": {
+ "type": "object",
+ "properties": {
+ "input": {
+ "$ref": "#/$defs/input",
+ "description": "Configure the task's input."
+ },
+ "output": {
+ "$ref": "#/$defs/output",
+ "description": "Configure the task's output."
+ },
+ "timeout": {
+ "$ref": "#/$defs/timeout",
+ "description": "The task's timeout configuration, if any."
+ },
+ "then": {
+ "$ref": "#/$defs/flowDirective",
+ "description": "The flow directive to be performed upon completion of the task."
+ }
+ },
+ "oneOf": [
+ {
+ "$ref": "#/$defs/callTask"
+ },
+ {
+ "$ref": "#/$defs/compositeTask"
+ },
+ {
+ "$ref": "#/$defs/emitTask"
+ },
+ {
+ "$ref": "#/$defs/forTask"
+ },
+ {
+ "$ref": "#/$defs/listenTask"
+ },
+ {
+ "$ref": "#/$defs/raiseTask"
+ },
+ {
+ "$ref": "#/$defs/runTask"
+ },
+ {
+ "$ref": "#/$defs/setTask"
+ },
+ {
+ "$ref": "#/$defs/switchTask"
+ },
+ {
+ "$ref": "#/$defs/tryTask"
+ },
+ {
+ "$ref": "#/$defs/waitTask"
+ }
+ ]
+ },
+ "callTask": {
+ "type": "object",
+ "oneOf": [
+ {
+ "properties": {
+ "call": {
+ "type": "string",
+ "constant": "asyncapi"
+ },
+ "with": {
+ "type": "object",
+ "properties": {
+ "document": {
+ "$ref": "#/$defs/externalResource",
+ "description": "The document that defines the AsyncAPI operation to call."
+ },
+ "operationRef": {
+ "type": "string",
+ "description": "A reference to the AsyncAPI operation to call."
+ },
+ "server": {
+ "type": "string",
+ "description": "A a reference to the server to call the specified AsyncAPI operation on. If not set, default to the first server matching the operation's channel."
+ },
+ "message": {
+ "type": "string",
+ "description": "The name of the message to use. If not set, defaults to the first message defined by the operation."
+ },
+ "binding": {
+ "type": "string",
+ "description": "The name of the binding to use. If not set, defaults to the first binding defined by the operation."
+ },
+ "payload": {
+ "type": "object",
+ "description": "The payload to call the AsyncAPI operation with, if any."
+ },
+ "authentication": {
+ "ref": "#/$defs/authenticationPolicy",
+ "description": "The authentication policy, if any, to use when calling the AsyncAPI operation."
+ }
+ },
+ "required": ["document", "operationRef"],
+ "description": "Defines the AsyncAPI call to perform."
+ }
+ },
+ "required": ["call", "with"]
+ },
+ {
+ "properties": {
+ "call": {
+ "type": "string",
+ "constant": "grpc"
+ },
+ "with": {
+ "type": "object",
+ "properties": {
+ "proto": {
+ "$ref": "#/$defs/externalResource",
+ "description": "The proto resource that describes the GRPC service to call."
+ },
+ "service": {
+ "type": "object",
+ "properties": {
+ "name": {
+ "type": "string",
+ "description": "The name of the GRPC service to call."
+ },
+ "host": {
+ "type": "string",
+ "pattern": "^[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?$",
+ "description": "The hostname of the GRPC service to call."
+ },
+ "port": {
+ "type": "integer",
+ "min": 0,
+ "max": 65535,
+ "description": "The port number of the GRPC service to call."
+ },
+ "authentication": {
+ "$ref": "#/$defs/authenticationPolicy",
+ "description": "The endpoint's authentication policy, if any."
+ }
+ },
+ "required": ["name", "host"]
+ },
+ "method": {
+ "type": "string",
+ "description": "The name of the method to call on the defined GRPC service."
+ },
+ "arguments": {
+ "type": "object",
+ "additionalProperties": true,
+ "description": "The arguments, if any, to call the method with."
+ }
+ },
+ "required": ["proto", "service", "method"],
+ "description": "Defines the GRPC call to perform."
+ }
+ },
+ "required": ["call", "with"]
+ },
+ {
+ "properties": {
+ "call": {
+ "type": "string",
+ "constant": "http"
+ },
+ "with": {
+ "type": "object",
+ "properties": {
+ "method": {
+ "type": "string",
+ "description": "The HTTP method of the HTTP request to perform."
+ },
+ "endpoint": {
+ "$ref": "#/$defs/endpoint",
+ "description": "The HTTP endpoint to send the request to."
+ },
+ "headers": {
+ "type": "object",
+ "description": "A name/value mapping of the headers, if any, of the HTTP request to perform."
+ },
+ "body": {
+ "description": "The body, if any, of the HTTP request to perform."
+ },
+ "output": {
+ "type": "string",
+ "enum": ["raw", "content", "response"],
+ "description": "The http call output format. Defaults to 'content'."
+ }
+ },
+ "required": ["method", "endpoint"],
+ "description": "Defines the HTTP call to perform."
+ }
+ },
+ "required": ["call", "with"]
+ },
+ {
+ "properties": {
+ "call": {
+ "type": "string",
+ "constant": "openapi"
+ },
+ "with": {
+ "type": "object",
+ "properties": {
+ "document": {
+ "$ref": "#/$defs/externalResource",
+ "description": "The document that defines the OpenAPI operation to call."
+ },
+ "operationId": {
+ "type": "string",
+ "description": "The id of the OpenAPI operation to call."
+ },
+ "parameters": {
+ "type": "object",
+ "additionalProperties": true,
+ "description": "A name/value mapping of the parameters of the OpenAPI operation to call."
+ },
+ "authentication": {
+ "$ref": "#/$defs/authenticationPolicy",
+ "description": "The authentication policy, if any, to use when calling the OpenAPI operation."
+ },
+ "output": {
+ "type": "string",
+ "enum": ["raw", "content", "response"],
+ "description": "The http call output format. Defaults to 'content'."
+ }
+ },
+ "required": ["document", "operationId"],
+ "description": "Defines the OpenAPI call to perform."
+ }
+ },
+ "required": ["call", "with"]
+ },
+ {
+ "properties": {
+ "call": {
+ "type": "string",
+ "not": {
+ "enum": ["asyncapi", "grpc", "http", "openapi"]
+ },
+ "description": "The name of the function to call."
+ },
+ "with": {
+ "type": "object",
+ "additionalProperties": true,
+ "description": "A name/value mapping of the parameters, if any, to call the function with."
+ }
+ },
+ "required": ["call"]
+ }
+ ]
+ },
+ "compositeTask": {
+ "properties": {
+ "execute": {
+ "type": "object",
+ "oneOf": [
+ {
+ "properties": {
+ "concurrently": {
+ "type": "object",
+ "minProperties": 2,
+ "additionalProperties": {
+ "$ref": "#/$defs/task"
+ },
+ "description": "A name/definition mapping of the tasks to perform concurrently."
+ },
+ "compete": {
+ "type": "boolean",
+ "description": "Indicates whether or not the concurrent tasks are racing against each other, with a single possible winner, which sets the composite task's output."
+ }
+ },
+ "required": ["concurrently"]
+ },
+ {
+ "properties": {
+ "sequentially": {
+ "type": "object",
+ "minProperties": 2,
+ "additionalProperties": {
+ "$ref": "#/$defs/task"
+ },
+ "description": "A name/definition mapping of the tasks to perform sequentially."
+ }
+ },
+ "required": ["sequentially"]
+ }
+ ],
+ "description": "Configures the task execution strategy to use"
+ }
+ },
+ "required": ["execute"],
+ "description": "Serves as a pivotal orchestrator within workflow systems, enabling the seamless integration and execution of multiple subtasks to accomplish complex operations"
+ },
+ "emitTask": {
+ "properties": {
+ "emit": {
+ "type": "object",
+ "properties": {
+ "event": {
+ "type": "object",
+ "properties": {
+ "id": {
+ "type": "string",
+ "description": "The event's unique identifier"
+ },
+ "source": {
+ "type": "string",
+ "format": "uri",
+ "description": "Identifies the context in which an event happened"
+ },
+ "type": {
+ "type": "string",
+ "description": "This attribute contains a value describing the type of event related to the originating occurrence."
+ },
+ "time": {
+ "type": "string",
+ "format": "date-time"
+ },
+ "subject": {
+ "type": "string"
+ },
+ "datacontenttype": {
+ "type": "string",
+ "description": "Content type of data value. This attribute enables data to carry any type of content, whereby format and encoding might differ from that of the chosen event format."
+ },
+ "dataschema": {
+ "type": "string",
+ "format": "uri"
+ }
+ },
+ "required": ["source", "type"],
+ "additionalProperties": true
+ }
+ },
+ "required": ["event"]
+ }
+ },
+ "required": ["emit"],
+ "description": "Allows workflows to publish events to event brokers or messaging systems, facilitating communication and coordination between different components and services."
+ },
+ "flowDirective": {
+ "type": "string",
+ "enum": ["continue", "exit", "end"],
+ "default": "continue"
+ },
+ "forTask": {
+ "properties": {
+ "for": {
+ "type": "object",
+ "properties": {
+ "each": {
+ "type": "string",
+ "description": "The name of the variable used to store the current item being enumerated.",
+ "default": "item"
+ },
+ "in": {
+ "type": "string",
+ "description": "A runtime expression used to get the collection to enumerate."
+ },
+ "at": {
+ "type": "string",
+ "description": "The name of the variable used to store the index of the current item being enumerated.",
+ "default": "index"
+ }
+ },
+ "required": ["in"]
+ },
+ "while": {
+ "type": "string",
+ "description": "A runtime expression that represents the condition, if any, that must be met for the iteration to continue."
+ },
+ "do": {
+ "$ref": "#/$defs/task"
+ }
+ },
+ "description": "Allows workflows to iterate over a collection of items, executing a defined set of subtasks for each item in the collection. This task type is instrumental in handling scenarios such as batch processing, data transformation, and repetitive operations across datasets.",
+ "required": ["for", "do"]
+ },
+ "listenTask": {
+ "type": "object",
+ "properties": {
+ "listen": {
+ "type": "object",
+ "properties": {
+ "to": {
+ "$ref": "#/$defs/eventConsumptionStrategy",
+ "description": "Defines the event(s) to listen to."
+ }
+ },
+ "required": ["to"]
+ }
+ },
+ "required": ["listen"],
+ "description": "Provides a mechanism for workflows to await and react to external events, enabling event-driven behavior within workflow systems."
+ },
+ "raiseTask": {
+ "type": "object",
+ "properties": {
+ "raise": {
+ "type": "object",
+ "properties": {
+ "error": {
+ "$ref": "#/$defs/error",
+ "description": "Defines the error to raise."
+ }
+ },
+ "required": ["error"]
+ }
+ },
+ "required": ["raise"],
+ "description": "Intentionally triggers and propagates errors."
+ },
+ "runTask": {
+ "type": "object",
+ "properties": {
+ "run": {
+ "type": "object",
+ "oneOf": [
+ {
+ "properties": {
+ "container": {
+ "type": "object",
+ "properties": {
+ "image": {
+ "type": "string",
+ "description": "The name of the container image to run."
+ },
+ "command": {
+ "type": "string",
+ "description": "The command, if any, to execute on the container"
+ },
+ "ports": {
+ "type": "object",
+ "description": "The container's port mappings, if any."
+ },
+ "volumes": {
+ "type": "object",
+ "description": "The container's volume mappings, if any."
+ },
+ "environment": {
+ "type": "object",
+ "description": "A key/value mapping of the environment variables, if any, to use when running the configured process."
+ }
+ },
+ "required": ["image"]
+ }
+ },
+ "required": ["container"],
+ "description": "Enables the execution of external processes encapsulated within a containerized environment."
+ },
+ {
+ "properties": {
+ "script": {
+ "type": "object",
+ "properties": {
+ "language": {
+ "type": "string",
+ "description": "The language of the script to run."
+ },
+ "environment": {
+ "type": "object",
+ "additionalProperties": true,
+ "description": "A key/value mapping of the environment variables, if any, to use when running the configured process."
+ }
+ },
+ "oneOf": [
+ {
+ "properties": {
+ "code": {
+ "type": "string"
+ }
+ },
+ "required": ["code"],
+ "description": "The script's code."
+ },
+ {
+ "properties": {
+ "source": {
+ "$ref": "#/$defs/externalResource"
+ }
+ },
+ "description": "The script's resource.",
+ "required": ["code"]
+ }
+ ],
+ "required": ["language"]
+ }
+ },
+ "required": ["script"],
+ "description": "Enables the execution of custom scripts or code within a workflow, empowering workflows to perform specialized logic, data processing, or integration tasks by executing user-defined scripts written in various programming languages."
+ },
+ {
+ "properties": {
+ "shell": {
+ "type": "object",
+ "properties": {
+ "command": {
+ "type": "string",
+ "description": "The shell command to run."
+ },
+ "arguments": {
+ "type": "object",
+ "additionalProperties": true,
+ "description": "A list of the arguments of the shell command to run."
+ },
+ "environment": {
+ "type": "object",
+ "additionalProperties": true,
+ "description": "A key/value mapping of the environment variables, if any, to use when running the configured process."
+ }
+ },
+ "required": ["command"]
+ }
+ },
+ "required": ["shell"],
+ "description": "Enables the execution of shell commands within a workflow, enabling workflows to interact with the underlying operating system and perform system-level operations, such as file manipulation, environment configuration, or system administration tasks."
+ },
+ {
+ "properties": {
+ "workflow": {
+ "type": "object",
+ "properties": {
+ "namespace": {
+ "type": "string",
+ "description": "The namespace the workflow to run belongs to."
+ },
+ "name": {
+ "type": "string",
+ "description": "The name of the workflow to run."
+ },
+ "version": {
+ "type": "string",
+ "default": "latest",
+ "description": "The version of the workflow to run. Defaults to latest"
+ },
+ "input": {
+ "type": "object",
+ "additionalProperties": true,
+ "description": "The data, if any, to pass as input to the workflow to execute. The value should be validated against the target workflow's input schema, if specified."
+ }
+ },
+ "required": ["namespace", "name", "version"]
+ }
+ },
+ "required": ["workflow"],
+ "description": "Enables the invocation and execution of nested workflows within a parent workflow, facilitating modularization, reusability, and abstraction of complex logic or business processes by encapsulating them into standalone workflow units."
+ }
+ ]
+ }
+ },
+ "required": ["run"],
+ "description": "Provides the capability to execute external containers, shell commands, scripts, or workflows."
+ },
+ "setTask": {
+ "type": "object",
+ "properties": {
+ "set": {
+ "type": "object",
+ "minProperties": 1,
+ "additionalProperties": true,
+ "description": "The data to set"
+ }
+ },
+ "required": ["set"],
+ "description": "A task used to set data"
+ },
+ "switchTask": {
+ "type": "object",
+ "properties": {
+ "switch": {
+ "type": "object",
+ "minProperties": 1,
+ "additionalProperties": {
+ "type": "object",
+ "properties": {
+ "when": {
+ "type": "string",
+ "description": "A runtime expression used to determine whether or not the case matches."
+ },
+ "then": {
+ "$ref": "#/$defs/flowDirective",
+ "description": "The flow directive to execute when the case matches."
+ }
+ }
+ }
+ }
+ },
+ "required": ["switch"],
+ "description": "Enables conditional branching within workflows, allowing them to dynamically select different paths based on specified conditions or criteria"
+ },
+ "tryTask": {
+ "type": "object",
+ "properties": {
+ "try": {
+ "$ref": "#/$defs/task",
+ "description": "The task to perform."
+ },
+ "catch": {
+ "type": "object",
+ "properties": {
+ "errors": {
+ "type": "object"
+ },
+ "as": {
+ "type": "string",
+ "description": "The name of the runtime expression variable to save the error as. Defaults to 'error'."
+ },
+ "when": {
+ "type": "string",
+ "description": "A runtime expression used to determine whether or not to catch the filtered error"
+ },
+ "exceptWhen": {
+ "type": "string",
+ "description": "A runtime expression used to determine whether or not to catch the filtered error"
+ },
+ "retry": {
+ "$ref": "#/$defs/retryPolicy",
+ "description": "The retry policy to use, if any, when catching errors."
+ },
+ "do": {
+ "$ref": "#/$defs/task",
+ "description": "The definition of the task to run when catching an error."
+ }
+ }
+ }
+ },
+ "required": ["try", "catch"],
+ "description": "Serves as a mechanism within workflows to handle errors gracefully, potentially retrying failed tasks before proceeding with alternate ones."
+ },
+ "waitTask": {
+ "type": "object",
+ "properties": {
+ "wait": {
+ "$ref": "#/$defs/duration",
+ "description": "The amount of time to wait."
+ }
+ },
+ "required": ["wait"],
+ "description": "Allows workflows to pause or delay their execution for a specified period of time."
+ },
+ "authenticationPolicy": {
+ "type": "object",
+ "oneOf": [
+ {
+ "properties": {
+ "basic": {
+ "type": "object",
+ "properties": {
+ "username": {
+ "type": "string",
+ "description": "The username to use."
+ },
+ "password": {
+ "type": "string",
+ "description": "The password to use."
+ }
+ },
+ "required": ["username", "password"]
+ }
+ },
+ "required": ["basic"],
+ "description": "Use basic authentication."
+ },
+ {
+ "properties": {
+ "bearer": {
+ "type": "object",
+ "properties": {
+ "token": {
+ "type": "string",
+ "description": "The bearer token to use."
+ }
+ },
+ "required": ["token"]
+ }
+ },
+ "required": ["bearer"],
+ "description": "Use bearer authentication."
+ },
+ {
+ "properties": {
+ "oauth2": {
+ "type": "object",
+ "properties": {
+ "authority": {
+ "type": "string",
+ "format": "uri",
+ "description": "The URI that references the OAuth2 authority to use."
+ },
+ "grant": {
+ "type": "string",
+ "description": "The grant type to use."
+ },
+ "client": {
+ "type": "object",
+ "properties": {
+ "id": {
+ "type": "string",
+ "description": "The client id to use."
+ },
+ "secret": {
+ "type": "string",
+ "description": "The client secret to use, if any."
+ }
+ },
+ "required": ["id"]
+ },
+ "scopes": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ },
+ "description": "The scopes, if any, to request the token for."
+ },
+ "audiences": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ },
+ "description": "The audiences, if any, to request the token for."
+ },
+ "username": {
+ "type": "string",
+ "description": "The username to use. Used only if the grant type is Password."
+ },
+ "password": {
+ "type": "string",
+ "description": "The password to use. Used only if the grant type is Password."
+ },
+ "subject": {
+ "$ref": "#/$defs/oauth2Token",
+ "description": "The security token that represents the identity of the party on behalf of whom the request is being made."
+ },
+ "actor": {
+ "$ref": "#/$defs/oauth2Token",
+ "description": "The security token that represents the identity of the acting party."
+ }
+ },
+ "required": ["authority", "grant", "client"]
+ }
+ },
+ "required": ["oauth2"],
+ "description": "Use OAUTH2 authentication."
+ }
+ ],
+ "description": "Defines an authentication policy."
+ },
+ "oauth2Token": {
+ "type": "object",
+ "properties": {
+ "token": {
+ "type": "string",
+ "description": "The security token to use to use."
+ },
+ "type": {
+ "type": "string",
+ "description": "The type of the security token to use to use."
+ }
+ },
+ "required": ["token", "type"]
+ },
+ "duration": {
+ "type": "object",
+ "minProperties": 1,
+ "properties": {
+ "days": {
+ "type": "integer",
+ "description": "Number of days, if any."
+ },
+ "hours": {
+ "type": "integer",
+ "description": "Number of days, if any."
+ },
+ "minutes": {
+ "type": "integer",
+ "description": "Number of minutes, if any."
+ },
+ "seconds": {
+ "type": "integer",
+ "description": "Number of seconds, if any."
+ },
+ "milliseconds": {
+ "type": "integer",
+ "description": "Number of milliseconds, if any."
+ }
+ },
+ "description": "The definition of a duration."
+ },
+ "error": {
+ "type": "object",
+ "properties": {
+ "type": {
+ "type": "string",
+ "format": "uri",
+ "description": "A URI reference that identifies the error type."
+ },
+ "status": {
+ "type": "integer",
+ "description": "The status code generated by the origin for this occurrence of the error."
+ },
+ "instance": {
+ "type": "string",
+ "format": "uri",
+ "description": "A JSON Pointer used to reference the component the error originates from."
+ },
+ "title": {
+ "type": "string",
+ "description": "A short, human-readable summary of the error."
+ },
+ "detail": {
+ "type": "string",
+ "description": "A human-readable explanation specific to this occurrence of the error."
+ }
+ },
+ "required": ["type", "status", "instance"]
+ },
+ "endpoint": {
+ "type": "object",
+ "properties": {
+ "uri": {
+ "type": "string",
+ "format": "uri",
+ "description": "The endpoint's URI."
+ },
+ "authentication": {
+ "$ref": "#/$defs/authenticationPolicy",
+ "description": "The authentication policy to use."
+ }
+ },
+ "required": ["uri"]
+ },
+ "eventConsumptionStrategy": {
+ "type": "object",
+ "oneOf": [
+ {
+ "properties": {
+ "all": {
+ "type": "array",
+ "items": {
+ "$ref": "#/$defs/eventFilter"
+ },
+ "description": "A list containing all the events that must be consumed."
+ }
+ },
+ "required": ["all"]
+ },
+ {
+ "properties": {
+ "any": {
+ "type": "array",
+ "items": {
+ "$ref": "#/$defs/eventFilter"
+ },
+ "description": "A list containing any of the events to consume."
+ }
+ },
+ "required": ["any"]
+ },
+ {
+ "properties": {
+ "one": {
+ "$ref": "#/$defs/eventFilter",
+ "description": "The single event to consume."
+ }
+ },
+ "required": ["one"]
+ }
+ ]
+ },
+ "eventFilter": {
+ "type": "object",
+ "properties": {
+ "with": {
+ "type": "object",
+ "minProperties": 1,
+ "properties": {
+ "id": {
+ "type": "string",
+ "description": "The event's unique identifier"
+ },
+ "source": {
+ "type": "string",
+ "description": "Identifies the context in which an event happened"
+ },
+ "type": {
+ "type": "string",
+ "description": "This attribute contains a value describing the type of event related to the originating occurrence."
+ },
+ "time": {
+ "type": "string"
+ },
+ "subject": {
+ "type": "string"
+ },
+ "datacontenttype": {
+ "type": "string",
+ "description": "Content type of data value. This attribute enables data to carry any type of content, whereby format and encoding might differ from that of the chosen event format."
+ },
+ "dataschema": {
+ "type": "string"
+ }
+ },
+ "additionalProperties": true,
+ "description": "An event filter is a mechanism used to selectively process or handle events based on predefined criteria, such as event type, source, or specific attributes."
+ },
+ "correlate": {
+ "type": "object",
+ "properties": {
+ "from": {
+ "type": "string",
+ "description": "A runtime expression used to extract the correlation value from the filtered event."
+ },
+ "expect": {
+ "type": "string",
+ "description": "A constant or a runtime expression, if any, used to determine whether or not the extracted correlation value matches expectations. If not set, the first extracted value will be used as the correlation's expectation."
+ }
+ },
+ "required": ["from"],
+ "description": "A correlation is a link between events and data, established by mapping event attributes to specific data attributes, allowing for coordinated processing or handling based on event characteristics."
+ }
+ },
+ "required": ["with"],
+ "description": "An event filter is a mechanism used to selectively process or handle events based on predefined criteria, such as event type, source, or specific attributes."
+ },
+ "extension": {
+ "type": "object",
+ "properties": {
+ "extend": {
+ "type": "string",
+ "enum": [
+ "call",
+ "composite",
+ "emit",
+ "for",
+ "listen",
+ "raise",
+ "run",
+ "set",
+ "switch",
+ "try",
+ "wait",
+ "all"
+ ],
+ "description": "The type of task to extend."
+ },
+ "when": {
+ "type": "string",
+ "description": "A runtime expression, if any, used to determine whether or not the extension should apply in the specified context."
+ },
+ "before": {
+ "$ref": "#/$defs/task",
+ "description": "The task to execute before the extended task, if any."
+ },
+ "after": {
+ "$ref": "#/$defs/task",
+ "description": "The task to execute after the extended task, if any."
+ }
+ },
+ "required": ["extend"],
+ "description": "The definition of a an extension."
+ },
+ "externalResource": {
+ "type": "object",
+ "properties": {
+ "uri": {
+ "type": "string",
+ "format": "uri",
+ "description": "The endpoint's URI."
+ },
+ "authentication": {
+ "$ref": "#/$defs/authenticationPolicy",
+ "description": "The authentication policy to use."
+ },
+ "name": {
+ "type": "string",
+ "description": "The external resource's name, if any."
+ }
+ },
+ "required": ["uri"]
+ },
+ "input": {
+ "type": "object",
+ "properties": {
+ "schema": {
+ "$ref": "#/$defs/schema",
+ "description": "The schema used to describe and validate the input of the workflow or task."
+ },
+ "from": {
+ "type": "string",
+ "description": "A runtime expression, if any, used to mutate and/or filter the input of the workflow or task."
+ }
+ },
+ "description": "Configures the input of a workflow or task."
+ },
+ "output": {
+ "type": "object",
+ "properties": {
+ "schema": {
+ "$ref": "#/$defs/schema",
+ "description": "The schema used to describe and validate the output of the workflow or task."
+ },
+ "from": {
+ "type": "string",
+ "description": "A runtime expression, if any, used to mutate and/or filter the output of the workflow or task."
+ },
+ "to": {
+ "type": "string",
+ "description": "A runtime expression, if any, used to output data to the current context."
+ }
+ },
+ "description": "Configures the output of a workflow or task."
+ },
+ "retryPolicy": {
+ "type": "object",
+ "properties": {
+ "when": {
+ "type": "string",
+ "description": "A runtime expression, if any, used to determine whether or not to retry running the task, in a given context."
+ },
+ "exceptWhen": {
+ "type": "string",
+ "description": "A runtime expression used to determine whether or not to retry running the task, in a given context."
+ },
+ "delay": {
+ "$ref": "#/$defs/duration",
+ "description": "The duration to wait between retry attempts."
+ },
+ "backoff": {
+ "type": "object",
+ "oneOf": [
+ {
+ "properties": {
+ "constant": {
+ "type": "object",
+ "description": "The definition of the constant backoff to use, if any."
+ }
+ },
+ "required": ["constant"]
+ },
+ {
+ "properties": {
+ "exponential": {
+ "type": "object",
+ "description": "The definition of the exponential backoff to use, if any."
+ }
+ },
+ "required": ["exponential"]
+ },
+ {
+ "properties": {
+ "linear": {
+ "type": "object",
+ "description": "The definition of the linear backoff to use, if any."
+ }
+ },
+ "required": ["linear"]
+ }
+ ],
+ "description": "The retry duration backoff."
+ },
+ "limit": {
+ "type": "object",
+ "properties": {
+ "attempt": {
+ "type": "object",
+ "properties": {
+ "count": {
+ "type": "integer",
+ "description": "The maximum amount of retry attempts, if any."
+ },
+ "duration": {
+ "$ref": "#/$defs/duration",
+ "description": "The maximum duration for each retry attempt."
+ }
+ }
+ },
+ "duration": {
+ "$ref": "#/$defs/duration",
+ "description": "The duration limit, if any, for all retry attempts."
+ }
+ },
+ "description": "The retry limit, if any"
+ },
+ "jitter": {
+ "type": "object",
+ "properties": {
+ "from": {
+ "$ref": "#/$defs/duration",
+ "description": "The minimum duration of the jitter range"
+ },
+ "to": {
+ "$ref": "#/$defs/duration",
+ "description": "The maximum duration of the jitter range"
+ }
+ },
+ "required": ["from", "to"],
+ "description": "The parameters, if any, that control the randomness or variability of the delay between retry attempts."
+ }
+ },
+ "description": "Defines a retry policy."
+ },
+ "schema": {
+ "type": "object",
+ "properties": {
+ "format": {
+ "type": "string",
+ "default": "json",
+ "description": "The schema's format. Defaults to 'json'. The (optional) version of the format can be set using `{format}:{version}`."
+ }
+ },
+ "oneOf": [
+ {
+ "properties": {
+ "document": {
+ "description": "The schema's inline definition."
+ }
+ },
+ "required": ["document"]
+ },
+ {
+ "properties": {
+ "resource": {
+ "$ref": "#/$defs/externalResource",
+ "description": "The schema's external resource."
+ }
+ },
+ "required": ["resource"]
+ }
+ ],
+ "description": "Represents the definition of a schema."
+ },
+ "timeout": {
+ "type": "object",
+ "properties": {
+ "after": {
+ "$ref": "#/$defs/duration",
+ "description": "The duration after which to timeout."
+ }
+ },
+ "required": ["after"],
+ "description": "The definition of a timeout."
+ }
+ },
+ "required": ["document", "do"]
+}
diff --git a/public/schemas/1.0.0-alpha2/workflow.json b/public/schemas/1.0.0-alpha2/workflow.json
new file mode 100644
index 0000000..04e6f2f
--- /dev/null
+++ b/public/schemas/1.0.0-alpha2/workflow.json
@@ -0,0 +1,1594 @@
+{
+ "$id": "https://open-workflow-specification.org/schemas/1.0.0-alpha2/workflow.json",
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
+ "description": "Open Workflow Specification DSL - Workflow Schema",
+ "type": "object",
+ "properties": {
+ "document": {
+ "type": "object",
+ "properties": {
+ "dsl": {
+ "type": "string",
+ "pattern": "^(0|[1-9]\\d*)\\.(0|[1-9]\\d*)\\.(0|[1-9]\\d*)(?:-((?:0|[1-9]\\d*|\\d*[a-zA-Z-][0-9a-zA-Z-]*)(?:\\.(?:0|[1-9]\\d*|\\d*[a-zA-Z-][0-9a-zA-Z-]*))*))?(?:\\+([0-9a-zA-Z-]+(?:\\.[0-9a-zA-Z-]+)*))?$",
+ "description": "The version of the DSL used by the workflow."
+ },
+ "namespace": {
+ "type": "string",
+ "pattern": "^[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?$",
+ "description": "The workflow's namespace."
+ },
+ "name": {
+ "type": "string",
+ "pattern": "^[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?$",
+ "description": "The workflow's name."
+ },
+ "version": {
+ "type": "string",
+ "pattern": "^(0|[1-9]\\d*)\\.(0|[1-9]\\d*)\\.(0|[1-9]\\d*)(?:-((?:0|[1-9]\\d*|\\d*[a-zA-Z-][0-9a-zA-Z-]*)(?:\\.(?:0|[1-9]\\d*|\\d*[a-zA-Z-][0-9a-zA-Z-]*))*))?(?:\\+([0-9a-zA-Z-]+(?:\\.[0-9a-zA-Z-]+)*))?$",
+ "description": "The workflow's semantic version."
+ },
+ "title": {
+ "type": "string",
+ "description": "The workflow's title."
+ },
+ "summary": {
+ "type": "string",
+ "description": "The workflow's Markdown summary."
+ },
+ "tags": {
+ "type": "object",
+ "description": "A key/value mapping of the workflow's tags, if any.",
+ "additionalProperties": true
+ }
+ },
+ "required": [
+ "dsl",
+ "namespace",
+ "name",
+ "version"
+ ],
+ "description": "Documents the workflow"
+ },
+ "input": {
+ "$ref": "#/$defs/input",
+ "description": "Configures the workflow's input."
+ },
+ "use": {
+ "type": "object",
+ "properties": {
+ "authentications": {
+ "type": "object",
+ "additionalProperties": {
+ "$ref": "#/$defs/authenticationPolicy"
+ },
+ "description": "The workflow's reusable authentication policies."
+ },
+ "errors": {
+ "type": "object",
+ "additionalProperties": {
+ "$ref": "#/$defs/error"
+ },
+ "description": "The workflow's reusable errors."
+ },
+ "extensions": {
+ "type": "array",
+ "items": {
+ "type": "object",
+ "minProperties": 1,
+ "maxProperties": 1,
+ "additionalProperties": {
+ "$ref": "#/$defs/extension"
+ }
+ },
+ "description": "The workflow's extensions."
+ },
+ "functions": {
+ "type": "object",
+ "additionalProperties": {
+ "$ref": "#/$defs/task"
+ },
+ "description": "The workflow's reusable functions."
+ },
+ "retries": {
+ "type": "object",
+ "additionalProperties": {
+ "$ref": "#/$defs/retryPolicy"
+ },
+ "description": "The workflow's reusable retry policies."
+ },
+ "secrets": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ },
+ "description": "The workflow's secrets."
+ }
+ },
+ "description": "Defines the workflow's reusable components."
+ },
+ "do": {
+ "description": "Defines the task(s) the workflow must perform",
+ "$ref": "#/$defs/taskList"
+ },
+ "timeout": {
+ "$ref": "#/$defs/timeout",
+ "description": "The workflow's timeout configuration, if any."
+ },
+ "output": {
+ "$ref": "#/$defs/output",
+ "description": "Configures the workflow's output."
+ },
+ "schedule": {
+ "type": "object",
+ "properties": {
+ "every": {
+ "$ref": "#/$defs/duration",
+ "description": "Specifies the duration of the interval at which the workflow should be executed."
+ },
+ "cron": {
+ "type": "string",
+ "description": "Specifies the schedule using a cron expression, e.g., '0 0 * * *' for daily at midnight.\""
+ },
+ "after": {
+ "$ref": "#/$defs/duration",
+ "description": "Specifies a delay duration that the workflow must wait before starting again after it completes."
+ },
+ "on": {
+ "$ref": "#/$defs/eventConsumptionStrategy",
+ "description": "Specifies the events that trigger the workflow execution."
+ }
+ },
+ "description": "Schedules the workflow"
+ }
+ },
+ "$defs": {
+ "taskList": {
+ "type": "array",
+ "items": {
+ "type": "object",
+ "minProperties": 1,
+ "maxProperties": 1,
+ "additionalProperties": {
+ "$ref": "#/$defs/task"
+ }
+ }
+ },
+ "taskBase": {
+ "type": "object",
+ "properties": {
+ "if": {
+ "type": "string",
+ "description": "A runtime expression, if any, used to determine whether or not the task should be run."
+ },
+ "input": {
+ "$ref": "#/$defs/input",
+ "description": "Configure the task's input."
+ },
+ "output": {
+ "$ref": "#/$defs/output",
+ "description": "Configure the task's output."
+ },
+ "export": {
+ "$ref": "#/$defs/export",
+ "description": "Export task output to context."
+ },
+ "timeout": {
+ "$ref": "#/$defs/timeout",
+ "description": "The task's timeout configuration, if any."
+ },
+ "then": {
+ "$ref": "#/$defs/flowDirective",
+ "description": "The flow directive to be performed upon completion of the task."
+ }
+ }
+ },
+ "task": {
+ "unevaluatedProperties": false,
+ "oneOf": [
+ {
+ "$ref": "#/$defs/callTask"
+ },
+ {
+ "$ref": "#/$defs/doTask"
+ },
+ {
+ "$ref": "#/$defs/forkTask"
+ },
+ {
+ "$ref": "#/$defs/emitTask"
+ },
+ {
+ "$ref": "#/$defs/forTask"
+ },
+ {
+ "$ref": "#/$defs/listenTask"
+ },
+ {
+ "$ref": "#/$defs/raiseTask"
+ },
+ {
+ "$ref": "#/$defs/runTask"
+ },
+ {
+ "$ref": "#/$defs/setTask"
+ },
+ {
+ "$ref": "#/$defs/switchTask"
+ },
+ {
+ "$ref": "#/$defs/tryTask"
+ },
+ {
+ "$ref": "#/$defs/waitTask"
+ }
+ ]
+ },
+ "callTask": {
+ "oneOf": [
+ {
+ "title": "CallAsyncAPI",
+ "$ref": "#/$defs/taskBase",
+ "type": "object",
+ "required": [
+ "call",
+ "with"
+ ],
+ "unevaluatedProperties": false,
+ "properties": {
+ "call": {
+ "type": "string",
+ "const": "asyncapi"
+ },
+ "with": {
+ "type": "object",
+ "properties": {
+ "document": {
+ "$ref": "#/$defs/externalResource",
+ "description": "The document that defines the AsyncAPI operation to call."
+ },
+ "operationRef": {
+ "type": "string",
+ "description": "A reference to the AsyncAPI operation to call."
+ },
+ "server": {
+ "type": "string",
+ "description": "A a reference to the server to call the specified AsyncAPI operation on. If not set, default to the first server matching the operation's channel."
+ },
+ "message": {
+ "type": "string",
+ "description": "The name of the message to use. If not set, defaults to the first message defined by the operation."
+ },
+ "binding": {
+ "type": "string",
+ "description": "The name of the binding to use. If not set, defaults to the first binding defined by the operation."
+ },
+ "payload": {
+ "type": "object",
+ "description": "The payload to call the AsyncAPI operation with, if any."
+ },
+ "authentication": {
+ "description": "The authentication policy, if any, to use when calling the AsyncAPI operation.",
+ "oneOf": [
+ {
+ "$ref": "#/$defs/authenticationPolicy"
+ },
+ {
+ "type": "string"
+ }
+ ]
+ }
+ },
+ "required": [
+ "document",
+ "operationRef"
+ ],
+ "additionalProperties": false,
+ "description": "Defines the AsyncAPI call to perform."
+ }
+ }
+ },
+ {
+ "title": "CallGRPC",
+ "$ref": "#/$defs/taskBase",
+ "type": "object",
+ "unevaluatedProperties": false,
+ "required": [
+ "call",
+ "with"
+ ],
+ "properties": {
+ "call": {
+ "type": "string",
+ "const": "grpc"
+ },
+ "with": {
+ "type": "object",
+ "properties": {
+ "proto": {
+ "$ref": "#/$defs/externalResource",
+ "description": "The proto resource that describes the GRPC service to call."
+ },
+ "service": {
+ "type": "object",
+ "properties": {
+ "name": {
+ "type": "string",
+ "description": "The name of the GRPC service to call."
+ },
+ "host": {
+ "type": "string",
+ "pattern": "^[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?$",
+ "description": "The hostname of the GRPC service to call."
+ },
+ "port": {
+ "type": "integer",
+ "min": 0,
+ "max": 65535,
+ "description": "The port number of the GRPC service to call."
+ },
+ "authentication": {
+ "description": "The endpoint's authentication policy, if any.",
+ "oneOf": [
+ {
+ "$ref": "#/$defs/authenticationPolicy"
+ },
+ {
+ "type": "string"
+ }
+ ]
+ }
+ },
+ "required": [
+ "name",
+ "host"
+ ]
+ },
+ "method": {
+ "type": "string",
+ "description": "The name of the method to call on the defined GRPC service."
+ },
+ "arguments": {
+ "type": "object",
+ "additionalProperties": true,
+ "description": "The arguments, if any, to call the method with."
+ }
+ },
+ "required": [
+ "proto",
+ "service",
+ "method"
+ ],
+ "additionalProperties": false,
+ "description": "Defines the GRPC call to perform."
+ }
+ }
+ },
+ {
+ "title": "CallHTTP",
+ "$ref": "#/$defs/taskBase",
+ "type": "object",
+ "unevaluatedProperties": false,
+ "required": [
+ "call",
+ "with"
+ ],
+ "properties": {
+ "call": {
+ "type": "string",
+ "const": "http"
+ },
+ "with": {
+ "type": "object",
+ "properties": {
+ "method": {
+ "type": "string",
+ "description": "The HTTP method of the HTTP request to perform."
+ },
+ "endpoint": {
+ "description": "The HTTP endpoint to send the request to.",
+ "oneOf": [
+ {
+ "$ref": "#/$defs/endpoint"
+ },
+ {
+ "type": "string",
+ "format": "uri-template"
+ }
+ ]
+ },
+ "headers": {
+ "type": "object",
+ "description": "A name/value mapping of the headers, if any, of the HTTP request to perform."
+ },
+ "body": {
+ "description": "The body, if any, of the HTTP request to perform."
+ },
+ "output": {
+ "type": "string",
+ "enum": [
+ "raw",
+ "content",
+ "response"
+ ],
+ "description": "The http call output format. Defaults to 'content'."
+ }
+ },
+ "required": [
+ "method",
+ "endpoint"
+ ],
+ "additionalProperties": false,
+ "description": "Defines the HTTP call to perform."
+ }
+ }
+ },
+ {
+ "title": "CallOpenAPI",
+ "$ref": "#/$defs/taskBase",
+ "type": "object",
+ "unevaluatedProperties": false,
+ "required": [
+ "call",
+ "with"
+ ],
+ "properties": {
+ "call": {
+ "type": "string",
+ "const": "openapi"
+ },
+ "with": {
+ "type": "object",
+ "properties": {
+ "document": {
+ "$ref": "#/$defs/externalResource",
+ "description": "The document that defines the OpenAPI operation to call."
+ },
+ "operationId": {
+ "type": "string",
+ "description": "The id of the OpenAPI operation to call."
+ },
+ "parameters": {
+ "type": "object",
+ "additionalProperties": true,
+ "description": "A name/value mapping of the parameters of the OpenAPI operation to call."
+ },
+ "authentication": {
+ "description": "The authentication policy, if any, to use when calling the OpenAPI operation.",
+ "oneOf": [
+ {
+ "$ref": "#/$defs/authenticationPolicy"
+ },
+ {
+ "type": "string"
+ }
+ ]
+ },
+ "output": {
+ "type": "string",
+ "enum": [
+ "raw",
+ "content",
+ "response"
+ ],
+ "description": "The http call output format. Defaults to 'content'."
+ }
+ },
+ "required": [
+ "document",
+ "operationId"
+ ],
+ "additionalProperties": false,
+ "description": "Defines the OpenAPI call to perform."
+ }
+ }
+ },
+ {
+ "title": "CallFunction",
+ "$ref": "#/$defs/taskBase",
+ "type": "object",
+ "unevaluatedProperties": false,
+ "required": [
+ "call"
+ ],
+ "properties": {
+ "call": {
+ "type": "string",
+ "not": {
+ "enum": [
+ "asyncapi",
+ "grpc",
+ "http",
+ "openapi"
+ ]
+ },
+ "description": "The name of the function to call."
+ },
+ "with": {
+ "type": "object",
+ "additionalProperties": true,
+ "description": "A name/value mapping of the parameters, if any, to call the function with."
+ }
+ }
+ }
+ ]
+ },
+ "forkTask": {
+ "description": "Allows workflows to execute multiple tasks concurrently and optionally race them against each other, with a single possible winner, which sets the task's output.",
+ "$ref": "#/$defs/taskBase",
+ "type": "object",
+ "unevaluatedProperties": false,
+ "required": [
+ "fork"
+ ],
+ "properties": {
+ "fork": {
+ "type": "object",
+ "required": [
+ "branches"
+ ],
+ "properties": {
+ "branches": {
+ "$ref": "#/$defs/taskList"
+ },
+ "compete": {
+ "description": "Indicates whether or not the concurrent tasks are racing against each other, with a single possible winner, which sets the composite task's output.",
+ "type": "boolean",
+ "default": false
+ }
+ }
+ }
+ }
+ },
+ "doTask": {
+ "description": "Allows to execute a list of tasks in sequence",
+ "$ref": "#/$defs/taskBase",
+ "type": "object",
+ "unevaluatedProperties": false,
+ "required": [
+ "do"
+ ],
+ "properties": {
+ "do": {
+ "$ref": "#/$defs/taskList"
+ }
+ }
+ },
+ "emitTask": {
+ "description": "Allows workflows to publish events to event brokers or messaging systems, facilitating communication and coordination between different components and services.",
+ "$ref": "#/$defs/taskBase",
+ "type": "object",
+ "required": [
+ "emit"
+ ],
+ "unevaluatedProperties": false,
+ "properties": {
+ "emit": {
+ "type": "object",
+ "properties": {
+ "event": {
+ "type": "object",
+ "properties": {
+ "id": {
+ "type": "string",
+ "description": "The event's unique identifier"
+ },
+ "source": {
+ "type": "string",
+ "format": "uri",
+ "description": "Identifies the context in which an event happened"
+ },
+ "type": {
+ "type": "string",
+ "description": "This attribute contains a value describing the type of event related to the originating occurrence."
+ },
+ "time": {
+ "type": "string",
+ "format": "date-time"
+ },
+ "subject": {
+ "type": "string"
+ },
+ "datacontenttype": {
+ "type": "string",
+ "description": "Content type of data value. This attribute enables data to carry any type of content, whereby format and encoding might differ from that of the chosen event format."
+ },
+ "dataschema": {
+ "type": "string",
+ "format": "uri"
+ }
+ },
+ "required": [
+ "source",
+ "type"
+ ],
+ "additionalProperties": true
+ }
+ },
+ "required": [
+ "event"
+ ]
+ }
+ }
+ },
+ "forTask": {
+ "description": "Allows workflows to iterate over a collection of items, executing a defined set of subtasks for each item in the collection. This task type is instrumental in handling scenarios such as batch processing, data transformation, and repetitive operations across datasets.",
+ "$ref": "#/$defs/taskBase",
+ "type": "object",
+ "required": [
+ "for",
+ "do"
+ ],
+ "unevaluatedProperties": false,
+ "properties": {
+ "for": {
+ "type": "object",
+ "properties": {
+ "each": {
+ "type": "string",
+ "description": "The name of the variable used to store the current item being enumerated.",
+ "default": "item"
+ },
+ "in": {
+ "type": "string",
+ "description": "A runtime expression used to get the collection to enumerate."
+ },
+ "at": {
+ "type": "string",
+ "description": "The name of the variable used to store the index of the current item being enumerated.",
+ "default": "index"
+ }
+ },
+ "required": [
+ "in"
+ ]
+ },
+ "while": {
+ "type": "string",
+ "description": "A runtime expression that represents the condition, if any, that must be met for the iteration to continue."
+ },
+ "do": {
+ "$ref": "#/$defs/taskList"
+ }
+ }
+ },
+ "listenTask": {
+ "description": "Provides a mechanism for workflows to await and react to external events, enabling event-driven behavior within workflow systems.",
+ "$ref": "#/$defs/taskBase",
+ "type": "object",
+ "required": [
+ "listen"
+ ],
+ "unevaluatedProperties": false,
+ "properties": {
+ "listen": {
+ "type": "object",
+ "properties": {
+ "to": {
+ "$ref": "#/$defs/eventConsumptionStrategy",
+ "description": "Defines the event(s) to listen to."
+ }
+ },
+ "required": [
+ "to"
+ ]
+ }
+ }
+ },
+ "raiseTask": {
+ "description": "Intentionally triggers and propagates errors.",
+ "$ref": "#/$defs/taskBase",
+ "type": "object",
+ "required": [
+ "raise"
+ ],
+ "unevaluatedProperties": false,
+ "properties": {
+ "raise": {
+ "type": "object",
+ "properties": {
+ "error": {
+ "$ref": "#/$defs/error",
+ "description": "Defines the error to raise."
+ }
+ },
+ "required": [
+ "error"
+ ]
+ }
+ }
+ },
+ "runTask": {
+ "description": "Provides the capability to execute external containers, shell commands, scripts, or workflows.",
+ "$ref": "#/$defs/taskBase",
+ "type": "object",
+ "required": [
+ "run"
+ ],
+ "unevaluatedProperties": false,
+ "properties": {
+ "run": {
+ "type": "object",
+ "oneOf": [
+ {
+ "properties": {
+ "container": {
+ "type": "object",
+ "properties": {
+ "image": {
+ "type": "string",
+ "description": "The name of the container image to run."
+ },
+ "command": {
+ "type": "string",
+ "description": "The command, if any, to execute on the container"
+ },
+ "ports": {
+ "type": "object",
+ "description": "The container's port mappings, if any."
+ },
+ "volumes": {
+ "type": "object",
+ "description": "The container's volume mappings, if any."
+ },
+ "environment": {
+ "type": "object",
+ "description": "A key/value mapping of the environment variables, if any, to use when running the configured process."
+ }
+ },
+ "required": [
+ "image"
+ ]
+ }
+ },
+ "required": [
+ "container"
+ ],
+ "description": "Enables the execution of external processes encapsulated within a containerized environment."
+ },
+ {
+ "properties": {
+ "script": {
+ "type": "object",
+ "properties": {
+ "language": {
+ "type": "string",
+ "description": "The language of the script to run."
+ },
+ "environment": {
+ "type": "object",
+ "additionalProperties": true,
+ "description": "A key/value mapping of the environment variables, if any, to use when running the configured process."
+ }
+ },
+ "oneOf": [
+ {
+ "properties": {
+ "code": {
+ "type": "string"
+ }
+ },
+ "required": [
+ "code"
+ ],
+ "description": "The script's code."
+ },
+ {
+ "properties": {
+ "source": {
+ "$ref": "#/$defs/externalResource"
+ }
+ },
+ "description": "The script's resource.",
+ "required": [
+ "source"
+ ]
+ }
+ ],
+ "required": [
+ "language"
+ ]
+ }
+ },
+ "required": [
+ "script"
+ ],
+ "description": "Enables the execution of custom scripts or code within a workflow, empowering workflows to perform specialized logic, data processing, or integration tasks by executing user-defined scripts written in various programming languages."
+ },
+ {
+ "properties": {
+ "shell": {
+ "type": "object",
+ "properties": {
+ "command": {
+ "type": "string",
+ "description": "The shell command to run."
+ },
+ "arguments": {
+ "type": "object",
+ "additionalProperties": true,
+ "description": "A list of the arguments of the shell command to run."
+ },
+ "environment": {
+ "type": "object",
+ "additionalProperties": true,
+ "description": "A key/value mapping of the environment variables, if any, to use when running the configured process."
+ }
+ },
+ "required": [
+ "command"
+ ]
+ }
+ },
+ "required": [
+ "shell"
+ ],
+ "description": "Enables the execution of shell commands within a workflow, enabling workflows to interact with the underlying operating system and perform system-level operations, such as file manipulation, environment configuration, or system administration tasks."
+ },
+ {
+ "properties": {
+ "workflow": {
+ "type": "object",
+ "properties": {
+ "namespace": {
+ "type": "string",
+ "description": "The namespace the workflow to run belongs to."
+ },
+ "name": {
+ "type": "string",
+ "description": "The name of the workflow to run."
+ },
+ "version": {
+ "type": "string",
+ "default": "latest",
+ "description": "The version of the workflow to run. Defaults to latest"
+ },
+ "input": {
+ "type": "object",
+ "additionalProperties": true,
+ "description": "The data, if any, to pass as input to the workflow to execute. The value should be validated against the target workflow's input schema, if specified."
+ }
+ },
+ "required": [
+ "namespace",
+ "name",
+ "version"
+ ]
+ }
+ },
+ "required": [
+ "workflow"
+ ],
+ "description": "Enables the invocation and execution of nested workflows within a parent workflow, facilitating modularization, reusability, and abstraction of complex logic or business processes by encapsulating them into standalone workflow units."
+ }
+ ]
+ }
+ }
+ },
+ "setTask": {
+ "description": "A task used to set data",
+ "$ref": "#/$defs/taskBase",
+ "type": "object",
+ "required": [
+ "set"
+ ],
+ "unevaluatedProperties": false,
+ "properties": {
+ "set": {
+ "type": "object",
+ "minProperties": 1,
+ "additionalProperties": true,
+ "description": "The data to set"
+ }
+ }
+ },
+ "switchTask": {
+ "description": "Enables conditional branching within workflows, allowing them to dynamically select different paths based on specified conditions or criteria",
+ "$ref": "#/$defs/taskBase",
+ "type": "object",
+ "required": [
+ "switch"
+ ],
+ "unevaluatedProperties": false,
+ "properties": {
+ "switch": {
+ "type": "array",
+ "minItems": 1,
+ "items": {
+ "type": "object",
+ "minProperties": 1,
+ "maxProperties": 1,
+ "additionalProperties": {
+ "type": "object",
+ "properties": {
+ "name": {
+ "type": "string",
+ "description": "The case's name."
+ },
+ "when": {
+ "type": "string",
+ "description": "A runtime expression used to determine whether or not the case matches."
+ },
+ "then": {
+ "$ref": "#/$defs/flowDirective",
+ "description": "The flow directive to execute when the case matches."
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "tryTask": {
+ "description": "Serves as a mechanism within workflows to handle errors gracefully, potentially retrying failed tasks before proceeding with alternate ones.",
+ "$ref": "#/$defs/taskBase",
+ "type": "object",
+ "required": [
+ "try",
+ "catch"
+ ],
+ "unevaluatedProperties": false,
+ "properties": {
+ "try": {
+ "description": "The task(s) to perform.",
+ "$ref": "#/$defs/taskList"
+ },
+ "catch": {
+ "type": "object",
+ "properties": {
+ "errors": {
+ "type": "object"
+ },
+ "as": {
+ "type": "string",
+ "description": "The name of the runtime expression variable to save the error as. Defaults to 'error'."
+ },
+ "when": {
+ "type": "string",
+ "description": "A runtime expression used to determine whether or not to catch the filtered error"
+ },
+ "exceptWhen": {
+ "type": "string",
+ "description": "A runtime expression used to determine whether or not to catch the filtered error"
+ },
+ "retry": {
+ "$ref": "#/$defs/retryPolicy",
+ "description": "The retry policy to use, if any, when catching errors."
+ },
+ "do": {
+ "description": "The definition of the task(s) to run when catching an error.",
+ "$ref": "#/$defs/taskList"
+ }
+ }
+ }
+ }
+ },
+ "waitTask": {
+ "description": "Allows workflows to pause or delay their execution for a specified period of time.",
+ "$ref": "#/$defs/taskBase",
+ "type": "object",
+ "required": [
+ "wait"
+ ],
+ "unevaluatedProperties": false,
+ "properties": {
+ "wait": {
+ "description": "The amount of time to wait.",
+ "$ref": "#/$defs/duration"
+ }
+ }
+ },
+ "flowDirective": {
+ "additionalProperties": false,
+ "anyOf": [
+ {
+ "type": "string",
+ "enum": [
+ "continue",
+ "exit",
+ "end"
+ ],
+ "default": "continue"
+ },
+ {
+ "type": "string"
+ }
+ ]
+ },
+ "authenticationPolicy": {
+ "type": "object",
+ "oneOf": [
+ {
+ "properties": {
+ "basic": {
+ "type": "object",
+ "properties": {
+ "username": {
+ "type": "string",
+ "description": "The username to use."
+ },
+ "password": {
+ "type": "string",
+ "description": "The password to use."
+ }
+ },
+ "required": [
+ "username",
+ "password"
+ ]
+ }
+ },
+ "required": [
+ "basic"
+ ],
+ "description": "Use basic authentication."
+ },
+ {
+ "properties": {
+ "bearer": {
+ "type": "object",
+ "properties": {
+ "token": {
+ "type": "string",
+ "description": "The bearer token to use."
+ }
+ },
+ "required": [
+ "token"
+ ]
+ }
+ },
+ "required": [
+ "bearer"
+ ],
+ "description": "Use bearer authentication."
+ },
+ {
+ "properties": {
+ "oauth2": {
+ "type": "object",
+ "properties": {
+ "authority": {
+ "type": "string",
+ "format": "uri",
+ "description": "The URI that references the OAuth2 authority to use."
+ },
+ "grant": {
+ "type": "string",
+ "description": "The grant type to use."
+ },
+ "client": {
+ "type": "object",
+ "properties": {
+ "id": {
+ "type": "string",
+ "description": "The client id to use."
+ },
+ "secret": {
+ "type": "string",
+ "description": "The client secret to use, if any."
+ }
+ },
+ "required": [
+ "id"
+ ]
+ },
+ "scopes": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ },
+ "description": "The scopes, if any, to request the token for."
+ },
+ "audiences": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ },
+ "description": "The audiences, if any, to request the token for."
+ },
+ "username": {
+ "type": "string",
+ "description": "The username to use. Used only if the grant type is Password."
+ },
+ "password": {
+ "type": "string",
+ "description": "The password to use. Used only if the grant type is Password."
+ },
+ "subject": {
+ "$ref": "#/$defs/oauth2Token",
+ "description": "The security token that represents the identity of the party on behalf of whom the request is being made."
+ },
+ "actor": {
+ "$ref": "#/$defs/oauth2Token",
+ "description": "The security token that represents the identity of the acting party."
+ }
+ },
+ "required": [
+ "authority",
+ "grant",
+ "client"
+ ]
+ }
+ },
+ "required": [
+ "oauth2"
+ ],
+ "description": "Use OAUTH2 authentication."
+ }
+ ],
+ "description": "Defines an authentication policy."
+ },
+ "oauth2Token": {
+ "type": "object",
+ "properties": {
+ "token": {
+ "type": "string",
+ "description": "The security token to use to use."
+ },
+ "type": {
+ "type": "string",
+ "description": "The type of the security token to use to use."
+ }
+ },
+ "required": [
+ "token",
+ "type"
+ ]
+ },
+ "duration": {
+ "type": "object",
+ "minProperties": 1,
+ "properties": {
+ "days": {
+ "type": "integer",
+ "description": "Number of days, if any."
+ },
+ "hours": {
+ "type": "integer",
+ "description": "Number of days, if any."
+ },
+ "minutes": {
+ "type": "integer",
+ "description": "Number of minutes, if any."
+ },
+ "seconds": {
+ "type": "integer",
+ "description": "Number of seconds, if any."
+ },
+ "milliseconds": {
+ "type": "integer",
+ "description": "Number of milliseconds, if any."
+ }
+ },
+ "description": "The definition of a duration."
+ },
+ "error": {
+ "type": "object",
+ "properties": {
+ "type": {
+ "type": "string",
+ "format": "uri",
+ "description": "A URI reference that identifies the error type."
+ },
+ "status": {
+ "type": "integer",
+ "description": "The status code generated by the origin for this occurrence of the error."
+ },
+ "instance": {
+ "type": "string",
+ "format": "json-pointer",
+ "description": "A JSON Pointer used to reference the component the error originates from."
+ },
+ "title": {
+ "type": "string",
+ "description": "A short, human-readable summary of the error."
+ },
+ "detail": {
+ "type": "string",
+ "description": "A human-readable explanation specific to this occurrence of the error."
+ }
+ },
+ "required": [
+ "type",
+ "status",
+ "instance"
+ ]
+ },
+ "endpoint": {
+ "type": "object",
+ "properties": {
+ "uri": {
+ "type": "string",
+ "format": "uri-template",
+ "description": "The endpoint's URI."
+ },
+ "authentication": {
+ "description": "The authentication policy to use.",
+ "oneOf": [
+ {
+ "$ref": "#/$defs/authenticationPolicy"
+ },
+ {
+ "type": "string"
+ }
+ ]
+ }
+ },
+ "required": [
+ "uri"
+ ]
+ },
+ "eventConsumptionStrategy": {
+ "type": "object",
+ "oneOf": [
+ {
+ "properties": {
+ "all": {
+ "type": "array",
+ "items": {
+ "$ref": "#/$defs/eventFilter"
+ },
+ "description": "A list containing all the events that must be consumed."
+ }
+ },
+ "required": [
+ "all"
+ ]
+ },
+ {
+ "properties": {
+ "any": {
+ "type": "array",
+ "items": {
+ "$ref": "#/$defs/eventFilter"
+ },
+ "description": "A list containing any of the events to consume."
+ }
+ },
+ "required": [
+ "any"
+ ]
+ },
+ {
+ "properties": {
+ "one": {
+ "$ref": "#/$defs/eventFilter",
+ "description": "The single event to consume."
+ }
+ },
+ "required": [
+ "one"
+ ]
+ }
+ ]
+ },
+ "eventFilter": {
+ "type": "object",
+ "properties": {
+ "with": {
+ "type": "object",
+ "minProperties": 1,
+ "properties": {
+ "id": {
+ "type": "string",
+ "description": "The event's unique identifier"
+ },
+ "source": {
+ "type": "string",
+ "description": "Identifies the context in which an event happened"
+ },
+ "type": {
+ "type": "string",
+ "description": "This attribute contains a value describing the type of event related to the originating occurrence."
+ },
+ "time": {
+ "type": "string"
+ },
+ "subject": {
+ "type": "string"
+ },
+ "datacontenttype": {
+ "type": "string",
+ "description": "Content type of data value. This attribute enables data to carry any type of content, whereby format and encoding might differ from that of the chosen event format."
+ },
+ "dataschema": {
+ "type": "string"
+ }
+ },
+ "additionalProperties": true,
+ "description": "An event filter is a mechanism used to selectively process or handle events based on predefined criteria, such as event type, source, or specific attributes."
+ },
+ "correlate": {
+ "type": "object",
+ "additionalProperties": {
+ "type": "object",
+ "properties": {
+ "from": {
+ "type": "string",
+ "description": "A runtime expression used to extract the correlation value from the filtered event."
+ },
+ "expect": {
+ "type": "string",
+ "description": "A constant or a runtime expression, if any, used to determine whether or not the extracted correlation value matches expectations. If not set, the first extracted value will be used as the correlation's expectation."
+ }
+ },
+ "required": [
+ "from"
+ ]
+ },
+ "description": "A correlation is a link between events and data, established by mapping event attributes to specific data attributes, allowing for coordinated processing or handling based on event characteristics."
+ }
+ },
+ "required": [
+ "with"
+ ],
+ "description": "An event filter is a mechanism used to selectively process or handle events based on predefined criteria, such as event type, source, or specific attributes."
+ },
+ "extension": {
+ "type": "object",
+ "properties": {
+ "extend": {
+ "type": "string",
+ "enum": [
+ "call",
+ "composite",
+ "emit",
+ "for",
+ "listen",
+ "raise",
+ "run",
+ "set",
+ "switch",
+ "try",
+ "wait",
+ "all"
+ ],
+ "description": "The type of task to extend."
+ },
+ "when": {
+ "type": "string",
+ "description": "A runtime expression, if any, used to determine whether or not the extension should apply in the specified context."
+ },
+ "before": {
+ "description": "The task(s) to execute before the extended task, if any.",
+ "$ref": "#/$defs/taskList"
+ },
+ "after": {
+ "description": "The task(s) to execute after the extended task, if any.",
+ "$ref": "#/$defs/taskList"
+ }
+ },
+ "required": [
+ "extend"
+ ],
+ "description": "The definition of a an extension."
+ },
+ "externalResource": {
+ "oneOf": [
+ {
+ "type": "string",
+ "format": "uri"
+ },
+ {
+ "type": "object",
+ "properties": {
+ "uri": {
+ "type": "string",
+ "format": "uri",
+ "description": "The endpoint's URI."
+ },
+ "authentication": {
+ "description": "The authentication policy to use.",
+ "oneOf": [
+ {
+ "$ref": "#/$defs/authenticationPolicy"
+ },
+ {
+ "type": "string"
+ }
+ ]
+ },
+ "name": {
+ "type": "string",
+ "description": "The external resource's name, if any."
+ }
+ },
+ "required": [
+ "uri"
+ ]
+ }
+ ]
+ },
+ "input": {
+ "type": "object",
+ "properties": {
+ "schema": {
+ "$ref": "#/$defs/schema",
+ "description": "The schema used to describe and validate the input of the workflow or task."
+ },
+ "from": {
+ "type": "string",
+ "description": "A runtime expression, if any, used to mutate and/or filter the input of the workflow or task."
+ }
+ },
+ "description": "Configures the input of a workflow or task."
+ },
+ "output": {
+ "type": "object",
+ "properties": {
+ "schema": {
+ "$ref": "#/$defs/schema",
+ "description": "The schema used to describe and validate the output of the workflow or task."
+ },
+ "as": {
+ "type": "string",
+ "description": "A runtime expression, if any, used to mutate and/or filter the output of the workflow or task."
+ }
+ },
+ "description": "Configures the output of a workflow or task."
+ },
+ "export": {
+ "type": "object",
+ "properties": {
+ "schema": {
+ "$ref": "#/$defs/schema",
+ "description": "The schema used to describe and validate the workflow context."
+ },
+ "as": {
+ "type": "string",
+ "description": "A runtime expression, if any, used to export the output data to the context."
+ }
+ },
+ "description": "Set the content of the context."
+ },
+ "retryPolicy": {
+ "type": "object",
+ "properties": {
+ "when": {
+ "type": "string",
+ "description": "A runtime expression, if any, used to determine whether or not to retry running the task, in a given context."
+ },
+ "exceptWhen": {
+ "type": "string",
+ "description": "A runtime expression used to determine whether or not to retry running the task, in a given context."
+ },
+ "delay": {
+ "$ref": "#/$defs/duration",
+ "description": "The duration to wait between retry attempts."
+ },
+ "backoff": {
+ "type": "object",
+ "oneOf": [
+ {
+ "properties": {
+ "constant": {
+ "type": "object",
+ "description": "The definition of the constant backoff to use, if any."
+ }
+ },
+ "required": [
+ "constant"
+ ]
+ },
+ {
+ "properties": {
+ "exponential": {
+ "type": "object",
+ "description": "The definition of the exponential backoff to use, if any."
+ }
+ },
+ "required": [
+ "exponential"
+ ]
+ },
+ {
+ "properties": {
+ "linear": {
+ "type": "object",
+ "description": "The definition of the linear backoff to use, if any."
+ }
+ },
+ "required": [
+ "linear"
+ ]
+ }
+ ],
+ "description": "The retry duration backoff."
+ },
+ "limit": {
+ "type": "object",
+ "properties": {
+ "attempt": {
+ "type": "object",
+ "properties": {
+ "count": {
+ "type": "integer",
+ "description": "The maximum amount of retry attempts, if any."
+ },
+ "duration": {
+ "$ref": "#/$defs/duration",
+ "description": "The maximum duration for each retry attempt."
+ }
+ }
+ },
+ "duration": {
+ "$ref": "#/$defs/duration",
+ "description": "The duration limit, if any, for all retry attempts."
+ }
+ },
+ "description": "The retry limit, if any"
+ },
+ "jitter": {
+ "type": "object",
+ "properties": {
+ "from": {
+ "$ref": "#/$defs/duration",
+ "description": "The minimum duration of the jitter range"
+ },
+ "to": {
+ "$ref": "#/$defs/duration",
+ "description": "The maximum duration of the jitter range"
+ }
+ },
+ "required": [
+ "from",
+ "to"
+ ],
+ "description": "The parameters, if any, that control the randomness or variability of the delay between retry attempts."
+ }
+ },
+ "description": "Defines a retry policy."
+ },
+ "schema": {
+ "type": "object",
+ "properties": {
+ "format": {
+ "type": "string",
+ "default": "json",
+ "description": "The schema's format. Defaults to 'json'. The (optional) version of the format can be set using `{format}:{version}`."
+ }
+ },
+ "oneOf": [
+ {
+ "properties": {
+ "document": {
+ "description": "The schema's inline definition."
+ }
+ },
+ "required": [
+ "document"
+ ]
+ },
+ {
+ "properties": {
+ "resource": {
+ "$ref": "#/$defs/externalResource",
+ "description": "The schema's external resource."
+ }
+ },
+ "required": [
+ "resource"
+ ]
+ }
+ ],
+ "description": "Represents the definition of a schema."
+ },
+ "timeout": {
+ "type": "object",
+ "properties": {
+ "after": {
+ "$ref": "#/$defs/duration",
+ "description": "The duration after which to timeout."
+ }
+ },
+ "required": [
+ "after"
+ ],
+ "description": "The definition of a timeout."
+ }
+ },
+ "required": [
+ "document",
+ "do"
+ ]
+ }
\ No newline at end of file
diff --git a/public/schemas/1.0.0-alpha2/workflow.yaml b/public/schemas/1.0.0-alpha2/workflow.yaml
new file mode 100644
index 0000000..a76bf7f
--- /dev/null
+++ b/public/schemas/1.0.0-alpha2/workflow.yaml
@@ -0,0 +1,968 @@
+$id: https://open-workflow-specification.org/schemas/1.0.0-alpha2/workflow.yaml
+$schema: https://json-schema.org/draft/2020-12/schema
+description: Open Workflow Specification DSL - Workflow Schema
+type: object
+properties:
+ document:
+ type: object
+ properties:
+ dsl:
+ type: string
+ pattern: ^(0|[1-9]\d*)\.(0|[1-9]\d*)\.(0|[1-9]\d*)(?:-((?:0|[1-9]\d*|\d*[a-zA-Z-][0-9a-zA-Z-]*)(?:\.(?:0|[1-9]\d*|\d*[a-zA-Z-][0-9a-zA-Z-]*))*))?(?:\+([0-9a-zA-Z-]+(?:\.[0-9a-zA-Z-]+)*))?$
+ description: The version of the DSL used by the workflow.
+ namespace:
+ type: string
+ pattern: ^[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?$
+ description: The workflow's namespace.
+ name:
+ type: string
+ pattern: ^[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?$
+ description: The workflow's name.
+ version:
+ type: string
+ pattern: ^(0|[1-9]\d*)\.(0|[1-9]\d*)\.(0|[1-9]\d*)(?:-((?:0|[1-9]\d*|\d*[a-zA-Z-][0-9a-zA-Z-]*)(?:\.(?:0|[1-9]\d*|\d*[a-zA-Z-][0-9a-zA-Z-]*))*))?(?:\+([0-9a-zA-Z-]+(?:\.[0-9a-zA-Z-]+)*))?$
+ description: The workflow's semantic version.
+ title:
+ type: string
+ description: The workflow's title.
+ summary:
+ type: string
+ description: The workflow's Markdown summary.
+ tags:
+ type: object
+ description: A key/value mapping of the workflow's tags, if any.
+ additionalProperties: true
+ required: [ dsl, namespace, name, version ]
+ description: Documents the workflow
+ input:
+ $ref: '#/$defs/input'
+ description: Configures the workflow's input.
+ use:
+ type: object
+ properties:
+ authentications:
+ type: object
+ additionalProperties:
+ $ref: '#/$defs/authenticationPolicy'
+ description: The workflow's reusable authentication policies.
+ errors:
+ type: object
+ additionalProperties:
+ $ref: '#/$defs/error'
+ description: The workflow's reusable errors.
+ extensions:
+ type: array
+ items:
+ type: object
+ minProperties: 1
+ maxProperties: 1
+ additionalProperties:
+ $ref: '#/$defs/extension'
+ description: The workflow's extensions.
+ functions:
+ type: object
+ additionalProperties:
+ $ref: '#/$defs/task'
+ description: The workflow's reusable functions.
+ retries:
+ type: object
+ additionalProperties:
+ $ref: '#/$defs/retryPolicy'
+ description: The workflow's reusable retry policies.
+ secrets:
+ type: array
+ items:
+ type: string
+ description: The workflow's secrets.
+ description: Defines the workflow's reusable components.
+ do:
+ description: Defines the task(s) the workflow must perform
+ $ref: '#/$defs/taskList'
+ timeout:
+ $ref: '#/$defs/timeout'
+ description: The workflow's timeout configuration, if any.
+ output:
+ $ref: '#/$defs/output'
+ description: Configures the workflow's output.
+ schedule:
+ type: object
+ properties:
+ every:
+ $ref: '#/$defs/duration'
+ description: Specifies the duration of the interval at which the workflow should be executed.
+ cron:
+ type: string
+ description: Specifies the schedule using a cron expression, e.g., '0 0 * * *' for daily at midnight."
+ after:
+ $ref: '#/$defs/duration'
+ description: Specifies a delay duration that the workflow must wait before starting again after it completes.
+ on:
+ $ref: '#/$defs/eventConsumptionStrategy'
+ description: Specifies the events that trigger the workflow execution.
+ description: Schedules the workflow
+$defs:
+ taskList:
+ type: array
+ items:
+ type: object
+ minProperties: 1
+ maxProperties: 1
+ additionalProperties:
+ $ref: '#/$defs/task'
+ taskBase:
+ type: object
+ properties:
+ if:
+ type: string
+ description: A runtime expression, if any, used to determine whether or not the task should be run.
+ input:
+ $ref: '#/$defs/input'
+ description: Configure the task's input.
+ output:
+ $ref: '#/$defs/output'
+ description: Configure the task's output.
+ export:
+ $ref: '#/$defs/export'
+ description: Export task output to context.
+ timeout:
+ $ref: '#/$defs/timeout'
+ description: The task's timeout configuration, if any.
+ then:
+ $ref: '#/$defs/flowDirective'
+ description: The flow directive to be performed upon completion of the task.
+ task:
+ unevaluatedProperties: false
+ oneOf:
+ - $ref: '#/$defs/callTask'
+ - $ref: '#/$defs/doTask'
+ - $ref: '#/$defs/forkTask'
+ - $ref: '#/$defs/emitTask'
+ - $ref: '#/$defs/forTask'
+ - $ref: '#/$defs/listenTask'
+ - $ref: '#/$defs/raiseTask'
+ - $ref: '#/$defs/runTask'
+ - $ref: '#/$defs/setTask'
+ - $ref: '#/$defs/switchTask'
+ - $ref: '#/$defs/tryTask'
+ - $ref: '#/$defs/waitTask'
+ callTask:
+ oneOf:
+ - title: CallAsyncAPI
+ $ref: '#/$defs/taskBase'
+ type: object
+ required: [ call, with ]
+ unevaluatedProperties: false
+ properties:
+ call:
+ type: string
+ const: asyncapi
+ with:
+ type: object
+ properties:
+ document:
+ $ref: '#/$defs/externalResource'
+ description: The document that defines the AsyncAPI operation to call.
+ operationRef:
+ type: string
+ description: A reference to the AsyncAPI operation to call.
+ server:
+ type: string
+ description: A a reference to the server to call the specified AsyncAPI operation on. If not set, default to the first server matching the operation's channel.
+ message:
+ type: string
+ description: The name of the message to use. If not set, defaults to the first message defined by the operation.
+ binding:
+ type: string
+ description: The name of the binding to use. If not set, defaults to the first binding defined by the operation.
+ payload:
+ type: object
+ description: The payload to call the AsyncAPI operation with, if any.
+ authentication:
+ description: The authentication policy, if any, to use when calling the AsyncAPI operation.
+ oneOf:
+ - $ref: '#/$defs/authenticationPolicy'
+ - type: string
+ required: [ document, operationRef ]
+ additionalProperties: false
+ description: Defines the AsyncAPI call to perform.
+ - title: CallGRPC
+ $ref: '#/$defs/taskBase'
+ type: object
+ unevaluatedProperties: false
+ required: [ call, with ]
+ properties:
+ call:
+ type: string
+ const: grpc
+ with:
+ type: object
+ properties:
+ proto:
+ $ref: '#/$defs/externalResource'
+ description: The proto resource that describes the GRPC service to call.
+ service:
+ type: object
+ properties:
+ name:
+ type: string
+ description: The name of the GRPC service to call.
+ host:
+ type: string
+ pattern: ^[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?$
+ description: The hostname of the GRPC service to call.
+ port:
+ type: integer
+ min: 0
+ max: 65535
+ description: The port number of the GRPC service to call.
+ authentication:
+ description: The endpoint's authentication policy, if any.
+ oneOf:
+ - $ref: '#/$defs/authenticationPolicy'
+ - type: string
+ required: [ name, host ]
+ method:
+ type: string
+ description: The name of the method to call on the defined GRPC service.
+ arguments:
+ type: object
+ additionalProperties: true
+ description: The arguments, if any, to call the method with.
+ required: [ proto, service, method ]
+ additionalProperties: false
+ description: Defines the GRPC call to perform.
+ - title: CallHTTP
+ $ref: '#/$defs/taskBase'
+ type: object
+ unevaluatedProperties: false
+ required: [ call, with ]
+ properties:
+ call:
+ type: string
+ const: http
+ with:
+ type: object
+ properties:
+ method:
+ type: string
+ description: The HTTP method of the HTTP request to perform.
+ endpoint:
+ description: The HTTP endpoint to send the request to.
+ oneOf:
+ - $ref: '#/$defs/endpoint'
+ - type: string
+ format: uri-template
+ headers:
+ type: object
+ description: A name/value mapping of the headers, if any, of the HTTP request to perform.
+ body:
+ description: The body, if any, of the HTTP request to perform.
+ output:
+ type: string
+ enum: [ raw, content, response ]
+ description: The http call output format. Defaults to 'content'.
+ required: [ method, endpoint ]
+ additionalProperties: false
+ description: Defines the HTTP call to perform.
+ - title: CallOpenAPI
+ $ref: '#/$defs/taskBase'
+ type: object
+ unevaluatedProperties: false
+ required: [ call, with ]
+ properties:
+ call:
+ type: string
+ const: openapi
+ with:
+ type: object
+ properties:
+ document:
+ $ref: '#/$defs/externalResource'
+ description: The document that defines the OpenAPI operation to call.
+ operationId:
+ type: string
+ description: The id of the OpenAPI operation to call.
+ parameters:
+ type: object
+ additionalProperties: true
+ description: A name/value mapping of the parameters of the OpenAPI operation to call.
+ authentication:
+ description: The authentication policy, if any, to use when calling the OpenAPI operation.
+ oneOf:
+ - $ref: '#/$defs/authenticationPolicy'
+ - type: string
+ output:
+ type: string
+ enum: [ raw, content, response ]
+ description: The http call output format. Defaults to 'content'.
+ required: [ document, operationId ]
+ additionalProperties: false
+ description: Defines the OpenAPI call to perform.
+ - title: CallFunction
+ $ref: '#/$defs/taskBase'
+ type: object
+ unevaluatedProperties: false
+ required: [ call ]
+ properties:
+ call:
+ type: string
+ not:
+ enum: ["asyncapi", "grpc", "http", "openapi"]
+ description: The name of the function to call.
+ with:
+ type: object
+ additionalProperties: true
+ description: A name/value mapping of the parameters, if any, to call the function with.
+ forkTask:
+ description: Allows workflows to execute multiple tasks concurrently and optionally race them against each other, with a single possible winner, which sets the task's output.
+ $ref: '#/$defs/taskBase'
+ type: object
+ unevaluatedProperties: false
+ required: [ fork ]
+ properties:
+ fork:
+ type: object
+ required: [ branches ]
+ properties:
+ branches:
+ $ref: '#/$defs/taskList'
+ compete:
+ description: Indicates whether or not the concurrent tasks are racing against each other, with a single possible winner, which sets the composite task's output.
+ type: boolean
+ default: false
+ doTask:
+ description: Allows to execute a list of tasks in sequence
+ $ref: '#/$defs/taskBase'
+ type: object
+ unevaluatedProperties: false
+ required: [ do ]
+ properties:
+ do:
+ $ref: '#/$defs/taskList'
+ emitTask:
+ description: Allows workflows to publish events to event brokers or messaging systems, facilitating communication and coordination between different components and services.
+ $ref: '#/$defs/taskBase'
+ type: object
+ required: [ emit ]
+ unevaluatedProperties: false
+ properties:
+ emit:
+ type: object
+ properties:
+ event:
+ type: object
+ properties:
+ id:
+ type: string
+ description: The event's unique identifier
+ source:
+ type: string
+ format: uri
+ description: Identifies the context in which an event happened
+ type:
+ type: string
+ description: This attribute contains a value describing the type of event related to the originating occurrence.
+ time:
+ type: string
+ format: date-time
+ subject:
+ type: string
+ datacontenttype:
+ type: string
+ description: Content type of data value. This attribute enables data to carry any type of content, whereby format and encoding might differ from that of the chosen event format.
+ dataschema:
+ type: string
+ format: uri
+ required: [ source, type ]
+ additionalProperties: true
+ required: [ event ]
+ forTask:
+ description: Allows workflows to iterate over a collection of items, executing a defined set of subtasks for each item in the collection. This task type is instrumental in handling scenarios such as batch processing, data transformation, and repetitive operations across datasets.
+ $ref: '#/$defs/taskBase'
+ type: object
+ required: [ for, do ]
+ unevaluatedProperties: false
+ properties:
+ for:
+ type: object
+ properties:
+ each:
+ type: string
+ description: The name of the variable used to store the current item being enumerated.
+ default: item
+ in:
+ type: string
+ description: A runtime expression used to get the collection to enumerate.
+ at:
+ type: string
+ description: The name of the variable used to store the index of the current item being enumerated.
+ default: index
+ required: [ in ]
+ while:
+ type: string
+ description: A runtime expression that represents the condition, if any, that must be met for the iteration to continue.
+ do:
+ $ref: '#/$defs/taskList'
+ listenTask:
+ description: Provides a mechanism for workflows to await and react to external events, enabling event-driven behavior within workflow systems.
+ $ref: '#/$defs/taskBase'
+ type: object
+ required: [ listen ]
+ unevaluatedProperties: false
+ properties:
+ listen:
+ type: object
+ properties:
+ to:
+ $ref: '#/$defs/eventConsumptionStrategy'
+ description: Defines the event(s) to listen to.
+ required: [ to ]
+ raiseTask:
+ description: Intentionally triggers and propagates errors.
+ $ref: '#/$defs/taskBase'
+ type: object
+ required: [ raise ]
+ unevaluatedProperties: false
+ properties:
+ raise:
+ type: object
+ properties:
+ error:
+ $ref: '#/$defs/error'
+ description: Defines the error to raise.
+ required: [ error ]
+ runTask:
+ description: Provides the capability to execute external containers, shell commands, scripts, or workflows.
+ $ref: '#/$defs/taskBase'
+ type: object
+ required: [ run ]
+ unevaluatedProperties: false
+ properties:
+ run:
+ type: object
+ oneOf:
+ - properties:
+ container:
+ type: object
+ properties:
+ image:
+ type: string
+ description: The name of the container image to run.
+ command:
+ type: string
+ description: The command, if any, to execute on the container
+ ports:
+ type: object
+ description: The container's port mappings, if any.
+ volumes:
+ type: object
+ description: The container's volume mappings, if any.
+ environment:
+ type: object
+ description: A key/value mapping of the environment variables, if any, to use when running the configured process.
+ required: [ image ]
+ required: [ container ]
+ description: Enables the execution of external processes encapsulated within a containerized environment.
+ - properties:
+ script:
+ type: object
+ properties:
+ language:
+ type: string
+ description: The language of the script to run.
+ environment:
+ type: object
+ additionalProperties: true
+ description: A key/value mapping of the environment variables, if any, to use when running the configured process.
+ oneOf:
+ - properties:
+ code:
+ type: string
+ required: [ code ]
+ description: The script's code.
+ - properties:
+ source:
+ $ref: '#/$defs/externalResource'
+ description: The script's resource.
+ required: [ source ]
+ required: [ language ]
+ required: [ script ]
+ description: Enables the execution of custom scripts or code within a workflow, empowering workflows to perform specialized logic, data processing, or integration tasks by executing user-defined scripts written in various programming languages.
+ - properties:
+ shell:
+ type: object
+ properties:
+ command:
+ type: string
+ description: The shell command to run.
+ arguments:
+ type: object
+ additionalProperties: true
+ description: A list of the arguments of the shell command to run.
+ environment:
+ type: object
+ additionalProperties: true
+ description: A key/value mapping of the environment variables, if any, to use when running the configured process.
+ required: [ command ]
+ required: [ shell ]
+ description: Enables the execution of shell commands within a workflow, enabling workflows to interact with the underlying operating system and perform system-level operations, such as file manipulation, environment configuration, or system administration tasks.
+ - properties:
+ workflow:
+ type: object
+ properties:
+ namespace:
+ type: string
+ description: The namespace the workflow to run belongs to.
+ name:
+ type: string
+ description: The name of the workflow to run.
+ version:
+ type: string
+ default: latest
+ description: The version of the workflow to run. Defaults to latest
+ input:
+ type: object
+ additionalProperties: true
+ description: The data, if any, to pass as input to the workflow to execute. The value should be validated against the target workflow's input schema, if specified.
+ required: [ namespace, name, version ]
+ required: [ workflow ]
+ description: Enables the invocation and execution of nested workflows within a parent workflow, facilitating modularization, reusability, and abstraction of complex logic or business processes by encapsulating them into standalone workflow units.
+ setTask:
+ description: A task used to set data
+ $ref: '#/$defs/taskBase'
+ type: object
+ required: [ set ]
+ unevaluatedProperties: false
+ properties:
+ set:
+ type: object
+ minProperties: 1
+ additionalProperties: true
+ description: The data to set
+ switchTask:
+ description: Enables conditional branching within workflows, allowing them to dynamically select different paths based on specified conditions or criteria
+ $ref: '#/$defs/taskBase'
+ type: object
+ required: [ switch ]
+ unevaluatedProperties: false
+ properties:
+ switch:
+ type: array
+ minItems: 1
+ items:
+ type: object
+ minProperties: 1
+ maxProperties: 1
+ additionalProperties:
+ type: object
+ properties:
+ name:
+ type: string
+ description: The case's name.
+ when:
+ type: string
+ description: A runtime expression used to determine whether or not the case matches.
+ then:
+ $ref: '#/$defs/flowDirective'
+ description: The flow directive to execute when the case matches.
+ tryTask:
+ description: Serves as a mechanism within workflows to handle errors gracefully, potentially retrying failed tasks before proceeding with alternate ones.
+ $ref: '#/$defs/taskBase'
+ type: object
+ required: [ try, catch ]
+ unevaluatedProperties: false
+ properties:
+ try:
+ description: The task(s) to perform.
+ $ref: '#/$defs/taskList'
+ catch:
+ type: object
+ properties:
+ errors:
+ type: object
+ as:
+ type: string
+ description: The name of the runtime expression variable to save the error as. Defaults to 'error'.
+ when:
+ type: string
+ description: A runtime expression used to determine whether or not to catch the filtered error
+ exceptWhen:
+ type: string
+ description: A runtime expression used to determine whether or not to catch the filtered error
+ retry:
+ $ref: '#/$defs/retryPolicy'
+ description: The retry policy to use, if any, when catching errors.
+ do:
+ description: The definition of the task(s) to run when catching an error.
+ $ref: '#/$defs/taskList'
+ waitTask:
+ description: Allows workflows to pause or delay their execution for a specified period of time.
+ $ref: '#/$defs/taskBase'
+ type: object
+ required: [ wait ]
+ unevaluatedProperties: false
+ properties:
+ wait:
+ description: The amount of time to wait.
+ $ref: '#/$defs/duration'
+ flowDirective:
+ additionalProperties: false
+ anyOf:
+ - type: string
+ enum: [ continue, exit, end ]
+ default: continue
+ - type: string
+ authenticationPolicy:
+ type: object
+ oneOf:
+ - properties:
+ basic:
+ type: object
+ properties:
+ username:
+ type: string
+ description: The username to use.
+ password:
+ type: string
+ description: The password to use.
+ required: [ username, password ]
+ required: [ basic ]
+ description: Use basic authentication.
+ - properties:
+ bearer:
+ type: object
+ properties:
+ token:
+ type: string
+ description: The bearer token to use.
+ required: [ token ]
+ required: [ bearer ]
+ description: Use bearer authentication.
+ - properties:
+ oauth2:
+ type: object
+ properties:
+ authority:
+ type: string
+ format: uri
+ description: The URI that references the OAuth2 authority to use.
+ grant:
+ type: string
+ description: The grant type to use.
+ client:
+ type: object
+ properties:
+ id:
+ type: string
+ description: The client id to use.
+ secret:
+ type: string
+ description: The client secret to use, if any.
+ required: [ id ]
+ scopes:
+ type: array
+ items:
+ type: string
+ description: The scopes, if any, to request the token for.
+ audiences:
+ type: array
+ items:
+ type: string
+ description: The audiences, if any, to request the token for.
+ username:
+ type: string
+ description: The username to use. Used only if the grant type is Password.
+ password:
+ type: string
+ description: The password to use. Used only if the grant type is Password.
+ subject:
+ $ref: '#/$defs/oauth2Token'
+ description: The security token that represents the identity of the party on behalf of whom the request is being made.
+ actor:
+ $ref: '#/$defs/oauth2Token'
+ description: The security token that represents the identity of the acting party.
+ required: [ authority, grant, client ]
+ required: [ oauth2 ]
+ description: Use OAUTH2 authentication.
+ description: Defines an authentication policy.
+ oauth2Token:
+ type: object
+ properties:
+ token:
+ type: string
+ description: The security token to use to use.
+ type:
+ type: string
+ description: The type of the security token to use to use.
+ required: [ token, type ]
+ duration:
+ type: object
+ minProperties: 1
+ properties:
+ days:
+ type: integer
+ description: Number of days, if any.
+ hours:
+ type: integer
+ description: Number of days, if any.
+ minutes:
+ type: integer
+ description: Number of minutes, if any.
+ seconds:
+ type: integer
+ description: Number of seconds, if any.
+ milliseconds:
+ type: integer
+ description: Number of milliseconds, if any.
+ description: The definition of a duration.
+ error:
+ type: object
+ properties:
+ type:
+ type: string
+ format: uri
+ description: A URI reference that identifies the error type.
+ status:
+ type: integer
+ description: The status code generated by the origin for this occurrence of the error.
+ instance:
+ type: string
+ format: json-pointer
+ description: A JSON Pointer used to reference the component the error originates from.
+ title:
+ type: string
+ description: A short, human-readable summary of the error.
+ detail:
+ type: string
+ description: A human-readable explanation specific to this occurrence of the error.
+ required: [ type, status, instance ]
+ endpoint:
+ type: object
+ properties:
+ uri:
+ type: string
+ format: uri-template
+ description: The endpoint's URI.
+ authentication:
+ description: The authentication policy to use.
+ oneOf:
+ - $ref: '#/$defs/authenticationPolicy'
+ - type: string
+ required: [ uri ]
+ eventConsumptionStrategy:
+ type: object
+ oneOf:
+ - properties:
+ all:
+ type: array
+ items:
+ $ref: '#/$defs/eventFilter'
+ description: A list containing all the events that must be consumed.
+ required: [ all ]
+ - properties:
+ any:
+ type: array
+ items:
+ $ref: '#/$defs/eventFilter'
+ description: A list containing any of the events to consume.
+ required: [ any ]
+ - properties:
+ one:
+ $ref: '#/$defs/eventFilter'
+ description: The single event to consume.
+ required: [ one ]
+ eventFilter:
+ type: object
+ properties:
+ with:
+ type: object
+ minProperties: 1
+ properties:
+ id:
+ type: string
+ description: The event's unique identifier
+ source:
+ type: string
+ description: Identifies the context in which an event happened
+ type:
+ type: string
+ description: This attribute contains a value describing the type of event related to the originating occurrence.
+ time:
+ type: string
+ subject:
+ type: string
+ datacontenttype:
+ type: string
+ description: Content type of data value. This attribute enables data to carry any type of content, whereby format and encoding might differ from that of the chosen event format.
+ dataschema:
+ type: string
+ additionalProperties: true
+ description: An event filter is a mechanism used to selectively process or handle events based on predefined criteria, such as event type, source, or specific attributes.
+ correlate:
+ type: object
+ additionalProperties:
+ type: object
+ properties:
+ from:
+ type: string
+ description: A runtime expression used to extract the correlation value from the filtered event.
+ expect:
+ type: string
+ description: A constant or a runtime expression, if any, used to determine whether or not the extracted correlation value matches expectations. If not set, the first extracted value will be used as the correlation's expectation.
+ required: [ from ]
+ description: A correlation is a link between events and data, established by mapping event attributes to specific data attributes, allowing for coordinated processing or handling based on event characteristics.
+ required: [ with ]
+ description: An event filter is a mechanism used to selectively process or handle events based on predefined criteria, such as event type, source, or specific attributes.
+ extension:
+ type: object
+ properties:
+ extend:
+ type: string
+ enum: [ call, composite, emit, for, listen, raise, run, set, switch, try, wait, all ]
+ description: The type of task to extend.
+ when:
+ type: string
+ description: A runtime expression, if any, used to determine whether or not the extension should apply in the specified context.
+ before:
+ description: The task(s) to execute before the extended task, if any.
+ $ref: '#/$defs/taskList'
+ after:
+ description: The task(s) to execute after the extended task, if any.
+ $ref: '#/$defs/taskList'
+ required: [ extend ]
+ description: The definition of a an extension.
+ externalResource:
+ oneOf:
+ - type: string
+ format: uri
+ - type: object
+ properties:
+ uri:
+ type: string
+ format: uri
+ description: The endpoint's URI.
+ authentication:
+ description: The authentication policy to use.
+ oneOf:
+ - $ref: '#/$defs/authenticationPolicy'
+ - type: string
+ name:
+ type: string
+ description: The external resource's name, if any.
+ required: [ uri ]
+ input:
+ type: object
+ properties:
+ schema:
+ $ref: '#/$defs/schema'
+ description: The schema used to describe and validate the input of the workflow or task.
+ from:
+ type: string
+ description: A runtime expression, if any, used to mutate and/or filter the input of the workflow or task.
+ description: Configures the input of a workflow or task.
+ output:
+ type: object
+ properties:
+ schema:
+ $ref: '#/$defs/schema'
+ description: The schema used to describe and validate the output of the workflow or task.
+ as:
+ type: string
+ description: A runtime expression, if any, used to mutate and/or filter the output of the workflow or task.
+ description: Configures the output of a workflow or task.
+ export:
+ type: object
+ properties:
+ schema:
+ $ref: '#/$defs/schema'
+ description: The schema used to describe and validate the workflow context.
+ as:
+ type: string
+ description: A runtime expression, if any, used to export the output data to the context.
+ description: Set the content of the context.
+ retryPolicy:
+ type: object
+ properties:
+ when:
+ type: string
+ description: A runtime expression, if any, used to determine whether or not to retry running the task, in a given context.
+ exceptWhen:
+ type: string
+ description: A runtime expression used to determine whether or not to retry running the task, in a given context.
+ delay:
+ $ref: '#/$defs/duration'
+ description: The duration to wait between retry attempts.
+ backoff:
+ type: object
+ oneOf:
+ - properties:
+ constant:
+ type: object
+ description: The definition of the constant backoff to use, if any.
+ required: [ constant ]
+ - properties:
+ exponential:
+ type: object
+ description: The definition of the exponential backoff to use, if any.
+ required: [ exponential ]
+ - properties:
+ linear:
+ type: object
+ description: The definition of the linear backoff to use, if any.
+ required: [ linear ]
+ description: The retry duration backoff.
+ limit:
+ type: object
+ properties:
+ attempt:
+ type: object
+ properties:
+ count:
+ type: integer
+ description: The maximum amount of retry attempts, if any.
+ duration:
+ $ref: '#/$defs/duration'
+ description: The maximum duration for each retry attempt.
+ duration:
+ $ref: '#/$defs/duration'
+ description: The duration limit, if any, for all retry attempts.
+ description: The retry limit, if any
+ jitter:
+ type: object
+ properties:
+ from:
+ $ref: '#/$defs/duration'
+ description: The minimum duration of the jitter range
+ to:
+ $ref: '#/$defs/duration'
+ description: The maximum duration of the jitter range
+ required: [ from, to ]
+ description: The parameters, if any, that control the randomness or variability of the delay between retry attempts.
+ description: Defines a retry policy.
+ schema:
+ type: object
+ properties:
+ format:
+ type: string
+ default: json
+ description: The schema's format. Defaults to 'json'. The (optional) version of the format can be set using `{format}:{version}`.
+ oneOf:
+ - properties:
+ document:
+ description: The schema's inline definition.
+ required: [ document ]
+ - properties:
+ resource:
+ $ref: '#/$defs/externalResource'
+ description: The schema's external resource.
+ required: [ resource ]
+ description: Represents the definition of a schema.
+ timeout:
+ type: object
+ properties:
+ after:
+ $ref: '#/$defs/duration'
+ description: The duration after which to timeout.
+ required: [ after ]
+ description: The definition of a timeout.
+required: [ document, do ]
\ No newline at end of file
diff --git a/public/schemas/1.0.0-alpha3/workflow.json b/public/schemas/1.0.0-alpha3/workflow.json
new file mode 100644
index 0000000..723e4a3
--- /dev/null
+++ b/public/schemas/1.0.0-alpha3/workflow.json
@@ -0,0 +1,2246 @@
+{
+ "$id": "https://open-workflow-specification.org/schemas/1.0.0-alpha3/workflow.json",
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
+ "description": "Open Workflow Specification DSL - Workflow Schema.",
+ "type": "object",
+ "required": [
+ "document",
+ "do"
+ ],
+ "properties": {
+ "document": {
+ "type": "object",
+ "title": "Document",
+ "description": "Documents the workflow.",
+ "unevaluatedProperties": false,
+ "properties": {
+ "dsl": {
+ "type": "string",
+ "pattern": "^(0|[1-9]\\d*)\\.(0|[1-9]\\d*)\\.(0|[1-9]\\d*)(?:-((?:0|[1-9]\\d*|\\d*[a-zA-Z-][0-9a-zA-Z-]*)(?:\\.(?:0|[1-9]\\d*|\\d*[a-zA-Z-][0-9a-zA-Z-]*))*))?(?:\\+([0-9a-zA-Z-]+(?:\\.[0-9a-zA-Z-]+)*))?$",
+ "title": "WorkflowDSL",
+ "description": "The version of the DSL used by the workflow."
+ },
+ "namespace": {
+ "type": "string",
+ "pattern": "^[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?$",
+ "title": "WorkflowNamespace",
+ "description": "The workflow's namespace."
+ },
+ "name": {
+ "type": "string",
+ "pattern": "^[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?$",
+ "title": "WorkflowName",
+ "description": "The workflow's name."
+ },
+ "version": {
+ "type": "string",
+ "pattern": "^(0|[1-9]\\d*)\\.(0|[1-9]\\d*)\\.(0|[1-9]\\d*)(?:-((?:0|[1-9]\\d*|\\d*[a-zA-Z-][0-9a-zA-Z-]*)(?:\\.(?:0|[1-9]\\d*|\\d*[a-zA-Z-][0-9a-zA-Z-]*))*))?(?:\\+([0-9a-zA-Z-]+(?:\\.[0-9a-zA-Z-]+)*))?$",
+ "title": "WorkflowVersion",
+ "description": "The workflow's semantic version."
+ },
+ "title": {
+ "type": "string",
+ "title": "WorkflowTitle",
+ "description": "The workflow's title."
+ },
+ "summary": {
+ "type": "string",
+ "title": "WorkflowSummary",
+ "description": "The workflow's Markdown summary."
+ },
+ "tags": {
+ "type": "object",
+ "title": "WorkflowTags",
+ "description": "A key/value mapping of the workflow's tags, if any.",
+ "additionalProperties": true
+ },
+ "metadata": {
+ "type": "object",
+ "title": "WorkflowMetadata",
+ "description": "Holds additional information about the workflow.",
+ "additionalProperties": true
+ }
+ },
+ "required": [
+ "dsl",
+ "namespace",
+ "name",
+ "version"
+ ]
+ },
+ "input": {
+ "$ref": "#/$defs/input",
+ "title": "Input",
+ "description": "Configures the workflow's input."
+ },
+ "use": {
+ "type": "object",
+ "title": "Use",
+ "description": "Defines the workflow's reusable components.",
+ "unevaluatedProperties": false,
+ "properties": {
+ "authentications": {
+ "type": "object",
+ "title": "UseAuthentications",
+ "description": "The workflow's reusable authentication policies.",
+ "additionalProperties": {
+ "$ref": "#/$defs/authenticationPolicy"
+ }
+ },
+ "errors": {
+ "type": "object",
+ "title": "UseErrors",
+ "description": "The workflow's reusable errors.",
+ "additionalProperties": {
+ "$ref": "#/$defs/error"
+ }
+ },
+ "extensions": {
+ "type": "array",
+ "title": "UseExtensions",
+ "description": "The workflow's extensions.",
+ "items": {
+ "type": "object",
+ "title": "ExtensionItem",
+ "minProperties": 1,
+ "maxProperties": 1,
+ "additionalProperties": {
+ "$ref": "#/$defs/extension"
+ }
+ }
+ },
+ "functions": {
+ "type": "object",
+ "title": "UseFunctions",
+ "description": "The workflow's reusable functions.",
+ "additionalProperties": {
+ "$ref": "#/$defs/task"
+ }
+ },
+ "retries": {
+ "type": "object",
+ "title": "UseRetries",
+ "description": "The workflow's reusable retry policies.",
+ "additionalProperties": {
+ "$ref": "#/$defs/retryPolicy"
+ }
+ },
+ "secrets": {
+ "type": "array",
+ "title": "UseSecrets",
+ "description": "The workflow's reusable secrets.",
+ "items": {
+ "type": "string",
+ "description": "The workflow's secrets."
+ }
+ },
+ "timeouts": {
+ "type": "object",
+ "title": "UseTimeouts",
+ "description": "The workflow's reusable timeouts.",
+ "additionalProperties": {
+ "$ref": "#/$defs/timeout"
+ }
+ }
+ }
+ },
+ "do": {
+ "$ref": "#/$defs/taskList",
+ "title": "Do",
+ "description": "Defines the task(s) the workflow must perform."
+ },
+ "timeout": {
+ "oneOf": [
+ {
+ "$ref": "#/$defs/timeout",
+ "title": "TimeoutDefinition",
+ "description": "The workflow's timeout configuration, if any."
+ },
+ {
+ "type": "string",
+ "title": "TimeoutReference",
+ "description": "The name of the workflow's timeout, if any."
+ }
+ ]
+ },
+ "output": {
+ "$ref": "#/$defs/output",
+ "title": "Output",
+ "description": "Configures the workflow's output."
+ },
+ "schedule": {
+ "type": "object",
+ "title": "Schedule",
+ "description": "Schedules the workflow.",
+ "unevaluatedProperties": false,
+ "properties": {
+ "every": {
+ "$ref": "#/$defs/duration",
+ "title": "ScheduleEvery",
+ "description": "Specifies the duration of the interval at which the workflow should be executed."
+ },
+ "cron": {
+ "type": "string",
+ "title": "ScheduleCron",
+ "description": "Specifies the schedule using a cron expression, e.g., '0 0 * * *' for daily at midnight."
+ },
+ "after": {
+ "$ref": "#/$defs/duration",
+ "title": "ScheduleAfter",
+ "description": "Specifies a delay duration that the workflow must wait before starting again after it completes."
+ },
+ "on": {
+ "$ref": "#/$defs/eventConsumptionStrategy",
+ "title": "ScheduleOn",
+ "description": "Specifies the events that trigger the workflow execution."
+ }
+ }
+ }
+ },
+ "$defs": {
+ "taskList": {
+ "title": "TaskList",
+ "description": "List of named tasks to perform.",
+ "type": "array",
+ "items": {
+ "type": "object",
+ "title": "TaskItem",
+ "minProperties": 1,
+ "maxProperties": 1,
+ "additionalProperties": {
+ "$ref": "#/$defs/task"
+ }
+ }
+ },
+ "taskBase": {
+ "type": "object",
+ "title": "TaskBase",
+ "description": "An object inherited by all tasks.",
+ "properties": {
+ "if": {
+ "type": "string",
+ "title": "TaskBaseIf",
+ "description": "A runtime expression, if any, used to determine whether or not the task should be run."
+ },
+ "input": {
+ "$ref": "#/$defs/input",
+ "title": "TaskBaseInput",
+ "description": "Configure the task's input."
+ },
+ "output": {
+ "$ref": "#/$defs/output",
+ "title": "TaskBaseOutput",
+ "description": "Configure the task's output."
+ },
+ "export": {
+ "$ref": "#/$defs/export",
+ "title": "TaskBaseExport",
+ "description": "Export task output to context."
+ },
+ "timeout": {
+ "oneOf": [
+ {
+ "$ref": "#/$defs/timeout",
+ "title": "TaskTimeoutDefinition",
+ "description": "The task's timeout configuration, if any."
+ },
+ {
+ "type": "string",
+ "title": "TaskTimeoutReference",
+ "description": "The name of the task's timeout, if any."
+ }
+ ]
+ },
+ "then": {
+ "$ref": "#/$defs/flowDirective",
+ "title": "TaskBaseThen",
+ "description": "The flow directive to be performed upon completion of the task."
+ },
+ "metadata": {
+ "type": "object",
+ "title": "TaskMetadata",
+ "description": "Holds additional information about the task.",
+ "additionalProperties": true
+ }
+ }
+ },
+ "task": {
+ "title": "Task",
+ "description": "A discrete unit of work that contributes to achieving the overall objectives defined by the workflow.",
+ "unevaluatedProperties": false,
+ "oneOf": [
+ {
+ "$ref": "#/$defs/callTask"
+ },
+ {
+ "$ref": "#/$defs/doTask"
+ },
+ {
+ "$ref": "#/$defs/forkTask"
+ },
+ {
+ "$ref": "#/$defs/emitTask"
+ },
+ {
+ "$ref": "#/$defs/forTask"
+ },
+ {
+ "$ref": "#/$defs/listenTask"
+ },
+ {
+ "$ref": "#/$defs/raiseTask"
+ },
+ {
+ "$ref": "#/$defs/runTask"
+ },
+ {
+ "$ref": "#/$defs/setTask"
+ },
+ {
+ "$ref": "#/$defs/switchTask"
+ },
+ {
+ "$ref": "#/$defs/tryTask"
+ },
+ {
+ "$ref": "#/$defs/waitTask"
+ }
+ ]
+ },
+ "callTask": {
+ "title": "CallTask",
+ "description": "Defines the call to perform.",
+ "oneOf": [
+ {
+ "title": "CallAsyncAPI",
+ "description": "Defines the AsyncAPI call to perform.",
+ "$ref": "#/$defs/taskBase",
+ "type": "object",
+ "required": [
+ "call",
+ "with"
+ ],
+ "unevaluatedProperties": false,
+ "properties": {
+ "call": {
+ "type": "string",
+ "const": "asyncapi"
+ },
+ "with": {
+ "type": "object",
+ "title": "AsyncApiArguments",
+ "description": "The Async API call arguments.",
+ "properties": {
+ "document": {
+ "$ref": "#/$defs/externalResource",
+ "title": "WithAsyncAPIDocument",
+ "description": "The document that defines the AsyncAPI operation to call."
+ },
+ "operationRef": {
+ "type": "string",
+ "title": "WithAsyncAPIOperation",
+ "description": "A reference to the AsyncAPI operation to call."
+ },
+ "server": {
+ "type": "string",
+ "title": "WithAsyncAPIServer",
+ "description": "A a reference to the server to call the specified AsyncAPI operation on. If not set, default to the first server matching the operation's channel."
+ },
+ "message": {
+ "type": "string",
+ "title": "WithAsyncAPIMessage",
+ "description": "The name of the message to use. If not set, defaults to the first message defined by the operation."
+ },
+ "binding": {
+ "type": "string",
+ "title": "WithAsyncAPIBinding",
+ "description": "The name of the binding to use. If not set, defaults to the first binding defined by the operation."
+ },
+ "payload": {
+ "type": "object",
+ "title": "WithAsyncAPIPayload",
+ "description": "The payload to call the AsyncAPI operation with, if any."
+ },
+ "authentication": {
+ "$ref": "#/$defs/referenceableAuthenticationPolicy",
+ "title": "WithAsyncAPIAuthentication",
+ "description": "The authentication policy, if any, to use when calling the AsyncAPI operation."
+ }
+ },
+ "required": [
+ "document",
+ "operationRef"
+ ],
+ "unevaluatedProperties": false
+ }
+ }
+ },
+ {
+ "title": "CallGRPC",
+ "description": "Defines the GRPC call to perform.",
+ "$ref": "#/$defs/taskBase",
+ "type": "object",
+ "unevaluatedProperties": false,
+ "required": [
+ "call",
+ "with"
+ ],
+ "properties": {
+ "call": {
+ "type": "string",
+ "const": "grpc"
+ },
+ "with": {
+ "type": "object",
+ "title": "GRPCArguments",
+ "description": "The GRPC call arguments.",
+ "properties": {
+ "proto": {
+ "$ref": "#/$defs/externalResource",
+ "title": "WithGRPCProto",
+ "description": "The proto resource that describes the GRPC service to call."
+ },
+ "service": {
+ "type": "object",
+ "title": "WithGRPCService",
+ "unevaluatedProperties": false,
+ "properties": {
+ "name": {
+ "type": "string",
+ "title": "WithGRPCServiceName",
+ "description": "The name of the GRPC service to call."
+ },
+ "host": {
+ "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])?$"
+ },
+ "port": {
+ "type": "integer",
+ "title": "WithGRPCServicePost",
+ "description": "The port number of the GRPC service to call.",
+ "minimum": 0,
+ "maximum": 65535
+ },
+ "authentication": {
+ "$ref": "#/$defs/referenceableAuthenticationPolicy",
+ "title": "WithGRPCServiceAuthentication",
+ "description": "The endpoint's authentication policy, if any."
+ }
+ },
+ "required": [
+ "name",
+ "host"
+ ]
+ },
+ "method": {
+ "type": "string",
+ "title": "WithGRPCMethod",
+ "description": "The name of the method to call on the defined GRPC service."
+ },
+ "arguments": {
+ "type": "object",
+ "title": "WithGRPCArguments",
+ "description": "The arguments, if any, to call the method with.",
+ "additionalProperties": true
+ }
+ },
+ "required": [
+ "proto",
+ "service",
+ "method"
+ ],
+ "unevaluatedProperties": false
+ }
+ }
+ },
+ {
+ "title": "CallHTTP",
+ "description": "Defines the HTTP call to perform.",
+ "$ref": "#/$defs/taskBase",
+ "type": "object",
+ "unevaluatedProperties": false,
+ "required": [
+ "call",
+ "with"
+ ],
+ "properties": {
+ "call": {
+ "type": "string",
+ "const": "http"
+ },
+ "with": {
+ "type": "object",
+ "title": "HTTPArguments",
+ "description": "The HTTP call arguments.",
+ "properties": {
+ "method": {
+ "type": "string",
+ "title": "WithHTTPMethod",
+ "description": "The HTTP method of the HTTP request to perform."
+ },
+ "endpoint": {
+ "title": "WithHTTPEndpoint",
+ "description": "The HTTP endpoint to send the request to.",
+ "$ref": "#/$defs/endpoint"
+ },
+ "headers": {
+ "type": "object",
+ "title": "WithHTTPHeaders",
+ "description": "A name/value mapping of the headers, if any, of the HTTP request to perform."
+ },
+ "body": {
+ "title": "WithHTTPBody",
+ "description": "The body, if any, of the HTTP request to perform."
+ },
+ "query": {
+ "type": "object",
+ "title": "WithHTTPQuery",
+ "description": "A name/value mapping of the query parameters, if any, of the HTTP request to perform.",
+ "additionalProperties": true
+ },
+ "output": {
+ "type": "string",
+ "title": "WithHTTPOutput",
+ "description": "The http call output format. Defaults to 'content'.",
+ "enum": [
+ "raw",
+ "content",
+ "response"
+ ]
+ }
+ },
+ "required": [
+ "method",
+ "endpoint"
+ ],
+ "unevaluatedProperties": false
+ }
+ }
+ },
+ {
+ "title": "CallOpenAPI",
+ "description": "Defines the OpenAPI call to perform.",
+ "$ref": "#/$defs/taskBase",
+ "type": "object",
+ "unevaluatedProperties": false,
+ "required": [
+ "call",
+ "with"
+ ],
+ "properties": {
+ "call": {
+ "type": "string",
+ "const": "openapi"
+ },
+ "with": {
+ "type": "object",
+ "title": "OpenAPIArguments",
+ "description": "The OpenAPI call arguments.",
+ "properties": {
+ "document": {
+ "$ref": "#/$defs/externalResource",
+ "title": "WithOpenAPIDocument",
+ "description": "The document that defines the OpenAPI operation to call."
+ },
+ "operationId": {
+ "type": "string",
+ "title": "WithOpenAPIOperation",
+ "description": "The id of the OpenAPI operation to call."
+ },
+ "parameters": {
+ "type": "object",
+ "title": "WithOpenAPIParameters",
+ "description": "A name/value mapping of the parameters of the OpenAPI operation to call.",
+ "additionalProperties": true
+ },
+ "authentication": {
+ "$ref": "#/$defs/referenceableAuthenticationPolicy",
+ "title": "WithOpenAPIAuthentication",
+ "description": "The authentication policy, if any, to use when calling the OpenAPI operation."
+ },
+ "output": {
+ "type": "string",
+ "enum": [
+ "raw",
+ "content",
+ "response"
+ ],
+ "title": "WithOpenAPIOutput",
+ "description": "The http call output format. Defaults to 'content'."
+ }
+ },
+ "required": [
+ "document",
+ "operationId"
+ ],
+ "unevaluatedProperties": false
+ }
+ }
+ },
+ {
+ "title": "CallFunction",
+ "description": "Defines the function call to perform.",
+ "$ref": "#/$defs/taskBase",
+ "type": "object",
+ "unevaluatedProperties": false,
+ "required": [
+ "call"
+ ],
+ "properties": {
+ "call": {
+ "type": "string",
+ "not": {
+ "enum": [
+ "asyncapi",
+ "grpc",
+ "http",
+ "openapi"
+ ]
+ },
+ "description": "The name of the function to call."
+ },
+ "with": {
+ "type": "object",
+ "title": "FunctionArguments",
+ "description": "A name/value mapping of the parameters, if any, to call the function with.",
+ "additionalProperties": true
+ }
+ }
+ }
+ ]
+ },
+ "forkTask": {
+ "type": "object",
+ "$ref": "#/$defs/taskBase",
+ "title": "ForkTask",
+ "description": "Allows workflows to execute multiple tasks concurrently and optionally race them against each other, with a single possible winner, which sets the task's output.",
+ "unevaluatedProperties": false,
+ "required": [
+ "fork"
+ ],
+ "properties": {
+ "fork": {
+ "type": "object",
+ "title": "ForkTaskConfiguration",
+ "description": "The configuration of the branches to perform concurrently.",
+ "unevaluatedProperties": false,
+ "required": [
+ "branches"
+ ],
+ "properties": {
+ "branches": {
+ "$ref": "#/$defs/taskList",
+ "title": "ForkBranches"
+ },
+ "compete": {
+ "type": "boolean",
+ "title": "ForkCompete",
+ "description": "Indicates whether or not the concurrent tasks are racing against each other, with a single possible winner, which sets the composite task's output.",
+ "default": false
+ }
+ }
+ }
+ }
+ },
+ "doTask": {
+ "type": "object",
+ "$ref": "#/$defs/taskBase",
+ "title": "DoTask",
+ "description": "Allows to execute a list of tasks in sequence.",
+ "unevaluatedProperties": false,
+ "required": [
+ "do"
+ ],
+ "properties": {
+ "do": {
+ "$ref": "#/$defs/taskList",
+ "title": "DoTaskConfiguration",
+ "description": "The configuration of the tasks to perform sequentially."
+ }
+ }
+ },
+ "emitTask": {
+ "type": "object",
+ "$ref": "#/$defs/taskBase",
+ "title": "EmitTask",
+ "description": "Allows workflows to publish events to event brokers or messaging systems, facilitating communication and coordination between different components and services.",
+ "required": [
+ "emit"
+ ],
+ "unevaluatedProperties": false,
+ "properties": {
+ "emit": {
+ "type": "object",
+ "title": "EmitTaskConfiguration",
+ "description": "The configuration of an event's emission.",
+ "unevaluatedProperties": false,
+ "properties": {
+ "event": {
+ "type": "object",
+ "title": "EmitEventDefinition",
+ "description": "The definition of the event to emit.",
+ "properties": {
+ "with": {
+ "$ref": "#/$defs/eventProperties",
+ "title": "EmitEventWith",
+ "description": "Defines the properties of event to emit.",
+ "required": [
+ "source",
+ "type"
+ ]
+ }
+ },
+ "additionalProperties": true
+ }
+ },
+ "required": [
+ "event"
+ ]
+ }
+ }
+ },
+ "forTask": {
+ "type": "object",
+ "$ref": "#/$defs/taskBase",
+ "title": "ForTask",
+ "description": "Allows workflows to iterate over a collection of items, executing a defined set of subtasks for each item in the collection. This task type is instrumental in handling scenarios such as batch processing, data transformation, and repetitive operations across datasets.",
+ "required": [
+ "for",
+ "do"
+ ],
+ "unevaluatedProperties": false,
+ "properties": {
+ "for": {
+ "type": "object",
+ "title": "ForTaskConfiguration",
+ "description": "The definition of the loop that iterates over a range of values.",
+ "unevaluatedProperties": false,
+ "properties": {
+ "each": {
+ "type": "string",
+ "title": "ForEach",
+ "description": "The name of the variable used to store the current item being enumerated.",
+ "default": "item"
+ },
+ "in": {
+ "type": "string",
+ "title": "ForIn",
+ "description": "A runtime expression used to get the collection to enumerate."
+ },
+ "at": {
+ "type": "string",
+ "title": "ForAt",
+ "description": "The name of the variable used to store the index of the current item being enumerated.",
+ "default": "index"
+ }
+ },
+ "required": [
+ "in"
+ ]
+ },
+ "while": {
+ "type": "string",
+ "title": "While",
+ "description": "A runtime expression that represents the condition, if any, that must be met for the iteration to continue."
+ },
+ "do": {
+ "$ref": "#/$defs/taskList",
+ "title": "ForTaskDo"
+ }
+ }
+ },
+ "listenTask": {
+ "type": "object",
+ "$ref": "#/$defs/taskBase",
+ "title": "ListenTask",
+ "description": "Provides a mechanism for workflows to await and react to external events, enabling event-driven behavior within workflow systems.",
+ "required": [
+ "listen"
+ ],
+ "unevaluatedProperties": false,
+ "properties": {
+ "listen": {
+ "type": "object",
+ "title": "ListenTaskConfiguration",
+ "description": "The configuration of the listener to use.",
+ "unevaluatedProperties": false,
+ "properties": {
+ "to": {
+ "$ref": "#/$defs/eventConsumptionStrategy",
+ "title": "ListenTo",
+ "description": "Defines the event(s) to listen to."
+ }
+ },
+ "required": [
+ "to"
+ ]
+ }
+ }
+ },
+ "raiseTask": {
+ "type": "object",
+ "$ref": "#/$defs/taskBase",
+ "title": "RaiseTask",
+ "description": "Intentionally triggers and propagates errors.",
+ "required": [
+ "raise"
+ ],
+ "unevaluatedProperties": false,
+ "properties": {
+ "raise": {
+ "type": "object",
+ "title": "RaiseTaskConfiguration",
+ "description": "The definition of the error to raise.",
+ "unevaluatedProperties": false,
+ "properties": {
+ "error": {
+ "oneOf": [
+ {
+ "$ref": "#/$defs/error",
+ "title": "RaiseErrorDefinition",
+ "description": "Defines the error to raise."
+ },
+ {
+ "type": "string",
+ "title": "RaiseErrorReference",
+ "description": "The name of the error to raise"
+ }
+ ]
+ }
+ },
+ "required": [
+ "error"
+ ]
+ }
+ }
+ },
+ "runTask": {
+ "type": "object",
+ "$ref": "#/$defs/taskBase",
+ "title": "RunTask",
+ "description": "Provides the capability to execute external containers, shell commands, scripts, or workflows.",
+ "required": [
+ "run"
+ ],
+ "unevaluatedProperties": false,
+ "properties": {
+ "run": {
+ "type": "object",
+ "title": "RunTaskConfiguration",
+ "description": "The configuration of the process to execute.",
+ "unevaluatedProperties": false,
+ "properties": {
+ "await": {
+ "type": "boolean",
+ "default": true,
+ "title": "AwaitProcessCompletion",
+ "description": "Whether to await the process completion before continuing."
+ }
+ },
+ "oneOf": [
+ {
+ "title": "RunContainer",
+ "description": "Enables the execution of external processes encapsulated within a containerized environment.",
+ "properties": {
+ "container": {
+ "type": "object",
+ "title": "Container",
+ "description": "The configuration of the container to run.",
+ "unevaluatedProperties": false,
+ "properties": {
+ "image": {
+ "type": "string",
+ "title": "ContainerImage",
+ "description": "The name of the container image to run."
+ },
+ "command": {
+ "type": "string",
+ "title": "ContainerCommand",
+ "description": "The command, if any, to execute on the container."
+ },
+ "ports": {
+ "type": "object",
+ "title": "ContainerPorts",
+ "description": "The container's port mappings, if any."
+ },
+ "volumes": {
+ "type": "object",
+ "title": "ContainerVolumes",
+ "description": "The container's volume mappings, if any."
+ },
+ "environment": {
+ "type": "object",
+ "title": "ContainerEnvironment",
+ "description": "A key/value mapping of the environment variables, if any, to use when running the configured process."
+ }
+ },
+ "required": [
+ "image"
+ ]
+ }
+ },
+ "required": [
+ "container"
+ ]
+ },
+ {
+ "title": "RunScript",
+ "description": "Enables the execution of custom scripts or code within a workflow, empowering workflows to perform specialized logic, data processing, or integration tasks by executing user-defined scripts written in various programming languages.",
+ "properties": {
+ "script": {
+ "type": "object",
+ "title": "Script",
+ "description": "The configuration of the script to run.",
+ "unevaluatedProperties": false,
+ "properties": {
+ "language": {
+ "type": "string",
+ "title": "ScriptLanguage",
+ "description": "The language of the script to run."
+ },
+ "arguments": {
+ "type": "object",
+ "title": "ScriptArguments",
+ "description": "A key/value mapping of the arguments, if any, to use when running the configured script.",
+ "additionalProperties": true
+ },
+ "environment": {
+ "type": "object",
+ "title": "ScriptEnvironment",
+ "description": "A key/value mapping of the environment variables, if any, to use when running the configured script process.",
+ "additionalProperties": true
+ }
+ },
+ "oneOf": [
+ {
+ "title": "InlineScript",
+ "type": "object",
+ "description": "The script's code.",
+ "properties": {
+ "code": {
+ "type": "string",
+ "title": "InlineScriptCode"
+ }
+ },
+ "required": [
+ "code"
+ ]
+ },
+ {
+ "title": "ExternalScript",
+ "type": "object",
+ "description": "The script's resource.",
+ "properties": {
+ "source": {
+ "$ref": "#/$defs/externalResource",
+ "title": "ExternalScriptResource"
+ }
+ },
+ "required": [
+ "source"
+ ]
+ }
+ ],
+ "required": [
+ "language"
+ ]
+ }
+ },
+ "required": [
+ "script"
+ ]
+ },
+ {
+ "title": "RunShell",
+ "description": "Enables the execution of shell commands within a workflow, enabling workflows to interact with the underlying operating system and perform system-level operations, such as file manipulation, environment configuration, or system administration tasks.",
+ "properties": {
+ "shell": {
+ "type": "object",
+ "title": "Shell",
+ "description": "The configuration of the shell command to run.",
+ "unevaluatedProperties": false,
+ "properties": {
+ "command": {
+ "type": "string",
+ "title": "ShellCommand",
+ "description": "The shell command to run."
+ },
+ "arguments": {
+ "type": "object",
+ "title": "ShellArguments",
+ "description": "A list of the arguments of the shell command to run.",
+ "additionalProperties": true
+ },
+ "environment": {
+ "type": "object",
+ "title": "ShellEnvironment",
+ "description": "A key/value mapping of the environment variables, if any, to use when running the configured process.",
+ "additionalProperties": true
+ }
+ },
+ "required": [
+ "command"
+ ]
+ }
+ },
+ "required": [
+ "shell"
+ ]
+ },
+ {
+ "title": "RunWorkflow",
+ "description": "Enables the invocation and execution of nested workflows within a parent workflow, facilitating modularization, reusability, and abstraction of complex logic or business processes by encapsulating them into standalone workflow units.",
+ "properties": {
+ "workflow": {
+ "type": "object",
+ "title": "SubflowConfiguration",
+ "description": "The configuration of the workflow to run.",
+ "unevaluatedProperties": false,
+ "properties": {
+ "namespace": {
+ "type": "string",
+ "title": "SubflowNamespace",
+ "description": "The namespace the workflow to run belongs to."
+ },
+ "name": {
+ "type": "string",
+ "title": "SubflowName",
+ "description": "The name of the workflow to run."
+ },
+ "version": {
+ "type": "string",
+ "default": "latest",
+ "title": "SubflowVersion",
+ "description": "The version of the workflow to run. Defaults to latest."
+ },
+ "input": {
+ "type": "object",
+ "title": "SubflowInput",
+ "description": "The data, if any, to pass as input to the workflow to execute. The value should be validated against the target workflow's input schema, if specified.",
+ "additionalProperties": true
+ }
+ },
+ "required": [
+ "namespace",
+ "name",
+ "version"
+ ]
+ }
+ },
+ "required": [
+ "workflow"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ "setTask": {
+ "type": "object",
+ "$ref": "#/$defs/taskBase",
+ "title": "SetTask",
+ "description": "A task used to set data.",
+ "required": [
+ "set"
+ ],
+ "unevaluatedProperties": false,
+ "properties": {
+ "set": {
+ "type": "object",
+ "title": "SetTaskConfiguration",
+ "description": "The data to set.",
+ "minProperties": 1,
+ "additionalProperties": true
+ }
+ }
+ },
+ "switchTask": {
+ "type": "object",
+ "$ref": "#/$defs/taskBase",
+ "title": "SwitchTask",
+ "description": "Enables conditional branching within workflows, allowing them to dynamically select different paths based on specified conditions or criteria.",
+ "required": [
+ "switch"
+ ],
+ "unevaluatedProperties": false,
+ "properties": {
+ "switch": {
+ "type": "array",
+ "title": "SwitchTaskConfiguration",
+ "description": "The definition of the switch to use.",
+ "minItems": 1,
+ "items": {
+ "type": "object",
+ "title": "SwitchItem",
+ "minProperties": 1,
+ "maxProperties": 1,
+ "additionalProperties": {
+ "type": "object",
+ "title": "SwitchCase",
+ "description": "The definition of a case within a switch task, defining a condition and corresponding tasks to execute if the condition is met.",
+ "unevaluatedProperties": false,
+ "required": [
+ "then"
+ ],
+ "properties": {
+ "when": {
+ "type": "string",
+ "title": "SwitchCaseCondition",
+ "description": "A runtime expression used to determine whether or not the case matches."
+ },
+ "then": {
+ "$ref": "#/$defs/flowDirective",
+ "title": "SwitchCaseOutcome",
+ "description": "The flow directive to execute when the case matches."
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "tryTask": {
+ "type": "object",
+ "$ref": "#/$defs/taskBase",
+ "title": "TryTask",
+ "description": "Serves as a mechanism within workflows to handle errors gracefully, potentially retrying failed tasks before proceeding with alternate ones.",
+ "required": [
+ "try",
+ "catch"
+ ],
+ "unevaluatedProperties": false,
+ "properties": {
+ "try": {
+ "$ref": "#/$defs/taskList",
+ "title": "TryTaskConfiguration",
+ "description": "The task(s) to perform."
+ },
+ "catch": {
+ "type": "object",
+ "title": "TryTaskCatch",
+ "description": "The object used to define the errors to catch.",
+ "unevaluatedProperties": false,
+ "properties": {
+ "errors": {
+ "type": "object",
+ "title": "CatchErrors",
+ "description": "The configuration of a concept used to catch errors."
+ },
+ "as": {
+ "type": "string",
+ "title": "CatchAs",
+ "description": "The name of the runtime expression variable to save the error as. Defaults to 'error'."
+ },
+ "when": {
+ "type": "string",
+ "title": "CatchWhen",
+ "description": "A runtime expression used to determine whether or not to catch the filtered error."
+ },
+ "exceptWhen": {
+ "type": "string",
+ "title": "CatchExceptWhen",
+ "description": "A runtime expression used to determine whether or not to catch the filtered error."
+ },
+ "retry": {
+ "oneOf": [
+ {
+ "$ref": "#/$defs/retryPolicy",
+ "title": "RetryPolicyDefinition",
+ "description": "The retry policy to use, if any, when catching errors."
+ },
+ {
+ "type": "string",
+ "title": "RetryPolicyReference",
+ "description": "The name of the retry policy to use, if any, when catching errors."
+ }
+ ]
+ },
+ "do": {
+ "$ref": "#/$defs/taskList",
+ "title": "TryTaskCatchDo",
+ "description": "The definition of the task(s) to run when catching an error."
+ }
+ }
+ }
+ }
+ },
+ "waitTask": {
+ "type": "object",
+ "$ref": "#/$defs/taskBase",
+ "title": "WaitTask",
+ "description": "Allows workflows to pause or delay their execution for a specified period of time.",
+ "required": [
+ "wait"
+ ],
+ "unevaluatedProperties": false,
+ "properties": {
+ "wait": {
+ "$ref": "#/$defs/duration",
+ "title": "WaitTaskConfiguration",
+ "description": "The amount of time to wait."
+ }
+ }
+ },
+ "flowDirective": {
+ "title": "FlowDirective",
+ "description": "Represents different transition options for a workflow.",
+ "anyOf": [
+ {
+ "type": "string",
+ "enum": [
+ "continue",
+ "exit",
+ "end"
+ ],
+ "default": "continue"
+ },
+ {
+ "type": "string"
+ }
+ ]
+ },
+ "referenceableAuthenticationPolicy": {
+ "type": "object",
+ "title": "ReferenceableAuthenticationPolicy",
+ "description": "Represents a referenceable authentication policy.",
+ "unevaluatedProperties": false,
+ "oneOf": [
+ {
+ "title": "AuthenticationPolicyReference",
+ "description": "The reference of the authentication policy to use.",
+ "properties": {
+ "use": {
+ "type": "string",
+ "minLength": 1,
+ "title": "ReferenceableAuthenticationPolicyName",
+ "description": "The name of the authentication policy to use."
+ }
+ },
+ "required": [
+ "use"
+ ]
+ },
+ {
+ "$ref": "#/$defs/authenticationPolicy"
+ }
+ ]
+ },
+ "secretBasedAuthenticationPolicy": {
+ "type": "object",
+ "title": "SecretBasedAuthenticationPolicy",
+ "description": "Represents an authentication policy based on secrets.",
+ "unevaluatedProperties": false,
+ "properties": {
+ "use": {
+ "type": "string",
+ "minLength": 1,
+ "title": "SecretBasedAuthenticationPolicyName",
+ "description": "The name of the authentication policy to use."
+ }
+ },
+ "required": [
+ "use"
+ ]
+ },
+ "authenticationPolicy": {
+ "type": "object",
+ "title": "AuthenticationPolicy",
+ "description": "Defines an authentication policy.",
+ "oneOf": [
+ {
+ "title": "BasicAuthenticationPolicy",
+ "description": "Use basic authentication.",
+ "properties": {
+ "basic": {
+ "type": "object",
+ "title": "BasicAuthenticationPolicyConfiguration",
+ "description": "The configuration of the basic authentication policy.",
+ "unevaluatedProperties": false,
+ "oneOf": [
+ {
+ "title": "BasicAuthenticationProperties",
+ "description": "Inline configuration of the basic authentication policy.",
+ "properties": {
+ "username": {
+ "type": "string",
+ "description": "The username to use."
+ },
+ "password": {
+ "type": "string",
+ "description": "The password to use."
+ }
+ },
+ "required": [
+ "username",
+ "password"
+ ]
+ },
+ {
+ "$ref": "#/$defs/secretBasedAuthenticationPolicy",
+ "title": "BasicAuthenticationPolicySecret",
+ "description": "Secret based configuration of the basic authentication policy."
+ }
+ ]
+ }
+ },
+ "required": [
+ "basic"
+ ]
+ },
+ {
+ "title": "BearerAuthenticationPolicy",
+ "description": "Use bearer authentication.",
+ "properties": {
+ "bearer": {
+ "type": "object",
+ "title": "BearerAuthenticationPolicyConfiguration",
+ "description": "The configuration of the bearer authentication policy.",
+ "unevaluatedProperties": false,
+ "oneOf": [
+ {
+ "title": "BearerAuthenticationProperties",
+ "description": "Inline configuration of the bearer authentication policy.",
+ "properties": {
+ "token": {
+ "type": "string",
+ "description": "The bearer token to use."
+ }
+ },
+ "required": [
+ "token"
+ ]
+ },
+ {
+ "$ref": "#/$defs/secretBasedAuthenticationPolicy",
+ "title": "BearerAuthenticationPolicySecret",
+ "description": "Secret based configuration of the bearer authentication policy."
+ }
+ ]
+ }
+ },
+ "required": [
+ "bearer"
+ ]
+ },
+ {
+ "title": "DigestAuthenticationPolicy",
+ "description": "Use digest authentication.",
+ "properties": {
+ "digest": {
+ "type": "object",
+ "title": "DigestAuthenticationPolicyConfiguration",
+ "description": "The configuration of the digest authentication policy.",
+ "unevaluatedProperties": false,
+ "oneOf": [
+ {
+ "title": "DigestAuthenticationProperties",
+ "description": "Inline configuration of the digest authentication policy.",
+ "properties": {
+ "username": {
+ "type": "string",
+ "description": "The username to use."
+ },
+ "password": {
+ "type": "string",
+ "description": "The password to use."
+ }
+ },
+ "required": [
+ "username",
+ "password"
+ ]
+ },
+ {
+ "$ref": "#/$defs/secretBasedAuthenticationPolicy",
+ "title": "DigestAuthenticationPolicySecret",
+ "description": "Secret based configuration of the digest authentication policy."
+ }
+ ]
+ }
+ },
+ "required": [
+ "digest"
+ ]
+ },
+ {
+ "title": "OAuth2AuthenticationPolicy",
+ "description": "Use OAuth2 authentication.",
+ "properties": {
+ "oauth2": {
+ "type": "object",
+ "title": "OAuth2AuthenticationPolicyConfiguration",
+ "description": "The configuration of the OAuth2 authentication policy.",
+ "unevaluatedProperties": false,
+ "oneOf": [
+ {
+ "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": {
+ "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."
+ }
+ ]
+ }
+ },
+ "required": [
+ "oauth2"
+ ]
+ },
+ {
+ "title": "OpenIdConnectAuthenticationPolicy",
+ "description": "Use OpenIdConnect authentication.",
+ "properties": {
+ "oidc": {
+ "type": "object",
+ "title": "OpenIdConnectAuthenticationPolicyConfiguration",
+ "description": "The configuration of the OpenIdConnect authentication policy.",
+ "unevaluatedProperties": false,
+ "oneOf": [
+ {
+ "$ref": "#/$defs/oauth2AuthenticationProperties",
+ "title": "OpenIdConnectAuthenticationProperties",
+ "description": "The inline configuration of the OpenIdConnect authentication policy.",
+ "unevaluatedProperties": false
+ },
+ {
+ "$ref": "#/$defs/secretBasedAuthenticationPolicy",
+ "title": "OpenIdConnectAuthenticationPolicySecret",
+ "description": "Secret based configuration of the OpenIdConnect authentication policy."
+ }
+ ]
+ }
+ },
+ "required": [
+ "oidc"
+ ]
+ }
+ ]
+ },
+ "oauth2AuthenticationProperties": {
+ "type": "object",
+ "title": "OAuth2AutenthicationData",
+ "description": "Inline configuration of the OAuth2 authentication policy.",
+ "properties": {
+ "authority": {
+ "type": "string",
+ "format": "uri-template",
+ "title": "OAuth2AutenthicationDataAuthority",
+ "description": "The URI that references the OAuth2 authority to use."
+ },
+ "grant": {
+ "type": "string",
+ "enum": [
+ "authorization_code",
+ "client_credentials",
+ "password",
+ "refresh_token",
+ "urn:ietf:params:oauth:grant-type:token-exchange"
+ ],
+ "title": "OAuth2AutenthicationDataGrant",
+ "description": "The grant type to use."
+ },
+ "client": {
+ "type": "object",
+ "title": "OAuth2AutenthicationDataClient",
+ "description": "The definition of an OAuth2 client.",
+ "unevaluatedProperties": false,
+ "properties": {
+ "id": {
+ "type": "string",
+ "title": "ClientId",
+ "description": "The client id to use."
+ },
+ "secret": {
+ "type": "string",
+ "title": "ClientSecret",
+ "description": "The client secret to use, if any."
+ },
+ "assertion": {
+ "type": "string",
+ "title": "ClientAssertion",
+ "description": "A JWT containing a signed assertion with your application credentials."
+ },
+ "authentication": {
+ "type": "string",
+ "enum": [
+ "client_secret_basic",
+ "client_secret_post",
+ "client_secret_jwt",
+ "private_key_jwt",
+ "none"
+ ],
+ "default": "client_secret_post",
+ "title": "ClientAuthentication",
+ "description": "The authentication method to use to authenticate the client."
+ }
+ }
+ },
+ "request": {
+ "type": "object",
+ "title": "OAuth2TokenRequest",
+ "description": "The configuration of an OAuth2 token request",
+ "properties": {
+ "encoding": {
+ "type": "string",
+ "enum": [
+ "application/x-www-form-urlencoded",
+ "application/json"
+ ],
+ "default": "application/x-www-form-urlencoded",
+ "title": "Oauth2TokenRequestEncoding"
+ }
+ }
+ },
+ "issuers": {
+ "type": "array",
+ "title": "OAuth2Issuers",
+ "description": "A list that contains that contains valid issuers that will be used to check against the issuer of generated tokens.",
+ "items": {
+ "type": "string"
+ }
+ },
+ "scopes": {
+ "type": "array",
+ "title": "OAuth2AutenthicationDataScopes",
+ "description": "The scopes, if any, to request the token for.",
+ "items": {
+ "type": "string"
+ }
+ },
+ "audiences": {
+ "type": "array",
+ "title": "OAuth2AutenthicationDataAudiences",
+ "description": "The audiences, if any, to request the token for.",
+ "items": {
+ "type": "string"
+ }
+ },
+ "username": {
+ "type": "string",
+ "title": "OAuth2AutenthicationDataUsername",
+ "description": "The username to use. Used only if the grant type is Password."
+ },
+ "password": {
+ "type": "string",
+ "title": "OAuth2AutenthicationDataPassword",
+ "description": "The password to use. Used only if the grant type is Password."
+ },
+ "subject": {
+ "$ref": "#/$defs/oauth2Token",
+ "title": "OAuth2AutenthicationDataSubject",
+ "description": "The security token that represents the identity of the party on behalf of whom the request is being made."
+ },
+ "actor": {
+ "$ref": "#/$defs/oauth2Token",
+ "title": "OAuth2AutenthicationDataActor",
+ "description": "The security token that represents the identity of the acting party."
+ }
+ }
+ },
+ "oauth2Token": {
+ "type": "object",
+ "title": "OAuth2TokenDefinition",
+ "description": "Represents an OAuth2 token.",
+ "unevaluatedProperties": false,
+ "properties": {
+ "token": {
+ "type": "string",
+ "title": "OAuth2Token",
+ "description": "The security token to use."
+ },
+ "type": {
+ "type": "string",
+ "title": "OAuth2TokenType",
+ "description": "The type of the security token to use."
+ }
+ },
+ "required": [
+ "token",
+ "type"
+ ]
+ },
+ "duration": {
+ "oneOf": [
+ {
+ "type": "object",
+ "minProperties": 1,
+ "unevaluatedProperties": false,
+ "properties": {
+ "days": {
+ "type": "integer",
+ "title": "DurationDays",
+ "description": "Number of days, if any."
+ },
+ "hours": {
+ "type": "integer",
+ "title": "DurationHours",
+ "description": "Number of days, if any."
+ },
+ "minutes": {
+ "type": "integer",
+ "title": "DurationMinutes",
+ "description": "Number of minutes, if any."
+ },
+ "seconds": {
+ "type": "integer",
+ "title": "DurationSeconds",
+ "description": "Number of seconds, if any."
+ },
+ "milliseconds": {
+ "type": "integer",
+ "title": "DurationMilliseconds",
+ "description": "Number of milliseconds, if any."
+ }
+ },
+ "title": "DurationInline",
+ "description": "The inline definition of a duration."
+ },
+ {
+ "type": "string",
+ "pattern": "^P(?!$)(\\d+(?:\\.\\d+)?Y)?(\\d+(?:\\.\\d+)?M)?(\\d+(?:\\.\\d+)?W)?(\\d+(?:\\.\\d+)?D)?(T(?=\\d)(\\d+(?:\\.\\d+)?H)?(\\d+(?:\\.\\d+)?M)?(\\d+(?:\\.\\d+)?S)?)?$",
+ "title": "DurationExpression",
+ "description": "The ISO 8601 expression of a duration."
+ }
+ ]
+ },
+ "error": {
+ "type": "object",
+ "title": "Error",
+ "description": "Represents an error.",
+ "unevaluatedProperties": false,
+ "properties": {
+ "type": {
+ "title": "ErrorType",
+ "description": "A URI reference that identifies the error type.",
+ "oneOf": [
+ {
+ "title": "LiteralErrorType",
+ "description": "The literal error type.",
+ "type": "string",
+ "format": "uri-template"
+ },
+ {
+ "$ref": "#/$defs/runtimeExpression",
+ "title": "ExpressionErrorType",
+ "description": "An expression based error type."
+ }
+ ]
+ },
+ "status": {
+ "type": "integer",
+ "title": "ErrorStatus",
+ "description": "The status code generated by the origin for this occurrence of the error."
+ },
+ "instance": {
+ "title": "ErrorInstance",
+ "description": "A JSON Pointer used to reference the component the error originates from.",
+ "oneOf": [
+ {
+ "title": "LiteralErrorInstance",
+ "description": "The literal error instance.",
+ "type": "string",
+ "format": "json-pointer"
+ },
+ {
+ "$ref": "#/$defs/runtimeExpression",
+ "title": "ExpressionErrorInstance",
+ "description": "An expression based error instance."
+ }
+ ]
+ },
+ "title": {
+ "type": "string",
+ "title": "ErrorTitle",
+ "description": "A short, human-readable summary of the error."
+ },
+ "detail": {
+ "type": "string",
+ "title": "ErrorDetails",
+ "description": "A human-readable explanation specific to this occurrence of the error."
+ }
+ },
+ "required": [
+ "type",
+ "status"
+ ]
+ },
+ "endpoint": {
+ "title": "Endpoint",
+ "description": "Represents an endpoint.",
+ "oneOf": [
+ {
+ "$ref": "#/$defs/runtimeExpression"
+ },
+ {
+ "title": "LiteralEndpoint",
+ "type": "string",
+ "format": "uri-template"
+ },
+ {
+ "title": "EndpointConfiguration",
+ "type": "object",
+ "unevaluatedProperties": false,
+ "properties": {
+ "uri": {
+ "title": "EndpointUri",
+ "description": "The endpoint's URI.",
+ "oneOf": [
+ {
+ "title": "LiteralEndpointURI",
+ "description": "The literal endpoint's URI.",
+ "type": "string",
+ "format": "uri-template"
+ },
+ {
+ "$ref": "#/$defs/runtimeExpression",
+ "title": "ExpressionEndpointURI",
+ "description": "An expression based endpoint's URI."
+ }
+ ]
+ },
+ "authentication": {
+ "$ref": "#/$defs/referenceableAuthenticationPolicy",
+ "title": "EndpointAuthentication",
+ "description": "The authentication policy to use."
+ }
+ },
+ "required": [
+ "uri"
+ ]
+ }
+ ]
+ },
+ "eventProperties": {
+ "type": "object",
+ "title": "EventProperties",
+ "description": "Describes the properties of an event.",
+ "properties": {
+ "id": {
+ "type": "string",
+ "title": "EventId",
+ "description": "The event's unique identifier."
+ },
+ "source": {
+ "title": "EventSource",
+ "description": "Identifies the context in which an event happened.",
+ "oneOf": [
+ {
+ "title": "LiteralSource",
+ "type": "string",
+ "format": "uri-template"
+ },
+ {
+ "$ref": "#/$defs/runtimeExpression"
+ }
+ ]
+ },
+ "type": {
+ "type": "string",
+ "title": "EventType",
+ "description": "This attribute contains a value describing the type of event related to the originating occurrence."
+ },
+ "time": {
+ "title": "EventTime",
+ "description": "When the event occured.",
+ "oneOf": [
+ {
+ "title": "LiteralTime",
+ "type": "string",
+ "format": "date-time"
+ },
+ {
+ "$ref": "#/$defs/runtimeExpression"
+ }
+ ]
+ },
+ "subject": {
+ "type": "string",
+ "title": "EventSubject",
+ "description": "The subject of the event."
+ },
+ "datacontenttype": {
+ "type": "string",
+ "title": "EventDataContentType",
+ "description": "Content type of data value. This attribute enables data to carry any type of content, whereby format and encoding might differ from that of the chosen event format."
+ },
+ "dataschema": {
+ "title": "EventDataschema",
+ "description": "The schema describing the event format.",
+ "oneOf": [
+ {
+ "title": "LiteralDataSchema",
+ "description": "The literal event data schema.",
+ "type": "string",
+ "format": "uri-template"
+ },
+ {
+ "$ref": "#/$defs/runtimeExpression",
+ "title": "ExpressionDataSchema",
+ "description": "An expression based event data schema."
+ }
+ ]
+ }
+ },
+ "additionalProperties": true
+ },
+ "eventConsumptionStrategy": {
+ "type": "object",
+ "title": "EventConsumptionStrategy",
+ "description": "Describe the event consumption strategy to adopt.",
+ "unevaluatedProperties": false,
+ "oneOf": [
+ {
+ "title": "AllEventConsumptionStrategy",
+ "properties": {
+ "all": {
+ "type": "array",
+ "title": "AllEventConsumptionStrategyConfiguration",
+ "description": "A list containing all the events that must be consumed.",
+ "items": {
+ "$ref": "#/$defs/eventFilter"
+ }
+ }
+ },
+ "required": [
+ "all"
+ ]
+ },
+ {
+ "title": "AnyEventConsumptionStrategy",
+ "properties": {
+ "any": {
+ "type": "array",
+ "title": "AnyEventConsumptionStrategyConfiguration",
+ "description": "A list containing any of the events to consume.",
+ "items": {
+ "$ref": "#/$defs/eventFilter"
+ }
+ }
+ },
+ "required": [
+ "any"
+ ]
+ },
+ {
+ "title": "OneEventConsumptionStrategy",
+ "properties": {
+ "one": {
+ "$ref": "#/$defs/eventFilter",
+ "title": "OneEventConsumptionStrategyConfiguration",
+ "description": "The single event to consume."
+ }
+ },
+ "required": [
+ "one"
+ ]
+ }
+ ]
+ },
+ "eventFilter": {
+ "type": "object",
+ "title": "EventFilter",
+ "description": "An event filter is a mechanism used to selectively process or handle events based on predefined criteria, such as event type, source, or specific attributes.",
+ "unevaluatedProperties": false,
+ "properties": {
+ "with": {
+ "$ref": "#/$defs/eventProperties",
+ "minProperties": 1,
+ "title": "WithEvent",
+ "description": "An event filter is a mechanism used to selectively process or handle events based on predefined criteria, such as event type, source, or specific attributes."
+ },
+ "correlate": {
+ "type": "object",
+ "title": "EventFilterCorrelate",
+ "description": "A correlation is a link between events and data, established by mapping event attributes to specific data attributes, allowing for coordinated processing or handling based on event characteristics.",
+ "additionalProperties": {
+ "type": "object",
+ "properties": {
+ "from": {
+ "type": "string",
+ "title": "CorrelateFrom",
+ "description": "A runtime expression used to extract the correlation value from the filtered event."
+ },
+ "expect": {
+ "type": "string",
+ "title": "CorrelateExpect",
+ "description": "A constant or a runtime expression, if any, used to determine whether or not the extracted correlation value matches expectations. If not set, the first extracted value will be used as the correlation's expectation."
+ }
+ },
+ "required": [
+ "from"
+ ]
+ }
+ }
+ },
+ "required": [
+ "with"
+ ]
+ },
+ "extension": {
+ "type": "object",
+ "title": "Extension",
+ "description": "The definition of an extension.",
+ "unevaluatedProperties": false,
+ "properties": {
+ "extend": {
+ "type": "string",
+ "enum": [
+ "call",
+ "composite",
+ "emit",
+ "for",
+ "listen",
+ "raise",
+ "run",
+ "set",
+ "switch",
+ "try",
+ "wait",
+ "all"
+ ],
+ "title": "ExtensionTarget",
+ "description": "The type of task to extend."
+ },
+ "when": {
+ "type": "string",
+ "title": "ExtensionCondition",
+ "description": "A runtime expression, if any, used to determine whether or not the extension should apply in the specified context."
+ },
+ "before": {
+ "$ref": "#/$defs/taskList",
+ "title": "ExtensionDoBefore",
+ "description": "The task(s) to execute before the extended task, if any."
+ },
+ "after": {
+ "$ref": "#/$defs/taskList",
+ "title": "ExtensionDoAfter",
+ "description": "The task(s) to execute after the extended task, if any."
+ }
+ },
+ "required": [
+ "extend"
+ ]
+ },
+ "externalResource": {
+ "type": "object",
+ "title": "ExternalResource",
+ "description": "Represents an external resource.",
+ "unevaluatedProperties": false,
+ "properties": {
+ "name": {
+ "type": "string",
+ "title": "ExternalResourceName",
+ "description": "The name of the external resource, if any."
+ },
+ "endpoint": {
+ "$ref": "#/$defs/endpoint",
+ "title": "ExternalResourceEndpoint",
+ "description": "The endpoint of the external resource."
+ }
+ },
+ "required": [
+ "endpoint"
+ ]
+ },
+ "input": {
+ "type": "object",
+ "title": "Input",
+ "description": "Configures the input of a workflow or task.",
+ "unevaluatedProperties": false,
+ "properties": {
+ "schema": {
+ "$ref": "#/$defs/schema",
+ "title": "InputSchema",
+ "description": "The schema used to describe and validate the input of the workflow or task."
+ },
+ "from": {
+ "title": "InputFrom",
+ "description": "A runtime expression, if any, used to mutate and/or filter the input of the workflow or task.",
+ "oneOf": [
+ {
+ "type": "string"
+ },
+ {
+ "type": "object"
+ }
+ ]
+ }
+ }
+ },
+ "output": {
+ "type": "object",
+ "title": "Output",
+ "description": "Configures the output of a workflow or task.",
+ "unevaluatedProperties": false,
+ "properties": {
+ "schema": {
+ "$ref": "#/$defs/schema",
+ "title": "OutputSchema",
+ "description": "The schema used to describe and validate the output of the workflow or task."
+ },
+ "as": {
+ "title": "OutputAs",
+ "description": "A runtime expression, if any, used to mutate and/or filter the output of the workflow or task.",
+ "oneOf": [
+ {
+ "type": "string"
+ },
+ {
+ "type": "object"
+ }
+ ]
+ }
+ }
+ },
+ "export": {
+ "type": "object",
+ "title": "Export",
+ "description": "Set the content of the context. .",
+ "unevaluatedProperties": false,
+ "properties": {
+ "schema": {
+ "$ref": "#/$defs/schema",
+ "title": "ExportSchema",
+ "description": "The schema used to describe and validate the workflow context."
+ },
+ "as": {
+ "title": "ExportAs",
+ "description": "A runtime expression, if any, used to export the output data to the context.",
+ "oneOf": [
+ {
+ "type": "string"
+ },
+ {
+ "type": "object"
+ }
+ ]
+ }
+ }
+ },
+ "retryPolicy": {
+ "type": "object",
+ "title": "RetryPolicy",
+ "description": "Defines a retry policy.",
+ "unevaluatedProperties": false,
+ "properties": {
+ "when": {
+ "type": "string",
+ "title": "RetryWhen",
+ "description": "A runtime expression, if any, used to determine whether or not to retry running the task, in a given context."
+ },
+ "exceptWhen": {
+ "type": "string",
+ "title": "RetryExcepWhen",
+ "description": "A runtime expression used to determine whether or not to retry running the task, in a given context."
+ },
+ "delay": {
+ "$ref": "#/$defs/duration",
+ "title": "RetryDelay",
+ "description": "The duration to wait between retry attempts."
+ },
+ "backoff": {
+ "type": "object",
+ "title": "RetryBackoff",
+ "description": "The retry duration backoff.",
+ "unevaluatedProperties": false,
+ "oneOf": [
+ {
+ "title": "ConstantBackoff",
+ "properties": {
+ "constant": {
+ "type": "object",
+ "description": "The definition of the constant backoff to use, if any."
+ }
+ },
+ "required": [
+ "constant"
+ ]
+ },
+ {
+ "title": "ExponentialBackOff",
+ "properties": {
+ "exponential": {
+ "type": "object",
+ "description": "The definition of the exponential backoff to use, if any."
+ }
+ },
+ "required": [
+ "exponential"
+ ]
+ },
+ {
+ "title": "LinearBackoff",
+ "properties": {
+ "linear": {
+ "type": "object",
+ "description": "The definition of the linear backoff to use, if any."
+ }
+ },
+ "required": [
+ "linear"
+ ]
+ }
+ ]
+ },
+ "limit": {
+ "type": "object",
+ "title": "RetryLimit",
+ "unevaluatedProperties": false,
+ "properties": {
+ "attempt": {
+ "type": "object",
+ "title": "RetryLimitAttempt",
+ "unevaluatedProperties": false,
+ "properties": {
+ "count": {
+ "type": "integer",
+ "title": "RetryLimitAttemptCount",
+ "description": "The maximum amount of retry attempts, if any."
+ },
+ "duration": {
+ "$ref": "#/$defs/duration",
+ "title": "RetryLimitAttemptDuration",
+ "description": "The maximum duration for each retry attempt."
+ }
+ }
+ },
+ "duration": {
+ "$ref": "#/$defs/duration",
+ "title": "RetryLimitDuration",
+ "description": "The duration limit, if any, for all retry attempts."
+ }
+ },
+ "description": "The retry limit, if any."
+ },
+ "jitter": {
+ "type": "object",
+ "title": "RetryPolicyJitter",
+ "description": "The parameters, if any, that control the randomness or variability of the delay between retry attempts.",
+ "unevaluatedProperties": false,
+ "properties": {
+ "from": {
+ "$ref": "#/$defs/duration",
+ "title": "RetryPolicyJitterFrom",
+ "description": "The minimum duration of the jitter range."
+ },
+ "to": {
+ "$ref": "#/$defs/duration",
+ "title": "RetryPolicyJitterTo",
+ "description": "The maximum duration of the jitter range."
+ }
+ },
+ "required": [
+ "from",
+ "to"
+ ]
+ }
+ }
+ },
+ "schema": {
+ "type": "object",
+ "title": "Schema",
+ "description": "Represents the definition of a schema.",
+ "unevaluatedProperties": false,
+ "properties": {
+ "format": {
+ "type": "string",
+ "default": "json",
+ "title": "SchemaFormat",
+ "description": "The schema's format. Defaults to 'json'. The (optional) version of the format can be set using `{format}:{version}`."
+ }
+ },
+ "oneOf": [
+ {
+ "title": "SchemaInline",
+ "properties": {
+ "document": {
+ "description": "The schema's inline definition."
+ }
+ },
+ "required": [
+ "document"
+ ]
+ },
+ {
+ "title": "SchemaExternal",
+ "properties": {
+ "resource": {
+ "$ref": "#/$defs/externalResource",
+ "title": "SchemaExternalResource",
+ "description": "The schema's external resource."
+ }
+ },
+ "required": [
+ "resource"
+ ]
+ }
+ ]
+ },
+ "timeout": {
+ "type": "object",
+ "title": "Timeout",
+ "description": "The definition of a timeout.",
+ "unevaluatedProperties": false,
+ "properties": {
+ "after": {
+ "$ref": "#/$defs/duration",
+ "title": "TimeoutAfter",
+ "description": "The duration after which to timeout."
+ }
+ },
+ "required": [
+ "after"
+ ]
+ },
+ "runtimeExpression": {
+ "type": "string",
+ "title": "RuntimeExpression",
+ "description": "A runtime expression.",
+ "pattern": "^\\s*\\$\\{.+\\}\\s*$"
+ }
+ }
+}
\ No newline at end of file
diff --git a/public/schemas/1.0.0-alpha3/workflow.yaml b/public/schemas/1.0.0-alpha3/workflow.yaml
new file mode 100644
index 0000000..7874a49
--- /dev/null
+++ b/public/schemas/1.0.0-alpha3/workflow.yaml
@@ -0,0 +1,1489 @@
+$id: https://open-workflow-specification.org/schemas/1.0.0-alpha3/workflow.yaml
+$schema: https://json-schema.org/draft/2020-12/schema
+description: Open Workflow Specification DSL - Workflow Schema.
+type: object
+required: [ document, do ]
+properties:
+ document:
+ type: object
+ title: Document
+ description: Documents the workflow.
+ unevaluatedProperties: false
+ properties:
+ dsl:
+ type: string
+ pattern: ^(0|[1-9]\d*)\.(0|[1-9]\d*)\.(0|[1-9]\d*)(?:-((?:0|[1-9]\d*|\d*[a-zA-Z-][0-9a-zA-Z-]*)(?:\.(?:0|[1-9]\d*|\d*[a-zA-Z-][0-9a-zA-Z-]*))*))?(?:\+([0-9a-zA-Z-]+(?:\.[0-9a-zA-Z-]+)*))?$
+ title: WorkflowDSL
+ description: The version of the DSL used by the workflow.
+ namespace:
+ type: string
+ pattern: ^[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?$
+ title: WorkflowNamespace
+ description: The workflow's namespace.
+ name:
+ type: string
+ pattern: ^[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?$
+ title: WorkflowName
+ description: The workflow's name.
+ version:
+ type: string
+ pattern: ^(0|[1-9]\d*)\.(0|[1-9]\d*)\.(0|[1-9]\d*)(?:-((?:0|[1-9]\d*|\d*[a-zA-Z-][0-9a-zA-Z-]*)(?:\.(?:0|[1-9]\d*|\d*[a-zA-Z-][0-9a-zA-Z-]*))*))?(?:\+([0-9a-zA-Z-]+(?:\.[0-9a-zA-Z-]+)*))?$
+ title: WorkflowVersion
+ description: The workflow's semantic version.
+ title:
+ type: string
+ title: WorkflowTitle
+ description: The workflow's title.
+ summary:
+ type: string
+ title: WorkflowSummary
+ description: The workflow's Markdown summary.
+ tags:
+ type: object
+ title: WorkflowTags
+ description: A key/value mapping of the workflow's tags, if any.
+ additionalProperties: true
+ metadata:
+ type: object
+ title: WorkflowMetadata
+ description: Holds additional information about the workflow.
+ additionalProperties: true
+ required: [ dsl, namespace, name, version ]
+ input:
+ $ref: '#/$defs/input'
+ title: Input
+ description: Configures the workflow's input.
+ use:
+ type: object
+ title: Use
+ description: Defines the workflow's reusable components.
+ unevaluatedProperties: false
+ properties:
+ authentications:
+ type: object
+ title: UseAuthentications
+ description: The workflow's reusable authentication policies.
+ additionalProperties:
+ $ref: '#/$defs/authenticationPolicy'
+ errors:
+ type: object
+ title: UseErrors
+ description: The workflow's reusable errors.
+ additionalProperties:
+ $ref: '#/$defs/error'
+ extensions:
+ type: array
+ title: UseExtensions
+ description: The workflow's extensions.
+ items:
+ type: object
+ title: ExtensionItem
+ minProperties: 1
+ maxProperties: 1
+ additionalProperties:
+ $ref: '#/$defs/extension'
+ functions:
+ type: object
+ title: UseFunctions
+ description: The workflow's reusable functions.
+ additionalProperties:
+ $ref: '#/$defs/task'
+ retries:
+ type: object
+ title: UseRetries
+ description: The workflow's reusable retry policies.
+ additionalProperties:
+ $ref: '#/$defs/retryPolicy'
+ secrets:
+ type: array
+ title: UseSecrets
+ description: The workflow's reusable secrets.
+ items:
+ type: string
+ description: The workflow's secrets.
+ timeouts:
+ type: object
+ title: UseTimeouts
+ description: The workflow's reusable timeouts.
+ additionalProperties:
+ $ref: '#/$defs/timeout'
+ do:
+ $ref: '#/$defs/taskList'
+ title: Do
+ description: Defines the task(s) the workflow must perform.
+ timeout:
+ oneOf:
+ - $ref: '#/$defs/timeout'
+ title: TimeoutDefinition
+ description: The workflow's timeout configuration, if any.
+ - type: string
+ title: TimeoutReference
+ description: The name of the workflow's timeout, if any.
+ output:
+ $ref: '#/$defs/output'
+ title: Output
+ description: Configures the workflow's output.
+ schedule:
+ type: object
+ title: Schedule
+ description: Schedules the workflow.
+ unevaluatedProperties: false
+ properties:
+ every:
+ $ref: '#/$defs/duration'
+ title: ScheduleEvery
+ description: Specifies the duration of the interval at which the workflow should be executed.
+ cron:
+ type: string
+ title: ScheduleCron
+ description: Specifies the schedule using a cron expression, e.g., '0 0 * * *' for daily at midnight.
+ after:
+ $ref: '#/$defs/duration'
+ title: ScheduleAfter
+ description: Specifies a delay duration that the workflow must wait before starting again after it completes.
+ on:
+ $ref: '#/$defs/eventConsumptionStrategy'
+ title: ScheduleOn
+ description: Specifies the events that trigger the workflow execution.
+$defs:
+ taskList:
+ title: TaskList
+ description: List of named tasks to perform.
+ type: array
+ items:
+ type: object
+ title: TaskItem
+ minProperties: 1
+ maxProperties: 1
+ additionalProperties:
+ $ref: '#/$defs/task'
+ taskBase:
+ type: object
+ title: TaskBase
+ description: An object inherited by all tasks.
+ properties:
+ if:
+ type: string
+ title: TaskBaseIf
+ description: A runtime expression, if any, used to determine whether or not the task should be run.
+ input:
+ $ref: '#/$defs/input'
+ title: TaskBaseInput
+ description: Configure the task's input.
+ output:
+ $ref: '#/$defs/output'
+ title: TaskBaseOutput
+ description: Configure the task's output.
+ export:
+ $ref: '#/$defs/export'
+ title: TaskBaseExport
+ description: Export task output to context.
+ timeout:
+ oneOf:
+ - $ref: '#/$defs/timeout'
+ title: TaskTimeoutDefinition
+ description: The task's timeout configuration, if any.
+ - type: string
+ title: TaskTimeoutReference
+ description: The name of the task's timeout, if any.
+ then:
+ $ref: '#/$defs/flowDirective'
+ title: TaskBaseThen
+ description: The flow directive to be performed upon completion of the task.
+ metadata:
+ type: object
+ title: TaskMetadata
+ description: Holds additional information about the task.
+ additionalProperties: true
+ task:
+ title: Task
+ description: A discrete unit of work that contributes to achieving the overall objectives defined by the workflow.
+ unevaluatedProperties: false
+ oneOf:
+ - $ref: '#/$defs/callTask'
+ - $ref: '#/$defs/doTask'
+ - $ref: '#/$defs/forkTask'
+ - $ref: '#/$defs/emitTask'
+ - $ref: '#/$defs/forTask'
+ - $ref: '#/$defs/listenTask'
+ - $ref: '#/$defs/raiseTask'
+ - $ref: '#/$defs/runTask'
+ - $ref: '#/$defs/setTask'
+ - $ref: '#/$defs/switchTask'
+ - $ref: '#/$defs/tryTask'
+ - $ref: '#/$defs/waitTask'
+ callTask:
+ title: CallTask
+ description: Defines the call to perform.
+ oneOf:
+ - title: CallAsyncAPI
+ description: Defines the AsyncAPI call to perform.
+ $ref: '#/$defs/taskBase'
+ type: object
+ required: [ call, with ]
+ unevaluatedProperties: false
+ properties:
+ call:
+ type: string
+ const: asyncapi
+ with:
+ type: object
+ title: AsyncApiArguments
+ description: The Async API call arguments.
+ properties:
+ document:
+ $ref: '#/$defs/externalResource'
+ title: WithAsyncAPIDocument
+ description: The document that defines the AsyncAPI operation to call.
+ operationRef:
+ type: string
+ title: WithAsyncAPIOperation
+ description: A reference to the AsyncAPI operation to call.
+ server:
+ type: string
+ title: WithAsyncAPIServer
+ description: A a reference to the server to call the specified AsyncAPI operation on. If not set, default to the first server matching the operation's channel.
+ message:
+ type: string
+ title: WithAsyncAPIMessage
+ description: The name of the message to use. If not set, defaults to the first message defined by the operation.
+ binding:
+ type: string
+ title: WithAsyncAPIBinding
+ description: The name of the binding to use. If not set, defaults to the first binding defined by the operation.
+ payload:
+ type: object
+ title: WithAsyncAPIPayload
+ description: The payload to call the AsyncAPI operation with, if any.
+ authentication:
+ $ref: '#/$defs/referenceableAuthenticationPolicy'
+ title: WithAsyncAPIAuthentication
+ description: The authentication policy, if any, to use when calling the AsyncAPI operation.
+ required: [ document, operationRef ]
+ unevaluatedProperties: false
+ - title: CallGRPC
+ description: Defines the GRPC call to perform.
+ $ref: '#/$defs/taskBase'
+ type: object
+ unevaluatedProperties: false
+ required: [ call, with ]
+ properties:
+ call:
+ type: string
+ const: grpc
+ with:
+ type: object
+ title: GRPCArguments
+ description: The GRPC call arguments.
+ properties:
+ proto:
+ $ref: '#/$defs/externalResource'
+ title: WithGRPCProto
+ description: The proto resource that describes the GRPC service to call.
+ service:
+ type: object
+ title: WithGRPCService
+ unevaluatedProperties: false
+ properties:
+ name:
+ type: string
+ title: WithGRPCServiceName
+ description: The name of the GRPC service to call.
+ host:
+ 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])?$
+ port:
+ type: integer
+ title: WithGRPCServicePost
+ description: The port number of the GRPC service to call.
+ minimum: 0
+ maximum: 65535
+ authentication:
+ $ref: '#/$defs/referenceableAuthenticationPolicy'
+ title: WithGRPCServiceAuthentication
+ description: The endpoint's authentication policy, if any.
+ required: [ name, host ]
+ method:
+ type: string
+ title: WithGRPCMethod
+ description: The name of the method to call on the defined GRPC service.
+ arguments:
+ type: object
+ title: WithGRPCArguments
+ description: The arguments, if any, to call the method with.
+ additionalProperties: true
+ required: [ proto, service, method ]
+ unevaluatedProperties: false
+ - title: CallHTTP
+ description: Defines the HTTP call to perform.
+ $ref: '#/$defs/taskBase'
+ type: object
+ unevaluatedProperties: false
+ required: [ call, with ]
+ properties:
+ call:
+ type: string
+ const: http
+ with:
+ type: object
+ title: HTTPArguments
+ description: The HTTP call arguments.
+ properties:
+ method:
+ type: string
+ title: WithHTTPMethod
+ description: The HTTP method of the HTTP request to perform.
+ endpoint:
+ title: WithHTTPEndpoint
+ description: The HTTP endpoint to send the request to.
+ $ref: '#/$defs/endpoint'
+ headers:
+ type: object
+ title: WithHTTPHeaders
+ description: A name/value mapping of the headers, if any, of the HTTP request to perform.
+ body:
+ title: WithHTTPBody
+ description: The body, if any, of the HTTP request to perform.
+ query:
+ type: object
+ title: WithHTTPQuery
+ description: A name/value mapping of the query parameters, if any, of the HTTP request to perform.
+ additionalProperties: true
+ output:
+ type: string
+ title: WithHTTPOutput
+ description: The http call output format. Defaults to 'content'.
+ enum: [ raw, content, response ]
+ required: [ method, endpoint ]
+ unevaluatedProperties: false
+ - title: CallOpenAPI
+ description: Defines the OpenAPI call to perform.
+ $ref: '#/$defs/taskBase'
+ type: object
+ unevaluatedProperties: false
+ required: [ call, with ]
+ properties:
+ call:
+ type: string
+ const: openapi
+ with:
+ type: object
+ title: OpenAPIArguments
+ description: The OpenAPI call arguments.
+ properties:
+ document:
+ $ref: '#/$defs/externalResource'
+ title: WithOpenAPIDocument
+ description: The document that defines the OpenAPI operation to call.
+ operationId:
+ type: string
+ title: WithOpenAPIOperation
+ description: The id of the OpenAPI operation to call.
+ parameters:
+ type: object
+ title: WithOpenAPIParameters
+ description: A name/value mapping of the parameters of the OpenAPI operation to call.
+ additionalProperties: true
+ authentication:
+ $ref: '#/$defs/referenceableAuthenticationPolicy'
+ title: WithOpenAPIAuthentication
+ description: The authentication policy, if any, to use when calling the OpenAPI operation.
+ output:
+ type: string
+ enum: [ raw, content, response ]
+ title: WithOpenAPIOutput
+ description: The http call output format. Defaults to 'content'.
+ required: [ document, operationId ]
+ unevaluatedProperties: false
+ - title: CallFunction
+ description: Defines the function call to perform.
+ $ref: '#/$defs/taskBase'
+ type: object
+ unevaluatedProperties: false
+ required: [ call ]
+ properties:
+ call:
+ type: string
+ not:
+ enum: ["asyncapi", "grpc", "http", "openapi"]
+ description: The name of the function to call.
+ with:
+ type: object
+ title: FunctionArguments
+ description: A name/value mapping of the parameters, if any, to call the function with.
+ additionalProperties: true
+ forkTask:
+ type: object
+ $ref: '#/$defs/taskBase'
+ title: ForkTask
+ description: Allows workflows to execute multiple tasks concurrently and optionally race them against each other, with a single possible winner, which sets the task's output.
+ unevaluatedProperties: false
+ required: [ fork ]
+ properties:
+ fork:
+ type: object
+ title: ForkTaskConfiguration
+ description: The configuration of the branches to perform concurrently.
+ unevaluatedProperties: false
+ required: [ branches ]
+ properties:
+ branches:
+ $ref: '#/$defs/taskList'
+ title: ForkBranches
+ compete:
+ type: boolean
+ title: ForkCompete
+ description: Indicates whether or not the concurrent tasks are racing against each other, with a single possible winner, which sets the composite task's output.
+ default: false
+ doTask:
+ type: object
+ $ref: '#/$defs/taskBase'
+ title: DoTask
+ description: Allows to execute a list of tasks in sequence.
+ unevaluatedProperties: false
+ required: [ do ]
+ properties:
+ do:
+ $ref: '#/$defs/taskList'
+ title: DoTaskConfiguration
+ description: The configuration of the tasks to perform sequentially.
+ emitTask:
+ type: object
+ $ref: '#/$defs/taskBase'
+ title: EmitTask
+ description: Allows workflows to publish events to event brokers or messaging systems, facilitating communication and coordination between different components and services.
+ required: [ emit ]
+ unevaluatedProperties: false
+ properties:
+ emit:
+ type: object
+ title: EmitTaskConfiguration
+ description: The configuration of an event's emission.
+ unevaluatedProperties: false
+ properties:
+ event:
+ type: object
+ title: EmitEventDefinition
+ description: The definition of the event to emit.
+ properties:
+ with:
+ $ref: '#/$defs/eventProperties'
+ title: EmitEventWith
+ description: Defines the properties of event to emit.
+ required: [ source, type ]
+ additionalProperties: true
+ required: [ event ]
+ forTask:
+ type: object
+ $ref: '#/$defs/taskBase'
+ title: ForTask
+ description: Allows workflows to iterate over a collection of items, executing a defined set of subtasks for each item in the collection. This task type is instrumental in handling scenarios such as batch processing, data transformation, and repetitive operations across datasets.
+ required: [ for, do ]
+ unevaluatedProperties: false
+ properties:
+ for:
+ type: object
+ title: ForTaskConfiguration
+ description: The definition of the loop that iterates over a range of values.
+ unevaluatedProperties: false
+ properties:
+ each:
+ type: string
+ title: ForEach
+ description: The name of the variable used to store the current item being enumerated.
+ default: item
+ in:
+ type: string
+ title: ForIn
+ description: A runtime expression used to get the collection to enumerate.
+ at:
+ type: string
+ title: ForAt
+ description: The name of the variable used to store the index of the current item being enumerated.
+ default: index
+ required: [ in ]
+ while:
+ type: string
+ title: While
+ description: A runtime expression that represents the condition, if any, that must be met for the iteration to continue.
+ do:
+ $ref: '#/$defs/taskList'
+ title: ForTaskDo
+ listenTask:
+ type: object
+ $ref: '#/$defs/taskBase'
+ title: ListenTask
+ description: Provides a mechanism for workflows to await and react to external events, enabling event-driven behavior within workflow systems.
+ required: [ listen ]
+ unevaluatedProperties: false
+ properties:
+ listen:
+ type: object
+ title: ListenTaskConfiguration
+ description: The configuration of the listener to use.
+ unevaluatedProperties: false
+ properties:
+ to:
+ $ref: '#/$defs/eventConsumptionStrategy'
+ title: ListenTo
+ description: Defines the event(s) to listen to.
+ required: [ to ]
+ raiseTask:
+ type: object
+ $ref: '#/$defs/taskBase'
+ title: RaiseTask
+ description: Intentionally triggers and propagates errors.
+ required: [ raise ]
+ unevaluatedProperties: false
+ properties:
+ raise:
+ type: object
+ title: RaiseTaskConfiguration
+ description: The definition of the error to raise.
+ unevaluatedProperties: false
+ properties:
+ error:
+ oneOf:
+ - $ref: '#/$defs/error'
+ title: RaiseErrorDefinition
+ description: Defines the error to raise.
+ - type: string
+ title: RaiseErrorReference
+ description: The name of the error to raise
+ required: [ error ]
+ runTask:
+ type: object
+ $ref: '#/$defs/taskBase'
+ title: RunTask
+ description: Provides the capability to execute external containers, shell commands, scripts, or workflows.
+ required: [ run ]
+ unevaluatedProperties: false
+ properties:
+ run:
+ type: object
+ title: RunTaskConfiguration
+ description: The configuration of the process to execute.
+ unevaluatedProperties: false
+ properties:
+ await:
+ type: boolean
+ default: true
+ title: AwaitProcessCompletion
+ description: Whether to await the process completion before continuing.
+ oneOf:
+ - title: RunContainer
+ description: Enables the execution of external processes encapsulated within a containerized environment.
+ properties:
+ container:
+ type: object
+ title: Container
+ description: The configuration of the container to run.
+ unevaluatedProperties: false
+ properties:
+ image:
+ type: string
+ title: ContainerImage
+ description: The name of the container image to run.
+ command:
+ type: string
+ title: ContainerCommand
+ description: The command, if any, to execute on the container.
+ ports:
+ type: object
+ title: ContainerPorts
+ description: The container's port mappings, if any.
+ volumes:
+ type: object
+ title: ContainerVolumes
+ description: The container's volume mappings, if any.
+ environment:
+ type: object
+ title: ContainerEnvironment
+ description: A key/value mapping of the environment variables, if any, to use when running the configured process.
+ required: [ image ]
+ required: [ container ]
+ - title: RunScript
+ description: Enables the execution of custom scripts or code within a workflow, empowering workflows to perform specialized logic, data processing, or integration tasks by executing user-defined scripts written in various programming languages.
+ properties:
+ script:
+ type: object
+ title: Script
+ description: The configuration of the script to run.
+ unevaluatedProperties: false
+ properties:
+ language:
+ type: string
+ title: ScriptLanguage
+ description: The language of the script to run.
+ arguments:
+ type: object
+ title: ScriptArguments
+ description: A key/value mapping of the arguments, if any, to use when running the configured script.
+ additionalProperties: true
+ environment:
+ type: object
+ title: ScriptEnvironment
+ description: A key/value mapping of the environment variables, if any, to use when running the configured script process.
+ additionalProperties: true
+ oneOf:
+ - title: InlineScript
+ type: object
+ description: The script's code.
+ properties:
+ code:
+ type: string
+ title: InlineScriptCode
+ required: [ code ]
+ - title: ExternalScript
+ type: object
+ description: The script's resource.
+ properties:
+ source:
+ $ref: '#/$defs/externalResource'
+ title: ExternalScriptResource
+ required: [ source ]
+ required: [ language ]
+ required: [ script ]
+ - title: RunShell
+ description: Enables the execution of shell commands within a workflow, enabling workflows to interact with the underlying operating system and perform system-level operations, such as file manipulation, environment configuration, or system administration tasks.
+ properties:
+ shell:
+ type: object
+ title: Shell
+ description: The configuration of the shell command to run.
+ unevaluatedProperties: false
+ properties:
+ command:
+ type: string
+ title: ShellCommand
+ description: The shell command to run.
+ arguments:
+ type: object
+ title: ShellArguments
+ description: A list of the arguments of the shell command to run.
+ additionalProperties: true
+ environment:
+ type: object
+ title: ShellEnvironment
+ description: A key/value mapping of the environment variables, if any, to use when running the configured process.
+ additionalProperties: true
+ required: [ command ]
+ required: [ shell ]
+ - title: RunWorkflow
+ description: Enables the invocation and execution of nested workflows within a parent workflow, facilitating modularization, reusability, and abstraction of complex logic or business processes by encapsulating them into standalone workflow units.
+ properties:
+ workflow:
+ type: object
+ title: SubflowConfiguration
+ description: The configuration of the workflow to run.
+ unevaluatedProperties: false
+ properties:
+ namespace:
+ type: string
+ title: SubflowNamespace
+ description: The namespace the workflow to run belongs to.
+ name:
+ type: string
+ title: SubflowName
+ description: The name of the workflow to run.
+ version:
+ type: string
+ default: latest
+ title: SubflowVersion
+ description: The version of the workflow to run. Defaults to latest.
+ input:
+ type: object
+ title: SubflowInput
+ description: The data, if any, to pass as input to the workflow to execute. The value should be validated against the target workflow's input schema, if specified.
+ additionalProperties: true
+ required: [ namespace, name, version ]
+ required: [ workflow ]
+ setTask:
+ type: object
+ $ref: '#/$defs/taskBase'
+ title: SetTask
+ description: A task used to set data.
+ required: [ set ]
+ unevaluatedProperties: false
+ properties:
+ set:
+ type: object
+ title: SetTaskConfiguration
+ description: The data to set.
+ minProperties: 1
+ additionalProperties: true
+ switchTask:
+ type: object
+ $ref: '#/$defs/taskBase'
+ title: SwitchTask
+ description: Enables conditional branching within workflows, allowing them to dynamically select different paths based on specified conditions or criteria.
+ required: [ switch ]
+ unevaluatedProperties: false
+ properties:
+ switch:
+ type: array
+ title: SwitchTaskConfiguration
+ description: The definition of the switch to use.
+ minItems: 1
+ items:
+ type: object
+ title: SwitchItem
+ minProperties: 1
+ maxProperties: 1
+ additionalProperties:
+ type: object
+ title: SwitchCase
+ description: The definition of a case within a switch task, defining a condition and corresponding tasks to execute if the condition is met.
+ unevaluatedProperties: false
+ required: [ then ]
+ properties:
+ when:
+ type: string
+ title: SwitchCaseCondition
+ description: A runtime expression used to determine whether or not the case matches.
+ then:
+ $ref: '#/$defs/flowDirective'
+ title: SwitchCaseOutcome
+ description: The flow directive to execute when the case matches.
+ tryTask:
+ type: object
+ $ref: '#/$defs/taskBase'
+ title: TryTask
+ description: Serves as a mechanism within workflows to handle errors gracefully, potentially retrying failed tasks before proceeding with alternate ones.
+ required: [ try, catch ]
+ unevaluatedProperties: false
+ properties:
+ try:
+ $ref: '#/$defs/taskList'
+ title: TryTaskConfiguration
+ description: The task(s) to perform.
+ catch:
+ type: object
+ title: TryTaskCatch
+ description: The object used to define the errors to catch.
+ unevaluatedProperties: false
+ properties:
+ errors:
+ type: object
+ title: CatchErrors
+ description: The configuration of a concept used to catch errors.
+ as:
+ type: string
+ title: CatchAs
+ description: The name of the runtime expression variable to save the error as. Defaults to 'error'.
+ when:
+ type: string
+ title: CatchWhen
+ description: A runtime expression used to determine whether or not to catch the filtered error.
+ exceptWhen:
+ type: string
+ title: CatchExceptWhen
+ description: A runtime expression used to determine whether or not to catch the filtered error.
+ retry:
+ oneOf:
+ - $ref: '#/$defs/retryPolicy'
+ title: RetryPolicyDefinition
+ description: The retry policy to use, if any, when catching errors.
+ - type: string
+ title: RetryPolicyReference
+ description: The name of the retry policy to use, if any, when catching errors.
+ do:
+ $ref: '#/$defs/taskList'
+ title: TryTaskCatchDo
+ description: The definition of the task(s) to run when catching an error.
+ waitTask:
+ type: object
+ $ref: '#/$defs/taskBase'
+ title: WaitTask
+ description: Allows workflows to pause or delay their execution for a specified period of time.
+ required: [ wait ]
+ unevaluatedProperties: false
+ properties:
+ wait:
+ $ref: '#/$defs/duration'
+ title: WaitTaskConfiguration
+ description: The amount of time to wait.
+ flowDirective:
+ title: FlowDirective
+ description: Represents different transition options for a workflow.
+ anyOf:
+ - type: string
+ enum: [ continue, exit, end ]
+ default: continue
+ - type: string
+ referenceableAuthenticationPolicy:
+ type: object
+ title: ReferenceableAuthenticationPolicy
+ description: Represents a referenceable authentication policy.
+ unevaluatedProperties: false
+ oneOf:
+ - title: AuthenticationPolicyReference
+ description: The reference of the authentication policy to use.
+ properties:
+ use:
+ type: string
+ minLength: 1
+ title: ReferenceableAuthenticationPolicyName
+ description: The name of the authentication policy to use.
+ required: [use]
+ - $ref: '#/$defs/authenticationPolicy'
+ secretBasedAuthenticationPolicy:
+ type: object
+ title: SecretBasedAuthenticationPolicy
+ description: Represents an authentication policy based on secrets.
+ unevaluatedProperties: false
+ properties:
+ use:
+ type: string
+ minLength: 1
+ title: SecretBasedAuthenticationPolicyName
+ description: The name of the authentication policy to use.
+ required: [use]
+ authenticationPolicy:
+ type: object
+ title: AuthenticationPolicy
+ description: Defines an authentication policy.
+ oneOf:
+ - title: BasicAuthenticationPolicy
+ description: Use basic authentication.
+ properties:
+ basic:
+ type: object
+ title: BasicAuthenticationPolicyConfiguration
+ description: The configuration of the basic authentication policy.
+ unevaluatedProperties: false
+ oneOf:
+ - title: BasicAuthenticationProperties
+ description: Inline configuration of the basic authentication policy.
+ properties:
+ username:
+ type: string
+ description: The username to use.
+ password:
+ type: string
+ description: The password to use.
+ required: [ username, password ]
+ - $ref: '#/$defs/secretBasedAuthenticationPolicy'
+ title: BasicAuthenticationPolicySecret
+ description: Secret based configuration of the basic authentication policy.
+ required: [ basic ]
+ - title: BearerAuthenticationPolicy
+ description: Use bearer authentication.
+ properties:
+ bearer:
+ type: object
+ title: BearerAuthenticationPolicyConfiguration
+ description: The configuration of the bearer authentication policy.
+ unevaluatedProperties: false
+ oneOf:
+ - title: BearerAuthenticationProperties
+ description: Inline configuration of the bearer authentication policy.
+ properties:
+ token:
+ type: string
+ description: The bearer token to use.
+ required: [ token ]
+ - $ref: '#/$defs/secretBasedAuthenticationPolicy'
+ title: BearerAuthenticationPolicySecret
+ description: Secret based configuration of the bearer authentication policy.
+ required: [ bearer ]
+ - title: DigestAuthenticationPolicy
+ description: Use digest authentication.
+ properties:
+ digest:
+ type: object
+ title: DigestAuthenticationPolicyConfiguration
+ description: The configuration of the digest authentication policy.
+ unevaluatedProperties: false
+ oneOf:
+ - title: DigestAuthenticationProperties
+ description: Inline configuration of the digest authentication policy.
+ properties:
+ username:
+ type: string
+ description: The username to use.
+ password:
+ type: string
+ description: The password to use.
+ required: [ username, password ]
+ - $ref: '#/$defs/secretBasedAuthenticationPolicy'
+ title: DigestAuthenticationPolicySecret
+ description: Secret based configuration of the digest authentication policy.
+ required: [ digest ]
+ - title: OAuth2AuthenticationPolicy
+ description: Use OAuth2 authentication.
+ properties:
+ oauth2:
+ type: object
+ title: OAuth2AuthenticationPolicyConfiguration
+ description: The configuration of the OAuth2 authentication policy.
+ unevaluatedProperties: false
+ oneOf:
+ - 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:
+ 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.
+ required: [ oauth2 ]
+ - title: OpenIdConnectAuthenticationPolicy
+ description: Use OpenIdConnect authentication.
+ properties:
+ oidc:
+ type: object
+ title: OpenIdConnectAuthenticationPolicyConfiguration
+ description: The configuration of the OpenIdConnect authentication policy.
+ unevaluatedProperties: false
+ oneOf:
+ - $ref: '#/$defs/oauth2AuthenticationProperties'
+ title: OpenIdConnectAuthenticationProperties
+ description: The inline configuration of the OpenIdConnect authentication policy.
+ unevaluatedProperties: false
+ - $ref: '#/$defs/secretBasedAuthenticationPolicy'
+ title: OpenIdConnectAuthenticationPolicySecret
+ description: Secret based configuration of the OpenIdConnect authentication policy.
+ required: [ oidc ]
+ oauth2AuthenticationProperties:
+ type: object
+ title: OAuth2AutenthicationData
+ description: Inline configuration of the OAuth2 authentication policy.
+ properties:
+ authority:
+ type: string
+ format: uri-template
+ title: OAuth2AutenthicationDataAuthority
+ description: The URI that references the OAuth2 authority to use.
+ grant:
+ type: string
+ enum: [ authorization_code, client_credentials, password, refresh_token, 'urn:ietf:params:oauth:grant-type:token-exchange']
+ title: OAuth2AutenthicationDataGrant
+ description: The grant type to use.
+ client:
+ type: object
+ title: OAuth2AutenthicationDataClient
+ description: The definition of an OAuth2 client.
+ unevaluatedProperties: false
+ properties:
+ id:
+ type: string
+ title: ClientId
+ description: The client id to use.
+ secret:
+ type: string
+ title: ClientSecret
+ description: The client secret to use, if any.
+ assertion:
+ type: string
+ title: ClientAssertion
+ description: A JWT containing a signed assertion with your application credentials.
+ authentication:
+ type: string
+ enum: [ client_secret_basic, client_secret_post, client_secret_jwt, private_key_jwt, none ]
+ default: client_secret_post
+ title: ClientAuthentication
+ description: The authentication method to use to authenticate the client.
+ request:
+ type: object
+ title: OAuth2TokenRequest
+ description: The configuration of an OAuth2 token request
+ properties:
+ encoding:
+ type: string
+ enum: [ 'application/x-www-form-urlencoded', 'application/json' ]
+ default: 'application/x-www-form-urlencoded'
+ title: Oauth2TokenRequestEncoding
+ issuers:
+ type: array
+ title: OAuth2Issuers
+ description: A list that contains that contains valid issuers that will be used to check against the issuer of generated tokens.
+ items:
+ type: string
+ scopes:
+ type: array
+ title: OAuth2AutenthicationDataScopes
+ description: The scopes, if any, to request the token for.
+ items:
+ type: string
+ audiences:
+ type: array
+ title: OAuth2AutenthicationDataAudiences
+ description: The audiences, if any, to request the token for.
+ items:
+ type: string
+ username:
+ type: string
+ title: OAuth2AutenthicationDataUsername
+ description: The username to use. Used only if the grant type is Password.
+ password:
+ type: string
+ title: OAuth2AutenthicationDataPassword
+ description: The password to use. Used only if the grant type is Password.
+ subject:
+ $ref: '#/$defs/oauth2Token'
+ title: OAuth2AutenthicationDataSubject
+ description: The security token that represents the identity of the party on behalf of whom the request is being made.
+ actor:
+ $ref: '#/$defs/oauth2Token'
+ title: OAuth2AutenthicationDataActor
+ description: The security token that represents the identity of the acting party.
+ oauth2Token:
+ type: object
+ title: OAuth2TokenDefinition
+ description: Represents an OAuth2 token.
+ unevaluatedProperties: false
+ properties:
+ token:
+ type: string
+ title: OAuth2Token
+ description: The security token to use.
+ type:
+ type: string
+ title: OAuth2TokenType
+ description: The type of the security token to use.
+ required: [ token, type ]
+ duration:
+ oneOf:
+ - type: object
+ minProperties: 1
+ unevaluatedProperties: false
+ properties:
+ days:
+ type: integer
+ title: DurationDays
+ description: Number of days, if any.
+ hours:
+ type: integer
+ title: DurationHours
+ description: Number of days, if any.
+ minutes:
+ type: integer
+ title: DurationMinutes
+ description: Number of minutes, if any.
+ seconds:
+ type: integer
+ title: DurationSeconds
+ description: Number of seconds, if any.
+ milliseconds:
+ type: integer
+ title: DurationMilliseconds
+ description: Number of milliseconds, if any.
+ title: DurationInline
+ description: The inline definition of a duration.
+ - type: string
+ pattern: '^P(?!$)(\d+(?:\.\d+)?Y)?(\d+(?:\.\d+)?M)?(\d+(?:\.\d+)?W)?(\d+(?:\.\d+)?D)?(T(?=\d)(\d+(?:\.\d+)?H)?(\d+(?:\.\d+)?M)?(\d+(?:\.\d+)?S)?)?$'
+ title: DurationExpression
+ description: The ISO 8601 expression of a duration.
+ error:
+ type: object
+ title: Error
+ description: Represents an error.
+ unevaluatedProperties: false
+ properties:
+ type:
+ title: ErrorType
+ description: A URI reference that identifies the error type.
+ oneOf:
+ - title: LiteralErrorType
+ description: The literal error type.
+ type: string
+ format: uri-template
+ - $ref: '#/$defs/runtimeExpression'
+ title: ExpressionErrorType
+ description: An expression based error type.
+ status:
+ type: integer
+ title: ErrorStatus
+ description: The status code generated by the origin for this occurrence of the error.
+ instance:
+ title: ErrorInstance
+ description: A JSON Pointer used to reference the component the error originates from.
+ oneOf:
+ - title: LiteralErrorInstance
+ description: The literal error instance.
+ type: string
+ format: json-pointer
+ - $ref: '#/$defs/runtimeExpression'
+ title: ExpressionErrorInstance
+ description: An expression based error instance.
+ title:
+ type: string
+ title: ErrorTitle
+ description: A short, human-readable summary of the error.
+ detail:
+ type: string
+ title: ErrorDetails
+ description: A human-readable explanation specific to this occurrence of the error.
+ required: [ type, status ]
+ endpoint:
+ title: Endpoint
+ description: Represents an endpoint.
+ oneOf:
+ - $ref: '#/$defs/runtimeExpression'
+ - title: LiteralEndpoint
+ type: string
+ format: uri-template
+ - title: EndpointConfiguration
+ type: object
+ unevaluatedProperties: false
+ properties:
+ uri:
+ title: EndpointUri
+ description: The endpoint's URI.
+ oneOf:
+ - title: LiteralEndpointURI
+ description: The literal endpoint's URI.
+ type: string
+ format: uri-template
+ - $ref: '#/$defs/runtimeExpression'
+ title: ExpressionEndpointURI
+ description: An expression based endpoint's URI.
+ authentication:
+ $ref: '#/$defs/referenceableAuthenticationPolicy'
+ title: EndpointAuthentication
+ description: The authentication policy to use.
+ required: [ uri ]
+ eventProperties:
+ type: object
+ title: EventProperties
+ description: Describes the properties of an event.
+ properties:
+ id:
+ type: string
+ title: EventId
+ description: The event's unique identifier.
+ source:
+ title: EventSource
+ description: Identifies the context in which an event happened.
+ oneOf:
+ - title: LiteralSource
+ type: string
+ format: uri-template
+ - $ref: '#/$defs/runtimeExpression'
+ type:
+ type: string
+ title: EventType
+ description: This attribute contains a value describing the type of event related to the originating occurrence.
+ time:
+ title: EventTime
+ description: When the event occured.
+ oneOf:
+ - title: LiteralTime
+ type: string
+ format: date-time
+ - $ref: '#/$defs/runtimeExpression'
+ subject:
+ type: string
+ title: EventSubject
+ description: The subject of the event.
+ datacontenttype:
+ type: string
+ title: EventDataContentType
+ description: Content type of data value. This attribute enables data to carry any type of content, whereby format and encoding might differ from that of the chosen event format.
+ dataschema:
+ title: EventDataschema
+ description: The schema describing the event format.
+ oneOf:
+ - title: LiteralDataSchema
+ description: The literal event data schema.
+ type: string
+ format: uri-template
+ - $ref: '#/$defs/runtimeExpression'
+ title: ExpressionDataSchema
+ description: An expression based event data schema.
+ additionalProperties: true
+ eventConsumptionStrategy:
+ type: object
+ title: EventConsumptionStrategy
+ description: Describe the event consumption strategy to adopt.
+ unevaluatedProperties: false
+ oneOf:
+ - title: AllEventConsumptionStrategy
+ properties:
+ all:
+ type: array
+ title: AllEventConsumptionStrategyConfiguration
+ description: A list containing all the events that must be consumed.
+ items:
+ $ref: '#/$defs/eventFilter'
+ required: [ all ]
+ - title: AnyEventConsumptionStrategy
+ properties:
+ any:
+ type: array
+ title: AnyEventConsumptionStrategyConfiguration
+ description: A list containing any of the events to consume.
+ items:
+ $ref: '#/$defs/eventFilter'
+ required: [ any ]
+ - title: OneEventConsumptionStrategy
+ properties:
+ one:
+ $ref: '#/$defs/eventFilter'
+ title: OneEventConsumptionStrategyConfiguration
+ description: The single event to consume.
+ required: [ one ]
+ eventFilter:
+ type: object
+ title: EventFilter
+ description: An event filter is a mechanism used to selectively process or handle events based on predefined criteria, such as event type, source, or specific attributes.
+ unevaluatedProperties: false
+ properties:
+ with:
+ $ref: '#/$defs/eventProperties'
+ minProperties: 1
+ title: WithEvent
+ description: An event filter is a mechanism used to selectively process or handle events based on predefined criteria, such as event type, source, or specific attributes.
+ correlate:
+ type: object
+ title: EventFilterCorrelate
+ description: A correlation is a link between events and data, established by mapping event attributes to specific data attributes, allowing for coordinated processing or handling based on event characteristics.
+ additionalProperties:
+ type: object
+ properties:
+ from:
+ type: string
+ title: CorrelateFrom
+ description: A runtime expression used to extract the correlation value from the filtered event.
+ expect:
+ type: string
+ title: CorrelateExpect
+ description: A constant or a runtime expression, if any, used to determine whether or not the extracted correlation value matches expectations. If not set, the first extracted value will be used as the correlation's expectation.
+ required: [ from ]
+ required: [ with ]
+ extension:
+ type: object
+ title: Extension
+ description: The definition of an extension.
+ unevaluatedProperties: false
+ properties:
+ extend:
+ type: string
+ enum: [ call, composite, emit, for, listen, raise, run, set, switch, try, wait, all ]
+ title: ExtensionTarget
+ description: The type of task to extend.
+ when:
+ type: string
+ title: ExtensionCondition
+ description: A runtime expression, if any, used to determine whether or not the extension should apply in the specified context.
+ before:
+ $ref: '#/$defs/taskList'
+ title: ExtensionDoBefore
+ description: The task(s) to execute before the extended task, if any.
+ after:
+ $ref: '#/$defs/taskList'
+ title: ExtensionDoAfter
+ description: The task(s) to execute after the extended task, if any.
+ required: [ extend ]
+ externalResource:
+ type: object
+ title: ExternalResource
+ description: Represents an external resource.
+ unevaluatedProperties: false
+ properties:
+ name:
+ type: string
+ title: ExternalResourceName
+ description: The name of the external resource, if any.
+ endpoint:
+ $ref: '#/$defs/endpoint'
+ title: ExternalResourceEndpoint
+ description: The endpoint of the external resource.
+ required: [ endpoint ]
+ input:
+ type: object
+ title: Input
+ description: Configures the input of a workflow or task.
+ unevaluatedProperties: false
+ properties:
+ schema:
+ $ref: '#/$defs/schema'
+ title: InputSchema
+ description: The schema used to describe and validate the input of the workflow or task.
+ from:
+ title: InputFrom
+ description: A runtime expression, if any, used to mutate and/or filter the input of the workflow or task.
+ oneOf:
+ - type: string
+ - type: object
+ output:
+ type: object
+ title: Output
+ description: Configures the output of a workflow or task.
+ unevaluatedProperties: false
+ properties:
+ schema:
+ $ref: '#/$defs/schema'
+ title: OutputSchema
+ description: The schema used to describe and validate the output of the workflow or task.
+ as:
+ title: OutputAs
+ description: A runtime expression, if any, used to mutate and/or filter the output of the workflow or task.
+ oneOf:
+ - type: string
+ - type: object
+ export:
+ type: object
+ title: Export
+ description: Set the content of the context. .
+ unevaluatedProperties: false
+ properties:
+ schema:
+ $ref: '#/$defs/schema'
+ title: ExportSchema
+ description: The schema used to describe and validate the workflow context.
+ as:
+ title: ExportAs
+ description: A runtime expression, if any, used to export the output data to the context.
+ oneOf:
+ - type: string
+ - type: object
+ retryPolicy:
+ type: object
+ title: RetryPolicy
+ description: Defines a retry policy.
+ unevaluatedProperties: false
+ properties:
+ when:
+ type: string
+ title: RetryWhen
+ description: A runtime expression, if any, used to determine whether or not to retry running the task, in a given context.
+ exceptWhen:
+ type: string
+ title: RetryExcepWhen
+ description: A runtime expression used to determine whether or not to retry running the task, in a given context.
+ delay:
+ $ref: '#/$defs/duration'
+ title: RetryDelay
+ description: The duration to wait between retry attempts.
+ backoff:
+ type: object
+ title: RetryBackoff
+ description: The retry duration backoff.
+ unevaluatedProperties: false
+ oneOf:
+ - title: ConstantBackoff
+ properties:
+ constant:
+ type: object
+ description: The definition of the constant backoff to use, if any.
+ required: [ constant ]
+ - title: ExponentialBackOff
+ properties:
+ exponential:
+ type: object
+ description: The definition of the exponential backoff to use, if any.
+ required: [ exponential ]
+ - title: LinearBackoff
+ properties:
+ linear:
+ type: object
+ description: The definition of the linear backoff to use, if any.
+ required: [ linear ]
+ limit:
+ type: object
+ title: RetryLimit
+ unevaluatedProperties: false
+ properties:
+ attempt:
+ type: object
+ title: RetryLimitAttempt
+ unevaluatedProperties: false
+ properties:
+ count:
+ type: integer
+ title: RetryLimitAttemptCount
+ description: The maximum amount of retry attempts, if any.
+ duration:
+ $ref: '#/$defs/duration'
+ title: RetryLimitAttemptDuration
+ description: The maximum duration for each retry attempt.
+ duration:
+ $ref: '#/$defs/duration'
+ title: RetryLimitDuration
+ description: The duration limit, if any, for all retry attempts.
+ description: The retry limit, if any.
+ jitter:
+ type: object
+ title: RetryPolicyJitter
+ description: The parameters, if any, that control the randomness or variability of the delay between retry attempts.
+ unevaluatedProperties: false
+ properties:
+ from:
+ $ref: '#/$defs/duration'
+ title: RetryPolicyJitterFrom
+ description: The minimum duration of the jitter range.
+ to:
+ $ref: '#/$defs/duration'
+ title: RetryPolicyJitterTo
+ description: The maximum duration of the jitter range.
+ required: [ from, to ]
+ schema:
+ type: object
+ title: Schema
+ description: Represents the definition of a schema.
+ unevaluatedProperties: false
+ properties:
+ format:
+ type: string
+ default: json
+ title: SchemaFormat
+ description: The schema's format. Defaults to 'json'. The (optional) version of the format can be set using `{format}:{version}`.
+ oneOf:
+ - title: SchemaInline
+ properties:
+ document:
+ description: The schema's inline definition.
+ required: [ document ]
+ - title: SchemaExternal
+ properties:
+ resource:
+ $ref: '#/$defs/externalResource'
+ title: SchemaExternalResource
+ description: The schema's external resource.
+ required: [ resource ]
+ timeout:
+ type: object
+ title: Timeout
+ description: The definition of a timeout.
+ unevaluatedProperties: false
+ properties:
+ after:
+ $ref: '#/$defs/duration'
+ title: TimeoutAfter
+ description: The duration after which to timeout.
+ required: [ after ]
+ runtimeExpression:
+ type: string
+ title: RuntimeExpression
+ description: A runtime expression.
+ pattern: "^\\s*\\$\\{.+\\}\\s*$"
diff --git a/public/schemas/1.0.0-alpha4/workflow.json b/public/schemas/1.0.0-alpha4/workflow.json
new file mode 100644
index 0000000..ebe1618
--- /dev/null
+++ b/public/schemas/1.0.0-alpha4/workflow.json
@@ -0,0 +1,2255 @@
+{
+ "$id": "https://open-workflow-specification.org/schemas/1.0.0-alpha4/workflow.json",
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
+ "description": "Open Workflow Specification DSL - Workflow Schema.",
+ "type": "object",
+ "required": [
+ "document",
+ "do"
+ ],
+ "properties": {
+ "document": {
+ "type": "object",
+ "title": "Document",
+ "description": "Documents the workflow.",
+ "unevaluatedProperties": false,
+ "properties": {
+ "dsl": {
+ "type": "string",
+ "pattern": "^(0|[1-9]\\d*)\\.(0|[1-9]\\d*)\\.(0|[1-9]\\d*)(?:-((?:0|[1-9]\\d*|\\d*[a-zA-Z-][0-9a-zA-Z-]*)(?:\\.(?:0|[1-9]\\d*|\\d*[a-zA-Z-][0-9a-zA-Z-]*))*))?(?:\\+([0-9a-zA-Z-]+(?:\\.[0-9a-zA-Z-]+)*))?$",
+ "title": "WorkflowDSL",
+ "description": "The version of the DSL used by the workflow."
+ },
+ "namespace": {
+ "type": "string",
+ "pattern": "^[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?$",
+ "title": "WorkflowNamespace",
+ "description": "The workflow's namespace."
+ },
+ "name": {
+ "type": "string",
+ "pattern": "^[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?$",
+ "title": "WorkflowName",
+ "description": "The workflow's name."
+ },
+ "version": {
+ "type": "string",
+ "pattern": "^(0|[1-9]\\d*)\\.(0|[1-9]\\d*)\\.(0|[1-9]\\d*)(?:-((?:0|[1-9]\\d*|\\d*[a-zA-Z-][0-9a-zA-Z-]*)(?:\\.(?:0|[1-9]\\d*|\\d*[a-zA-Z-][0-9a-zA-Z-]*))*))?(?:\\+([0-9a-zA-Z-]+(?:\\.[0-9a-zA-Z-]+)*))?$",
+ "title": "WorkflowVersion",
+ "description": "The workflow's semantic version."
+ },
+ "title": {
+ "type": "string",
+ "title": "WorkflowTitle",
+ "description": "The workflow's title."
+ },
+ "summary": {
+ "type": "string",
+ "title": "WorkflowSummary",
+ "description": "The workflow's Markdown summary."
+ },
+ "tags": {
+ "type": "object",
+ "title": "WorkflowTags",
+ "description": "A key/value mapping of the workflow's tags, if any.",
+ "additionalProperties": true
+ },
+ "metadata": {
+ "type": "object",
+ "title": "WorkflowMetadata",
+ "description": "Holds additional information about the workflow.",
+ "additionalProperties": true
+ }
+ },
+ "required": [
+ "dsl",
+ "namespace",
+ "name",
+ "version"
+ ]
+ },
+ "input": {
+ "$ref": "#/$defs/input",
+ "title": "Input",
+ "description": "Configures the workflow's input."
+ },
+ "use": {
+ "type": "object",
+ "title": "Use",
+ "description": "Defines the workflow's reusable components.",
+ "unevaluatedProperties": false,
+ "properties": {
+ "authentications": {
+ "type": "object",
+ "title": "UseAuthentications",
+ "description": "The workflow's reusable authentication policies.",
+ "additionalProperties": {
+ "$ref": "#/$defs/authenticationPolicy"
+ }
+ },
+ "errors": {
+ "type": "object",
+ "title": "UseErrors",
+ "description": "The workflow's reusable errors.",
+ "additionalProperties": {
+ "$ref": "#/$defs/error"
+ }
+ },
+ "extensions": {
+ "type": "array",
+ "title": "UseExtensions",
+ "description": "The workflow's extensions.",
+ "items": {
+ "type": "object",
+ "title": "ExtensionItem",
+ "minProperties": 1,
+ "maxProperties": 1,
+ "additionalProperties": {
+ "$ref": "#/$defs/extension"
+ }
+ }
+ },
+ "functions": {
+ "type": "object",
+ "title": "UseFunctions",
+ "description": "The workflow's reusable functions.",
+ "additionalProperties": {
+ "$ref": "#/$defs/task"
+ }
+ },
+ "retries": {
+ "type": "object",
+ "title": "UseRetries",
+ "description": "The workflow's reusable retry policies.",
+ "additionalProperties": {
+ "$ref": "#/$defs/retryPolicy"
+ }
+ },
+ "secrets": {
+ "type": "array",
+ "title": "UseSecrets",
+ "description": "The workflow's reusable secrets.",
+ "items": {
+ "type": "string",
+ "description": "The workflow's secrets."
+ }
+ },
+ "timeouts": {
+ "type": "object",
+ "title": "UseTimeouts",
+ "description": "The workflow's reusable timeouts.",
+ "additionalProperties": {
+ "$ref": "#/$defs/timeout"
+ }
+ }
+ }
+ },
+ "do": {
+ "$ref": "#/$defs/taskList",
+ "title": "Do",
+ "description": "Defines the task(s) the workflow must perform."
+ },
+ "timeout": {
+ "oneOf": [
+ {
+ "$ref": "#/$defs/timeout",
+ "title": "TimeoutDefinition",
+ "description": "The workflow's timeout configuration, if any."
+ },
+ {
+ "type": "string",
+ "title": "TimeoutReference",
+ "description": "The name of the workflow's timeout, if any."
+ }
+ ]
+ },
+ "output": {
+ "$ref": "#/$defs/output",
+ "title": "Output",
+ "description": "Configures the workflow's output."
+ },
+ "schedule": {
+ "type": "object",
+ "title": "Schedule",
+ "description": "Schedules the workflow.",
+ "unevaluatedProperties": false,
+ "properties": {
+ "every": {
+ "$ref": "#/$defs/duration",
+ "title": "ScheduleEvery",
+ "description": "Specifies the duration of the interval at which the workflow should be executed."
+ },
+ "cron": {
+ "type": "string",
+ "title": "ScheduleCron",
+ "description": "Specifies the schedule using a cron expression, e.g., '0 0 * * *' for daily at midnight."
+ },
+ "after": {
+ "$ref": "#/$defs/duration",
+ "title": "ScheduleAfter",
+ "description": "Specifies a delay duration that the workflow must wait before starting again after it completes."
+ },
+ "on": {
+ "$ref": "#/$defs/eventConsumptionStrategy",
+ "title": "ScheduleOn",
+ "description": "Specifies the events that trigger the workflow execution."
+ }
+ }
+ }
+ },
+ "$defs": {
+ "taskList": {
+ "title": "TaskList",
+ "description": "List of named tasks to perform.",
+ "type": "array",
+ "items": {
+ "type": "object",
+ "title": "TaskItem",
+ "minProperties": 1,
+ "maxProperties": 1,
+ "additionalProperties": {
+ "$ref": "#/$defs/task"
+ }
+ }
+ },
+ "taskBase": {
+ "type": "object",
+ "title": "TaskBase",
+ "description": "An object inherited by all tasks.",
+ "properties": {
+ "if": {
+ "type": "string",
+ "title": "TaskBaseIf",
+ "description": "A runtime expression, if any, used to determine whether or not the task should be run."
+ },
+ "input": {
+ "$ref": "#/$defs/input",
+ "title": "TaskBaseInput",
+ "description": "Configure the task's input."
+ },
+ "output": {
+ "$ref": "#/$defs/output",
+ "title": "TaskBaseOutput",
+ "description": "Configure the task's output."
+ },
+ "export": {
+ "$ref": "#/$defs/export",
+ "title": "TaskBaseExport",
+ "description": "Export task output to context."
+ },
+ "timeout": {
+ "oneOf": [
+ {
+ "$ref": "#/$defs/timeout",
+ "title": "TaskTimeoutDefinition",
+ "description": "The task's timeout configuration, if any."
+ },
+ {
+ "type": "string",
+ "title": "TaskTimeoutReference",
+ "description": "The name of the task's timeout, if any."
+ }
+ ]
+ },
+ "then": {
+ "$ref": "#/$defs/flowDirective",
+ "title": "TaskBaseThen",
+ "description": "The flow directive to be performed upon completion of the task."
+ },
+ "metadata": {
+ "type": "object",
+ "title": "TaskMetadata",
+ "description": "Holds additional information about the task.",
+ "additionalProperties": true
+ }
+ }
+ },
+ "task": {
+ "title": "Task",
+ "description": "A discrete unit of work that contributes to achieving the overall objectives defined by the workflow.",
+ "unevaluatedProperties": false,
+ "oneOf": [
+ {
+ "$ref": "#/$defs/callTask"
+ },
+ {
+ "$ref": "#/$defs/doTask"
+ },
+ {
+ "$ref": "#/$defs/forkTask"
+ },
+ {
+ "$ref": "#/$defs/emitTask"
+ },
+ {
+ "$ref": "#/$defs/forTask"
+ },
+ {
+ "$ref": "#/$defs/listenTask"
+ },
+ {
+ "$ref": "#/$defs/raiseTask"
+ },
+ {
+ "$ref": "#/$defs/runTask"
+ },
+ {
+ "$ref": "#/$defs/setTask"
+ },
+ {
+ "$ref": "#/$defs/switchTask"
+ },
+ {
+ "$ref": "#/$defs/tryTask"
+ },
+ {
+ "$ref": "#/$defs/waitTask"
+ }
+ ]
+ },
+ "callTask": {
+ "title": "CallTask",
+ "description": "Defines the call to perform.",
+ "oneOf": [
+ {
+ "title": "CallAsyncAPI",
+ "description": "Defines the AsyncAPI call to perform.",
+ "$ref": "#/$defs/taskBase",
+ "type": "object",
+ "required": [
+ "call",
+ "with"
+ ],
+ "unevaluatedProperties": false,
+ "properties": {
+ "call": {
+ "type": "string",
+ "const": "asyncapi"
+ },
+ "with": {
+ "type": "object",
+ "title": "AsyncApiArguments",
+ "description": "The Async API call arguments.",
+ "properties": {
+ "document": {
+ "$ref": "#/$defs/externalResource",
+ "title": "WithAsyncAPIDocument",
+ "description": "The document that defines the AsyncAPI operation to call."
+ },
+ "operationRef": {
+ "type": "string",
+ "title": "WithAsyncAPIOperation",
+ "description": "A reference to the AsyncAPI operation to call."
+ },
+ "server": {
+ "type": "string",
+ "title": "WithAsyncAPIServer",
+ "description": "A a reference to the server to call the specified AsyncAPI operation on. If not set, default to the first server matching the operation's channel."
+ },
+ "message": {
+ "type": "string",
+ "title": "WithAsyncAPIMessage",
+ "description": "The name of the message to use. If not set, defaults to the first message defined by the operation."
+ },
+ "binding": {
+ "type": "string",
+ "title": "WithAsyncAPIBinding",
+ "description": "The name of the binding to use. If not set, defaults to the first binding defined by the operation."
+ },
+ "payload": {
+ "type": "object",
+ "title": "WithAsyncAPIPayload",
+ "description": "The payload to call the AsyncAPI operation with, if any."
+ },
+ "authentication": {
+ "$ref": "#/$defs/referenceableAuthenticationPolicy",
+ "title": "WithAsyncAPIAuthentication",
+ "description": "The authentication policy, if any, to use when calling the AsyncAPI operation."
+ }
+ },
+ "required": [
+ "document",
+ "operationRef"
+ ],
+ "unevaluatedProperties": false
+ }
+ }
+ },
+ {
+ "title": "CallGRPC",
+ "description": "Defines the GRPC call to perform.",
+ "$ref": "#/$defs/taskBase",
+ "type": "object",
+ "unevaluatedProperties": false,
+ "required": [
+ "call",
+ "with"
+ ],
+ "properties": {
+ "call": {
+ "type": "string",
+ "const": "grpc"
+ },
+ "with": {
+ "type": "object",
+ "title": "GRPCArguments",
+ "description": "The GRPC call arguments.",
+ "properties": {
+ "proto": {
+ "$ref": "#/$defs/externalResource",
+ "title": "WithGRPCProto",
+ "description": "The proto resource that describes the GRPC service to call."
+ },
+ "service": {
+ "type": "object",
+ "title": "WithGRPCService",
+ "unevaluatedProperties": false,
+ "properties": {
+ "name": {
+ "type": "string",
+ "title": "WithGRPCServiceName",
+ "description": "The name of the GRPC service to call."
+ },
+ "host": {
+ "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])?$"
+ },
+ "port": {
+ "type": "integer",
+ "title": "WithGRPCServicePost",
+ "description": "The port number of the GRPC service to call.",
+ "minimum": 0,
+ "maximum": 65535
+ },
+ "authentication": {
+ "$ref": "#/$defs/referenceableAuthenticationPolicy",
+ "title": "WithGRPCServiceAuthentication",
+ "description": "The endpoint's authentication policy, if any."
+ }
+ },
+ "required": [
+ "name",
+ "host"
+ ]
+ },
+ "method": {
+ "type": "string",
+ "title": "WithGRPCMethod",
+ "description": "The name of the method to call on the defined GRPC service."
+ },
+ "arguments": {
+ "type": "object",
+ "title": "WithGRPCArguments",
+ "description": "The arguments, if any, to call the method with.",
+ "additionalProperties": true
+ }
+ },
+ "required": [
+ "proto",
+ "service",
+ "method"
+ ],
+ "unevaluatedProperties": false
+ }
+ }
+ },
+ {
+ "title": "CallHTTP",
+ "description": "Defines the HTTP call to perform.",
+ "$ref": "#/$defs/taskBase",
+ "type": "object",
+ "unevaluatedProperties": false,
+ "required": [
+ "call",
+ "with"
+ ],
+ "properties": {
+ "call": {
+ "type": "string",
+ "const": "http"
+ },
+ "with": {
+ "type": "object",
+ "title": "HTTPArguments",
+ "description": "The HTTP call arguments.",
+ "properties": {
+ "method": {
+ "type": "string",
+ "title": "WithHTTPMethod",
+ "description": "The HTTP method of the HTTP request to perform."
+ },
+ "endpoint": {
+ "title": "WithHTTPEndpoint",
+ "description": "The HTTP endpoint to send the request to.",
+ "$ref": "#/$defs/endpoint"
+ },
+ "headers": {
+ "type": "object",
+ "title": "WithHTTPHeaders",
+ "description": "A name/value mapping of the headers, if any, of the HTTP request to perform."
+ },
+ "body": {
+ "title": "WithHTTPBody",
+ "description": "The body, if any, of the HTTP request to perform."
+ },
+ "query": {
+ "type": "object",
+ "title": "WithHTTPQuery",
+ "description": "A name/value mapping of the query parameters, if any, of the HTTP request to perform.",
+ "additionalProperties": true
+ },
+ "output": {
+ "type": "string",
+ "title": "WithHTTPOutput",
+ "description": "The http call output format. Defaults to 'content'.",
+ "enum": [
+ "raw",
+ "content",
+ "response"
+ ]
+ }
+ },
+ "required": [
+ "method",
+ "endpoint"
+ ],
+ "unevaluatedProperties": false
+ }
+ }
+ },
+ {
+ "title": "CallOpenAPI",
+ "description": "Defines the OpenAPI call to perform.",
+ "$ref": "#/$defs/taskBase",
+ "type": "object",
+ "unevaluatedProperties": false,
+ "required": [
+ "call",
+ "with"
+ ],
+ "properties": {
+ "call": {
+ "type": "string",
+ "const": "openapi"
+ },
+ "with": {
+ "type": "object",
+ "title": "OpenAPIArguments",
+ "description": "The OpenAPI call arguments.",
+ "properties": {
+ "document": {
+ "$ref": "#/$defs/externalResource",
+ "title": "WithOpenAPIDocument",
+ "description": "The document that defines the OpenAPI operation to call."
+ },
+ "operationId": {
+ "type": "string",
+ "title": "WithOpenAPIOperation",
+ "description": "The id of the OpenAPI operation to call."
+ },
+ "parameters": {
+ "type": "object",
+ "title": "WithOpenAPIParameters",
+ "description": "A name/value mapping of the parameters of the OpenAPI operation to call.",
+ "additionalProperties": true
+ },
+ "authentication": {
+ "$ref": "#/$defs/referenceableAuthenticationPolicy",
+ "title": "WithOpenAPIAuthentication",
+ "description": "The authentication policy, if any, to use when calling the OpenAPI operation."
+ },
+ "output": {
+ "type": "string",
+ "enum": [
+ "raw",
+ "content",
+ "response"
+ ],
+ "title": "WithOpenAPIOutput",
+ "description": "The http call output format. Defaults to 'content'."
+ }
+ },
+ "required": [
+ "document",
+ "operationId"
+ ],
+ "unevaluatedProperties": false
+ }
+ }
+ },
+ {
+ "title": "CallFunction",
+ "description": "Defines the function call to perform.",
+ "$ref": "#/$defs/taskBase",
+ "type": "object",
+ "unevaluatedProperties": false,
+ "required": [
+ "call"
+ ],
+ "properties": {
+ "call": {
+ "type": "string",
+ "not": {
+ "enum": [
+ "asyncapi",
+ "grpc",
+ "http",
+ "openapi"
+ ]
+ },
+ "description": "The name of the function to call."
+ },
+ "with": {
+ "type": "object",
+ "title": "FunctionArguments",
+ "description": "A name/value mapping of the parameters, if any, to call the function with.",
+ "additionalProperties": true
+ }
+ }
+ }
+ ]
+ },
+ "forkTask": {
+ "type": "object",
+ "$ref": "#/$defs/taskBase",
+ "title": "ForkTask",
+ "description": "Allows workflows to execute multiple tasks concurrently and optionally race them against each other, with a single possible winner, which sets the task's output.",
+ "unevaluatedProperties": false,
+ "required": [
+ "fork"
+ ],
+ "properties": {
+ "fork": {
+ "type": "object",
+ "title": "ForkTaskConfiguration",
+ "description": "The configuration of the branches to perform concurrently.",
+ "unevaluatedProperties": false,
+ "required": [
+ "branches"
+ ],
+ "properties": {
+ "branches": {
+ "$ref": "#/$defs/taskList",
+ "title": "ForkBranches"
+ },
+ "compete": {
+ "type": "boolean",
+ "title": "ForkCompete",
+ "description": "Indicates whether or not the concurrent tasks are racing against each other, with a single possible winner, which sets the composite task's output.",
+ "default": false
+ }
+ }
+ }
+ }
+ },
+ "doTask": {
+ "type": "object",
+ "$ref": "#/$defs/taskBase",
+ "title": "DoTask",
+ "description": "Allows to execute a list of tasks in sequence.",
+ "unevaluatedProperties": false,
+ "required": [
+ "do"
+ ],
+ "properties": {
+ "do": {
+ "$ref": "#/$defs/taskList",
+ "title": "DoTaskConfiguration",
+ "description": "The configuration of the tasks to perform sequentially."
+ }
+ }
+ },
+ "emitTask": {
+ "type": "object",
+ "$ref": "#/$defs/taskBase",
+ "title": "EmitTask",
+ "description": "Allows workflows to publish events to event brokers or messaging systems, facilitating communication and coordination between different components and services.",
+ "required": [
+ "emit"
+ ],
+ "unevaluatedProperties": false,
+ "properties": {
+ "emit": {
+ "type": "object",
+ "title": "EmitTaskConfiguration",
+ "description": "The configuration of an event's emission.",
+ "unevaluatedProperties": false,
+ "properties": {
+ "event": {
+ "type": "object",
+ "title": "EmitEventDefinition",
+ "description": "The definition of the event to emit.",
+ "properties": {
+ "with": {
+ "$ref": "#/$defs/eventProperties",
+ "title": "EmitEventWith",
+ "description": "Defines the properties of event to emit.",
+ "required": [
+ "source",
+ "type"
+ ]
+ }
+ },
+ "additionalProperties": true
+ }
+ },
+ "required": [
+ "event"
+ ]
+ }
+ }
+ },
+ "forTask": {
+ "type": "object",
+ "$ref": "#/$defs/taskBase",
+ "title": "ForTask",
+ "description": "Allows workflows to iterate over a collection of items, executing a defined set of subtasks for each item in the collection. This task type is instrumental in handling scenarios such as batch processing, data transformation, and repetitive operations across datasets.",
+ "required": [
+ "for",
+ "do"
+ ],
+ "unevaluatedProperties": false,
+ "properties": {
+ "for": {
+ "type": "object",
+ "title": "ForTaskConfiguration",
+ "description": "The definition of the loop that iterates over a range of values.",
+ "unevaluatedProperties": false,
+ "properties": {
+ "each": {
+ "type": "string",
+ "title": "ForEach",
+ "description": "The name of the variable used to store the current item being enumerated.",
+ "default": "item"
+ },
+ "in": {
+ "type": "string",
+ "title": "ForIn",
+ "description": "A runtime expression used to get the collection to enumerate."
+ },
+ "at": {
+ "type": "string",
+ "title": "ForAt",
+ "description": "The name of the variable used to store the index of the current item being enumerated.",
+ "default": "index"
+ }
+ },
+ "required": [
+ "in"
+ ]
+ },
+ "while": {
+ "type": "string",
+ "title": "While",
+ "description": "A runtime expression that represents the condition, if any, that must be met for the iteration to continue."
+ },
+ "do": {
+ "$ref": "#/$defs/taskList",
+ "title": "ForTaskDo"
+ }
+ }
+ },
+ "listenTask": {
+ "type": "object",
+ "$ref": "#/$defs/taskBase",
+ "title": "ListenTask",
+ "description": "Provides a mechanism for workflows to await and react to external events, enabling event-driven behavior within workflow systems.",
+ "required": [
+ "listen"
+ ],
+ "unevaluatedProperties": false,
+ "properties": {
+ "listen": {
+ "type": "object",
+ "title": "ListenTaskConfiguration",
+ "description": "The configuration of the listener to use.",
+ "unevaluatedProperties": false,
+ "properties": {
+ "to": {
+ "$ref": "#/$defs/eventConsumptionStrategy",
+ "title": "ListenTo",
+ "description": "Defines the event(s) to listen to."
+ }
+ },
+ "required": [
+ "to"
+ ]
+ }
+ }
+ },
+ "raiseTask": {
+ "type": "object",
+ "$ref": "#/$defs/taskBase",
+ "title": "RaiseTask",
+ "description": "Intentionally triggers and propagates errors.",
+ "required": [
+ "raise"
+ ],
+ "unevaluatedProperties": false,
+ "properties": {
+ "raise": {
+ "type": "object",
+ "title": "RaiseTaskConfiguration",
+ "description": "The definition of the error to raise.",
+ "unevaluatedProperties": false,
+ "properties": {
+ "error": {
+ "oneOf": [
+ {
+ "$ref": "#/$defs/error",
+ "title": "RaiseErrorDefinition",
+ "description": "Defines the error to raise."
+ },
+ {
+ "type": "string",
+ "title": "RaiseErrorReference",
+ "description": "The name of the error to raise"
+ }
+ ]
+ }
+ },
+ "required": [
+ "error"
+ ]
+ }
+ }
+ },
+ "runTask": {
+ "type": "object",
+ "$ref": "#/$defs/taskBase",
+ "title": "RunTask",
+ "description": "Provides the capability to execute external containers, shell commands, scripts, or workflows.",
+ "required": [
+ "run"
+ ],
+ "unevaluatedProperties": false,
+ "properties": {
+ "run": {
+ "type": "object",
+ "title": "RunTaskConfiguration",
+ "description": "The configuration of the process to execute.",
+ "unevaluatedProperties": false,
+ "properties": {
+ "await": {
+ "type": "boolean",
+ "default": true,
+ "title": "AwaitProcessCompletion",
+ "description": "Whether to await the process completion before continuing."
+ }
+ },
+ "oneOf": [
+ {
+ "title": "RunContainer",
+ "description": "Enables the execution of external processes encapsulated within a containerized environment.",
+ "properties": {
+ "container": {
+ "type": "object",
+ "title": "Container",
+ "description": "The configuration of the container to run.",
+ "unevaluatedProperties": false,
+ "properties": {
+ "image": {
+ "type": "string",
+ "title": "ContainerImage",
+ "description": "The name of the container image to run."
+ },
+ "command": {
+ "type": "string",
+ "title": "ContainerCommand",
+ "description": "The command, if any, to execute on the container."
+ },
+ "ports": {
+ "type": "object",
+ "title": "ContainerPorts",
+ "description": "The container's port mappings, if any."
+ },
+ "volumes": {
+ "type": "object",
+ "title": "ContainerVolumes",
+ "description": "The container's volume mappings, if any."
+ },
+ "environment": {
+ "type": "object",
+ "title": "ContainerEnvironment",
+ "description": "A key/value mapping of the environment variables, if any, to use when running the configured process."
+ }
+ },
+ "required": [
+ "image"
+ ]
+ }
+ },
+ "required": [
+ "container"
+ ]
+ },
+ {
+ "title": "RunScript",
+ "description": "Enables the execution of custom scripts or code within a workflow, empowering workflows to perform specialized logic, data processing, or integration tasks by executing user-defined scripts written in various programming languages.",
+ "properties": {
+ "script": {
+ "type": "object",
+ "title": "Script",
+ "description": "The configuration of the script to run.",
+ "unevaluatedProperties": false,
+ "properties": {
+ "language": {
+ "type": "string",
+ "title": "ScriptLanguage",
+ "description": "The language of the script to run."
+ },
+ "arguments": {
+ "type": "object",
+ "title": "ScriptArguments",
+ "description": "A key/value mapping of the arguments, if any, to use when running the configured script.",
+ "additionalProperties": true
+ },
+ "environment": {
+ "type": "object",
+ "title": "ScriptEnvironment",
+ "description": "A key/value mapping of the environment variables, if any, to use when running the configured script process.",
+ "additionalProperties": true
+ }
+ },
+ "oneOf": [
+ {
+ "title": "InlineScript",
+ "type": "object",
+ "description": "The script's code.",
+ "properties": {
+ "code": {
+ "type": "string",
+ "title": "InlineScriptCode"
+ }
+ },
+ "required": [
+ "code"
+ ]
+ },
+ {
+ "title": "ExternalScript",
+ "type": "object",
+ "description": "The script's resource.",
+ "properties": {
+ "source": {
+ "$ref": "#/$defs/externalResource",
+ "title": "ExternalScriptResource"
+ }
+ },
+ "required": [
+ "source"
+ ]
+ }
+ ],
+ "required": [
+ "language"
+ ]
+ }
+ },
+ "required": [
+ "script"
+ ]
+ },
+ {
+ "title": "RunShell",
+ "description": "Enables the execution of shell commands within a workflow, enabling workflows to interact with the underlying operating system and perform system-level operations, such as file manipulation, environment configuration, or system administration tasks.",
+ "properties": {
+ "shell": {
+ "type": "object",
+ "title": "Shell",
+ "description": "The configuration of the shell command to run.",
+ "unevaluatedProperties": false,
+ "properties": {
+ "command": {
+ "type": "string",
+ "title": "ShellCommand",
+ "description": "The shell command to run."
+ },
+ "arguments": {
+ "type": "object",
+ "title": "ShellArguments",
+ "description": "A list of the arguments of the shell command to run.",
+ "additionalProperties": true
+ },
+ "environment": {
+ "type": "object",
+ "title": "ShellEnvironment",
+ "description": "A key/value mapping of the environment variables, if any, to use when running the configured process.",
+ "additionalProperties": true
+ }
+ },
+ "required": [
+ "command"
+ ]
+ }
+ },
+ "required": [
+ "shell"
+ ]
+ },
+ {
+ "title": "RunWorkflow",
+ "description": "Enables the invocation and execution of nested workflows within a parent workflow, facilitating modularization, reusability, and abstraction of complex logic or business processes by encapsulating them into standalone workflow units.",
+ "properties": {
+ "workflow": {
+ "type": "object",
+ "title": "SubflowConfiguration",
+ "description": "The configuration of the workflow to run.",
+ "unevaluatedProperties": false,
+ "properties": {
+ "namespace": {
+ "type": "string",
+ "title": "SubflowNamespace",
+ "description": "The namespace the workflow to run belongs to."
+ },
+ "name": {
+ "type": "string",
+ "title": "SubflowName",
+ "description": "The name of the workflow to run."
+ },
+ "version": {
+ "type": "string",
+ "default": "latest",
+ "title": "SubflowVersion",
+ "description": "The version of the workflow to run. Defaults to latest."
+ },
+ "input": {
+ "type": "object",
+ "title": "SubflowInput",
+ "description": "The data, if any, to pass as input to the workflow to execute. The value should be validated against the target workflow's input schema, if specified.",
+ "additionalProperties": true
+ }
+ },
+ "required": [
+ "namespace",
+ "name",
+ "version"
+ ]
+ }
+ },
+ "required": [
+ "workflow"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ "setTask": {
+ "type": "object",
+ "$ref": "#/$defs/taskBase",
+ "title": "SetTask",
+ "description": "A task used to set data.",
+ "required": [
+ "set"
+ ],
+ "unevaluatedProperties": false,
+ "properties": {
+ "set": {
+ "type": "object",
+ "title": "SetTaskConfiguration",
+ "description": "The data to set.",
+ "minProperties": 1,
+ "additionalProperties": true
+ }
+ }
+ },
+ "switchTask": {
+ "type": "object",
+ "$ref": "#/$defs/taskBase",
+ "title": "SwitchTask",
+ "description": "Enables conditional branching within workflows, allowing them to dynamically select different paths based on specified conditions or criteria.",
+ "required": [
+ "switch"
+ ],
+ "unevaluatedProperties": false,
+ "properties": {
+ "switch": {
+ "type": "array",
+ "title": "SwitchTaskConfiguration",
+ "description": "The definition of the switch to use.",
+ "minItems": 1,
+ "items": {
+ "type": "object",
+ "title": "SwitchItem",
+ "minProperties": 1,
+ "maxProperties": 1,
+ "additionalProperties": {
+ "type": "object",
+ "title": "SwitchCase",
+ "description": "The definition of a case within a switch task, defining a condition and corresponding tasks to execute if the condition is met.",
+ "unevaluatedProperties": false,
+ "required": [
+ "then"
+ ],
+ "properties": {
+ "when": {
+ "type": "string",
+ "title": "SwitchCaseCondition",
+ "description": "A runtime expression used to determine whether or not the case matches."
+ },
+ "then": {
+ "$ref": "#/$defs/flowDirective",
+ "title": "SwitchCaseOutcome",
+ "description": "The flow directive to execute when the case matches."
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "tryTask": {
+ "type": "object",
+ "$ref": "#/$defs/taskBase",
+ "title": "TryTask",
+ "description": "Serves as a mechanism within workflows to handle errors gracefully, potentially retrying failed tasks before proceeding with alternate ones.",
+ "required": [
+ "try",
+ "catch"
+ ],
+ "unevaluatedProperties": false,
+ "properties": {
+ "try": {
+ "$ref": "#/$defs/taskList",
+ "title": "TryTaskConfiguration",
+ "description": "The task(s) to perform."
+ },
+ "catch": {
+ "type": "object",
+ "title": "TryTaskCatch",
+ "description": "The object used to define the errors to catch.",
+ "unevaluatedProperties": false,
+ "properties": {
+ "errors": {
+ "type": "object",
+ "title": "CatchErrors",
+ "description": "The configuration of a concept used to catch errors."
+ },
+ "as": {
+ "type": "string",
+ "title": "CatchAs",
+ "description": "The name of the runtime expression variable to save the error as. Defaults to 'error'."
+ },
+ "when": {
+ "type": "string",
+ "title": "CatchWhen",
+ "description": "A runtime expression used to determine whether or not to catch the filtered error."
+ },
+ "exceptWhen": {
+ "type": "string",
+ "title": "CatchExceptWhen",
+ "description": "A runtime expression used to determine whether or not to catch the filtered error."
+ },
+ "retry": {
+ "oneOf": [
+ {
+ "$ref": "#/$defs/retryPolicy",
+ "title": "RetryPolicyDefinition",
+ "description": "The retry policy to use, if any, when catching errors."
+ },
+ {
+ "type": "string",
+ "title": "RetryPolicyReference",
+ "description": "The name of the retry policy to use, if any, when catching errors."
+ }
+ ]
+ },
+ "do": {
+ "$ref": "#/$defs/taskList",
+ "title": "TryTaskCatchDo",
+ "description": "The definition of the task(s) to run when catching an error."
+ }
+ }
+ }
+ }
+ },
+ "waitTask": {
+ "type": "object",
+ "$ref": "#/$defs/taskBase",
+ "title": "WaitTask",
+ "description": "Allows workflows to pause or delay their execution for a specified period of time.",
+ "required": [
+ "wait"
+ ],
+ "unevaluatedProperties": false,
+ "properties": {
+ "wait": {
+ "$ref": "#/$defs/duration",
+ "title": "WaitTaskConfiguration",
+ "description": "The amount of time to wait."
+ }
+ }
+ },
+ "flowDirective": {
+ "title": "FlowDirective",
+ "description": "Represents different transition options for a workflow.",
+ "anyOf": [
+ {
+ "type": "string",
+ "enum": [
+ "continue",
+ "exit",
+ "end"
+ ],
+ "default": "continue"
+ },
+ {
+ "type": "string"
+ }
+ ]
+ },
+ "referenceableAuthenticationPolicy": {
+ "type": "object",
+ "title": "ReferenceableAuthenticationPolicy",
+ "description": "Represents a referenceable authentication policy.",
+ "unevaluatedProperties": false,
+ "oneOf": [
+ {
+ "title": "AuthenticationPolicyReference",
+ "description": "The reference of the authentication policy to use.",
+ "properties": {
+ "use": {
+ "type": "string",
+ "minLength": 1,
+ "title": "ReferenceableAuthenticationPolicyName",
+ "description": "The name of the authentication policy to use."
+ }
+ },
+ "required": [
+ "use"
+ ]
+ },
+ {
+ "$ref": "#/$defs/authenticationPolicy"
+ }
+ ]
+ },
+ "secretBasedAuthenticationPolicy": {
+ "type": "object",
+ "title": "SecretBasedAuthenticationPolicy",
+ "description": "Represents an authentication policy based on secrets.",
+ "unevaluatedProperties": false,
+ "properties": {
+ "use": {
+ "type": "string",
+ "minLength": 1,
+ "title": "SecretBasedAuthenticationPolicyName",
+ "description": "The name of the authentication policy to use."
+ }
+ },
+ "required": [
+ "use"
+ ]
+ },
+ "authenticationPolicy": {
+ "type": "object",
+ "title": "AuthenticationPolicy",
+ "description": "Defines an authentication policy.",
+ "oneOf": [
+ {
+ "title": "BasicAuthenticationPolicy",
+ "description": "Use basic authentication.",
+ "properties": {
+ "basic": {
+ "type": "object",
+ "title": "BasicAuthenticationPolicyConfiguration",
+ "description": "The configuration of the basic authentication policy.",
+ "unevaluatedProperties": false,
+ "oneOf": [
+ {
+ "title": "BasicAuthenticationProperties",
+ "description": "Inline configuration of the basic authentication policy.",
+ "properties": {
+ "username": {
+ "type": "string",
+ "description": "The username to use."
+ },
+ "password": {
+ "type": "string",
+ "description": "The password to use."
+ }
+ },
+ "required": [
+ "username",
+ "password"
+ ]
+ },
+ {
+ "$ref": "#/$defs/secretBasedAuthenticationPolicy",
+ "title": "BasicAuthenticationPolicySecret",
+ "description": "Secret based configuration of the basic authentication policy."
+ }
+ ]
+ }
+ },
+ "required": [
+ "basic"
+ ]
+ },
+ {
+ "title": "BearerAuthenticationPolicy",
+ "description": "Use bearer authentication.",
+ "properties": {
+ "bearer": {
+ "type": "object",
+ "title": "BearerAuthenticationPolicyConfiguration",
+ "description": "The configuration of the bearer authentication policy.",
+ "unevaluatedProperties": false,
+ "oneOf": [
+ {
+ "title": "BearerAuthenticationProperties",
+ "description": "Inline configuration of the bearer authentication policy.",
+ "properties": {
+ "token": {
+ "type": "string",
+ "description": "The bearer token to use."
+ }
+ },
+ "required": [
+ "token"
+ ]
+ },
+ {
+ "$ref": "#/$defs/secretBasedAuthenticationPolicy",
+ "title": "BearerAuthenticationPolicySecret",
+ "description": "Secret based configuration of the bearer authentication policy."
+ }
+ ]
+ }
+ },
+ "required": [
+ "bearer"
+ ]
+ },
+ {
+ "title": "DigestAuthenticationPolicy",
+ "description": "Use digest authentication.",
+ "properties": {
+ "digest": {
+ "type": "object",
+ "title": "DigestAuthenticationPolicyConfiguration",
+ "description": "The configuration of the digest authentication policy.",
+ "unevaluatedProperties": false,
+ "oneOf": [
+ {
+ "title": "DigestAuthenticationProperties",
+ "description": "Inline configuration of the digest authentication policy.",
+ "properties": {
+ "username": {
+ "type": "string",
+ "description": "The username to use."
+ },
+ "password": {
+ "type": "string",
+ "description": "The password to use."
+ }
+ },
+ "required": [
+ "username",
+ "password"
+ ]
+ },
+ {
+ "$ref": "#/$defs/secretBasedAuthenticationPolicy",
+ "title": "DigestAuthenticationPolicySecret",
+ "description": "Secret based configuration of the digest authentication policy."
+ }
+ ]
+ }
+ },
+ "required": [
+ "digest"
+ ]
+ },
+ {
+ "title": "OAuth2AuthenticationPolicy",
+ "description": "Use OAuth2 authentication.",
+ "properties": {
+ "oauth2": {
+ "type": "object",
+ "title": "OAuth2AuthenticationPolicyConfiguration",
+ "description": "The configuration of the OAuth2 authentication policy.",
+ "unevaluatedProperties": false,
+ "oneOf": [
+ {
+ "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": {
+ "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."
+ }
+ ]
+ }
+ },
+ "required": [
+ "oauth2"
+ ]
+ },
+ {
+ "title": "OpenIdConnectAuthenticationPolicy",
+ "description": "Use OpenIdConnect authentication.",
+ "properties": {
+ "oidc": {
+ "type": "object",
+ "title": "OpenIdConnectAuthenticationPolicyConfiguration",
+ "description": "The configuration of the OpenIdConnect authentication policy.",
+ "unevaluatedProperties": false,
+ "oneOf": [
+ {
+ "$ref": "#/$defs/oauth2AuthenticationProperties",
+ "title": "OpenIdConnectAuthenticationProperties",
+ "description": "The inline configuration of the OpenIdConnect authentication policy.",
+ "unevaluatedProperties": false
+ },
+ {
+ "$ref": "#/$defs/secretBasedAuthenticationPolicy",
+ "title": "OpenIdConnectAuthenticationPolicySecret",
+ "description": "Secret based configuration of the OpenIdConnect authentication policy."
+ }
+ ]
+ }
+ },
+ "required": [
+ "oidc"
+ ]
+ }
+ ]
+ },
+ "oauth2AuthenticationProperties": {
+ "type": "object",
+ "title": "OAuth2AutenthicationData",
+ "description": "Inline configuration of the OAuth2 authentication policy.",
+ "properties": {
+ "authority": {
+ "$ref": "#/$defs/uriTemplate",
+ "title": "OAuth2AutenthicationDataAuthority",
+ "description": "The URI that references the OAuth2 authority to use."
+ },
+ "grant": {
+ "type": "string",
+ "enum": [
+ "authorization_code",
+ "client_credentials",
+ "password",
+ "refresh_token",
+ "urn:ietf:params:oauth:grant-type:token-exchange"
+ ],
+ "title": "OAuth2AutenthicationDataGrant",
+ "description": "The grant type to use."
+ },
+ "client": {
+ "type": "object",
+ "title": "OAuth2AutenthicationDataClient",
+ "description": "The definition of an OAuth2 client.",
+ "unevaluatedProperties": false,
+ "properties": {
+ "id": {
+ "type": "string",
+ "title": "ClientId",
+ "description": "The client id to use."
+ },
+ "secret": {
+ "type": "string",
+ "title": "ClientSecret",
+ "description": "The client secret to use, if any."
+ },
+ "assertion": {
+ "type": "string",
+ "title": "ClientAssertion",
+ "description": "A JWT containing a signed assertion with your application credentials."
+ },
+ "authentication": {
+ "type": "string",
+ "enum": [
+ "client_secret_basic",
+ "client_secret_post",
+ "client_secret_jwt",
+ "private_key_jwt",
+ "none"
+ ],
+ "default": "client_secret_post",
+ "title": "ClientAuthentication",
+ "description": "The authentication method to use to authenticate the client."
+ }
+ }
+ },
+ "request": {
+ "type": "object",
+ "title": "OAuth2TokenRequest",
+ "description": "The configuration of an OAuth2 token request",
+ "properties": {
+ "encoding": {
+ "type": "string",
+ "enum": [
+ "application/x-www-form-urlencoded",
+ "application/json"
+ ],
+ "default": "application/x-www-form-urlencoded",
+ "title": "Oauth2TokenRequestEncoding"
+ }
+ }
+ },
+ "issuers": {
+ "type": "array",
+ "title": "OAuth2Issuers",
+ "description": "A list that contains that contains valid issuers that will be used to check against the issuer of generated tokens.",
+ "items": {
+ "type": "string"
+ }
+ },
+ "scopes": {
+ "type": "array",
+ "title": "OAuth2AutenthicationDataScopes",
+ "description": "The scopes, if any, to request the token for.",
+ "items": {
+ "type": "string"
+ }
+ },
+ "audiences": {
+ "type": "array",
+ "title": "OAuth2AutenthicationDataAudiences",
+ "description": "The audiences, if any, to request the token for.",
+ "items": {
+ "type": "string"
+ }
+ },
+ "username": {
+ "type": "string",
+ "title": "OAuth2AutenthicationDataUsername",
+ "description": "The username to use. Used only if the grant type is Password."
+ },
+ "password": {
+ "type": "string",
+ "title": "OAuth2AutenthicationDataPassword",
+ "description": "The password to use. Used only if the grant type is Password."
+ },
+ "subject": {
+ "$ref": "#/$defs/oauth2Token",
+ "title": "OAuth2AutenthicationDataSubject",
+ "description": "The security token that represents the identity of the party on behalf of whom the request is being made."
+ },
+ "actor": {
+ "$ref": "#/$defs/oauth2Token",
+ "title": "OAuth2AutenthicationDataActor",
+ "description": "The security token that represents the identity of the acting party."
+ }
+ }
+ },
+ "oauth2Token": {
+ "type": "object",
+ "title": "OAuth2TokenDefinition",
+ "description": "Represents an OAuth2 token.",
+ "unevaluatedProperties": false,
+ "properties": {
+ "token": {
+ "type": "string",
+ "title": "OAuth2Token",
+ "description": "The security token to use."
+ },
+ "type": {
+ "type": "string",
+ "title": "OAuth2TokenType",
+ "description": "The type of the security token to use."
+ }
+ },
+ "required": [
+ "token",
+ "type"
+ ]
+ },
+ "duration": {
+ "oneOf": [
+ {
+ "type": "object",
+ "minProperties": 1,
+ "unevaluatedProperties": false,
+ "properties": {
+ "days": {
+ "type": "integer",
+ "title": "DurationDays",
+ "description": "Number of days, if any."
+ },
+ "hours": {
+ "type": "integer",
+ "title": "DurationHours",
+ "description": "Number of days, if any."
+ },
+ "minutes": {
+ "type": "integer",
+ "title": "DurationMinutes",
+ "description": "Number of minutes, if any."
+ },
+ "seconds": {
+ "type": "integer",
+ "title": "DurationSeconds",
+ "description": "Number of seconds, if any."
+ },
+ "milliseconds": {
+ "type": "integer",
+ "title": "DurationMilliseconds",
+ "description": "Number of milliseconds, if any."
+ }
+ },
+ "title": "DurationInline",
+ "description": "The inline definition of a duration."
+ },
+ {
+ "type": "string",
+ "pattern": "^P(?!$)(\\d+(?:\\.\\d+)?Y)?(\\d+(?:\\.\\d+)?M)?(\\d+(?:\\.\\d+)?W)?(\\d+(?:\\.\\d+)?D)?(T(?=\\d)(\\d+(?:\\.\\d+)?H)?(\\d+(?:\\.\\d+)?M)?(\\d+(?:\\.\\d+)?S)?)?$",
+ "title": "DurationExpression",
+ "description": "The ISO 8601 expression of a duration."
+ }
+ ]
+ },
+ "error": {
+ "type": "object",
+ "title": "Error",
+ "description": "Represents an error.",
+ "unevaluatedProperties": false,
+ "properties": {
+ "type": {
+ "title": "ErrorType",
+ "description": "A URI reference that identifies the error type.",
+ "oneOf": [
+ {
+ "title": "LiteralErrorType",
+ "$ref": "#/$defs/uriTemplate",
+ "description": "The literal error type."
+ },
+ {
+ "title": "ExpressionErrorType",
+ "$ref": "#/$defs/runtimeExpression",
+ "description": "An expression based error type."
+ }
+ ]
+ },
+ "status": {
+ "type": "integer",
+ "title": "ErrorStatus",
+ "description": "The status code generated by the origin for this occurrence of the error."
+ },
+ "instance": {
+ "title": "ErrorInstance",
+ "description": "A JSON Pointer used to reference the component the error originates from.",
+ "oneOf": [
+ {
+ "title": "LiteralErrorInstance",
+ "description": "The literal error instance.",
+ "type": "string",
+ "format": "json-pointer"
+ },
+ {
+ "$ref": "#/$defs/runtimeExpression",
+ "title": "ExpressionErrorInstance",
+ "description": "An expression based error instance."
+ }
+ ]
+ },
+ "title": {
+ "type": "string",
+ "title": "ErrorTitle",
+ "description": "A short, human-readable summary of the error."
+ },
+ "detail": {
+ "type": "string",
+ "title": "ErrorDetails",
+ "description": "A human-readable explanation specific to this occurrence of the error."
+ }
+ },
+ "required": [
+ "type",
+ "status"
+ ]
+ },
+ "uriTemplate": {
+ "title": "UriTemplate",
+ "anyOf": [
+ {
+ "title": "LiteralUriTemplate",
+ "type": "string",
+ "format": "uri-template",
+ "pattern": "^[A-Za-z][A-Za-z0-9+\\-.]*://.*"
+ },
+ {
+ "title": "LiteralUri",
+ "type": "string",
+ "format": "uri",
+ "pattern": "^[A-Za-z][A-Za-z0-9+\\-.]*://.*"
+ }
+ ]
+ },
+ "endpoint": {
+ "title": "Endpoint",
+ "description": "Represents an endpoint.",
+ "oneOf": [
+ {
+ "$ref": "#/$defs/runtimeExpression"
+ },
+ {
+ "$ref": "#/$defs/uriTemplate"
+ },
+ {
+ "title": "EndpointConfiguration",
+ "type": "object",
+ "unevaluatedProperties": false,
+ "properties": {
+ "uri": {
+ "title": "EndpointUri",
+ "description": "The endpoint's URI.",
+ "oneOf": [
+ {
+ "title": "LiteralEndpointURI",
+ "description": "The literal endpoint's URI.",
+ "$ref": "#/$defs/uriTemplate"
+ },
+ {
+ "title": "ExpressionEndpointURI",
+ "$ref": "#/$defs/runtimeExpression",
+ "description": "An expression based endpoint's URI."
+ }
+ ]
+ },
+ "authentication": {
+ "$ref": "#/$defs/referenceableAuthenticationPolicy",
+ "title": "EndpointAuthentication",
+ "description": "The authentication policy to use."
+ }
+ },
+ "required": [
+ "uri"
+ ]
+ }
+ ]
+ },
+ "eventProperties": {
+ "type": "object",
+ "title": "EventProperties",
+ "description": "Describes the properties of an event.",
+ "properties": {
+ "id": {
+ "type": "string",
+ "title": "EventId",
+ "description": "The event's unique identifier."
+ },
+ "source": {
+ "title": "EventSource",
+ "description": "Identifies the context in which an event happened.",
+ "oneOf": [
+ {
+ "$ref": "#/$defs/uriTemplate"
+ },
+ {
+ "$ref": "#/$defs/runtimeExpression"
+ }
+ ]
+ },
+ "type": {
+ "type": "string",
+ "title": "EventType",
+ "description": "This attribute contains a value describing the type of event related to the originating occurrence."
+ },
+ "time": {
+ "title": "EventTime",
+ "description": "When the event occured.",
+ "oneOf": [
+ {
+ "title": "LiteralTime",
+ "type": "string",
+ "format": "date-time"
+ },
+ {
+ "$ref": "#/$defs/runtimeExpression"
+ }
+ ]
+ },
+ "subject": {
+ "type": "string",
+ "title": "EventSubject",
+ "description": "The subject of the event."
+ },
+ "datacontenttype": {
+ "type": "string",
+ "title": "EventDataContentType",
+ "description": "Content type of data value. This attribute enables data to carry any type of content, whereby format and encoding might differ from that of the chosen event format."
+ },
+ "dataschema": {
+ "title": "EventDataschema",
+ "description": "The schema describing the event format.",
+ "oneOf": [
+ {
+ "title": "LiteralDataSchema",
+ "$ref": "#/$defs/uriTemplate",
+ "description": "The literal event data schema."
+ },
+ {
+ "title": "ExpressionDataSchema",
+ "$ref": "#/$defs/runtimeExpression",
+ "description": "An expression based event data schema."
+ }
+ ]
+ }
+ },
+ "additionalProperties": true
+ },
+ "eventConsumptionStrategy": {
+ "type": "object",
+ "title": "EventConsumptionStrategy",
+ "description": "Describe the event consumption strategy to adopt.",
+ "unevaluatedProperties": false,
+ "oneOf": [
+ {
+ "title": "AllEventConsumptionStrategy",
+ "properties": {
+ "all": {
+ "type": "array",
+ "title": "AllEventConsumptionStrategyConfiguration",
+ "description": "A list containing all the events that must be consumed.",
+ "items": {
+ "$ref": "#/$defs/eventFilter"
+ }
+ }
+ },
+ "required": [
+ "all"
+ ]
+ },
+ {
+ "title": "AnyEventConsumptionStrategy",
+ "properties": {
+ "any": {
+ "type": "array",
+ "title": "AnyEventConsumptionStrategyConfiguration",
+ "description": "A list containing any of the events to consume.",
+ "items": {
+ "$ref": "#/$defs/eventFilter"
+ }
+ }
+ },
+ "required": [
+ "any"
+ ]
+ },
+ {
+ "title": "OneEventConsumptionStrategy",
+ "properties": {
+ "one": {
+ "$ref": "#/$defs/eventFilter",
+ "title": "OneEventConsumptionStrategyConfiguration",
+ "description": "The single event to consume."
+ }
+ },
+ "required": [
+ "one"
+ ]
+ }
+ ]
+ },
+ "eventFilter": {
+ "type": "object",
+ "title": "EventFilter",
+ "description": "An event filter is a mechanism used to selectively process or handle events based on predefined criteria, such as event type, source, or specific attributes.",
+ "unevaluatedProperties": false,
+ "properties": {
+ "with": {
+ "$ref": "#/$defs/eventProperties",
+ "minProperties": 1,
+ "title": "WithEvent",
+ "description": "An event filter is a mechanism used to selectively process or handle events based on predefined criteria, such as event type, source, or specific attributes."
+ },
+ "correlate": {
+ "type": "object",
+ "title": "EventFilterCorrelate",
+ "description": "A correlation is a link between events and data, established by mapping event attributes to specific data attributes, allowing for coordinated processing or handling based on event characteristics.",
+ "additionalProperties": {
+ "type": "object",
+ "properties": {
+ "from": {
+ "type": "string",
+ "title": "CorrelateFrom",
+ "description": "A runtime expression used to extract the correlation value from the filtered event."
+ },
+ "expect": {
+ "type": "string",
+ "title": "CorrelateExpect",
+ "description": "A constant or a runtime expression, if any, used to determine whether or not the extracted correlation value matches expectations. If not set, the first extracted value will be used as the correlation's expectation."
+ }
+ },
+ "required": [
+ "from"
+ ]
+ }
+ }
+ },
+ "required": [
+ "with"
+ ]
+ },
+ "extension": {
+ "type": "object",
+ "title": "Extension",
+ "description": "The definition of an extension.",
+ "unevaluatedProperties": false,
+ "properties": {
+ "extend": {
+ "type": "string",
+ "enum": [
+ "call",
+ "composite",
+ "emit",
+ "for",
+ "listen",
+ "raise",
+ "run",
+ "set",
+ "switch",
+ "try",
+ "wait",
+ "all"
+ ],
+ "title": "ExtensionTarget",
+ "description": "The type of task to extend."
+ },
+ "when": {
+ "type": "string",
+ "title": "ExtensionCondition",
+ "description": "A runtime expression, if any, used to determine whether or not the extension should apply in the specified context."
+ },
+ "before": {
+ "$ref": "#/$defs/taskList",
+ "title": "ExtensionDoBefore",
+ "description": "The task(s) to execute before the extended task, if any."
+ },
+ "after": {
+ "$ref": "#/$defs/taskList",
+ "title": "ExtensionDoAfter",
+ "description": "The task(s) to execute after the extended task, if any."
+ }
+ },
+ "required": [
+ "extend"
+ ]
+ },
+ "externalResource": {
+ "type": "object",
+ "title": "ExternalResource",
+ "description": "Represents an external resource.",
+ "unevaluatedProperties": false,
+ "properties": {
+ "name": {
+ "type": "string",
+ "title": "ExternalResourceName",
+ "description": "The name of the external resource, if any."
+ },
+ "endpoint": {
+ "$ref": "#/$defs/endpoint",
+ "title": "ExternalResourceEndpoint",
+ "description": "The endpoint of the external resource."
+ }
+ },
+ "required": [
+ "endpoint"
+ ]
+ },
+ "input": {
+ "type": "object",
+ "title": "Input",
+ "description": "Configures the input of a workflow or task.",
+ "unevaluatedProperties": false,
+ "properties": {
+ "schema": {
+ "$ref": "#/$defs/schema",
+ "title": "InputSchema",
+ "description": "The schema used to describe and validate the input of the workflow or task."
+ },
+ "from": {
+ "title": "InputFrom",
+ "description": "A runtime expression, if any, used to mutate and/or filter the input of the workflow or task.",
+ "oneOf": [
+ {
+ "type": "string"
+ },
+ {
+ "type": "object"
+ }
+ ]
+ }
+ }
+ },
+ "output": {
+ "type": "object",
+ "title": "Output",
+ "description": "Configures the output of a workflow or task.",
+ "unevaluatedProperties": false,
+ "properties": {
+ "schema": {
+ "$ref": "#/$defs/schema",
+ "title": "OutputSchema",
+ "description": "The schema used to describe and validate the output of the workflow or task."
+ },
+ "as": {
+ "title": "OutputAs",
+ "description": "A runtime expression, if any, used to mutate and/or filter the output of the workflow or task.",
+ "oneOf": [
+ {
+ "type": "string"
+ },
+ {
+ "type": "object"
+ }
+ ]
+ }
+ }
+ },
+ "export": {
+ "type": "object",
+ "title": "Export",
+ "description": "Set the content of the context. .",
+ "unevaluatedProperties": false,
+ "properties": {
+ "schema": {
+ "$ref": "#/$defs/schema",
+ "title": "ExportSchema",
+ "description": "The schema used to describe and validate the workflow context."
+ },
+ "as": {
+ "title": "ExportAs",
+ "description": "A runtime expression, if any, used to export the output data to the context.",
+ "oneOf": [
+ {
+ "type": "string"
+ },
+ {
+ "type": "object"
+ }
+ ]
+ }
+ }
+ },
+ "retryPolicy": {
+ "type": "object",
+ "title": "RetryPolicy",
+ "description": "Defines a retry policy.",
+ "unevaluatedProperties": false,
+ "properties": {
+ "when": {
+ "type": "string",
+ "title": "RetryWhen",
+ "description": "A runtime expression, if any, used to determine whether or not to retry running the task, in a given context."
+ },
+ "exceptWhen": {
+ "type": "string",
+ "title": "RetryExcepWhen",
+ "description": "A runtime expression used to determine whether or not to retry running the task, in a given context."
+ },
+ "delay": {
+ "$ref": "#/$defs/duration",
+ "title": "RetryDelay",
+ "description": "The duration to wait between retry attempts."
+ },
+ "backoff": {
+ "type": "object",
+ "title": "RetryBackoff",
+ "description": "The retry duration backoff.",
+ "unevaluatedProperties": false,
+ "oneOf": [
+ {
+ "title": "ConstantBackoff",
+ "properties": {
+ "constant": {
+ "type": "object",
+ "description": "The definition of the constant backoff to use, if any."
+ }
+ },
+ "required": [
+ "constant"
+ ]
+ },
+ {
+ "title": "ExponentialBackOff",
+ "properties": {
+ "exponential": {
+ "type": "object",
+ "description": "The definition of the exponential backoff to use, if any."
+ }
+ },
+ "required": [
+ "exponential"
+ ]
+ },
+ {
+ "title": "LinearBackoff",
+ "properties": {
+ "linear": {
+ "type": "object",
+ "description": "The definition of the linear backoff to use, if any."
+ }
+ },
+ "required": [
+ "linear"
+ ]
+ }
+ ]
+ },
+ "limit": {
+ "type": "object",
+ "title": "RetryLimit",
+ "unevaluatedProperties": false,
+ "properties": {
+ "attempt": {
+ "type": "object",
+ "title": "RetryLimitAttempt",
+ "unevaluatedProperties": false,
+ "properties": {
+ "count": {
+ "type": "integer",
+ "title": "RetryLimitAttemptCount",
+ "description": "The maximum amount of retry attempts, if any."
+ },
+ "duration": {
+ "$ref": "#/$defs/duration",
+ "title": "RetryLimitAttemptDuration",
+ "description": "The maximum duration for each retry attempt."
+ }
+ }
+ },
+ "duration": {
+ "$ref": "#/$defs/duration",
+ "title": "RetryLimitDuration",
+ "description": "The duration limit, if any, for all retry attempts."
+ }
+ },
+ "description": "The retry limit, if any."
+ },
+ "jitter": {
+ "type": "object",
+ "title": "RetryPolicyJitter",
+ "description": "The parameters, if any, that control the randomness or variability of the delay between retry attempts.",
+ "unevaluatedProperties": false,
+ "properties": {
+ "from": {
+ "$ref": "#/$defs/duration",
+ "title": "RetryPolicyJitterFrom",
+ "description": "The minimum duration of the jitter range."
+ },
+ "to": {
+ "$ref": "#/$defs/duration",
+ "title": "RetryPolicyJitterTo",
+ "description": "The maximum duration of the jitter range."
+ }
+ },
+ "required": [
+ "from",
+ "to"
+ ]
+ }
+ }
+ },
+ "schema": {
+ "type": "object",
+ "title": "Schema",
+ "description": "Represents the definition of a schema.",
+ "unevaluatedProperties": false,
+ "properties": {
+ "format": {
+ "type": "string",
+ "default": "json",
+ "title": "SchemaFormat",
+ "description": "The schema's format. Defaults to 'json'. The (optional) version of the format can be set using `{format}:{version}`."
+ }
+ },
+ "oneOf": [
+ {
+ "title": "SchemaInline",
+ "properties": {
+ "document": {
+ "description": "The schema's inline definition."
+ }
+ },
+ "required": [
+ "document"
+ ]
+ },
+ {
+ "title": "SchemaExternal",
+ "properties": {
+ "resource": {
+ "$ref": "#/$defs/externalResource",
+ "title": "SchemaExternalResource",
+ "description": "The schema's external resource."
+ }
+ },
+ "required": [
+ "resource"
+ ]
+ }
+ ]
+ },
+ "timeout": {
+ "type": "object",
+ "title": "Timeout",
+ "description": "The definition of a timeout.",
+ "unevaluatedProperties": false,
+ "properties": {
+ "after": {
+ "$ref": "#/$defs/duration",
+ "title": "TimeoutAfter",
+ "description": "The duration after which to timeout."
+ }
+ },
+ "required": [
+ "after"
+ ]
+ },
+ "runtimeExpression": {
+ "type": "string",
+ "title": "RuntimeExpression",
+ "description": "A runtime expression.",
+ "pattern": "^\\s*\\$\\{.+\\}\\s*$"
+ }
+ }
+}
\ No newline at end of file
diff --git a/public/schemas/1.0.0-alpha4/workflow.yaml b/public/schemas/1.0.0-alpha4/workflow.yaml
new file mode 100644
index 0000000..d8f3460
--- /dev/null
+++ b/public/schemas/1.0.0-alpha4/workflow.yaml
@@ -0,0 +1,1492 @@
+$id: https://open-workflow-specification.org/schemas/1.0.0-alpha4/workflow.yaml
+$schema: https://json-schema.org/draft/2020-12/schema
+description: Open Workflow Specification DSL - Workflow Schema.
+type: object
+required: [ document, do ]
+properties:
+ document:
+ type: object
+ title: Document
+ description: Documents the workflow.
+ unevaluatedProperties: false
+ properties:
+ dsl:
+ type: string
+ pattern: ^(0|[1-9]\d*)\.(0|[1-9]\d*)\.(0|[1-9]\d*)(?:-((?:0|[1-9]\d*|\d*[a-zA-Z-][0-9a-zA-Z-]*)(?:\.(?:0|[1-9]\d*|\d*[a-zA-Z-][0-9a-zA-Z-]*))*))?(?:\+([0-9a-zA-Z-]+(?:\.[0-9a-zA-Z-]+)*))?$
+ title: WorkflowDSL
+ description: The version of the DSL used by the workflow.
+ namespace:
+ type: string
+ pattern: ^[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?$
+ title: WorkflowNamespace
+ description: The workflow's namespace.
+ name:
+ type: string
+ pattern: ^[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?$
+ title: WorkflowName
+ description: The workflow's name.
+ version:
+ type: string
+ pattern: ^(0|[1-9]\d*)\.(0|[1-9]\d*)\.(0|[1-9]\d*)(?:-((?:0|[1-9]\d*|\d*[a-zA-Z-][0-9a-zA-Z-]*)(?:\.(?:0|[1-9]\d*|\d*[a-zA-Z-][0-9a-zA-Z-]*))*))?(?:\+([0-9a-zA-Z-]+(?:\.[0-9a-zA-Z-]+)*))?$
+ title: WorkflowVersion
+ description: The workflow's semantic version.
+ title:
+ type: string
+ title: WorkflowTitle
+ description: The workflow's title.
+ summary:
+ type: string
+ title: WorkflowSummary
+ description: The workflow's Markdown summary.
+ tags:
+ type: object
+ title: WorkflowTags
+ description: A key/value mapping of the workflow's tags, if any.
+ additionalProperties: true
+ metadata:
+ type: object
+ title: WorkflowMetadata
+ description: Holds additional information about the workflow.
+ additionalProperties: true
+ required: [ dsl, namespace, name, version ]
+ input:
+ $ref: '#/$defs/input'
+ title: Input
+ description: Configures the workflow's input.
+ use:
+ type: object
+ title: Use
+ description: Defines the workflow's reusable components.
+ unevaluatedProperties: false
+ properties:
+ authentications:
+ type: object
+ title: UseAuthentications
+ description: The workflow's reusable authentication policies.
+ additionalProperties:
+ $ref: '#/$defs/authenticationPolicy'
+ errors:
+ type: object
+ title: UseErrors
+ description: The workflow's reusable errors.
+ additionalProperties:
+ $ref: '#/$defs/error'
+ extensions:
+ type: array
+ title: UseExtensions
+ description: The workflow's extensions.
+ items:
+ type: object
+ title: ExtensionItem
+ minProperties: 1
+ maxProperties: 1
+ additionalProperties:
+ $ref: '#/$defs/extension'
+ functions:
+ type: object
+ title: UseFunctions
+ description: The workflow's reusable functions.
+ additionalProperties:
+ $ref: '#/$defs/task'
+ retries:
+ type: object
+ title: UseRetries
+ description: The workflow's reusable retry policies.
+ additionalProperties:
+ $ref: '#/$defs/retryPolicy'
+ secrets:
+ type: array
+ title: UseSecrets
+ description: The workflow's reusable secrets.
+ items:
+ type: string
+ description: The workflow's secrets.
+ timeouts:
+ type: object
+ title: UseTimeouts
+ description: The workflow's reusable timeouts.
+ additionalProperties:
+ $ref: '#/$defs/timeout'
+ do:
+ $ref: '#/$defs/taskList'
+ title: Do
+ description: Defines the task(s) the workflow must perform.
+ timeout:
+ oneOf:
+ - $ref: '#/$defs/timeout'
+ title: TimeoutDefinition
+ description: The workflow's timeout configuration, if any.
+ - type: string
+ title: TimeoutReference
+ description: The name of the workflow's timeout, if any.
+ output:
+ $ref: '#/$defs/output'
+ title: Output
+ description: Configures the workflow's output.
+ schedule:
+ type: object
+ title: Schedule
+ description: Schedules the workflow.
+ unevaluatedProperties: false
+ properties:
+ every:
+ $ref: '#/$defs/duration'
+ title: ScheduleEvery
+ description: Specifies the duration of the interval at which the workflow should be executed.
+ cron:
+ type: string
+ title: ScheduleCron
+ description: Specifies the schedule using a cron expression, e.g., '0 0 * * *' for daily at midnight.
+ after:
+ $ref: '#/$defs/duration'
+ title: ScheduleAfter
+ description: Specifies a delay duration that the workflow must wait before starting again after it completes.
+ on:
+ $ref: '#/$defs/eventConsumptionStrategy'
+ title: ScheduleOn
+ description: Specifies the events that trigger the workflow execution.
+$defs:
+ taskList:
+ title: TaskList
+ description: List of named tasks to perform.
+ type: array
+ items:
+ type: object
+ title: TaskItem
+ minProperties: 1
+ maxProperties: 1
+ additionalProperties:
+ $ref: '#/$defs/task'
+ taskBase:
+ type: object
+ title: TaskBase
+ description: An object inherited by all tasks.
+ properties:
+ if:
+ type: string
+ title: TaskBaseIf
+ description: A runtime expression, if any, used to determine whether or not the task should be run.
+ input:
+ $ref: '#/$defs/input'
+ title: TaskBaseInput
+ description: Configure the task's input.
+ output:
+ $ref: '#/$defs/output'
+ title: TaskBaseOutput
+ description: Configure the task's output.
+ export:
+ $ref: '#/$defs/export'
+ title: TaskBaseExport
+ description: Export task output to context.
+ timeout:
+ oneOf:
+ - $ref: '#/$defs/timeout'
+ title: TaskTimeoutDefinition
+ description: The task's timeout configuration, if any.
+ - type: string
+ title: TaskTimeoutReference
+ description: The name of the task's timeout, if any.
+ then:
+ $ref: '#/$defs/flowDirective'
+ title: TaskBaseThen
+ description: The flow directive to be performed upon completion of the task.
+ metadata:
+ type: object
+ title: TaskMetadata
+ description: Holds additional information about the task.
+ additionalProperties: true
+ task:
+ title: Task
+ description: A discrete unit of work that contributes to achieving the overall objectives defined by the workflow.
+ unevaluatedProperties: false
+ oneOf:
+ - $ref: '#/$defs/callTask'
+ - $ref: '#/$defs/doTask'
+ - $ref: '#/$defs/forkTask'
+ - $ref: '#/$defs/emitTask'
+ - $ref: '#/$defs/forTask'
+ - $ref: '#/$defs/listenTask'
+ - $ref: '#/$defs/raiseTask'
+ - $ref: '#/$defs/runTask'
+ - $ref: '#/$defs/setTask'
+ - $ref: '#/$defs/switchTask'
+ - $ref: '#/$defs/tryTask'
+ - $ref: '#/$defs/waitTask'
+ callTask:
+ title: CallTask
+ description: Defines the call to perform.
+ oneOf:
+ - title: CallAsyncAPI
+ description: Defines the AsyncAPI call to perform.
+ $ref: '#/$defs/taskBase'
+ type: object
+ required: [ call, with ]
+ unevaluatedProperties: false
+ properties:
+ call:
+ type: string
+ const: asyncapi
+ with:
+ type: object
+ title: AsyncApiArguments
+ description: The Async API call arguments.
+ properties:
+ document:
+ $ref: '#/$defs/externalResource'
+ title: WithAsyncAPIDocument
+ description: The document that defines the AsyncAPI operation to call.
+ operationRef:
+ type: string
+ title: WithAsyncAPIOperation
+ description: A reference to the AsyncAPI operation to call.
+ server:
+ type: string
+ title: WithAsyncAPIServer
+ description: A a reference to the server to call the specified AsyncAPI operation on. If not set, default to the first server matching the operation's channel.
+ message:
+ type: string
+ title: WithAsyncAPIMessage
+ description: The name of the message to use. If not set, defaults to the first message defined by the operation.
+ binding:
+ type: string
+ title: WithAsyncAPIBinding
+ description: The name of the binding to use. If not set, defaults to the first binding defined by the operation.
+ payload:
+ type: object
+ title: WithAsyncAPIPayload
+ description: The payload to call the AsyncAPI operation with, if any.
+ authentication:
+ $ref: '#/$defs/referenceableAuthenticationPolicy'
+ title: WithAsyncAPIAuthentication
+ description: The authentication policy, if any, to use when calling the AsyncAPI operation.
+ required: [ document, operationRef ]
+ unevaluatedProperties: false
+ - title: CallGRPC
+ description: Defines the GRPC call to perform.
+ $ref: '#/$defs/taskBase'
+ type: object
+ unevaluatedProperties: false
+ required: [ call, with ]
+ properties:
+ call:
+ type: string
+ const: grpc
+ with:
+ type: object
+ title: GRPCArguments
+ description: The GRPC call arguments.
+ properties:
+ proto:
+ $ref: '#/$defs/externalResource'
+ title: WithGRPCProto
+ description: The proto resource that describes the GRPC service to call.
+ service:
+ type: object
+ title: WithGRPCService
+ unevaluatedProperties: false
+ properties:
+ name:
+ type: string
+ title: WithGRPCServiceName
+ description: The name of the GRPC service to call.
+ host:
+ 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])?$
+ port:
+ type: integer
+ title: WithGRPCServicePost
+ description: The port number of the GRPC service to call.
+ minimum: 0
+ maximum: 65535
+ authentication:
+ $ref: '#/$defs/referenceableAuthenticationPolicy'
+ title: WithGRPCServiceAuthentication
+ description: The endpoint's authentication policy, if any.
+ required: [ name, host ]
+ method:
+ type: string
+ title: WithGRPCMethod
+ description: The name of the method to call on the defined GRPC service.
+ arguments:
+ type: object
+ title: WithGRPCArguments
+ description: The arguments, if any, to call the method with.
+ additionalProperties: true
+ required: [ proto, service, method ]
+ unevaluatedProperties: false
+ - title: CallHTTP
+ description: Defines the HTTP call to perform.
+ $ref: '#/$defs/taskBase'
+ type: object
+ unevaluatedProperties: false
+ required: [ call, with ]
+ properties:
+ call:
+ type: string
+ const: http
+ with:
+ type: object
+ title: HTTPArguments
+ description: The HTTP call arguments.
+ properties:
+ method:
+ type: string
+ title: WithHTTPMethod
+ description: The HTTP method of the HTTP request to perform.
+ endpoint:
+ title: WithHTTPEndpoint
+ description: The HTTP endpoint to send the request to.
+ $ref: '#/$defs/endpoint'
+ headers:
+ type: object
+ title: WithHTTPHeaders
+ description: A name/value mapping of the headers, if any, of the HTTP request to perform.
+ body:
+ title: WithHTTPBody
+ description: The body, if any, of the HTTP request to perform.
+ query:
+ type: object
+ title: WithHTTPQuery
+ description: A name/value mapping of the query parameters, if any, of the HTTP request to perform.
+ additionalProperties: true
+ output:
+ type: string
+ title: WithHTTPOutput
+ description: The http call output format. Defaults to 'content'.
+ enum: [ raw, content, response ]
+ required: [ method, endpoint ]
+ unevaluatedProperties: false
+ - title: CallOpenAPI
+ description: Defines the OpenAPI call to perform.
+ $ref: '#/$defs/taskBase'
+ type: object
+ unevaluatedProperties: false
+ required: [ call, with ]
+ properties:
+ call:
+ type: string
+ const: openapi
+ with:
+ type: object
+ title: OpenAPIArguments
+ description: The OpenAPI call arguments.
+ properties:
+ document:
+ $ref: '#/$defs/externalResource'
+ title: WithOpenAPIDocument
+ description: The document that defines the OpenAPI operation to call.
+ operationId:
+ type: string
+ title: WithOpenAPIOperation
+ description: The id of the OpenAPI operation to call.
+ parameters:
+ type: object
+ title: WithOpenAPIParameters
+ description: A name/value mapping of the parameters of the OpenAPI operation to call.
+ additionalProperties: true
+ authentication:
+ $ref: '#/$defs/referenceableAuthenticationPolicy'
+ title: WithOpenAPIAuthentication
+ description: The authentication policy, if any, to use when calling the OpenAPI operation.
+ output:
+ type: string
+ enum: [ raw, content, response ]
+ title: WithOpenAPIOutput
+ description: The http call output format. Defaults to 'content'.
+ required: [ document, operationId ]
+ unevaluatedProperties: false
+ - title: CallFunction
+ description: Defines the function call to perform.
+ $ref: '#/$defs/taskBase'
+ type: object
+ unevaluatedProperties: false
+ required: [ call ]
+ properties:
+ call:
+ type: string
+ not:
+ enum: ["asyncapi", "grpc", "http", "openapi"]
+ description: The name of the function to call.
+ with:
+ type: object
+ title: FunctionArguments
+ description: A name/value mapping of the parameters, if any, to call the function with.
+ additionalProperties: true
+ forkTask:
+ type: object
+ $ref: '#/$defs/taskBase'
+ title: ForkTask
+ description: Allows workflows to execute multiple tasks concurrently and optionally race them against each other, with a single possible winner, which sets the task's output.
+ unevaluatedProperties: false
+ required: [ fork ]
+ properties:
+ fork:
+ type: object
+ title: ForkTaskConfiguration
+ description: The configuration of the branches to perform concurrently.
+ unevaluatedProperties: false
+ required: [ branches ]
+ properties:
+ branches:
+ $ref: '#/$defs/taskList'
+ title: ForkBranches
+ compete:
+ type: boolean
+ title: ForkCompete
+ description: Indicates whether or not the concurrent tasks are racing against each other, with a single possible winner, which sets the composite task's output.
+ default: false
+ doTask:
+ type: object
+ $ref: '#/$defs/taskBase'
+ title: DoTask
+ description: Allows to execute a list of tasks in sequence.
+ unevaluatedProperties: false
+ required: [ do ]
+ properties:
+ do:
+ $ref: '#/$defs/taskList'
+ title: DoTaskConfiguration
+ description: The configuration of the tasks to perform sequentially.
+ emitTask:
+ type: object
+ $ref: '#/$defs/taskBase'
+ title: EmitTask
+ description: Allows workflows to publish events to event brokers or messaging systems, facilitating communication and coordination between different components and services.
+ required: [ emit ]
+ unevaluatedProperties: false
+ properties:
+ emit:
+ type: object
+ title: EmitTaskConfiguration
+ description: The configuration of an event's emission.
+ unevaluatedProperties: false
+ properties:
+ event:
+ type: object
+ title: EmitEventDefinition
+ description: The definition of the event to emit.
+ properties:
+ with:
+ $ref: '#/$defs/eventProperties'
+ title: EmitEventWith
+ description: Defines the properties of event to emit.
+ required: [ source, type ]
+ additionalProperties: true
+ required: [ event ]
+ forTask:
+ type: object
+ $ref: '#/$defs/taskBase'
+ title: ForTask
+ description: Allows workflows to iterate over a collection of items, executing a defined set of subtasks for each item in the collection. This task type is instrumental in handling scenarios such as batch processing, data transformation, and repetitive operations across datasets.
+ required: [ for, do ]
+ unevaluatedProperties: false
+ properties:
+ for:
+ type: object
+ title: ForTaskConfiguration
+ description: The definition of the loop that iterates over a range of values.
+ unevaluatedProperties: false
+ properties:
+ each:
+ type: string
+ title: ForEach
+ description: The name of the variable used to store the current item being enumerated.
+ default: item
+ in:
+ type: string
+ title: ForIn
+ description: A runtime expression used to get the collection to enumerate.
+ at:
+ type: string
+ title: ForAt
+ description: The name of the variable used to store the index of the current item being enumerated.
+ default: index
+ required: [ in ]
+ while:
+ type: string
+ title: While
+ description: A runtime expression that represents the condition, if any, that must be met for the iteration to continue.
+ do:
+ $ref: '#/$defs/taskList'
+ title: ForTaskDo
+ listenTask:
+ type: object
+ $ref: '#/$defs/taskBase'
+ title: ListenTask
+ description: Provides a mechanism for workflows to await and react to external events, enabling event-driven behavior within workflow systems.
+ required: [ listen ]
+ unevaluatedProperties: false
+ properties:
+ listen:
+ type: object
+ title: ListenTaskConfiguration
+ description: The configuration of the listener to use.
+ unevaluatedProperties: false
+ properties:
+ to:
+ $ref: '#/$defs/eventConsumptionStrategy'
+ title: ListenTo
+ description: Defines the event(s) to listen to.
+ required: [ to ]
+ raiseTask:
+ type: object
+ $ref: '#/$defs/taskBase'
+ title: RaiseTask
+ description: Intentionally triggers and propagates errors.
+ required: [ raise ]
+ unevaluatedProperties: false
+ properties:
+ raise:
+ type: object
+ title: RaiseTaskConfiguration
+ description: The definition of the error to raise.
+ unevaluatedProperties: false
+ properties:
+ error:
+ oneOf:
+ - $ref: '#/$defs/error'
+ title: RaiseErrorDefinition
+ description: Defines the error to raise.
+ - type: string
+ title: RaiseErrorReference
+ description: The name of the error to raise
+ required: [ error ]
+ runTask:
+ type: object
+ $ref: '#/$defs/taskBase'
+ title: RunTask
+ description: Provides the capability to execute external containers, shell commands, scripts, or workflows.
+ required: [ run ]
+ unevaluatedProperties: false
+ properties:
+ run:
+ type: object
+ title: RunTaskConfiguration
+ description: The configuration of the process to execute.
+ unevaluatedProperties: false
+ properties:
+ await:
+ type: boolean
+ default: true
+ title: AwaitProcessCompletion
+ description: Whether to await the process completion before continuing.
+ oneOf:
+ - title: RunContainer
+ description: Enables the execution of external processes encapsulated within a containerized environment.
+ properties:
+ container:
+ type: object
+ title: Container
+ description: The configuration of the container to run.
+ unevaluatedProperties: false
+ properties:
+ image:
+ type: string
+ title: ContainerImage
+ description: The name of the container image to run.
+ command:
+ type: string
+ title: ContainerCommand
+ description: The command, if any, to execute on the container.
+ ports:
+ type: object
+ title: ContainerPorts
+ description: The container's port mappings, if any.
+ volumes:
+ type: object
+ title: ContainerVolumes
+ description: The container's volume mappings, if any.
+ environment:
+ type: object
+ title: ContainerEnvironment
+ description: A key/value mapping of the environment variables, if any, to use when running the configured process.
+ required: [ image ]
+ required: [ container ]
+ - title: RunScript
+ description: Enables the execution of custom scripts or code within a workflow, empowering workflows to perform specialized logic, data processing, or integration tasks by executing user-defined scripts written in various programming languages.
+ properties:
+ script:
+ type: object
+ title: Script
+ description: The configuration of the script to run.
+ unevaluatedProperties: false
+ properties:
+ language:
+ type: string
+ title: ScriptLanguage
+ description: The language of the script to run.
+ arguments:
+ type: object
+ title: ScriptArguments
+ description: A key/value mapping of the arguments, if any, to use when running the configured script.
+ additionalProperties: true
+ environment:
+ type: object
+ title: ScriptEnvironment
+ description: A key/value mapping of the environment variables, if any, to use when running the configured script process.
+ additionalProperties: true
+ oneOf:
+ - title: InlineScript
+ type: object
+ description: The script's code.
+ properties:
+ code:
+ type: string
+ title: InlineScriptCode
+ required: [ code ]
+ - title: ExternalScript
+ type: object
+ description: The script's resource.
+ properties:
+ source:
+ $ref: '#/$defs/externalResource'
+ title: ExternalScriptResource
+ required: [ source ]
+ required: [ language ]
+ required: [ script ]
+ - title: RunShell
+ description: Enables the execution of shell commands within a workflow, enabling workflows to interact with the underlying operating system and perform system-level operations, such as file manipulation, environment configuration, or system administration tasks.
+ properties:
+ shell:
+ type: object
+ title: Shell
+ description: The configuration of the shell command to run.
+ unevaluatedProperties: false
+ properties:
+ command:
+ type: string
+ title: ShellCommand
+ description: The shell command to run.
+ arguments:
+ type: object
+ title: ShellArguments
+ description: A list of the arguments of the shell command to run.
+ additionalProperties: true
+ environment:
+ type: object
+ title: ShellEnvironment
+ description: A key/value mapping of the environment variables, if any, to use when running the configured process.
+ additionalProperties: true
+ required: [ command ]
+ required: [ shell ]
+ - title: RunWorkflow
+ description: Enables the invocation and execution of nested workflows within a parent workflow, facilitating modularization, reusability, and abstraction of complex logic or business processes by encapsulating them into standalone workflow units.
+ properties:
+ workflow:
+ type: object
+ title: SubflowConfiguration
+ description: The configuration of the workflow to run.
+ unevaluatedProperties: false
+ properties:
+ namespace:
+ type: string
+ title: SubflowNamespace
+ description: The namespace the workflow to run belongs to.
+ name:
+ type: string
+ title: SubflowName
+ description: The name of the workflow to run.
+ version:
+ type: string
+ default: latest
+ title: SubflowVersion
+ description: The version of the workflow to run. Defaults to latest.
+ input:
+ type: object
+ title: SubflowInput
+ description: The data, if any, to pass as input to the workflow to execute. The value should be validated against the target workflow's input schema, if specified.
+ additionalProperties: true
+ required: [ namespace, name, version ]
+ required: [ workflow ]
+ setTask:
+ type: object
+ $ref: '#/$defs/taskBase'
+ title: SetTask
+ description: A task used to set data.
+ required: [ set ]
+ unevaluatedProperties: false
+ properties:
+ set:
+ type: object
+ title: SetTaskConfiguration
+ description: The data to set.
+ minProperties: 1
+ additionalProperties: true
+ switchTask:
+ type: object
+ $ref: '#/$defs/taskBase'
+ title: SwitchTask
+ description: Enables conditional branching within workflows, allowing them to dynamically select different paths based on specified conditions or criteria.
+ required: [ switch ]
+ unevaluatedProperties: false
+ properties:
+ switch:
+ type: array
+ title: SwitchTaskConfiguration
+ description: The definition of the switch to use.
+ minItems: 1
+ items:
+ type: object
+ title: SwitchItem
+ minProperties: 1
+ maxProperties: 1
+ additionalProperties:
+ type: object
+ title: SwitchCase
+ description: The definition of a case within a switch task, defining a condition and corresponding tasks to execute if the condition is met.
+ unevaluatedProperties: false
+ required: [ then ]
+ properties:
+ when:
+ type: string
+ title: SwitchCaseCondition
+ description: A runtime expression used to determine whether or not the case matches.
+ then:
+ $ref: '#/$defs/flowDirective'
+ title: SwitchCaseOutcome
+ description: The flow directive to execute when the case matches.
+ tryTask:
+ type: object
+ $ref: '#/$defs/taskBase'
+ title: TryTask
+ description: Serves as a mechanism within workflows to handle errors gracefully, potentially retrying failed tasks before proceeding with alternate ones.
+ required: [ try, catch ]
+ unevaluatedProperties: false
+ properties:
+ try:
+ $ref: '#/$defs/taskList'
+ title: TryTaskConfiguration
+ description: The task(s) to perform.
+ catch:
+ type: object
+ title: TryTaskCatch
+ description: The object used to define the errors to catch.
+ unevaluatedProperties: false
+ properties:
+ errors:
+ type: object
+ title: CatchErrors
+ description: The configuration of a concept used to catch errors.
+ as:
+ type: string
+ title: CatchAs
+ description: The name of the runtime expression variable to save the error as. Defaults to 'error'.
+ when:
+ type: string
+ title: CatchWhen
+ description: A runtime expression used to determine whether or not to catch the filtered error.
+ exceptWhen:
+ type: string
+ title: CatchExceptWhen
+ description: A runtime expression used to determine whether or not to catch the filtered error.
+ retry:
+ oneOf:
+ - $ref: '#/$defs/retryPolicy'
+ title: RetryPolicyDefinition
+ description: The retry policy to use, if any, when catching errors.
+ - type: string
+ title: RetryPolicyReference
+ description: The name of the retry policy to use, if any, when catching errors.
+ do:
+ $ref: '#/$defs/taskList'
+ title: TryTaskCatchDo
+ description: The definition of the task(s) to run when catching an error.
+ waitTask:
+ type: object
+ $ref: '#/$defs/taskBase'
+ title: WaitTask
+ description: Allows workflows to pause or delay their execution for a specified period of time.
+ required: [ wait ]
+ unevaluatedProperties: false
+ properties:
+ wait:
+ $ref: '#/$defs/duration'
+ title: WaitTaskConfiguration
+ description: The amount of time to wait.
+ flowDirective:
+ title: FlowDirective
+ description: Represents different transition options for a workflow.
+ anyOf:
+ - type: string
+ enum: [ continue, exit, end ]
+ default: continue
+ - type: string
+ referenceableAuthenticationPolicy:
+ type: object
+ title: ReferenceableAuthenticationPolicy
+ description: Represents a referenceable authentication policy.
+ unevaluatedProperties: false
+ oneOf:
+ - title: AuthenticationPolicyReference
+ description: The reference of the authentication policy to use.
+ properties:
+ use:
+ type: string
+ minLength: 1
+ title: ReferenceableAuthenticationPolicyName
+ description: The name of the authentication policy to use.
+ required: [use]
+ - $ref: '#/$defs/authenticationPolicy'
+ secretBasedAuthenticationPolicy:
+ type: object
+ title: SecretBasedAuthenticationPolicy
+ description: Represents an authentication policy based on secrets.
+ unevaluatedProperties: false
+ properties:
+ use:
+ type: string
+ minLength: 1
+ title: SecretBasedAuthenticationPolicyName
+ description: The name of the authentication policy to use.
+ required: [use]
+ authenticationPolicy:
+ type: object
+ title: AuthenticationPolicy
+ description: Defines an authentication policy.
+ oneOf:
+ - title: BasicAuthenticationPolicy
+ description: Use basic authentication.
+ properties:
+ basic:
+ type: object
+ title: BasicAuthenticationPolicyConfiguration
+ description: The configuration of the basic authentication policy.
+ unevaluatedProperties: false
+ oneOf:
+ - title: BasicAuthenticationProperties
+ description: Inline configuration of the basic authentication policy.
+ properties:
+ username:
+ type: string
+ description: The username to use.
+ password:
+ type: string
+ description: The password to use.
+ required: [ username, password ]
+ - $ref: '#/$defs/secretBasedAuthenticationPolicy'
+ title: BasicAuthenticationPolicySecret
+ description: Secret based configuration of the basic authentication policy.
+ required: [ basic ]
+ - title: BearerAuthenticationPolicy
+ description: Use bearer authentication.
+ properties:
+ bearer:
+ type: object
+ title: BearerAuthenticationPolicyConfiguration
+ description: The configuration of the bearer authentication policy.
+ unevaluatedProperties: false
+ oneOf:
+ - title: BearerAuthenticationProperties
+ description: Inline configuration of the bearer authentication policy.
+ properties:
+ token:
+ type: string
+ description: The bearer token to use.
+ required: [ token ]
+ - $ref: '#/$defs/secretBasedAuthenticationPolicy'
+ title: BearerAuthenticationPolicySecret
+ description: Secret based configuration of the bearer authentication policy.
+ required: [ bearer ]
+ - title: DigestAuthenticationPolicy
+ description: Use digest authentication.
+ properties:
+ digest:
+ type: object
+ title: DigestAuthenticationPolicyConfiguration
+ description: The configuration of the digest authentication policy.
+ unevaluatedProperties: false
+ oneOf:
+ - title: DigestAuthenticationProperties
+ description: Inline configuration of the digest authentication policy.
+ properties:
+ username:
+ type: string
+ description: The username to use.
+ password:
+ type: string
+ description: The password to use.
+ required: [ username, password ]
+ - $ref: '#/$defs/secretBasedAuthenticationPolicy'
+ title: DigestAuthenticationPolicySecret
+ description: Secret based configuration of the digest authentication policy.
+ required: [ digest ]
+ - title: OAuth2AuthenticationPolicy
+ description: Use OAuth2 authentication.
+ properties:
+ oauth2:
+ type: object
+ title: OAuth2AuthenticationPolicyConfiguration
+ description: The configuration of the OAuth2 authentication policy.
+ unevaluatedProperties: false
+ oneOf:
+ - 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:
+ 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.
+ required: [ oauth2 ]
+ - title: OpenIdConnectAuthenticationPolicy
+ description: Use OpenIdConnect authentication.
+ properties:
+ oidc:
+ type: object
+ title: OpenIdConnectAuthenticationPolicyConfiguration
+ description: The configuration of the OpenIdConnect authentication policy.
+ unevaluatedProperties: false
+ oneOf:
+ - $ref: '#/$defs/oauth2AuthenticationProperties'
+ title: OpenIdConnectAuthenticationProperties
+ description: The inline configuration of the OpenIdConnect authentication policy.
+ unevaluatedProperties: false
+ - $ref: '#/$defs/secretBasedAuthenticationPolicy'
+ title: OpenIdConnectAuthenticationPolicySecret
+ description: Secret based configuration of the OpenIdConnect authentication policy.
+ required: [ oidc ]
+ oauth2AuthenticationProperties:
+ type: object
+ title: OAuth2AutenthicationData
+ description: Inline configuration of the OAuth2 authentication policy.
+ properties:
+ authority:
+ $ref: '#/$defs/uriTemplate'
+ title: OAuth2AutenthicationDataAuthority
+ description: The URI that references the OAuth2 authority to use.
+ grant:
+ type: string
+ enum: [ authorization_code, client_credentials, password, refresh_token, 'urn:ietf:params:oauth:grant-type:token-exchange']
+ title: OAuth2AutenthicationDataGrant
+ description: The grant type to use.
+ client:
+ type: object
+ title: OAuth2AutenthicationDataClient
+ description: The definition of an OAuth2 client.
+ unevaluatedProperties: false
+ properties:
+ id:
+ type: string
+ title: ClientId
+ description: The client id to use.
+ secret:
+ type: string
+ title: ClientSecret
+ description: The client secret to use, if any.
+ assertion:
+ type: string
+ title: ClientAssertion
+ description: A JWT containing a signed assertion with your application credentials.
+ authentication:
+ type: string
+ enum: [ client_secret_basic, client_secret_post, client_secret_jwt, private_key_jwt, none ]
+ default: client_secret_post
+ title: ClientAuthentication
+ description: The authentication method to use to authenticate the client.
+ request:
+ type: object
+ title: OAuth2TokenRequest
+ description: The configuration of an OAuth2 token request
+ properties:
+ encoding:
+ type: string
+ enum: [ 'application/x-www-form-urlencoded', 'application/json' ]
+ default: 'application/x-www-form-urlencoded'
+ title: Oauth2TokenRequestEncoding
+ issuers:
+ type: array
+ title: OAuth2Issuers
+ description: A list that contains that contains valid issuers that will be used to check against the issuer of generated tokens.
+ items:
+ type: string
+ scopes:
+ type: array
+ title: OAuth2AutenthicationDataScopes
+ description: The scopes, if any, to request the token for.
+ items:
+ type: string
+ audiences:
+ type: array
+ title: OAuth2AutenthicationDataAudiences
+ description: The audiences, if any, to request the token for.
+ items:
+ type: string
+ username:
+ type: string
+ title: OAuth2AutenthicationDataUsername
+ description: The username to use. Used only if the grant type is Password.
+ password:
+ type: string
+ title: OAuth2AutenthicationDataPassword
+ description: The password to use. Used only if the grant type is Password.
+ subject:
+ $ref: '#/$defs/oauth2Token'
+ title: OAuth2AutenthicationDataSubject
+ description: The security token that represents the identity of the party on behalf of whom the request is being made.
+ actor:
+ $ref: '#/$defs/oauth2Token'
+ title: OAuth2AutenthicationDataActor
+ description: The security token that represents the identity of the acting party.
+ oauth2Token:
+ type: object
+ title: OAuth2TokenDefinition
+ description: Represents an OAuth2 token.
+ unevaluatedProperties: false
+ properties:
+ token:
+ type: string
+ title: OAuth2Token
+ description: The security token to use.
+ type:
+ type: string
+ title: OAuth2TokenType
+ description: The type of the security token to use.
+ required: [ token, type ]
+ duration:
+ oneOf:
+ - type: object
+ minProperties: 1
+ unevaluatedProperties: false
+ properties:
+ days:
+ type: integer
+ title: DurationDays
+ description: Number of days, if any.
+ hours:
+ type: integer
+ title: DurationHours
+ description: Number of days, if any.
+ minutes:
+ type: integer
+ title: DurationMinutes
+ description: Number of minutes, if any.
+ seconds:
+ type: integer
+ title: DurationSeconds
+ description: Number of seconds, if any.
+ milliseconds:
+ type: integer
+ title: DurationMilliseconds
+ description: Number of milliseconds, if any.
+ title: DurationInline
+ description: The inline definition of a duration.
+ - type: string
+ pattern: '^P(?!$)(\d+(?:\.\d+)?Y)?(\d+(?:\.\d+)?M)?(\d+(?:\.\d+)?W)?(\d+(?:\.\d+)?D)?(T(?=\d)(\d+(?:\.\d+)?H)?(\d+(?:\.\d+)?M)?(\d+(?:\.\d+)?S)?)?$'
+ title: DurationExpression
+ description: The ISO 8601 expression of a duration.
+ error:
+ type: object
+ title: Error
+ description: Represents an error.
+ unevaluatedProperties: false
+ properties:
+ type:
+ title: ErrorType
+ description: A URI reference that identifies the error type.
+ oneOf:
+ - title: LiteralErrorType
+ $ref: '#/$defs/uriTemplate'
+ description: The literal error type.
+ - title: ExpressionErrorType
+ $ref: '#/$defs/runtimeExpression'
+ description: An expression based error type.
+ status:
+ type: integer
+ title: ErrorStatus
+ description: The status code generated by the origin for this occurrence of the error.
+ instance:
+ title: ErrorInstance
+ description: A JSON Pointer used to reference the component the error originates from.
+ oneOf:
+ - title: LiteralErrorInstance
+ description: The literal error instance.
+ type: string
+ format: json-pointer
+ - $ref: '#/$defs/runtimeExpression'
+ title: ExpressionErrorInstance
+ description: An expression based error instance.
+ title:
+ type: string
+ title: ErrorTitle
+ description: A short, human-readable summary of the error.
+ detail:
+ type: string
+ title: ErrorDetails
+ description: A human-readable explanation specific to this occurrence of the error.
+ required: [ type, status ]
+ uriTemplate:
+ title: UriTemplate
+ anyOf:
+ - title: LiteralUriTemplate
+ type: string
+ format: uri-template
+ pattern: "^[A-Za-z][A-Za-z0-9+\\-.]*://.*"
+ - title: LiteralUri
+ type: string
+ format: uri
+ pattern: "^[A-Za-z][A-Za-z0-9+\\-.]*://.*"
+ endpoint:
+ title: Endpoint
+ description: Represents an endpoint.
+ oneOf:
+ - $ref: '#/$defs/runtimeExpression'
+ - $ref: '#/$defs/uriTemplate'
+ - title: EndpointConfiguration
+ type: object
+ unevaluatedProperties: false
+ properties:
+ uri:
+ title: EndpointUri
+ description: The endpoint's URI.
+ oneOf:
+ - title: LiteralEndpointURI
+ description: The literal endpoint's URI.
+ $ref: '#/$defs/uriTemplate'
+ - title: ExpressionEndpointURI
+ $ref: '#/$defs/runtimeExpression'
+ description: An expression based endpoint's URI.
+ authentication:
+ $ref: '#/$defs/referenceableAuthenticationPolicy'
+ title: EndpointAuthentication
+ description: The authentication policy to use.
+ required: [ uri ]
+ eventProperties:
+ type: object
+ title: EventProperties
+ description: Describes the properties of an event.
+ properties:
+ id:
+ type: string
+ title: EventId
+ description: The event's unique identifier.
+ source:
+ title: EventSource
+ description: Identifies the context in which an event happened.
+ oneOf:
+ - $ref: '#/$defs/uriTemplate'
+ - $ref: '#/$defs/runtimeExpression'
+ type:
+ type: string
+ title: EventType
+ description: This attribute contains a value describing the type of event related to the originating occurrence.
+ time:
+ title: EventTime
+ description: When the event occured.
+ oneOf:
+ - title: LiteralTime
+ type: string
+ format: date-time
+ - $ref: '#/$defs/runtimeExpression'
+ subject:
+ type: string
+ title: EventSubject
+ description: The subject of the event.
+ datacontenttype:
+ type: string
+ title: EventDataContentType
+ description: Content type of data value. This attribute enables data to carry any type of content, whereby format and encoding might differ from that of the chosen event format.
+ dataschema:
+ title: EventDataschema
+ description: The schema describing the event format.
+ oneOf:
+ - title: LiteralDataSchema
+ $ref: '#/$defs/uriTemplate'
+ description: The literal event data schema.
+ - title: ExpressionDataSchema
+ $ref: '#/$defs/runtimeExpression'
+ description: An expression based event data schema.
+ additionalProperties: true
+ eventConsumptionStrategy:
+ type: object
+ title: EventConsumptionStrategy
+ description: Describe the event consumption strategy to adopt.
+ unevaluatedProperties: false
+ oneOf:
+ - title: AllEventConsumptionStrategy
+ properties:
+ all:
+ type: array
+ title: AllEventConsumptionStrategyConfiguration
+ description: A list containing all the events that must be consumed.
+ items:
+ $ref: '#/$defs/eventFilter'
+ required: [ all ]
+ - title: AnyEventConsumptionStrategy
+ properties:
+ any:
+ type: array
+ title: AnyEventConsumptionStrategyConfiguration
+ description: A list containing any of the events to consume.
+ items:
+ $ref: '#/$defs/eventFilter'
+ required: [ any ]
+ - title: OneEventConsumptionStrategy
+ properties:
+ one:
+ $ref: '#/$defs/eventFilter'
+ title: OneEventConsumptionStrategyConfiguration
+ description: The single event to consume.
+ required: [ one ]
+ eventFilter:
+ type: object
+ title: EventFilter
+ description: An event filter is a mechanism used to selectively process or handle events based on predefined criteria, such as event type, source, or specific attributes.
+ unevaluatedProperties: false
+ properties:
+ with:
+ $ref: '#/$defs/eventProperties'
+ minProperties: 1
+ title: WithEvent
+ description: An event filter is a mechanism used to selectively process or handle events based on predefined criteria, such as event type, source, or specific attributes.
+ correlate:
+ type: object
+ title: EventFilterCorrelate
+ description: A correlation is a link between events and data, established by mapping event attributes to specific data attributes, allowing for coordinated processing or handling based on event characteristics.
+ additionalProperties:
+ type: object
+ properties:
+ from:
+ type: string
+ title: CorrelateFrom
+ description: A runtime expression used to extract the correlation value from the filtered event.
+ expect:
+ type: string
+ title: CorrelateExpect
+ description: A constant or a runtime expression, if any, used to determine whether or not the extracted correlation value matches expectations. If not set, the first extracted value will be used as the correlation's expectation.
+ required: [ from ]
+ required: [ with ]
+ extension:
+ type: object
+ title: Extension
+ description: The definition of an extension.
+ unevaluatedProperties: false
+ properties:
+ extend:
+ type: string
+ enum: [ call, composite, emit, for, listen, raise, run, set, switch, try, wait, all ]
+ title: ExtensionTarget
+ description: The type of task to extend.
+ when:
+ type: string
+ title: ExtensionCondition
+ description: A runtime expression, if any, used to determine whether or not the extension should apply in the specified context.
+ before:
+ $ref: '#/$defs/taskList'
+ title: ExtensionDoBefore
+ description: The task(s) to execute before the extended task, if any.
+ after:
+ $ref: '#/$defs/taskList'
+ title: ExtensionDoAfter
+ description: The task(s) to execute after the extended task, if any.
+ required: [ extend ]
+ externalResource:
+ type: object
+ title: ExternalResource
+ description: Represents an external resource.
+ unevaluatedProperties: false
+ properties:
+ name:
+ type: string
+ title: ExternalResourceName
+ description: The name of the external resource, if any.
+ endpoint:
+ $ref: '#/$defs/endpoint'
+ title: ExternalResourceEndpoint
+ description: The endpoint of the external resource.
+ required: [ endpoint ]
+ input:
+ type: object
+ title: Input
+ description: Configures the input of a workflow or task.
+ unevaluatedProperties: false
+ properties:
+ schema:
+ $ref: '#/$defs/schema'
+ title: InputSchema
+ description: The schema used to describe and validate the input of the workflow or task.
+ from:
+ title: InputFrom
+ description: A runtime expression, if any, used to mutate and/or filter the input of the workflow or task.
+ oneOf:
+ - type: string
+ - type: object
+ output:
+ type: object
+ title: Output
+ description: Configures the output of a workflow or task.
+ unevaluatedProperties: false
+ properties:
+ schema:
+ $ref: '#/$defs/schema'
+ title: OutputSchema
+ description: The schema used to describe and validate the output of the workflow or task.
+ as:
+ title: OutputAs
+ description: A runtime expression, if any, used to mutate and/or filter the output of the workflow or task.
+ oneOf:
+ - type: string
+ - type: object
+ export:
+ type: object
+ title: Export
+ description: Set the content of the context. .
+ unevaluatedProperties: false
+ properties:
+ schema:
+ $ref: '#/$defs/schema'
+ title: ExportSchema
+ description: The schema used to describe and validate the workflow context.
+ as:
+ title: ExportAs
+ description: A runtime expression, if any, used to export the output data to the context.
+ oneOf:
+ - type: string
+ - type: object
+ retryPolicy:
+ type: object
+ title: RetryPolicy
+ description: Defines a retry policy.
+ unevaluatedProperties: false
+ properties:
+ when:
+ type: string
+ title: RetryWhen
+ description: A runtime expression, if any, used to determine whether or not to retry running the task, in a given context.
+ exceptWhen:
+ type: string
+ title: RetryExcepWhen
+ description: A runtime expression used to determine whether or not to retry running the task, in a given context.
+ delay:
+ $ref: '#/$defs/duration'
+ title: RetryDelay
+ description: The duration to wait between retry attempts.
+ backoff:
+ type: object
+ title: RetryBackoff
+ description: The retry duration backoff.
+ unevaluatedProperties: false
+ oneOf:
+ - title: ConstantBackoff
+ properties:
+ constant:
+ type: object
+ description: The definition of the constant backoff to use, if any.
+ required: [ constant ]
+ - title: ExponentialBackOff
+ properties:
+ exponential:
+ type: object
+ description: The definition of the exponential backoff to use, if any.
+ required: [ exponential ]
+ - title: LinearBackoff
+ properties:
+ linear:
+ type: object
+ description: The definition of the linear backoff to use, if any.
+ required: [ linear ]
+ limit:
+ type: object
+ title: RetryLimit
+ unevaluatedProperties: false
+ properties:
+ attempt:
+ type: object
+ title: RetryLimitAttempt
+ unevaluatedProperties: false
+ properties:
+ count:
+ type: integer
+ title: RetryLimitAttemptCount
+ description: The maximum amount of retry attempts, if any.
+ duration:
+ $ref: '#/$defs/duration'
+ title: RetryLimitAttemptDuration
+ description: The maximum duration for each retry attempt.
+ duration:
+ $ref: '#/$defs/duration'
+ title: RetryLimitDuration
+ description: The duration limit, if any, for all retry attempts.
+ description: The retry limit, if any.
+ jitter:
+ type: object
+ title: RetryPolicyJitter
+ description: The parameters, if any, that control the randomness or variability of the delay between retry attempts.
+ unevaluatedProperties: false
+ properties:
+ from:
+ $ref: '#/$defs/duration'
+ title: RetryPolicyJitterFrom
+ description: The minimum duration of the jitter range.
+ to:
+ $ref: '#/$defs/duration'
+ title: RetryPolicyJitterTo
+ description: The maximum duration of the jitter range.
+ required: [ from, to ]
+ schema:
+ type: object
+ title: Schema
+ description: Represents the definition of a schema.
+ unevaluatedProperties: false
+ properties:
+ format:
+ type: string
+ default: json
+ title: SchemaFormat
+ description: The schema's format. Defaults to 'json'. The (optional) version of the format can be set using `{format}:{version}`.
+ oneOf:
+ - title: SchemaInline
+ properties:
+ document:
+ description: The schema's inline definition.
+ required: [ document ]
+ - title: SchemaExternal
+ properties:
+ resource:
+ $ref: '#/$defs/externalResource'
+ title: SchemaExternalResource
+ description: The schema's external resource.
+ required: [ resource ]
+ timeout:
+ type: object
+ title: Timeout
+ description: The definition of a timeout.
+ unevaluatedProperties: false
+ properties:
+ after:
+ $ref: '#/$defs/duration'
+ title: TimeoutAfter
+ description: The duration after which to timeout.
+ required: [ after ]
+ runtimeExpression:
+ type: string
+ title: RuntimeExpression
+ description: A runtime expression.
+ pattern: "^\\s*\\$\\{.+\\}\\s*$"
\ No newline at end of file
diff --git a/public/schemas/1.0.0-alpha5/workflow.json b/public/schemas/1.0.0-alpha5/workflow.json
new file mode 100644
index 0000000..b706300
--- /dev/null
+++ b/public/schemas/1.0.0-alpha5/workflow.json
@@ -0,0 +1,2279 @@
+{
+ "$id": "https://open-workflow-specification.org/schemas/1.0.0-alpha5/workflow.json",
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
+ "description": "Open Workflow Specification DSL - Workflow Schema.",
+ "type": "object",
+ "required": [
+ "document",
+ "do"
+ ],
+ "properties": {
+ "document": {
+ "type": "object",
+ "title": "Document",
+ "description": "Documents the workflow.",
+ "unevaluatedProperties": false,
+ "properties": {
+ "dsl": {
+ "type": "string",
+ "pattern": "^(0|[1-9]\\d*)\\.(0|[1-9]\\d*)\\.(0|[1-9]\\d*)(?:-((?:0|[1-9]\\d*|\\d*[a-zA-Z-][0-9a-zA-Z-]*)(?:\\.(?:0|[1-9]\\d*|\\d*[a-zA-Z-][0-9a-zA-Z-]*))*))?(?:\\+([0-9a-zA-Z-]+(?:\\.[0-9a-zA-Z-]+)*))?$",
+ "title": "WorkflowDSL",
+ "description": "The version of the DSL used by the workflow."
+ },
+ "namespace": {
+ "type": "string",
+ "pattern": "^[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?$",
+ "title": "WorkflowNamespace",
+ "description": "The workflow's namespace."
+ },
+ "name": {
+ "type": "string",
+ "pattern": "^[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?$",
+ "title": "WorkflowName",
+ "description": "The workflow's name."
+ },
+ "version": {
+ "type": "string",
+ "pattern": "^(0|[1-9]\\d*)\\.(0|[1-9]\\d*)\\.(0|[1-9]\\d*)(?:-((?:0|[1-9]\\d*|\\d*[a-zA-Z-][0-9a-zA-Z-]*)(?:\\.(?:0|[1-9]\\d*|\\d*[a-zA-Z-][0-9a-zA-Z-]*))*))?(?:\\+([0-9a-zA-Z-]+(?:\\.[0-9a-zA-Z-]+)*))?$",
+ "title": "WorkflowVersion",
+ "description": "The workflow's semantic version."
+ },
+ "title": {
+ "type": "string",
+ "title": "WorkflowTitle",
+ "description": "The workflow's title."
+ },
+ "summary": {
+ "type": "string",
+ "title": "WorkflowSummary",
+ "description": "The workflow's Markdown summary."
+ },
+ "tags": {
+ "type": "object",
+ "title": "WorkflowTags",
+ "description": "A key/value mapping of the workflow's tags, if any.",
+ "additionalProperties": true
+ },
+ "metadata": {
+ "type": "object",
+ "title": "WorkflowMetadata",
+ "description": "Holds additional information about the workflow.",
+ "additionalProperties": true
+ }
+ },
+ "required": [
+ "dsl",
+ "namespace",
+ "name",
+ "version"
+ ]
+ },
+ "input": {
+ "$ref": "#/$defs/input",
+ "title": "Input",
+ "description": "Configures the workflow's input."
+ },
+ "use": {
+ "type": "object",
+ "title": "Use",
+ "description": "Defines the workflow's reusable components.",
+ "unevaluatedProperties": false,
+ "properties": {
+ "authentications": {
+ "type": "object",
+ "title": "UseAuthentications",
+ "description": "The workflow's reusable authentication policies.",
+ "additionalProperties": {
+ "$ref": "#/$defs/authenticationPolicy"
+ }
+ },
+ "errors": {
+ "type": "object",
+ "title": "UseErrors",
+ "description": "The workflow's reusable errors.",
+ "additionalProperties": {
+ "$ref": "#/$defs/error"
+ }
+ },
+ "extensions": {
+ "type": "array",
+ "title": "UseExtensions",
+ "description": "The workflow's extensions.",
+ "items": {
+ "type": "object",
+ "title": "ExtensionItem",
+ "minProperties": 1,
+ "maxProperties": 1,
+ "additionalProperties": {
+ "$ref": "#/$defs/extension"
+ }
+ }
+ },
+ "functions": {
+ "type": "object",
+ "title": "UseFunctions",
+ "description": "The workflow's reusable functions.",
+ "additionalProperties": {
+ "$ref": "#/$defs/task"
+ }
+ },
+ "retries": {
+ "type": "object",
+ "title": "UseRetries",
+ "description": "The workflow's reusable retry policies.",
+ "additionalProperties": {
+ "$ref": "#/$defs/retryPolicy"
+ }
+ },
+ "secrets": {
+ "type": "array",
+ "title": "UseSecrets",
+ "description": "The workflow's reusable secrets.",
+ "items": {
+ "type": "string",
+ "description": "The workflow's secrets."
+ }
+ },
+ "timeouts": {
+ "type": "object",
+ "title": "UseTimeouts",
+ "description": "The workflow's reusable timeouts.",
+ "additionalProperties": {
+ "$ref": "#/$defs/timeout"
+ }
+ },
+ "catalogs": {
+ "type": "object",
+ "title": "UseCatalogs",
+ "description": "The workflow's reusable catalogs.",
+ "additionalProperties": {
+ "$ref": "#/$defs/catalog"
+ }
+ }
+ }
+ },
+ "do": {
+ "$ref": "#/$defs/taskList",
+ "title": "Do",
+ "description": "Defines the task(s) the workflow must perform."
+ },
+ "timeout": {
+ "oneOf": [
+ {
+ "$ref": "#/$defs/timeout",
+ "title": "TimeoutDefinition",
+ "description": "The workflow's timeout configuration, if any."
+ },
+ {
+ "type": "string",
+ "title": "TimeoutReference",
+ "description": "The name of the workflow's timeout, if any."
+ }
+ ]
+ },
+ "output": {
+ "$ref": "#/$defs/output",
+ "title": "Output",
+ "description": "Configures the workflow's output."
+ },
+ "schedule": {
+ "type": "object",
+ "title": "Schedule",
+ "description": "Schedules the workflow.",
+ "unevaluatedProperties": false,
+ "properties": {
+ "every": {
+ "$ref": "#/$defs/duration",
+ "title": "ScheduleEvery",
+ "description": "Specifies the duration of the interval at which the workflow should be executed."
+ },
+ "cron": {
+ "type": "string",
+ "title": "ScheduleCron",
+ "description": "Specifies the schedule using a cron expression, e.g., '0 0 * * *' for daily at midnight."
+ },
+ "after": {
+ "$ref": "#/$defs/duration",
+ "title": "ScheduleAfter",
+ "description": "Specifies a delay duration that the workflow must wait before starting again after it completes."
+ },
+ "on": {
+ "$ref": "#/$defs/eventConsumptionStrategy",
+ "title": "ScheduleOn",
+ "description": "Specifies the events that trigger the workflow execution."
+ }
+ }
+ }
+ },
+ "$defs": {
+ "taskList": {
+ "title": "TaskList",
+ "description": "List of named tasks to perform.",
+ "type": "array",
+ "items": {
+ "type": "object",
+ "title": "TaskItem",
+ "minProperties": 1,
+ "maxProperties": 1,
+ "additionalProperties": {
+ "$ref": "#/$defs/task"
+ }
+ }
+ },
+ "taskBase": {
+ "type": "object",
+ "title": "TaskBase",
+ "description": "An object inherited by all tasks.",
+ "properties": {
+ "if": {
+ "type": "string",
+ "title": "TaskBaseIf",
+ "description": "A runtime expression, if any, used to determine whether or not the task should be run."
+ },
+ "input": {
+ "$ref": "#/$defs/input",
+ "title": "TaskBaseInput",
+ "description": "Configure the task's input."
+ },
+ "output": {
+ "$ref": "#/$defs/output",
+ "title": "TaskBaseOutput",
+ "description": "Configure the task's output."
+ },
+ "export": {
+ "$ref": "#/$defs/export",
+ "title": "TaskBaseExport",
+ "description": "Export task output to context."
+ },
+ "timeout": {
+ "oneOf": [
+ {
+ "$ref": "#/$defs/timeout",
+ "title": "TaskTimeoutDefinition",
+ "description": "The task's timeout configuration, if any."
+ },
+ {
+ "type": "string",
+ "title": "TaskTimeoutReference",
+ "description": "The name of the task's timeout, if any."
+ }
+ ]
+ },
+ "then": {
+ "$ref": "#/$defs/flowDirective",
+ "title": "TaskBaseThen",
+ "description": "The flow directive to be performed upon completion of the task."
+ },
+ "metadata": {
+ "type": "object",
+ "title": "TaskMetadata",
+ "description": "Holds additional information about the task.",
+ "additionalProperties": true
+ }
+ }
+ },
+ "task": {
+ "title": "Task",
+ "description": "A discrete unit of work that contributes to achieving the overall objectives defined by the workflow.",
+ "unevaluatedProperties": false,
+ "oneOf": [
+ {
+ "$ref": "#/$defs/callTask"
+ },
+ {
+ "$ref": "#/$defs/doTask"
+ },
+ {
+ "$ref": "#/$defs/forkTask"
+ },
+ {
+ "$ref": "#/$defs/emitTask"
+ },
+ {
+ "$ref": "#/$defs/forTask"
+ },
+ {
+ "$ref": "#/$defs/listenTask"
+ },
+ {
+ "$ref": "#/$defs/raiseTask"
+ },
+ {
+ "$ref": "#/$defs/runTask"
+ },
+ {
+ "$ref": "#/$defs/setTask"
+ },
+ {
+ "$ref": "#/$defs/switchTask"
+ },
+ {
+ "$ref": "#/$defs/tryTask"
+ },
+ {
+ "$ref": "#/$defs/waitTask"
+ }
+ ]
+ },
+ "callTask": {
+ "title": "CallTask",
+ "description": "Defines the call to perform.",
+ "oneOf": [
+ {
+ "title": "CallAsyncAPI",
+ "description": "Defines the AsyncAPI call to perform.",
+ "$ref": "#/$defs/taskBase",
+ "type": "object",
+ "required": [
+ "call",
+ "with"
+ ],
+ "unevaluatedProperties": false,
+ "properties": {
+ "call": {
+ "type": "string",
+ "const": "asyncapi"
+ },
+ "with": {
+ "type": "object",
+ "title": "AsyncApiArguments",
+ "description": "The Async API call arguments.",
+ "properties": {
+ "document": {
+ "$ref": "#/$defs/externalResource",
+ "title": "WithAsyncAPIDocument",
+ "description": "The document that defines the AsyncAPI operation to call."
+ },
+ "operationRef": {
+ "type": "string",
+ "title": "WithAsyncAPIOperation",
+ "description": "A reference to the AsyncAPI operation to call."
+ },
+ "server": {
+ "type": "string",
+ "title": "WithAsyncAPIServer",
+ "description": "A a reference to the server to call the specified AsyncAPI operation on. If not set, default to the first server matching the operation's channel."
+ },
+ "message": {
+ "type": "string",
+ "title": "WithAsyncAPIMessage",
+ "description": "The name of the message to use. If not set, defaults to the first message defined by the operation."
+ },
+ "binding": {
+ "type": "string",
+ "title": "WithAsyncAPIBinding",
+ "description": "The name of the binding to use. If not set, defaults to the first binding defined by the operation."
+ },
+ "payload": {
+ "type": "object",
+ "title": "WithAsyncAPIPayload",
+ "description": "The payload to call the AsyncAPI operation with, if any."
+ },
+ "authentication": {
+ "$ref": "#/$defs/referenceableAuthenticationPolicy",
+ "title": "WithAsyncAPIAuthentication",
+ "description": "The authentication policy, if any, to use when calling the AsyncAPI operation."
+ }
+ },
+ "required": [
+ "document",
+ "operationRef"
+ ],
+ "unevaluatedProperties": false
+ }
+ }
+ },
+ {
+ "title": "CallGRPC",
+ "description": "Defines the GRPC call to perform.",
+ "$ref": "#/$defs/taskBase",
+ "type": "object",
+ "unevaluatedProperties": false,
+ "required": [
+ "call",
+ "with"
+ ],
+ "properties": {
+ "call": {
+ "type": "string",
+ "const": "grpc"
+ },
+ "with": {
+ "type": "object",
+ "title": "GRPCArguments",
+ "description": "The GRPC call arguments.",
+ "properties": {
+ "proto": {
+ "$ref": "#/$defs/externalResource",
+ "title": "WithGRPCProto",
+ "description": "The proto resource that describes the GRPC service to call."
+ },
+ "service": {
+ "type": "object",
+ "title": "WithGRPCService",
+ "unevaluatedProperties": false,
+ "properties": {
+ "name": {
+ "type": "string",
+ "title": "WithGRPCServiceName",
+ "description": "The name of the GRPC service to call."
+ },
+ "host": {
+ "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])?$"
+ },
+ "port": {
+ "type": "integer",
+ "title": "WithGRPCServicePost",
+ "description": "The port number of the GRPC service to call.",
+ "minimum": 0,
+ "maximum": 65535
+ },
+ "authentication": {
+ "$ref": "#/$defs/referenceableAuthenticationPolicy",
+ "title": "WithGRPCServiceAuthentication",
+ "description": "The endpoint's authentication policy, if any."
+ }
+ },
+ "required": [
+ "name",
+ "host"
+ ]
+ },
+ "method": {
+ "type": "string",
+ "title": "WithGRPCMethod",
+ "description": "The name of the method to call on the defined GRPC service."
+ },
+ "arguments": {
+ "type": "object",
+ "title": "WithGRPCArguments",
+ "description": "The arguments, if any, to call the method with.",
+ "additionalProperties": true
+ }
+ },
+ "required": [
+ "proto",
+ "service",
+ "method"
+ ],
+ "unevaluatedProperties": false
+ }
+ }
+ },
+ {
+ "title": "CallHTTP",
+ "description": "Defines the HTTP call to perform.",
+ "$ref": "#/$defs/taskBase",
+ "type": "object",
+ "unevaluatedProperties": false,
+ "required": [
+ "call",
+ "with"
+ ],
+ "properties": {
+ "call": {
+ "type": "string",
+ "const": "http"
+ },
+ "with": {
+ "type": "object",
+ "title": "HTTPArguments",
+ "description": "The HTTP call arguments.",
+ "properties": {
+ "method": {
+ "type": "string",
+ "title": "WithHTTPMethod",
+ "description": "The HTTP method of the HTTP request to perform."
+ },
+ "endpoint": {
+ "title": "WithHTTPEndpoint",
+ "description": "The HTTP endpoint to send the request to.",
+ "$ref": "#/$defs/endpoint"
+ },
+ "headers": {
+ "type": "object",
+ "title": "WithHTTPHeaders",
+ "description": "A name/value mapping of the headers, if any, of the HTTP request to perform."
+ },
+ "body": {
+ "title": "WithHTTPBody",
+ "description": "The body, if any, of the HTTP request to perform."
+ },
+ "query": {
+ "type": "object",
+ "title": "WithHTTPQuery",
+ "description": "A name/value mapping of the query parameters, if any, of the HTTP request to perform.",
+ "additionalProperties": true
+ },
+ "output": {
+ "type": "string",
+ "title": "WithHTTPOutput",
+ "description": "The http call output format. Defaults to 'content'.",
+ "enum": [
+ "raw",
+ "content",
+ "response"
+ ]
+ }
+ },
+ "required": [
+ "method",
+ "endpoint"
+ ],
+ "unevaluatedProperties": false
+ }
+ }
+ },
+ {
+ "title": "CallOpenAPI",
+ "description": "Defines the OpenAPI call to perform.",
+ "$ref": "#/$defs/taskBase",
+ "type": "object",
+ "unevaluatedProperties": false,
+ "required": [
+ "call",
+ "with"
+ ],
+ "properties": {
+ "call": {
+ "type": "string",
+ "const": "openapi"
+ },
+ "with": {
+ "type": "object",
+ "title": "OpenAPIArguments",
+ "description": "The OpenAPI call arguments.",
+ "properties": {
+ "document": {
+ "$ref": "#/$defs/externalResource",
+ "title": "WithOpenAPIDocument",
+ "description": "The document that defines the OpenAPI operation to call."
+ },
+ "operationId": {
+ "type": "string",
+ "title": "WithOpenAPIOperation",
+ "description": "The id of the OpenAPI operation to call."
+ },
+ "parameters": {
+ "type": "object",
+ "title": "WithOpenAPIParameters",
+ "description": "A name/value mapping of the parameters of the OpenAPI operation to call.",
+ "additionalProperties": true
+ },
+ "authentication": {
+ "$ref": "#/$defs/referenceableAuthenticationPolicy",
+ "title": "WithOpenAPIAuthentication",
+ "description": "The authentication policy, if any, to use when calling the OpenAPI operation."
+ },
+ "output": {
+ "type": "string",
+ "enum": [
+ "raw",
+ "content",
+ "response"
+ ],
+ "title": "WithOpenAPIOutput",
+ "description": "The http call output format. Defaults to 'content'."
+ }
+ },
+ "required": [
+ "document",
+ "operationId"
+ ],
+ "unevaluatedProperties": false
+ }
+ }
+ },
+ {
+ "title": "CallFunction",
+ "description": "Defines the function call to perform.",
+ "$ref": "#/$defs/taskBase",
+ "type": "object",
+ "unevaluatedProperties": false,
+ "required": [
+ "call"
+ ],
+ "properties": {
+ "call": {
+ "type": "string",
+ "not": {
+ "enum": [
+ "asyncapi",
+ "grpc",
+ "http",
+ "openapi"
+ ]
+ },
+ "description": "The name of the function to call."
+ },
+ "with": {
+ "type": "object",
+ "title": "FunctionArguments",
+ "description": "A name/value mapping of the parameters, if any, to call the function with.",
+ "additionalProperties": true
+ }
+ }
+ }
+ ]
+ },
+ "forkTask": {
+ "type": "object",
+ "$ref": "#/$defs/taskBase",
+ "title": "ForkTask",
+ "description": "Allows workflows to execute multiple tasks concurrently and optionally race them against each other, with a single possible winner, which sets the task's output.",
+ "unevaluatedProperties": false,
+ "required": [
+ "fork"
+ ],
+ "properties": {
+ "fork": {
+ "type": "object",
+ "title": "ForkTaskConfiguration",
+ "description": "The configuration of the branches to perform concurrently.",
+ "unevaluatedProperties": false,
+ "required": [
+ "branches"
+ ],
+ "properties": {
+ "branches": {
+ "$ref": "#/$defs/taskList",
+ "title": "ForkBranches"
+ },
+ "compete": {
+ "type": "boolean",
+ "title": "ForkCompete",
+ "description": "Indicates whether or not the concurrent tasks are racing against each other, with a single possible winner, which sets the composite task's output.",
+ "default": false
+ }
+ }
+ }
+ }
+ },
+ "doTask": {
+ "type": "object",
+ "$ref": "#/$defs/taskBase",
+ "title": "DoTask",
+ "description": "Allows to execute a list of tasks in sequence.",
+ "unevaluatedProperties": false,
+ "required": [
+ "do"
+ ],
+ "properties": {
+ "do": {
+ "$ref": "#/$defs/taskList",
+ "title": "DoTaskConfiguration",
+ "description": "The configuration of the tasks to perform sequentially."
+ }
+ }
+ },
+ "emitTask": {
+ "type": "object",
+ "$ref": "#/$defs/taskBase",
+ "title": "EmitTask",
+ "description": "Allows workflows to publish events to event brokers or messaging systems, facilitating communication and coordination between different components and services.",
+ "required": [
+ "emit"
+ ],
+ "unevaluatedProperties": false,
+ "properties": {
+ "emit": {
+ "type": "object",
+ "title": "EmitTaskConfiguration",
+ "description": "The configuration of an event's emission.",
+ "unevaluatedProperties": false,
+ "properties": {
+ "event": {
+ "type": "object",
+ "title": "EmitEventDefinition",
+ "description": "The definition of the event to emit.",
+ "properties": {
+ "with": {
+ "$ref": "#/$defs/eventProperties",
+ "title": "EmitEventWith",
+ "description": "Defines the properties of event to emit.",
+ "required": [
+ "source",
+ "type"
+ ]
+ }
+ },
+ "additionalProperties": true
+ }
+ },
+ "required": [
+ "event"
+ ]
+ }
+ }
+ },
+ "forTask": {
+ "type": "object",
+ "$ref": "#/$defs/taskBase",
+ "title": "ForTask",
+ "description": "Allows workflows to iterate over a collection of items, executing a defined set of subtasks for each item in the collection. This task type is instrumental in handling scenarios such as batch processing, data transformation, and repetitive operations across datasets.",
+ "required": [
+ "for",
+ "do"
+ ],
+ "unevaluatedProperties": false,
+ "properties": {
+ "for": {
+ "type": "object",
+ "title": "ForTaskConfiguration",
+ "description": "The definition of the loop that iterates over a range of values.",
+ "unevaluatedProperties": false,
+ "properties": {
+ "each": {
+ "type": "string",
+ "title": "ForEach",
+ "description": "The name of the variable used to store the current item being enumerated.",
+ "default": "item"
+ },
+ "in": {
+ "type": "string",
+ "title": "ForIn",
+ "description": "A runtime expression used to get the collection to enumerate."
+ },
+ "at": {
+ "type": "string",
+ "title": "ForAt",
+ "description": "The name of the variable used to store the index of the current item being enumerated.",
+ "default": "index"
+ }
+ },
+ "required": [
+ "in"
+ ]
+ },
+ "while": {
+ "type": "string",
+ "title": "While",
+ "description": "A runtime expression that represents the condition, if any, that must be met for the iteration to continue."
+ },
+ "do": {
+ "$ref": "#/$defs/taskList",
+ "title": "ForTaskDo"
+ }
+ }
+ },
+ "listenTask": {
+ "type": "object",
+ "$ref": "#/$defs/taskBase",
+ "title": "ListenTask",
+ "description": "Provides a mechanism for workflows to await and react to external events, enabling event-driven behavior within workflow systems.",
+ "required": [
+ "listen"
+ ],
+ "unevaluatedProperties": false,
+ "properties": {
+ "listen": {
+ "type": "object",
+ "title": "ListenTaskConfiguration",
+ "description": "The configuration of the listener to use.",
+ "unevaluatedProperties": false,
+ "properties": {
+ "to": {
+ "$ref": "#/$defs/eventConsumptionStrategy",
+ "title": "ListenTo",
+ "description": "Defines the event(s) to listen to."
+ }
+ },
+ "required": [
+ "to"
+ ]
+ }
+ }
+ },
+ "raiseTask": {
+ "type": "object",
+ "$ref": "#/$defs/taskBase",
+ "title": "RaiseTask",
+ "description": "Intentionally triggers and propagates errors.",
+ "required": [
+ "raise"
+ ],
+ "unevaluatedProperties": false,
+ "properties": {
+ "raise": {
+ "type": "object",
+ "title": "RaiseTaskConfiguration",
+ "description": "The definition of the error to raise.",
+ "unevaluatedProperties": false,
+ "properties": {
+ "error": {
+ "oneOf": [
+ {
+ "$ref": "#/$defs/error",
+ "title": "RaiseErrorDefinition",
+ "description": "Defines the error to raise."
+ },
+ {
+ "type": "string",
+ "title": "RaiseErrorReference",
+ "description": "The name of the error to raise"
+ }
+ ]
+ }
+ },
+ "required": [
+ "error"
+ ]
+ }
+ }
+ },
+ "runTask": {
+ "type": "object",
+ "$ref": "#/$defs/taskBase",
+ "title": "RunTask",
+ "description": "Provides the capability to execute external containers, shell commands, scripts, or workflows.",
+ "required": [
+ "run"
+ ],
+ "unevaluatedProperties": false,
+ "properties": {
+ "run": {
+ "type": "object",
+ "title": "RunTaskConfiguration",
+ "description": "The configuration of the process to execute.",
+ "unevaluatedProperties": false,
+ "properties": {
+ "await": {
+ "type": "boolean",
+ "default": true,
+ "title": "AwaitProcessCompletion",
+ "description": "Whether to await the process completion before continuing."
+ }
+ },
+ "oneOf": [
+ {
+ "title": "RunContainer",
+ "description": "Enables the execution of external processes encapsulated within a containerized environment.",
+ "properties": {
+ "container": {
+ "type": "object",
+ "title": "Container",
+ "description": "The configuration of the container to run.",
+ "unevaluatedProperties": false,
+ "properties": {
+ "image": {
+ "type": "string",
+ "title": "ContainerImage",
+ "description": "The name of the container image to run."
+ },
+ "command": {
+ "type": "string",
+ "title": "ContainerCommand",
+ "description": "The command, if any, to execute on the container."
+ },
+ "ports": {
+ "type": "object",
+ "title": "ContainerPorts",
+ "description": "The container's port mappings, if any."
+ },
+ "volumes": {
+ "type": "object",
+ "title": "ContainerVolumes",
+ "description": "The container's volume mappings, if any."
+ },
+ "environment": {
+ "type": "object",
+ "title": "ContainerEnvironment",
+ "description": "A key/value mapping of the environment variables, if any, to use when running the configured process."
+ }
+ },
+ "required": [
+ "image"
+ ]
+ }
+ },
+ "required": [
+ "container"
+ ]
+ },
+ {
+ "title": "RunScript",
+ "description": "Enables the execution of custom scripts or code within a workflow, empowering workflows to perform specialized logic, data processing, or integration tasks by executing user-defined scripts written in various programming languages.",
+ "properties": {
+ "script": {
+ "type": "object",
+ "title": "Script",
+ "description": "The configuration of the script to run.",
+ "unevaluatedProperties": false,
+ "properties": {
+ "language": {
+ "type": "string",
+ "title": "ScriptLanguage",
+ "description": "The language of the script to run."
+ },
+ "arguments": {
+ "type": "object",
+ "title": "ScriptArguments",
+ "description": "A key/value mapping of the arguments, if any, to use when running the configured script.",
+ "additionalProperties": true
+ },
+ "environment": {
+ "type": "object",
+ "title": "ScriptEnvironment",
+ "description": "A key/value mapping of the environment variables, if any, to use when running the configured script process.",
+ "additionalProperties": true
+ }
+ },
+ "oneOf": [
+ {
+ "title": "InlineScript",
+ "type": "object",
+ "description": "The script's code.",
+ "properties": {
+ "code": {
+ "type": "string",
+ "title": "InlineScriptCode"
+ }
+ },
+ "required": [
+ "code"
+ ]
+ },
+ {
+ "title": "ExternalScript",
+ "type": "object",
+ "description": "The script's resource.",
+ "properties": {
+ "source": {
+ "$ref": "#/$defs/externalResource",
+ "title": "ExternalScriptResource"
+ }
+ },
+ "required": [
+ "source"
+ ]
+ }
+ ],
+ "required": [
+ "language"
+ ]
+ }
+ },
+ "required": [
+ "script"
+ ]
+ },
+ {
+ "title": "RunShell",
+ "description": "Enables the execution of shell commands within a workflow, enabling workflows to interact with the underlying operating system and perform system-level operations, such as file manipulation, environment configuration, or system administration tasks.",
+ "properties": {
+ "shell": {
+ "type": "object",
+ "title": "Shell",
+ "description": "The configuration of the shell command to run.",
+ "unevaluatedProperties": false,
+ "properties": {
+ "command": {
+ "type": "string",
+ "title": "ShellCommand",
+ "description": "The shell command to run."
+ },
+ "arguments": {
+ "type": "object",
+ "title": "ShellArguments",
+ "description": "A list of the arguments of the shell command to run.",
+ "additionalProperties": true
+ },
+ "environment": {
+ "type": "object",
+ "title": "ShellEnvironment",
+ "description": "A key/value mapping of the environment variables, if any, to use when running the configured process.",
+ "additionalProperties": true
+ }
+ },
+ "required": [
+ "command"
+ ]
+ }
+ },
+ "required": [
+ "shell"
+ ]
+ },
+ {
+ "title": "RunWorkflow",
+ "description": "Enables the invocation and execution of nested workflows within a parent workflow, facilitating modularization, reusability, and abstraction of complex logic or business processes by encapsulating them into standalone workflow units.",
+ "properties": {
+ "workflow": {
+ "type": "object",
+ "title": "SubflowConfiguration",
+ "description": "The configuration of the workflow to run.",
+ "unevaluatedProperties": false,
+ "properties": {
+ "namespace": {
+ "type": "string",
+ "title": "SubflowNamespace",
+ "description": "The namespace the workflow to run belongs to."
+ },
+ "name": {
+ "type": "string",
+ "title": "SubflowName",
+ "description": "The name of the workflow to run."
+ },
+ "version": {
+ "type": "string",
+ "default": "latest",
+ "title": "SubflowVersion",
+ "description": "The version of the workflow to run. Defaults to latest."
+ },
+ "input": {
+ "type": "object",
+ "title": "SubflowInput",
+ "description": "The data, if any, to pass as input to the workflow to execute. The value should be validated against the target workflow's input schema, if specified.",
+ "additionalProperties": true
+ }
+ },
+ "required": [
+ "namespace",
+ "name",
+ "version"
+ ]
+ }
+ },
+ "required": [
+ "workflow"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ "setTask": {
+ "type": "object",
+ "$ref": "#/$defs/taskBase",
+ "title": "SetTask",
+ "description": "A task used to set data.",
+ "required": [
+ "set"
+ ],
+ "unevaluatedProperties": false,
+ "properties": {
+ "set": {
+ "type": "object",
+ "title": "SetTaskConfiguration",
+ "description": "The data to set.",
+ "minProperties": 1,
+ "additionalProperties": true
+ }
+ }
+ },
+ "switchTask": {
+ "type": "object",
+ "$ref": "#/$defs/taskBase",
+ "title": "SwitchTask",
+ "description": "Enables conditional branching within workflows, allowing them to dynamically select different paths based on specified conditions or criteria.",
+ "required": [
+ "switch"
+ ],
+ "unevaluatedProperties": false,
+ "properties": {
+ "switch": {
+ "type": "array",
+ "title": "SwitchTaskConfiguration",
+ "description": "The definition of the switch to use.",
+ "minItems": 1,
+ "items": {
+ "type": "object",
+ "title": "SwitchItem",
+ "minProperties": 1,
+ "maxProperties": 1,
+ "additionalProperties": {
+ "type": "object",
+ "title": "SwitchCase",
+ "description": "The definition of a case within a switch task, defining a condition and corresponding tasks to execute if the condition is met.",
+ "unevaluatedProperties": false,
+ "required": [
+ "then"
+ ],
+ "properties": {
+ "when": {
+ "type": "string",
+ "title": "SwitchCaseCondition",
+ "description": "A runtime expression used to determine whether or not the case matches."
+ },
+ "then": {
+ "$ref": "#/$defs/flowDirective",
+ "title": "SwitchCaseOutcome",
+ "description": "The flow directive to execute when the case matches."
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "tryTask": {
+ "type": "object",
+ "$ref": "#/$defs/taskBase",
+ "title": "TryTask",
+ "description": "Serves as a mechanism within workflows to handle errors gracefully, potentially retrying failed tasks before proceeding with alternate ones.",
+ "required": [
+ "try",
+ "catch"
+ ],
+ "unevaluatedProperties": false,
+ "properties": {
+ "try": {
+ "$ref": "#/$defs/taskList",
+ "title": "TryTaskConfiguration",
+ "description": "The task(s) to perform."
+ },
+ "catch": {
+ "type": "object",
+ "title": "TryTaskCatch",
+ "description": "The object used to define the errors to catch.",
+ "unevaluatedProperties": false,
+ "properties": {
+ "errors": {
+ "type": "object",
+ "title": "CatchErrors",
+ "description": "The configuration of a concept used to catch errors."
+ },
+ "as": {
+ "type": "string",
+ "title": "CatchAs",
+ "description": "The name of the runtime expression variable to save the error as. Defaults to 'error'."
+ },
+ "when": {
+ "type": "string",
+ "title": "CatchWhen",
+ "description": "A runtime expression used to determine whether or not to catch the filtered error."
+ },
+ "exceptWhen": {
+ "type": "string",
+ "title": "CatchExceptWhen",
+ "description": "A runtime expression used to determine whether or not to catch the filtered error."
+ },
+ "retry": {
+ "oneOf": [
+ {
+ "$ref": "#/$defs/retryPolicy",
+ "title": "RetryPolicyDefinition",
+ "description": "The retry policy to use, if any, when catching errors."
+ },
+ {
+ "type": "string",
+ "title": "RetryPolicyReference",
+ "description": "The name of the retry policy to use, if any, when catching errors."
+ }
+ ]
+ },
+ "do": {
+ "$ref": "#/$defs/taskList",
+ "title": "TryTaskCatchDo",
+ "description": "The definition of the task(s) to run when catching an error."
+ }
+ }
+ }
+ }
+ },
+ "waitTask": {
+ "type": "object",
+ "$ref": "#/$defs/taskBase",
+ "title": "WaitTask",
+ "description": "Allows workflows to pause or delay their execution for a specified period of time.",
+ "required": [
+ "wait"
+ ],
+ "unevaluatedProperties": false,
+ "properties": {
+ "wait": {
+ "$ref": "#/$defs/duration",
+ "title": "WaitTaskConfiguration",
+ "description": "The amount of time to wait."
+ }
+ }
+ },
+ "flowDirective": {
+ "title": "FlowDirective",
+ "description": "Represents different transition options for a workflow.",
+ "anyOf": [
+ {
+ "type": "string",
+ "enum": [
+ "continue",
+ "exit",
+ "end"
+ ],
+ "default": "continue"
+ },
+ {
+ "type": "string"
+ }
+ ]
+ },
+ "referenceableAuthenticationPolicy": {
+ "type": "object",
+ "title": "ReferenceableAuthenticationPolicy",
+ "description": "Represents a referenceable authentication policy.",
+ "unevaluatedProperties": false,
+ "oneOf": [
+ {
+ "title": "AuthenticationPolicyReference",
+ "description": "The reference of the authentication policy to use.",
+ "properties": {
+ "use": {
+ "type": "string",
+ "minLength": 1,
+ "title": "ReferenceableAuthenticationPolicyName",
+ "description": "The name of the authentication policy to use."
+ }
+ },
+ "required": [
+ "use"
+ ]
+ },
+ {
+ "$ref": "#/$defs/authenticationPolicy"
+ }
+ ]
+ },
+ "secretBasedAuthenticationPolicy": {
+ "type": "object",
+ "title": "SecretBasedAuthenticationPolicy",
+ "description": "Represents an authentication policy based on secrets.",
+ "unevaluatedProperties": false,
+ "properties": {
+ "use": {
+ "type": "string",
+ "minLength": 1,
+ "title": "SecretBasedAuthenticationPolicyName",
+ "description": "The name of the authentication policy to use."
+ }
+ },
+ "required": [
+ "use"
+ ]
+ },
+ "authenticationPolicy": {
+ "type": "object",
+ "title": "AuthenticationPolicy",
+ "description": "Defines an authentication policy.",
+ "oneOf": [
+ {
+ "title": "BasicAuthenticationPolicy",
+ "description": "Use basic authentication.",
+ "properties": {
+ "basic": {
+ "type": "object",
+ "title": "BasicAuthenticationPolicyConfiguration",
+ "description": "The configuration of the basic authentication policy.",
+ "unevaluatedProperties": false,
+ "oneOf": [
+ {
+ "title": "BasicAuthenticationProperties",
+ "description": "Inline configuration of the basic authentication policy.",
+ "properties": {
+ "username": {
+ "type": "string",
+ "description": "The username to use."
+ },
+ "password": {
+ "type": "string",
+ "description": "The password to use."
+ }
+ },
+ "required": [
+ "username",
+ "password"
+ ]
+ },
+ {
+ "$ref": "#/$defs/secretBasedAuthenticationPolicy",
+ "title": "BasicAuthenticationPolicySecret",
+ "description": "Secret based configuration of the basic authentication policy."
+ }
+ ]
+ }
+ },
+ "required": [
+ "basic"
+ ]
+ },
+ {
+ "title": "BearerAuthenticationPolicy",
+ "description": "Use bearer authentication.",
+ "properties": {
+ "bearer": {
+ "type": "object",
+ "title": "BearerAuthenticationPolicyConfiguration",
+ "description": "The configuration of the bearer authentication policy.",
+ "unevaluatedProperties": false,
+ "oneOf": [
+ {
+ "title": "BearerAuthenticationProperties",
+ "description": "Inline configuration of the bearer authentication policy.",
+ "properties": {
+ "token": {
+ "type": "string",
+ "description": "The bearer token to use."
+ }
+ },
+ "required": [
+ "token"
+ ]
+ },
+ {
+ "$ref": "#/$defs/secretBasedAuthenticationPolicy",
+ "title": "BearerAuthenticationPolicySecret",
+ "description": "Secret based configuration of the bearer authentication policy."
+ }
+ ]
+ }
+ },
+ "required": [
+ "bearer"
+ ]
+ },
+ {
+ "title": "DigestAuthenticationPolicy",
+ "description": "Use digest authentication.",
+ "properties": {
+ "digest": {
+ "type": "object",
+ "title": "DigestAuthenticationPolicyConfiguration",
+ "description": "The configuration of the digest authentication policy.",
+ "unevaluatedProperties": false,
+ "oneOf": [
+ {
+ "title": "DigestAuthenticationProperties",
+ "description": "Inline configuration of the digest authentication policy.",
+ "properties": {
+ "username": {
+ "type": "string",
+ "description": "The username to use."
+ },
+ "password": {
+ "type": "string",
+ "description": "The password to use."
+ }
+ },
+ "required": [
+ "username",
+ "password"
+ ]
+ },
+ {
+ "$ref": "#/$defs/secretBasedAuthenticationPolicy",
+ "title": "DigestAuthenticationPolicySecret",
+ "description": "Secret based configuration of the digest authentication policy."
+ }
+ ]
+ }
+ },
+ "required": [
+ "digest"
+ ]
+ },
+ {
+ "title": "OAuth2AuthenticationPolicy",
+ "description": "Use OAuth2 authentication.",
+ "properties": {
+ "oauth2": {
+ "type": "object",
+ "title": "OAuth2AuthenticationPolicyConfiguration",
+ "description": "The configuration of the OAuth2 authentication policy.",
+ "unevaluatedProperties": false,
+ "oneOf": [
+ {
+ "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": {
+ "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."
+ }
+ ]
+ }
+ },
+ "required": [
+ "oauth2"
+ ]
+ },
+ {
+ "title": "OpenIdConnectAuthenticationPolicy",
+ "description": "Use OpenIdConnect authentication.",
+ "properties": {
+ "oidc": {
+ "type": "object",
+ "title": "OpenIdConnectAuthenticationPolicyConfiguration",
+ "description": "The configuration of the OpenIdConnect authentication policy.",
+ "unevaluatedProperties": false,
+ "oneOf": [
+ {
+ "$ref": "#/$defs/oauth2AuthenticationProperties",
+ "title": "OpenIdConnectAuthenticationProperties",
+ "description": "The inline configuration of the OpenIdConnect authentication policy.",
+ "unevaluatedProperties": false
+ },
+ {
+ "$ref": "#/$defs/secretBasedAuthenticationPolicy",
+ "title": "OpenIdConnectAuthenticationPolicySecret",
+ "description": "Secret based configuration of the OpenIdConnect authentication policy."
+ }
+ ]
+ }
+ },
+ "required": [
+ "oidc"
+ ]
+ }
+ ]
+ },
+ "oauth2AuthenticationProperties": {
+ "type": "object",
+ "title": "OAuth2AutenthicationData",
+ "description": "Inline configuration of the OAuth2 authentication policy.",
+ "properties": {
+ "authority": {
+ "$ref": "#/$defs/uriTemplate",
+ "title": "OAuth2AutenthicationDataAuthority",
+ "description": "The URI that references the OAuth2 authority to use."
+ },
+ "grant": {
+ "type": "string",
+ "enum": [
+ "authorization_code",
+ "client_credentials",
+ "password",
+ "refresh_token",
+ "urn:ietf:params:oauth:grant-type:token-exchange"
+ ],
+ "title": "OAuth2AutenthicationDataGrant",
+ "description": "The grant type to use."
+ },
+ "client": {
+ "type": "object",
+ "title": "OAuth2AutenthicationDataClient",
+ "description": "The definition of an OAuth2 client.",
+ "unevaluatedProperties": false,
+ "properties": {
+ "id": {
+ "type": "string",
+ "title": "ClientId",
+ "description": "The client id to use."
+ },
+ "secret": {
+ "type": "string",
+ "title": "ClientSecret",
+ "description": "The client secret to use, if any."
+ },
+ "assertion": {
+ "type": "string",
+ "title": "ClientAssertion",
+ "description": "A JWT containing a signed assertion with your application credentials."
+ },
+ "authentication": {
+ "type": "string",
+ "enum": [
+ "client_secret_basic",
+ "client_secret_post",
+ "client_secret_jwt",
+ "private_key_jwt",
+ "none"
+ ],
+ "default": "client_secret_post",
+ "title": "ClientAuthentication",
+ "description": "The authentication method to use to authenticate the client."
+ }
+ }
+ },
+ "request": {
+ "type": "object",
+ "title": "OAuth2TokenRequest",
+ "description": "The configuration of an OAuth2 token request",
+ "properties": {
+ "encoding": {
+ "type": "string",
+ "enum": [
+ "application/x-www-form-urlencoded",
+ "application/json"
+ ],
+ "default": "application/x-www-form-urlencoded",
+ "title": "Oauth2TokenRequestEncoding"
+ }
+ }
+ },
+ "issuers": {
+ "type": "array",
+ "title": "OAuth2Issuers",
+ "description": "A list that contains that contains valid issuers that will be used to check against the issuer of generated tokens.",
+ "items": {
+ "type": "string"
+ }
+ },
+ "scopes": {
+ "type": "array",
+ "title": "OAuth2AutenthicationDataScopes",
+ "description": "The scopes, if any, to request the token for.",
+ "items": {
+ "type": "string"
+ }
+ },
+ "audiences": {
+ "type": "array",
+ "title": "OAuth2AutenthicationDataAudiences",
+ "description": "The audiences, if any, to request the token for.",
+ "items": {
+ "type": "string"
+ }
+ },
+ "username": {
+ "type": "string",
+ "title": "OAuth2AutenthicationDataUsername",
+ "description": "The username to use. Used only if the grant type is Password."
+ },
+ "password": {
+ "type": "string",
+ "title": "OAuth2AutenthicationDataPassword",
+ "description": "The password to use. Used only if the grant type is Password."
+ },
+ "subject": {
+ "$ref": "#/$defs/oauth2Token",
+ "title": "OAuth2AutenthicationDataSubject",
+ "description": "The security token that represents the identity of the party on behalf of whom the request is being made."
+ },
+ "actor": {
+ "$ref": "#/$defs/oauth2Token",
+ "title": "OAuth2AutenthicationDataActor",
+ "description": "The security token that represents the identity of the acting party."
+ }
+ }
+ },
+ "oauth2Token": {
+ "type": "object",
+ "title": "OAuth2TokenDefinition",
+ "description": "Represents an OAuth2 token.",
+ "unevaluatedProperties": false,
+ "properties": {
+ "token": {
+ "type": "string",
+ "title": "OAuth2Token",
+ "description": "The security token to use."
+ },
+ "type": {
+ "type": "string",
+ "title": "OAuth2TokenType",
+ "description": "The type of the security token to use."
+ }
+ },
+ "required": [
+ "token",
+ "type"
+ ]
+ },
+ "duration": {
+ "oneOf": [
+ {
+ "type": "object",
+ "minProperties": 1,
+ "unevaluatedProperties": false,
+ "properties": {
+ "days": {
+ "type": "integer",
+ "title": "DurationDays",
+ "description": "Number of days, if any."
+ },
+ "hours": {
+ "type": "integer",
+ "title": "DurationHours",
+ "description": "Number of days, if any."
+ },
+ "minutes": {
+ "type": "integer",
+ "title": "DurationMinutes",
+ "description": "Number of minutes, if any."
+ },
+ "seconds": {
+ "type": "integer",
+ "title": "DurationSeconds",
+ "description": "Number of seconds, if any."
+ },
+ "milliseconds": {
+ "type": "integer",
+ "title": "DurationMilliseconds",
+ "description": "Number of milliseconds, if any."
+ }
+ },
+ "title": "DurationInline",
+ "description": "The inline definition of a duration."
+ },
+ {
+ "type": "string",
+ "pattern": "^P(?!$)(\\d+(?:\\.\\d+)?Y)?(\\d+(?:\\.\\d+)?M)?(\\d+(?:\\.\\d+)?W)?(\\d+(?:\\.\\d+)?D)?(T(?=\\d)(\\d+(?:\\.\\d+)?H)?(\\d+(?:\\.\\d+)?M)?(\\d+(?:\\.\\d+)?S)?)?$",
+ "title": "DurationExpression",
+ "description": "The ISO 8601 expression of a duration."
+ }
+ ]
+ },
+ "error": {
+ "type": "object",
+ "title": "Error",
+ "description": "Represents an error.",
+ "unevaluatedProperties": false,
+ "properties": {
+ "type": {
+ "title": "ErrorType",
+ "description": "A URI reference that identifies the error type.",
+ "oneOf": [
+ {
+ "title": "LiteralErrorType",
+ "$ref": "#/$defs/uriTemplate",
+ "description": "The literal error type."
+ },
+ {
+ "title": "ExpressionErrorType",
+ "$ref": "#/$defs/runtimeExpression",
+ "description": "An expression based error type."
+ }
+ ]
+ },
+ "status": {
+ "type": "integer",
+ "title": "ErrorStatus",
+ "description": "The status code generated by the origin for this occurrence of the error."
+ },
+ "instance": {
+ "title": "ErrorInstance",
+ "description": "A JSON Pointer used to reference the component the error originates from.",
+ "oneOf": [
+ {
+ "title": "LiteralErrorInstance",
+ "description": "The literal error instance.",
+ "type": "string",
+ "format": "json-pointer"
+ },
+ {
+ "$ref": "#/$defs/runtimeExpression",
+ "title": "ExpressionErrorInstance",
+ "description": "An expression based error instance."
+ }
+ ]
+ },
+ "title": {
+ "type": "string",
+ "title": "ErrorTitle",
+ "description": "A short, human-readable summary of the error."
+ },
+ "detail": {
+ "type": "string",
+ "title": "ErrorDetails",
+ "description": "A human-readable explanation specific to this occurrence of the error."
+ }
+ },
+ "required": [
+ "type",
+ "status"
+ ]
+ },
+ "uriTemplate": {
+ "title": "UriTemplate",
+ "anyOf": [
+ {
+ "title": "LiteralUriTemplate",
+ "type": "string",
+ "format": "uri-template",
+ "pattern": "^[A-Za-z][A-Za-z0-9+\\-.]*://.*"
+ },
+ {
+ "title": "LiteralUri",
+ "type": "string",
+ "format": "uri",
+ "pattern": "^[A-Za-z][A-Za-z0-9+\\-.]*://.*"
+ }
+ ]
+ },
+ "endpoint": {
+ "title": "Endpoint",
+ "description": "Represents an endpoint.",
+ "oneOf": [
+ {
+ "$ref": "#/$defs/runtimeExpression"
+ },
+ {
+ "$ref": "#/$defs/uriTemplate"
+ },
+ {
+ "title": "EndpointConfiguration",
+ "type": "object",
+ "unevaluatedProperties": false,
+ "properties": {
+ "uri": {
+ "title": "EndpointUri",
+ "description": "The endpoint's URI.",
+ "oneOf": [
+ {
+ "title": "LiteralEndpointURI",
+ "description": "The literal endpoint's URI.",
+ "$ref": "#/$defs/uriTemplate"
+ },
+ {
+ "title": "ExpressionEndpointURI",
+ "$ref": "#/$defs/runtimeExpression",
+ "description": "An expression based endpoint's URI."
+ }
+ ]
+ },
+ "authentication": {
+ "$ref": "#/$defs/referenceableAuthenticationPolicy",
+ "title": "EndpointAuthentication",
+ "description": "The authentication policy to use."
+ }
+ },
+ "required": [
+ "uri"
+ ]
+ }
+ ]
+ },
+ "eventProperties": {
+ "type": "object",
+ "title": "EventProperties",
+ "description": "Describes the properties of an event.",
+ "properties": {
+ "id": {
+ "type": "string",
+ "title": "EventId",
+ "description": "The event's unique identifier."
+ },
+ "source": {
+ "title": "EventSource",
+ "description": "Identifies the context in which an event happened.",
+ "oneOf": [
+ {
+ "$ref": "#/$defs/uriTemplate"
+ },
+ {
+ "$ref": "#/$defs/runtimeExpression"
+ }
+ ]
+ },
+ "type": {
+ "type": "string",
+ "title": "EventType",
+ "description": "This attribute contains a value describing the type of event related to the originating occurrence."
+ },
+ "time": {
+ "title": "EventTime",
+ "description": "When the event occured.",
+ "oneOf": [
+ {
+ "title": "LiteralTime",
+ "type": "string",
+ "format": "date-time"
+ },
+ {
+ "$ref": "#/$defs/runtimeExpression"
+ }
+ ]
+ },
+ "subject": {
+ "type": "string",
+ "title": "EventSubject",
+ "description": "The subject of the event."
+ },
+ "datacontenttype": {
+ "type": "string",
+ "title": "EventDataContentType",
+ "description": "Content type of data value. This attribute enables data to carry any type of content, whereby format and encoding might differ from that of the chosen event format."
+ },
+ "dataschema": {
+ "title": "EventDataschema",
+ "description": "The schema describing the event format.",
+ "oneOf": [
+ {
+ "title": "LiteralDataSchema",
+ "$ref": "#/$defs/uriTemplate",
+ "description": "The literal event data schema."
+ },
+ {
+ "title": "ExpressionDataSchema",
+ "$ref": "#/$defs/runtimeExpression",
+ "description": "An expression based event data schema."
+ }
+ ]
+ }
+ },
+ "additionalProperties": true
+ },
+ "eventConsumptionStrategy": {
+ "type": "object",
+ "title": "EventConsumptionStrategy",
+ "description": "Describe the event consumption strategy to adopt.",
+ "unevaluatedProperties": false,
+ "oneOf": [
+ {
+ "title": "AllEventConsumptionStrategy",
+ "properties": {
+ "all": {
+ "type": "array",
+ "title": "AllEventConsumptionStrategyConfiguration",
+ "description": "A list containing all the events that must be consumed.",
+ "items": {
+ "$ref": "#/$defs/eventFilter"
+ }
+ }
+ },
+ "required": [
+ "all"
+ ]
+ },
+ {
+ "title": "AnyEventConsumptionStrategy",
+ "properties": {
+ "any": {
+ "type": "array",
+ "title": "AnyEventConsumptionStrategyConfiguration",
+ "description": "A list containing any of the events to consume.",
+ "items": {
+ "$ref": "#/$defs/eventFilter"
+ }
+ }
+ },
+ "required": [
+ "any"
+ ]
+ },
+ {
+ "title": "OneEventConsumptionStrategy",
+ "properties": {
+ "one": {
+ "$ref": "#/$defs/eventFilter",
+ "title": "OneEventConsumptionStrategyConfiguration",
+ "description": "The single event to consume."
+ }
+ },
+ "required": [
+ "one"
+ ]
+ }
+ ]
+ },
+ "eventFilter": {
+ "type": "object",
+ "title": "EventFilter",
+ "description": "An event filter is a mechanism used to selectively process or handle events based on predefined criteria, such as event type, source, or specific attributes.",
+ "unevaluatedProperties": false,
+ "properties": {
+ "with": {
+ "$ref": "#/$defs/eventProperties",
+ "minProperties": 1,
+ "title": "WithEvent",
+ "description": "An event filter is a mechanism used to selectively process or handle events based on predefined criteria, such as event type, source, or specific attributes."
+ },
+ "correlate": {
+ "type": "object",
+ "title": "EventFilterCorrelate",
+ "description": "A correlation is a link between events and data, established by mapping event attributes to specific data attributes, allowing for coordinated processing or handling based on event characteristics.",
+ "additionalProperties": {
+ "type": "object",
+ "properties": {
+ "from": {
+ "type": "string",
+ "title": "CorrelateFrom",
+ "description": "A runtime expression used to extract the correlation value from the filtered event."
+ },
+ "expect": {
+ "type": "string",
+ "title": "CorrelateExpect",
+ "description": "A constant or a runtime expression, if any, used to determine whether or not the extracted correlation value matches expectations. If not set, the first extracted value will be used as the correlation's expectation."
+ }
+ },
+ "required": [
+ "from"
+ ]
+ }
+ }
+ },
+ "required": [
+ "with"
+ ]
+ },
+ "extension": {
+ "type": "object",
+ "title": "Extension",
+ "description": "The definition of an extension.",
+ "unevaluatedProperties": false,
+ "properties": {
+ "extend": {
+ "type": "string",
+ "enum": [
+ "call",
+ "composite",
+ "emit",
+ "for",
+ "listen",
+ "raise",
+ "run",
+ "set",
+ "switch",
+ "try",
+ "wait",
+ "all"
+ ],
+ "title": "ExtensionTarget",
+ "description": "The type of task to extend."
+ },
+ "when": {
+ "type": "string",
+ "title": "ExtensionCondition",
+ "description": "A runtime expression, if any, used to determine whether or not the extension should apply in the specified context."
+ },
+ "before": {
+ "$ref": "#/$defs/taskList",
+ "title": "ExtensionDoBefore",
+ "description": "The task(s) to execute before the extended task, if any."
+ },
+ "after": {
+ "$ref": "#/$defs/taskList",
+ "title": "ExtensionDoAfter",
+ "description": "The task(s) to execute after the extended task, if any."
+ }
+ },
+ "required": [
+ "extend"
+ ]
+ },
+ "externalResource": {
+ "type": "object",
+ "title": "ExternalResource",
+ "description": "Represents an external resource.",
+ "unevaluatedProperties": false,
+ "properties": {
+ "name": {
+ "type": "string",
+ "title": "ExternalResourceName",
+ "description": "The name of the external resource, if any."
+ },
+ "endpoint": {
+ "$ref": "#/$defs/endpoint",
+ "title": "ExternalResourceEndpoint",
+ "description": "The endpoint of the external resource."
+ }
+ },
+ "required": [
+ "endpoint"
+ ]
+ },
+ "input": {
+ "type": "object",
+ "title": "Input",
+ "description": "Configures the input of a workflow or task.",
+ "unevaluatedProperties": false,
+ "properties": {
+ "schema": {
+ "$ref": "#/$defs/schema",
+ "title": "InputSchema",
+ "description": "The schema used to describe and validate the input of the workflow or task."
+ },
+ "from": {
+ "title": "InputFrom",
+ "description": "A runtime expression, if any, used to mutate and/or filter the input of the workflow or task.",
+ "oneOf": [
+ {
+ "type": "string"
+ },
+ {
+ "type": "object"
+ }
+ ]
+ }
+ }
+ },
+ "output": {
+ "type": "object",
+ "title": "Output",
+ "description": "Configures the output of a workflow or task.",
+ "unevaluatedProperties": false,
+ "properties": {
+ "schema": {
+ "$ref": "#/$defs/schema",
+ "title": "OutputSchema",
+ "description": "The schema used to describe and validate the output of the workflow or task."
+ },
+ "as": {
+ "title": "OutputAs",
+ "description": "A runtime expression, if any, used to mutate and/or filter the output of the workflow or task.",
+ "oneOf": [
+ {
+ "type": "string"
+ },
+ {
+ "type": "object"
+ }
+ ]
+ }
+ }
+ },
+ "export": {
+ "type": "object",
+ "title": "Export",
+ "description": "Set the content of the context. .",
+ "unevaluatedProperties": false,
+ "properties": {
+ "schema": {
+ "$ref": "#/$defs/schema",
+ "title": "ExportSchema",
+ "description": "The schema used to describe and validate the workflow context."
+ },
+ "as": {
+ "title": "ExportAs",
+ "description": "A runtime expression, if any, used to export the output data to the context.",
+ "oneOf": [
+ {
+ "type": "string"
+ },
+ {
+ "type": "object"
+ }
+ ]
+ }
+ }
+ },
+ "retryPolicy": {
+ "type": "object",
+ "title": "RetryPolicy",
+ "description": "Defines a retry policy.",
+ "unevaluatedProperties": false,
+ "properties": {
+ "when": {
+ "type": "string",
+ "title": "RetryWhen",
+ "description": "A runtime expression, if any, used to determine whether or not to retry running the task, in a given context."
+ },
+ "exceptWhen": {
+ "type": "string",
+ "title": "RetryExcepWhen",
+ "description": "A runtime expression used to determine whether or not to retry running the task, in a given context."
+ },
+ "delay": {
+ "$ref": "#/$defs/duration",
+ "title": "RetryDelay",
+ "description": "The duration to wait between retry attempts."
+ },
+ "backoff": {
+ "type": "object",
+ "title": "RetryBackoff",
+ "description": "The retry duration backoff.",
+ "unevaluatedProperties": false,
+ "oneOf": [
+ {
+ "title": "ConstantBackoff",
+ "properties": {
+ "constant": {
+ "type": "object",
+ "description": "The definition of the constant backoff to use, if any."
+ }
+ },
+ "required": [
+ "constant"
+ ]
+ },
+ {
+ "title": "ExponentialBackOff",
+ "properties": {
+ "exponential": {
+ "type": "object",
+ "description": "The definition of the exponential backoff to use, if any."
+ }
+ },
+ "required": [
+ "exponential"
+ ]
+ },
+ {
+ "title": "LinearBackoff",
+ "properties": {
+ "linear": {
+ "type": "object",
+ "description": "The definition of the linear backoff to use, if any."
+ }
+ },
+ "required": [
+ "linear"
+ ]
+ }
+ ]
+ },
+ "limit": {
+ "type": "object",
+ "title": "RetryLimit",
+ "unevaluatedProperties": false,
+ "properties": {
+ "attempt": {
+ "type": "object",
+ "title": "RetryLimitAttempt",
+ "unevaluatedProperties": false,
+ "properties": {
+ "count": {
+ "type": "integer",
+ "title": "RetryLimitAttemptCount",
+ "description": "The maximum amount of retry attempts, if any."
+ },
+ "duration": {
+ "$ref": "#/$defs/duration",
+ "title": "RetryLimitAttemptDuration",
+ "description": "The maximum duration for each retry attempt."
+ }
+ }
+ },
+ "duration": {
+ "$ref": "#/$defs/duration",
+ "title": "RetryLimitDuration",
+ "description": "The duration limit, if any, for all retry attempts."
+ }
+ },
+ "description": "The retry limit, if any."
+ },
+ "jitter": {
+ "type": "object",
+ "title": "RetryPolicyJitter",
+ "description": "The parameters, if any, that control the randomness or variability of the delay between retry attempts.",
+ "unevaluatedProperties": false,
+ "properties": {
+ "from": {
+ "$ref": "#/$defs/duration",
+ "title": "RetryPolicyJitterFrom",
+ "description": "The minimum duration of the jitter range."
+ },
+ "to": {
+ "$ref": "#/$defs/duration",
+ "title": "RetryPolicyJitterTo",
+ "description": "The maximum duration of the jitter range."
+ }
+ },
+ "required": [
+ "from",
+ "to"
+ ]
+ }
+ }
+ },
+ "schema": {
+ "type": "object",
+ "title": "Schema",
+ "description": "Represents the definition of a schema.",
+ "unevaluatedProperties": false,
+ "properties": {
+ "format": {
+ "type": "string",
+ "default": "json",
+ "title": "SchemaFormat",
+ "description": "The schema's format. Defaults to 'json'. The (optional) version of the format can be set using `{format}:{version}`."
+ }
+ },
+ "oneOf": [
+ {
+ "title": "SchemaInline",
+ "properties": {
+ "document": {
+ "description": "The schema's inline definition."
+ }
+ },
+ "required": [
+ "document"
+ ]
+ },
+ {
+ "title": "SchemaExternal",
+ "properties": {
+ "resource": {
+ "$ref": "#/$defs/externalResource",
+ "title": "SchemaExternalResource",
+ "description": "The schema's external resource."
+ }
+ },
+ "required": [
+ "resource"
+ ]
+ }
+ ]
+ },
+ "timeout": {
+ "type": "object",
+ "title": "Timeout",
+ "description": "The definition of a timeout.",
+ "unevaluatedProperties": false,
+ "properties": {
+ "after": {
+ "$ref": "#/$defs/duration",
+ "title": "TimeoutAfter",
+ "description": "The duration after which to timeout."
+ }
+ },
+ "required": [
+ "after"
+ ]
+ },
+ "catalog": {
+ "type": "object",
+ "title": "Catalog",
+ "description": "The definition of a resource catalog",
+ "unevaluatedProperties": false,
+ "properties": {
+ "endpoint": {
+ "$ref": "#/$defs/endpoint",
+ "title": "CatalogEndpoint",
+ "description": "The root URL where the catalog is hosted"
+ }
+ },
+ "required": [
+ "endpoint"
+ ]
+ },
+ "runtimeExpression": {
+ "type": "string",
+ "title": "RuntimeExpression",
+ "description": "A runtime expression.",
+ "pattern": "^\\s*\\$\\{.+\\}\\s*$"
+ }
+ }
+}
\ No newline at end of file
diff --git a/public/schemas/1.0.0-alpha5/workflow.yaml b/public/schemas/1.0.0-alpha5/workflow.yaml
new file mode 100644
index 0000000..ad66f44
--- /dev/null
+++ b/public/schemas/1.0.0-alpha5/workflow.yaml
@@ -0,0 +1,1509 @@
+$id: https://open-workflow-specification.org/schemas/1.0.0-alpha5/workflow.yaml
+$schema: https://json-schema.org/draft/2020-12/schema
+description: Open Workflow Specification DSL - Workflow Schema.
+type: object
+required: [ document, do ]
+properties:
+ document:
+ type: object
+ title: Document
+ description: Documents the workflow.
+ unevaluatedProperties: false
+ properties:
+ dsl:
+ type: string
+ pattern: ^(0|[1-9]\d*)\.(0|[1-9]\d*)\.(0|[1-9]\d*)(?:-((?:0|[1-9]\d*|\d*[a-zA-Z-][0-9a-zA-Z-]*)(?:\.(?:0|[1-9]\d*|\d*[a-zA-Z-][0-9a-zA-Z-]*))*))?(?:\+([0-9a-zA-Z-]+(?:\.[0-9a-zA-Z-]+)*))?$
+ title: WorkflowDSL
+ description: The version of the DSL used by the workflow.
+ namespace:
+ type: string
+ pattern: ^[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?$
+ title: WorkflowNamespace
+ description: The workflow's namespace.
+ name:
+ type: string
+ pattern: ^[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?$
+ title: WorkflowName
+ description: The workflow's name.
+ version:
+ type: string
+ pattern: ^(0|[1-9]\d*)\.(0|[1-9]\d*)\.(0|[1-9]\d*)(?:-((?:0|[1-9]\d*|\d*[a-zA-Z-][0-9a-zA-Z-]*)(?:\.(?:0|[1-9]\d*|\d*[a-zA-Z-][0-9a-zA-Z-]*))*))?(?:\+([0-9a-zA-Z-]+(?:\.[0-9a-zA-Z-]+)*))?$
+ title: WorkflowVersion
+ description: The workflow's semantic version.
+ title:
+ type: string
+ title: WorkflowTitle
+ description: The workflow's title.
+ summary:
+ type: string
+ title: WorkflowSummary
+ description: The workflow's Markdown summary.
+ tags:
+ type: object
+ title: WorkflowTags
+ description: A key/value mapping of the workflow's tags, if any.
+ additionalProperties: true
+ metadata:
+ type: object
+ title: WorkflowMetadata
+ description: Holds additional information about the workflow.
+ additionalProperties: true
+ required: [ dsl, namespace, name, version ]
+ input:
+ $ref: '#/$defs/input'
+ title: Input
+ description: Configures the workflow's input.
+ use:
+ type: object
+ title: Use
+ description: Defines the workflow's reusable components.
+ unevaluatedProperties: false
+ properties:
+ authentications:
+ type: object
+ title: UseAuthentications
+ description: The workflow's reusable authentication policies.
+ additionalProperties:
+ $ref: '#/$defs/authenticationPolicy'
+ errors:
+ type: object
+ title: UseErrors
+ description: The workflow's reusable errors.
+ additionalProperties:
+ $ref: '#/$defs/error'
+ extensions:
+ type: array
+ title: UseExtensions
+ description: The workflow's extensions.
+ items:
+ type: object
+ title: ExtensionItem
+ minProperties: 1
+ maxProperties: 1
+ additionalProperties:
+ $ref: '#/$defs/extension'
+ functions:
+ type: object
+ title: UseFunctions
+ description: The workflow's reusable functions.
+ additionalProperties:
+ $ref: '#/$defs/task'
+ retries:
+ type: object
+ title: UseRetries
+ description: The workflow's reusable retry policies.
+ additionalProperties:
+ $ref: '#/$defs/retryPolicy'
+ secrets:
+ type: array
+ title: UseSecrets
+ description: The workflow's reusable secrets.
+ items:
+ type: string
+ description: The workflow's secrets.
+ timeouts:
+ type: object
+ title: UseTimeouts
+ description: The workflow's reusable timeouts.
+ additionalProperties:
+ $ref: '#/$defs/timeout'
+ catalogs:
+ type: object
+ title: UseCatalogs
+ description: The workflow's reusable catalogs.
+ additionalProperties:
+ $ref: '#/$defs/catalog'
+ do:
+ $ref: '#/$defs/taskList'
+ title: Do
+ description: Defines the task(s) the workflow must perform.
+ timeout:
+ oneOf:
+ - $ref: '#/$defs/timeout'
+ title: TimeoutDefinition
+ description: The workflow's timeout configuration, if any.
+ - type: string
+ title: TimeoutReference
+ description: The name of the workflow's timeout, if any.
+ output:
+ $ref: '#/$defs/output'
+ title: Output
+ description: Configures the workflow's output.
+ schedule:
+ type: object
+ title: Schedule
+ description: Schedules the workflow.
+ unevaluatedProperties: false
+ properties:
+ every:
+ $ref: '#/$defs/duration'
+ title: ScheduleEvery
+ description: Specifies the duration of the interval at which the workflow should be executed.
+ cron:
+ type: string
+ title: ScheduleCron
+ description: Specifies the schedule using a cron expression, e.g., '0 0 * * *' for daily at midnight.
+ after:
+ $ref: '#/$defs/duration'
+ title: ScheduleAfter
+ description: Specifies a delay duration that the workflow must wait before starting again after it completes.
+ on:
+ $ref: '#/$defs/eventConsumptionStrategy'
+ title: ScheduleOn
+ description: Specifies the events that trigger the workflow execution.
+$defs:
+ taskList:
+ title: TaskList
+ description: List of named tasks to perform.
+ type: array
+ items:
+ type: object
+ title: TaskItem
+ minProperties: 1
+ maxProperties: 1
+ additionalProperties:
+ $ref: '#/$defs/task'
+ taskBase:
+ type: object
+ title: TaskBase
+ description: An object inherited by all tasks.
+ properties:
+ if:
+ type: string
+ title: TaskBaseIf
+ description: A runtime expression, if any, used to determine whether or not the task should be run.
+ input:
+ $ref: '#/$defs/input'
+ title: TaskBaseInput
+ description: Configure the task's input.
+ output:
+ $ref: '#/$defs/output'
+ title: TaskBaseOutput
+ description: Configure the task's output.
+ export:
+ $ref: '#/$defs/export'
+ title: TaskBaseExport
+ description: Export task output to context.
+ timeout:
+ oneOf:
+ - $ref: '#/$defs/timeout'
+ title: TaskTimeoutDefinition
+ description: The task's timeout configuration, if any.
+ - type: string
+ title: TaskTimeoutReference
+ description: The name of the task's timeout, if any.
+ then:
+ $ref: '#/$defs/flowDirective'
+ title: TaskBaseThen
+ description: The flow directive to be performed upon completion of the task.
+ metadata:
+ type: object
+ title: TaskMetadata
+ description: Holds additional information about the task.
+ additionalProperties: true
+ task:
+ title: Task
+ description: A discrete unit of work that contributes to achieving the overall objectives defined by the workflow.
+ unevaluatedProperties: false
+ oneOf:
+ - $ref: '#/$defs/callTask'
+ - $ref: '#/$defs/doTask'
+ - $ref: '#/$defs/forkTask'
+ - $ref: '#/$defs/emitTask'
+ - $ref: '#/$defs/forTask'
+ - $ref: '#/$defs/listenTask'
+ - $ref: '#/$defs/raiseTask'
+ - $ref: '#/$defs/runTask'
+ - $ref: '#/$defs/setTask'
+ - $ref: '#/$defs/switchTask'
+ - $ref: '#/$defs/tryTask'
+ - $ref: '#/$defs/waitTask'
+ callTask:
+ title: CallTask
+ description: Defines the call to perform.
+ oneOf:
+ - title: CallAsyncAPI
+ description: Defines the AsyncAPI call to perform.
+ $ref: '#/$defs/taskBase'
+ type: object
+ required: [ call, with ]
+ unevaluatedProperties: false
+ properties:
+ call:
+ type: string
+ const: asyncapi
+ with:
+ type: object
+ title: AsyncApiArguments
+ description: The Async API call arguments.
+ properties:
+ document:
+ $ref: '#/$defs/externalResource'
+ title: WithAsyncAPIDocument
+ description: The document that defines the AsyncAPI operation to call.
+ operationRef:
+ type: string
+ title: WithAsyncAPIOperation
+ description: A reference to the AsyncAPI operation to call.
+ server:
+ type: string
+ title: WithAsyncAPIServer
+ description: A a reference to the server to call the specified AsyncAPI operation on. If not set, default to the first server matching the operation's channel.
+ message:
+ type: string
+ title: WithAsyncAPIMessage
+ description: The name of the message to use. If not set, defaults to the first message defined by the operation.
+ binding:
+ type: string
+ title: WithAsyncAPIBinding
+ description: The name of the binding to use. If not set, defaults to the first binding defined by the operation.
+ payload:
+ type: object
+ title: WithAsyncAPIPayload
+ description: The payload to call the AsyncAPI operation with, if any.
+ authentication:
+ $ref: '#/$defs/referenceableAuthenticationPolicy'
+ title: WithAsyncAPIAuthentication
+ description: The authentication policy, if any, to use when calling the AsyncAPI operation.
+ required: [ document, operationRef ]
+ unevaluatedProperties: false
+ - title: CallGRPC
+ description: Defines the GRPC call to perform.
+ $ref: '#/$defs/taskBase'
+ type: object
+ unevaluatedProperties: false
+ required: [ call, with ]
+ properties:
+ call:
+ type: string
+ const: grpc
+ with:
+ type: object
+ title: GRPCArguments
+ description: The GRPC call arguments.
+ properties:
+ proto:
+ $ref: '#/$defs/externalResource'
+ title: WithGRPCProto
+ description: The proto resource that describes the GRPC service to call.
+ service:
+ type: object
+ title: WithGRPCService
+ unevaluatedProperties: false
+ properties:
+ name:
+ type: string
+ title: WithGRPCServiceName
+ description: The name of the GRPC service to call.
+ host:
+ 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])?$
+ port:
+ type: integer
+ title: WithGRPCServicePost
+ description: The port number of the GRPC service to call.
+ minimum: 0
+ maximum: 65535
+ authentication:
+ $ref: '#/$defs/referenceableAuthenticationPolicy'
+ title: WithGRPCServiceAuthentication
+ description: The endpoint's authentication policy, if any.
+ required: [ name, host ]
+ method:
+ type: string
+ title: WithGRPCMethod
+ description: The name of the method to call on the defined GRPC service.
+ arguments:
+ type: object
+ title: WithGRPCArguments
+ description: The arguments, if any, to call the method with.
+ additionalProperties: true
+ required: [ proto, service, method ]
+ unevaluatedProperties: false
+ - title: CallHTTP
+ description: Defines the HTTP call to perform.
+ $ref: '#/$defs/taskBase'
+ type: object
+ unevaluatedProperties: false
+ required: [ call, with ]
+ properties:
+ call:
+ type: string
+ const: http
+ with:
+ type: object
+ title: HTTPArguments
+ description: The HTTP call arguments.
+ properties:
+ method:
+ type: string
+ title: WithHTTPMethod
+ description: The HTTP method of the HTTP request to perform.
+ endpoint:
+ title: WithHTTPEndpoint
+ description: The HTTP endpoint to send the request to.
+ $ref: '#/$defs/endpoint'
+ headers:
+ type: object
+ title: WithHTTPHeaders
+ description: A name/value mapping of the headers, if any, of the HTTP request to perform.
+ body:
+ title: WithHTTPBody
+ description: The body, if any, of the HTTP request to perform.
+ query:
+ type: object
+ title: WithHTTPQuery
+ description: A name/value mapping of the query parameters, if any, of the HTTP request to perform.
+ additionalProperties: true
+ output:
+ type: string
+ title: WithHTTPOutput
+ description: The http call output format. Defaults to 'content'.
+ enum: [ raw, content, response ]
+ required: [ method, endpoint ]
+ unevaluatedProperties: false
+ - title: CallOpenAPI
+ description: Defines the OpenAPI call to perform.
+ $ref: '#/$defs/taskBase'
+ type: object
+ unevaluatedProperties: false
+ required: [ call, with ]
+ properties:
+ call:
+ type: string
+ const: openapi
+ with:
+ type: object
+ title: OpenAPIArguments
+ description: The OpenAPI call arguments.
+ properties:
+ document:
+ $ref: '#/$defs/externalResource'
+ title: WithOpenAPIDocument
+ description: The document that defines the OpenAPI operation to call.
+ operationId:
+ type: string
+ title: WithOpenAPIOperation
+ description: The id of the OpenAPI operation to call.
+ parameters:
+ type: object
+ title: WithOpenAPIParameters
+ description: A name/value mapping of the parameters of the OpenAPI operation to call.
+ additionalProperties: true
+ authentication:
+ $ref: '#/$defs/referenceableAuthenticationPolicy'
+ title: WithOpenAPIAuthentication
+ description: The authentication policy, if any, to use when calling the OpenAPI operation.
+ output:
+ type: string
+ enum: [ raw, content, response ]
+ title: WithOpenAPIOutput
+ description: The http call output format. Defaults to 'content'.
+ required: [ document, operationId ]
+ unevaluatedProperties: false
+ - title: CallFunction
+ description: Defines the function call to perform.
+ $ref: '#/$defs/taskBase'
+ type: object
+ unevaluatedProperties: false
+ required: [ call ]
+ properties:
+ call:
+ type: string
+ not:
+ enum: ["asyncapi", "grpc", "http", "openapi"]
+ description: The name of the function to call.
+ with:
+ type: object
+ title: FunctionArguments
+ description: A name/value mapping of the parameters, if any, to call the function with.
+ additionalProperties: true
+ forkTask:
+ type: object
+ $ref: '#/$defs/taskBase'
+ title: ForkTask
+ description: Allows workflows to execute multiple tasks concurrently and optionally race them against each other, with a single possible winner, which sets the task's output.
+ unevaluatedProperties: false
+ required: [ fork ]
+ properties:
+ fork:
+ type: object
+ title: ForkTaskConfiguration
+ description: The configuration of the branches to perform concurrently.
+ unevaluatedProperties: false
+ required: [ branches ]
+ properties:
+ branches:
+ $ref: '#/$defs/taskList'
+ title: ForkBranches
+ compete:
+ type: boolean
+ title: ForkCompete
+ description: Indicates whether or not the concurrent tasks are racing against each other, with a single possible winner, which sets the composite task's output.
+ default: false
+ doTask:
+ type: object
+ $ref: '#/$defs/taskBase'
+ title: DoTask
+ description: Allows to execute a list of tasks in sequence.
+ unevaluatedProperties: false
+ required: [ do ]
+ properties:
+ do:
+ $ref: '#/$defs/taskList'
+ title: DoTaskConfiguration
+ description: The configuration of the tasks to perform sequentially.
+ emitTask:
+ type: object
+ $ref: '#/$defs/taskBase'
+ title: EmitTask
+ description: Allows workflows to publish events to event brokers or messaging systems, facilitating communication and coordination between different components and services.
+ required: [ emit ]
+ unevaluatedProperties: false
+ properties:
+ emit:
+ type: object
+ title: EmitTaskConfiguration
+ description: The configuration of an event's emission.
+ unevaluatedProperties: false
+ properties:
+ event:
+ type: object
+ title: EmitEventDefinition
+ description: The definition of the event to emit.
+ properties:
+ with:
+ $ref: '#/$defs/eventProperties'
+ title: EmitEventWith
+ description: Defines the properties of event to emit.
+ required: [ source, type ]
+ additionalProperties: true
+ required: [ event ]
+ forTask:
+ type: object
+ $ref: '#/$defs/taskBase'
+ title: ForTask
+ description: Allows workflows to iterate over a collection of items, executing a defined set of subtasks for each item in the collection. This task type is instrumental in handling scenarios such as batch processing, data transformation, and repetitive operations across datasets.
+ required: [ for, do ]
+ unevaluatedProperties: false
+ properties:
+ for:
+ type: object
+ title: ForTaskConfiguration
+ description: The definition of the loop that iterates over a range of values.
+ unevaluatedProperties: false
+ properties:
+ each:
+ type: string
+ title: ForEach
+ description: The name of the variable used to store the current item being enumerated.
+ default: item
+ in:
+ type: string
+ title: ForIn
+ description: A runtime expression used to get the collection to enumerate.
+ at:
+ type: string
+ title: ForAt
+ description: The name of the variable used to store the index of the current item being enumerated.
+ default: index
+ required: [ in ]
+ while:
+ type: string
+ title: While
+ description: A runtime expression that represents the condition, if any, that must be met for the iteration to continue.
+ do:
+ $ref: '#/$defs/taskList'
+ title: ForTaskDo
+ listenTask:
+ type: object
+ $ref: '#/$defs/taskBase'
+ title: ListenTask
+ description: Provides a mechanism for workflows to await and react to external events, enabling event-driven behavior within workflow systems.
+ required: [ listen ]
+ unevaluatedProperties: false
+ properties:
+ listen:
+ type: object
+ title: ListenTaskConfiguration
+ description: The configuration of the listener to use.
+ unevaluatedProperties: false
+ properties:
+ to:
+ $ref: '#/$defs/eventConsumptionStrategy'
+ title: ListenTo
+ description: Defines the event(s) to listen to.
+ required: [ to ]
+ raiseTask:
+ type: object
+ $ref: '#/$defs/taskBase'
+ title: RaiseTask
+ description: Intentionally triggers and propagates errors.
+ required: [ raise ]
+ unevaluatedProperties: false
+ properties:
+ raise:
+ type: object
+ title: RaiseTaskConfiguration
+ description: The definition of the error to raise.
+ unevaluatedProperties: false
+ properties:
+ error:
+ oneOf:
+ - $ref: '#/$defs/error'
+ title: RaiseErrorDefinition
+ description: Defines the error to raise.
+ - type: string
+ title: RaiseErrorReference
+ description: The name of the error to raise
+ required: [ error ]
+ runTask:
+ type: object
+ $ref: '#/$defs/taskBase'
+ title: RunTask
+ description: Provides the capability to execute external containers, shell commands, scripts, or workflows.
+ required: [ run ]
+ unevaluatedProperties: false
+ properties:
+ run:
+ type: object
+ title: RunTaskConfiguration
+ description: The configuration of the process to execute.
+ unevaluatedProperties: false
+ properties:
+ await:
+ type: boolean
+ default: true
+ title: AwaitProcessCompletion
+ description: Whether to await the process completion before continuing.
+ oneOf:
+ - title: RunContainer
+ description: Enables the execution of external processes encapsulated within a containerized environment.
+ properties:
+ container:
+ type: object
+ title: Container
+ description: The configuration of the container to run.
+ unevaluatedProperties: false
+ properties:
+ image:
+ type: string
+ title: ContainerImage
+ description: The name of the container image to run.
+ command:
+ type: string
+ title: ContainerCommand
+ description: The command, if any, to execute on the container.
+ ports:
+ type: object
+ title: ContainerPorts
+ description: The container's port mappings, if any.
+ volumes:
+ type: object
+ title: ContainerVolumes
+ description: The container's volume mappings, if any.
+ environment:
+ type: object
+ title: ContainerEnvironment
+ description: A key/value mapping of the environment variables, if any, to use when running the configured process.
+ required: [ image ]
+ required: [ container ]
+ - title: RunScript
+ description: Enables the execution of custom scripts or code within a workflow, empowering workflows to perform specialized logic, data processing, or integration tasks by executing user-defined scripts written in various programming languages.
+ properties:
+ script:
+ type: object
+ title: Script
+ description: The configuration of the script to run.
+ unevaluatedProperties: false
+ properties:
+ language:
+ type: string
+ title: ScriptLanguage
+ description: The language of the script to run.
+ arguments:
+ type: object
+ title: ScriptArguments
+ description: A key/value mapping of the arguments, if any, to use when running the configured script.
+ additionalProperties: true
+ environment:
+ type: object
+ title: ScriptEnvironment
+ description: A key/value mapping of the environment variables, if any, to use when running the configured script process.
+ additionalProperties: true
+ oneOf:
+ - title: InlineScript
+ type: object
+ description: The script's code.
+ properties:
+ code:
+ type: string
+ title: InlineScriptCode
+ required: [ code ]
+ - title: ExternalScript
+ type: object
+ description: The script's resource.
+ properties:
+ source:
+ $ref: '#/$defs/externalResource'
+ title: ExternalScriptResource
+ required: [ source ]
+ required: [ language ]
+ required: [ script ]
+ - title: RunShell
+ description: Enables the execution of shell commands within a workflow, enabling workflows to interact with the underlying operating system and perform system-level operations, such as file manipulation, environment configuration, or system administration tasks.
+ properties:
+ shell:
+ type: object
+ title: Shell
+ description: The configuration of the shell command to run.
+ unevaluatedProperties: false
+ properties:
+ command:
+ type: string
+ title: ShellCommand
+ description: The shell command to run.
+ arguments:
+ type: object
+ title: ShellArguments
+ description: A list of the arguments of the shell command to run.
+ additionalProperties: true
+ environment:
+ type: object
+ title: ShellEnvironment
+ description: A key/value mapping of the environment variables, if any, to use when running the configured process.
+ additionalProperties: true
+ required: [ command ]
+ required: [ shell ]
+ - title: RunWorkflow
+ description: Enables the invocation and execution of nested workflows within a parent workflow, facilitating modularization, reusability, and abstraction of complex logic or business processes by encapsulating them into standalone workflow units.
+ properties:
+ workflow:
+ type: object
+ title: SubflowConfiguration
+ description: The configuration of the workflow to run.
+ unevaluatedProperties: false
+ properties:
+ namespace:
+ type: string
+ title: SubflowNamespace
+ description: The namespace the workflow to run belongs to.
+ name:
+ type: string
+ title: SubflowName
+ description: The name of the workflow to run.
+ version:
+ type: string
+ default: latest
+ title: SubflowVersion
+ description: The version of the workflow to run. Defaults to latest.
+ input:
+ type: object
+ title: SubflowInput
+ description: The data, if any, to pass as input to the workflow to execute. The value should be validated against the target workflow's input schema, if specified.
+ additionalProperties: true
+ required: [ namespace, name, version ]
+ required: [ workflow ]
+ setTask:
+ type: object
+ $ref: '#/$defs/taskBase'
+ title: SetTask
+ description: A task used to set data.
+ required: [ set ]
+ unevaluatedProperties: false
+ properties:
+ set:
+ type: object
+ title: SetTaskConfiguration
+ description: The data to set.
+ minProperties: 1
+ additionalProperties: true
+ switchTask:
+ type: object
+ $ref: '#/$defs/taskBase'
+ title: SwitchTask
+ description: Enables conditional branching within workflows, allowing them to dynamically select different paths based on specified conditions or criteria.
+ required: [ switch ]
+ unevaluatedProperties: false
+ properties:
+ switch:
+ type: array
+ title: SwitchTaskConfiguration
+ description: The definition of the switch to use.
+ minItems: 1
+ items:
+ type: object
+ title: SwitchItem
+ minProperties: 1
+ maxProperties: 1
+ additionalProperties:
+ type: object
+ title: SwitchCase
+ description: The definition of a case within a switch task, defining a condition and corresponding tasks to execute if the condition is met.
+ unevaluatedProperties: false
+ required: [ then ]
+ properties:
+ when:
+ type: string
+ title: SwitchCaseCondition
+ description: A runtime expression used to determine whether or not the case matches.
+ then:
+ $ref: '#/$defs/flowDirective'
+ title: SwitchCaseOutcome
+ description: The flow directive to execute when the case matches.
+ tryTask:
+ type: object
+ $ref: '#/$defs/taskBase'
+ title: TryTask
+ description: Serves as a mechanism within workflows to handle errors gracefully, potentially retrying failed tasks before proceeding with alternate ones.
+ required: [ try, catch ]
+ unevaluatedProperties: false
+ properties:
+ try:
+ $ref: '#/$defs/taskList'
+ title: TryTaskConfiguration
+ description: The task(s) to perform.
+ catch:
+ type: object
+ title: TryTaskCatch
+ description: The object used to define the errors to catch.
+ unevaluatedProperties: false
+ properties:
+ errors:
+ type: object
+ title: CatchErrors
+ description: The configuration of a concept used to catch errors.
+ as:
+ type: string
+ title: CatchAs
+ description: The name of the runtime expression variable to save the error as. Defaults to 'error'.
+ when:
+ type: string
+ title: CatchWhen
+ description: A runtime expression used to determine whether or not to catch the filtered error.
+ exceptWhen:
+ type: string
+ title: CatchExceptWhen
+ description: A runtime expression used to determine whether or not to catch the filtered error.
+ retry:
+ oneOf:
+ - $ref: '#/$defs/retryPolicy'
+ title: RetryPolicyDefinition
+ description: The retry policy to use, if any, when catching errors.
+ - type: string
+ title: RetryPolicyReference
+ description: The name of the retry policy to use, if any, when catching errors.
+ do:
+ $ref: '#/$defs/taskList'
+ title: TryTaskCatchDo
+ description: The definition of the task(s) to run when catching an error.
+ waitTask:
+ type: object
+ $ref: '#/$defs/taskBase'
+ title: WaitTask
+ description: Allows workflows to pause or delay their execution for a specified period of time.
+ required: [ wait ]
+ unevaluatedProperties: false
+ properties:
+ wait:
+ $ref: '#/$defs/duration'
+ title: WaitTaskConfiguration
+ description: The amount of time to wait.
+ flowDirective:
+ title: FlowDirective
+ description: Represents different transition options for a workflow.
+ anyOf:
+ - type: string
+ enum: [ continue, exit, end ]
+ default: continue
+ - type: string
+ referenceableAuthenticationPolicy:
+ type: object
+ title: ReferenceableAuthenticationPolicy
+ description: Represents a referenceable authentication policy.
+ unevaluatedProperties: false
+ oneOf:
+ - title: AuthenticationPolicyReference
+ description: The reference of the authentication policy to use.
+ properties:
+ use:
+ type: string
+ minLength: 1
+ title: ReferenceableAuthenticationPolicyName
+ description: The name of the authentication policy to use.
+ required: [use]
+ - $ref: '#/$defs/authenticationPolicy'
+ secretBasedAuthenticationPolicy:
+ type: object
+ title: SecretBasedAuthenticationPolicy
+ description: Represents an authentication policy based on secrets.
+ unevaluatedProperties: false
+ properties:
+ use:
+ type: string
+ minLength: 1
+ title: SecretBasedAuthenticationPolicyName
+ description: The name of the authentication policy to use.
+ required: [use]
+ authenticationPolicy:
+ type: object
+ title: AuthenticationPolicy
+ description: Defines an authentication policy.
+ oneOf:
+ - title: BasicAuthenticationPolicy
+ description: Use basic authentication.
+ properties:
+ basic:
+ type: object
+ title: BasicAuthenticationPolicyConfiguration
+ description: The configuration of the basic authentication policy.
+ unevaluatedProperties: false
+ oneOf:
+ - title: BasicAuthenticationProperties
+ description: Inline configuration of the basic authentication policy.
+ properties:
+ username:
+ type: string
+ description: The username to use.
+ password:
+ type: string
+ description: The password to use.
+ required: [ username, password ]
+ - $ref: '#/$defs/secretBasedAuthenticationPolicy'
+ title: BasicAuthenticationPolicySecret
+ description: Secret based configuration of the basic authentication policy.
+ required: [ basic ]
+ - title: BearerAuthenticationPolicy
+ description: Use bearer authentication.
+ properties:
+ bearer:
+ type: object
+ title: BearerAuthenticationPolicyConfiguration
+ description: The configuration of the bearer authentication policy.
+ unevaluatedProperties: false
+ oneOf:
+ - title: BearerAuthenticationProperties
+ description: Inline configuration of the bearer authentication policy.
+ properties:
+ token:
+ type: string
+ description: The bearer token to use.
+ required: [ token ]
+ - $ref: '#/$defs/secretBasedAuthenticationPolicy'
+ title: BearerAuthenticationPolicySecret
+ description: Secret based configuration of the bearer authentication policy.
+ required: [ bearer ]
+ - title: DigestAuthenticationPolicy
+ description: Use digest authentication.
+ properties:
+ digest:
+ type: object
+ title: DigestAuthenticationPolicyConfiguration
+ description: The configuration of the digest authentication policy.
+ unevaluatedProperties: false
+ oneOf:
+ - title: DigestAuthenticationProperties
+ description: Inline configuration of the digest authentication policy.
+ properties:
+ username:
+ type: string
+ description: The username to use.
+ password:
+ type: string
+ description: The password to use.
+ required: [ username, password ]
+ - $ref: '#/$defs/secretBasedAuthenticationPolicy'
+ title: DigestAuthenticationPolicySecret
+ description: Secret based configuration of the digest authentication policy.
+ required: [ digest ]
+ - title: OAuth2AuthenticationPolicy
+ description: Use OAuth2 authentication.
+ properties:
+ oauth2:
+ type: object
+ title: OAuth2AuthenticationPolicyConfiguration
+ description: The configuration of the OAuth2 authentication policy.
+ unevaluatedProperties: false
+ oneOf:
+ - 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:
+ 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.
+ required: [ oauth2 ]
+ - title: OpenIdConnectAuthenticationPolicy
+ description: Use OpenIdConnect authentication.
+ properties:
+ oidc:
+ type: object
+ title: OpenIdConnectAuthenticationPolicyConfiguration
+ description: The configuration of the OpenIdConnect authentication policy.
+ unevaluatedProperties: false
+ oneOf:
+ - $ref: '#/$defs/oauth2AuthenticationProperties'
+ title: OpenIdConnectAuthenticationProperties
+ description: The inline configuration of the OpenIdConnect authentication policy.
+ unevaluatedProperties: false
+ - $ref: '#/$defs/secretBasedAuthenticationPolicy'
+ title: OpenIdConnectAuthenticationPolicySecret
+ description: Secret based configuration of the OpenIdConnect authentication policy.
+ required: [ oidc ]
+ oauth2AuthenticationProperties:
+ type: object
+ title: OAuth2AutenthicationData
+ description: Inline configuration of the OAuth2 authentication policy.
+ properties:
+ authority:
+ $ref: '#/$defs/uriTemplate'
+ title: OAuth2AutenthicationDataAuthority
+ description: The URI that references the OAuth2 authority to use.
+ grant:
+ type: string
+ enum: [ authorization_code, client_credentials, password, refresh_token, 'urn:ietf:params:oauth:grant-type:token-exchange']
+ title: OAuth2AutenthicationDataGrant
+ description: The grant type to use.
+ client:
+ type: object
+ title: OAuth2AutenthicationDataClient
+ description: The definition of an OAuth2 client.
+ unevaluatedProperties: false
+ properties:
+ id:
+ type: string
+ title: ClientId
+ description: The client id to use.
+ secret:
+ type: string
+ title: ClientSecret
+ description: The client secret to use, if any.
+ assertion:
+ type: string
+ title: ClientAssertion
+ description: A JWT containing a signed assertion with your application credentials.
+ authentication:
+ type: string
+ enum: [ client_secret_basic, client_secret_post, client_secret_jwt, private_key_jwt, none ]
+ default: client_secret_post
+ title: ClientAuthentication
+ description: The authentication method to use to authenticate the client.
+ request:
+ type: object
+ title: OAuth2TokenRequest
+ description: The configuration of an OAuth2 token request
+ properties:
+ encoding:
+ type: string
+ enum: [ 'application/x-www-form-urlencoded', 'application/json' ]
+ default: 'application/x-www-form-urlencoded'
+ title: Oauth2TokenRequestEncoding
+ issuers:
+ type: array
+ title: OAuth2Issuers
+ description: A list that contains that contains valid issuers that will be used to check against the issuer of generated tokens.
+ items:
+ type: string
+ scopes:
+ type: array
+ title: OAuth2AutenthicationDataScopes
+ description: The scopes, if any, to request the token for.
+ items:
+ type: string
+ audiences:
+ type: array
+ title: OAuth2AutenthicationDataAudiences
+ description: The audiences, if any, to request the token for.
+ items:
+ type: string
+ username:
+ type: string
+ title: OAuth2AutenthicationDataUsername
+ description: The username to use. Used only if the grant type is Password.
+ password:
+ type: string
+ title: OAuth2AutenthicationDataPassword
+ description: The password to use. Used only if the grant type is Password.
+ subject:
+ $ref: '#/$defs/oauth2Token'
+ title: OAuth2AutenthicationDataSubject
+ description: The security token that represents the identity of the party on behalf of whom the request is being made.
+ actor:
+ $ref: '#/$defs/oauth2Token'
+ title: OAuth2AutenthicationDataActor
+ description: The security token that represents the identity of the acting party.
+ oauth2Token:
+ type: object
+ title: OAuth2TokenDefinition
+ description: Represents an OAuth2 token.
+ unevaluatedProperties: false
+ properties:
+ token:
+ type: string
+ title: OAuth2Token
+ description: The security token to use.
+ type:
+ type: string
+ title: OAuth2TokenType
+ description: The type of the security token to use.
+ required: [ token, type ]
+ duration:
+ oneOf:
+ - type: object
+ minProperties: 1
+ unevaluatedProperties: false
+ properties:
+ days:
+ type: integer
+ title: DurationDays
+ description: Number of days, if any.
+ hours:
+ type: integer
+ title: DurationHours
+ description: Number of days, if any.
+ minutes:
+ type: integer
+ title: DurationMinutes
+ description: Number of minutes, if any.
+ seconds:
+ type: integer
+ title: DurationSeconds
+ description: Number of seconds, if any.
+ milliseconds:
+ type: integer
+ title: DurationMilliseconds
+ description: Number of milliseconds, if any.
+ title: DurationInline
+ description: The inline definition of a duration.
+ - type: string
+ pattern: '^P(?!$)(\d+(?:\.\d+)?Y)?(\d+(?:\.\d+)?M)?(\d+(?:\.\d+)?W)?(\d+(?:\.\d+)?D)?(T(?=\d)(\d+(?:\.\d+)?H)?(\d+(?:\.\d+)?M)?(\d+(?:\.\d+)?S)?)?$'
+ title: DurationExpression
+ description: The ISO 8601 expression of a duration.
+ error:
+ type: object
+ title: Error
+ description: Represents an error.
+ unevaluatedProperties: false
+ properties:
+ type:
+ title: ErrorType
+ description: A URI reference that identifies the error type.
+ oneOf:
+ - title: LiteralErrorType
+ $ref: '#/$defs/uriTemplate'
+ description: The literal error type.
+ - title: ExpressionErrorType
+ $ref: '#/$defs/runtimeExpression'
+ description: An expression based error type.
+ status:
+ type: integer
+ title: ErrorStatus
+ description: The status code generated by the origin for this occurrence of the error.
+ instance:
+ title: ErrorInstance
+ description: A JSON Pointer used to reference the component the error originates from.
+ oneOf:
+ - title: LiteralErrorInstance
+ description: The literal error instance.
+ type: string
+ format: json-pointer
+ - $ref: '#/$defs/runtimeExpression'
+ title: ExpressionErrorInstance
+ description: An expression based error instance.
+ title:
+ type: string
+ title: ErrorTitle
+ description: A short, human-readable summary of the error.
+ detail:
+ type: string
+ title: ErrorDetails
+ description: A human-readable explanation specific to this occurrence of the error.
+ required: [ type, status ]
+ uriTemplate:
+ title: UriTemplate
+ anyOf:
+ - title: LiteralUriTemplate
+ type: string
+ format: uri-template
+ pattern: "^[A-Za-z][A-Za-z0-9+\\-.]*://.*"
+ - title: LiteralUri
+ type: string
+ format: uri
+ pattern: "^[A-Za-z][A-Za-z0-9+\\-.]*://.*"
+ endpoint:
+ title: Endpoint
+ description: Represents an endpoint.
+ oneOf:
+ - $ref: '#/$defs/runtimeExpression'
+ - $ref: '#/$defs/uriTemplate'
+ - title: EndpointConfiguration
+ type: object
+ unevaluatedProperties: false
+ properties:
+ uri:
+ title: EndpointUri
+ description: The endpoint's URI.
+ oneOf:
+ - title: LiteralEndpointURI
+ description: The literal endpoint's URI.
+ $ref: '#/$defs/uriTemplate'
+ - title: ExpressionEndpointURI
+ $ref: '#/$defs/runtimeExpression'
+ description: An expression based endpoint's URI.
+ authentication:
+ $ref: '#/$defs/referenceableAuthenticationPolicy'
+ title: EndpointAuthentication
+ description: The authentication policy to use.
+ required: [ uri ]
+ eventProperties:
+ type: object
+ title: EventProperties
+ description: Describes the properties of an event.
+ properties:
+ id:
+ type: string
+ title: EventId
+ description: The event's unique identifier.
+ source:
+ title: EventSource
+ description: Identifies the context in which an event happened.
+ oneOf:
+ - $ref: '#/$defs/uriTemplate'
+ - $ref: '#/$defs/runtimeExpression'
+ type:
+ type: string
+ title: EventType
+ description: This attribute contains a value describing the type of event related to the originating occurrence.
+ time:
+ title: EventTime
+ description: When the event occured.
+ oneOf:
+ - title: LiteralTime
+ type: string
+ format: date-time
+ - $ref: '#/$defs/runtimeExpression'
+ subject:
+ type: string
+ title: EventSubject
+ description: The subject of the event.
+ datacontenttype:
+ type: string
+ title: EventDataContentType
+ description: Content type of data value. This attribute enables data to carry any type of content, whereby format and encoding might differ from that of the chosen event format.
+ dataschema:
+ title: EventDataschema
+ description: The schema describing the event format.
+ oneOf:
+ - title: LiteralDataSchema
+ $ref: '#/$defs/uriTemplate'
+ description: The literal event data schema.
+ - title: ExpressionDataSchema
+ $ref: '#/$defs/runtimeExpression'
+ description: An expression based event data schema.
+ additionalProperties: true
+ eventConsumptionStrategy:
+ type: object
+ title: EventConsumptionStrategy
+ description: Describe the event consumption strategy to adopt.
+ unevaluatedProperties: false
+ oneOf:
+ - title: AllEventConsumptionStrategy
+ properties:
+ all:
+ type: array
+ title: AllEventConsumptionStrategyConfiguration
+ description: A list containing all the events that must be consumed.
+ items:
+ $ref: '#/$defs/eventFilter'
+ required: [ all ]
+ - title: AnyEventConsumptionStrategy
+ properties:
+ any:
+ type: array
+ title: AnyEventConsumptionStrategyConfiguration
+ description: A list containing any of the events to consume.
+ items:
+ $ref: '#/$defs/eventFilter'
+ required: [ any ]
+ - title: OneEventConsumptionStrategy
+ properties:
+ one:
+ $ref: '#/$defs/eventFilter'
+ title: OneEventConsumptionStrategyConfiguration
+ description: The single event to consume.
+ required: [ one ]
+ eventFilter:
+ type: object
+ title: EventFilter
+ description: An event filter is a mechanism used to selectively process or handle events based on predefined criteria, such as event type, source, or specific attributes.
+ unevaluatedProperties: false
+ properties:
+ with:
+ $ref: '#/$defs/eventProperties'
+ minProperties: 1
+ title: WithEvent
+ description: An event filter is a mechanism used to selectively process or handle events based on predefined criteria, such as event type, source, or specific attributes.
+ correlate:
+ type: object
+ title: EventFilterCorrelate
+ description: A correlation is a link between events and data, established by mapping event attributes to specific data attributes, allowing for coordinated processing or handling based on event characteristics.
+ additionalProperties:
+ type: object
+ properties:
+ from:
+ type: string
+ title: CorrelateFrom
+ description: A runtime expression used to extract the correlation value from the filtered event.
+ expect:
+ type: string
+ title: CorrelateExpect
+ description: A constant or a runtime expression, if any, used to determine whether or not the extracted correlation value matches expectations. If not set, the first extracted value will be used as the correlation's expectation.
+ required: [ from ]
+ required: [ with ]
+ extension:
+ type: object
+ title: Extension
+ description: The definition of an extension.
+ unevaluatedProperties: false
+ properties:
+ extend:
+ type: string
+ enum: [ call, composite, emit, for, listen, raise, run, set, switch, try, wait, all ]
+ title: ExtensionTarget
+ description: The type of task to extend.
+ when:
+ type: string
+ title: ExtensionCondition
+ description: A runtime expression, if any, used to determine whether or not the extension should apply in the specified context.
+ before:
+ $ref: '#/$defs/taskList'
+ title: ExtensionDoBefore
+ description: The task(s) to execute before the extended task, if any.
+ after:
+ $ref: '#/$defs/taskList'
+ title: ExtensionDoAfter
+ description: The task(s) to execute after the extended task, if any.
+ required: [ extend ]
+ externalResource:
+ type: object
+ title: ExternalResource
+ description: Represents an external resource.
+ unevaluatedProperties: false
+ properties:
+ name:
+ type: string
+ title: ExternalResourceName
+ description: The name of the external resource, if any.
+ endpoint:
+ $ref: '#/$defs/endpoint'
+ title: ExternalResourceEndpoint
+ description: The endpoint of the external resource.
+ required: [ endpoint ]
+ input:
+ type: object
+ title: Input
+ description: Configures the input of a workflow or task.
+ unevaluatedProperties: false
+ properties:
+ schema:
+ $ref: '#/$defs/schema'
+ title: InputSchema
+ description: The schema used to describe and validate the input of the workflow or task.
+ from:
+ title: InputFrom
+ description: A runtime expression, if any, used to mutate and/or filter the input of the workflow or task.
+ oneOf:
+ - type: string
+ - type: object
+ output:
+ type: object
+ title: Output
+ description: Configures the output of a workflow or task.
+ unevaluatedProperties: false
+ properties:
+ schema:
+ $ref: '#/$defs/schema'
+ title: OutputSchema
+ description: The schema used to describe and validate the output of the workflow or task.
+ as:
+ title: OutputAs
+ description: A runtime expression, if any, used to mutate and/or filter the output of the workflow or task.
+ oneOf:
+ - type: string
+ - type: object
+ export:
+ type: object
+ title: Export
+ description: Set the content of the context. .
+ unevaluatedProperties: false
+ properties:
+ schema:
+ $ref: '#/$defs/schema'
+ title: ExportSchema
+ description: The schema used to describe and validate the workflow context.
+ as:
+ title: ExportAs
+ description: A runtime expression, if any, used to export the output data to the context.
+ oneOf:
+ - type: string
+ - type: object
+ retryPolicy:
+ type: object
+ title: RetryPolicy
+ description: Defines a retry policy.
+ unevaluatedProperties: false
+ properties:
+ when:
+ type: string
+ title: RetryWhen
+ description: A runtime expression, if any, used to determine whether or not to retry running the task, in a given context.
+ exceptWhen:
+ type: string
+ title: RetryExcepWhen
+ description: A runtime expression used to determine whether or not to retry running the task, in a given context.
+ delay:
+ $ref: '#/$defs/duration'
+ title: RetryDelay
+ description: The duration to wait between retry attempts.
+ backoff:
+ type: object
+ title: RetryBackoff
+ description: The retry duration backoff.
+ unevaluatedProperties: false
+ oneOf:
+ - title: ConstantBackoff
+ properties:
+ constant:
+ type: object
+ description: The definition of the constant backoff to use, if any.
+ required: [ constant ]
+ - title: ExponentialBackOff
+ properties:
+ exponential:
+ type: object
+ description: The definition of the exponential backoff to use, if any.
+ required: [ exponential ]
+ - title: LinearBackoff
+ properties:
+ linear:
+ type: object
+ description: The definition of the linear backoff to use, if any.
+ required: [ linear ]
+ limit:
+ type: object
+ title: RetryLimit
+ unevaluatedProperties: false
+ properties:
+ attempt:
+ type: object
+ title: RetryLimitAttempt
+ unevaluatedProperties: false
+ properties:
+ count:
+ type: integer
+ title: RetryLimitAttemptCount
+ description: The maximum amount of retry attempts, if any.
+ duration:
+ $ref: '#/$defs/duration'
+ title: RetryLimitAttemptDuration
+ description: The maximum duration for each retry attempt.
+ duration:
+ $ref: '#/$defs/duration'
+ title: RetryLimitDuration
+ description: The duration limit, if any, for all retry attempts.
+ description: The retry limit, if any.
+ jitter:
+ type: object
+ title: RetryPolicyJitter
+ description: The parameters, if any, that control the randomness or variability of the delay between retry attempts.
+ unevaluatedProperties: false
+ properties:
+ from:
+ $ref: '#/$defs/duration'
+ title: RetryPolicyJitterFrom
+ description: The minimum duration of the jitter range.
+ to:
+ $ref: '#/$defs/duration'
+ title: RetryPolicyJitterTo
+ description: The maximum duration of the jitter range.
+ required: [ from, to ]
+ schema:
+ type: object
+ title: Schema
+ description: Represents the definition of a schema.
+ unevaluatedProperties: false
+ properties:
+ format:
+ type: string
+ default: json
+ title: SchemaFormat
+ description: The schema's format. Defaults to 'json'. The (optional) version of the format can be set using `{format}:{version}`.
+ oneOf:
+ - title: SchemaInline
+ properties:
+ document:
+ description: The schema's inline definition.
+ required: [ document ]
+ - title: SchemaExternal
+ properties:
+ resource:
+ $ref: '#/$defs/externalResource'
+ title: SchemaExternalResource
+ description: The schema's external resource.
+ required: [ resource ]
+ timeout:
+ type: object
+ title: Timeout
+ description: The definition of a timeout.
+ unevaluatedProperties: false
+ properties:
+ after:
+ $ref: '#/$defs/duration'
+ title: TimeoutAfter
+ description: The duration after which to timeout.
+ required: [ after ]
+ catalog:
+ type: object
+ title: Catalog
+ description: The definition of a resource catalog
+ unevaluatedProperties: false
+ properties:
+ endpoint:
+ $ref: '#/$defs/endpoint'
+ title: CatalogEndpoint
+ description: The root URL where the catalog is hosted
+ required: [ endpoint ]
+ runtimeExpression:
+ type: string
+ title: RuntimeExpression
+ description: A runtime expression.
+ pattern: "^\\s*\\$\\{.+\\}\\s*$"
\ No newline at end of file
diff --git a/public/schemas/1.0.0/workflow.json b/public/schemas/1.0.0/workflow.json
new file mode 100644
index 0000000..67e8be4
--- /dev/null
+++ b/public/schemas/1.0.0/workflow.json
@@ -0,0 +1,2694 @@
+{
+ "$id": "https://open-workflow-specification.org/schemas/1.0.0/workflow.json",
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
+ "description": "Open Workflow Specification DSL - Workflow Schema.",
+ "type": "object",
+ "required": [
+ "document",
+ "do"
+ ],
+ "properties": {
+ "document": {
+ "type": "object",
+ "title": "Document",
+ "description": "Documents the workflow.",
+ "unevaluatedProperties": false,
+ "properties": {
+ "dsl": {
+ "type": "string",
+ "pattern": "^(0|[1-9]\\d*)\\.(0|[1-9]\\d*)\\.(0|[1-9]\\d*)(?:-((?:0|[1-9]\\d*|\\d*[a-zA-Z-][0-9a-zA-Z-]*)(?:\\.(?:0|[1-9]\\d*|\\d*[a-zA-Z-][0-9a-zA-Z-]*))*))?(?:\\+([0-9a-zA-Z-]+(?:\\.[0-9a-zA-Z-]+)*))?$",
+ "title": "WorkflowDSL",
+ "description": "The version of the DSL used by the workflow."
+ },
+ "namespace": {
+ "type": "string",
+ "pattern": "^[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?$",
+ "title": "WorkflowNamespace",
+ "description": "The workflow's namespace."
+ },
+ "name": {
+ "type": "string",
+ "pattern": "^[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?$",
+ "title": "WorkflowName",
+ "description": "The workflow's name."
+ },
+ "version": {
+ "type": "string",
+ "pattern": "^(0|[1-9]\\d*)\\.(0|[1-9]\\d*)\\.(0|[1-9]\\d*)(?:-((?:0|[1-9]\\d*|\\d*[a-zA-Z-][0-9a-zA-Z-]*)(?:\\.(?:0|[1-9]\\d*|\\d*[a-zA-Z-][0-9a-zA-Z-]*))*))?(?:\\+([0-9a-zA-Z-]+(?:\\.[0-9a-zA-Z-]+)*))?$",
+ "title": "WorkflowVersion",
+ "description": "The workflow's semantic version."
+ },
+ "title": {
+ "type": "string",
+ "title": "WorkflowTitle",
+ "description": "The workflow's title."
+ },
+ "summary": {
+ "type": "string",
+ "title": "WorkflowSummary",
+ "description": "The workflow's Markdown summary."
+ },
+ "tags": {
+ "type": "object",
+ "title": "WorkflowTags",
+ "description": "A key/value mapping of the workflow's tags, if any.",
+ "additionalProperties": true
+ },
+ "metadata": {
+ "type": "object",
+ "title": "WorkflowMetadata",
+ "description": "Holds additional information about the workflow.",
+ "additionalProperties": true
+ }
+ },
+ "required": [
+ "dsl",
+ "namespace",
+ "name",
+ "version"
+ ]
+ },
+ "input": {
+ "$ref": "#/$defs/input",
+ "title": "Input",
+ "description": "Configures the workflow's input."
+ },
+ "use": {
+ "type": "object",
+ "title": "Use",
+ "description": "Defines the workflow's reusable components.",
+ "unevaluatedProperties": false,
+ "properties": {
+ "authentications": {
+ "type": "object",
+ "title": "UseAuthentications",
+ "description": "The workflow's reusable authentication policies.",
+ "additionalProperties": {
+ "$ref": "#/$defs/authenticationPolicy"
+ }
+ },
+ "errors": {
+ "type": "object",
+ "title": "UseErrors",
+ "description": "The workflow's reusable errors.",
+ "additionalProperties": {
+ "$ref": "#/$defs/error"
+ }
+ },
+ "extensions": {
+ "type": "array",
+ "title": "UseExtensions",
+ "description": "The workflow's extensions.",
+ "items": {
+ "type": "object",
+ "title": "ExtensionItem",
+ "minProperties": 1,
+ "maxProperties": 1,
+ "additionalProperties": {
+ "$ref": "#/$defs/extension"
+ }
+ }
+ },
+ "functions": {
+ "type": "object",
+ "title": "UseFunctions",
+ "description": "The workflow's reusable functions.",
+ "additionalProperties": {
+ "$ref": "#/$defs/task"
+ }
+ },
+ "retries": {
+ "type": "object",
+ "title": "UseRetries",
+ "description": "The workflow's reusable retry policies.",
+ "additionalProperties": {
+ "$ref": "#/$defs/retryPolicy"
+ }
+ },
+ "secrets": {
+ "type": "array",
+ "title": "UseSecrets",
+ "description": "The workflow's reusable secrets.",
+ "items": {
+ "type": "string",
+ "description": "The workflow's secrets."
+ }
+ },
+ "timeouts": {
+ "type": "object",
+ "title": "UseTimeouts",
+ "description": "The workflow's reusable timeouts.",
+ "additionalProperties": {
+ "$ref": "#/$defs/timeout"
+ }
+ },
+ "catalogs": {
+ "type": "object",
+ "title": "UseCatalogs",
+ "description": "The workflow's reusable catalogs.",
+ "additionalProperties": {
+ "$ref": "#/$defs/catalog"
+ }
+ }
+ }
+ },
+ "do": {
+ "$ref": "#/$defs/taskList",
+ "title": "Do",
+ "description": "Defines the task(s) the workflow must perform."
+ },
+ "timeout": {
+ "title": "DoTimeout",
+ "oneOf": [
+ {
+ "$ref": "#/$defs/timeout",
+ "title": "TimeoutDefinition",
+ "description": "The workflow's timeout configuration, if any."
+ },
+ {
+ "type": "string",
+ "title": "TimeoutReference",
+ "description": "The name of the workflow's timeout, if any."
+ }
+ ]
+ },
+ "output": {
+ "$ref": "#/$defs/output",
+ "title": "Output",
+ "description": "Configures the workflow's output."
+ },
+ "schedule": {
+ "type": "object",
+ "title": "Schedule",
+ "description": "Schedules the workflow.",
+ "unevaluatedProperties": false,
+ "properties": {
+ "every": {
+ "$ref": "#/$defs/duration",
+ "title": "ScheduleEvery",
+ "description": "Specifies the duration of the interval at which the workflow should be executed."
+ },
+ "cron": {
+ "type": "string",
+ "title": "ScheduleCron",
+ "description": "Specifies the schedule using a cron expression, e.g., '0 0 * * *' for daily at midnight."
+ },
+ "after": {
+ "$ref": "#/$defs/duration",
+ "title": "ScheduleAfter",
+ "description": "Specifies a delay duration that the workflow must wait before starting again after it completes."
+ },
+ "on": {
+ "$ref": "#/$defs/eventConsumptionStrategy",
+ "title": "ScheduleOn",
+ "description": "Specifies the events that trigger the workflow execution."
+ }
+ }
+ }
+ },
+ "$defs": {
+ "taskList": {
+ "title": "TaskList",
+ "description": "List of named tasks to perform.",
+ "type": "array",
+ "items": {
+ "type": "object",
+ "title": "TaskItem",
+ "minProperties": 1,
+ "maxProperties": 1,
+ "additionalProperties": {
+ "$ref": "#/$defs/task"
+ }
+ }
+ },
+ "taskBase": {
+ "type": "object",
+ "title": "TaskBase",
+ "description": "An object inherited by all tasks.",
+ "properties": {
+ "if": {
+ "type": "string",
+ "title": "TaskBaseIf",
+ "description": "A runtime expression, if any, used to determine whether or not the task should be run."
+ },
+ "input": {
+ "$ref": "#/$defs/input",
+ "title": "TaskBaseInput",
+ "description": "Configure the task's input."
+ },
+ "output": {
+ "$ref": "#/$defs/output",
+ "title": "TaskBaseOutput",
+ "description": "Configure the task's output."
+ },
+ "export": {
+ "$ref": "#/$defs/export",
+ "title": "TaskBaseExport",
+ "description": "Export task output to context."
+ },
+ "timeout": {
+ "title": "TaskTimeout",
+ "oneOf": [
+ {
+ "$ref": "#/$defs/timeout",
+ "title": "TaskTimeoutDefinition",
+ "description": "The task's timeout configuration, if any."
+ },
+ {
+ "type": "string",
+ "title": "TaskTimeoutReference",
+ "description": "The name of the task's timeout, if any."
+ }
+ ]
+ },
+ "then": {
+ "$ref": "#/$defs/flowDirective",
+ "title": "TaskBaseThen",
+ "description": "The flow directive to be performed upon completion of the task."
+ },
+ "metadata": {
+ "type": "object",
+ "title": "TaskMetadata",
+ "description": "Holds additional information about the task.",
+ "additionalProperties": true
+ }
+ }
+ },
+ "task": {
+ "title": "Task",
+ "description": "A discrete unit of work that contributes to achieving the overall objectives defined by the workflow.",
+ "unevaluatedProperties": false,
+ "oneOf": [
+ {
+ "$ref": "#/$defs/callTask"
+ },
+ {
+ "$ref": "#/$defs/doTask"
+ },
+ {
+ "$ref": "#/$defs/forkTask"
+ },
+ {
+ "$ref": "#/$defs/emitTask"
+ },
+ {
+ "$ref": "#/$defs/forTask"
+ },
+ {
+ "$ref": "#/$defs/listenTask"
+ },
+ {
+ "$ref": "#/$defs/raiseTask"
+ },
+ {
+ "$ref": "#/$defs/runTask"
+ },
+ {
+ "$ref": "#/$defs/setTask"
+ },
+ {
+ "$ref": "#/$defs/switchTask"
+ },
+ {
+ "$ref": "#/$defs/tryTask"
+ },
+ {
+ "$ref": "#/$defs/waitTask"
+ }
+ ]
+ },
+ "callTask": {
+ "title": "CallTask",
+ "description": "Defines the call to perform.",
+ "oneOf": [
+ {
+ "title": "CallAsyncAPI",
+ "description": "Defines the AsyncAPI call to perform.",
+ "$ref": "#/$defs/taskBase",
+ "type": "object",
+ "required": [
+ "call",
+ "with"
+ ],
+ "unevaluatedProperties": false,
+ "properties": {
+ "call": {
+ "type": "string",
+ "const": "asyncapi"
+ },
+ "with": {
+ "type": "object",
+ "title": "AsyncApiArguments",
+ "description": "The Async API call arguments.",
+ "properties": {
+ "document": {
+ "$ref": "#/$defs/externalResource",
+ "title": "AsyncAPIDocument",
+ "description": "The document that defines the AsyncAPI operation to call."
+ },
+ "channel": {
+ "type": "string",
+ "title": "With",
+ "description": "The name of the channel on which to perform the operation. Used only in case the referenced document uses AsyncAPI v2.6.0."
+ },
+ "operation": {
+ "type": "string",
+ "title": "AsyncAPIOperation",
+ "description": "A reference to the AsyncAPI operation to call."
+ },
+ "server": {
+ "$ref": "#/$defs/asyncApiServer",
+ "title": "AsyncAPIServer",
+ "description": "An object used to configure to the server to call the specified AsyncAPI operation on."
+ },
+ "protocol": {
+ "type": "string",
+ "title": "AsyncApiProtocol",
+ "description": "The protocol to use to select the target server.",
+ "enum": [
+ "amqp",
+ "amqp1",
+ "anypointmq",
+ "googlepubsub",
+ "http",
+ "ibmmq",
+ "jms",
+ "kafka",
+ "mercure",
+ "mqtt",
+ "mqtt5",
+ "nats",
+ "pulsar",
+ "redis",
+ "sns",
+ "solace",
+ "sqs",
+ "stomp",
+ "ws"
+ ]
+ },
+ "message": {
+ "$ref": "#/$defs/asyncApiOutboundMessage",
+ "title": "AsyncApiMessage",
+ "description": "An object used to configure the message to publish using the target operation."
+ },
+ "subscription": {
+ "$ref": "#/$defs/asyncApiSubscription",
+ "title": "AsyncApiSubscription",
+ "description": "An object used to configure the subscription to messages consumed using the target operation."
+ },
+ "authentication": {
+ "$ref": "#/$defs/referenceableAuthenticationPolicy",
+ "title": "AsyncAPIAuthentication",
+ "description": "The authentication policy, if any, to use when calling the AsyncAPI operation."
+ }
+ },
+ "oneOf": [
+ {
+ "required": [
+ "document",
+ "operation",
+ "message"
+ ]
+ },
+ {
+ "required": [
+ "document",
+ "operation",
+ "subscription"
+ ]
+ },
+ {
+ "required": [
+ "document",
+ "channel",
+ "message"
+ ]
+ },
+ {
+ "required": [
+ "document",
+ "channel",
+ "subscription"
+ ]
+ }
+ ],
+ "unevaluatedProperties": false
+ }
+ }
+ },
+ {
+ "title": "CallGRPC",
+ "description": "Defines the GRPC call to perform.",
+ "$ref": "#/$defs/taskBase",
+ "type": "object",
+ "unevaluatedProperties": false,
+ "required": [
+ "call",
+ "with"
+ ],
+ "properties": {
+ "call": {
+ "type": "string",
+ "const": "grpc"
+ },
+ "with": {
+ "type": "object",
+ "title": "GRPCArguments",
+ "description": "The GRPC call arguments.",
+ "properties": {
+ "proto": {
+ "$ref": "#/$defs/externalResource",
+ "title": "WithGRPCProto",
+ "description": "The proto resource that describes the GRPC service to call."
+ },
+ "service": {
+ "type": "object",
+ "title": "WithGRPCService",
+ "unevaluatedProperties": false,
+ "properties": {
+ "name": {
+ "type": "string",
+ "title": "WithGRPCServiceName",
+ "description": "The name of the GRPC service to call."
+ },
+ "host": {
+ "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])?$"
+ },
+ "port": {
+ "type": "integer",
+ "title": "WithGRPCServicePost",
+ "description": "The port number of the GRPC service to call.",
+ "minimum": 0,
+ "maximum": 65535
+ },
+ "authentication": {
+ "$ref": "#/$defs/referenceableAuthenticationPolicy",
+ "title": "WithGRPCServiceAuthentication",
+ "description": "The endpoint's authentication policy, if any."
+ }
+ },
+ "required": [
+ "name",
+ "host"
+ ]
+ },
+ "method": {
+ "type": "string",
+ "title": "WithGRPCMethod",
+ "description": "The name of the method to call on the defined GRPC service."
+ },
+ "arguments": {
+ "type": "object",
+ "title": "WithGRPCArguments",
+ "description": "The arguments, if any, to call the method with.",
+ "additionalProperties": true
+ }
+ },
+ "required": [
+ "proto",
+ "service",
+ "method"
+ ],
+ "unevaluatedProperties": false
+ }
+ }
+ },
+ {
+ "title": "CallHTTP",
+ "description": "Defines the HTTP call to perform.",
+ "$ref": "#/$defs/taskBase",
+ "type": "object",
+ "unevaluatedProperties": false,
+ "required": [
+ "call",
+ "with"
+ ],
+ "properties": {
+ "call": {
+ "type": "string",
+ "const": "http"
+ },
+ "with": {
+ "type": "object",
+ "title": "HTTPArguments",
+ "description": "The HTTP call arguments.",
+ "properties": {
+ "method": {
+ "type": "string",
+ "title": "HTTPMethod",
+ "description": "The HTTP method of the HTTP request to perform."
+ },
+ "endpoint": {
+ "title": "HTTPEndpoint",
+ "description": "The HTTP endpoint to send the request to.",
+ "$ref": "#/$defs/endpoint"
+ },
+ "headers": {
+ "type": "object",
+ "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",
+ "title": "HTTPQuery",
+ "description": "A name/value mapping of the query parameters, if any, of the HTTP request to perform.",
+ "additionalProperties": true
+ },
+ "output": {
+ "type": "string",
+ "title": "HTTPOutput",
+ "description": "The http call output format. Defaults to 'content'.",
+ "enum": [
+ "raw",
+ "content",
+ "response"
+ ]
+ },
+ "redirect": {
+ "type": "boolean",
+ "title": "HttpRedirect",
+ "description": "Specifies whether redirection status codes (`300–399`) should be treated as errors."
+ }
+ },
+ "required": [
+ "method",
+ "endpoint"
+ ],
+ "unevaluatedProperties": false
+ }
+ }
+ },
+ {
+ "title": "CallOpenAPI",
+ "description": "Defines the OpenAPI call to perform.",
+ "$ref": "#/$defs/taskBase",
+ "type": "object",
+ "unevaluatedProperties": false,
+ "required": [
+ "call",
+ "with"
+ ],
+ "properties": {
+ "call": {
+ "type": "string",
+ "const": "openapi"
+ },
+ "with": {
+ "type": "object",
+ "title": "OpenAPIArguments",
+ "description": "The OpenAPI call arguments.",
+ "properties": {
+ "document": {
+ "$ref": "#/$defs/externalResource",
+ "title": "WithOpenAPIDocument",
+ "description": "The document that defines the OpenAPI operation to call."
+ },
+ "operationId": {
+ "type": "string",
+ "title": "WithOpenAPIOperation",
+ "description": "The id of the OpenAPI operation to call."
+ },
+ "parameters": {
+ "type": "object",
+ "title": "WithOpenAPIParameters",
+ "description": "A name/value mapping of the parameters of the OpenAPI operation to call.",
+ "additionalProperties": true
+ },
+ "authentication": {
+ "$ref": "#/$defs/referenceableAuthenticationPolicy",
+ "title": "WithOpenAPIAuthentication",
+ "description": "The authentication policy, if any, to use when calling the OpenAPI operation."
+ },
+ "output": {
+ "type": "string",
+ "enum": [
+ "raw",
+ "content",
+ "response"
+ ],
+ "title": "WithOpenAPIOutput",
+ "description": "The http call output format. Defaults to 'content'."
+ },
+ "redirect": {
+ "type": "boolean",
+ "title": "HttpRedirect",
+ "description": "Specifies whether redirection status codes (`300–399`) should be treated as errors."
+ }
+ },
+ "required": [
+ "document",
+ "operationId"
+ ],
+ "unevaluatedProperties": false
+ }
+ }
+ },
+ {
+ "title": "CallFunction",
+ "description": "Defines the function call to perform.",
+ "$ref": "#/$defs/taskBase",
+ "type": "object",
+ "unevaluatedProperties": false,
+ "required": [
+ "call"
+ ],
+ "properties": {
+ "call": {
+ "type": "string",
+ "not": {
+ "enum": [
+ "asyncapi",
+ "grpc",
+ "http",
+ "openapi"
+ ]
+ },
+ "description": "The name of the function to call."
+ },
+ "with": {
+ "type": "object",
+ "title": "FunctionArguments",
+ "description": "A name/value mapping of the parameters, if any, to call the function with.",
+ "additionalProperties": true
+ }
+ }
+ }
+ ]
+ },
+ "forkTask": {
+ "type": "object",
+ "$ref": "#/$defs/taskBase",
+ "title": "ForkTask",
+ "description": "Allows workflows to execute multiple tasks concurrently and optionally race them against each other, with a single possible winner, which sets the task's output.",
+ "unevaluatedProperties": false,
+ "required": [
+ "fork"
+ ],
+ "properties": {
+ "fork": {
+ "type": "object",
+ "title": "ForkTaskConfiguration",
+ "description": "The configuration of the branches to perform concurrently.",
+ "unevaluatedProperties": false,
+ "required": [
+ "branches"
+ ],
+ "properties": {
+ "branches": {
+ "$ref": "#/$defs/taskList",
+ "title": "ForkBranches"
+ },
+ "compete": {
+ "type": "boolean",
+ "title": "ForkCompete",
+ "description": "Indicates whether or not the concurrent tasks are racing against each other, with a single possible winner, which sets the composite task's output.",
+ "default": false
+ }
+ }
+ }
+ }
+ },
+ "doTask": {
+ "type": "object",
+ "$ref": "#/$defs/taskBase",
+ "title": "DoTask",
+ "description": "Allows to execute a list of tasks in sequence.",
+ "unevaluatedProperties": false,
+ "required": [
+ "do"
+ ],
+ "properties": {
+ "do": {
+ "$ref": "#/$defs/taskList",
+ "title": "DoTaskConfiguration",
+ "description": "The configuration of the tasks to perform sequentially."
+ }
+ }
+ },
+ "emitTask": {
+ "type": "object",
+ "$ref": "#/$defs/taskBase",
+ "title": "EmitTask",
+ "description": "Allows workflows to publish events to event brokers or messaging systems, facilitating communication and coordination between different components and services.",
+ "required": [
+ "emit"
+ ],
+ "unevaluatedProperties": false,
+ "properties": {
+ "emit": {
+ "type": "object",
+ "title": "EmitTaskConfiguration",
+ "description": "The configuration of an event's emission.",
+ "unevaluatedProperties": false,
+ "properties": {
+ "event": {
+ "type": "object",
+ "title": "EmitEventDefinition",
+ "description": "The definition of the event to emit.",
+ "properties": {
+ "with": {
+ "$ref": "#/$defs/eventProperties",
+ "title": "EmitEventWith",
+ "description": "Defines the properties of event to emit.",
+ "required": [
+ "source",
+ "type"
+ ]
+ }
+ },
+ "additionalProperties": true
+ }
+ },
+ "required": [
+ "event"
+ ]
+ }
+ }
+ },
+ "forTask": {
+ "type": "object",
+ "$ref": "#/$defs/taskBase",
+ "title": "ForTask",
+ "description": "Allows workflows to iterate over a collection of items, executing a defined set of subtasks for each item in the collection. This task type is instrumental in handling scenarios such as batch processing, data transformation, and repetitive operations across datasets.",
+ "required": [
+ "for",
+ "do"
+ ],
+ "unevaluatedProperties": false,
+ "properties": {
+ "for": {
+ "type": "object",
+ "title": "ForTaskConfiguration",
+ "description": "The definition of the loop that iterates over a range of values.",
+ "unevaluatedProperties": false,
+ "properties": {
+ "each": {
+ "type": "string",
+ "title": "ForEach",
+ "description": "The name of the variable used to store the current item being enumerated.",
+ "default": "item"
+ },
+ "in": {
+ "type": "string",
+ "title": "ForIn",
+ "description": "A runtime expression used to get the collection to enumerate."
+ },
+ "at": {
+ "type": "string",
+ "title": "ForAt",
+ "description": "The name of the variable used to store the index of the current item being enumerated.",
+ "default": "index"
+ }
+ },
+ "required": [
+ "in"
+ ]
+ },
+ "while": {
+ "type": "string",
+ "title": "While",
+ "description": "A runtime expression that represents the condition, if any, that must be met for the iteration to continue."
+ },
+ "do": {
+ "$ref": "#/$defs/taskList",
+ "title": "ForTaskDo"
+ }
+ }
+ },
+ "listenTask": {
+ "type": "object",
+ "$ref": "#/$defs/taskBase",
+ "title": "ListenTask",
+ "description": "Provides a mechanism for workflows to await and react to external events, enabling event-driven behavior within workflow systems.",
+ "required": [
+ "listen"
+ ],
+ "unevaluatedProperties": false,
+ "properties": {
+ "listen": {
+ "type": "object",
+ "title": "ListenTaskConfiguration",
+ "description": "The configuration of the listener to use.",
+ "unevaluatedProperties": false,
+ "properties": {
+ "to": {
+ "$ref": "#/$defs/eventConsumptionStrategy",
+ "title": "ListenTo",
+ "description": "Defines the event(s) to listen to."
+ },
+ "read": {
+ "type": "string",
+ "enum": [
+ "data",
+ "envelope",
+ "raw"
+ ],
+ "default": "data",
+ "title": "ListenAndReadAs",
+ "description": "Specifies how events are read during the listen operation."
+ }
+ },
+ "required": [
+ "to"
+ ]
+ },
+ "foreach": {
+ "$ref": "#/$defs/subscriptionIterator",
+ "title": "ListenIterator",
+ "description": "Configures the iterator, if any, for processing consumed event(s)."
+ }
+ }
+ },
+ "raiseTask": {
+ "type": "object",
+ "$ref": "#/$defs/taskBase",
+ "title": "RaiseTask",
+ "description": "Intentionally triggers and propagates errors.",
+ "required": [
+ "raise"
+ ],
+ "unevaluatedProperties": false,
+ "properties": {
+ "raise": {
+ "type": "object",
+ "title": "RaiseTaskConfiguration",
+ "description": "The definition of the error to raise.",
+ "unevaluatedProperties": false,
+ "properties": {
+ "error": {
+ "title": "RaiseTaskError",
+ "oneOf": [
+ {
+ "$ref": "#/$defs/error",
+ "title": "RaiseErrorDefinition",
+ "description": "Defines the error to raise."
+ },
+ {
+ "type": "string",
+ "title": "RaiseErrorReference",
+ "description": "The name of the error to raise"
+ }
+ ]
+ }
+ },
+ "required": [
+ "error"
+ ]
+ }
+ }
+ },
+ "runTask": {
+ "type": "object",
+ "$ref": "#/$defs/taskBase",
+ "title": "RunTask",
+ "description": "Provides the capability to execute external containers, shell commands, scripts, or workflows.",
+ "required": [
+ "run"
+ ],
+ "unevaluatedProperties": false,
+ "properties": {
+ "run": {
+ "type": "object",
+ "title": "RunTaskConfiguration",
+ "description": "The configuration of the process to execute.",
+ "unevaluatedProperties": false,
+ "properties": {
+ "await": {
+ "type": "boolean",
+ "default": true,
+ "title": "AwaitProcessCompletion",
+ "description": "Whether to await the process completion before continuing."
+ },
+ "return": {
+ "type": "string",
+ "title": "ProcessReturnType",
+ "description": "Configures the output of the process.",
+ "enum": [
+ "stdout",
+ "stderr",
+ "code",
+ "all",
+ "none"
+ ],
+ "default": "stdout"
+ }
+ },
+ "oneOf": [
+ {
+ "title": "RunContainer",
+ "description": "Enables the execution of external processes encapsulated within a containerized environment.",
+ "properties": {
+ "container": {
+ "type": "object",
+ "title": "Container",
+ "description": "The configuration of the container to run.",
+ "unevaluatedProperties": false,
+ "properties": {
+ "image": {
+ "type": "string",
+ "title": "ContainerImage",
+ "description": "The name of the container image to run."
+ },
+ "name": {
+ "type": "string",
+ "title": "ContainerName",
+ "description": "A runtime expression, if any, used to give specific name to the container."
+ },
+ "command": {
+ "type": "string",
+ "title": "ContainerCommand",
+ "description": "The command, if any, to execute on the container."
+ },
+ "ports": {
+ "type": "object",
+ "title": "ContainerPorts",
+ "description": "The container's port mappings, if any."
+ },
+ "volumes": {
+ "type": "object",
+ "title": "ContainerVolumes",
+ "description": "The container's volume mappings, if any."
+ },
+ "environment": {
+ "type": "object",
+ "title": "ContainerEnvironment",
+ "description": "A key/value mapping of the environment variables, if any, to use when running the configured process."
+ },
+ "lifetime": {
+ "$ref": "#/$defs/containerLifetime",
+ "title": "ContainerLifetime",
+ "description": "An object, if any, used to configure the container's lifetime"
+ }
+ },
+ "required": [
+ "image"
+ ]
+ }
+ },
+ "required": [
+ "container"
+ ]
+ },
+ {
+ "title": "RunScript",
+ "description": "Enables the execution of custom scripts or code within a workflow, empowering workflows to perform specialized logic, data processing, or integration tasks by executing user-defined scripts written in various programming languages.",
+ "properties": {
+ "script": {
+ "type": "object",
+ "title": "Script",
+ "description": "The configuration of the script to run.",
+ "unevaluatedProperties": false,
+ "properties": {
+ "language": {
+ "type": "string",
+ "title": "ScriptLanguage",
+ "description": "The language of the script to run."
+ },
+ "arguments": {
+ "type": "object",
+ "title": "ScriptArguments",
+ "description": "A key/value mapping of the arguments, if any, to use when running the configured script.",
+ "additionalProperties": true
+ },
+ "environment": {
+ "type": "object",
+ "title": "ScriptEnvironment",
+ "description": "A key/value mapping of the environment variables, if any, to use when running the configured script process.",
+ "additionalProperties": true
+ }
+ },
+ "oneOf": [
+ {
+ "title": "InlineScript",
+ "type": "object",
+ "description": "The script's code.",
+ "properties": {
+ "code": {
+ "type": "string",
+ "title": "InlineScriptCode"
+ }
+ },
+ "required": [
+ "code"
+ ]
+ },
+ {
+ "title": "ExternalScript",
+ "type": "object",
+ "description": "The script's resource.",
+ "properties": {
+ "source": {
+ "$ref": "#/$defs/externalResource",
+ "title": "ExternalScriptResource"
+ }
+ },
+ "required": [
+ "source"
+ ]
+ }
+ ],
+ "required": [
+ "language"
+ ]
+ }
+ },
+ "required": [
+ "script"
+ ]
+ },
+ {
+ "title": "RunShell",
+ "description": "Enables the execution of shell commands within a workflow, enabling workflows to interact with the underlying operating system and perform system-level operations, such as file manipulation, environment configuration, or system administration tasks.",
+ "properties": {
+ "shell": {
+ "type": "object",
+ "title": "Shell",
+ "description": "The configuration of the shell command to run.",
+ "unevaluatedProperties": false,
+ "properties": {
+ "command": {
+ "type": "string",
+ "title": "ShellCommand",
+ "description": "The shell command to run."
+ },
+ "arguments": {
+ "type": "object",
+ "title": "ShellArguments",
+ "description": "A list of the arguments of the shell command to run.",
+ "additionalProperties": true
+ },
+ "environment": {
+ "type": "object",
+ "title": "ShellEnvironment",
+ "description": "A key/value mapping of the environment variables, if any, to use when running the configured process.",
+ "additionalProperties": true
+ }
+ },
+ "required": [
+ "command"
+ ]
+ }
+ },
+ "required": [
+ "shell"
+ ]
+ },
+ {
+ "title": "RunWorkflow",
+ "description": "Enables the invocation and execution of nested workflows within a parent workflow, facilitating modularization, reusability, and abstraction of complex logic or business processes by encapsulating them into standalone workflow units.",
+ "properties": {
+ "workflow": {
+ "type": "object",
+ "title": "SubflowConfiguration",
+ "description": "The configuration of the workflow to run.",
+ "unevaluatedProperties": false,
+ "properties": {
+ "namespace": {
+ "type": "string",
+ "title": "SubflowNamespace",
+ "description": "The namespace the workflow to run belongs to."
+ },
+ "name": {
+ "type": "string",
+ "title": "SubflowName",
+ "description": "The name of the workflow to run."
+ },
+ "version": {
+ "type": "string",
+ "default": "latest",
+ "title": "SubflowVersion",
+ "description": "The version of the workflow to run. Defaults to latest."
+ },
+ "input": {
+ "type": "object",
+ "title": "SubflowInput",
+ "description": "The data, if any, to pass as input to the workflow to execute. The value should be validated against the target workflow's input schema, if specified.",
+ "additionalProperties": true
+ }
+ },
+ "required": [
+ "namespace",
+ "name",
+ "version"
+ ]
+ }
+ },
+ "required": [
+ "workflow"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ "setTask": {
+ "type": "object",
+ "$ref": "#/$defs/taskBase",
+ "title": "SetTask",
+ "description": "A task used to set data.",
+ "required": [
+ "set"
+ ],
+ "unevaluatedProperties": false,
+ "properties": {
+ "set": {
+ "type": "object",
+ "title": "SetTaskConfiguration",
+ "description": "The data to set.",
+ "minProperties": 1,
+ "additionalProperties": true
+ }
+ }
+ },
+ "switchTask": {
+ "type": "object",
+ "$ref": "#/$defs/taskBase",
+ "title": "SwitchTask",
+ "description": "Enables conditional branching within workflows, allowing them to dynamically select different paths based on specified conditions or criteria.",
+ "required": [
+ "switch"
+ ],
+ "unevaluatedProperties": false,
+ "properties": {
+ "switch": {
+ "type": "array",
+ "title": "SwitchTaskConfiguration",
+ "description": "The definition of the switch to use.",
+ "minItems": 1,
+ "items": {
+ "type": "object",
+ "title": "SwitchItem",
+ "minProperties": 1,
+ "maxProperties": 1,
+ "additionalProperties": {
+ "type": "object",
+ "title": "SwitchCase",
+ "description": "The definition of a case within a switch task, defining a condition and corresponding tasks to execute if the condition is met.",
+ "unevaluatedProperties": false,
+ "required": [
+ "then"
+ ],
+ "properties": {
+ "when": {
+ "type": "string",
+ "title": "SwitchCaseCondition",
+ "description": "A runtime expression used to determine whether or not the case matches."
+ },
+ "then": {
+ "$ref": "#/$defs/flowDirective",
+ "title": "SwitchCaseOutcome",
+ "description": "The flow directive to execute when the case matches."
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "tryTask": {
+ "type": "object",
+ "$ref": "#/$defs/taskBase",
+ "title": "TryTask",
+ "description": "Serves as a mechanism within workflows to handle errors gracefully, potentially retrying failed tasks before proceeding with alternate ones.",
+ "required": [
+ "try",
+ "catch"
+ ],
+ "unevaluatedProperties": false,
+ "properties": {
+ "try": {
+ "$ref": "#/$defs/taskList",
+ "title": "TryTaskConfiguration",
+ "description": "The task(s) to perform."
+ },
+ "catch": {
+ "type": "object",
+ "title": "TryTaskCatch",
+ "description": "The object used to define the errors to catch.",
+ "unevaluatedProperties": false,
+ "properties": {
+ "errors": {
+ "type": "object",
+ "title": "CatchErrors",
+ "properties": {
+ "with": {
+ "$ref": "#/$defs/errorFilter"
+ }
+ },
+ "description": "static error filter"
+ },
+ "as": {
+ "type": "string",
+ "title": "CatchAs",
+ "description": "The name of the runtime expression variable to save the error as. Defaults to 'error'."
+ },
+ "when": {
+ "type": "string",
+ "title": "CatchWhen",
+ "description": "A runtime expression used to determine whether to catch the filtered error."
+ },
+ "exceptWhen": {
+ "type": "string",
+ "title": "CatchExceptWhen",
+ "description": "A runtime expression used to determine whether not to catch the filtered error."
+ },
+ "retry": {
+ "oneOf": [
+ {
+ "$ref": "#/$defs/retryPolicy",
+ "title": "RetryPolicyDefinition",
+ "description": "The retry policy to use, if any, when catching errors."
+ },
+ {
+ "type": "string",
+ "title": "RetryPolicyReference",
+ "description": "The name of the retry policy to use, if any, when catching errors."
+ }
+ ]
+ },
+ "do": {
+ "$ref": "#/$defs/taskList",
+ "title": "TryTaskCatchDo",
+ "description": "The definition of the task(s) to run when catching an error."
+ }
+ }
+ }
+ }
+ },
+ "waitTask": {
+ "type": "object",
+ "$ref": "#/$defs/taskBase",
+ "title": "WaitTask",
+ "description": "Allows workflows to pause or delay their execution for a specified period of time.",
+ "required": [
+ "wait"
+ ],
+ "unevaluatedProperties": false,
+ "properties": {
+ "wait": {
+ "$ref": "#/$defs/duration",
+ "title": "WaitTaskConfiguration",
+ "description": "The amount of time to wait."
+ }
+ }
+ },
+ "flowDirective": {
+ "title": "FlowDirective",
+ "description": "Represents different transition options for a workflow.",
+ "anyOf": [
+ {
+ "title": "FlowDirectiveEnum",
+ "type": "string",
+ "enum": [
+ "continue",
+ "exit",
+ "end"
+ ],
+ "default": "continue"
+ },
+ {
+ "type": "string"
+ }
+ ]
+ },
+ "referenceableAuthenticationPolicy": {
+ "type": "object",
+ "title": "ReferenceableAuthenticationPolicy",
+ "description": "Represents a referenceable authentication policy.",
+ "unevaluatedProperties": false,
+ "oneOf": [
+ {
+ "title": "AuthenticationPolicyReference",
+ "description": "The reference of the authentication policy to use.",
+ "properties": {
+ "use": {
+ "type": "string",
+ "minLength": 1,
+ "title": "ReferenceableAuthenticationPolicyName",
+ "description": "The name of the authentication policy to use."
+ }
+ },
+ "required": [
+ "use"
+ ]
+ },
+ {
+ "$ref": "#/$defs/authenticationPolicy"
+ }
+ ]
+ },
+ "secretBasedAuthenticationPolicy": {
+ "type": "object",
+ "title": "SecretBasedAuthenticationPolicy",
+ "description": "Represents an authentication policy based on secrets.",
+ "unevaluatedProperties": false,
+ "properties": {
+ "use": {
+ "type": "string",
+ "minLength": 1,
+ "title": "SecretBasedAuthenticationPolicyName",
+ "description": "The name of the authentication policy to use."
+ }
+ },
+ "required": [
+ "use"
+ ]
+ },
+ "authenticationPolicy": {
+ "type": "object",
+ "title": "AuthenticationPolicy",
+ "description": "Defines an authentication policy.",
+ "oneOf": [
+ {
+ "title": "BasicAuthenticationPolicy",
+ "description": "Use basic authentication.",
+ "properties": {
+ "basic": {
+ "type": "object",
+ "title": "BasicAuthenticationPolicyConfiguration",
+ "description": "The configuration of the basic authentication policy.",
+ "unevaluatedProperties": false,
+ "oneOf": [
+ {
+ "title": "BasicAuthenticationProperties",
+ "description": "Inline configuration of the basic authentication policy.",
+ "properties": {
+ "username": {
+ "type": "string",
+ "description": "The username to use."
+ },
+ "password": {
+ "type": "string",
+ "description": "The password to use."
+ }
+ },
+ "required": [
+ "username",
+ "password"
+ ]
+ },
+ {
+ "$ref": "#/$defs/secretBasedAuthenticationPolicy",
+ "title": "BasicAuthenticationPolicySecret",
+ "description": "Secret based configuration of the basic authentication policy."
+ }
+ ]
+ }
+ },
+ "required": [
+ "basic"
+ ]
+ },
+ {
+ "title": "BearerAuthenticationPolicy",
+ "description": "Use bearer authentication.",
+ "properties": {
+ "bearer": {
+ "type": "object",
+ "title": "BearerAuthenticationPolicyConfiguration",
+ "description": "The configuration of the bearer authentication policy.",
+ "unevaluatedProperties": false,
+ "oneOf": [
+ {
+ "title": "BearerAuthenticationProperties",
+ "description": "Inline configuration of the bearer authentication policy.",
+ "properties": {
+ "token": {
+ "type": "string",
+ "description": "The bearer token to use."
+ }
+ },
+ "required": [
+ "token"
+ ]
+ },
+ {
+ "$ref": "#/$defs/secretBasedAuthenticationPolicy",
+ "title": "BearerAuthenticationPolicySecret",
+ "description": "Secret based configuration of the bearer authentication policy."
+ }
+ ]
+ }
+ },
+ "required": [
+ "bearer"
+ ]
+ },
+ {
+ "title": "DigestAuthenticationPolicy",
+ "description": "Use digest authentication.",
+ "properties": {
+ "digest": {
+ "type": "object",
+ "title": "DigestAuthenticationPolicyConfiguration",
+ "description": "The configuration of the digest authentication policy.",
+ "unevaluatedProperties": false,
+ "oneOf": [
+ {
+ "title": "DigestAuthenticationProperties",
+ "description": "Inline configuration of the digest authentication policy.",
+ "properties": {
+ "username": {
+ "type": "string",
+ "description": "The username to use."
+ },
+ "password": {
+ "type": "string",
+ "description": "The password to use."
+ }
+ },
+ "required": [
+ "username",
+ "password"
+ ]
+ },
+ {
+ "$ref": "#/$defs/secretBasedAuthenticationPolicy",
+ "title": "DigestAuthenticationPolicySecret",
+ "description": "Secret based configuration of the digest authentication policy."
+ }
+ ]
+ }
+ },
+ "required": [
+ "digest"
+ ]
+ },
+ {
+ "title": "OAuth2AuthenticationPolicy",
+ "description": "Use OAuth2 authentication.",
+ "properties": {
+ "oauth2": {
+ "type": "object",
+ "title": "OAuth2AuthenticationPolicyConfiguration",
+ "description": "The configuration of the OAuth2 authentication policy.",
+ "unevaluatedProperties": false,
+ "oneOf": [
+ {
+ "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": {
+ "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."
+ }
+ ]
+ }
+ },
+ "required": [
+ "oauth2"
+ ]
+ },
+ {
+ "title": "OpenIdConnectAuthenticationPolicy",
+ "description": "Use OpenIdConnect authentication.",
+ "properties": {
+ "oidc": {
+ "type": "object",
+ "title": "OpenIdConnectAuthenticationPolicyConfiguration",
+ "description": "The configuration of the OpenIdConnect authentication policy.",
+ "unevaluatedProperties": false,
+ "oneOf": [
+ {
+ "$ref": "#/$defs/oauth2AuthenticationProperties",
+ "title": "OpenIdConnectAuthenticationProperties",
+ "description": "The inline configuration of the OpenIdConnect authentication policy.",
+ "unevaluatedProperties": false
+ },
+ {
+ "$ref": "#/$defs/secretBasedAuthenticationPolicy",
+ "title": "OpenIdConnectAuthenticationPolicySecret",
+ "description": "Secret based configuration of the OpenIdConnect authentication policy."
+ }
+ ]
+ }
+ },
+ "required": [
+ "oidc"
+ ]
+ }
+ ]
+ },
+ "oauth2AuthenticationProperties": {
+ "type": "object",
+ "title": "OAuth2AutenthicationData",
+ "description": "Inline configuration of the OAuth2 authentication policy.",
+ "properties": {
+ "authority": {
+ "$ref": "#/$defs/uriTemplate",
+ "title": "OAuth2AutenthicationDataAuthority",
+ "description": "The URI that references the OAuth2 authority to use."
+ },
+ "grant": {
+ "type": "string",
+ "enum": [
+ "authorization_code",
+ "client_credentials",
+ "password",
+ "refresh_token",
+ "urn:ietf:params:oauth:grant-type:token-exchange"
+ ],
+ "title": "OAuth2AutenthicationDataGrant",
+ "description": "The grant type to use."
+ },
+ "client": {
+ "type": "object",
+ "title": "OAuth2AutenthicationDataClient",
+ "description": "The definition of an OAuth2 client.",
+ "unevaluatedProperties": false,
+ "properties": {
+ "id": {
+ "type": "string",
+ "title": "ClientId",
+ "description": "The client id to use."
+ },
+ "secret": {
+ "type": "string",
+ "title": "ClientSecret",
+ "description": "The client secret to use, if any."
+ },
+ "assertion": {
+ "type": "string",
+ "title": "ClientAssertion",
+ "description": "A JWT containing a signed assertion with your application credentials."
+ },
+ "authentication": {
+ "type": "string",
+ "enum": [
+ "client_secret_basic",
+ "client_secret_post",
+ "client_secret_jwt",
+ "private_key_jwt",
+ "none"
+ ],
+ "default": "client_secret_post",
+ "title": "ClientAuthentication",
+ "description": "The authentication method to use to authenticate the client."
+ }
+ }
+ },
+ "request": {
+ "type": "object",
+ "title": "OAuth2TokenRequest",
+ "description": "The configuration of an OAuth2 token request",
+ "properties": {
+ "encoding": {
+ "type": "string",
+ "enum": [
+ "application/x-www-form-urlencoded",
+ "application/json"
+ ],
+ "default": "application/x-www-form-urlencoded",
+ "title": "Oauth2TokenRequestEncoding"
+ }
+ }
+ },
+ "issuers": {
+ "type": "array",
+ "title": "OAuth2Issuers",
+ "description": "A list that contains that contains valid issuers that will be used to check against the issuer of generated tokens.",
+ "items": {
+ "type": "string"
+ }
+ },
+ "scopes": {
+ "type": "array",
+ "title": "OAuth2AutenthicationDataScopes",
+ "description": "The scopes, if any, to request the token for.",
+ "items": {
+ "type": "string"
+ }
+ },
+ "audiences": {
+ "type": "array",
+ "title": "OAuth2AutenthicationDataAudiences",
+ "description": "The audiences, if any, to request the token for.",
+ "items": {
+ "type": "string"
+ }
+ },
+ "username": {
+ "type": "string",
+ "title": "OAuth2AutenthicationDataUsername",
+ "description": "The username to use. Used only if the grant type is Password."
+ },
+ "password": {
+ "type": "string",
+ "title": "OAuth2AutenthicationDataPassword",
+ "description": "The password to use. Used only if the grant type is Password."
+ },
+ "subject": {
+ "$ref": "#/$defs/oauth2Token",
+ "title": "OAuth2AutenthicationDataSubject",
+ "description": "The security token that represents the identity of the party on behalf of whom the request is being made."
+ },
+ "actor": {
+ "$ref": "#/$defs/oauth2Token",
+ "title": "OAuth2AutenthicationDataActor",
+ "description": "The security token that represents the identity of the acting party."
+ }
+ }
+ },
+ "oauth2Token": {
+ "type": "object",
+ "title": "OAuth2TokenDefinition",
+ "description": "Represents an OAuth2 token.",
+ "unevaluatedProperties": false,
+ "properties": {
+ "token": {
+ "type": "string",
+ "title": "OAuth2Token",
+ "description": "The security token to use."
+ },
+ "type": {
+ "type": "string",
+ "title": "OAuth2TokenType",
+ "description": "The type of the security token to use."
+ }
+ },
+ "required": [
+ "token",
+ "type"
+ ]
+ },
+ "duration": {
+ "oneOf": [
+ {
+ "type": "object",
+ "minProperties": 1,
+ "unevaluatedProperties": false,
+ "properties": {
+ "days": {
+ "type": "integer",
+ "title": "DurationDays",
+ "description": "Number of days, if any."
+ },
+ "hours": {
+ "type": "integer",
+ "title": "DurationHours",
+ "description": "Number of days, if any."
+ },
+ "minutes": {
+ "type": "integer",
+ "title": "DurationMinutes",
+ "description": "Number of minutes, if any."
+ },
+ "seconds": {
+ "type": "integer",
+ "title": "DurationSeconds",
+ "description": "Number of seconds, if any."
+ },
+ "milliseconds": {
+ "type": "integer",
+ "title": "DurationMilliseconds",
+ "description": "Number of milliseconds, if any."
+ }
+ },
+ "title": "DurationInline",
+ "description": "The inline definition of a duration."
+ },
+ {
+ "type": "string",
+ "pattern": "^P(?!$)(\\d+(?:\\.\\d+)?Y)?(\\d+(?:\\.\\d+)?M)?(\\d+(?:\\.\\d+)?W)?(\\d+(?:\\.\\d+)?D)?(T(?=\\d)(\\d+(?:\\.\\d+)?H)?(\\d+(?:\\.\\d+)?M)?(\\d+(?:\\.\\d+)?S)?)?$",
+ "title": "DurationExpression",
+ "description": "The ISO 8601 expression of a duration."
+ }
+ ]
+ },
+ "error": {
+ "type": "object",
+ "title": "Error",
+ "description": "Represents an error.",
+ "unevaluatedProperties": false,
+ "properties": {
+ "type": {
+ "title": "ErrorType",
+ "description": "A URI reference that identifies the error type.",
+ "oneOf": [
+ {
+ "title": "LiteralErrorType",
+ "$ref": "#/$defs/uriTemplate",
+ "description": "The literal error type."
+ },
+ {
+ "title": "ExpressionErrorType",
+ "$ref": "#/$defs/runtimeExpression",
+ "description": "An expression based error type."
+ }
+ ]
+ },
+ "status": {
+ "type": "integer",
+ "title": "ErrorStatus",
+ "description": "The status code generated by the origin for this occurrence of the error."
+ },
+ "instance": {
+ "title": "ErrorInstance",
+ "description": "A JSON Pointer used to reference the component the error originates from.",
+ "oneOf": [
+ {
+ "title": "LiteralErrorInstance",
+ "description": "The literal error instance.",
+ "type": "string",
+ "format": "json-pointer"
+ },
+ {
+ "$ref": "#/$defs/runtimeExpression",
+ "title": "ExpressionErrorInstance",
+ "description": "An expression based error instance."
+ }
+ ]
+ },
+ "title": {
+ "type": "string",
+ "title": "ErrorTitle",
+ "description": "A short, human-readable summary of the error."
+ },
+ "detail": {
+ "type": "string",
+ "title": "ErrorDetails",
+ "description": "A human-readable explanation specific to this occurrence of the error."
+ }
+ },
+ "required": [
+ "type",
+ "status"
+ ]
+ },
+ "errorFilter": {
+ "type": "object",
+ "title": "ErrorFilter",
+ "description": "Error filtering base on static values. For error filtering on dynamic values, use catch.when property",
+ "minProperties": 1,
+ "properties": {
+ "type": {
+ "type": "string",
+ "description": "if present, means this value should be used for filtering"
+ },
+ "status": {
+ "type": "integer",
+ "description": "if present, means this value should be used for filtering"
+ },
+ "instance": {
+ "type": "string",
+ "description": "if present, means this value should be used for filtering"
+ },
+ "title": {
+ "type": "string",
+ "description": "if present, means this value should be used for filtering"
+ },
+ "details": {
+ "type": "string",
+ "description": "if present, means this value should be used for filtering"
+ }
+ }
+ },
+ "uriTemplate": {
+ "title": "UriTemplate",
+ "anyOf": [
+ {
+ "title": "LiteralUriTemplate",
+ "type": "string",
+ "format": "uri-template",
+ "pattern": "^[A-Za-z][A-Za-z0-9+\\-.]*://.*"
+ },
+ {
+ "title": "LiteralUri",
+ "type": "string",
+ "format": "uri",
+ "pattern": "^[A-Za-z][A-Za-z0-9+\\-.]*://.*"
+ }
+ ]
+ },
+ "endpoint": {
+ "title": "Endpoint",
+ "description": "Represents an endpoint.",
+ "oneOf": [
+ {
+ "$ref": "#/$defs/runtimeExpression"
+ },
+ {
+ "$ref": "#/$defs/uriTemplate"
+ },
+ {
+ "title": "EndpointConfiguration",
+ "type": "object",
+ "unevaluatedProperties": false,
+ "properties": {
+ "uri": {
+ "title": "EndpointUri",
+ "description": "The endpoint's URI.",
+ "oneOf": [
+ {
+ "title": "LiteralEndpointURI",
+ "description": "The literal endpoint's URI.",
+ "$ref": "#/$defs/uriTemplate"
+ },
+ {
+ "title": "ExpressionEndpointURI",
+ "$ref": "#/$defs/runtimeExpression",
+ "description": "An expression based endpoint's URI."
+ }
+ ]
+ },
+ "authentication": {
+ "$ref": "#/$defs/referenceableAuthenticationPolicy",
+ "title": "EndpointAuthentication",
+ "description": "The authentication policy to use."
+ }
+ },
+ "required": [
+ "uri"
+ ]
+ }
+ ]
+ },
+ "eventProperties": {
+ "type": "object",
+ "title": "EventProperties",
+ "description": "Describes the properties of an event.",
+ "properties": {
+ "id": {
+ "type": "string",
+ "title": "EventId",
+ "description": "The event's unique identifier."
+ },
+ "source": {
+ "title": "EventSource",
+ "description": "Identifies the context in which an event happened.",
+ "oneOf": [
+ {
+ "$ref": "#/$defs/uriTemplate"
+ },
+ {
+ "$ref": "#/$defs/runtimeExpression"
+ }
+ ]
+ },
+ "type": {
+ "type": "string",
+ "title": "EventType",
+ "description": "This attribute contains a value describing the type of event related to the originating occurrence."
+ },
+ "time": {
+ "title": "EventTime",
+ "description": "When the event occured.",
+ "oneOf": [
+ {
+ "title": "LiteralTime",
+ "type": "string",
+ "format": "date-time"
+ },
+ {
+ "$ref": "#/$defs/runtimeExpression"
+ }
+ ]
+ },
+ "subject": {
+ "type": "string",
+ "title": "EventSubject",
+ "description": "The subject of the event."
+ },
+ "datacontenttype": {
+ "type": "string",
+ "title": "EventDataContentType",
+ "description": "Content type of data value. This attribute enables data to carry any type of content, whereby format and encoding might differ from that of the chosen event format."
+ },
+ "dataschema": {
+ "title": "EventDataschema",
+ "description": "The schema describing the event format.",
+ "oneOf": [
+ {
+ "title": "LiteralDataSchema",
+ "$ref": "#/$defs/uriTemplate",
+ "description": "The literal event data schema."
+ },
+ {
+ "title": "ExpressionDataSchema",
+ "$ref": "#/$defs/runtimeExpression",
+ "description": "An expression based event data schema."
+ }
+ ]
+ },
+ "data": {
+ "title": "EventData",
+ "description": "The event's payload data",
+ "anyOf": [
+ {
+ "$ref": "#/$defs/runtimeExpression"
+ },
+ {}
+ ]
+ }
+ },
+ "additionalProperties": true
+ },
+ "eventConsumptionStrategy": {
+ "type": "object",
+ "title": "EventConsumptionStrategy",
+ "description": "Describe the event consumption strategy to adopt.",
+ "unevaluatedProperties": false,
+ "oneOf": [
+ {
+ "title": "AllEventConsumptionStrategy",
+ "properties": {
+ "all": {
+ "type": "array",
+ "title": "AllEventConsumptionStrategyConfiguration",
+ "description": "A list containing all the events that must be consumed.",
+ "items": {
+ "$ref": "#/$defs/eventFilter"
+ }
+ }
+ },
+ "required": [
+ "all"
+ ]
+ },
+ {
+ "title": "AnyEventConsumptionStrategy",
+ "properties": {
+ "any": {
+ "type": "array",
+ "title": "AnyEventConsumptionStrategyConfiguration",
+ "description": "A list containing any of the events to consume.",
+ "items": {
+ "$ref": "#/$defs/eventFilter"
+ }
+ },
+ "until": {
+ "oneOf": [
+ {
+ "type": "string",
+ "title": "AnyEventUntilCondition",
+ "description": "A runtime expression condition evaluated after consuming an event and which determines whether or not to continue listening."
+ },
+ {
+ "allOf": [
+ {
+ "$ref": "#/$defs/eventConsumptionStrategy",
+ "description": "The strategy that defines the event(s) to consume to stop listening."
+ },
+ {
+ "properties": {
+ "until": false
+ }
+ }
+ ],
+ "title": "AnyEventUntilConsumed"
+ }
+ ]
+ }
+ },
+ "required": [
+ "any"
+ ]
+ },
+ {
+ "title": "OneEventConsumptionStrategy",
+ "properties": {
+ "one": {
+ "$ref": "#/$defs/eventFilter",
+ "title": "OneEventConsumptionStrategyConfiguration",
+ "description": "The single event to consume."
+ }
+ },
+ "required": [
+ "one"
+ ]
+ }
+ ]
+ },
+ "eventFilter": {
+ "type": "object",
+ "title": "EventFilter",
+ "description": "An event filter is a mechanism used to selectively process or handle events based on predefined criteria, such as event type, source, or specific attributes.",
+ "unevaluatedProperties": false,
+ "properties": {
+ "with": {
+ "$ref": "#/$defs/eventProperties",
+ "minProperties": 1,
+ "title": "WithEvent",
+ "description": "An event filter is a mechanism used to selectively process or handle events based on predefined criteria, such as event type, source, or specific attributes."
+ },
+ "correlate": {
+ "type": "object",
+ "title": "EventFilterCorrelate",
+ "description": "A correlation is a link between events and data, established by mapping event attributes to specific data attributes, allowing for coordinated processing or handling based on event characteristics.",
+ "additionalProperties": {
+ "type": "object",
+ "properties": {
+ "from": {
+ "type": "string",
+ "title": "CorrelateFrom",
+ "description": "A runtime expression used to extract the correlation value from the filtered event."
+ },
+ "expect": {
+ "type": "string",
+ "title": "CorrelateExpect",
+ "description": "A constant or a runtime expression, if any, used to determine whether or not the extracted correlation value matches expectations. If not set, the first extracted value will be used as the correlation's expectation."
+ }
+ },
+ "required": [
+ "from"
+ ]
+ }
+ }
+ },
+ "required": [
+ "with"
+ ]
+ },
+ "extension": {
+ "type": "object",
+ "title": "Extension",
+ "description": "The definition of an extension.",
+ "unevaluatedProperties": false,
+ "properties": {
+ "extend": {
+ "type": "string",
+ "enum": [
+ "call",
+ "composite",
+ "emit",
+ "for",
+ "listen",
+ "raise",
+ "run",
+ "set",
+ "switch",
+ "try",
+ "wait",
+ "all"
+ ],
+ "title": "ExtensionTarget",
+ "description": "The type of task to extend."
+ },
+ "when": {
+ "type": "string",
+ "title": "ExtensionCondition",
+ "description": "A runtime expression, if any, used to determine whether or not the extension should apply in the specified context."
+ },
+ "before": {
+ "$ref": "#/$defs/taskList",
+ "title": "ExtensionDoBefore",
+ "description": "The task(s) to execute before the extended task, if any."
+ },
+ "after": {
+ "$ref": "#/$defs/taskList",
+ "title": "ExtensionDoAfter",
+ "description": "The task(s) to execute after the extended task, if any."
+ }
+ },
+ "required": [
+ "extend"
+ ]
+ },
+ "externalResource": {
+ "type": "object",
+ "title": "ExternalResource",
+ "description": "Represents an external resource.",
+ "unevaluatedProperties": false,
+ "properties": {
+ "name": {
+ "type": "string",
+ "title": "ExternalResourceName",
+ "description": "The name of the external resource, if any."
+ },
+ "endpoint": {
+ "$ref": "#/$defs/endpoint",
+ "title": "ExternalResourceEndpoint",
+ "description": "The endpoint of the external resource."
+ }
+ },
+ "required": [
+ "endpoint"
+ ]
+ },
+ "input": {
+ "type": "object",
+ "title": "Input",
+ "description": "Configures the input of a workflow or task.",
+ "unevaluatedProperties": false,
+ "properties": {
+ "schema": {
+ "$ref": "#/$defs/schema",
+ "title": "InputSchema",
+ "description": "The schema used to describe and validate the input of the workflow or task."
+ },
+ "from": {
+ "title": "InputFrom",
+ "description": "A runtime expression, if any, used to mutate and/or filter the input of the workflow or task.",
+ "oneOf": [
+ {
+ "type": "string"
+ },
+ {
+ "type": "object"
+ }
+ ]
+ }
+ }
+ },
+ "output": {
+ "type": "object",
+ "title": "Output",
+ "description": "Configures the output of a workflow or task.",
+ "unevaluatedProperties": false,
+ "properties": {
+ "schema": {
+ "$ref": "#/$defs/schema",
+ "title": "OutputSchema",
+ "description": "The schema used to describe and validate the output of the workflow or task."
+ },
+ "as": {
+ "title": "OutputAs",
+ "description": "A runtime expression, if any, used to mutate and/or filter the output of the workflow or task.",
+ "oneOf": [
+ {
+ "type": "string"
+ },
+ {
+ "type": "object"
+ }
+ ]
+ }
+ }
+ },
+ "export": {
+ "type": "object",
+ "title": "Export",
+ "description": "Set the content of the context. .",
+ "unevaluatedProperties": false,
+ "properties": {
+ "schema": {
+ "$ref": "#/$defs/schema",
+ "title": "ExportSchema",
+ "description": "The schema used to describe and validate the workflow context."
+ },
+ "as": {
+ "title": "ExportAs",
+ "description": "A runtime expression, if any, used to export the output data to the context.",
+ "oneOf": [
+ {
+ "type": "string"
+ },
+ {
+ "type": "object"
+ }
+ ]
+ }
+ }
+ },
+ "retryPolicy": {
+ "type": "object",
+ "title": "RetryPolicy",
+ "description": "Defines a retry policy.",
+ "unevaluatedProperties": false,
+ "properties": {
+ "when": {
+ "type": "string",
+ "title": "RetryWhen",
+ "description": "A runtime expression, if any, used to determine whether or not to retry running the task, in a given context."
+ },
+ "exceptWhen": {
+ "type": "string",
+ "title": "RetryExcepWhen",
+ "description": "A runtime expression used to determine whether or not to retry running the task, in a given context."
+ },
+ "delay": {
+ "$ref": "#/$defs/duration",
+ "title": "RetryDelay",
+ "description": "The duration to wait between retry attempts."
+ },
+ "backoff": {
+ "type": "object",
+ "title": "RetryBackoff",
+ "description": "The retry duration backoff.",
+ "unevaluatedProperties": false,
+ "oneOf": [
+ {
+ "title": "ConstantBackoff",
+ "properties": {
+ "constant": {
+ "type": "object",
+ "description": "The definition of the constant backoff to use, if any."
+ }
+ },
+ "required": [
+ "constant"
+ ]
+ },
+ {
+ "title": "ExponentialBackOff",
+ "properties": {
+ "exponential": {
+ "type": "object",
+ "description": "The definition of the exponential backoff to use, if any."
+ }
+ },
+ "required": [
+ "exponential"
+ ]
+ },
+ {
+ "title": "LinearBackoff",
+ "properties": {
+ "linear": {
+ "type": "object",
+ "description": "The definition of the linear backoff to use, if any."
+ }
+ },
+ "required": [
+ "linear"
+ ]
+ }
+ ]
+ },
+ "limit": {
+ "type": "object",
+ "title": "RetryLimit",
+ "unevaluatedProperties": false,
+ "properties": {
+ "attempt": {
+ "type": "object",
+ "title": "RetryLimitAttempt",
+ "unevaluatedProperties": false,
+ "properties": {
+ "count": {
+ "type": "integer",
+ "title": "RetryLimitAttemptCount",
+ "description": "The maximum amount of retry attempts, if any."
+ },
+ "duration": {
+ "$ref": "#/$defs/duration",
+ "title": "RetryLimitAttemptDuration",
+ "description": "The maximum duration for each retry attempt."
+ }
+ }
+ },
+ "duration": {
+ "$ref": "#/$defs/duration",
+ "title": "RetryLimitDuration",
+ "description": "The duration limit, if any, for all retry attempts."
+ }
+ },
+ "description": "The retry limit, if any."
+ },
+ "jitter": {
+ "type": "object",
+ "title": "RetryPolicyJitter",
+ "description": "The parameters, if any, that control the randomness or variability of the delay between retry attempts.",
+ "unevaluatedProperties": false,
+ "properties": {
+ "from": {
+ "$ref": "#/$defs/duration",
+ "title": "RetryPolicyJitterFrom",
+ "description": "The minimum duration of the jitter range."
+ },
+ "to": {
+ "$ref": "#/$defs/duration",
+ "title": "RetryPolicyJitterTo",
+ "description": "The maximum duration of the jitter range."
+ }
+ },
+ "required": [
+ "from",
+ "to"
+ ]
+ }
+ }
+ },
+ "schema": {
+ "type": "object",
+ "title": "Schema",
+ "description": "Represents the definition of a schema.",
+ "unevaluatedProperties": false,
+ "properties": {
+ "format": {
+ "type": "string",
+ "default": "json",
+ "title": "SchemaFormat",
+ "description": "The schema's format. Defaults to 'json'. The (optional) version of the format can be set using `{format}:{version}`."
+ }
+ },
+ "oneOf": [
+ {
+ "title": "SchemaInline",
+ "properties": {
+ "document": {
+ "description": "The schema's inline definition."
+ }
+ },
+ "required": [
+ "document"
+ ]
+ },
+ {
+ "title": "SchemaExternal",
+ "properties": {
+ "resource": {
+ "$ref": "#/$defs/externalResource",
+ "title": "SchemaExternalResource",
+ "description": "The schema's external resource."
+ }
+ },
+ "required": [
+ "resource"
+ ]
+ }
+ ]
+ },
+ "timeout": {
+ "type": "object",
+ "title": "Timeout",
+ "description": "The definition of a timeout.",
+ "unevaluatedProperties": false,
+ "properties": {
+ "after": {
+ "$ref": "#/$defs/duration",
+ "title": "TimeoutAfter",
+ "description": "The duration after which to timeout."
+ }
+ },
+ "required": [
+ "after"
+ ]
+ },
+ "catalog": {
+ "type": "object",
+ "title": "Catalog",
+ "description": "The definition of a resource catalog.",
+ "unevaluatedProperties": false,
+ "properties": {
+ "endpoint": {
+ "$ref": "#/$defs/endpoint",
+ "title": "CatalogEndpoint",
+ "description": "The root URL where the catalog is hosted."
+ }
+ },
+ "required": [
+ "endpoint"
+ ]
+ },
+ "runtimeExpression": {
+ "type": "string",
+ "title": "RuntimeExpression",
+ "description": "A runtime expression.",
+ "pattern": "^\\s*\\$\\{.+\\}\\s*$"
+ },
+ "containerLifetime": {
+ "type": "object",
+ "title": "ContainerLifetime",
+ "description": "The configuration of a container's lifetime",
+ "unevaluatedProperties": false,
+ "properties": {
+ "cleanup": {
+ "type": "string",
+ "title": "ContainerCleanupPolicy",
+ "description": "The container cleanup policy to use",
+ "enum": [
+ "always",
+ "never",
+ "eventually"
+ ],
+ "default": "never"
+ },
+ "after": {
+ "$ref": "#/$defs/duration",
+ "title": "ContainerLifetimeDuration",
+ "description": "The duration after which to cleanup the container, in case the cleanup policy has been set to 'eventually'"
+ }
+ },
+ "required": [
+ "cleanup"
+ ],
+ "if": {
+ "properties": {
+ "cleanup": {
+ "const": "eventually"
+ }
+ }
+ },
+ "then": {
+ "required": [
+ "after"
+ ]
+ },
+ "else": {
+ "not": {
+ "required": [
+ "after"
+ ]
+ }
+ }
+ },
+ "processResult": {
+ "type": "object",
+ "title": "ProcessResult",
+ "description": "The object returned by a run task when its return type has been set 'all'.",
+ "unevaluatedProperties": false,
+ "properties": {
+ "code": {
+ "type": "integer",
+ "title": "ProcessExitCode",
+ "description": "The process's exit code."
+ },
+ "stdout": {
+ "type": "string",
+ "title": "ProcessStandardOutput",
+ "description": "The content of the process's STDOUT."
+ },
+ "stderr": {
+ "type": "string",
+ "title": "ProcessStandardError",
+ "description": "The content of the process's STDERR."
+ }
+ },
+ "required": [
+ "code",
+ "stdout",
+ "stderr"
+ ]
+ },
+ "asyncApiServer": {
+ "type": "object",
+ "title": "AsyncApiServer",
+ "description": "Configures the target server of an AsyncAPI operation.",
+ "unevaluatedProperties": false,
+ "properties": {
+ "name": {
+ "type": "string",
+ "title": "AsyncApiServerName",
+ "description": "The target server's name."
+ },
+ "variables": {
+ "type": "object",
+ "title": "AsyncApiServerVariables",
+ "description": "The target server's variables, if any."
+ }
+ },
+ "required": [
+ "name"
+ ]
+ },
+ "asyncApiOutboundMessage": {
+ "type": "object",
+ "title": "AsyncApiOutboundMessage",
+ "description": "An object used to configure the message to publish using the target operation.",
+ "unevaluatedProperties": false,
+ "properties": {
+ "payload": {
+ "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",
+ "title": "AsyncApiInboundMessage",
+ "description": "Represents a message counsumed by an AsyncAPI subscription.",
+ "allOf": [
+ {
+ "$ref": "#/$defs/asyncApiOutboundMessage"
+ }
+ ],
+ "properties": {
+ "correlationId": {
+ "type": "string",
+ "title": "AsyncApiMessageCorrelationId",
+ "description": "The message's correlation id, if any."
+ }
+ }
+ },
+ "asyncApiSubscription": {
+ "type": "object",
+ "title": "AsyncApiSubscription",
+ "description": "An object used to configure the subscription to messages consumed using the target operation.",
+ "unevaluatedProperties": false,
+ "properties": {
+ "filter": {
+ "$ref": "#/$defs/runtimeExpression",
+ "title": "AsyncApiSubscriptionCorrelation",
+ "description": "A runtime expression, if any, used to filter consumed messages."
+ },
+ "consume": {
+ "$ref": "#/$defs/asyncApiMessageConsumptionPolicy",
+ "title": "AsyncApiMessageConsumptionPolicy",
+ "description": "An object used to configure the subscription's message consumption policy."
+ },
+ "foreach": {
+ "$ref": "#/$defs/subscriptionIterator",
+ "title": "AsyncApiSubscriptionIterator",
+ "description": "Configures the iterator, if any, for processing consumed messages(s)."
+ }
+ },
+ "required": [
+ "consume"
+ ]
+ },
+ "asyncApiMessageConsumptionPolicy": {
+ "type": "object",
+ "title": "AsyncApiMessageConsumptionPolicy",
+ "description": "An object used to configure a subscription's message consumption policy.",
+ "unevaluatedProperties": false,
+ "properties": {
+ "for": {
+ "$ref": "#/$defs/duration",
+ "title": "AsyncApiMessageConsumptionPolicyFor",
+ "description": "Specifies the time period over which messages will be consumed."
+ }
+ },
+ "oneOf": [
+ {
+ "properties": {
+ "amount": {
+ "type": "integer",
+ "description": "The amount of (filtered) messages to consume before disposing of the subscription."
+ }
+ },
+ "title": "AsyncApiMessageConsumptionPolicyAmount",
+ "required": [
+ "amount"
+ ]
+ },
+ {
+ "properties": {
+ "while": {
+ "$ref": "#/$defs/runtimeExpression",
+ "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",
+ "description": "A runtime expression evaluated before each consumed (filtered) message to decide if message consumption should continue."
+ }
+ },
+ "title": "AsyncApiMessageConsumptionPolicyUntil",
+ "required": [
+ "until"
+ ]
+ }
+ ]
+ },
+ "subscriptionIterator": {
+ "type": "object",
+ "title": "SubscriptionIterator",
+ "description": "Configures the iteration over each item (event or message) consumed by a subscription.",
+ "unevaluatedProperties": false,
+ "properties": {
+ "item": {
+ "type": "string",
+ "title": "SubscriptionIteratorItem",
+ "description": "The name of the variable used to store the current item being enumerated.",
+ "default": "item"
+ },
+ "at": {
+ "type": "string",
+ "title": "SubscriptionIteratorIndex",
+ "description": "The name of the variable used to store the index of the current item being enumerated.",
+ "default": "index"
+ },
+ "do": {
+ "$ref": "#/$defs/taskList",
+ "title": "SubscriptionIteratorTasks",
+ "description": "The tasks to perform for each consumed item."
+ },
+ "output": {
+ "$ref": "#/$defs/output",
+ "title": "SubscriptionIteratorOutput",
+ "description": "An object, if any, used to customize the item's output and to document its schema."
+ },
+ "export": {
+ "$ref": "#/$defs/export",
+ "title": "SubscriptionIteratorExport",
+ "description": "An object, if any, used to customize the content of the workflow context."
+ }
+ }
+ }
+ }
+}
\ No newline at end of file
diff --git a/public/schemas/1.0.0/workflow.yaml b/public/schemas/1.0.0/workflow.yaml
new file mode 100644
index 0000000..31b4f48
--- /dev/null
+++ b/public/schemas/1.0.0/workflow.yaml
@@ -0,0 +1,1758 @@
+$id: https://open-workflow-specification.org/schemas/1.0.0/workflow.yaml
+$schema: https://json-schema.org/draft/2020-12/schema
+description: Open Workflow Specification DSL - Workflow Schema.
+type: object
+required: [ document, do ]
+properties:
+ document:
+ type: object
+ title: Document
+ description: Documents the workflow.
+ unevaluatedProperties: false
+ properties:
+ dsl:
+ type: string
+ pattern: ^(0|[1-9]\d*)\.(0|[1-9]\d*)\.(0|[1-9]\d*)(?:-((?:0|[1-9]\d*|\d*[a-zA-Z-][0-9a-zA-Z-]*)(?:\.(?:0|[1-9]\d*|\d*[a-zA-Z-][0-9a-zA-Z-]*))*))?(?:\+([0-9a-zA-Z-]+(?:\.[0-9a-zA-Z-]+)*))?$
+ title: WorkflowDSL
+ description: The version of the DSL used by the workflow.
+ namespace:
+ type: string
+ pattern: ^[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?$
+ title: WorkflowNamespace
+ description: The workflow's namespace.
+ name:
+ type: string
+ pattern: ^[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?$
+ title: WorkflowName
+ description: The workflow's name.
+ version:
+ type: string
+ pattern: ^(0|[1-9]\d*)\.(0|[1-9]\d*)\.(0|[1-9]\d*)(?:-((?:0|[1-9]\d*|\d*[a-zA-Z-][0-9a-zA-Z-]*)(?:\.(?:0|[1-9]\d*|\d*[a-zA-Z-][0-9a-zA-Z-]*))*))?(?:\+([0-9a-zA-Z-]+(?:\.[0-9a-zA-Z-]+)*))?$
+ title: WorkflowVersion
+ description: The workflow's semantic version.
+ title:
+ type: string
+ title: WorkflowTitle
+ description: The workflow's title.
+ summary:
+ type: string
+ title: WorkflowSummary
+ description: The workflow's Markdown summary.
+ tags:
+ type: object
+ title: WorkflowTags
+ description: A key/value mapping of the workflow's tags, if any.
+ additionalProperties: true
+ metadata:
+ type: object
+ title: WorkflowMetadata
+ description: Holds additional information about the workflow.
+ additionalProperties: true
+ required: [ dsl, namespace, name, version ]
+ input:
+ $ref: '#/$defs/input'
+ title: Input
+ description: Configures the workflow's input.
+ use:
+ type: object
+ title: Use
+ description: Defines the workflow's reusable components.
+ unevaluatedProperties: false
+ properties:
+ authentications:
+ type: object
+ title: UseAuthentications
+ description: The workflow's reusable authentication policies.
+ additionalProperties:
+ $ref: '#/$defs/authenticationPolicy'
+ errors:
+ type: object
+ title: UseErrors
+ description: The workflow's reusable errors.
+ additionalProperties:
+ $ref: '#/$defs/error'
+ extensions:
+ type: array
+ title: UseExtensions
+ description: The workflow's extensions.
+ items:
+ type: object
+ title: ExtensionItem
+ minProperties: 1
+ maxProperties: 1
+ additionalProperties:
+ $ref: '#/$defs/extension'
+ functions:
+ type: object
+ title: UseFunctions
+ description: The workflow's reusable functions.
+ additionalProperties:
+ $ref: '#/$defs/task'
+ retries:
+ type: object
+ title: UseRetries
+ description: The workflow's reusable retry policies.
+ additionalProperties:
+ $ref: '#/$defs/retryPolicy'
+ secrets:
+ type: array
+ title: UseSecrets
+ description: The workflow's reusable secrets.
+ items:
+ type: string
+ description: The workflow's secrets.
+ timeouts:
+ type: object
+ title: UseTimeouts
+ description: The workflow's reusable timeouts.
+ additionalProperties:
+ $ref: '#/$defs/timeout'
+ catalogs:
+ type: object
+ title: UseCatalogs
+ description: The workflow's reusable catalogs.
+ additionalProperties:
+ $ref: '#/$defs/catalog'
+ do:
+ $ref: '#/$defs/taskList'
+ title: Do
+ description: Defines the task(s) the workflow must perform.
+ timeout:
+ title: DoTimeout
+ oneOf:
+ - $ref: '#/$defs/timeout'
+ title: TimeoutDefinition
+ description: The workflow's timeout configuration, if any.
+ - type: string
+ title: TimeoutReference
+ description: The name of the workflow's timeout, if any.
+ output:
+ $ref: '#/$defs/output'
+ title: Output
+ description: Configures the workflow's output.
+ schedule:
+ type: object
+ title: Schedule
+ description: Schedules the workflow.
+ unevaluatedProperties: false
+ properties:
+ every:
+ $ref: '#/$defs/duration'
+ title: ScheduleEvery
+ description: Specifies the duration of the interval at which the workflow should be executed.
+ cron:
+ type: string
+ title: ScheduleCron
+ description: Specifies the schedule using a cron expression, e.g., '0 0 * * *' for daily at midnight.
+ after:
+ $ref: '#/$defs/duration'
+ title: ScheduleAfter
+ description: Specifies a delay duration that the workflow must wait before starting again after it completes.
+ on:
+ $ref: '#/$defs/eventConsumptionStrategy'
+ title: ScheduleOn
+ description: Specifies the events that trigger the workflow execution.
+$defs:
+ taskList:
+ title: TaskList
+ description: List of named tasks to perform.
+ type: array
+ items:
+ type: object
+ title: TaskItem
+ minProperties: 1
+ maxProperties: 1
+ additionalProperties:
+ $ref: '#/$defs/task'
+ taskBase:
+ type: object
+ title: TaskBase
+ description: An object inherited by all tasks.
+ properties:
+ if:
+ type: string
+ title: TaskBaseIf
+ description: A runtime expression, if any, used to determine whether or not the task should be run.
+ input:
+ $ref: '#/$defs/input'
+ title: TaskBaseInput
+ description: Configure the task's input.
+ output:
+ $ref: '#/$defs/output'
+ title: TaskBaseOutput
+ description: Configure the task's output.
+ export:
+ $ref: '#/$defs/export'
+ title: TaskBaseExport
+ description: Export task output to context.
+ timeout:
+ title: TaskTimeout
+ oneOf:
+ - $ref: '#/$defs/timeout'
+ title: TaskTimeoutDefinition
+ description: The task's timeout configuration, if any.
+ - type: string
+ title: TaskTimeoutReference
+ description: The name of the task's timeout, if any.
+ then:
+ $ref: '#/$defs/flowDirective'
+ title: TaskBaseThen
+ description: The flow directive to be performed upon completion of the task.
+ metadata:
+ type: object
+ title: TaskMetadata
+ description: Holds additional information about the task.
+ additionalProperties: true
+ task:
+ title: Task
+ description: A discrete unit of work that contributes to achieving the overall objectives defined by the workflow.
+ unevaluatedProperties: false
+ oneOf:
+ - $ref: '#/$defs/callTask'
+ - $ref: '#/$defs/doTask'
+ - $ref: '#/$defs/forkTask'
+ - $ref: '#/$defs/emitTask'
+ - $ref: '#/$defs/forTask'
+ - $ref: '#/$defs/listenTask'
+ - $ref: '#/$defs/raiseTask'
+ - $ref: '#/$defs/runTask'
+ - $ref: '#/$defs/setTask'
+ - $ref: '#/$defs/switchTask'
+ - $ref: '#/$defs/tryTask'
+ - $ref: '#/$defs/waitTask'
+ callTask:
+ title: CallTask
+ description: Defines the call to perform.
+ oneOf:
+ - title: CallAsyncAPI
+ description: Defines the AsyncAPI call to perform.
+ $ref: '#/$defs/taskBase'
+ type: object
+ required: [ call, with ]
+ unevaluatedProperties: false
+ properties:
+ call:
+ type: string
+ const: asyncapi
+ with:
+ type: object
+ title: AsyncApiArguments
+ description: The Async API call arguments.
+ properties:
+ document:
+ $ref: '#/$defs/externalResource'
+ title: AsyncAPIDocument
+ description: The document that defines the AsyncAPI operation to call.
+ channel:
+ type: string
+ title: With
+ description: The name of the channel on which to perform the operation. Used only in case the referenced document uses AsyncAPI v2.6.0.
+ operation:
+ type: string
+ title: AsyncAPIOperation
+ description: A reference to the AsyncAPI operation to call.
+ server:
+ $ref: '#/$defs/asyncApiServer'
+ title: AsyncAPIServer
+ description: An object used to configure to the server to call the specified AsyncAPI operation on.
+ protocol:
+ type: string
+ title: AsyncApiProtocol
+ description: The protocol to use to select the target server.
+ enum: [ amqp, amqp1, anypointmq, googlepubsub, http, ibmmq, jms, kafka, mercure, mqtt, mqtt5, nats, pulsar, redis, sns, solace, sqs, stomp, ws ]
+ message:
+ $ref: '#/$defs/asyncApiOutboundMessage'
+ title: AsyncApiMessage
+ description: An object used to configure the message to publish using the target operation.
+ subscription:
+ $ref: '#/$defs/asyncApiSubscription'
+ title: AsyncApiSubscription
+ description: An object used to configure the subscription to messages consumed using the target operation.
+ authentication:
+ $ref: '#/$defs/referenceableAuthenticationPolicy'
+ title: AsyncAPIAuthentication
+ description: The authentication policy, if any, to use when calling the AsyncAPI operation.
+ oneOf:
+ - required: [ document, operation, message ]
+ - required: [ document, operation, subscription ]
+ - required: [ document, channel, message ]
+ - required: [ document, channel, subscription ]
+ unevaluatedProperties: false
+ - title: CallGRPC
+ description: Defines the GRPC call to perform.
+ $ref: '#/$defs/taskBase'
+ type: object
+ unevaluatedProperties: false
+ required: [ call, with ]
+ properties:
+ call:
+ type: string
+ const: grpc
+ with:
+ type: object
+ title: GRPCArguments
+ description: The GRPC call arguments.
+ properties:
+ proto:
+ $ref: '#/$defs/externalResource'
+ title: WithGRPCProto
+ description: The proto resource that describes the GRPC service to call.
+ service:
+ type: object
+ title: WithGRPCService
+ unevaluatedProperties: false
+ properties:
+ name:
+ type: string
+ title: WithGRPCServiceName
+ description: The name of the GRPC service to call.
+ host:
+ 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])?$
+ port:
+ type: integer
+ title: WithGRPCServicePost
+ description: The port number of the GRPC service to call.
+ minimum: 0
+ maximum: 65535
+ authentication:
+ $ref: '#/$defs/referenceableAuthenticationPolicy'
+ title: WithGRPCServiceAuthentication
+ description: The endpoint's authentication policy, if any.
+ required: [ name, host ]
+ method:
+ type: string
+ title: WithGRPCMethod
+ description: The name of the method to call on the defined GRPC service.
+ arguments:
+ type: object
+ title: WithGRPCArguments
+ description: The arguments, if any, to call the method with.
+ additionalProperties: true
+ required: [ proto, service, method ]
+ unevaluatedProperties: false
+ - title: CallHTTP
+ description: Defines the HTTP call to perform.
+ $ref: '#/$defs/taskBase'
+ type: object
+ unevaluatedProperties: false
+ required: [ call, with ]
+ properties:
+ call:
+ type: string
+ const: http
+ with:
+ type: object
+ title: HTTPArguments
+ description: The HTTP call arguments.
+ properties:
+ method:
+ type: string
+ title: HTTPMethod
+ description: The HTTP method of the HTTP request to perform.
+ endpoint:
+ title: HTTPEndpoint
+ description: The HTTP endpoint to send the request to.
+ $ref: '#/$defs/endpoint'
+ headers:
+ type: object
+ 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
+ title: HTTPQuery
+ description: A name/value mapping of the query parameters, if any, of the HTTP request to perform.
+ additionalProperties: true
+ output:
+ type: string
+ title: HTTPOutput
+ description: The http call output format. Defaults to 'content'.
+ enum: [ raw, content, response ]
+ redirect:
+ type: boolean
+ title: HttpRedirect
+ description: Specifies whether redirection status codes (`300–399`) should be treated as errors.
+ required: [ method, endpoint ]
+ unevaluatedProperties: false
+ - title: CallOpenAPI
+ description: Defines the OpenAPI call to perform.
+ $ref: '#/$defs/taskBase'
+ type: object
+ unevaluatedProperties: false
+ required: [ call, with ]
+ properties:
+ call:
+ type: string
+ const: openapi
+ with:
+ type: object
+ title: OpenAPIArguments
+ description: The OpenAPI call arguments.
+ properties:
+ document:
+ $ref: '#/$defs/externalResource'
+ title: WithOpenAPIDocument
+ description: The document that defines the OpenAPI operation to call.
+ operationId:
+ type: string
+ title: WithOpenAPIOperation
+ description: The id of the OpenAPI operation to call.
+ parameters:
+ type: object
+ title: WithOpenAPIParameters
+ description: A name/value mapping of the parameters of the OpenAPI operation to call.
+ additionalProperties: true
+ authentication:
+ $ref: '#/$defs/referenceableAuthenticationPolicy'
+ title: WithOpenAPIAuthentication
+ description: The authentication policy, if any, to use when calling the OpenAPI operation.
+ output:
+ type: string
+ enum: [ raw, content, response ]
+ title: WithOpenAPIOutput
+ description: The http call output format. Defaults to 'content'.
+ redirect:
+ type: boolean
+ title: HttpRedirect
+ description: Specifies whether redirection status codes (`300–399`) should be treated as errors.
+ required: [ document, operationId ]
+ unevaluatedProperties: false
+ - title: CallFunction
+ description: Defines the function call to perform.
+ $ref: '#/$defs/taskBase'
+ type: object
+ unevaluatedProperties: false
+ required: [ call ]
+ properties:
+ call:
+ type: string
+ not:
+ enum: ["asyncapi", "grpc", "http", "openapi"]
+ description: The name of the function to call.
+ with:
+ type: object
+ title: FunctionArguments
+ description: A name/value mapping of the parameters, if any, to call the function with.
+ additionalProperties: true
+ forkTask:
+ type: object
+ $ref: '#/$defs/taskBase'
+ title: ForkTask
+ description: Allows workflows to execute multiple tasks concurrently and optionally race them against each other, with a single possible winner, which sets the task's output.
+ unevaluatedProperties: false
+ required: [ fork ]
+ properties:
+ fork:
+ type: object
+ title: ForkTaskConfiguration
+ description: The configuration of the branches to perform concurrently.
+ unevaluatedProperties: false
+ required: [ branches ]
+ properties:
+ branches:
+ $ref: '#/$defs/taskList'
+ title: ForkBranches
+ compete:
+ type: boolean
+ title: ForkCompete
+ description: Indicates whether or not the concurrent tasks are racing against each other, with a single possible winner, which sets the composite task's output.
+ default: false
+ doTask:
+ type: object
+ $ref: '#/$defs/taskBase'
+ title: DoTask
+ description: Allows to execute a list of tasks in sequence.
+ unevaluatedProperties: false
+ required: [ do ]
+ properties:
+ do:
+ $ref: '#/$defs/taskList'
+ title: DoTaskConfiguration
+ description: The configuration of the tasks to perform sequentially.
+ emitTask:
+ type: object
+ $ref: '#/$defs/taskBase'
+ title: EmitTask
+ description: Allows workflows to publish events to event brokers or messaging systems, facilitating communication and coordination between different components and services.
+ required: [ emit ]
+ unevaluatedProperties: false
+ properties:
+ emit:
+ type: object
+ title: EmitTaskConfiguration
+ description: The configuration of an event's emission.
+ unevaluatedProperties: false
+ properties:
+ event:
+ type: object
+ title: EmitEventDefinition
+ description: The definition of the event to emit.
+ properties:
+ with:
+ $ref: '#/$defs/eventProperties'
+ title: EmitEventWith
+ description: Defines the properties of event to emit.
+ required: [ source, type ]
+ additionalProperties: true
+ required: [ event ]
+ forTask:
+ type: object
+ $ref: '#/$defs/taskBase'
+ title: ForTask
+ description: Allows workflows to iterate over a collection of items, executing a defined set of subtasks for each item in the collection. This task type is instrumental in handling scenarios such as batch processing, data transformation, and repetitive operations across datasets.
+ required: [ for, do ]
+ unevaluatedProperties: false
+ properties:
+ for:
+ type: object
+ title: ForTaskConfiguration
+ description: The definition of the loop that iterates over a range of values.
+ unevaluatedProperties: false
+ properties:
+ each:
+ type: string
+ title: ForEach
+ description: The name of the variable used to store the current item being enumerated.
+ default: item
+ in:
+ type: string
+ title: ForIn
+ description: A runtime expression used to get the collection to enumerate.
+ at:
+ type: string
+ title: ForAt
+ description: The name of the variable used to store the index of the current item being enumerated.
+ default: index
+ required: [ in ]
+ while:
+ type: string
+ title: While
+ description: A runtime expression that represents the condition, if any, that must be met for the iteration to continue.
+ do:
+ $ref: '#/$defs/taskList'
+ title: ForTaskDo
+ listenTask:
+ type: object
+ $ref: '#/$defs/taskBase'
+ title: ListenTask
+ description: Provides a mechanism for workflows to await and react to external events, enabling event-driven behavior within workflow systems.
+ required: [ listen ]
+ unevaluatedProperties: false
+ properties:
+ listen:
+ type: object
+ title: ListenTaskConfiguration
+ description: The configuration of the listener to use.
+ unevaluatedProperties: false
+ properties:
+ to:
+ $ref: '#/$defs/eventConsumptionStrategy'
+ title: ListenTo
+ description: Defines the event(s) to listen to.
+ read:
+ type: string
+ enum: [ data, envelope, raw ]
+ default: data
+ title: ListenAndReadAs
+ description: Specifies how events are read during the listen operation.
+ required: [ to ]
+ foreach:
+ $ref: '#/$defs/subscriptionIterator'
+ title: ListenIterator
+ description: Configures the iterator, if any, for processing consumed event(s).
+ raiseTask:
+ type: object
+ $ref: '#/$defs/taskBase'
+ title: RaiseTask
+ description: Intentionally triggers and propagates errors.
+ required: [ raise ]
+ unevaluatedProperties: false
+ properties:
+ raise:
+ type: object
+ title: RaiseTaskConfiguration
+ description: The definition of the error to raise.
+ unevaluatedProperties: false
+ properties:
+ error:
+ title: RaiseTaskError
+ oneOf:
+ - $ref: '#/$defs/error'
+ title: RaiseErrorDefinition
+ description: Defines the error to raise.
+ - type: string
+ title: RaiseErrorReference
+ description: The name of the error to raise
+ required: [ error ]
+ runTask:
+ type: object
+ $ref: '#/$defs/taskBase'
+ title: RunTask
+ description: Provides the capability to execute external containers, shell commands, scripts, or workflows.
+ required: [ run ]
+ unevaluatedProperties: false
+ properties:
+ run:
+ type: object
+ title: RunTaskConfiguration
+ description: The configuration of the process to execute.
+ unevaluatedProperties: false
+ properties:
+ await:
+ type: boolean
+ default: true
+ title: AwaitProcessCompletion
+ description: Whether to await the process completion before continuing.
+ return:
+ type: string
+ title: ProcessReturnType
+ description: Configures the output of the process.
+ enum: [ stdout, stderr, code, all, none ]
+ default: stdout
+ oneOf:
+ - title: RunContainer
+ description: Enables the execution of external processes encapsulated within a containerized environment.
+ properties:
+ container:
+ type: object
+ title: Container
+ description: The configuration of the container to run.
+ unevaluatedProperties: false
+ properties:
+ image:
+ type: string
+ title: ContainerImage
+ description: The name of the container image to run.
+ name:
+ type: string
+ title: ContainerName
+ description: A runtime expression, if any, used to give specific name to the container.
+ command:
+ type: string
+ title: ContainerCommand
+ description: The command, if any, to execute on the container.
+ ports:
+ type: object
+ title: ContainerPorts
+ description: The container's port mappings, if any.
+ volumes:
+ type: object
+ title: ContainerVolumes
+ description: The container's volume mappings, if any.
+ environment:
+ type: object
+ title: ContainerEnvironment
+ description: A key/value mapping of the environment variables, if any, to use when running the configured process.
+ lifetime:
+ $ref: '#/$defs/containerLifetime'
+ title: ContainerLifetime
+ description: An object, if any, used to configure the container's lifetime
+ required: [ image ]
+ required: [ container ]
+ - title: RunScript
+ description: Enables the execution of custom scripts or code within a workflow, empowering workflows to perform specialized logic, data processing, or integration tasks by executing user-defined scripts written in various programming languages.
+ properties:
+ script:
+ type: object
+ title: Script
+ description: The configuration of the script to run.
+ unevaluatedProperties: false
+ properties:
+ language:
+ type: string
+ title: ScriptLanguage
+ description: The language of the script to run.
+ arguments:
+ type: object
+ title: ScriptArguments
+ description: A key/value mapping of the arguments, if any, to use when running the configured script.
+ additionalProperties: true
+ environment:
+ type: object
+ title: ScriptEnvironment
+ description: A key/value mapping of the environment variables, if any, to use when running the configured script process.
+ additionalProperties: true
+ oneOf:
+ - title: InlineScript
+ type: object
+ description: The script's code.
+ properties:
+ code:
+ type: string
+ title: InlineScriptCode
+ required: [ code ]
+ - title: ExternalScript
+ type: object
+ description: The script's resource.
+ properties:
+ source:
+ $ref: '#/$defs/externalResource'
+ title: ExternalScriptResource
+ required: [ source ]
+ required: [ language ]
+ required: [ script ]
+ - title: RunShell
+ description: Enables the execution of shell commands within a workflow, enabling workflows to interact with the underlying operating system and perform system-level operations, such as file manipulation, environment configuration, or system administration tasks.
+ properties:
+ shell:
+ type: object
+ title: Shell
+ description: The configuration of the shell command to run.
+ unevaluatedProperties: false
+ properties:
+ command:
+ type: string
+ title: ShellCommand
+ description: The shell command to run.
+ arguments:
+ type: object
+ title: ShellArguments
+ description: A list of the arguments of the shell command to run.
+ additionalProperties: true
+ environment:
+ type: object
+ title: ShellEnvironment
+ description: A key/value mapping of the environment variables, if any, to use when running the configured process.
+ additionalProperties: true
+ required: [ command ]
+ required: [ shell ]
+ - title: RunWorkflow
+ description: Enables the invocation and execution of nested workflows within a parent workflow, facilitating modularization, reusability, and abstraction of complex logic or business processes by encapsulating them into standalone workflow units.
+ properties:
+ workflow:
+ type: object
+ title: SubflowConfiguration
+ description: The configuration of the workflow to run.
+ unevaluatedProperties: false
+ properties:
+ namespace:
+ type: string
+ title: SubflowNamespace
+ description: The namespace the workflow to run belongs to.
+ name:
+ type: string
+ title: SubflowName
+ description: The name of the workflow to run.
+ version:
+ type: string
+ default: latest
+ title: SubflowVersion
+ description: The version of the workflow to run. Defaults to latest.
+ input:
+ type: object
+ title: SubflowInput
+ description: The data, if any, to pass as input to the workflow to execute. The value should be validated against the target workflow's input schema, if specified.
+ additionalProperties: true
+ required: [ namespace, name, version ]
+ required: [ workflow ]
+ setTask:
+ type: object
+ $ref: '#/$defs/taskBase'
+ title: SetTask
+ description: A task used to set data.
+ required: [ set ]
+ unevaluatedProperties: false
+ properties:
+ set:
+ type: object
+ title: SetTaskConfiguration
+ description: The data to set.
+ minProperties: 1
+ additionalProperties: true
+ switchTask:
+ type: object
+ $ref: '#/$defs/taskBase'
+ title: SwitchTask
+ description: Enables conditional branching within workflows, allowing them to dynamically select different paths based on specified conditions or criteria.
+ required: [ switch ]
+ unevaluatedProperties: false
+ properties:
+ switch:
+ type: array
+ title: SwitchTaskConfiguration
+ description: The definition of the switch to use.
+ minItems: 1
+ items:
+ type: object
+ title: SwitchItem
+ minProperties: 1
+ maxProperties: 1
+ additionalProperties:
+ type: object
+ title: SwitchCase
+ description: The definition of a case within a switch task, defining a condition and corresponding tasks to execute if the condition is met.
+ unevaluatedProperties: false
+ required: [ then ]
+ properties:
+ when:
+ type: string
+ title: SwitchCaseCondition
+ description: A runtime expression used to determine whether or not the case matches.
+ then:
+ $ref: '#/$defs/flowDirective'
+ title: SwitchCaseOutcome
+ description: The flow directive to execute when the case matches.
+ tryTask:
+ type: object
+ $ref: '#/$defs/taskBase'
+ title: TryTask
+ description: Serves as a mechanism within workflows to handle errors gracefully, potentially retrying failed tasks before proceeding with alternate ones.
+ required: [ try, catch ]
+ unevaluatedProperties: false
+ properties:
+ try:
+ $ref: '#/$defs/taskList'
+ title: TryTaskConfiguration
+ description: The task(s) to perform.
+ catch:
+ type: object
+ title: TryTaskCatch
+ description: The object used to define the errors to catch.
+ unevaluatedProperties: false
+ properties:
+ errors:
+ type: object
+ title: CatchErrors
+ properties:
+ with:
+ $ref: '#/$defs/errorFilter'
+ description: static error filter
+ as:
+ type: string
+ title: CatchAs
+ description: The name of the runtime expression variable to save the error as. Defaults to 'error'.
+ when:
+ type: string
+ title: CatchWhen
+ description: A runtime expression used to determine whether to catch the filtered error.
+ exceptWhen:
+ type: string
+ title: CatchExceptWhen
+ description: A runtime expression used to determine whether not to catch the filtered error.
+ retry:
+ oneOf:
+ - $ref: '#/$defs/retryPolicy'
+ title: RetryPolicyDefinition
+ description: The retry policy to use, if any, when catching errors.
+ - type: string
+ title: RetryPolicyReference
+ description: The name of the retry policy to use, if any, when catching errors.
+ do:
+ $ref: '#/$defs/taskList'
+ title: TryTaskCatchDo
+ description: The definition of the task(s) to run when catching an error.
+ waitTask:
+ type: object
+ $ref: '#/$defs/taskBase'
+ title: WaitTask
+ description: Allows workflows to pause or delay their execution for a specified period of time.
+ required: [ wait ]
+ unevaluatedProperties: false
+ properties:
+ wait:
+ $ref: '#/$defs/duration'
+ title: WaitTaskConfiguration
+ description: The amount of time to wait.
+ flowDirective:
+ title: FlowDirective
+ description: Represents different transition options for a workflow.
+ anyOf:
+ - title: FlowDirectiveEnum
+ type: string
+ enum: [ continue, exit, end ]
+ default: continue
+ - type: string
+ referenceableAuthenticationPolicy:
+ type: object
+ title: ReferenceableAuthenticationPolicy
+ description: Represents a referenceable authentication policy.
+ unevaluatedProperties: false
+ oneOf:
+ - title: AuthenticationPolicyReference
+ description: The reference of the authentication policy to use.
+ properties:
+ use:
+ type: string
+ minLength: 1
+ title: ReferenceableAuthenticationPolicyName
+ description: The name of the authentication policy to use.
+ required: [use]
+ - $ref: '#/$defs/authenticationPolicy'
+ secretBasedAuthenticationPolicy:
+ type: object
+ title: SecretBasedAuthenticationPolicy
+ description: Represents an authentication policy based on secrets.
+ unevaluatedProperties: false
+ properties:
+ use:
+ type: string
+ minLength: 1
+ title: SecretBasedAuthenticationPolicyName
+ description: The name of the authentication policy to use.
+ required: [use]
+ authenticationPolicy:
+ type: object
+ title: AuthenticationPolicy
+ description: Defines an authentication policy.
+ oneOf:
+ - title: BasicAuthenticationPolicy
+ description: Use basic authentication.
+ properties:
+ basic:
+ type: object
+ title: BasicAuthenticationPolicyConfiguration
+ description: The configuration of the basic authentication policy.
+ unevaluatedProperties: false
+ oneOf:
+ - title: BasicAuthenticationProperties
+ description: Inline configuration of the basic authentication policy.
+ properties:
+ username:
+ type: string
+ description: The username to use.
+ password:
+ type: string
+ description: The password to use.
+ required: [ username, password ]
+ - $ref: '#/$defs/secretBasedAuthenticationPolicy'
+ title: BasicAuthenticationPolicySecret
+ description: Secret based configuration of the basic authentication policy.
+ required: [ basic ]
+ - title: BearerAuthenticationPolicy
+ description: Use bearer authentication.
+ properties:
+ bearer:
+ type: object
+ title: BearerAuthenticationPolicyConfiguration
+ description: The configuration of the bearer authentication policy.
+ unevaluatedProperties: false
+ oneOf:
+ - title: BearerAuthenticationProperties
+ description: Inline configuration of the bearer authentication policy.
+ properties:
+ token:
+ type: string
+ description: The bearer token to use.
+ required: [ token ]
+ - $ref: '#/$defs/secretBasedAuthenticationPolicy'
+ title: BearerAuthenticationPolicySecret
+ description: Secret based configuration of the bearer authentication policy.
+ required: [ bearer ]
+ - title: DigestAuthenticationPolicy
+ description: Use digest authentication.
+ properties:
+ digest:
+ type: object
+ title: DigestAuthenticationPolicyConfiguration
+ description: The configuration of the digest authentication policy.
+ unevaluatedProperties: false
+ oneOf:
+ - title: DigestAuthenticationProperties
+ description: Inline configuration of the digest authentication policy.
+ properties:
+ username:
+ type: string
+ description: The username to use.
+ password:
+ type: string
+ description: The password to use.
+ required: [ username, password ]
+ - $ref: '#/$defs/secretBasedAuthenticationPolicy'
+ title: DigestAuthenticationPolicySecret
+ description: Secret based configuration of the digest authentication policy.
+ required: [ digest ]
+ - title: OAuth2AuthenticationPolicy
+ description: Use OAuth2 authentication.
+ properties:
+ oauth2:
+ type: object
+ title: OAuth2AuthenticationPolicyConfiguration
+ description: The configuration of the OAuth2 authentication policy.
+ unevaluatedProperties: false
+ oneOf:
+ - 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:
+ 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.
+ required: [ oauth2 ]
+ - title: OpenIdConnectAuthenticationPolicy
+ description: Use OpenIdConnect authentication.
+ properties:
+ oidc:
+ type: object
+ title: OpenIdConnectAuthenticationPolicyConfiguration
+ description: The configuration of the OpenIdConnect authentication policy.
+ unevaluatedProperties: false
+ oneOf:
+ - $ref: '#/$defs/oauth2AuthenticationProperties'
+ title: OpenIdConnectAuthenticationProperties
+ description: The inline configuration of the OpenIdConnect authentication policy.
+ unevaluatedProperties: false
+ - $ref: '#/$defs/secretBasedAuthenticationPolicy'
+ title: OpenIdConnectAuthenticationPolicySecret
+ description: Secret based configuration of the OpenIdConnect authentication policy.
+ required: [ oidc ]
+ oauth2AuthenticationProperties:
+ type: object
+ title: OAuth2AutenthicationData
+ description: Inline configuration of the OAuth2 authentication policy.
+ properties:
+ authority:
+ $ref: '#/$defs/uriTemplate'
+ title: OAuth2AutenthicationDataAuthority
+ description: The URI that references the OAuth2 authority to use.
+ grant:
+ type: string
+ enum: [ authorization_code, client_credentials, password, refresh_token, 'urn:ietf:params:oauth:grant-type:token-exchange']
+ title: OAuth2AutenthicationDataGrant
+ description: The grant type to use.
+ client:
+ type: object
+ title: OAuth2AutenthicationDataClient
+ description: The definition of an OAuth2 client.
+ unevaluatedProperties: false
+ properties:
+ id:
+ type: string
+ title: ClientId
+ description: The client id to use.
+ secret:
+ type: string
+ title: ClientSecret
+ description: The client secret to use, if any.
+ assertion:
+ type: string
+ title: ClientAssertion
+ description: A JWT containing a signed assertion with your application credentials.
+ authentication:
+ type: string
+ enum: [ client_secret_basic, client_secret_post, client_secret_jwt, private_key_jwt, none ]
+ default: client_secret_post
+ title: ClientAuthentication
+ description: The authentication method to use to authenticate the client.
+ request:
+ type: object
+ title: OAuth2TokenRequest
+ description: The configuration of an OAuth2 token request
+ properties:
+ encoding:
+ type: string
+ enum: [ 'application/x-www-form-urlencoded', 'application/json' ]
+ default: 'application/x-www-form-urlencoded'
+ title: Oauth2TokenRequestEncoding
+ issuers:
+ type: array
+ title: OAuth2Issuers
+ description: A list that contains that contains valid issuers that will be used to check against the issuer of generated tokens.
+ items:
+ type: string
+ scopes:
+ type: array
+ title: OAuth2AutenthicationDataScopes
+ description: The scopes, if any, to request the token for.
+ items:
+ type: string
+ audiences:
+ type: array
+ title: OAuth2AutenthicationDataAudiences
+ description: The audiences, if any, to request the token for.
+ items:
+ type: string
+ username:
+ type: string
+ title: OAuth2AutenthicationDataUsername
+ description: The username to use. Used only if the grant type is Password.
+ password:
+ type: string
+ title: OAuth2AutenthicationDataPassword
+ description: The password to use. Used only if the grant type is Password.
+ subject:
+ $ref: '#/$defs/oauth2Token'
+ title: OAuth2AutenthicationDataSubject
+ description: The security token that represents the identity of the party on behalf of whom the request is being made.
+ actor:
+ $ref: '#/$defs/oauth2Token'
+ title: OAuth2AutenthicationDataActor
+ description: The security token that represents the identity of the acting party.
+ oauth2Token:
+ type: object
+ title: OAuth2TokenDefinition
+ description: Represents an OAuth2 token.
+ unevaluatedProperties: false
+ properties:
+ token:
+ type: string
+ title: OAuth2Token
+ description: The security token to use.
+ type:
+ type: string
+ title: OAuth2TokenType
+ description: The type of the security token to use.
+ required: [ token, type ]
+ duration:
+ oneOf:
+ - type: object
+ minProperties: 1
+ unevaluatedProperties: false
+ properties:
+ days:
+ type: integer
+ title: DurationDays
+ description: Number of days, if any.
+ hours:
+ type: integer
+ title: DurationHours
+ description: Number of days, if any.
+ minutes:
+ type: integer
+ title: DurationMinutes
+ description: Number of minutes, if any.
+ seconds:
+ type: integer
+ title: DurationSeconds
+ description: Number of seconds, if any.
+ milliseconds:
+ type: integer
+ title: DurationMilliseconds
+ description: Number of milliseconds, if any.
+ title: DurationInline
+ description: The inline definition of a duration.
+ - type: string
+ pattern: '^P(?!$)(\d+(?:\.\d+)?Y)?(\d+(?:\.\d+)?M)?(\d+(?:\.\d+)?W)?(\d+(?:\.\d+)?D)?(T(?=\d)(\d+(?:\.\d+)?H)?(\d+(?:\.\d+)?M)?(\d+(?:\.\d+)?S)?)?$'
+ title: DurationExpression
+ description: The ISO 8601 expression of a duration.
+ error:
+ type: object
+ title: Error
+ description: Represents an error.
+ unevaluatedProperties: false
+ properties:
+ type:
+ title: ErrorType
+ description: A URI reference that identifies the error type.
+ oneOf:
+ - title: LiteralErrorType
+ $ref: '#/$defs/uriTemplate'
+ description: The literal error type.
+ - title: ExpressionErrorType
+ $ref: '#/$defs/runtimeExpression'
+ description: An expression based error type.
+ status:
+ type: integer
+ title: ErrorStatus
+ description: The status code generated by the origin for this occurrence of the error.
+ instance:
+ title: ErrorInstance
+ description: A JSON Pointer used to reference the component the error originates from.
+ oneOf:
+ - title: LiteralErrorInstance
+ description: The literal error instance.
+ type: string
+ format: json-pointer
+ - $ref: '#/$defs/runtimeExpression'
+ title: ExpressionErrorInstance
+ description: An expression based error instance.
+ title:
+ type: string
+ title: ErrorTitle
+ description: A short, human-readable summary of the error.
+ detail:
+ type: string
+ title: ErrorDetails
+ description: A human-readable explanation specific to this occurrence of the error.
+ required: [ type, status ]
+ errorFilter:
+ type: object
+ title: ErrorFilter
+ description: Error filtering base on static values. For error filtering on dynamic values, use catch.when property
+ minProperties: 1
+ properties:
+ type:
+ type: string
+ description: if present, means this value should be used for filtering
+ status:
+ type: integer
+ description: if present, means this value should be used for filtering
+ instance:
+ type: string
+ description: if present, means this value should be used for filtering
+ title:
+ type: string
+ description: if present, means this value should be used for filtering
+ details:
+ type: string
+ description: if present, means this value should be used for filtering
+ uriTemplate:
+ title: UriTemplate
+ anyOf:
+ - title: LiteralUriTemplate
+ type: string
+ format: uri-template
+ pattern: "^[A-Za-z][A-Za-z0-9+\\-.]*://.*"
+ - title: LiteralUri
+ type: string
+ format: uri
+ pattern: "^[A-Za-z][A-Za-z0-9+\\-.]*://.*"
+ endpoint:
+ title: Endpoint
+ description: Represents an endpoint.
+ oneOf:
+ - $ref: '#/$defs/runtimeExpression'
+ - $ref: '#/$defs/uriTemplate'
+ - title: EndpointConfiguration
+ type: object
+ unevaluatedProperties: false
+ properties:
+ uri:
+ title: EndpointUri
+ description: The endpoint's URI.
+ oneOf:
+ - title: LiteralEndpointURI
+ description: The literal endpoint's URI.
+ $ref: '#/$defs/uriTemplate'
+ - title: ExpressionEndpointURI
+ $ref: '#/$defs/runtimeExpression'
+ description: An expression based endpoint's URI.
+ authentication:
+ $ref: '#/$defs/referenceableAuthenticationPolicy'
+ title: EndpointAuthentication
+ description: The authentication policy to use.
+ required: [ uri ]
+ eventProperties:
+ type: object
+ title: EventProperties
+ description: Describes the properties of an event.
+ properties:
+ id:
+ type: string
+ title: EventId
+ description: The event's unique identifier.
+ source:
+ title: EventSource
+ description: Identifies the context in which an event happened.
+ oneOf:
+ - $ref: '#/$defs/uriTemplate'
+ - $ref: '#/$defs/runtimeExpression'
+ type:
+ type: string
+ title: EventType
+ description: This attribute contains a value describing the type of event related to the originating occurrence.
+ time:
+ title: EventTime
+ description: When the event occured.
+ oneOf:
+ - title: LiteralTime
+ type: string
+ format: date-time
+ - $ref: '#/$defs/runtimeExpression'
+ subject:
+ type: string
+ title: EventSubject
+ description: The subject of the event.
+ datacontenttype:
+ type: string
+ title: EventDataContentType
+ description: Content type of data value. This attribute enables data to carry any type of content, whereby format and encoding might differ from that of the chosen event format.
+ dataschema:
+ title: EventDataschema
+ description: The schema describing the event format.
+ oneOf:
+ - title: LiteralDataSchema
+ $ref: '#/$defs/uriTemplate'
+ description: The literal event data schema.
+ - title: ExpressionDataSchema
+ $ref: '#/$defs/runtimeExpression'
+ description: An expression based event data schema.
+ data:
+ title: EventData
+ description: The event's payload data
+ anyOf:
+ - $ref: '#/$defs/runtimeExpression'
+ - {}
+ additionalProperties: true
+ eventConsumptionStrategy:
+ type: object
+ title: EventConsumptionStrategy
+ description: Describe the event consumption strategy to adopt.
+ unevaluatedProperties: false
+ oneOf:
+ - title: AllEventConsumptionStrategy
+ properties:
+ all:
+ type: array
+ title: AllEventConsumptionStrategyConfiguration
+ description: A list containing all the events that must be consumed.
+ items:
+ $ref: '#/$defs/eventFilter'
+ required: [ all ]
+ - title: AnyEventConsumptionStrategy
+ properties:
+ any:
+ type: array
+ title: AnyEventConsumptionStrategyConfiguration
+ description: A list containing any of the events to consume.
+ items:
+ $ref: '#/$defs/eventFilter'
+ until:
+ oneOf:
+ - type: string
+ title: AnyEventUntilCondition
+ description: A runtime expression condition evaluated after consuming an event and which determines whether or not to continue listening.
+ - allOf:
+ - $ref: '#/$defs/eventConsumptionStrategy'
+ description: The strategy that defines the event(s) to consume to stop listening.
+ - properties:
+ until: false
+ title: AnyEventUntilConsumed
+ required: [ any ]
+ - title: OneEventConsumptionStrategy
+ properties:
+ one:
+ $ref: '#/$defs/eventFilter'
+ title: OneEventConsumptionStrategyConfiguration
+ description: The single event to consume.
+ required: [ one ]
+ eventFilter:
+ type: object
+ title: EventFilter
+ description: An event filter is a mechanism used to selectively process or handle events based on predefined criteria, such as event type, source, or specific attributes.
+ unevaluatedProperties: false
+ properties:
+ with:
+ $ref: '#/$defs/eventProperties'
+ minProperties: 1
+ title: WithEvent
+ description: An event filter is a mechanism used to selectively process or handle events based on predefined criteria, such as event type, source, or specific attributes.
+ correlate:
+ type: object
+ title: EventFilterCorrelate
+ description: A correlation is a link between events and data, established by mapping event attributes to specific data attributes, allowing for coordinated processing or handling based on event characteristics.
+ additionalProperties:
+ type: object
+ properties:
+ from:
+ type: string
+ title: CorrelateFrom
+ description: A runtime expression used to extract the correlation value from the filtered event.
+ expect:
+ type: string
+ title: CorrelateExpect
+ description: A constant or a runtime expression, if any, used to determine whether or not the extracted correlation value matches expectations. If not set, the first extracted value will be used as the correlation's expectation.
+ required: [ from ]
+ required: [ with ]
+ extension:
+ type: object
+ title: Extension
+ description: The definition of an extension.
+ unevaluatedProperties: false
+ properties:
+ extend:
+ type: string
+ enum: [ call, composite, emit, for, listen, raise, run, set, switch, try, wait, all ]
+ title: ExtensionTarget
+ description: The type of task to extend.
+ when:
+ type: string
+ title: ExtensionCondition
+ description: A runtime expression, if any, used to determine whether or not the extension should apply in the specified context.
+ before:
+ $ref: '#/$defs/taskList'
+ title: ExtensionDoBefore
+ description: The task(s) to execute before the extended task, if any.
+ after:
+ $ref: '#/$defs/taskList'
+ title: ExtensionDoAfter
+ description: The task(s) to execute after the extended task, if any.
+ required: [ extend ]
+ externalResource:
+ type: object
+ title: ExternalResource
+ description: Represents an external resource.
+ unevaluatedProperties: false
+ properties:
+ name:
+ type: string
+ title: ExternalResourceName
+ description: The name of the external resource, if any.
+ endpoint:
+ $ref: '#/$defs/endpoint'
+ title: ExternalResourceEndpoint
+ description: The endpoint of the external resource.
+ required: [ endpoint ]
+ input:
+ type: object
+ title: Input
+ description: Configures the input of a workflow or task.
+ unevaluatedProperties: false
+ properties:
+ schema:
+ $ref: '#/$defs/schema'
+ title: InputSchema
+ description: The schema used to describe and validate the input of the workflow or task.
+ from:
+ title: InputFrom
+ description: A runtime expression, if any, used to mutate and/or filter the input of the workflow or task.
+ oneOf:
+ - type: string
+ - type: object
+ output:
+ type: object
+ title: Output
+ description: Configures the output of a workflow or task.
+ unevaluatedProperties: false
+ properties:
+ schema:
+ $ref: '#/$defs/schema'
+ title: OutputSchema
+ description: The schema used to describe and validate the output of the workflow or task.
+ as:
+ title: OutputAs
+ description: A runtime expression, if any, used to mutate and/or filter the output of the workflow or task.
+ oneOf:
+ - type: string
+ - type: object
+ export:
+ type: object
+ title: Export
+ description: Set the content of the context. .
+ unevaluatedProperties: false
+ properties:
+ schema:
+ $ref: '#/$defs/schema'
+ title: ExportSchema
+ description: The schema used to describe and validate the workflow context.
+ as:
+ title: ExportAs
+ description: A runtime expression, if any, used to export the output data to the context.
+ oneOf:
+ - type: string
+ - type: object
+ retryPolicy:
+ type: object
+ title: RetryPolicy
+ description: Defines a retry policy.
+ unevaluatedProperties: false
+ properties:
+ when:
+ type: string
+ title: RetryWhen
+ description: A runtime expression, if any, used to determine whether or not to retry running the task, in a given context.
+ exceptWhen:
+ type: string
+ title: RetryExcepWhen
+ description: A runtime expression used to determine whether or not to retry running the task, in a given context.
+ delay:
+ $ref: '#/$defs/duration'
+ title: RetryDelay
+ description: The duration to wait between retry attempts.
+ backoff:
+ type: object
+ title: RetryBackoff
+ description: The retry duration backoff.
+ unevaluatedProperties: false
+ oneOf:
+ - title: ConstantBackoff
+ properties:
+ constant:
+ type: object
+ description: The definition of the constant backoff to use, if any.
+ required: [ constant ]
+ - title: ExponentialBackOff
+ properties:
+ exponential:
+ type: object
+ description: The definition of the exponential backoff to use, if any.
+ required: [ exponential ]
+ - title: LinearBackoff
+ properties:
+ linear:
+ type: object
+ description: The definition of the linear backoff to use, if any.
+ required: [ linear ]
+ limit:
+ type: object
+ title: RetryLimit
+ unevaluatedProperties: false
+ properties:
+ attempt:
+ type: object
+ title: RetryLimitAttempt
+ unevaluatedProperties: false
+ properties:
+ count:
+ type: integer
+ title: RetryLimitAttemptCount
+ description: The maximum amount of retry attempts, if any.
+ duration:
+ $ref: '#/$defs/duration'
+ title: RetryLimitAttemptDuration
+ description: The maximum duration for each retry attempt.
+ duration:
+ $ref: '#/$defs/duration'
+ title: RetryLimitDuration
+ description: The duration limit, if any, for all retry attempts.
+ description: The retry limit, if any.
+ jitter:
+ type: object
+ title: RetryPolicyJitter
+ description: The parameters, if any, that control the randomness or variability of the delay between retry attempts.
+ unevaluatedProperties: false
+ properties:
+ from:
+ $ref: '#/$defs/duration'
+ title: RetryPolicyJitterFrom
+ description: The minimum duration of the jitter range.
+ to:
+ $ref: '#/$defs/duration'
+ title: RetryPolicyJitterTo
+ description: The maximum duration of the jitter range.
+ required: [ from, to ]
+ schema:
+ type: object
+ title: Schema
+ description: Represents the definition of a schema.
+ unevaluatedProperties: false
+ properties:
+ format:
+ type: string
+ default: json
+ title: SchemaFormat
+ description: The schema's format. Defaults to 'json'. The (optional) version of the format can be set using `{format}:{version}`.
+ oneOf:
+ - title: SchemaInline
+ properties:
+ document:
+ description: The schema's inline definition.
+ required: [ document ]
+ - title: SchemaExternal
+ properties:
+ resource:
+ $ref: '#/$defs/externalResource'
+ title: SchemaExternalResource
+ description: The schema's external resource.
+ required: [ resource ]
+ timeout:
+ type: object
+ title: Timeout
+ description: The definition of a timeout.
+ unevaluatedProperties: false
+ properties:
+ after:
+ $ref: '#/$defs/duration'
+ title: TimeoutAfter
+ description: The duration after which to timeout.
+ required: [ after ]
+ catalog:
+ type: object
+ title: Catalog
+ description: The definition of a resource catalog.
+ unevaluatedProperties: false
+ properties:
+ endpoint:
+ $ref: '#/$defs/endpoint'
+ title: CatalogEndpoint
+ description: The root URL where the catalog is hosted.
+ required: [ endpoint ]
+ runtimeExpression:
+ type: string
+ title: RuntimeExpression
+ description: A runtime expression.
+ pattern: "^\\s*\\$\\{.+\\}\\s*$"
+ containerLifetime:
+ type: object
+ title: ContainerLifetime
+ description: The configuration of a container's lifetime
+ unevaluatedProperties: false
+ properties:
+ cleanup:
+ type: string
+ title: ContainerCleanupPolicy
+ description: The container cleanup policy to use
+ enum: [ always, never, eventually ]
+ default: never
+ after:
+ $ref: '#/$defs/duration'
+ title: ContainerLifetimeDuration
+ description: The duration after which to cleanup the container, in case the cleanup policy has been set to 'eventually'
+ required: [ cleanup ]
+ if:
+ properties:
+ cleanup:
+ const: eventually
+ then:
+ required: [ after ]
+ else:
+ not:
+ required: [ after ]
+ processResult:
+ type: object
+ title: ProcessResult
+ description: The object returned by a run task when its return type has been set 'all'.
+ unevaluatedProperties: false
+ properties:
+ code:
+ type: integer
+ title: ProcessExitCode
+ description: The process's exit code.
+ stdout:
+ type: string
+ title: ProcessStandardOutput
+ description: The content of the process's STDOUT.
+ stderr:
+ type: string
+ title: ProcessStandardError
+ description: The content of the process's STDERR.
+ required: [ code, stdout, stderr ]
+ asyncApiServer:
+ type: object
+ title: AsyncApiServer
+ description: Configures the target server of an AsyncAPI operation.
+ unevaluatedProperties: false
+ properties:
+ name:
+ type: string
+ title: AsyncApiServerName
+ description: The target server's name.
+ variables:
+ type: object
+ title: AsyncApiServerVariables
+ description: The target server's variables, if any.
+ required: [ name ]
+ asyncApiOutboundMessage:
+ type: object
+ title: AsyncApiOutboundMessage
+ description: An object used to configure the message to publish using the target operation.
+ unevaluatedProperties: false
+ properties:
+ payload:
+ 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
+ title: AsyncApiInboundMessage
+ description: Represents a message counsumed by an AsyncAPI subscription.
+ allOf:
+ - $ref: '#/$defs/asyncApiOutboundMessage'
+ properties:
+ correlationId:
+ type: string
+ title: AsyncApiMessageCorrelationId
+ description: The message's correlation id, if any.
+ asyncApiSubscription:
+ type: object
+ title: AsyncApiSubscription
+ description: An object used to configure the subscription to messages consumed using the target operation.
+ unevaluatedProperties: false
+ properties:
+ filter:
+ $ref: '#/$defs/runtimeExpression'
+ title: AsyncApiSubscriptionCorrelation
+ description: A runtime expression, if any, used to filter consumed messages.
+ consume:
+ $ref: '#/$defs/asyncApiMessageConsumptionPolicy'
+ title: AsyncApiMessageConsumptionPolicy
+ description: An object used to configure the subscription's message consumption policy.
+ foreach:
+ $ref: '#/$defs/subscriptionIterator'
+ title: AsyncApiSubscriptionIterator
+ description: Configures the iterator, if any, for processing consumed messages(s).
+ required: [ consume ]
+ asyncApiMessageConsumptionPolicy:
+ type: object
+ title: AsyncApiMessageConsumptionPolicy
+ description: An object used to configure a subscription's message consumption policy.
+ unevaluatedProperties: false
+ properties:
+ for:
+ $ref: '#/$defs/duration'
+ title: AsyncApiMessageConsumptionPolicyFor
+ description: Specifies the time period over which messages will be consumed.
+ oneOf:
+ - properties:
+ amount:
+ type: integer
+ description: The amount of (filtered) messages to consume before disposing of the subscription.
+ title: AsyncApiMessageConsumptionPolicyAmount
+ required: [ amount ]
+ - properties:
+ while:
+ $ref: '#/$defs/runtimeExpression'
+ 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'
+ description: A runtime expression evaluated before each consumed (filtered) message to decide if message consumption should continue.
+ title: AsyncApiMessageConsumptionPolicyUntil
+ required: [ until ]
+ subscriptionIterator:
+ type: object
+ title: SubscriptionIterator
+ description: Configures the iteration over each item (event or message) consumed by a subscription.
+ unevaluatedProperties: false
+ properties:
+ item:
+ type: string
+ title: SubscriptionIteratorItem
+ description: The name of the variable used to store the current item being enumerated.
+ default: item
+ at:
+ type: string
+ title: SubscriptionIteratorIndex
+ description: The name of the variable used to store the index of the current item being enumerated.
+ default: index
+ do:
+ $ref: '#/$defs/taskList'
+ title: SubscriptionIteratorTasks
+ description: The tasks to perform for each consumed item.
+ output:
+ $ref: '#/$defs/output'
+ title: SubscriptionIteratorOutput
+ description: An object, if any, used to customize the item's output and to document its schema.
+ export:
+ $ref: '#/$defs/export'
+ title: SubscriptionIteratorExport
+ description: An object, if any, used to customize the content of the workflow context.
\ No newline at end of file
diff --git a/public/schemas/1.0.1/workflow.json b/public/schemas/1.0.1/workflow.json
new file mode 100644
index 0000000..c156348
--- /dev/null
+++ b/public/schemas/1.0.1/workflow.json
@@ -0,0 +1,2904 @@
+{
+ "$id": "https://open-workflow-specification.org/schemas/1.0.1/workflow.yaml",
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
+ "description": "Open Workflow Specification DSL - Workflow Schema.",
+ "type": "object",
+ "required": [
+ "document",
+ "do"
+ ],
+ "properties": {
+ "document": {
+ "type": "object",
+ "title": "Document",
+ "description": "Documents the workflow.",
+ "unevaluatedProperties": false,
+ "properties": {
+ "dsl": {
+ "type": "string",
+ "pattern": "^(0|[1-9]\\d*)\\.(0|[1-9]\\d*)\\.(0|[1-9]\\d*)(?:-((?:0|[1-9]\\d*|\\d*[a-zA-Z-][0-9a-zA-Z-]*)(?:\\.(?:0|[1-9]\\d*|\\d*[a-zA-Z-][0-9a-zA-Z-]*))*))?(?:\\+([0-9a-zA-Z-]+(?:\\.[0-9a-zA-Z-]+)*))?$",
+ "title": "WorkflowDSL",
+ "description": "The version of the DSL used by the workflow."
+ },
+ "namespace": {
+ "type": "string",
+ "pattern": "^[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?$",
+ "title": "WorkflowNamespace",
+ "description": "The workflow's namespace."
+ },
+ "name": {
+ "type": "string",
+ "pattern": "^[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?$",
+ "title": "WorkflowName",
+ "description": "The workflow's name."
+ },
+ "version": {
+ "type": "string",
+ "pattern": "^(0|[1-9]\\d*)\\.(0|[1-9]\\d*)\\.(0|[1-9]\\d*)(?:-((?:0|[1-9]\\d*|\\d*[a-zA-Z-][0-9a-zA-Z-]*)(?:\\.(?:0|[1-9]\\d*|\\d*[a-zA-Z-][0-9a-zA-Z-]*))*))?(?:\\+([0-9a-zA-Z-]+(?:\\.[0-9a-zA-Z-]+)*))?$",
+ "title": "WorkflowVersion",
+ "description": "The workflow's semantic version."
+ },
+ "title": {
+ "type": "string",
+ "title": "WorkflowTitle",
+ "description": "The workflow's title."
+ },
+ "summary": {
+ "type": "string",
+ "title": "WorkflowSummary",
+ "description": "The workflow's Markdown summary."
+ },
+ "tags": {
+ "type": "object",
+ "title": "WorkflowTags",
+ "description": "A key/value mapping of the workflow's tags, if any.",
+ "additionalProperties": true
+ },
+ "metadata": {
+ "type": "object",
+ "title": "WorkflowMetadata",
+ "description": "Holds additional information about the workflow.",
+ "additionalProperties": true
+ }
+ },
+ "required": [
+ "dsl",
+ "namespace",
+ "name",
+ "version"
+ ]
+ },
+ "input": {
+ "$ref": "#/$defs/input",
+ "title": "Input",
+ "description": "Configures the workflow's input."
+ },
+ "use": {
+ "type": "object",
+ "title": "Use",
+ "description": "Defines the workflow's reusable components.",
+ "unevaluatedProperties": false,
+ "properties": {
+ "authentications": {
+ "type": "object",
+ "title": "UseAuthentications",
+ "description": "The workflow's reusable authentication policies.",
+ "additionalProperties": {
+ "$ref": "#/$defs/authenticationPolicy"
+ }
+ },
+ "errors": {
+ "type": "object",
+ "title": "UseErrors",
+ "description": "The workflow's reusable errors.",
+ "additionalProperties": {
+ "$ref": "#/$defs/error"
+ }
+ },
+ "extensions": {
+ "type": "array",
+ "title": "UseExtensions",
+ "description": "The workflow's extensions.",
+ "items": {
+ "type": "object",
+ "title": "ExtensionItem",
+ "minProperties": 1,
+ "maxProperties": 1,
+ "additionalProperties": {
+ "$ref": "#/$defs/extension"
+ }
+ }
+ },
+ "functions": {
+ "type": "object",
+ "title": "UseFunctions",
+ "description": "The workflow's reusable functions.",
+ "additionalProperties": {
+ "$ref": "#/$defs/task"
+ }
+ },
+ "retries": {
+ "type": "object",
+ "title": "UseRetries",
+ "description": "The workflow's reusable retry policies.",
+ "additionalProperties": {
+ "$ref": "#/$defs/retryPolicy"
+ }
+ },
+ "secrets": {
+ "type": "array",
+ "title": "UseSecrets",
+ "description": "The workflow's reusable secrets.",
+ "items": {
+ "type": "string",
+ "description": "The workflow's secrets."
+ }
+ },
+ "timeouts": {
+ "type": "object",
+ "title": "UseTimeouts",
+ "description": "The workflow's reusable timeouts.",
+ "additionalProperties": {
+ "$ref": "#/$defs/timeout"
+ }
+ },
+ "catalogs": {
+ "type": "object",
+ "title": "UseCatalogs",
+ "description": "The workflow's reusable catalogs.",
+ "additionalProperties": {
+ "$ref": "#/$defs/catalog"
+ }
+ }
+ }
+ },
+ "do": {
+ "$ref": "#/$defs/taskList",
+ "title": "Do",
+ "description": "Defines the task(s) the workflow must perform."
+ },
+ "timeout": {
+ "title": "DoTimeout",
+ "oneOf": [
+ {
+ "$ref": "#/$defs/timeout",
+ "title": "TimeoutDefinition",
+ "description": "The workflow's timeout configuration, if any."
+ },
+ {
+ "type": "string",
+ "title": "TimeoutReference",
+ "description": "The name of the workflow's timeout, if any."
+ }
+ ]
+ },
+ "output": {
+ "$ref": "#/$defs/output",
+ "title": "Output",
+ "description": "Configures the workflow's output."
+ },
+ "schedule": {
+ "type": "object",
+ "title": "Schedule",
+ "description": "Schedules the workflow.",
+ "unevaluatedProperties": false,
+ "properties": {
+ "every": {
+ "$ref": "#/$defs/duration",
+ "title": "ScheduleEvery",
+ "description": "Specifies the duration of the interval at which the workflow should be executed."
+ },
+ "cron": {
+ "type": "string",
+ "title": "ScheduleCron",
+ "description": "Specifies the schedule using a cron expression, e.g., '0 0 * * *' for daily at midnight."
+ },
+ "after": {
+ "$ref": "#/$defs/duration",
+ "title": "ScheduleAfter",
+ "description": "Specifies a delay duration that the workflow must wait before starting again after it completes."
+ },
+ "on": {
+ "$ref": "#/$defs/eventConsumptionStrategy",
+ "title": "ScheduleOn",
+ "description": "Specifies the events that trigger the workflow execution."
+ }
+ }
+ }
+ },
+ "$defs": {
+ "taskList": {
+ "title": "TaskList",
+ "description": "List of named tasks to perform.",
+ "type": "array",
+ "items": {
+ "type": "object",
+ "title": "TaskItem",
+ "minProperties": 1,
+ "maxProperties": 1,
+ "additionalProperties": {
+ "$ref": "#/$defs/task"
+ }
+ }
+ },
+ "taskBase": {
+ "type": "object",
+ "title": "TaskBase",
+ "description": "An object inherited by all tasks.",
+ "properties": {
+ "if": {
+ "type": "string",
+ "title": "TaskBaseIf",
+ "description": "A runtime expression, if any, used to determine whether or not the task should be run."
+ },
+ "input": {
+ "$ref": "#/$defs/input",
+ "title": "TaskBaseInput",
+ "description": "Configure the task's input."
+ },
+ "output": {
+ "$ref": "#/$defs/output",
+ "title": "TaskBaseOutput",
+ "description": "Configure the task's output."
+ },
+ "export": {
+ "$ref": "#/$defs/export",
+ "title": "TaskBaseExport",
+ "description": "Export task output to context."
+ },
+ "timeout": {
+ "title": "TaskTimeout",
+ "oneOf": [
+ {
+ "$ref": "#/$defs/timeout",
+ "title": "TaskTimeoutDefinition",
+ "description": "The task's timeout configuration, if any."
+ },
+ {
+ "type": "string",
+ "title": "TaskTimeoutReference",
+ "description": "The name of the task's timeout, if any."
+ }
+ ]
+ },
+ "then": {
+ "$ref": "#/$defs/flowDirective",
+ "title": "TaskBaseThen",
+ "description": "The flow directive to be performed upon completion of the task."
+ },
+ "metadata": {
+ "type": "object",
+ "title": "TaskMetadata",
+ "description": "Holds additional information about the task.",
+ "additionalProperties": true
+ }
+ }
+ },
+ "task": {
+ "title": "Task",
+ "description": "A discrete unit of work that contributes to achieving the overall objectives defined by the workflow.",
+ "unevaluatedProperties": false,
+ "oneOf": [
+ {
+ "$ref": "#/$defs/callTask"
+ },
+ {
+ "$ref": "#/$defs/doTask"
+ },
+ {
+ "$ref": "#/$defs/forkTask"
+ },
+ {
+ "$ref": "#/$defs/emitTask"
+ },
+ {
+ "$ref": "#/$defs/forTask"
+ },
+ {
+ "$ref": "#/$defs/listenTask"
+ },
+ {
+ "$ref": "#/$defs/raiseTask"
+ },
+ {
+ "$ref": "#/$defs/runTask"
+ },
+ {
+ "$ref": "#/$defs/setTask"
+ },
+ {
+ "$ref": "#/$defs/switchTask"
+ },
+ {
+ "$ref": "#/$defs/tryTask"
+ },
+ {
+ "$ref": "#/$defs/waitTask"
+ }
+ ]
+ },
+ "callTask": {
+ "title": "CallTask",
+ "description": "Defines the call to perform.",
+ "oneOf": [
+ {
+ "title": "CallAsyncAPI",
+ "description": "Defines the AsyncAPI call to perform.",
+ "type": "object",
+ "required": [
+ "call",
+ "with"
+ ],
+ "unevaluatedProperties": false,
+ "allOf": [
+ {
+ "$ref": "#/$defs/taskBase"
+ },
+ {
+ "properties": {
+ "call": {
+ "type": "string",
+ "const": "asyncapi"
+ },
+ "with": {
+ "type": "object",
+ "title": "AsyncApiArguments",
+ "description": "The Async API call arguments.",
+ "properties": {
+ "document": {
+ "$ref": "#/$defs/externalResource",
+ "title": "AsyncAPIDocument",
+ "description": "The document that defines the AsyncAPI operation to call."
+ },
+ "channel": {
+ "type": "string",
+ "title": "With",
+ "description": "The name of the channel on which to perform the operation. Used only in case the referenced document uses AsyncAPI v2.6.0."
+ },
+ "operation": {
+ "type": "string",
+ "title": "AsyncAPIOperation",
+ "description": "A reference to the AsyncAPI operation to call."
+ },
+ "server": {
+ "$ref": "#/$defs/asyncApiServer",
+ "title": "AsyncAPIServer",
+ "description": "An object used to configure to the server to call the specified AsyncAPI operation on."
+ },
+ "protocol": {
+ "type": "string",
+ "title": "AsyncApiProtocol",
+ "description": "The protocol to use to select the target server.",
+ "enum": [
+ "amqp",
+ "amqp1",
+ "anypointmq",
+ "googlepubsub",
+ "http",
+ "ibmmq",
+ "jms",
+ "kafka",
+ "mercure",
+ "mqtt",
+ "mqtt5",
+ "nats",
+ "pulsar",
+ "redis",
+ "sns",
+ "solace",
+ "sqs",
+ "stomp",
+ "ws"
+ ]
+ },
+ "message": {
+ "$ref": "#/$defs/asyncApiOutboundMessage",
+ "title": "AsyncApiMessage",
+ "description": "An object used to configure the message to publish using the target operation."
+ },
+ "subscription": {
+ "$ref": "#/$defs/asyncApiSubscription",
+ "title": "AsyncApiSubscription",
+ "description": "An object used to configure the subscription to messages consumed using the target operation."
+ },
+ "authentication": {
+ "$ref": "#/$defs/referenceableAuthenticationPolicy",
+ "title": "AsyncAPIAuthentication",
+ "description": "The authentication policy, if any, to use when calling the AsyncAPI operation."
+ }
+ },
+ "oneOf": [
+ {
+ "required": [
+ "document",
+ "operation",
+ "message"
+ ]
+ },
+ {
+ "required": [
+ "document",
+ "operation",
+ "subscription"
+ ]
+ },
+ {
+ "required": [
+ "document",
+ "channel",
+ "message"
+ ]
+ },
+ {
+ "required": [
+ "document",
+ "channel",
+ "subscription"
+ ]
+ }
+ ],
+ "unevaluatedProperties": false
+ }
+ }
+ }
+ ]
+ },
+ {
+ "title": "CallGRPC",
+ "description": "Defines the GRPC call to perform.",
+ "type": "object",
+ "unevaluatedProperties": false,
+ "required": [
+ "call",
+ "with"
+ ],
+ "allOf": [
+ {
+ "$ref": "#/$defs/taskBase"
+ },
+ {
+ "properties": {
+ "call": {
+ "type": "string",
+ "const": "grpc"
+ },
+ "with": {
+ "type": "object",
+ "title": "GRPCArguments",
+ "description": "The GRPC call arguments.",
+ "properties": {
+ "proto": {
+ "$ref": "#/$defs/externalResource",
+ "title": "WithGRPCProto",
+ "description": "The proto resource that describes the GRPC service to call."
+ },
+ "service": {
+ "type": "object",
+ "title": "WithGRPCService",
+ "unevaluatedProperties": false,
+ "properties": {
+ "name": {
+ "type": "string",
+ "title": "WithGRPCServiceName",
+ "description": "The name of the GRPC service to call."
+ },
+ "host": {
+ "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])?$"
+ },
+ "port": {
+ "type": "integer",
+ "title": "WithGRPCServicePort",
+ "description": "The port number of the GRPC service to call.",
+ "minimum": 0,
+ "maximum": 65535
+ },
+ "authentication": {
+ "$ref": "#/$defs/referenceableAuthenticationPolicy",
+ "title": "WithGRPCServiceAuthentication",
+ "description": "The endpoint's authentication policy, if any."
+ }
+ },
+ "required": [
+ "name",
+ "host"
+ ]
+ },
+ "method": {
+ "type": "string",
+ "title": "WithGRPCMethod",
+ "description": "The name of the method to call on the defined GRPC service."
+ },
+ "arguments": {
+ "type": "object",
+ "title": "WithGRPCArguments",
+ "description": "The arguments, if any, to call the method with.",
+ "additionalProperties": true
+ }
+ },
+ "required": [
+ "proto",
+ "service",
+ "method"
+ ],
+ "unevaluatedProperties": false
+ }
+ }
+ }
+ ]
+ },
+ {
+ "title": "CallHTTP",
+ "description": "Defines the HTTP call to perform.",
+ "type": "object",
+ "unevaluatedProperties": false,
+ "required": [
+ "call",
+ "with"
+ ],
+ "allOf": [
+ {
+ "$ref": "#/$defs/taskBase"
+ },
+ {
+ "properties": {
+ "call": {
+ "type": "string",
+ "const": "http"
+ },
+ "with": {
+ "type": "object",
+ "title": "HTTPArguments",
+ "description": "The HTTP call arguments.",
+ "properties": {
+ "method": {
+ "type": "string",
+ "title": "HTTPMethod",
+ "description": "The HTTP method of the HTTP request to perform."
+ },
+ "endpoint": {
+ "title": "HTTPEndpoint",
+ "description": "The HTTP endpoint to send the request to.",
+ "$ref": "#/$defs/endpoint"
+ },
+ "headers": {
+ "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": {
+ "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
+ },
+ "output": {
+ "type": "string",
+ "title": "HTTPOutput",
+ "description": "The http call output format. Defaults to 'content'.",
+ "enum": [
+ "raw",
+ "content",
+ "response"
+ ]
+ },
+ "redirect": {
+ "type": "boolean",
+ "title": "HttpRedirect",
+ "description": "Specifies whether redirection status codes (`300–399`) should be treated as errors."
+ }
+ },
+ "required": [
+ "method",
+ "endpoint"
+ ],
+ "unevaluatedProperties": false
+ }
+ }
+ }
+ ]
+ },
+ {
+ "title": "CallOpenAPI",
+ "description": "Defines the OpenAPI call to perform.",
+ "type": "object",
+ "unevaluatedProperties": false,
+ "required": [
+ "call",
+ "with"
+ ],
+ "allOf": [
+ {
+ "$ref": "#/$defs/taskBase"
+ },
+ {
+ "properties": {
+ "call": {
+ "type": "string",
+ "const": "openapi"
+ },
+ "with": {
+ "type": "object",
+ "title": "OpenAPIArguments",
+ "description": "The OpenAPI call arguments.",
+ "properties": {
+ "document": {
+ "$ref": "#/$defs/externalResource",
+ "title": "WithOpenAPIDocument",
+ "description": "The document that defines the OpenAPI operation to call."
+ },
+ "operationId": {
+ "type": "string",
+ "title": "WithOpenAPIOperation",
+ "description": "The id of the OpenAPI operation to call."
+ },
+ "parameters": {
+ "type": "object",
+ "title": "WithOpenAPIParameters",
+ "description": "A name/value mapping of the parameters of the OpenAPI operation to call.",
+ "additionalProperties": true
+ },
+ "authentication": {
+ "$ref": "#/$defs/referenceableAuthenticationPolicy",
+ "title": "WithOpenAPIAuthentication",
+ "description": "The authentication policy, if any, to use when calling the OpenAPI operation."
+ },
+ "output": {
+ "type": "string",
+ "enum": [
+ "raw",
+ "content",
+ "response"
+ ],
+ "title": "WithOpenAPIOutput",
+ "description": "The http call output format. Defaults to 'content'."
+ },
+ "redirect": {
+ "type": "boolean",
+ "title": "HttpRedirect",
+ "description": "Specifies whether redirection status codes (`300–399`) should be treated as errors."
+ }
+ },
+ "required": [
+ "document",
+ "operationId"
+ ],
+ "unevaluatedProperties": false
+ }
+ }
+ }
+ ]
+ },
+ {
+ "title": "CallA2A",
+ "description": "Defines the A2A call to perform.",
+ "type": "object",
+ "unevaluatedProperties": false,
+ "required": [
+ "call",
+ "with"
+ ],
+ "allOf": [
+ {
+ "$ref": "#/$defs/taskBase"
+ },
+ {
+ "properties": {
+ "call": {
+ "type": "string",
+ "const": "a2a"
+ },
+ "with": {
+ "type": "object",
+ "title": "A2AArguments",
+ "description": "The A2A call arguments.",
+ "properties": {
+ "agentCard": {
+ "$ref": "#/$defs/externalResource",
+ "title": "WithA2AAgentCard",
+ "description": "The Agent Card that defines the agent to call."
+ },
+ "server": {
+ "title": "A2AServer",
+ "description": "The server endpoint to send the request to.",
+ "$ref": "#/$defs/endpoint"
+ },
+ "method": {
+ "type": "string",
+ "title": "WithA2AMethod",
+ "description": "The A2A method to send.",
+ "enum": [
+ "message/send",
+ "message/stream",
+ "tasks/get",
+ "tasks/list",
+ "tasks/cancel",
+ "tasks/resubscribe",
+ "tasks/pushNotificationConfig/set",
+ "tasks/pushNotificationConfig/get",
+ "tasks/pushNotificationConfig/list",
+ "tasks/pushNotificationConfig/delete",
+ "agent/getAuthenticatedExtendedCard"
+ ]
+ },
+ "parameters": {
+ "oneOf": [
+ {
+ "type": "object",
+ "minProperties": 1,
+ "additionalProperties": true
+ },
+ {
+ "type": "string"
+ }
+ ],
+ "title": "WithA2AParameters",
+ "description": "The parameters object to send with the A2A method."
+ }
+ },
+ "required": [
+ "method"
+ ],
+ "unevaluatedProperties": false
+ }
+ }
+ }
+ ]
+ },
+ {
+ "title": "CallFunction",
+ "description": "Defines the function call to perform.",
+ "type": "object",
+ "unevaluatedProperties": false,
+ "required": [
+ "call"
+ ],
+ "allOf": [
+ {
+ "$ref": "#/$defs/taskBase"
+ },
+ {
+ "properties": {
+ "call": {
+ "type": "string",
+ "not": {
+ "enum": [
+ "asyncapi",
+ "grpc",
+ "http",
+ "openapi",
+ "a2a"
+ ]
+ },
+ "description": "The name of the function to call."
+ },
+ "with": {
+ "type": "object",
+ "title": "FunctionArguments",
+ "description": "A name/value mapping of the parameters, if any, to call the function with.",
+ "additionalProperties": true
+ }
+ }
+ }
+ ]
+ }
+ ]
+ },
+ "forkTask": {
+ "type": "object",
+ "title": "ForkTask",
+ "description": "Allows workflows to execute multiple tasks concurrently and optionally race them against each other, with a single possible winner, which sets the task's output.",
+ "unevaluatedProperties": false,
+ "required": [
+ "fork"
+ ],
+ "allOf": [
+ {
+ "$ref": "#/$defs/taskBase"
+ },
+ {
+ "properties": {
+ "fork": {
+ "type": "object",
+ "title": "ForkTaskConfiguration",
+ "description": "The configuration of the branches to perform concurrently.",
+ "unevaluatedProperties": false,
+ "required": [
+ "branches"
+ ],
+ "properties": {
+ "branches": {
+ "$ref": "#/$defs/taskList",
+ "title": "ForkBranches"
+ },
+ "compete": {
+ "type": "boolean",
+ "title": "ForkCompete",
+ "description": "Indicates whether or not the concurrent tasks are racing against each other, with a single possible winner, which sets the composite task's output.",
+ "default": false
+ }
+ }
+ }
+ }
+ }
+ ]
+ },
+ "doTask": {
+ "type": "object",
+ "title": "DoTask",
+ "description": "Allows to execute a list of tasks in sequence.",
+ "unevaluatedProperties": false,
+ "required": [
+ "do"
+ ],
+ "allOf": [
+ {
+ "$ref": "#/$defs/taskBase"
+ },
+ {
+ "properties": {
+ "do": {
+ "$ref": "#/$defs/taskList",
+ "title": "DoTaskConfiguration",
+ "description": "The configuration of the tasks to perform sequentially."
+ }
+ }
+ }
+ ]
+ },
+ "emitTask": {
+ "type": "object",
+ "title": "EmitTask",
+ "description": "Allows workflows to publish events to event brokers or messaging systems, facilitating communication and coordination between different components and services.",
+ "required": [
+ "emit"
+ ],
+ "unevaluatedProperties": false,
+ "allOf": [
+ {
+ "$ref": "#/$defs/taskBase"
+ },
+ {
+ "properties": {
+ "emit": {
+ "type": "object",
+ "title": "EmitTaskConfiguration",
+ "description": "The configuration of an event's emission.",
+ "unevaluatedProperties": false,
+ "properties": {
+ "event": {
+ "type": "object",
+ "title": "EmitEventDefinition",
+ "description": "The definition of the event to emit.",
+ "properties": {
+ "with": {
+ "$ref": "#/$defs/eventProperties",
+ "title": "EmitEventWith",
+ "description": "Defines the properties of event to emit.",
+ "required": [
+ "source",
+ "type"
+ ]
+ }
+ },
+ "additionalProperties": true
+ }
+ },
+ "required": [
+ "event"
+ ]
+ }
+ }
+ }
+ ]
+ },
+ "forTask": {
+ "type": "object",
+ "title": "ForTask",
+ "description": "Allows workflows to iterate over a collection of items, executing a defined set of subtasks for each item in the collection. This task type is instrumental in handling scenarios such as batch processing, data transformation, and repetitive operations across datasets.",
+ "required": [
+ "for",
+ "do"
+ ],
+ "unevaluatedProperties": false,
+ "allOf": [
+ {
+ "$ref": "#/$defs/taskBase"
+ },
+ {
+ "properties": {
+ "for": {
+ "type": "object",
+ "title": "ForTaskConfiguration",
+ "description": "The definition of the loop that iterates over a range of values.",
+ "unevaluatedProperties": false,
+ "properties": {
+ "each": {
+ "type": "string",
+ "title": "ForEach",
+ "description": "The name of the variable used to store the current item being enumerated.",
+ "default": "item"
+ },
+ "in": {
+ "type": "string",
+ "title": "ForIn",
+ "description": "A runtime expression used to get the collection to enumerate."
+ },
+ "at": {
+ "type": "string",
+ "title": "ForAt",
+ "description": "The name of the variable used to store the index of the current item being enumerated.",
+ "default": "index"
+ }
+ },
+ "required": [
+ "in"
+ ]
+ },
+ "while": {
+ "type": "string",
+ "title": "While",
+ "description": "A runtime expression that represents the condition, if any, that must be met for the iteration to continue."
+ },
+ "do": {
+ "$ref": "#/$defs/taskList",
+ "title": "ForTaskDo"
+ }
+ }
+ }
+ ]
+ },
+ "listenTask": {
+ "type": "object",
+ "title": "ListenTask",
+ "description": "Provides a mechanism for workflows to await and react to external events, enabling event-driven behavior within workflow systems.",
+ "required": [
+ "listen"
+ ],
+ "unevaluatedProperties": false,
+ "allOf": [
+ {
+ "$ref": "#/$defs/taskBase"
+ },
+ {
+ "properties": {
+ "listen": {
+ "type": "object",
+ "title": "ListenTaskConfiguration",
+ "description": "The configuration of the listener to use.",
+ "unevaluatedProperties": false,
+ "properties": {
+ "to": {
+ "$ref": "#/$defs/eventConsumptionStrategy",
+ "title": "ListenTo",
+ "description": "Defines the event(s) to listen to."
+ },
+ "read": {
+ "type": "string",
+ "enum": [
+ "data",
+ "envelope",
+ "raw"
+ ],
+ "default": "data",
+ "title": "ListenAndReadAs",
+ "description": "Specifies how events are read during the listen operation."
+ }
+ },
+ "required": [
+ "to"
+ ]
+ },
+ "foreach": {
+ "$ref": "#/$defs/subscriptionIterator",
+ "title": "ListenIterator",
+ "description": "Configures the iterator, if any, for processing consumed event(s)."
+ }
+ }
+ }
+ ]
+ },
+ "raiseTask": {
+ "type": "object",
+ "title": "RaiseTask",
+ "description": "Intentionally triggers and propagates errors.",
+ "required": [
+ "raise"
+ ],
+ "unevaluatedProperties": false,
+ "allOf": [
+ {
+ "$ref": "#/$defs/taskBase"
+ },
+ {
+ "properties": {
+ "raise": {
+ "type": "object",
+ "title": "RaiseTaskConfiguration",
+ "description": "The definition of the error to raise.",
+ "unevaluatedProperties": false,
+ "properties": {
+ "error": {
+ "title": "RaiseTaskError",
+ "oneOf": [
+ {
+ "$ref": "#/$defs/error",
+ "title": "RaiseErrorDefinition",
+ "description": "Defines the error to raise."
+ },
+ {
+ "type": "string",
+ "title": "RaiseErrorReference",
+ "description": "The name of the error to raise"
+ }
+ ]
+ }
+ },
+ "required": [
+ "error"
+ ]
+ }
+ }
+ }
+ ]
+ },
+ "runTask": {
+ "type": "object",
+ "title": "RunTask",
+ "description": "Provides the capability to execute external containers, shell commands, scripts, or workflows.",
+ "required": [
+ "run"
+ ],
+ "unevaluatedProperties": false,
+ "allOf": [
+ {
+ "$ref": "#/$defs/taskBase"
+ },
+ {
+ "properties": {
+ "run": {
+ "type": "object",
+ "title": "RunTaskConfiguration",
+ "description": "The configuration of the process to execute.",
+ "unevaluatedProperties": false,
+ "properties": {
+ "await": {
+ "type": "boolean",
+ "default": true,
+ "title": "AwaitProcessCompletion",
+ "description": "Whether to await the process completion before continuing."
+ },
+ "return": {
+ "type": "string",
+ "title": "ProcessReturnType",
+ "description": "Configures the output of the process.",
+ "enum": [
+ "stdout",
+ "stderr",
+ "code",
+ "all",
+ "none"
+ ],
+ "default": "stdout"
+ }
+ },
+ "oneOf": [
+ {
+ "title": "RunContainer",
+ "description": "Enables the execution of external processes encapsulated within a containerized environment.",
+ "properties": {
+ "container": {
+ "type": "object",
+ "title": "Container",
+ "description": "The configuration of the container to run.",
+ "unevaluatedProperties": false,
+ "properties": {
+ "image": {
+ "type": "string",
+ "title": "ContainerImage",
+ "description": "The name of the container image to run."
+ },
+ "name": {
+ "type": "string",
+ "title": "ContainerName",
+ "description": "A runtime expression, if any, used to give specific name to the container."
+ },
+ "command": {
+ "type": "string",
+ "title": "ContainerCommand",
+ "description": "The command, if any, to execute on the container."
+ },
+ "ports": {
+ "type": "object",
+ "title": "ContainerPorts",
+ "description": "The container's port mappings, if any."
+ },
+ "volumes": {
+ "type": "object",
+ "title": "ContainerVolumes",
+ "description": "The container's volume mappings, if any."
+ },
+ "environment": {
+ "type": "object",
+ "title": "ContainerEnvironment",
+ "description": "A key/value mapping of the environment variables, if any, to use when running the configured process."
+ },
+ "lifetime": {
+ "$ref": "#/$defs/containerLifetime",
+ "title": "ContainerLifetime",
+ "description": "An object, if any, used to configure the container's lifetime"
+ }
+ },
+ "required": [
+ "image"
+ ]
+ }
+ },
+ "required": [
+ "container"
+ ]
+ },
+ {
+ "title": "RunScript",
+ "description": "Enables the execution of custom scripts or code within a workflow, empowering workflows to perform specialized logic, data processing, or integration tasks by executing user-defined scripts written in various programming languages.",
+ "properties": {
+ "script": {
+ "type": "object",
+ "title": "Script",
+ "description": "The configuration of the script to run.",
+ "unevaluatedProperties": false,
+ "properties": {
+ "language": {
+ "type": "string",
+ "title": "ScriptLanguage",
+ "description": "The language of the script to run."
+ },
+ "arguments": {
+ "type": "object",
+ "title": "ScriptArguments",
+ "description": "A key/value mapping of the arguments, if any, to use when running the configured script.",
+ "additionalProperties": true
+ },
+ "environment": {
+ "type": "object",
+ "title": "ScriptEnvironment",
+ "description": "A key/value mapping of the environment variables, if any, to use when running the configured script process.",
+ "additionalProperties": true
+ }
+ },
+ "oneOf": [
+ {
+ "title": "InlineScript",
+ "type": "object",
+ "description": "The script's code.",
+ "properties": {
+ "code": {
+ "type": "string",
+ "title": "InlineScriptCode"
+ }
+ },
+ "required": [
+ "code"
+ ]
+ },
+ {
+ "title": "ExternalScript",
+ "type": "object",
+ "description": "The script's resource.",
+ "properties": {
+ "source": {
+ "$ref": "#/$defs/externalResource",
+ "title": "ExternalScriptResource"
+ }
+ },
+ "required": [
+ "source"
+ ]
+ }
+ ],
+ "required": [
+ "language"
+ ]
+ }
+ },
+ "required": [
+ "script"
+ ]
+ },
+ {
+ "title": "RunShell",
+ "description": "Enables the execution of shell commands within a workflow, enabling workflows to interact with the underlying operating system and perform system-level operations, such as file manipulation, environment configuration, or system administration tasks.",
+ "properties": {
+ "shell": {
+ "type": "object",
+ "title": "Shell",
+ "description": "The configuration of the shell command to run.",
+ "unevaluatedProperties": false,
+ "properties": {
+ "command": {
+ "type": "string",
+ "title": "ShellCommand",
+ "description": "The shell command to run."
+ },
+ "arguments": {
+ "type": "object",
+ "title": "ShellArguments",
+ "description": "A list of the arguments of the shell command to run.",
+ "additionalProperties": true
+ },
+ "environment": {
+ "type": "object",
+ "title": "ShellEnvironment",
+ "description": "A key/value mapping of the environment variables, if any, to use when running the configured process.",
+ "additionalProperties": true
+ }
+ },
+ "required": [
+ "command"
+ ]
+ }
+ },
+ "required": [
+ "shell"
+ ]
+ },
+ {
+ "title": "RunWorkflow",
+ "description": "Enables the invocation and execution of nested workflows within a parent workflow, facilitating modularization, reusability, and abstraction of complex logic or business processes by encapsulating them into standalone workflow units.",
+ "properties": {
+ "workflow": {
+ "type": "object",
+ "title": "SubflowConfiguration",
+ "description": "The configuration of the workflow to run.",
+ "unevaluatedProperties": false,
+ "properties": {
+ "namespace": {
+ "type": "string",
+ "title": "SubflowNamespace",
+ "description": "The namespace the workflow to run belongs to."
+ },
+ "name": {
+ "type": "string",
+ "title": "SubflowName",
+ "description": "The name of the workflow to run."
+ },
+ "version": {
+ "type": "string",
+ "default": "latest",
+ "title": "SubflowVersion",
+ "description": "The version of the workflow to run. Defaults to latest."
+ },
+ "input": {
+ "type": "object",
+ "title": "SubflowInput",
+ "description": "The data, if any, to pass as input to the workflow to execute. The value should be validated against the target workflow's input schema, if specified.",
+ "additionalProperties": true
+ }
+ },
+ "required": [
+ "namespace",
+ "name",
+ "version"
+ ]
+ }
+ },
+ "required": [
+ "workflow"
+ ]
+ }
+ ]
+ }
+ }
+ }
+ ]
+ },
+ "setTask": {
+ "type": "object",
+ "title": "SetTask",
+ "description": "A task used to set data.",
+ "required": [
+ "set"
+ ],
+ "unevaluatedProperties": false,
+ "allOf": [
+ {
+ "$ref": "#/$defs/taskBase"
+ },
+ {
+ "properties": {
+ "set": {
+ "oneOf": [
+ {
+ "type": "object",
+ "minProperties": 1,
+ "additionalProperties": true
+ },
+ {
+ "type": "string"
+ }
+ ],
+ "title": "SetTaskConfiguration",
+ "description": "The data to set."
+ }
+ }
+ }
+ ]
+ },
+ "switchTask": {
+ "type": "object",
+ "title": "SwitchTask",
+ "description": "Enables conditional branching within workflows, allowing them to dynamically select different paths based on specified conditions or criteria.",
+ "required": [
+ "switch"
+ ],
+ "unevaluatedProperties": false,
+ "allOf": [
+ {
+ "$ref": "#/$defs/taskBase"
+ },
+ {
+ "properties": {
+ "switch": {
+ "type": "array",
+ "title": "SwitchTaskConfiguration",
+ "description": "The definition of the switch to use.",
+ "minItems": 1,
+ "items": {
+ "type": "object",
+ "title": "SwitchItem",
+ "minProperties": 1,
+ "maxProperties": 1,
+ "additionalProperties": {
+ "type": "object",
+ "title": "SwitchCase",
+ "description": "The definition of a case within a switch task, defining a condition and corresponding tasks to execute if the condition is met.",
+ "unevaluatedProperties": false,
+ "required": [
+ "then"
+ ],
+ "properties": {
+ "when": {
+ "type": "string",
+ "title": "SwitchCaseCondition",
+ "description": "A runtime expression used to determine whether or not the case matches."
+ },
+ "then": {
+ "$ref": "#/$defs/flowDirective",
+ "title": "SwitchCaseOutcome",
+ "description": "The flow directive to execute when the case matches."
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ ]
+ },
+ "tryTask": {
+ "type": "object",
+ "title": "TryTask",
+ "description": "Serves as a mechanism within workflows to handle errors gracefully, potentially retrying failed tasks before proceeding with alternate ones.",
+ "required": [
+ "try",
+ "catch"
+ ],
+ "unevaluatedProperties": false,
+ "allOf": [
+ {
+ "$ref": "#/$defs/taskBase"
+ },
+ {
+ "properties": {
+ "try": {
+ "$ref": "#/$defs/taskList",
+ "title": "TryTaskConfiguration",
+ "description": "The task(s) to perform."
+ },
+ "catch": {
+ "type": "object",
+ "title": "TryTaskCatch",
+ "description": "The object used to define the errors to catch.",
+ "unevaluatedProperties": false,
+ "properties": {
+ "errors": {
+ "type": "object",
+ "title": "CatchErrors",
+ "properties": {
+ "with": {
+ "$ref": "#/$defs/errorFilter"
+ }
+ },
+ "description": "static error filter"
+ },
+ "as": {
+ "type": "string",
+ "title": "CatchAs",
+ "description": "The name of the runtime expression variable to save the error as. Defaults to 'error'."
+ },
+ "when": {
+ "type": "string",
+ "title": "CatchWhen",
+ "description": "A runtime expression used to determine whether to catch the filtered error."
+ },
+ "exceptWhen": {
+ "type": "string",
+ "title": "CatchExceptWhen",
+ "description": "A runtime expression used to determine whether not to catch the filtered error."
+ },
+ "retry": {
+ "oneOf": [
+ {
+ "$ref": "#/$defs/retryPolicy",
+ "title": "RetryPolicyDefinition",
+ "description": "The retry policy to use, if any, when catching errors."
+ },
+ {
+ "type": "string",
+ "title": "RetryPolicyReference",
+ "description": "The name of the retry policy to use, if any, when catching errors."
+ }
+ ]
+ },
+ "do": {
+ "$ref": "#/$defs/taskList",
+ "title": "TryTaskCatchDo",
+ "description": "The definition of the task(s) to run when catching an error."
+ }
+ }
+ }
+ }
+ }
+ ]
+ },
+ "waitTask": {
+ "type": "object",
+ "title": "WaitTask",
+ "description": "Allows workflows to pause or delay their execution for a specified period of time.",
+ "required": [
+ "wait"
+ ],
+ "unevaluatedProperties": false,
+ "allOf": [
+ {
+ "$ref": "#/$defs/taskBase"
+ },
+ {
+ "properties": {
+ "wait": {
+ "$ref": "#/$defs/duration",
+ "title": "WaitTaskConfiguration",
+ "description": "The amount of time to wait."
+ }
+ }
+ }
+ ]
+ },
+ "flowDirective": {
+ "title": "FlowDirective",
+ "description": "Represents different transition options for a workflow.",
+ "anyOf": [
+ {
+ "title": "FlowDirectiveEnum",
+ "type": "string",
+ "enum": [
+ "continue",
+ "exit",
+ "end"
+ ],
+ "default": "continue"
+ },
+ {
+ "type": "string"
+ }
+ ]
+ },
+ "referenceableAuthenticationPolicy": {
+ "type": "object",
+ "title": "ReferenceableAuthenticationPolicy",
+ "description": "Represents a referenceable authentication policy.",
+ "unevaluatedProperties": false,
+ "oneOf": [
+ {
+ "title": "AuthenticationPolicyReference",
+ "description": "The reference of the authentication policy to use.",
+ "properties": {
+ "use": {
+ "type": "string",
+ "minLength": 1,
+ "title": "ReferenceableAuthenticationPolicyName",
+ "description": "The name of the authentication policy to use."
+ }
+ },
+ "required": [
+ "use"
+ ]
+ },
+ {
+ "$ref": "#/$defs/authenticationPolicy"
+ }
+ ]
+ },
+ "secretBasedAuthenticationPolicy": {
+ "type": "object",
+ "title": "SecretBasedAuthenticationPolicy",
+ "description": "Represents an authentication policy based on secrets.",
+ "unevaluatedProperties": false,
+ "properties": {
+ "use": {
+ "type": "string",
+ "minLength": 1,
+ "title": "SecretBasedAuthenticationPolicyName",
+ "description": "The name of the authentication policy to use."
+ }
+ },
+ "required": [
+ "use"
+ ]
+ },
+ "authenticationPolicy": {
+ "type": "object",
+ "title": "AuthenticationPolicy",
+ "description": "Defines an authentication policy.",
+ "oneOf": [
+ {
+ "title": "BasicAuthenticationPolicy",
+ "description": "Use basic authentication.",
+ "properties": {
+ "basic": {
+ "type": "object",
+ "title": "BasicAuthenticationPolicyConfiguration",
+ "description": "The configuration of the basic authentication policy.",
+ "unevaluatedProperties": false,
+ "oneOf": [
+ {
+ "title": "BasicAuthenticationProperties",
+ "description": "Inline configuration of the basic authentication policy.",
+ "properties": {
+ "username": {
+ "type": "string",
+ "description": "The username to use."
+ },
+ "password": {
+ "type": "string",
+ "description": "The password to use."
+ }
+ },
+ "required": [
+ "username",
+ "password"
+ ]
+ },
+ {
+ "$ref": "#/$defs/secretBasedAuthenticationPolicy",
+ "title": "BasicAuthenticationPolicySecret",
+ "description": "Secret based configuration of the basic authentication policy."
+ }
+ ]
+ }
+ },
+ "required": [
+ "basic"
+ ]
+ },
+ {
+ "title": "BearerAuthenticationPolicy",
+ "description": "Use bearer authentication.",
+ "properties": {
+ "bearer": {
+ "type": "object",
+ "title": "BearerAuthenticationPolicyConfiguration",
+ "description": "The configuration of the bearer authentication policy.",
+ "unevaluatedProperties": false,
+ "oneOf": [
+ {
+ "title": "BearerAuthenticationProperties",
+ "description": "Inline configuration of the bearer authentication policy.",
+ "properties": {
+ "token": {
+ "type": "string",
+ "description": "The bearer token to use."
+ }
+ },
+ "required": [
+ "token"
+ ]
+ },
+ {
+ "$ref": "#/$defs/secretBasedAuthenticationPolicy",
+ "title": "BearerAuthenticationPolicySecret",
+ "description": "Secret based configuration of the bearer authentication policy."
+ }
+ ]
+ }
+ },
+ "required": [
+ "bearer"
+ ]
+ },
+ {
+ "title": "DigestAuthenticationPolicy",
+ "description": "Use digest authentication.",
+ "properties": {
+ "digest": {
+ "type": "object",
+ "title": "DigestAuthenticationPolicyConfiguration",
+ "description": "The configuration of the digest authentication policy.",
+ "unevaluatedProperties": false,
+ "oneOf": [
+ {
+ "title": "DigestAuthenticationProperties",
+ "description": "Inline configuration of the digest authentication policy.",
+ "properties": {
+ "username": {
+ "type": "string",
+ "description": "The username to use."
+ },
+ "password": {
+ "type": "string",
+ "description": "The password to use."
+ }
+ },
+ "required": [
+ "username",
+ "password"
+ ]
+ },
+ {
+ "$ref": "#/$defs/secretBasedAuthenticationPolicy",
+ "title": "DigestAuthenticationPolicySecret",
+ "description": "Secret based configuration of the digest authentication policy."
+ }
+ ]
+ }
+ },
+ "required": [
+ "digest"
+ ]
+ },
+ {
+ "title": "OAuth2AuthenticationPolicy",
+ "description": "Use OAuth2 authentication.",
+ "properties": {
+ "oauth2": {
+ "type": "object",
+ "title": "OAuth2AuthenticationPolicyConfiguration",
+ "description": "The configuration of the OAuth2 authentication policy.",
+ "unevaluatedProperties": false,
+ "oneOf": [
+ {
+ "$ref": "#/$defs/oauth2AuthenticationProperties",
+ "type": "object",
+ "title": "OAuth2ConnectAuthenticationProperties",
+ "description": "The inline configuration of the OAuth2 authentication policy.",
+ "unevaluatedProperties": false,
+ "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`."
+ }
+ }
+ }
+ }
+ },
+ {
+ "$ref": "#/$defs/secretBasedAuthenticationPolicy",
+ "title": "OAuth2AuthenticationPolicySecret",
+ "description": "Secret based configuration of the OAuth2 authentication policy."
+ }
+ ]
+ }
+ },
+ "required": [
+ "oauth2"
+ ]
+ },
+ {
+ "title": "OpenIdConnectAuthenticationPolicy",
+ "description": "Use OpenIdConnect authentication.",
+ "properties": {
+ "oidc": {
+ "type": "object",
+ "title": "OpenIdConnectAuthenticationPolicyConfiguration",
+ "description": "The configuration of the OpenIdConnect authentication policy.",
+ "unevaluatedProperties": false,
+ "oneOf": [
+ {
+ "$ref": "#/$defs/oauth2AuthenticationProperties",
+ "title": "OpenIdConnectAuthenticationProperties",
+ "description": "The inline configuration of the OpenIdConnect authentication policy.",
+ "unevaluatedProperties": false
+ },
+ {
+ "$ref": "#/$defs/secretBasedAuthenticationPolicy",
+ "title": "OpenIdConnectAuthenticationPolicySecret",
+ "description": "Secret based configuration of the OpenIdConnect authentication policy."
+ }
+ ]
+ }
+ },
+ "required": [
+ "oidc"
+ ]
+ }
+ ]
+ },
+ "oauth2AuthenticationProperties": {
+ "type": "object",
+ "title": "OAuth2AuthenticationData",
+ "description": "Inline configuration of the OAuth2 authentication policy.",
+ "properties": {
+ "authority": {
+ "$ref": "#/$defs/uriTemplate",
+ "title": "OAuth2AuthenticationDataAuthority",
+ "description": "The URI that references the OAuth2 authority to use."
+ },
+ "grant": {
+ "type": "string",
+ "enum": [
+ "authorization_code",
+ "client_credentials",
+ "password",
+ "refresh_token",
+ "urn:ietf:params:oauth:grant-type:token-exchange"
+ ],
+ "title": "OAuth2AuthenticationDataGrant",
+ "description": "The grant type to use."
+ },
+ "client": {
+ "type": "object",
+ "title": "OAuth2AuthenticationDataClient",
+ "description": "The definition of an OAuth2 client.",
+ "unevaluatedProperties": false,
+ "properties": {
+ "id": {
+ "type": "string",
+ "title": "ClientId",
+ "description": "The client id to use."
+ },
+ "secret": {
+ "type": "string",
+ "title": "ClientSecret",
+ "description": "The client secret to use, if any."
+ },
+ "assertion": {
+ "type": "string",
+ "title": "ClientAssertion",
+ "description": "A JWT containing a signed assertion with your application credentials."
+ },
+ "authentication": {
+ "type": "string",
+ "enum": [
+ "client_secret_basic",
+ "client_secret_post",
+ "client_secret_jwt",
+ "private_key_jwt",
+ "none"
+ ],
+ "default": "client_secret_post",
+ "title": "ClientAuthentication",
+ "description": "The authentication method to use to authenticate the client."
+ }
+ }
+ },
+ "request": {
+ "type": "object",
+ "title": "OAuth2TokenRequest",
+ "description": "The configuration of an OAuth2 token request",
+ "properties": {
+ "encoding": {
+ "type": "string",
+ "enum": [
+ "application/x-www-form-urlencoded",
+ "application/json"
+ ],
+ "default": "application/x-www-form-urlencoded",
+ "title": "Oauth2TokenRequestEncoding"
+ }
+ }
+ },
+ "issuers": {
+ "type": "array",
+ "title": "OAuth2Issuers",
+ "description": "A list that contains that contains valid issuers that will be used to check against the issuer of generated tokens.",
+ "items": {
+ "type": "string"
+ }
+ },
+ "scopes": {
+ "type": "array",
+ "title": "OAuth2AuthenticationDataScopes",
+ "description": "The scopes, if any, to request the token for.",
+ "items": {
+ "type": "string"
+ }
+ },
+ "audiences": {
+ "type": "array",
+ "title": "OAuth2AuthenticationDataAudiences",
+ "description": "The audiences, if any, to request the token for.",
+ "items": {
+ "type": "string"
+ }
+ },
+ "username": {
+ "type": "string",
+ "title": "OAuth2AuthenticationDataUsername",
+ "description": "The username to use. Used only if the grant type is Password."
+ },
+ "password": {
+ "type": "string",
+ "title": "OAuth2AuthenticationDataPassword",
+ "description": "The password to use. Used only if the grant type is Password."
+ },
+ "subject": {
+ "$ref": "#/$defs/oauth2Token",
+ "title": "OAuth2AuthenticationDataSubject",
+ "description": "The security token that represents the identity of the party on behalf of whom the request is being made."
+ },
+ "actor": {
+ "$ref": "#/$defs/oauth2Token",
+ "title": "OAuth2AuthenticationDataActor",
+ "description": "The security token that represents the identity of the acting party."
+ }
+ }
+ },
+ "oauth2Token": {
+ "type": "object",
+ "title": "OAuth2TokenDefinition",
+ "description": "Represents an OAuth2 token.",
+ "unevaluatedProperties": false,
+ "properties": {
+ "token": {
+ "type": "string",
+ "title": "OAuth2Token",
+ "description": "The security token to use."
+ },
+ "type": {
+ "type": "string",
+ "title": "OAuth2TokenType",
+ "description": "The type of the security token to use."
+ }
+ },
+ "required": [
+ "token",
+ "type"
+ ]
+ },
+ "duration": {
+ "oneOf": [
+ {
+ "type": "object",
+ "minProperties": 1,
+ "unevaluatedProperties": false,
+ "properties": {
+ "days": {
+ "type": "integer",
+ "title": "DurationDays",
+ "description": "Number of days, if any."
+ },
+ "hours": {
+ "type": "integer",
+ "title": "DurationHours",
+ "description": "Number of days, if any."
+ },
+ "minutes": {
+ "type": "integer",
+ "title": "DurationMinutes",
+ "description": "Number of minutes, if any."
+ },
+ "seconds": {
+ "type": "integer",
+ "title": "DurationSeconds",
+ "description": "Number of seconds, if any."
+ },
+ "milliseconds": {
+ "type": "integer",
+ "title": "DurationMilliseconds",
+ "description": "Number of milliseconds, if any."
+ }
+ },
+ "title": "DurationInline",
+ "description": "The inline definition of a duration."
+ },
+ {
+ "type": "string",
+ "pattern": "^P(?!$)(\\d+(?:\\.\\d+)?Y)?(\\d+(?:\\.\\d+)?M)?(\\d+(?:\\.\\d+)?W)?(\\d+(?:\\.\\d+)?D)?(T(?=\\d)(\\d+(?:\\.\\d+)?H)?(\\d+(?:\\.\\d+)?M)?(\\d+(?:\\.\\d+)?S)?)?$",
+ "title": "DurationExpression",
+ "description": "The ISO 8601 expression of a duration."
+ }
+ ]
+ },
+ "error": {
+ "type": "object",
+ "title": "Error",
+ "description": "Represents an error.",
+ "unevaluatedProperties": false,
+ "properties": {
+ "type": {
+ "title": "ErrorType",
+ "description": "A URI reference that identifies the error type.",
+ "oneOf": [
+ {
+ "title": "LiteralErrorType",
+ "$ref": "#/$defs/uriTemplate",
+ "description": "The literal error type."
+ },
+ {
+ "title": "ExpressionErrorType",
+ "$ref": "#/$defs/runtimeExpression",
+ "description": "An expression based error type."
+ }
+ ]
+ },
+ "status": {
+ "type": "integer",
+ "title": "ErrorStatus",
+ "description": "The status code generated by the origin for this occurrence of the error."
+ },
+ "instance": {
+ "title": "ErrorInstance",
+ "description": "A JSON Pointer used to reference the component the error originates from.",
+ "oneOf": [
+ {
+ "title": "LiteralErrorInstance",
+ "description": "The literal error instance.",
+ "type": "string",
+ "format": "json-pointer"
+ },
+ {
+ "$ref": "#/$defs/runtimeExpression",
+ "title": "ExpressionErrorInstance",
+ "description": "An expression based error instance."
+ }
+ ]
+ },
+ "title": {
+ "description": "A short, human-readable summary of the error.",
+ "title": "ErrorTitle",
+ "anyOf": [
+ {
+ "$ref": "#/$defs/runtimeExpression",
+ "title": "ExpressionErrorTitle"
+ },
+ {
+ "type": "string",
+ "title": "LiteralErrorTitle"
+ }
+ ]
+ },
+ "detail": {
+ "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",
+ "title": "ErrorFilter",
+ "description": "Error filtering base on static values. For error filtering on dynamic values, use catch.when property",
+ "minProperties": 1,
+ "properties": {
+ "type": {
+ "type": "string",
+ "description": "if present, means this value should be used for filtering"
+ },
+ "status": {
+ "type": "integer",
+ "description": "if present, means this value should be used for filtering"
+ },
+ "instance": {
+ "type": "string",
+ "description": "if present, means this value should be used for filtering"
+ },
+ "title": {
+ "type": "string",
+ "description": "if present, means this value should be used for filtering"
+ },
+ "details": {
+ "type": "string",
+ "description": "if present, means this value should be used for filtering"
+ }
+ }
+ },
+ "uriTemplate": {
+ "title": "UriTemplate",
+ "anyOf": [
+ {
+ "title": "LiteralUriTemplate",
+ "type": "string",
+ "format": "uri-template",
+ "pattern": "^[A-Za-z][A-Za-z0-9+\\-.]*://.*"
+ },
+ {
+ "title": "LiteralUri",
+ "type": "string",
+ "format": "uri",
+ "pattern": "^[A-Za-z][A-Za-z0-9+\\-.]*://.*"
+ }
+ ]
+ },
+ "endpoint": {
+ "title": "Endpoint",
+ "description": "Represents an endpoint.",
+ "oneOf": [
+ {
+ "$ref": "#/$defs/runtimeExpression"
+ },
+ {
+ "$ref": "#/$defs/uriTemplate"
+ },
+ {
+ "title": "EndpointConfiguration",
+ "type": "object",
+ "unevaluatedProperties": false,
+ "properties": {
+ "uri": {
+ "title": "EndpointUri",
+ "description": "The endpoint's URI.",
+ "oneOf": [
+ {
+ "title": "LiteralEndpointURI",
+ "description": "The literal endpoint's URI.",
+ "$ref": "#/$defs/uriTemplate"
+ },
+ {
+ "title": "ExpressionEndpointURI",
+ "$ref": "#/$defs/runtimeExpression",
+ "description": "An expression based endpoint's URI."
+ }
+ ]
+ },
+ "authentication": {
+ "$ref": "#/$defs/referenceableAuthenticationPolicy",
+ "title": "EndpointAuthentication",
+ "description": "The authentication policy to use."
+ }
+ },
+ "required": [
+ "uri"
+ ]
+ }
+ ]
+ },
+ "eventProperties": {
+ "type": "object",
+ "title": "EventProperties",
+ "description": "Describes the properties of an event.",
+ "properties": {
+ "id": {
+ "type": "string",
+ "title": "EventId",
+ "description": "The event's unique identifier."
+ },
+ "source": {
+ "title": "EventSource",
+ "description": "Identifies the context in which an event happened.",
+ "oneOf": [
+ {
+ "$ref": "#/$defs/uriTemplate"
+ },
+ {
+ "$ref": "#/$defs/runtimeExpression"
+ }
+ ]
+ },
+ "type": {
+ "type": "string",
+ "title": "EventType",
+ "description": "This attribute contains a value describing the type of event related to the originating occurrence."
+ },
+ "time": {
+ "title": "EventTime",
+ "description": "When the event occured.",
+ "oneOf": [
+ {
+ "title": "LiteralTime",
+ "type": "string",
+ "format": "date-time"
+ },
+ {
+ "$ref": "#/$defs/runtimeExpression"
+ }
+ ]
+ },
+ "subject": {
+ "type": "string",
+ "title": "EventSubject",
+ "description": "The subject of the event."
+ },
+ "datacontenttype": {
+ "type": "string",
+ "title": "EventDataContentType",
+ "description": "Content type of data value. This attribute enables data to carry any type of content, whereby format and encoding might differ from that of the chosen event format."
+ },
+ "dataschema": {
+ "title": "EventDataschema",
+ "description": "The schema describing the event format.",
+ "oneOf": [
+ {
+ "title": "LiteralDataSchema",
+ "$ref": "#/$defs/uriTemplate",
+ "description": "The literal event data schema."
+ },
+ {
+ "title": "ExpressionDataSchema",
+ "$ref": "#/$defs/runtimeExpression",
+ "description": "An expression based event data schema."
+ }
+ ]
+ },
+ "data": {
+ "title": "EventData",
+ "description": "The event's payload data",
+ "anyOf": [
+ {
+ "$ref": "#/$defs/runtimeExpression"
+ },
+ {}
+ ]
+ }
+ },
+ "additionalProperties": true
+ },
+ "eventConsumptionStrategy": {
+ "type": "object",
+ "title": "EventConsumptionStrategy",
+ "description": "Describe the event consumption strategy to adopt.",
+ "unevaluatedProperties": false,
+ "oneOf": [
+ {
+ "title": "AllEventConsumptionStrategy",
+ "properties": {
+ "all": {
+ "type": "array",
+ "title": "AllEventConsumptionStrategyConfiguration",
+ "description": "A list containing all the events that must be consumed.",
+ "items": {
+ "$ref": "#/$defs/eventFilter"
+ }
+ }
+ },
+ "required": [
+ "all"
+ ]
+ },
+ {
+ "title": "AnyEventConsumptionStrategy",
+ "properties": {
+ "any": {
+ "type": "array",
+ "title": "AnyEventConsumptionStrategyConfiguration",
+ "description": "A list containing any of the events to consume.",
+ "items": {
+ "$ref": "#/$defs/eventFilter"
+ }
+ },
+ "until": {
+ "oneOf": [
+ {
+ "type": "string",
+ "title": "AnyEventUntilCondition",
+ "description": "A runtime expression condition evaluated after consuming an event and which determines whether or not to continue listening."
+ },
+ {
+ "allOf": [
+ {
+ "$ref": "#/$defs/eventConsumptionStrategy",
+ "description": "The strategy that defines the event(s) to consume to stop listening."
+ },
+ {
+ "properties": {
+ "until": false
+ }
+ }
+ ],
+ "title": "AnyEventUntilConsumed"
+ }
+ ]
+ }
+ },
+ "required": [
+ "any"
+ ]
+ },
+ {
+ "title": "OneEventConsumptionStrategy",
+ "properties": {
+ "one": {
+ "$ref": "#/$defs/eventFilter",
+ "title": "OneEventConsumptionStrategyConfiguration",
+ "description": "The single event to consume."
+ }
+ },
+ "required": [
+ "one"
+ ]
+ }
+ ]
+ },
+ "eventFilter": {
+ "type": "object",
+ "title": "EventFilter",
+ "description": "An event filter is a mechanism used to selectively process or handle events based on predefined criteria, such as event type, source, or specific attributes.",
+ "unevaluatedProperties": false,
+ "properties": {
+ "with": {
+ "$ref": "#/$defs/eventProperties",
+ "minProperties": 1,
+ "title": "WithEvent",
+ "description": "An event filter is a mechanism used to selectively process or handle events based on predefined criteria, such as event type, source, or specific attributes."
+ },
+ "correlate": {
+ "type": "object",
+ "title": "EventFilterCorrelate",
+ "description": "A correlation is a link between events and data, established by mapping event attributes to specific data attributes, allowing for coordinated processing or handling based on event characteristics.",
+ "additionalProperties": {
+ "type": "object",
+ "properties": {
+ "from": {
+ "type": "string",
+ "title": "CorrelateFrom",
+ "description": "A runtime expression used to extract the correlation value from the filtered event."
+ },
+ "expect": {
+ "type": "string",
+ "title": "CorrelateExpect",
+ "description": "A constant or a runtime expression, if any, used to determine whether or not the extracted correlation value matches expectations. If not set, the first extracted value will be used as the correlation's expectation."
+ }
+ },
+ "required": [
+ "from"
+ ]
+ }
+ }
+ },
+ "required": [
+ "with"
+ ]
+ },
+ "extension": {
+ "type": "object",
+ "title": "Extension",
+ "description": "The definition of an extension.",
+ "unevaluatedProperties": false,
+ "properties": {
+ "extend": {
+ "type": "string",
+ "enum": [
+ "call",
+ "composite",
+ "emit",
+ "for",
+ "listen",
+ "raise",
+ "run",
+ "set",
+ "switch",
+ "try",
+ "wait",
+ "all"
+ ],
+ "title": "ExtensionTarget",
+ "description": "The type of task to extend."
+ },
+ "when": {
+ "type": "string",
+ "title": "ExtensionCondition",
+ "description": "A runtime expression, if any, used to determine whether or not the extension should apply in the specified context."
+ },
+ "before": {
+ "$ref": "#/$defs/taskList",
+ "title": "ExtensionDoBefore",
+ "description": "The task(s) to execute before the extended task, if any."
+ },
+ "after": {
+ "$ref": "#/$defs/taskList",
+ "title": "ExtensionDoAfter",
+ "description": "The task(s) to execute after the extended task, if any."
+ }
+ },
+ "required": [
+ "extend"
+ ]
+ },
+ "externalResource": {
+ "type": "object",
+ "title": "ExternalResource",
+ "description": "Represents an external resource.",
+ "unevaluatedProperties": false,
+ "properties": {
+ "name": {
+ "type": "string",
+ "title": "ExternalResourceName",
+ "description": "The name of the external resource, if any."
+ },
+ "endpoint": {
+ "$ref": "#/$defs/endpoint",
+ "title": "ExternalResourceEndpoint",
+ "description": "The endpoint of the external resource."
+ }
+ },
+ "required": [
+ "endpoint"
+ ]
+ },
+ "input": {
+ "type": "object",
+ "title": "Input",
+ "description": "Configures the input of a workflow or task.",
+ "unevaluatedProperties": false,
+ "properties": {
+ "schema": {
+ "$ref": "#/$defs/schema",
+ "title": "InputSchema",
+ "description": "The schema used to describe and validate the input of the workflow or task."
+ },
+ "from": {
+ "title": "InputFrom",
+ "description": "A runtime expression, if any, used to mutate and/or filter the input of the workflow or task.",
+ "oneOf": [
+ {
+ "type": "string"
+ },
+ {
+ "type": "object"
+ }
+ ]
+ }
+ }
+ },
+ "output": {
+ "type": "object",
+ "title": "Output",
+ "description": "Configures the output of a workflow or task.",
+ "unevaluatedProperties": false,
+ "properties": {
+ "schema": {
+ "$ref": "#/$defs/schema",
+ "title": "OutputSchema",
+ "description": "The schema used to describe and validate the output of the workflow or task."
+ },
+ "as": {
+ "title": "OutputAs",
+ "description": "A runtime expression, if any, used to mutate and/or filter the output of the workflow or task.",
+ "oneOf": [
+ {
+ "type": "string"
+ },
+ {
+ "type": "object"
+ }
+ ]
+ }
+ }
+ },
+ "export": {
+ "type": "object",
+ "title": "Export",
+ "description": "Set the content of the context. .",
+ "unevaluatedProperties": false,
+ "properties": {
+ "schema": {
+ "$ref": "#/$defs/schema",
+ "title": "ExportSchema",
+ "description": "The schema used to describe and validate the workflow context."
+ },
+ "as": {
+ "title": "ExportAs",
+ "description": "A runtime expression, if any, used to export the output data to the context.",
+ "oneOf": [
+ {
+ "type": "string"
+ },
+ {
+ "type": "object"
+ }
+ ]
+ }
+ }
+ },
+ "retryPolicy": {
+ "type": "object",
+ "title": "RetryPolicy",
+ "description": "Defines a retry policy.",
+ "unevaluatedProperties": false,
+ "properties": {
+ "when": {
+ "type": "string",
+ "title": "RetryWhen",
+ "description": "A runtime expression, if any, used to determine whether or not to retry running the task, in a given context."
+ },
+ "exceptWhen": {
+ "type": "string",
+ "title": "RetryExcepWhen",
+ "description": "A runtime expression used to determine whether or not to retry running the task, in a given context."
+ },
+ "delay": {
+ "$ref": "#/$defs/duration",
+ "title": "RetryDelay",
+ "description": "The duration to wait between retry attempts."
+ },
+ "backoff": {
+ "type": "object",
+ "title": "RetryBackoff",
+ "description": "The retry duration backoff.",
+ "unevaluatedProperties": false,
+ "oneOf": [
+ {
+ "title": "ConstantBackoff",
+ "properties": {
+ "constant": {
+ "type": "object",
+ "description": "The definition of the constant backoff to use, if any."
+ }
+ },
+ "required": [
+ "constant"
+ ]
+ },
+ {
+ "title": "ExponentialBackOff",
+ "properties": {
+ "exponential": {
+ "type": "object",
+ "description": "The definition of the exponential backoff to use, if any."
+ }
+ },
+ "required": [
+ "exponential"
+ ]
+ },
+ {
+ "title": "LinearBackoff",
+ "properties": {
+ "linear": {
+ "type": "object",
+ "description": "The definition of the linear backoff to use, if any."
+ }
+ },
+ "required": [
+ "linear"
+ ]
+ }
+ ]
+ },
+ "limit": {
+ "type": "object",
+ "title": "RetryLimit",
+ "unevaluatedProperties": false,
+ "properties": {
+ "attempt": {
+ "type": "object",
+ "title": "RetryLimitAttempt",
+ "unevaluatedProperties": false,
+ "properties": {
+ "count": {
+ "type": "integer",
+ "title": "RetryLimitAttemptCount",
+ "description": "The maximum amount of retry attempts, if any."
+ },
+ "duration": {
+ "$ref": "#/$defs/duration",
+ "title": "RetryLimitAttemptDuration",
+ "description": "The maximum duration for each retry attempt."
+ }
+ }
+ },
+ "duration": {
+ "$ref": "#/$defs/duration",
+ "title": "RetryLimitDuration",
+ "description": "The duration limit, if any, for all retry attempts."
+ }
+ },
+ "description": "The retry limit, if any."
+ },
+ "jitter": {
+ "type": "object",
+ "title": "RetryPolicyJitter",
+ "description": "The parameters, if any, that control the randomness or variability of the delay between retry attempts.",
+ "unevaluatedProperties": false,
+ "properties": {
+ "from": {
+ "$ref": "#/$defs/duration",
+ "title": "RetryPolicyJitterFrom",
+ "description": "The minimum duration of the jitter range."
+ },
+ "to": {
+ "$ref": "#/$defs/duration",
+ "title": "RetryPolicyJitterTo",
+ "description": "The maximum duration of the jitter range."
+ }
+ },
+ "required": [
+ "from",
+ "to"
+ ]
+ }
+ }
+ },
+ "schema": {
+ "type": "object",
+ "title": "Schema",
+ "description": "Represents the definition of a schema.",
+ "unevaluatedProperties": false,
+ "properties": {
+ "format": {
+ "type": "string",
+ "default": "json",
+ "title": "SchemaFormat",
+ "description": "The schema's format. Defaults to 'json'. The (optional) version of the format can be set using `{format}:{version}`."
+ }
+ },
+ "oneOf": [
+ {
+ "title": "SchemaInline",
+ "properties": {
+ "document": {
+ "description": "The schema's inline definition."
+ }
+ },
+ "required": [
+ "document"
+ ]
+ },
+ {
+ "title": "SchemaExternal",
+ "properties": {
+ "resource": {
+ "$ref": "#/$defs/externalResource",
+ "title": "SchemaExternalResource",
+ "description": "The schema's external resource."
+ }
+ },
+ "required": [
+ "resource"
+ ]
+ }
+ ]
+ },
+ "timeout": {
+ "type": "object",
+ "title": "Timeout",
+ "description": "The definition of a timeout.",
+ "unevaluatedProperties": false,
+ "properties": {
+ "after": {
+ "$ref": "#/$defs/duration",
+ "title": "TimeoutAfter",
+ "description": "The duration after which to timeout."
+ }
+ },
+ "required": [
+ "after"
+ ]
+ },
+ "catalog": {
+ "type": "object",
+ "title": "Catalog",
+ "description": "The definition of a resource catalog.",
+ "unevaluatedProperties": false,
+ "properties": {
+ "endpoint": {
+ "$ref": "#/$defs/endpoint",
+ "title": "CatalogEndpoint",
+ "description": "The root URL where the catalog is hosted."
+ }
+ },
+ "required": [
+ "endpoint"
+ ]
+ },
+ "runtimeExpression": {
+ "type": "string",
+ "title": "RuntimeExpression",
+ "description": "A runtime expression.",
+ "pattern": "^\\s*\\$\\{.+\\}\\s*$"
+ },
+ "containerLifetime": {
+ "type": "object",
+ "title": "ContainerLifetime",
+ "description": "The configuration of a container's lifetime",
+ "unevaluatedProperties": false,
+ "properties": {
+ "cleanup": {
+ "type": "string",
+ "title": "ContainerCleanupPolicy",
+ "description": "The container cleanup policy to use",
+ "enum": [
+ "always",
+ "never",
+ "eventually"
+ ],
+ "default": "never"
+ },
+ "after": {
+ "$ref": "#/$defs/duration",
+ "title": "ContainerLifetimeDuration",
+ "description": "The duration after which to cleanup the container, in case the cleanup policy has been set to 'eventually'"
+ }
+ },
+ "required": [
+ "cleanup"
+ ],
+ "if": {
+ "properties": {
+ "cleanup": {
+ "const": "eventually"
+ }
+ }
+ },
+ "then": {
+ "required": [
+ "after"
+ ]
+ },
+ "else": {
+ "not": {
+ "required": [
+ "after"
+ ]
+ }
+ }
+ },
+ "processResult": {
+ "type": "object",
+ "title": "ProcessResult",
+ "description": "The object returned by a run task when its return type has been set 'all'.",
+ "unevaluatedProperties": false,
+ "properties": {
+ "code": {
+ "type": "integer",
+ "title": "ProcessExitCode",
+ "description": "The process's exit code."
+ },
+ "stdout": {
+ "type": "string",
+ "title": "ProcessStandardOutput",
+ "description": "The content of the process's STDOUT."
+ },
+ "stderr": {
+ "type": "string",
+ "title": "ProcessStandardError",
+ "description": "The content of the process's STDERR."
+ }
+ },
+ "required": [
+ "code",
+ "stdout",
+ "stderr"
+ ]
+ },
+ "asyncApiServer": {
+ "type": "object",
+ "title": "AsyncApiServer",
+ "description": "Configures the target server of an AsyncAPI operation.",
+ "unevaluatedProperties": false,
+ "properties": {
+ "name": {
+ "type": "string",
+ "title": "AsyncApiServerName",
+ "description": "The target server's name."
+ },
+ "variables": {
+ "type": "object",
+ "title": "AsyncApiServerVariables",
+ "description": "The target server's variables, if any."
+ }
+ },
+ "required": [
+ "name"
+ ]
+ },
+ "asyncApiOutboundMessage": {
+ "type": "object",
+ "title": "AsyncApiOutboundMessage",
+ "description": "An object used to configure the message to publish using the target operation.",
+ "unevaluatedProperties": false,
+ "properties": {
+ "payload": {
+ "type": "object",
+ "title": "AsyncApiMessagePayload",
+ "description": "The message's payload, if any."
+ },
+ "headers": {
+ "type": "object",
+ "title": "AsyncApiMessageHeaders",
+ "description": "The message's headers, if any."
+ }
+ }
+ },
+ "asyncApiInboundMessage": {
+ "title": "AsyncApiInboundMessage",
+ "description": "Represents a message counsumed by an AsyncAPI subscription.",
+ "allOf": [
+ {
+ "$ref": "#/$defs/asyncApiOutboundMessage"
+ },
+ {
+ "properties": {
+ "correlationId": {
+ "type": "string",
+ "title": "AsyncApiMessageCorrelationId",
+ "description": "The message's correlation id, if any."
+ }
+ }
+ }
+ ]
+ },
+ "asyncApiSubscription": {
+ "type": "object",
+ "title": "AsyncApiSubscription",
+ "description": "An object used to configure the subscription to messages consumed using the target operation.",
+ "unevaluatedProperties": false,
+ "properties": {
+ "filter": {
+ "$ref": "#/$defs/runtimeExpression",
+ "title": "AsyncApiSubscriptionCorrelation",
+ "description": "A runtime expression, if any, used to filter consumed messages."
+ },
+ "consume": {
+ "$ref": "#/$defs/asyncApiMessageConsumptionPolicy",
+ "title": "AsyncApiMessageConsumptionPolicy",
+ "description": "An object used to configure the subscription's message consumption policy."
+ },
+ "foreach": {
+ "$ref": "#/$defs/subscriptionIterator",
+ "title": "AsyncApiSubscriptionIterator",
+ "description": "Configures the iterator, if any, for processing consumed messages(s)."
+ }
+ },
+ "required": [
+ "consume"
+ ]
+ },
+ "asyncApiMessageConsumptionPolicy": {
+ "type": "object",
+ "title": "AsyncApiMessageConsumptionPolicy",
+ "description": "An object used to configure a subscription's message consumption policy.",
+ "unevaluatedProperties": false,
+ "properties": {
+ "for": {
+ "$ref": "#/$defs/duration",
+ "title": "AsyncApiMessageConsumptionPolicyFor",
+ "description": "Specifies the time period over which messages will be consumed."
+ }
+ },
+ "oneOf": [
+ {
+ "properties": {
+ "amount": {
+ "type": "integer",
+ "description": "The amount of (filtered) messages to consume before disposing of the subscription."
+ }
+ },
+ "title": "AsyncApiMessageConsumptionPolicyAmount",
+ "required": [
+ "amount"
+ ]
+ },
+ {
+ "properties": {
+ "while": {
+ "$ref": "#/$defs/runtimeExpression",
+ "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",
+ "description": "A runtime expression evaluated before each consumed (filtered) message to decide if message consumption should continue."
+ }
+ },
+ "title": "AsyncApiMessageConsumptionPolicyUntil",
+ "required": [
+ "until"
+ ]
+ }
+ ]
+ },
+ "subscriptionIterator": {
+ "type": "object",
+ "title": "SubscriptionIterator",
+ "description": "Configures the iteration over each item (event or message) consumed by a subscription.",
+ "unevaluatedProperties": false,
+ "properties": {
+ "item": {
+ "type": "string",
+ "title": "SubscriptionIteratorItem",
+ "description": "The name of the variable used to store the current item being enumerated.",
+ "default": "item"
+ },
+ "at": {
+ "type": "string",
+ "title": "SubscriptionIteratorIndex",
+ "description": "The name of the variable used to store the index of the current item being enumerated.",
+ "default": "index"
+ },
+ "do": {
+ "$ref": "#/$defs/taskList",
+ "title": "SubscriptionIteratorTasks",
+ "description": "The tasks to perform for each consumed item."
+ },
+ "output": {
+ "$ref": "#/$defs/output",
+ "title": "SubscriptionIteratorOutput",
+ "description": "An object, if any, used to customize the item's output and to document its schema."
+ },
+ "export": {
+ "$ref": "#/$defs/export",
+ "title": "SubscriptionIteratorExport",
+ "description": "An object, if any, used to customize the content of the workflow context."
+ }
+ }
+ }
+ }
+}
\ No newline at end of file
diff --git a/public/schemas/1.0.1/workflow.yaml b/public/schemas/1.0.1/workflow.yaml
new file mode 100644
index 0000000..0148f80
--- /dev/null
+++ b/public/schemas/1.0.1/workflow.yaml
@@ -0,0 +1,1826 @@
+$id: https://open-workflow-specification.org/schemas/1.0.1/workflow.yaml
+$schema: https://json-schema.org/draft/2020-12/schema
+description: Open Workflow Specification DSL - Workflow Schema.
+type: object
+required: [ document, do ]
+properties:
+ document:
+ type: object
+ title: Document
+ description: Documents the workflow.
+ unevaluatedProperties: false
+ properties:
+ dsl:
+ type: string
+ pattern: ^(0|[1-9]\d*)\.(0|[1-9]\d*)\.(0|[1-9]\d*)(?:-((?:0|[1-9]\d*|\d*[a-zA-Z-][0-9a-zA-Z-]*)(?:\.(?:0|[1-9]\d*|\d*[a-zA-Z-][0-9a-zA-Z-]*))*))?(?:\+([0-9a-zA-Z-]+(?:\.[0-9a-zA-Z-]+)*))?$
+ title: WorkflowDSL
+ description: The version of the DSL used by the workflow.
+ namespace:
+ type: string
+ pattern: ^[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?$
+ title: WorkflowNamespace
+ description: The workflow's namespace.
+ name:
+ type: string
+ pattern: ^[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?$
+ title: WorkflowName
+ description: The workflow's name.
+ version:
+ type: string
+ pattern: ^(0|[1-9]\d*)\.(0|[1-9]\d*)\.(0|[1-9]\d*)(?:-((?:0|[1-9]\d*|\d*[a-zA-Z-][0-9a-zA-Z-]*)(?:\.(?:0|[1-9]\d*|\d*[a-zA-Z-][0-9a-zA-Z-]*))*))?(?:\+([0-9a-zA-Z-]+(?:\.[0-9a-zA-Z-]+)*))?$
+ title: WorkflowVersion
+ description: The workflow's semantic version.
+ title:
+ type: string
+ title: WorkflowTitle
+ description: The workflow's title.
+ summary:
+ type: string
+ title: WorkflowSummary
+ description: The workflow's Markdown summary.
+ tags:
+ type: object
+ title: WorkflowTags
+ description: A key/value mapping of the workflow's tags, if any.
+ additionalProperties: true
+ metadata:
+ type: object
+ title: WorkflowMetadata
+ description: Holds additional information about the workflow.
+ additionalProperties: true
+ required: [ dsl, namespace, name, version ]
+ input:
+ $ref: '#/$defs/input'
+ title: Input
+ description: Configures the workflow's input.
+ use:
+ type: object
+ title: Use
+ description: Defines the workflow's reusable components.
+ unevaluatedProperties: false
+ properties:
+ authentications:
+ type: object
+ title: UseAuthentications
+ description: The workflow's reusable authentication policies.
+ additionalProperties:
+ $ref: '#/$defs/authenticationPolicy'
+ errors:
+ type: object
+ title: UseErrors
+ description: The workflow's reusable errors.
+ additionalProperties:
+ $ref: '#/$defs/error'
+ extensions:
+ type: array
+ title: UseExtensions
+ description: The workflow's extensions.
+ items:
+ type: object
+ title: ExtensionItem
+ minProperties: 1
+ maxProperties: 1
+ additionalProperties:
+ $ref: '#/$defs/extension'
+ functions:
+ type: object
+ title: UseFunctions
+ description: The workflow's reusable functions.
+ additionalProperties:
+ $ref: '#/$defs/task'
+ retries:
+ type: object
+ title: UseRetries
+ description: The workflow's reusable retry policies.
+ additionalProperties:
+ $ref: '#/$defs/retryPolicy'
+ secrets:
+ type: array
+ title: UseSecrets
+ description: The workflow's reusable secrets.
+ items:
+ type: string
+ description: The workflow's secrets.
+ timeouts:
+ type: object
+ title: UseTimeouts
+ description: The workflow's reusable timeouts.
+ additionalProperties:
+ $ref: '#/$defs/timeout'
+ catalogs:
+ type: object
+ title: UseCatalogs
+ description: The workflow's reusable catalogs.
+ additionalProperties:
+ $ref: '#/$defs/catalog'
+ do:
+ $ref: '#/$defs/taskList'
+ title: Do
+ description: Defines the task(s) the workflow must perform.
+ timeout:
+ title: DoTimeout
+ oneOf:
+ - $ref: '#/$defs/timeout'
+ title: TimeoutDefinition
+ description: The workflow's timeout configuration, if any.
+ - type: string
+ title: TimeoutReference
+ description: The name of the workflow's timeout, if any.
+ output:
+ $ref: '#/$defs/output'
+ title: Output
+ description: Configures the workflow's output.
+ schedule:
+ type: object
+ title: Schedule
+ description: Schedules the workflow.
+ unevaluatedProperties: false
+ properties:
+ every:
+ $ref: '#/$defs/duration'
+ title: ScheduleEvery
+ description: Specifies the duration of the interval at which the workflow should be executed.
+ cron:
+ type: string
+ title: ScheduleCron
+ description: Specifies the schedule using a cron expression, e.g., '0 0 * * *' for daily at midnight.
+ after:
+ $ref: '#/$defs/duration'
+ title: ScheduleAfter
+ description: Specifies a delay duration that the workflow must wait before starting again after it completes.
+ on:
+ $ref: '#/$defs/eventConsumptionStrategy'
+ title: ScheduleOn
+ description: Specifies the events that trigger the workflow execution.
+$defs:
+ taskList:
+ title: TaskList
+ description: List of named tasks to perform.
+ type: array
+ items:
+ type: object
+ title: TaskItem
+ minProperties: 1
+ maxProperties: 1
+ additionalProperties:
+ $ref: '#/$defs/task'
+ taskBase:
+ type: object
+ title: TaskBase
+ description: An object inherited by all tasks.
+ properties:
+ if:
+ type: string
+ title: TaskBaseIf
+ description: A runtime expression, if any, used to determine whether or not the task should be run.
+ input:
+ $ref: '#/$defs/input'
+ title: TaskBaseInput
+ description: Configure the task's input.
+ output:
+ $ref: '#/$defs/output'
+ title: TaskBaseOutput
+ description: Configure the task's output.
+ export:
+ $ref: '#/$defs/export'
+ title: TaskBaseExport
+ description: Export task output to context.
+ timeout:
+ title: TaskTimeout
+ oneOf:
+ - $ref: '#/$defs/timeout'
+ title: TaskTimeoutDefinition
+ description: The task's timeout configuration, if any.
+ - type: string
+ title: TaskTimeoutReference
+ description: The name of the task's timeout, if any.
+ then:
+ $ref: '#/$defs/flowDirective'
+ title: TaskBaseThen
+ description: The flow directive to be performed upon completion of the task.
+ metadata:
+ type: object
+ title: TaskMetadata
+ description: Holds additional information about the task.
+ additionalProperties: true
+ task:
+ title: Task
+ description: A discrete unit of work that contributes to achieving the overall objectives defined by the workflow.
+ unevaluatedProperties: false
+ oneOf:
+ - $ref: '#/$defs/callTask'
+ - $ref: '#/$defs/doTask'
+ - $ref: '#/$defs/forkTask'
+ - $ref: '#/$defs/emitTask'
+ - $ref: '#/$defs/forTask'
+ - $ref: '#/$defs/listenTask'
+ - $ref: '#/$defs/raiseTask'
+ - $ref: '#/$defs/runTask'
+ - $ref: '#/$defs/setTask'
+ - $ref: '#/$defs/switchTask'
+ - $ref: '#/$defs/tryTask'
+ - $ref: '#/$defs/waitTask'
+ callTask:
+ title: CallTask
+ description: Defines the call to perform.
+ oneOf:
+ - title: CallAsyncAPI
+ description: Defines the AsyncAPI call to perform.
+ type: object
+ required: [ call, with ]
+ unevaluatedProperties: false
+ allOf:
+ - $ref: '#/$defs/taskBase'
+ - properties:
+ call:
+ type: string
+ const: asyncapi
+ with:
+ type: object
+ title: AsyncApiArguments
+ description: The Async API call arguments.
+ properties:
+ document:
+ $ref: '#/$defs/externalResource'
+ title: AsyncAPIDocument
+ description: The document that defines the AsyncAPI operation to call.
+ channel:
+ type: string
+ title: With
+ description: The name of the channel on which to perform the operation. Used only in case the referenced document uses AsyncAPI v2.6.0.
+ operation:
+ type: string
+ title: AsyncAPIOperation
+ description: A reference to the AsyncAPI operation to call.
+ server:
+ $ref: '#/$defs/asyncApiServer'
+ title: AsyncAPIServer
+ description: An object used to configure to the server to call the specified AsyncAPI operation on.
+ protocol:
+ type: string
+ title: AsyncApiProtocol
+ description: The protocol to use to select the target server.
+ enum: [ amqp, amqp1, anypointmq, googlepubsub, http, ibmmq, jms, kafka, mercure, mqtt, mqtt5, nats, pulsar, redis, sns, solace, sqs, stomp, ws ]
+ message:
+ $ref: '#/$defs/asyncApiOutboundMessage'
+ title: AsyncApiMessage
+ description: An object used to configure the message to publish using the target operation.
+ subscription:
+ $ref: '#/$defs/asyncApiSubscription'
+ title: AsyncApiSubscription
+ description: An object used to configure the subscription to messages consumed using the target operation.
+ authentication:
+ $ref: '#/$defs/referenceableAuthenticationPolicy'
+ title: AsyncAPIAuthentication
+ description: The authentication policy, if any, to use when calling the AsyncAPI operation.
+ oneOf:
+ - required: [ document, operation, message ]
+ - required: [ document, operation, subscription ]
+ - required: [ document, channel, message ]
+ - required: [ document, channel, subscription ]
+ unevaluatedProperties: false
+ - title: CallGRPC
+ description: Defines the GRPC call to perform.
+ type: object
+ unevaluatedProperties: false
+ required: [ call, with ]
+ allOf:
+ - $ref: '#/$defs/taskBase'
+ - properties:
+ call:
+ type: string
+ const: grpc
+ with:
+ type: object
+ title: GRPCArguments
+ description: The GRPC call arguments.
+ properties:
+ proto:
+ $ref: '#/$defs/externalResource'
+ title: WithGRPCProto
+ description: The proto resource that describes the GRPC service to call.
+ service:
+ type: object
+ title: WithGRPCService
+ unevaluatedProperties: false
+ properties:
+ name:
+ type: string
+ title: WithGRPCServiceName
+ description: The name of the GRPC service to call.
+ host:
+ 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])?$
+ port:
+ type: integer
+ title: WithGRPCServicePort
+ description: The port number of the GRPC service to call.
+ minimum: 0
+ maximum: 65535
+ authentication:
+ $ref: '#/$defs/referenceableAuthenticationPolicy'
+ title: WithGRPCServiceAuthentication
+ description: The endpoint's authentication policy, if any.
+ required: [ name, host ]
+ method:
+ type: string
+ title: WithGRPCMethod
+ description: The name of the method to call on the defined GRPC service.
+ arguments:
+ type: object
+ title: WithGRPCArguments
+ description: The arguments, if any, to call the method with.
+ additionalProperties: true
+ required: [ proto, service, method ]
+ unevaluatedProperties: false
+ - title: CallHTTP
+ description: Defines the HTTP call to perform.
+ type: object
+ unevaluatedProperties: false
+ required: [ call, with ]
+ allOf:
+ - $ref: '#/$defs/taskBase'
+ - properties:
+ call:
+ type: string
+ const: http
+ with:
+ type: object
+ title: HTTPArguments
+ description: The HTTP call arguments.
+ properties:
+ method:
+ type: string
+ title: HTTPMethod
+ description: The HTTP method of the HTTP request to perform.
+ endpoint:
+ title: HTTPEndpoint
+ description: The HTTP endpoint to send the request to.
+ $ref: '#/$defs/endpoint'
+ headers:
+ 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:
+ 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
+ output:
+ type: string
+ title: HTTPOutput
+ description: The http call output format. Defaults to 'content'.
+ enum: [ raw, content, response ]
+ redirect:
+ type: boolean
+ title: HttpRedirect
+ description: Specifies whether redirection status codes (`300–399`) should be treated as errors.
+ required: [ method, endpoint ]
+ unevaluatedProperties: false
+ - title: CallOpenAPI
+ description: Defines the OpenAPI call to perform.
+ type: object
+ unevaluatedProperties: false
+ required: [ call, with ]
+ allOf:
+ - $ref: '#/$defs/taskBase'
+ - properties:
+ call:
+ type: string
+ const: openapi
+ with:
+ type: object
+ title: OpenAPIArguments
+ description: The OpenAPI call arguments.
+ properties:
+ document:
+ $ref: '#/$defs/externalResource'
+ title: WithOpenAPIDocument
+ description: The document that defines the OpenAPI operation to call.
+ operationId:
+ type: string
+ title: WithOpenAPIOperation
+ description: The id of the OpenAPI operation to call.
+ parameters:
+ type: object
+ title: WithOpenAPIParameters
+ description: A name/value mapping of the parameters of the OpenAPI operation to call.
+ additionalProperties: true
+ authentication:
+ $ref: '#/$defs/referenceableAuthenticationPolicy'
+ title: WithOpenAPIAuthentication
+ description: The authentication policy, if any, to use when calling the OpenAPI operation.
+ output:
+ type: string
+ enum: [ raw, content, response ]
+ title: WithOpenAPIOutput
+ description: The http call output format. Defaults to 'content'.
+ redirect:
+ type: boolean
+ title: HttpRedirect
+ description: Specifies whether redirection status codes (`300–399`) should be treated as errors.
+ required: [ document, operationId ]
+ unevaluatedProperties: false
+ - title: CallA2A
+ description: Defines the A2A call to perform.
+ type: object
+ unevaluatedProperties: false
+ required: [ call, with ]
+ allOf:
+ - $ref: '#/$defs/taskBase'
+ - properties:
+ call:
+ type: string
+ const: a2a
+ with:
+ type: object
+ title: A2AArguments
+ description: The A2A call arguments.
+ properties:
+ agentCard:
+ $ref: '#/$defs/externalResource'
+ title: WithA2AAgentCard
+ description: The Agent Card that defines the agent to call.
+ server:
+ title: A2AServer
+ description: The server endpoint to send the request to.
+ $ref: '#/$defs/endpoint'
+ method:
+ type: string
+ title: WithA2AMethod
+ description: The A2A method to send.
+ enum: [ 'message/send', 'message/stream', 'tasks/get', 'tasks/list', 'tasks/cancel', 'tasks/resubscribe', 'tasks/pushNotificationConfig/set', 'tasks/pushNotificationConfig/get', 'tasks/pushNotificationConfig/list', 'tasks/pushNotificationConfig/delete', 'agent/getAuthenticatedExtendedCard' ]
+ parameters:
+ oneOf:
+ - type: object
+ minProperties: 1
+ additionalProperties: true
+ - type: string
+ title: WithA2AParameters
+ description: The parameters object to send with the A2A method.
+ required: [ method ]
+ unevaluatedProperties: false
+ - title: CallFunction
+ description: Defines the function call to perform.
+ type: object
+ unevaluatedProperties: false
+ required: [ call ]
+ allOf:
+ - $ref: '#/$defs/taskBase'
+ - properties:
+ call:
+ type: string
+ not:
+ enum: ["asyncapi", "grpc", "http", "openapi", "a2a"]
+ description: The name of the function to call.
+ with:
+ type: object
+ title: FunctionArguments
+ description: A name/value mapping of the parameters, if any, to call the function with.
+ additionalProperties: true
+ forkTask:
+ type: object
+ title: ForkTask
+ description: Allows workflows to execute multiple tasks concurrently and optionally race them against each other, with a single possible winner, which sets the task's output.
+ unevaluatedProperties: false
+ required: [ fork ]
+ allOf:
+ - $ref: '#/$defs/taskBase'
+ - properties:
+ fork:
+ type: object
+ title: ForkTaskConfiguration
+ description: The configuration of the branches to perform concurrently.
+ unevaluatedProperties: false
+ required: [ branches ]
+ properties:
+ branches:
+ $ref: '#/$defs/taskList'
+ title: ForkBranches
+ compete:
+ type: boolean
+ title: ForkCompete
+ description: Indicates whether or not the concurrent tasks are racing against each other, with a single possible winner, which sets the composite task's output.
+ default: false
+ doTask:
+ type: object
+ title: DoTask
+ description: Allows to execute a list of tasks in sequence.
+ unevaluatedProperties: false
+ required: [ do ]
+ allOf:
+ - $ref: '#/$defs/taskBase'
+ - properties:
+ do:
+ $ref: '#/$defs/taskList'
+ title: DoTaskConfiguration
+ description: The configuration of the tasks to perform sequentially.
+ emitTask:
+ type: object
+ title: EmitTask
+ description: Allows workflows to publish events to event brokers or messaging systems, facilitating communication and coordination between different components and services.
+ required: [ emit ]
+ unevaluatedProperties: false
+ allOf:
+ - $ref: '#/$defs/taskBase'
+ - properties:
+ emit:
+ type: object
+ title: EmitTaskConfiguration
+ description: The configuration of an event's emission.
+ unevaluatedProperties: false
+ properties:
+ event:
+ type: object
+ title: EmitEventDefinition
+ description: The definition of the event to emit.
+ properties:
+ with:
+ $ref: '#/$defs/eventProperties'
+ title: EmitEventWith
+ description: Defines the properties of event to emit.
+ required: [ source, type ]
+ additionalProperties: true
+ required: [ event ]
+ forTask:
+ type: object
+ title: ForTask
+ description: Allows workflows to iterate over a collection of items, executing a defined set of subtasks for each item in the collection. This task type is instrumental in handling scenarios such as batch processing, data transformation, and repetitive operations across datasets.
+ required: [ for, do ]
+ unevaluatedProperties: false
+ allOf:
+ - $ref: '#/$defs/taskBase'
+ - properties:
+ for:
+ type: object
+ title: ForTaskConfiguration
+ description: The definition of the loop that iterates over a range of values.
+ unevaluatedProperties: false
+ properties:
+ each:
+ type: string
+ title: ForEach
+ description: The name of the variable used to store the current item being enumerated.
+ default: item
+ in:
+ type: string
+ title: ForIn
+ description: A runtime expression used to get the collection to enumerate.
+ at:
+ type: string
+ title: ForAt
+ description: The name of the variable used to store the index of the current item being enumerated.
+ default: index
+ required: [ in ]
+ while:
+ type: string
+ title: While
+ description: A runtime expression that represents the condition, if any, that must be met for the iteration to continue.
+ do:
+ $ref: '#/$defs/taskList'
+ title: ForTaskDo
+ listenTask:
+ type: object
+ title: ListenTask
+ description: Provides a mechanism for workflows to await and react to external events, enabling event-driven behavior within workflow systems.
+ required: [ listen ]
+ unevaluatedProperties: false
+ allOf:
+ - $ref: '#/$defs/taskBase'
+ - properties:
+ listen:
+ type: object
+ title: ListenTaskConfiguration
+ description: The configuration of the listener to use.
+ unevaluatedProperties: false
+ properties:
+ to:
+ $ref: '#/$defs/eventConsumptionStrategy'
+ title: ListenTo
+ description: Defines the event(s) to listen to.
+ read:
+ type: string
+ enum: [ data, envelope, raw ]
+ default: data
+ title: ListenAndReadAs
+ description: Specifies how events are read during the listen operation.
+ required: [ to ]
+ foreach:
+ $ref: '#/$defs/subscriptionIterator'
+ title: ListenIterator
+ description: Configures the iterator, if any, for processing consumed event(s).
+ raiseTask:
+ type: object
+ title: RaiseTask
+ description: Intentionally triggers and propagates errors.
+ required: [ raise ]
+ unevaluatedProperties: false
+ allOf:
+ - $ref: '#/$defs/taskBase'
+ - properties:
+ raise:
+ type: object
+ title: RaiseTaskConfiguration
+ description: The definition of the error to raise.
+ unevaluatedProperties: false
+ properties:
+ error:
+ title: RaiseTaskError
+ oneOf:
+ - $ref: '#/$defs/error'
+ title: RaiseErrorDefinition
+ description: Defines the error to raise.
+ - type: string
+ title: RaiseErrorReference
+ description: The name of the error to raise
+ required: [ error ]
+ runTask:
+ type: object
+ title: RunTask
+ description: Provides the capability to execute external containers, shell commands, scripts, or workflows.
+ required: [ run ]
+ unevaluatedProperties: false
+ allOf:
+ - $ref: '#/$defs/taskBase'
+ - properties:
+ run:
+ type: object
+ title: RunTaskConfiguration
+ description: The configuration of the process to execute.
+ unevaluatedProperties: false
+ properties:
+ await:
+ type: boolean
+ default: true
+ title: AwaitProcessCompletion
+ description: Whether to await the process completion before continuing.
+ return:
+ type: string
+ title: ProcessReturnType
+ description: Configures the output of the process.
+ enum: [ stdout, stderr, code, all, none ]
+ default: stdout
+ oneOf:
+ - title: RunContainer
+ description: Enables the execution of external processes encapsulated within a containerized environment.
+ properties:
+ container:
+ type: object
+ title: Container
+ description: The configuration of the container to run.
+ unevaluatedProperties: false
+ properties:
+ image:
+ type: string
+ title: ContainerImage
+ description: The name of the container image to run.
+ name:
+ type: string
+ title: ContainerName
+ description: A runtime expression, if any, used to give specific name to the container.
+ command:
+ type: string
+ title: ContainerCommand
+ description: The command, if any, to execute on the container.
+ ports:
+ type: object
+ title: ContainerPorts
+ description: The container's port mappings, if any.
+ volumes:
+ type: object
+ title: ContainerVolumes
+ description: The container's volume mappings, if any.
+ environment:
+ type: object
+ title: ContainerEnvironment
+ description: A key/value mapping of the environment variables, if any, to use when running the configured process.
+ lifetime:
+ $ref: '#/$defs/containerLifetime'
+ title: ContainerLifetime
+ description: An object, if any, used to configure the container's lifetime
+ required: [ image ]
+ required: [ container ]
+ - title: RunScript
+ description: Enables the execution of custom scripts or code within a workflow, empowering workflows to perform specialized logic, data processing, or integration tasks by executing user-defined scripts written in various programming languages.
+ properties:
+ script:
+ type: object
+ title: Script
+ description: The configuration of the script to run.
+ unevaluatedProperties: false
+ properties:
+ language:
+ type: string
+ title: ScriptLanguage
+ description: The language of the script to run.
+ arguments:
+ type: object
+ title: ScriptArguments
+ description: A key/value mapping of the arguments, if any, to use when running the configured script.
+ additionalProperties: true
+ environment:
+ type: object
+ title: ScriptEnvironment
+ description: A key/value mapping of the environment variables, if any, to use when running the configured script process.
+ additionalProperties: true
+ oneOf:
+ - title: InlineScript
+ type: object
+ description: The script's code.
+ properties:
+ code:
+ type: string
+ title: InlineScriptCode
+ required: [ code ]
+ - title: ExternalScript
+ type: object
+ description: The script's resource.
+ properties:
+ source:
+ $ref: '#/$defs/externalResource'
+ title: ExternalScriptResource
+ required: [ source ]
+ required: [ language ]
+ required: [ script ]
+ - title: RunShell
+ description: Enables the execution of shell commands within a workflow, enabling workflows to interact with the underlying operating system and perform system-level operations, such as file manipulation, environment configuration, or system administration tasks.
+ properties:
+ shell:
+ type: object
+ title: Shell
+ description: The configuration of the shell command to run.
+ unevaluatedProperties: false
+ properties:
+ command:
+ type: string
+ title: ShellCommand
+ description: The shell command to run.
+ arguments:
+ type: object
+ title: ShellArguments
+ description: A list of the arguments of the shell command to run.
+ additionalProperties: true
+ environment:
+ type: object
+ title: ShellEnvironment
+ description: A key/value mapping of the environment variables, if any, to use when running the configured process.
+ additionalProperties: true
+ required: [ command ]
+ required: [ shell ]
+ - title: RunWorkflow
+ description: Enables the invocation and execution of nested workflows within a parent workflow, facilitating modularization, reusability, and abstraction of complex logic or business processes by encapsulating them into standalone workflow units.
+ properties:
+ workflow:
+ type: object
+ title: SubflowConfiguration
+ description: The configuration of the workflow to run.
+ unevaluatedProperties: false
+ properties:
+ namespace:
+ type: string
+ title: SubflowNamespace
+ description: The namespace the workflow to run belongs to.
+ name:
+ type: string
+ title: SubflowName
+ description: The name of the workflow to run.
+ version:
+ type: string
+ default: latest
+ title: SubflowVersion
+ description: The version of the workflow to run. Defaults to latest.
+ input:
+ type: object
+ title: SubflowInput
+ description: The data, if any, to pass as input to the workflow to execute. The value should be validated against the target workflow's input schema, if specified.
+ additionalProperties: true
+ required: [ namespace, name, version ]
+ required: [ workflow ]
+ setTask:
+ type: object
+ title: SetTask
+ description: A task used to set data.
+ required: [ set ]
+ unevaluatedProperties: false
+ allOf:
+ - $ref: '#/$defs/taskBase'
+ - properties:
+ set:
+ oneOf:
+ - type: object
+ minProperties: 1
+ additionalProperties: true
+ - type: string
+ title: SetTaskConfiguration
+ description: The data to set.
+ switchTask:
+ type: object
+ title: SwitchTask
+ description: Enables conditional branching within workflows, allowing them to dynamically select different paths based on specified conditions or criteria.
+ required: [ switch ]
+ unevaluatedProperties: false
+ allOf:
+ - $ref: '#/$defs/taskBase'
+ - properties:
+ switch:
+ type: array
+ title: SwitchTaskConfiguration
+ description: The definition of the switch to use.
+ minItems: 1
+ items:
+ type: object
+ title: SwitchItem
+ minProperties: 1
+ maxProperties: 1
+ additionalProperties:
+ type: object
+ title: SwitchCase
+ description: The definition of a case within a switch task, defining a condition and corresponding tasks to execute if the condition is met.
+ unevaluatedProperties: false
+ required: [ then ]
+ properties:
+ when:
+ type: string
+ title: SwitchCaseCondition
+ description: A runtime expression used to determine whether or not the case matches.
+ then:
+ $ref: '#/$defs/flowDirective'
+ title: SwitchCaseOutcome
+ description: The flow directive to execute when the case matches.
+ tryTask:
+ type: object
+ title: TryTask
+ description: Serves as a mechanism within workflows to handle errors gracefully, potentially retrying failed tasks before proceeding with alternate ones.
+ required: [ try, catch ]
+ unevaluatedProperties: false
+ allOf:
+ - $ref: '#/$defs/taskBase'
+ - properties:
+ try:
+ $ref: '#/$defs/taskList'
+ title: TryTaskConfiguration
+ description: The task(s) to perform.
+ catch:
+ type: object
+ title: TryTaskCatch
+ description: The object used to define the errors to catch.
+ unevaluatedProperties: false
+ properties:
+ errors:
+ type: object
+ title: CatchErrors
+ properties:
+ with:
+ $ref: '#/$defs/errorFilter'
+ description: static error filter
+ as:
+ type: string
+ title: CatchAs
+ description: The name of the runtime expression variable to save the error as. Defaults to 'error'.
+ when:
+ type: string
+ title: CatchWhen
+ description: A runtime expression used to determine whether to catch the filtered error.
+ exceptWhen:
+ type: string
+ title: CatchExceptWhen
+ description: A runtime expression used to determine whether not to catch the filtered error.
+ retry:
+ oneOf:
+ - $ref: '#/$defs/retryPolicy'
+ title: RetryPolicyDefinition
+ description: The retry policy to use, if any, when catching errors.
+ - type: string
+ title: RetryPolicyReference
+ description: The name of the retry policy to use, if any, when catching errors.
+ do:
+ $ref: '#/$defs/taskList'
+ title: TryTaskCatchDo
+ description: The definition of the task(s) to run when catching an error.
+ waitTask:
+ type: object
+ title: WaitTask
+ description: Allows workflows to pause or delay their execution for a specified period of time.
+ required: [ wait ]
+ unevaluatedProperties: false
+ allOf:
+ - $ref: '#/$defs/taskBase'
+ - properties:
+ wait:
+ $ref: '#/$defs/duration'
+ title: WaitTaskConfiguration
+ description: The amount of time to wait.
+ flowDirective:
+ title: FlowDirective
+ description: Represents different transition options for a workflow.
+ anyOf:
+ - title: FlowDirectiveEnum
+ type: string
+ enum: [ continue, exit, end ]
+ default: continue
+ - type: string
+ referenceableAuthenticationPolicy:
+ type: object
+ title: ReferenceableAuthenticationPolicy
+ description: Represents a referenceable authentication policy.
+ unevaluatedProperties: false
+ oneOf:
+ - title: AuthenticationPolicyReference
+ description: The reference of the authentication policy to use.
+ properties:
+ use:
+ type: string
+ minLength: 1
+ title: ReferenceableAuthenticationPolicyName
+ description: The name of the authentication policy to use.
+ required: [use]
+ - $ref: '#/$defs/authenticationPolicy'
+ secretBasedAuthenticationPolicy:
+ type: object
+ title: SecretBasedAuthenticationPolicy
+ description: Represents an authentication policy based on secrets.
+ unevaluatedProperties: false
+ properties:
+ use:
+ type: string
+ minLength: 1
+ title: SecretBasedAuthenticationPolicyName
+ description: The name of the authentication policy to use.
+ required: [use]
+ authenticationPolicy:
+ type: object
+ title: AuthenticationPolicy
+ description: Defines an authentication policy.
+ oneOf:
+ - title: BasicAuthenticationPolicy
+ description: Use basic authentication.
+ properties:
+ basic:
+ type: object
+ title: BasicAuthenticationPolicyConfiguration
+ description: The configuration of the basic authentication policy.
+ unevaluatedProperties: false
+ oneOf:
+ - title: BasicAuthenticationProperties
+ description: Inline configuration of the basic authentication policy.
+ properties:
+ username:
+ type: string
+ description: The username to use.
+ password:
+ type: string
+ description: The password to use.
+ required: [ username, password ]
+ - $ref: '#/$defs/secretBasedAuthenticationPolicy'
+ title: BasicAuthenticationPolicySecret
+ description: Secret based configuration of the basic authentication policy.
+ required: [ basic ]
+ - title: BearerAuthenticationPolicy
+ description: Use bearer authentication.
+ properties:
+ bearer:
+ type: object
+ title: BearerAuthenticationPolicyConfiguration
+ description: The configuration of the bearer authentication policy.
+ unevaluatedProperties: false
+ oneOf:
+ - title: BearerAuthenticationProperties
+ description: Inline configuration of the bearer authentication policy.
+ properties:
+ token:
+ type: string
+ description: The bearer token to use.
+ required: [ token ]
+ - $ref: '#/$defs/secretBasedAuthenticationPolicy'
+ title: BearerAuthenticationPolicySecret
+ description: Secret based configuration of the bearer authentication policy.
+ required: [ bearer ]
+ - title: DigestAuthenticationPolicy
+ description: Use digest authentication.
+ properties:
+ digest:
+ type: object
+ title: DigestAuthenticationPolicyConfiguration
+ description: The configuration of the digest authentication policy.
+ unevaluatedProperties: false
+ oneOf:
+ - title: DigestAuthenticationProperties
+ description: Inline configuration of the digest authentication policy.
+ properties:
+ username:
+ type: string
+ description: The username to use.
+ password:
+ type: string
+ description: The password to use.
+ required: [ username, password ]
+ - $ref: '#/$defs/secretBasedAuthenticationPolicy'
+ title: DigestAuthenticationPolicySecret
+ description: Secret based configuration of the digest authentication policy.
+ required: [ digest ]
+ - title: OAuth2AuthenticationPolicy
+ description: Use OAuth2 authentication.
+ properties:
+ oauth2:
+ type: object
+ title: OAuth2AuthenticationPolicyConfiguration
+ description: The configuration of the OAuth2 authentication policy.
+ unevaluatedProperties: false
+ oneOf:
+ - $ref: '#/$defs/oauth2AuthenticationProperties'
+ type: object
+ title: OAuth2ConnectAuthenticationProperties
+ description: The inline configuration of the OAuth2 authentication policy.
+ unevaluatedProperties: false
+ 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`.
+ - $ref: '#/$defs/secretBasedAuthenticationPolicy'
+ title: OAuth2AuthenticationPolicySecret
+ description: Secret based configuration of the OAuth2 authentication policy.
+ required: [ oauth2 ]
+ - title: OpenIdConnectAuthenticationPolicy
+ description: Use OpenIdConnect authentication.
+ properties:
+ oidc:
+ type: object
+ title: OpenIdConnectAuthenticationPolicyConfiguration
+ description: The configuration of the OpenIdConnect authentication policy.
+ unevaluatedProperties: false
+ oneOf:
+ - $ref: '#/$defs/oauth2AuthenticationProperties'
+ title: OpenIdConnectAuthenticationProperties
+ description: The inline configuration of the OpenIdConnect authentication policy.
+ unevaluatedProperties: false
+ - $ref: '#/$defs/secretBasedAuthenticationPolicy'
+ title: OpenIdConnectAuthenticationPolicySecret
+ description: Secret based configuration of the OpenIdConnect authentication policy.
+ required: [ oidc ]
+ oauth2AuthenticationProperties:
+ type: object
+ title: OAuth2AuthenticationData
+ description: Inline configuration of the OAuth2 authentication policy.
+ properties:
+ authority:
+ $ref: '#/$defs/uriTemplate'
+ title: OAuth2AuthenticationDataAuthority
+ description: The URI that references the OAuth2 authority to use.
+ grant:
+ type: string
+ enum: [ authorization_code, client_credentials, password, refresh_token, 'urn:ietf:params:oauth:grant-type:token-exchange']
+ title: OAuth2AuthenticationDataGrant
+ description: The grant type to use.
+ client:
+ type: object
+ title: OAuth2AuthenticationDataClient
+ description: The definition of an OAuth2 client.
+ unevaluatedProperties: false
+ properties:
+ id:
+ type: string
+ title: ClientId
+ description: The client id to use.
+ secret:
+ type: string
+ title: ClientSecret
+ description: The client secret to use, if any.
+ assertion:
+ type: string
+ title: ClientAssertion
+ description: A JWT containing a signed assertion with your application credentials.
+ authentication:
+ type: string
+ enum: [ client_secret_basic, client_secret_post, client_secret_jwt, private_key_jwt, none ]
+ default: client_secret_post
+ title: ClientAuthentication
+ description: The authentication method to use to authenticate the client.
+ request:
+ type: object
+ title: OAuth2TokenRequest
+ description: The configuration of an OAuth2 token request
+ properties:
+ encoding:
+ type: string
+ enum: [ 'application/x-www-form-urlencoded', 'application/json' ]
+ default: 'application/x-www-form-urlencoded'
+ title: Oauth2TokenRequestEncoding
+ issuers:
+ type: array
+ title: OAuth2Issuers
+ description: A list that contains that contains valid issuers that will be used to check against the issuer of generated tokens.
+ items:
+ type: string
+ scopes:
+ type: array
+ title: OAuth2AuthenticationDataScopes
+ description: The scopes, if any, to request the token for.
+ items:
+ type: string
+ audiences:
+ type: array
+ title: OAuth2AuthenticationDataAudiences
+ description: The audiences, if any, to request the token for.
+ items:
+ type: string
+ username:
+ type: string
+ title: OAuth2AuthenticationDataUsername
+ description: The username to use. Used only if the grant type is Password.
+ password:
+ type: string
+ title: OAuth2AuthenticationDataPassword
+ description: The password to use. Used only if the grant type is Password.
+ subject:
+ $ref: '#/$defs/oauth2Token'
+ title: OAuth2AuthenticationDataSubject
+ description: The security token that represents the identity of the party on behalf of whom the request is being made.
+ actor:
+ $ref: '#/$defs/oauth2Token'
+ title: OAuth2AuthenticationDataActor
+ description: The security token that represents the identity of the acting party.
+ oauth2Token:
+ type: object
+ title: OAuth2TokenDefinition
+ description: Represents an OAuth2 token.
+ unevaluatedProperties: false
+ properties:
+ token:
+ type: string
+ title: OAuth2Token
+ description: The security token to use.
+ type:
+ type: string
+ title: OAuth2TokenType
+ description: The type of the security token to use.
+ required: [ token, type ]
+ duration:
+ oneOf:
+ - type: object
+ minProperties: 1
+ unevaluatedProperties: false
+ properties:
+ days:
+ type: integer
+ title: DurationDays
+ description: Number of days, if any.
+ hours:
+ type: integer
+ title: DurationHours
+ description: Number of days, if any.
+ minutes:
+ type: integer
+ title: DurationMinutes
+ description: Number of minutes, if any.
+ seconds:
+ type: integer
+ title: DurationSeconds
+ description: Number of seconds, if any.
+ milliseconds:
+ type: integer
+ title: DurationMilliseconds
+ description: Number of milliseconds, if any.
+ title: DurationInline
+ description: The inline definition of a duration.
+ - type: string
+ pattern: '^P(?!$)(\d+(?:\.\d+)?Y)?(\d+(?:\.\d+)?M)?(\d+(?:\.\d+)?W)?(\d+(?:\.\d+)?D)?(T(?=\d)(\d+(?:\.\d+)?H)?(\d+(?:\.\d+)?M)?(\d+(?:\.\d+)?S)?)?$'
+ title: DurationExpression
+ description: The ISO 8601 expression of a duration.
+ error:
+ type: object
+ title: Error
+ description: Represents an error.
+ unevaluatedProperties: false
+ properties:
+ type:
+ title: ErrorType
+ description: A URI reference that identifies the error type.
+ oneOf:
+ - title: LiteralErrorType
+ $ref: '#/$defs/uriTemplate'
+ description: The literal error type.
+ - title: ExpressionErrorType
+ $ref: '#/$defs/runtimeExpression'
+ description: An expression based error type.
+ status:
+ type: integer
+ title: ErrorStatus
+ description: The status code generated by the origin for this occurrence of the error.
+ instance:
+ title: ErrorInstance
+ description: A JSON Pointer used to reference the component the error originates from.
+ oneOf:
+ - title: LiteralErrorInstance
+ description: The literal error instance.
+ type: string
+ format: json-pointer
+ - $ref: '#/$defs/runtimeExpression'
+ title: ExpressionErrorInstance
+ description: An expression based error instance.
+ title:
+ description: A short, human-readable summary of the error.
+ title: ErrorTitle
+ anyOf:
+ - $ref: '#/$defs/runtimeExpression'
+ title: ExpressionErrorTitle
+ - type: string
+ title: LiteralErrorTitle
+ detail:
+ 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
+ title: ErrorFilter
+ description: Error filtering base on static values. For error filtering on dynamic values, use catch.when property
+ minProperties: 1
+ properties:
+ type:
+ type: string
+ description: if present, means this value should be used for filtering
+ status:
+ type: integer
+ description: if present, means this value should be used for filtering
+ instance:
+ type: string
+ description: if present, means this value should be used for filtering
+ title:
+ type: string
+ description: if present, means this value should be used for filtering
+ details:
+ type: string
+ description: if present, means this value should be used for filtering
+ uriTemplate:
+ title: UriTemplate
+ anyOf:
+ - title: LiteralUriTemplate
+ type: string
+ format: uri-template
+ pattern: "^[A-Za-z][A-Za-z0-9+\\-.]*://.*"
+ - title: LiteralUri
+ type: string
+ format: uri
+ pattern: "^[A-Za-z][A-Za-z0-9+\\-.]*://.*"
+ endpoint:
+ title: Endpoint
+ description: Represents an endpoint.
+ oneOf:
+ - $ref: '#/$defs/runtimeExpression'
+ - $ref: '#/$defs/uriTemplate'
+ - title: EndpointConfiguration
+ type: object
+ unevaluatedProperties: false
+ properties:
+ uri:
+ title: EndpointUri
+ description: The endpoint's URI.
+ oneOf:
+ - title: LiteralEndpointURI
+ description: The literal endpoint's URI.
+ $ref: '#/$defs/uriTemplate'
+ - title: ExpressionEndpointURI
+ $ref: '#/$defs/runtimeExpression'
+ description: An expression based endpoint's URI.
+ authentication:
+ $ref: '#/$defs/referenceableAuthenticationPolicy'
+ title: EndpointAuthentication
+ description: The authentication policy to use.
+ required: [ uri ]
+ eventProperties:
+ type: object
+ title: EventProperties
+ description: Describes the properties of an event.
+ properties:
+ id:
+ type: string
+ title: EventId
+ description: The event's unique identifier.
+ source:
+ title: EventSource
+ description: Identifies the context in which an event happened.
+ oneOf:
+ - $ref: '#/$defs/uriTemplate'
+ - $ref: '#/$defs/runtimeExpression'
+ type:
+ type: string
+ title: EventType
+ description: This attribute contains a value describing the type of event related to the originating occurrence.
+ time:
+ title: EventTime
+ description: When the event occured.
+ oneOf:
+ - title: LiteralTime
+ type: string
+ format: date-time
+ - $ref: '#/$defs/runtimeExpression'
+ subject:
+ type: string
+ title: EventSubject
+ description: The subject of the event.
+ datacontenttype:
+ type: string
+ title: EventDataContentType
+ description: Content type of data value. This attribute enables data to carry any type of content, whereby format and encoding might differ from that of the chosen event format.
+ dataschema:
+ title: EventDataschema
+ description: The schema describing the event format.
+ oneOf:
+ - title: LiteralDataSchema
+ $ref: '#/$defs/uriTemplate'
+ description: The literal event data schema.
+ - title: ExpressionDataSchema
+ $ref: '#/$defs/runtimeExpression'
+ description: An expression based event data schema.
+ data:
+ title: EventData
+ description: The event's payload data
+ anyOf:
+ - $ref: '#/$defs/runtimeExpression'
+ - {}
+ additionalProperties: true
+ eventConsumptionStrategy:
+ type: object
+ title: EventConsumptionStrategy
+ description: Describe the event consumption strategy to adopt.
+ unevaluatedProperties: false
+ oneOf:
+ - title: AllEventConsumptionStrategy
+ properties:
+ all:
+ type: array
+ title: AllEventConsumptionStrategyConfiguration
+ description: A list containing all the events that must be consumed.
+ items:
+ $ref: '#/$defs/eventFilter'
+ required: [ all ]
+ - title: AnyEventConsumptionStrategy
+ properties:
+ any:
+ type: array
+ title: AnyEventConsumptionStrategyConfiguration
+ description: A list containing any of the events to consume.
+ items:
+ $ref: '#/$defs/eventFilter'
+ until:
+ oneOf:
+ - type: string
+ title: AnyEventUntilCondition
+ description: A runtime expression condition evaluated after consuming an event and which determines whether or not to continue listening.
+ - allOf:
+ - $ref: '#/$defs/eventConsumptionStrategy'
+ description: The strategy that defines the event(s) to consume to stop listening.
+ - properties:
+ until: false
+ title: AnyEventUntilConsumed
+ required: [ any ]
+ - title: OneEventConsumptionStrategy
+ properties:
+ one:
+ $ref: '#/$defs/eventFilter'
+ title: OneEventConsumptionStrategyConfiguration
+ description: The single event to consume.
+ required: [ one ]
+ eventFilter:
+ type: object
+ title: EventFilter
+ description: An event filter is a mechanism used to selectively process or handle events based on predefined criteria, such as event type, source, or specific attributes.
+ unevaluatedProperties: false
+ properties:
+ with:
+ $ref: '#/$defs/eventProperties'
+ minProperties: 1
+ title: WithEvent
+ description: An event filter is a mechanism used to selectively process or handle events based on predefined criteria, such as event type, source, or specific attributes.
+ correlate:
+ type: object
+ title: EventFilterCorrelate
+ description: A correlation is a link between events and data, established by mapping event attributes to specific data attributes, allowing for coordinated processing or handling based on event characteristics.
+ additionalProperties:
+ type: object
+ properties:
+ from:
+ type: string
+ title: CorrelateFrom
+ description: A runtime expression used to extract the correlation value from the filtered event.
+ expect:
+ type: string
+ title: CorrelateExpect
+ description: A constant or a runtime expression, if any, used to determine whether or not the extracted correlation value matches expectations. If not set, the first extracted value will be used as the correlation's expectation.
+ required: [ from ]
+ required: [ with ]
+ extension:
+ type: object
+ title: Extension
+ description: The definition of an extension.
+ unevaluatedProperties: false
+ properties:
+ extend:
+ type: string
+ enum: [ call, composite, emit, for, listen, raise, run, set, switch, try, wait, all ]
+ title: ExtensionTarget
+ description: The type of task to extend.
+ when:
+ type: string
+ title: ExtensionCondition
+ description: A runtime expression, if any, used to determine whether or not the extension should apply in the specified context.
+ before:
+ $ref: '#/$defs/taskList'
+ title: ExtensionDoBefore
+ description: The task(s) to execute before the extended task, if any.
+ after:
+ $ref: '#/$defs/taskList'
+ title: ExtensionDoAfter
+ description: The task(s) to execute after the extended task, if any.
+ required: [ extend ]
+ externalResource:
+ type: object
+ title: ExternalResource
+ description: Represents an external resource.
+ unevaluatedProperties: false
+ properties:
+ name:
+ type: string
+ title: ExternalResourceName
+ description: The name of the external resource, if any.
+ endpoint:
+ $ref: '#/$defs/endpoint'
+ title: ExternalResourceEndpoint
+ description: The endpoint of the external resource.
+ required: [ endpoint ]
+ input:
+ type: object
+ title: Input
+ description: Configures the input of a workflow or task.
+ unevaluatedProperties: false
+ properties:
+ schema:
+ $ref: '#/$defs/schema'
+ title: InputSchema
+ description: The schema used to describe and validate the input of the workflow or task.
+ from:
+ title: InputFrom
+ description: A runtime expression, if any, used to mutate and/or filter the input of the workflow or task.
+ oneOf:
+ - type: string
+ - type: object
+ output:
+ type: object
+ title: Output
+ description: Configures the output of a workflow or task.
+ unevaluatedProperties: false
+ properties:
+ schema:
+ $ref: '#/$defs/schema'
+ title: OutputSchema
+ description: The schema used to describe and validate the output of the workflow or task.
+ as:
+ title: OutputAs
+ description: A runtime expression, if any, used to mutate and/or filter the output of the workflow or task.
+ oneOf:
+ - type: string
+ - type: object
+ export:
+ type: object
+ title: Export
+ description: Set the content of the context. .
+ unevaluatedProperties: false
+ properties:
+ schema:
+ $ref: '#/$defs/schema'
+ title: ExportSchema
+ description: The schema used to describe and validate the workflow context.
+ as:
+ title: ExportAs
+ description: A runtime expression, if any, used to export the output data to the context.
+ oneOf:
+ - type: string
+ - type: object
+ retryPolicy:
+ type: object
+ title: RetryPolicy
+ description: Defines a retry policy.
+ unevaluatedProperties: false
+ properties:
+ when:
+ type: string
+ title: RetryWhen
+ description: A runtime expression, if any, used to determine whether or not to retry running the task, in a given context.
+ exceptWhen:
+ type: string
+ title: RetryExcepWhen
+ description: A runtime expression used to determine whether or not to retry running the task, in a given context.
+ delay:
+ $ref: '#/$defs/duration'
+ title: RetryDelay
+ description: The duration to wait between retry attempts.
+ backoff:
+ type: object
+ title: RetryBackoff
+ description: The retry duration backoff.
+ unevaluatedProperties: false
+ oneOf:
+ - title: ConstantBackoff
+ properties:
+ constant:
+ type: object
+ description: The definition of the constant backoff to use, if any.
+ required: [ constant ]
+ - title: ExponentialBackOff
+ properties:
+ exponential:
+ type: object
+ description: The definition of the exponential backoff to use, if any.
+ required: [ exponential ]
+ - title: LinearBackoff
+ properties:
+ linear:
+ type: object
+ description: The definition of the linear backoff to use, if any.
+ required: [ linear ]
+ limit:
+ type: object
+ title: RetryLimit
+ unevaluatedProperties: false
+ properties:
+ attempt:
+ type: object
+ title: RetryLimitAttempt
+ unevaluatedProperties: false
+ properties:
+ count:
+ type: integer
+ title: RetryLimitAttemptCount
+ description: The maximum amount of retry attempts, if any.
+ duration:
+ $ref: '#/$defs/duration'
+ title: RetryLimitAttemptDuration
+ description: The maximum duration for each retry attempt.
+ duration:
+ $ref: '#/$defs/duration'
+ title: RetryLimitDuration
+ description: The duration limit, if any, for all retry attempts.
+ description: The retry limit, if any.
+ jitter:
+ type: object
+ title: RetryPolicyJitter
+ description: The parameters, if any, that control the randomness or variability of the delay between retry attempts.
+ unevaluatedProperties: false
+ properties:
+ from:
+ $ref: '#/$defs/duration'
+ title: RetryPolicyJitterFrom
+ description: The minimum duration of the jitter range.
+ to:
+ $ref: '#/$defs/duration'
+ title: RetryPolicyJitterTo
+ description: The maximum duration of the jitter range.
+ required: [ from, to ]
+ schema:
+ type: object
+ title: Schema
+ description: Represents the definition of a schema.
+ unevaluatedProperties: false
+ properties:
+ format:
+ type: string
+ default: json
+ title: SchemaFormat
+ description: The schema's format. Defaults to 'json'. The (optional) version of the format can be set using `{format}:{version}`.
+ oneOf:
+ - title: SchemaInline
+ properties:
+ document:
+ description: The schema's inline definition.
+ required: [ document ]
+ - title: SchemaExternal
+ properties:
+ resource:
+ $ref: '#/$defs/externalResource'
+ title: SchemaExternalResource
+ description: The schema's external resource.
+ required: [ resource ]
+ timeout:
+ type: object
+ title: Timeout
+ description: The definition of a timeout.
+ unevaluatedProperties: false
+ properties:
+ after:
+ $ref: '#/$defs/duration'
+ title: TimeoutAfter
+ description: The duration after which to timeout.
+ required: [ after ]
+ catalog:
+ type: object
+ title: Catalog
+ description: The definition of a resource catalog.
+ unevaluatedProperties: false
+ properties:
+ endpoint:
+ $ref: '#/$defs/endpoint'
+ title: CatalogEndpoint
+ description: The root URL where the catalog is hosted.
+ required: [ endpoint ]
+ runtimeExpression:
+ type: string
+ title: RuntimeExpression
+ description: A runtime expression.
+ pattern: "^\\s*\\$\\{.+\\}\\s*$"
+ containerLifetime:
+ type: object
+ title: ContainerLifetime
+ description: The configuration of a container's lifetime
+ unevaluatedProperties: false
+ properties:
+ cleanup:
+ type: string
+ title: ContainerCleanupPolicy
+ description: The container cleanup policy to use
+ enum: [ always, never, eventually ]
+ default: never
+ after:
+ $ref: '#/$defs/duration'
+ title: ContainerLifetimeDuration
+ description: The duration after which to cleanup the container, in case the cleanup policy has been set to 'eventually'
+ required: [ cleanup ]
+ if:
+ properties:
+ cleanup:
+ const: eventually
+ then:
+ required: [ after ]
+ else:
+ not:
+ required: [ after ]
+ processResult:
+ type: object
+ title: ProcessResult
+ description: The object returned by a run task when its return type has been set 'all'.
+ unevaluatedProperties: false
+ properties:
+ code:
+ type: integer
+ title: ProcessExitCode
+ description: The process's exit code.
+ stdout:
+ type: string
+ title: ProcessStandardOutput
+ description: The content of the process's STDOUT.
+ stderr:
+ type: string
+ title: ProcessStandardError
+ description: The content of the process's STDERR.
+ required: [ code, stdout, stderr ]
+ asyncApiServer:
+ type: object
+ title: AsyncApiServer
+ description: Configures the target server of an AsyncAPI operation.
+ unevaluatedProperties: false
+ properties:
+ name:
+ type: string
+ title: AsyncApiServerName
+ description: The target server's name.
+ variables:
+ type: object
+ title: AsyncApiServerVariables
+ description: The target server's variables, if any.
+ required: [ name ]
+ asyncApiOutboundMessage:
+ type: object
+ title: AsyncApiOutboundMessage
+ description: An object used to configure the message to publish using the target operation.
+ unevaluatedProperties: false
+ properties:
+ payload:
+ type: object
+ title: AsyncApiMessagePayload
+ description: The message's payload, if any.
+ headers:
+ type: object
+ title: AsyncApiMessageHeaders
+ description: The message's headers, if any.
+ asyncApiInboundMessage:
+ title: AsyncApiInboundMessage
+ description: Represents a message counsumed by an AsyncAPI subscription.
+ allOf:
+ - $ref: '#/$defs/asyncApiOutboundMessage'
+ - properties:
+ correlationId:
+ type: string
+ title: AsyncApiMessageCorrelationId
+ description: The message's correlation id, if any.
+ asyncApiSubscription:
+ type: object
+ title: AsyncApiSubscription
+ description: An object used to configure the subscription to messages consumed using the target operation.
+ unevaluatedProperties: false
+ properties:
+ filter:
+ $ref: '#/$defs/runtimeExpression'
+ title: AsyncApiSubscriptionCorrelation
+ description: A runtime expression, if any, used to filter consumed messages.
+ consume:
+ $ref: '#/$defs/asyncApiMessageConsumptionPolicy'
+ title: AsyncApiMessageConsumptionPolicy
+ description: An object used to configure the subscription's message consumption policy.
+ foreach:
+ $ref: '#/$defs/subscriptionIterator'
+ title: AsyncApiSubscriptionIterator
+ description: Configures the iterator, if any, for processing consumed messages(s).
+ required: [ consume ]
+ asyncApiMessageConsumptionPolicy:
+ type: object
+ title: AsyncApiMessageConsumptionPolicy
+ description: An object used to configure a subscription's message consumption policy.
+ unevaluatedProperties: false
+ properties:
+ for:
+ $ref: '#/$defs/duration'
+ title: AsyncApiMessageConsumptionPolicyFor
+ description: Specifies the time period over which messages will be consumed.
+ oneOf:
+ - properties:
+ amount:
+ type: integer
+ description: The amount of (filtered) messages to consume before disposing of the subscription.
+ title: AsyncApiMessageConsumptionPolicyAmount
+ required: [ amount ]
+ - properties:
+ while:
+ $ref: '#/$defs/runtimeExpression'
+ 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'
+ description: A runtime expression evaluated before each consumed (filtered) message to decide if message consumption should continue.
+ title: AsyncApiMessageConsumptionPolicyUntil
+ required: [ until ]
+ subscriptionIterator:
+ type: object
+ title: SubscriptionIterator
+ description: Configures the iteration over each item (event or message) consumed by a subscription.
+ unevaluatedProperties: false
+ properties:
+ item:
+ type: string
+ title: SubscriptionIteratorItem
+ description: The name of the variable used to store the current item being enumerated.
+ default: item
+ at:
+ type: string
+ title: SubscriptionIteratorIndex
+ description: The name of the variable used to store the index of the current item being enumerated.
+ default: index
+ do:
+ $ref: '#/$defs/taskList'
+ title: SubscriptionIteratorTasks
+ description: The tasks to perform for each consumed item.
+ output:
+ $ref: '#/$defs/output'
+ title: SubscriptionIteratorOutput
+ description: An object, if any, used to customize the item's output and to document its schema.
+ export:
+ $ref: '#/$defs/export'
+ title: SubscriptionIteratorExport
+ description: An object, if any, used to customize the content of the workflow context.
\ No newline at end of file
diff --git a/public/schemas/1.0.3/workflow.json b/public/schemas/1.0.3/workflow.json
new file mode 100644
index 0000000..63f23a1
--- /dev/null
+++ b/public/schemas/1.0.3/workflow.json
@@ -0,0 +1,3119 @@
+{
+ "$id": "https://open-workflow-specification.org/schemas/1.0.3/workflow.yaml",
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
+ "description": "Open Workflow Specification DSL - Workflow Schema.",
+ "type": "object",
+ "required": [
+ "document",
+ "do"
+ ],
+ "properties": {
+ "document": {
+ "type": "object",
+ "title": "Document",
+ "description": "Documents the workflow.",
+ "unevaluatedProperties": false,
+ "properties": {
+ "dsl": {
+ "type": "string",
+ "pattern": "^(0|[1-9]\\d*)\\.(0|[1-9]\\d*)\\.(0|[1-9]\\d*)(?:-((?:0|[1-9]\\d*|\\d*[a-zA-Z-][0-9a-zA-Z-]*)(?:\\.(?:0|[1-9]\\d*|\\d*[a-zA-Z-][0-9a-zA-Z-]*))*))?(?:\\+([0-9a-zA-Z-]+(?:\\.[0-9a-zA-Z-]+)*))?$",
+ "title": "WorkflowDSL",
+ "description": "The version of the DSL used by the workflow."
+ },
+ "namespace": {
+ "type": "string",
+ "pattern": "^[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?$",
+ "title": "WorkflowNamespace",
+ "description": "The workflow's namespace."
+ },
+ "name": {
+ "type": "string",
+ "pattern": "^[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?$",
+ "title": "WorkflowName",
+ "description": "The workflow's name."
+ },
+ "version": {
+ "type": "string",
+ "pattern": "^(0|[1-9]\\d*)\\.(0|[1-9]\\d*)\\.(0|[1-9]\\d*)(?:-((?:0|[1-9]\\d*|\\d*[a-zA-Z-][0-9a-zA-Z-]*)(?:\\.(?:0|[1-9]\\d*|\\d*[a-zA-Z-][0-9a-zA-Z-]*))*))?(?:\\+([0-9a-zA-Z-]+(?:\\.[0-9a-zA-Z-]+)*))?$",
+ "title": "WorkflowVersion",
+ "description": "The workflow's semantic version."
+ },
+ "title": {
+ "type": "string",
+ "title": "WorkflowTitle",
+ "description": "The workflow's title."
+ },
+ "summary": {
+ "type": "string",
+ "title": "WorkflowSummary",
+ "description": "The workflow's Markdown summary."
+ },
+ "tags": {
+ "type": "object",
+ "title": "WorkflowTags",
+ "description": "A key/value mapping of the workflow's tags, if any.",
+ "additionalProperties": true
+ },
+ "metadata": {
+ "type": "object",
+ "title": "WorkflowMetadata",
+ "description": "Holds additional information about the workflow.",
+ "additionalProperties": true
+ }
+ },
+ "required": [
+ "dsl",
+ "namespace",
+ "name",
+ "version"
+ ]
+ },
+ "input": {
+ "$ref": "#/$defs/input",
+ "title": "Input",
+ "description": "Configures the workflow's input."
+ },
+ "use": {
+ "type": "object",
+ "title": "Use",
+ "description": "Defines the workflow's reusable components.",
+ "unevaluatedProperties": false,
+ "properties": {
+ "authentications": {
+ "type": "object",
+ "title": "UseAuthentications",
+ "description": "The workflow's reusable authentication policies.",
+ "additionalProperties": {
+ "$ref": "#/$defs/authenticationPolicy"
+ }
+ },
+ "errors": {
+ "type": "object",
+ "title": "UseErrors",
+ "description": "The workflow's reusable errors.",
+ "additionalProperties": {
+ "$ref": "#/$defs/error"
+ }
+ },
+ "extensions": {
+ "type": "array",
+ "title": "UseExtensions",
+ "description": "The workflow's extensions.",
+ "items": {
+ "type": "object",
+ "title": "ExtensionItem",
+ "minProperties": 1,
+ "maxProperties": 1,
+ "additionalProperties": {
+ "$ref": "#/$defs/extension"
+ }
+ }
+ },
+ "functions": {
+ "type": "object",
+ "title": "UseFunctions",
+ "description": "The workflow's reusable functions.",
+ "additionalProperties": {
+ "$ref": "#/$defs/task"
+ }
+ },
+ "retries": {
+ "type": "object",
+ "title": "UseRetries",
+ "description": "The workflow's reusable retry policies.",
+ "additionalProperties": {
+ "$ref": "#/$defs/retryPolicy"
+ }
+ },
+ "secrets": {
+ "type": "array",
+ "title": "UseSecrets",
+ "description": "The workflow's reusable secrets.",
+ "items": {
+ "type": "string",
+ "description": "The workflow's secrets."
+ }
+ },
+ "timeouts": {
+ "type": "object",
+ "title": "UseTimeouts",
+ "description": "The workflow's reusable timeouts.",
+ "additionalProperties": {
+ "$ref": "#/$defs/timeout"
+ }
+ },
+ "catalogs": {
+ "type": "object",
+ "title": "UseCatalogs",
+ "description": "The workflow's reusable catalogs.",
+ "additionalProperties": {
+ "$ref": "#/$defs/catalog"
+ }
+ }
+ }
+ },
+ "do": {
+ "$ref": "#/$defs/taskList",
+ "title": "Do",
+ "description": "Defines the task(s) the workflow must perform."
+ },
+ "timeout": {
+ "title": "DoTimeout",
+ "oneOf": [
+ {
+ "$ref": "#/$defs/timeout",
+ "title": "TimeoutDefinition",
+ "description": "The workflow's timeout configuration, if any."
+ },
+ {
+ "type": "string",
+ "title": "TimeoutReference",
+ "description": "The name of the workflow's timeout, if any."
+ }
+ ]
+ },
+ "output": {
+ "$ref": "#/$defs/output",
+ "title": "Output",
+ "description": "Configures the workflow's output."
+ },
+ "schedule": {
+ "type": "object",
+ "title": "Schedule",
+ "description": "Schedules the workflow.",
+ "unevaluatedProperties": false,
+ "properties": {
+ "every": {
+ "$ref": "#/$defs/duration",
+ "title": "ScheduleEvery",
+ "description": "Specifies the duration of the interval at which the workflow should be executed."
+ },
+ "cron": {
+ "type": "string",
+ "title": "ScheduleCron",
+ "description": "Specifies the schedule using a cron expression, e.g., '0 0 * * *' for daily at midnight."
+ },
+ "after": {
+ "$ref": "#/$defs/duration",
+ "title": "ScheduleAfter",
+ "description": "Specifies a delay duration that the workflow must wait before starting again after it completes."
+ },
+ "on": {
+ "$ref": "#/$defs/eventConsumptionStrategy",
+ "title": "ScheduleOn",
+ "description": "Specifies the events that trigger the workflow execution."
+ }
+ }
+ }
+ },
+ "$defs": {
+ "taskList": {
+ "title": "TaskList",
+ "description": "List of named tasks to perform.",
+ "type": "array",
+ "items": {
+ "type": "object",
+ "title": "TaskItem",
+ "minProperties": 1,
+ "maxProperties": 1,
+ "additionalProperties": {
+ "$ref": "#/$defs/task"
+ }
+ }
+ },
+ "taskBase": {
+ "type": "object",
+ "title": "TaskBase",
+ "description": "An object inherited by all tasks.",
+ "properties": {
+ "if": {
+ "type": "string",
+ "title": "TaskBaseIf",
+ "description": "A runtime expression, if any, used to determine whether or not the task should be run."
+ },
+ "input": {
+ "$ref": "#/$defs/input",
+ "title": "TaskBaseInput",
+ "description": "Configure the task's input."
+ },
+ "output": {
+ "$ref": "#/$defs/output",
+ "title": "TaskBaseOutput",
+ "description": "Configure the task's output."
+ },
+ "export": {
+ "$ref": "#/$defs/export",
+ "title": "TaskBaseExport",
+ "description": "Export task output to context."
+ },
+ "timeout": {
+ "title": "TaskTimeout",
+ "oneOf": [
+ {
+ "$ref": "#/$defs/timeout",
+ "title": "TaskTimeoutDefinition",
+ "description": "The task's timeout configuration, if any."
+ },
+ {
+ "type": "string",
+ "title": "TaskTimeoutReference",
+ "description": "The name of the task's timeout, if any."
+ }
+ ]
+ },
+ "then": {
+ "$ref": "#/$defs/flowDirective",
+ "title": "TaskBaseThen",
+ "description": "The flow directive to be performed upon completion of the task."
+ },
+ "metadata": {
+ "type": "object",
+ "title": "TaskMetadata",
+ "description": "Holds additional information about the task.",
+ "additionalProperties": true
+ }
+ }
+ },
+ "task": {
+ "title": "Task",
+ "description": "A discrete unit of work that contributes to achieving the overall objectives defined by the workflow.",
+ "unevaluatedProperties": false,
+ "oneOf": [
+ {
+ "$ref": "#/$defs/callTask"
+ },
+ {
+ "$ref": "#/$defs/doTask"
+ },
+ {
+ "$ref": "#/$defs/forkTask"
+ },
+ {
+ "$ref": "#/$defs/emitTask"
+ },
+ {
+ "$ref": "#/$defs/forTask"
+ },
+ {
+ "$ref": "#/$defs/listenTask"
+ },
+ {
+ "$ref": "#/$defs/raiseTask"
+ },
+ {
+ "$ref": "#/$defs/runTask"
+ },
+ {
+ "$ref": "#/$defs/setTask"
+ },
+ {
+ "$ref": "#/$defs/switchTask"
+ },
+ {
+ "$ref": "#/$defs/tryTask"
+ },
+ {
+ "$ref": "#/$defs/waitTask"
+ }
+ ]
+ },
+ "callTask": {
+ "title": "CallTask",
+ "description": "Defines the call to perform.",
+ "oneOf": [
+ {
+ "title": "CallAsyncAPI",
+ "description": "Defines the AsyncAPI call to perform.",
+ "type": "object",
+ "required": [
+ "call",
+ "with"
+ ],
+ "unevaluatedProperties": false,
+ "allOf": [
+ {
+ "$ref": "#/$defs/taskBase"
+ },
+ {
+ "properties": {
+ "call": {
+ "type": "string",
+ "const": "asyncapi"
+ },
+ "with": {
+ "type": "object",
+ "title": "AsyncApiArguments",
+ "description": "The Async API call arguments.",
+ "properties": {
+ "document": {
+ "$ref": "#/$defs/externalResource",
+ "title": "AsyncAPIDocument",
+ "description": "The document that defines the AsyncAPI operation to call."
+ },
+ "channel": {
+ "type": "string",
+ "title": "With",
+ "description": "The name of the channel on which to perform the operation. Used only in case the referenced document uses AsyncAPI v2.6.0."
+ },
+ "operation": {
+ "type": "string",
+ "title": "AsyncAPIOperation",
+ "description": "A reference to the AsyncAPI operation to call."
+ },
+ "server": {
+ "$ref": "#/$defs/asyncApiServer",
+ "title": "AsyncAPIServer",
+ "description": "An object used to configure to the server to call the specified AsyncAPI operation on."
+ },
+ "protocol": {
+ "type": "string",
+ "title": "AsyncApiProtocol",
+ "description": "The protocol to use to select the target server.",
+ "enum": [
+ "amqp",
+ "amqp1",
+ "anypointmq",
+ "googlepubsub",
+ "http",
+ "ibmmq",
+ "jms",
+ "kafka",
+ "mercure",
+ "mqtt",
+ "mqtt5",
+ "nats",
+ "pulsar",
+ "redis",
+ "sns",
+ "solace",
+ "sqs",
+ "stomp",
+ "ws"
+ ]
+ },
+ "message": {
+ "$ref": "#/$defs/asyncApiOutboundMessage",
+ "title": "AsyncApiMessage",
+ "description": "An object used to configure the message to publish using the target operation."
+ },
+ "subscription": {
+ "$ref": "#/$defs/asyncApiSubscription",
+ "title": "AsyncApiSubscription",
+ "description": "An object used to configure the subscription to messages consumed using the target operation."
+ },
+ "authentication": {
+ "$ref": "#/$defs/referenceableAuthenticationPolicy",
+ "title": "AsyncAPIAuthentication",
+ "description": "The authentication policy, if any, to use when calling the AsyncAPI operation."
+ }
+ },
+ "oneOf": [
+ {
+ "required": [
+ "document",
+ "operation",
+ "message"
+ ]
+ },
+ {
+ "required": [
+ "document",
+ "operation",
+ "subscription"
+ ]
+ },
+ {
+ "required": [
+ "document",
+ "channel",
+ "message"
+ ]
+ },
+ {
+ "required": [
+ "document",
+ "channel",
+ "subscription"
+ ]
+ }
+ ],
+ "unevaluatedProperties": false
+ }
+ }
+ }
+ ]
+ },
+ {
+ "title": "CallGRPC",
+ "description": "Defines the GRPC call to perform.",
+ "type": "object",
+ "unevaluatedProperties": false,
+ "required": [
+ "call",
+ "with"
+ ],
+ "allOf": [
+ {
+ "$ref": "#/$defs/taskBase"
+ },
+ {
+ "properties": {
+ "call": {
+ "type": "string",
+ "const": "grpc"
+ },
+ "with": {
+ "type": "object",
+ "title": "GRPCArguments",
+ "description": "The GRPC call arguments.",
+ "properties": {
+ "proto": {
+ "$ref": "#/$defs/externalResource",
+ "title": "WithGRPCProto",
+ "description": "The proto resource that describes the GRPC service to call."
+ },
+ "service": {
+ "type": "object",
+ "title": "WithGRPCService",
+ "unevaluatedProperties": false,
+ "properties": {
+ "name": {
+ "type": "string",
+ "title": "WithGRPCServiceName",
+ "description": "The name of the GRPC service to call."
+ },
+ "host": {
+ "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])?$"
+ },
+ "port": {
+ "type": "integer",
+ "title": "WithGRPCServicePort",
+ "description": "The port number of the GRPC service to call.",
+ "minimum": 0,
+ "maximum": 65535
+ },
+ "authentication": {
+ "$ref": "#/$defs/referenceableAuthenticationPolicy",
+ "title": "WithGRPCServiceAuthentication",
+ "description": "The endpoint's authentication policy, if any."
+ }
+ },
+ "required": [
+ "name",
+ "host"
+ ]
+ },
+ "method": {
+ "type": "string",
+ "title": "WithGRPCMethod",
+ "description": "The name of the method to call on the defined GRPC service."
+ },
+ "arguments": {
+ "type": "object",
+ "title": "WithGRPCArguments",
+ "description": "The arguments, if any, to call the method with.",
+ "additionalProperties": true
+ }
+ },
+ "required": [
+ "proto",
+ "service",
+ "method"
+ ],
+ "unevaluatedProperties": false
+ }
+ }
+ }
+ ]
+ },
+ {
+ "title": "CallHTTP",
+ "description": "Defines the HTTP call to perform.",
+ "type": "object",
+ "unevaluatedProperties": false,
+ "required": [
+ "call",
+ "with"
+ ],
+ "allOf": [
+ {
+ "$ref": "#/$defs/taskBase"
+ },
+ {
+ "properties": {
+ "call": {
+ "type": "string",
+ "const": "http"
+ },
+ "with": {
+ "type": "object",
+ "title": "HTTPArguments",
+ "description": "The HTTP call arguments.",
+ "properties": {
+ "method": {
+ "type": "string",
+ "title": "HTTPMethod",
+ "description": "The HTTP method of the HTTP request to perform."
+ },
+ "endpoint": {
+ "title": "HTTPEndpoint",
+ "description": "The HTTP endpoint to send the request to.",
+ "$ref": "#/$defs/endpoint"
+ },
+ "headers": {
+ "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": {
+ "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
+ },
+ "output": {
+ "type": "string",
+ "title": "HTTPOutput",
+ "description": "The http call output format. Defaults to 'content'.",
+ "enum": [
+ "raw",
+ "content",
+ "response"
+ ]
+ },
+ "redirect": {
+ "type": "boolean",
+ "title": "HttpRedirect",
+ "description": "Specifies whether redirection status codes (`300–399`) should be treated as errors."
+ }
+ },
+ "required": [
+ "method",
+ "endpoint"
+ ],
+ "unevaluatedProperties": false
+ }
+ }
+ }
+ ]
+ },
+ {
+ "title": "CallOpenAPI",
+ "description": "Defines the OpenAPI call to perform.",
+ "type": "object",
+ "unevaluatedProperties": false,
+ "required": [
+ "call",
+ "with"
+ ],
+ "allOf": [
+ {
+ "$ref": "#/$defs/taskBase"
+ },
+ {
+ "properties": {
+ "call": {
+ "type": "string",
+ "const": "openapi"
+ },
+ "with": {
+ "type": "object",
+ "title": "OpenAPIArguments",
+ "description": "The OpenAPI call arguments.",
+ "properties": {
+ "document": {
+ "$ref": "#/$defs/externalResource",
+ "title": "WithOpenAPIDocument",
+ "description": "The document that defines the OpenAPI operation to call."
+ },
+ "operationId": {
+ "type": "string",
+ "title": "WithOpenAPIOperation",
+ "description": "The id of the OpenAPI operation to call."
+ },
+ "parameters": {
+ "type": "object",
+ "title": "WithOpenAPIParameters",
+ "description": "A name/value mapping of the parameters of the OpenAPI operation to call.",
+ "additionalProperties": true
+ },
+ "authentication": {
+ "$ref": "#/$defs/referenceableAuthenticationPolicy",
+ "title": "WithOpenAPIAuthentication",
+ "description": "The authentication policy, if any, to use when calling the OpenAPI operation."
+ },
+ "output": {
+ "type": "string",
+ "enum": [
+ "raw",
+ "content",
+ "response"
+ ],
+ "title": "WithOpenAPIOutput",
+ "description": "The http call output format. Defaults to 'content'."
+ },
+ "redirect": {
+ "type": "boolean",
+ "title": "HttpRedirect",
+ "description": "Specifies whether redirection status codes (`300–399`) should be treated as errors."
+ }
+ },
+ "required": [
+ "document",
+ "operationId"
+ ],
+ "unevaluatedProperties": false
+ }
+ }
+ }
+ ]
+ },
+ {
+ "title": "CallA2A",
+ "description": "Defines the A2A call to perform.",
+ "type": "object",
+ "unevaluatedProperties": false,
+ "required": [
+ "call",
+ "with"
+ ],
+ "allOf": [
+ {
+ "$ref": "#/$defs/taskBase"
+ },
+ {
+ "properties": {
+ "call": {
+ "type": "string",
+ "const": "a2a"
+ },
+ "with": {
+ "type": "object",
+ "title": "A2AArguments",
+ "description": "The A2A call arguments.",
+ "properties": {
+ "agentCard": {
+ "$ref": "#/$defs/externalResource",
+ "title": "WithA2AAgentCard",
+ "description": "The Agent Card that defines the agent to call."
+ },
+ "server": {
+ "title": "A2AServer",
+ "description": "The server endpoint to send the request to.",
+ "$ref": "#/$defs/endpoint"
+ },
+ "method": {
+ "type": "string",
+ "title": "WithA2AMethod",
+ "description": "The A2A method to send.",
+ "enum": [
+ "message/send",
+ "message/stream",
+ "tasks/get",
+ "tasks/list",
+ "tasks/cancel",
+ "tasks/resubscribe",
+ "tasks/pushNotificationConfig/set",
+ "tasks/pushNotificationConfig/get",
+ "tasks/pushNotificationConfig/list",
+ "tasks/pushNotificationConfig/delete",
+ "agent/getAuthenticatedExtendedCard"
+ ]
+ },
+ "parameters": {
+ "oneOf": [
+ {
+ "type": "object",
+ "minProperties": 1,
+ "additionalProperties": true
+ },
+ {
+ "type": "string"
+ }
+ ],
+ "title": "WithA2AParameters",
+ "description": "The parameters object to send with the A2A method."
+ }
+ },
+ "required": [
+ "method"
+ ],
+ "unevaluatedProperties": false
+ }
+ }
+ }
+ ]
+ },
+ {
+ "title": "CallMCP",
+ "description": "Defines the MCP call to perform.",
+ "type": "object",
+ "unevaluatedProperties": false,
+ "required": [
+ "call",
+ "with"
+ ],
+ "allOf": [
+ {
+ "$ref": "#/$defs/taskBase"
+ },
+ {
+ "properties": {
+ "call": {
+ "type": "string",
+ "const": "mcp"
+ },
+ "with": {
+ "type": "object",
+ "title": "MCPArguments",
+ "description": "The MCP call arguments.",
+ "properties": {
+ "protocolVersion": {
+ "type": "string",
+ "default": "2025-06-18",
+ "title": "McpProtocolVersion",
+ "description": "The version of the MCP protocol to use."
+ },
+ "method": {
+ "type": "string",
+ "enum": [
+ "tools/list",
+ "tools/call",
+ "prompts/list",
+ "prompts/get",
+ "resources/list",
+ "resources/read",
+ "resources/templates/list"
+ ],
+ "title": "McpMethod",
+ "description": "The MCP method to call."
+ },
+ "parameters": {
+ "oneOf": [
+ {
+ "type": "object",
+ "additionalProperties": true
+ },
+ {
+ "type": "string"
+ }
+ ],
+ "title": "McpMethodParameters",
+ "description": "The MCP method parameters."
+ },
+ "timeout": {
+ "$ref": "#/$defs/duration",
+ "title": "McpCallTimeout",
+ "description": "The duration after which the MCP call times out."
+ },
+ "transport": {
+ "type": "object",
+ "title": "McpCallTransport",
+ "description": "The transport to use to perform the MCP call.",
+ "properties": {
+ "http": {
+ "type": "object",
+ "title": "McpHttpTransport",
+ "description": "The definition of the HTTP transport to use.",
+ "properties": {
+ "endpoint": {
+ "$ref": "#/$defs/endpoint",
+ "title": "McpHttpTransportEndpoint",
+ "description": "The MCP server endpoint to connect to."
+ },
+ "headers": {
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ },
+ "title": "McpHttpTransportHeaders",
+ "description": "A key/value mapping of the HTTP headers to send with requests, if any."
+ }
+ },
+ "required": [
+ "endpoint"
+ ]
+ },
+ "stdio": {
+ "type": "object",
+ "title": "McpStdioTransport",
+ "description": "The definition of the STDIO transport to use.",
+ "properties": {
+ "command": {
+ "type": "string",
+ "title": "McpStdioTransportCommand",
+ "description": "The command used to run the MCP server."
+ },
+ "arguments": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ },
+ "title": "McpStdioTransportArguments",
+ "description": "An optional list of arguments to pass to the command."
+ },
+ "environment": {
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ },
+ "title": "McpStdioTransportEnvironment",
+ "description": "A key/value mapping, if any, of environment variables used to configure the MCP server."
+ }
+ },
+ "required": [
+ "command"
+ ]
+ },
+ "options": {
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ }
+ },
+ "oneOf": [
+ {
+ "required": [
+ "http"
+ ]
+ },
+ {
+ "required": [
+ "stdio"
+ ]
+ }
+ ]
+ },
+ "client": {
+ "type": "object",
+ "title": "McpClient",
+ "description": "Describes the client used to perform the MCP call.",
+ "properties": {
+ "name": {
+ "type": "string",
+ "title": "McpClientName",
+ "description": "The name of the client used to connect to the MCP server."
+ },
+ "description": {
+ "type": "string",
+ "title": "McpClientVersion",
+ "description": "The version of the client used to connect to the MCP server."
+ }
+ },
+ "required": [
+ "name",
+ "version"
+ ]
+ }
+ },
+ "required": [
+ "method",
+ "transport"
+ ]
+ }
+ }
+ }
+ ]
+ },
+ {
+ "title": "CallFunction",
+ "description": "Defines the function call to perform.",
+ "type": "object",
+ "unevaluatedProperties": false,
+ "required": [
+ "call"
+ ],
+ "allOf": [
+ {
+ "$ref": "#/$defs/taskBase"
+ },
+ {
+ "properties": {
+ "call": {
+ "type": "string",
+ "not": {
+ "enum": [
+ "asyncapi",
+ "grpc",
+ "http",
+ "openapi",
+ "a2a",
+ "mcp"
+ ]
+ },
+ "description": "The name of the function to call."
+ },
+ "with": {
+ "type": "object",
+ "title": "FunctionArguments",
+ "description": "A name/value mapping of the parameters, if any, to call the function with.",
+ "additionalProperties": true
+ }
+ }
+ }
+ ]
+ }
+ ]
+ },
+ "forkTask": {
+ "type": "object",
+ "title": "ForkTask",
+ "description": "Allows workflows to execute multiple tasks concurrently and optionally race them against each other, with a single possible winner, which sets the task's output.",
+ "unevaluatedProperties": false,
+ "required": [
+ "fork"
+ ],
+ "allOf": [
+ {
+ "$ref": "#/$defs/taskBase"
+ },
+ {
+ "properties": {
+ "fork": {
+ "type": "object",
+ "title": "ForkTaskConfiguration",
+ "description": "The configuration of the branches to perform concurrently.",
+ "unevaluatedProperties": false,
+ "required": [
+ "branches"
+ ],
+ "properties": {
+ "branches": {
+ "$ref": "#/$defs/taskList",
+ "title": "ForkBranches"
+ },
+ "compete": {
+ "type": "boolean",
+ "title": "ForkCompete",
+ "description": "Indicates whether or not the concurrent tasks are racing against each other, with a single possible winner, which sets the composite task's output.",
+ "default": false
+ }
+ }
+ }
+ }
+ }
+ ]
+ },
+ "doTask": {
+ "type": "object",
+ "title": "DoTask",
+ "description": "Allows to execute a list of tasks in sequence.",
+ "unevaluatedProperties": false,
+ "required": [
+ "do"
+ ],
+ "allOf": [
+ {
+ "$ref": "#/$defs/taskBase"
+ },
+ {
+ "properties": {
+ "do": {
+ "$ref": "#/$defs/taskList",
+ "title": "DoTaskConfiguration",
+ "description": "The configuration of the tasks to perform sequentially."
+ }
+ }
+ }
+ ]
+ },
+ "emitTask": {
+ "type": "object",
+ "title": "EmitTask",
+ "description": "Allows workflows to publish events to event brokers or messaging systems, facilitating communication and coordination between different components and services.",
+ "required": [
+ "emit"
+ ],
+ "unevaluatedProperties": false,
+ "allOf": [
+ {
+ "$ref": "#/$defs/taskBase"
+ },
+ {
+ "properties": {
+ "emit": {
+ "type": "object",
+ "title": "EmitTaskConfiguration",
+ "description": "The configuration of an event's emission.",
+ "unevaluatedProperties": false,
+ "properties": {
+ "event": {
+ "type": "object",
+ "title": "EmitEventDefinition",
+ "description": "The definition of the event to emit.",
+ "properties": {
+ "with": {
+ "$ref": "#/$defs/eventProperties",
+ "title": "EmitEventWith",
+ "description": "Defines the properties of event to emit.",
+ "required": [
+ "source",
+ "type"
+ ]
+ }
+ },
+ "additionalProperties": true
+ }
+ },
+ "required": [
+ "event"
+ ]
+ }
+ }
+ }
+ ]
+ },
+ "forTask": {
+ "type": "object",
+ "title": "ForTask",
+ "description": "Allows workflows to iterate over a collection of items, executing a defined set of subtasks for each item in the collection. This task type is instrumental in handling scenarios such as batch processing, data transformation, and repetitive operations across datasets.",
+ "required": [
+ "for",
+ "do"
+ ],
+ "unevaluatedProperties": false,
+ "allOf": [
+ {
+ "$ref": "#/$defs/taskBase"
+ },
+ {
+ "properties": {
+ "for": {
+ "type": "object",
+ "title": "ForTaskConfiguration",
+ "description": "The definition of the loop that iterates over a range of values.",
+ "unevaluatedProperties": false,
+ "properties": {
+ "each": {
+ "type": "string",
+ "title": "ForEach",
+ "description": "The name of the variable used to store the current item being enumerated.",
+ "default": "item"
+ },
+ "in": {
+ "type": "string",
+ "title": "ForIn",
+ "description": "A runtime expression used to get the collection to enumerate."
+ },
+ "at": {
+ "type": "string",
+ "title": "ForAt",
+ "description": "The name of the variable used to store the index of the current item being enumerated.",
+ "default": "index"
+ }
+ },
+ "required": [
+ "in"
+ ]
+ },
+ "while": {
+ "type": "string",
+ "title": "While",
+ "description": "A runtime expression that represents the condition, if any, that must be met for the iteration to continue."
+ },
+ "do": {
+ "$ref": "#/$defs/taskList",
+ "title": "ForTaskDo"
+ }
+ }
+ }
+ ]
+ },
+ "listenTask": {
+ "type": "object",
+ "title": "ListenTask",
+ "description": "Provides a mechanism for workflows to await and react to external events, enabling event-driven behavior within workflow systems.",
+ "required": [
+ "listen"
+ ],
+ "unevaluatedProperties": false,
+ "allOf": [
+ {
+ "$ref": "#/$defs/taskBase"
+ },
+ {
+ "properties": {
+ "listen": {
+ "type": "object",
+ "title": "ListenTaskConfiguration",
+ "description": "The configuration of the listener to use.",
+ "unevaluatedProperties": false,
+ "properties": {
+ "to": {
+ "$ref": "#/$defs/eventConsumptionStrategy",
+ "title": "ListenTo",
+ "description": "Defines the event(s) to listen to."
+ },
+ "read": {
+ "type": "string",
+ "enum": [
+ "data",
+ "envelope",
+ "raw"
+ ],
+ "default": "data",
+ "title": "ListenAndReadAs",
+ "description": "Specifies how events are read during the listen operation."
+ }
+ },
+ "required": [
+ "to"
+ ]
+ },
+ "foreach": {
+ "$ref": "#/$defs/subscriptionIterator",
+ "title": "ListenIterator",
+ "description": "Configures the iterator, if any, for processing consumed event(s)."
+ }
+ }
+ }
+ ]
+ },
+ "raiseTask": {
+ "type": "object",
+ "title": "RaiseTask",
+ "description": "Intentionally triggers and propagates errors.",
+ "required": [
+ "raise"
+ ],
+ "unevaluatedProperties": false,
+ "allOf": [
+ {
+ "$ref": "#/$defs/taskBase"
+ },
+ {
+ "properties": {
+ "raise": {
+ "type": "object",
+ "title": "RaiseTaskConfiguration",
+ "description": "The definition of the error to raise.",
+ "unevaluatedProperties": false,
+ "properties": {
+ "error": {
+ "title": "RaiseTaskError",
+ "oneOf": [
+ {
+ "$ref": "#/$defs/error",
+ "title": "RaiseErrorDefinition",
+ "description": "Defines the error to raise."
+ },
+ {
+ "type": "string",
+ "title": "RaiseErrorReference",
+ "description": "The name of the error to raise"
+ }
+ ]
+ }
+ },
+ "required": [
+ "error"
+ ]
+ }
+ }
+ }
+ ]
+ },
+ "runTask": {
+ "type": "object",
+ "title": "RunTask",
+ "description": "Provides the capability to execute external containers, shell commands, scripts, or workflows.",
+ "required": [
+ "run"
+ ],
+ "unevaluatedProperties": false,
+ "allOf": [
+ {
+ "$ref": "#/$defs/taskBase"
+ },
+ {
+ "properties": {
+ "run": {
+ "type": "object",
+ "title": "RunTaskConfiguration",
+ "description": "The configuration of the process to execute.",
+ "unevaluatedProperties": false,
+ "properties": {
+ "await": {
+ "type": "boolean",
+ "default": true,
+ "title": "AwaitProcessCompletion",
+ "description": "Whether to await the process completion before continuing."
+ },
+ "return": {
+ "type": "string",
+ "title": "ProcessReturnType",
+ "description": "Configures the output of the process.",
+ "enum": [
+ "stdout",
+ "stderr",
+ "code",
+ "all",
+ "none"
+ ],
+ "default": "stdout"
+ }
+ },
+ "oneOf": [
+ {
+ "title": "RunContainer",
+ "description": "Enables the execution of external processes encapsulated within a containerized environment.",
+ "properties": {
+ "container": {
+ "type": "object",
+ "title": "Container",
+ "description": "The configuration of the container to run.",
+ "unevaluatedProperties": false,
+ "properties": {
+ "image": {
+ "type": "string",
+ "title": "ContainerImage",
+ "description": "The name of the container image to run."
+ },
+ "name": {
+ "type": "string",
+ "title": "ContainerName",
+ "description": "A runtime expression, if any, used to give specific name to the container."
+ },
+ "command": {
+ "type": "string",
+ "title": "ContainerCommand",
+ "description": "The command, if any, to execute on the container."
+ },
+ "ports": {
+ "type": "object",
+ "title": "ContainerPorts",
+ "description": "The container's port mappings, if any."
+ },
+ "volumes": {
+ "type": "object",
+ "title": "ContainerVolumes",
+ "description": "The container's volume mappings, if any."
+ },
+ "environment": {
+ "type": "object",
+ "title": "ContainerEnvironment",
+ "description": "A key/value mapping of the environment variables, if any, to use when running the configured process."
+ },
+ "stdin": {
+ "type": "string",
+ "title": "ContainerStdin",
+ "description": "A runtime expression, if any, passed as standard input (stdin) to the command or default container CMD"
+ },
+ "arguments": {
+ "type": "array",
+ "title": "ContainerArguments",
+ "description": "A list of the arguments, if any, passed as argv to the command or default container CMD",
+ "items": {
+ "type": "string"
+ }
+ },
+ "lifetime": {
+ "$ref": "#/$defs/containerLifetime",
+ "title": "ContainerLifetime",
+ "description": "An object, if any, used to configure the container's lifetime"
+ },
+ "pullPolicy": {
+ "type": "string",
+ "title": "ContainerPullPolicy",
+ "description": "Policy that controls how the container's image should be pulled from the registry. Defaults to `ifNotPresent`",
+ "enum": [
+ "ifNotPresent",
+ "always",
+ "never"
+ ]
+ }
+ },
+ "required": [
+ "image"
+ ]
+ }
+ },
+ "required": [
+ "container"
+ ]
+ },
+ {
+ "title": "RunScript",
+ "description": "Enables the execution of custom scripts or code within a workflow, empowering workflows to perform specialized logic, data processing, or integration tasks by executing user-defined scripts written in various programming languages.",
+ "properties": {
+ "script": {
+ "type": "object",
+ "title": "Script",
+ "description": "The configuration of the script to run.",
+ "unevaluatedProperties": false,
+ "properties": {
+ "language": {
+ "type": "string",
+ "title": "ScriptLanguage",
+ "description": "The language of the script to run."
+ },
+ "stdin": {
+ "type": "string",
+ "title": "ScriptStdin",
+ "description": "A runtime expression, if any, to the script as standard input (stdin)."
+ },
+ "arguments": {
+ "type": "array",
+ "title": "ScriptArguments",
+ "description": "A list of the arguments, if any, to the script as argv",
+ "items": {
+ "type": "string"
+ }
+ },
+ "environment": {
+ "type": "object",
+ "title": "ScriptEnvironment",
+ "description": "A key/value mapping of the environment variables, if any, to use when running the configured script process.",
+ "additionalProperties": true
+ }
+ },
+ "oneOf": [
+ {
+ "title": "InlineScript",
+ "type": "object",
+ "description": "The script's code.",
+ "properties": {
+ "code": {
+ "type": "string",
+ "title": "InlineScriptCode"
+ }
+ },
+ "required": [
+ "code"
+ ]
+ },
+ {
+ "title": "ExternalScript",
+ "type": "object",
+ "description": "The script's resource.",
+ "properties": {
+ "source": {
+ "$ref": "#/$defs/externalResource",
+ "title": "ExternalScriptResource"
+ }
+ },
+ "required": [
+ "source"
+ ]
+ }
+ ],
+ "required": [
+ "language"
+ ]
+ }
+ },
+ "required": [
+ "script"
+ ]
+ },
+ {
+ "title": "RunShell",
+ "description": "Enables the execution of shell commands within a workflow, enabling workflows to interact with the underlying operating system and perform system-level operations, such as file manipulation, environment configuration, or system administration tasks.",
+ "properties": {
+ "shell": {
+ "type": "object",
+ "title": "Shell",
+ "description": "The configuration of the shell command to run.",
+ "unevaluatedProperties": false,
+ "properties": {
+ "command": {
+ "type": "string",
+ "title": "ShellCommand",
+ "description": "The shell command to run."
+ },
+ "stdin": {
+ "type": "string",
+ "title": "ShellStdin",
+ "description": "A runtime expression, if any, to the shell command as standard input (stdin)."
+ },
+ "arguments": {
+ "type": "array",
+ "title": "ShellArguments",
+ "description": "A list of the arguments, if any, to the shell command as argv",
+ "items": {
+ "type": "string"
+ }
+ },
+ "environment": {
+ "type": "object",
+ "title": "ShellEnvironment",
+ "description": "A key/value mapping of the environment variables, if any, to use when running the configured process.",
+ "additionalProperties": true
+ }
+ },
+ "required": [
+ "command"
+ ]
+ }
+ },
+ "required": [
+ "shell"
+ ]
+ },
+ {
+ "title": "RunWorkflow",
+ "description": "Enables the invocation and execution of nested workflows within a parent workflow, facilitating modularization, reusability, and abstraction of complex logic or business processes by encapsulating them into standalone workflow units.",
+ "properties": {
+ "workflow": {
+ "type": "object",
+ "title": "SubflowConfiguration",
+ "description": "The configuration of the workflow to run.",
+ "unevaluatedProperties": false,
+ "properties": {
+ "namespace": {
+ "type": "string",
+ "title": "SubflowNamespace",
+ "description": "The namespace the workflow to run belongs to."
+ },
+ "name": {
+ "type": "string",
+ "title": "SubflowName",
+ "description": "The name of the workflow to run."
+ },
+ "version": {
+ "type": "string",
+ "default": "latest",
+ "title": "SubflowVersion",
+ "description": "The version of the workflow to run. Defaults to latest."
+ },
+ "input": {
+ "type": "object",
+ "title": "SubflowInput",
+ "description": "The data, if any, to pass as input to the workflow to execute. The value should be validated against the target workflow's input schema, if specified.",
+ "additionalProperties": true
+ }
+ },
+ "required": [
+ "namespace",
+ "name",
+ "version"
+ ]
+ }
+ },
+ "required": [
+ "workflow"
+ ]
+ }
+ ]
+ }
+ }
+ }
+ ]
+ },
+ "setTask": {
+ "type": "object",
+ "title": "SetTask",
+ "description": "A task used to set data.",
+ "required": [
+ "set"
+ ],
+ "unevaluatedProperties": false,
+ "allOf": [
+ {
+ "$ref": "#/$defs/taskBase"
+ },
+ {
+ "properties": {
+ "set": {
+ "oneOf": [
+ {
+ "type": "object",
+ "minProperties": 1,
+ "additionalProperties": true
+ },
+ {
+ "type": "string"
+ }
+ ],
+ "title": "SetTaskConfiguration",
+ "description": "The data to set."
+ }
+ }
+ }
+ ]
+ },
+ "switchTask": {
+ "type": "object",
+ "title": "SwitchTask",
+ "description": "Enables conditional branching within workflows, allowing them to dynamically select different paths based on specified conditions or criteria.",
+ "required": [
+ "switch"
+ ],
+ "unevaluatedProperties": false,
+ "allOf": [
+ {
+ "$ref": "#/$defs/taskBase"
+ },
+ {
+ "properties": {
+ "switch": {
+ "type": "array",
+ "title": "SwitchTaskConfiguration",
+ "description": "The definition of the switch to use.",
+ "minItems": 1,
+ "items": {
+ "type": "object",
+ "title": "SwitchItem",
+ "minProperties": 1,
+ "maxProperties": 1,
+ "additionalProperties": {
+ "type": "object",
+ "title": "SwitchCase",
+ "description": "The definition of a case within a switch task, defining a condition and corresponding tasks to execute if the condition is met.",
+ "unevaluatedProperties": false,
+ "required": [
+ "then"
+ ],
+ "properties": {
+ "when": {
+ "type": "string",
+ "title": "SwitchCaseCondition",
+ "description": "A runtime expression used to determine whether or not the case matches."
+ },
+ "then": {
+ "$ref": "#/$defs/flowDirective",
+ "title": "SwitchCaseOutcome",
+ "description": "The flow directive to execute when the case matches."
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ ]
+ },
+ "tryTask": {
+ "type": "object",
+ "title": "TryTask",
+ "description": "Serves as a mechanism within workflows to handle errors gracefully, potentially retrying failed tasks before proceeding with alternate ones.",
+ "required": [
+ "try",
+ "catch"
+ ],
+ "unevaluatedProperties": false,
+ "allOf": [
+ {
+ "$ref": "#/$defs/taskBase"
+ },
+ {
+ "properties": {
+ "try": {
+ "$ref": "#/$defs/taskList",
+ "title": "TryTaskConfiguration",
+ "description": "The task(s) to perform."
+ },
+ "catch": {
+ "type": "object",
+ "title": "TryTaskCatch",
+ "description": "The object used to define the errors to catch.",
+ "unevaluatedProperties": false,
+ "properties": {
+ "errors": {
+ "type": "object",
+ "title": "CatchErrors",
+ "properties": {
+ "with": {
+ "$ref": "#/$defs/errorFilter"
+ }
+ },
+ "description": "static error filter"
+ },
+ "as": {
+ "type": "string",
+ "title": "CatchAs",
+ "description": "The name of the runtime expression variable to save the error as. Defaults to 'error'."
+ },
+ "when": {
+ "type": "string",
+ "title": "CatchWhen",
+ "description": "A runtime expression used to determine whether to catch the filtered error."
+ },
+ "exceptWhen": {
+ "type": "string",
+ "title": "CatchExceptWhen",
+ "description": "A runtime expression used to determine whether not to catch the filtered error."
+ },
+ "retry": {
+ "oneOf": [
+ {
+ "$ref": "#/$defs/retryPolicy",
+ "title": "RetryPolicyDefinition",
+ "description": "The retry policy to use, if any, when catching errors."
+ },
+ {
+ "type": "string",
+ "title": "RetryPolicyReference",
+ "description": "The name of the retry policy to use, if any, when catching errors."
+ }
+ ]
+ },
+ "do": {
+ "$ref": "#/$defs/taskList",
+ "title": "TryTaskCatchDo",
+ "description": "The definition of the task(s) to run when catching an error."
+ }
+ }
+ }
+ }
+ }
+ ]
+ },
+ "waitTask": {
+ "type": "object",
+ "title": "WaitTask",
+ "description": "Allows workflows to pause or delay their execution for a specified period of time.",
+ "required": [
+ "wait"
+ ],
+ "unevaluatedProperties": false,
+ "allOf": [
+ {
+ "$ref": "#/$defs/taskBase"
+ },
+ {
+ "properties": {
+ "wait": {
+ "$ref": "#/$defs/duration",
+ "title": "WaitTaskConfiguration",
+ "description": "The amount of time to wait."
+ }
+ }
+ }
+ ]
+ },
+ "flowDirective": {
+ "title": "FlowDirective",
+ "description": "Represents different transition options for a workflow.",
+ "anyOf": [
+ {
+ "title": "FlowDirectiveEnum",
+ "type": "string",
+ "enum": [
+ "continue",
+ "exit",
+ "end"
+ ],
+ "default": "continue"
+ },
+ {
+ "type": "string"
+ }
+ ]
+ },
+ "referenceableAuthenticationPolicy": {
+ "type": "object",
+ "title": "ReferenceableAuthenticationPolicy",
+ "description": "Represents a referenceable authentication policy.",
+ "unevaluatedProperties": false,
+ "oneOf": [
+ {
+ "title": "AuthenticationPolicyReference",
+ "description": "The reference of the authentication policy to use.",
+ "properties": {
+ "use": {
+ "type": "string",
+ "minLength": 1,
+ "title": "ReferenceableAuthenticationPolicyName",
+ "description": "The name of the authentication policy to use."
+ }
+ },
+ "required": [
+ "use"
+ ]
+ },
+ {
+ "$ref": "#/$defs/authenticationPolicy"
+ }
+ ]
+ },
+ "secretBasedAuthenticationPolicy": {
+ "type": "object",
+ "title": "SecretBasedAuthenticationPolicy",
+ "description": "Represents an authentication policy based on secrets.",
+ "unevaluatedProperties": false,
+ "properties": {
+ "use": {
+ "type": "string",
+ "minLength": 1,
+ "title": "SecretBasedAuthenticationPolicyName",
+ "description": "The name of the authentication policy to use."
+ }
+ },
+ "required": [
+ "use"
+ ]
+ },
+ "authenticationPolicy": {
+ "type": "object",
+ "title": "AuthenticationPolicy",
+ "description": "Defines an authentication policy.",
+ "oneOf": [
+ {
+ "title": "BasicAuthenticationPolicy",
+ "description": "Use basic authentication.",
+ "properties": {
+ "basic": {
+ "type": "object",
+ "title": "BasicAuthenticationPolicyConfiguration",
+ "description": "The configuration of the basic authentication policy.",
+ "unevaluatedProperties": false,
+ "oneOf": [
+ {
+ "title": "BasicAuthenticationProperties",
+ "description": "Inline configuration of the basic authentication policy.",
+ "properties": {
+ "username": {
+ "type": "string",
+ "description": "The username to use."
+ },
+ "password": {
+ "type": "string",
+ "description": "The password to use."
+ }
+ },
+ "required": [
+ "username",
+ "password"
+ ]
+ },
+ {
+ "$ref": "#/$defs/secretBasedAuthenticationPolicy",
+ "title": "BasicAuthenticationPolicySecret",
+ "description": "Secret based configuration of the basic authentication policy."
+ }
+ ]
+ }
+ },
+ "required": [
+ "basic"
+ ]
+ },
+ {
+ "title": "BearerAuthenticationPolicy",
+ "description": "Use bearer authentication.",
+ "properties": {
+ "bearer": {
+ "type": "object",
+ "title": "BearerAuthenticationPolicyConfiguration",
+ "description": "The configuration of the bearer authentication policy.",
+ "unevaluatedProperties": false,
+ "oneOf": [
+ {
+ "title": "BearerAuthenticationProperties",
+ "description": "Inline configuration of the bearer authentication policy.",
+ "properties": {
+ "token": {
+ "type": "string",
+ "description": "The bearer token to use."
+ }
+ },
+ "required": [
+ "token"
+ ]
+ },
+ {
+ "$ref": "#/$defs/secretBasedAuthenticationPolicy",
+ "title": "BearerAuthenticationPolicySecret",
+ "description": "Secret based configuration of the bearer authentication policy."
+ }
+ ]
+ }
+ },
+ "required": [
+ "bearer"
+ ]
+ },
+ {
+ "title": "DigestAuthenticationPolicy",
+ "description": "Use digest authentication.",
+ "properties": {
+ "digest": {
+ "type": "object",
+ "title": "DigestAuthenticationPolicyConfiguration",
+ "description": "The configuration of the digest authentication policy.",
+ "unevaluatedProperties": false,
+ "oneOf": [
+ {
+ "title": "DigestAuthenticationProperties",
+ "description": "Inline configuration of the digest authentication policy.",
+ "properties": {
+ "username": {
+ "type": "string",
+ "description": "The username to use."
+ },
+ "password": {
+ "type": "string",
+ "description": "The password to use."
+ }
+ },
+ "required": [
+ "username",
+ "password"
+ ]
+ },
+ {
+ "$ref": "#/$defs/secretBasedAuthenticationPolicy",
+ "title": "DigestAuthenticationPolicySecret",
+ "description": "Secret based configuration of the digest authentication policy."
+ }
+ ]
+ }
+ },
+ "required": [
+ "digest"
+ ]
+ },
+ {
+ "title": "OAuth2AuthenticationPolicy",
+ "description": "Use OAuth2 authentication.",
+ "properties": {
+ "oauth2": {
+ "type": "object",
+ "title": "OAuth2AuthenticationPolicyConfiguration",
+ "description": "The configuration of the OAuth2 authentication policy.",
+ "unevaluatedProperties": false,
+ "oneOf": [
+ {
+ "$ref": "#/$defs/oauth2AuthenticationProperties",
+ "type": "object",
+ "title": "OAuth2ConnectAuthenticationProperties",
+ "description": "The inline configuration of the OAuth2 authentication policy.",
+ "unevaluatedProperties": false,
+ "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`."
+ }
+ }
+ }
+ }
+ },
+ {
+ "$ref": "#/$defs/secretBasedAuthenticationPolicy",
+ "title": "OAuth2AuthenticationPolicySecret",
+ "description": "Secret based configuration of the OAuth2 authentication policy."
+ }
+ ]
+ }
+ },
+ "required": [
+ "oauth2"
+ ]
+ },
+ {
+ "title": "OpenIdConnectAuthenticationPolicy",
+ "description": "Use OpenIdConnect authentication.",
+ "properties": {
+ "oidc": {
+ "type": "object",
+ "title": "OpenIdConnectAuthenticationPolicyConfiguration",
+ "description": "The configuration of the OpenIdConnect authentication policy.",
+ "unevaluatedProperties": false,
+ "oneOf": [
+ {
+ "$ref": "#/$defs/oauth2AuthenticationProperties",
+ "title": "OpenIdConnectAuthenticationProperties",
+ "description": "The inline configuration of the OpenIdConnect authentication policy.",
+ "unevaluatedProperties": false
+ },
+ {
+ "$ref": "#/$defs/secretBasedAuthenticationPolicy",
+ "title": "OpenIdConnectAuthenticationPolicySecret",
+ "description": "Secret based configuration of the OpenIdConnect authentication policy."
+ }
+ ]
+ }
+ },
+ "required": [
+ "oidc"
+ ]
+ }
+ ]
+ },
+ "oauth2AuthenticationProperties": {
+ "type": "object",
+ "title": "OAuth2AuthenticationData",
+ "description": "Inline configuration of the OAuth2 authentication policy.",
+ "properties": {
+ "authority": {
+ "$ref": "#/$defs/uriTemplate",
+ "title": "OAuth2AuthenticationDataAuthority",
+ "description": "The URI that references the OAuth2 authority to use."
+ },
+ "grant": {
+ "type": "string",
+ "enum": [
+ "authorization_code",
+ "client_credentials",
+ "password",
+ "refresh_token",
+ "urn:ietf:params:oauth:grant-type:token-exchange"
+ ],
+ "title": "OAuth2AuthenticationDataGrant",
+ "description": "The grant type to use."
+ },
+ "client": {
+ "type": "object",
+ "title": "OAuth2AuthenticationDataClient",
+ "description": "The definition of an OAuth2 client.",
+ "unevaluatedProperties": false,
+ "properties": {
+ "id": {
+ "type": "string",
+ "title": "ClientId",
+ "description": "The client id to use."
+ },
+ "secret": {
+ "type": "string",
+ "title": "ClientSecret",
+ "description": "The client secret to use, if any."
+ },
+ "assertion": {
+ "type": "string",
+ "title": "ClientAssertion",
+ "description": "A JWT containing a signed assertion with your application credentials."
+ },
+ "authentication": {
+ "type": "string",
+ "enum": [
+ "client_secret_basic",
+ "client_secret_post",
+ "client_secret_jwt",
+ "private_key_jwt",
+ "none"
+ ],
+ "default": "client_secret_post",
+ "title": "ClientAuthentication",
+ "description": "The authentication method to use to authenticate the client."
+ }
+ }
+ },
+ "request": {
+ "type": "object",
+ "title": "OAuth2TokenRequest",
+ "description": "The configuration of an OAuth2 token request",
+ "properties": {
+ "encoding": {
+ "type": "string",
+ "enum": [
+ "application/x-www-form-urlencoded",
+ "application/json"
+ ],
+ "default": "application/x-www-form-urlencoded",
+ "title": "Oauth2TokenRequestEncoding"
+ }
+ }
+ },
+ "issuers": {
+ "type": "array",
+ "title": "OAuth2Issuers",
+ "description": "A list that contains that contains valid issuers that will be used to check against the issuer of generated tokens.",
+ "items": {
+ "type": "string"
+ }
+ },
+ "scopes": {
+ "type": "array",
+ "title": "OAuth2AuthenticationDataScopes",
+ "description": "The scopes, if any, to request the token for.",
+ "items": {
+ "type": "string"
+ }
+ },
+ "audiences": {
+ "type": "array",
+ "title": "OAuth2AuthenticationDataAudiences",
+ "description": "The audiences, if any, to request the token for.",
+ "items": {
+ "type": "string"
+ }
+ },
+ "username": {
+ "type": "string",
+ "title": "OAuth2AuthenticationDataUsername",
+ "description": "The username to use. Used only if the grant type is Password."
+ },
+ "password": {
+ "type": "string",
+ "title": "OAuth2AuthenticationDataPassword",
+ "description": "The password to use. Used only if the grant type is Password."
+ },
+ "subject": {
+ "$ref": "#/$defs/oauth2Token",
+ "title": "OAuth2AuthenticationDataSubject",
+ "description": "The security token that represents the identity of the party on behalf of whom the request is being made."
+ },
+ "actor": {
+ "$ref": "#/$defs/oauth2Token",
+ "title": "OAuth2AuthenticationDataActor",
+ "description": "The security token that represents the identity of the acting party."
+ }
+ }
+ },
+ "oauth2Token": {
+ "type": "object",
+ "title": "OAuth2TokenDefinition",
+ "description": "Represents an OAuth2 token.",
+ "unevaluatedProperties": false,
+ "properties": {
+ "token": {
+ "type": "string",
+ "title": "OAuth2Token",
+ "description": "The security token to use."
+ },
+ "type": {
+ "type": "string",
+ "title": "OAuth2TokenType",
+ "description": "The type of the security token to use."
+ }
+ },
+ "required": [
+ "token",
+ "type"
+ ]
+ },
+ "duration": {
+ "oneOf": [
+ {
+ "type": "object",
+ "minProperties": 1,
+ "unevaluatedProperties": false,
+ "properties": {
+ "days": {
+ "type": "integer",
+ "title": "DurationDays",
+ "description": "Number of days, if any."
+ },
+ "hours": {
+ "type": "integer",
+ "title": "DurationHours",
+ "description": "Number of days, if any."
+ },
+ "minutes": {
+ "type": "integer",
+ "title": "DurationMinutes",
+ "description": "Number of minutes, if any."
+ },
+ "seconds": {
+ "type": "integer",
+ "title": "DurationSeconds",
+ "description": "Number of seconds, if any."
+ },
+ "milliseconds": {
+ "type": "integer",
+ "title": "DurationMilliseconds",
+ "description": "Number of milliseconds, if any."
+ }
+ },
+ "title": "DurationInline",
+ "description": "The inline definition of a duration."
+ },
+ {
+ "$ref": "#/$defs/runtimeExpression",
+ "title": "DurationExpression",
+ "description": "Runtime expression that generates an ISO 8601"
+ },
+ {
+ "type": "string",
+ "pattern": "^P(?!$)(\\d+(?:\\.\\d+)?Y)?(\\d+(?:\\.\\d+)?M)?(\\d+(?:\\.\\d+)?W)?(\\d+(?:\\.\\d+)?D)?(T(?=\\d)(\\d+(?:\\.\\d+)?H)?(\\d+(?:\\.\\d+)?M)?(\\d+(?:\\.\\d+)?S)?)?$",
+ "title": "DurationLiteral",
+ "description": "The Literal ISO 8601 representation of a duration."
+ }
+ ]
+ },
+ "error": {
+ "type": "object",
+ "title": "Error",
+ "description": "Represents an error.",
+ "unevaluatedProperties": false,
+ "properties": {
+ "type": {
+ "title": "ErrorType",
+ "description": "A URI reference that identifies the error type.",
+ "oneOf": [
+ {
+ "title": "LiteralErrorType",
+ "$ref": "#/$defs/uriTemplate",
+ "description": "The literal error type."
+ },
+ {
+ "title": "ExpressionErrorType",
+ "$ref": "#/$defs/runtimeExpression",
+ "description": "An expression based error type."
+ }
+ ]
+ },
+ "status": {
+ "type": "integer",
+ "title": "ErrorStatus",
+ "description": "The status code generated by the origin for this occurrence of the error."
+ },
+ "instance": {
+ "title": "ErrorInstance",
+ "description": "A JSON Pointer used to reference the component the error originates from.",
+ "oneOf": [
+ {
+ "title": "LiteralErrorInstance",
+ "description": "The literal error instance.",
+ "type": "string",
+ "format": "json-pointer"
+ },
+ {
+ "$ref": "#/$defs/runtimeExpression",
+ "title": "ExpressionErrorInstance",
+ "description": "An expression based error instance."
+ }
+ ]
+ },
+ "title": {
+ "description": "A short, human-readable summary of the error.",
+ "title": "ErrorTitle",
+ "anyOf": [
+ {
+ "$ref": "#/$defs/runtimeExpression",
+ "title": "ExpressionErrorTitle"
+ },
+ {
+ "type": "string",
+ "title": "LiteralErrorTitle"
+ }
+ ]
+ },
+ "detail": {
+ "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",
+ "title": "ErrorFilter",
+ "description": "Error filtering base on static values. For error filtering on dynamic values, use catch.when property",
+ "minProperties": 1,
+ "properties": {
+ "type": {
+ "type": "string",
+ "description": "if present, means this value should be used for filtering"
+ },
+ "status": {
+ "type": "integer",
+ "description": "if present, means this value should be used for filtering"
+ },
+ "instance": {
+ "type": "string",
+ "description": "if present, means this value should be used for filtering"
+ },
+ "title": {
+ "type": "string",
+ "description": "if present, means this value should be used for filtering"
+ },
+ "details": {
+ "type": "string",
+ "description": "if present, means this value should be used for filtering"
+ }
+ }
+ },
+ "uriTemplate": {
+ "title": "UriTemplate",
+ "anyOf": [
+ {
+ "title": "LiteralUriTemplate",
+ "type": "string",
+ "format": "uri-template",
+ "pattern": "^[A-Za-z][A-Za-z0-9+\\-.]*://.*"
+ },
+ {
+ "title": "LiteralUri",
+ "type": "string",
+ "format": "uri",
+ "pattern": "^[A-Za-z][A-Za-z0-9+\\-.]*://.*"
+ }
+ ]
+ },
+ "endpoint": {
+ "title": "Endpoint",
+ "description": "Represents an endpoint.",
+ "oneOf": [
+ {
+ "$ref": "#/$defs/runtimeExpression"
+ },
+ {
+ "$ref": "#/$defs/uriTemplate"
+ },
+ {
+ "title": "EndpointConfiguration",
+ "type": "object",
+ "unevaluatedProperties": false,
+ "properties": {
+ "uri": {
+ "title": "EndpointUri",
+ "description": "The endpoint's URI.",
+ "oneOf": [
+ {
+ "title": "LiteralEndpointURI",
+ "description": "The literal endpoint's URI.",
+ "$ref": "#/$defs/uriTemplate"
+ },
+ {
+ "title": "ExpressionEndpointURI",
+ "$ref": "#/$defs/runtimeExpression",
+ "description": "An expression based endpoint's URI."
+ }
+ ]
+ },
+ "authentication": {
+ "$ref": "#/$defs/referenceableAuthenticationPolicy",
+ "title": "EndpointAuthentication",
+ "description": "The authentication policy to use."
+ }
+ },
+ "required": [
+ "uri"
+ ]
+ }
+ ]
+ },
+ "eventProperties": {
+ "type": "object",
+ "title": "EventProperties",
+ "description": "Describes the properties of an event.",
+ "properties": {
+ "id": {
+ "type": "string",
+ "title": "EventId",
+ "description": "The event's unique identifier."
+ },
+ "source": {
+ "title": "EventSource",
+ "description": "Identifies the context in which an event happened.",
+ "oneOf": [
+ {
+ "$ref": "#/$defs/uriTemplate"
+ },
+ {
+ "$ref": "#/$defs/runtimeExpression"
+ }
+ ]
+ },
+ "type": {
+ "type": "string",
+ "title": "EventType",
+ "description": "This attribute contains a value describing the type of event related to the originating occurrence."
+ },
+ "time": {
+ "title": "EventTime",
+ "description": "When the event occured.",
+ "oneOf": [
+ {
+ "title": "LiteralTime",
+ "type": "string",
+ "format": "date-time"
+ },
+ {
+ "$ref": "#/$defs/runtimeExpression"
+ }
+ ]
+ },
+ "subject": {
+ "type": "string",
+ "title": "EventSubject",
+ "description": "The subject of the event."
+ },
+ "datacontenttype": {
+ "type": "string",
+ "title": "EventDataContentType",
+ "description": "Content type of data value. This attribute enables data to carry any type of content, whereby format and encoding might differ from that of the chosen event format."
+ },
+ "dataschema": {
+ "title": "EventDataschema",
+ "description": "The schema describing the event format.",
+ "oneOf": [
+ {
+ "title": "LiteralDataSchema",
+ "$ref": "#/$defs/uriTemplate",
+ "description": "The literal event data schema."
+ },
+ {
+ "title": "ExpressionDataSchema",
+ "$ref": "#/$defs/runtimeExpression",
+ "description": "An expression based event data schema."
+ }
+ ]
+ },
+ "data": {
+ "title": "EventData",
+ "description": "The event's payload data",
+ "anyOf": [
+ {
+ "$ref": "#/$defs/runtimeExpression"
+ },
+ {}
+ ]
+ }
+ },
+ "additionalProperties": true
+ },
+ "eventConsumptionStrategy": {
+ "type": "object",
+ "title": "EventConsumptionStrategy",
+ "description": "Describe the event consumption strategy to adopt.",
+ "unevaluatedProperties": false,
+ "oneOf": [
+ {
+ "title": "AllEventConsumptionStrategy",
+ "properties": {
+ "all": {
+ "type": "array",
+ "title": "AllEventConsumptionStrategyConfiguration",
+ "description": "A list containing all the events that must be consumed.",
+ "items": {
+ "$ref": "#/$defs/eventFilter"
+ }
+ }
+ },
+ "required": [
+ "all"
+ ]
+ },
+ {
+ "title": "AnyEventConsumptionStrategy",
+ "properties": {
+ "any": {
+ "type": "array",
+ "title": "AnyEventConsumptionStrategyConfiguration",
+ "description": "A list containing any of the events to consume.",
+ "items": {
+ "$ref": "#/$defs/eventFilter"
+ }
+ },
+ "until": {
+ "oneOf": [
+ {
+ "type": "string",
+ "title": "AnyEventUntilCondition",
+ "description": "A runtime expression condition evaluated after consuming an event and which determines whether or not to continue listening."
+ },
+ {
+ "allOf": [
+ {
+ "$ref": "#/$defs/eventConsumptionStrategy",
+ "description": "The strategy that defines the event(s) to consume to stop listening."
+ },
+ {
+ "properties": {
+ "until": false
+ }
+ }
+ ],
+ "title": "AnyEventUntilConsumed"
+ }
+ ]
+ }
+ },
+ "required": [
+ "any"
+ ]
+ },
+ {
+ "title": "OneEventConsumptionStrategy",
+ "properties": {
+ "one": {
+ "$ref": "#/$defs/eventFilter",
+ "title": "OneEventConsumptionStrategyConfiguration",
+ "description": "The single event to consume."
+ }
+ },
+ "required": [
+ "one"
+ ]
+ }
+ ]
+ },
+ "eventFilter": {
+ "type": "object",
+ "title": "EventFilter",
+ "description": "An event filter is a mechanism used to selectively process or handle events based on predefined criteria, such as event type, source, or specific attributes.",
+ "unevaluatedProperties": false,
+ "properties": {
+ "with": {
+ "$ref": "#/$defs/eventProperties",
+ "minProperties": 1,
+ "title": "WithEvent",
+ "description": "An event filter is a mechanism used to selectively process or handle events based on predefined criteria, such as event type, source, or specific attributes."
+ },
+ "correlate": {
+ "type": "object",
+ "title": "EventFilterCorrelate",
+ "description": "A correlation is a link between events and data, established by mapping event attributes to specific data attributes, allowing for coordinated processing or handling based on event characteristics.",
+ "additionalProperties": {
+ "type": "object",
+ "properties": {
+ "from": {
+ "type": "string",
+ "title": "CorrelateFrom",
+ "description": "A runtime expression used to extract the correlation value from the filtered event."
+ },
+ "expect": {
+ "type": "string",
+ "title": "CorrelateExpect",
+ "description": "A constant or a runtime expression, if any, used to determine whether or not the extracted correlation value matches expectations. If not set, the first extracted value will be used as the correlation's expectation."
+ }
+ },
+ "required": [
+ "from"
+ ]
+ }
+ }
+ },
+ "required": [
+ "with"
+ ]
+ },
+ "extension": {
+ "type": "object",
+ "title": "Extension",
+ "description": "The definition of an extension.",
+ "unevaluatedProperties": false,
+ "properties": {
+ "extend": {
+ "type": "string",
+ "enum": [
+ "call",
+ "composite",
+ "emit",
+ "for",
+ "listen",
+ "raise",
+ "run",
+ "set",
+ "switch",
+ "try",
+ "wait",
+ "all"
+ ],
+ "title": "ExtensionTarget",
+ "description": "The type of task to extend."
+ },
+ "when": {
+ "type": "string",
+ "title": "ExtensionCondition",
+ "description": "A runtime expression, if any, used to determine whether or not the extension should apply in the specified context."
+ },
+ "before": {
+ "$ref": "#/$defs/taskList",
+ "title": "ExtensionDoBefore",
+ "description": "The task(s) to execute before the extended task, if any."
+ },
+ "after": {
+ "$ref": "#/$defs/taskList",
+ "title": "ExtensionDoAfter",
+ "description": "The task(s) to execute after the extended task, if any."
+ }
+ },
+ "required": [
+ "extend"
+ ]
+ },
+ "externalResource": {
+ "type": "object",
+ "title": "ExternalResource",
+ "description": "Represents an external resource.",
+ "unevaluatedProperties": false,
+ "properties": {
+ "name": {
+ "type": "string",
+ "title": "ExternalResourceName",
+ "description": "The name of the external resource, if any."
+ },
+ "endpoint": {
+ "$ref": "#/$defs/endpoint",
+ "title": "ExternalResourceEndpoint",
+ "description": "The endpoint of the external resource."
+ }
+ },
+ "required": [
+ "endpoint"
+ ]
+ },
+ "input": {
+ "type": "object",
+ "title": "Input",
+ "description": "Configures the input of a workflow or task.",
+ "unevaluatedProperties": false,
+ "properties": {
+ "schema": {
+ "$ref": "#/$defs/schema",
+ "title": "InputSchema",
+ "description": "The schema used to describe and validate the input of the workflow or task."
+ },
+ "from": {
+ "title": "InputFrom",
+ "description": "A runtime expression, if any, used to mutate and/or filter the input of the workflow or task.",
+ "oneOf": [
+ {
+ "type": "string"
+ },
+ {
+ "type": "object"
+ }
+ ]
+ }
+ }
+ },
+ "output": {
+ "type": "object",
+ "title": "Output",
+ "description": "Configures the output of a workflow or task.",
+ "unevaluatedProperties": false,
+ "properties": {
+ "schema": {
+ "$ref": "#/$defs/schema",
+ "title": "OutputSchema",
+ "description": "The schema used to describe and validate the output of the workflow or task."
+ },
+ "as": {
+ "title": "OutputAs",
+ "description": "A runtime expression, if any, used to mutate and/or filter the output of the workflow or task.",
+ "oneOf": [
+ {
+ "type": "string"
+ },
+ {
+ "type": "object"
+ }
+ ]
+ }
+ }
+ },
+ "export": {
+ "type": "object",
+ "title": "Export",
+ "description": "Set the content of the context. .",
+ "unevaluatedProperties": false,
+ "properties": {
+ "schema": {
+ "$ref": "#/$defs/schema",
+ "title": "ExportSchema",
+ "description": "The schema used to describe and validate the workflow context."
+ },
+ "as": {
+ "title": "ExportAs",
+ "description": "A runtime expression, if any, used to export the output data to the context.",
+ "oneOf": [
+ {
+ "type": "string"
+ },
+ {
+ "type": "object"
+ }
+ ]
+ }
+ }
+ },
+ "retryPolicy": {
+ "type": "object",
+ "title": "RetryPolicy",
+ "description": "Defines a retry policy.",
+ "unevaluatedProperties": false,
+ "properties": {
+ "when": {
+ "type": "string",
+ "title": "RetryWhen",
+ "description": "A runtime expression, if any, used to determine whether or not to retry running the task, in a given context."
+ },
+ "exceptWhen": {
+ "type": "string",
+ "title": "RetryExcepWhen",
+ "description": "A runtime expression used to determine whether or not to retry running the task, in a given context."
+ },
+ "delay": {
+ "$ref": "#/$defs/duration",
+ "title": "RetryDelay",
+ "description": "The duration to wait between retry attempts."
+ },
+ "backoff": {
+ "type": "object",
+ "title": "RetryBackoff",
+ "description": "The retry duration backoff.",
+ "unevaluatedProperties": false,
+ "oneOf": [
+ {
+ "title": "ConstantBackoff",
+ "properties": {
+ "constant": {
+ "type": "object",
+ "description": "The definition of the constant backoff to use, if any."
+ }
+ },
+ "required": [
+ "constant"
+ ]
+ },
+ {
+ "title": "ExponentialBackOff",
+ "properties": {
+ "exponential": {
+ "type": "object",
+ "description": "The definition of the exponential backoff to use, if any."
+ }
+ },
+ "required": [
+ "exponential"
+ ]
+ },
+ {
+ "title": "LinearBackoff",
+ "properties": {
+ "linear": {
+ "type": "object",
+ "description": "The definition of the linear backoff to use, if any."
+ }
+ },
+ "required": [
+ "linear"
+ ]
+ }
+ ]
+ },
+ "limit": {
+ "type": "object",
+ "title": "RetryLimit",
+ "unevaluatedProperties": false,
+ "properties": {
+ "attempt": {
+ "type": "object",
+ "title": "RetryLimitAttempt",
+ "unevaluatedProperties": false,
+ "properties": {
+ "count": {
+ "type": "integer",
+ "title": "RetryLimitAttemptCount",
+ "description": "The maximum amount of retry attempts, if any."
+ },
+ "duration": {
+ "$ref": "#/$defs/duration",
+ "title": "RetryLimitAttemptDuration",
+ "description": "The maximum duration for each retry attempt."
+ }
+ }
+ },
+ "duration": {
+ "$ref": "#/$defs/duration",
+ "title": "RetryLimitDuration",
+ "description": "The duration limit, if any, for all retry attempts."
+ }
+ },
+ "description": "The retry limit, if any."
+ },
+ "jitter": {
+ "type": "object",
+ "title": "RetryPolicyJitter",
+ "description": "The parameters, if any, that control the randomness or variability of the delay between retry attempts.",
+ "unevaluatedProperties": false,
+ "properties": {
+ "from": {
+ "$ref": "#/$defs/duration",
+ "title": "RetryPolicyJitterFrom",
+ "description": "The minimum duration of the jitter range."
+ },
+ "to": {
+ "$ref": "#/$defs/duration",
+ "title": "RetryPolicyJitterTo",
+ "description": "The maximum duration of the jitter range."
+ }
+ },
+ "required": [
+ "from",
+ "to"
+ ]
+ }
+ }
+ },
+ "schema": {
+ "type": "object",
+ "title": "Schema",
+ "description": "Represents the definition of a schema.",
+ "unevaluatedProperties": false,
+ "properties": {
+ "format": {
+ "type": "string",
+ "default": "json",
+ "title": "SchemaFormat",
+ "description": "The schema's format. Defaults to 'json'. The (optional) version of the format can be set using `{format}:{version}`."
+ }
+ },
+ "oneOf": [
+ {
+ "title": "SchemaInline",
+ "properties": {
+ "document": {
+ "description": "The schema's inline definition."
+ }
+ },
+ "required": [
+ "document"
+ ]
+ },
+ {
+ "title": "SchemaExternal",
+ "properties": {
+ "resource": {
+ "$ref": "#/$defs/externalResource",
+ "title": "SchemaExternalResource",
+ "description": "The schema's external resource."
+ }
+ },
+ "required": [
+ "resource"
+ ]
+ }
+ ]
+ },
+ "timeout": {
+ "type": "object",
+ "title": "Timeout",
+ "description": "The definition of a timeout.",
+ "unevaluatedProperties": false,
+ "properties": {
+ "after": {
+ "$ref": "#/$defs/duration",
+ "title": "TimeoutAfter",
+ "description": "The duration after which to timeout."
+ }
+ },
+ "required": [
+ "after"
+ ]
+ },
+ "catalog": {
+ "type": "object",
+ "title": "Catalog",
+ "description": "The definition of a resource catalog.",
+ "unevaluatedProperties": false,
+ "properties": {
+ "endpoint": {
+ "$ref": "#/$defs/endpoint",
+ "title": "CatalogEndpoint",
+ "description": "The root URL where the catalog is hosted."
+ }
+ },
+ "required": [
+ "endpoint"
+ ]
+ },
+ "runtimeExpression": {
+ "type": "string",
+ "title": "RuntimeExpression",
+ "description": "A runtime expression.",
+ "pattern": "^\\s*\\$\\{.+\\}\\s*$"
+ },
+ "containerLifetime": {
+ "type": "object",
+ "title": "ContainerLifetime",
+ "description": "The configuration of a container's lifetime",
+ "unevaluatedProperties": false,
+ "properties": {
+ "cleanup": {
+ "type": "string",
+ "title": "ContainerCleanupPolicy",
+ "description": "The container cleanup policy to use",
+ "enum": [
+ "always",
+ "never",
+ "eventually"
+ ],
+ "default": "never"
+ },
+ "after": {
+ "$ref": "#/$defs/duration",
+ "title": "ContainerLifetimeDuration",
+ "description": "The duration after which to cleanup the container, in case the cleanup policy has been set to 'eventually'"
+ }
+ },
+ "required": [
+ "cleanup"
+ ],
+ "if": {
+ "properties": {
+ "cleanup": {
+ "const": "eventually"
+ }
+ }
+ },
+ "then": {
+ "required": [
+ "after"
+ ]
+ },
+ "else": {
+ "not": {
+ "required": [
+ "after"
+ ]
+ }
+ }
+ },
+ "processResult": {
+ "type": "object",
+ "title": "ProcessResult",
+ "description": "The object returned by a run task when its return type has been set 'all'.",
+ "unevaluatedProperties": false,
+ "properties": {
+ "code": {
+ "type": "integer",
+ "title": "ProcessExitCode",
+ "description": "The process's exit code."
+ },
+ "stdout": {
+ "type": "string",
+ "title": "ProcessStandardOutput",
+ "description": "The content of the process's STDOUT."
+ },
+ "stderr": {
+ "type": "string",
+ "title": "ProcessStandardError",
+ "description": "The content of the process's STDERR."
+ }
+ },
+ "required": [
+ "code",
+ "stdout",
+ "stderr"
+ ]
+ },
+ "asyncApiServer": {
+ "type": "object",
+ "title": "AsyncApiServer",
+ "description": "Configures the target server of an AsyncAPI operation.",
+ "unevaluatedProperties": false,
+ "properties": {
+ "name": {
+ "type": "string",
+ "title": "AsyncApiServerName",
+ "description": "The target server's name."
+ },
+ "variables": {
+ "type": "object",
+ "title": "AsyncApiServerVariables",
+ "description": "The target server's variables, if any."
+ }
+ },
+ "required": [
+ "name"
+ ]
+ },
+ "asyncApiOutboundMessage": {
+ "type": "object",
+ "title": "AsyncApiOutboundMessage",
+ "description": "An object used to configure the message to publish using the target operation.",
+ "unevaluatedProperties": false,
+ "properties": {
+ "payload": {
+ "type": "object",
+ "title": "AsyncApiMessagePayload",
+ "description": "The message's payload, if any."
+ },
+ "headers": {
+ "type": "object",
+ "title": "AsyncApiMessageHeaders",
+ "description": "The message's headers, if any."
+ }
+ }
+ },
+ "asyncApiInboundMessage": {
+ "title": "AsyncApiInboundMessage",
+ "description": "Represents a message counsumed by an AsyncAPI subscription.",
+ "allOf": [
+ {
+ "$ref": "#/$defs/asyncApiOutboundMessage"
+ },
+ {
+ "properties": {
+ "correlationId": {
+ "type": "string",
+ "title": "AsyncApiMessageCorrelationId",
+ "description": "The message's correlation id, if any."
+ }
+ }
+ }
+ ]
+ },
+ "asyncApiSubscription": {
+ "type": "object",
+ "title": "AsyncApiSubscription",
+ "description": "An object used to configure the subscription to messages consumed using the target operation.",
+ "unevaluatedProperties": false,
+ "properties": {
+ "filter": {
+ "$ref": "#/$defs/runtimeExpression",
+ "title": "AsyncApiSubscriptionCorrelation",
+ "description": "A runtime expression, if any, used to filter consumed messages."
+ },
+ "consume": {
+ "$ref": "#/$defs/asyncApiMessageConsumptionPolicy",
+ "title": "AsyncApiMessageConsumptionPolicy",
+ "description": "An object used to configure the subscription's message consumption policy."
+ },
+ "foreach": {
+ "$ref": "#/$defs/subscriptionIterator",
+ "title": "AsyncApiSubscriptionIterator",
+ "description": "Configures the iterator, if any, for processing consumed messages(s)."
+ }
+ },
+ "required": [
+ "consume"
+ ]
+ },
+ "asyncApiMessageConsumptionPolicy": {
+ "type": "object",
+ "title": "AsyncApiMessageConsumptionPolicy",
+ "description": "An object used to configure a subscription's message consumption policy.",
+ "unevaluatedProperties": false,
+ "properties": {
+ "for": {
+ "$ref": "#/$defs/duration",
+ "title": "AsyncApiMessageConsumptionPolicyFor",
+ "description": "Specifies the time period over which messages will be consumed."
+ }
+ },
+ "oneOf": [
+ {
+ "properties": {
+ "amount": {
+ "type": "integer",
+ "description": "The amount of (filtered) messages to consume before disposing of the subscription."
+ }
+ },
+ "title": "AsyncApiMessageConsumptionPolicyAmount",
+ "required": [
+ "amount"
+ ]
+ },
+ {
+ "properties": {
+ "while": {
+ "$ref": "#/$defs/runtimeExpression",
+ "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",
+ "description": "A runtime expression evaluated before each consumed (filtered) message to decide if message consumption should continue."
+ }
+ },
+ "title": "AsyncApiMessageConsumptionPolicyUntil",
+ "required": [
+ "until"
+ ]
+ }
+ ]
+ },
+ "subscriptionIterator": {
+ "type": "object",
+ "title": "SubscriptionIterator",
+ "description": "Configures the iteration over each item (event or message) consumed by a subscription.",
+ "unevaluatedProperties": false,
+ "properties": {
+ "item": {
+ "type": "string",
+ "title": "SubscriptionIteratorItem",
+ "description": "The name of the variable used to store the current item being enumerated.",
+ "default": "item"
+ },
+ "at": {
+ "type": "string",
+ "title": "SubscriptionIteratorIndex",
+ "description": "The name of the variable used to store the index of the current item being enumerated.",
+ "default": "index"
+ },
+ "do": {
+ "$ref": "#/$defs/taskList",
+ "title": "SubscriptionIteratorTasks",
+ "description": "The tasks to perform for each consumed item."
+ },
+ "output": {
+ "$ref": "#/$defs/output",
+ "title": "SubscriptionIteratorOutput",
+ "description": "An object, if any, used to customize the item's output and to document its schema."
+ },
+ "export": {
+ "$ref": "#/$defs/export",
+ "title": "SubscriptionIteratorExport",
+ "description": "An object, if any, used to customize the content of the workflow context."
+ }
+ }
+ }
+ }
+}
\ No newline at end of file
diff --git a/public/schemas/1.0.3/workflow.yaml b/public/schemas/1.0.3/workflow.yaml
new file mode 100644
index 0000000..adc380a
--- /dev/null
+++ b/public/schemas/1.0.3/workflow.yaml
@@ -0,0 +1,1956 @@
+$id: https://open-workflow-specification.org/schemas/1.0.3/workflow.yaml
+$schema: https://json-schema.org/draft/2020-12/schema
+description: Open Workflow Specification DSL - Workflow Schema.
+type: object
+required: [ document, do ]
+properties:
+ document:
+ type: object
+ title: Document
+ description: Documents the workflow.
+ unevaluatedProperties: false
+ properties:
+ dsl:
+ type: string
+ pattern: ^(0|[1-9]\d*)\.(0|[1-9]\d*)\.(0|[1-9]\d*)(?:-((?:0|[1-9]\d*|\d*[a-zA-Z-][0-9a-zA-Z-]*)(?:\.(?:0|[1-9]\d*|\d*[a-zA-Z-][0-9a-zA-Z-]*))*))?(?:\+([0-9a-zA-Z-]+(?:\.[0-9a-zA-Z-]+)*))?$
+ title: WorkflowDSL
+ description: The version of the DSL used by the workflow.
+ namespace:
+ type: string
+ pattern: ^[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?$
+ title: WorkflowNamespace
+ description: The workflow's namespace.
+ name:
+ type: string
+ pattern: ^[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?$
+ title: WorkflowName
+ description: The workflow's name.
+ version:
+ type: string
+ pattern: ^(0|[1-9]\d*)\.(0|[1-9]\d*)\.(0|[1-9]\d*)(?:-((?:0|[1-9]\d*|\d*[a-zA-Z-][0-9a-zA-Z-]*)(?:\.(?:0|[1-9]\d*|\d*[a-zA-Z-][0-9a-zA-Z-]*))*))?(?:\+([0-9a-zA-Z-]+(?:\.[0-9a-zA-Z-]+)*))?$
+ title: WorkflowVersion
+ description: The workflow's semantic version.
+ title:
+ type: string
+ title: WorkflowTitle
+ description: The workflow's title.
+ summary:
+ type: string
+ title: WorkflowSummary
+ description: The workflow's Markdown summary.
+ tags:
+ type: object
+ title: WorkflowTags
+ description: A key/value mapping of the workflow's tags, if any.
+ additionalProperties: true
+ metadata:
+ type: object
+ title: WorkflowMetadata
+ description: Holds additional information about the workflow.
+ additionalProperties: true
+ required: [ dsl, namespace, name, version ]
+ input:
+ $ref: '#/$defs/input'
+ title: Input
+ description: Configures the workflow's input.
+ use:
+ type: object
+ title: Use
+ description: Defines the workflow's reusable components.
+ unevaluatedProperties: false
+ properties:
+ authentications:
+ type: object
+ title: UseAuthentications
+ description: The workflow's reusable authentication policies.
+ additionalProperties:
+ $ref: '#/$defs/authenticationPolicy'
+ errors:
+ type: object
+ title: UseErrors
+ description: The workflow's reusable errors.
+ additionalProperties:
+ $ref: '#/$defs/error'
+ extensions:
+ type: array
+ title: UseExtensions
+ description: The workflow's extensions.
+ items:
+ type: object
+ title: ExtensionItem
+ minProperties: 1
+ maxProperties: 1
+ additionalProperties:
+ $ref: '#/$defs/extension'
+ functions:
+ type: object
+ title: UseFunctions
+ description: The workflow's reusable functions.
+ additionalProperties:
+ $ref: '#/$defs/task'
+ retries:
+ type: object
+ title: UseRetries
+ description: The workflow's reusable retry policies.
+ additionalProperties:
+ $ref: '#/$defs/retryPolicy'
+ secrets:
+ type: array
+ title: UseSecrets
+ description: The workflow's reusable secrets.
+ items:
+ type: string
+ description: The workflow's secrets.
+ timeouts:
+ type: object
+ title: UseTimeouts
+ description: The workflow's reusable timeouts.
+ additionalProperties:
+ $ref: '#/$defs/timeout'
+ catalogs:
+ type: object
+ title: UseCatalogs
+ description: The workflow's reusable catalogs.
+ additionalProperties:
+ $ref: '#/$defs/catalog'
+ do:
+ $ref: '#/$defs/taskList'
+ title: Do
+ description: Defines the task(s) the workflow must perform.
+ timeout:
+ title: DoTimeout
+ oneOf:
+ - $ref: '#/$defs/timeout'
+ title: TimeoutDefinition
+ description: The workflow's timeout configuration, if any.
+ - type: string
+ title: TimeoutReference
+ description: The name of the workflow's timeout, if any.
+ output:
+ $ref: '#/$defs/output'
+ title: Output
+ description: Configures the workflow's output.
+ schedule:
+ type: object
+ title: Schedule
+ description: Schedules the workflow.
+ unevaluatedProperties: false
+ properties:
+ every:
+ $ref: '#/$defs/duration'
+ title: ScheduleEvery
+ description: Specifies the duration of the interval at which the workflow should be executed.
+ cron:
+ type: string
+ title: ScheduleCron
+ description: Specifies the schedule using a cron expression, e.g., '0 0 * * *' for daily at midnight.
+ after:
+ $ref: '#/$defs/duration'
+ title: ScheduleAfter
+ description: Specifies a delay duration that the workflow must wait before starting again after it completes.
+ on:
+ $ref: '#/$defs/eventConsumptionStrategy'
+ title: ScheduleOn
+ description: Specifies the events that trigger the workflow execution.
+$defs:
+ taskList:
+ title: TaskList
+ description: List of named tasks to perform.
+ type: array
+ items:
+ type: object
+ title: TaskItem
+ minProperties: 1
+ maxProperties: 1
+ additionalProperties:
+ $ref: '#/$defs/task'
+ taskBase:
+ type: object
+ title: TaskBase
+ description: An object inherited by all tasks.
+ properties:
+ if:
+ type: string
+ title: TaskBaseIf
+ description: A runtime expression, if any, used to determine whether or not the task should be run.
+ input:
+ $ref: '#/$defs/input'
+ title: TaskBaseInput
+ description: Configure the task's input.
+ output:
+ $ref: '#/$defs/output'
+ title: TaskBaseOutput
+ description: Configure the task's output.
+ export:
+ $ref: '#/$defs/export'
+ title: TaskBaseExport
+ description: Export task output to context.
+ timeout:
+ title: TaskTimeout
+ oneOf:
+ - $ref: '#/$defs/timeout'
+ title: TaskTimeoutDefinition
+ description: The task's timeout configuration, if any.
+ - type: string
+ title: TaskTimeoutReference
+ description: The name of the task's timeout, if any.
+ then:
+ $ref: '#/$defs/flowDirective'
+ title: TaskBaseThen
+ description: The flow directive to be performed upon completion of the task.
+ metadata:
+ type: object
+ title: TaskMetadata
+ description: Holds additional information about the task.
+ additionalProperties: true
+ task:
+ title: Task
+ description: A discrete unit of work that contributes to achieving the overall objectives defined by the workflow.
+ unevaluatedProperties: false
+ oneOf:
+ - $ref: '#/$defs/callTask'
+ - $ref: '#/$defs/doTask'
+ - $ref: '#/$defs/forkTask'
+ - $ref: '#/$defs/emitTask'
+ - $ref: '#/$defs/forTask'
+ - $ref: '#/$defs/listenTask'
+ - $ref: '#/$defs/raiseTask'
+ - $ref: '#/$defs/runTask'
+ - $ref: '#/$defs/setTask'
+ - $ref: '#/$defs/switchTask'
+ - $ref: '#/$defs/tryTask'
+ - $ref: '#/$defs/waitTask'
+ callTask:
+ title: CallTask
+ description: Defines the call to perform.
+ oneOf:
+ - title: CallAsyncAPI
+ description: Defines the AsyncAPI call to perform.
+ type: object
+ required: [ call, with ]
+ unevaluatedProperties: false
+ allOf:
+ - $ref: '#/$defs/taskBase'
+ - properties:
+ call:
+ type: string
+ const: asyncapi
+ with:
+ type: object
+ title: AsyncApiArguments
+ description: The Async API call arguments.
+ properties:
+ document:
+ $ref: '#/$defs/externalResource'
+ title: AsyncAPIDocument
+ description: The document that defines the AsyncAPI operation to call.
+ channel:
+ type: string
+ title: With
+ description: The name of the channel on which to perform the operation. Used only in case the referenced document uses AsyncAPI v2.6.0.
+ operation:
+ type: string
+ title: AsyncAPIOperation
+ description: A reference to the AsyncAPI operation to call.
+ server:
+ $ref: '#/$defs/asyncApiServer'
+ title: AsyncAPIServer
+ description: An object used to configure to the server to call the specified AsyncAPI operation on.
+ protocol:
+ type: string
+ title: AsyncApiProtocol
+ description: The protocol to use to select the target server.
+ enum: [ amqp, amqp1, anypointmq, googlepubsub, http, ibmmq, jms, kafka, mercure, mqtt, mqtt5, nats, pulsar, redis, sns, solace, sqs, stomp, ws ]
+ message:
+ $ref: '#/$defs/asyncApiOutboundMessage'
+ title: AsyncApiMessage
+ description: An object used to configure the message to publish using the target operation.
+ subscription:
+ $ref: '#/$defs/asyncApiSubscription'
+ title: AsyncApiSubscription
+ description: An object used to configure the subscription to messages consumed using the target operation.
+ authentication:
+ $ref: '#/$defs/referenceableAuthenticationPolicy'
+ title: AsyncAPIAuthentication
+ description: The authentication policy, if any, to use when calling the AsyncAPI operation.
+ oneOf:
+ - required: [ document, operation, message ]
+ - required: [ document, operation, subscription ]
+ - required: [ document, channel, message ]
+ - required: [ document, channel, subscription ]
+ unevaluatedProperties: false
+ - title: CallGRPC
+ description: Defines the GRPC call to perform.
+ type: object
+ unevaluatedProperties: false
+ required: [ call, with ]
+ allOf:
+ - $ref: '#/$defs/taskBase'
+ - properties:
+ call:
+ type: string
+ const: grpc
+ with:
+ type: object
+ title: GRPCArguments
+ description: The GRPC call arguments.
+ properties:
+ proto:
+ $ref: '#/$defs/externalResource'
+ title: WithGRPCProto
+ description: The proto resource that describes the GRPC service to call.
+ service:
+ type: object
+ title: WithGRPCService
+ unevaluatedProperties: false
+ properties:
+ name:
+ type: string
+ title: WithGRPCServiceName
+ description: The name of the GRPC service to call.
+ host:
+ 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])?$
+ port:
+ type: integer
+ title: WithGRPCServicePort
+ description: The port number of the GRPC service to call.
+ minimum: 0
+ maximum: 65535
+ authentication:
+ $ref: '#/$defs/referenceableAuthenticationPolicy'
+ title: WithGRPCServiceAuthentication
+ description: The endpoint's authentication policy, if any.
+ required: [ name, host ]
+ method:
+ type: string
+ title: WithGRPCMethod
+ description: The name of the method to call on the defined GRPC service.
+ arguments:
+ type: object
+ title: WithGRPCArguments
+ description: The arguments, if any, to call the method with.
+ additionalProperties: true
+ required: [ proto, service, method ]
+ unevaluatedProperties: false
+ - title: CallHTTP
+ description: Defines the HTTP call to perform.
+ type: object
+ unevaluatedProperties: false
+ required: [ call, with ]
+ allOf:
+ - $ref: '#/$defs/taskBase'
+ - properties:
+ call:
+ type: string
+ const: http
+ with:
+ type: object
+ title: HTTPArguments
+ description: The HTTP call arguments.
+ properties:
+ method:
+ type: string
+ title: HTTPMethod
+ description: The HTTP method of the HTTP request to perform.
+ endpoint:
+ title: HTTPEndpoint
+ description: The HTTP endpoint to send the request to.
+ $ref: '#/$defs/endpoint'
+ headers:
+ 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:
+ 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
+ output:
+ type: string
+ title: HTTPOutput
+ description: The http call output format. Defaults to 'content'.
+ enum: [ raw, content, response ]
+ redirect:
+ type: boolean
+ title: HttpRedirect
+ description: Specifies whether redirection status codes (`300–399`) should be treated as errors.
+ required: [ method, endpoint ]
+ unevaluatedProperties: false
+ - title: CallOpenAPI
+ description: Defines the OpenAPI call to perform.
+ type: object
+ unevaluatedProperties: false
+ required: [ call, with ]
+ allOf:
+ - $ref: '#/$defs/taskBase'
+ - properties:
+ call:
+ type: string
+ const: openapi
+ with:
+ type: object
+ title: OpenAPIArguments
+ description: The OpenAPI call arguments.
+ properties:
+ document:
+ $ref: '#/$defs/externalResource'
+ title: WithOpenAPIDocument
+ description: The document that defines the OpenAPI operation to call.
+ operationId:
+ type: string
+ title: WithOpenAPIOperation
+ description: The id of the OpenAPI operation to call.
+ parameters:
+ type: object
+ title: WithOpenAPIParameters
+ description: A name/value mapping of the parameters of the OpenAPI operation to call.
+ additionalProperties: true
+ authentication:
+ $ref: '#/$defs/referenceableAuthenticationPolicy'
+ title: WithOpenAPIAuthentication
+ description: The authentication policy, if any, to use when calling the OpenAPI operation.
+ output:
+ type: string
+ enum: [ raw, content, response ]
+ title: WithOpenAPIOutput
+ description: The http call output format. Defaults to 'content'.
+ redirect:
+ type: boolean
+ title: HttpRedirect
+ description: Specifies whether redirection status codes (`300–399`) should be treated as errors.
+ required: [ document, operationId ]
+ unevaluatedProperties: false
+ - title: CallA2A
+ description: Defines the A2A call to perform.
+ type: object
+ unevaluatedProperties: false
+ required: [ call, with ]
+ allOf:
+ - $ref: '#/$defs/taskBase'
+ - properties:
+ call:
+ type: string
+ const: a2a
+ with:
+ type: object
+ title: A2AArguments
+ description: The A2A call arguments.
+ properties:
+ agentCard:
+ $ref: '#/$defs/externalResource'
+ title: WithA2AAgentCard
+ description: The Agent Card that defines the agent to call.
+ server:
+ title: A2AServer
+ description: The server endpoint to send the request to.
+ $ref: '#/$defs/endpoint'
+ method:
+ type: string
+ title: WithA2AMethod
+ description: The A2A method to send.
+ enum: [ 'message/send', 'message/stream', 'tasks/get', 'tasks/list', 'tasks/cancel', 'tasks/resubscribe', 'tasks/pushNotificationConfig/set', 'tasks/pushNotificationConfig/get', 'tasks/pushNotificationConfig/list', 'tasks/pushNotificationConfig/delete', 'agent/getAuthenticatedExtendedCard' ]
+ parameters:
+ oneOf:
+ - type: object
+ minProperties: 1
+ additionalProperties: true
+ - type: string
+ title: WithA2AParameters
+ description: The parameters object to send with the A2A method.
+ required: [ method ]
+ unevaluatedProperties: false
+ - title: CallMCP
+ description: Defines the MCP call to perform.
+ type: object
+ unevaluatedProperties: false
+ required: [ call, with ]
+ allOf:
+ - $ref: '#/$defs/taskBase'
+ - properties:
+ call:
+ type: string
+ const: mcp
+ with:
+ type: object
+ title: MCPArguments
+ description: The MCP call arguments.
+ properties:
+ protocolVersion:
+ type: string
+ default: '2025-06-18'
+ title: McpProtocolVersion
+ description: The version of the MCP protocol to use.
+ method:
+ type: string
+ enum: [ tools/list, tools/call, prompts/list, prompts/get, resources/list, resources/read, resources/templates/list ]
+ title: McpMethod
+ description: The MCP method to call.
+ parameters:
+ oneOf:
+ - type: object
+ additionalProperties: true
+ - type: string
+ title: McpMethodParameters
+ description: The MCP method parameters.
+ timeout:
+ $ref: '#/$defs/duration'
+ title: McpCallTimeout
+ description: The duration after which the MCP call times out.
+ transport:
+ type: object
+ title: McpCallTransport
+ description: The transport to use to perform the MCP call.
+ properties:
+ http:
+ type: object
+ title: McpHttpTransport
+ description: The definition of the HTTP transport to use.
+ properties:
+ endpoint:
+ $ref: '#/$defs/endpoint'
+ title: McpHttpTransportEndpoint
+ description: The MCP server endpoint to connect to.
+ headers:
+ type: object
+ additionalProperties:
+ type: string
+ title: McpHttpTransportHeaders
+ description: A key/value mapping of the HTTP headers to send with requests, if any.
+ required: [ endpoint ]
+ stdio:
+ type: object
+ title: McpStdioTransport
+ description: The definition of the STDIO transport to use.
+ properties:
+ command:
+ type: string
+ title: McpStdioTransportCommand
+ description: The command used to run the MCP server.
+ arguments:
+ type: array
+ items:
+ type: string
+ title: McpStdioTransportArguments
+ description: An optional list of arguments to pass to the command.
+ environment:
+ type: object
+ additionalProperties:
+ type: string
+ title: McpStdioTransportEnvironment
+ description: A key/value mapping, if any, of environment variables used to configure the MCP server.
+ required: [ command ]
+ options:
+ type: object
+ additionalProperties:
+ type: string
+ oneOf:
+ - required: [http]
+ - required: [stdio]
+ client:
+ type: object
+ title: McpClient
+ description: Describes the client used to perform the MCP call.
+ properties:
+ name:
+ type: string
+ title: McpClientName
+ description: The name of the client used to connect to the MCP server.
+ description:
+ type: string
+ title: McpClientVersion
+ description: The version of the client used to connect to the MCP server.
+ required: [ name, version ]
+ required: [ method, transport ]
+ - title: CallFunction
+ description: Defines the function call to perform.
+ type: object
+ unevaluatedProperties: false
+ required: [ call ]
+ allOf:
+ - $ref: '#/$defs/taskBase'
+ - properties:
+ call:
+ type: string
+ not:
+ enum: ["asyncapi", "grpc", "http", "openapi", "a2a", "mcp"]
+ description: The name of the function to call.
+ with:
+ type: object
+ title: FunctionArguments
+ description: A name/value mapping of the parameters, if any, to call the function with.
+ additionalProperties: true
+ forkTask:
+ type: object
+ title: ForkTask
+ description: Allows workflows to execute multiple tasks concurrently and optionally race them against each other, with a single possible winner, which sets the task's output.
+ unevaluatedProperties: false
+ required: [ fork ]
+ allOf:
+ - $ref: '#/$defs/taskBase'
+ - properties:
+ fork:
+ type: object
+ title: ForkTaskConfiguration
+ description: The configuration of the branches to perform concurrently.
+ unevaluatedProperties: false
+ required: [ branches ]
+ properties:
+ branches:
+ $ref: '#/$defs/taskList'
+ title: ForkBranches
+ compete:
+ type: boolean
+ title: ForkCompete
+ description: Indicates whether or not the concurrent tasks are racing against each other, with a single possible winner, which sets the composite task's output.
+ default: false
+ doTask:
+ type: object
+ title: DoTask
+ description: Allows to execute a list of tasks in sequence.
+ unevaluatedProperties: false
+ required: [ do ]
+ allOf:
+ - $ref: '#/$defs/taskBase'
+ - properties:
+ do:
+ $ref: '#/$defs/taskList'
+ title: DoTaskConfiguration
+ description: The configuration of the tasks to perform sequentially.
+ emitTask:
+ type: object
+ title: EmitTask
+ description: Allows workflows to publish events to event brokers or messaging systems, facilitating communication and coordination between different components and services.
+ required: [ emit ]
+ unevaluatedProperties: false
+ allOf:
+ - $ref: '#/$defs/taskBase'
+ - properties:
+ emit:
+ type: object
+ title: EmitTaskConfiguration
+ description: The configuration of an event's emission.
+ unevaluatedProperties: false
+ properties:
+ event:
+ type: object
+ title: EmitEventDefinition
+ description: The definition of the event to emit.
+ properties:
+ with:
+ $ref: '#/$defs/eventProperties'
+ title: EmitEventWith
+ description: Defines the properties of event to emit.
+ required: [ source, type ]
+ additionalProperties: true
+ required: [ event ]
+ forTask:
+ type: object
+ title: ForTask
+ description: Allows workflows to iterate over a collection of items, executing a defined set of subtasks for each item in the collection. This task type is instrumental in handling scenarios such as batch processing, data transformation, and repetitive operations across datasets.
+ required: [ for, do ]
+ unevaluatedProperties: false
+ allOf:
+ - $ref: '#/$defs/taskBase'
+ - properties:
+ for:
+ type: object
+ title: ForTaskConfiguration
+ description: The definition of the loop that iterates over a range of values.
+ unevaluatedProperties: false
+ properties:
+ each:
+ type: string
+ title: ForEach
+ description: The name of the variable used to store the current item being enumerated.
+ default: item
+ in:
+ type: string
+ title: ForIn
+ description: A runtime expression used to get the collection to enumerate.
+ at:
+ type: string
+ title: ForAt
+ description: The name of the variable used to store the index of the current item being enumerated.
+ default: index
+ required: [ in ]
+ while:
+ type: string
+ title: While
+ description: A runtime expression that represents the condition, if any, that must be met for the iteration to continue.
+ do:
+ $ref: '#/$defs/taskList'
+ title: ForTaskDo
+ listenTask:
+ type: object
+ title: ListenTask
+ description: Provides a mechanism for workflows to await and react to external events, enabling event-driven behavior within workflow systems.
+ required: [ listen ]
+ unevaluatedProperties: false
+ allOf:
+ - $ref: '#/$defs/taskBase'
+ - properties:
+ listen:
+ type: object
+ title: ListenTaskConfiguration
+ description: The configuration of the listener to use.
+ unevaluatedProperties: false
+ properties:
+ to:
+ $ref: '#/$defs/eventConsumptionStrategy'
+ title: ListenTo
+ description: Defines the event(s) to listen to.
+ read:
+ type: string
+ enum: [ data, envelope, raw ]
+ default: data
+ title: ListenAndReadAs
+ description: Specifies how events are read during the listen operation.
+ required: [ to ]
+ foreach:
+ $ref: '#/$defs/subscriptionIterator'
+ title: ListenIterator
+ description: Configures the iterator, if any, for processing consumed event(s).
+ raiseTask:
+ type: object
+ title: RaiseTask
+ description: Intentionally triggers and propagates errors.
+ required: [ raise ]
+ unevaluatedProperties: false
+ allOf:
+ - $ref: '#/$defs/taskBase'
+ - properties:
+ raise:
+ type: object
+ title: RaiseTaskConfiguration
+ description: The definition of the error to raise.
+ unevaluatedProperties: false
+ properties:
+ error:
+ title: RaiseTaskError
+ oneOf:
+ - $ref: '#/$defs/error'
+ title: RaiseErrorDefinition
+ description: Defines the error to raise.
+ - type: string
+ title: RaiseErrorReference
+ description: The name of the error to raise
+ required: [ error ]
+ runTask:
+ type: object
+ title: RunTask
+ description: Provides the capability to execute external containers, shell commands, scripts, or workflows.
+ required: [ run ]
+ unevaluatedProperties: false
+ allOf:
+ - $ref: '#/$defs/taskBase'
+ - properties:
+ run:
+ type: object
+ title: RunTaskConfiguration
+ description: The configuration of the process to execute.
+ unevaluatedProperties: false
+ properties:
+ await:
+ type: boolean
+ default: true
+ title: AwaitProcessCompletion
+ description: Whether to await the process completion before continuing.
+ return:
+ type: string
+ title: ProcessReturnType
+ description: Configures the output of the process.
+ enum: [ stdout, stderr, code, all, none ]
+ default: stdout
+ oneOf:
+ - title: RunContainer
+ description: Enables the execution of external processes encapsulated within a containerized environment.
+ properties:
+ container:
+ type: object
+ title: Container
+ description: The configuration of the container to run.
+ unevaluatedProperties: false
+ properties:
+ image:
+ type: string
+ title: ContainerImage
+ description: The name of the container image to run.
+ name:
+ type: string
+ title: ContainerName
+ description: A runtime expression, if any, used to give specific name to the container.
+ command:
+ type: string
+ title: ContainerCommand
+ description: The command, if any, to execute on the container.
+ ports:
+ type: object
+ title: ContainerPorts
+ description: The container's port mappings, if any.
+ volumes:
+ type: object
+ title: ContainerVolumes
+ description: The container's volume mappings, if any.
+ environment:
+ type: object
+ title: ContainerEnvironment
+ description: A key/value mapping of the environment variables, if any, to use when running the configured process.
+ stdin:
+ type: string
+ title: ContainerStdin
+ description: A runtime expression, if any, passed as standard input (stdin) to the command or default container CMD
+ arguments:
+ type: array
+ title: ContainerArguments
+ description: A list of the arguments, if any, passed as argv to the command or default container CMD
+ items:
+ type: string
+ lifetime:
+ $ref: '#/$defs/containerLifetime'
+ title: ContainerLifetime
+ description: An object, if any, used to configure the container's lifetime
+ pullPolicy:
+ type: string
+ title: ContainerPullPolicy
+ description: Policy that controls how the container's image should be pulled from the registry. Defaults to `ifNotPresent`
+ enum: [ ifNotPresent, always, never ]
+ required: [ image ]
+ required: [ container ]
+ - title: RunScript
+ description: Enables the execution of custom scripts or code within a workflow, empowering workflows to perform specialized logic, data processing, or integration tasks by executing user-defined scripts written in various programming languages.
+ properties:
+ script:
+ type: object
+ title: Script
+ description: The configuration of the script to run.
+ unevaluatedProperties: false
+ properties:
+ language:
+ type: string
+ title: ScriptLanguage
+ description: The language of the script to run.
+ stdin:
+ type: string
+ title: ScriptStdin
+ description: A runtime expression, if any, to the script as standard input (stdin).
+ arguments:
+ type: array
+ title: ScriptArguments
+ description: A list of the arguments, if any, to the script as argv
+ items:
+ type: string
+ environment:
+ type: object
+ title: ScriptEnvironment
+ description: A key/value mapping of the environment variables, if any, to use when running the configured script process.
+ additionalProperties: true
+ oneOf:
+ - title: InlineScript
+ type: object
+ description: The script's code.
+ properties:
+ code:
+ type: string
+ title: InlineScriptCode
+ required: [ code ]
+ - title: ExternalScript
+ type: object
+ description: The script's resource.
+ properties:
+ source:
+ $ref: '#/$defs/externalResource'
+ title: ExternalScriptResource
+ required: [ source ]
+ required: [ language ]
+ required: [ script ]
+ - title: RunShell
+ description: Enables the execution of shell commands within a workflow, enabling workflows to interact with the underlying operating system and perform system-level operations, such as file manipulation, environment configuration, or system administration tasks.
+ properties:
+ shell:
+ type: object
+ title: Shell
+ description: The configuration of the shell command to run.
+ unevaluatedProperties: false
+ properties:
+ command:
+ type: string
+ title: ShellCommand
+ description: The shell command to run.
+ stdin:
+ type: string
+ title: ShellStdin
+ description: A runtime expression, if any, to the shell command as standard input (stdin).
+ arguments:
+ type: array
+ title: ShellArguments
+ description: A list of the arguments, if any, to the shell command as argv
+ items:
+ type: string
+ environment:
+ type: object
+ title: ShellEnvironment
+ description: A key/value mapping of the environment variables, if any, to use when running the configured process.
+ additionalProperties: true
+ required: [ command ]
+ required: [ shell ]
+ - title: RunWorkflow
+ description: Enables the invocation and execution of nested workflows within a parent workflow, facilitating modularization, reusability, and abstraction of complex logic or business processes by encapsulating them into standalone workflow units.
+ properties:
+ workflow:
+ type: object
+ title: SubflowConfiguration
+ description: The configuration of the workflow to run.
+ unevaluatedProperties: false
+ properties:
+ namespace:
+ type: string
+ title: SubflowNamespace
+ description: The namespace the workflow to run belongs to.
+ name:
+ type: string
+ title: SubflowName
+ description: The name of the workflow to run.
+ version:
+ type: string
+ default: latest
+ title: SubflowVersion
+ description: The version of the workflow to run. Defaults to latest.
+ input:
+ type: object
+ title: SubflowInput
+ description: The data, if any, to pass as input to the workflow to execute. The value should be validated against the target workflow's input schema, if specified.
+ additionalProperties: true
+ required: [ namespace, name, version ]
+ required: [ workflow ]
+ setTask:
+ type: object
+ title: SetTask
+ description: A task used to set data.
+ required: [ set ]
+ unevaluatedProperties: false
+ allOf:
+ - $ref: '#/$defs/taskBase'
+ - properties:
+ set:
+ oneOf:
+ - type: object
+ minProperties: 1
+ additionalProperties: true
+ - type: string
+ title: SetTaskConfiguration
+ description: The data to set.
+ switchTask:
+ type: object
+ title: SwitchTask
+ description: Enables conditional branching within workflows, allowing them to dynamically select different paths based on specified conditions or criteria.
+ required: [ switch ]
+ unevaluatedProperties: false
+ allOf:
+ - $ref: '#/$defs/taskBase'
+ - properties:
+ switch:
+ type: array
+ title: SwitchTaskConfiguration
+ description: The definition of the switch to use.
+ minItems: 1
+ items:
+ type: object
+ title: SwitchItem
+ minProperties: 1
+ maxProperties: 1
+ additionalProperties:
+ type: object
+ title: SwitchCase
+ description: The definition of a case within a switch task, defining a condition and corresponding tasks to execute if the condition is met.
+ unevaluatedProperties: false
+ required: [ then ]
+ properties:
+ when:
+ type: string
+ title: SwitchCaseCondition
+ description: A runtime expression used to determine whether or not the case matches.
+ then:
+ $ref: '#/$defs/flowDirective'
+ title: SwitchCaseOutcome
+ description: The flow directive to execute when the case matches.
+ tryTask:
+ type: object
+ title: TryTask
+ description: Serves as a mechanism within workflows to handle errors gracefully, potentially retrying failed tasks before proceeding with alternate ones.
+ required: [ try, catch ]
+ unevaluatedProperties: false
+ allOf:
+ - $ref: '#/$defs/taskBase'
+ - properties:
+ try:
+ $ref: '#/$defs/taskList'
+ title: TryTaskConfiguration
+ description: The task(s) to perform.
+ catch:
+ type: object
+ title: TryTaskCatch
+ description: The object used to define the errors to catch.
+ unevaluatedProperties: false
+ properties:
+ errors:
+ type: object
+ title: CatchErrors
+ properties:
+ with:
+ $ref: '#/$defs/errorFilter'
+ description: static error filter
+ as:
+ type: string
+ title: CatchAs
+ description: The name of the runtime expression variable to save the error as. Defaults to 'error'.
+ when:
+ type: string
+ title: CatchWhen
+ description: A runtime expression used to determine whether to catch the filtered error.
+ exceptWhen:
+ type: string
+ title: CatchExceptWhen
+ description: A runtime expression used to determine whether not to catch the filtered error.
+ retry:
+ oneOf:
+ - $ref: '#/$defs/retryPolicy'
+ title: RetryPolicyDefinition
+ description: The retry policy to use, if any, when catching errors.
+ - type: string
+ title: RetryPolicyReference
+ description: The name of the retry policy to use, if any, when catching errors.
+ do:
+ $ref: '#/$defs/taskList'
+ title: TryTaskCatchDo
+ description: The definition of the task(s) to run when catching an error.
+ waitTask:
+ type: object
+ title: WaitTask
+ description: Allows workflows to pause or delay their execution for a specified period of time.
+ required: [ wait ]
+ unevaluatedProperties: false
+ allOf:
+ - $ref: '#/$defs/taskBase'
+ - properties:
+ wait:
+ $ref: '#/$defs/duration'
+ title: WaitTaskConfiguration
+ description: The amount of time to wait.
+ flowDirective:
+ title: FlowDirective
+ description: Represents different transition options for a workflow.
+ anyOf:
+ - title: FlowDirectiveEnum
+ type: string
+ enum: [ continue, exit, end ]
+ default: continue
+ - type: string
+ referenceableAuthenticationPolicy:
+ type: object
+ title: ReferenceableAuthenticationPolicy
+ description: Represents a referenceable authentication policy.
+ unevaluatedProperties: false
+ oneOf:
+ - title: AuthenticationPolicyReference
+ description: The reference of the authentication policy to use.
+ properties:
+ use:
+ type: string
+ minLength: 1
+ title: ReferenceableAuthenticationPolicyName
+ description: The name of the authentication policy to use.
+ required: [use]
+ - $ref: '#/$defs/authenticationPolicy'
+ secretBasedAuthenticationPolicy:
+ type: object
+ title: SecretBasedAuthenticationPolicy
+ description: Represents an authentication policy based on secrets.
+ unevaluatedProperties: false
+ properties:
+ use:
+ type: string
+ minLength: 1
+ title: SecretBasedAuthenticationPolicyName
+ description: The name of the authentication policy to use.
+ required: [use]
+ authenticationPolicy:
+ type: object
+ title: AuthenticationPolicy
+ description: Defines an authentication policy.
+ oneOf:
+ - title: BasicAuthenticationPolicy
+ description: Use basic authentication.
+ properties:
+ basic:
+ type: object
+ title: BasicAuthenticationPolicyConfiguration
+ description: The configuration of the basic authentication policy.
+ unevaluatedProperties: false
+ oneOf:
+ - title: BasicAuthenticationProperties
+ description: Inline configuration of the basic authentication policy.
+ properties:
+ username:
+ type: string
+ description: The username to use.
+ password:
+ type: string
+ description: The password to use.
+ required: [ username, password ]
+ - $ref: '#/$defs/secretBasedAuthenticationPolicy'
+ title: BasicAuthenticationPolicySecret
+ description: Secret based configuration of the basic authentication policy.
+ required: [ basic ]
+ - title: BearerAuthenticationPolicy
+ description: Use bearer authentication.
+ properties:
+ bearer:
+ type: object
+ title: BearerAuthenticationPolicyConfiguration
+ description: The configuration of the bearer authentication policy.
+ unevaluatedProperties: false
+ oneOf:
+ - title: BearerAuthenticationProperties
+ description: Inline configuration of the bearer authentication policy.
+ properties:
+ token:
+ type: string
+ description: The bearer token to use.
+ required: [ token ]
+ - $ref: '#/$defs/secretBasedAuthenticationPolicy'
+ title: BearerAuthenticationPolicySecret
+ description: Secret based configuration of the bearer authentication policy.
+ required: [ bearer ]
+ - title: DigestAuthenticationPolicy
+ description: Use digest authentication.
+ properties:
+ digest:
+ type: object
+ title: DigestAuthenticationPolicyConfiguration
+ description: The configuration of the digest authentication policy.
+ unevaluatedProperties: false
+ oneOf:
+ - title: DigestAuthenticationProperties
+ description: Inline configuration of the digest authentication policy.
+ properties:
+ username:
+ type: string
+ description: The username to use.
+ password:
+ type: string
+ description: The password to use.
+ required: [ username, password ]
+ - $ref: '#/$defs/secretBasedAuthenticationPolicy'
+ title: DigestAuthenticationPolicySecret
+ description: Secret based configuration of the digest authentication policy.
+ required: [ digest ]
+ - title: OAuth2AuthenticationPolicy
+ description: Use OAuth2 authentication.
+ properties:
+ oauth2:
+ type: object
+ title: OAuth2AuthenticationPolicyConfiguration
+ description: The configuration of the OAuth2 authentication policy.
+ unevaluatedProperties: false
+ oneOf:
+ - $ref: '#/$defs/oauth2AuthenticationProperties'
+ type: object
+ title: OAuth2ConnectAuthenticationProperties
+ description: The inline configuration of the OAuth2 authentication policy.
+ unevaluatedProperties: false
+ 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`.
+ - $ref: '#/$defs/secretBasedAuthenticationPolicy'
+ title: OAuth2AuthenticationPolicySecret
+ description: Secret based configuration of the OAuth2 authentication policy.
+ required: [ oauth2 ]
+ - title: OpenIdConnectAuthenticationPolicy
+ description: Use OpenIdConnect authentication.
+ properties:
+ oidc:
+ type: object
+ title: OpenIdConnectAuthenticationPolicyConfiguration
+ description: The configuration of the OpenIdConnect authentication policy.
+ unevaluatedProperties: false
+ oneOf:
+ - $ref: '#/$defs/oauth2AuthenticationProperties'
+ title: OpenIdConnectAuthenticationProperties
+ description: The inline configuration of the OpenIdConnect authentication policy.
+ unevaluatedProperties: false
+ - $ref: '#/$defs/secretBasedAuthenticationPolicy'
+ title: OpenIdConnectAuthenticationPolicySecret
+ description: Secret based configuration of the OpenIdConnect authentication policy.
+ required: [ oidc ]
+ oauth2AuthenticationProperties:
+ type: object
+ title: OAuth2AuthenticationData
+ description: Inline configuration of the OAuth2 authentication policy.
+ properties:
+ authority:
+ $ref: '#/$defs/uriTemplate'
+ title: OAuth2AuthenticationDataAuthority
+ description: The URI that references the OAuth2 authority to use.
+ grant:
+ type: string
+ enum: [ authorization_code, client_credentials, password, refresh_token, 'urn:ietf:params:oauth:grant-type:token-exchange']
+ title: OAuth2AuthenticationDataGrant
+ description: The grant type to use.
+ client:
+ type: object
+ title: OAuth2AuthenticationDataClient
+ description: The definition of an OAuth2 client.
+ unevaluatedProperties: false
+ properties:
+ id:
+ type: string
+ title: ClientId
+ description: The client id to use.
+ secret:
+ type: string
+ title: ClientSecret
+ description: The client secret to use, if any.
+ assertion:
+ type: string
+ title: ClientAssertion
+ description: A JWT containing a signed assertion with your application credentials.
+ authentication:
+ type: string
+ enum: [ client_secret_basic, client_secret_post, client_secret_jwt, private_key_jwt, none ]
+ default: client_secret_post
+ title: ClientAuthentication
+ description: The authentication method to use to authenticate the client.
+ request:
+ type: object
+ title: OAuth2TokenRequest
+ description: The configuration of an OAuth2 token request
+ properties:
+ encoding:
+ type: string
+ enum: [ 'application/x-www-form-urlencoded', 'application/json' ]
+ default: 'application/x-www-form-urlencoded'
+ title: Oauth2TokenRequestEncoding
+ issuers:
+ type: array
+ title: OAuth2Issuers
+ description: A list that contains that contains valid issuers that will be used to check against the issuer of generated tokens.
+ items:
+ type: string
+ scopes:
+ type: array
+ title: OAuth2AuthenticationDataScopes
+ description: The scopes, if any, to request the token for.
+ items:
+ type: string
+ audiences:
+ type: array
+ title: OAuth2AuthenticationDataAudiences
+ description: The audiences, if any, to request the token for.
+ items:
+ type: string
+ username:
+ type: string
+ title: OAuth2AuthenticationDataUsername
+ description: The username to use. Used only if the grant type is Password.
+ password:
+ type: string
+ title: OAuth2AuthenticationDataPassword
+ description: The password to use. Used only if the grant type is Password.
+ subject:
+ $ref: '#/$defs/oauth2Token'
+ title: OAuth2AuthenticationDataSubject
+ description: The security token that represents the identity of the party on behalf of whom the request is being made.
+ actor:
+ $ref: '#/$defs/oauth2Token'
+ title: OAuth2AuthenticationDataActor
+ description: The security token that represents the identity of the acting party.
+ oauth2Token:
+ type: object
+ title: OAuth2TokenDefinition
+ description: Represents an OAuth2 token.
+ unevaluatedProperties: false
+ properties:
+ token:
+ type: string
+ title: OAuth2Token
+ description: The security token to use.
+ type:
+ type: string
+ title: OAuth2TokenType
+ description: The type of the security token to use.
+ required: [ token, type ]
+ duration:
+ oneOf:
+ - type: object
+ minProperties: 1
+ unevaluatedProperties: false
+ properties:
+ days:
+ type: integer
+ title: DurationDays
+ description: Number of days, if any.
+ hours:
+ type: integer
+ title: DurationHours
+ description: Number of days, if any.
+ minutes:
+ type: integer
+ title: DurationMinutes
+ description: Number of minutes, if any.
+ seconds:
+ type: integer
+ title: DurationSeconds
+ description: Number of seconds, if any.
+ milliseconds:
+ type: integer
+ title: DurationMilliseconds
+ description: Number of milliseconds, if any.
+ title: DurationInline
+ description: The inline definition of a duration.
+ - $ref: '#/$defs/runtimeExpression'
+ title: DurationExpression
+ description: Runtime expression that generates an ISO 8601
+ - type: string
+ pattern: '^P(?!$)(\d+(?:\.\d+)?Y)?(\d+(?:\.\d+)?M)?(\d+(?:\.\d+)?W)?(\d+(?:\.\d+)?D)?(T(?=\d)(\d+(?:\.\d+)?H)?(\d+(?:\.\d+)?M)?(\d+(?:\.\d+)?S)?)?$'
+ title: DurationLiteral
+ description: The Literal ISO 8601 representation of a duration.
+ error:
+ type: object
+ title: Error
+ description: Represents an error.
+ unevaluatedProperties: false
+ properties:
+ type:
+ title: ErrorType
+ description: A URI reference that identifies the error type.
+ oneOf:
+ - title: LiteralErrorType
+ $ref: '#/$defs/uriTemplate'
+ description: The literal error type.
+ - title: ExpressionErrorType
+ $ref: '#/$defs/runtimeExpression'
+ description: An expression based error type.
+ status:
+ type: integer
+ title: ErrorStatus
+ description: The status code generated by the origin for this occurrence of the error.
+ instance:
+ title: ErrorInstance
+ description: A JSON Pointer used to reference the component the error originates from.
+ oneOf:
+ - title: LiteralErrorInstance
+ description: The literal error instance.
+ type: string
+ format: json-pointer
+ - $ref: '#/$defs/runtimeExpression'
+ title: ExpressionErrorInstance
+ description: An expression based error instance.
+ title:
+ description: A short, human-readable summary of the error.
+ title: ErrorTitle
+ anyOf:
+ - $ref: '#/$defs/runtimeExpression'
+ title: ExpressionErrorTitle
+ - type: string
+ title: LiteralErrorTitle
+ detail:
+ 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
+ title: ErrorFilter
+ description: Error filtering base on static values. For error filtering on dynamic values, use catch.when property
+ minProperties: 1
+ properties:
+ type:
+ type: string
+ description: if present, means this value should be used for filtering
+ status:
+ type: integer
+ description: if present, means this value should be used for filtering
+ instance:
+ type: string
+ description: if present, means this value should be used for filtering
+ title:
+ type: string
+ description: if present, means this value should be used for filtering
+ details:
+ type: string
+ description: if present, means this value should be used for filtering
+ uriTemplate:
+ title: UriTemplate
+ anyOf:
+ - title: LiteralUriTemplate
+ type: string
+ format: uri-template
+ pattern: "^[A-Za-z][A-Za-z0-9+\\-.]*://.*"
+ - title: LiteralUri
+ type: string
+ format: uri
+ pattern: "^[A-Za-z][A-Za-z0-9+\\-.]*://.*"
+ endpoint:
+ title: Endpoint
+ description: Represents an endpoint.
+ oneOf:
+ - $ref: '#/$defs/runtimeExpression'
+ - $ref: '#/$defs/uriTemplate'
+ - title: EndpointConfiguration
+ type: object
+ unevaluatedProperties: false
+ properties:
+ uri:
+ title: EndpointUri
+ description: The endpoint's URI.
+ oneOf:
+ - title: LiteralEndpointURI
+ description: The literal endpoint's URI.
+ $ref: '#/$defs/uriTemplate'
+ - title: ExpressionEndpointURI
+ $ref: '#/$defs/runtimeExpression'
+ description: An expression based endpoint's URI.
+ authentication:
+ $ref: '#/$defs/referenceableAuthenticationPolicy'
+ title: EndpointAuthentication
+ description: The authentication policy to use.
+ required: [ uri ]
+ eventProperties:
+ type: object
+ title: EventProperties
+ description: Describes the properties of an event.
+ properties:
+ id:
+ type: string
+ title: EventId
+ description: The event's unique identifier.
+ source:
+ title: EventSource
+ description: Identifies the context in which an event happened.
+ oneOf:
+ - $ref: '#/$defs/uriTemplate'
+ - $ref: '#/$defs/runtimeExpression'
+ type:
+ type: string
+ title: EventType
+ description: This attribute contains a value describing the type of event related to the originating occurrence.
+ time:
+ title: EventTime
+ description: When the event occured.
+ oneOf:
+ - title: LiteralTime
+ type: string
+ format: date-time
+ - $ref: '#/$defs/runtimeExpression'
+ subject:
+ type: string
+ title: EventSubject
+ description: The subject of the event.
+ datacontenttype:
+ type: string
+ title: EventDataContentType
+ description: Content type of data value. This attribute enables data to carry any type of content, whereby format and encoding might differ from that of the chosen event format.
+ dataschema:
+ title: EventDataschema
+ description: The schema describing the event format.
+ oneOf:
+ - title: LiteralDataSchema
+ $ref: '#/$defs/uriTemplate'
+ description: The literal event data schema.
+ - title: ExpressionDataSchema
+ $ref: '#/$defs/runtimeExpression'
+ description: An expression based event data schema.
+ data:
+ title: EventData
+ description: The event's payload data
+ anyOf:
+ - $ref: '#/$defs/runtimeExpression'
+ - {}
+ additionalProperties: true
+ eventConsumptionStrategy:
+ type: object
+ title: EventConsumptionStrategy
+ description: Describe the event consumption strategy to adopt.
+ unevaluatedProperties: false
+ oneOf:
+ - title: AllEventConsumptionStrategy
+ properties:
+ all:
+ type: array
+ title: AllEventConsumptionStrategyConfiguration
+ description: A list containing all the events that must be consumed.
+ items:
+ $ref: '#/$defs/eventFilter'
+ required: [ all ]
+ - title: AnyEventConsumptionStrategy
+ properties:
+ any:
+ type: array
+ title: AnyEventConsumptionStrategyConfiguration
+ description: A list containing any of the events to consume.
+ items:
+ $ref: '#/$defs/eventFilter'
+ until:
+ oneOf:
+ - type: string
+ title: AnyEventUntilCondition
+ description: A runtime expression condition evaluated after consuming an event and which determines whether or not to continue listening.
+ - allOf:
+ - $ref: '#/$defs/eventConsumptionStrategy'
+ description: The strategy that defines the event(s) to consume to stop listening.
+ - properties:
+ until: false
+ title: AnyEventUntilConsumed
+ required: [ any ]
+ - title: OneEventConsumptionStrategy
+ properties:
+ one:
+ $ref: '#/$defs/eventFilter'
+ title: OneEventConsumptionStrategyConfiguration
+ description: The single event to consume.
+ required: [ one ]
+ eventFilter:
+ type: object
+ title: EventFilter
+ description: An event filter is a mechanism used to selectively process or handle events based on predefined criteria, such as event type, source, or specific attributes.
+ unevaluatedProperties: false
+ properties:
+ with:
+ $ref: '#/$defs/eventProperties'
+ minProperties: 1
+ title: WithEvent
+ description: An event filter is a mechanism used to selectively process or handle events based on predefined criteria, such as event type, source, or specific attributes.
+ correlate:
+ type: object
+ title: EventFilterCorrelate
+ description: A correlation is a link between events and data, established by mapping event attributes to specific data attributes, allowing for coordinated processing or handling based on event characteristics.
+ additionalProperties:
+ type: object
+ properties:
+ from:
+ type: string
+ title: CorrelateFrom
+ description: A runtime expression used to extract the correlation value from the filtered event.
+ expect:
+ type: string
+ title: CorrelateExpect
+ description: A constant or a runtime expression, if any, used to determine whether or not the extracted correlation value matches expectations. If not set, the first extracted value will be used as the correlation's expectation.
+ required: [ from ]
+ required: [ with ]
+ extension:
+ type: object
+ title: Extension
+ description: The definition of an extension.
+ unevaluatedProperties: false
+ properties:
+ extend:
+ type: string
+ enum: [ call, composite, emit, for, listen, raise, run, set, switch, try, wait, all ]
+ title: ExtensionTarget
+ description: The type of task to extend.
+ when:
+ type: string
+ title: ExtensionCondition
+ description: A runtime expression, if any, used to determine whether or not the extension should apply in the specified context.
+ before:
+ $ref: '#/$defs/taskList'
+ title: ExtensionDoBefore
+ description: The task(s) to execute before the extended task, if any.
+ after:
+ $ref: '#/$defs/taskList'
+ title: ExtensionDoAfter
+ description: The task(s) to execute after the extended task, if any.
+ required: [ extend ]
+ externalResource:
+ type: object
+ title: ExternalResource
+ description: Represents an external resource.
+ unevaluatedProperties: false
+ properties:
+ name:
+ type: string
+ title: ExternalResourceName
+ description: The name of the external resource, if any.
+ endpoint:
+ $ref: '#/$defs/endpoint'
+ title: ExternalResourceEndpoint
+ description: The endpoint of the external resource.
+ required: [ endpoint ]
+ input:
+ type: object
+ title: Input
+ description: Configures the input of a workflow or task.
+ unevaluatedProperties: false
+ properties:
+ schema:
+ $ref: '#/$defs/schema'
+ title: InputSchema
+ description: The schema used to describe and validate the input of the workflow or task.
+ from:
+ title: InputFrom
+ description: A runtime expression, if any, used to mutate and/or filter the input of the workflow or task.
+ oneOf:
+ - type: string
+ - type: object
+ output:
+ type: object
+ title: Output
+ description: Configures the output of a workflow or task.
+ unevaluatedProperties: false
+ properties:
+ schema:
+ $ref: '#/$defs/schema'
+ title: OutputSchema
+ description: The schema used to describe and validate the output of the workflow or task.
+ as:
+ title: OutputAs
+ description: A runtime expression, if any, used to mutate and/or filter the output of the workflow or task.
+ oneOf:
+ - type: string
+ - type: object
+ export:
+ type: object
+ title: Export
+ description: Set the content of the context. .
+ unevaluatedProperties: false
+ properties:
+ schema:
+ $ref: '#/$defs/schema'
+ title: ExportSchema
+ description: The schema used to describe and validate the workflow context.
+ as:
+ title: ExportAs
+ description: A runtime expression, if any, used to export the output data to the context.
+ oneOf:
+ - type: string
+ - type: object
+ retryPolicy:
+ type: object
+ title: RetryPolicy
+ description: Defines a retry policy.
+ unevaluatedProperties: false
+ properties:
+ when:
+ type: string
+ title: RetryWhen
+ description: A runtime expression, if any, used to determine whether or not to retry running the task, in a given context.
+ exceptWhen:
+ type: string
+ title: RetryExcepWhen
+ description: A runtime expression used to determine whether or not to retry running the task, in a given context.
+ delay:
+ $ref: '#/$defs/duration'
+ title: RetryDelay
+ description: The duration to wait between retry attempts.
+ backoff:
+ type: object
+ title: RetryBackoff
+ description: The retry duration backoff.
+ unevaluatedProperties: false
+ oneOf:
+ - title: ConstantBackoff
+ properties:
+ constant:
+ type: object
+ description: The definition of the constant backoff to use, if any.
+ required: [ constant ]
+ - title: ExponentialBackOff
+ properties:
+ exponential:
+ type: object
+ description: The definition of the exponential backoff to use, if any.
+ required: [ exponential ]
+ - title: LinearBackoff
+ properties:
+ linear:
+ type: object
+ description: The definition of the linear backoff to use, if any.
+ required: [ linear ]
+ limit:
+ type: object
+ title: RetryLimit
+ unevaluatedProperties: false
+ properties:
+ attempt:
+ type: object
+ title: RetryLimitAttempt
+ unevaluatedProperties: false
+ properties:
+ count:
+ type: integer
+ title: RetryLimitAttemptCount
+ description: The maximum amount of retry attempts, if any.
+ duration:
+ $ref: '#/$defs/duration'
+ title: RetryLimitAttemptDuration
+ description: The maximum duration for each retry attempt.
+ duration:
+ $ref: '#/$defs/duration'
+ title: RetryLimitDuration
+ description: The duration limit, if any, for all retry attempts.
+ description: The retry limit, if any.
+ jitter:
+ type: object
+ title: RetryPolicyJitter
+ description: The parameters, if any, that control the randomness or variability of the delay between retry attempts.
+ unevaluatedProperties: false
+ properties:
+ from:
+ $ref: '#/$defs/duration'
+ title: RetryPolicyJitterFrom
+ description: The minimum duration of the jitter range.
+ to:
+ $ref: '#/$defs/duration'
+ title: RetryPolicyJitterTo
+ description: The maximum duration of the jitter range.
+ required: [ from, to ]
+ schema:
+ type: object
+ title: Schema
+ description: Represents the definition of a schema.
+ unevaluatedProperties: false
+ properties:
+ format:
+ type: string
+ default: json
+ title: SchemaFormat
+ description: The schema's format. Defaults to 'json'. The (optional) version of the format can be set using `{format}:{version}`.
+ oneOf:
+ - title: SchemaInline
+ properties:
+ document:
+ description: The schema's inline definition.
+ required: [ document ]
+ - title: SchemaExternal
+ properties:
+ resource:
+ $ref: '#/$defs/externalResource'
+ title: SchemaExternalResource
+ description: The schema's external resource.
+ required: [ resource ]
+ timeout:
+ type: object
+ title: Timeout
+ description: The definition of a timeout.
+ unevaluatedProperties: false
+ properties:
+ after:
+ $ref: '#/$defs/duration'
+ title: TimeoutAfter
+ description: The duration after which to timeout.
+ required: [ after ]
+ catalog:
+ type: object
+ title: Catalog
+ description: The definition of a resource catalog.
+ unevaluatedProperties: false
+ properties:
+ endpoint:
+ $ref: '#/$defs/endpoint'
+ title: CatalogEndpoint
+ description: The root URL where the catalog is hosted.
+ required: [ endpoint ]
+ runtimeExpression:
+ type: string
+ title: RuntimeExpression
+ description: A runtime expression.
+ pattern: "^\\s*\\$\\{.+\\}\\s*$"
+ containerLifetime:
+ type: object
+ title: ContainerLifetime
+ description: The configuration of a container's lifetime
+ unevaluatedProperties: false
+ properties:
+ cleanup:
+ type: string
+ title: ContainerCleanupPolicy
+ description: The container cleanup policy to use
+ enum: [ always, never, eventually ]
+ default: never
+ after:
+ $ref: '#/$defs/duration'
+ title: ContainerLifetimeDuration
+ description: The duration after which to cleanup the container, in case the cleanup policy has been set to 'eventually'
+ required: [ cleanup ]
+ if:
+ properties:
+ cleanup:
+ const: eventually
+ then:
+ required: [ after ]
+ else:
+ not:
+ required: [ after ]
+ processResult:
+ type: object
+ title: ProcessResult
+ description: The object returned by a run task when its return type has been set 'all'.
+ unevaluatedProperties: false
+ properties:
+ code:
+ type: integer
+ title: ProcessExitCode
+ description: The process's exit code.
+ stdout:
+ type: string
+ title: ProcessStandardOutput
+ description: The content of the process's STDOUT.
+ stderr:
+ type: string
+ title: ProcessStandardError
+ description: The content of the process's STDERR.
+ required: [ code, stdout, stderr ]
+ asyncApiServer:
+ type: object
+ title: AsyncApiServer
+ description: Configures the target server of an AsyncAPI operation.
+ unevaluatedProperties: false
+ properties:
+ name:
+ type: string
+ title: AsyncApiServerName
+ description: The target server's name.
+ variables:
+ type: object
+ title: AsyncApiServerVariables
+ description: The target server's variables, if any.
+ required: [ name ]
+ asyncApiOutboundMessage:
+ type: object
+ title: AsyncApiOutboundMessage
+ description: An object used to configure the message to publish using the target operation.
+ unevaluatedProperties: false
+ properties:
+ payload:
+ type: object
+ title: AsyncApiMessagePayload
+ description: The message's payload, if any.
+ headers:
+ type: object
+ title: AsyncApiMessageHeaders
+ description: The message's headers, if any.
+ asyncApiInboundMessage:
+ title: AsyncApiInboundMessage
+ description: Represents a message counsumed by an AsyncAPI subscription.
+ allOf:
+ - $ref: '#/$defs/asyncApiOutboundMessage'
+ - properties:
+ correlationId:
+ type: string
+ title: AsyncApiMessageCorrelationId
+ description: The message's correlation id, if any.
+ asyncApiSubscription:
+ type: object
+ title: AsyncApiSubscription
+ description: An object used to configure the subscription to messages consumed using the target operation.
+ unevaluatedProperties: false
+ properties:
+ filter:
+ $ref: '#/$defs/runtimeExpression'
+ title: AsyncApiSubscriptionCorrelation
+ description: A runtime expression, if any, used to filter consumed messages.
+ consume:
+ $ref: '#/$defs/asyncApiMessageConsumptionPolicy'
+ title: AsyncApiMessageConsumptionPolicy
+ description: An object used to configure the subscription's message consumption policy.
+ foreach:
+ $ref: '#/$defs/subscriptionIterator'
+ title: AsyncApiSubscriptionIterator
+ description: Configures the iterator, if any, for processing consumed messages(s).
+ required: [ consume ]
+ asyncApiMessageConsumptionPolicy:
+ type: object
+ title: AsyncApiMessageConsumptionPolicy
+ description: An object used to configure a subscription's message consumption policy.
+ unevaluatedProperties: false
+ properties:
+ for:
+ $ref: '#/$defs/duration'
+ title: AsyncApiMessageConsumptionPolicyFor
+ description: Specifies the time period over which messages will be consumed.
+ oneOf:
+ - properties:
+ amount:
+ type: integer
+ description: The amount of (filtered) messages to consume before disposing of the subscription.
+ title: AsyncApiMessageConsumptionPolicyAmount
+ required: [ amount ]
+ - properties:
+ while:
+ $ref: '#/$defs/runtimeExpression'
+ 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'
+ description: A runtime expression evaluated before each consumed (filtered) message to decide if message consumption should continue.
+ title: AsyncApiMessageConsumptionPolicyUntil
+ required: [ until ]
+ subscriptionIterator:
+ type: object
+ title: SubscriptionIterator
+ description: Configures the iteration over each item (event or message) consumed by a subscription.
+ unevaluatedProperties: false
+ properties:
+ item:
+ type: string
+ title: SubscriptionIteratorItem
+ description: The name of the variable used to store the current item being enumerated.
+ default: item
+ at:
+ type: string
+ title: SubscriptionIteratorIndex
+ description: The name of the variable used to store the index of the current item being enumerated.
+ default: index
+ do:
+ $ref: '#/$defs/taskList'
+ title: SubscriptionIteratorTasks
+ description: The tasks to perform for each consumed item.
+ output:
+ $ref: '#/$defs/output'
+ title: SubscriptionIteratorOutput
+ description: An object, if any, used to customize the item's output and to document its schema.
+ export:
+ $ref: '#/$defs/export'
+ title: SubscriptionIteratorExport
+ description: An object, if any, used to customize the content of the workflow context.
\ No newline at end of file
diff --git a/src/components/BlogPostsList.astro b/src/components/BlogPostsList.astro
new file mode 100644
index 0000000..ffc7646
--- /dev/null
+++ b/src/components/BlogPostsList.astro
@@ -0,0 +1,27 @@
+---
+import type { CollectionEntry } from 'astro:content'
+import FormattedDate from './FormattedDate.astro';
+
+interface Props {
+ posts: CollectionEntry<'blog'>[]
+}
+
+const { posts } = Astro.props;
+---
+
+
\ No newline at end of file
diff --git a/src/components/Card.astro b/src/components/Card.astro
new file mode 100644
index 0000000..14d9dfe
--- /dev/null
+++ b/src/components/Card.astro
@@ -0,0 +1,77 @@
+---
+interface Props {
+ title?: string;
+ alignment?: 'center' | 'start' | 'end';
+ icon?: string;
+ image?: string;
+ imageDark?: string;
+ imageSize?: 'small' | 'medium';
+}
+
+const {
+ title,
+ alignment = 'center',
+ icon,
+ image,
+ imageDark,
+ imageSize = 'small',
+} = Astro.props;
+---
+
+
+
+ { (image || imageDark) &&
+
+ { image &&
}
+ { imageDark &&
}
+
+ }
+ { icon &&
}
+
+ { title && title }
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/components/Footer.astro b/src/components/Footer.astro
new file mode 100644
index 0000000..499c166
--- /dev/null
+++ b/src/components/Footer.astro
@@ -0,0 +1,38 @@
+---
+import {
+ GITHUB_LINK,
+ SLACK_LINK,
+ X_TWITTER_LINK,
+ LINKEDIN_LINK,
+ DEV_MAILING_LIST_LINK,
+ RSS_LINK
+} from "../consts";
+import Section from "./Section.astro";
+---
+
+
+
+
+
\ No newline at end of file
diff --git a/src/components/FormattedDate.astro b/src/components/FormattedDate.astro
new file mode 100644
index 0000000..1bcce73
--- /dev/null
+++ b/src/components/FormattedDate.astro
@@ -0,0 +1,17 @@
+---
+interface Props {
+ date: Date;
+}
+
+const { date } = Astro.props;
+---
+
+
+ {
+ date.toLocaleDateString('en-us', {
+ year: 'numeric',
+ month: 'short',
+ day: 'numeric',
+ })
+ }
+
diff --git a/src/components/Header.astro b/src/components/Header.astro
new file mode 100644
index 0000000..a2e4c30
--- /dev/null
+++ b/src/components/Header.astro
@@ -0,0 +1,28 @@
+---
+import ThemeIcon from './ThemeIcon.astro';
+---
+
+
+
\ No newline at end of file
diff --git a/src/components/HtmlHead.astro b/src/components/HtmlHead.astro
new file mode 100644
index 0000000..e46f7ad
--- /dev/null
+++ b/src/components/HtmlHead.astro
@@ -0,0 +1,75 @@
+---
+import { DEFAULT_TITLE, DEFAULT_DESC } from '../consts';
+
+import '../styles/site.css';
+
+interface Props {
+ title?: string;
+ description?: string;
+ image?: string;
+}
+
+const canonicalURL = new URL(Astro.url.pathname, Astro.site);
+
+const {
+ title,
+ description = DEFAULT_DESC,
+ image = '/img/banners/placeholder-1.jpg'
+} = Astro.props;
+
+const pageTitle = `${DEFAULT_TITLE}${title ? ' - ' + title : ''}`;
+---
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+{pageTitle}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/components/Section.astro b/src/components/Section.astro
new file mode 100644
index 0000000..bf6bdd1
--- /dev/null
+++ b/src/components/Section.astro
@@ -0,0 +1,57 @@
+---
+type colorBase = 'primary' | 'secondary' | 'accent' | 'neutral';
+type size = 'small' | 'medium' | 'large';
+interface Props {
+ paddingY?: size;
+ paddingX?: size;
+ isGrid?: boolean;
+ width?: size | 'full';
+ title?: string;
+ subTitle?:string;
+ class?: string;
+}
+
+const {
+ paddingY,
+ paddingX,
+ isGrid = false,
+ width = '7',
+ title,
+ subTitle,
+ class: className
+} = Astro.props;
+---
+
+
+
+ { title &&
{ title } }
+ { subTitle &&
{ subTitle }
}
+ { isGrid ?
+
+
+
:
+
+ }
+
+
\ No newline at end of file
diff --git a/src/components/Sidebar.astro b/src/components/Sidebar.astro
new file mode 100644
index 0000000..7e0a425
--- /dev/null
+++ b/src/components/Sidebar.astro
@@ -0,0 +1,40 @@
+---
+import type { CollectionContent } from '../content.config';
+import { humanCase } from '../utils/formatter';
+
+interface Props {
+ entries: CollectionContent[]
+}
+const { entries } = Astro.props;
+
+const groupedEntries = entries
+ .reduce((groups, entry) => {
+ const id = entry.id;
+ const groupId = id.split('/')[0];
+ groups[groupId] = groups[groupId] || [];
+ groups[groupId].push(entry);
+ return groups;
+ }, {} as Record);
+
+---
+
\ No newline at end of file
diff --git a/src/components/ThemeIcon.astro b/src/components/ThemeIcon.astro
new file mode 100644
index 0000000..13bcc2e
--- /dev/null
+++ b/src/components/ThemeIcon.astro
@@ -0,0 +1,46 @@
+---
+---
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/consts.ts b/src/consts.ts
new file mode 100644
index 0000000..0a0d82b
--- /dev/null
+++ b/src/consts.ts
@@ -0,0 +1,12 @@
+export const DEFAULT_TITLE = 'Open Workflow Specification';
+export const DEFAULT_DESC = `Open Workflow Specification presents a vendor-neutral, open-source, and entirely community-driven ecosystem for defining and executing DSL-based workflows.`;
+
+export const CURRENT_VERSION = '1.0.3';
+
+export const GITHUB_ORG = 'https://github.com/serverlessworkflow/';
+export const GITHUB_LINK = GITHUB_ORG + 'specification/';
+export const SLACK_LINK = 'https://cloud-native.slack.com/messages/open-workflow';
+export const X_TWITTER_LINK = 'https://x.com/cncfworkflow';
+export const LINKEDIN_LINK = 'https://www.linkedin.com/company/serverless-workflow/posts';
+export const DEV_MAILING_LIST_LINK = 'mailto:cncf-serverlessws-maintainers@lists.cncf.io';
+export const RSS_LINK = '/rss.xml';
\ No newline at end of file
diff --git a/src/content.config.ts b/src/content.config.ts
new file mode 100644
index 0000000..25631fc
--- /dev/null
+++ b/src/content.config.ts
@@ -0,0 +1,63 @@
+import { glob } from 'astro/loaders';
+import { defineCollection, z } from 'astro:content';
+
+const mdExtensions = ['markdown', 'mdown', 'mkdn', 'mkd', 'mdwn', 'md', 'mdx'];
+const getGlobLoader = (contentType: string, extensions: string) => glob({
+ base: `./src/content/${contentType}`,
+ pattern: `**/[^_]*.${extensions}`
+});
+
+const BlogPostSchema = z.object({
+ title: z.string(),
+ description: z.string(),
+ author: z.string(),
+ date: z.coerce.date(),
+});
+export type BlogPost = z.infer;
+
+const SpecErrorV1Schema = z.object({
+ type: z.string(),
+ description: z.string(),
+ status: z.number(),
+});
+export type SpecErrorV1Schema = z.infer;
+
+const exampleSchema = z.object({
+ title: z.string()
+});
+export type Example = z.infer;
+
+const blog = defineCollection({
+ loader: getGlobLoader('blog', `{${mdExtensions.join(',')}}`),
+ schema: BlogPostSchema
+});
+const specErrorV1 = defineCollection({
+ loader: getGlobLoader('spec/1.0.0/errors', 'json'),
+ schema: SpecErrorV1Schema
+});
+const example = defineCollection({
+ loader: getGlobLoader('examples', `{${mdExtensions.join(',')}}`),
+ schema: exampleSchema
+});
+/*
+const docs = defineCollection({
+ loader: getLoader('docs'),
+ schema: z.object({
+ title: z.string(),
+ description: z.string()
+ })
+});
+*/
+export const collections = {
+ blog,
+ specErrorV1,
+ example,
+ //docs,
+};
+
+export type CollectionContent = {
+ id: string;
+ data: {
+ title: string;
+ }
+}
\ No newline at end of file
diff --git a/src/content/blog/events/serverless-workflow-at-fosdem-2025-recording.md b/src/content/blog/events/serverless-workflow-at-fosdem-2025-recording.md
new file mode 100644
index 0000000..57972b6
--- /dev/null
+++ b/src/content/blog/events/serverless-workflow-at-fosdem-2025-recording.md
@@ -0,0 +1,40 @@
+---
+title: Watch Our FOSDEM 2025 Talk on Serverless Workflow!
+author: Jean-Baptiste Bianchi
+date: 2025-02-09
+description: >
+ Our FOSDEM 2025 talk on Serverless Workflow DSL is now available online!
+---
+
+We are excited to share that the video of our **FOSDEM 2025** talk on **"Introduction to Serverless Workflow DSL"** is now available for you to watch online!
+
+If you missed our session or want to revisit the concepts we covered, you can now watch it at your convenience.
+
+### Watch the Talk
+
+🎥 **[Click here to watch the full talk](https://fosdem.org/2025/schedule/event/fosdem-2025-4494-introduction-to-serverless-workflow-dsl/)**
+
+### What You’ll Learn
+
+In this talk, we introduce **Serverless Workflow DSL**, an open-source standard for defining workflows in cloud-native applications. Here’s what we cover:
+
+- **Why automation needs standardization**: We explore why a structured approach to workflow management is crucial.
+- **Avoiding vendor lock-in**: Learn how Serverless Workflow provides an open standard that frees developers from proprietary constraints.
+- **Key components of the specification**: From workflow structure to execution policies, we break down the core elements.
+- **Diverse use cases**: See how Serverless Workflow can be applied to AI orchestration, IoT workflows, CI/CD pipelines, and more.
+- **Live Demo**: Watch a hands-on demonstration powered by our open-source runtime, Synapse.
+
+### Why Watch?
+
+Whether you're a developer, architect, or open-source enthusiast, this session will help you:
+
+✅ Understand the growing need for structured workflow automation.
+✅ Learn how Serverless Workflow DSL prevents vendor lock-in and enhances interoperability.
+✅ See what they key component of Serverless Workflow are.
+✅ Gain hands-on insights from our live demo showcasing a practical implementation.
+
+### Let’s Keep the Conversation Going!
+
+Have questions or thoughts on the talk? Join the discussion on the [CNCF Slack](https://slack.cncf.io/) **#serverless-workflow** channel or check out [ServerlessWorkflow.io](https://serverlessworkflow.io) for more resources.
+
+Thank you to everyone who attended our talk at FOSDEM 2025! We hope you enjoy the recording and look forward to continuing the conversation. 🚀
\ No newline at end of file
diff --git a/src/content/blog/events/serverless-workflow-at-fosdem-2025.md b/src/content/blog/events/serverless-workflow-at-fosdem-2025.md
new file mode 100644
index 0000000..48be5b8
--- /dev/null
+++ b/src/content/blog/events/serverless-workflow-at-fosdem-2025.md
@@ -0,0 +1,54 @@
+---
+title: Serverless Workflow at FOSDEM 2025
+author: Jean-Baptiste Bianchi
+date: 2025-01-07
+description: >
+ We're Speaking at FOSDEM 2025!
+---
+
+## Exciting News: We're Speaking at FOSDEM 2025!
+
+We are thrilled to announce that we will be presenting at **FOSDEM 2025** in Brussels! Mark your calendars for **Sunday, February 2nd, 9 AM**, as we take the stage in **room H.1308 (Rolin)** to deliver an engaging session on **"Introduction to Serverless Workflow DSL."**
+
+### Why Attend This Talk?
+
+Serverless Workflow DSL is a powerful, open-source standard for defining workflows in cloud-native applications. Whether you're a developer, architect, or tech enthusiast, this session will provide valuable insights into how you can:
+
+- Simplify the design and execution of complex workflows.
+- Leverage a standardized approach to achieve cross-platform compatibility.
+- Optimize and automate your serverless solutions.
+
+This talk is perfect for anyone looking to deepen their understanding of **Serverless Workflow DSL** and its real-world applications.
+
+### What to Expect
+
+During the session, we will:
+
+1. **Introduce the DSL**: Explore the foundational concepts and core components of Serverless Workflow DSL.
+2. **Showcase Use Cases**: Highlight practical examples of how organizations are using the DSL to streamline their workflows.
+3. **Demo**: Showcase the DSL with a demo run by our runtime, Synapse.
+
+You'll walk away with a clear understanding of how to leverage Serverless Workflow DSL to simplify your development process and accelerate your cloud-native initiatives.
+
+### About FOSDEM
+
+[FOSDEM](https://fosdem.org/2025/) is one of the largest gatherings of free and open-source software developers. With thousands of attendees, it offers an unparalleled opportunity to connect, learn, and share ideas. Whether you're a seasoned professional or just getting started in the world of open-source software, FOSDEM is the place to be.
+
+### Join Us in Brussels!
+
+Don't miss this chance to dive into the world of Serverless Workflow DSL and interact with like-minded professionals. Here's the essential info:
+
+- **Event**: FOSDEM 2025
+- **Date**: Sunday, February 2, 2025
+- **Time**: 9 AM
+- **Location**: Room H.1308 (Rolin), Brussels
+
+We can’t wait to see you there! If you have any questions or want to learn more about our talk, feel free to reach out or follow us on the [CNCF Slack](https://slack.cncf.io/) **#serverless-workflow** for updates.
+
+### Stay Connected
+
+For the latest news and resources, check out our website at [ServerlessWorkflow.io](https://serverlessworkflow.io) and join our growing community of cloud-native innovators.
+
+---
+
+Get ready to explore the future of workflows. See you at FOSDEM 2025!
\ No newline at end of file
diff --git a/src/content/blog/general/announcing-rename-to-open-workflow-specification.md b/src/content/blog/general/announcing-rename-to-open-workflow-specification.md
new file mode 100644
index 0000000..ddfa421
--- /dev/null
+++ b/src/content/blog/general/announcing-rename-to-open-workflow-specification.md
@@ -0,0 +1,73 @@
+---
+title: Announcing our Rename to Open Workflow Specification
+author: Ricardo Zanini
+date: 2026-06-18
+description: >
+ We're excited to announce that the Serverless Workflow Specification project has been renamed to Open Workflow Specification, better reflecting our scope and vision as a platform-agnostic workflow orchestration standard.
+---
+
+We're thrilled to announce an important evolution for our project: **Serverless Workflow Specification is now Open Workflow Specification**!
+
+## Why the Change?
+
+When we started this journey, "Serverless Workflow" reflected our origins in the serverless computing ecosystem. However, as the project has matured and our community has grown, we've expanded far beyond serverless use cases. Today, the specification is used across diverse environments—from cloud-native applications to on-premises systems, from microservices orchestration to complex data pipelines.
+
+The name "Serverless Workflow" was becoming a barrier. Many potential users and contributors assumed the specification was limited to serverless architectures, when in reality, it's a vendor-neutral, platform-agnostic standard for workflow orchestration that works anywhere.
+
+**Open Workflow Specification** better captures our true nature:
+- **Open**: We're an open-source, community-driven CNCF project
+- **Workflow**: Workflow orchestration is what we do
+- **Specification**: We define a standard DSL, not a specific implementation
+
+## What's Changing?
+
+### Project Name & Branding
+- **New Name**: Open Workflow Specification
+- **DSL Name**: Open Workflow DSL (previously Serverless Workflow DSL)
+- **Community**: The #open-workflow Slack channel (previously #serverless-workflow)
+- **Organization**: We've secured the github.com/open-workflow-specification organization
+
+### What's Staying the Same?
+- **Our Mission**: Providing a vendor-neutral, platform-agnostic workflow orchestration standard
+- **The Specification**: All technical aspects remain unchanged
+- **Your Workflows**: No breaking changes to existing workflow definitions
+- **CNCF Membership**: We remain a proud CNCF Sandbox project
+- **Community**: Same amazing maintainers, contributors, and users
+- **GitHub URLs**: Old links will continue to redirect (for now)
+
+## What This Means for You
+
+**If you're using the specification:**
+- Your existing workflows continue to work without any changes
+- Schema URLs and references remain functional
+- SDKs will maintain backward compatibility
+
+**If you're contributing:**
+- Join us on Slack at #open-workflow (the #serverless-workflow channel is being migrated)
+- Update your bookmarks to our new GitHub organization (coming soon)
+- New documentation and resources will use the updated name
+
+## Looking Forward
+
+This rename marks an exciting milestone in our journey. By removing the "serverless" qualifier, we're opening doors to new use cases, new contributors, and new adopters who may have previously overlooked us due to our name.
+
+We remain committed to our core values:
+- **Vendor-neutral**: No lock-in, works everywhere
+- **Community-driven**: Your voice matters
+- **Platform-agnostic**: Cloud, on-prem, hybrid—we support it all
+- **Simple yet powerful**: Easy to learn, capable of handling complex workflows
+
+## Thank You
+
+A huge thank you to our community for your continued support. This change wouldn't be possible without the CNCF's approval and the hard work of our maintainers and contributors.
+
+We're excited about this next chapter and look forward to growing the Open Workflow Specification community together!
+
+## Get Involved
+
+- **Join our Slack**: [#open-workflow on CNCF Slack](https://cloud-native.slack.com/messages/open-workflow)
+- **Star us on GitHub**: [github.com/serverlessworkflow/specification](https://github.com/serverlessworkflow/specification)
+- **Attend our weekly meetings**: [Community Calendar](https://github.com/serverlessworkflow/specification/discussions/799)
+- **Contribute**: Check out our [Contributing Guide](https://github.com/serverlessworkflow/specification/blob/main/contributing.md)
+
+Here's to Open Workflow Specification! 🎉
diff --git a/src/content/blog/general/visit-to-huawei.md b/src/content/blog/general/visit-to-huawei.md
new file mode 100644
index 0000000..c227c10
--- /dev/null
+++ b/src/content/blog/general/visit-to-huawei.md
@@ -0,0 +1,15 @@
+---
+title: Visit to Huawei to learn more about their implementations and future work
+author: Ricardo Zanini
+date: 2025-07-30
+description: >
+ On July 2025 we visited Huawei to meet with Paul Chen, Yuri Zhao, Heng Kuang and other contributors from the company to learn more about their specification implementation, future work and collaboration to the project.
+---
+
+Last week, I had the pleasure of joining a workshop at Huawei Canada’s headquarters alongside [Heng Kuang](https://www.linkedin.com/in/hengyuankuang/) and [Paul Chen](https://www.linkedin.com/in/paul-chen-a81ab688/). We dove into Huawei’s recent efforts to implement the Serverless Workflow specification and explored how they might contribute to our upcoming 1.1.0 milestone.
+
+At the heart of our discussions was the proposed A2A call task (see [issue #1102](https://github.com/serverlessworkflow/specification/issues/1102)). Huawei’s team has already developed a proof-of-concept based on the v1.0.0 [HTTP call task](https://github.com/serverlessworkflow/specification/blob/main/dsl-reference.md#http-call), demonstrating how agents can be orchestrated through standard workflows. While the POC works, relying solely on raw HTTP calls proved verbose and introduced complexity—especially for operations like exchanging vCards.
+
+Huawei has been an active partner in our community since 2020, when [Yuri Zhao](https://www.linkedin.com/in/yuri-zhao-0037a356/) first introduced the [FunctionGraph project](https://www.huaweicloud.com/intl/en-us/product/functiongraph.html) on Huawei Cloud. That project remains healthy and is slated to migrate to the v1.0.0 specification soon. Beyond FunctionGraph, Huawei is also building a fresh implementation of the specification using our Go SDK. If all goes according to plan, they’ll contribute their work back to our reference implementation.
+
+This week, the Huawei team will join our [weekly community meeting](https://github.com/serverlessworkflow/specification/discussions/799) to present their A2A POC and propose formally adding the A2A call as an official task in the specification. We’re excited about this partnership and the opportunity to bring more AI-driven use cases into the Serverless Workflow ecosystem. Collaborating with Huawei is a significant step forward in strengthening our CNCF open source project and expanding our reach in the AI space.
diff --git a/src/content/blog/releases/release-1.0.0-alpha1.md b/src/content/blog/releases/release-1.0.0-alpha1.md
new file mode 100644
index 0000000..3e2d988
--- /dev/null
+++ b/src/content/blog/releases/release-1.0.0-alpha1.md
@@ -0,0 +1,36 @@
+---
+title: Serverless Workflow 1.0.0-alpha1
+author: Charles d'Avernas
+date: 2024-06-07
+description: >
+ Exciting News! Serverless Workflow DSL v1.0.0-alpha1 Released!
+---
+
+Exciting News! Serverless Workflow DSL v1.0.0-alpha1 Released!
+
+We're thrilled to announce the release of **Serverless Workflow DSL version 1.0.0-alpha1**! This is a major milestone, introducing numerous features and a significant **refactor to simplify and enhance the DSL**.
+
+## What's New?
+
+- Total Refactor: Overhauled grammar and semantics.
+- Unified Descriptive Properties: Now at the document top level with a new namespace property. Addresses [#838](https://github.com/serverlessworkflow/specification/issues/838)
+- Improved JSON Pointers: Complex objects now use maps instead of arrays. Addresses [#831](https://github.com/serverlessworkflow/specification/issues/831)
+- Referencable Workflow Components: Eliminates cumbersome 'oneOf' definitions. Partially addresses [#691](https://github.com/serverlessworkflow/specification/issues/691)
+- Unified Task Concept: Merged state and action into task.
+- Flow Directives: Merged end and transition into flow directives. Addresses [#684](https://github.com/serverlessworkflow/specification/issues/684)
+- Simplified Compensation: Designed via task branching/chaining.
+- Composite Tasks: Support for nested tasks. Addresses [#413](https://github.com/serverlessworkflow/specification/issues/413)
+- Flexible Function Calls: Supports HTTP, GRPC, OpenAPI, and AsyncAPI. Addresses [#828](https://github.com/serverlessworkflow/specification/issues/828)
+- Custom Processes: Run containers, shell commands, scripts, or workflows.
+- Execution Strategies: Sequential and concurrent task execution modes.
+- Fault Tolerance: Use try tasks to catch and handle errors.
+- Retry Policy: Retry on specific errors. Addresses [#681](https://github.com/serverlessworkflow/specification/issues/681) and [#772](https://github.com/serverlessworkflow/specification/issues/772)
+- Timeouts: Define durations to raise timeout errors.
+- Error Handling: Raise and manage errors effectively. Addresses [#771](https://github.com/serverlessworkflow/specification/issues/771)
+- Gherkin Features: For conformance testing and Behavior Driven Design (BDD). Addresses [#324](https://github.com/serverlessworkflow/specification/issues/324)
+- Concurrent Event Correlations: Enhanced event handling. Addresses [#679](https://github.com/serverlessworkflow/specification/issues/679) and [#680](https://github.com/serverlessworkflow/specification/issues/680)
+- Extensions: Extend and override the DSL without writing code.
+
+This release aims to be the final version with breaking changes before the stable Serverless Workflow DSL 1.0.0 release.
+
+Check out the full details and start exploring the new features today!
diff --git a/src/content/blog/releases/release-1.0.0-alpha3.md b/src/content/blog/releases/release-1.0.0-alpha3.md
new file mode 100644
index 0000000..031a7d5
--- /dev/null
+++ b/src/content/blog/releases/release-1.0.0-alpha3.md
@@ -0,0 +1,33 @@
+---
+title: Serverless Workflow 1.0.0-alpha3
+author: Ricardo Zanini
+date: 2024-10-07
+description: >
+ A Closer Look at Serverless Workflow v1.0.0-alpha3: Major Fixes and Performance Boosts
+---
+
+We’re excited to announce the release of v1.0.0-alpha3 for the Serverless Workflow project! This release includes several impactful improvements and bug fixes, making the platform more stable and feature-rich. Below are the most notable issues we’ve resolved in this version:
+
+- **[#907](https://github.com/serverlessworkflow/specification/pull/907)**: Improved handling of **export expressions** in workflow schemas, ensuring smoother transitions and reliable exports of specific expressions and data during workflow execution. This enhancement enhances the overall flow and usability.
+
+- **[#908](https://github.com/serverlessworkflow/specification/pull/908)**: Enhanced clarity in referencing **authentication policies** within workflows. This improvement simplifies the management of secure service calls by allowing clearer references and reuse of authentication policies across different states.
+
+- **[#938](https://github.com/serverlessworkflow/specification/pull/938)**: Introduced support for **expressions in formatted strings**, enabling users to dynamically insert expressions into string literals. This feature enhances flexibility in defining dynamic values, allowing workflows to adapt based on runtime data.
+
+- **[#953](https://github.com/serverlessworkflow/specification/pull/953)**: Resolved issues with the **definition of task and workflow properties**, allowing for more specific attributes that improve clarity and usability. This refinement leads to better-defined workflows and easier implementation.
+
+- **[#956](https://github.com/serverlessworkflow/specification/pull/956)**: Added support for **query parameters in HTTP task definitions**, enabling users to specify parameters directly within their HTTP tasks. This enhancement improves usability and flexibility in constructing rich API requests.
+
+- **[#960](https://github.com/serverlessworkflow/specification/pull/960)**: Introduced the capability to add **arguments to script processes**, allowing users to pass specific arguments during script execution. This flexibility enables workflows to adapt dynamically to varying conditions.
+
+- **[#963](https://github.com/serverlessworkflow/specification/pull/963)**: Addressed semantic inconsistencies between **listen and emit tasks**, clarifying their definitions and expected behaviors. This standardization facilitates clearer logic and better integration within event-driven workflows.
+
+- **[#973](https://github.com/serverlessworkflow/specification/pull/973)**: Refactored OAuth2 authentication and introduced **OIDC authentication** support, broadening the range of authentication strategies available. This improvement enhances security and usability when integrating with various identity providers.
+
+- **[#995](https://github.com/serverlessworkflow/specification/pull/995)**: A new property has been added to determine whether to **await the execution of a process**, allowing for precise control over workflow execution flow. This flexibility helps in accommodating various execution scenarios effectively.
+
+- **[#996](https://github.com/serverlessworkflow/specification/pull/996)**: Introduced support for adding **metadata to workflow documents and tasks**, allowing users to embed additional contextual information. This enhancement improves documentation and discoverability, facilitating better integration with external systems.
+
+---
+
+We believe these changes will make Serverless Workflow even more powerful and flexible for developers. Check out the [release notes](https://github.com/serverlessworkflow/specification/releases/tag/v1.0.0-alpha3) for the full list of updates. As always, we’re grateful for the continued support from our community and welcome feedback on this release!
diff --git a/src/content/blog/releases/release-1.0.0-alpha4.md b/src/content/blog/releases/release-1.0.0-alpha4.md
new file mode 100644
index 0000000..f8fdec0
--- /dev/null
+++ b/src/content/blog/releases/release-1.0.0-alpha4.md
@@ -0,0 +1,23 @@
+---
+title: Serverless Workflow 1.0.0-alpha4
+author: Jean-Baptiste Bianchi
+date: 2024-10-11
+description: >
+ Announcing Serverless Workflow Specification 1.0.0-alpha4: Critical Validation Fixes
+---
+
+We’re excited to announce the release of **Serverless Workflow Specification 1.0.0-alpha4**! This update is critical as it addresses a key issue that has impacted the community: the schema’s URI template. With this release, validation hurdles that developers previously encountered have been effectively resolved.
+
+## Why This Fix Matters
+Validation is a cornerstone of the Serverless Workflow Specification. Accurate validation ensures that workflows adhere to defined rules and standards, making development predictable and dependable. The bug in the URI template previously led to false validation failures or confusion over accepted formats. With 1.0.0-alpha4, these issues are behind us.
+
+## Getting Started with 1.0.0-alpha4
+To start using the new release, you can access the updated documentation and schema through the official [Serverless Workflow GitHub repository](https://github.com/serverlessworkflow/specification). Follow the setup guide to integrate the updated specification into your environment.
+
+## What’s Next?
+The Serverless Workflow community is committed to continual improvement. This release lays the groundwork for more exciting features and enhancements in the future. Keep an eye out for updates, as the team is actively working on further refinements and new functionalities to make Serverless Workflows even more powerful and developer-friendly.
+
+## Join the Community
+As always, your feedback is invaluable! Join the discussion on [GitHub](https://github.com/serverlessworkflow/specification/discussions) or connect with other users in the Serverless Workflow community. Share your thoughts, report issues, and contribute to the ongoing evolution of the specification.
+
+**Thank you for your continued support, and happy workflow building!**
\ No newline at end of file
diff --git a/src/content/blog/releases/release-1.0.0-alpha5.md b/src/content/blog/releases/release-1.0.0-alpha5.md
new file mode 100644
index 0000000..a23bcd0
--- /dev/null
+++ b/src/content/blog/releases/release-1.0.0-alpha5.md
@@ -0,0 +1,15 @@
+---
+title: Serverless Workflow 1.0.0-alpha5
+author: Jean-Baptiste Bianchi
+date: 2024-10-22
+description: >
+ Introducing Catalog Support!
+---
+
+We’re excited to announce the release of **Serverless Workflow Specification 1.0.0-alpha5**, introducing a powerful new feature: **Catalogs**. A catalog is a shared space where resources like custom functions can be defined and reused.
+
+## Why Catalogs Matter
+
+Catalogs simplify workflow creation by promoting **reusability** and **consistency**. By storing frequently used resources in a catalog, developers can create cleaner, more modular workflows while reducing maintenance overhead.
+
+**We look forward to seeing how you’ll use this new feature! Join the discussion on [GitHub](https://github.com/serverlessworkflow/specification/discussions) to share your feedback.**
\ No newline at end of file
diff --git a/src/content/blog/releases/release-1.0.0.md b/src/content/blog/releases/release-1.0.0.md
new file mode 100644
index 0000000..fc62f86
--- /dev/null
+++ b/src/content/blog/releases/release-1.0.0.md
@@ -0,0 +1,33 @@
+---
+title: Serverless Workflow 1.0.0 Release
+author: Jean-Baptiste Bianchi
+date: 2025-01-27
+description: >
+ Serverless Workflow v1.0.0 is out !
+---
+
+🎉 Celebrating the **1.0.0** Release of the Serverless Workflow Specification - Five Years in the Making ! 🎉
+
+It’s been half a decade since the first release of the **Serverless Workflow Specification**, and we’re proud to share our biggest milestone yet: **Version 1.0.0**. This marks a new era of event-driven, function-centric, and service-oriented workflow design—backed by a vibrant community and robust ecosystem.
+
+## ⭐ Key Enhancements and Features ⭐
+- ✅ **Refined Grammar & Semantics** – Cleaner, more readable DSL for effortless workflow design.
+- ✅ **Unified Task Concept** – Merge states and actions into tasks, simplifying definitions and removing nesting limits.
+- ✅ **Easy Function Invocation** – Seamlessly call HTTP, gRPC, OpenAPI, or AsyncAPI services.
+- ✅ **Event Driven** – Ingest events for real-time triggers and correlations.
+- ✅ **Streaming Support** – Leverage AsyncAPI and CloudEvent subscriptions for continuous data flow.
+- ✅ **Fault Tolerance & Timeouts** – Built-in error handling, retries, and timeout management for greater reliability.
+- ✅ **Scheduling & Concurrency** – CRON-based triggers and parallel event handling let you run workflows exactly when—and how—you need.
+- ✅ **Extensibility** – Extend or override the DSL without writing extra code, ensuring runtime-agnostic portability.
+- ✅ **Code Reusability & Maintainability** – Scale effortlessly with cleaner, modular definitions.
+- ✅ **Behavior Driven Design** – Gherkin-based features ensure consistent, standardized testing and implementations.
+
+## 💡 Why this Matters 💡
+**Serverless Workflow 1.0.0** makes building reliable, event-driven, and function-centric systems easier than ever—whether you’re running on public cloud, private cloud, or hybrid environments. The result? Faster development, resilient architectures, and streamlined operations at scale.
+
+## 📢 Get Involved 📢
+A heartfelt thank you to the entire community—contributors, maintainers, and adopters—who have shaped and refined this specification over the last five years. We couldn’t have done it without you!
+
+- ➜ **Check out the Official Docs**: https://github.com/serverlessworkflow/specification/blob/main/README.md
+- ➜ **Join the Conversation**: https://cloud-native.slack.com/?redir=%2Fmessages%2Fserverless-workflow
+- ➜ **Contribute**: Your ideas, feedback, and experiences are what keep the Serverless Workflow Specification thriving.
\ No newline at end of file
diff --git a/src/content/blog/releases/release-editor-mvp-1.0.0.md b/src/content/blog/releases/release-editor-mvp-1.0.0.md
new file mode 100644
index 0000000..1a90da6
--- /dev/null
+++ b/src/content/blog/releases/release-editor-mvp-1.0.0.md
@@ -0,0 +1,114 @@
+---
+title: Announcing the Open Workflow Specification Diagram Editor (MVP)
+author: Lorna Kelly
+date: 2026-07-21
+description: >
+ The first MVP release of the Open Workflow Diagram Editor - a React component that turns your workflow definitions into interactive diagrams. Compatible with Specification 1.0.0.
+---
+
+🎉 We're excited to share the first **MVP release** of the [**Open Workflow Diagram Editor**](https://www.npmjs.com/package/@openworkflowspec/diagram-editor) — a new React component that renders your Open Workflow definitions as interactive diagrams. It's the first step toward a full visual editing experience for the Open Workflow ecosystem, and it's ready for you to try today.
+
+## What is the Diagram Editor?
+
+The Diagram Editor (`@openworkflowspec/diagram-editor`) is a React component that takes a **Open Workflow Specification 1.0.0** definition - in YAML or JSON - and visualizes it as an interactive, automatically laid-out diagram.
+
+It's built on top of the tools the community already knows:
+
+- The **[Open Workflow TypeScript SDK](https://github.com/open-workflow-specification/sdk-typescript)** for parsing and understanding workflow definitions.
+- **[React Flow (`@xyflow/react`)](https://reactflow.dev/)** for diagram rendering and interaction.
+- **[ELK](https://www.eclipse.org/elk/)** for automatic graph layout, so your workflows are arranged cleanly without any manual positioning.
+
+## What's in the MVP
+
+This first release focuses on **visualizing** workflows. Here's what you get:
+
+- ✅ **Spec 1.0.0 support** - render any Open Workflow 1.0.0 definition straight from YAML or JSON.
+- ✅ **Interactive diagram** - pan, zoom, and explore your workflow with automatic layout.
+- ✅ **Light / dark / system color modes** — the editor adapts to your application's theme.
+- ✅ **Internationalization** — built-in support for multiple locales (English only to start).
+- ✅ **Modern React component** — a React 19 component you can embed into your own apps.
+- ✅ **Schema validation** — definitions are checked against the Open Workflow 1.0.0 schema, with clear feedback when something doesn't conform.
+- ✅ **Graceful error handling** — clear parsing-error feedback when a definition can't be rendered.
+
+## A quick look
+
+The component takes your workflow definition as a string and renders it:
+
+```tsx
+import { DiagramEditor } from "@openworkflowspec/diagram-editor";
+import "@openworkflowspec/diagram-editor/styles.css";
+
+const workflow = `
+document:
+ dsl: '1.0.0'
+ namespace: default
+ name: hello-world
+ version: '1.0.0'
+do:
+ - step1:
+ set:
+ message: hello world
+`;
+
+export function App() {
+ return (
+
+ );
+}
+```
+
+> **Note:** This MVP is focused on visualization. Interactive, in-place editing of workflows is on the roadmap — for now, `isReadOnly` keeps the experience clear and predictable.
+
+## Try it now
+
+The Diagram Editor is available on npm:
+
+```bash
+npm install @openworkflowspec/diagram-editor
+# or
+pnpm add @openworkflowspec/diagram-editor
+# or
+yarn add @openworkflowspec/diagram-editor
+```
+
+Then drop the component into your app as shown above.
+
+Prefer to explore the source or see it running end to end? Clone the repository and launch the live Storybook demo, which comes with example workflows and use cases so you can see the component in action and explore the API:
+
+```bash
+# Clone the repository
+git clone https://github.com/open-workflow-specification/editor.git
+cd editor
+
+# Install dependencies (Node.js 22, pnpm 10.31.0)
+pnpm install
+
+# Build the packages
+pnpm run build:dev
+
+# Run the Storybook demo for the diagram editor
+cd packages/open-workflow-diagram-editor
+pnpm run start
+```
+
+## What's next
+
+This MVP is just the beginning. On the roadmap:
+
+- ✏️ **Interactive editing** — moving from visualization to a full visual editor.
+- 🔀 **Dual text + diagram editor** — edit your workflow as text, with both views kept in sync.
+- 🧩 **VS Code extension** — bringing the editor into your IDE.
+
+## Get involved
+
+The Open Workflow Diagram Editor is an open, community-driven project, and we'd love your feedback, ideas, and contributions.
+
+- ➜ **Explore the code**: [open-workflow-specification/editor](https://github.com/open-workflow-specification/editor)
+- ➜ **Report issues or request features**: [editor issues](https://github.com/open-workflow-specification/editor/issues)
+
+Happy coding! 🚀
diff --git a/src/content/blog/releases/release-sdk-go-3.0.0.md b/src/content/blog/releases/release-sdk-go-3.0.0.md
new file mode 100644
index 0000000..af266fb
--- /dev/null
+++ b/src/content/blog/releases/release-sdk-go-3.0.0.md
@@ -0,0 +1,45 @@
+---
+title: "Announcing Serverless Workflow SDK Go 3.0.0"
+date: "2025-01-22"
+description: "Discover the new features and improvements in Serverless Workflow SDK Go 3.0.0, aligned with the Serverless Workflow specification 1.0.0."
+author: "Serverless Workflow Team"
+---
+
+We are thrilled to announce the release of **Serverless Workflow SDK Go 3.0.0**, a milestone that aligns with the latest Serverless Workflow specification (v1.0.0).
+
+## **What’s New in 3.0.0?**
+
+This release introduces a host of new features and improvements:
+
+1. **Support for Serverless Workflow Specification 1.0.0**
+ The SDK now fully supports the latest workflow specification, ensuring compatibility with modern standards and enabling developers to leverage advanced features effortlessly.
+
+2. **Improved DSL Parsing**
+ The new implementation of the DSL parser ensures more robust validation and parsing of workflow definitions, adhering strictly to the updated JSON Schema.
+
+3. **Reusable Components**
+ The introduction of reusable components such as authentication policies, error handlers, and catalogs simplifies workflow definitions and promotes consistency across workflows.
+
+4. **Schema Validation and Interoperability**
+ With Go validators integrated natively, developers can rely on robust schema validation for input, output, and context management, ensuring workflows are reliable and error-free.
+
+5. **Developer-Focused Improvements**
+ - Enhanced Go language idioms for better developer experience.
+ - Improved code organization for scalability and maintainability.
+
+## **Getting Started**
+
+Upgrading to the new version is straightforward:
+
+1. Update your project to use the new `v3` path:
+ ```bash
+ go get github.com/serverlessworkflow/sdk-go/v3
+ ```
+
+2. Update your code to accommodate the new DSL and schema changes. Refer to the updated [specification](https://github.com/serverlessworkflow/specification/tree/main/examples) for examples.
+
+3. Run your tests and validate your workflows against the new schema to ensure a smooth transition.
+
+## **Join the Community**
+
+We are proud of what we’ve accomplished with version 3.0.0, and we’re excited to see how you will use it to create innovative solutions. Share your feedback, contributions, and ideas on our [GitHub issue page](https://github.com/serverlessworkflow/sdk-go/issues).
diff --git a/src/content/blog/releases/release-sdk-go-4.0.0.md b/src/content/blog/releases/release-sdk-go-4.0.0.md
new file mode 100644
index 0000000..add1f1f
--- /dev/null
+++ b/src/content/blog/releases/release-sdk-go-4.0.0.md
@@ -0,0 +1,90 @@
+---
+title: "Open Workflow SDK Go 4.0.0"
+author: "Ricardo Zanini"
+date: "2026-07-14"
+description: >-
+ Open Workflow SDK Go 4.0.0 is here — the Go SDK moves to its new home under the Open Workflow Specification organization with a fresh module path and updated branding.
+---
+
+## Announcing the Release of Open Workflow SDK Go 4.0.0
+
+We are excited to announce **Go SDK 4.0.0**, the first release under the **Open Workflow Specification** organization. This release marks the project's transition from "Serverless Workflow" to **Open Workflow**, reflecting the broader scope of the specification.
+
+👉 Full release notes: [GitHub – v4.0.0](https://github.com/open-workflow-specification/sdk-go/releases/tag/v4.0.0)
+
+---
+
+## What's New in 4.0.0?
+
+This release focuses on the rebranding — there are **no API or schema changes** from the v3.x line. The specification conformance remains at **v1.0.0**.
+
+### New GitHub Home
+
+The SDK now lives at [github.com/open-workflow-specification/sdk-go](https://github.com/open-workflow-specification/sdk-go). GitHub redirects from the old URL are in place, so existing links and references to v3.x releases continue to work.
+
+### Updated Go Module Path
+
+The module path has changed to reflect the new organization:
+
+```
+github.com/open-workflow-specification/sdk-go/v4
+```
+
+### Updated Error Type URIs
+
+Standard error type URIs now use the `open-workflow-specification.org` domain:
+
+```
+https://open-workflow-specification.org/spec/1.0.0/errors/validation
+https://open-workflow-specification.org/spec/1.0.0/errors/authentication
+...
+```
+
+---
+
+## Migration Guide
+
+Upgrading from v3.x is straightforward — update your imports and run `go get`:
+
+1. Update your import paths:
+
+ ```go
+ // Before
+ import "github.com/serverlessworkflow/sdk-go/v3/parser"
+ import "github.com/serverlessworkflow/sdk-go/v3/impl"
+
+ // After
+ import "github.com/open-workflow-specification/sdk-go/v4/parser"
+ import "github.com/open-workflow-specification/sdk-go/v4/impl"
+ ```
+
+2. Fetch the new module:
+
+ ```bash
+ go get github.com/open-workflow-specification/sdk-go/v4
+ ```
+
+3. If your code references error type URIs (e.g., `https://serverlessworkflow.io/spec/1.0.0/errors/...`), update them to `https://open-workflow-specification.org/spec/1.0.0/errors/...`.
+
+4. Run your tests to verify the transition:
+
+ ```bash
+ go test ./...
+ ```
+
+---
+
+## What's Next
+
+The reference implementation continues to grow. Check out the [implementation roadmap](https://github.com/open-workflow-specification/sdk-go#implementation-roadmap) to see what's supported and where you can contribute.
+
+---
+
+## Community
+
+The project remains under **CNCF** governance. Join us on the CNCF Slack in the `#open-workflow-sdk` channel to collaborate, ask questions, and contribute.
+
+* Issues & feedback: [github.com/open-workflow-specification/sdk-go/issues](https://github.com/open-workflow-specification/sdk-go/issues)
+* Specification: [github.com/open-workflow-specification/specification](https://github.com/open-workflow-specification/specification)
+
+Thank you to everyone who contributed to this milestone release!
diff --git a/src/content/blog/releases/release-sdk-java-7.0.0-alpha1.md b/src/content/blog/releases/release-sdk-java-7.0.0-alpha1.md
new file mode 100644
index 0000000..57095d5
--- /dev/null
+++ b/src/content/blog/releases/release-sdk-java-7.0.0-alpha1.md
@@ -0,0 +1,43 @@
+---
+title: Serverless Workflow Java SDK 7.0.0-alpha1
+author: Ricardo Zanini
+date: 2024-08-14
+description: >
+ Heads up, community! We have released a new Java SDK version compatible with Specification 1.0.0.
+---
+
+## Announcing the Release of Serverless Workflow Java SDK 7.0.0-alpha1
+
+Hello, Serverless Workflow community!
+
+We're excited to announce the release of the latest Java SDK, version 7.0.0-alpha1, now compatible with the upcoming Serverless Workflow Specification 1.0.0. You can dive right in by using [one of the examples](https://github.com/serverlessworkflow/specification/tree/main/examples) available in the specification repository. Here's a quick example to get you started:
+
+```java
+// Make sure simple.yaml is in your src/main/resources folder
+try (InputStream in = new FileInputStream("simple.yaml")) {
+ Workflow workflow = WorkflowReader.readWorkflow (in, WorkflowFormat.YAML);
+ // Once you have the Workflow instance, you can use its API to inspect it
+}
+```
+
+To install the SDK, simply add it as a dependency to your Maven project:
+
+```java
+
+ io.serverlessworkflow
+ serverlessworkflow-api
+ 7.0.0-alpha1
+
+```
+
+With this release, the Java SDK fully supports serializing and deserializing workflows according to the new specification version.
+
+We're also thrilled to share that new features are in the pipeline, and we'll be releasing another alpha version soon. You can track our progress towards the 7.0.0.Final version [here](https://github.com/serverlessworkflow/sdk-java/milestone/1).
+
+### Previous Versions and Support for the Specification 0.8
+
+As we move forward, if you encounter any issues with the 5.x series, which supports Specification 0.8, please [open an issue in our repository](https://github.com/serverlessworkflow/sdk-java/issues) so we can track it. While we may release patch versions to address critical issues, please note that no new features will be added, and our resources for maintaining this branch are limited.
+
+For those interested in contributing to the 6.x series, which supports the legacy 0.9 version of the specification, we welcome your efforts. However, we want to emphasize that our primary focus and resources are dedicated to the new 1.0.0 specification, which aligns with the 7.x stream of the Java SDK.
+
+Happy coding!
diff --git a/src/content/blog/releases/release-sdk-java-7.0.0-alpha5.1.md b/src/content/blog/releases/release-sdk-java-7.0.0-alpha5.1.md
new file mode 100644
index 0000000..f6fcc37
--- /dev/null
+++ b/src/content/blog/releases/release-sdk-java-7.0.0-alpha5.1.md
@@ -0,0 +1,51 @@
+---
+title: Serverless Workflow Java SDK 7.0.0-alpha5.1
+author: Francisco Javier Tirado Sarti
+date: 2024-12-04
+description: >
+ Heads up, community! We have released a new Java SDK version compatible with Specification 1.0.0.
+---
+
+## Announcing the Release of Serverless Workflow Java SDK 7.0.0-alpha5.1
+
+Hello, Serverless Workflow community!
+
+We're excited to announce the release of the latest Java SDK, version 7.0.0-alpha5.1, now compatible with the upcoming Serverless Workflow Specification 1.0.0. You can dive right in by using [one of the examples](https://github.com/serverlessworkflow/specification/tree/main/examples) available in the specification repository. Here's a quick example to get you started:
+
+**Java SDK Example**
+```java
+// Make sure simple.yaml is in your src/main/resources folder
+try (InputStream in = new FileInputStream("simple.yaml")) {
+ Workflow workflow = WorkflowReader.readWorkflow (in, WorkflowFormat.YAML);
+ // Once you have the Workflow instance, you can use its API to inspect it
+}
+```
+
+To install the SDK, simply add it as a dependency to your Maven project:
+
+**Maven Dependency**
+```xml
+
+ io.serverlessworkflow
+ serverlessworkflow-api
+ 7.0.0-alpha5.1
+
+```
+
+With this release,
+
+- We update to the latest schema revision.
+ - Add ErrorFilter schema
+- We improve POJO generation from specification schema by:
+ - Fix problem generating union classes related with Input/Output schema
+- We substantially advance in the development of a [reference implementation](https://github.com/serverlessworkflow/sdk-java/issues/459), that will be properly documented when it reaches a more stable state.
+
+We're also thrilled to share that new features are in the pipeline, and we'll be releasing another alpha version soon. You can track our progress towards the 7.0.0.Final version [here](https://github.com/serverlessworkflow/sdk-java/milestone/1).
+
+### Previous Versions and Support for the Specification 0.8
+
+As we move forward, if you encounter any issues with the 5.x series, which supports Specification 0.8, please [open an issue in our repository](https://github.com/serverlessworkflow/sdk-java/issues) so we can track it. While we may release patch versions to address critical issues, please note that no new features will be added, and our resources for maintaining this branch are limited.
+
+For those interested in contributing to the 6.x series, which supports the legacy 0.9 version of the specification, we welcome your efforts. However, we want to emphasize that our primary focus and resources are dedicated to the new 1.0.0 specification, which aligns with the 7.x stream of the Java SDK.
+
+Happy coding!
diff --git a/src/content/blog/releases/release-sdk-java-7.0.0-alpha5.md b/src/content/blog/releases/release-sdk-java-7.0.0-alpha5.md
new file mode 100644
index 0000000..1de8088
--- /dev/null
+++ b/src/content/blog/releases/release-sdk-java-7.0.0-alpha5.md
@@ -0,0 +1,51 @@
+---
+title: Serverless Workflow Java SDK 7.0.0-alpha5
+author: Francisco Javier Tirado Sarti
+date: 2024-11-07
+description: >
+ Heads up, community! We have released a new Java SDK version compatible with Specification 1.0.0.
+---
+
+## Announcing the Release of Serverless Workflow Java SDK 7.0.0-alpha5
+
+Hello, Serverless Workflow community!
+
+We're excited to announce the release of the latest Java SDK, version 7.0.0-alpha5, now compatible with the upcoming Serverless Workflow Specification 1.0.0. You can dive right in by using [one of the examples](https://github.com/serverlessworkflow/specification/tree/main/examples) available in the specification repository. Here's a quick example to get you started:
+
+**Java SDK Example**
+```java
+// Make sure simple.yaml is in your src/main/resources folder
+try (InputStream in = new FileInputStream("simple.yaml")) {
+ Workflow workflow = WorkflowReader.readWorkflow (in, WorkflowFormat.YAML);
+ // Once you have the Workflow instance, you can use its API to inspect it
+}
+```
+
+To install the SDK, simply add it as a dependency to your Maven project:
+
+**Maven Dependency**"
+```xml
+
+ io.serverlessworkflow
+ serverlessworkflow-api
+ 7.0.0-alpha5
+
+```
+
+With this release,
+
+- We update to the latest schema.
+- We improve POJO generation from specification schema by:
+ - creating proper union classes when the one of the union members is a string
+ - assigning meaningful names by using schema titles.
+- We start the development of a reference implementation, that will be properly documented when it reaches a more stable state.
+
+We're also thrilled to share that new features are in the pipeline, and we'll be releasing another alpha version soon. You can track our progress towards the 7.0.0.Final version [here](https://github.com/serverlessworkflow/sdk-java/milestone/1).
+
+### Previous Versions and Support for the Specification 0.8
+
+As we move forward, if you encounter any issues with the 5.x series, which supports Specification 0.8, please [open an issue in our repository](https://github.com/serverlessworkflow/sdk-java/issues) so we can track it. While we may release patch versions to address critical issues, please note that no new features will be added, and our resources for maintaining this branch are limited.
+
+For those interested in contributing to the 6.x series, which supports the legacy 0.9 version of the specification, we welcome your efforts. However, we want to emphasize that our primary focus and resources are dedicated to the new 1.0.0 specification, which aligns with the 7.x stream of the Java SDK.
+
+Happy coding!
diff --git a/src/content/blog/releases/release-sdk-java-7.0.0.md b/src/content/blog/releases/release-sdk-java-7.0.0.md
new file mode 100644
index 0000000..f430165
--- /dev/null
+++ b/src/content/blog/releases/release-sdk-java-7.0.0.md
@@ -0,0 +1,91 @@
+---
+title: Serverless Workflow Java SDK 7.0.0
+author: Francisco Javier Tirado Sarti
+date: 2025-01-31
+description: >
+ Heads up, community! We have released a new Java SDK version compatible with Specification 1.0.0.
+---
+
+## Announcing the Release of Serverless Workflow Java SDK 7.0.0
+
+Hello, Serverless Workflow community!
+
+We're excited to announce the release of the latest Java SDK, version 7.0.0, which is now compatible with the upcoming Serverless Workflow Specification 1.0.0 and includes a reference implementation. The reference implementation provides a ready-to-use runtime that supports the Serverless Workflow Specification. It includes a workflow execution engine, validation utilities, and illustrative examples to help you quickly test and deploy your workflows.
+
+
+## Java SDK example
+
+You can dive right in using [one of the examples](https://github.com/serverlessworkflow/specification/tree/main/examples) available in the specification repository. Here's a quick example to get you started:
+
+To use the SDK, simply add it as a dependency to your Maven project:
+
+
+```xml
+
+ io.serverlessworkflow
+ serverlessworkflow-api
+ 7.0.0
+
+```
+
+Then, you can write
+
+```java
+// Make sure simple.yaml is in your root folder
+try (InputStream in = new FileInputStream("simple.yaml")) {
+ Workflow workflow = WorkflowReader.readWorkflow (in, WorkflowFormat.YAML);
+ // Once you have the Workflow instance, you can use its API to inspect it
+}
+```
+
+## Java Reference implementation example
+
+You can dive right in using [one of the examples](https://github.com/serverlessworkflow/sdk-java/tree/main/examples) available in the implementation repository or by checking the [README](https://github.com/serverlessworkflow/sdk-java/tree/main/impl).
+
+Here's a quick example to get you started:
+
+To use reference implementation, simply add it as a dependency to your Maven project:
+
+```xml
+
+ io.serverlessworkflow
+ serverlessworkflow-impl-core
+ 7.0.0
+
+```
+
+Then, you can write the following code to execute a workflow
+
+``` java
+// Make sure simple.yaml is in your src/main/resources folder
+try (WorkflowApplication appl = WorkflowApplication.builder().build()) {
+ logger.info(
+ "Workflow output is {}",
+ appl.workflowDefinition(WorkflowReader.readWorkflowFromClasspath("simple.yaml"))
+ .instance(Map.of())
+ .start()
+ .join());
+ }
+```
+
+## Whats new?
+
+In this release:
+
+- We updated the latest schema revision.
+- We improved POJO generation from specification schema by:
+ - Fixing generation of POJOs related to the `EventComsuption` strategy.
+- We released the first documented version of the [reference implementation](https://github.com/serverlessworkflow/sdk-java/tree/main/impl), completing [phase 1](https://github.com/serverlessworkflow/sdk-java/issues/459).
+
+
+### Future plans
+
+Check out our roadmap [here](https://github.com/serverlessworkflow/sdk-java/milestone/2)
+
+### Previous Versions and Support for the Specification 0.8
+
+As we move forward, if you encounter any issues with the 5.x series, which supports Specification 0.8, please [open an issue in our repository](https://github.com/serverlessworkflow/sdk-java/issues) so we can track it. While we may release patch versions to address critical issues, please note that no new features will be added, and our resources for maintaining this branch are limited.
+
+For those interested in contributing to the 6.x series, which supports the legacy 0.9 version of the specification, we welcome your efforts. However, we want to emphasize that our primary focus and resources are dedicated to the new 1.0.0 specification, which aligns with the 7.x stream of the Java SDK.
+
+Happy coding!
diff --git a/src/content/blog/releases/release-sdk-java-7.1.0.md b/src/content/blog/releases/release-sdk-java-7.1.0.md
new file mode 100644
index 0000000..e1ea3c9
--- /dev/null
+++ b/src/content/blog/releases/release-sdk-java-7.1.0.md
@@ -0,0 +1,91 @@
+---
+title: Serverless Workflow Java SDK 7.1.0
+author: Francisco Javier Tirado Sarti
+date: 2025-04-29
+description: >
+ Heads up, community! We have released a new Java SDK version compatible with Specification 1.0.0.
+---
+
+## Announcing the Release of Serverless Workflow Java SDK 7.1.0
+
+Hello, Serverless Workflow community!
+
+We're excited to announce the release of the latest Java SDK, version 7.1.0, which is now compatible with the upcoming Serverless Workflow Specification 1.0.0 and includes a reference implementation. The reference implementation provides a ready-to-use runtime that supports the Serverless Workflow Specification. It consists of a workflow execution engine, validation utilities, and example workflows to help you quickly test and deploy your workflows.
+
+
+## Java SDK example
+
+You can dive right in using [one of the examples](https://github.com/serverlessworkflow/specification/tree/main/examples) available in the specification repository. Here's a quick example to get you started:
+
+To use the SDK, simply add it as a dependency to your Maven project:
+
+
+```xml
+
+ io.serverlessworkflow
+ serverlessworkflow-api
+ 7.1.0.Final
+
+```
+
+Then, you can write
+
+```java
+// Make sure simple.yaml is in your root folder
+try (InputStream in = new FileInputStream("simple.yaml")) {
+ Workflow workflow = WorkflowReader.readWorkflow (in, WorkflowFormat.YAML);
+ // Once you have the Workflow instance, you can use its API to inspect it
+}
+```
+
+## Java Reference implementation example
+
+You can dive right in using [one of the examples](https://github.com/serverlessworkflow/sdk-java/tree/main/examples) available in the implementation repository or by checking the [README](https://github.com/serverlessworkflow/sdk-java/tree/main/impl).
+
+Here's a quick example to get you started:
+
+To use reference implementation, simply add it as a dependency to your Maven project:
+
+```xml
+
+ io.serverlessworkflow
+ serverlessworkflow-impl-core
+ 7.1.0.Final
+
+```
+
+Then, you can write the following code to execute a workflow
+
+``` java
+// Make sure simple.yaml is in your src/main/resources folder
+try (WorkflowApplication appl = WorkflowApplication.builder().build()) {
+ logger.info(
+ "Workflow output is {}",
+ appl.workflowDefinition(WorkflowReader.readWorkflowFromClasspath("simple.yaml"))
+ .instance(Map.of())
+ .start()
+ .join());
+ }
+```
+
+## Whats new?
+
+In this release:
+
+- We updated the latest schema revision, which include these breaking changes
+ - https://github.com/serverlessworkflow/specification/issues/1087
+ - https://github.com/serverlessworkflow/specification/issues/1076
+ - https://github.com/serverlessworkflow/specification/issues/1079
+
+
+### Future plans
+
+Check out our roadmap [here](https://github.com/serverlessworkflow/sdk-java/milestone/2)
+
+### Previous Versions and Support for the Specification 0.8
+
+As we move forward, if you encounter any issues with the 5.x series, which supports Specification 0.8, please [open an issue in our repository](https://github.com/serverlessworkflow/sdk-java/issues) so we can track it. While we may release patch versions to address critical issues, please note that no new features will be added, and our resources for maintaining this branch are limited.
+
+For those interested in contributing to the 6.x series, which supports the legacy 0.9 version of the specification, we welcome your efforts. However, we want to emphasize that our primary focus and resources are dedicated to the new 1.0.0 specification, which aligns with the 7.x stream of the Java SDK.
+
+Happy coding!
diff --git a/src/content/blog/releases/release-sdk-java-7.2.0.md b/src/content/blog/releases/release-sdk-java-7.2.0.md
new file mode 100644
index 0000000..4512719
--- /dev/null
+++ b/src/content/blog/releases/release-sdk-java-7.2.0.md
@@ -0,0 +1,120 @@
+---
+title: Serverless Workflow Java SDK 7.2.0
+author: Ricardo Zanini
+date: 2025-09-10
+description: >-
+ We’ve shipped Serverless Workflow Java SDK 7.2.0, aligned with Specification 1.0.0, with a brand-new Fluent DSL, experimental Func DSL, Mermaid diagrams, auth enhancements, and more.
+---
+
+## Announcing the Release of Serverless Workflow Java SDK 7.2.0
+
+Hello, Serverless Workflow community! We’re excited to announce **Java SDK 7.2.0.Final**, aligned with **Serverless Workflow Specification 1.0.0**. This release strengthens the developer experience with a **Fluent DSL**, lifecycle hooks, richer HTTP authentication, and numerous quality and dependency updates.
+
+👉 Full release notes: [GitHub – 7.2.0.Final](https://github.com/serverlessworkflow/sdk-java/releases/tag/7.2.0.Final)
+
+---
+
+## Highlights
+
+* **Fluent DSL (Spec)**
+
+ * Clean, expressive Java builders to define workflows, with new `if`/`until` predicates and extensible expression building.
+* **Func DSL (experimental)**
+
+ * Early function‑centric DSL for composing reusable functions and data transformations. API may evolve.
+* **Mermaid diagrams**
+
+ * Generate Mermaid diagrams for workflows and export SVG/PNG for docs, PRs, and design reviews.
+* **Agentic (experimental)**
+
+ * Early Agentic DSL and LangChain4j-based modules to explore LLM-powered workflows.
+* **HTTP Auth Enhancements**
+
+ * Adds **Basic**, **Bearer**, and **OAuth** auth to HTTP call tasks.
+* **Lifecycle & Events**
+
+ * New lifecycle events to observe workflow execution phases.
+* **Core refactors & quality**
+
+ * Stronger typing, clearer module boundaries (Jackson/JQ separated), more tests, and improved JWT handling.
+* **Dependency updates**
+
+ * JUnit 5, Hibernate Validator 9.x, Jackson 2.20.x line, Maven plugins, and more.
+
+---
+
+## Quick start
+
+### Add the API
+
+```xml
+
+ io.serverlessworkflow
+ serverlessworkflow-api
+ 7.2.0.Final
+
+```
+
+### (Optional) Reference implementation
+
+```xml
+
+ io.serverlessworkflow
+ serverlessworkflow-impl-core
+ 7.2.0.Final
+
+```
+
+### Read a workflow
+
+```java
+// Make sure simple.yaml is on your classpath (e.g., src/main/resources)
+try (InputStream in = Thread.currentThread().getContextClassLoader().getResourceAsStream("simple.yaml")) {
+ Workflow workflow = WorkflowReader.readWorkflow(in, WorkflowFormat.YAML);
+ // Inspect or execute with the reference implementation
+}
+```
+
+---
+
+## Visualize workflows with Mermaid (new)
+
+Add the module:
+
+```xml
+
+ io.serverlessworkflow
+ serverlessworkflow-mermaid
+ 7.2.0.Final
+
+```
+
+Render a workflow to Mermaid and export SVG:
+
+```java
+Workflow wf = WorkflowReader.readWorkflow(
+ Thread.currentThread().getContextClassLoader().getResourceAsStream("simple.yaml"),
+ WorkflowFormat.YAML);
+String mermaid = new Mermaid().from(wf);
+Path out = MermaidInk.render(mermaid, true, Path.of("workflow.svg")); // true = svg
+```
+
+> API is evolving; see the [Mermaid module README](https://github.com/serverlessworkflow/sdk-java/tree/main/mermaid) for the latest usage.
+
+---
+
+## Try the examples
+
+* Spec examples: [https://github.com/serverlessworkflow/specification/tree/main/examples](https://github.com/serverlessworkflow/specification/tree/main/examples)
+* SDK examples: [https://github.com/serverlessworkflow/sdk-java/tree/main/examples](https://github.com/serverlessworkflow/sdk-java/tree/main/examples)
+
+> Note: Example modules are not published to Maven Central; build locally to try them.
+
+---
+
+## Roadmap & community
+
+* Roadmap/Milestone: [https://github.com/serverlessworkflow/sdk-java/milestone/2](https://github.com/serverlessworkflow/sdk-java/milestone/2)
+* Issues/feedback: [https://github.com/serverlessworkflow/sdk-java/issues](https://github.com/serverlessworkflow/sdk-java/issues)
+
+Thank you to all contributors who helped shape this release. 🎉
diff --git a/src/content/blog/releases/release-sdk-rust.md b/src/content/blog/releases/release-sdk-rust.md
new file mode 100644
index 0000000..335f026
--- /dev/null
+++ b/src/content/blog/releases/release-sdk-rust.md
@@ -0,0 +1,53 @@
+---
+title: Announcing the Serverless Workflow Rust SDK v1.0.0-alpha6
+author: Charles d'Avernas
+date: 2025-01-14
+description: >
+ Introducing the first alpha release of the Serverless Workflow Rust SDK, version v1.0.0-alpha1.
+---
+
+Hello, Serverless Workflow community!
+
+We are thrilled to announce the release of the very first alpha version of the **Serverless Workflow Rust SDK**! Version `v1.0.0-alpha6` marks an exciting milestone as we bring the power of the Serverless Workflow specification to the Rust ecosystem.
+
+## Installation Instructions
+
+To start using the Rust SDK, simply add it to your project’s dependencies in `Cargo.toml`:
+
+```toml
+[dependencies]
+serverless-workflow-sdk = "1.0.0-alpha6"
+```
+
+Alternatively, you can add it directly via Cargo:
+
+```bash
+cargo add serverless-workflow-sdk@1.0.0-alpha6
+```
+
+For more information and examples, check out the [GitHub repository](https://github.com/serverlessworkflow/sdk-rust).
+
+## What’s Included?
+
+This initial alpha release includes:
+
+- **Core Models**: Full support for the Serverless Workflow DSL, enabling you to define workflows in compliance with the specification.
+- **Builders**: Programmatic workflow creation using builder patterns for ease and type safety.
+
+## What’s Next?
+
+As we move toward the full `v1.0.0` release, our focus will be on:
+
+- Expanding the SDK with additional utilities and helpers.
+- Ensuring compatibility with the latest Serverless Workflow specification.
+- Incorporating community feedback to improve the developer experience.
+
+Your input is crucial to making the Rust SDK robust and production-ready. Please share your feedback, report issues, or contribute by visiting our [GitHub repository](https://github.com/serverlessworkflow/sdk-rust).
+
+## Join the Conversation
+
+Thank you for being a part of the Serverless Workflow community. With your help, we’re building a powerful ecosystem for serverless workflows, one step at a time.
+
+Give the Rust SDK a try today, and let us know how it works for you!
+
+Happy coding! 🚀
diff --git a/src/content/blog/releases/release-sdk-typescript-1.0.0-alpha5.md b/src/content/blog/releases/release-sdk-typescript-1.0.0-alpha5.md
new file mode 100644
index 0000000..014cab2
--- /dev/null
+++ b/src/content/blog/releases/release-sdk-typescript-1.0.0-alpha5.md
@@ -0,0 +1,30 @@
+---
+title: Serverless Workflow TypeScript SDK v1.0.0-alpha5.0 Release
+author: Jean-Baptiste Bianchi
+date: 2025-01-14
+description: >
+ Announcing the availability of the v1.0.0-alpha5.0 package for the Serverless Workflow TypeScript SDK.
+---
+
+Hello, Serverless Workflow community!
+
+We are excited to announce the release of version `1.0.0-alpha5.0` of the TypeScript SDK for the Serverless Workflow specification. This release brings us one step closer to a stable and production-ready v1.0.0.
+
+## Installation Instructions
+
+To start using `v1.0.0-alpha5.0`, you can install it via NPM under the correct organization name:
+
+```bash
+npm install @serverlessworkflow/sdk@1.0.0-alpha5.0
+```
+
+For detailed information on how to get started with the SDK, visit the [GitHub repository](https://github.com/serverlessworkflow/sdk-typescript).
+
+## What’s Next?
+We are actively working toward the full 1.0.0 release, which will feature comprehensive support for the finalized Serverless Workflow v1.0.0 specification.
+
+Your feedback is invaluable, so please don’t hesitate to share your thoughts and experiences. Try out the new version and let us know how it works for your projects.
+
+Thank you for your continued support and contributions to the Serverless Workflow community. Together, we’re building the future of serverless workflows!
+
+Happy coding!
\ No newline at end of file
diff --git a/src/content/blog/releases/release-sdk-typescript-1.0.1.md b/src/content/blog/releases/release-sdk-typescript-1.0.1.md
new file mode 100644
index 0000000..3fb455e
--- /dev/null
+++ b/src/content/blog/releases/release-sdk-typescript-1.0.1.md
@@ -0,0 +1,121 @@
+---
+title: Announcing Serverless Workflow TypeScript SDK v1.0.1
+author: Jean-Baptiste Bianchi
+date: 2025-03-28
+description: >
+ Announcing the v1.0.1 of the Serverless Workflow TypeScript SDK, spoiler alert: Mermaid is back!
+---
+
+We are excited to announce the release of **Serverless Workflow TypeScript SDK v1.0.1**! This update brings back the much-requested **Mermaid flowchart generation** feature and introduces a brand-new **directed graph generation** capability.
+
+## Background
+
+The Serverless Workflow TypeScript SDK was recently rewritten to fully support the **Serverless Workflow Specification v1.0.0**, marking a significant milestone in its development. However, during this major overhaul, the **Mermaid flowchart generation** feature was temporarily lost.
+
+With the release of v1.0.1, we are pleased to restore this functionality and introduce an additional way to visualize workflows: **directed graph generation**.
+
+## Installation
+
+To get started with the latest version of the SDK, install it via npm:
+
+```sh
+npm install @serverlessworkflow/sdk
+```
+
+## Mermaid Flowchart Generation
+
+Mermaid flowcharts provide a simple way to visualize workflows in a declarative format. In v1.0.1, the SDK allows users to easily convert workflow definitions into Mermaid diagrams.
+
+### Example: Generating a Mermaid Flowchart
+
+```typescript
+import { convertToMermaidCode, MermaidDiagram } from '@serverlessworkflow/sdk';
+
+const workflow = {
+ document: {
+ dsl: '1.0.0',
+ name: 'using-plain-object',
+ version: '1.0.0',
+ namespace: 'default',
+ },
+ do: [
+ {
+ step1: {
+ set: {
+ variable: 'my first workflow',
+ },
+ },
+ },
+ ],
+};
+const mermaidCode = convertToMermaidCode(workflow); /* or */
+// const mermaidCode = new MermaidDiagram(workflow).sourceCode();
+// const workflow = new Classes.Workflow({...}); const mermaidCode = workflow.toMermaidCode();
+// const mermaidCode = Classes.Workflow.toMermaidCode(workflow);
+```
+
+### Output Mermaid Code
+
+```mermaid
+flowchart TD
+ root-entry-node(( ))
+ root-exit-node((( )))
+ /do/0/step1["step1"]
+ /do/0/step1 --> root-exit-node
+ root-entry-node --> /do/0/step1
+
+
+classDef hidden display: none;
+```
+
+## Directed Graph Generation
+
+In addition to Mermaid flowcharts, v1.0.1 introduces **directed graph generation**, which represents workflows as structured graph objects.
+
+### Example: Generating a Directed Graph
+
+```typescript
+import { buildGraph } from '@serverlessworkflow/sdk';
+
+const workflow = {
+ document: {
+ dsl: '1.0.0',
+ name: 'using-plain-object',
+ version: '1.0.0',
+ namespace: 'default',
+ },
+ do: [
+ {
+ step1: {
+ set: {
+ variable: 'my first workflow',
+ },
+ },
+ },
+ ],
+};
+const graph = buildGraph(workflow);
+// const workflow = new Classes.Workflow({...}); const graph = workflow.toGraph();
+// const graph = Classes.Workflow.toGraph(workflow);
+```
+
+### Sample Output
+
+```json
+{
+ "id": "root",
+ "type": "root",
+ "parent": null,
+ "nodes": [...], // length 3 - root entry node, step1 node, root exit node
+ "edges": [...], // length 2 - entry to step1, step1 to exit
+ "entryNode": {...}, // root entry node
+ "exitNode": {...} // root exit node
+}
+```
+
+## Try It Now!
+
+The latest version of the Serverless Workflow TypeScript SDK makes it easier than ever to visualize and analyze workflows. We invite you to install the update and try out the new features.
+
+🔗 **Repository:** [Serverless Workflow TypeScript SDK](https://github.com/serverlessworkflow/sdk-typescript)
+
diff --git a/src/content/blog/releases/release-sdk-typescript-legacy.md b/src/content/blog/releases/release-sdk-typescript-legacy.md
new file mode 100644
index 0000000..4de51d5
--- /dev/null
+++ b/src/content/blog/releases/release-sdk-typescript-legacy.md
@@ -0,0 +1,47 @@
+---
+title: Serverless Workflow TypeScript SDK Legacy
+author: Jean-Baptiste Bianchi
+date: 2024-08-09
+description: >
+ Legacy Branch & Release for the TypeScript SDK
+---
+
+Hello, Serverless Workflow community!
+
+I'm excited to share some important updates regarding the TypeScript SDK for the Serverless Workflow specification. As many of you know, our specification underwent a significant rewrite after version 0.9, culminating in the anticipated release of version 1.0.0-alpha. This update will bring many improvements and changes, aligning the spec with the latest needs and trends in serverless architectures.
+
+## Introducing the Legacy Branch
+
+For those of you who have been working with version 0.9 of the spec and wish to continue using it, we've created a **legacy branch** in our GitHub repository. This branch is for developers who want to maintain the older version, even though our organization will not officially support it moving forward.
+
+You can find the legacy branch here: [Serverless Workflow TypeScript SDK - Legacy spec 0.9 Branch](https://github.com/serverlessworkflow/sdk-typescript/tree/legacy-spec-0.9)
+
+### NPM Package for the Legacy Version
+
+The legacy branch is published under the previously erroneous organization name `@severlessworkflow`. This package is available for those needing the older version for compatibility reasons and is aligned with version 0.9 of the specification.
+
+To install the legacy package, you can use:
+
+```bash
+npm install @severlessworkflow/sdk-typescript@4.0.0-rc1
+```
+
+This package will retain the older naming and organizational structure to maintain backward compatibility for existing projects.
+
+## Upcoming Packages with Correct Naming
+
+Moving forward, all new packages will be released under the correct (organization) name `@serverlessworkflow/sdk`. This change not only corrects a previous error but also aligns with the updated versioning of the spec.
+
+The version 1.0.0-alpha is still a [work in progress](https://github.com/serverlessworkflow/sdk-typescript/pull/188). It will be released once it is ready and will feature all the enhancements and updates introduced with the rewritten specification.
+
+## Why This Matters
+
+These changes ensure consistency and alignment with our community's expectations and standards. Maintaining a legacy branch provides a bridge for developers needing more time to transition to the new specification. At the same time, the correct naming and versioning for new packages help streamline our offerings and reduce confusion.
+
+## Moving Forward
+
+We encourage all developers to explore the new features and improvements of the upcoming SDK version once it is released. For those who need to stick with the older version for now, the legacy branch is there for your convenience.
+
+Thank you for your continued support and contributions to the Serverless Workflow community. As always, your feedback is invaluable, and we look forward to hearing your thoughts on these changes.
+
+Happy coding!
\ No newline at end of file
diff --git a/src/content/blog/releases/release-synapse-1.0.0-alpha5.2.md b/src/content/blog/releases/release-synapse-1.0.0-alpha5.2.md
new file mode 100644
index 0000000..db6c92e
--- /dev/null
+++ b/src/content/blog/releases/release-synapse-1.0.0-alpha5.2.md
@@ -0,0 +1,13 @@
+---
+title: Synapse 1.0.0-alpha5.2 release
+author: Jean-Baptiste Bianchi
+date: 2024-10-31
+description: >
+ Introducing Light theme in Synapse 1.0.0-alpha5.2
+---
+
+We’re thriller to introduce [**Synapse 1.0.0-alpha5.2**](https://github.com/serverlessworkflow/synapse/releases/tag/v1.0.0-alpha5.2), the latest version of our official Serverless Workflow runtime. This release comes with a brand-new **light theme** that brings a fresh, modern look to your workflow management.
+
+Whether you're building complex workflows or experimenting with serverless architectures, Synapse 1.0.0-alpha5.2 is here to make the process seamless and visually appealing.
+
+[Check out the Synapse repo on GitHub](https://github.com/serverlessworkflow/synapse) to get started with the latest release!
diff --git a/src/content/examples/async-api.md b/src/content/examples/async-api.md
new file mode 100644
index 0000000..abcec8a
--- /dev/null
+++ b/src/content/examples/async-api.md
@@ -0,0 +1,22 @@
+---
+title: Async API
+---
+document:
+ dsl: '1.0.3'
+ namespace: default
+ name: call-asyncapi
+ version: '1.0.0'
+do:
+- findPet:
+ call: asyncapi
+ with:
+ document:
+ uri: https://fake.com/docs/asyncapi.json
+ operationRef: findPetsByStatus
+ server: staging
+ message:
+ payload:
+ petId: ${ .pet.id }
+ authentication:
+ bearer:
+ token: ${ .token }
\ No newline at end of file
diff --git a/src/content/examples/container.md b/src/content/examples/container.md
new file mode 100644
index 0000000..7862ea5
--- /dev/null
+++ b/src/content/examples/container.md
@@ -0,0 +1,13 @@
+---
+title: Container
+---
+document:
+ dsl: '1.0.3'
+ namespace: default
+ name: run-container
+ version: '1.0.0'
+do:
+ - runContainer:
+ run:
+ container:
+ image: fake-image
\ No newline at end of file
diff --git a/src/content/examples/emit.md b/src/content/examples/emit.md
new file mode 100644
index 0000000..2fbf2bc
--- /dev/null
+++ b/src/content/examples/emit.md
@@ -0,0 +1,22 @@
+---
+title: Emit Event
+---
+document:
+ dsl: '1.0.3'
+ namespace: default
+ name: emit
+ version: '0.1.0'
+do:
+ - emitEvent:
+ emit:
+ event:
+ with:
+ source: https://petstore.com
+ type: com.petstore.order.placed.v1
+ data:
+ client:
+ firstName: Cruella
+ lastName: de Vil
+ items:
+ - breed: dalmatian
+ quantity: 101
\ No newline at end of file
diff --git a/src/content/examples/for.md b/src/content/examples/for.md
new file mode 100644
index 0000000..4611068
--- /dev/null
+++ b/src/content/examples/for.md
@@ -0,0 +1,24 @@
+---
+title: For
+---
+document:
+ dsl: '1.0.3'
+ namespace: default
+ name: for-example
+ version: '0.1.0'
+do:
+ - checkup:
+ for:
+ each: pet
+ in: .pets
+ at: index
+ while: .vet != null
+ do:
+ - waitForCheckup:
+ listen:
+ to:
+ one:
+ with:
+ type: com.fake.petclinic.pets.checkup.completed.v2
+ output:
+ as: '.pets + [{ "id": $pet.id }]'
\ No newline at end of file
diff --git a/src/content/examples/fork.md b/src/content/examples/fork.md
new file mode 100644
index 0000000..c7d2757
--- /dev/null
+++ b/src/content/examples/fork.md
@@ -0,0 +1,29 @@
+---
+title: Fork
+---
+document:
+ dsl: '1.0.3'
+ namespace: default
+ name: fork-example
+ version: '0.1.0'
+do:
+ - raiseAlarm:
+ fork:
+ compete: true
+ branches:
+ - callNurse:
+ call: http
+ with:
+ method: put
+ endpoint: https://fake-hospital.com/api/v3/alert/nurses
+ body:
+ patientId: ${ .patient.fullName }
+ room: ${ .room.number }
+ - callDoctor:
+ call: http
+ with:
+ method: put
+ endpoint: https://fake-hospital.com/api/v3/alert/doctor
+ body:
+ patientId: ${ .patient.fullName }
+ room: ${ .room.number }
\ No newline at end of file
diff --git a/src/content/examples/grpc.md b/src/content/examples/grpc.md
new file mode 100644
index 0000000..d2f9510
--- /dev/null
+++ b/src/content/examples/grpc.md
@@ -0,0 +1,21 @@
+---
+title: gRPC
+---
+document:
+ dsl: '1.0.3'
+ namespace: default
+ name: call-grpc
+ version: '1.0.0'
+do:
+ - greet:
+ call: grpc
+ with:
+ proto:
+ endpoint: file://app/greet.proto
+ service:
+ name: GreeterApi.Greeter
+ host: localhost
+ port: 5011
+ method: SayHello
+ arguments:
+ name: '${ .user.preferredDisplayName }'
\ No newline at end of file
diff --git a/src/content/examples/http.md b/src/content/examples/http.md
new file mode 100644
index 0000000..523d4be
--- /dev/null
+++ b/src/content/examples/http.md
@@ -0,0 +1,14 @@
+---
+title: HTTP
+---
+document:
+ dsl: '1.0.3'
+ namespace: default
+ name: call-http
+ version: '1.0.0'
+do:
+- getPet:
+ call: http
+ with:
+ method: get
+ endpoint: https://petstore.swagger.io/v2/pet/{petId}
\ No newline at end of file
diff --git a/src/content/examples/listen.md b/src/content/examples/listen.md
new file mode 100644
index 0000000..401431e
--- /dev/null
+++ b/src/content/examples/listen.md
@@ -0,0 +1,19 @@
+---
+title: Listen Event
+---
+document:
+ dsl: '1.0.3'
+ namespace: default
+ name: listen-to-all
+ version: '0.1.0'
+do:
+ - callDoctor:
+ listen:
+ to:
+ all:
+ - with:
+ type: com.fake-hospital.vitals.measurements.temperature
+ data: ${ .temperature > 38 }
+ - with:
+ type: com.fake-hospital.vitals.measurements.bpm
+ data: ${ .bpm < 60 or .bpm > 100 }
\ No newline at end of file
diff --git a/src/content/examples/open-api.md b/src/content/examples/open-api.md
new file mode 100644
index 0000000..04aee68
--- /dev/null
+++ b/src/content/examples/open-api.md
@@ -0,0 +1,17 @@
+---
+title: Open API
+---
+document:
+ dsl: '1.0.3'
+ namespace: default
+ name: call-openapi
+ version: '1.0.0'
+do:
+ - findPet:
+ call: openapi
+ with:
+ document:
+ endpoint: https://petstore.swagger.io/v2/swagger.json
+ operationId: findPetsByStatus
+ parameters:
+ status: available
\ No newline at end of file
diff --git a/src/content/examples/raise.md b/src/content/examples/raise.md
new file mode 100644
index 0000000..ad7b419
--- /dev/null
+++ b/src/content/examples/raise.md
@@ -0,0 +1,16 @@
+---
+title: Raise Error
+---
+document:
+ dsl: '1.0.3'
+ namespace: default
+ name: raise-not-implemented
+ version: '0.1.0'
+do:
+ - notImplemented:
+ raise:
+ error:
+ type: https://serverlessworkflow.io/errors/not-implemented
+ status: 500
+ title: Not Implemented
+ detail: ${ "The workflow '\( $workflow.definition.document.name ):\( $workflow.definition.document.version )' is a work in progress and cannot be run yet" }
\ No newline at end of file
diff --git a/src/content/examples/script.md b/src/content/examples/script.md
new file mode 100644
index 0000000..82b2cdd
--- /dev/null
+++ b/src/content/examples/script.md
@@ -0,0 +1,17 @@
+---
+title: Script
+---
+document:
+ dsl: '1.0.3'
+ namespace: samples
+ name: run-script-with-arguments
+ version: 0.1.0
+do:
+ - log:
+ run:
+ script:
+ language: javascript
+ arguments:
+ message: ${ .message }
+ code: >
+ console.log(message)
\ No newline at end of file
diff --git a/src/content/examples/subflow.md b/src/content/examples/subflow.md
new file mode 100644
index 0000000..928e750
--- /dev/null
+++ b/src/content/examples/subflow.md
@@ -0,0 +1,17 @@
+---
+title: Subflow
+---
+document:
+ dsl: '1.0.3'
+ namespace: default
+ name: run-subflow
+ version: '0.1.0'
+do:
+ - registerCustomer:
+ run:
+ workflow:
+ namespace: default
+ name: register-customer
+ version: '0.1.0'
+ input:
+ customer: .user
\ No newline at end of file
diff --git a/src/content/examples/switch.md b/src/content/examples/switch.md
new file mode 100644
index 0000000..e60f3b9
--- /dev/null
+++ b/src/content/examples/switch.md
@@ -0,0 +1,62 @@
+---
+title: Switch
+---
+document:
+ dsl: '1.0.3'
+ namespace: default
+ name: switch-example
+ version: '0.1.0'
+do:
+ - processOrder:
+ switch:
+ - case1:
+ when: .orderType == "electronic"
+ then: processElectronicOrder
+ - case2:
+ when: .orderType == "physical"
+ then: processPhysicalOrder
+ - default:
+ then: handleUnknownOrderType
+ - processElectronicOrder:
+ do:
+ - validatePayment:
+ call: http
+ with:
+ method: post
+ endpoint: https://fake-payment-service.com/validate
+ - fulfillOrder:
+ call: http
+ with:
+ method: post
+ endpoint: https://fake-fulfillment-service.com/fulfill
+ then: exit
+ - processPhysicalOrder:
+ do:
+ - checkInventory:
+ call: http
+ with:
+ method: get
+ endpoint: https://fake-inventory-service.com/inventory
+ - packItems:
+ call: http
+ with:
+ method: post
+ endpoint: https://fake-packaging-service.com/pack
+ - scheduleShipping:
+ call: http
+ with:
+ method: post
+ endpoint: https://fake-shipping-service.com/schedule
+ then: exit
+ - handleUnknownOrderType:
+ do:
+ - logWarning:
+ call: http
+ with:
+ method: post
+ endpoint: https://fake-logging-service.com/warn
+ - notifyAdmin:
+ call: http
+ with:
+ method: post
+ endpoint: https://fake-notification-service.com/notify
\ No newline at end of file
diff --git a/src/content/examples/try.md b/src/content/examples/try.md
new file mode 100644
index 0000000..faed27c
--- /dev/null
+++ b/src/content/examples/try.md
@@ -0,0 +1,42 @@
+---
+title: Try-Catch
+---
+document:
+ dsl: '1.0.3'
+ namespace: default
+ name: try-catch
+ version: '0.1.0'
+do:
+ - tryGetPet:
+ try:
+ - getPet:
+ call: http
+ with:
+ method: get
+ endpoint: https://petstore.swagger.io/v2/pet/{petId}
+ catch:
+ errors:
+ with:
+ type: https://serverlessworkflow.io/spec/1.0.0/errors/communication
+ status: 404
+ as: error
+ do:
+ - notifySupport:
+ emit:
+ event:
+ with:
+ source: https://petstore.swagger.io
+ type: io.swagger.petstore.events.pets.not-found.v1
+ data: ${ $error }
+ - setError:
+ set:
+ error: $error
+ export:
+ as: '$context + { error: $error }'
+ - buyPet:
+ if: $context.error == null
+ call: http
+ with:
+ method: put
+ endpoint: https://petstore.swagger.io/v2/pet/{petId}
+ body: '${ . + { status: "sold" } }'
\ No newline at end of file
diff --git a/src/content/examples/wait.md b/src/content/examples/wait.md
new file mode 100644
index 0000000..6d228c1
--- /dev/null
+++ b/src/content/examples/wait.md
@@ -0,0 +1,12 @@
+---
+title: Wait
+---
+document:
+ dsl: '1.0.3'
+ namespace: default
+ name: wait-duration-inline
+ version: '0.1.0'
+do:
+ - wait30Seconds:
+ wait:
+ seconds: 30
\ No newline at end of file
diff --git a/src/content/spec/1.0.0/errors/authentication.json b/src/content/spec/1.0.0/errors/authentication.json
new file mode 100644
index 0000000..5e0f548
--- /dev/null
+++ b/src/content/spec/1.0.0/errors/authentication.json
@@ -0,0 +1,5 @@
+{
+ "type": "https://serverlessworkflow.io/spec/1.0.0/errors/authentication",
+ "description": "Errors related to authentication failures.",
+ "status": 401
+}
\ No newline at end of file
diff --git a/src/content/spec/1.0.0/errors/authorization.json b/src/content/spec/1.0.0/errors/authorization.json
new file mode 100644
index 0000000..39e86e4
--- /dev/null
+++ b/src/content/spec/1.0.0/errors/authorization.json
@@ -0,0 +1,5 @@
+{
+ "type": "https://serverlessworkflow.io/spec/1.0.0/errors/authorization",
+ "description": "Errors related to unauthorized access attempts or insufficient permissions to perform certain actions within the workflow.",
+ "status": 403
+}
\ No newline at end of file
diff --git a/src/content/spec/1.0.0/errors/communication.json b/src/content/spec/1.0.0/errors/communication.json
new file mode 100644
index 0000000..5527e35
--- /dev/null
+++ b/src/content/spec/1.0.0/errors/communication.json
@@ -0,0 +1,5 @@
+{
+ "type": "https://serverlessworkflow.io/spec/1.0.0/errors/communication",
+ "description": "Errors encountered while communicating with external services, including network errors, service unavailable, or invalid responses.",
+ "status": 500
+}
\ No newline at end of file
diff --git a/src/content/spec/1.0.0/errors/configuration.json b/src/content/spec/1.0.0/errors/configuration.json
new file mode 100644
index 0000000..929fb89
--- /dev/null
+++ b/src/content/spec/1.0.0/errors/configuration.json
@@ -0,0 +1,5 @@
+{
+ "type": "https://serverlessworkflow.io/spec/1.0.0/errors/configuration",
+ "description": "Errors resulting from incorrect or invalid configuration settings, such as missing or misconfigured environment variables, incorrect parameter values, or configuration file errors.",
+ "status": 400
+}
\ No newline at end of file
diff --git a/src/content/spec/1.0.0/errors/expression.json b/src/content/spec/1.0.0/errors/expression.json
new file mode 100644
index 0000000..fdb48b8
--- /dev/null
+++ b/src/content/spec/1.0.0/errors/expression.json
@@ -0,0 +1,5 @@
+{
+ "type": "https://serverlessworkflow.io/spec/1.0.0/errors/expression",
+ "description": "Errors occurring during the evaluation of runtime expressions, such as invalid syntax or unsupported operations.",
+ "status": 400
+}
\ No newline at end of file
diff --git a/src/content/spec/1.0.0/errors/runtime.json b/src/content/spec/1.0.0/errors/runtime.json
new file mode 100644
index 0000000..d085429
--- /dev/null
+++ b/src/content/spec/1.0.0/errors/runtime.json
@@ -0,0 +1,5 @@
+{
+ "type": "https://serverlessworkflow.io/spec/1.0.0/errors/runtime",
+ "description": "Errors occurring during the runtime execution of a workflow, including unexpected exceptions, errors related to resource allocation, or failures in handling workflow tasks. These errors typically occur during the actual execution of workflow components and may require runtime-specific handling and resolution strategies.",
+ "status": 500
+}
\ No newline at end of file
diff --git a/src/content/spec/1.0.0/errors/timeout.json b/src/content/spec/1.0.0/errors/timeout.json
new file mode 100644
index 0000000..a5b7d8c
--- /dev/null
+++ b/src/content/spec/1.0.0/errors/timeout.json
@@ -0,0 +1,5 @@
+{
+ "type": "https://serverlessworkflow.io/spec/1.0.0/errors/timeout",
+ "description": "Errors caused by timeouts during the execution of tasks or during interactions with external services.",
+ "status": 408
+}
\ No newline at end of file
diff --git a/src/content/spec/1.0.0/errors/validation.json b/src/content/spec/1.0.0/errors/validation.json
new file mode 100644
index 0000000..17a3340
--- /dev/null
+++ b/src/content/spec/1.0.0/errors/validation.json
@@ -0,0 +1,5 @@
+{
+ "type": "https://serverlessworkflow.io/spec/1.0.0/errors/validation",
+ "description": "Errors arising from validation processes, such as validation of input data, schema validation failures, or validation constraints not being met. These errors indicate that the provided data or configuration does not adhere to the expected format or requirements specified by the workflow.",
+ "status": 400
+}
\ No newline at end of file
diff --git a/src/layouts/Layout.astro b/src/layouts/Layout.astro
new file mode 100644
index 0000000..13b0f72
--- /dev/null
+++ b/src/layouts/Layout.astro
@@ -0,0 +1,41 @@
+---
+import HtmlHead from "../components/HtmlHead.astro";
+import Header from "../components/Header.astro";
+import Footer from "../components/Footer.astro";
+
+interface Props {
+ title?: string;
+ description?: string;
+ image?: string;
+}
+
+export interface LayoutProps extends Props {}
+
+---
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/layouts/SidebarLayout.astro b/src/layouts/SidebarLayout.astro
new file mode 100644
index 0000000..c5a6c32
--- /dev/null
+++ b/src/layouts/SidebarLayout.astro
@@ -0,0 +1,28 @@
+---
+import Sidebar from "../components/Sidebar.astro";
+import type { CollectionContent } from "../content.config";
+import Layout, { type LayoutProps } from "./Layout.astro";
+interface Props extends LayoutProps {
+ entries: CollectionContent[]
+}
+---
+
+
+
+
\ No newline at end of file
diff --git a/src/pages/blog/[...slug].astro b/src/pages/blog/[...slug].astro
new file mode 100644
index 0000000..233b53c
--- /dev/null
+++ b/src/pages/blog/[...slug].astro
@@ -0,0 +1,41 @@
+---
+import { type CollectionEntry, render } from 'astro:content';
+import FormattedDate from '../../components/FormattedDate.astro';
+import SidebarLayout from '../../layouts/SidebarLayout.astro';
+import { getSortedBlogPosts } from '../../utils/collections';
+
+type Props = {
+ entry: CollectionEntry<'blog'>,
+ entries: CollectionEntry<'blog'>[]
+};
+
+export async function getStaticPaths() {
+ const entries = await getSortedBlogPosts();
+ return entries.map((entry) => ({
+ params: { slug: entry.id },
+ props: {
+ entry,
+ entries
+ }
+ }));
+};
+
+const { entry } = Astro.props;
+const { title, date } = entry.data;
+const { Content } = await render(entry);
+---
+
+
+
+
+
+
diff --git a/src/pages/blog/[group].astro b/src/pages/blog/[group].astro
new file mode 100644
index 0000000..455784c
--- /dev/null
+++ b/src/pages/blog/[group].astro
@@ -0,0 +1,37 @@
+---
+import type { CollectionEntry } from 'astro:content';
+import BlogPostsList from '../../components/BlogPostsList.astro';
+import SidebarLayout from '../../layouts/SidebarLayout.astro';
+import { getSortedBlogPosts } from '../../utils/collections';
+import { humanCase } from '../../utils/formatter';
+
+type Props = {
+ posts: CollectionEntry<'blog'>[],
+ entries: CollectionEntry<'blog'>[]
+};
+
+export async function getStaticPaths() {
+ const allPosts = await getSortedBlogPosts();
+ const groups = [...new Set(allPosts.map((post) => post.id.split('/')[0]))];
+ return groups.map(group => {
+ const filteredPosts = allPosts.filter(post => post.id.startsWith(group + '/'))
+ .sort((a, b) => a.data.date.valueOf() - b.data.date.valueOf());
+ return {
+ params: { group },
+ props: {
+ entries: allPosts,
+ posts: filteredPosts
+ }
+ };
+ });
+};
+
+const { group } = Astro.params;
+---
+
+
+
+
Blog Posts - { humanCase(group) }
+
+
+
\ No newline at end of file
diff --git a/src/pages/blog/index.astro b/src/pages/blog/index.astro
new file mode 100644
index 0000000..112adb0
--- /dev/null
+++ b/src/pages/blog/index.astro
@@ -0,0 +1,14 @@
+---
+import BlogPostsList from '../../components/BlogPostsList.astro';
+import SidebarLayout from '../../layouts/SidebarLayout.astro';
+import { getSortedBlogPosts } from '../../utils/collections';
+
+const posts = await getSortedBlogPosts();
+---
+
+
+
+
Blog Posts
+
+
+
\ No newline at end of file
diff --git a/src/pages/community.astro b/src/pages/community.astro
new file mode 100644
index 0000000..ab2846b
--- /dev/null
+++ b/src/pages/community.astro
@@ -0,0 +1,54 @@
+---
+import { DEV_MAILING_LIST_LINK, GITHUB_LINK, LINKEDIN_LINK, SLACK_LINK, X_TWITTER_LINK } from '../consts';
+import Layout from '../layouts/Layout.astro';
+import Section from '../components/Section.astro';
+---
+
+
+
+
+ Join the Open Workflow Specification community
+ Open Workflow Specification is an open source project that anyone in the community can use, improve, and enjoy. We'd love you to join us! Here's a few ways to find out what's happening and get involved.
+
+
+
+
+
Learn and Connect
+
Using or want to use Open Workflow Specification? Find out more here:
+
+
+ User help :
+ Discussion and help from your fellow users
+
+
+ LinkedIn :
+ Latest news on LinkedIn
+
+
+ X :
+ Latest news on X
+
+
+
+
+
Develop and Contribute
+
If you want to get more involved by contributing to Open Workflow Specification, join us here:
+
+
+ GitHub :
+ Development takes place here!
+
+
+ Slack :
+ Chat with other project developers at #open-workflow channel
+
+
+ Developer mailing list :
+ Discuss development issues around the project
+
+
+
You can find out how to contribute to Open Workflow Specification in our Contribution Guidelines .
+
+
+
+
\ No newline at end of file
diff --git a/src/pages/index.astro b/src/pages/index.astro
new file mode 100644
index 0000000..a647e32
--- /dev/null
+++ b/src/pages/index.astro
@@ -0,0 +1,193 @@
+---
+import { CURRENT_VERSION, GITHUB_LINK, GITHUB_ORG } from '../consts';
+import Layout from '../layouts/Layout.astro';
+import Card from '../components/Card.astro';
+import Section from '../components/Section.astro';
+import { Code } from 'astro:components';
+import { getCollection } from 'astro:content';
+
+const examples = (await getCollection('example')).sort((a,b) => a.data.title.localeCompare(b.data.title));
+---
+
+
+
+
+
+
+
+
Open Workflow Specification
+
Open Workflow Specification presents a vendor-neutral, open-source, and entirely community-driven ecosystem for defining and executing DSL-based workflows.
+
The current version is {CURRENT_VERSION} , get the JSON Schema here: YAML or JSON
+
Learn More
+
+
Runtime
+
+
+
+
+
+ The Open Workflow DSL is a high-level language that reshapes the terrain of workflow creation, boasting a design that is ubiquitous, intuitive, imperative, and fluent.
+
+
+
+
+
+ Designed with linguistic fluency, implicit default behaviors, and minimal technical jargon, making workflows accessible to developers with diverse skill levels and enhancing collaboration.
+
+
+ Supports event-driven execution and various scheduling options, including CRON expressions and time-based triggers, to respond efficiently to dynamic conditions.
+
+
+ Seamlessly integrates with multiple protocols (HTTP, gRPC, OpenAPI, AsyncAPI), ensuring easy communication with external systems and services, along with support for custom interactions via scripts, containers, or shell commands.
+
+
+ Open Workflow Specification enables developers to build workflows that can operate across diverse platforms and environments, eliminating the need for platform-specific adaptations.
+
+
+ Provides extensible components and supports defining custom functions and extensions, allowing developers to tailor workflows to unique business requirements without compromising compatibility.
+
+
+ Offers comprehensive data transformation, validation, and fault tolerance mechanisms, ensuring workflows are robust, reliable, and capable of handling complex processes and failures gracefully.
+
+
+
+
+
+
+ {
+ examples.map((entry, idx) => (
+
+
+
{entry.data.title} Example
+
+
+ ))
+ }
+
+
+ Visit our GitHub repository for more examples or complete use cases .
+
+
+
+
+
+
+ Add the schedule to your calendar and become a part of our discussions!
+ How To Join
+
+
+ We do a Pull Request contributions workflow on GitHub . New users are always welcome!
+ To Repository
+
+
+ Chat with our community and follow announcements at #open-workflow
+ Open Slack
+
+
+
+
+
+
+ Apache EventMesh Workflow is a cloud vendor-independent, cloud-native-oriented Workflow Runtime based on Open Workflow Specification, and provides durability, reliability, scalability, and observability capabilities.
+ Get Started
+
+
+ SonataFlow is a powerful tool for building cloud-native workflow applications, enabling seamless orchestration and choreography of services and events.
+ Get Started
+
+
+ Lemline is a highly scalable, native-binary runtime that plugs into any existing message broker (Kafka, RabbitMQ, etc.). Deployed as a message consumer and producer, it orchestrates serverless workflows without requiring any additional infrastructure.
+ Get Started
+
+
+ Quarkus Flow is a lightweight, cloud-native workflow engine for Quarkus. Run workflows defined in YAML or build them programmatically with a fluent Java DSL — both fully compliant with the Open Workflow Specification. Features build-time optimization, CDI integration, and agentic AI workflows via LangChain4j.
+ Get Started
+
+
+ Synapse is a vendor-neutral, free, open-source, and community-driven Workflow Management System (WFMS) implementing the Open Workflow Specification. You can deploy Synapse on Docker, Kubernetes, or natively on Windows, Mac, and Linux.
+ Get Started
+
+
+ Zigflow provides a simple and declarative way to define and manage Temporal workflows using the Open Workflow Specification. It enables low-code and no-code workflow creation that's easy to visualise, share, and maintain, without sacrificing the power and reliability of Temporal.
+ Get Started
+
+
+
+
+
+
+ A new generation serverless event middleware for building distributed event-driven applications.
+ Learn More
+
+
+ Open Workflow Specification is the core technology behind every KYC/KYB solution allowing them to customize it for their clients seamlessly.
+ Learn More
+
+
+ FaasNet makes it easy to deploy functions and API to Kubernetes without repetitive, boiler-plate coding.
+ Learn More
+
+
+ Foxflow's AI agent development platform accelerates business process automation and software delivery through LLM-integrated declarative workflows
+ Learn More
+
+
+ Huawei leverages Open Workflow Specification with FunctionGraph for scalable, event-driven functions and ROMA Connect for all-domain hybrid integration, connecting applications for seamless digital transformation.
+ Learn More
+
+
+ Neuroglia is a consultancy and solution design company for the digital transformation of companies and their services.
+ Learn More
+
+
+ Red Hat sponsors Apache KIE SonataFlow, a tool for creating cloud-native workflows. SonataFlow supports service and event orchestration, integrating with your architecture using CloudEvents, REST calls, and other standard components.
+ Learn More
+
+
+ Warrify offers a leading data platform for the retail industry. With "warrify Journeys" (powered by Open Workflow Specification) retailers are discovering new ways how to engage their customers in real time.
+ Learn More
+
+
+
+
+
+ Buy us a coffee!
+
+
+ Neuroglia is a consultancy and solution design company for the digital transformation of companies and their services.
+ Learn More
+
+
+
+
+
+
+
+
+
diff --git a/src/pages/robots.txt.ts b/src/pages/robots.txt.ts
new file mode 100644
index 0000000..bcc5259
--- /dev/null
+++ b/src/pages/robots.txt.ts
@@ -0,0 +1,13 @@
+import type { APIRoute } from 'astro';
+
+const getRobotsTxt = (sitemapURL: URL) => `
+User-agent: *
+Allow: /
+
+Sitemap: ${sitemapURL.href}
+`;
+
+export const GET: APIRoute = ({ site }) => {
+ const sitemapURL = new URL('sitemap-index.xml', site);
+ return new Response(getRobotsTxt(sitemapURL));
+};
\ No newline at end of file
diff --git a/src/pages/rss.xml.js b/src/pages/rss.xml.js
new file mode 100644
index 0000000..bda6964
--- /dev/null
+++ b/src/pages/rss.xml.js
@@ -0,0 +1,18 @@
+import rss from '@astrojs/rss';
+import { getCollection } from 'astro:content';
+import { DEFAULT_TITLE, DEFAULT_DESC } from '../consts';
+
+export async function GET(context) {
+ const posts = (await getCollection('blog'))
+ .sort((a, b) => a.data.date.valueOf() - b.data.date.valueOf());
+ return rss({
+ title: DEFAULT_TITLE,
+ description: DEFAULT_DESC,
+ site: context.site,
+ items: posts.map((post) => ({
+ ...post.data,
+ pubDate: post.data.date,
+ link: `/blog/${post.id}/`,
+ })),
+ });
+}
diff --git a/src/pages/spec/1.0.0/errors/[...id].astro b/src/pages/spec/1.0.0/errors/[...id].astro
new file mode 100644
index 0000000..cb06c92
--- /dev/null
+++ b/src/pages/spec/1.0.0/errors/[...id].astro
@@ -0,0 +1,35 @@
+---
+
+import { getEntry } from 'astro:content';
+import Layout from '../../../../layouts/Layout.astro';
+import Section from '../../../../components/Section.astro';
+
+export const prerender = false; // Enables SSR for this page only
+
+const { id } = Astro.params;
+if (!id) {
+ return Astro.redirect("/404");
+}
+const entry = await getEntry("specErrorV1", id);
+if (!entry) {
+ return Astro.redirect("/404");
+}
+
+const accept = Astro.request.headers.get('accept');
+
+if (accept === 'application/json') return new Response(JSON.stringify(entry.data));
+if (accept === 'text/plain') return new Response(entry.data.description, { headers: { 'Content-Type': 'text/plain' }});
+
+const { type, description, status } = entry.data;
+---
+
+
+
+ Standard Error
+
+
{type}
+
Code: {status}
+
{description}
+
+
+
diff --git a/src/styles/site.css b/src/styles/site.css
new file mode 100644
index 0000000..7d3a698
--- /dev/null
+++ b/src/styles/site.css
@@ -0,0 +1,30 @@
+@import "tailwindcss";
+@plugin "@tailwindcss/typography";
+@plugin "daisyui";
+@plugin "daisyui/theme" {
+ name: "light";
+ default: true;
+ --color-primary: oklch(46.2% 0.0713 255.54);
+ --color-secondary: oklch(78.95% 0.0554 234.08);
+ --color-accent: oklch(68.35% 0.1676 34.7);
+}
+@plugin "daisyui/theme" {
+ name: "dark";
+ default: false;
+ --color-primary: oklch(96.89% 0.0281 199.41);
+ --color-primary-content: #293241;
+ --color-secondary: oklch(78.95% 0.0554 234.08);
+ --color-accent: oklch(68.35% 0.1676 34.7);
+ --color-accent-content: oklab(0.14 0.03 0.02);
+ --color-neutral: #293241;
+ --color-neutral-content: #A6ADBB;
+}
+
+html[data-theme="dark"] .astro-code,
+html[data-theme="dark"] .astro-code span {
+ color: var(--shiki-dark) !important;
+ background-color: transparent !important;
+ /*font-style: var(--shiki-dark-font-style) !important;
+ font-weight: var(--shiki-dark-font-weight) !important;
+ text-decoration: var(--shiki-dark-text-decoration) !important;*/
+}
\ No newline at end of file
diff --git a/src/utils/collections.ts b/src/utils/collections.ts
new file mode 100644
index 0000000..aec70ce
--- /dev/null
+++ b/src/utils/collections.ts
@@ -0,0 +1,6 @@
+import { getCollection } from "astro:content";
+
+export const getSortedBlogPosts = async () =>
+ (await getCollection('blog'))
+ .sort((a, b) => b.data.date.valueOf() - a.data.date.valueOf())
+ ;
\ No newline at end of file
diff --git a/src/utils/formatter.ts b/src/utils/formatter.ts
new file mode 100644
index 0000000..942092e
--- /dev/null
+++ b/src/utils/formatter.ts
@@ -0,0 +1,21 @@
+/**
+ * Converts a PasalCase/camelCase string into a human readable string
+ * @param source string The string to convert
+ * @param keepCapitalLetters boolean If capital letters should be kept
+ * @returns string The converted string
+ */
+export const humanCase = (source: string, keepCapitalLetters: boolean = true): string => {
+ if (!source) return '';
+ let transformable = source.trim();
+ transformable =
+ transformable[0].toUpperCase() +
+ transformable
+ .slice(1)
+ .replace(/([A-Z])/g, ' $1')
+ .replace(/\s+/g, ' ');
+ if (keepCapitalLetters) {
+ return transformable;
+ } else {
+ return transformable.toLowerCase();
+ }
+};
\ No newline at end of file
diff --git a/tsconfig.json b/tsconfig.json
new file mode 100644
index 0000000..d9265d5
--- /dev/null
+++ b/tsconfig.json
@@ -0,0 +1,10 @@
+{
+ //"extends": "astro/tsconfigs/strict",
+ "extends": "astro/tsconfigs/base",
+ "include": [".astro/types.d.ts", "**/*"],
+ "exclude": ["dist"],
+ "compilerOptions": {
+ "strictNullChecks": true, // add if using `base` template
+ "allowJs": true // required, and included with all Astro templates
+ }
+}