From 647ed6445dcc36f7c5ea6b22771abd234f0728ba Mon Sep 17 00:00:00 2001 From: asyncapi-bot Date: Mon, 2 Oct 2023 02:26:55 +0200 Subject: [PATCH 001/134] chore: update meetings.json and newsrooom_videos.json (#2192) --- config/meetings.json | 7 ------- 1 file changed, 7 deletions(-) diff --git a/config/meetings.json b/config/meetings.json index 6052eaa9d49..07a41278970 100644 --- a/config/meetings.json +++ b/config/meetings.json @@ -20,13 +20,6 @@ "banner": "https://user-images.githubusercontent.com/40604284/246774505-ba6d0600-d250-43fe-b6f3-5587de26ea01.png", "date": "2023-06-27T08:00:00.000Z" }, - { - "title": "Fran AMA AsyncAPI", - "calLink": "https://www.google.com/calendar/event?eid=N2cxZjlobW0xOW9ocG5rMnVhaDZhbDQ2aGcgY19xOXRzZWlnbG9tZHNqNm5qdWh2YnB0czExY0Bn", - "url": "https://github.com/asyncapi/community/issues/764", - "banner": "", - "date": "2023-06-23T10:00:00.000Z" - }, { "title": "Spec 3.0 Docs Meeting", "calLink": "https://www.google.com/calendar/event?eid=YmhiaTQxNDBicDA0NjgyZmk3M3ZocTJxbGcgY19xOXRzZWlnbG9tZHNqNm5qdWh2YnB0czExY0Bn", From 54a06a94287cc80108b63a502de9b1b1882bd3d2 Mon Sep 17 00:00:00 2001 From: asyncapi-bot Date: Mon, 2 Oct 2023 07:28:30 +0200 Subject: [PATCH 002/134] docs(cli): update latest cli documentation (#2194) --- pages/docs/tools/cli/usage.md | 50 +++++++++++++++++------------------ 1 file changed, 25 insertions(+), 25 deletions(-) diff --git a/pages/docs/tools/cli/usage.md b/pages/docs/tools/cli/usage.md index ec3d0981fd9..85ee1a873c9 100644 --- a/pages/docs/tools/cli/usage.md +++ b/pages/docs/tools/cli/usage.md @@ -29,7 +29,7 @@ $ npm install -g @asyncapi/cli $ asyncapi COMMAND running command... $ asyncapi (--version) -@asyncapi/cli/0.58.0 linux-x64 node-v18.18.0 +@asyncapi/cli/0.58.1 linux-x64 node-v18.18.0 $ asyncapi --help [COMMAND] USAGE $ asyncapi COMMAND @@ -93,7 +93,7 @@ EXAMPLES $ asyncapi bundle ./asyncapi.yaml ./features.yaml --base ./asyncapi.yaml --reference-into-components ``` -_See code: [src/commands/bundle.ts](https://github.com/asyncapi/cli/blob/v0.58.0/src/commands/bundle.ts)_ +_See code: [src/commands/bundle.ts](https://github.com/asyncapi/cli/blob/v0.58.1/src/commands/bundle.ts)_ ## `asyncapi config` @@ -107,7 +107,7 @@ DESCRIPTION CLI config settings ``` -_See code: [src/commands/config/index.ts](https://github.com/asyncapi/cli/blob/v0.58.0/src/commands/config/index.ts)_ +_See code: [src/commands/config/index.ts](https://github.com/asyncapi/cli/blob/v0.58.1/src/commands/config/index.ts)_ ## `asyncapi config context` @@ -121,7 +121,7 @@ DESCRIPTION Manage short aliases for full paths to AsyncAPI documents ``` -_See code: [src/commands/config/context/index.ts](https://github.com/asyncapi/cli/blob/v0.58.0/src/commands/config/context/index.ts)_ +_See code: [src/commands/config/context/index.ts](https://github.com/asyncapi/cli/blob/v0.58.1/src/commands/config/context/index.ts)_ ## `asyncapi config context add CONTEXT-NAME SPEC-FILE-PATH` @@ -143,7 +143,7 @@ DESCRIPTION Add a context to the store ``` -_See code: [src/commands/config/context/add.ts](https://github.com/asyncapi/cli/blob/v0.58.0/src/commands/config/context/add.ts)_ +_See code: [src/commands/config/context/add.ts](https://github.com/asyncapi/cli/blob/v0.58.1/src/commands/config/context/add.ts)_ ## `asyncapi config context current` @@ -160,7 +160,7 @@ DESCRIPTION Shows the current context that is being used ``` -_See code: [src/commands/config/context/current.ts](https://github.com/asyncapi/cli/blob/v0.58.0/src/commands/config/context/current.ts)_ +_See code: [src/commands/config/context/current.ts](https://github.com/asyncapi/cli/blob/v0.58.1/src/commands/config/context/current.ts)_ ## `asyncapi config context edit CONTEXT-NAME NEW-SPEC-FILE-PATH` @@ -181,7 +181,7 @@ DESCRIPTION Edit a context in the store ``` -_See code: [src/commands/config/context/edit.ts](https://github.com/asyncapi/cli/blob/v0.58.0/src/commands/config/context/edit.ts)_ +_See code: [src/commands/config/context/edit.ts](https://github.com/asyncapi/cli/blob/v0.58.1/src/commands/config/context/edit.ts)_ ## `asyncapi config context init [CONTEXT-FILE-PATH]` @@ -204,7 +204,7 @@ DESCRIPTION Initialize context ``` -_See code: [src/commands/config/context/init.ts](https://github.com/asyncapi/cli/blob/v0.58.0/src/commands/config/context/init.ts)_ +_See code: [src/commands/config/context/init.ts](https://github.com/asyncapi/cli/blob/v0.58.1/src/commands/config/context/init.ts)_ ## `asyncapi config context list` @@ -221,7 +221,7 @@ DESCRIPTION List all the stored contexts in the store ``` -_See code: [src/commands/config/context/list.ts](https://github.com/asyncapi/cli/blob/v0.58.0/src/commands/config/context/list.ts)_ +_See code: [src/commands/config/context/list.ts](https://github.com/asyncapi/cli/blob/v0.58.1/src/commands/config/context/list.ts)_ ## `asyncapi config context remove CONTEXT-NAME` @@ -241,7 +241,7 @@ DESCRIPTION Delete a context from the store ``` -_See code: [src/commands/config/context/remove.ts](https://github.com/asyncapi/cli/blob/v0.58.0/src/commands/config/context/remove.ts)_ +_See code: [src/commands/config/context/remove.ts](https://github.com/asyncapi/cli/blob/v0.58.1/src/commands/config/context/remove.ts)_ ## `asyncapi config context use CONTEXT-NAME` @@ -261,7 +261,7 @@ DESCRIPTION Set a context as current ``` -_See code: [src/commands/config/context/use.ts](https://github.com/asyncapi/cli/blob/v0.58.0/src/commands/config/context/use.ts)_ +_See code: [src/commands/config/context/use.ts](https://github.com/asyncapi/cli/blob/v0.58.1/src/commands/config/context/use.ts)_ ## `asyncapi config versions` @@ -278,7 +278,7 @@ DESCRIPTION Show versions of AsyncAPI tools used ``` -_See code: [src/commands/config/versions.ts](https://github.com/asyncapi/cli/blob/v0.58.0/src/commands/config/versions.ts)_ +_See code: [src/commands/config/versions.ts](https://github.com/asyncapi/cli/blob/v0.58.1/src/commands/config/versions.ts)_ ## `asyncapi convert [SPEC-FILE]` @@ -300,7 +300,7 @@ DESCRIPTION Convert asyncapi documents older to newer versions ``` -_See code: [src/commands/convert.ts](https://github.com/asyncapi/cli/blob/v0.58.0/src/commands/convert.ts)_ +_See code: [src/commands/convert.ts](https://github.com/asyncapi/cli/blob/v0.58.1/src/commands/convert.ts)_ ## `asyncapi diff OLD NEW` @@ -355,7 +355,7 @@ DESCRIPTION Find diff between two asyncapi files ``` -_See code: [src/commands/diff.ts](https://github.com/asyncapi/cli/blob/v0.58.0/src/commands/diff.ts)_ +_See code: [src/commands/diff.ts](https://github.com/asyncapi/cli/blob/v0.58.1/src/commands/diff.ts)_ ## `asyncapi generate` @@ -369,7 +369,7 @@ DESCRIPTION Generate typed models or other things like clients, applications or docs using AsyncAPI Generator templates. ``` -_See code: [src/commands/generate/index.ts](https://github.com/asyncapi/cli/blob/v0.58.0/src/commands/generate/index.ts)_ +_See code: [src/commands/generate/index.ts](https://github.com/asyncapi/cli/blob/v0.58.1/src/commands/generate/index.ts)_ ## `asyncapi generate fromTemplate ASYNCAPI TEMPLATE` @@ -406,7 +406,7 @@ EXAMPLES $ asyncapi generate fromTemplate asyncapi.yaml @asyncapi/html-template --param version=1.0.0 singleFile=true --output ./docs --force-write ``` -_See code: [src/commands/generate/fromTemplate.ts](https://github.com/asyncapi/cli/blob/v0.58.0/src/commands/generate/fromTemplate.ts)_ +_See code: [src/commands/generate/fromTemplate.ts](https://github.com/asyncapi/cli/blob/v0.58.1/src/commands/generate/fromTemplate.ts)_ ## `asyncapi generate models LANGUAGE FILE` @@ -480,7 +480,7 @@ DESCRIPTION Generates typed models ``` -_See code: [src/commands/generate/models.ts](https://github.com/asyncapi/cli/blob/v0.58.0/src/commands/generate/models.ts)_ +_See code: [src/commands/generate/models.ts](https://github.com/asyncapi/cli/blob/v0.58.1/src/commands/generate/models.ts)_ ## `asyncapi new` @@ -535,7 +535,7 @@ EXAMPLES $ asyncapi new --file-name=my-asyncapi.yml --example=default-example.yml --no-tty - create a new file with a specific name, using one of the examples and without interactive mode ``` -_See code: [src/commands/new/index.ts](https://github.com/asyncapi/cli/blob/v0.58.0/src/commands/new/index.ts)_ +_See code: [src/commands/new/index.ts](https://github.com/asyncapi/cli/blob/v0.58.1/src/commands/new/index.ts)_ ## `asyncapi new file` @@ -590,7 +590,7 @@ EXAMPLES $ asyncapi new --file-name=my-asyncapi.yml --example=default-example.yml --no-tty - create a new file with a specific name, using one of the examples and without interactive mode ``` -_See code: [src/commands/new/file.ts](https://github.com/asyncapi/cli/blob/v0.58.0/src/commands/new/file.ts)_ +_See code: [src/commands/new/file.ts](https://github.com/asyncapi/cli/blob/v0.58.1/src/commands/new/file.ts)_ ## `asyncapi new glee` @@ -608,7 +608,7 @@ DESCRIPTION Creates a new Glee project ``` -_See code: [src/commands/new/glee.ts](https://github.com/asyncapi/cli/blob/v0.58.0/src/commands/new/glee.ts)_ +_See code: [src/commands/new/glee.ts](https://github.com/asyncapi/cli/blob/v0.58.1/src/commands/new/glee.ts)_ ## `asyncapi new project` @@ -626,7 +626,7 @@ DESCRIPTION Creates a new Glee project ``` -_See code: [src/commands/new/project.ts](https://github.com/asyncapi/cli/blob/v0.58.0/src/commands/new/project.ts)_ +_See code: [src/commands/new/project.ts](https://github.com/asyncapi/cli/blob/v0.58.1/src/commands/new/project.ts)_ ## `asyncapi optimize [SPEC-FILE]` @@ -662,7 +662,7 @@ EXAMPLES $ asyncapi optimize ./asyncapi.yaml --optimization=remove-components,reuse-components,move-to-components --output=terminal --no-tty ``` -_See code: [src/commands/optimize.ts](https://github.com/asyncapi/cli/blob/v0.58.0/src/commands/optimize.ts)_ +_See code: [src/commands/optimize.ts](https://github.com/asyncapi/cli/blob/v0.58.1/src/commands/optimize.ts)_ ## `asyncapi start` @@ -676,7 +676,7 @@ DESCRIPTION Start asyncapi studio ``` -_See code: [src/commands/start/index.ts](https://github.com/asyncapi/cli/blob/v0.58.0/src/commands/start/index.ts)_ +_See code: [src/commands/start/index.ts](https://github.com/asyncapi/cli/blob/v0.58.1/src/commands/start/index.ts)_ ## `asyncapi start studio` @@ -695,7 +695,7 @@ DESCRIPTION starts a new local instance of Studio ``` -_See code: [src/commands/start/studio.ts](https://github.com/asyncapi/cli/blob/v0.58.0/src/commands/start/studio.ts)_ +_See code: [src/commands/start/studio.ts](https://github.com/asyncapi/cli/blob/v0.58.1/src/commands/start/studio.ts)_ ## `asyncapi validate [SPEC-FILE]` @@ -722,5 +722,5 @@ DESCRIPTION validate asyncapi file ``` -_See code: [src/commands/validate.ts](https://github.com/asyncapi/cli/blob/v0.58.0/src/commands/validate.ts)_ +_See code: [src/commands/validate.ts](https://github.com/asyncapi/cli/blob/v0.58.1/src/commands/validate.ts)_ From d602dafe91008b1081418c583f8848e560569819 Mon Sep 17 00:00:00 2001 From: asyncapi-bot Date: Mon, 2 Oct 2023 17:20:29 +0200 Subject: [PATCH 003/134] chore: update tools.json (#2193) Co-authored-by: asyncapi-bot-eve %0ACo-authored-by: asyncapi-bot --- config/all-tags.json | 2 +- config/tools-automated.json | 76 +++++++++++++++++++++++-------------- config/tools.json | 2 +- 3 files changed, 50 insertions(+), 30 deletions(-) diff --git a/config/all-tags.json b/config/all-tags.json index 2bcb64772e6..6cd1a7e47e1 100644 --- a/config/all-tags.json +++ b/config/all-tags.json @@ -1 +1 @@ -{"languages":[{"name":"Go/Golang","color":"bg-[#8ECFDF]","borderColor":"border-[#00AFD9]"},{"name":"Java","color":"bg-[#ECA2A4]","borderColor":"border-[#EC2125]"},{"name":"JavaScript","color":"bg-[#F2F1C7]","borderColor":"border-[#BFBE86]"},{"name":"HTML","color":"bg-[#E2A291]","borderColor":"border-[#E44D26]"},{"name":"C/C++","color":"bg-[#93CDEF]","borderColor":"border-[#0080CC]"},{"name":"C#","color":"bg-[#E3AFE0]","borderColor":"border-[#9B4F96]"},{"name":"Python","color":"bg-[#A8D0EF]","borderColor":"border-[#3878AB]"},{"name":"TypeScript","color":"bg-[#7DBCFE]","borderColor":"border-[#2C78C7]"},{"name":"Kotlin","color":"bg-[#B1ACDF]","borderColor":"border-[#756BD9]"},{"name":"Scala","color":"bg-[#FFA299]","borderColor":"border-[#DF301F]"},{"name":"Markdown","color":"bg-[#BABEBF]","borderColor":"border-[#445B64]"},{"name":"YAML","color":"bg-[#FFB764]","borderColor":"border-[#F1901F]"},{"name":"R","color":"bg-[#84B5ED]","borderColor":"border-[#246BBE]"},{"name":"Ruby","color":"bg-[#FF8289]","borderColor":"border-[#FF000F]"},{"name":"Rust","color":"bg-[#FFB8AA]","borderColor":"border-[#E43716]"},{"name":"Shell","color":"bg-[#87D4FF]","borderColor":"border-[#389ED7]"},{"name":"Groovy","color":"bg-[#B6D5E5]","borderColor":"border-[#609DBC]"}],"technologies":[{"name":"Node.js","color":"bg-[#BDFF67]","borderColor":"border-[#84CE24]"},{"name":"Hermes","color":"bg-[#8AEEBD]","borderColor":"border-[#2AB672]"},{"name":"React JS","color":"bg-[#9FECFA]","borderColor":"border-[#08D8FE]"},{"name":".NET","color":"bg-[#A184FF]","borderColor":"border-[#5026D4]"},{"name":"ASP.NET","color":"bg-[#71C2FB]","borderColor":"border-[#1577BC]"},{"name":"Springboot","color":"bg-[#98E279]","borderColor":"border-[#68BC44]"},{"name":"AWS","color":"bg-[#FF9F59]","borderColor":"border-[#EF6703]"},{"name":"Docker","color":"bg-[#B8E0FF]","borderColor":"border-[#2596ED]"},{"name":"Node-RED","color":"bg-[#FF7474]","borderColor":"border-[#8F0101]"},{"name":"Maven","color":"bg-[#FF6B80]","borderColor":"border-[#CA1A33]"},{"name":"Saas","color":"bg-[#6AB8EC]","borderColor":"border-[#2275AD]"},{"name":"Kubernetes-native","color":"bg-[#D7C7F2]","borderColor":"border-[#A387D2]"},{"name":"Scala","color":"bg-[#D7C7F2]","borderColor":"border-[#A387D2]"},{"name":"Azure","color":"bg-[#4B93FF]","borderColor":"border-[#015ADF]"},{"name":"Jenkins","color":"bg-[#D7C7F2]","borderColor":"border-[#A387D2]"},{"name":"Flask","color":"bg-[#D7C7F2]","borderColor":"border-[#A387D2]"},{"name":"Nest Js","color":"bg-[#E1224E]","borderColor":"border-[#B9012b]"},{"name":"TypeScript","color":"bg-[#61d0f2]","borderColor":"border-[#40ccf7]"},{"name":"Socket.IO","color":"bg-[#61d0f2]","borderColor":"border-[#40ccf7]"},{"name":"Liquid","color":"bg-[#61d0f2]","borderColor":"border-[#40ccf7]"},{"name":"Kotlin","color":"bg-[#61d0f2]","borderColor":"border-[#40ccf7]"},{"name":"Gradle","color":"bg-[#61d0f2]","borderColor":"border-[#40ccf7]"},{"name":"Spring Cloud Streams","color":"bg-[#61d0f2]","borderColor":"border-[#40ccf7]"},{"name":"JHipster JDL","color":"bg-[#61d0f2]","borderColor":"border-[#40ccf7]"},{"name":"Groovy","color":"bg-[#61d0f2]","borderColor":"border-[#40ccf7]"},{"name":"Markdown","color":"bg-[#61d0f2]","borderColor":"border-[#40ccf7]"},{"name":"Shell","color":"bg-[#61d0f2]","borderColor":"border-[#40ccf7]"},{"name":"WebComponents","color":"bg-[#61d0f2]","borderColor":"border-[#40ccf7]"},{"name":"Babel","color":"bg-[#61d0f2]","borderColor":"border-[#40ccf7]"},{"name":"Storybook","color":"bg-[#61d0f2]","borderColor":"border-[#40ccf7]"},{"name":"AsyncAPI Generator","color":"bg-[#61d0f2]","borderColor":"border-[#40ccf7]"},{"name":"JetBrains","color":"bg-[#61d0f2]","borderColor":"border-[#40ccf7]"},{"name":"IntelliJ IDEA","color":"bg-[#61d0f2]","borderColor":"border-[#40ccf7]"},{"name":"VSCode","color":"bg-[#61d0f2]","borderColor":"border-[#40ccf7]"},{"name":"SmartPaste","color":"bg-[#61d0f2]","borderColor":"border-[#40ccf7]"}]} \ No newline at end of file +{"languages":[{"name":"Go/Golang","color":"bg-[#8ECFDF]","borderColor":"border-[#00AFD9]"},{"name":"Java","color":"bg-[#ECA2A4]","borderColor":"border-[#EC2125]"},{"name":"JavaScript","color":"bg-[#F2F1C7]","borderColor":"border-[#BFBE86]"},{"name":"HTML","color":"bg-[#E2A291]","borderColor":"border-[#E44D26]"},{"name":"C/C++","color":"bg-[#93CDEF]","borderColor":"border-[#0080CC]"},{"name":"C#","color":"bg-[#E3AFE0]","borderColor":"border-[#9B4F96]"},{"name":"Python","color":"bg-[#A8D0EF]","borderColor":"border-[#3878AB]"},{"name":"TypeScript","color":"bg-[#7DBCFE]","borderColor":"border-[#2C78C7]"},{"name":"Kotlin","color":"bg-[#B1ACDF]","borderColor":"border-[#756BD9]"},{"name":"Scala","color":"bg-[#FFA299]","borderColor":"border-[#DF301F]"},{"name":"Markdown","color":"bg-[#BABEBF]","borderColor":"border-[#445B64]"},{"name":"YAML","color":"bg-[#FFB764]","borderColor":"border-[#F1901F]"},{"name":"R","color":"bg-[#84B5ED]","borderColor":"border-[#246BBE]"},{"name":"Ruby","color":"bg-[#FF8289]","borderColor":"border-[#FF000F]"},{"name":"Rust","color":"bg-[#FFB8AA]","borderColor":"border-[#E43716]"},{"name":"Shell","color":"bg-[#87D4FF]","borderColor":"border-[#389ED7]"},{"name":"Groovy","color":"bg-[#B6D5E5]","borderColor":"border-[#609DBC]"}],"technologies":[{"name":"Node.js","color":"bg-[#BDFF67]","borderColor":"border-[#84CE24]"},{"name":"Hermes","color":"bg-[#8AEEBD]","borderColor":"border-[#2AB672]"},{"name":"React JS","color":"bg-[#9FECFA]","borderColor":"border-[#08D8FE]"},{"name":".NET","color":"bg-[#A184FF]","borderColor":"border-[#5026D4]"},{"name":"ASP.NET","color":"bg-[#71C2FB]","borderColor":"border-[#1577BC]"},{"name":"Springboot","color":"bg-[#98E279]","borderColor":"border-[#68BC44]"},{"name":"AWS","color":"bg-[#FF9F59]","borderColor":"border-[#EF6703]"},{"name":"Docker","color":"bg-[#B8E0FF]","borderColor":"border-[#2596ED]"},{"name":"Node-RED","color":"bg-[#FF7474]","borderColor":"border-[#8F0101]"},{"name":"Maven","color":"bg-[#FF6B80]","borderColor":"border-[#CA1A33]"},{"name":"Saas","color":"bg-[#6AB8EC]","borderColor":"border-[#2275AD]"},{"name":"Kubernetes-native","color":"bg-[#D7C7F2]","borderColor":"border-[#A387D2]"},{"name":"Scala","color":"bg-[#D7C7F2]","borderColor":"border-[#A387D2]"},{"name":"Azure","color":"bg-[#4B93FF]","borderColor":"border-[#015ADF]"},{"name":"Jenkins","color":"bg-[#D7C7F2]","borderColor":"border-[#A387D2]"},{"name":"Flask","color":"bg-[#D7C7F2]","borderColor":"border-[#A387D2]"},{"name":"Nest Js","color":"bg-[#E1224E]","borderColor":"border-[#B9012b]"},{"name":"TypeScript","color":"bg-[#61d0f2]","borderColor":"border-[#40ccf7]"},{"name":"Socket.IO","color":"bg-[#61d0f2]","borderColor":"border-[#40ccf7]"},{"name":"Liquid","color":"bg-[#61d0f2]","borderColor":"border-[#40ccf7]"},{"name":"Kotlin","color":"bg-[#61d0f2]","borderColor":"border-[#40ccf7]"},{"name":"Gradle","color":"bg-[#61d0f2]","borderColor":"border-[#40ccf7]"},{"name":"Spring Cloud Streams","color":"bg-[#61d0f2]","borderColor":"border-[#40ccf7]"},{"name":"JHipster JDL","color":"bg-[#61d0f2]","borderColor":"border-[#40ccf7]"},{"name":"Groovy","color":"bg-[#61d0f2]","borderColor":"border-[#40ccf7]"},{"name":"Markdown","color":"bg-[#61d0f2]","borderColor":"border-[#40ccf7]"},{"name":"Shell","color":"bg-[#61d0f2]","borderColor":"border-[#40ccf7]"},{"name":"WebComponents","color":"bg-[#61d0f2]","borderColor":"border-[#40ccf7]"},{"name":"Babel","color":"bg-[#61d0f2]","borderColor":"border-[#40ccf7]"},{"name":"Storybook","color":"bg-[#61d0f2]","borderColor":"border-[#40ccf7]"},{"name":"AsyncAPI Generator","color":"bg-[#61d0f2]","borderColor":"border-[#40ccf7]"},{"name":"VSCode","color":"bg-[#61d0f2]","borderColor":"border-[#40ccf7]"},{"name":"SmartPaste","color":"bg-[#61d0f2]","borderColor":"border-[#40ccf7]"},{"name":"JetBrains","color":"bg-[#61d0f2]","borderColor":"border-[#40ccf7]"},{"name":"IntelliJ IDEA","color":"bg-[#61d0f2]","borderColor":"border-[#40ccf7]"}]} \ No newline at end of file diff --git a/config/tools-automated.json b/config/tools-automated.json index e4622788f85..21f8c06b1c4 100644 --- a/config/tools-automated.json +++ b/config/tools-automated.json @@ -117,6 +117,21 @@ "Code Generators": { "description": "The following is a list of tools that generate code from an AsyncAPI document; not the other way around.", "toolsList": [ + { + "title": "Golang AsyncAPI Code Generator", + "description": "Generate Go user and application boilerplate from AsyncAPI specifications. Can be called from `go generate` without requirements.\n", + "links": { + "repoUrl": "https://github.com/lerenn/asyncapi-codegen" + }, + "filters": { + "language": "golang", + "categories": [ + "code-generator" + ], + "hasCommercial": false, + "isAsyncAPIOwner": false + } + }, { "title": "ZenWave SDK", "description": "DDD and API-First for Event-Driven Microservices", @@ -142,21 +157,6 @@ "hasCommercial": false, "isAsyncAPIOwner": false } - }, - { - "title": "Golang AsyncAPI Code Generator", - "description": "Generate Go user and application boilerplate from AsyncAPI specifications. Can be called from `go generate` without requirements.\n", - "links": { - "repoUrl": "https://github.com/lerenn/asyncapi-codegen" - }, - "filters": { - "language": "golang", - "categories": [ - "code-generator" - ], - "hasCommercial": false, - "isAsyncAPIOwner": false - } } ] }, @@ -398,6 +398,26 @@ "Compare tools": { "description": "The following is a list of tools that compare AsyncAPI documents.", "toolsList": [ + { + "title": "jasyncapicmp", + "description": "Tool for comparing two AsyncAPI versions and evaluating compatibility.", + "links": { + "websiteUrl": "https://siom79.github.io/jasyncapicmp/", + "docsUrl": "https://github.com/siom79/jasyncapicmp", + "repoUrl": "https://github.com/siom79/jasyncapicmp" + }, + "filters": { + "language": "Java", + "technology": [ + "Maven" + ], + "categories": [ + "compare-tool" + ], + "hasCommercial": false, + "isAsyncAPIOwner": false + } + }, { "title": "AsyncAPI Diff", "description": "Diff is a library that compares two AsyncAPI Documents and provides information about the differences by pointing out explicitly information like breaking changes.", @@ -495,18 +515,15 @@ "description": "The following is a list of extensions for different IDEs like VSCode, IntelliJ IDEA and others", "toolsList": [ { - "title": "jAsyncAPI - IDEA plugin", - "description": "Idea plugin for the java-asyncapi - Helps to edit and validate AsyncAPI schemas.", + "title": "asyncapi-preview", + "description": "VSCode extension that enables you to:\n - Preview documentation generated using you AsyncAPI document. It uses AsyncAPI React component under the hood,\n - Create AsyncAPI documents faster using SmartPaste functionality\n", "links": { - "websiteUrl": "https://plugins.jetbrains.com/plugin/15673-asyncapi", - "docsUrl": "https://github.com/asyncapi/jasyncapi-idea-plugin#usage", - "repoUrl": "https://github.com/asyncapi/jasyncapi-idea-plugin" + "repoUrl": "https://github.com/asyncapi/vs-asyncapi-preview" }, "filters": { - "language": "Kotlin", "technology": [ - "JetBrains", - "IntelliJ IDEA" + "VSCode", + "SmartPaste" ], "categories": [ "ide-extension" @@ -516,15 +533,18 @@ } }, { - "title": "asyncapi-preview", - "description": "VSCode extension that enables you to:\n - Preview documentation generated using you AsyncAPI document. It uses AsyncAPI React component under the hood,\n - Create AsyncAPI documents faster using SmartPaste functionality\n", + "title": "jAsyncAPI - IDEA plugin", + "description": "Idea plugin for the java-asyncapi - Helps to edit and validate AsyncAPI schemas.", "links": { - "repoUrl": "https://github.com/asyncapi/vs-asyncapi-preview" + "websiteUrl": "https://plugins.jetbrains.com/plugin/15673-asyncapi", + "docsUrl": "https://github.com/asyncapi/jasyncapi-idea-plugin#usage", + "repoUrl": "https://github.com/asyncapi/jasyncapi-idea-plugin" }, "filters": { + "language": "Kotlin", "technology": [ - "VSCode", - "SmartPaste" + "JetBrains", + "IntelliJ IDEA" ], "categories": [ "ide-extension" diff --git a/config/tools.json b/config/tools.json index b581838e79e..74ac5c25c43 100644 --- a/config/tools.json +++ b/config/tools.json @@ -1 +1 @@ -{"APIs":{"description":"The following is a list of APIs that expose functionality related to AsyncAPI.","toolsList":[{"title":"API Tracker - AsyncAPI specs","description":"Explore APIs and companies with public AsyncAPI specifications.","links":{"websiteUrl":"https://apitracker.io/specifications/asyncapi","repoUrl":""},"filters":{"categories":["api","directory"],"hasCommercial":false,"isAsyncAPIOwner":false,"technology":[]}},{"title":"AsyncAPI Server API","description":"Server API providing official AsyncAPI tools","links":{"websiteUrl":"https://api.asyncapi.com/v1","docsUrl":"https://api.asyncapi.com/v1/docs","repoUrl":"https://github.com/asyncapi/server-api"},"filters":{"technology":[{"name":"Node.js","color":"bg-[#BDFF67]","borderColor":"border-[#84CE24]"},{"name":"TypeScript","color":"bg-[#61d0f2]","borderColor":"border-[#40ccf7]"}],"categories":["api"],"hasCommercial":false,"isAsyncAPIOwner":true}},{"title":"AsyncAPI-Directory by APIs.guru","description":"Directory of asynchronous API specifications in AsyncAPI format.","links":{"websiteUrl":"https://apis.guru/asyncapi-directory/","repoUrl":"https://github.com/APIs-guru/asyncapi-directory"},"filters":{"language":[{"name":"JavaScript","color":"bg-[#F2F1C7]","borderColor":"border-[#BFBE86]"}],"technology":[{"name":"Node.js","color":"bg-[#BDFF67]","borderColor":"border-[#84CE24]"},{"name":"Liquid","color":"bg-[#61d0f2]","borderColor":"border-[#40ccf7]"}],"categories":["api","directory"],"hasCommercial":false,"isAsyncAPIOwner":false}},{"title":"SIO-AsyncAPI","description":"This is code-first approach to generate AsyncAPI specification from Socket.IO server.","links":{"websiteUrl":"https://github.com/daler-rahimov/sio-asyncapi","docsUrl":"https://github.com/daler-rahimov/sio-asyncapi","repoUrl":"https://github.com/daler-rahimov/sio-asyncapi"},"filters":{"language":[{"name":"Python","color":"bg-[#A8D0EF]","borderColor":"border-[#3878AB]"}],"technology":[{"name":"Socket.IO","color":"bg-[#61d0f2]","borderColor":"border-[#40ccf7]"},{"name":"Flask","color":"bg-[#D7C7F2]","borderColor":"border-[#A387D2]"}],"categories":["code-first","api"],"hasCommercial":false,"isAsyncAPIOwner":false}}]},"Code-first tools":{"description":"The following is a list of tools that generate AsyncAPI documents from your code.","toolsList":[{"title":"AsyncAPI.Net","description":"The AsyncAPI.NET SDK contains a useful object model for AsyncAPI documents in .NET along with common serializers to extract raw OpenAPI JSON and YAML documents from the model.","links":{"websiteUrl":"https://github.com/LEGO/AsyncAPI.NET/","repoUrl":"https://github.com/LEGO/AsyncAPI.NET"},"filters":{"language":[{"name":"C#","color":"bg-[#E3AFE0]","borderColor":"border-[#9B4F96]"}],"technology":[{"name":".NET","color":"bg-[#A184FF]","borderColor":"border-[#5026D4]"},{"name":"ASP.NET","color":"bg-[#71C2FB]","borderColor":"border-[#1577BC]"}],"categories":["converters","code-first","validator"],"hasCommercial":false,"isAsyncAPIOwner":false}},{"title":"EventBridge Atlas","description":"Tool that translates your AWS EventBridge Schemas into an AsyncAPI document and a web UI.","links":{"websiteUrl":"https://eventbridge-atlas.netlify.app/","repoUrl":"https://github.com/boyney123/eventbridge-atlas"},"filters":{"technology":[{"name":"Node.js","color":"bg-[#BDFF67]","borderColor":"border-[#84CE24]"}],"categories":["code-first"],"hasCommercial":false,"isAsyncAPIOwner":false}},{"title":"Go AsyncAPI","description":"This library helps to create AsyncAPI spec from your Go message structures. It uses reflection to translate Go structures in JSON Schema definitions and arrange them in AsyncAPI schema.","links":{"repoUrl":"https://github.com/swaggest/go-asyncapi"},"filters":{"language":[{"name":"Go/Golang","color":"bg-[#8ECFDF]","borderColor":"border-[#00AFD9]"}],"categories":["code-first"],"hasCommercial":false,"isAsyncAPIOwner":false,"technology":[]}},{"title":"Java AsyncAPI","description":"This tool stores modules, which simplifies interacting with AsyncAPI in jvm ecosystem.","links":{"repoUrl":"https://github.com/asyncapi/jasyncapi"},"filters":{"language":[{"name":"Java","color":"bg-[#ECA2A4]","borderColor":"border-[#EC2125]"}],"technology":[{"name":"Kotlin","color":"bg-[#61d0f2]","borderColor":"border-[#40ccf7]"},{"name":"Maven","color":"bg-[#FF6B80]","borderColor":"border-[#CA1A33]"}],"categories":["code-first"],"hasCommercial":false,"isAsyncAPIOwner":true}},{"title":"KnstEventBus","description":"AsyncApi code-first tools for c#. Generates document and view.","links":{"repoUrl":"https://github.com/d0972058277/KnstEventBus"},"filters":{"language":[{"name":"C#","color":"bg-[#E3AFE0]","borderColor":"border-[#9B4F96]"}],"technology":[{"name":"ASP.NET","color":"bg-[#71C2FB]","borderColor":"border-[#1577BC]"},{"name":".NET","color":"bg-[#A184FF]","borderColor":"border-[#5026D4]"}],"categories":["code-first","documentation-generator"],"hasCommercial":false,"isAsyncAPIOwner":false}},{"title":"Kotlin AsyncAPI","description":"The Kotlin AsyncAPI project aims to provide convenience tools for generating and serving AsyncAPI documentation. The core of this project is a Kotlin DSL for building the specification in a typesafe way.","links":{"repoUrl":"https://github.com/OpenFolder/kotlin-asyncapi"},"filters":{"language":[{"name":"Kotlin","color":"bg-[#B1ACDF]","borderColor":"border-[#756BD9]"}],"technology":[{"name":"Springboot","color":"bg-[#98E279]","borderColor":"border-[#68BC44]"},{"name":"Maven","color":"bg-[#FF6B80]","borderColor":"border-[#CA1A33]"}],"categories":["code-first"],"hasCommercial":false,"isAsyncAPIOwner":false}},{"title":"nestjs-asyncapi","description":"Utilize decorators to generate AsyncAPI document utilizing DTOs (similar to @nestjs/swagger) and a web UI.","links":{"repoUrl":"https://github.com/flamewow/nestjs-asyncapi"},"filters":{"language":[{"name":"TypeScript","color":"bg-[#7DBCFE]","borderColor":"border-[#2C78C7]"}],"technology":[{"name":"Node.js","color":"bg-[#BDFF67]","borderColor":"border-[#84CE24]"},{"name":"Nest Js","color":"bg-[#E1224E]","borderColor":"border-[#B9012b]"}],"categories":["code-first"],"hasCommercial":false,"isAsyncAPIOwner":false}},{"title":"Neuroglia AsyncAPI","description":"A .NET SDK for the Async API specification. Automatically generates and serves AsyncAPI documents based on your code. Includes fluent-builders to create AsyncAPI documents from scratch, and provides a web-based GUI to browse generated documents.","links":{"repoUrl":"https://github.com/neuroglia-io/AsyncApi"},"filters":{"language":[{"name":"C#","color":"bg-[#E3AFE0]","borderColor":"border-[#9B4F96]"}],"technology":[{"name":".NET","color":"bg-[#A184FF]","borderColor":"border-[#5026D4]"}],"categories":["code-first"],"hasCommercial":false,"isAsyncAPIOwner":false}},{"title":"Saunter","description":"Saunter is an AsyncAPI documentation generator for dotnet. Generates (and hosts) an AsyncAPI schema document from your code.","links":{"repoUrl":"https://github.com/tehmantra/saunter"},"filters":{"language":[{"name":"C#","color":"bg-[#E3AFE0]","borderColor":"border-[#9B4F96]"}],"technology":[{"name":".NET","color":"bg-[#A184FF]","borderColor":"border-[#5026D4]"},{"name":"ASP.NET","color":"bg-[#71C2FB]","borderColor":"border-[#1577BC]"}],"categories":["code-first"],"hasCommercial":false,"isAsyncAPIOwner":false}},{"title":"SIO-AsyncAPI","description":"This is code-first approach to generate AsyncAPI specification from Socket.IO server.","links":{"websiteUrl":"https://github.com/daler-rahimov/sio-asyncapi","docsUrl":"https://github.com/daler-rahimov/sio-asyncapi","repoUrl":"https://github.com/daler-rahimov/sio-asyncapi"},"filters":{"language":[{"name":"Python","color":"bg-[#A8D0EF]","borderColor":"border-[#3878AB]"}],"technology":[{"name":"Socket.IO","color":"bg-[#61d0f2]","borderColor":"border-[#40ccf7]"},{"name":"Flask","color":"bg-[#D7C7F2]","borderColor":"border-[#A387D2]"}],"categories":["code-first","api"],"hasCommercial":false,"isAsyncAPIOwner":false}},{"title":"Springwolf","description":"Automated documentation for async APIs built with Spring Boot. Like Springfox for AsyncAPI. Auto-generates an AsyncAPI document and a web UI.","links":{"websiteUrl":"https://www.springwolf.dev","repoUrl":"https://github.com/springwolf/springwolf-core"},"filters":{"language":[{"name":"Java","color":"bg-[#ECA2A4]","borderColor":"border-[#EC2125]"}],"technology":[{"name":"Springboot","color":"bg-[#98E279]","borderColor":"border-[#68BC44]"},{"name":"Gradle","color":"bg-[#61d0f2]","borderColor":"border-[#40ccf7]"}],"categories":["code-first","documentation-generator"],"hasCommercial":false,"isAsyncAPIOwner":false}},{"title":"sttp tapir","description":"Library for describing HTTP endpoints, and then interpreting them as a server, client, or documentation","links":{"websiteUrl":"https://tapir.softwaremill.com/","repoUrl":"https://github.com/softwaremill/tapir"},"filters":{"language":[{"name":"Scala","color":"bg-[#FFA299]","borderColor":"border-[#DF301F]"}],"categories":["code-first"],"hasCommercial":false,"isAsyncAPIOwner":false,"technology":[]}}]},"Code Generators":{"description":"The following is a list of tools that generate code from an AsyncAPI document; not the other way around.","toolsList":[{"title":"AsyncAPI Generator","description":"Generator is a tool that you can use to generate whatever you want basing on the AsyncAPI specification file as an input.","links":{"docsUrl":"https://www.asyncapi.com/docs/tools/generator","repoUrl":"https://github.com/asyncapi/generator"},"filters":{"language":[{"name":"JavaScript","color":"bg-[#F2F1C7]","borderColor":"border-[#BFBE86]"}],"technology":[{"name":"Node.js","color":"bg-[#BDFF67]","borderColor":"border-[#84CE24]"}],"categories":["code-generator","documentation-generator"],"hasCommercial":false,"isAsyncAPIOwner":true}},{"title":"Golang AsyncAPI Code Generator","description":"Generate Go user and application boilerplate from AsyncAPI specifications. Can be called from `go generate` without requirements.\n","links":{"repoUrl":"https://github.com/lerenn/asyncapi-codegen"},"filters":{"language":[{"name":"Go/Golang","color":"bg-[#8ECFDF]","borderColor":"border-[#00AFD9]"}],"categories":["code-generator"],"hasCommercial":false,"isAsyncAPIOwner":false,"technology":[]}},{"title":"MultiAPI Generator","description":"This is a plugin designed to help developers automatizing the creation of code classes from YML files based on AsyncApi and OpenAPI. It is presented in 2 flavours Maven and Gradle","links":{"repoUrl":"https://github.com/sngular/scs-multiapi-plugin"},"filters":{"language":[{"name":"Java","color":"bg-[#ECA2A4]","borderColor":"border-[#EC2125]"}],"technology":[{"name":"Groovy","color":"bg-[#61d0f2]","borderColor":"border-[#40ccf7]"},{"name":"Maven","color":"bg-[#FF6B80]","borderColor":"border-[#CA1A33]"}],"categories":["code-generator"],"hasCommercial":false,"isAsyncAPIOwner":false}},{"title":"Node-RED AsyncAPI plugin","description":"A plugin for generating and configuring nodes for Kafka, MQTT, AMQP, etc. automatically from an AsyncAPI specification.","links":{"repoUrl":"https://github.com/dalelane/node-red-contrib-plugin-asyncapi"},"filters":{"technology":[{"name":"Node-RED","color":"bg-[#FF7474]","borderColor":"border-[#8F0101]"}],"categories":["code-generator"],"hasCommercial":false,"isAsyncAPIOwner":false}},{"title":"ZenWave SDK","description":"DDD and API-First for Event-Driven Microservices","links":{"websiteUrl":"https://zenwave360.github.io/","docsUrl":"https://zenwave360.github.io/zenwave-sdk/plugins/asyncapi-spring-cloud-streams3/","repoUrl":"https://github.com/zenwave360/zenwave-sdk"},"filters":{"language":[{"name":"Java","color":"bg-[#ECA2A4]","borderColor":"border-[#EC2125]"}],"technology":[{"name":"Maven","color":"bg-[#FF6B80]","borderColor":"border-[#CA1A33]"},{"name":"Liquid","color":"bg-[#61d0f2]","borderColor":"border-[#40ccf7]"},{"name":"Spring Cloud Streams","color":"bg-[#61d0f2]","borderColor":"border-[#40ccf7]"},{"name":"JHipster JDL","color":"bg-[#61d0f2]","borderColor":"border-[#40ccf7]"}],"categories":["code-generator","dsl","mocking-and-testing","cli"],"hasCommercial":false,"isAsyncAPIOwner":false}}]},"Converters":{"description":"The following is a list of tools that do not yet belong to any specific category but are also useful for the community.","toolsList":[{"title":"AsyncAPI-format","description":"Format an AsyncAPI document by ordering, casing, formatting, and filtering fields.","links":{"repoUrl":"https://github.com/thim81/asyncapi-format"},"filters":{"language":[{"name":"JavaScript","color":"bg-[#F2F1C7]","borderColor":"border-[#BFBE86]"}],"technology":[{"name":"Node.js","color":"bg-[#BDFF67]","borderColor":"border-[#84CE24]"}],"categories":["converter","cli"],"hasCommercial":false,"isAsyncAPIOwner":false}},{"title":"AsyncAPI.Net","description":"The AsyncAPI.NET SDK contains a useful object model for AsyncAPI documents in .NET along with common serializers to extract raw OpenAPI JSON and YAML documents from the model.","links":{"websiteUrl":"https://github.com/LEGO/AsyncAPI.NET/","repoUrl":"https://github.com/LEGO/AsyncAPI.NET"},"filters":{"language":[{"name":"C#","color":"bg-[#E3AFE0]","borderColor":"border-[#9B4F96]"}],"technology":[{"name":".NET","color":"bg-[#A184FF]","borderColor":"border-[#5026D4]"},{"name":"ASP.NET","color":"bg-[#71C2FB]","borderColor":"border-[#1577BC]"}],"categories":["converters","code-first","validator"],"hasCommercial":false,"isAsyncAPIOwner":false}},{"title":"Converter","description":"Converts old versions of AsyncAPI files into the latest version.","links":{"repoUrl":"https://github.com/asyncapi/converter-js"},"filters":{"language":[{"name":"TypeScript","color":"bg-[#7DBCFE]","borderColor":"border-[#2C78C7]"}],"technology":[{"name":"Node.js","color":"bg-[#BDFF67]","borderColor":"border-[#84CE24]"}],"categories":["converter"],"hasCommercial":false,"isAsyncAPIOwner":true}},{"title":"Converter-Go","description":"The AsyncAPI Converter converts AsyncAPI documents from versions 1.0.0, 1.1.0 and 1.2.0 to version 2.0.0. It supports both json and yaml formats on input and output. By default, the AsyncAPI Converter converts a document into the json format.","links":{"repoUrl":"https://github.com/asyncapi/converter-go"},"filters":{"language":[{"name":"Go/Golang","color":"bg-[#8ECFDF]","borderColor":"border-[#00AFD9]"}],"categories":["converter"],"hasCommercial":false,"isAsyncAPIOwner":true,"technology":[]}}]},"Directories":{"description":"The following is a list of directories that index public AsyncAPI documents.","toolsList":[{"title":"API Tracker - AsyncAPI specs","description":"Explore APIs and companies with public AsyncAPI specifications.","links":{"websiteUrl":"https://apitracker.io/specifications/asyncapi","repoUrl":""},"filters":{"categories":["api","directory"],"hasCommercial":false,"isAsyncAPIOwner":false,"technology":[]}},{"title":"AsyncAPI-Directory by APIs.guru","description":"Directory of asynchronous API specifications in AsyncAPI format.","links":{"websiteUrl":"https://apis.guru/asyncapi-directory/","repoUrl":"https://github.com/APIs-guru/asyncapi-directory"},"filters":{"language":[{"name":"JavaScript","color":"bg-[#F2F1C7]","borderColor":"border-[#BFBE86]"}],"technology":[{"name":"Node.js","color":"bg-[#BDFF67]","borderColor":"border-[#84CE24]"},{"name":"Liquid","color":"bg-[#61d0f2]","borderColor":"border-[#40ccf7]"}],"categories":["api","directory"],"hasCommercial":false,"isAsyncAPIOwner":false}}]},"Documentation Generators":{"description":"The following is a list of tools that generate human-readable documentation from an AsyncAPI document.","toolsList":[{"title":"AsyncAPI Generator","description":"Generator is a tool that you can use to generate whatever you want basing on the AsyncAPI specification file as an input.","links":{"docsUrl":"https://www.asyncapi.com/docs/tools/generator","repoUrl":"https://github.com/asyncapi/generator"},"filters":{"language":[{"name":"JavaScript","color":"bg-[#F2F1C7]","borderColor":"border-[#BFBE86]"}],"technology":[{"name":"Node.js","color":"bg-[#BDFF67]","borderColor":"border-[#84CE24]"},{"name":"Markdown","color":"bg-[#61d0f2]","borderColor":"border-[#40ccf7]"}],"categories":["code-generator","documentation-generator"],"hasCommercial":false,"isAsyncAPIOwner":true}},{"title":"asyncapi-asciidoc-template","description":"Asciidoc template for the asyncapi generator","links":{"repoUrl":"https://gitlab.com/djencks/asyncapi-asciidoc-template"},"filters":{"language":[{"name":"JavaScript","color":"bg-[#F2F1C7]","borderColor":"border-[#BFBE86]"}],"technology":[{"name":"React JS","color":"bg-[#9FECFA]","borderColor":"border-[#08D8FE]"}],"categories":["documentation-generator"],"hasCommercial":false,"isAsyncAPIOwner":false}},{"title":"Bump.sh","description":"OpenAPI 2 & 3 / AsyncAPI 2 documentation generator, with automatic changelog and visual diff.","links":{"websiteUrl":"https://bump.sh/","repoUrl":""},"filters":{"categories":["documentation-generator"],"hasCommercial":true,"isAsyncAPIOwner":false,"technology":[]}},{"title":"Cupid","description":"A library that focuses on finding and analyzing the relationships between AsyncAPI documents. It outputs a map of the system architecture.","links":{"repoUrl":"https://github.com/asyncapi/cupid"},"filters":{"language":[{"name":"JavaScript","color":"bg-[#F2F1C7]","borderColor":"border-[#BFBE86]"}],"technology":[{"name":"Node.js","color":"bg-[#BDFF67]","borderColor":"border-[#84CE24]"}],"categories":["documentation-generator"],"hasCommercial":false,"isAsyncAPIOwner":true}},{"title":"KnstEventBus","description":"AsyncApi code-first tools for c#. Generates document and view.","links":{"repoUrl":"https://github.com/d0972058277/KnstEventBus"},"filters":{"language":[{"name":"C#","color":"bg-[#E3AFE0]","borderColor":"border-[#9B4F96]"}],"technology":[{"name":"ASP.NET","color":"bg-[#71C2FB]","borderColor":"border-[#1577BC]"},{"name":".NET","color":"bg-[#A184FF]","borderColor":"border-[#5026D4]"}],"categories":["code-first","documentation-generator"],"hasCommercial":false,"isAsyncAPIOwner":false}},{"title":"Springwolf","description":"Automated documentation for async APIs built with Spring Boot. Like Springfox for AsyncAPI. Auto-generates an AsyncAPI document and a web UI.","links":{"websiteUrl":"https://www.springwolf.dev","repoUrl":"https://github.com/springwolf/springwolf-core"},"filters":{"language":[{"name":"Java","color":"bg-[#ECA2A4]","borderColor":"border-[#EC2125]"}],"technology":[{"name":"Springboot","color":"bg-[#98E279]","borderColor":"border-[#68BC44]"},{"name":"Gradle","color":"bg-[#61d0f2]","borderColor":"border-[#40ccf7]"}],"categories":["code-first","documentation-generator"],"hasCommercial":false,"isAsyncAPIOwner":false}},{"title":"Widdershins","description":"OpenAPI 3.0 / Swagger 2.0 / AsyncAPI 1.0 definition to Slate / Shins compatible markdown.","links":{"websiteUrl":"https://mermade.github.io/reslate/","repoUrl":"https://github.com/Mermade/widdershins"},"filters":{"language":[{"name":"JavaScript","color":"bg-[#F2F1C7]","borderColor":"border-[#BFBE86]"}],"technology":[{"name":"Node.js","color":"bg-[#BDFF67]","borderColor":"border-[#84CE24]"},{"name":"Shell","color":"bg-[#61d0f2]","borderColor":"border-[#40ccf7]"}],"categories":["documentation-generator"],"hasCommercial":false,"isAsyncAPIOwner":false}}]},"Editors":{"description":"The following is a list of editors or related tools that allow editing of AsyncAPI document.","toolsList":[{"title":"AsyncAPI Studio","description":"Visually design your AsyncAPI files and event-driven architecture.","links":{"websiteUrl":"https://studio.asyncapi.com","repoUrl":"https://github.com/asyncapi/studio"},"filters":{"technology":[{"name":"React JS","color":"bg-[#9FECFA]","borderColor":"border-[#08D8FE]"},{"name":"TypeScript","color":"bg-[#61d0f2]","borderColor":"border-[#40ccf7]"}],"categories":["editor"],"hasCommercial":false,"isAsyncAPIOwner":true}}]},"UI components":{"description":"The following is a list of UI components to view AsyncAPI documents.","toolsList":[{"title":"Api-Diff-Viewer","description":"React component to view the difference between two Json based API documents. Supported specifications: JsonSchema, OpenAPI 3.x, AsyncAPI 2.x.","links":{"repoUrl":"https://github.com/udamir/api-diff-viewer","websiteUrl":"https://api-diff-viewer.vercel.app/"},"filters":{"language":[{"name":"TypeScript","color":"bg-[#7DBCFE]","borderColor":"border-[#2C78C7]"}],"technology":[{"name":"React JS","color":"bg-[#9FECFA]","borderColor":"border-[#08D8FE]"},{"name":"Babel","color":"bg-[#61d0f2]","borderColor":"border-[#40ccf7]"},{"name":"Storybook","color":"bg-[#61d0f2]","borderColor":"border-[#40ccf7]"}],"categories":["ui-component"],"hasCommercial":false,"isAsyncAPIOwner":false}},{"title":"AsyncAPI React component","description":"React component for rendering documentation from your specification in real-time in the browser. It also provides a WebComponent and bundle for Angular and Vue","links":{"repoUrl":"https://github.com/asyncapi/asyncapi-react"},"filters":{"language":[{"name":"TypeScript","color":"bg-[#7DBCFE]","borderColor":"border-[#2C78C7]"}],"technology":[{"name":"React JS","color":"bg-[#9FECFA]","borderColor":"border-[#08D8FE]"},{"name":"WebComponents","color":"bg-[#61d0f2]","borderColor":"border-[#40ccf7]"}],"categories":["ui-component"],"hasCommercial":false,"isAsyncAPIOwner":true}}]},"DSL":{"description":"Writing YAML by hand is no fun, and maybe you don't want a GUI, so use a Domain Specific Language to write AsyncAPI in your language of choice.","toolsList":[{"title":"BOATS","description":"Compile your single AsyncAPI file from multiple YAML files with BOATS and with the help of the template engine Nunjucks, plus a many extra helpers to automate much of the donkey work.","links":{"repoUrl":"https://github.com/j-d-carmichael/boats"},"filters":{"language":[{"name":"TypeScript","color":"bg-[#7DBCFE]","borderColor":"border-[#2C78C7]"}],"technology":[{"name":"Node.js","color":"bg-[#BDFF67]","borderColor":"border-[#84CE24]"}],"categories":["dsl"],"hasCommercial":false,"isAsyncAPIOwner":false}},{"title":"ZenWave SDK","description":"DDD and API-First for Event-Driven Microservices","links":{"websiteUrl":"https://zenwave360.github.io/","docsUrl":"https://zenwave360.github.io/zenwave-sdk/plugins/asyncapi-spring-cloud-streams3/","repoUrl":"https://github.com/zenwave360/zenwave-sdk"},"filters":{"language":[{"name":"Java","color":"bg-[#ECA2A4]","borderColor":"border-[#EC2125]"}],"technology":[{"name":"Maven","color":"bg-[#FF6B80]","borderColor":"border-[#CA1A33]"},{"name":"Liquid","color":"bg-[#61d0f2]","borderColor":"border-[#40ccf7]"},{"name":"Spring Cloud Streams","color":"bg-[#61d0f2]","borderColor":"border-[#40ccf7]"},{"name":"JHipster JDL","color":"bg-[#61d0f2]","borderColor":"border-[#40ccf7]"}],"categories":["code-generator","dsl","mocking-and-testing","cli"],"hasCommercial":false,"isAsyncAPIOwner":false}}]},"Frameworks":{"description":"The following is a list of API/application frameworks that make use of AsyncAPI.","toolsList":[{"title":"Asynction","description":"SocketIO server framework driven by the AsyncAPI specification. Asynction guarantees that your API will work in accordance with its AsyncAPI documentation. Built on top of Flask-SocketIO.","links":{"websiteUrl":"https://pypi.org/project/asynction/","repoUrl":"https://github.com/dedoussis/asynction"},"filters":{"language":[{"name":"Python","color":"bg-[#A8D0EF]","borderColor":"border-[#3878AB]"}],"technology":[{"name":"Flask","color":"bg-[#D7C7F2]","borderColor":"border-[#A387D2]"}],"categories":["framework"],"hasCommercial":false,"isAsyncAPIOwner":false}}]},"GitHub Actions":{"description":"The following is a list of GitHub Actions that you can use in your workflows","toolsList":[{"title":"API documentation generation on Bump.sh","description":"With this GitHub Action you can automatically generate your API reference (with the changelog and diff) on Bump.sh from any AsyncAPI file.","links":{"websiteUrl":"https://github.com/marketplace/actions/api-documentation-on-bump","repoUrl":"https://github.com/bump-sh/github-action"},"filters":{"language":[{"name":"TypeScript","color":"bg-[#7DBCFE]","borderColor":"border-[#2C78C7]"}],"categories":["github-action"],"hasCommercial":false,"isAsyncAPIOwner":false,"technology":[]}},{"title":"AsyncAPI GitHub Action","description":"This action validates if the AsyncAPI schema file is valid or not.","links":{"websiteUrl":"https://github.com/marketplace/actions/asyncapi-github-action","repoUrl":"https://github.com/WaleedAshraf/asyncapi-github-action"},"filters":{"language":[{"name":"JavaScript","color":"bg-[#F2F1C7]","borderColor":"border-[#BFBE86]"}],"technology":[{"name":"Node.js","color":"bg-[#BDFF67]","borderColor":"border-[#84CE24]"}],"categories":["github-action","validator"],"hasCommercial":false,"isAsyncAPIOwner":false}},{"title":"Automated version bump for AsyncAPI documents","description":"With this GitHub Action, you can automatically bump the version based on commit messages, which is similar to what semantic-release is for NPM.","links":{"websiteUrl":"https://github.com/marketplace/actions/automated-version-bump-for-asyncapi","repoUrl":"https://github.com/bump-sh/github-action"},"filters":{"language":[{"name":"JavaScript","color":"bg-[#F2F1C7]","borderColor":"border-[#BFBE86]"}],"technology":[{"name":"Node.js","color":"bg-[#BDFF67]","borderColor":"border-[#84CE24]"}],"categories":["github-action"],"hasCommercial":false,"isAsyncAPIOwner":false}},{"title":"GitHub Action for Generator","description":"GitHub Action to generate all the things from your AsyncAPI document using the AsyncAPI generator","links":{"repoUrl":"https://github.com/asyncapi/github-action-for-generator"},"filters":{"technology":[{"name":"AsyncAPI Generator","color":"bg-[#61d0f2]","borderColor":"border-[#40ccf7]"}],"categories":["github-action"],"hasCommercial":false,"isAsyncAPIOwner":true}},{"title":"GitHub Action for Generator","description":null,"links":{"repoUrl":"https://github.com/actions-marketplace-validations/asyncapi_github-action-for-generator"},"filters":{"technology":[{"name":"AsyncAPI Generator","color":"bg-[#61d0f2]","borderColor":"border-[#40ccf7]"}],"categories":["github-action"],"hasCommercial":false,"isAsyncAPIOwner":false}}]},"Mocking and Testing":{"description":"The tools below take specification documents as input, then publish fake messages to broker destinations for simulation purposes. They may also check that publisher messages are compliant with schemas.","toolsList":[{"title":"Microcks","description":"Mocking and testing platform for API and microservices. Turn your AsyncAPI, OpenAPI contract examples, or Postman collections into ready-to-use mocks. Use examples to simulate and validate received messages according to schema elements.","links":{"websiteUrl":"https://microcks.io/","repoUrl":"https://github.com/microcks/microcks"},"filters":{"language":[{"name":"Java","color":"bg-[#ECA2A4]","borderColor":"border-[#EC2125]"}],"technology":[{"name":"TypeScript","color":"bg-[#61d0f2]","borderColor":"border-[#40ccf7]"},{"name":"Kubernetes-native","color":"bg-[#D7C7F2]","borderColor":"border-[#A387D2]"},{"name":"Saas","color":"bg-[#6AB8EC]","borderColor":"border-[#2275AD]"}],"categories":["mocking-and-testing"],"hasCommercial":false,"isAsyncAPIOwner":false}},{"title":"MultiAPI Converter","description":"Use AsyncAPI definition, to generate Spring Cloud Contract producer validation or consumer stubs, using maven.","links":{"repoUrl":"https://github.com/sngular/scc-multiapi-converter"},"filters":{"language":[{"name":"Java","color":"bg-[#ECA2A4]","borderColor":"border-[#EC2125]"}],"technology":[{"name":"Springboot","color":"bg-[#98E279]","borderColor":"border-[#68BC44]"}],"categories":["mocking-and-testing"],"hasCommercial":false,"isAsyncAPIOwner":false}},{"title":"Specmatic","description":"An API contract testing tool that helps ensure the correctness APIs by automatically generating test cases and verifying them against the API spec. It simplifies the process of testing APIs and reduces the likelihood of bugs and compatibility issues.","links":{"websiteUrl":"https://specmatic.in","docsUrl":"https://specmatic.in/documentation/","repoUrl":"https://github.com/znsio/specmatic"},"filters":{"language":[{"name":"Kotlin","color":"bg-[#B1ACDF]","borderColor":"border-[#756BD9]"}],"technology":[{"name":"Maven","color":"bg-[#FF6B80]","borderColor":"border-[#CA1A33]"}],"categories":["mocking-and-testing"],"hasCommercial":false,"isAsyncAPIOwner":false}},{"title":"Virtualan","description":"Mocking and testing platform for API and microservices. Allows you to create and setup mocks for OpenAPI and AsyncAPI contracts. Shows how to setup and create AsyncAPI GitHub Reference Examples and OpenAPI GitHub Reference Examples.","links":{"websiteUrl":"https://www.virtualan.io/index.html","repoUrl":"https://github.com/virtualansoftware"},"filters":{"technology":[{"name":"Kubernetes-native","color":"bg-[#D7C7F2]","borderColor":"border-[#A387D2]"}],"categories":["mocking-and-testing"],"hasCommercial":false,"isAsyncAPIOwner":false}},{"title":"ZenWave SDK","description":"DDD and API-First for Event-Driven Microservices","links":{"websiteUrl":"https://zenwave360.github.io/","docsUrl":"https://zenwave360.github.io/zenwave-sdk/plugins/asyncapi-spring-cloud-streams3/","repoUrl":"https://github.com/zenwave360/zenwave-sdk"},"filters":{"language":[{"name":"Java","color":"bg-[#ECA2A4]","borderColor":"border-[#EC2125]"}],"technology":[{"name":"Maven","color":"bg-[#FF6B80]","borderColor":"border-[#CA1A33]"},{"name":"Liquid","color":"bg-[#61d0f2]","borderColor":"border-[#40ccf7]"},{"name":"Spring Cloud Streams","color":"bg-[#61d0f2]","borderColor":"border-[#40ccf7]"},{"name":"JHipster JDL","color":"bg-[#61d0f2]","borderColor":"border-[#40ccf7]"}],"categories":["code-generator","dsl","mocking-and-testing","cli"],"hasCommercial":false,"isAsyncAPIOwner":false}}]},"Validators":{"description":"The following is a list of tools that validate AsyncAPI documents.","toolsList":[{"title":"AMF","description":"AMF (AML Modeling Framework) is an open-source library capable of parsing and validating AML metadata documents.","links":{"docsUrl":"https://a.ml/docs/","repoUrl":"https://github.com/aml-org/amf"},"filters":{"language":[{"name":"Scala","color":"bg-[#FFA299]","borderColor":"border-[#DF301F]"}],"categories":["validator"],"hasCommercial":false,"isAsyncAPIOwner":false,"technology":[]}},{"title":"AsyncAPI GitHub Action","description":"This action validates if the AsyncAPI schema file is valid or not.","links":{"websiteUrl":"https://github.com/marketplace/actions/asyncapi-github-action","repoUrl":"https://github.com/WaleedAshraf/asyncapi-github-action"},"filters":{"language":[{"name":"JavaScript","color":"bg-[#F2F1C7]","borderColor":"border-[#BFBE86]"}],"technology":[{"name":"Node.js","color":"bg-[#BDFF67]","borderColor":"border-[#84CE24]"}],"categories":["github-action","validator"],"hasCommercial":false,"isAsyncAPIOwner":false}},{"title":"AsyncAPI Parser","description":"Use this package to parse and validate AsyncAPI documents —either YAML or JSON— in your Node.js or browser application. Updated bundle for the browser is always attached to the GitHub Release.","links":{"repoUrl":"https://github.com/asyncapi/parser-js"},"filters":{"language":[{"name":"JavaScript","color":"bg-[#F2F1C7]","borderColor":"border-[#BFBE86]"}],"technology":[{"name":"Node.js","color":"bg-[#BDFF67]","borderColor":"border-[#84CE24]"}],"categories":["validator"],"hasCommercial":false,"isAsyncAPIOwner":true}},{"title":"AsyncAPI Parser","description":"The AsyncAPI Parser validates AsyncAPI documents according to dedicated schemas.","links":{"repoUrl":"https://github.com/asyncapi/parser-go"},"filters":{"language":[{"name":"Go/Golang","color":"bg-[#8ECFDF]","borderColor":"border-[#00AFD9]"}],"categories":["validator"],"hasCommercial":false,"isAsyncAPIOwner":true,"technology":[]}},{"title":"AsyncAPI Parser Wrapper","description":"Use this library to parse and validate AsyncAPI documents — either YAML or JSON — in your Java application. It is a Java wrapper over JavaScript Parser implemented using J2V8.","links":{"repoUrl":"https://github.com/AsyncAPITools/parser-java-wrapper"},"filters":{"language":[{"name":"Java","color":"bg-[#ECA2A4]","borderColor":"border-[#EC2125]"}],"categories":["validator"],"hasCommercial":false,"isAsyncAPIOwner":false,"technology":[]}},{"title":"asyncapi-validator","description":"It allows you to validate the schema of your messages against your AsyncAPI schema definition. You can use it with Kafka, RabbitMQ or any other messaging/queue.","links":{"repoUrl":"https://github.com/WaleedAshraf/asyncapi-validator"},"filters":{"language":[{"name":"JavaScript","color":"bg-[#F2F1C7]","borderColor":"border-[#BFBE86]"}],"technology":[{"name":"Node.js","color":"bg-[#BDFF67]","borderColor":"border-[#84CE24]"}],"categories":["validator"],"hasCommercial":false,"isAsyncAPIOwner":false}},{"title":"AsyncAPI.Net","description":"The AsyncAPI.NET SDK contains a useful object model for AsyncAPI documents in .NET along with common serializers to extract raw OpenAPI JSON and YAML documents from the model.","links":{"websiteUrl":"https://github.com/LEGO/AsyncAPI.NET/","repoUrl":"https://github.com/LEGO/AsyncAPI.NET"},"filters":{"language":[{"name":"C#","color":"bg-[#E3AFE0]","borderColor":"border-[#9B4F96]"}],"technology":[{"name":".NET","color":"bg-[#A184FF]","borderColor":"border-[#5026D4]"},{"name":"ASP.NET","color":"bg-[#71C2FB]","borderColor":"border-[#1577BC]"}],"categories":["converters","code-first","validator"],"hasCommercial":false,"isAsyncAPIOwner":false}},{"title":"Spectral","description":"A flexible JSON/YAML linter for creating automated style guides, with baked in support for OpenAPI v3.1, v3.0, and v2.0 as well as AsyncAPI v2.x.","links":{"repoUrl":"https://github.com/stoplightio/spectral"},"filters":{"language":[{"name":"TypeScript","color":"bg-[#7DBCFE]","borderColor":"border-[#2C78C7]"}],"technology":[{"name":"Node.js","color":"bg-[#BDFF67]","borderColor":"border-[#84CE24]"}],"categories":["validator"],"hasCommercial":false,"isAsyncAPIOwner":false}}]},"Compare tools":{"description":"The following is a list of tools that compare AsyncAPI documents.","toolsList":[{"title":"Api-Smart-Diff","description":"It allows you to compare two API documents and classify changes. Supported API specifications: OpenAPI, AsyncAPI, JsonSchema.","links":{"repoUrl":"https://github.com/udamir/api-smart-diff"},"filters":{"language":[{"name":"TypeScript","color":"bg-[#7DBCFE]","borderColor":"border-[#2C78C7]"}],"categories":["compare-tool"],"hasCommercial":false,"isAsyncAPIOwner":false,"technology":[]}},{"title":"AsyncAPI Diff","description":"Diff is a library that compares two AsyncAPI Documents and provides information about the differences by pointing out explicitly information like breaking changes.","links":{"repoUrl":"https://github.com/asyncapi/diff"},"filters":{"language":[{"name":"TypeScript","color":"bg-[#7DBCFE]","borderColor":"border-[#2C78C7]"}],"technology":[{"name":"TypeScript","color":"bg-[#61d0f2]","borderColor":"border-[#40ccf7]"}],"categories":["compare-tool"],"hasCommercial":false,"isAsyncAPIOwner":true}},{"title":"jasyncapicmp","description":"Tool/library/maven-plugin for comparing two AsyncAPI versions and evaluating compatibility.","links":{"websiteUrl":"https://siom79.github.io/jasyncapicmp/","repoUrl":"https://github.com/siom79/jasyncapicmp"},"filters":{"language":[{"name":"Java","color":"bg-[#ECA2A4]","borderColor":"border-[#EC2125]"}],"technology":[{"name":"Maven","color":"bg-[#FF6B80]","borderColor":"border-[#CA1A33]"}],"categories":["compare-tool"],"hasCommercial":false,"isAsyncAPIOwner":false}}]},"CLIs":{"description":"The following is a list of tools that you can work with in terminal or do some CI/CD automation.","toolsList":[{"title":"AsyncAPI CLI","description":"One CLI to rule them all. \nThis is a CLI that aims to integrate all AsyncAPI tools that you need while AsyncAPI document development and maintainance. \nYou can use it to generate docs or code, validate AsyncAPI document and event create new documents.\n","links":{"websiteUrl":"https://www.asyncapi.com/tools/cli","repoUrl":"https://github.com/asyncapi/cli"},"filters":{"technology":[{"name":"TypeScript","color":"bg-[#61d0f2]","borderColor":"border-[#40ccf7]"}],"categories":["others","cli"],"hasCommercial":false,"isAsyncAPIOwner":true}},{"title":"AsyncAPI-format","description":"Format an AsyncAPI document by ordering, casing, formatting, and filtering fields.","links":{"repoUrl":"https://github.com/asyncapi/converter-go"},"filters":{"language":[{"name":"JavaScript","color":"bg-[#F2F1C7]","borderColor":"border-[#BFBE86]"}],"technology":[{"name":"Node.js","color":"bg-[#BDFF67]","borderColor":"border-[#84CE24]"}],"categories":["converter","cli"],"hasCommercial":false,"isAsyncAPIOwner":true}},{"title":"ZenWave SDK","description":"DDD and API-First for Event-Driven Microservices","links":{"websiteUrl":"https://zenwave360.github.io/","docsUrl":"https://zenwave360.github.io/zenwave-sdk/plugins/asyncapi-spring-cloud-streams3/","repoUrl":"https://github.com/zenwave360/zenwave-sdk"},"filters":{"language":[{"name":"Java","color":"bg-[#ECA2A4]","borderColor":"border-[#EC2125]"}],"technology":[{"name":"Maven","color":"bg-[#FF6B80]","borderColor":"border-[#CA1A33]"},{"name":"Liquid","color":"bg-[#61d0f2]","borderColor":"border-[#40ccf7]"},{"name":"Spring Cloud Streams","color":"bg-[#61d0f2]","borderColor":"border-[#40ccf7]"},{"name":"JHipster JDL","color":"bg-[#61d0f2]","borderColor":"border-[#40ccf7]"}],"categories":["code-generator","dsl","mocking-and-testing","cli"],"hasCommercial":false,"isAsyncAPIOwner":false}}]},"Bundlers":{"description":"The following is a list of tools that you can work with to bundle AsyncAPI documents.","toolsList":[{"title":"Api-ref-bundler","description":"It allows you bundle/dereference external/internal $refs in Json based API document. Supported specifications: OpenAPI, AsyncAPI, JsonSchema.","links":{"repoUrl":"https://github.com/udamir/api-ref-bundler"},"filters":{"language":[{"name":"TypeScript","color":"bg-[#7DBCFE]","borderColor":"border-[#2C78C7]"}],"technology":[{"name":"TypeScript","color":"bg-[#61d0f2]","borderColor":"border-[#40ccf7]"}],"categories":["bundler"],"hasCommercial":false,"isAsyncAPIOwner":false}},{"title":"AsyncAPI Bundler","description":"Combine multiple AsyncAPI specification files into one.","links":{"repoUrl":"https://github.com/asyncapi/bundler"},"filters":{"language":[{"name":"TypeScript","color":"bg-[#7DBCFE]","borderColor":"border-[#2C78C7]"}],"technology":[{"name":"TypeScript","color":"bg-[#61d0f2]","borderColor":"border-[#40ccf7]"}],"categories":["bundler"],"hasCommercial":false,"isAsyncAPIOwner":true}}]},"IDE Extensions":{"description":"The following is a list of extensions for different IDEs like VSCode, IntelliJ IDEA and others","toolsList":[{"title":"asyncapi-preview","description":"VSCode extension that enables you to:\n - Preview documentation generated using you AsyncAPI document. It uses AsyncAPI React component under the hood,\n - Create AsyncAPI documents faster using SmartPaste functionality\n","links":{"repoUrl":"https://github.com/asyncapi/vs-asyncapi-preview"},"filters":{"technology":[{"name":"VSCode","color":"bg-[#61d0f2]","borderColor":"border-[#40ccf7]"},{"name":"SmartPaste","color":"bg-[#61d0f2]","borderColor":"border-[#40ccf7]"}],"categories":["ide-extension"],"hasCommercial":false,"isAsyncAPIOwner":true}},{"title":"asyncapi-preview","description":"VSCode extension that enables you to:\n - Preview documentation generated using you AsyncAPI document. It uses AsyncAPI React component under the hood,\n - Create AsyncAPI documents faster using SmartPaste functionality\n","links":{"repoUrl":"https://github.com/Savio629/testing2"},"filters":{"technology":[{"name":"VSCode","color":"bg-[#61d0f2]","borderColor":"border-[#40ccf7]"},{"name":"SmartPaste","color":"bg-[#61d0f2]","borderColor":"border-[#40ccf7]"}],"categories":["ide-extension"],"hasCommercial":false,"isAsyncAPIOwner":false}},{"title":"jAsyncAPI - IDEA plugin","description":"Idea plugin for the java-asyncapi - Helps to edit and validate AsyncAPI schemas.","links":{"websiteUrl":"https://plugins.jetbrains.com/plugin/15673-asyncapi","docsUrl":"https://github.com/asyncapi/jasyncapi-idea-plugin#usage","repoUrl":"https://github.com/asyncapi/jasyncapi-idea-plugin"},"filters":{"language":[{"name":"Kotlin","color":"bg-[#B1ACDF]","borderColor":"border-[#756BD9]"}],"technology":[{"name":"JetBrains","color":"bg-[#61d0f2]","borderColor":"border-[#40ccf7]"},{"name":"IntelliJ IDEA","color":"bg-[#61d0f2]","borderColor":"border-[#40ccf7]"}],"categories":["ide-extension"],"hasCommercial":false,"isAsyncAPIOwner":true}}]},"Others":{"description":"The following is a list of tools that comes under Other category.","toolsList":[{"title":"AsyncAPI CLI","description":"One CLI to rule them all. \nThis is a CLI that aims to integrate all AsyncAPI tools that you need while AsyncAPI document development and maintainance. \nYou can use it to generate docs or code, validate AsyncAPI document and event create new documents.\n","links":{"websiteUrl":"https://www.asyncapi.com/tools/cli","repoUrl":"https://github.com/asyncapi/cli"},"filters":{"technology":[{"name":"TypeScript","color":"bg-[#61d0f2]","borderColor":"border-[#40ccf7]"}],"categories":["others","cli"],"hasCommercial":false,"isAsyncAPIOwner":true}}]}} \ No newline at end of file +{"APIs":{"description":"The following is a list of APIs that expose functionality related to AsyncAPI.","toolsList":[{"title":"API Tracker - AsyncAPI specs","description":"Explore APIs and companies with public AsyncAPI specifications.","links":{"websiteUrl":"https://apitracker.io/specifications/asyncapi","repoUrl":""},"filters":{"categories":["api","directory"],"hasCommercial":false,"isAsyncAPIOwner":false,"technology":[]}},{"title":"AsyncAPI Server API","description":"Server API providing official AsyncAPI tools","links":{"websiteUrl":"https://api.asyncapi.com/v1","docsUrl":"https://api.asyncapi.com/v1/docs","repoUrl":"https://github.com/asyncapi/server-api"},"filters":{"technology":[{"name":"Node.js","color":"bg-[#BDFF67]","borderColor":"border-[#84CE24]"},{"name":"TypeScript","color":"bg-[#61d0f2]","borderColor":"border-[#40ccf7]"}],"categories":["api"],"hasCommercial":false,"isAsyncAPIOwner":true}},{"title":"AsyncAPI-Directory by APIs.guru","description":"Directory of asynchronous API specifications in AsyncAPI format.","links":{"websiteUrl":"https://apis.guru/asyncapi-directory/","repoUrl":"https://github.com/APIs-guru/asyncapi-directory"},"filters":{"language":[{"name":"JavaScript","color":"bg-[#F2F1C7]","borderColor":"border-[#BFBE86]"}],"technology":[{"name":"Node.js","color":"bg-[#BDFF67]","borderColor":"border-[#84CE24]"},{"name":"Liquid","color":"bg-[#61d0f2]","borderColor":"border-[#40ccf7]"}],"categories":["api","directory"],"hasCommercial":false,"isAsyncAPIOwner":false}},{"title":"SIO-AsyncAPI","description":"This is code-first approach to generate AsyncAPI specification from Socket.IO server.","links":{"websiteUrl":"https://github.com/daler-rahimov/sio-asyncapi","docsUrl":"https://github.com/daler-rahimov/sio-asyncapi","repoUrl":"https://github.com/daler-rahimov/sio-asyncapi"},"filters":{"language":[{"name":"Python","color":"bg-[#A8D0EF]","borderColor":"border-[#3878AB]"}],"technology":[{"name":"Socket.IO","color":"bg-[#61d0f2]","borderColor":"border-[#40ccf7]"},{"name":"Flask","color":"bg-[#D7C7F2]","borderColor":"border-[#A387D2]"}],"categories":["code-first","api"],"hasCommercial":false,"isAsyncAPIOwner":false}}]},"Code-first tools":{"description":"The following is a list of tools that generate AsyncAPI documents from your code.","toolsList":[{"title":"AsyncAPI.Net","description":"The AsyncAPI.NET SDK contains a useful object model for AsyncAPI documents in .NET along with common serializers to extract raw OpenAPI JSON and YAML documents from the model.","links":{"websiteUrl":"https://github.com/LEGO/AsyncAPI.NET/","repoUrl":"https://github.com/LEGO/AsyncAPI.NET"},"filters":{"language":[{"name":"C#","color":"bg-[#E3AFE0]","borderColor":"border-[#9B4F96]"}],"technology":[{"name":".NET","color":"bg-[#A184FF]","borderColor":"border-[#5026D4]"},{"name":"ASP.NET","color":"bg-[#71C2FB]","borderColor":"border-[#1577BC]"}],"categories":["converters","code-first","validator"],"hasCommercial":false,"isAsyncAPIOwner":false}},{"title":"EventBridge Atlas","description":"Tool that translates your AWS EventBridge Schemas into an AsyncAPI document and a web UI.","links":{"websiteUrl":"https://eventbridge-atlas.netlify.app/","repoUrl":"https://github.com/boyney123/eventbridge-atlas"},"filters":{"technology":[{"name":"Node.js","color":"bg-[#BDFF67]","borderColor":"border-[#84CE24]"}],"categories":["code-first"],"hasCommercial":false,"isAsyncAPIOwner":false}},{"title":"Go AsyncAPI","description":"This library helps to create AsyncAPI spec from your Go message structures. It uses reflection to translate Go structures in JSON Schema definitions and arrange them in AsyncAPI schema.","links":{"repoUrl":"https://github.com/swaggest/go-asyncapi"},"filters":{"language":[{"name":"Go/Golang","color":"bg-[#8ECFDF]","borderColor":"border-[#00AFD9]"}],"categories":["code-first"],"hasCommercial":false,"isAsyncAPIOwner":false,"technology":[]}},{"title":"Java AsyncAPI","description":"This tool stores modules, which simplifies interacting with AsyncAPI in jvm ecosystem.","links":{"repoUrl":"https://github.com/asyncapi/jasyncapi"},"filters":{"language":[{"name":"Java","color":"bg-[#ECA2A4]","borderColor":"border-[#EC2125]"}],"technology":[{"name":"Kotlin","color":"bg-[#61d0f2]","borderColor":"border-[#40ccf7]"},{"name":"Maven","color":"bg-[#FF6B80]","borderColor":"border-[#CA1A33]"}],"categories":["code-first"],"hasCommercial":false,"isAsyncAPIOwner":true}},{"title":"KnstEventBus","description":"AsyncApi code-first tools for c#. Generates document and view.","links":{"repoUrl":"https://github.com/d0972058277/KnstEventBus"},"filters":{"language":[{"name":"C#","color":"bg-[#E3AFE0]","borderColor":"border-[#9B4F96]"}],"technology":[{"name":"ASP.NET","color":"bg-[#71C2FB]","borderColor":"border-[#1577BC]"},{"name":".NET","color":"bg-[#A184FF]","borderColor":"border-[#5026D4]"}],"categories":["code-first","documentation-generator"],"hasCommercial":false,"isAsyncAPIOwner":false}},{"title":"Kotlin AsyncAPI","description":"The Kotlin AsyncAPI project aims to provide convenience tools for generating and serving AsyncAPI documentation. The core of this project is a Kotlin DSL for building the specification in a typesafe way.","links":{"repoUrl":"https://github.com/OpenFolder/kotlin-asyncapi"},"filters":{"language":[{"name":"Kotlin","color":"bg-[#B1ACDF]","borderColor":"border-[#756BD9]"}],"technology":[{"name":"Springboot","color":"bg-[#98E279]","borderColor":"border-[#68BC44]"},{"name":"Maven","color":"bg-[#FF6B80]","borderColor":"border-[#CA1A33]"}],"categories":["code-first"],"hasCommercial":false,"isAsyncAPIOwner":false}},{"title":"nestjs-asyncapi","description":"Utilize decorators to generate AsyncAPI document utilizing DTOs (similar to @nestjs/swagger) and a web UI.","links":{"repoUrl":"https://github.com/flamewow/nestjs-asyncapi"},"filters":{"language":[{"name":"TypeScript","color":"bg-[#7DBCFE]","borderColor":"border-[#2C78C7]"}],"technology":[{"name":"Node.js","color":"bg-[#BDFF67]","borderColor":"border-[#84CE24]"},{"name":"Nest Js","color":"bg-[#E1224E]","borderColor":"border-[#B9012b]"}],"categories":["code-first"],"hasCommercial":false,"isAsyncAPIOwner":false}},{"title":"Neuroglia AsyncAPI","description":"A .NET SDK for the Async API specification. Automatically generates and serves AsyncAPI documents based on your code. Includes fluent-builders to create AsyncAPI documents from scratch, and provides a web-based GUI to browse generated documents.","links":{"repoUrl":"https://github.com/neuroglia-io/AsyncApi"},"filters":{"language":[{"name":"C#","color":"bg-[#E3AFE0]","borderColor":"border-[#9B4F96]"}],"technology":[{"name":".NET","color":"bg-[#A184FF]","borderColor":"border-[#5026D4]"}],"categories":["code-first"],"hasCommercial":false,"isAsyncAPIOwner":false}},{"title":"Saunter","description":"Saunter is an AsyncAPI documentation generator for dotnet. Generates (and hosts) an AsyncAPI schema document from your code.","links":{"repoUrl":"https://github.com/tehmantra/saunter"},"filters":{"language":[{"name":"C#","color":"bg-[#E3AFE0]","borderColor":"border-[#9B4F96]"}],"technology":[{"name":".NET","color":"bg-[#A184FF]","borderColor":"border-[#5026D4]"},{"name":"ASP.NET","color":"bg-[#71C2FB]","borderColor":"border-[#1577BC]"}],"categories":["code-first"],"hasCommercial":false,"isAsyncAPIOwner":false}},{"title":"SIO-AsyncAPI","description":"This is code-first approach to generate AsyncAPI specification from Socket.IO server.","links":{"websiteUrl":"https://github.com/daler-rahimov/sio-asyncapi","docsUrl":"https://github.com/daler-rahimov/sio-asyncapi","repoUrl":"https://github.com/daler-rahimov/sio-asyncapi"},"filters":{"language":[{"name":"Python","color":"bg-[#A8D0EF]","borderColor":"border-[#3878AB]"}],"technology":[{"name":"Socket.IO","color":"bg-[#61d0f2]","borderColor":"border-[#40ccf7]"},{"name":"Flask","color":"bg-[#D7C7F2]","borderColor":"border-[#A387D2]"}],"categories":["code-first","api"],"hasCommercial":false,"isAsyncAPIOwner":false}},{"title":"Springwolf","description":"Automated documentation for async APIs built with Spring Boot. Like Springfox for AsyncAPI. Auto-generates an AsyncAPI document and a web UI.","links":{"websiteUrl":"https://www.springwolf.dev","repoUrl":"https://github.com/springwolf/springwolf-core"},"filters":{"language":[{"name":"Java","color":"bg-[#ECA2A4]","borderColor":"border-[#EC2125]"}],"technology":[{"name":"Springboot","color":"bg-[#98E279]","borderColor":"border-[#68BC44]"},{"name":"Gradle","color":"bg-[#61d0f2]","borderColor":"border-[#40ccf7]"}],"categories":["code-first","documentation-generator"],"hasCommercial":false,"isAsyncAPIOwner":false}},{"title":"sttp tapir","description":"Library for describing HTTP endpoints, and then interpreting them as a server, client, or documentation","links":{"websiteUrl":"https://tapir.softwaremill.com/","repoUrl":"https://github.com/softwaremill/tapir"},"filters":{"language":[{"name":"Scala","color":"bg-[#FFA299]","borderColor":"border-[#DF301F]"}],"categories":["code-first"],"hasCommercial":false,"isAsyncAPIOwner":false,"technology":[]}}]},"Code Generators":{"description":"The following is a list of tools that generate code from an AsyncAPI document; not the other way around.","toolsList":[{"title":"AsyncAPI Generator","description":"Generator is a tool that you can use to generate whatever you want basing on the AsyncAPI specification file as an input.","links":{"docsUrl":"https://www.asyncapi.com/docs/tools/generator","repoUrl":"https://github.com/asyncapi/generator"},"filters":{"language":[{"name":"JavaScript","color":"bg-[#F2F1C7]","borderColor":"border-[#BFBE86]"}],"technology":[{"name":"Node.js","color":"bg-[#BDFF67]","borderColor":"border-[#84CE24]"}],"categories":["code-generator","documentation-generator"],"hasCommercial":false,"isAsyncAPIOwner":true}},{"title":"Golang AsyncAPI Code Generator","description":"Generate Go user and application boilerplate from AsyncAPI specifications. Can be called from `go generate` without requirements.\n","links":{"repoUrl":"https://github.com/lerenn/asyncapi-codegen"},"filters":{"language":[{"name":"Go/Golang","color":"bg-[#8ECFDF]","borderColor":"border-[#00AFD9]"}],"categories":["code-generator"],"hasCommercial":false,"isAsyncAPIOwner":false,"technology":[]}},{"title":"MultiAPI Generator","description":"This is a plugin designed to help developers automatizing the creation of code classes from YML files based on AsyncApi and OpenAPI. It is presented in 2 flavours Maven and Gradle","links":{"repoUrl":"https://github.com/sngular/scs-multiapi-plugin"},"filters":{"language":[{"name":"Java","color":"bg-[#ECA2A4]","borderColor":"border-[#EC2125]"}],"technology":[{"name":"Groovy","color":"bg-[#61d0f2]","borderColor":"border-[#40ccf7]"},{"name":"Maven","color":"bg-[#FF6B80]","borderColor":"border-[#CA1A33]"}],"categories":["code-generator"],"hasCommercial":false,"isAsyncAPIOwner":false}},{"title":"Node-RED AsyncAPI plugin","description":"A plugin for generating and configuring nodes for Kafka, MQTT, AMQP, etc. automatically from an AsyncAPI specification.","links":{"repoUrl":"https://github.com/dalelane/node-red-contrib-plugin-asyncapi"},"filters":{"technology":[{"name":"Node-RED","color":"bg-[#FF7474]","borderColor":"border-[#8F0101]"}],"categories":["code-generator"],"hasCommercial":false,"isAsyncAPIOwner":false}},{"title":"ZenWave SDK","description":"DDD and API-First for Event-Driven Microservices","links":{"websiteUrl":"https://zenwave360.github.io/","docsUrl":"https://zenwave360.github.io/zenwave-sdk/plugins/asyncapi-spring-cloud-streams3/","repoUrl":"https://github.com/zenwave360/zenwave-sdk"},"filters":{"language":[{"name":"Java","color":"bg-[#ECA2A4]","borderColor":"border-[#EC2125]"}],"technology":[{"name":"Maven","color":"bg-[#FF6B80]","borderColor":"border-[#CA1A33]"},{"name":"Liquid","color":"bg-[#61d0f2]","borderColor":"border-[#40ccf7]"},{"name":"Spring Cloud Streams","color":"bg-[#61d0f2]","borderColor":"border-[#40ccf7]"},{"name":"JHipster JDL","color":"bg-[#61d0f2]","borderColor":"border-[#40ccf7]"}],"categories":["code-generator","dsl","mocking-and-testing","cli"],"hasCommercial":false,"isAsyncAPIOwner":false}}]},"Converters":{"description":"The following is a list of tools that do not yet belong to any specific category but are also useful for the community.","toolsList":[{"title":"AsyncAPI-format","description":"Format an AsyncAPI document by ordering, casing, formatting, and filtering fields.","links":{"repoUrl":"https://github.com/thim81/asyncapi-format"},"filters":{"language":[{"name":"JavaScript","color":"bg-[#F2F1C7]","borderColor":"border-[#BFBE86]"}],"technology":[{"name":"Node.js","color":"bg-[#BDFF67]","borderColor":"border-[#84CE24]"}],"categories":["converter","cli"],"hasCommercial":false,"isAsyncAPIOwner":false}},{"title":"AsyncAPI.Net","description":"The AsyncAPI.NET SDK contains a useful object model for AsyncAPI documents in .NET along with common serializers to extract raw OpenAPI JSON and YAML documents from the model.","links":{"websiteUrl":"https://github.com/LEGO/AsyncAPI.NET/","repoUrl":"https://github.com/LEGO/AsyncAPI.NET"},"filters":{"language":[{"name":"C#","color":"bg-[#E3AFE0]","borderColor":"border-[#9B4F96]"}],"technology":[{"name":".NET","color":"bg-[#A184FF]","borderColor":"border-[#5026D4]"},{"name":"ASP.NET","color":"bg-[#71C2FB]","borderColor":"border-[#1577BC]"}],"categories":["converters","code-first","validator"],"hasCommercial":false,"isAsyncAPIOwner":false}},{"title":"Converter","description":"Converts old versions of AsyncAPI files into the latest version.","links":{"repoUrl":"https://github.com/asyncapi/converter-js"},"filters":{"language":[{"name":"TypeScript","color":"bg-[#7DBCFE]","borderColor":"border-[#2C78C7]"}],"technology":[{"name":"Node.js","color":"bg-[#BDFF67]","borderColor":"border-[#84CE24]"}],"categories":["converter"],"hasCommercial":false,"isAsyncAPIOwner":true}},{"title":"Converter-Go","description":"The AsyncAPI Converter converts AsyncAPI documents from versions 1.0.0, 1.1.0 and 1.2.0 to version 2.0.0. It supports both json and yaml formats on input and output. By default, the AsyncAPI Converter converts a document into the json format.","links":{"repoUrl":"https://github.com/asyncapi/converter-go"},"filters":{"language":[{"name":"Go/Golang","color":"bg-[#8ECFDF]","borderColor":"border-[#00AFD9]"}],"categories":["converter"],"hasCommercial":false,"isAsyncAPIOwner":true,"technology":[]}}]},"Directories":{"description":"The following is a list of directories that index public AsyncAPI documents.","toolsList":[{"title":"API Tracker - AsyncAPI specs","description":"Explore APIs and companies with public AsyncAPI specifications.","links":{"websiteUrl":"https://apitracker.io/specifications/asyncapi","repoUrl":""},"filters":{"categories":["api","directory"],"hasCommercial":false,"isAsyncAPIOwner":false,"technology":[]}},{"title":"AsyncAPI-Directory by APIs.guru","description":"Directory of asynchronous API specifications in AsyncAPI format.","links":{"websiteUrl":"https://apis.guru/asyncapi-directory/","repoUrl":"https://github.com/APIs-guru/asyncapi-directory"},"filters":{"language":[{"name":"JavaScript","color":"bg-[#F2F1C7]","borderColor":"border-[#BFBE86]"}],"technology":[{"name":"Node.js","color":"bg-[#BDFF67]","borderColor":"border-[#84CE24]"},{"name":"Liquid","color":"bg-[#61d0f2]","borderColor":"border-[#40ccf7]"}],"categories":["api","directory"],"hasCommercial":false,"isAsyncAPIOwner":false}}]},"Documentation Generators":{"description":"The following is a list of tools that generate human-readable documentation from an AsyncAPI document.","toolsList":[{"title":"AsyncAPI Generator","description":"Generator is a tool that you can use to generate whatever you want basing on the AsyncAPI specification file as an input.","links":{"docsUrl":"https://www.asyncapi.com/docs/tools/generator","repoUrl":"https://github.com/asyncapi/generator"},"filters":{"language":[{"name":"JavaScript","color":"bg-[#F2F1C7]","borderColor":"border-[#BFBE86]"}],"technology":[{"name":"Node.js","color":"bg-[#BDFF67]","borderColor":"border-[#84CE24]"},{"name":"Markdown","color":"bg-[#61d0f2]","borderColor":"border-[#40ccf7]"}],"categories":["code-generator","documentation-generator"],"hasCommercial":false,"isAsyncAPIOwner":true}},{"title":"asyncapi-asciidoc-template","description":"Asciidoc template for the asyncapi generator","links":{"repoUrl":"https://gitlab.com/djencks/asyncapi-asciidoc-template"},"filters":{"language":[{"name":"JavaScript","color":"bg-[#F2F1C7]","borderColor":"border-[#BFBE86]"}],"technology":[{"name":"React JS","color":"bg-[#9FECFA]","borderColor":"border-[#08D8FE]"}],"categories":["documentation-generator"],"hasCommercial":false,"isAsyncAPIOwner":false}},{"title":"Bump.sh","description":"OpenAPI 2 & 3 / AsyncAPI 2 documentation generator, with automatic changelog and visual diff.","links":{"websiteUrl":"https://bump.sh/","repoUrl":""},"filters":{"categories":["documentation-generator"],"hasCommercial":true,"isAsyncAPIOwner":false,"technology":[]}},{"title":"Cupid","description":"A library that focuses on finding and analyzing the relationships between AsyncAPI documents. It outputs a map of the system architecture.","links":{"repoUrl":"https://github.com/asyncapi/cupid"},"filters":{"language":[{"name":"JavaScript","color":"bg-[#F2F1C7]","borderColor":"border-[#BFBE86]"}],"technology":[{"name":"Node.js","color":"bg-[#BDFF67]","borderColor":"border-[#84CE24]"}],"categories":["documentation-generator"],"hasCommercial":false,"isAsyncAPIOwner":true}},{"title":"KnstEventBus","description":"AsyncApi code-first tools for c#. Generates document and view.","links":{"repoUrl":"https://github.com/d0972058277/KnstEventBus"},"filters":{"language":[{"name":"C#","color":"bg-[#E3AFE0]","borderColor":"border-[#9B4F96]"}],"technology":[{"name":"ASP.NET","color":"bg-[#71C2FB]","borderColor":"border-[#1577BC]"},{"name":".NET","color":"bg-[#A184FF]","borderColor":"border-[#5026D4]"}],"categories":["code-first","documentation-generator"],"hasCommercial":false,"isAsyncAPIOwner":false}},{"title":"Springwolf","description":"Automated documentation for async APIs built with Spring Boot. Like Springfox for AsyncAPI. Auto-generates an AsyncAPI document and a web UI.","links":{"websiteUrl":"https://www.springwolf.dev","repoUrl":"https://github.com/springwolf/springwolf-core"},"filters":{"language":[{"name":"Java","color":"bg-[#ECA2A4]","borderColor":"border-[#EC2125]"}],"technology":[{"name":"Springboot","color":"bg-[#98E279]","borderColor":"border-[#68BC44]"},{"name":"Gradle","color":"bg-[#61d0f2]","borderColor":"border-[#40ccf7]"}],"categories":["code-first","documentation-generator"],"hasCommercial":false,"isAsyncAPIOwner":false}},{"title":"Widdershins","description":"OpenAPI 3.0 / Swagger 2.0 / AsyncAPI 1.0 definition to Slate / Shins compatible markdown.","links":{"websiteUrl":"https://mermade.github.io/reslate/","repoUrl":"https://github.com/Mermade/widdershins"},"filters":{"language":[{"name":"JavaScript","color":"bg-[#F2F1C7]","borderColor":"border-[#BFBE86]"}],"technology":[{"name":"Node.js","color":"bg-[#BDFF67]","borderColor":"border-[#84CE24]"},{"name":"Shell","color":"bg-[#61d0f2]","borderColor":"border-[#40ccf7]"}],"categories":["documentation-generator"],"hasCommercial":false,"isAsyncAPIOwner":false}}]},"Editors":{"description":"The following is a list of editors or related tools that allow editing of AsyncAPI document.","toolsList":[{"title":"AsyncAPI Studio","description":"Visually design your AsyncAPI files and event-driven architecture.","links":{"websiteUrl":"https://studio.asyncapi.com","repoUrl":"https://github.com/asyncapi/studio"},"filters":{"technology":[{"name":"React JS","color":"bg-[#9FECFA]","borderColor":"border-[#08D8FE]"},{"name":"TypeScript","color":"bg-[#61d0f2]","borderColor":"border-[#40ccf7]"}],"categories":["editor"],"hasCommercial":false,"isAsyncAPIOwner":true}}]},"UI components":{"description":"The following is a list of UI components to view AsyncAPI documents.","toolsList":[{"title":"Api-Diff-Viewer","description":"React component to view the difference between two Json based API documents. Supported specifications: JsonSchema, OpenAPI 3.x, AsyncAPI 2.x.","links":{"repoUrl":"https://github.com/udamir/api-diff-viewer","websiteUrl":"https://api-diff-viewer.vercel.app/"},"filters":{"language":[{"name":"TypeScript","color":"bg-[#7DBCFE]","borderColor":"border-[#2C78C7]"}],"technology":[{"name":"React JS","color":"bg-[#9FECFA]","borderColor":"border-[#08D8FE]"},{"name":"Babel","color":"bg-[#61d0f2]","borderColor":"border-[#40ccf7]"},{"name":"Storybook","color":"bg-[#61d0f2]","borderColor":"border-[#40ccf7]"}],"categories":["ui-component"],"hasCommercial":false,"isAsyncAPIOwner":false}},{"title":"AsyncAPI React component","description":"React component for rendering documentation from your specification in real-time in the browser. It also provides a WebComponent and bundle for Angular and Vue","links":{"repoUrl":"https://github.com/asyncapi/asyncapi-react"},"filters":{"language":[{"name":"TypeScript","color":"bg-[#7DBCFE]","borderColor":"border-[#2C78C7]"}],"technology":[{"name":"React JS","color":"bg-[#9FECFA]","borderColor":"border-[#08D8FE]"},{"name":"WebComponents","color":"bg-[#61d0f2]","borderColor":"border-[#40ccf7]"}],"categories":["ui-component"],"hasCommercial":false,"isAsyncAPIOwner":true}}]},"DSL":{"description":"Writing YAML by hand is no fun, and maybe you don't want a GUI, so use a Domain Specific Language to write AsyncAPI in your language of choice.","toolsList":[{"title":"BOATS","description":"Compile your single AsyncAPI file from multiple YAML files with BOATS and with the help of the template engine Nunjucks, plus a many extra helpers to automate much of the donkey work.","links":{"repoUrl":"https://github.com/j-d-carmichael/boats"},"filters":{"language":[{"name":"TypeScript","color":"bg-[#7DBCFE]","borderColor":"border-[#2C78C7]"}],"technology":[{"name":"Node.js","color":"bg-[#BDFF67]","borderColor":"border-[#84CE24]"}],"categories":["dsl"],"hasCommercial":false,"isAsyncAPIOwner":false}},{"title":"ZenWave SDK","description":"DDD and API-First for Event-Driven Microservices","links":{"websiteUrl":"https://zenwave360.github.io/","docsUrl":"https://zenwave360.github.io/zenwave-sdk/plugins/asyncapi-spring-cloud-streams3/","repoUrl":"https://github.com/zenwave360/zenwave-sdk"},"filters":{"language":[{"name":"Java","color":"bg-[#ECA2A4]","borderColor":"border-[#EC2125]"}],"technology":[{"name":"Maven","color":"bg-[#FF6B80]","borderColor":"border-[#CA1A33]"},{"name":"Liquid","color":"bg-[#61d0f2]","borderColor":"border-[#40ccf7]"},{"name":"Spring Cloud Streams","color":"bg-[#61d0f2]","borderColor":"border-[#40ccf7]"},{"name":"JHipster JDL","color":"bg-[#61d0f2]","borderColor":"border-[#40ccf7]"}],"categories":["code-generator","dsl","mocking-and-testing","cli"],"hasCommercial":false,"isAsyncAPIOwner":false}}]},"Frameworks":{"description":"The following is a list of API/application frameworks that make use of AsyncAPI.","toolsList":[{"title":"Asynction","description":"SocketIO server framework driven by the AsyncAPI specification. Asynction guarantees that your API will work in accordance with its AsyncAPI documentation. Built on top of Flask-SocketIO.","links":{"websiteUrl":"https://pypi.org/project/asynction/","repoUrl":"https://github.com/dedoussis/asynction"},"filters":{"language":[{"name":"Python","color":"bg-[#A8D0EF]","borderColor":"border-[#3878AB]"}],"technology":[{"name":"Flask","color":"bg-[#D7C7F2]","borderColor":"border-[#A387D2]"}],"categories":["framework"],"hasCommercial":false,"isAsyncAPIOwner":false}}]},"GitHub Actions":{"description":"The following is a list of GitHub Actions that you can use in your workflows","toolsList":[{"title":"API documentation generation on Bump.sh","description":"With this GitHub Action you can automatically generate your API reference (with the changelog and diff) on Bump.sh from any AsyncAPI file.","links":{"websiteUrl":"https://github.com/marketplace/actions/api-documentation-on-bump","repoUrl":"https://github.com/bump-sh/github-action"},"filters":{"language":[{"name":"TypeScript","color":"bg-[#7DBCFE]","borderColor":"border-[#2C78C7]"}],"categories":["github-action"],"hasCommercial":false,"isAsyncAPIOwner":false,"technology":[]}},{"title":"AsyncAPI GitHub Action","description":"This action validates if the AsyncAPI schema file is valid or not.","links":{"websiteUrl":"https://github.com/marketplace/actions/asyncapi-github-action","repoUrl":"https://github.com/WaleedAshraf/asyncapi-github-action"},"filters":{"language":[{"name":"JavaScript","color":"bg-[#F2F1C7]","borderColor":"border-[#BFBE86]"}],"technology":[{"name":"Node.js","color":"bg-[#BDFF67]","borderColor":"border-[#84CE24]"}],"categories":["github-action","validator"],"hasCommercial":false,"isAsyncAPIOwner":false}},{"title":"Automated version bump for AsyncAPI documents","description":"With this GitHub Action, you can automatically bump the version based on commit messages, which is similar to what semantic-release is for NPM.","links":{"websiteUrl":"https://github.com/marketplace/actions/automated-version-bump-for-asyncapi","repoUrl":"https://github.com/bump-sh/github-action"},"filters":{"language":[{"name":"JavaScript","color":"bg-[#F2F1C7]","borderColor":"border-[#BFBE86]"}],"technology":[{"name":"Node.js","color":"bg-[#BDFF67]","borderColor":"border-[#84CE24]"}],"categories":["github-action"],"hasCommercial":false,"isAsyncAPIOwner":false}},{"title":"GitHub Action for Generator","description":"GitHub Action to generate all the things from your AsyncAPI document using the AsyncAPI generator","links":{"repoUrl":"https://github.com/asyncapi/github-action-for-generator"},"filters":{"technology":[{"name":"AsyncAPI Generator","color":"bg-[#61d0f2]","borderColor":"border-[#40ccf7]"}],"categories":["github-action"],"hasCommercial":false,"isAsyncAPIOwner":true}},{"title":"GitHub Action for Generator","description":null,"links":{"repoUrl":"https://github.com/actions-marketplace-validations/asyncapi_github-action-for-generator"},"filters":{"technology":[{"name":"AsyncAPI Generator","color":"bg-[#61d0f2]","borderColor":"border-[#40ccf7]"}],"categories":["github-action"],"hasCommercial":false,"isAsyncAPIOwner":false}}]},"Mocking and Testing":{"description":"The tools below take specification documents as input, then publish fake messages to broker destinations for simulation purposes. They may also check that publisher messages are compliant with schemas.","toolsList":[{"title":"Microcks","description":"Mocking and testing platform for API and microservices. Turn your AsyncAPI, OpenAPI contract examples, or Postman collections into ready-to-use mocks. Use examples to simulate and validate received messages according to schema elements.","links":{"websiteUrl":"https://microcks.io/","repoUrl":"https://github.com/microcks/microcks"},"filters":{"language":[{"name":"Java","color":"bg-[#ECA2A4]","borderColor":"border-[#EC2125]"}],"technology":[{"name":"TypeScript","color":"bg-[#61d0f2]","borderColor":"border-[#40ccf7]"},{"name":"Kubernetes-native","color":"bg-[#D7C7F2]","borderColor":"border-[#A387D2]"},{"name":"Saas","color":"bg-[#6AB8EC]","borderColor":"border-[#2275AD]"}],"categories":["mocking-and-testing"],"hasCommercial":false,"isAsyncAPIOwner":false}},{"title":"MultiAPI Converter","description":"Use AsyncAPI definition, to generate Spring Cloud Contract producer validation or consumer stubs, using maven.","links":{"repoUrl":"https://github.com/sngular/scc-multiapi-converter"},"filters":{"language":[{"name":"Java","color":"bg-[#ECA2A4]","borderColor":"border-[#EC2125]"}],"technology":[{"name":"Springboot","color":"bg-[#98E279]","borderColor":"border-[#68BC44]"}],"categories":["mocking-and-testing"],"hasCommercial":false,"isAsyncAPIOwner":false}},{"title":"Specmatic","description":"An API contract testing tool that helps ensure the correctness APIs by automatically generating test cases and verifying them against the API spec. It simplifies the process of testing APIs and reduces the likelihood of bugs and compatibility issues.","links":{"websiteUrl":"https://specmatic.in","docsUrl":"https://specmatic.in/documentation/","repoUrl":"https://github.com/znsio/specmatic"},"filters":{"language":[{"name":"Kotlin","color":"bg-[#B1ACDF]","borderColor":"border-[#756BD9]"}],"technology":[{"name":"Maven","color":"bg-[#FF6B80]","borderColor":"border-[#CA1A33]"}],"categories":["mocking-and-testing"],"hasCommercial":false,"isAsyncAPIOwner":false}},{"title":"Virtualan","description":"Mocking and testing platform for API and microservices. Allows you to create and setup mocks for OpenAPI and AsyncAPI contracts. Shows how to setup and create AsyncAPI GitHub Reference Examples and OpenAPI GitHub Reference Examples.","links":{"websiteUrl":"https://www.virtualan.io/index.html","repoUrl":"https://github.com/virtualansoftware"},"filters":{"technology":[{"name":"Kubernetes-native","color":"bg-[#D7C7F2]","borderColor":"border-[#A387D2]"}],"categories":["mocking-and-testing"],"hasCommercial":false,"isAsyncAPIOwner":false}},{"title":"ZenWave SDK","description":"DDD and API-First for Event-Driven Microservices","links":{"websiteUrl":"https://zenwave360.github.io/","docsUrl":"https://zenwave360.github.io/zenwave-sdk/plugins/asyncapi-spring-cloud-streams3/","repoUrl":"https://github.com/zenwave360/zenwave-sdk"},"filters":{"language":[{"name":"Java","color":"bg-[#ECA2A4]","borderColor":"border-[#EC2125]"}],"technology":[{"name":"Maven","color":"bg-[#FF6B80]","borderColor":"border-[#CA1A33]"},{"name":"Liquid","color":"bg-[#61d0f2]","borderColor":"border-[#40ccf7]"},{"name":"Spring Cloud Streams","color":"bg-[#61d0f2]","borderColor":"border-[#40ccf7]"},{"name":"JHipster JDL","color":"bg-[#61d0f2]","borderColor":"border-[#40ccf7]"}],"categories":["code-generator","dsl","mocking-and-testing","cli"],"hasCommercial":false,"isAsyncAPIOwner":false}}]},"Validators":{"description":"The following is a list of tools that validate AsyncAPI documents.","toolsList":[{"title":"AMF","description":"AMF (AML Modeling Framework) is an open-source library capable of parsing and validating AML metadata documents.","links":{"docsUrl":"https://a.ml/docs/","repoUrl":"https://github.com/aml-org/amf"},"filters":{"language":[{"name":"Scala","color":"bg-[#FFA299]","borderColor":"border-[#DF301F]"}],"categories":["validator"],"hasCommercial":false,"isAsyncAPIOwner":false,"technology":[]}},{"title":"AsyncAPI GitHub Action","description":"This action validates if the AsyncAPI schema file is valid or not.","links":{"websiteUrl":"https://github.com/marketplace/actions/asyncapi-github-action","repoUrl":"https://github.com/WaleedAshraf/asyncapi-github-action"},"filters":{"language":[{"name":"JavaScript","color":"bg-[#F2F1C7]","borderColor":"border-[#BFBE86]"}],"technology":[{"name":"Node.js","color":"bg-[#BDFF67]","borderColor":"border-[#84CE24]"}],"categories":["github-action","validator"],"hasCommercial":false,"isAsyncAPIOwner":false}},{"title":"AsyncAPI Parser","description":"Use this package to parse and validate AsyncAPI documents —either YAML or JSON— in your Node.js or browser application. Updated bundle for the browser is always attached to the GitHub Release.","links":{"repoUrl":"https://github.com/asyncapi/parser-js"},"filters":{"language":[{"name":"JavaScript","color":"bg-[#F2F1C7]","borderColor":"border-[#BFBE86]"}],"technology":[{"name":"Node.js","color":"bg-[#BDFF67]","borderColor":"border-[#84CE24]"}],"categories":["validator"],"hasCommercial":false,"isAsyncAPIOwner":true}},{"title":"AsyncAPI Parser","description":"The AsyncAPI Parser validates AsyncAPI documents according to dedicated schemas.","links":{"repoUrl":"https://github.com/asyncapi/parser-go"},"filters":{"language":[{"name":"Go/Golang","color":"bg-[#8ECFDF]","borderColor":"border-[#00AFD9]"}],"categories":["validator"],"hasCommercial":false,"isAsyncAPIOwner":true,"technology":[]}},{"title":"AsyncAPI Parser Wrapper","description":"Use this library to parse and validate AsyncAPI documents — either YAML or JSON — in your Java application. It is a Java wrapper over JavaScript Parser implemented using J2V8.","links":{"repoUrl":"https://github.com/AsyncAPITools/parser-java-wrapper"},"filters":{"language":[{"name":"Java","color":"bg-[#ECA2A4]","borderColor":"border-[#EC2125]"}],"categories":["validator"],"hasCommercial":false,"isAsyncAPIOwner":false,"technology":[]}},{"title":"asyncapi-validator","description":"It allows you to validate the schema of your messages against your AsyncAPI schema definition. You can use it with Kafka, RabbitMQ or any other messaging/queue.","links":{"repoUrl":"https://github.com/WaleedAshraf/asyncapi-validator"},"filters":{"language":[{"name":"JavaScript","color":"bg-[#F2F1C7]","borderColor":"border-[#BFBE86]"}],"technology":[{"name":"Node.js","color":"bg-[#BDFF67]","borderColor":"border-[#84CE24]"}],"categories":["validator"],"hasCommercial":false,"isAsyncAPIOwner":false}},{"title":"AsyncAPI.Net","description":"The AsyncAPI.NET SDK contains a useful object model for AsyncAPI documents in .NET along with common serializers to extract raw OpenAPI JSON and YAML documents from the model.","links":{"websiteUrl":"https://github.com/LEGO/AsyncAPI.NET/","repoUrl":"https://github.com/LEGO/AsyncAPI.NET"},"filters":{"language":[{"name":"C#","color":"bg-[#E3AFE0]","borderColor":"border-[#9B4F96]"}],"technology":[{"name":".NET","color":"bg-[#A184FF]","borderColor":"border-[#5026D4]"},{"name":"ASP.NET","color":"bg-[#71C2FB]","borderColor":"border-[#1577BC]"}],"categories":["converters","code-first","validator"],"hasCommercial":false,"isAsyncAPIOwner":false}},{"title":"Spectral","description":"A flexible JSON/YAML linter for creating automated style guides, with baked in support for OpenAPI v3.1, v3.0, and v2.0 as well as AsyncAPI v2.x.","links":{"repoUrl":"https://github.com/stoplightio/spectral"},"filters":{"language":[{"name":"TypeScript","color":"bg-[#7DBCFE]","borderColor":"border-[#2C78C7]"}],"technology":[{"name":"Node.js","color":"bg-[#BDFF67]","borderColor":"border-[#84CE24]"}],"categories":["validator"],"hasCommercial":false,"isAsyncAPIOwner":false}}]},"Compare tools":{"description":"The following is a list of tools that compare AsyncAPI documents.","toolsList":[{"title":"Api-Smart-Diff","description":"It allows you to compare two API documents and classify changes. Supported API specifications: OpenAPI, AsyncAPI, JsonSchema.","links":{"repoUrl":"https://github.com/udamir/api-smart-diff"},"filters":{"language":[{"name":"TypeScript","color":"bg-[#7DBCFE]","borderColor":"border-[#2C78C7]"}],"categories":["compare-tool"],"hasCommercial":false,"isAsyncAPIOwner":false,"technology":[]}},{"title":"AsyncAPI Diff","description":"Diff is a library that compares two AsyncAPI Documents and provides information about the differences by pointing out explicitly information like breaking changes.","links":{"repoUrl":"https://github.com/asyncapi/diff"},"filters":{"language":[{"name":"TypeScript","color":"bg-[#7DBCFE]","borderColor":"border-[#2C78C7]"}],"technology":[{"name":"TypeScript","color":"bg-[#61d0f2]","borderColor":"border-[#40ccf7]"}],"categories":["compare-tool"],"hasCommercial":false,"isAsyncAPIOwner":true}},{"title":"jasyncapicmp","description":"Tool for comparing two AsyncAPI versions and evaluating compatibility.","links":{"websiteUrl":"https://siom79.github.io/jasyncapicmp/","docsUrl":"https://github.com/siom79/jasyncapicmp","repoUrl":"https://github.com/siom79/jasyncapicmp"},"filters":{"language":[{"name":"Java","color":"bg-[#ECA2A4]","borderColor":"border-[#EC2125]"}],"technology":[{"name":"Maven","color":"bg-[#FF6B80]","borderColor":"border-[#CA1A33]"}],"categories":["compare-tool"],"hasCommercial":false,"isAsyncAPIOwner":false}},{"title":"jasyncapicmp","description":"Tool/library/maven-plugin for comparing two AsyncAPI versions and evaluating compatibility.","links":{"websiteUrl":"https://siom79.github.io/jasyncapicmp/","repoUrl":"https://github.com/siom79/jasyncapicmp"},"filters":{"language":[{"name":"Java","color":"bg-[#ECA2A4]","borderColor":"border-[#EC2125]"}],"technology":[{"name":"Maven","color":"bg-[#FF6B80]","borderColor":"border-[#CA1A33]"}],"categories":["compare-tool"],"hasCommercial":false,"isAsyncAPIOwner":false}}]},"CLIs":{"description":"The following is a list of tools that you can work with in terminal or do some CI/CD automation.","toolsList":[{"title":"AsyncAPI CLI","description":"One CLI to rule them all. \nThis is a CLI that aims to integrate all AsyncAPI tools that you need while AsyncAPI document development and maintainance. \nYou can use it to generate docs or code, validate AsyncAPI document and event create new documents.\n","links":{"websiteUrl":"https://www.asyncapi.com/tools/cli","repoUrl":"https://github.com/asyncapi/cli"},"filters":{"technology":[{"name":"TypeScript","color":"bg-[#61d0f2]","borderColor":"border-[#40ccf7]"}],"categories":["others","cli"],"hasCommercial":false,"isAsyncAPIOwner":true}},{"title":"AsyncAPI-format","description":"Format an AsyncAPI document by ordering, casing, formatting, and filtering fields.","links":{"repoUrl":"https://github.com/asyncapi/converter-go"},"filters":{"language":[{"name":"JavaScript","color":"bg-[#F2F1C7]","borderColor":"border-[#BFBE86]"}],"technology":[{"name":"Node.js","color":"bg-[#BDFF67]","borderColor":"border-[#84CE24]"}],"categories":["converter","cli"],"hasCommercial":false,"isAsyncAPIOwner":true}},{"title":"ZenWave SDK","description":"DDD and API-First for Event-Driven Microservices","links":{"websiteUrl":"https://zenwave360.github.io/","docsUrl":"https://zenwave360.github.io/zenwave-sdk/plugins/asyncapi-spring-cloud-streams3/","repoUrl":"https://github.com/zenwave360/zenwave-sdk"},"filters":{"language":[{"name":"Java","color":"bg-[#ECA2A4]","borderColor":"border-[#EC2125]"}],"technology":[{"name":"Maven","color":"bg-[#FF6B80]","borderColor":"border-[#CA1A33]"},{"name":"Liquid","color":"bg-[#61d0f2]","borderColor":"border-[#40ccf7]"},{"name":"Spring Cloud Streams","color":"bg-[#61d0f2]","borderColor":"border-[#40ccf7]"},{"name":"JHipster JDL","color":"bg-[#61d0f2]","borderColor":"border-[#40ccf7]"}],"categories":["code-generator","dsl","mocking-and-testing","cli"],"hasCommercial":false,"isAsyncAPIOwner":false}}]},"Bundlers":{"description":"The following is a list of tools that you can work with to bundle AsyncAPI documents.","toolsList":[{"title":"Api-ref-bundler","description":"It allows you bundle/dereference external/internal $refs in Json based API document. Supported specifications: OpenAPI, AsyncAPI, JsonSchema.","links":{"repoUrl":"https://github.com/udamir/api-ref-bundler"},"filters":{"language":[{"name":"TypeScript","color":"bg-[#7DBCFE]","borderColor":"border-[#2C78C7]"}],"technology":[{"name":"TypeScript","color":"bg-[#61d0f2]","borderColor":"border-[#40ccf7]"}],"categories":["bundler"],"hasCommercial":false,"isAsyncAPIOwner":false}},{"title":"AsyncAPI Bundler","description":"Combine multiple AsyncAPI specification files into one.","links":{"repoUrl":"https://github.com/asyncapi/bundler"},"filters":{"language":[{"name":"TypeScript","color":"bg-[#7DBCFE]","borderColor":"border-[#2C78C7]"}],"technology":[{"name":"TypeScript","color":"bg-[#61d0f2]","borderColor":"border-[#40ccf7]"}],"categories":["bundler"],"hasCommercial":false,"isAsyncAPIOwner":true}}]},"IDE Extensions":{"description":"The following is a list of extensions for different IDEs like VSCode, IntelliJ IDEA and others","toolsList":[{"title":"asyncapi-preview","description":"VSCode extension that enables you to:\n - Preview documentation generated using you AsyncAPI document. It uses AsyncAPI React component under the hood,\n - Create AsyncAPI documents faster using SmartPaste functionality\n","links":{"repoUrl":"https://github.com/asyncapi/vs-asyncapi-preview"},"filters":{"technology":[{"name":"VSCode","color":"bg-[#61d0f2]","borderColor":"border-[#40ccf7]"},{"name":"SmartPaste","color":"bg-[#61d0f2]","borderColor":"border-[#40ccf7]"}],"categories":["ide-extension"],"hasCommercial":false,"isAsyncAPIOwner":true}},{"title":"asyncapi-preview","description":"VSCode extension that enables you to:\n - Preview documentation generated using you AsyncAPI document. It uses AsyncAPI React component under the hood,\n - Create AsyncAPI documents faster using SmartPaste functionality\n","links":{"repoUrl":"https://github.com/Savio629/testing2"},"filters":{"technology":[{"name":"VSCode","color":"bg-[#61d0f2]","borderColor":"border-[#40ccf7]"},{"name":"SmartPaste","color":"bg-[#61d0f2]","borderColor":"border-[#40ccf7]"}],"categories":["ide-extension"],"hasCommercial":false,"isAsyncAPIOwner":false}},{"title":"jAsyncAPI - IDEA plugin","description":"Idea plugin for the java-asyncapi - Helps to edit and validate AsyncAPI schemas.","links":{"websiteUrl":"https://plugins.jetbrains.com/plugin/15673-asyncapi","docsUrl":"https://github.com/asyncapi/jasyncapi-idea-plugin#usage","repoUrl":"https://github.com/asyncapi/jasyncapi-idea-plugin"},"filters":{"language":[{"name":"Kotlin","color":"bg-[#B1ACDF]","borderColor":"border-[#756BD9]"}],"technology":[{"name":"JetBrains","color":"bg-[#61d0f2]","borderColor":"border-[#40ccf7]"},{"name":"IntelliJ IDEA","color":"bg-[#61d0f2]","borderColor":"border-[#40ccf7]"}],"categories":["ide-extension"],"hasCommercial":false,"isAsyncAPIOwner":true}}]},"Others":{"description":"The following is a list of tools that comes under Other category.","toolsList":[{"title":"AsyncAPI CLI","description":"One CLI to rule them all. \nThis is a CLI that aims to integrate all AsyncAPI tools that you need while AsyncAPI document development and maintainance. \nYou can use it to generate docs or code, validate AsyncAPI document and event create new documents.\n","links":{"websiteUrl":"https://www.asyncapi.com/tools/cli","repoUrl":"https://github.com/asyncapi/cli"},"filters":{"technology":[{"name":"TypeScript","color":"bg-[#61d0f2]","borderColor":"border-[#40ccf7]"}],"categories":["others","cli"],"hasCommercial":false,"isAsyncAPIOwner":true}}]}} \ No newline at end of file From 1735588255a73c323316175a23211cd89524a938 Mon Sep 17 00:00:00 2001 From: asyncapi-bot Date: Tue, 3 Oct 2023 10:21:51 +0200 Subject: [PATCH 004/134] docs(cli): update latest cli documentation (#2196) --- pages/docs/tools/cli/usage.md | 50 +++++++++++++++++------------------ 1 file changed, 25 insertions(+), 25 deletions(-) diff --git a/pages/docs/tools/cli/usage.md b/pages/docs/tools/cli/usage.md index 85ee1a873c9..78228c87cfa 100644 --- a/pages/docs/tools/cli/usage.md +++ b/pages/docs/tools/cli/usage.md @@ -29,7 +29,7 @@ $ npm install -g @asyncapi/cli $ asyncapi COMMAND running command... $ asyncapi (--version) -@asyncapi/cli/0.58.1 linux-x64 node-v18.18.0 +@asyncapi/cli/0.58.2 linux-x64 node-v18.18.0 $ asyncapi --help [COMMAND] USAGE $ asyncapi COMMAND @@ -93,7 +93,7 @@ EXAMPLES $ asyncapi bundle ./asyncapi.yaml ./features.yaml --base ./asyncapi.yaml --reference-into-components ``` -_See code: [src/commands/bundle.ts](https://github.com/asyncapi/cli/blob/v0.58.1/src/commands/bundle.ts)_ +_See code: [src/commands/bundle.ts](https://github.com/asyncapi/cli/blob/v0.58.2/src/commands/bundle.ts)_ ## `asyncapi config` @@ -107,7 +107,7 @@ DESCRIPTION CLI config settings ``` -_See code: [src/commands/config/index.ts](https://github.com/asyncapi/cli/blob/v0.58.1/src/commands/config/index.ts)_ +_See code: [src/commands/config/index.ts](https://github.com/asyncapi/cli/blob/v0.58.2/src/commands/config/index.ts)_ ## `asyncapi config context` @@ -121,7 +121,7 @@ DESCRIPTION Manage short aliases for full paths to AsyncAPI documents ``` -_See code: [src/commands/config/context/index.ts](https://github.com/asyncapi/cli/blob/v0.58.1/src/commands/config/context/index.ts)_ +_See code: [src/commands/config/context/index.ts](https://github.com/asyncapi/cli/blob/v0.58.2/src/commands/config/context/index.ts)_ ## `asyncapi config context add CONTEXT-NAME SPEC-FILE-PATH` @@ -143,7 +143,7 @@ DESCRIPTION Add a context to the store ``` -_See code: [src/commands/config/context/add.ts](https://github.com/asyncapi/cli/blob/v0.58.1/src/commands/config/context/add.ts)_ +_See code: [src/commands/config/context/add.ts](https://github.com/asyncapi/cli/blob/v0.58.2/src/commands/config/context/add.ts)_ ## `asyncapi config context current` @@ -160,7 +160,7 @@ DESCRIPTION Shows the current context that is being used ``` -_See code: [src/commands/config/context/current.ts](https://github.com/asyncapi/cli/blob/v0.58.1/src/commands/config/context/current.ts)_ +_See code: [src/commands/config/context/current.ts](https://github.com/asyncapi/cli/blob/v0.58.2/src/commands/config/context/current.ts)_ ## `asyncapi config context edit CONTEXT-NAME NEW-SPEC-FILE-PATH` @@ -181,7 +181,7 @@ DESCRIPTION Edit a context in the store ``` -_See code: [src/commands/config/context/edit.ts](https://github.com/asyncapi/cli/blob/v0.58.1/src/commands/config/context/edit.ts)_ +_See code: [src/commands/config/context/edit.ts](https://github.com/asyncapi/cli/blob/v0.58.2/src/commands/config/context/edit.ts)_ ## `asyncapi config context init [CONTEXT-FILE-PATH]` @@ -204,7 +204,7 @@ DESCRIPTION Initialize context ``` -_See code: [src/commands/config/context/init.ts](https://github.com/asyncapi/cli/blob/v0.58.1/src/commands/config/context/init.ts)_ +_See code: [src/commands/config/context/init.ts](https://github.com/asyncapi/cli/blob/v0.58.2/src/commands/config/context/init.ts)_ ## `asyncapi config context list` @@ -221,7 +221,7 @@ DESCRIPTION List all the stored contexts in the store ``` -_See code: [src/commands/config/context/list.ts](https://github.com/asyncapi/cli/blob/v0.58.1/src/commands/config/context/list.ts)_ +_See code: [src/commands/config/context/list.ts](https://github.com/asyncapi/cli/blob/v0.58.2/src/commands/config/context/list.ts)_ ## `asyncapi config context remove CONTEXT-NAME` @@ -241,7 +241,7 @@ DESCRIPTION Delete a context from the store ``` -_See code: [src/commands/config/context/remove.ts](https://github.com/asyncapi/cli/blob/v0.58.1/src/commands/config/context/remove.ts)_ +_See code: [src/commands/config/context/remove.ts](https://github.com/asyncapi/cli/blob/v0.58.2/src/commands/config/context/remove.ts)_ ## `asyncapi config context use CONTEXT-NAME` @@ -261,7 +261,7 @@ DESCRIPTION Set a context as current ``` -_See code: [src/commands/config/context/use.ts](https://github.com/asyncapi/cli/blob/v0.58.1/src/commands/config/context/use.ts)_ +_See code: [src/commands/config/context/use.ts](https://github.com/asyncapi/cli/blob/v0.58.2/src/commands/config/context/use.ts)_ ## `asyncapi config versions` @@ -278,7 +278,7 @@ DESCRIPTION Show versions of AsyncAPI tools used ``` -_See code: [src/commands/config/versions.ts](https://github.com/asyncapi/cli/blob/v0.58.1/src/commands/config/versions.ts)_ +_See code: [src/commands/config/versions.ts](https://github.com/asyncapi/cli/blob/v0.58.2/src/commands/config/versions.ts)_ ## `asyncapi convert [SPEC-FILE]` @@ -300,7 +300,7 @@ DESCRIPTION Convert asyncapi documents older to newer versions ``` -_See code: [src/commands/convert.ts](https://github.com/asyncapi/cli/blob/v0.58.1/src/commands/convert.ts)_ +_See code: [src/commands/convert.ts](https://github.com/asyncapi/cli/blob/v0.58.2/src/commands/convert.ts)_ ## `asyncapi diff OLD NEW` @@ -355,7 +355,7 @@ DESCRIPTION Find diff between two asyncapi files ``` -_See code: [src/commands/diff.ts](https://github.com/asyncapi/cli/blob/v0.58.1/src/commands/diff.ts)_ +_See code: [src/commands/diff.ts](https://github.com/asyncapi/cli/blob/v0.58.2/src/commands/diff.ts)_ ## `asyncapi generate` @@ -369,7 +369,7 @@ DESCRIPTION Generate typed models or other things like clients, applications or docs using AsyncAPI Generator templates. ``` -_See code: [src/commands/generate/index.ts](https://github.com/asyncapi/cli/blob/v0.58.1/src/commands/generate/index.ts)_ +_See code: [src/commands/generate/index.ts](https://github.com/asyncapi/cli/blob/v0.58.2/src/commands/generate/index.ts)_ ## `asyncapi generate fromTemplate ASYNCAPI TEMPLATE` @@ -406,7 +406,7 @@ EXAMPLES $ asyncapi generate fromTemplate asyncapi.yaml @asyncapi/html-template --param version=1.0.0 singleFile=true --output ./docs --force-write ``` -_See code: [src/commands/generate/fromTemplate.ts](https://github.com/asyncapi/cli/blob/v0.58.1/src/commands/generate/fromTemplate.ts)_ +_See code: [src/commands/generate/fromTemplate.ts](https://github.com/asyncapi/cli/blob/v0.58.2/src/commands/generate/fromTemplate.ts)_ ## `asyncapi generate models LANGUAGE FILE` @@ -480,7 +480,7 @@ DESCRIPTION Generates typed models ``` -_See code: [src/commands/generate/models.ts](https://github.com/asyncapi/cli/blob/v0.58.1/src/commands/generate/models.ts)_ +_See code: [src/commands/generate/models.ts](https://github.com/asyncapi/cli/blob/v0.58.2/src/commands/generate/models.ts)_ ## `asyncapi new` @@ -535,7 +535,7 @@ EXAMPLES $ asyncapi new --file-name=my-asyncapi.yml --example=default-example.yml --no-tty - create a new file with a specific name, using one of the examples and without interactive mode ``` -_See code: [src/commands/new/index.ts](https://github.com/asyncapi/cli/blob/v0.58.1/src/commands/new/index.ts)_ +_See code: [src/commands/new/index.ts](https://github.com/asyncapi/cli/blob/v0.58.2/src/commands/new/index.ts)_ ## `asyncapi new file` @@ -590,7 +590,7 @@ EXAMPLES $ asyncapi new --file-name=my-asyncapi.yml --example=default-example.yml --no-tty - create a new file with a specific name, using one of the examples and without interactive mode ``` -_See code: [src/commands/new/file.ts](https://github.com/asyncapi/cli/blob/v0.58.1/src/commands/new/file.ts)_ +_See code: [src/commands/new/file.ts](https://github.com/asyncapi/cli/blob/v0.58.2/src/commands/new/file.ts)_ ## `asyncapi new glee` @@ -608,7 +608,7 @@ DESCRIPTION Creates a new Glee project ``` -_See code: [src/commands/new/glee.ts](https://github.com/asyncapi/cli/blob/v0.58.1/src/commands/new/glee.ts)_ +_See code: [src/commands/new/glee.ts](https://github.com/asyncapi/cli/blob/v0.58.2/src/commands/new/glee.ts)_ ## `asyncapi new project` @@ -626,7 +626,7 @@ DESCRIPTION Creates a new Glee project ``` -_See code: [src/commands/new/project.ts](https://github.com/asyncapi/cli/blob/v0.58.1/src/commands/new/project.ts)_ +_See code: [src/commands/new/project.ts](https://github.com/asyncapi/cli/blob/v0.58.2/src/commands/new/project.ts)_ ## `asyncapi optimize [SPEC-FILE]` @@ -662,7 +662,7 @@ EXAMPLES $ asyncapi optimize ./asyncapi.yaml --optimization=remove-components,reuse-components,move-to-components --output=terminal --no-tty ``` -_See code: [src/commands/optimize.ts](https://github.com/asyncapi/cli/blob/v0.58.1/src/commands/optimize.ts)_ +_See code: [src/commands/optimize.ts](https://github.com/asyncapi/cli/blob/v0.58.2/src/commands/optimize.ts)_ ## `asyncapi start` @@ -676,7 +676,7 @@ DESCRIPTION Start asyncapi studio ``` -_See code: [src/commands/start/index.ts](https://github.com/asyncapi/cli/blob/v0.58.1/src/commands/start/index.ts)_ +_See code: [src/commands/start/index.ts](https://github.com/asyncapi/cli/blob/v0.58.2/src/commands/start/index.ts)_ ## `asyncapi start studio` @@ -695,7 +695,7 @@ DESCRIPTION starts a new local instance of Studio ``` -_See code: [src/commands/start/studio.ts](https://github.com/asyncapi/cli/blob/v0.58.1/src/commands/start/studio.ts)_ +_See code: [src/commands/start/studio.ts](https://github.com/asyncapi/cli/blob/v0.58.2/src/commands/start/studio.ts)_ ## `asyncapi validate [SPEC-FILE]` @@ -722,5 +722,5 @@ DESCRIPTION validate asyncapi file ``` -_See code: [src/commands/validate.ts](https://github.com/asyncapi/cli/blob/v0.58.1/src/commands/validate.ts)_ +_See code: [src/commands/validate.ts](https://github.com/asyncapi/cli/blob/v0.58.2/src/commands/validate.ts)_ From 5be5a9f6b9dfee94613897adcb81fd33724c2284 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 4 Oct 2023 02:32:50 +0200 Subject: [PATCH 005/134] chore(deps): bump postcss from 8.4.14 to 8.4.31 (#2198) --- package-lock.json | 97 +++++++++++++++++++++++++++++++++++++++-------- package.json | 2 +- 2 files changed, 83 insertions(+), 16 deletions(-) diff --git a/package-lock.json b/package-lock.json index cdf5fe462a3..5ce82529f60 100644 --- a/package-lock.json +++ b/package-lock.json @@ -46,7 +46,7 @@ "next": "^12.0.0", "next-mdx-remote": "^4.4.1", "node-fetch": "^2.6.7", - "postcss": "^8.4.14", + "postcss": "^8.4.31", "react": "^17.0.2", "react-dom": "^17.0.2", "react-ga": "^3.1.2", @@ -9128,6 +9128,46 @@ "react": ">=16" } }, + "node_modules/next/node_modules/nanoid": { + "version": "3.3.6", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.6.tgz", + "integrity": "sha512-BGcqMMJuToF7i1rt+2PWSNVnWIkGCU78jBG3RxO/bZlnZPK2Cmi2QaffxGO/2RvWi9sL+FAiRiXMgsyxQ1DIDA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "bin": { + "nanoid": "bin/nanoid.cjs" + }, + "engines": { + "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" + } + }, + "node_modules/next/node_modules/postcss": { + "version": "8.4.14", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.14.tgz", + "integrity": "sha512-E398TUmfAYFPBSdzgeieK2Y1+1cpdxJx8yXbK/m57nRhKSmk1GB2tO4lbLBtlkfPQTDKfe4Xqv1ASWPpayPEig==", + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/postcss" + } + ], + "dependencies": { + "nanoid": "^3.3.4", + "picocolors": "^1.0.0", + "source-map-js": "^1.0.2" + }, + "engines": { + "node": "^10 || ^12 || >=14" + } + }, "node_modules/node-abi": { "version": "3.40.0", "resolved": "https://registry.npmjs.org/node-abi/-/node-abi-3.40.0.tgz", @@ -9795,9 +9835,9 @@ "integrity": "sha512-3ojrFwjnnw8Q9242TzgXuTD+eKiutbzyslcq1ydfu82Db2y+Ogbmyrkpv0Hgj31qwT3lbS9+QAAO/pIQM35XRw==" }, "node_modules/postcss": { - "version": "8.4.14", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.14.tgz", - "integrity": "sha512-E398TUmfAYFPBSdzgeieK2Y1+1cpdxJx8yXbK/m57nRhKSmk1GB2tO4lbLBtlkfPQTDKfe4Xqv1ASWPpayPEig==", + "version": "8.4.31", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.31.tgz", + "integrity": "sha512-PS08Iboia9mts/2ygV3eLpY5ghnUcfLV/EXTOW1E2qYxJKGGBUtNjN76FYHnMs36RmARn41bC0AZmn+rR0OVpQ==", "funding": [ { "type": "opencollective", @@ -9806,10 +9846,14 @@ { "type": "tidelift", "url": "https://tidelift.com/funding/github/npm/postcss" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" } ], "dependencies": { - "nanoid": "^3.3.4", + "nanoid": "^3.3.6", "picocolors": "^1.0.0", "source-map-js": "^1.0.2" }, @@ -10433,9 +10477,15 @@ "integrity": "sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==" }, "node_modules/postcss/node_modules/nanoid": { - "version": "3.3.4", - "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.4.tgz", - "integrity": "sha512-MqBkQh/OHTS2egovRtLk45wEyNXwF+cokD+1YPf9u5VfJiRdAiRwB2froX5Co9Rh20xs4siNPm8naNotSD6RBw==", + "version": "3.3.6", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.6.tgz", + "integrity": "sha512-BGcqMMJuToF7i1rt+2PWSNVnWIkGCU78jBG3RxO/bZlnZPK2Cmi2QaffxGO/2RvWi9sL+FAiRiXMgsyxQ1DIDA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], "bin": { "nanoid": "bin/nanoid.cjs" }, @@ -20180,6 +20230,23 @@ "postcss": "8.4.14", "styled-jsx": "5.0.7", "use-sync-external-store": "1.2.0" + }, + "dependencies": { + "nanoid": { + "version": "3.3.6", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.6.tgz", + "integrity": "sha512-BGcqMMJuToF7i1rt+2PWSNVnWIkGCU78jBG3RxO/bZlnZPK2Cmi2QaffxGO/2RvWi9sL+FAiRiXMgsyxQ1DIDA==" + }, + "postcss": { + "version": "8.4.14", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.14.tgz", + "integrity": "sha512-E398TUmfAYFPBSdzgeieK2Y1+1cpdxJx8yXbK/m57nRhKSmk1GB2tO4lbLBtlkfPQTDKfe4Xqv1ASWPpayPEig==", + "requires": { + "nanoid": "^3.3.4", + "picocolors": "^1.0.0", + "source-map-js": "^1.0.2" + } + } } }, "next-mdx-remote": { @@ -20763,19 +20830,19 @@ "integrity": "sha512-3ojrFwjnnw8Q9242TzgXuTD+eKiutbzyslcq1ydfu82Db2y+Ogbmyrkpv0Hgj31qwT3lbS9+QAAO/pIQM35XRw==" }, "postcss": { - "version": "8.4.14", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.14.tgz", - "integrity": "sha512-E398TUmfAYFPBSdzgeieK2Y1+1cpdxJx8yXbK/m57nRhKSmk1GB2tO4lbLBtlkfPQTDKfe4Xqv1ASWPpayPEig==", + "version": "8.4.31", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.31.tgz", + "integrity": "sha512-PS08Iboia9mts/2ygV3eLpY5ghnUcfLV/EXTOW1E2qYxJKGGBUtNjN76FYHnMs36RmARn41bC0AZmn+rR0OVpQ==", "requires": { - "nanoid": "^3.3.4", + "nanoid": "^3.3.6", "picocolors": "^1.0.0", "source-map-js": "^1.0.2" }, "dependencies": { "nanoid": { - "version": "3.3.4", - "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.4.tgz", - "integrity": "sha512-MqBkQh/OHTS2egovRtLk45wEyNXwF+cokD+1YPf9u5VfJiRdAiRwB2froX5Co9Rh20xs4siNPm8naNotSD6RBw==" + "version": "3.3.6", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.6.tgz", + "integrity": "sha512-BGcqMMJuToF7i1rt+2PWSNVnWIkGCU78jBG3RxO/bZlnZPK2Cmi2QaffxGO/2RvWi9sL+FAiRiXMgsyxQ1DIDA==" } } }, diff --git a/package.json b/package.json index ed766261262..5efbf8e453b 100644 --- a/package.json +++ b/package.json @@ -74,7 +74,7 @@ "next": "^12.0.0", "next-mdx-remote": "^4.4.1", "node-fetch": "^2.6.7", - "postcss": "^8.4.14", + "postcss": "^8.4.31", "react": "^17.0.2", "react-dom": "^17.0.2", "react-ga": "^3.1.2", From d0a34aadad5fe6c8a070611d8b8ed56ef81b773c Mon Sep 17 00:00:00 2001 From: asyncapi-bot Date: Wed, 4 Oct 2023 08:50:40 +0200 Subject: [PATCH 006/134] docs(cli): update latest cli documentation (#2201) --- pages/docs/tools/cli/usage.md | 50 +++++++++++++++++------------------ 1 file changed, 25 insertions(+), 25 deletions(-) diff --git a/pages/docs/tools/cli/usage.md b/pages/docs/tools/cli/usage.md index 78228c87cfa..be1e0f37f84 100644 --- a/pages/docs/tools/cli/usage.md +++ b/pages/docs/tools/cli/usage.md @@ -29,7 +29,7 @@ $ npm install -g @asyncapi/cli $ asyncapi COMMAND running command... $ asyncapi (--version) -@asyncapi/cli/0.58.2 linux-x64 node-v18.18.0 +@asyncapi/cli/0.58.3 linux-x64 node-v18.18.0 $ asyncapi --help [COMMAND] USAGE $ asyncapi COMMAND @@ -93,7 +93,7 @@ EXAMPLES $ asyncapi bundle ./asyncapi.yaml ./features.yaml --base ./asyncapi.yaml --reference-into-components ``` -_See code: [src/commands/bundle.ts](https://github.com/asyncapi/cli/blob/v0.58.2/src/commands/bundle.ts)_ +_See code: [src/commands/bundle.ts](https://github.com/asyncapi/cli/blob/v0.58.3/src/commands/bundle.ts)_ ## `asyncapi config` @@ -107,7 +107,7 @@ DESCRIPTION CLI config settings ``` -_See code: [src/commands/config/index.ts](https://github.com/asyncapi/cli/blob/v0.58.2/src/commands/config/index.ts)_ +_See code: [src/commands/config/index.ts](https://github.com/asyncapi/cli/blob/v0.58.3/src/commands/config/index.ts)_ ## `asyncapi config context` @@ -121,7 +121,7 @@ DESCRIPTION Manage short aliases for full paths to AsyncAPI documents ``` -_See code: [src/commands/config/context/index.ts](https://github.com/asyncapi/cli/blob/v0.58.2/src/commands/config/context/index.ts)_ +_See code: [src/commands/config/context/index.ts](https://github.com/asyncapi/cli/blob/v0.58.3/src/commands/config/context/index.ts)_ ## `asyncapi config context add CONTEXT-NAME SPEC-FILE-PATH` @@ -143,7 +143,7 @@ DESCRIPTION Add a context to the store ``` -_See code: [src/commands/config/context/add.ts](https://github.com/asyncapi/cli/blob/v0.58.2/src/commands/config/context/add.ts)_ +_See code: [src/commands/config/context/add.ts](https://github.com/asyncapi/cli/blob/v0.58.3/src/commands/config/context/add.ts)_ ## `asyncapi config context current` @@ -160,7 +160,7 @@ DESCRIPTION Shows the current context that is being used ``` -_See code: [src/commands/config/context/current.ts](https://github.com/asyncapi/cli/blob/v0.58.2/src/commands/config/context/current.ts)_ +_See code: [src/commands/config/context/current.ts](https://github.com/asyncapi/cli/blob/v0.58.3/src/commands/config/context/current.ts)_ ## `asyncapi config context edit CONTEXT-NAME NEW-SPEC-FILE-PATH` @@ -181,7 +181,7 @@ DESCRIPTION Edit a context in the store ``` -_See code: [src/commands/config/context/edit.ts](https://github.com/asyncapi/cli/blob/v0.58.2/src/commands/config/context/edit.ts)_ +_See code: [src/commands/config/context/edit.ts](https://github.com/asyncapi/cli/blob/v0.58.3/src/commands/config/context/edit.ts)_ ## `asyncapi config context init [CONTEXT-FILE-PATH]` @@ -204,7 +204,7 @@ DESCRIPTION Initialize context ``` -_See code: [src/commands/config/context/init.ts](https://github.com/asyncapi/cli/blob/v0.58.2/src/commands/config/context/init.ts)_ +_See code: [src/commands/config/context/init.ts](https://github.com/asyncapi/cli/blob/v0.58.3/src/commands/config/context/init.ts)_ ## `asyncapi config context list` @@ -221,7 +221,7 @@ DESCRIPTION List all the stored contexts in the store ``` -_See code: [src/commands/config/context/list.ts](https://github.com/asyncapi/cli/blob/v0.58.2/src/commands/config/context/list.ts)_ +_See code: [src/commands/config/context/list.ts](https://github.com/asyncapi/cli/blob/v0.58.3/src/commands/config/context/list.ts)_ ## `asyncapi config context remove CONTEXT-NAME` @@ -241,7 +241,7 @@ DESCRIPTION Delete a context from the store ``` -_See code: [src/commands/config/context/remove.ts](https://github.com/asyncapi/cli/blob/v0.58.2/src/commands/config/context/remove.ts)_ +_See code: [src/commands/config/context/remove.ts](https://github.com/asyncapi/cli/blob/v0.58.3/src/commands/config/context/remove.ts)_ ## `asyncapi config context use CONTEXT-NAME` @@ -261,7 +261,7 @@ DESCRIPTION Set a context as current ``` -_See code: [src/commands/config/context/use.ts](https://github.com/asyncapi/cli/blob/v0.58.2/src/commands/config/context/use.ts)_ +_See code: [src/commands/config/context/use.ts](https://github.com/asyncapi/cli/blob/v0.58.3/src/commands/config/context/use.ts)_ ## `asyncapi config versions` @@ -278,7 +278,7 @@ DESCRIPTION Show versions of AsyncAPI tools used ``` -_See code: [src/commands/config/versions.ts](https://github.com/asyncapi/cli/blob/v0.58.2/src/commands/config/versions.ts)_ +_See code: [src/commands/config/versions.ts](https://github.com/asyncapi/cli/blob/v0.58.3/src/commands/config/versions.ts)_ ## `asyncapi convert [SPEC-FILE]` @@ -300,7 +300,7 @@ DESCRIPTION Convert asyncapi documents older to newer versions ``` -_See code: [src/commands/convert.ts](https://github.com/asyncapi/cli/blob/v0.58.2/src/commands/convert.ts)_ +_See code: [src/commands/convert.ts](https://github.com/asyncapi/cli/blob/v0.58.3/src/commands/convert.ts)_ ## `asyncapi diff OLD NEW` @@ -355,7 +355,7 @@ DESCRIPTION Find diff between two asyncapi files ``` -_See code: [src/commands/diff.ts](https://github.com/asyncapi/cli/blob/v0.58.2/src/commands/diff.ts)_ +_See code: [src/commands/diff.ts](https://github.com/asyncapi/cli/blob/v0.58.3/src/commands/diff.ts)_ ## `asyncapi generate` @@ -369,7 +369,7 @@ DESCRIPTION Generate typed models or other things like clients, applications or docs using AsyncAPI Generator templates. ``` -_See code: [src/commands/generate/index.ts](https://github.com/asyncapi/cli/blob/v0.58.2/src/commands/generate/index.ts)_ +_See code: [src/commands/generate/index.ts](https://github.com/asyncapi/cli/blob/v0.58.3/src/commands/generate/index.ts)_ ## `asyncapi generate fromTemplate ASYNCAPI TEMPLATE` @@ -406,7 +406,7 @@ EXAMPLES $ asyncapi generate fromTemplate asyncapi.yaml @asyncapi/html-template --param version=1.0.0 singleFile=true --output ./docs --force-write ``` -_See code: [src/commands/generate/fromTemplate.ts](https://github.com/asyncapi/cli/blob/v0.58.2/src/commands/generate/fromTemplate.ts)_ +_See code: [src/commands/generate/fromTemplate.ts](https://github.com/asyncapi/cli/blob/v0.58.3/src/commands/generate/fromTemplate.ts)_ ## `asyncapi generate models LANGUAGE FILE` @@ -480,7 +480,7 @@ DESCRIPTION Generates typed models ``` -_See code: [src/commands/generate/models.ts](https://github.com/asyncapi/cli/blob/v0.58.2/src/commands/generate/models.ts)_ +_See code: [src/commands/generate/models.ts](https://github.com/asyncapi/cli/blob/v0.58.3/src/commands/generate/models.ts)_ ## `asyncapi new` @@ -535,7 +535,7 @@ EXAMPLES $ asyncapi new --file-name=my-asyncapi.yml --example=default-example.yml --no-tty - create a new file with a specific name, using one of the examples and without interactive mode ``` -_See code: [src/commands/new/index.ts](https://github.com/asyncapi/cli/blob/v0.58.2/src/commands/new/index.ts)_ +_See code: [src/commands/new/index.ts](https://github.com/asyncapi/cli/blob/v0.58.3/src/commands/new/index.ts)_ ## `asyncapi new file` @@ -590,7 +590,7 @@ EXAMPLES $ asyncapi new --file-name=my-asyncapi.yml --example=default-example.yml --no-tty - create a new file with a specific name, using one of the examples and without interactive mode ``` -_See code: [src/commands/new/file.ts](https://github.com/asyncapi/cli/blob/v0.58.2/src/commands/new/file.ts)_ +_See code: [src/commands/new/file.ts](https://github.com/asyncapi/cli/blob/v0.58.3/src/commands/new/file.ts)_ ## `asyncapi new glee` @@ -608,7 +608,7 @@ DESCRIPTION Creates a new Glee project ``` -_See code: [src/commands/new/glee.ts](https://github.com/asyncapi/cli/blob/v0.58.2/src/commands/new/glee.ts)_ +_See code: [src/commands/new/glee.ts](https://github.com/asyncapi/cli/blob/v0.58.3/src/commands/new/glee.ts)_ ## `asyncapi new project` @@ -626,7 +626,7 @@ DESCRIPTION Creates a new Glee project ``` -_See code: [src/commands/new/project.ts](https://github.com/asyncapi/cli/blob/v0.58.2/src/commands/new/project.ts)_ +_See code: [src/commands/new/project.ts](https://github.com/asyncapi/cli/blob/v0.58.3/src/commands/new/project.ts)_ ## `asyncapi optimize [SPEC-FILE]` @@ -662,7 +662,7 @@ EXAMPLES $ asyncapi optimize ./asyncapi.yaml --optimization=remove-components,reuse-components,move-to-components --output=terminal --no-tty ``` -_See code: [src/commands/optimize.ts](https://github.com/asyncapi/cli/blob/v0.58.2/src/commands/optimize.ts)_ +_See code: [src/commands/optimize.ts](https://github.com/asyncapi/cli/blob/v0.58.3/src/commands/optimize.ts)_ ## `asyncapi start` @@ -676,7 +676,7 @@ DESCRIPTION Start asyncapi studio ``` -_See code: [src/commands/start/index.ts](https://github.com/asyncapi/cli/blob/v0.58.2/src/commands/start/index.ts)_ +_See code: [src/commands/start/index.ts](https://github.com/asyncapi/cli/blob/v0.58.3/src/commands/start/index.ts)_ ## `asyncapi start studio` @@ -695,7 +695,7 @@ DESCRIPTION starts a new local instance of Studio ``` -_See code: [src/commands/start/studio.ts](https://github.com/asyncapi/cli/blob/v0.58.2/src/commands/start/studio.ts)_ +_See code: [src/commands/start/studio.ts](https://github.com/asyncapi/cli/blob/v0.58.3/src/commands/start/studio.ts)_ ## `asyncapi validate [SPEC-FILE]` @@ -722,5 +722,5 @@ DESCRIPTION validate asyncapi file ``` -_See code: [src/commands/validate.ts](https://github.com/asyncapi/cli/blob/v0.58.2/src/commands/validate.ts)_ +_See code: [src/commands/validate.ts](https://github.com/asyncapi/cli/blob/v0.58.3/src/commands/validate.ts)_ From b5eb9610320d57766cc9ed1dc8863977ddf35015 Mon Sep 17 00:00:00 2001 From: asyncapi-bot Date: Wed, 4 Oct 2023 15:10:14 +0200 Subject: [PATCH 007/134] docs(cli): update latest cli documentation (#2202) --- pages/docs/tools/cli/usage.md | 50 +++++++++++++++++------------------ 1 file changed, 25 insertions(+), 25 deletions(-) diff --git a/pages/docs/tools/cli/usage.md b/pages/docs/tools/cli/usage.md index be1e0f37f84..7ef1d823812 100644 --- a/pages/docs/tools/cli/usage.md +++ b/pages/docs/tools/cli/usage.md @@ -29,7 +29,7 @@ $ npm install -g @asyncapi/cli $ asyncapi COMMAND running command... $ asyncapi (--version) -@asyncapi/cli/0.58.3 linux-x64 node-v18.18.0 +@asyncapi/cli/0.58.4 linux-x64 node-v18.18.0 $ asyncapi --help [COMMAND] USAGE $ asyncapi COMMAND @@ -93,7 +93,7 @@ EXAMPLES $ asyncapi bundle ./asyncapi.yaml ./features.yaml --base ./asyncapi.yaml --reference-into-components ``` -_See code: [src/commands/bundle.ts](https://github.com/asyncapi/cli/blob/v0.58.3/src/commands/bundle.ts)_ +_See code: [src/commands/bundle.ts](https://github.com/asyncapi/cli/blob/v0.58.4/src/commands/bundle.ts)_ ## `asyncapi config` @@ -107,7 +107,7 @@ DESCRIPTION CLI config settings ``` -_See code: [src/commands/config/index.ts](https://github.com/asyncapi/cli/blob/v0.58.3/src/commands/config/index.ts)_ +_See code: [src/commands/config/index.ts](https://github.com/asyncapi/cli/blob/v0.58.4/src/commands/config/index.ts)_ ## `asyncapi config context` @@ -121,7 +121,7 @@ DESCRIPTION Manage short aliases for full paths to AsyncAPI documents ``` -_See code: [src/commands/config/context/index.ts](https://github.com/asyncapi/cli/blob/v0.58.3/src/commands/config/context/index.ts)_ +_See code: [src/commands/config/context/index.ts](https://github.com/asyncapi/cli/blob/v0.58.4/src/commands/config/context/index.ts)_ ## `asyncapi config context add CONTEXT-NAME SPEC-FILE-PATH` @@ -143,7 +143,7 @@ DESCRIPTION Add a context to the store ``` -_See code: [src/commands/config/context/add.ts](https://github.com/asyncapi/cli/blob/v0.58.3/src/commands/config/context/add.ts)_ +_See code: [src/commands/config/context/add.ts](https://github.com/asyncapi/cli/blob/v0.58.4/src/commands/config/context/add.ts)_ ## `asyncapi config context current` @@ -160,7 +160,7 @@ DESCRIPTION Shows the current context that is being used ``` -_See code: [src/commands/config/context/current.ts](https://github.com/asyncapi/cli/blob/v0.58.3/src/commands/config/context/current.ts)_ +_See code: [src/commands/config/context/current.ts](https://github.com/asyncapi/cli/blob/v0.58.4/src/commands/config/context/current.ts)_ ## `asyncapi config context edit CONTEXT-NAME NEW-SPEC-FILE-PATH` @@ -181,7 +181,7 @@ DESCRIPTION Edit a context in the store ``` -_See code: [src/commands/config/context/edit.ts](https://github.com/asyncapi/cli/blob/v0.58.3/src/commands/config/context/edit.ts)_ +_See code: [src/commands/config/context/edit.ts](https://github.com/asyncapi/cli/blob/v0.58.4/src/commands/config/context/edit.ts)_ ## `asyncapi config context init [CONTEXT-FILE-PATH]` @@ -204,7 +204,7 @@ DESCRIPTION Initialize context ``` -_See code: [src/commands/config/context/init.ts](https://github.com/asyncapi/cli/blob/v0.58.3/src/commands/config/context/init.ts)_ +_See code: [src/commands/config/context/init.ts](https://github.com/asyncapi/cli/blob/v0.58.4/src/commands/config/context/init.ts)_ ## `asyncapi config context list` @@ -221,7 +221,7 @@ DESCRIPTION List all the stored contexts in the store ``` -_See code: [src/commands/config/context/list.ts](https://github.com/asyncapi/cli/blob/v0.58.3/src/commands/config/context/list.ts)_ +_See code: [src/commands/config/context/list.ts](https://github.com/asyncapi/cli/blob/v0.58.4/src/commands/config/context/list.ts)_ ## `asyncapi config context remove CONTEXT-NAME` @@ -241,7 +241,7 @@ DESCRIPTION Delete a context from the store ``` -_See code: [src/commands/config/context/remove.ts](https://github.com/asyncapi/cli/blob/v0.58.3/src/commands/config/context/remove.ts)_ +_See code: [src/commands/config/context/remove.ts](https://github.com/asyncapi/cli/blob/v0.58.4/src/commands/config/context/remove.ts)_ ## `asyncapi config context use CONTEXT-NAME` @@ -261,7 +261,7 @@ DESCRIPTION Set a context as current ``` -_See code: [src/commands/config/context/use.ts](https://github.com/asyncapi/cli/blob/v0.58.3/src/commands/config/context/use.ts)_ +_See code: [src/commands/config/context/use.ts](https://github.com/asyncapi/cli/blob/v0.58.4/src/commands/config/context/use.ts)_ ## `asyncapi config versions` @@ -278,7 +278,7 @@ DESCRIPTION Show versions of AsyncAPI tools used ``` -_See code: [src/commands/config/versions.ts](https://github.com/asyncapi/cli/blob/v0.58.3/src/commands/config/versions.ts)_ +_See code: [src/commands/config/versions.ts](https://github.com/asyncapi/cli/blob/v0.58.4/src/commands/config/versions.ts)_ ## `asyncapi convert [SPEC-FILE]` @@ -300,7 +300,7 @@ DESCRIPTION Convert asyncapi documents older to newer versions ``` -_See code: [src/commands/convert.ts](https://github.com/asyncapi/cli/blob/v0.58.3/src/commands/convert.ts)_ +_See code: [src/commands/convert.ts](https://github.com/asyncapi/cli/blob/v0.58.4/src/commands/convert.ts)_ ## `asyncapi diff OLD NEW` @@ -355,7 +355,7 @@ DESCRIPTION Find diff between two asyncapi files ``` -_See code: [src/commands/diff.ts](https://github.com/asyncapi/cli/blob/v0.58.3/src/commands/diff.ts)_ +_See code: [src/commands/diff.ts](https://github.com/asyncapi/cli/blob/v0.58.4/src/commands/diff.ts)_ ## `asyncapi generate` @@ -369,7 +369,7 @@ DESCRIPTION Generate typed models or other things like clients, applications or docs using AsyncAPI Generator templates. ``` -_See code: [src/commands/generate/index.ts](https://github.com/asyncapi/cli/blob/v0.58.3/src/commands/generate/index.ts)_ +_See code: [src/commands/generate/index.ts](https://github.com/asyncapi/cli/blob/v0.58.4/src/commands/generate/index.ts)_ ## `asyncapi generate fromTemplate ASYNCAPI TEMPLATE` @@ -406,7 +406,7 @@ EXAMPLES $ asyncapi generate fromTemplate asyncapi.yaml @asyncapi/html-template --param version=1.0.0 singleFile=true --output ./docs --force-write ``` -_See code: [src/commands/generate/fromTemplate.ts](https://github.com/asyncapi/cli/blob/v0.58.3/src/commands/generate/fromTemplate.ts)_ +_See code: [src/commands/generate/fromTemplate.ts](https://github.com/asyncapi/cli/blob/v0.58.4/src/commands/generate/fromTemplate.ts)_ ## `asyncapi generate models LANGUAGE FILE` @@ -480,7 +480,7 @@ DESCRIPTION Generates typed models ``` -_See code: [src/commands/generate/models.ts](https://github.com/asyncapi/cli/blob/v0.58.3/src/commands/generate/models.ts)_ +_See code: [src/commands/generate/models.ts](https://github.com/asyncapi/cli/blob/v0.58.4/src/commands/generate/models.ts)_ ## `asyncapi new` @@ -535,7 +535,7 @@ EXAMPLES $ asyncapi new --file-name=my-asyncapi.yml --example=default-example.yml --no-tty - create a new file with a specific name, using one of the examples and without interactive mode ``` -_See code: [src/commands/new/index.ts](https://github.com/asyncapi/cli/blob/v0.58.3/src/commands/new/index.ts)_ +_See code: [src/commands/new/index.ts](https://github.com/asyncapi/cli/blob/v0.58.4/src/commands/new/index.ts)_ ## `asyncapi new file` @@ -590,7 +590,7 @@ EXAMPLES $ asyncapi new --file-name=my-asyncapi.yml --example=default-example.yml --no-tty - create a new file with a specific name, using one of the examples and without interactive mode ``` -_See code: [src/commands/new/file.ts](https://github.com/asyncapi/cli/blob/v0.58.3/src/commands/new/file.ts)_ +_See code: [src/commands/new/file.ts](https://github.com/asyncapi/cli/blob/v0.58.4/src/commands/new/file.ts)_ ## `asyncapi new glee` @@ -608,7 +608,7 @@ DESCRIPTION Creates a new Glee project ``` -_See code: [src/commands/new/glee.ts](https://github.com/asyncapi/cli/blob/v0.58.3/src/commands/new/glee.ts)_ +_See code: [src/commands/new/glee.ts](https://github.com/asyncapi/cli/blob/v0.58.4/src/commands/new/glee.ts)_ ## `asyncapi new project` @@ -626,7 +626,7 @@ DESCRIPTION Creates a new Glee project ``` -_See code: [src/commands/new/project.ts](https://github.com/asyncapi/cli/blob/v0.58.3/src/commands/new/project.ts)_ +_See code: [src/commands/new/project.ts](https://github.com/asyncapi/cli/blob/v0.58.4/src/commands/new/project.ts)_ ## `asyncapi optimize [SPEC-FILE]` @@ -662,7 +662,7 @@ EXAMPLES $ asyncapi optimize ./asyncapi.yaml --optimization=remove-components,reuse-components,move-to-components --output=terminal --no-tty ``` -_See code: [src/commands/optimize.ts](https://github.com/asyncapi/cli/blob/v0.58.3/src/commands/optimize.ts)_ +_See code: [src/commands/optimize.ts](https://github.com/asyncapi/cli/blob/v0.58.4/src/commands/optimize.ts)_ ## `asyncapi start` @@ -676,7 +676,7 @@ DESCRIPTION Start asyncapi studio ``` -_See code: [src/commands/start/index.ts](https://github.com/asyncapi/cli/blob/v0.58.3/src/commands/start/index.ts)_ +_See code: [src/commands/start/index.ts](https://github.com/asyncapi/cli/blob/v0.58.4/src/commands/start/index.ts)_ ## `asyncapi start studio` @@ -695,7 +695,7 @@ DESCRIPTION starts a new local instance of Studio ``` -_See code: [src/commands/start/studio.ts](https://github.com/asyncapi/cli/blob/v0.58.3/src/commands/start/studio.ts)_ +_See code: [src/commands/start/studio.ts](https://github.com/asyncapi/cli/blob/v0.58.4/src/commands/start/studio.ts)_ ## `asyncapi validate [SPEC-FILE]` @@ -722,5 +722,5 @@ DESCRIPTION validate asyncapi file ``` -_See code: [src/commands/validate.ts](https://github.com/asyncapi/cli/blob/v0.58.3/src/commands/validate.ts)_ +_See code: [src/commands/validate.ts](https://github.com/asyncapi/cli/blob/v0.58.4/src/commands/validate.ts)_ From a116cca3845c1d80997396821a3a707577c74e6c Mon Sep 17 00:00:00 2001 From: asyncapi-bot Date: Thu, 5 Oct 2023 02:34:45 +0200 Subject: [PATCH 008/134] chore: update meetings.json and newsrooom_videos.json (#2199) --- config/newsroom_videos.json | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/config/newsroom_videos.json b/config/newsroom_videos.json index 1f38101968e..527fe2db855 100644 --- a/config/newsroom_videos.json +++ b/config/newsroom_videos.json @@ -1,4 +1,10 @@ [ + { + "image_url": "https://i.ytimg.com/vi/91njwqsiKwg/hqdefault.jpg", + "title": "Community Meeting (October 3rd, 2023)", + "description": "https://github.com/asyncapi/community/issues/894.", + "videoId": "91njwqsiKwg" + }, { "image_url": "https://i.ytimg.com/vi/qjMojQ-fFew/hqdefault.jpg", "title": "Spec 3.0 docs meeting (September 28, 2023)", @@ -22,11 +28,5 @@ "title": "Generator and new parser discussion (September 6, 2023)", "description": "https://github.com/asyncapi/community/issues/865.", "videoId": "b4KcouHm958" - }, - { - "image_url": "https://i.ytimg.com/vi/1BjJWxAQ4Uk/hqdefault.jpg", - "title": "Brainstorm on AsyncAPI Cheat Sheet Poster (September 6, 2023)", - "description": "https://github.com/asyncapi/community/issues/862.", - "videoId": "1BjJWxAQ4Uk" } ] \ No newline at end of file From 4459e405bdd3f38072b05735b3db9caee6de6bde Mon Sep 17 00:00:00 2001 From: asyncapi-bot Date: Fri, 6 Oct 2023 02:33:31 +0200 Subject: [PATCH 009/134] chore: update meetings.json and newsrooom_videos.json (#2211) --- config/meetings.json | 7 -- dashboard.json | 279 +++++++++++++++++++++++++++++++++---------- 2 files changed, 214 insertions(+), 72 deletions(-) diff --git a/config/meetings.json b/config/meetings.json index 07a41278970..a1aa215adc2 100644 --- a/config/meetings.json +++ b/config/meetings.json @@ -13,13 +13,6 @@ "banner": "", "date": "2023-07-19T16:00:00.000Z" }, - { - "title": "Community Meeting", - "calLink": "https://www.google.com/calendar/event?eid=bjZxY3JoZmZjNmk0azU4bDdzOHFrOGcxY28gY19xOXRzZWlnbG9tZHNqNm5qdWh2YnB0czExY0Bn", - "url": "https://github.com/asyncapi/community/issues/762", - "banner": "https://user-images.githubusercontent.com/40604284/246774505-ba6d0600-d250-43fe-b6f3-5587de26ea01.png", - "date": "2023-06-27T08:00:00.000Z" - }, { "title": "Spec 3.0 Docs Meeting", "calLink": "https://www.google.com/calendar/event?eid=YmhiaTQxNDBicDA0NjgyZmk3M3ZocTJxbGcgY19xOXRzZWlnbG9tZHNqNm5qdWh2YnB0czExY0Bn", diff --git a/dashboard.json b/dashboard.json index a2412f594d0..9661de7f827 100644 --- a/dashboard.json +++ b/dashboard.json @@ -22,22 +22,6 @@ "labels": [], "score": 25.845712987433288 }, - { - "id": "I_kwDOBW5R_c5BIl5P", - "isPR": false, - "isAssigned": true, - "title": "Add new page for collecting user testing participants", - "author": "mcturco", - "resourcePath": "/asyncapi/website/issues/529", - "repo": "asyncapi/website", - "labels": [ - { - "name": "enhancement", - "color": "84b6eb" - } - ], - "score": 18.666348268701817 - }, { "id": "I_kwDODou01c5AqLB8", "isPR": false, @@ -50,10 +34,22 @@ { "name": "enhancement", "color": "a2eeef" - }, + } + ], + "score": 19.240697446200336 + }, + { + "id": "I_kwDOBW5R_c5BIl5P", + "isPR": false, + "isAssigned": true, + "title": "Add new page for collecting user testing participants", + "author": "mcturco", + "resourcePath": "/asyncapi/website/issues/529", + "repo": "asyncapi/website", + "labels": [ { - "name": "stale", - "color": "ededed" + "name": "enhancement", + "color": "84b6eb" } ], "score": 18.666348268701817 @@ -109,22 +105,6 @@ ], "score": 15.794602381209232 }, - { - "id": "MDU6SXNzdWU5ODkyOTg0MzY=", - "isPR": false, - "isAssigned": true, - "title": "Proposal to solve publish/subscribe confusion", - "author": "fmvilas", - "resourcePath": "/asyncapi/spec/issues/618", - "repo": "asyncapi/spec", - "labels": [ - { - "name": "💭 Strawman (RFC 0)", - "color": "C2E0C6" - } - ], - "score": 15.504217951581506 - }, { "id": "PR_kwDOBW5R_c5Worbr", "isPR": true, @@ -158,6 +138,17 @@ "labels": [], "score": 14.358729437462937 }, + { + "id": "PR_kwDOCoBobc42aMuI", + "isPR": true, + "isAssigned": false, + "title": "feat: release for version 3.0.0 of the spec", + "author": "jonaslagoni", + "resourcePath": "/asyncapi/parser-js/pull/526", + "repo": "asyncapi/parser-js", + "labels": [], + "score": 13.497205671215161 + }, { "id": "MDU6SXNzdWU2MDYzODgzNzM=", "isPR": false, @@ -180,6 +171,145 @@ } ], "goodFirstIssues": [ + { + "id": "I_kwDOFDnrNc5yy6e0", + "title": "The new glee command is generating a 2.1.0 document", + "isAssigned": false, + "resourcePath": "/asyncapi/cli/issues/829", + "repo": "asyncapi/cli", + "author": "fmvilas", + "area": "Unknown", + "labels": [ + { + "name": "bug", + "color": "d73a4a" + } + ] + }, + { + "id": "I_kwDOFLhIt85yyn4B", + "title": "Update tooling doc with info about new category", + "isAssigned": false, + "resourcePath": "/asyncapi/community/issues/899", + "repo": "asyncapi/community", + "author": "derberg", + "area": "docs", + "labels": [ + { + "name": "Hacktoberfest", + "color": "FF8AE2" + } + ] + }, + { + "id": "I_kwDODwv8N85yh95N", + "title": "would be nice if venue from past events is grayed out", + "isAssigned": false, + "resourcePath": "/asyncapi/conference-website/issues/208", + "repo": "asyncapi/conference-website", + "author": "derberg", + "area": "javascript", + "labels": [ + { + "name": "enhancement", + "color": "a2eeef" + }, + { + "name": "Hacktoberfest", + "color": "FF8AE2" + } + ] + }, + { + "id": "I_kwDOFi_gUM5ydv8_", + "title": "Remove this unused import of 'MiddlewareCallback'.", + "isAssigned": false, + "resourcePath": "/asyncapi/glee/issues/527", + "repo": "asyncapi/glee", + "author": "AceTheCreator", + "area": "Unknown", + "labels": [ + { + "name": "Hacktoberfest", + "color": "016479" + } + ] + }, + { + "id": "I_kwDOIUldZc5ydvwN", + "title": "Unexpected empty block", + "isAssigned": false, + "resourcePath": "/asyncapi/EDAVisualiser/issues/36", + "repo": "asyncapi/EDAVisualiser", + "author": "AceTheCreator", + "area": "Unknown", + "labels": [ + { + "name": "Hacktoberfest", + "color": "FF8AE2" + } + ] + }, + { + "id": "I_kwDOIUldZc5ydvrx", + "title": "Remove this commented out code.", + "isAssigned": false, + "resourcePath": "/asyncapi/EDAVisualiser/issues/35", + "repo": "asyncapi/EDAVisualiser", + "author": "AceTheCreator", + "area": "Unknown", + "labels": [ + { + "name": "Hacktoberfest", + "color": "FF8AE2" + } + ] + }, + { + "id": "I_kwDOIUldZc5ydvh1", + "title": "Consider using \"forEach\" instead of \"map\" as its return value is not being used here.", + "isAssigned": false, + "resourcePath": "/asyncapi/EDAVisualiser/issues/32", + "repo": "asyncapi/EDAVisualiser", + "author": "AceTheCreator", + "area": "Unknown", + "labels": [ + { + "name": "Hacktoberfest", + "color": "FF8AE2" + } + ] + }, + { + "id": "I_kwDOFDnrNc5ydvaR", + "title": "Nested block is redundant.", + "isAssigned": false, + "resourcePath": "/asyncapi/cli/issues/822", + "repo": "asyncapi/cli", + "author": "AceTheCreator", + "area": "Unknown", + "labels": [ + { + "name": "Hacktoberfest", + "color": "FF8AE2" + } + ] + }, + { + "id": "I_kwDOFDnrNc5ydvRt", + "title": "Nested block is redundant.", + "isAssigned": false, + "resourcePath": "/asyncapi/cli/issues/820", + "repo": "asyncapi/cli", + "author": "AceTheCreator", + "area": "Unknown", + "labels": [ + { + "name": "Hacktoberfest", + "color": "FF8AE2" + } + ] + }, { "id": "I_kwDOBW5R_c5yduk_", "title": "Single backtick is recognised as Codeblock", @@ -199,6 +329,36 @@ } ] }, + { + "id": "I_kwDOE8Qh385ydtaD", + "title": "The object passed as the value prop to the Context provider changes every render. To fix this consider wrapping it in a useMemo hook.", + "isAssigned": true, + "resourcePath": "/asyncapi/modelina/issues/1529", + "repo": "asyncapi/modelina", + "author": "AceTheCreator", + "area": "Unknown", + "labels": [ + { + "name": "Hacktoberfest", + "color": "FF8AE2" + } + ] + }, + { + "id": "I_kwDOE8Qh385ydtLO", + "title": "The object passed as the value prop to the Context provider changes every render. To fix this consider wrapping it in a useMemo hook.", + "isAssigned": false, + "resourcePath": "/asyncapi/modelina/issues/1526", + "repo": "asyncapi/modelina", + "author": "AceTheCreator", + "area": "Unknown", + "labels": [ + { + "name": "Hacktoberfest", + "color": "FF8AE2" + } + ] + }, { "id": "I_kwDODwv8N85yZpkH", "title": "Venue sub menu doesn't close", @@ -620,6 +780,25 @@ "area": "Unknown", "labels": [] }, + { + "id": "I_kwDOFi_gUM5oKd1h", + "title": "Generating docs failes if project is a git repository. ", + "isAssigned": false, + "resourcePath": "/asyncapi/glee/issues/461", + "repo": "asyncapi/glee", + "author": "Souvikns", + "area": "Unknown", + "labels": [ + { + "name": "bug", + "color": "d73a4a" + }, + { + "name": "Hacktoberfest", + "color": "016479" + } + ] + }, { "id": "I_kwDOE8Qh385nTCST", "title": "Improve layout of playground", @@ -749,21 +928,6 @@ } ] }, - { - "id": "I_kwDOE8Qh385hfhvh", - "title": "[📑 Docs]: Use code to represent the internal models", - "isAssigned": false, - "resourcePath": "/asyncapi/modelina/issues/1182", - "repo": "asyncapi/modelina", - "author": "jonaslagoni", - "area": "Unknown", - "labels": [ - { - "name": "📑 docs", - "color": "E50E99" - } - ] - }, { "id": "I_kwDOB5hCo85hBDME", "title": "Enable reusability of schemas between versions", @@ -779,21 +943,6 @@ } ] }, - { - "id": "I_kwDOFi_gUM5gx6CN", - "title": "error when running `npm install` in glee", - "isAssigned": false, - "resourcePath": "/asyncapi/glee/issues/403", - "repo": "asyncapi/glee", - "author": "KhudaDad414", - "area": "javascript", - "labels": [ - { - "name": "bug", - "color": "d73a4a" - } - ] - }, { "id": "I_kwDODCuNRs5e58gr", "title": "MQTT `retain` flag should be applied only to `publish` operations", From f34fc91b51ddcafda2c34a947ddcce9029cb0b0a Mon Sep 17 00:00:00 2001 From: asyncapi-bot Date: Sat, 7 Oct 2023 02:32:40 +0200 Subject: [PATCH 010/134] chore: update meetings.json and newsrooom_videos.json (#2212) --- config/newsroom_videos.json | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/config/newsroom_videos.json b/config/newsroom_videos.json index 527fe2db855..26d09c9e566 100644 --- a/config/newsroom_videos.json +++ b/config/newsroom_videos.json @@ -1,9 +1,9 @@ [ { - "image_url": "https://i.ytimg.com/vi/91njwqsiKwg/hqdefault.jpg", - "title": "Community Meeting (October 3rd, 2023)", + "image_url": "https://i.ytimg.com/vi/KTnFoXY_evs/hqdefault.jpg", + "title": "Hacktoberfest (October 6th, 2023)", "description": "https://github.com/asyncapi/community/issues/894.", - "videoId": "91njwqsiKwg" + "videoId": "KTnFoXY_evs" }, { "image_url": "https://i.ytimg.com/vi/qjMojQ-fFew/hqdefault.jpg", From c2ef93502e10347b64c056be6cc16eb6c36fe613 Mon Sep 17 00:00:00 2001 From: Shree Sawant <142529962+TheEques@users.noreply.github.com> Date: Sun, 8 Oct 2023 03:33:39 +0530 Subject: [PATCH 011/134] feat: add new category to categorylist.js (#2197) Co-authored-by: Lukasz Gornicki --- config/tools-manual.json | 7 ++++++- scripts/tools/categorylist.js | 5 +++++ 2 files changed, 11 insertions(+), 1 deletion(-) diff --git a/config/tools-manual.json b/config/tools-manual.json index bf6715de33b..c3fc4bbd7e0 100644 --- a/config/tools-manual.json +++ b/config/tools-manual.json @@ -27,6 +27,10 @@ } ] }, + "AsyncAPI Generator Templates": { + "description": "The following is a list of templates compatible with AsyncAPI Generator. You can use them to generate apps, clients or documentation from your AsyncAPI documents.", + "toolsList": [] + }, "Code-first tools": { "description": "The following is a list of tools that generate AsyncAPI documents from your code.", "toolsList": [ @@ -264,7 +268,8 @@ "react" ], "categories": [ - "documentation-generator" + "documentation-generator", + "generator-template" ], "hasCommercial": false } diff --git a/scripts/tools/categorylist.js b/scripts/tools/categorylist.js index 02bd86dbac7..28ef9414586 100644 --- a/scripts/tools/categorylist.js +++ b/scripts/tools/categorylist.js @@ -85,6 +85,11 @@ const categoryList = [ tag: "ide-extension", description: "The following is a list of extensions for different IDEs like VSCode, IntelliJ IDEA and others" }, + { + name: "AsyncAPI Generator Templates", + tag: "generator-template", + description: "The following is a list of templates compatible with AsyncAPI Generator. You can use them to generate apps, clients or documentation from your AsyncAPI documents." + }, { name: "Others", tag: "other", From 18a92b4ad6249f8f21aa355a14158648edec7fc0 Mon Sep 17 00:00:00 2001 From: asyncapi-bot Date: Sun, 8 Oct 2023 02:35:24 +0200 Subject: [PATCH 012/134] chore: update meetings.json and newsrooom_videos.json (#2213) --- dashboard.json | 81 ++++++++++++++++++++------------------------------ 1 file changed, 33 insertions(+), 48 deletions(-) diff --git a/dashboard.json b/dashboard.json index 9661de7f827..c4efaa2f378 100644 --- a/dashboard.json +++ b/dashboard.json @@ -9,7 +9,7 @@ "resourcePath": "/asyncapi/website/pull/2038", "repo": "asyncapi/website", "labels": [], - "score": 31.87637935116772 + "score": 33.02507770616476 }, { "id": "PR_kwDOFLhIt85Vmgtj", @@ -36,7 +36,7 @@ "color": "a2eeef" } ], - "score": 19.240697446200336 + "score": 19.527872034949596 }, { "id": "I_kwDOBW5R_c5BIl5P", @@ -54,26 +54,6 @@ ], "score": 18.666348268701817 }, - { - "id": "PR_kwDOBW5R_c5YEren", - "isPR": true, - "isAssigned": true, - "title": "docs: introducing request/reply ", - "author": "jonaslagoni", - "resourcePath": "/asyncapi/website/pull/2071", - "repo": "asyncapi/website", - "labels": [ - { - "name": "📑 docs", - "color": "E50E99" - }, - { - "name": "area/docs", - "color": "e50e99" - } - ], - "score": 17.517649913704783 - }, { "id": "I_kwDOCVQpZM5M_dcV", "isPR": false, @@ -105,17 +85,6 @@ ], "score": 15.794602381209232 }, - { - "id": "PR_kwDOBW5R_c5Worbr", - "isPR": true, - "isAssigned": false, - "title": "docs: add v3 migration guide", - "author": "jonaslagoni", - "resourcePath": "/asyncapi/website/pull/2008", - "repo": "asyncapi/website", - "labels": [], - "score": 15.220253203710714 - }, { "id": "PR_kwDOFDnrNc5RUbi_", "isPR": true, @@ -168,6 +137,37 @@ } ], "score": 13.210031082465903 + }, + { + "id": "PR_kwDOBW5R_c5RI5z2", + "isPR": true, + "isAssigned": false, + "title": "feat: add testimonial carousel", + "author": "Lucif3r-in", + "resourcePath": "/asyncapi/website/pull/1704", + "repo": "asyncapi/website", + "labels": [], + "score": 12.922856493716644 + }, + { + "id": "I_kwDODyzcIc5gD3jB", + "isPR": false, + "isAssigned": false, + "title": "Automate `paper work` around project governance", + "author": "derberg", + "resourcePath": "/asyncapi/.github/issues/210", + "repo": "asyncapi/.github", + "labels": [ + { + "name": "enhancement", + "color": "a2eeef" + }, + { + "name": "gsoc", + "color": "F4D03F" + } + ], + "score": 12.635681904967385 } ], "goodFirstIssues": [ @@ -295,21 +295,6 @@ } ] }, - { - "id": "I_kwDOFDnrNc5ydvRt", - "title": "Nested block is redundant.", - "isAssigned": false, - "resourcePath": "/asyncapi/cli/issues/820", - "repo": "asyncapi/cli", - "author": "AceTheCreator", - "area": "Unknown", - "labels": [ - { - "name": "Hacktoberfest", - "color": "FF8AE2" - } - ] - }, { "id": "I_kwDOBW5R_c5yduk_", "title": "Single backtick is recognised as Codeblock", From 23aabbebd5ae345330d1cc1b03a96b1a0df30809 Mon Sep 17 00:00:00 2001 From: asyncapi-bot Date: Mon, 9 Oct 2023 02:35:47 +0200 Subject: [PATCH 013/134] chore: update tools.json (#2214) --- config/all-tags.json | 2 +- config/tools-automated.json | 107 ++++++++++++++++++++++-------------- config/tools.json | 2 +- 3 files changed, 67 insertions(+), 44 deletions(-) diff --git a/config/all-tags.json b/config/all-tags.json index 6cd1a7e47e1..2bcb64772e6 100644 --- a/config/all-tags.json +++ b/config/all-tags.json @@ -1 +1 @@ -{"languages":[{"name":"Go/Golang","color":"bg-[#8ECFDF]","borderColor":"border-[#00AFD9]"},{"name":"Java","color":"bg-[#ECA2A4]","borderColor":"border-[#EC2125]"},{"name":"JavaScript","color":"bg-[#F2F1C7]","borderColor":"border-[#BFBE86]"},{"name":"HTML","color":"bg-[#E2A291]","borderColor":"border-[#E44D26]"},{"name":"C/C++","color":"bg-[#93CDEF]","borderColor":"border-[#0080CC]"},{"name":"C#","color":"bg-[#E3AFE0]","borderColor":"border-[#9B4F96]"},{"name":"Python","color":"bg-[#A8D0EF]","borderColor":"border-[#3878AB]"},{"name":"TypeScript","color":"bg-[#7DBCFE]","borderColor":"border-[#2C78C7]"},{"name":"Kotlin","color":"bg-[#B1ACDF]","borderColor":"border-[#756BD9]"},{"name":"Scala","color":"bg-[#FFA299]","borderColor":"border-[#DF301F]"},{"name":"Markdown","color":"bg-[#BABEBF]","borderColor":"border-[#445B64]"},{"name":"YAML","color":"bg-[#FFB764]","borderColor":"border-[#F1901F]"},{"name":"R","color":"bg-[#84B5ED]","borderColor":"border-[#246BBE]"},{"name":"Ruby","color":"bg-[#FF8289]","borderColor":"border-[#FF000F]"},{"name":"Rust","color":"bg-[#FFB8AA]","borderColor":"border-[#E43716]"},{"name":"Shell","color":"bg-[#87D4FF]","borderColor":"border-[#389ED7]"},{"name":"Groovy","color":"bg-[#B6D5E5]","borderColor":"border-[#609DBC]"}],"technologies":[{"name":"Node.js","color":"bg-[#BDFF67]","borderColor":"border-[#84CE24]"},{"name":"Hermes","color":"bg-[#8AEEBD]","borderColor":"border-[#2AB672]"},{"name":"React JS","color":"bg-[#9FECFA]","borderColor":"border-[#08D8FE]"},{"name":".NET","color":"bg-[#A184FF]","borderColor":"border-[#5026D4]"},{"name":"ASP.NET","color":"bg-[#71C2FB]","borderColor":"border-[#1577BC]"},{"name":"Springboot","color":"bg-[#98E279]","borderColor":"border-[#68BC44]"},{"name":"AWS","color":"bg-[#FF9F59]","borderColor":"border-[#EF6703]"},{"name":"Docker","color":"bg-[#B8E0FF]","borderColor":"border-[#2596ED]"},{"name":"Node-RED","color":"bg-[#FF7474]","borderColor":"border-[#8F0101]"},{"name":"Maven","color":"bg-[#FF6B80]","borderColor":"border-[#CA1A33]"},{"name":"Saas","color":"bg-[#6AB8EC]","borderColor":"border-[#2275AD]"},{"name":"Kubernetes-native","color":"bg-[#D7C7F2]","borderColor":"border-[#A387D2]"},{"name":"Scala","color":"bg-[#D7C7F2]","borderColor":"border-[#A387D2]"},{"name":"Azure","color":"bg-[#4B93FF]","borderColor":"border-[#015ADF]"},{"name":"Jenkins","color":"bg-[#D7C7F2]","borderColor":"border-[#A387D2]"},{"name":"Flask","color":"bg-[#D7C7F2]","borderColor":"border-[#A387D2]"},{"name":"Nest Js","color":"bg-[#E1224E]","borderColor":"border-[#B9012b]"},{"name":"TypeScript","color":"bg-[#61d0f2]","borderColor":"border-[#40ccf7]"},{"name":"Socket.IO","color":"bg-[#61d0f2]","borderColor":"border-[#40ccf7]"},{"name":"Liquid","color":"bg-[#61d0f2]","borderColor":"border-[#40ccf7]"},{"name":"Kotlin","color":"bg-[#61d0f2]","borderColor":"border-[#40ccf7]"},{"name":"Gradle","color":"bg-[#61d0f2]","borderColor":"border-[#40ccf7]"},{"name":"Spring Cloud Streams","color":"bg-[#61d0f2]","borderColor":"border-[#40ccf7]"},{"name":"JHipster JDL","color":"bg-[#61d0f2]","borderColor":"border-[#40ccf7]"},{"name":"Groovy","color":"bg-[#61d0f2]","borderColor":"border-[#40ccf7]"},{"name":"Markdown","color":"bg-[#61d0f2]","borderColor":"border-[#40ccf7]"},{"name":"Shell","color":"bg-[#61d0f2]","borderColor":"border-[#40ccf7]"},{"name":"WebComponents","color":"bg-[#61d0f2]","borderColor":"border-[#40ccf7]"},{"name":"Babel","color":"bg-[#61d0f2]","borderColor":"border-[#40ccf7]"},{"name":"Storybook","color":"bg-[#61d0f2]","borderColor":"border-[#40ccf7]"},{"name":"AsyncAPI Generator","color":"bg-[#61d0f2]","borderColor":"border-[#40ccf7]"},{"name":"VSCode","color":"bg-[#61d0f2]","borderColor":"border-[#40ccf7]"},{"name":"SmartPaste","color":"bg-[#61d0f2]","borderColor":"border-[#40ccf7]"},{"name":"JetBrains","color":"bg-[#61d0f2]","borderColor":"border-[#40ccf7]"},{"name":"IntelliJ IDEA","color":"bg-[#61d0f2]","borderColor":"border-[#40ccf7]"}]} \ No newline at end of file +{"languages":[{"name":"Go/Golang","color":"bg-[#8ECFDF]","borderColor":"border-[#00AFD9]"},{"name":"Java","color":"bg-[#ECA2A4]","borderColor":"border-[#EC2125]"},{"name":"JavaScript","color":"bg-[#F2F1C7]","borderColor":"border-[#BFBE86]"},{"name":"HTML","color":"bg-[#E2A291]","borderColor":"border-[#E44D26]"},{"name":"C/C++","color":"bg-[#93CDEF]","borderColor":"border-[#0080CC]"},{"name":"C#","color":"bg-[#E3AFE0]","borderColor":"border-[#9B4F96]"},{"name":"Python","color":"bg-[#A8D0EF]","borderColor":"border-[#3878AB]"},{"name":"TypeScript","color":"bg-[#7DBCFE]","borderColor":"border-[#2C78C7]"},{"name":"Kotlin","color":"bg-[#B1ACDF]","borderColor":"border-[#756BD9]"},{"name":"Scala","color":"bg-[#FFA299]","borderColor":"border-[#DF301F]"},{"name":"Markdown","color":"bg-[#BABEBF]","borderColor":"border-[#445B64]"},{"name":"YAML","color":"bg-[#FFB764]","borderColor":"border-[#F1901F]"},{"name":"R","color":"bg-[#84B5ED]","borderColor":"border-[#246BBE]"},{"name":"Ruby","color":"bg-[#FF8289]","borderColor":"border-[#FF000F]"},{"name":"Rust","color":"bg-[#FFB8AA]","borderColor":"border-[#E43716]"},{"name":"Shell","color":"bg-[#87D4FF]","borderColor":"border-[#389ED7]"},{"name":"Groovy","color":"bg-[#B6D5E5]","borderColor":"border-[#609DBC]"}],"technologies":[{"name":"Node.js","color":"bg-[#BDFF67]","borderColor":"border-[#84CE24]"},{"name":"Hermes","color":"bg-[#8AEEBD]","borderColor":"border-[#2AB672]"},{"name":"React JS","color":"bg-[#9FECFA]","borderColor":"border-[#08D8FE]"},{"name":".NET","color":"bg-[#A184FF]","borderColor":"border-[#5026D4]"},{"name":"ASP.NET","color":"bg-[#71C2FB]","borderColor":"border-[#1577BC]"},{"name":"Springboot","color":"bg-[#98E279]","borderColor":"border-[#68BC44]"},{"name":"AWS","color":"bg-[#FF9F59]","borderColor":"border-[#EF6703]"},{"name":"Docker","color":"bg-[#B8E0FF]","borderColor":"border-[#2596ED]"},{"name":"Node-RED","color":"bg-[#FF7474]","borderColor":"border-[#8F0101]"},{"name":"Maven","color":"bg-[#FF6B80]","borderColor":"border-[#CA1A33]"},{"name":"Saas","color":"bg-[#6AB8EC]","borderColor":"border-[#2275AD]"},{"name":"Kubernetes-native","color":"bg-[#D7C7F2]","borderColor":"border-[#A387D2]"},{"name":"Scala","color":"bg-[#D7C7F2]","borderColor":"border-[#A387D2]"},{"name":"Azure","color":"bg-[#4B93FF]","borderColor":"border-[#015ADF]"},{"name":"Jenkins","color":"bg-[#D7C7F2]","borderColor":"border-[#A387D2]"},{"name":"Flask","color":"bg-[#D7C7F2]","borderColor":"border-[#A387D2]"},{"name":"Nest Js","color":"bg-[#E1224E]","borderColor":"border-[#B9012b]"},{"name":"TypeScript","color":"bg-[#61d0f2]","borderColor":"border-[#40ccf7]"},{"name":"Socket.IO","color":"bg-[#61d0f2]","borderColor":"border-[#40ccf7]"},{"name":"Liquid","color":"bg-[#61d0f2]","borderColor":"border-[#40ccf7]"},{"name":"Kotlin","color":"bg-[#61d0f2]","borderColor":"border-[#40ccf7]"},{"name":"Gradle","color":"bg-[#61d0f2]","borderColor":"border-[#40ccf7]"},{"name":"Spring Cloud Streams","color":"bg-[#61d0f2]","borderColor":"border-[#40ccf7]"},{"name":"JHipster JDL","color":"bg-[#61d0f2]","borderColor":"border-[#40ccf7]"},{"name":"Groovy","color":"bg-[#61d0f2]","borderColor":"border-[#40ccf7]"},{"name":"Markdown","color":"bg-[#61d0f2]","borderColor":"border-[#40ccf7]"},{"name":"Shell","color":"bg-[#61d0f2]","borderColor":"border-[#40ccf7]"},{"name":"WebComponents","color":"bg-[#61d0f2]","borderColor":"border-[#40ccf7]"},{"name":"Babel","color":"bg-[#61d0f2]","borderColor":"border-[#40ccf7]"},{"name":"Storybook","color":"bg-[#61d0f2]","borderColor":"border-[#40ccf7]"},{"name":"AsyncAPI Generator","color":"bg-[#61d0f2]","borderColor":"border-[#40ccf7]"},{"name":"JetBrains","color":"bg-[#61d0f2]","borderColor":"border-[#40ccf7]"},{"name":"IntelliJ IDEA","color":"bg-[#61d0f2]","borderColor":"border-[#40ccf7]"},{"name":"VSCode","color":"bg-[#61d0f2]","borderColor":"border-[#40ccf7]"},{"name":"SmartPaste","color":"bg-[#61d0f2]","borderColor":"border-[#40ccf7]"}]} \ No newline at end of file diff --git a/config/tools-automated.json b/config/tools-automated.json index 21f8c06b1c4..d4da755ec55 100644 --- a/config/tools-automated.json +++ b/config/tools-automated.json @@ -117,21 +117,6 @@ "Code Generators": { "description": "The following is a list of tools that generate code from an AsyncAPI document; not the other way around.", "toolsList": [ - { - "title": "Golang AsyncAPI Code Generator", - "description": "Generate Go user and application boilerplate from AsyncAPI specifications. Can be called from `go generate` without requirements.\n", - "links": { - "repoUrl": "https://github.com/lerenn/asyncapi-codegen" - }, - "filters": { - "language": "golang", - "categories": [ - "code-generator" - ], - "hasCommercial": false, - "isAsyncAPIOwner": false - } - }, { "title": "ZenWave SDK", "description": "DDD and API-First for Event-Driven Microservices", @@ -157,6 +142,21 @@ "hasCommercial": false, "isAsyncAPIOwner": false } + }, + { + "title": "Golang AsyncAPI Code Generator", + "description": "Generate Go user and application boilerplate from AsyncAPI specifications. Can be called from `go generate` without requirements.\n", + "links": { + "repoUrl": "https://github.com/lerenn/asyncapi-codegen" + }, + "filters": { + "language": "golang", + "categories": [ + "code-generator" + ], + "hasCommercial": false, + "isAsyncAPIOwner": false + } } ] }, @@ -399,41 +399,41 @@ "description": "The following is a list of tools that compare AsyncAPI documents.", "toolsList": [ { - "title": "jasyncapicmp", - "description": "Tool for comparing two AsyncAPI versions and evaluating compatibility.", + "title": "AsyncAPI Diff", + "description": "Diff is a library that compares two AsyncAPI Documents and provides information about the differences by pointing out explicitly information like breaking changes.", "links": { - "websiteUrl": "https://siom79.github.io/jasyncapicmp/", - "docsUrl": "https://github.com/siom79/jasyncapicmp", - "repoUrl": "https://github.com/siom79/jasyncapicmp" + "repoUrl": "https://github.com/asyncapi/diff" }, "filters": { - "language": "Java", + "language": "TypeScript", "technology": [ - "Maven" + "TypeScript" ], "categories": [ "compare-tool" ], "hasCommercial": false, - "isAsyncAPIOwner": false + "isAsyncAPIOwner": true } }, { - "title": "AsyncAPI Diff", - "description": "Diff is a library that compares two AsyncAPI Documents and provides information about the differences by pointing out explicitly information like breaking changes.", + "title": "jasyncapicmp", + "description": "Tool for comparing two AsyncAPI versions and evaluating compatibility.", "links": { - "repoUrl": "https://github.com/asyncapi/diff" + "websiteUrl": "https://siom79.github.io/jasyncapicmp/", + "docsUrl": "https://github.com/siom79/jasyncapicmp", + "repoUrl": "https://github.com/siom79/jasyncapicmp" }, "filters": { - "language": "TypeScript", + "language": "Java", "technology": [ - "TypeScript" + "Maven" ], "categories": [ "compare-tool" ], "hasCommercial": false, - "isAsyncAPIOwner": true + "isAsyncAPIOwner": false } } ] @@ -515,15 +515,18 @@ "description": "The following is a list of extensions for different IDEs like VSCode, IntelliJ IDEA and others", "toolsList": [ { - "title": "asyncapi-preview", - "description": "VSCode extension that enables you to:\n - Preview documentation generated using you AsyncAPI document. It uses AsyncAPI React component under the hood,\n - Create AsyncAPI documents faster using SmartPaste functionality\n", + "title": "jAsyncAPI - IDEA plugin", + "description": "Idea plugin for the java-asyncapi - Helps to edit and validate AsyncAPI schemas.", "links": { - "repoUrl": "https://github.com/asyncapi/vs-asyncapi-preview" + "websiteUrl": "https://plugins.jetbrains.com/plugin/15673-asyncapi", + "docsUrl": "https://github.com/asyncapi/jasyncapi-idea-plugin#usage", + "repoUrl": "https://github.com/asyncapi/jasyncapi-idea-plugin" }, "filters": { + "language": "Kotlin", "technology": [ - "VSCode", - "SmartPaste" + "JetBrains", + "IntelliJ IDEA" ], "categories": [ "ide-extension" @@ -533,18 +536,15 @@ } }, { - "title": "jAsyncAPI - IDEA plugin", - "description": "Idea plugin for the java-asyncapi - Helps to edit and validate AsyncAPI schemas.", + "title": "asyncapi-preview", + "description": "VSCode extension that enables you to:\n - Preview documentation generated using you AsyncAPI document. It uses AsyncAPI React component under the hood,\n - Create AsyncAPI documents faster using SmartPaste functionality\n", "links": { - "websiteUrl": "https://plugins.jetbrains.com/plugin/15673-asyncapi", - "docsUrl": "https://github.com/asyncapi/jasyncapi-idea-plugin#usage", - "repoUrl": "https://github.com/asyncapi/jasyncapi-idea-plugin" + "repoUrl": "https://github.com/asyncapi/vs-asyncapi-preview" }, "filters": { - "language": "Kotlin", "technology": [ - "JetBrains", - "IntelliJ IDEA" + "VSCode", + "SmartPaste" ], "categories": [ "ide-extension" @@ -573,6 +573,29 @@ } ] }, + "AsyncAPI Generator Templates": { + "description": "The following is a list of templates compatible with AsyncAPI Generator. You can use them to generate apps, clients or documentation from your AsyncAPI documents.", + "toolsList": [ + { + "title": "Node.js Multiprotocol Template", + "description": "This template generates a server using your AsyncAPI document. It supports multiple different protocols, like Kafka or MQTT. It is designed in the way that generated code is a library and with it's API you can start the server, send messages or register a middleware for listening incoming messages. Runtime message validation included.", + "links": { + "repoUrl": "https://github.com/asyncapi/nodejs-template" + }, + "filters": { + "language": "javascript", + "technology": [ + "Node.js" + ], + "categories": [ + "generator-template" + ], + "hasCommercial": false, + "isAsyncAPIOwner": true + } + } + ] + }, "Others": { "description": "The following is a list of tools that comes under Other category.", "toolsList": [ diff --git a/config/tools.json b/config/tools.json index 74ac5c25c43..0769aa843b2 100644 --- a/config/tools.json +++ b/config/tools.json @@ -1 +1 @@ -{"APIs":{"description":"The following is a list of APIs that expose functionality related to AsyncAPI.","toolsList":[{"title":"API Tracker - AsyncAPI specs","description":"Explore APIs and companies with public AsyncAPI specifications.","links":{"websiteUrl":"https://apitracker.io/specifications/asyncapi","repoUrl":""},"filters":{"categories":["api","directory"],"hasCommercial":false,"isAsyncAPIOwner":false,"technology":[]}},{"title":"AsyncAPI Server API","description":"Server API providing official AsyncAPI tools","links":{"websiteUrl":"https://api.asyncapi.com/v1","docsUrl":"https://api.asyncapi.com/v1/docs","repoUrl":"https://github.com/asyncapi/server-api"},"filters":{"technology":[{"name":"Node.js","color":"bg-[#BDFF67]","borderColor":"border-[#84CE24]"},{"name":"TypeScript","color":"bg-[#61d0f2]","borderColor":"border-[#40ccf7]"}],"categories":["api"],"hasCommercial":false,"isAsyncAPIOwner":true}},{"title":"AsyncAPI-Directory by APIs.guru","description":"Directory of asynchronous API specifications in AsyncAPI format.","links":{"websiteUrl":"https://apis.guru/asyncapi-directory/","repoUrl":"https://github.com/APIs-guru/asyncapi-directory"},"filters":{"language":[{"name":"JavaScript","color":"bg-[#F2F1C7]","borderColor":"border-[#BFBE86]"}],"technology":[{"name":"Node.js","color":"bg-[#BDFF67]","borderColor":"border-[#84CE24]"},{"name":"Liquid","color":"bg-[#61d0f2]","borderColor":"border-[#40ccf7]"}],"categories":["api","directory"],"hasCommercial":false,"isAsyncAPIOwner":false}},{"title":"SIO-AsyncAPI","description":"This is code-first approach to generate AsyncAPI specification from Socket.IO server.","links":{"websiteUrl":"https://github.com/daler-rahimov/sio-asyncapi","docsUrl":"https://github.com/daler-rahimov/sio-asyncapi","repoUrl":"https://github.com/daler-rahimov/sio-asyncapi"},"filters":{"language":[{"name":"Python","color":"bg-[#A8D0EF]","borderColor":"border-[#3878AB]"}],"technology":[{"name":"Socket.IO","color":"bg-[#61d0f2]","borderColor":"border-[#40ccf7]"},{"name":"Flask","color":"bg-[#D7C7F2]","borderColor":"border-[#A387D2]"}],"categories":["code-first","api"],"hasCommercial":false,"isAsyncAPIOwner":false}}]},"Code-first tools":{"description":"The following is a list of tools that generate AsyncAPI documents from your code.","toolsList":[{"title":"AsyncAPI.Net","description":"The AsyncAPI.NET SDK contains a useful object model for AsyncAPI documents in .NET along with common serializers to extract raw OpenAPI JSON and YAML documents from the model.","links":{"websiteUrl":"https://github.com/LEGO/AsyncAPI.NET/","repoUrl":"https://github.com/LEGO/AsyncAPI.NET"},"filters":{"language":[{"name":"C#","color":"bg-[#E3AFE0]","borderColor":"border-[#9B4F96]"}],"technology":[{"name":".NET","color":"bg-[#A184FF]","borderColor":"border-[#5026D4]"},{"name":"ASP.NET","color":"bg-[#71C2FB]","borderColor":"border-[#1577BC]"}],"categories":["converters","code-first","validator"],"hasCommercial":false,"isAsyncAPIOwner":false}},{"title":"EventBridge Atlas","description":"Tool that translates your AWS EventBridge Schemas into an AsyncAPI document and a web UI.","links":{"websiteUrl":"https://eventbridge-atlas.netlify.app/","repoUrl":"https://github.com/boyney123/eventbridge-atlas"},"filters":{"technology":[{"name":"Node.js","color":"bg-[#BDFF67]","borderColor":"border-[#84CE24]"}],"categories":["code-first"],"hasCommercial":false,"isAsyncAPIOwner":false}},{"title":"Go AsyncAPI","description":"This library helps to create AsyncAPI spec from your Go message structures. It uses reflection to translate Go structures in JSON Schema definitions and arrange them in AsyncAPI schema.","links":{"repoUrl":"https://github.com/swaggest/go-asyncapi"},"filters":{"language":[{"name":"Go/Golang","color":"bg-[#8ECFDF]","borderColor":"border-[#00AFD9]"}],"categories":["code-first"],"hasCommercial":false,"isAsyncAPIOwner":false,"technology":[]}},{"title":"Java AsyncAPI","description":"This tool stores modules, which simplifies interacting with AsyncAPI in jvm ecosystem.","links":{"repoUrl":"https://github.com/asyncapi/jasyncapi"},"filters":{"language":[{"name":"Java","color":"bg-[#ECA2A4]","borderColor":"border-[#EC2125]"}],"technology":[{"name":"Kotlin","color":"bg-[#61d0f2]","borderColor":"border-[#40ccf7]"},{"name":"Maven","color":"bg-[#FF6B80]","borderColor":"border-[#CA1A33]"}],"categories":["code-first"],"hasCommercial":false,"isAsyncAPIOwner":true}},{"title":"KnstEventBus","description":"AsyncApi code-first tools for c#. Generates document and view.","links":{"repoUrl":"https://github.com/d0972058277/KnstEventBus"},"filters":{"language":[{"name":"C#","color":"bg-[#E3AFE0]","borderColor":"border-[#9B4F96]"}],"technology":[{"name":"ASP.NET","color":"bg-[#71C2FB]","borderColor":"border-[#1577BC]"},{"name":".NET","color":"bg-[#A184FF]","borderColor":"border-[#5026D4]"}],"categories":["code-first","documentation-generator"],"hasCommercial":false,"isAsyncAPIOwner":false}},{"title":"Kotlin AsyncAPI","description":"The Kotlin AsyncAPI project aims to provide convenience tools for generating and serving AsyncAPI documentation. The core of this project is a Kotlin DSL for building the specification in a typesafe way.","links":{"repoUrl":"https://github.com/OpenFolder/kotlin-asyncapi"},"filters":{"language":[{"name":"Kotlin","color":"bg-[#B1ACDF]","borderColor":"border-[#756BD9]"}],"technology":[{"name":"Springboot","color":"bg-[#98E279]","borderColor":"border-[#68BC44]"},{"name":"Maven","color":"bg-[#FF6B80]","borderColor":"border-[#CA1A33]"}],"categories":["code-first"],"hasCommercial":false,"isAsyncAPIOwner":false}},{"title":"nestjs-asyncapi","description":"Utilize decorators to generate AsyncAPI document utilizing DTOs (similar to @nestjs/swagger) and a web UI.","links":{"repoUrl":"https://github.com/flamewow/nestjs-asyncapi"},"filters":{"language":[{"name":"TypeScript","color":"bg-[#7DBCFE]","borderColor":"border-[#2C78C7]"}],"technology":[{"name":"Node.js","color":"bg-[#BDFF67]","borderColor":"border-[#84CE24]"},{"name":"Nest Js","color":"bg-[#E1224E]","borderColor":"border-[#B9012b]"}],"categories":["code-first"],"hasCommercial":false,"isAsyncAPIOwner":false}},{"title":"Neuroglia AsyncAPI","description":"A .NET SDK for the Async API specification. Automatically generates and serves AsyncAPI documents based on your code. Includes fluent-builders to create AsyncAPI documents from scratch, and provides a web-based GUI to browse generated documents.","links":{"repoUrl":"https://github.com/neuroglia-io/AsyncApi"},"filters":{"language":[{"name":"C#","color":"bg-[#E3AFE0]","borderColor":"border-[#9B4F96]"}],"technology":[{"name":".NET","color":"bg-[#A184FF]","borderColor":"border-[#5026D4]"}],"categories":["code-first"],"hasCommercial":false,"isAsyncAPIOwner":false}},{"title":"Saunter","description":"Saunter is an AsyncAPI documentation generator for dotnet. Generates (and hosts) an AsyncAPI schema document from your code.","links":{"repoUrl":"https://github.com/tehmantra/saunter"},"filters":{"language":[{"name":"C#","color":"bg-[#E3AFE0]","borderColor":"border-[#9B4F96]"}],"technology":[{"name":".NET","color":"bg-[#A184FF]","borderColor":"border-[#5026D4]"},{"name":"ASP.NET","color":"bg-[#71C2FB]","borderColor":"border-[#1577BC]"}],"categories":["code-first"],"hasCommercial":false,"isAsyncAPIOwner":false}},{"title":"SIO-AsyncAPI","description":"This is code-first approach to generate AsyncAPI specification from Socket.IO server.","links":{"websiteUrl":"https://github.com/daler-rahimov/sio-asyncapi","docsUrl":"https://github.com/daler-rahimov/sio-asyncapi","repoUrl":"https://github.com/daler-rahimov/sio-asyncapi"},"filters":{"language":[{"name":"Python","color":"bg-[#A8D0EF]","borderColor":"border-[#3878AB]"}],"technology":[{"name":"Socket.IO","color":"bg-[#61d0f2]","borderColor":"border-[#40ccf7]"},{"name":"Flask","color":"bg-[#D7C7F2]","borderColor":"border-[#A387D2]"}],"categories":["code-first","api"],"hasCommercial":false,"isAsyncAPIOwner":false}},{"title":"Springwolf","description":"Automated documentation for async APIs built with Spring Boot. Like Springfox for AsyncAPI. Auto-generates an AsyncAPI document and a web UI.","links":{"websiteUrl":"https://www.springwolf.dev","repoUrl":"https://github.com/springwolf/springwolf-core"},"filters":{"language":[{"name":"Java","color":"bg-[#ECA2A4]","borderColor":"border-[#EC2125]"}],"technology":[{"name":"Springboot","color":"bg-[#98E279]","borderColor":"border-[#68BC44]"},{"name":"Gradle","color":"bg-[#61d0f2]","borderColor":"border-[#40ccf7]"}],"categories":["code-first","documentation-generator"],"hasCommercial":false,"isAsyncAPIOwner":false}},{"title":"sttp tapir","description":"Library for describing HTTP endpoints, and then interpreting them as a server, client, or documentation","links":{"websiteUrl":"https://tapir.softwaremill.com/","repoUrl":"https://github.com/softwaremill/tapir"},"filters":{"language":[{"name":"Scala","color":"bg-[#FFA299]","borderColor":"border-[#DF301F]"}],"categories":["code-first"],"hasCommercial":false,"isAsyncAPIOwner":false,"technology":[]}}]},"Code Generators":{"description":"The following is a list of tools that generate code from an AsyncAPI document; not the other way around.","toolsList":[{"title":"AsyncAPI Generator","description":"Generator is a tool that you can use to generate whatever you want basing on the AsyncAPI specification file as an input.","links":{"docsUrl":"https://www.asyncapi.com/docs/tools/generator","repoUrl":"https://github.com/asyncapi/generator"},"filters":{"language":[{"name":"JavaScript","color":"bg-[#F2F1C7]","borderColor":"border-[#BFBE86]"}],"technology":[{"name":"Node.js","color":"bg-[#BDFF67]","borderColor":"border-[#84CE24]"}],"categories":["code-generator","documentation-generator"],"hasCommercial":false,"isAsyncAPIOwner":true}},{"title":"Golang AsyncAPI Code Generator","description":"Generate Go user and application boilerplate from AsyncAPI specifications. Can be called from `go generate` without requirements.\n","links":{"repoUrl":"https://github.com/lerenn/asyncapi-codegen"},"filters":{"language":[{"name":"Go/Golang","color":"bg-[#8ECFDF]","borderColor":"border-[#00AFD9]"}],"categories":["code-generator"],"hasCommercial":false,"isAsyncAPIOwner":false,"technology":[]}},{"title":"MultiAPI Generator","description":"This is a plugin designed to help developers automatizing the creation of code classes from YML files based on AsyncApi and OpenAPI. It is presented in 2 flavours Maven and Gradle","links":{"repoUrl":"https://github.com/sngular/scs-multiapi-plugin"},"filters":{"language":[{"name":"Java","color":"bg-[#ECA2A4]","borderColor":"border-[#EC2125]"}],"technology":[{"name":"Groovy","color":"bg-[#61d0f2]","borderColor":"border-[#40ccf7]"},{"name":"Maven","color":"bg-[#FF6B80]","borderColor":"border-[#CA1A33]"}],"categories":["code-generator"],"hasCommercial":false,"isAsyncAPIOwner":false}},{"title":"Node-RED AsyncAPI plugin","description":"A plugin for generating and configuring nodes for Kafka, MQTT, AMQP, etc. automatically from an AsyncAPI specification.","links":{"repoUrl":"https://github.com/dalelane/node-red-contrib-plugin-asyncapi"},"filters":{"technology":[{"name":"Node-RED","color":"bg-[#FF7474]","borderColor":"border-[#8F0101]"}],"categories":["code-generator"],"hasCommercial":false,"isAsyncAPIOwner":false}},{"title":"ZenWave SDK","description":"DDD and API-First for Event-Driven Microservices","links":{"websiteUrl":"https://zenwave360.github.io/","docsUrl":"https://zenwave360.github.io/zenwave-sdk/plugins/asyncapi-spring-cloud-streams3/","repoUrl":"https://github.com/zenwave360/zenwave-sdk"},"filters":{"language":[{"name":"Java","color":"bg-[#ECA2A4]","borderColor":"border-[#EC2125]"}],"technology":[{"name":"Maven","color":"bg-[#FF6B80]","borderColor":"border-[#CA1A33]"},{"name":"Liquid","color":"bg-[#61d0f2]","borderColor":"border-[#40ccf7]"},{"name":"Spring Cloud Streams","color":"bg-[#61d0f2]","borderColor":"border-[#40ccf7]"},{"name":"JHipster JDL","color":"bg-[#61d0f2]","borderColor":"border-[#40ccf7]"}],"categories":["code-generator","dsl","mocking-and-testing","cli"],"hasCommercial":false,"isAsyncAPIOwner":false}}]},"Converters":{"description":"The following is a list of tools that do not yet belong to any specific category but are also useful for the community.","toolsList":[{"title":"AsyncAPI-format","description":"Format an AsyncAPI document by ordering, casing, formatting, and filtering fields.","links":{"repoUrl":"https://github.com/thim81/asyncapi-format"},"filters":{"language":[{"name":"JavaScript","color":"bg-[#F2F1C7]","borderColor":"border-[#BFBE86]"}],"technology":[{"name":"Node.js","color":"bg-[#BDFF67]","borderColor":"border-[#84CE24]"}],"categories":["converter","cli"],"hasCommercial":false,"isAsyncAPIOwner":false}},{"title":"AsyncAPI.Net","description":"The AsyncAPI.NET SDK contains a useful object model for AsyncAPI documents in .NET along with common serializers to extract raw OpenAPI JSON and YAML documents from the model.","links":{"websiteUrl":"https://github.com/LEGO/AsyncAPI.NET/","repoUrl":"https://github.com/LEGO/AsyncAPI.NET"},"filters":{"language":[{"name":"C#","color":"bg-[#E3AFE0]","borderColor":"border-[#9B4F96]"}],"technology":[{"name":".NET","color":"bg-[#A184FF]","borderColor":"border-[#5026D4]"},{"name":"ASP.NET","color":"bg-[#71C2FB]","borderColor":"border-[#1577BC]"}],"categories":["converters","code-first","validator"],"hasCommercial":false,"isAsyncAPIOwner":false}},{"title":"Converter","description":"Converts old versions of AsyncAPI files into the latest version.","links":{"repoUrl":"https://github.com/asyncapi/converter-js"},"filters":{"language":[{"name":"TypeScript","color":"bg-[#7DBCFE]","borderColor":"border-[#2C78C7]"}],"technology":[{"name":"Node.js","color":"bg-[#BDFF67]","borderColor":"border-[#84CE24]"}],"categories":["converter"],"hasCommercial":false,"isAsyncAPIOwner":true}},{"title":"Converter-Go","description":"The AsyncAPI Converter converts AsyncAPI documents from versions 1.0.0, 1.1.0 and 1.2.0 to version 2.0.0. It supports both json and yaml formats on input and output. By default, the AsyncAPI Converter converts a document into the json format.","links":{"repoUrl":"https://github.com/asyncapi/converter-go"},"filters":{"language":[{"name":"Go/Golang","color":"bg-[#8ECFDF]","borderColor":"border-[#00AFD9]"}],"categories":["converter"],"hasCommercial":false,"isAsyncAPIOwner":true,"technology":[]}}]},"Directories":{"description":"The following is a list of directories that index public AsyncAPI documents.","toolsList":[{"title":"API Tracker - AsyncAPI specs","description":"Explore APIs and companies with public AsyncAPI specifications.","links":{"websiteUrl":"https://apitracker.io/specifications/asyncapi","repoUrl":""},"filters":{"categories":["api","directory"],"hasCommercial":false,"isAsyncAPIOwner":false,"technology":[]}},{"title":"AsyncAPI-Directory by APIs.guru","description":"Directory of asynchronous API specifications in AsyncAPI format.","links":{"websiteUrl":"https://apis.guru/asyncapi-directory/","repoUrl":"https://github.com/APIs-guru/asyncapi-directory"},"filters":{"language":[{"name":"JavaScript","color":"bg-[#F2F1C7]","borderColor":"border-[#BFBE86]"}],"technology":[{"name":"Node.js","color":"bg-[#BDFF67]","borderColor":"border-[#84CE24]"},{"name":"Liquid","color":"bg-[#61d0f2]","borderColor":"border-[#40ccf7]"}],"categories":["api","directory"],"hasCommercial":false,"isAsyncAPIOwner":false}}]},"Documentation Generators":{"description":"The following is a list of tools that generate human-readable documentation from an AsyncAPI document.","toolsList":[{"title":"AsyncAPI Generator","description":"Generator is a tool that you can use to generate whatever you want basing on the AsyncAPI specification file as an input.","links":{"docsUrl":"https://www.asyncapi.com/docs/tools/generator","repoUrl":"https://github.com/asyncapi/generator"},"filters":{"language":[{"name":"JavaScript","color":"bg-[#F2F1C7]","borderColor":"border-[#BFBE86]"}],"technology":[{"name":"Node.js","color":"bg-[#BDFF67]","borderColor":"border-[#84CE24]"},{"name":"Markdown","color":"bg-[#61d0f2]","borderColor":"border-[#40ccf7]"}],"categories":["code-generator","documentation-generator"],"hasCommercial":false,"isAsyncAPIOwner":true}},{"title":"asyncapi-asciidoc-template","description":"Asciidoc template for the asyncapi generator","links":{"repoUrl":"https://gitlab.com/djencks/asyncapi-asciidoc-template"},"filters":{"language":[{"name":"JavaScript","color":"bg-[#F2F1C7]","borderColor":"border-[#BFBE86]"}],"technology":[{"name":"React JS","color":"bg-[#9FECFA]","borderColor":"border-[#08D8FE]"}],"categories":["documentation-generator"],"hasCommercial":false,"isAsyncAPIOwner":false}},{"title":"Bump.sh","description":"OpenAPI 2 & 3 / AsyncAPI 2 documentation generator, with automatic changelog and visual diff.","links":{"websiteUrl":"https://bump.sh/","repoUrl":""},"filters":{"categories":["documentation-generator"],"hasCommercial":true,"isAsyncAPIOwner":false,"technology":[]}},{"title":"Cupid","description":"A library that focuses on finding and analyzing the relationships between AsyncAPI documents. It outputs a map of the system architecture.","links":{"repoUrl":"https://github.com/asyncapi/cupid"},"filters":{"language":[{"name":"JavaScript","color":"bg-[#F2F1C7]","borderColor":"border-[#BFBE86]"}],"technology":[{"name":"Node.js","color":"bg-[#BDFF67]","borderColor":"border-[#84CE24]"}],"categories":["documentation-generator"],"hasCommercial":false,"isAsyncAPIOwner":true}},{"title":"KnstEventBus","description":"AsyncApi code-first tools for c#. Generates document and view.","links":{"repoUrl":"https://github.com/d0972058277/KnstEventBus"},"filters":{"language":[{"name":"C#","color":"bg-[#E3AFE0]","borderColor":"border-[#9B4F96]"}],"technology":[{"name":"ASP.NET","color":"bg-[#71C2FB]","borderColor":"border-[#1577BC]"},{"name":".NET","color":"bg-[#A184FF]","borderColor":"border-[#5026D4]"}],"categories":["code-first","documentation-generator"],"hasCommercial":false,"isAsyncAPIOwner":false}},{"title":"Springwolf","description":"Automated documentation for async APIs built with Spring Boot. Like Springfox for AsyncAPI. Auto-generates an AsyncAPI document and a web UI.","links":{"websiteUrl":"https://www.springwolf.dev","repoUrl":"https://github.com/springwolf/springwolf-core"},"filters":{"language":[{"name":"Java","color":"bg-[#ECA2A4]","borderColor":"border-[#EC2125]"}],"technology":[{"name":"Springboot","color":"bg-[#98E279]","borderColor":"border-[#68BC44]"},{"name":"Gradle","color":"bg-[#61d0f2]","borderColor":"border-[#40ccf7]"}],"categories":["code-first","documentation-generator"],"hasCommercial":false,"isAsyncAPIOwner":false}},{"title":"Widdershins","description":"OpenAPI 3.0 / Swagger 2.0 / AsyncAPI 1.0 definition to Slate / Shins compatible markdown.","links":{"websiteUrl":"https://mermade.github.io/reslate/","repoUrl":"https://github.com/Mermade/widdershins"},"filters":{"language":[{"name":"JavaScript","color":"bg-[#F2F1C7]","borderColor":"border-[#BFBE86]"}],"technology":[{"name":"Node.js","color":"bg-[#BDFF67]","borderColor":"border-[#84CE24]"},{"name":"Shell","color":"bg-[#61d0f2]","borderColor":"border-[#40ccf7]"}],"categories":["documentation-generator"],"hasCommercial":false,"isAsyncAPIOwner":false}}]},"Editors":{"description":"The following is a list of editors or related tools that allow editing of AsyncAPI document.","toolsList":[{"title":"AsyncAPI Studio","description":"Visually design your AsyncAPI files and event-driven architecture.","links":{"websiteUrl":"https://studio.asyncapi.com","repoUrl":"https://github.com/asyncapi/studio"},"filters":{"technology":[{"name":"React JS","color":"bg-[#9FECFA]","borderColor":"border-[#08D8FE]"},{"name":"TypeScript","color":"bg-[#61d0f2]","borderColor":"border-[#40ccf7]"}],"categories":["editor"],"hasCommercial":false,"isAsyncAPIOwner":true}}]},"UI components":{"description":"The following is a list of UI components to view AsyncAPI documents.","toolsList":[{"title":"Api-Diff-Viewer","description":"React component to view the difference between two Json based API documents. Supported specifications: JsonSchema, OpenAPI 3.x, AsyncAPI 2.x.","links":{"repoUrl":"https://github.com/udamir/api-diff-viewer","websiteUrl":"https://api-diff-viewer.vercel.app/"},"filters":{"language":[{"name":"TypeScript","color":"bg-[#7DBCFE]","borderColor":"border-[#2C78C7]"}],"technology":[{"name":"React JS","color":"bg-[#9FECFA]","borderColor":"border-[#08D8FE]"},{"name":"Babel","color":"bg-[#61d0f2]","borderColor":"border-[#40ccf7]"},{"name":"Storybook","color":"bg-[#61d0f2]","borderColor":"border-[#40ccf7]"}],"categories":["ui-component"],"hasCommercial":false,"isAsyncAPIOwner":false}},{"title":"AsyncAPI React component","description":"React component for rendering documentation from your specification in real-time in the browser. It also provides a WebComponent and bundle for Angular and Vue","links":{"repoUrl":"https://github.com/asyncapi/asyncapi-react"},"filters":{"language":[{"name":"TypeScript","color":"bg-[#7DBCFE]","borderColor":"border-[#2C78C7]"}],"technology":[{"name":"React JS","color":"bg-[#9FECFA]","borderColor":"border-[#08D8FE]"},{"name":"WebComponents","color":"bg-[#61d0f2]","borderColor":"border-[#40ccf7]"}],"categories":["ui-component"],"hasCommercial":false,"isAsyncAPIOwner":true}}]},"DSL":{"description":"Writing YAML by hand is no fun, and maybe you don't want a GUI, so use a Domain Specific Language to write AsyncAPI in your language of choice.","toolsList":[{"title":"BOATS","description":"Compile your single AsyncAPI file from multiple YAML files with BOATS and with the help of the template engine Nunjucks, plus a many extra helpers to automate much of the donkey work.","links":{"repoUrl":"https://github.com/j-d-carmichael/boats"},"filters":{"language":[{"name":"TypeScript","color":"bg-[#7DBCFE]","borderColor":"border-[#2C78C7]"}],"technology":[{"name":"Node.js","color":"bg-[#BDFF67]","borderColor":"border-[#84CE24]"}],"categories":["dsl"],"hasCommercial":false,"isAsyncAPIOwner":false}},{"title":"ZenWave SDK","description":"DDD and API-First for Event-Driven Microservices","links":{"websiteUrl":"https://zenwave360.github.io/","docsUrl":"https://zenwave360.github.io/zenwave-sdk/plugins/asyncapi-spring-cloud-streams3/","repoUrl":"https://github.com/zenwave360/zenwave-sdk"},"filters":{"language":[{"name":"Java","color":"bg-[#ECA2A4]","borderColor":"border-[#EC2125]"}],"technology":[{"name":"Maven","color":"bg-[#FF6B80]","borderColor":"border-[#CA1A33]"},{"name":"Liquid","color":"bg-[#61d0f2]","borderColor":"border-[#40ccf7]"},{"name":"Spring Cloud Streams","color":"bg-[#61d0f2]","borderColor":"border-[#40ccf7]"},{"name":"JHipster JDL","color":"bg-[#61d0f2]","borderColor":"border-[#40ccf7]"}],"categories":["code-generator","dsl","mocking-and-testing","cli"],"hasCommercial":false,"isAsyncAPIOwner":false}}]},"Frameworks":{"description":"The following is a list of API/application frameworks that make use of AsyncAPI.","toolsList":[{"title":"Asynction","description":"SocketIO server framework driven by the AsyncAPI specification. Asynction guarantees that your API will work in accordance with its AsyncAPI documentation. Built on top of Flask-SocketIO.","links":{"websiteUrl":"https://pypi.org/project/asynction/","repoUrl":"https://github.com/dedoussis/asynction"},"filters":{"language":[{"name":"Python","color":"bg-[#A8D0EF]","borderColor":"border-[#3878AB]"}],"technology":[{"name":"Flask","color":"bg-[#D7C7F2]","borderColor":"border-[#A387D2]"}],"categories":["framework"],"hasCommercial":false,"isAsyncAPIOwner":false}}]},"GitHub Actions":{"description":"The following is a list of GitHub Actions that you can use in your workflows","toolsList":[{"title":"API documentation generation on Bump.sh","description":"With this GitHub Action you can automatically generate your API reference (with the changelog and diff) on Bump.sh from any AsyncAPI file.","links":{"websiteUrl":"https://github.com/marketplace/actions/api-documentation-on-bump","repoUrl":"https://github.com/bump-sh/github-action"},"filters":{"language":[{"name":"TypeScript","color":"bg-[#7DBCFE]","borderColor":"border-[#2C78C7]"}],"categories":["github-action"],"hasCommercial":false,"isAsyncAPIOwner":false,"technology":[]}},{"title":"AsyncAPI GitHub Action","description":"This action validates if the AsyncAPI schema file is valid or not.","links":{"websiteUrl":"https://github.com/marketplace/actions/asyncapi-github-action","repoUrl":"https://github.com/WaleedAshraf/asyncapi-github-action"},"filters":{"language":[{"name":"JavaScript","color":"bg-[#F2F1C7]","borderColor":"border-[#BFBE86]"}],"technology":[{"name":"Node.js","color":"bg-[#BDFF67]","borderColor":"border-[#84CE24]"}],"categories":["github-action","validator"],"hasCommercial":false,"isAsyncAPIOwner":false}},{"title":"Automated version bump for AsyncAPI documents","description":"With this GitHub Action, you can automatically bump the version based on commit messages, which is similar to what semantic-release is for NPM.","links":{"websiteUrl":"https://github.com/marketplace/actions/automated-version-bump-for-asyncapi","repoUrl":"https://github.com/bump-sh/github-action"},"filters":{"language":[{"name":"JavaScript","color":"bg-[#F2F1C7]","borderColor":"border-[#BFBE86]"}],"technology":[{"name":"Node.js","color":"bg-[#BDFF67]","borderColor":"border-[#84CE24]"}],"categories":["github-action"],"hasCommercial":false,"isAsyncAPIOwner":false}},{"title":"GitHub Action for Generator","description":"GitHub Action to generate all the things from your AsyncAPI document using the AsyncAPI generator","links":{"repoUrl":"https://github.com/asyncapi/github-action-for-generator"},"filters":{"technology":[{"name":"AsyncAPI Generator","color":"bg-[#61d0f2]","borderColor":"border-[#40ccf7]"}],"categories":["github-action"],"hasCommercial":false,"isAsyncAPIOwner":true}},{"title":"GitHub Action for Generator","description":null,"links":{"repoUrl":"https://github.com/actions-marketplace-validations/asyncapi_github-action-for-generator"},"filters":{"technology":[{"name":"AsyncAPI Generator","color":"bg-[#61d0f2]","borderColor":"border-[#40ccf7]"}],"categories":["github-action"],"hasCommercial":false,"isAsyncAPIOwner":false}}]},"Mocking and Testing":{"description":"The tools below take specification documents as input, then publish fake messages to broker destinations for simulation purposes. They may also check that publisher messages are compliant with schemas.","toolsList":[{"title":"Microcks","description":"Mocking and testing platform for API and microservices. Turn your AsyncAPI, OpenAPI contract examples, or Postman collections into ready-to-use mocks. Use examples to simulate and validate received messages according to schema elements.","links":{"websiteUrl":"https://microcks.io/","repoUrl":"https://github.com/microcks/microcks"},"filters":{"language":[{"name":"Java","color":"bg-[#ECA2A4]","borderColor":"border-[#EC2125]"}],"technology":[{"name":"TypeScript","color":"bg-[#61d0f2]","borderColor":"border-[#40ccf7]"},{"name":"Kubernetes-native","color":"bg-[#D7C7F2]","borderColor":"border-[#A387D2]"},{"name":"Saas","color":"bg-[#6AB8EC]","borderColor":"border-[#2275AD]"}],"categories":["mocking-and-testing"],"hasCommercial":false,"isAsyncAPIOwner":false}},{"title":"MultiAPI Converter","description":"Use AsyncAPI definition, to generate Spring Cloud Contract producer validation or consumer stubs, using maven.","links":{"repoUrl":"https://github.com/sngular/scc-multiapi-converter"},"filters":{"language":[{"name":"Java","color":"bg-[#ECA2A4]","borderColor":"border-[#EC2125]"}],"technology":[{"name":"Springboot","color":"bg-[#98E279]","borderColor":"border-[#68BC44]"}],"categories":["mocking-and-testing"],"hasCommercial":false,"isAsyncAPIOwner":false}},{"title":"Specmatic","description":"An API contract testing tool that helps ensure the correctness APIs by automatically generating test cases and verifying them against the API spec. It simplifies the process of testing APIs and reduces the likelihood of bugs and compatibility issues.","links":{"websiteUrl":"https://specmatic.in","docsUrl":"https://specmatic.in/documentation/","repoUrl":"https://github.com/znsio/specmatic"},"filters":{"language":[{"name":"Kotlin","color":"bg-[#B1ACDF]","borderColor":"border-[#756BD9]"}],"technology":[{"name":"Maven","color":"bg-[#FF6B80]","borderColor":"border-[#CA1A33]"}],"categories":["mocking-and-testing"],"hasCommercial":false,"isAsyncAPIOwner":false}},{"title":"Virtualan","description":"Mocking and testing platform for API and microservices. Allows you to create and setup mocks for OpenAPI and AsyncAPI contracts. Shows how to setup and create AsyncAPI GitHub Reference Examples and OpenAPI GitHub Reference Examples.","links":{"websiteUrl":"https://www.virtualan.io/index.html","repoUrl":"https://github.com/virtualansoftware"},"filters":{"technology":[{"name":"Kubernetes-native","color":"bg-[#D7C7F2]","borderColor":"border-[#A387D2]"}],"categories":["mocking-and-testing"],"hasCommercial":false,"isAsyncAPIOwner":false}},{"title":"ZenWave SDK","description":"DDD and API-First for Event-Driven Microservices","links":{"websiteUrl":"https://zenwave360.github.io/","docsUrl":"https://zenwave360.github.io/zenwave-sdk/plugins/asyncapi-spring-cloud-streams3/","repoUrl":"https://github.com/zenwave360/zenwave-sdk"},"filters":{"language":[{"name":"Java","color":"bg-[#ECA2A4]","borderColor":"border-[#EC2125]"}],"technology":[{"name":"Maven","color":"bg-[#FF6B80]","borderColor":"border-[#CA1A33]"},{"name":"Liquid","color":"bg-[#61d0f2]","borderColor":"border-[#40ccf7]"},{"name":"Spring Cloud Streams","color":"bg-[#61d0f2]","borderColor":"border-[#40ccf7]"},{"name":"JHipster JDL","color":"bg-[#61d0f2]","borderColor":"border-[#40ccf7]"}],"categories":["code-generator","dsl","mocking-and-testing","cli"],"hasCommercial":false,"isAsyncAPIOwner":false}}]},"Validators":{"description":"The following is a list of tools that validate AsyncAPI documents.","toolsList":[{"title":"AMF","description":"AMF (AML Modeling Framework) is an open-source library capable of parsing and validating AML metadata documents.","links":{"docsUrl":"https://a.ml/docs/","repoUrl":"https://github.com/aml-org/amf"},"filters":{"language":[{"name":"Scala","color":"bg-[#FFA299]","borderColor":"border-[#DF301F]"}],"categories":["validator"],"hasCommercial":false,"isAsyncAPIOwner":false,"technology":[]}},{"title":"AsyncAPI GitHub Action","description":"This action validates if the AsyncAPI schema file is valid or not.","links":{"websiteUrl":"https://github.com/marketplace/actions/asyncapi-github-action","repoUrl":"https://github.com/WaleedAshraf/asyncapi-github-action"},"filters":{"language":[{"name":"JavaScript","color":"bg-[#F2F1C7]","borderColor":"border-[#BFBE86]"}],"technology":[{"name":"Node.js","color":"bg-[#BDFF67]","borderColor":"border-[#84CE24]"}],"categories":["github-action","validator"],"hasCommercial":false,"isAsyncAPIOwner":false}},{"title":"AsyncAPI Parser","description":"Use this package to parse and validate AsyncAPI documents —either YAML or JSON— in your Node.js or browser application. Updated bundle for the browser is always attached to the GitHub Release.","links":{"repoUrl":"https://github.com/asyncapi/parser-js"},"filters":{"language":[{"name":"JavaScript","color":"bg-[#F2F1C7]","borderColor":"border-[#BFBE86]"}],"technology":[{"name":"Node.js","color":"bg-[#BDFF67]","borderColor":"border-[#84CE24]"}],"categories":["validator"],"hasCommercial":false,"isAsyncAPIOwner":true}},{"title":"AsyncAPI Parser","description":"The AsyncAPI Parser validates AsyncAPI documents according to dedicated schemas.","links":{"repoUrl":"https://github.com/asyncapi/parser-go"},"filters":{"language":[{"name":"Go/Golang","color":"bg-[#8ECFDF]","borderColor":"border-[#00AFD9]"}],"categories":["validator"],"hasCommercial":false,"isAsyncAPIOwner":true,"technology":[]}},{"title":"AsyncAPI Parser Wrapper","description":"Use this library to parse and validate AsyncAPI documents — either YAML or JSON — in your Java application. It is a Java wrapper over JavaScript Parser implemented using J2V8.","links":{"repoUrl":"https://github.com/AsyncAPITools/parser-java-wrapper"},"filters":{"language":[{"name":"Java","color":"bg-[#ECA2A4]","borderColor":"border-[#EC2125]"}],"categories":["validator"],"hasCommercial":false,"isAsyncAPIOwner":false,"technology":[]}},{"title":"asyncapi-validator","description":"It allows you to validate the schema of your messages against your AsyncAPI schema definition. You can use it with Kafka, RabbitMQ or any other messaging/queue.","links":{"repoUrl":"https://github.com/WaleedAshraf/asyncapi-validator"},"filters":{"language":[{"name":"JavaScript","color":"bg-[#F2F1C7]","borderColor":"border-[#BFBE86]"}],"technology":[{"name":"Node.js","color":"bg-[#BDFF67]","borderColor":"border-[#84CE24]"}],"categories":["validator"],"hasCommercial":false,"isAsyncAPIOwner":false}},{"title":"AsyncAPI.Net","description":"The AsyncAPI.NET SDK contains a useful object model for AsyncAPI documents in .NET along with common serializers to extract raw OpenAPI JSON and YAML documents from the model.","links":{"websiteUrl":"https://github.com/LEGO/AsyncAPI.NET/","repoUrl":"https://github.com/LEGO/AsyncAPI.NET"},"filters":{"language":[{"name":"C#","color":"bg-[#E3AFE0]","borderColor":"border-[#9B4F96]"}],"technology":[{"name":".NET","color":"bg-[#A184FF]","borderColor":"border-[#5026D4]"},{"name":"ASP.NET","color":"bg-[#71C2FB]","borderColor":"border-[#1577BC]"}],"categories":["converters","code-first","validator"],"hasCommercial":false,"isAsyncAPIOwner":false}},{"title":"Spectral","description":"A flexible JSON/YAML linter for creating automated style guides, with baked in support for OpenAPI v3.1, v3.0, and v2.0 as well as AsyncAPI v2.x.","links":{"repoUrl":"https://github.com/stoplightio/spectral"},"filters":{"language":[{"name":"TypeScript","color":"bg-[#7DBCFE]","borderColor":"border-[#2C78C7]"}],"technology":[{"name":"Node.js","color":"bg-[#BDFF67]","borderColor":"border-[#84CE24]"}],"categories":["validator"],"hasCommercial":false,"isAsyncAPIOwner":false}}]},"Compare tools":{"description":"The following is a list of tools that compare AsyncAPI documents.","toolsList":[{"title":"Api-Smart-Diff","description":"It allows you to compare two API documents and classify changes. Supported API specifications: OpenAPI, AsyncAPI, JsonSchema.","links":{"repoUrl":"https://github.com/udamir/api-smart-diff"},"filters":{"language":[{"name":"TypeScript","color":"bg-[#7DBCFE]","borderColor":"border-[#2C78C7]"}],"categories":["compare-tool"],"hasCommercial":false,"isAsyncAPIOwner":false,"technology":[]}},{"title":"AsyncAPI Diff","description":"Diff is a library that compares two AsyncAPI Documents and provides information about the differences by pointing out explicitly information like breaking changes.","links":{"repoUrl":"https://github.com/asyncapi/diff"},"filters":{"language":[{"name":"TypeScript","color":"bg-[#7DBCFE]","borderColor":"border-[#2C78C7]"}],"technology":[{"name":"TypeScript","color":"bg-[#61d0f2]","borderColor":"border-[#40ccf7]"}],"categories":["compare-tool"],"hasCommercial":false,"isAsyncAPIOwner":true}},{"title":"jasyncapicmp","description":"Tool for comparing two AsyncAPI versions and evaluating compatibility.","links":{"websiteUrl":"https://siom79.github.io/jasyncapicmp/","docsUrl":"https://github.com/siom79/jasyncapicmp","repoUrl":"https://github.com/siom79/jasyncapicmp"},"filters":{"language":[{"name":"Java","color":"bg-[#ECA2A4]","borderColor":"border-[#EC2125]"}],"technology":[{"name":"Maven","color":"bg-[#FF6B80]","borderColor":"border-[#CA1A33]"}],"categories":["compare-tool"],"hasCommercial":false,"isAsyncAPIOwner":false}},{"title":"jasyncapicmp","description":"Tool/library/maven-plugin for comparing two AsyncAPI versions and evaluating compatibility.","links":{"websiteUrl":"https://siom79.github.io/jasyncapicmp/","repoUrl":"https://github.com/siom79/jasyncapicmp"},"filters":{"language":[{"name":"Java","color":"bg-[#ECA2A4]","borderColor":"border-[#EC2125]"}],"technology":[{"name":"Maven","color":"bg-[#FF6B80]","borderColor":"border-[#CA1A33]"}],"categories":["compare-tool"],"hasCommercial":false,"isAsyncAPIOwner":false}}]},"CLIs":{"description":"The following is a list of tools that you can work with in terminal or do some CI/CD automation.","toolsList":[{"title":"AsyncAPI CLI","description":"One CLI to rule them all. \nThis is a CLI that aims to integrate all AsyncAPI tools that you need while AsyncAPI document development and maintainance. \nYou can use it to generate docs or code, validate AsyncAPI document and event create new documents.\n","links":{"websiteUrl":"https://www.asyncapi.com/tools/cli","repoUrl":"https://github.com/asyncapi/cli"},"filters":{"technology":[{"name":"TypeScript","color":"bg-[#61d0f2]","borderColor":"border-[#40ccf7]"}],"categories":["others","cli"],"hasCommercial":false,"isAsyncAPIOwner":true}},{"title":"AsyncAPI-format","description":"Format an AsyncAPI document by ordering, casing, formatting, and filtering fields.","links":{"repoUrl":"https://github.com/asyncapi/converter-go"},"filters":{"language":[{"name":"JavaScript","color":"bg-[#F2F1C7]","borderColor":"border-[#BFBE86]"}],"technology":[{"name":"Node.js","color":"bg-[#BDFF67]","borderColor":"border-[#84CE24]"}],"categories":["converter","cli"],"hasCommercial":false,"isAsyncAPIOwner":true}},{"title":"ZenWave SDK","description":"DDD and API-First for Event-Driven Microservices","links":{"websiteUrl":"https://zenwave360.github.io/","docsUrl":"https://zenwave360.github.io/zenwave-sdk/plugins/asyncapi-spring-cloud-streams3/","repoUrl":"https://github.com/zenwave360/zenwave-sdk"},"filters":{"language":[{"name":"Java","color":"bg-[#ECA2A4]","borderColor":"border-[#EC2125]"}],"technology":[{"name":"Maven","color":"bg-[#FF6B80]","borderColor":"border-[#CA1A33]"},{"name":"Liquid","color":"bg-[#61d0f2]","borderColor":"border-[#40ccf7]"},{"name":"Spring Cloud Streams","color":"bg-[#61d0f2]","borderColor":"border-[#40ccf7]"},{"name":"JHipster JDL","color":"bg-[#61d0f2]","borderColor":"border-[#40ccf7]"}],"categories":["code-generator","dsl","mocking-and-testing","cli"],"hasCommercial":false,"isAsyncAPIOwner":false}}]},"Bundlers":{"description":"The following is a list of tools that you can work with to bundle AsyncAPI documents.","toolsList":[{"title":"Api-ref-bundler","description":"It allows you bundle/dereference external/internal $refs in Json based API document. Supported specifications: OpenAPI, AsyncAPI, JsonSchema.","links":{"repoUrl":"https://github.com/udamir/api-ref-bundler"},"filters":{"language":[{"name":"TypeScript","color":"bg-[#7DBCFE]","borderColor":"border-[#2C78C7]"}],"technology":[{"name":"TypeScript","color":"bg-[#61d0f2]","borderColor":"border-[#40ccf7]"}],"categories":["bundler"],"hasCommercial":false,"isAsyncAPIOwner":false}},{"title":"AsyncAPI Bundler","description":"Combine multiple AsyncAPI specification files into one.","links":{"repoUrl":"https://github.com/asyncapi/bundler"},"filters":{"language":[{"name":"TypeScript","color":"bg-[#7DBCFE]","borderColor":"border-[#2C78C7]"}],"technology":[{"name":"TypeScript","color":"bg-[#61d0f2]","borderColor":"border-[#40ccf7]"}],"categories":["bundler"],"hasCommercial":false,"isAsyncAPIOwner":true}}]},"IDE Extensions":{"description":"The following is a list of extensions for different IDEs like VSCode, IntelliJ IDEA and others","toolsList":[{"title":"asyncapi-preview","description":"VSCode extension that enables you to:\n - Preview documentation generated using you AsyncAPI document. It uses AsyncAPI React component under the hood,\n - Create AsyncAPI documents faster using SmartPaste functionality\n","links":{"repoUrl":"https://github.com/asyncapi/vs-asyncapi-preview"},"filters":{"technology":[{"name":"VSCode","color":"bg-[#61d0f2]","borderColor":"border-[#40ccf7]"},{"name":"SmartPaste","color":"bg-[#61d0f2]","borderColor":"border-[#40ccf7]"}],"categories":["ide-extension"],"hasCommercial":false,"isAsyncAPIOwner":true}},{"title":"asyncapi-preview","description":"VSCode extension that enables you to:\n - Preview documentation generated using you AsyncAPI document. It uses AsyncAPI React component under the hood,\n - Create AsyncAPI documents faster using SmartPaste functionality\n","links":{"repoUrl":"https://github.com/Savio629/testing2"},"filters":{"technology":[{"name":"VSCode","color":"bg-[#61d0f2]","borderColor":"border-[#40ccf7]"},{"name":"SmartPaste","color":"bg-[#61d0f2]","borderColor":"border-[#40ccf7]"}],"categories":["ide-extension"],"hasCommercial":false,"isAsyncAPIOwner":false}},{"title":"jAsyncAPI - IDEA plugin","description":"Idea plugin for the java-asyncapi - Helps to edit and validate AsyncAPI schemas.","links":{"websiteUrl":"https://plugins.jetbrains.com/plugin/15673-asyncapi","docsUrl":"https://github.com/asyncapi/jasyncapi-idea-plugin#usage","repoUrl":"https://github.com/asyncapi/jasyncapi-idea-plugin"},"filters":{"language":[{"name":"Kotlin","color":"bg-[#B1ACDF]","borderColor":"border-[#756BD9]"}],"technology":[{"name":"JetBrains","color":"bg-[#61d0f2]","borderColor":"border-[#40ccf7]"},{"name":"IntelliJ IDEA","color":"bg-[#61d0f2]","borderColor":"border-[#40ccf7]"}],"categories":["ide-extension"],"hasCommercial":false,"isAsyncAPIOwner":true}}]},"Others":{"description":"The following is a list of tools that comes under Other category.","toolsList":[{"title":"AsyncAPI CLI","description":"One CLI to rule them all. \nThis is a CLI that aims to integrate all AsyncAPI tools that you need while AsyncAPI document development and maintainance. \nYou can use it to generate docs or code, validate AsyncAPI document and event create new documents.\n","links":{"websiteUrl":"https://www.asyncapi.com/tools/cli","repoUrl":"https://github.com/asyncapi/cli"},"filters":{"technology":[{"name":"TypeScript","color":"bg-[#61d0f2]","borderColor":"border-[#40ccf7]"}],"categories":["others","cli"],"hasCommercial":false,"isAsyncAPIOwner":true}}]}} \ No newline at end of file +{"APIs":{"description":"The following is a list of APIs that expose functionality related to AsyncAPI.","toolsList":[{"title":"API Tracker - AsyncAPI specs","description":"Explore APIs and companies with public AsyncAPI specifications.","links":{"websiteUrl":"https://apitracker.io/specifications/asyncapi","repoUrl":""},"filters":{"categories":["api","directory"],"hasCommercial":false,"isAsyncAPIOwner":false,"technology":[]}},{"title":"AsyncAPI Server API","description":"Server API providing official AsyncAPI tools","links":{"websiteUrl":"https://api.asyncapi.com/v1","docsUrl":"https://api.asyncapi.com/v1/docs","repoUrl":"https://github.com/asyncapi/server-api"},"filters":{"technology":[{"name":"Node.js","color":"bg-[#BDFF67]","borderColor":"border-[#84CE24]"},{"name":"TypeScript","color":"bg-[#61d0f2]","borderColor":"border-[#40ccf7]"}],"categories":["api"],"hasCommercial":false,"isAsyncAPIOwner":true}},{"title":"AsyncAPI-Directory by APIs.guru","description":"Directory of asynchronous API specifications in AsyncAPI format.","links":{"websiteUrl":"https://apis.guru/asyncapi-directory/","repoUrl":"https://github.com/APIs-guru/asyncapi-directory"},"filters":{"language":[{"name":"JavaScript","color":"bg-[#F2F1C7]","borderColor":"border-[#BFBE86]"}],"technology":[{"name":"Node.js","color":"bg-[#BDFF67]","borderColor":"border-[#84CE24]"},{"name":"Liquid","color":"bg-[#61d0f2]","borderColor":"border-[#40ccf7]"}],"categories":["api","directory"],"hasCommercial":false,"isAsyncAPIOwner":false}},{"title":"SIO-AsyncAPI","description":"This is code-first approach to generate AsyncAPI specification from Socket.IO server.","links":{"websiteUrl":"https://github.com/daler-rahimov/sio-asyncapi","docsUrl":"https://github.com/daler-rahimov/sio-asyncapi","repoUrl":"https://github.com/daler-rahimov/sio-asyncapi"},"filters":{"language":[{"name":"Python","color":"bg-[#A8D0EF]","borderColor":"border-[#3878AB]"}],"technology":[{"name":"Socket.IO","color":"bg-[#61d0f2]","borderColor":"border-[#40ccf7]"},{"name":"Flask","color":"bg-[#D7C7F2]","borderColor":"border-[#A387D2]"}],"categories":["code-first","api"],"hasCommercial":false,"isAsyncAPIOwner":false}}]},"Code-first tools":{"description":"The following is a list of tools that generate AsyncAPI documents from your code.","toolsList":[{"title":"AsyncAPI.Net","description":"The AsyncAPI.NET SDK contains a useful object model for AsyncAPI documents in .NET along with common serializers to extract raw OpenAPI JSON and YAML documents from the model.","links":{"websiteUrl":"https://github.com/LEGO/AsyncAPI.NET/","repoUrl":"https://github.com/LEGO/AsyncAPI.NET"},"filters":{"language":[{"name":"C#","color":"bg-[#E3AFE0]","borderColor":"border-[#9B4F96]"}],"technology":[{"name":".NET","color":"bg-[#A184FF]","borderColor":"border-[#5026D4]"},{"name":"ASP.NET","color":"bg-[#71C2FB]","borderColor":"border-[#1577BC]"}],"categories":["converters","code-first","validator"],"hasCommercial":false,"isAsyncAPIOwner":false}},{"title":"EventBridge Atlas","description":"Tool that translates your AWS EventBridge Schemas into an AsyncAPI document and a web UI.","links":{"websiteUrl":"https://eventbridge-atlas.netlify.app/","repoUrl":"https://github.com/boyney123/eventbridge-atlas"},"filters":{"technology":[{"name":"Node.js","color":"bg-[#BDFF67]","borderColor":"border-[#84CE24]"}],"categories":["code-first"],"hasCommercial":false,"isAsyncAPIOwner":false}},{"title":"Go AsyncAPI","description":"This library helps to create AsyncAPI spec from your Go message structures. It uses reflection to translate Go structures in JSON Schema definitions and arrange them in AsyncAPI schema.","links":{"repoUrl":"https://github.com/swaggest/go-asyncapi"},"filters":{"language":[{"name":"Go/Golang","color":"bg-[#8ECFDF]","borderColor":"border-[#00AFD9]"}],"categories":["code-first"],"hasCommercial":false,"isAsyncAPIOwner":false,"technology":[]}},{"title":"Java AsyncAPI","description":"This tool stores modules, which simplifies interacting with AsyncAPI in jvm ecosystem.","links":{"repoUrl":"https://github.com/asyncapi/jasyncapi"},"filters":{"language":[{"name":"Java","color":"bg-[#ECA2A4]","borderColor":"border-[#EC2125]"}],"technology":[{"name":"Kotlin","color":"bg-[#61d0f2]","borderColor":"border-[#40ccf7]"},{"name":"Maven","color":"bg-[#FF6B80]","borderColor":"border-[#CA1A33]"}],"categories":["code-first"],"hasCommercial":false,"isAsyncAPIOwner":true}},{"title":"KnstEventBus","description":"AsyncApi code-first tools for c#. Generates document and view.","links":{"repoUrl":"https://github.com/d0972058277/KnstEventBus"},"filters":{"language":[{"name":"C#","color":"bg-[#E3AFE0]","borderColor":"border-[#9B4F96]"}],"technology":[{"name":"ASP.NET","color":"bg-[#71C2FB]","borderColor":"border-[#1577BC]"},{"name":".NET","color":"bg-[#A184FF]","borderColor":"border-[#5026D4]"}],"categories":["code-first","documentation-generator"],"hasCommercial":false,"isAsyncAPIOwner":false}},{"title":"Kotlin AsyncAPI","description":"The Kotlin AsyncAPI project aims to provide convenience tools for generating and serving AsyncAPI documentation. The core of this project is a Kotlin DSL for building the specification in a typesafe way.","links":{"repoUrl":"https://github.com/OpenFolder/kotlin-asyncapi"},"filters":{"language":[{"name":"Kotlin","color":"bg-[#B1ACDF]","borderColor":"border-[#756BD9]"}],"technology":[{"name":"Springboot","color":"bg-[#98E279]","borderColor":"border-[#68BC44]"},{"name":"Maven","color":"bg-[#FF6B80]","borderColor":"border-[#CA1A33]"}],"categories":["code-first"],"hasCommercial":false,"isAsyncAPIOwner":false}},{"title":"nestjs-asyncapi","description":"Utilize decorators to generate AsyncAPI document utilizing DTOs (similar to @nestjs/swagger) and a web UI.","links":{"repoUrl":"https://github.com/flamewow/nestjs-asyncapi"},"filters":{"language":[{"name":"TypeScript","color":"bg-[#7DBCFE]","borderColor":"border-[#2C78C7]"}],"technology":[{"name":"Node.js","color":"bg-[#BDFF67]","borderColor":"border-[#84CE24]"},{"name":"Nest Js","color":"bg-[#E1224E]","borderColor":"border-[#B9012b]"}],"categories":["code-first"],"hasCommercial":false,"isAsyncAPIOwner":false}},{"title":"Neuroglia AsyncAPI","description":"A .NET SDK for the Async API specification. Automatically generates and serves AsyncAPI documents based on your code. Includes fluent-builders to create AsyncAPI documents from scratch, and provides a web-based GUI to browse generated documents.","links":{"repoUrl":"https://github.com/neuroglia-io/AsyncApi"},"filters":{"language":[{"name":"C#","color":"bg-[#E3AFE0]","borderColor":"border-[#9B4F96]"}],"technology":[{"name":".NET","color":"bg-[#A184FF]","borderColor":"border-[#5026D4]"}],"categories":["code-first"],"hasCommercial":false,"isAsyncAPIOwner":false}},{"title":"Saunter","description":"Saunter is an AsyncAPI documentation generator for dotnet. Generates (and hosts) an AsyncAPI schema document from your code.","links":{"repoUrl":"https://github.com/tehmantra/saunter"},"filters":{"language":[{"name":"C#","color":"bg-[#E3AFE0]","borderColor":"border-[#9B4F96]"}],"technology":[{"name":".NET","color":"bg-[#A184FF]","borderColor":"border-[#5026D4]"},{"name":"ASP.NET","color":"bg-[#71C2FB]","borderColor":"border-[#1577BC]"}],"categories":["code-first"],"hasCommercial":false,"isAsyncAPIOwner":false}},{"title":"SIO-AsyncAPI","description":"This is code-first approach to generate AsyncAPI specification from Socket.IO server.","links":{"websiteUrl":"https://github.com/daler-rahimov/sio-asyncapi","docsUrl":"https://github.com/daler-rahimov/sio-asyncapi","repoUrl":"https://github.com/daler-rahimov/sio-asyncapi"},"filters":{"language":[{"name":"Python","color":"bg-[#A8D0EF]","borderColor":"border-[#3878AB]"}],"technology":[{"name":"Socket.IO","color":"bg-[#61d0f2]","borderColor":"border-[#40ccf7]"},{"name":"Flask","color":"bg-[#D7C7F2]","borderColor":"border-[#A387D2]"}],"categories":["code-first","api"],"hasCommercial":false,"isAsyncAPIOwner":false}},{"title":"Springwolf","description":"Automated documentation for async APIs built with Spring Boot. Like Springfox for AsyncAPI. Auto-generates an AsyncAPI document and a web UI.","links":{"websiteUrl":"https://www.springwolf.dev","repoUrl":"https://github.com/springwolf/springwolf-core"},"filters":{"language":[{"name":"Java","color":"bg-[#ECA2A4]","borderColor":"border-[#EC2125]"}],"technology":[{"name":"Springboot","color":"bg-[#98E279]","borderColor":"border-[#68BC44]"},{"name":"Gradle","color":"bg-[#61d0f2]","borderColor":"border-[#40ccf7]"}],"categories":["code-first","documentation-generator"],"hasCommercial":false,"isAsyncAPIOwner":false}},{"title":"sttp tapir","description":"Library for describing HTTP endpoints, and then interpreting them as a server, client, or documentation","links":{"websiteUrl":"https://tapir.softwaremill.com/","repoUrl":"https://github.com/softwaremill/tapir"},"filters":{"language":[{"name":"Scala","color":"bg-[#FFA299]","borderColor":"border-[#DF301F]"}],"categories":["code-first"],"hasCommercial":false,"isAsyncAPIOwner":false,"technology":[]}}]},"Code Generators":{"description":"The following is a list of tools that generate code from an AsyncAPI document; not the other way around.","toolsList":[{"title":"AsyncAPI Generator","description":"Generator is a tool that you can use to generate whatever you want basing on the AsyncAPI specification file as an input.","links":{"docsUrl":"https://www.asyncapi.com/docs/tools/generator","repoUrl":"https://github.com/asyncapi/generator"},"filters":{"language":[{"name":"JavaScript","color":"bg-[#F2F1C7]","borderColor":"border-[#BFBE86]"}],"technology":[{"name":"Node.js","color":"bg-[#BDFF67]","borderColor":"border-[#84CE24]"}],"categories":["code-generator","documentation-generator"],"hasCommercial":false,"isAsyncAPIOwner":true}},{"title":"Golang AsyncAPI Code Generator","description":"Generate Go user and application boilerplate from AsyncAPI specifications. Can be called from `go generate` without requirements.\n","links":{"repoUrl":"https://github.com/lerenn/asyncapi-codegen"},"filters":{"language":[{"name":"Go/Golang","color":"bg-[#8ECFDF]","borderColor":"border-[#00AFD9]"}],"categories":["code-generator"],"hasCommercial":false,"isAsyncAPIOwner":false,"technology":[]}},{"title":"MultiAPI Generator","description":"This is a plugin designed to help developers automatizing the creation of code classes from YML files based on AsyncApi and OpenAPI. It is presented in 2 flavours Maven and Gradle","links":{"repoUrl":"https://github.com/sngular/scs-multiapi-plugin"},"filters":{"language":[{"name":"Java","color":"bg-[#ECA2A4]","borderColor":"border-[#EC2125]"}],"technology":[{"name":"Groovy","color":"bg-[#61d0f2]","borderColor":"border-[#40ccf7]"},{"name":"Maven","color":"bg-[#FF6B80]","borderColor":"border-[#CA1A33]"}],"categories":["code-generator"],"hasCommercial":false,"isAsyncAPIOwner":false}},{"title":"Node-RED AsyncAPI plugin","description":"A plugin for generating and configuring nodes for Kafka, MQTT, AMQP, etc. automatically from an AsyncAPI specification.","links":{"repoUrl":"https://github.com/dalelane/node-red-contrib-plugin-asyncapi"},"filters":{"technology":[{"name":"Node-RED","color":"bg-[#FF7474]","borderColor":"border-[#8F0101]"}],"categories":["code-generator"],"hasCommercial":false,"isAsyncAPIOwner":false}},{"title":"ZenWave SDK","description":"DDD and API-First for Event-Driven Microservices","links":{"websiteUrl":"https://zenwave360.github.io/","docsUrl":"https://zenwave360.github.io/zenwave-sdk/plugins/asyncapi-spring-cloud-streams3/","repoUrl":"https://github.com/zenwave360/zenwave-sdk"},"filters":{"language":[{"name":"Java","color":"bg-[#ECA2A4]","borderColor":"border-[#EC2125]"}],"technology":[{"name":"Maven","color":"bg-[#FF6B80]","borderColor":"border-[#CA1A33]"},{"name":"Liquid","color":"bg-[#61d0f2]","borderColor":"border-[#40ccf7]"},{"name":"Spring Cloud Streams","color":"bg-[#61d0f2]","borderColor":"border-[#40ccf7]"},{"name":"JHipster JDL","color":"bg-[#61d0f2]","borderColor":"border-[#40ccf7]"}],"categories":["code-generator","dsl","mocking-and-testing","cli"],"hasCommercial":false,"isAsyncAPIOwner":false}}]},"Converters":{"description":"The following is a list of tools that do not yet belong to any specific category but are also useful for the community.","toolsList":[{"title":"AsyncAPI-format","description":"Format an AsyncAPI document by ordering, casing, formatting, and filtering fields.","links":{"repoUrl":"https://github.com/thim81/asyncapi-format"},"filters":{"language":[{"name":"JavaScript","color":"bg-[#F2F1C7]","borderColor":"border-[#BFBE86]"}],"technology":[{"name":"Node.js","color":"bg-[#BDFF67]","borderColor":"border-[#84CE24]"}],"categories":["converter","cli"],"hasCommercial":false,"isAsyncAPIOwner":false}},{"title":"AsyncAPI.Net","description":"The AsyncAPI.NET SDK contains a useful object model for AsyncAPI documents in .NET along with common serializers to extract raw OpenAPI JSON and YAML documents from the model.","links":{"websiteUrl":"https://github.com/LEGO/AsyncAPI.NET/","repoUrl":"https://github.com/LEGO/AsyncAPI.NET"},"filters":{"language":[{"name":"C#","color":"bg-[#E3AFE0]","borderColor":"border-[#9B4F96]"}],"technology":[{"name":".NET","color":"bg-[#A184FF]","borderColor":"border-[#5026D4]"},{"name":"ASP.NET","color":"bg-[#71C2FB]","borderColor":"border-[#1577BC]"}],"categories":["converters","code-first","validator"],"hasCommercial":false,"isAsyncAPIOwner":false}},{"title":"Converter","description":"Converts old versions of AsyncAPI files into the latest version.","links":{"repoUrl":"https://github.com/asyncapi/converter-js"},"filters":{"language":[{"name":"TypeScript","color":"bg-[#7DBCFE]","borderColor":"border-[#2C78C7]"}],"technology":[{"name":"Node.js","color":"bg-[#BDFF67]","borderColor":"border-[#84CE24]"}],"categories":["converter"],"hasCommercial":false,"isAsyncAPIOwner":true}},{"title":"Converter-Go","description":"The AsyncAPI Converter converts AsyncAPI documents from versions 1.0.0, 1.1.0 and 1.2.0 to version 2.0.0. It supports both json and yaml formats on input and output. By default, the AsyncAPI Converter converts a document into the json format.","links":{"repoUrl":"https://github.com/asyncapi/converter-go"},"filters":{"language":[{"name":"Go/Golang","color":"bg-[#8ECFDF]","borderColor":"border-[#00AFD9]"}],"categories":["converter"],"hasCommercial":false,"isAsyncAPIOwner":true,"technology":[]}}]},"Directories":{"description":"The following is a list of directories that index public AsyncAPI documents.","toolsList":[{"title":"API Tracker - AsyncAPI specs","description":"Explore APIs and companies with public AsyncAPI specifications.","links":{"websiteUrl":"https://apitracker.io/specifications/asyncapi","repoUrl":""},"filters":{"categories":["api","directory"],"hasCommercial":false,"isAsyncAPIOwner":false,"technology":[]}},{"title":"AsyncAPI-Directory by APIs.guru","description":"Directory of asynchronous API specifications in AsyncAPI format.","links":{"websiteUrl":"https://apis.guru/asyncapi-directory/","repoUrl":"https://github.com/APIs-guru/asyncapi-directory"},"filters":{"language":[{"name":"JavaScript","color":"bg-[#F2F1C7]","borderColor":"border-[#BFBE86]"}],"technology":[{"name":"Node.js","color":"bg-[#BDFF67]","borderColor":"border-[#84CE24]"},{"name":"Liquid","color":"bg-[#61d0f2]","borderColor":"border-[#40ccf7]"}],"categories":["api","directory"],"hasCommercial":false,"isAsyncAPIOwner":false}}]},"Documentation Generators":{"description":"The following is a list of tools that generate human-readable documentation from an AsyncAPI document.","toolsList":[{"title":"AsyncAPI Generator","description":"Generator is a tool that you can use to generate whatever you want basing on the AsyncAPI specification file as an input.","links":{"docsUrl":"https://www.asyncapi.com/docs/tools/generator","repoUrl":"https://github.com/asyncapi/generator"},"filters":{"language":[{"name":"JavaScript","color":"bg-[#F2F1C7]","borderColor":"border-[#BFBE86]"}],"technology":[{"name":"Node.js","color":"bg-[#BDFF67]","borderColor":"border-[#84CE24]"},{"name":"Markdown","color":"bg-[#61d0f2]","borderColor":"border-[#40ccf7]"}],"categories":["code-generator","documentation-generator"],"hasCommercial":false,"isAsyncAPIOwner":true}},{"title":"asyncapi-asciidoc-template","description":"Asciidoc template for the asyncapi generator","links":{"repoUrl":"https://gitlab.com/djencks/asyncapi-asciidoc-template"},"filters":{"language":[{"name":"JavaScript","color":"bg-[#F2F1C7]","borderColor":"border-[#BFBE86]"}],"technology":[{"name":"React JS","color":"bg-[#9FECFA]","borderColor":"border-[#08D8FE]"}],"categories":["documentation-generator","generator-template"],"hasCommercial":false,"isAsyncAPIOwner":false}},{"title":"Bump.sh","description":"OpenAPI 2 & 3 / AsyncAPI 2 documentation generator, with automatic changelog and visual diff.","links":{"websiteUrl":"https://bump.sh/","repoUrl":""},"filters":{"categories":["documentation-generator"],"hasCommercial":true,"isAsyncAPIOwner":false,"technology":[]}},{"title":"Cupid","description":"A library that focuses on finding and analyzing the relationships between AsyncAPI documents. It outputs a map of the system architecture.","links":{"repoUrl":"https://github.com/asyncapi/cupid"},"filters":{"language":[{"name":"JavaScript","color":"bg-[#F2F1C7]","borderColor":"border-[#BFBE86]"}],"technology":[{"name":"Node.js","color":"bg-[#BDFF67]","borderColor":"border-[#84CE24]"}],"categories":["documentation-generator"],"hasCommercial":false,"isAsyncAPIOwner":true}},{"title":"KnstEventBus","description":"AsyncApi code-first tools for c#. Generates document and view.","links":{"repoUrl":"https://github.com/d0972058277/KnstEventBus"},"filters":{"language":[{"name":"C#","color":"bg-[#E3AFE0]","borderColor":"border-[#9B4F96]"}],"technology":[{"name":"ASP.NET","color":"bg-[#71C2FB]","borderColor":"border-[#1577BC]"},{"name":".NET","color":"bg-[#A184FF]","borderColor":"border-[#5026D4]"}],"categories":["code-first","documentation-generator"],"hasCommercial":false,"isAsyncAPIOwner":false}},{"title":"Springwolf","description":"Automated documentation for async APIs built with Spring Boot. Like Springfox for AsyncAPI. Auto-generates an AsyncAPI document and a web UI.","links":{"websiteUrl":"https://www.springwolf.dev","repoUrl":"https://github.com/springwolf/springwolf-core"},"filters":{"language":[{"name":"Java","color":"bg-[#ECA2A4]","borderColor":"border-[#EC2125]"}],"technology":[{"name":"Springboot","color":"bg-[#98E279]","borderColor":"border-[#68BC44]"},{"name":"Gradle","color":"bg-[#61d0f2]","borderColor":"border-[#40ccf7]"}],"categories":["code-first","documentation-generator"],"hasCommercial":false,"isAsyncAPIOwner":false}},{"title":"Widdershins","description":"OpenAPI 3.0 / Swagger 2.0 / AsyncAPI 1.0 definition to Slate / Shins compatible markdown.","links":{"websiteUrl":"https://mermade.github.io/reslate/","repoUrl":"https://github.com/Mermade/widdershins"},"filters":{"language":[{"name":"JavaScript","color":"bg-[#F2F1C7]","borderColor":"border-[#BFBE86]"}],"technology":[{"name":"Node.js","color":"bg-[#BDFF67]","borderColor":"border-[#84CE24]"},{"name":"Shell","color":"bg-[#61d0f2]","borderColor":"border-[#40ccf7]"}],"categories":["documentation-generator"],"hasCommercial":false,"isAsyncAPIOwner":false}}]},"Editors":{"description":"The following is a list of editors or related tools that allow editing of AsyncAPI document.","toolsList":[{"title":"AsyncAPI Studio","description":"Visually design your AsyncAPI files and event-driven architecture.","links":{"websiteUrl":"https://studio.asyncapi.com","repoUrl":"https://github.com/asyncapi/studio"},"filters":{"technology":[{"name":"React JS","color":"bg-[#9FECFA]","borderColor":"border-[#08D8FE]"},{"name":"TypeScript","color":"bg-[#61d0f2]","borderColor":"border-[#40ccf7]"}],"categories":["editor"],"hasCommercial":false,"isAsyncAPIOwner":true}}]},"UI components":{"description":"The following is a list of UI components to view AsyncAPI documents.","toolsList":[{"title":"Api-Diff-Viewer","description":"React component to view the difference between two Json based API documents. Supported specifications: JsonSchema, OpenAPI 3.x, AsyncAPI 2.x.","links":{"repoUrl":"https://github.com/udamir/api-diff-viewer","websiteUrl":"https://api-diff-viewer.vercel.app/"},"filters":{"language":[{"name":"TypeScript","color":"bg-[#7DBCFE]","borderColor":"border-[#2C78C7]"}],"technology":[{"name":"React JS","color":"bg-[#9FECFA]","borderColor":"border-[#08D8FE]"},{"name":"Babel","color":"bg-[#61d0f2]","borderColor":"border-[#40ccf7]"},{"name":"Storybook","color":"bg-[#61d0f2]","borderColor":"border-[#40ccf7]"}],"categories":["ui-component"],"hasCommercial":false,"isAsyncAPIOwner":false}},{"title":"AsyncAPI React component","description":"React component for rendering documentation from your specification in real-time in the browser. It also provides a WebComponent and bundle for Angular and Vue","links":{"repoUrl":"https://github.com/asyncapi/asyncapi-react"},"filters":{"language":[{"name":"TypeScript","color":"bg-[#7DBCFE]","borderColor":"border-[#2C78C7]"}],"technology":[{"name":"React JS","color":"bg-[#9FECFA]","borderColor":"border-[#08D8FE]"},{"name":"WebComponents","color":"bg-[#61d0f2]","borderColor":"border-[#40ccf7]"}],"categories":["ui-component"],"hasCommercial":false,"isAsyncAPIOwner":true}}]},"DSL":{"description":"Writing YAML by hand is no fun, and maybe you don't want a GUI, so use a Domain Specific Language to write AsyncAPI in your language of choice.","toolsList":[{"title":"BOATS","description":"Compile your single AsyncAPI file from multiple YAML files with BOATS and with the help of the template engine Nunjucks, plus a many extra helpers to automate much of the donkey work.","links":{"repoUrl":"https://github.com/j-d-carmichael/boats"},"filters":{"language":[{"name":"TypeScript","color":"bg-[#7DBCFE]","borderColor":"border-[#2C78C7]"}],"technology":[{"name":"Node.js","color":"bg-[#BDFF67]","borderColor":"border-[#84CE24]"}],"categories":["dsl"],"hasCommercial":false,"isAsyncAPIOwner":false}},{"title":"ZenWave SDK","description":"DDD and API-First for Event-Driven Microservices","links":{"websiteUrl":"https://zenwave360.github.io/","docsUrl":"https://zenwave360.github.io/zenwave-sdk/plugins/asyncapi-spring-cloud-streams3/","repoUrl":"https://github.com/zenwave360/zenwave-sdk"},"filters":{"language":[{"name":"Java","color":"bg-[#ECA2A4]","borderColor":"border-[#EC2125]"}],"technology":[{"name":"Maven","color":"bg-[#FF6B80]","borderColor":"border-[#CA1A33]"},{"name":"Liquid","color":"bg-[#61d0f2]","borderColor":"border-[#40ccf7]"},{"name":"Spring Cloud Streams","color":"bg-[#61d0f2]","borderColor":"border-[#40ccf7]"},{"name":"JHipster JDL","color":"bg-[#61d0f2]","borderColor":"border-[#40ccf7]"}],"categories":["code-generator","dsl","mocking-and-testing","cli"],"hasCommercial":false,"isAsyncAPIOwner":false}}]},"Frameworks":{"description":"The following is a list of API/application frameworks that make use of AsyncAPI.","toolsList":[{"title":"Asynction","description":"SocketIO server framework driven by the AsyncAPI specification. Asynction guarantees that your API will work in accordance with its AsyncAPI documentation. Built on top of Flask-SocketIO.","links":{"websiteUrl":"https://pypi.org/project/asynction/","repoUrl":"https://github.com/dedoussis/asynction"},"filters":{"language":[{"name":"Python","color":"bg-[#A8D0EF]","borderColor":"border-[#3878AB]"}],"technology":[{"name":"Flask","color":"bg-[#D7C7F2]","borderColor":"border-[#A387D2]"}],"categories":["framework"],"hasCommercial":false,"isAsyncAPIOwner":false}}]},"GitHub Actions":{"description":"The following is a list of GitHub Actions that you can use in your workflows","toolsList":[{"title":"API documentation generation on Bump.sh","description":"With this GitHub Action you can automatically generate your API reference (with the changelog and diff) on Bump.sh from any AsyncAPI file.","links":{"websiteUrl":"https://github.com/marketplace/actions/api-documentation-on-bump","repoUrl":"https://github.com/bump-sh/github-action"},"filters":{"language":[{"name":"TypeScript","color":"bg-[#7DBCFE]","borderColor":"border-[#2C78C7]"}],"categories":["github-action"],"hasCommercial":false,"isAsyncAPIOwner":false,"technology":[]}},{"title":"AsyncAPI GitHub Action","description":"This action validates if the AsyncAPI schema file is valid or not.","links":{"websiteUrl":"https://github.com/marketplace/actions/asyncapi-github-action","repoUrl":"https://github.com/WaleedAshraf/asyncapi-github-action"},"filters":{"language":[{"name":"JavaScript","color":"bg-[#F2F1C7]","borderColor":"border-[#BFBE86]"}],"technology":[{"name":"Node.js","color":"bg-[#BDFF67]","borderColor":"border-[#84CE24]"}],"categories":["github-action","validator"],"hasCommercial":false,"isAsyncAPIOwner":false}},{"title":"Automated version bump for AsyncAPI documents","description":"With this GitHub Action, you can automatically bump the version based on commit messages, which is similar to what semantic-release is for NPM.","links":{"websiteUrl":"https://github.com/marketplace/actions/automated-version-bump-for-asyncapi","repoUrl":"https://github.com/bump-sh/github-action"},"filters":{"language":[{"name":"JavaScript","color":"bg-[#F2F1C7]","borderColor":"border-[#BFBE86]"}],"technology":[{"name":"Node.js","color":"bg-[#BDFF67]","borderColor":"border-[#84CE24]"}],"categories":["github-action"],"hasCommercial":false,"isAsyncAPIOwner":false}},{"title":"GitHub Action for Generator","description":"GitHub Action to generate all the things from your AsyncAPI document using the AsyncAPI generator","links":{"repoUrl":"https://github.com/asyncapi/github-action-for-generator"},"filters":{"technology":[{"name":"AsyncAPI Generator","color":"bg-[#61d0f2]","borderColor":"border-[#40ccf7]"}],"categories":["github-action"],"hasCommercial":false,"isAsyncAPIOwner":true}},{"title":"GitHub Action for Generator","description":null,"links":{"repoUrl":"https://github.com/actions-marketplace-validations/asyncapi_github-action-for-generator"},"filters":{"technology":[{"name":"AsyncAPI Generator","color":"bg-[#61d0f2]","borderColor":"border-[#40ccf7]"}],"categories":["github-action"],"hasCommercial":false,"isAsyncAPIOwner":false}}]},"Mocking and Testing":{"description":"The tools below take specification documents as input, then publish fake messages to broker destinations for simulation purposes. They may also check that publisher messages are compliant with schemas.","toolsList":[{"title":"Microcks","description":"Mocking and testing platform for API and microservices. Turn your AsyncAPI, OpenAPI contract examples, or Postman collections into ready-to-use mocks. Use examples to simulate and validate received messages according to schema elements.","links":{"websiteUrl":"https://microcks.io/","repoUrl":"https://github.com/microcks/microcks"},"filters":{"language":[{"name":"Java","color":"bg-[#ECA2A4]","borderColor":"border-[#EC2125]"}],"technology":[{"name":"TypeScript","color":"bg-[#61d0f2]","borderColor":"border-[#40ccf7]"},{"name":"Kubernetes-native","color":"bg-[#D7C7F2]","borderColor":"border-[#A387D2]"},{"name":"Saas","color":"bg-[#6AB8EC]","borderColor":"border-[#2275AD]"}],"categories":["mocking-and-testing"],"hasCommercial":false,"isAsyncAPIOwner":false}},{"title":"MultiAPI Converter","description":"Use AsyncAPI definition, to generate Spring Cloud Contract producer validation or consumer stubs, using maven.","links":{"repoUrl":"https://github.com/sngular/scc-multiapi-converter"},"filters":{"language":[{"name":"Java","color":"bg-[#ECA2A4]","borderColor":"border-[#EC2125]"}],"technology":[{"name":"Springboot","color":"bg-[#98E279]","borderColor":"border-[#68BC44]"}],"categories":["mocking-and-testing"],"hasCommercial":false,"isAsyncAPIOwner":false}},{"title":"Specmatic","description":"An API contract testing tool that helps ensure the correctness APIs by automatically generating test cases and verifying them against the API spec. It simplifies the process of testing APIs and reduces the likelihood of bugs and compatibility issues.","links":{"websiteUrl":"https://specmatic.in","docsUrl":"https://specmatic.in/documentation/","repoUrl":"https://github.com/znsio/specmatic"},"filters":{"language":[{"name":"Kotlin","color":"bg-[#B1ACDF]","borderColor":"border-[#756BD9]"}],"technology":[{"name":"Maven","color":"bg-[#FF6B80]","borderColor":"border-[#CA1A33]"}],"categories":["mocking-and-testing"],"hasCommercial":false,"isAsyncAPIOwner":false}},{"title":"Virtualan","description":"Mocking and testing platform for API and microservices. Allows you to create and setup mocks for OpenAPI and AsyncAPI contracts. Shows how to setup and create AsyncAPI GitHub Reference Examples and OpenAPI GitHub Reference Examples.","links":{"websiteUrl":"https://www.virtualan.io/index.html","repoUrl":"https://github.com/virtualansoftware"},"filters":{"technology":[{"name":"Kubernetes-native","color":"bg-[#D7C7F2]","borderColor":"border-[#A387D2]"}],"categories":["mocking-and-testing"],"hasCommercial":false,"isAsyncAPIOwner":false}},{"title":"ZenWave SDK","description":"DDD and API-First for Event-Driven Microservices","links":{"websiteUrl":"https://zenwave360.github.io/","docsUrl":"https://zenwave360.github.io/zenwave-sdk/plugins/asyncapi-spring-cloud-streams3/","repoUrl":"https://github.com/zenwave360/zenwave-sdk"},"filters":{"language":[{"name":"Java","color":"bg-[#ECA2A4]","borderColor":"border-[#EC2125]"}],"technology":[{"name":"Maven","color":"bg-[#FF6B80]","borderColor":"border-[#CA1A33]"},{"name":"Liquid","color":"bg-[#61d0f2]","borderColor":"border-[#40ccf7]"},{"name":"Spring Cloud Streams","color":"bg-[#61d0f2]","borderColor":"border-[#40ccf7]"},{"name":"JHipster JDL","color":"bg-[#61d0f2]","borderColor":"border-[#40ccf7]"}],"categories":["code-generator","dsl","mocking-and-testing","cli"],"hasCommercial":false,"isAsyncAPIOwner":false}}]},"Validators":{"description":"The following is a list of tools that validate AsyncAPI documents.","toolsList":[{"title":"AMF","description":"AMF (AML Modeling Framework) is an open-source library capable of parsing and validating AML metadata documents.","links":{"docsUrl":"https://a.ml/docs/","repoUrl":"https://github.com/aml-org/amf"},"filters":{"language":[{"name":"Scala","color":"bg-[#FFA299]","borderColor":"border-[#DF301F]"}],"categories":["validator"],"hasCommercial":false,"isAsyncAPIOwner":false,"technology":[]}},{"title":"AsyncAPI GitHub Action","description":"This action validates if the AsyncAPI schema file is valid or not.","links":{"websiteUrl":"https://github.com/marketplace/actions/asyncapi-github-action","repoUrl":"https://github.com/WaleedAshraf/asyncapi-github-action"},"filters":{"language":[{"name":"JavaScript","color":"bg-[#F2F1C7]","borderColor":"border-[#BFBE86]"}],"technology":[{"name":"Node.js","color":"bg-[#BDFF67]","borderColor":"border-[#84CE24]"}],"categories":["github-action","validator"],"hasCommercial":false,"isAsyncAPIOwner":false}},{"title":"AsyncAPI Parser","description":"Use this package to parse and validate AsyncAPI documents —either YAML or JSON— in your Node.js or browser application. Updated bundle for the browser is always attached to the GitHub Release.","links":{"repoUrl":"https://github.com/asyncapi/parser-js"},"filters":{"language":[{"name":"JavaScript","color":"bg-[#F2F1C7]","borderColor":"border-[#BFBE86]"}],"technology":[{"name":"Node.js","color":"bg-[#BDFF67]","borderColor":"border-[#84CE24]"}],"categories":["validator"],"hasCommercial":false,"isAsyncAPIOwner":true}},{"title":"AsyncAPI Parser","description":"The AsyncAPI Parser validates AsyncAPI documents according to dedicated schemas.","links":{"repoUrl":"https://github.com/asyncapi/parser-go"},"filters":{"language":[{"name":"Go/Golang","color":"bg-[#8ECFDF]","borderColor":"border-[#00AFD9]"}],"categories":["validator"],"hasCommercial":false,"isAsyncAPIOwner":true,"technology":[]}},{"title":"AsyncAPI Parser Wrapper","description":"Use this library to parse and validate AsyncAPI documents — either YAML or JSON — in your Java application. It is a Java wrapper over JavaScript Parser implemented using J2V8.","links":{"repoUrl":"https://github.com/AsyncAPITools/parser-java-wrapper"},"filters":{"language":[{"name":"Java","color":"bg-[#ECA2A4]","borderColor":"border-[#EC2125]"}],"categories":["validator"],"hasCommercial":false,"isAsyncAPIOwner":false,"technology":[]}},{"title":"asyncapi-validator","description":"It allows you to validate the schema of your messages against your AsyncAPI schema definition. You can use it with Kafka, RabbitMQ or any other messaging/queue.","links":{"repoUrl":"https://github.com/WaleedAshraf/asyncapi-validator"},"filters":{"language":[{"name":"JavaScript","color":"bg-[#F2F1C7]","borderColor":"border-[#BFBE86]"}],"technology":[{"name":"Node.js","color":"bg-[#BDFF67]","borderColor":"border-[#84CE24]"}],"categories":["validator"],"hasCommercial":false,"isAsyncAPIOwner":false}},{"title":"AsyncAPI.Net","description":"The AsyncAPI.NET SDK contains a useful object model for AsyncAPI documents in .NET along with common serializers to extract raw OpenAPI JSON and YAML documents from the model.","links":{"websiteUrl":"https://github.com/LEGO/AsyncAPI.NET/","repoUrl":"https://github.com/LEGO/AsyncAPI.NET"},"filters":{"language":[{"name":"C#","color":"bg-[#E3AFE0]","borderColor":"border-[#9B4F96]"}],"technology":[{"name":".NET","color":"bg-[#A184FF]","borderColor":"border-[#5026D4]"},{"name":"ASP.NET","color":"bg-[#71C2FB]","borderColor":"border-[#1577BC]"}],"categories":["converters","code-first","validator"],"hasCommercial":false,"isAsyncAPIOwner":false}},{"title":"Spectral","description":"A flexible JSON/YAML linter for creating automated style guides, with baked in support for OpenAPI v3.1, v3.0, and v2.0 as well as AsyncAPI v2.x.","links":{"repoUrl":"https://github.com/stoplightio/spectral"},"filters":{"language":[{"name":"TypeScript","color":"bg-[#7DBCFE]","borderColor":"border-[#2C78C7]"}],"technology":[{"name":"Node.js","color":"bg-[#BDFF67]","borderColor":"border-[#84CE24]"}],"categories":["validator"],"hasCommercial":false,"isAsyncAPIOwner":false}}]},"Compare tools":{"description":"The following is a list of tools that compare AsyncAPI documents.","toolsList":[{"title":"Api-Smart-Diff","description":"It allows you to compare two API documents and classify changes. Supported API specifications: OpenAPI, AsyncAPI, JsonSchema.","links":{"repoUrl":"https://github.com/udamir/api-smart-diff"},"filters":{"language":[{"name":"TypeScript","color":"bg-[#7DBCFE]","borderColor":"border-[#2C78C7]"}],"categories":["compare-tool"],"hasCommercial":false,"isAsyncAPIOwner":false,"technology":[]}},{"title":"AsyncAPI Diff","description":"Diff is a library that compares two AsyncAPI Documents and provides information about the differences by pointing out explicitly information like breaking changes.","links":{"repoUrl":"https://github.com/asyncapi/diff"},"filters":{"language":[{"name":"TypeScript","color":"bg-[#7DBCFE]","borderColor":"border-[#2C78C7]"}],"technology":[{"name":"TypeScript","color":"bg-[#61d0f2]","borderColor":"border-[#40ccf7]"}],"categories":["compare-tool"],"hasCommercial":false,"isAsyncAPIOwner":true}},{"title":"jasyncapicmp","description":"Tool for comparing two AsyncAPI versions and evaluating compatibility.","links":{"websiteUrl":"https://siom79.github.io/jasyncapicmp/","docsUrl":"https://github.com/siom79/jasyncapicmp","repoUrl":"https://github.com/siom79/jasyncapicmp"},"filters":{"language":[{"name":"Java","color":"bg-[#ECA2A4]","borderColor":"border-[#EC2125]"}],"technology":[{"name":"Maven","color":"bg-[#FF6B80]","borderColor":"border-[#CA1A33]"}],"categories":["compare-tool"],"hasCommercial":false,"isAsyncAPIOwner":false}},{"title":"jasyncapicmp","description":"Tool/library/maven-plugin for comparing two AsyncAPI versions and evaluating compatibility.","links":{"websiteUrl":"https://siom79.github.io/jasyncapicmp/","repoUrl":"https://github.com/siom79/jasyncapicmp"},"filters":{"language":[{"name":"Java","color":"bg-[#ECA2A4]","borderColor":"border-[#EC2125]"}],"technology":[{"name":"Maven","color":"bg-[#FF6B80]","borderColor":"border-[#CA1A33]"}],"categories":["compare-tool"],"hasCommercial":false,"isAsyncAPIOwner":false}}]},"CLIs":{"description":"The following is a list of tools that you can work with in terminal or do some CI/CD automation.","toolsList":[{"title":"AsyncAPI CLI","description":"One CLI to rule them all. \nThis is a CLI that aims to integrate all AsyncAPI tools that you need while AsyncAPI document development and maintainance. \nYou can use it to generate docs or code, validate AsyncAPI document and event create new documents.\n","links":{"websiteUrl":"https://www.asyncapi.com/tools/cli","repoUrl":"https://github.com/asyncapi/cli"},"filters":{"technology":[{"name":"TypeScript","color":"bg-[#61d0f2]","borderColor":"border-[#40ccf7]"}],"categories":["others","cli"],"hasCommercial":false,"isAsyncAPIOwner":true}},{"title":"AsyncAPI-format","description":"Format an AsyncAPI document by ordering, casing, formatting, and filtering fields.","links":{"repoUrl":"https://github.com/asyncapi/converter-go"},"filters":{"language":[{"name":"JavaScript","color":"bg-[#F2F1C7]","borderColor":"border-[#BFBE86]"}],"technology":[{"name":"Node.js","color":"bg-[#BDFF67]","borderColor":"border-[#84CE24]"}],"categories":["converter","cli"],"hasCommercial":false,"isAsyncAPIOwner":true}},{"title":"ZenWave SDK","description":"DDD and API-First for Event-Driven Microservices","links":{"websiteUrl":"https://zenwave360.github.io/","docsUrl":"https://zenwave360.github.io/zenwave-sdk/plugins/asyncapi-spring-cloud-streams3/","repoUrl":"https://github.com/zenwave360/zenwave-sdk"},"filters":{"language":[{"name":"Java","color":"bg-[#ECA2A4]","borderColor":"border-[#EC2125]"}],"technology":[{"name":"Maven","color":"bg-[#FF6B80]","borderColor":"border-[#CA1A33]"},{"name":"Liquid","color":"bg-[#61d0f2]","borderColor":"border-[#40ccf7]"},{"name":"Spring Cloud Streams","color":"bg-[#61d0f2]","borderColor":"border-[#40ccf7]"},{"name":"JHipster JDL","color":"bg-[#61d0f2]","borderColor":"border-[#40ccf7]"}],"categories":["code-generator","dsl","mocking-and-testing","cli"],"hasCommercial":false,"isAsyncAPIOwner":false}}]},"Bundlers":{"description":"The following is a list of tools that you can work with to bundle AsyncAPI documents.","toolsList":[{"title":"Api-ref-bundler","description":"It allows you bundle/dereference external/internal $refs in Json based API document. Supported specifications: OpenAPI, AsyncAPI, JsonSchema.","links":{"repoUrl":"https://github.com/udamir/api-ref-bundler"},"filters":{"language":[{"name":"TypeScript","color":"bg-[#7DBCFE]","borderColor":"border-[#2C78C7]"}],"technology":[{"name":"TypeScript","color":"bg-[#61d0f2]","borderColor":"border-[#40ccf7]"}],"categories":["bundler"],"hasCommercial":false,"isAsyncAPIOwner":false}},{"title":"AsyncAPI Bundler","description":"Combine multiple AsyncAPI specification files into one.","links":{"repoUrl":"https://github.com/asyncapi/bundler"},"filters":{"language":[{"name":"TypeScript","color":"bg-[#7DBCFE]","borderColor":"border-[#2C78C7]"}],"technology":[{"name":"TypeScript","color":"bg-[#61d0f2]","borderColor":"border-[#40ccf7]"}],"categories":["bundler"],"hasCommercial":false,"isAsyncAPIOwner":true}}]},"IDE Extensions":{"description":"The following is a list of extensions for different IDEs like VSCode, IntelliJ IDEA and others","toolsList":[{"title":"asyncapi-preview","description":"VSCode extension that enables you to:\n - Preview documentation generated using you AsyncAPI document. It uses AsyncAPI React component under the hood,\n - Create AsyncAPI documents faster using SmartPaste functionality\n","links":{"repoUrl":"https://github.com/asyncapi/vs-asyncapi-preview"},"filters":{"technology":[{"name":"VSCode","color":"bg-[#61d0f2]","borderColor":"border-[#40ccf7]"},{"name":"SmartPaste","color":"bg-[#61d0f2]","borderColor":"border-[#40ccf7]"}],"categories":["ide-extension"],"hasCommercial":false,"isAsyncAPIOwner":true}},{"title":"asyncapi-preview","description":"VSCode extension that enables you to:\n - Preview documentation generated using you AsyncAPI document. It uses AsyncAPI React component under the hood,\n - Create AsyncAPI documents faster using SmartPaste functionality\n","links":{"repoUrl":"https://github.com/Savio629/testing2"},"filters":{"technology":[{"name":"VSCode","color":"bg-[#61d0f2]","borderColor":"border-[#40ccf7]"},{"name":"SmartPaste","color":"bg-[#61d0f2]","borderColor":"border-[#40ccf7]"}],"categories":["ide-extension"],"hasCommercial":false,"isAsyncAPIOwner":false}},{"title":"jAsyncAPI - IDEA plugin","description":"Idea plugin for the java-asyncapi - Helps to edit and validate AsyncAPI schemas.","links":{"websiteUrl":"https://plugins.jetbrains.com/plugin/15673-asyncapi","docsUrl":"https://github.com/asyncapi/jasyncapi-idea-plugin#usage","repoUrl":"https://github.com/asyncapi/jasyncapi-idea-plugin"},"filters":{"language":[{"name":"Kotlin","color":"bg-[#B1ACDF]","borderColor":"border-[#756BD9]"}],"technology":[{"name":"JetBrains","color":"bg-[#61d0f2]","borderColor":"border-[#40ccf7]"},{"name":"IntelliJ IDEA","color":"bg-[#61d0f2]","borderColor":"border-[#40ccf7]"}],"categories":["ide-extension"],"hasCommercial":false,"isAsyncAPIOwner":true}}]},"AsyncAPI Generator Templates":{"description":"The following is a list of templates compatible with AsyncAPI Generator. You can use them to generate apps, clients or documentation from your AsyncAPI documents.","toolsList":[{"title":"Node.js Multiprotocol Template","description":"This template generates a server using your AsyncAPI document. It supports multiple different protocols, like Kafka or MQTT. It is designed in the way that generated code is a library and with it's API you can start the server, send messages or register a middleware for listening incoming messages. Runtime message validation included.","links":{"repoUrl":"https://github.com/asyncapi/nodejs-template"},"filters":{"language":[{"name":"JavaScript","color":"bg-[#F2F1C7]","borderColor":"border-[#BFBE86]"}],"technology":[{"name":"Node.js","color":"bg-[#BDFF67]","borderColor":"border-[#84CE24]"}],"categories":["generator-template"],"hasCommercial":false,"isAsyncAPIOwner":true}}]},"Others":{"description":"The following is a list of tools that comes under Other category.","toolsList":[{"title":"AsyncAPI CLI","description":"One CLI to rule them all. \nThis is a CLI that aims to integrate all AsyncAPI tools that you need while AsyncAPI document development and maintainance. \nYou can use it to generate docs or code, validate AsyncAPI document and event create new documents.\n","links":{"websiteUrl":"https://www.asyncapi.com/tools/cli","repoUrl":"https://github.com/asyncapi/cli"},"filters":{"technology":[{"name":"TypeScript","color":"bg-[#61d0f2]","borderColor":"border-[#40ccf7]"}],"categories":["others","cli"],"hasCommercial":false,"isAsyncAPIOwner":true}}]}} \ No newline at end of file From a8b64e2c78c5cf9be877eed8f7d615689293fca7 Mon Sep 17 00:00:00 2001 From: asyncapi-bot Date: Mon, 9 Oct 2023 11:44:41 +0200 Subject: [PATCH 014/134] docs(cli): update latest cli documentation (#2215) --- pages/docs/tools/cli/usage.md | 50 +++++++++++++++++------------------ 1 file changed, 25 insertions(+), 25 deletions(-) diff --git a/pages/docs/tools/cli/usage.md b/pages/docs/tools/cli/usage.md index 7ef1d823812..385149290ea 100644 --- a/pages/docs/tools/cli/usage.md +++ b/pages/docs/tools/cli/usage.md @@ -29,7 +29,7 @@ $ npm install -g @asyncapi/cli $ asyncapi COMMAND running command... $ asyncapi (--version) -@asyncapi/cli/0.58.4 linux-x64 node-v18.18.0 +@asyncapi/cli/0.58.5 linux-x64 node-v18.18.0 $ asyncapi --help [COMMAND] USAGE $ asyncapi COMMAND @@ -93,7 +93,7 @@ EXAMPLES $ asyncapi bundle ./asyncapi.yaml ./features.yaml --base ./asyncapi.yaml --reference-into-components ``` -_See code: [src/commands/bundle.ts](https://github.com/asyncapi/cli/blob/v0.58.4/src/commands/bundle.ts)_ +_See code: [src/commands/bundle.ts](https://github.com/asyncapi/cli/blob/v0.58.5/src/commands/bundle.ts)_ ## `asyncapi config` @@ -107,7 +107,7 @@ DESCRIPTION CLI config settings ``` -_See code: [src/commands/config/index.ts](https://github.com/asyncapi/cli/blob/v0.58.4/src/commands/config/index.ts)_ +_See code: [src/commands/config/index.ts](https://github.com/asyncapi/cli/blob/v0.58.5/src/commands/config/index.ts)_ ## `asyncapi config context` @@ -121,7 +121,7 @@ DESCRIPTION Manage short aliases for full paths to AsyncAPI documents ``` -_See code: [src/commands/config/context/index.ts](https://github.com/asyncapi/cli/blob/v0.58.4/src/commands/config/context/index.ts)_ +_See code: [src/commands/config/context/index.ts](https://github.com/asyncapi/cli/blob/v0.58.5/src/commands/config/context/index.ts)_ ## `asyncapi config context add CONTEXT-NAME SPEC-FILE-PATH` @@ -143,7 +143,7 @@ DESCRIPTION Add a context to the store ``` -_See code: [src/commands/config/context/add.ts](https://github.com/asyncapi/cli/blob/v0.58.4/src/commands/config/context/add.ts)_ +_See code: [src/commands/config/context/add.ts](https://github.com/asyncapi/cli/blob/v0.58.5/src/commands/config/context/add.ts)_ ## `asyncapi config context current` @@ -160,7 +160,7 @@ DESCRIPTION Shows the current context that is being used ``` -_See code: [src/commands/config/context/current.ts](https://github.com/asyncapi/cli/blob/v0.58.4/src/commands/config/context/current.ts)_ +_See code: [src/commands/config/context/current.ts](https://github.com/asyncapi/cli/blob/v0.58.5/src/commands/config/context/current.ts)_ ## `asyncapi config context edit CONTEXT-NAME NEW-SPEC-FILE-PATH` @@ -181,7 +181,7 @@ DESCRIPTION Edit a context in the store ``` -_See code: [src/commands/config/context/edit.ts](https://github.com/asyncapi/cli/blob/v0.58.4/src/commands/config/context/edit.ts)_ +_See code: [src/commands/config/context/edit.ts](https://github.com/asyncapi/cli/blob/v0.58.5/src/commands/config/context/edit.ts)_ ## `asyncapi config context init [CONTEXT-FILE-PATH]` @@ -204,7 +204,7 @@ DESCRIPTION Initialize context ``` -_See code: [src/commands/config/context/init.ts](https://github.com/asyncapi/cli/blob/v0.58.4/src/commands/config/context/init.ts)_ +_See code: [src/commands/config/context/init.ts](https://github.com/asyncapi/cli/blob/v0.58.5/src/commands/config/context/init.ts)_ ## `asyncapi config context list` @@ -221,7 +221,7 @@ DESCRIPTION List all the stored contexts in the store ``` -_See code: [src/commands/config/context/list.ts](https://github.com/asyncapi/cli/blob/v0.58.4/src/commands/config/context/list.ts)_ +_See code: [src/commands/config/context/list.ts](https://github.com/asyncapi/cli/blob/v0.58.5/src/commands/config/context/list.ts)_ ## `asyncapi config context remove CONTEXT-NAME` @@ -241,7 +241,7 @@ DESCRIPTION Delete a context from the store ``` -_See code: [src/commands/config/context/remove.ts](https://github.com/asyncapi/cli/blob/v0.58.4/src/commands/config/context/remove.ts)_ +_See code: [src/commands/config/context/remove.ts](https://github.com/asyncapi/cli/blob/v0.58.5/src/commands/config/context/remove.ts)_ ## `asyncapi config context use CONTEXT-NAME` @@ -261,7 +261,7 @@ DESCRIPTION Set a context as current ``` -_See code: [src/commands/config/context/use.ts](https://github.com/asyncapi/cli/blob/v0.58.4/src/commands/config/context/use.ts)_ +_See code: [src/commands/config/context/use.ts](https://github.com/asyncapi/cli/blob/v0.58.5/src/commands/config/context/use.ts)_ ## `asyncapi config versions` @@ -278,7 +278,7 @@ DESCRIPTION Show versions of AsyncAPI tools used ``` -_See code: [src/commands/config/versions.ts](https://github.com/asyncapi/cli/blob/v0.58.4/src/commands/config/versions.ts)_ +_See code: [src/commands/config/versions.ts](https://github.com/asyncapi/cli/blob/v0.58.5/src/commands/config/versions.ts)_ ## `asyncapi convert [SPEC-FILE]` @@ -300,7 +300,7 @@ DESCRIPTION Convert asyncapi documents older to newer versions ``` -_See code: [src/commands/convert.ts](https://github.com/asyncapi/cli/blob/v0.58.4/src/commands/convert.ts)_ +_See code: [src/commands/convert.ts](https://github.com/asyncapi/cli/blob/v0.58.5/src/commands/convert.ts)_ ## `asyncapi diff OLD NEW` @@ -355,7 +355,7 @@ DESCRIPTION Find diff between two asyncapi files ``` -_See code: [src/commands/diff.ts](https://github.com/asyncapi/cli/blob/v0.58.4/src/commands/diff.ts)_ +_See code: [src/commands/diff.ts](https://github.com/asyncapi/cli/blob/v0.58.5/src/commands/diff.ts)_ ## `asyncapi generate` @@ -369,7 +369,7 @@ DESCRIPTION Generate typed models or other things like clients, applications or docs using AsyncAPI Generator templates. ``` -_See code: [src/commands/generate/index.ts](https://github.com/asyncapi/cli/blob/v0.58.4/src/commands/generate/index.ts)_ +_See code: [src/commands/generate/index.ts](https://github.com/asyncapi/cli/blob/v0.58.5/src/commands/generate/index.ts)_ ## `asyncapi generate fromTemplate ASYNCAPI TEMPLATE` @@ -406,7 +406,7 @@ EXAMPLES $ asyncapi generate fromTemplate asyncapi.yaml @asyncapi/html-template --param version=1.0.0 singleFile=true --output ./docs --force-write ``` -_See code: [src/commands/generate/fromTemplate.ts](https://github.com/asyncapi/cli/blob/v0.58.4/src/commands/generate/fromTemplate.ts)_ +_See code: [src/commands/generate/fromTemplate.ts](https://github.com/asyncapi/cli/blob/v0.58.5/src/commands/generate/fromTemplate.ts)_ ## `asyncapi generate models LANGUAGE FILE` @@ -480,7 +480,7 @@ DESCRIPTION Generates typed models ``` -_See code: [src/commands/generate/models.ts](https://github.com/asyncapi/cli/blob/v0.58.4/src/commands/generate/models.ts)_ +_See code: [src/commands/generate/models.ts](https://github.com/asyncapi/cli/blob/v0.58.5/src/commands/generate/models.ts)_ ## `asyncapi new` @@ -535,7 +535,7 @@ EXAMPLES $ asyncapi new --file-name=my-asyncapi.yml --example=default-example.yml --no-tty - create a new file with a specific name, using one of the examples and without interactive mode ``` -_See code: [src/commands/new/index.ts](https://github.com/asyncapi/cli/blob/v0.58.4/src/commands/new/index.ts)_ +_See code: [src/commands/new/index.ts](https://github.com/asyncapi/cli/blob/v0.58.5/src/commands/new/index.ts)_ ## `asyncapi new file` @@ -590,7 +590,7 @@ EXAMPLES $ asyncapi new --file-name=my-asyncapi.yml --example=default-example.yml --no-tty - create a new file with a specific name, using one of the examples and without interactive mode ``` -_See code: [src/commands/new/file.ts](https://github.com/asyncapi/cli/blob/v0.58.4/src/commands/new/file.ts)_ +_See code: [src/commands/new/file.ts](https://github.com/asyncapi/cli/blob/v0.58.5/src/commands/new/file.ts)_ ## `asyncapi new glee` @@ -608,7 +608,7 @@ DESCRIPTION Creates a new Glee project ``` -_See code: [src/commands/new/glee.ts](https://github.com/asyncapi/cli/blob/v0.58.4/src/commands/new/glee.ts)_ +_See code: [src/commands/new/glee.ts](https://github.com/asyncapi/cli/blob/v0.58.5/src/commands/new/glee.ts)_ ## `asyncapi new project` @@ -626,7 +626,7 @@ DESCRIPTION Creates a new Glee project ``` -_See code: [src/commands/new/project.ts](https://github.com/asyncapi/cli/blob/v0.58.4/src/commands/new/project.ts)_ +_See code: [src/commands/new/project.ts](https://github.com/asyncapi/cli/blob/v0.58.5/src/commands/new/project.ts)_ ## `asyncapi optimize [SPEC-FILE]` @@ -662,7 +662,7 @@ EXAMPLES $ asyncapi optimize ./asyncapi.yaml --optimization=remove-components,reuse-components,move-to-components --output=terminal --no-tty ``` -_See code: [src/commands/optimize.ts](https://github.com/asyncapi/cli/blob/v0.58.4/src/commands/optimize.ts)_ +_See code: [src/commands/optimize.ts](https://github.com/asyncapi/cli/blob/v0.58.5/src/commands/optimize.ts)_ ## `asyncapi start` @@ -676,7 +676,7 @@ DESCRIPTION Start asyncapi studio ``` -_See code: [src/commands/start/index.ts](https://github.com/asyncapi/cli/blob/v0.58.4/src/commands/start/index.ts)_ +_See code: [src/commands/start/index.ts](https://github.com/asyncapi/cli/blob/v0.58.5/src/commands/start/index.ts)_ ## `asyncapi start studio` @@ -695,7 +695,7 @@ DESCRIPTION starts a new local instance of Studio ``` -_See code: [src/commands/start/studio.ts](https://github.com/asyncapi/cli/blob/v0.58.4/src/commands/start/studio.ts)_ +_See code: [src/commands/start/studio.ts](https://github.com/asyncapi/cli/blob/v0.58.5/src/commands/start/studio.ts)_ ## `asyncapi validate [SPEC-FILE]` @@ -722,5 +722,5 @@ DESCRIPTION validate asyncapi file ``` -_See code: [src/commands/validate.ts](https://github.com/asyncapi/cli/blob/v0.58.4/src/commands/validate.ts)_ +_See code: [src/commands/validate.ts](https://github.com/asyncapi/cli/blob/v0.58.5/src/commands/validate.ts)_ From f2eea9e26dd29aa7ee304dc2b80dab38961e01b3 Mon Sep 17 00:00:00 2001 From: asyncapi-bot Date: Mon, 9 Oct 2023 12:33:51 +0200 Subject: [PATCH 015/134] docs(cli): update latest cli documentation (#2216) --- pages/docs/tools/cli/usage.md | 50 +++++++++++++++++------------------ 1 file changed, 25 insertions(+), 25 deletions(-) diff --git a/pages/docs/tools/cli/usage.md b/pages/docs/tools/cli/usage.md index 385149290ea..ebebde5c84e 100644 --- a/pages/docs/tools/cli/usage.md +++ b/pages/docs/tools/cli/usage.md @@ -29,7 +29,7 @@ $ npm install -g @asyncapi/cli $ asyncapi COMMAND running command... $ asyncapi (--version) -@asyncapi/cli/0.58.5 linux-x64 node-v18.18.0 +@asyncapi/cli/0.58.6 linux-x64 node-v18.18.0 $ asyncapi --help [COMMAND] USAGE $ asyncapi COMMAND @@ -93,7 +93,7 @@ EXAMPLES $ asyncapi bundle ./asyncapi.yaml ./features.yaml --base ./asyncapi.yaml --reference-into-components ``` -_See code: [src/commands/bundle.ts](https://github.com/asyncapi/cli/blob/v0.58.5/src/commands/bundle.ts)_ +_See code: [src/commands/bundle.ts](https://github.com/asyncapi/cli/blob/v0.58.6/src/commands/bundle.ts)_ ## `asyncapi config` @@ -107,7 +107,7 @@ DESCRIPTION CLI config settings ``` -_See code: [src/commands/config/index.ts](https://github.com/asyncapi/cli/blob/v0.58.5/src/commands/config/index.ts)_ +_See code: [src/commands/config/index.ts](https://github.com/asyncapi/cli/blob/v0.58.6/src/commands/config/index.ts)_ ## `asyncapi config context` @@ -121,7 +121,7 @@ DESCRIPTION Manage short aliases for full paths to AsyncAPI documents ``` -_See code: [src/commands/config/context/index.ts](https://github.com/asyncapi/cli/blob/v0.58.5/src/commands/config/context/index.ts)_ +_See code: [src/commands/config/context/index.ts](https://github.com/asyncapi/cli/blob/v0.58.6/src/commands/config/context/index.ts)_ ## `asyncapi config context add CONTEXT-NAME SPEC-FILE-PATH` @@ -143,7 +143,7 @@ DESCRIPTION Add a context to the store ``` -_See code: [src/commands/config/context/add.ts](https://github.com/asyncapi/cli/blob/v0.58.5/src/commands/config/context/add.ts)_ +_See code: [src/commands/config/context/add.ts](https://github.com/asyncapi/cli/blob/v0.58.6/src/commands/config/context/add.ts)_ ## `asyncapi config context current` @@ -160,7 +160,7 @@ DESCRIPTION Shows the current context that is being used ``` -_See code: [src/commands/config/context/current.ts](https://github.com/asyncapi/cli/blob/v0.58.5/src/commands/config/context/current.ts)_ +_See code: [src/commands/config/context/current.ts](https://github.com/asyncapi/cli/blob/v0.58.6/src/commands/config/context/current.ts)_ ## `asyncapi config context edit CONTEXT-NAME NEW-SPEC-FILE-PATH` @@ -181,7 +181,7 @@ DESCRIPTION Edit a context in the store ``` -_See code: [src/commands/config/context/edit.ts](https://github.com/asyncapi/cli/blob/v0.58.5/src/commands/config/context/edit.ts)_ +_See code: [src/commands/config/context/edit.ts](https://github.com/asyncapi/cli/blob/v0.58.6/src/commands/config/context/edit.ts)_ ## `asyncapi config context init [CONTEXT-FILE-PATH]` @@ -204,7 +204,7 @@ DESCRIPTION Initialize context ``` -_See code: [src/commands/config/context/init.ts](https://github.com/asyncapi/cli/blob/v0.58.5/src/commands/config/context/init.ts)_ +_See code: [src/commands/config/context/init.ts](https://github.com/asyncapi/cli/blob/v0.58.6/src/commands/config/context/init.ts)_ ## `asyncapi config context list` @@ -221,7 +221,7 @@ DESCRIPTION List all the stored contexts in the store ``` -_See code: [src/commands/config/context/list.ts](https://github.com/asyncapi/cli/blob/v0.58.5/src/commands/config/context/list.ts)_ +_See code: [src/commands/config/context/list.ts](https://github.com/asyncapi/cli/blob/v0.58.6/src/commands/config/context/list.ts)_ ## `asyncapi config context remove CONTEXT-NAME` @@ -241,7 +241,7 @@ DESCRIPTION Delete a context from the store ``` -_See code: [src/commands/config/context/remove.ts](https://github.com/asyncapi/cli/blob/v0.58.5/src/commands/config/context/remove.ts)_ +_See code: [src/commands/config/context/remove.ts](https://github.com/asyncapi/cli/blob/v0.58.6/src/commands/config/context/remove.ts)_ ## `asyncapi config context use CONTEXT-NAME` @@ -261,7 +261,7 @@ DESCRIPTION Set a context as current ``` -_See code: [src/commands/config/context/use.ts](https://github.com/asyncapi/cli/blob/v0.58.5/src/commands/config/context/use.ts)_ +_See code: [src/commands/config/context/use.ts](https://github.com/asyncapi/cli/blob/v0.58.6/src/commands/config/context/use.ts)_ ## `asyncapi config versions` @@ -278,7 +278,7 @@ DESCRIPTION Show versions of AsyncAPI tools used ``` -_See code: [src/commands/config/versions.ts](https://github.com/asyncapi/cli/blob/v0.58.5/src/commands/config/versions.ts)_ +_See code: [src/commands/config/versions.ts](https://github.com/asyncapi/cli/blob/v0.58.6/src/commands/config/versions.ts)_ ## `asyncapi convert [SPEC-FILE]` @@ -300,7 +300,7 @@ DESCRIPTION Convert asyncapi documents older to newer versions ``` -_See code: [src/commands/convert.ts](https://github.com/asyncapi/cli/blob/v0.58.5/src/commands/convert.ts)_ +_See code: [src/commands/convert.ts](https://github.com/asyncapi/cli/blob/v0.58.6/src/commands/convert.ts)_ ## `asyncapi diff OLD NEW` @@ -355,7 +355,7 @@ DESCRIPTION Find diff between two asyncapi files ``` -_See code: [src/commands/diff.ts](https://github.com/asyncapi/cli/blob/v0.58.5/src/commands/diff.ts)_ +_See code: [src/commands/diff.ts](https://github.com/asyncapi/cli/blob/v0.58.6/src/commands/diff.ts)_ ## `asyncapi generate` @@ -369,7 +369,7 @@ DESCRIPTION Generate typed models or other things like clients, applications or docs using AsyncAPI Generator templates. ``` -_See code: [src/commands/generate/index.ts](https://github.com/asyncapi/cli/blob/v0.58.5/src/commands/generate/index.ts)_ +_See code: [src/commands/generate/index.ts](https://github.com/asyncapi/cli/blob/v0.58.6/src/commands/generate/index.ts)_ ## `asyncapi generate fromTemplate ASYNCAPI TEMPLATE` @@ -406,7 +406,7 @@ EXAMPLES $ asyncapi generate fromTemplate asyncapi.yaml @asyncapi/html-template --param version=1.0.0 singleFile=true --output ./docs --force-write ``` -_See code: [src/commands/generate/fromTemplate.ts](https://github.com/asyncapi/cli/blob/v0.58.5/src/commands/generate/fromTemplate.ts)_ +_See code: [src/commands/generate/fromTemplate.ts](https://github.com/asyncapi/cli/blob/v0.58.6/src/commands/generate/fromTemplate.ts)_ ## `asyncapi generate models LANGUAGE FILE` @@ -480,7 +480,7 @@ DESCRIPTION Generates typed models ``` -_See code: [src/commands/generate/models.ts](https://github.com/asyncapi/cli/blob/v0.58.5/src/commands/generate/models.ts)_ +_See code: [src/commands/generate/models.ts](https://github.com/asyncapi/cli/blob/v0.58.6/src/commands/generate/models.ts)_ ## `asyncapi new` @@ -535,7 +535,7 @@ EXAMPLES $ asyncapi new --file-name=my-asyncapi.yml --example=default-example.yml --no-tty - create a new file with a specific name, using one of the examples and without interactive mode ``` -_See code: [src/commands/new/index.ts](https://github.com/asyncapi/cli/blob/v0.58.5/src/commands/new/index.ts)_ +_See code: [src/commands/new/index.ts](https://github.com/asyncapi/cli/blob/v0.58.6/src/commands/new/index.ts)_ ## `asyncapi new file` @@ -590,7 +590,7 @@ EXAMPLES $ asyncapi new --file-name=my-asyncapi.yml --example=default-example.yml --no-tty - create a new file with a specific name, using one of the examples and without interactive mode ``` -_See code: [src/commands/new/file.ts](https://github.com/asyncapi/cli/blob/v0.58.5/src/commands/new/file.ts)_ +_See code: [src/commands/new/file.ts](https://github.com/asyncapi/cli/blob/v0.58.6/src/commands/new/file.ts)_ ## `asyncapi new glee` @@ -608,7 +608,7 @@ DESCRIPTION Creates a new Glee project ``` -_See code: [src/commands/new/glee.ts](https://github.com/asyncapi/cli/blob/v0.58.5/src/commands/new/glee.ts)_ +_See code: [src/commands/new/glee.ts](https://github.com/asyncapi/cli/blob/v0.58.6/src/commands/new/glee.ts)_ ## `asyncapi new project` @@ -626,7 +626,7 @@ DESCRIPTION Creates a new Glee project ``` -_See code: [src/commands/new/project.ts](https://github.com/asyncapi/cli/blob/v0.58.5/src/commands/new/project.ts)_ +_See code: [src/commands/new/project.ts](https://github.com/asyncapi/cli/blob/v0.58.6/src/commands/new/project.ts)_ ## `asyncapi optimize [SPEC-FILE]` @@ -662,7 +662,7 @@ EXAMPLES $ asyncapi optimize ./asyncapi.yaml --optimization=remove-components,reuse-components,move-to-components --output=terminal --no-tty ``` -_See code: [src/commands/optimize.ts](https://github.com/asyncapi/cli/blob/v0.58.5/src/commands/optimize.ts)_ +_See code: [src/commands/optimize.ts](https://github.com/asyncapi/cli/blob/v0.58.6/src/commands/optimize.ts)_ ## `asyncapi start` @@ -676,7 +676,7 @@ DESCRIPTION Start asyncapi studio ``` -_See code: [src/commands/start/index.ts](https://github.com/asyncapi/cli/blob/v0.58.5/src/commands/start/index.ts)_ +_See code: [src/commands/start/index.ts](https://github.com/asyncapi/cli/blob/v0.58.6/src/commands/start/index.ts)_ ## `asyncapi start studio` @@ -695,7 +695,7 @@ DESCRIPTION starts a new local instance of Studio ``` -_See code: [src/commands/start/studio.ts](https://github.com/asyncapi/cli/blob/v0.58.5/src/commands/start/studio.ts)_ +_See code: [src/commands/start/studio.ts](https://github.com/asyncapi/cli/blob/v0.58.6/src/commands/start/studio.ts)_ ## `asyncapi validate [SPEC-FILE]` @@ -722,5 +722,5 @@ DESCRIPTION validate asyncapi file ``` -_See code: [src/commands/validate.ts](https://github.com/asyncapi/cli/blob/v0.58.5/src/commands/validate.ts)_ +_See code: [src/commands/validate.ts](https://github.com/asyncapi/cli/blob/v0.58.6/src/commands/validate.ts)_ From ebf83a2bb8c3222f28d162f8bcf66466cc4c70e7 Mon Sep 17 00:00:00 2001 From: asyncapi-bot Date: Mon, 9 Oct 2023 16:18:26 +0200 Subject: [PATCH 016/134] docs(cli): update latest cli documentation (#2217) --- pages/docs/tools/cli/usage.md | 50 +++++++++++++++++------------------ 1 file changed, 25 insertions(+), 25 deletions(-) diff --git a/pages/docs/tools/cli/usage.md b/pages/docs/tools/cli/usage.md index ebebde5c84e..e62d683b639 100644 --- a/pages/docs/tools/cli/usage.md +++ b/pages/docs/tools/cli/usage.md @@ -29,7 +29,7 @@ $ npm install -g @asyncapi/cli $ asyncapi COMMAND running command... $ asyncapi (--version) -@asyncapi/cli/0.58.6 linux-x64 node-v18.18.0 +@asyncapi/cli/0.58.7 linux-x64 node-v18.18.0 $ asyncapi --help [COMMAND] USAGE $ asyncapi COMMAND @@ -93,7 +93,7 @@ EXAMPLES $ asyncapi bundle ./asyncapi.yaml ./features.yaml --base ./asyncapi.yaml --reference-into-components ``` -_See code: [src/commands/bundle.ts](https://github.com/asyncapi/cli/blob/v0.58.6/src/commands/bundle.ts)_ +_See code: [src/commands/bundle.ts](https://github.com/asyncapi/cli/blob/v0.58.7/src/commands/bundle.ts)_ ## `asyncapi config` @@ -107,7 +107,7 @@ DESCRIPTION CLI config settings ``` -_See code: [src/commands/config/index.ts](https://github.com/asyncapi/cli/blob/v0.58.6/src/commands/config/index.ts)_ +_See code: [src/commands/config/index.ts](https://github.com/asyncapi/cli/blob/v0.58.7/src/commands/config/index.ts)_ ## `asyncapi config context` @@ -121,7 +121,7 @@ DESCRIPTION Manage short aliases for full paths to AsyncAPI documents ``` -_See code: [src/commands/config/context/index.ts](https://github.com/asyncapi/cli/blob/v0.58.6/src/commands/config/context/index.ts)_ +_See code: [src/commands/config/context/index.ts](https://github.com/asyncapi/cli/blob/v0.58.7/src/commands/config/context/index.ts)_ ## `asyncapi config context add CONTEXT-NAME SPEC-FILE-PATH` @@ -143,7 +143,7 @@ DESCRIPTION Add a context to the store ``` -_See code: [src/commands/config/context/add.ts](https://github.com/asyncapi/cli/blob/v0.58.6/src/commands/config/context/add.ts)_ +_See code: [src/commands/config/context/add.ts](https://github.com/asyncapi/cli/blob/v0.58.7/src/commands/config/context/add.ts)_ ## `asyncapi config context current` @@ -160,7 +160,7 @@ DESCRIPTION Shows the current context that is being used ``` -_See code: [src/commands/config/context/current.ts](https://github.com/asyncapi/cli/blob/v0.58.6/src/commands/config/context/current.ts)_ +_See code: [src/commands/config/context/current.ts](https://github.com/asyncapi/cli/blob/v0.58.7/src/commands/config/context/current.ts)_ ## `asyncapi config context edit CONTEXT-NAME NEW-SPEC-FILE-PATH` @@ -181,7 +181,7 @@ DESCRIPTION Edit a context in the store ``` -_See code: [src/commands/config/context/edit.ts](https://github.com/asyncapi/cli/blob/v0.58.6/src/commands/config/context/edit.ts)_ +_See code: [src/commands/config/context/edit.ts](https://github.com/asyncapi/cli/blob/v0.58.7/src/commands/config/context/edit.ts)_ ## `asyncapi config context init [CONTEXT-FILE-PATH]` @@ -204,7 +204,7 @@ DESCRIPTION Initialize context ``` -_See code: [src/commands/config/context/init.ts](https://github.com/asyncapi/cli/blob/v0.58.6/src/commands/config/context/init.ts)_ +_See code: [src/commands/config/context/init.ts](https://github.com/asyncapi/cli/blob/v0.58.7/src/commands/config/context/init.ts)_ ## `asyncapi config context list` @@ -221,7 +221,7 @@ DESCRIPTION List all the stored contexts in the store ``` -_See code: [src/commands/config/context/list.ts](https://github.com/asyncapi/cli/blob/v0.58.6/src/commands/config/context/list.ts)_ +_See code: [src/commands/config/context/list.ts](https://github.com/asyncapi/cli/blob/v0.58.7/src/commands/config/context/list.ts)_ ## `asyncapi config context remove CONTEXT-NAME` @@ -241,7 +241,7 @@ DESCRIPTION Delete a context from the store ``` -_See code: [src/commands/config/context/remove.ts](https://github.com/asyncapi/cli/blob/v0.58.6/src/commands/config/context/remove.ts)_ +_See code: [src/commands/config/context/remove.ts](https://github.com/asyncapi/cli/blob/v0.58.7/src/commands/config/context/remove.ts)_ ## `asyncapi config context use CONTEXT-NAME` @@ -261,7 +261,7 @@ DESCRIPTION Set a context as current ``` -_See code: [src/commands/config/context/use.ts](https://github.com/asyncapi/cli/blob/v0.58.6/src/commands/config/context/use.ts)_ +_See code: [src/commands/config/context/use.ts](https://github.com/asyncapi/cli/blob/v0.58.7/src/commands/config/context/use.ts)_ ## `asyncapi config versions` @@ -278,7 +278,7 @@ DESCRIPTION Show versions of AsyncAPI tools used ``` -_See code: [src/commands/config/versions.ts](https://github.com/asyncapi/cli/blob/v0.58.6/src/commands/config/versions.ts)_ +_See code: [src/commands/config/versions.ts](https://github.com/asyncapi/cli/blob/v0.58.7/src/commands/config/versions.ts)_ ## `asyncapi convert [SPEC-FILE]` @@ -300,7 +300,7 @@ DESCRIPTION Convert asyncapi documents older to newer versions ``` -_See code: [src/commands/convert.ts](https://github.com/asyncapi/cli/blob/v0.58.6/src/commands/convert.ts)_ +_See code: [src/commands/convert.ts](https://github.com/asyncapi/cli/blob/v0.58.7/src/commands/convert.ts)_ ## `asyncapi diff OLD NEW` @@ -355,7 +355,7 @@ DESCRIPTION Find diff between two asyncapi files ``` -_See code: [src/commands/diff.ts](https://github.com/asyncapi/cli/blob/v0.58.6/src/commands/diff.ts)_ +_See code: [src/commands/diff.ts](https://github.com/asyncapi/cli/blob/v0.58.7/src/commands/diff.ts)_ ## `asyncapi generate` @@ -369,7 +369,7 @@ DESCRIPTION Generate typed models or other things like clients, applications or docs using AsyncAPI Generator templates. ``` -_See code: [src/commands/generate/index.ts](https://github.com/asyncapi/cli/blob/v0.58.6/src/commands/generate/index.ts)_ +_See code: [src/commands/generate/index.ts](https://github.com/asyncapi/cli/blob/v0.58.7/src/commands/generate/index.ts)_ ## `asyncapi generate fromTemplate ASYNCAPI TEMPLATE` @@ -406,7 +406,7 @@ EXAMPLES $ asyncapi generate fromTemplate asyncapi.yaml @asyncapi/html-template --param version=1.0.0 singleFile=true --output ./docs --force-write ``` -_See code: [src/commands/generate/fromTemplate.ts](https://github.com/asyncapi/cli/blob/v0.58.6/src/commands/generate/fromTemplate.ts)_ +_See code: [src/commands/generate/fromTemplate.ts](https://github.com/asyncapi/cli/blob/v0.58.7/src/commands/generate/fromTemplate.ts)_ ## `asyncapi generate models LANGUAGE FILE` @@ -480,7 +480,7 @@ DESCRIPTION Generates typed models ``` -_See code: [src/commands/generate/models.ts](https://github.com/asyncapi/cli/blob/v0.58.6/src/commands/generate/models.ts)_ +_See code: [src/commands/generate/models.ts](https://github.com/asyncapi/cli/blob/v0.58.7/src/commands/generate/models.ts)_ ## `asyncapi new` @@ -535,7 +535,7 @@ EXAMPLES $ asyncapi new --file-name=my-asyncapi.yml --example=default-example.yml --no-tty - create a new file with a specific name, using one of the examples and without interactive mode ``` -_See code: [src/commands/new/index.ts](https://github.com/asyncapi/cli/blob/v0.58.6/src/commands/new/index.ts)_ +_See code: [src/commands/new/index.ts](https://github.com/asyncapi/cli/blob/v0.58.7/src/commands/new/index.ts)_ ## `asyncapi new file` @@ -590,7 +590,7 @@ EXAMPLES $ asyncapi new --file-name=my-asyncapi.yml --example=default-example.yml --no-tty - create a new file with a specific name, using one of the examples and without interactive mode ``` -_See code: [src/commands/new/file.ts](https://github.com/asyncapi/cli/blob/v0.58.6/src/commands/new/file.ts)_ +_See code: [src/commands/new/file.ts](https://github.com/asyncapi/cli/blob/v0.58.7/src/commands/new/file.ts)_ ## `asyncapi new glee` @@ -608,7 +608,7 @@ DESCRIPTION Creates a new Glee project ``` -_See code: [src/commands/new/glee.ts](https://github.com/asyncapi/cli/blob/v0.58.6/src/commands/new/glee.ts)_ +_See code: [src/commands/new/glee.ts](https://github.com/asyncapi/cli/blob/v0.58.7/src/commands/new/glee.ts)_ ## `asyncapi new project` @@ -626,7 +626,7 @@ DESCRIPTION Creates a new Glee project ``` -_See code: [src/commands/new/project.ts](https://github.com/asyncapi/cli/blob/v0.58.6/src/commands/new/project.ts)_ +_See code: [src/commands/new/project.ts](https://github.com/asyncapi/cli/blob/v0.58.7/src/commands/new/project.ts)_ ## `asyncapi optimize [SPEC-FILE]` @@ -662,7 +662,7 @@ EXAMPLES $ asyncapi optimize ./asyncapi.yaml --optimization=remove-components,reuse-components,move-to-components --output=terminal --no-tty ``` -_See code: [src/commands/optimize.ts](https://github.com/asyncapi/cli/blob/v0.58.6/src/commands/optimize.ts)_ +_See code: [src/commands/optimize.ts](https://github.com/asyncapi/cli/blob/v0.58.7/src/commands/optimize.ts)_ ## `asyncapi start` @@ -676,7 +676,7 @@ DESCRIPTION Start asyncapi studio ``` -_See code: [src/commands/start/index.ts](https://github.com/asyncapi/cli/blob/v0.58.6/src/commands/start/index.ts)_ +_See code: [src/commands/start/index.ts](https://github.com/asyncapi/cli/blob/v0.58.7/src/commands/start/index.ts)_ ## `asyncapi start studio` @@ -695,7 +695,7 @@ DESCRIPTION starts a new local instance of Studio ``` -_See code: [src/commands/start/studio.ts](https://github.com/asyncapi/cli/blob/v0.58.6/src/commands/start/studio.ts)_ +_See code: [src/commands/start/studio.ts](https://github.com/asyncapi/cli/blob/v0.58.7/src/commands/start/studio.ts)_ ## `asyncapi validate [SPEC-FILE]` @@ -722,5 +722,5 @@ DESCRIPTION validate asyncapi file ``` -_See code: [src/commands/validate.ts](https://github.com/asyncapi/cli/blob/v0.58.6/src/commands/validate.ts)_ +_See code: [src/commands/validate.ts](https://github.com/asyncapi/cli/blob/v0.58.7/src/commands/validate.ts)_ From 60d13f6f88845a37785c7e76bf6706a4c927083b Mon Sep 17 00:00:00 2001 From: asyncapi-bot Date: Tue, 10 Oct 2023 15:46:02 +0200 Subject: [PATCH 017/134] docs(cli): update latest cli documentation (#2219) --- pages/docs/tools/cli/usage.md | 50 +++++++++++++++++------------------ 1 file changed, 25 insertions(+), 25 deletions(-) diff --git a/pages/docs/tools/cli/usage.md b/pages/docs/tools/cli/usage.md index e62d683b639..190407466c1 100644 --- a/pages/docs/tools/cli/usage.md +++ b/pages/docs/tools/cli/usage.md @@ -29,7 +29,7 @@ $ npm install -g @asyncapi/cli $ asyncapi COMMAND running command... $ asyncapi (--version) -@asyncapi/cli/0.58.7 linux-x64 node-v18.18.0 +@asyncapi/cli/0.58.8 linux-x64 node-v18.18.0 $ asyncapi --help [COMMAND] USAGE $ asyncapi COMMAND @@ -93,7 +93,7 @@ EXAMPLES $ asyncapi bundle ./asyncapi.yaml ./features.yaml --base ./asyncapi.yaml --reference-into-components ``` -_See code: [src/commands/bundle.ts](https://github.com/asyncapi/cli/blob/v0.58.7/src/commands/bundle.ts)_ +_See code: [src/commands/bundle.ts](https://github.com/asyncapi/cli/blob/v0.58.8/src/commands/bundle.ts)_ ## `asyncapi config` @@ -107,7 +107,7 @@ DESCRIPTION CLI config settings ``` -_See code: [src/commands/config/index.ts](https://github.com/asyncapi/cli/blob/v0.58.7/src/commands/config/index.ts)_ +_See code: [src/commands/config/index.ts](https://github.com/asyncapi/cli/blob/v0.58.8/src/commands/config/index.ts)_ ## `asyncapi config context` @@ -121,7 +121,7 @@ DESCRIPTION Manage short aliases for full paths to AsyncAPI documents ``` -_See code: [src/commands/config/context/index.ts](https://github.com/asyncapi/cli/blob/v0.58.7/src/commands/config/context/index.ts)_ +_See code: [src/commands/config/context/index.ts](https://github.com/asyncapi/cli/blob/v0.58.8/src/commands/config/context/index.ts)_ ## `asyncapi config context add CONTEXT-NAME SPEC-FILE-PATH` @@ -143,7 +143,7 @@ DESCRIPTION Add a context to the store ``` -_See code: [src/commands/config/context/add.ts](https://github.com/asyncapi/cli/blob/v0.58.7/src/commands/config/context/add.ts)_ +_See code: [src/commands/config/context/add.ts](https://github.com/asyncapi/cli/blob/v0.58.8/src/commands/config/context/add.ts)_ ## `asyncapi config context current` @@ -160,7 +160,7 @@ DESCRIPTION Shows the current context that is being used ``` -_See code: [src/commands/config/context/current.ts](https://github.com/asyncapi/cli/blob/v0.58.7/src/commands/config/context/current.ts)_ +_See code: [src/commands/config/context/current.ts](https://github.com/asyncapi/cli/blob/v0.58.8/src/commands/config/context/current.ts)_ ## `asyncapi config context edit CONTEXT-NAME NEW-SPEC-FILE-PATH` @@ -181,7 +181,7 @@ DESCRIPTION Edit a context in the store ``` -_See code: [src/commands/config/context/edit.ts](https://github.com/asyncapi/cli/blob/v0.58.7/src/commands/config/context/edit.ts)_ +_See code: [src/commands/config/context/edit.ts](https://github.com/asyncapi/cli/blob/v0.58.8/src/commands/config/context/edit.ts)_ ## `asyncapi config context init [CONTEXT-FILE-PATH]` @@ -204,7 +204,7 @@ DESCRIPTION Initialize context ``` -_See code: [src/commands/config/context/init.ts](https://github.com/asyncapi/cli/blob/v0.58.7/src/commands/config/context/init.ts)_ +_See code: [src/commands/config/context/init.ts](https://github.com/asyncapi/cli/blob/v0.58.8/src/commands/config/context/init.ts)_ ## `asyncapi config context list` @@ -221,7 +221,7 @@ DESCRIPTION List all the stored contexts in the store ``` -_See code: [src/commands/config/context/list.ts](https://github.com/asyncapi/cli/blob/v0.58.7/src/commands/config/context/list.ts)_ +_See code: [src/commands/config/context/list.ts](https://github.com/asyncapi/cli/blob/v0.58.8/src/commands/config/context/list.ts)_ ## `asyncapi config context remove CONTEXT-NAME` @@ -241,7 +241,7 @@ DESCRIPTION Delete a context from the store ``` -_See code: [src/commands/config/context/remove.ts](https://github.com/asyncapi/cli/blob/v0.58.7/src/commands/config/context/remove.ts)_ +_See code: [src/commands/config/context/remove.ts](https://github.com/asyncapi/cli/blob/v0.58.8/src/commands/config/context/remove.ts)_ ## `asyncapi config context use CONTEXT-NAME` @@ -261,7 +261,7 @@ DESCRIPTION Set a context as current ``` -_See code: [src/commands/config/context/use.ts](https://github.com/asyncapi/cli/blob/v0.58.7/src/commands/config/context/use.ts)_ +_See code: [src/commands/config/context/use.ts](https://github.com/asyncapi/cli/blob/v0.58.8/src/commands/config/context/use.ts)_ ## `asyncapi config versions` @@ -278,7 +278,7 @@ DESCRIPTION Show versions of AsyncAPI tools used ``` -_See code: [src/commands/config/versions.ts](https://github.com/asyncapi/cli/blob/v0.58.7/src/commands/config/versions.ts)_ +_See code: [src/commands/config/versions.ts](https://github.com/asyncapi/cli/blob/v0.58.8/src/commands/config/versions.ts)_ ## `asyncapi convert [SPEC-FILE]` @@ -300,7 +300,7 @@ DESCRIPTION Convert asyncapi documents older to newer versions ``` -_See code: [src/commands/convert.ts](https://github.com/asyncapi/cli/blob/v0.58.7/src/commands/convert.ts)_ +_See code: [src/commands/convert.ts](https://github.com/asyncapi/cli/blob/v0.58.8/src/commands/convert.ts)_ ## `asyncapi diff OLD NEW` @@ -355,7 +355,7 @@ DESCRIPTION Find diff between two asyncapi files ``` -_See code: [src/commands/diff.ts](https://github.com/asyncapi/cli/blob/v0.58.7/src/commands/diff.ts)_ +_See code: [src/commands/diff.ts](https://github.com/asyncapi/cli/blob/v0.58.8/src/commands/diff.ts)_ ## `asyncapi generate` @@ -369,7 +369,7 @@ DESCRIPTION Generate typed models or other things like clients, applications or docs using AsyncAPI Generator templates. ``` -_See code: [src/commands/generate/index.ts](https://github.com/asyncapi/cli/blob/v0.58.7/src/commands/generate/index.ts)_ +_See code: [src/commands/generate/index.ts](https://github.com/asyncapi/cli/blob/v0.58.8/src/commands/generate/index.ts)_ ## `asyncapi generate fromTemplate ASYNCAPI TEMPLATE` @@ -406,7 +406,7 @@ EXAMPLES $ asyncapi generate fromTemplate asyncapi.yaml @asyncapi/html-template --param version=1.0.0 singleFile=true --output ./docs --force-write ``` -_See code: [src/commands/generate/fromTemplate.ts](https://github.com/asyncapi/cli/blob/v0.58.7/src/commands/generate/fromTemplate.ts)_ +_See code: [src/commands/generate/fromTemplate.ts](https://github.com/asyncapi/cli/blob/v0.58.8/src/commands/generate/fromTemplate.ts)_ ## `asyncapi generate models LANGUAGE FILE` @@ -480,7 +480,7 @@ DESCRIPTION Generates typed models ``` -_See code: [src/commands/generate/models.ts](https://github.com/asyncapi/cli/blob/v0.58.7/src/commands/generate/models.ts)_ +_See code: [src/commands/generate/models.ts](https://github.com/asyncapi/cli/blob/v0.58.8/src/commands/generate/models.ts)_ ## `asyncapi new` @@ -535,7 +535,7 @@ EXAMPLES $ asyncapi new --file-name=my-asyncapi.yml --example=default-example.yml --no-tty - create a new file with a specific name, using one of the examples and without interactive mode ``` -_See code: [src/commands/new/index.ts](https://github.com/asyncapi/cli/blob/v0.58.7/src/commands/new/index.ts)_ +_See code: [src/commands/new/index.ts](https://github.com/asyncapi/cli/blob/v0.58.8/src/commands/new/index.ts)_ ## `asyncapi new file` @@ -590,7 +590,7 @@ EXAMPLES $ asyncapi new --file-name=my-asyncapi.yml --example=default-example.yml --no-tty - create a new file with a specific name, using one of the examples and without interactive mode ``` -_See code: [src/commands/new/file.ts](https://github.com/asyncapi/cli/blob/v0.58.7/src/commands/new/file.ts)_ +_See code: [src/commands/new/file.ts](https://github.com/asyncapi/cli/blob/v0.58.8/src/commands/new/file.ts)_ ## `asyncapi new glee` @@ -608,7 +608,7 @@ DESCRIPTION Creates a new Glee project ``` -_See code: [src/commands/new/glee.ts](https://github.com/asyncapi/cli/blob/v0.58.7/src/commands/new/glee.ts)_ +_See code: [src/commands/new/glee.ts](https://github.com/asyncapi/cli/blob/v0.58.8/src/commands/new/glee.ts)_ ## `asyncapi new project` @@ -626,7 +626,7 @@ DESCRIPTION Creates a new Glee project ``` -_See code: [src/commands/new/project.ts](https://github.com/asyncapi/cli/blob/v0.58.7/src/commands/new/project.ts)_ +_See code: [src/commands/new/project.ts](https://github.com/asyncapi/cli/blob/v0.58.8/src/commands/new/project.ts)_ ## `asyncapi optimize [SPEC-FILE]` @@ -662,7 +662,7 @@ EXAMPLES $ asyncapi optimize ./asyncapi.yaml --optimization=remove-components,reuse-components,move-to-components --output=terminal --no-tty ``` -_See code: [src/commands/optimize.ts](https://github.com/asyncapi/cli/blob/v0.58.7/src/commands/optimize.ts)_ +_See code: [src/commands/optimize.ts](https://github.com/asyncapi/cli/blob/v0.58.8/src/commands/optimize.ts)_ ## `asyncapi start` @@ -676,7 +676,7 @@ DESCRIPTION Start asyncapi studio ``` -_See code: [src/commands/start/index.ts](https://github.com/asyncapi/cli/blob/v0.58.7/src/commands/start/index.ts)_ +_See code: [src/commands/start/index.ts](https://github.com/asyncapi/cli/blob/v0.58.8/src/commands/start/index.ts)_ ## `asyncapi start studio` @@ -695,7 +695,7 @@ DESCRIPTION starts a new local instance of Studio ``` -_See code: [src/commands/start/studio.ts](https://github.com/asyncapi/cli/blob/v0.58.7/src/commands/start/studio.ts)_ +_See code: [src/commands/start/studio.ts](https://github.com/asyncapi/cli/blob/v0.58.8/src/commands/start/studio.ts)_ ## `asyncapi validate [SPEC-FILE]` @@ -722,5 +722,5 @@ DESCRIPTION validate asyncapi file ``` -_See code: [src/commands/validate.ts](https://github.com/asyncapi/cli/blob/v0.58.7/src/commands/validate.ts)_ +_See code: [src/commands/validate.ts](https://github.com/asyncapi/cli/blob/v0.58.8/src/commands/validate.ts)_ From e65509365c5243ddfcd94a695f61149b7600f0d7 Mon Sep 17 00:00:00 2001 From: asyncapi-bot Date: Wed, 11 Oct 2023 14:03:42 +0200 Subject: [PATCH 018/134] docs(generator): update latest generator documentation (#2222) --- pages/docs/tools/generator/api.md | 132 +++++++++++++++++++++++++++++- 1 file changed, 130 insertions(+), 2 deletions(-) diff --git a/pages/docs/tools/generator/api.md b/pages/docs/tools/generator/api.md index e15f4cdf9db..b6923a5e7a1 100644 --- a/pages/docs/tools/generator/api.md +++ b/pages/docs/tools/generator/api.md @@ -26,7 +26,15 @@ Reference API documentation for AsyncAPI Generator library. * [.hooks](#Generator+hooks) : `Object` * [.mapBaseUrlToFolder](#Generator+mapBaseUrlToFolder) : `Object` * [.templateParams](#Generator+templateParams) : `Object` - * [.generate(asyncapiDocument, [parseOptions])](#Generator+generate) ⇒ `Promise` + * [.generate(asyncapiDocument, [parseOptions])](#Generator+generate) ⇒ `Promise.` + * [.validateAsyncAPIDocument(asyncapiDocument)](#Generator+validateAsyncAPIDocument) + * [.setupOutput()](#Generator+setupOutput) + * [.setupFSOutput()](#Generator+setupFSOutput) ⇒ `Promise.` + * [.setLogLevel()](#Generator+setLogLevel) ⇒ `void` + * [.installAndSetupTemplate()](#Generator+installAndSetupTemplate) ⇒ `Promise.<{templatePkgName: string, templatePkgPath: string}>` + * [.configureTemplateWorkflow(parseOptions)](#Generator+configureTemplateWorkflow) ⇒ `Promise.` + * [.handleEntrypoint()](#Generator+handleEntrypoint) ⇒ `Promise.` + * [.executeAfterHook()](#Generator+executeAfterHook) ⇒ `Promise.` * [.parseInput()](#Generator+parseInput) * [.configureTemplate()](#Generator+configureTemplate) * ~~[.generateFromString(asyncapiString, [parseOptions])](#Generator+generateFromString) ⇒ `Promise`~~ @@ -169,11 +177,19 @@ The template parameters. The structure for this object is based on each individu Generates files from a given template and an AsyncAPIDocument object. **Kind**: instance method of [`Generator`](#Generator) +**Returns**: `Promise.` - A Promise that resolves when the generation is completed. **Params** - asyncapiDocument `AsyncAPIDocument` | `string` - AsyncAPIDocument object to use as source. -- [parseOptions] `Object` ` = {}` - AsyncAPI Parser parse options. Check out [@asyncapi/parser](https://www.github.com/asyncapi/parser-js) for more information. Remember to use the right options to the right parser depending on the template you are using. +- [parseOptions] `Object` ` = {}` - AsyncAPI Parser parse options. + Check out [@asyncapi/parser](https://www.github.com/asyncapi/parser-js) for more information. + Remember to use the right options for the right parser depending on the template you are using. +**Example** +```js +await generator.generate(myAsyncAPIdocument); +console.log('Done!'); +``` **Example** ```js generator @@ -193,6 +209,118 @@ try { } ``` + + +### generator.validateAsyncAPIDocument +Validates the provided AsyncAPI document. + +**Kind**: instance method of [`Generator`](#Generator) +**Throws**: + +- `Error` Throws an error if the document is not valid. + +**Since**: 10/9/2023 - 4:26:33 PM +**Params** + +- asyncapiDocument `*` - The AsyncAPI document to be validated. + + + + +* generator.setupOutput()** : +Sets up the output configuration based on the specified output type. + +**Kind**: instance method of [`Generator`](#Generator) +**Throws**: + +- `Error` If 'output' is set to 'string' without providing 'entrypoint'. + +**Example** +```js +const generator = new Generator(); +generator.setupOutput(); +``` + + + +* generator.setupFSOutput() ⇒ `Promise.`** : +Sets up the file system (FS) output configuration. + +This function creates the target directory if it does not exist and verifies +the target directory if forceWrite is not enabled. + +**Kind**: instance method of [`Generator`](#Generator) +**Returns**: `Promise.` - A promise that fulfills when the setup is complete. +**Throws**: + +- `Error` If verification of the target directory fails and forceWrite is not enabled. + + + + +* generator.setLogLevel() ⇒ `void`** : +Sets the log level based on the debug option. + +If the debug option is enabled, the log level is set to 'debug'. + +**Kind**: instance method of [`Generator`](#Generator) + + + +* generator.installAndSetupTemplate() ⇒ `Promise.<{templatePkgName: string, templatePkgPath: string}>`** : +Installs and sets up the template for code generation. + +This function installs the specified template using the provided installation option, +sets up the necessary directory paths, loads the template configuration, and returns +information about the installed template. + +**Kind**: instance method of [`Generator`](#Generator) +**Returns**: `Promise.<{templatePkgName: string, templatePkgPath: string}>` - A promise that resolves to an object containing the name and path of the installed template. + + + +### generator.configureTemplateWorkflow +Configures the template workflow based on provided parsing options. + +This function performs the following steps: +1. Parses the input AsyncAPI document using the specified parse options. +2. Validates the template configuration and parameters. +3. Configures the template based on the parsed AsyncAPI document. +4. Registers filters, hooks, and launches the 'generate:before' hook if applicable. + +**Kind**: instance method of [`Generator`](#Generator) +**Returns**: `Promise.` - A promise that resolves when the configuration is completed. +**Params** + +- parseOptions `*` - Options for parsing the AsyncAPI document. + + + + +* generator.handleEntrypoint() ⇒ `Promise.`** : +Handles the logic for the template entrypoint. + +If an entrypoint is specified: +- Resolves the absolute path of the entrypoint file. +- Throws an error if the entrypoint file doesn't exist. +- Generates a file or renders content based on the output type. +- Launches the 'generate:after' hook if the output is 'fs'. + +If no entrypoint is specified, generates the directory structure. + +**Kind**: instance method of [`Generator`](#Generator) +**Returns**: `Promise.` - A promise that resolves when the entrypoint logic is completed. + + + +* generator.executeAfterHook() ⇒ `Promise.`** : +Executes the 'generate:after' hook. + +Launches the after-hook to perform additional actions after code generation. + +**Kind**: instance method of [`Generator`](#Generator) +**Returns**: `Promise.` - A promise that resolves when the after-hook execution is completed. + * generator.parseInput()** : From ef833714e2b196f3df0f80aeab8e653f86e9025e Mon Sep 17 00:00:00 2001 From: asyncapi-bot Date: Thu, 12 Oct 2023 15:59:34 +0200 Subject: [PATCH 019/134] chore: update meetings.json and newsrooom_videos.json (#2220) Co-authored-by: asyncapi-bot-eve %0ACo-authored-by: asyncapi-bot --- config/meetings.json | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/config/meetings.json b/config/meetings.json index a1aa215adc2..9c0747b3524 100644 --- a/config/meetings.json +++ b/config/meetings.json @@ -159,5 +159,12 @@ "url": "https://github.com/asyncapi/community/issues/895", "banner": "https://user-images.githubusercontent.com/40604284/271795643-615174df-3bc0-4e7f-b615-cabb6e701234.png", "date": "2023-10-05T13:00:00.000Z" + }, + { + "title": "Spec 3.0 Docs Meeting", + "calLink": "https://www.google.com/calendar/event?eid=ZmtxaWlxdjdtbThlbDU4djhtMmllaTliYjggY19xOXRzZWlnbG9tZHNqNm5qdWh2YnB0czExY0Bn", + "url": "https://github.com/asyncapi/community/issues/906", + "banner": "", + "date": "2023-10-19T14:30:00.000Z" } ] \ No newline at end of file From a6aa7151c44257622f93da704be1de3d86025755 Mon Sep 17 00:00:00 2001 From: Arya Gupta Date: Thu, 12 Oct 2023 23:43:59 +0530 Subject: [PATCH 020/134] docs: improved introduction to message validation guide (#2225) Co-authored-by: Alejandra Quetzalli --- pages/docs/guides/message-validation.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pages/docs/guides/message-validation.md b/pages/docs/guides/message-validation.md index c8eca99dc97..01da64066c0 100644 --- a/pages/docs/guides/message-validation.md +++ b/pages/docs/guides/message-validation.md @@ -5,10 +5,10 @@ weight: 130 --- ## Introduction -This guide explains different concepts of validating AsyncAPI messages. You will also learn what role AsyncAPI documents play in validation. +This guide explains different concepts of validating messages in event-driven communication. You will also learn what role AsyncAPI documents play in validation. ## Message validation -To understand AsyncAPI message validation, we must first understand the basic components involved. +To understand message validation in event-driven communication, we must first understand the basic components involved. - Producer: responsible for producing messages. - Consumer: responsible for getting the producer's messages. - Broker: acts as a bridge between the consumer and the producer because messages travel through the broker. From 864da2148bed5f912ab44f714f99e42e45ec1e57 Mon Sep 17 00:00:00 2001 From: asyncapi-bot Date: Fri, 13 Oct 2023 02:34:32 +0200 Subject: [PATCH 021/134] chore: update meetings.json and newsrooom_videos.json (#2229) --- dashboard.json | 159 +++++++++++++------------------------------------ 1 file changed, 43 insertions(+), 116 deletions(-) diff --git a/dashboard.json b/dashboard.json index c4efaa2f378..1c9b6933c41 100644 --- a/dashboard.json +++ b/dashboard.json @@ -9,7 +9,7 @@ "resourcePath": "/asyncapi/website/pull/2038", "repo": "asyncapi/website", "labels": [], - "score": 33.02507770616476 + "score": 36.75834735990512 }, { "id": "PR_kwDOFLhIt85Vmgtj", @@ -20,7 +20,7 @@ "resourcePath": "/asyncapi/community/pull/805", "repo": "asyncapi/community", "labels": [], - "score": 25.845712987433288 + "score": 27.56876051992884 }, { "id": "I_kwDODou01c5AqLB8", @@ -55,15 +55,15 @@ "score": 18.666348268701817 }, { - "id": "I_kwDOCVQpZM5M_dcV", - "isPR": false, - "isAssigned": true, - "title": "DocsUI: Messages Object output", - "author": "mcturco", - "resourcePath": "/asyncapi/asyncapi-react/issues/618", - "repo": "asyncapi/asyncapi-react", + "id": "PR_kwDOBW5R_c5Worbr", + "isPR": true, + "isAssigned": false, + "title": "docs: add v3 migration guide", + "author": "jonaslagoni", + "resourcePath": "/asyncapi/website/pull/2008", + "repo": "asyncapi/website", "labels": [], - "score": 16.08177696995849 + "score": 16.65612614745701 }, { "id": "I_kwDODou01c5E_LV0", @@ -107,6 +107,17 @@ "labels": [], "score": 14.358729437462937 }, + { + "id": "PR_kwDOFLhIt85bqKL8", + "isPR": true, + "isAssigned": false, + "title": "docs: add Bounty Program Rules", + "author": "aeworxet", + "resourcePath": "/asyncapi/community/pull/897", + "repo": "asyncapi/community", + "labels": [], + "score": 14.358729437462937 + }, { "id": "PR_kwDOCoBobc42aMuI", "isPR": true, @@ -119,21 +130,17 @@ "score": 13.497205671215161 }, { - "id": "MDU6SXNzdWU2MDYzODgzNzM=", + "id": "I_kwDOBW5R_c5RVOOY", "isPR": false, "isAssigned": false, - "title": "Improve overall performance of the website but especially Blog", - "author": "derberg", - "resourcePath": "/asyncapi/website/issues/89", + "title": "Community cards implementation.", + "author": "Mayaleeeee", + "resourcePath": "/asyncapi/website/issues/930", "repo": "asyncapi/website", "labels": [ { - "name": "enhancement", - "color": "84b6eb" - }, - { - "name": "Epic", - "color": "3E4B9E" + "name": "Hacktoberfest", + "color": "FF8AE2" } ], "score": 13.210031082465903 @@ -147,30 +154,29 @@ "resourcePath": "/asyncapi/website/pull/1704", "repo": "asyncapi/website", "labels": [], - "score": 12.922856493716644 - }, + "score": 13.210031082465903 + } + ], + "goodFirstIssues": [ { - "id": "I_kwDODyzcIc5gD3jB", - "isPR": false, + "id": "I_kwDODwv8N85zcBHO", + "title": "Inconsistent styling of the subscribe button on the conference website", "isAssigned": false, - "title": "Automate `paper work` around project governance", - "author": "derberg", - "resourcePath": "/asyncapi/.github/issues/210", - "repo": "asyncapi/.github", + "resourcePath": "/asyncapi/conference-website/issues/217", + "repo": "asyncapi/conference-website", + "author": "Mayaleeeee", + "area": "Unknown", "labels": [ { - "name": "enhancement", - "color": "a2eeef" + "name": "bug", + "color": "d73a4a" }, { - "name": "gsoc", - "color": "F4D03F" + "name": "Hacktoberfest", + "color": "FF8AE2" } - ], - "score": 12.635681904967385 - } - ], - "goodFirstIssues": [ + ] + }, { "id": "I_kwDOFDnrNc5yy6e0", "title": "The new glee command is generating a 2.1.0 document", @@ -220,36 +226,6 @@ } ] }, - { - "id": "I_kwDOFi_gUM5ydv8_", - "title": "Remove this unused import of 'MiddlewareCallback'.", - "isAssigned": false, - "resourcePath": "/asyncapi/glee/issues/527", - "repo": "asyncapi/glee", - "author": "AceTheCreator", - "area": "Unknown", - "labels": [ - { - "name": "Hacktoberfest", - "color": "016479" - } - ] - }, - { - "id": "I_kwDOIUldZc5ydvwN", - "title": "Unexpected empty block", - "isAssigned": false, - "resourcePath": "/asyncapi/EDAVisualiser/issues/36", - "repo": "asyncapi/EDAVisualiser", - "author": "AceTheCreator", - "area": "Unknown", - "labels": [ - { - "name": "Hacktoberfest", - "color": "FF8AE2" - } - ] - }, { "id": "I_kwDOIUldZc5ydvrx", "title": "Remove this commented out code.", @@ -314,36 +290,6 @@ } ] }, - { - "id": "I_kwDOE8Qh385ydtaD", - "title": "The object passed as the value prop to the Context provider changes every render. To fix this consider wrapping it in a useMemo hook.", - "isAssigned": true, - "resourcePath": "/asyncapi/modelina/issues/1529", - "repo": "asyncapi/modelina", - "author": "AceTheCreator", - "area": "Unknown", - "labels": [ - { - "name": "Hacktoberfest", - "color": "FF8AE2" - } - ] - }, - { - "id": "I_kwDOE8Qh385ydtLO", - "title": "The object passed as the value prop to the Context provider changes every render. To fix this consider wrapping it in a useMemo hook.", - "isAssigned": false, - "resourcePath": "/asyncapi/modelina/issues/1526", - "repo": "asyncapi/modelina", - "author": "AceTheCreator", - "area": "Unknown", - "labels": [ - { - "name": "Hacktoberfest", - "color": "FF8AE2" - } - ] - }, { "id": "I_kwDODwv8N85yZpkH", "title": "Venue sub menu doesn't close", @@ -382,25 +328,6 @@ } ] }, - { - "id": "I_kwDOCHlHJM5yRiQ8", - "title": "Fix cognitive complexity issue", - "isAssigned": false, - "resourcePath": "/asyncapi/generator/issues/1040", - "repo": "asyncapi/generator", - "author": "derberg", - "area": "javascript", - "labels": [ - { - "name": "enhancement", - "color": "a2eeef" - }, - { - "name": "Hacktoberfest", - "color": "FF8AE2" - } - ] - }, { "id": "I_kwDODwv8N85xwvMi", "title": "Update `Get Free Tickets` on main page to link to proper google form", From 7ca746b917457a5060f4395c57e524d4ab166fe4 Mon Sep 17 00:00:00 2001 From: V Thulisile Sibanda <66913810+thulieblack@users.noreply.github.com> Date: Fri, 13 Oct 2023 09:26:00 +0200 Subject: [PATCH 022/134] feat: add cfp banner for bangalore (#2227) Co-authored-by: Lukasz Gornicki --- components/campaigns/AnnoucementHero.js | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/components/campaigns/AnnoucementHero.js b/components/campaigns/AnnoucementHero.js index 508fbb2f4a6..9c27f61672d 100644 --- a/components/campaigns/AnnoucementHero.js +++ b/components/campaigns/AnnoucementHero.js @@ -43,17 +43,17 @@ export default function AnnouncementHero({ className = '', small = false, hideVi level="h3" typeStyle="heading-sm" > - Madrid Edition + Bangalore Edition - 19th of October, 2023 | Madrid, Spain + 30th of November, 2023 | Bangalore, India - +
From 399521d4e24e4b54c43db608cc46db77c9a01c6f Mon Sep 17 00:00:00 2001 From: asyncapi-bot Date: Sat, 14 Oct 2023 02:34:06 +0200 Subject: [PATCH 023/134] chore: update meetings.json and newsrooom_videos.json (#2230) --- config/meetings.json | 7 ------- 1 file changed, 7 deletions(-) diff --git a/config/meetings.json b/config/meetings.json index 9c0747b3524..79bff35fbe9 100644 --- a/config/meetings.json +++ b/config/meetings.json @@ -1,11 +1,4 @@ [ - { - "title": "Spec 3.0 Meeting", - "calLink": "https://www.google.com/calendar/event?eid=MHBhZDRzZ2M0OXFqbDJhaXRxcnUwNm9hcmMgY19xOXRzZWlnbG9tZHNqNm5qdWh2YnB0czExY0Bn", - "url": "https://github.com/asyncapi/community/issues/760", - "banner": "", - "date": "2023-07-05T16:00:00.000Z" - }, { "title": "Spec 3.0 Meeting", "calLink": "https://www.google.com/calendar/event?eid=aGdqYmk0NDdiMGE4cGo4NzFuaWxycjNiYmsgY19xOXRzZWlnbG9tZHNqNm5qdWh2YnB0czExY0Bn", From c048485c436748ef0d2dda827cd9890e2509feaf Mon Sep 17 00:00:00 2001 From: asyncapi-bot Date: Sun, 15 Oct 2023 02:34:44 +0200 Subject: [PATCH 024/134] chore: update meetings.json and newsrooom_videos.json (#2233) --- config/meetings.json | 7 ------- 1 file changed, 7 deletions(-) diff --git a/config/meetings.json b/config/meetings.json index 79bff35fbe9..5c471274444 100644 --- a/config/meetings.json +++ b/config/meetings.json @@ -6,13 +6,6 @@ "banner": "", "date": "2023-07-19T16:00:00.000Z" }, - { - "title": "Spec 3.0 Docs Meeting", - "calLink": "https://www.google.com/calendar/event?eid=YmhiaTQxNDBicDA0NjgyZmk3M3ZocTJxbGcgY19xOXRzZWlnbG9tZHNqNm5qdWh2YnB0czExY0Bn", - "url": "https://github.com/asyncapi/community/issues/774", - "banner": "", - "date": "2023-07-06T14:30:00.000Z" - }, { "title": "Open Standards and Private Products: A DevRel's Dream or Nightmare", "calLink": "https://www.google.com/calendar/event?eid=dHMzZ3Q0b2h2NDRuaTVrMTQ3cmsxYzk2bzAgY19xOXRzZWlnbG9tZHNqNm5qdWh2YnB0czExY0Bn", From 4885c45152c24570d12ea188e08ad29079ac8f22 Mon Sep 17 00:00:00 2001 From: asyncapi-bot Date: Mon, 16 Oct 2023 12:52:27 +0200 Subject: [PATCH 025/134] chore: update meetings.json and newsrooom_videos.json (#2237) Co-authored-by: asyncapi-bot --- config/meetings.json | 7 +++++++ dashboard.json | 24 ++++++++++++------------ 2 files changed, 19 insertions(+), 12 deletions(-) diff --git a/config/meetings.json b/config/meetings.json index 5c471274444..8702fb12fe7 100644 --- a/config/meetings.json +++ b/config/meetings.json @@ -152,5 +152,12 @@ "url": "https://github.com/asyncapi/community/issues/906", "banner": "", "date": "2023-10-19T14:30:00.000Z" + }, + { + "title": "Community Meeting", + "calLink": "https://www.google.com/calendar/event?eid=Y3FhbWh0bzA5cTc5MnVscTJuZjIzMWg2MmsgY19xOXRzZWlnbG9tZHNqNm5qdWh2YnB0czExY0Bn", + "url": "https://github.com/asyncapi/community/issues/912", + "banner": "https://user-images.githubusercontent.com/40604284/275363125-696a5c41-81b2-4e0b-a485-f108a7f525f0.png", + "date": "2023-10-17T08:00:00.000Z" } ] \ No newline at end of file diff --git a/dashboard.json b/dashboard.json index 1c9b6933c41..89f8bfb5eb3 100644 --- a/dashboard.json +++ b/dashboard.json @@ -9,7 +9,7 @@ "resourcePath": "/asyncapi/website/pull/2038", "repo": "asyncapi/website", "labels": [], - "score": 36.75834735990512 + "score": 37.619871126152894 }, { "id": "PR_kwDOFLhIt85Vmgtj", @@ -65,6 +65,17 @@ "labels": [], "score": 16.65612614745701 }, + { + "id": "I_kwDOCVQpZM5M_dcV", + "isPR": false, + "isAssigned": true, + "title": "DocsUI: Messages Object output", + "author": "mcturco", + "resourcePath": "/asyncapi/asyncapi-react/issues/618", + "repo": "asyncapi/asyncapi-react", + "labels": [], + "score": 16.36895155870775 + }, { "id": "I_kwDODou01c5E_LV0", "isPR": false, @@ -144,17 +155,6 @@ } ], "score": 13.210031082465903 - }, - { - "id": "PR_kwDOBW5R_c5RI5z2", - "isPR": true, - "isAssigned": false, - "title": "feat: add testimonial carousel", - "author": "Lucif3r-in", - "resourcePath": "/asyncapi/website/pull/1704", - "repo": "asyncapi/website", - "labels": [], - "score": 13.210031082465903 } ], "goodFirstIssues": [ From 58b84fcae0224cf48de7a954165f36c98b587f63 Mon Sep 17 00:00:00 2001 From: asyncapi-bot Date: Mon, 16 Oct 2023 13:42:41 +0200 Subject: [PATCH 026/134] chore: update tools.json (#2236) Co-authored-by: asyncapi-bot-eve %0ACo-authored-by: asyncapi-bot --- config/tools-automated.json | 124 +++++++++++++++++++++++++++--------- config/tools.json | 2 +- 2 files changed, 94 insertions(+), 32 deletions(-) diff --git a/config/tools-automated.json b/config/tools-automated.json index d4da755ec55..9d5f30e00c0 100644 --- a/config/tools-automated.json +++ b/config/tools-automated.json @@ -72,41 +72,41 @@ } }, { - "title": "nestjs-asyncapi", - "description": "Utilize decorators to generate AsyncAPI document utilizing DTOs (similar to @nestjs/swagger) and a web UI.", + "title": "SIO-AsyncAPI", + "description": "This is code-first approach to generate AsyncAPI specification from Socket.IO server.", "links": { - "repoUrl": "https://github.com/flamewow/nestjs-asyncapi" + "websiteUrl": "https://github.com/daler-rahimov/sio-asyncapi", + "docsUrl": "https://github.com/daler-rahimov/sio-asyncapi", + "repoUrl": "https://github.com/daler-rahimov/sio-asyncapi" }, "filters": { - "language": "Typescript", + "language": "Python", "technology": [ - "Node.js", - "NestJS" + "Socket.IO", + "Flask" ], "categories": [ - "code-first" + "code-first", + "api" ], "hasCommercial": false, "isAsyncAPIOwner": false } }, { - "title": "SIO-AsyncAPI", - "description": "This is code-first approach to generate AsyncAPI specification from Socket.IO server.", + "title": "nestjs-asyncapi", + "description": "Utilize decorators to generate AsyncAPI document utilizing DTOs (similar to @nestjs/swagger) and a web UI.", "links": { - "websiteUrl": "https://github.com/daler-rahimov/sio-asyncapi", - "docsUrl": "https://github.com/daler-rahimov/sio-asyncapi", - "repoUrl": "https://github.com/daler-rahimov/sio-asyncapi" + "repoUrl": "https://github.com/flamewow/nestjs-asyncapi" }, "filters": { - "language": "Python", + "language": "Typescript", "technology": [ - "Socket.IO", - "Flask" + "Node.js", + "NestJS" ], "categories": [ - "code-first", - "api" + "code-first" ], "hasCommercial": false, "isAsyncAPIOwner": false @@ -143,6 +143,27 @@ "isAsyncAPIOwner": false } }, + { + "title": "AsyncAPI Modelina", + "description": "Generate payload models into Java, TypeScript, Go, etc, you name it, from AsyncAPI documents. This tool gives you full control over the models through high customization", + "links": { + "websiteUrl": "https://modelina.org", + "docsUrl": "https://github.com/asyncapi/modelina/tree/master/docs", + "repoUrl": "https://github.com/asyncapi/modelina" + }, + "filters": { + "language": "TypeScript", + "technology": [ + "React JS", + "Docker" + ], + "categories": [ + "code-generator" + ], + "hasCommercial": false, + "isAsyncAPIOwner": true + } + }, { "title": "Golang AsyncAPI Code Generator", "description": "Generate Go user and application boilerplate from AsyncAPI specifications. Can be called from `go generate` without requirements.\n", @@ -399,41 +420,41 @@ "description": "The following is a list of tools that compare AsyncAPI documents.", "toolsList": [ { - "title": "AsyncAPI Diff", - "description": "Diff is a library that compares two AsyncAPI Documents and provides information about the differences by pointing out explicitly information like breaking changes.", + "title": "jasyncapicmp", + "description": "Tool for comparing two AsyncAPI versions and evaluating compatibility.", "links": { - "repoUrl": "https://github.com/asyncapi/diff" + "websiteUrl": "https://siom79.github.io/jasyncapicmp/", + "docsUrl": "https://github.com/siom79/jasyncapicmp", + "repoUrl": "https://github.com/siom79/jasyncapicmp" }, "filters": { - "language": "TypeScript", + "language": "Java", "technology": [ - "TypeScript" + "Maven" ], "categories": [ "compare-tool" ], "hasCommercial": false, - "isAsyncAPIOwner": true + "isAsyncAPIOwner": false } }, { - "title": "jasyncapicmp", - "description": "Tool for comparing two AsyncAPI versions and evaluating compatibility.", + "title": "AsyncAPI Diff", + "description": "Diff is a library that compares two AsyncAPI Documents and provides information about the differences by pointing out explicitly information like breaking changes.", "links": { - "websiteUrl": "https://siom79.github.io/jasyncapicmp/", - "docsUrl": "https://github.com/siom79/jasyncapicmp", - "repoUrl": "https://github.com/siom79/jasyncapicmp" + "repoUrl": "https://github.com/asyncapi/diff" }, "filters": { - "language": "Java", + "language": "TypeScript", "technology": [ - "Maven" + "TypeScript" ], "categories": [ "compare-tool" ], "hasCommercial": false, - "isAsyncAPIOwner": false + "isAsyncAPIOwner": true } } ] @@ -576,6 +597,47 @@ "AsyncAPI Generator Templates": { "description": "The following is a list of templates compatible with AsyncAPI Generator. You can use them to generate apps, clients or documentation from your AsyncAPI documents.", "toolsList": [ + { + "title": "Java Spring Template", + "description": "Java Spring template for the AsyncAPI Generator", + "links": { + "repoUrl": "https://github.com/asyncapi/java-spring-template" + }, + "filters": { + "language": [ + "Java", + "javascript" + ], + "technology": [ + "Springboot", + "Maven", + "Gradle" + ], + "categories": [ + "generator-template" + ], + "hasCommercial": false, + "isAsyncAPIOwner": true + } + }, + { + "title": "Node.js Websockets Template", + "description": "Node.js WebSockets template for the AsyncAPI Generator. It showcases how from a single AsyncAPI document you can generate a server and a client at the same time.", + "links": { + "repoUrl": "https://github.com/asyncapi/nodejs-ws-template" + }, + "filters": { + "language": "javascript", + "technology": [ + "Node.js" + ], + "categories": [ + "generator-template" + ], + "hasCommercial": false, + "isAsyncAPIOwner": true + } + }, { "title": "Node.js Multiprotocol Template", "description": "This template generates a server using your AsyncAPI document. It supports multiple different protocols, like Kafka or MQTT. It is designed in the way that generated code is a library and with it's API you can start the server, send messages or register a middleware for listening incoming messages. Runtime message validation included.", diff --git a/config/tools.json b/config/tools.json index 0769aa843b2..63d60b1e74b 100644 --- a/config/tools.json +++ b/config/tools.json @@ -1 +1 @@ -{"APIs":{"description":"The following is a list of APIs that expose functionality related to AsyncAPI.","toolsList":[{"title":"API Tracker - AsyncAPI specs","description":"Explore APIs and companies with public AsyncAPI specifications.","links":{"websiteUrl":"https://apitracker.io/specifications/asyncapi","repoUrl":""},"filters":{"categories":["api","directory"],"hasCommercial":false,"isAsyncAPIOwner":false,"technology":[]}},{"title":"AsyncAPI Server API","description":"Server API providing official AsyncAPI tools","links":{"websiteUrl":"https://api.asyncapi.com/v1","docsUrl":"https://api.asyncapi.com/v1/docs","repoUrl":"https://github.com/asyncapi/server-api"},"filters":{"technology":[{"name":"Node.js","color":"bg-[#BDFF67]","borderColor":"border-[#84CE24]"},{"name":"TypeScript","color":"bg-[#61d0f2]","borderColor":"border-[#40ccf7]"}],"categories":["api"],"hasCommercial":false,"isAsyncAPIOwner":true}},{"title":"AsyncAPI-Directory by APIs.guru","description":"Directory of asynchronous API specifications in AsyncAPI format.","links":{"websiteUrl":"https://apis.guru/asyncapi-directory/","repoUrl":"https://github.com/APIs-guru/asyncapi-directory"},"filters":{"language":[{"name":"JavaScript","color":"bg-[#F2F1C7]","borderColor":"border-[#BFBE86]"}],"technology":[{"name":"Node.js","color":"bg-[#BDFF67]","borderColor":"border-[#84CE24]"},{"name":"Liquid","color":"bg-[#61d0f2]","borderColor":"border-[#40ccf7]"}],"categories":["api","directory"],"hasCommercial":false,"isAsyncAPIOwner":false}},{"title":"SIO-AsyncAPI","description":"This is code-first approach to generate AsyncAPI specification from Socket.IO server.","links":{"websiteUrl":"https://github.com/daler-rahimov/sio-asyncapi","docsUrl":"https://github.com/daler-rahimov/sio-asyncapi","repoUrl":"https://github.com/daler-rahimov/sio-asyncapi"},"filters":{"language":[{"name":"Python","color":"bg-[#A8D0EF]","borderColor":"border-[#3878AB]"}],"technology":[{"name":"Socket.IO","color":"bg-[#61d0f2]","borderColor":"border-[#40ccf7]"},{"name":"Flask","color":"bg-[#D7C7F2]","borderColor":"border-[#A387D2]"}],"categories":["code-first","api"],"hasCommercial":false,"isAsyncAPIOwner":false}}]},"Code-first tools":{"description":"The following is a list of tools that generate AsyncAPI documents from your code.","toolsList":[{"title":"AsyncAPI.Net","description":"The AsyncAPI.NET SDK contains a useful object model for AsyncAPI documents in .NET along with common serializers to extract raw OpenAPI JSON and YAML documents from the model.","links":{"websiteUrl":"https://github.com/LEGO/AsyncAPI.NET/","repoUrl":"https://github.com/LEGO/AsyncAPI.NET"},"filters":{"language":[{"name":"C#","color":"bg-[#E3AFE0]","borderColor":"border-[#9B4F96]"}],"technology":[{"name":".NET","color":"bg-[#A184FF]","borderColor":"border-[#5026D4]"},{"name":"ASP.NET","color":"bg-[#71C2FB]","borderColor":"border-[#1577BC]"}],"categories":["converters","code-first","validator"],"hasCommercial":false,"isAsyncAPIOwner":false}},{"title":"EventBridge Atlas","description":"Tool that translates your AWS EventBridge Schemas into an AsyncAPI document and a web UI.","links":{"websiteUrl":"https://eventbridge-atlas.netlify.app/","repoUrl":"https://github.com/boyney123/eventbridge-atlas"},"filters":{"technology":[{"name":"Node.js","color":"bg-[#BDFF67]","borderColor":"border-[#84CE24]"}],"categories":["code-first"],"hasCommercial":false,"isAsyncAPIOwner":false}},{"title":"Go AsyncAPI","description":"This library helps to create AsyncAPI spec from your Go message structures. It uses reflection to translate Go structures in JSON Schema definitions and arrange them in AsyncAPI schema.","links":{"repoUrl":"https://github.com/swaggest/go-asyncapi"},"filters":{"language":[{"name":"Go/Golang","color":"bg-[#8ECFDF]","borderColor":"border-[#00AFD9]"}],"categories":["code-first"],"hasCommercial":false,"isAsyncAPIOwner":false,"technology":[]}},{"title":"Java AsyncAPI","description":"This tool stores modules, which simplifies interacting with AsyncAPI in jvm ecosystem.","links":{"repoUrl":"https://github.com/asyncapi/jasyncapi"},"filters":{"language":[{"name":"Java","color":"bg-[#ECA2A4]","borderColor":"border-[#EC2125]"}],"technology":[{"name":"Kotlin","color":"bg-[#61d0f2]","borderColor":"border-[#40ccf7]"},{"name":"Maven","color":"bg-[#FF6B80]","borderColor":"border-[#CA1A33]"}],"categories":["code-first"],"hasCommercial":false,"isAsyncAPIOwner":true}},{"title":"KnstEventBus","description":"AsyncApi code-first tools for c#. Generates document and view.","links":{"repoUrl":"https://github.com/d0972058277/KnstEventBus"},"filters":{"language":[{"name":"C#","color":"bg-[#E3AFE0]","borderColor":"border-[#9B4F96]"}],"technology":[{"name":"ASP.NET","color":"bg-[#71C2FB]","borderColor":"border-[#1577BC]"},{"name":".NET","color":"bg-[#A184FF]","borderColor":"border-[#5026D4]"}],"categories":["code-first","documentation-generator"],"hasCommercial":false,"isAsyncAPIOwner":false}},{"title":"Kotlin AsyncAPI","description":"The Kotlin AsyncAPI project aims to provide convenience tools for generating and serving AsyncAPI documentation. The core of this project is a Kotlin DSL for building the specification in a typesafe way.","links":{"repoUrl":"https://github.com/OpenFolder/kotlin-asyncapi"},"filters":{"language":[{"name":"Kotlin","color":"bg-[#B1ACDF]","borderColor":"border-[#756BD9]"}],"technology":[{"name":"Springboot","color":"bg-[#98E279]","borderColor":"border-[#68BC44]"},{"name":"Maven","color":"bg-[#FF6B80]","borderColor":"border-[#CA1A33]"}],"categories":["code-first"],"hasCommercial":false,"isAsyncAPIOwner":false}},{"title":"nestjs-asyncapi","description":"Utilize decorators to generate AsyncAPI document utilizing DTOs (similar to @nestjs/swagger) and a web UI.","links":{"repoUrl":"https://github.com/flamewow/nestjs-asyncapi"},"filters":{"language":[{"name":"TypeScript","color":"bg-[#7DBCFE]","borderColor":"border-[#2C78C7]"}],"technology":[{"name":"Node.js","color":"bg-[#BDFF67]","borderColor":"border-[#84CE24]"},{"name":"Nest Js","color":"bg-[#E1224E]","borderColor":"border-[#B9012b]"}],"categories":["code-first"],"hasCommercial":false,"isAsyncAPIOwner":false}},{"title":"Neuroglia AsyncAPI","description":"A .NET SDK for the Async API specification. Automatically generates and serves AsyncAPI documents based on your code. Includes fluent-builders to create AsyncAPI documents from scratch, and provides a web-based GUI to browse generated documents.","links":{"repoUrl":"https://github.com/neuroglia-io/AsyncApi"},"filters":{"language":[{"name":"C#","color":"bg-[#E3AFE0]","borderColor":"border-[#9B4F96]"}],"technology":[{"name":".NET","color":"bg-[#A184FF]","borderColor":"border-[#5026D4]"}],"categories":["code-first"],"hasCommercial":false,"isAsyncAPIOwner":false}},{"title":"Saunter","description":"Saunter is an AsyncAPI documentation generator for dotnet. Generates (and hosts) an AsyncAPI schema document from your code.","links":{"repoUrl":"https://github.com/tehmantra/saunter"},"filters":{"language":[{"name":"C#","color":"bg-[#E3AFE0]","borderColor":"border-[#9B4F96]"}],"technology":[{"name":".NET","color":"bg-[#A184FF]","borderColor":"border-[#5026D4]"},{"name":"ASP.NET","color":"bg-[#71C2FB]","borderColor":"border-[#1577BC]"}],"categories":["code-first"],"hasCommercial":false,"isAsyncAPIOwner":false}},{"title":"SIO-AsyncAPI","description":"This is code-first approach to generate AsyncAPI specification from Socket.IO server.","links":{"websiteUrl":"https://github.com/daler-rahimov/sio-asyncapi","docsUrl":"https://github.com/daler-rahimov/sio-asyncapi","repoUrl":"https://github.com/daler-rahimov/sio-asyncapi"},"filters":{"language":[{"name":"Python","color":"bg-[#A8D0EF]","borderColor":"border-[#3878AB]"}],"technology":[{"name":"Socket.IO","color":"bg-[#61d0f2]","borderColor":"border-[#40ccf7]"},{"name":"Flask","color":"bg-[#D7C7F2]","borderColor":"border-[#A387D2]"}],"categories":["code-first","api"],"hasCommercial":false,"isAsyncAPIOwner":false}},{"title":"Springwolf","description":"Automated documentation for async APIs built with Spring Boot. Like Springfox for AsyncAPI. Auto-generates an AsyncAPI document and a web UI.","links":{"websiteUrl":"https://www.springwolf.dev","repoUrl":"https://github.com/springwolf/springwolf-core"},"filters":{"language":[{"name":"Java","color":"bg-[#ECA2A4]","borderColor":"border-[#EC2125]"}],"technology":[{"name":"Springboot","color":"bg-[#98E279]","borderColor":"border-[#68BC44]"},{"name":"Gradle","color":"bg-[#61d0f2]","borderColor":"border-[#40ccf7]"}],"categories":["code-first","documentation-generator"],"hasCommercial":false,"isAsyncAPIOwner":false}},{"title":"sttp tapir","description":"Library for describing HTTP endpoints, and then interpreting them as a server, client, or documentation","links":{"websiteUrl":"https://tapir.softwaremill.com/","repoUrl":"https://github.com/softwaremill/tapir"},"filters":{"language":[{"name":"Scala","color":"bg-[#FFA299]","borderColor":"border-[#DF301F]"}],"categories":["code-first"],"hasCommercial":false,"isAsyncAPIOwner":false,"technology":[]}}]},"Code Generators":{"description":"The following is a list of tools that generate code from an AsyncAPI document; not the other way around.","toolsList":[{"title":"AsyncAPI Generator","description":"Generator is a tool that you can use to generate whatever you want basing on the AsyncAPI specification file as an input.","links":{"docsUrl":"https://www.asyncapi.com/docs/tools/generator","repoUrl":"https://github.com/asyncapi/generator"},"filters":{"language":[{"name":"JavaScript","color":"bg-[#F2F1C7]","borderColor":"border-[#BFBE86]"}],"technology":[{"name":"Node.js","color":"bg-[#BDFF67]","borderColor":"border-[#84CE24]"}],"categories":["code-generator","documentation-generator"],"hasCommercial":false,"isAsyncAPIOwner":true}},{"title":"Golang AsyncAPI Code Generator","description":"Generate Go user and application boilerplate from AsyncAPI specifications. Can be called from `go generate` without requirements.\n","links":{"repoUrl":"https://github.com/lerenn/asyncapi-codegen"},"filters":{"language":[{"name":"Go/Golang","color":"bg-[#8ECFDF]","borderColor":"border-[#00AFD9]"}],"categories":["code-generator"],"hasCommercial":false,"isAsyncAPIOwner":false,"technology":[]}},{"title":"MultiAPI Generator","description":"This is a plugin designed to help developers automatizing the creation of code classes from YML files based on AsyncApi and OpenAPI. It is presented in 2 flavours Maven and Gradle","links":{"repoUrl":"https://github.com/sngular/scs-multiapi-plugin"},"filters":{"language":[{"name":"Java","color":"bg-[#ECA2A4]","borderColor":"border-[#EC2125]"}],"technology":[{"name":"Groovy","color":"bg-[#61d0f2]","borderColor":"border-[#40ccf7]"},{"name":"Maven","color":"bg-[#FF6B80]","borderColor":"border-[#CA1A33]"}],"categories":["code-generator"],"hasCommercial":false,"isAsyncAPIOwner":false}},{"title":"Node-RED AsyncAPI plugin","description":"A plugin for generating and configuring nodes for Kafka, MQTT, AMQP, etc. automatically from an AsyncAPI specification.","links":{"repoUrl":"https://github.com/dalelane/node-red-contrib-plugin-asyncapi"},"filters":{"technology":[{"name":"Node-RED","color":"bg-[#FF7474]","borderColor":"border-[#8F0101]"}],"categories":["code-generator"],"hasCommercial":false,"isAsyncAPIOwner":false}},{"title":"ZenWave SDK","description":"DDD and API-First for Event-Driven Microservices","links":{"websiteUrl":"https://zenwave360.github.io/","docsUrl":"https://zenwave360.github.io/zenwave-sdk/plugins/asyncapi-spring-cloud-streams3/","repoUrl":"https://github.com/zenwave360/zenwave-sdk"},"filters":{"language":[{"name":"Java","color":"bg-[#ECA2A4]","borderColor":"border-[#EC2125]"}],"technology":[{"name":"Maven","color":"bg-[#FF6B80]","borderColor":"border-[#CA1A33]"},{"name":"Liquid","color":"bg-[#61d0f2]","borderColor":"border-[#40ccf7]"},{"name":"Spring Cloud Streams","color":"bg-[#61d0f2]","borderColor":"border-[#40ccf7]"},{"name":"JHipster JDL","color":"bg-[#61d0f2]","borderColor":"border-[#40ccf7]"}],"categories":["code-generator","dsl","mocking-and-testing","cli"],"hasCommercial":false,"isAsyncAPIOwner":false}}]},"Converters":{"description":"The following is a list of tools that do not yet belong to any specific category but are also useful for the community.","toolsList":[{"title":"AsyncAPI-format","description":"Format an AsyncAPI document by ordering, casing, formatting, and filtering fields.","links":{"repoUrl":"https://github.com/thim81/asyncapi-format"},"filters":{"language":[{"name":"JavaScript","color":"bg-[#F2F1C7]","borderColor":"border-[#BFBE86]"}],"technology":[{"name":"Node.js","color":"bg-[#BDFF67]","borderColor":"border-[#84CE24]"}],"categories":["converter","cli"],"hasCommercial":false,"isAsyncAPIOwner":false}},{"title":"AsyncAPI.Net","description":"The AsyncAPI.NET SDK contains a useful object model for AsyncAPI documents in .NET along with common serializers to extract raw OpenAPI JSON and YAML documents from the model.","links":{"websiteUrl":"https://github.com/LEGO/AsyncAPI.NET/","repoUrl":"https://github.com/LEGO/AsyncAPI.NET"},"filters":{"language":[{"name":"C#","color":"bg-[#E3AFE0]","borderColor":"border-[#9B4F96]"}],"technology":[{"name":".NET","color":"bg-[#A184FF]","borderColor":"border-[#5026D4]"},{"name":"ASP.NET","color":"bg-[#71C2FB]","borderColor":"border-[#1577BC]"}],"categories":["converters","code-first","validator"],"hasCommercial":false,"isAsyncAPIOwner":false}},{"title":"Converter","description":"Converts old versions of AsyncAPI files into the latest version.","links":{"repoUrl":"https://github.com/asyncapi/converter-js"},"filters":{"language":[{"name":"TypeScript","color":"bg-[#7DBCFE]","borderColor":"border-[#2C78C7]"}],"technology":[{"name":"Node.js","color":"bg-[#BDFF67]","borderColor":"border-[#84CE24]"}],"categories":["converter"],"hasCommercial":false,"isAsyncAPIOwner":true}},{"title":"Converter-Go","description":"The AsyncAPI Converter converts AsyncAPI documents from versions 1.0.0, 1.1.0 and 1.2.0 to version 2.0.0. It supports both json and yaml formats on input and output. By default, the AsyncAPI Converter converts a document into the json format.","links":{"repoUrl":"https://github.com/asyncapi/converter-go"},"filters":{"language":[{"name":"Go/Golang","color":"bg-[#8ECFDF]","borderColor":"border-[#00AFD9]"}],"categories":["converter"],"hasCommercial":false,"isAsyncAPIOwner":true,"technology":[]}}]},"Directories":{"description":"The following is a list of directories that index public AsyncAPI documents.","toolsList":[{"title":"API Tracker - AsyncAPI specs","description":"Explore APIs and companies with public AsyncAPI specifications.","links":{"websiteUrl":"https://apitracker.io/specifications/asyncapi","repoUrl":""},"filters":{"categories":["api","directory"],"hasCommercial":false,"isAsyncAPIOwner":false,"technology":[]}},{"title":"AsyncAPI-Directory by APIs.guru","description":"Directory of asynchronous API specifications in AsyncAPI format.","links":{"websiteUrl":"https://apis.guru/asyncapi-directory/","repoUrl":"https://github.com/APIs-guru/asyncapi-directory"},"filters":{"language":[{"name":"JavaScript","color":"bg-[#F2F1C7]","borderColor":"border-[#BFBE86]"}],"technology":[{"name":"Node.js","color":"bg-[#BDFF67]","borderColor":"border-[#84CE24]"},{"name":"Liquid","color":"bg-[#61d0f2]","borderColor":"border-[#40ccf7]"}],"categories":["api","directory"],"hasCommercial":false,"isAsyncAPIOwner":false}}]},"Documentation Generators":{"description":"The following is a list of tools that generate human-readable documentation from an AsyncAPI document.","toolsList":[{"title":"AsyncAPI Generator","description":"Generator is a tool that you can use to generate whatever you want basing on the AsyncAPI specification file as an input.","links":{"docsUrl":"https://www.asyncapi.com/docs/tools/generator","repoUrl":"https://github.com/asyncapi/generator"},"filters":{"language":[{"name":"JavaScript","color":"bg-[#F2F1C7]","borderColor":"border-[#BFBE86]"}],"technology":[{"name":"Node.js","color":"bg-[#BDFF67]","borderColor":"border-[#84CE24]"},{"name":"Markdown","color":"bg-[#61d0f2]","borderColor":"border-[#40ccf7]"}],"categories":["code-generator","documentation-generator"],"hasCommercial":false,"isAsyncAPIOwner":true}},{"title":"asyncapi-asciidoc-template","description":"Asciidoc template for the asyncapi generator","links":{"repoUrl":"https://gitlab.com/djencks/asyncapi-asciidoc-template"},"filters":{"language":[{"name":"JavaScript","color":"bg-[#F2F1C7]","borderColor":"border-[#BFBE86]"}],"technology":[{"name":"React JS","color":"bg-[#9FECFA]","borderColor":"border-[#08D8FE]"}],"categories":["documentation-generator","generator-template"],"hasCommercial":false,"isAsyncAPIOwner":false}},{"title":"Bump.sh","description":"OpenAPI 2 & 3 / AsyncAPI 2 documentation generator, with automatic changelog and visual diff.","links":{"websiteUrl":"https://bump.sh/","repoUrl":""},"filters":{"categories":["documentation-generator"],"hasCommercial":true,"isAsyncAPIOwner":false,"technology":[]}},{"title":"Cupid","description":"A library that focuses on finding and analyzing the relationships between AsyncAPI documents. It outputs a map of the system architecture.","links":{"repoUrl":"https://github.com/asyncapi/cupid"},"filters":{"language":[{"name":"JavaScript","color":"bg-[#F2F1C7]","borderColor":"border-[#BFBE86]"}],"technology":[{"name":"Node.js","color":"bg-[#BDFF67]","borderColor":"border-[#84CE24]"}],"categories":["documentation-generator"],"hasCommercial":false,"isAsyncAPIOwner":true}},{"title":"KnstEventBus","description":"AsyncApi code-first tools for c#. Generates document and view.","links":{"repoUrl":"https://github.com/d0972058277/KnstEventBus"},"filters":{"language":[{"name":"C#","color":"bg-[#E3AFE0]","borderColor":"border-[#9B4F96]"}],"technology":[{"name":"ASP.NET","color":"bg-[#71C2FB]","borderColor":"border-[#1577BC]"},{"name":".NET","color":"bg-[#A184FF]","borderColor":"border-[#5026D4]"}],"categories":["code-first","documentation-generator"],"hasCommercial":false,"isAsyncAPIOwner":false}},{"title":"Springwolf","description":"Automated documentation for async APIs built with Spring Boot. Like Springfox for AsyncAPI. Auto-generates an AsyncAPI document and a web UI.","links":{"websiteUrl":"https://www.springwolf.dev","repoUrl":"https://github.com/springwolf/springwolf-core"},"filters":{"language":[{"name":"Java","color":"bg-[#ECA2A4]","borderColor":"border-[#EC2125]"}],"technology":[{"name":"Springboot","color":"bg-[#98E279]","borderColor":"border-[#68BC44]"},{"name":"Gradle","color":"bg-[#61d0f2]","borderColor":"border-[#40ccf7]"}],"categories":["code-first","documentation-generator"],"hasCommercial":false,"isAsyncAPIOwner":false}},{"title":"Widdershins","description":"OpenAPI 3.0 / Swagger 2.0 / AsyncAPI 1.0 definition to Slate / Shins compatible markdown.","links":{"websiteUrl":"https://mermade.github.io/reslate/","repoUrl":"https://github.com/Mermade/widdershins"},"filters":{"language":[{"name":"JavaScript","color":"bg-[#F2F1C7]","borderColor":"border-[#BFBE86]"}],"technology":[{"name":"Node.js","color":"bg-[#BDFF67]","borderColor":"border-[#84CE24]"},{"name":"Shell","color":"bg-[#61d0f2]","borderColor":"border-[#40ccf7]"}],"categories":["documentation-generator"],"hasCommercial":false,"isAsyncAPIOwner":false}}]},"Editors":{"description":"The following is a list of editors or related tools that allow editing of AsyncAPI document.","toolsList":[{"title":"AsyncAPI Studio","description":"Visually design your AsyncAPI files and event-driven architecture.","links":{"websiteUrl":"https://studio.asyncapi.com","repoUrl":"https://github.com/asyncapi/studio"},"filters":{"technology":[{"name":"React JS","color":"bg-[#9FECFA]","borderColor":"border-[#08D8FE]"},{"name":"TypeScript","color":"bg-[#61d0f2]","borderColor":"border-[#40ccf7]"}],"categories":["editor"],"hasCommercial":false,"isAsyncAPIOwner":true}}]},"UI components":{"description":"The following is a list of UI components to view AsyncAPI documents.","toolsList":[{"title":"Api-Diff-Viewer","description":"React component to view the difference between two Json based API documents. Supported specifications: JsonSchema, OpenAPI 3.x, AsyncAPI 2.x.","links":{"repoUrl":"https://github.com/udamir/api-diff-viewer","websiteUrl":"https://api-diff-viewer.vercel.app/"},"filters":{"language":[{"name":"TypeScript","color":"bg-[#7DBCFE]","borderColor":"border-[#2C78C7]"}],"technology":[{"name":"React JS","color":"bg-[#9FECFA]","borderColor":"border-[#08D8FE]"},{"name":"Babel","color":"bg-[#61d0f2]","borderColor":"border-[#40ccf7]"},{"name":"Storybook","color":"bg-[#61d0f2]","borderColor":"border-[#40ccf7]"}],"categories":["ui-component"],"hasCommercial":false,"isAsyncAPIOwner":false}},{"title":"AsyncAPI React component","description":"React component for rendering documentation from your specification in real-time in the browser. It also provides a WebComponent and bundle for Angular and Vue","links":{"repoUrl":"https://github.com/asyncapi/asyncapi-react"},"filters":{"language":[{"name":"TypeScript","color":"bg-[#7DBCFE]","borderColor":"border-[#2C78C7]"}],"technology":[{"name":"React JS","color":"bg-[#9FECFA]","borderColor":"border-[#08D8FE]"},{"name":"WebComponents","color":"bg-[#61d0f2]","borderColor":"border-[#40ccf7]"}],"categories":["ui-component"],"hasCommercial":false,"isAsyncAPIOwner":true}}]},"DSL":{"description":"Writing YAML by hand is no fun, and maybe you don't want a GUI, so use a Domain Specific Language to write AsyncAPI in your language of choice.","toolsList":[{"title":"BOATS","description":"Compile your single AsyncAPI file from multiple YAML files with BOATS and with the help of the template engine Nunjucks, plus a many extra helpers to automate much of the donkey work.","links":{"repoUrl":"https://github.com/j-d-carmichael/boats"},"filters":{"language":[{"name":"TypeScript","color":"bg-[#7DBCFE]","borderColor":"border-[#2C78C7]"}],"technology":[{"name":"Node.js","color":"bg-[#BDFF67]","borderColor":"border-[#84CE24]"}],"categories":["dsl"],"hasCommercial":false,"isAsyncAPIOwner":false}},{"title":"ZenWave SDK","description":"DDD and API-First for Event-Driven Microservices","links":{"websiteUrl":"https://zenwave360.github.io/","docsUrl":"https://zenwave360.github.io/zenwave-sdk/plugins/asyncapi-spring-cloud-streams3/","repoUrl":"https://github.com/zenwave360/zenwave-sdk"},"filters":{"language":[{"name":"Java","color":"bg-[#ECA2A4]","borderColor":"border-[#EC2125]"}],"technology":[{"name":"Maven","color":"bg-[#FF6B80]","borderColor":"border-[#CA1A33]"},{"name":"Liquid","color":"bg-[#61d0f2]","borderColor":"border-[#40ccf7]"},{"name":"Spring Cloud Streams","color":"bg-[#61d0f2]","borderColor":"border-[#40ccf7]"},{"name":"JHipster JDL","color":"bg-[#61d0f2]","borderColor":"border-[#40ccf7]"}],"categories":["code-generator","dsl","mocking-and-testing","cli"],"hasCommercial":false,"isAsyncAPIOwner":false}}]},"Frameworks":{"description":"The following is a list of API/application frameworks that make use of AsyncAPI.","toolsList":[{"title":"Asynction","description":"SocketIO server framework driven by the AsyncAPI specification. Asynction guarantees that your API will work in accordance with its AsyncAPI documentation. Built on top of Flask-SocketIO.","links":{"websiteUrl":"https://pypi.org/project/asynction/","repoUrl":"https://github.com/dedoussis/asynction"},"filters":{"language":[{"name":"Python","color":"bg-[#A8D0EF]","borderColor":"border-[#3878AB]"}],"technology":[{"name":"Flask","color":"bg-[#D7C7F2]","borderColor":"border-[#A387D2]"}],"categories":["framework"],"hasCommercial":false,"isAsyncAPIOwner":false}}]},"GitHub Actions":{"description":"The following is a list of GitHub Actions that you can use in your workflows","toolsList":[{"title":"API documentation generation on Bump.sh","description":"With this GitHub Action you can automatically generate your API reference (with the changelog and diff) on Bump.sh from any AsyncAPI file.","links":{"websiteUrl":"https://github.com/marketplace/actions/api-documentation-on-bump","repoUrl":"https://github.com/bump-sh/github-action"},"filters":{"language":[{"name":"TypeScript","color":"bg-[#7DBCFE]","borderColor":"border-[#2C78C7]"}],"categories":["github-action"],"hasCommercial":false,"isAsyncAPIOwner":false,"technology":[]}},{"title":"AsyncAPI GitHub Action","description":"This action validates if the AsyncAPI schema file is valid or not.","links":{"websiteUrl":"https://github.com/marketplace/actions/asyncapi-github-action","repoUrl":"https://github.com/WaleedAshraf/asyncapi-github-action"},"filters":{"language":[{"name":"JavaScript","color":"bg-[#F2F1C7]","borderColor":"border-[#BFBE86]"}],"technology":[{"name":"Node.js","color":"bg-[#BDFF67]","borderColor":"border-[#84CE24]"}],"categories":["github-action","validator"],"hasCommercial":false,"isAsyncAPIOwner":false}},{"title":"Automated version bump for AsyncAPI documents","description":"With this GitHub Action, you can automatically bump the version based on commit messages, which is similar to what semantic-release is for NPM.","links":{"websiteUrl":"https://github.com/marketplace/actions/automated-version-bump-for-asyncapi","repoUrl":"https://github.com/bump-sh/github-action"},"filters":{"language":[{"name":"JavaScript","color":"bg-[#F2F1C7]","borderColor":"border-[#BFBE86]"}],"technology":[{"name":"Node.js","color":"bg-[#BDFF67]","borderColor":"border-[#84CE24]"}],"categories":["github-action"],"hasCommercial":false,"isAsyncAPIOwner":false}},{"title":"GitHub Action for Generator","description":"GitHub Action to generate all the things from your AsyncAPI document using the AsyncAPI generator","links":{"repoUrl":"https://github.com/asyncapi/github-action-for-generator"},"filters":{"technology":[{"name":"AsyncAPI Generator","color":"bg-[#61d0f2]","borderColor":"border-[#40ccf7]"}],"categories":["github-action"],"hasCommercial":false,"isAsyncAPIOwner":true}},{"title":"GitHub Action for Generator","description":null,"links":{"repoUrl":"https://github.com/actions-marketplace-validations/asyncapi_github-action-for-generator"},"filters":{"technology":[{"name":"AsyncAPI Generator","color":"bg-[#61d0f2]","borderColor":"border-[#40ccf7]"}],"categories":["github-action"],"hasCommercial":false,"isAsyncAPIOwner":false}}]},"Mocking and Testing":{"description":"The tools below take specification documents as input, then publish fake messages to broker destinations for simulation purposes. They may also check that publisher messages are compliant with schemas.","toolsList":[{"title":"Microcks","description":"Mocking and testing platform for API and microservices. Turn your AsyncAPI, OpenAPI contract examples, or Postman collections into ready-to-use mocks. Use examples to simulate and validate received messages according to schema elements.","links":{"websiteUrl":"https://microcks.io/","repoUrl":"https://github.com/microcks/microcks"},"filters":{"language":[{"name":"Java","color":"bg-[#ECA2A4]","borderColor":"border-[#EC2125]"}],"technology":[{"name":"TypeScript","color":"bg-[#61d0f2]","borderColor":"border-[#40ccf7]"},{"name":"Kubernetes-native","color":"bg-[#D7C7F2]","borderColor":"border-[#A387D2]"},{"name":"Saas","color":"bg-[#6AB8EC]","borderColor":"border-[#2275AD]"}],"categories":["mocking-and-testing"],"hasCommercial":false,"isAsyncAPIOwner":false}},{"title":"MultiAPI Converter","description":"Use AsyncAPI definition, to generate Spring Cloud Contract producer validation or consumer stubs, using maven.","links":{"repoUrl":"https://github.com/sngular/scc-multiapi-converter"},"filters":{"language":[{"name":"Java","color":"bg-[#ECA2A4]","borderColor":"border-[#EC2125]"}],"technology":[{"name":"Springboot","color":"bg-[#98E279]","borderColor":"border-[#68BC44]"}],"categories":["mocking-and-testing"],"hasCommercial":false,"isAsyncAPIOwner":false}},{"title":"Specmatic","description":"An API contract testing tool that helps ensure the correctness APIs by automatically generating test cases and verifying them against the API spec. It simplifies the process of testing APIs and reduces the likelihood of bugs and compatibility issues.","links":{"websiteUrl":"https://specmatic.in","docsUrl":"https://specmatic.in/documentation/","repoUrl":"https://github.com/znsio/specmatic"},"filters":{"language":[{"name":"Kotlin","color":"bg-[#B1ACDF]","borderColor":"border-[#756BD9]"}],"technology":[{"name":"Maven","color":"bg-[#FF6B80]","borderColor":"border-[#CA1A33]"}],"categories":["mocking-and-testing"],"hasCommercial":false,"isAsyncAPIOwner":false}},{"title":"Virtualan","description":"Mocking and testing platform for API and microservices. Allows you to create and setup mocks for OpenAPI and AsyncAPI contracts. Shows how to setup and create AsyncAPI GitHub Reference Examples and OpenAPI GitHub Reference Examples.","links":{"websiteUrl":"https://www.virtualan.io/index.html","repoUrl":"https://github.com/virtualansoftware"},"filters":{"technology":[{"name":"Kubernetes-native","color":"bg-[#D7C7F2]","borderColor":"border-[#A387D2]"}],"categories":["mocking-and-testing"],"hasCommercial":false,"isAsyncAPIOwner":false}},{"title":"ZenWave SDK","description":"DDD and API-First for Event-Driven Microservices","links":{"websiteUrl":"https://zenwave360.github.io/","docsUrl":"https://zenwave360.github.io/zenwave-sdk/plugins/asyncapi-spring-cloud-streams3/","repoUrl":"https://github.com/zenwave360/zenwave-sdk"},"filters":{"language":[{"name":"Java","color":"bg-[#ECA2A4]","borderColor":"border-[#EC2125]"}],"technology":[{"name":"Maven","color":"bg-[#FF6B80]","borderColor":"border-[#CA1A33]"},{"name":"Liquid","color":"bg-[#61d0f2]","borderColor":"border-[#40ccf7]"},{"name":"Spring Cloud Streams","color":"bg-[#61d0f2]","borderColor":"border-[#40ccf7]"},{"name":"JHipster JDL","color":"bg-[#61d0f2]","borderColor":"border-[#40ccf7]"}],"categories":["code-generator","dsl","mocking-and-testing","cli"],"hasCommercial":false,"isAsyncAPIOwner":false}}]},"Validators":{"description":"The following is a list of tools that validate AsyncAPI documents.","toolsList":[{"title":"AMF","description":"AMF (AML Modeling Framework) is an open-source library capable of parsing and validating AML metadata documents.","links":{"docsUrl":"https://a.ml/docs/","repoUrl":"https://github.com/aml-org/amf"},"filters":{"language":[{"name":"Scala","color":"bg-[#FFA299]","borderColor":"border-[#DF301F]"}],"categories":["validator"],"hasCommercial":false,"isAsyncAPIOwner":false,"technology":[]}},{"title":"AsyncAPI GitHub Action","description":"This action validates if the AsyncAPI schema file is valid or not.","links":{"websiteUrl":"https://github.com/marketplace/actions/asyncapi-github-action","repoUrl":"https://github.com/WaleedAshraf/asyncapi-github-action"},"filters":{"language":[{"name":"JavaScript","color":"bg-[#F2F1C7]","borderColor":"border-[#BFBE86]"}],"technology":[{"name":"Node.js","color":"bg-[#BDFF67]","borderColor":"border-[#84CE24]"}],"categories":["github-action","validator"],"hasCommercial":false,"isAsyncAPIOwner":false}},{"title":"AsyncAPI Parser","description":"Use this package to parse and validate AsyncAPI documents —either YAML or JSON— in your Node.js or browser application. Updated bundle for the browser is always attached to the GitHub Release.","links":{"repoUrl":"https://github.com/asyncapi/parser-js"},"filters":{"language":[{"name":"JavaScript","color":"bg-[#F2F1C7]","borderColor":"border-[#BFBE86]"}],"technology":[{"name":"Node.js","color":"bg-[#BDFF67]","borderColor":"border-[#84CE24]"}],"categories":["validator"],"hasCommercial":false,"isAsyncAPIOwner":true}},{"title":"AsyncAPI Parser","description":"The AsyncAPI Parser validates AsyncAPI documents according to dedicated schemas.","links":{"repoUrl":"https://github.com/asyncapi/parser-go"},"filters":{"language":[{"name":"Go/Golang","color":"bg-[#8ECFDF]","borderColor":"border-[#00AFD9]"}],"categories":["validator"],"hasCommercial":false,"isAsyncAPIOwner":true,"technology":[]}},{"title":"AsyncAPI Parser Wrapper","description":"Use this library to parse and validate AsyncAPI documents — either YAML or JSON — in your Java application. It is a Java wrapper over JavaScript Parser implemented using J2V8.","links":{"repoUrl":"https://github.com/AsyncAPITools/parser-java-wrapper"},"filters":{"language":[{"name":"Java","color":"bg-[#ECA2A4]","borderColor":"border-[#EC2125]"}],"categories":["validator"],"hasCommercial":false,"isAsyncAPIOwner":false,"technology":[]}},{"title":"asyncapi-validator","description":"It allows you to validate the schema of your messages against your AsyncAPI schema definition. You can use it with Kafka, RabbitMQ or any other messaging/queue.","links":{"repoUrl":"https://github.com/WaleedAshraf/asyncapi-validator"},"filters":{"language":[{"name":"JavaScript","color":"bg-[#F2F1C7]","borderColor":"border-[#BFBE86]"}],"technology":[{"name":"Node.js","color":"bg-[#BDFF67]","borderColor":"border-[#84CE24]"}],"categories":["validator"],"hasCommercial":false,"isAsyncAPIOwner":false}},{"title":"AsyncAPI.Net","description":"The AsyncAPI.NET SDK contains a useful object model for AsyncAPI documents in .NET along with common serializers to extract raw OpenAPI JSON and YAML documents from the model.","links":{"websiteUrl":"https://github.com/LEGO/AsyncAPI.NET/","repoUrl":"https://github.com/LEGO/AsyncAPI.NET"},"filters":{"language":[{"name":"C#","color":"bg-[#E3AFE0]","borderColor":"border-[#9B4F96]"}],"technology":[{"name":".NET","color":"bg-[#A184FF]","borderColor":"border-[#5026D4]"},{"name":"ASP.NET","color":"bg-[#71C2FB]","borderColor":"border-[#1577BC]"}],"categories":["converters","code-first","validator"],"hasCommercial":false,"isAsyncAPIOwner":false}},{"title":"Spectral","description":"A flexible JSON/YAML linter for creating automated style guides, with baked in support for OpenAPI v3.1, v3.0, and v2.0 as well as AsyncAPI v2.x.","links":{"repoUrl":"https://github.com/stoplightio/spectral"},"filters":{"language":[{"name":"TypeScript","color":"bg-[#7DBCFE]","borderColor":"border-[#2C78C7]"}],"technology":[{"name":"Node.js","color":"bg-[#BDFF67]","borderColor":"border-[#84CE24]"}],"categories":["validator"],"hasCommercial":false,"isAsyncAPIOwner":false}}]},"Compare tools":{"description":"The following is a list of tools that compare AsyncAPI documents.","toolsList":[{"title":"Api-Smart-Diff","description":"It allows you to compare two API documents and classify changes. Supported API specifications: OpenAPI, AsyncAPI, JsonSchema.","links":{"repoUrl":"https://github.com/udamir/api-smart-diff"},"filters":{"language":[{"name":"TypeScript","color":"bg-[#7DBCFE]","borderColor":"border-[#2C78C7]"}],"categories":["compare-tool"],"hasCommercial":false,"isAsyncAPIOwner":false,"technology":[]}},{"title":"AsyncAPI Diff","description":"Diff is a library that compares two AsyncAPI Documents and provides information about the differences by pointing out explicitly information like breaking changes.","links":{"repoUrl":"https://github.com/asyncapi/diff"},"filters":{"language":[{"name":"TypeScript","color":"bg-[#7DBCFE]","borderColor":"border-[#2C78C7]"}],"technology":[{"name":"TypeScript","color":"bg-[#61d0f2]","borderColor":"border-[#40ccf7]"}],"categories":["compare-tool"],"hasCommercial":false,"isAsyncAPIOwner":true}},{"title":"jasyncapicmp","description":"Tool for comparing two AsyncAPI versions and evaluating compatibility.","links":{"websiteUrl":"https://siom79.github.io/jasyncapicmp/","docsUrl":"https://github.com/siom79/jasyncapicmp","repoUrl":"https://github.com/siom79/jasyncapicmp"},"filters":{"language":[{"name":"Java","color":"bg-[#ECA2A4]","borderColor":"border-[#EC2125]"}],"technology":[{"name":"Maven","color":"bg-[#FF6B80]","borderColor":"border-[#CA1A33]"}],"categories":["compare-tool"],"hasCommercial":false,"isAsyncAPIOwner":false}},{"title":"jasyncapicmp","description":"Tool/library/maven-plugin for comparing two AsyncAPI versions and evaluating compatibility.","links":{"websiteUrl":"https://siom79.github.io/jasyncapicmp/","repoUrl":"https://github.com/siom79/jasyncapicmp"},"filters":{"language":[{"name":"Java","color":"bg-[#ECA2A4]","borderColor":"border-[#EC2125]"}],"technology":[{"name":"Maven","color":"bg-[#FF6B80]","borderColor":"border-[#CA1A33]"}],"categories":["compare-tool"],"hasCommercial":false,"isAsyncAPIOwner":false}}]},"CLIs":{"description":"The following is a list of tools that you can work with in terminal or do some CI/CD automation.","toolsList":[{"title":"AsyncAPI CLI","description":"One CLI to rule them all. \nThis is a CLI that aims to integrate all AsyncAPI tools that you need while AsyncAPI document development and maintainance. \nYou can use it to generate docs or code, validate AsyncAPI document and event create new documents.\n","links":{"websiteUrl":"https://www.asyncapi.com/tools/cli","repoUrl":"https://github.com/asyncapi/cli"},"filters":{"technology":[{"name":"TypeScript","color":"bg-[#61d0f2]","borderColor":"border-[#40ccf7]"}],"categories":["others","cli"],"hasCommercial":false,"isAsyncAPIOwner":true}},{"title":"AsyncAPI-format","description":"Format an AsyncAPI document by ordering, casing, formatting, and filtering fields.","links":{"repoUrl":"https://github.com/asyncapi/converter-go"},"filters":{"language":[{"name":"JavaScript","color":"bg-[#F2F1C7]","borderColor":"border-[#BFBE86]"}],"technology":[{"name":"Node.js","color":"bg-[#BDFF67]","borderColor":"border-[#84CE24]"}],"categories":["converter","cli"],"hasCommercial":false,"isAsyncAPIOwner":true}},{"title":"ZenWave SDK","description":"DDD and API-First for Event-Driven Microservices","links":{"websiteUrl":"https://zenwave360.github.io/","docsUrl":"https://zenwave360.github.io/zenwave-sdk/plugins/asyncapi-spring-cloud-streams3/","repoUrl":"https://github.com/zenwave360/zenwave-sdk"},"filters":{"language":[{"name":"Java","color":"bg-[#ECA2A4]","borderColor":"border-[#EC2125]"}],"technology":[{"name":"Maven","color":"bg-[#FF6B80]","borderColor":"border-[#CA1A33]"},{"name":"Liquid","color":"bg-[#61d0f2]","borderColor":"border-[#40ccf7]"},{"name":"Spring Cloud Streams","color":"bg-[#61d0f2]","borderColor":"border-[#40ccf7]"},{"name":"JHipster JDL","color":"bg-[#61d0f2]","borderColor":"border-[#40ccf7]"}],"categories":["code-generator","dsl","mocking-and-testing","cli"],"hasCommercial":false,"isAsyncAPIOwner":false}}]},"Bundlers":{"description":"The following is a list of tools that you can work with to bundle AsyncAPI documents.","toolsList":[{"title":"Api-ref-bundler","description":"It allows you bundle/dereference external/internal $refs in Json based API document. Supported specifications: OpenAPI, AsyncAPI, JsonSchema.","links":{"repoUrl":"https://github.com/udamir/api-ref-bundler"},"filters":{"language":[{"name":"TypeScript","color":"bg-[#7DBCFE]","borderColor":"border-[#2C78C7]"}],"technology":[{"name":"TypeScript","color":"bg-[#61d0f2]","borderColor":"border-[#40ccf7]"}],"categories":["bundler"],"hasCommercial":false,"isAsyncAPIOwner":false}},{"title":"AsyncAPI Bundler","description":"Combine multiple AsyncAPI specification files into one.","links":{"repoUrl":"https://github.com/asyncapi/bundler"},"filters":{"language":[{"name":"TypeScript","color":"bg-[#7DBCFE]","borderColor":"border-[#2C78C7]"}],"technology":[{"name":"TypeScript","color":"bg-[#61d0f2]","borderColor":"border-[#40ccf7]"}],"categories":["bundler"],"hasCommercial":false,"isAsyncAPIOwner":true}}]},"IDE Extensions":{"description":"The following is a list of extensions for different IDEs like VSCode, IntelliJ IDEA and others","toolsList":[{"title":"asyncapi-preview","description":"VSCode extension that enables you to:\n - Preview documentation generated using you AsyncAPI document. It uses AsyncAPI React component under the hood,\n - Create AsyncAPI documents faster using SmartPaste functionality\n","links":{"repoUrl":"https://github.com/asyncapi/vs-asyncapi-preview"},"filters":{"technology":[{"name":"VSCode","color":"bg-[#61d0f2]","borderColor":"border-[#40ccf7]"},{"name":"SmartPaste","color":"bg-[#61d0f2]","borderColor":"border-[#40ccf7]"}],"categories":["ide-extension"],"hasCommercial":false,"isAsyncAPIOwner":true}},{"title":"asyncapi-preview","description":"VSCode extension that enables you to:\n - Preview documentation generated using you AsyncAPI document. It uses AsyncAPI React component under the hood,\n - Create AsyncAPI documents faster using SmartPaste functionality\n","links":{"repoUrl":"https://github.com/Savio629/testing2"},"filters":{"technology":[{"name":"VSCode","color":"bg-[#61d0f2]","borderColor":"border-[#40ccf7]"},{"name":"SmartPaste","color":"bg-[#61d0f2]","borderColor":"border-[#40ccf7]"}],"categories":["ide-extension"],"hasCommercial":false,"isAsyncAPIOwner":false}},{"title":"jAsyncAPI - IDEA plugin","description":"Idea plugin for the java-asyncapi - Helps to edit and validate AsyncAPI schemas.","links":{"websiteUrl":"https://plugins.jetbrains.com/plugin/15673-asyncapi","docsUrl":"https://github.com/asyncapi/jasyncapi-idea-plugin#usage","repoUrl":"https://github.com/asyncapi/jasyncapi-idea-plugin"},"filters":{"language":[{"name":"Kotlin","color":"bg-[#B1ACDF]","borderColor":"border-[#756BD9]"}],"technology":[{"name":"JetBrains","color":"bg-[#61d0f2]","borderColor":"border-[#40ccf7]"},{"name":"IntelliJ IDEA","color":"bg-[#61d0f2]","borderColor":"border-[#40ccf7]"}],"categories":["ide-extension"],"hasCommercial":false,"isAsyncAPIOwner":true}}]},"AsyncAPI Generator Templates":{"description":"The following is a list of templates compatible with AsyncAPI Generator. You can use them to generate apps, clients or documentation from your AsyncAPI documents.","toolsList":[{"title":"Node.js Multiprotocol Template","description":"This template generates a server using your AsyncAPI document. It supports multiple different protocols, like Kafka or MQTT. It is designed in the way that generated code is a library and with it's API you can start the server, send messages or register a middleware for listening incoming messages. Runtime message validation included.","links":{"repoUrl":"https://github.com/asyncapi/nodejs-template"},"filters":{"language":[{"name":"JavaScript","color":"bg-[#F2F1C7]","borderColor":"border-[#BFBE86]"}],"technology":[{"name":"Node.js","color":"bg-[#BDFF67]","borderColor":"border-[#84CE24]"}],"categories":["generator-template"],"hasCommercial":false,"isAsyncAPIOwner":true}}]},"Others":{"description":"The following is a list of tools that comes under Other category.","toolsList":[{"title":"AsyncAPI CLI","description":"One CLI to rule them all. \nThis is a CLI that aims to integrate all AsyncAPI tools that you need while AsyncAPI document development and maintainance. \nYou can use it to generate docs or code, validate AsyncAPI document and event create new documents.\n","links":{"websiteUrl":"https://www.asyncapi.com/tools/cli","repoUrl":"https://github.com/asyncapi/cli"},"filters":{"technology":[{"name":"TypeScript","color":"bg-[#61d0f2]","borderColor":"border-[#40ccf7]"}],"categories":["others","cli"],"hasCommercial":false,"isAsyncAPIOwner":true}}]}} \ No newline at end of file +{"APIs":{"description":"The following is a list of APIs that expose functionality related to AsyncAPI.","toolsList":[{"title":"API Tracker - AsyncAPI specs","description":"Explore APIs and companies with public AsyncAPI specifications.","links":{"websiteUrl":"https://apitracker.io/specifications/asyncapi","repoUrl":""},"filters":{"categories":["api","directory"],"hasCommercial":false,"isAsyncAPIOwner":false,"technology":[]}},{"title":"AsyncAPI Server API","description":"Server API providing official AsyncAPI tools","links":{"websiteUrl":"https://api.asyncapi.com/v1","docsUrl":"https://api.asyncapi.com/v1/docs","repoUrl":"https://github.com/asyncapi/server-api"},"filters":{"technology":[{"name":"Node.js","color":"bg-[#BDFF67]","borderColor":"border-[#84CE24]"},{"name":"TypeScript","color":"bg-[#61d0f2]","borderColor":"border-[#40ccf7]"}],"categories":["api"],"hasCommercial":false,"isAsyncAPIOwner":true}},{"title":"AsyncAPI-Directory by APIs.guru","description":"Directory of asynchronous API specifications in AsyncAPI format.","links":{"websiteUrl":"https://apis.guru/asyncapi-directory/","repoUrl":"https://github.com/APIs-guru/asyncapi-directory"},"filters":{"language":[{"name":"JavaScript","color":"bg-[#F2F1C7]","borderColor":"border-[#BFBE86]"}],"technology":[{"name":"Node.js","color":"bg-[#BDFF67]","borderColor":"border-[#84CE24]"},{"name":"Liquid","color":"bg-[#61d0f2]","borderColor":"border-[#40ccf7]"}],"categories":["api","directory"],"hasCommercial":false,"isAsyncAPIOwner":false}},{"title":"SIO-AsyncAPI","description":"This is code-first approach to generate AsyncAPI specification from Socket.IO server.","links":{"websiteUrl":"https://github.com/daler-rahimov/sio-asyncapi","docsUrl":"https://github.com/daler-rahimov/sio-asyncapi","repoUrl":"https://github.com/daler-rahimov/sio-asyncapi"},"filters":{"language":[{"name":"Python","color":"bg-[#A8D0EF]","borderColor":"border-[#3878AB]"}],"technology":[{"name":"Socket.IO","color":"bg-[#61d0f2]","borderColor":"border-[#40ccf7]"},{"name":"Flask","color":"bg-[#D7C7F2]","borderColor":"border-[#A387D2]"}],"categories":["code-first","api"],"hasCommercial":false,"isAsyncAPIOwner":false}}]},"Code-first tools":{"description":"The following is a list of tools that generate AsyncAPI documents from your code.","toolsList":[{"title":"AsyncAPI.Net","description":"The AsyncAPI.NET SDK contains a useful object model for AsyncAPI documents in .NET along with common serializers to extract raw OpenAPI JSON and YAML documents from the model.","links":{"websiteUrl":"https://github.com/LEGO/AsyncAPI.NET/","repoUrl":"https://github.com/LEGO/AsyncAPI.NET"},"filters":{"language":[{"name":"C#","color":"bg-[#E3AFE0]","borderColor":"border-[#9B4F96]"}],"technology":[{"name":".NET","color":"bg-[#A184FF]","borderColor":"border-[#5026D4]"},{"name":"ASP.NET","color":"bg-[#71C2FB]","borderColor":"border-[#1577BC]"}],"categories":["converters","code-first","validator"],"hasCommercial":false,"isAsyncAPIOwner":false}},{"title":"EventBridge Atlas","description":"Tool that translates your AWS EventBridge Schemas into an AsyncAPI document and a web UI.","links":{"websiteUrl":"https://eventbridge-atlas.netlify.app/","repoUrl":"https://github.com/boyney123/eventbridge-atlas"},"filters":{"technology":[{"name":"Node.js","color":"bg-[#BDFF67]","borderColor":"border-[#84CE24]"}],"categories":["code-first"],"hasCommercial":false,"isAsyncAPIOwner":false}},{"title":"Go AsyncAPI","description":"This library helps to create AsyncAPI spec from your Go message structures. It uses reflection to translate Go structures in JSON Schema definitions and arrange them in AsyncAPI schema.","links":{"repoUrl":"https://github.com/swaggest/go-asyncapi"},"filters":{"language":[{"name":"Go/Golang","color":"bg-[#8ECFDF]","borderColor":"border-[#00AFD9]"}],"categories":["code-first"],"hasCommercial":false,"isAsyncAPIOwner":false,"technology":[]}},{"title":"Java AsyncAPI","description":"This tool stores modules, which simplifies interacting with AsyncAPI in jvm ecosystem.","links":{"repoUrl":"https://github.com/asyncapi/jasyncapi"},"filters":{"language":[{"name":"Java","color":"bg-[#ECA2A4]","borderColor":"border-[#EC2125]"}],"technology":[{"name":"Kotlin","color":"bg-[#61d0f2]","borderColor":"border-[#40ccf7]"},{"name":"Maven","color":"bg-[#FF6B80]","borderColor":"border-[#CA1A33]"}],"categories":["code-first"],"hasCommercial":false,"isAsyncAPIOwner":true}},{"title":"KnstEventBus","description":"AsyncApi code-first tools for c#. Generates document and view.","links":{"repoUrl":"https://github.com/d0972058277/KnstEventBus"},"filters":{"language":[{"name":"C#","color":"bg-[#E3AFE0]","borderColor":"border-[#9B4F96]"}],"technology":[{"name":"ASP.NET","color":"bg-[#71C2FB]","borderColor":"border-[#1577BC]"},{"name":".NET","color":"bg-[#A184FF]","borderColor":"border-[#5026D4]"}],"categories":["code-first","documentation-generator"],"hasCommercial":false,"isAsyncAPIOwner":false}},{"title":"Kotlin AsyncAPI","description":"The Kotlin AsyncAPI project aims to provide convenience tools for generating and serving AsyncAPI documentation. The core of this project is a Kotlin DSL for building the specification in a typesafe way.","links":{"repoUrl":"https://github.com/OpenFolder/kotlin-asyncapi"},"filters":{"language":[{"name":"Kotlin","color":"bg-[#B1ACDF]","borderColor":"border-[#756BD9]"}],"technology":[{"name":"Springboot","color":"bg-[#98E279]","borderColor":"border-[#68BC44]"},{"name":"Maven","color":"bg-[#FF6B80]","borderColor":"border-[#CA1A33]"}],"categories":["code-first"],"hasCommercial":false,"isAsyncAPIOwner":false}},{"title":"nestjs-asyncapi","description":"Utilize decorators to generate AsyncAPI document utilizing DTOs (similar to @nestjs/swagger) and a web UI.","links":{"repoUrl":"https://github.com/flamewow/nestjs-asyncapi"},"filters":{"language":[{"name":"TypeScript","color":"bg-[#7DBCFE]","borderColor":"border-[#2C78C7]"}],"technology":[{"name":"Node.js","color":"bg-[#BDFF67]","borderColor":"border-[#84CE24]"},{"name":"Nest Js","color":"bg-[#E1224E]","borderColor":"border-[#B9012b]"}],"categories":["code-first"],"hasCommercial":false,"isAsyncAPIOwner":false}},{"title":"Neuroglia AsyncAPI","description":"A .NET SDK for the Async API specification. Automatically generates and serves AsyncAPI documents based on your code. Includes fluent-builders to create AsyncAPI documents from scratch, and provides a web-based GUI to browse generated documents.","links":{"repoUrl":"https://github.com/neuroglia-io/AsyncApi"},"filters":{"language":[{"name":"C#","color":"bg-[#E3AFE0]","borderColor":"border-[#9B4F96]"}],"technology":[{"name":".NET","color":"bg-[#A184FF]","borderColor":"border-[#5026D4]"}],"categories":["code-first"],"hasCommercial":false,"isAsyncAPIOwner":false}},{"title":"Saunter","description":"Saunter is an AsyncAPI documentation generator for dotnet. Generates (and hosts) an AsyncAPI schema document from your code.","links":{"repoUrl":"https://github.com/tehmantra/saunter"},"filters":{"language":[{"name":"C#","color":"bg-[#E3AFE0]","borderColor":"border-[#9B4F96]"}],"technology":[{"name":".NET","color":"bg-[#A184FF]","borderColor":"border-[#5026D4]"},{"name":"ASP.NET","color":"bg-[#71C2FB]","borderColor":"border-[#1577BC]"}],"categories":["code-first"],"hasCommercial":false,"isAsyncAPIOwner":false}},{"title":"SIO-AsyncAPI","description":"This is code-first approach to generate AsyncAPI specification from Socket.IO server.","links":{"websiteUrl":"https://github.com/daler-rahimov/sio-asyncapi","docsUrl":"https://github.com/daler-rahimov/sio-asyncapi","repoUrl":"https://github.com/daler-rahimov/sio-asyncapi"},"filters":{"language":[{"name":"Python","color":"bg-[#A8D0EF]","borderColor":"border-[#3878AB]"}],"technology":[{"name":"Socket.IO","color":"bg-[#61d0f2]","borderColor":"border-[#40ccf7]"},{"name":"Flask","color":"bg-[#D7C7F2]","borderColor":"border-[#A387D2]"}],"categories":["code-first","api"],"hasCommercial":false,"isAsyncAPIOwner":false}},{"title":"Springwolf","description":"Automated documentation for async APIs built with Spring Boot. Like Springfox for AsyncAPI. Auto-generates an AsyncAPI document and a web UI.","links":{"websiteUrl":"https://www.springwolf.dev","repoUrl":"https://github.com/springwolf/springwolf-core"},"filters":{"language":[{"name":"Java","color":"bg-[#ECA2A4]","borderColor":"border-[#EC2125]"}],"technology":[{"name":"Springboot","color":"bg-[#98E279]","borderColor":"border-[#68BC44]"},{"name":"Gradle","color":"bg-[#61d0f2]","borderColor":"border-[#40ccf7]"}],"categories":["code-first","documentation-generator"],"hasCommercial":false,"isAsyncAPIOwner":false}},{"title":"sttp tapir","description":"Library for describing HTTP endpoints, and then interpreting them as a server, client, or documentation","links":{"websiteUrl":"https://tapir.softwaremill.com/","repoUrl":"https://github.com/softwaremill/tapir"},"filters":{"language":[{"name":"Scala","color":"bg-[#FFA299]","borderColor":"border-[#DF301F]"}],"categories":["code-first"],"hasCommercial":false,"isAsyncAPIOwner":false,"technology":[]}}]},"Code Generators":{"description":"The following is a list of tools that generate code from an AsyncAPI document; not the other way around.","toolsList":[{"title":"AsyncAPI Generator","description":"Generator is a tool that you can use to generate whatever you want basing on the AsyncAPI specification file as an input.","links":{"docsUrl":"https://www.asyncapi.com/docs/tools/generator","repoUrl":"https://github.com/asyncapi/generator"},"filters":{"language":[{"name":"JavaScript","color":"bg-[#F2F1C7]","borderColor":"border-[#BFBE86]"}],"technology":[{"name":"Node.js","color":"bg-[#BDFF67]","borderColor":"border-[#84CE24]"}],"categories":["code-generator","documentation-generator"],"hasCommercial":false,"isAsyncAPIOwner":true}},{"title":"AsyncAPI Modelina","description":"Generate payload models into Java, TypeScript, Go, etc, you name it, from AsyncAPI documents. This tool gives you full control over the models through high customization","links":{"websiteUrl":"https://modelina.org","docsUrl":"https://github.com/asyncapi/modelina/tree/master/docs","repoUrl":"https://github.com/asyncapi/modelina"},"filters":{"language":[{"name":"TypeScript","color":"bg-[#7DBCFE]","borderColor":"border-[#2C78C7]"}],"technology":[{"name":"React JS","color":"bg-[#9FECFA]","borderColor":"border-[#08D8FE]"},{"name":"Docker","color":"bg-[#B8E0FF]","borderColor":"border-[#2596ED]"}],"categories":["code-generator"],"hasCommercial":false,"isAsyncAPIOwner":true}},{"title":"Golang AsyncAPI Code Generator","description":"Generate Go user and application boilerplate from AsyncAPI specifications. Can be called from `go generate` without requirements.\n","links":{"repoUrl":"https://github.com/lerenn/asyncapi-codegen"},"filters":{"language":[{"name":"Go/Golang","color":"bg-[#8ECFDF]","borderColor":"border-[#00AFD9]"}],"categories":["code-generator"],"hasCommercial":false,"isAsyncAPIOwner":false,"technology":[]}},{"title":"MultiAPI Generator","description":"This is a plugin designed to help developers automatizing the creation of code classes from YML files based on AsyncApi and OpenAPI. It is presented in 2 flavours Maven and Gradle","links":{"repoUrl":"https://github.com/sngular/scs-multiapi-plugin"},"filters":{"language":[{"name":"Java","color":"bg-[#ECA2A4]","borderColor":"border-[#EC2125]"}],"technology":[{"name":"Groovy","color":"bg-[#61d0f2]","borderColor":"border-[#40ccf7]"},{"name":"Maven","color":"bg-[#FF6B80]","borderColor":"border-[#CA1A33]"}],"categories":["code-generator"],"hasCommercial":false,"isAsyncAPIOwner":false}},{"title":"Node-RED AsyncAPI plugin","description":"A plugin for generating and configuring nodes for Kafka, MQTT, AMQP, etc. automatically from an AsyncAPI specification.","links":{"repoUrl":"https://github.com/dalelane/node-red-contrib-plugin-asyncapi"},"filters":{"technology":[{"name":"Node-RED","color":"bg-[#FF7474]","borderColor":"border-[#8F0101]"}],"categories":["code-generator"],"hasCommercial":false,"isAsyncAPIOwner":false}},{"title":"ZenWave SDK","description":"DDD and API-First for Event-Driven Microservices","links":{"websiteUrl":"https://zenwave360.github.io/","docsUrl":"https://zenwave360.github.io/zenwave-sdk/plugins/asyncapi-spring-cloud-streams3/","repoUrl":"https://github.com/zenwave360/zenwave-sdk"},"filters":{"language":[{"name":"Java","color":"bg-[#ECA2A4]","borderColor":"border-[#EC2125]"}],"technology":[{"name":"Maven","color":"bg-[#FF6B80]","borderColor":"border-[#CA1A33]"},{"name":"Liquid","color":"bg-[#61d0f2]","borderColor":"border-[#40ccf7]"},{"name":"Spring Cloud Streams","color":"bg-[#61d0f2]","borderColor":"border-[#40ccf7]"},{"name":"JHipster JDL","color":"bg-[#61d0f2]","borderColor":"border-[#40ccf7]"}],"categories":["code-generator","dsl","mocking-and-testing","cli"],"hasCommercial":false,"isAsyncAPIOwner":false}}]},"Converters":{"description":"The following is a list of tools that do not yet belong to any specific category but are also useful for the community.","toolsList":[{"title":"AsyncAPI-format","description":"Format an AsyncAPI document by ordering, casing, formatting, and filtering fields.","links":{"repoUrl":"https://github.com/thim81/asyncapi-format"},"filters":{"language":[{"name":"JavaScript","color":"bg-[#F2F1C7]","borderColor":"border-[#BFBE86]"}],"technology":[{"name":"Node.js","color":"bg-[#BDFF67]","borderColor":"border-[#84CE24]"}],"categories":["converter","cli"],"hasCommercial":false,"isAsyncAPIOwner":false}},{"title":"AsyncAPI.Net","description":"The AsyncAPI.NET SDK contains a useful object model for AsyncAPI documents in .NET along with common serializers to extract raw OpenAPI JSON and YAML documents from the model.","links":{"websiteUrl":"https://github.com/LEGO/AsyncAPI.NET/","repoUrl":"https://github.com/LEGO/AsyncAPI.NET"},"filters":{"language":[{"name":"C#","color":"bg-[#E3AFE0]","borderColor":"border-[#9B4F96]"}],"technology":[{"name":".NET","color":"bg-[#A184FF]","borderColor":"border-[#5026D4]"},{"name":"ASP.NET","color":"bg-[#71C2FB]","borderColor":"border-[#1577BC]"}],"categories":["converters","code-first","validator"],"hasCommercial":false,"isAsyncAPIOwner":false}},{"title":"Converter","description":"Converts old versions of AsyncAPI files into the latest version.","links":{"repoUrl":"https://github.com/asyncapi/converter-js"},"filters":{"language":[{"name":"TypeScript","color":"bg-[#7DBCFE]","borderColor":"border-[#2C78C7]"}],"technology":[{"name":"Node.js","color":"bg-[#BDFF67]","borderColor":"border-[#84CE24]"}],"categories":["converter"],"hasCommercial":false,"isAsyncAPIOwner":true}},{"title":"Converter-Go","description":"The AsyncAPI Converter converts AsyncAPI documents from versions 1.0.0, 1.1.0 and 1.2.0 to version 2.0.0. It supports both json and yaml formats on input and output. By default, the AsyncAPI Converter converts a document into the json format.","links":{"repoUrl":"https://github.com/asyncapi/converter-go"},"filters":{"language":[{"name":"Go/Golang","color":"bg-[#8ECFDF]","borderColor":"border-[#00AFD9]"}],"categories":["converter"],"hasCommercial":false,"isAsyncAPIOwner":true,"technology":[]}}]},"Directories":{"description":"The following is a list of directories that index public AsyncAPI documents.","toolsList":[{"title":"API Tracker - AsyncAPI specs","description":"Explore APIs and companies with public AsyncAPI specifications.","links":{"websiteUrl":"https://apitracker.io/specifications/asyncapi","repoUrl":""},"filters":{"categories":["api","directory"],"hasCommercial":false,"isAsyncAPIOwner":false,"technology":[]}},{"title":"AsyncAPI-Directory by APIs.guru","description":"Directory of asynchronous API specifications in AsyncAPI format.","links":{"websiteUrl":"https://apis.guru/asyncapi-directory/","repoUrl":"https://github.com/APIs-guru/asyncapi-directory"},"filters":{"language":[{"name":"JavaScript","color":"bg-[#F2F1C7]","borderColor":"border-[#BFBE86]"}],"technology":[{"name":"Node.js","color":"bg-[#BDFF67]","borderColor":"border-[#84CE24]"},{"name":"Liquid","color":"bg-[#61d0f2]","borderColor":"border-[#40ccf7]"}],"categories":["api","directory"],"hasCommercial":false,"isAsyncAPIOwner":false}}]},"Documentation Generators":{"description":"The following is a list of tools that generate human-readable documentation from an AsyncAPI document.","toolsList":[{"title":"AsyncAPI Generator","description":"Generator is a tool that you can use to generate whatever you want basing on the AsyncAPI specification file as an input.","links":{"docsUrl":"https://www.asyncapi.com/docs/tools/generator","repoUrl":"https://github.com/asyncapi/generator"},"filters":{"language":[{"name":"JavaScript","color":"bg-[#F2F1C7]","borderColor":"border-[#BFBE86]"}],"technology":[{"name":"Node.js","color":"bg-[#BDFF67]","borderColor":"border-[#84CE24]"},{"name":"Markdown","color":"bg-[#61d0f2]","borderColor":"border-[#40ccf7]"}],"categories":["code-generator","documentation-generator"],"hasCommercial":false,"isAsyncAPIOwner":true}},{"title":"asyncapi-asciidoc-template","description":"Asciidoc template for the asyncapi generator","links":{"repoUrl":"https://gitlab.com/djencks/asyncapi-asciidoc-template"},"filters":{"language":[{"name":"JavaScript","color":"bg-[#F2F1C7]","borderColor":"border-[#BFBE86]"}],"technology":[{"name":"React JS","color":"bg-[#9FECFA]","borderColor":"border-[#08D8FE]"}],"categories":["documentation-generator","generator-template"],"hasCommercial":false,"isAsyncAPIOwner":false}},{"title":"Bump.sh","description":"OpenAPI 2 & 3 / AsyncAPI 2 documentation generator, with automatic changelog and visual diff.","links":{"websiteUrl":"https://bump.sh/","repoUrl":""},"filters":{"categories":["documentation-generator"],"hasCommercial":true,"isAsyncAPIOwner":false,"technology":[]}},{"title":"Cupid","description":"A library that focuses on finding and analyzing the relationships between AsyncAPI documents. It outputs a map of the system architecture.","links":{"repoUrl":"https://github.com/asyncapi/cupid"},"filters":{"language":[{"name":"JavaScript","color":"bg-[#F2F1C7]","borderColor":"border-[#BFBE86]"}],"technology":[{"name":"Node.js","color":"bg-[#BDFF67]","borderColor":"border-[#84CE24]"}],"categories":["documentation-generator"],"hasCommercial":false,"isAsyncAPIOwner":true}},{"title":"KnstEventBus","description":"AsyncApi code-first tools for c#. Generates document and view.","links":{"repoUrl":"https://github.com/d0972058277/KnstEventBus"},"filters":{"language":[{"name":"C#","color":"bg-[#E3AFE0]","borderColor":"border-[#9B4F96]"}],"technology":[{"name":"ASP.NET","color":"bg-[#71C2FB]","borderColor":"border-[#1577BC]"},{"name":".NET","color":"bg-[#A184FF]","borderColor":"border-[#5026D4]"}],"categories":["code-first","documentation-generator"],"hasCommercial":false,"isAsyncAPIOwner":false}},{"title":"Springwolf","description":"Automated documentation for async APIs built with Spring Boot. Like Springfox for AsyncAPI. Auto-generates an AsyncAPI document and a web UI.","links":{"websiteUrl":"https://www.springwolf.dev","repoUrl":"https://github.com/springwolf/springwolf-core"},"filters":{"language":[{"name":"Java","color":"bg-[#ECA2A4]","borderColor":"border-[#EC2125]"}],"technology":[{"name":"Springboot","color":"bg-[#98E279]","borderColor":"border-[#68BC44]"},{"name":"Gradle","color":"bg-[#61d0f2]","borderColor":"border-[#40ccf7]"}],"categories":["code-first","documentation-generator"],"hasCommercial":false,"isAsyncAPIOwner":false}},{"title":"Widdershins","description":"OpenAPI 3.0 / Swagger 2.0 / AsyncAPI 1.0 definition to Slate / Shins compatible markdown.","links":{"websiteUrl":"https://mermade.github.io/reslate/","repoUrl":"https://github.com/Mermade/widdershins"},"filters":{"language":[{"name":"JavaScript","color":"bg-[#F2F1C7]","borderColor":"border-[#BFBE86]"}],"technology":[{"name":"Node.js","color":"bg-[#BDFF67]","borderColor":"border-[#84CE24]"},{"name":"Shell","color":"bg-[#61d0f2]","borderColor":"border-[#40ccf7]"}],"categories":["documentation-generator"],"hasCommercial":false,"isAsyncAPIOwner":false}}]},"Editors":{"description":"The following is a list of editors or related tools that allow editing of AsyncAPI document.","toolsList":[{"title":"AsyncAPI Studio","description":"Visually design your AsyncAPI files and event-driven architecture.","links":{"websiteUrl":"https://studio.asyncapi.com","repoUrl":"https://github.com/asyncapi/studio"},"filters":{"technology":[{"name":"React JS","color":"bg-[#9FECFA]","borderColor":"border-[#08D8FE]"},{"name":"TypeScript","color":"bg-[#61d0f2]","borderColor":"border-[#40ccf7]"}],"categories":["editor"],"hasCommercial":false,"isAsyncAPIOwner":true}}]},"UI components":{"description":"The following is a list of UI components to view AsyncAPI documents.","toolsList":[{"title":"Api-Diff-Viewer","description":"React component to view the difference between two Json based API documents. Supported specifications: JsonSchema, OpenAPI 3.x, AsyncAPI 2.x.","links":{"repoUrl":"https://github.com/udamir/api-diff-viewer","websiteUrl":"https://api-diff-viewer.vercel.app/"},"filters":{"language":[{"name":"TypeScript","color":"bg-[#7DBCFE]","borderColor":"border-[#2C78C7]"}],"technology":[{"name":"React JS","color":"bg-[#9FECFA]","borderColor":"border-[#08D8FE]"},{"name":"Babel","color":"bg-[#61d0f2]","borderColor":"border-[#40ccf7]"},{"name":"Storybook","color":"bg-[#61d0f2]","borderColor":"border-[#40ccf7]"}],"categories":["ui-component"],"hasCommercial":false,"isAsyncAPIOwner":false}},{"title":"AsyncAPI React component","description":"React component for rendering documentation from your specification in real-time in the browser. It also provides a WebComponent and bundle for Angular and Vue","links":{"repoUrl":"https://github.com/asyncapi/asyncapi-react"},"filters":{"language":[{"name":"TypeScript","color":"bg-[#7DBCFE]","borderColor":"border-[#2C78C7]"}],"technology":[{"name":"React JS","color":"bg-[#9FECFA]","borderColor":"border-[#08D8FE]"},{"name":"WebComponents","color":"bg-[#61d0f2]","borderColor":"border-[#40ccf7]"}],"categories":["ui-component"],"hasCommercial":false,"isAsyncAPIOwner":true}}]},"DSL":{"description":"Writing YAML by hand is no fun, and maybe you don't want a GUI, so use a Domain Specific Language to write AsyncAPI in your language of choice.","toolsList":[{"title":"BOATS","description":"Compile your single AsyncAPI file from multiple YAML files with BOATS and with the help of the template engine Nunjucks, plus a many extra helpers to automate much of the donkey work.","links":{"repoUrl":"https://github.com/j-d-carmichael/boats"},"filters":{"language":[{"name":"TypeScript","color":"bg-[#7DBCFE]","borderColor":"border-[#2C78C7]"}],"technology":[{"name":"Node.js","color":"bg-[#BDFF67]","borderColor":"border-[#84CE24]"}],"categories":["dsl"],"hasCommercial":false,"isAsyncAPIOwner":false}},{"title":"ZenWave SDK","description":"DDD and API-First for Event-Driven Microservices","links":{"websiteUrl":"https://zenwave360.github.io/","docsUrl":"https://zenwave360.github.io/zenwave-sdk/plugins/asyncapi-spring-cloud-streams3/","repoUrl":"https://github.com/zenwave360/zenwave-sdk"},"filters":{"language":[{"name":"Java","color":"bg-[#ECA2A4]","borderColor":"border-[#EC2125]"}],"technology":[{"name":"Maven","color":"bg-[#FF6B80]","borderColor":"border-[#CA1A33]"},{"name":"Liquid","color":"bg-[#61d0f2]","borderColor":"border-[#40ccf7]"},{"name":"Spring Cloud Streams","color":"bg-[#61d0f2]","borderColor":"border-[#40ccf7]"},{"name":"JHipster JDL","color":"bg-[#61d0f2]","borderColor":"border-[#40ccf7]"}],"categories":["code-generator","dsl","mocking-and-testing","cli"],"hasCommercial":false,"isAsyncAPIOwner":false}}]},"Frameworks":{"description":"The following is a list of API/application frameworks that make use of AsyncAPI.","toolsList":[{"title":"Asynction","description":"SocketIO server framework driven by the AsyncAPI specification. Asynction guarantees that your API will work in accordance with its AsyncAPI documentation. Built on top of Flask-SocketIO.","links":{"websiteUrl":"https://pypi.org/project/asynction/","repoUrl":"https://github.com/dedoussis/asynction"},"filters":{"language":[{"name":"Python","color":"bg-[#A8D0EF]","borderColor":"border-[#3878AB]"}],"technology":[{"name":"Flask","color":"bg-[#D7C7F2]","borderColor":"border-[#A387D2]"}],"categories":["framework"],"hasCommercial":false,"isAsyncAPIOwner":false}}]},"GitHub Actions":{"description":"The following is a list of GitHub Actions that you can use in your workflows","toolsList":[{"title":"API documentation generation on Bump.sh","description":"With this GitHub Action you can automatically generate your API reference (with the changelog and diff) on Bump.sh from any AsyncAPI file.","links":{"websiteUrl":"https://github.com/marketplace/actions/api-documentation-on-bump","repoUrl":"https://github.com/bump-sh/github-action"},"filters":{"language":[{"name":"TypeScript","color":"bg-[#7DBCFE]","borderColor":"border-[#2C78C7]"}],"categories":["github-action"],"hasCommercial":false,"isAsyncAPIOwner":false,"technology":[]}},{"title":"AsyncAPI GitHub Action","description":"This action validates if the AsyncAPI schema file is valid or not.","links":{"websiteUrl":"https://github.com/marketplace/actions/asyncapi-github-action","repoUrl":"https://github.com/WaleedAshraf/asyncapi-github-action"},"filters":{"language":[{"name":"JavaScript","color":"bg-[#F2F1C7]","borderColor":"border-[#BFBE86]"}],"technology":[{"name":"Node.js","color":"bg-[#BDFF67]","borderColor":"border-[#84CE24]"}],"categories":["github-action","validator"],"hasCommercial":false,"isAsyncAPIOwner":false}},{"title":"Automated version bump for AsyncAPI documents","description":"With this GitHub Action, you can automatically bump the version based on commit messages, which is similar to what semantic-release is for NPM.","links":{"websiteUrl":"https://github.com/marketplace/actions/automated-version-bump-for-asyncapi","repoUrl":"https://github.com/bump-sh/github-action"},"filters":{"language":[{"name":"JavaScript","color":"bg-[#F2F1C7]","borderColor":"border-[#BFBE86]"}],"technology":[{"name":"Node.js","color":"bg-[#BDFF67]","borderColor":"border-[#84CE24]"}],"categories":["github-action"],"hasCommercial":false,"isAsyncAPIOwner":false}},{"title":"GitHub Action for Generator","description":"GitHub Action to generate all the things from your AsyncAPI document using the AsyncAPI generator","links":{"repoUrl":"https://github.com/asyncapi/github-action-for-generator"},"filters":{"technology":[{"name":"AsyncAPI Generator","color":"bg-[#61d0f2]","borderColor":"border-[#40ccf7]"}],"categories":["github-action"],"hasCommercial":false,"isAsyncAPIOwner":true}},{"title":"GitHub Action for Generator","description":null,"links":{"repoUrl":"https://github.com/actions-marketplace-validations/asyncapi_github-action-for-generator"},"filters":{"technology":[{"name":"AsyncAPI Generator","color":"bg-[#61d0f2]","borderColor":"border-[#40ccf7]"}],"categories":["github-action"],"hasCommercial":false,"isAsyncAPIOwner":false}}]},"Mocking and Testing":{"description":"The tools below take specification documents as input, then publish fake messages to broker destinations for simulation purposes. They may also check that publisher messages are compliant with schemas.","toolsList":[{"title":"Microcks","description":"Mocking and testing platform for API and microservices. Turn your AsyncAPI, OpenAPI contract examples, or Postman collections into ready-to-use mocks. Use examples to simulate and validate received messages according to schema elements.","links":{"websiteUrl":"https://microcks.io/","repoUrl":"https://github.com/microcks/microcks"},"filters":{"language":[{"name":"Java","color":"bg-[#ECA2A4]","borderColor":"border-[#EC2125]"}],"technology":[{"name":"TypeScript","color":"bg-[#61d0f2]","borderColor":"border-[#40ccf7]"},{"name":"Kubernetes-native","color":"bg-[#D7C7F2]","borderColor":"border-[#A387D2]"},{"name":"Saas","color":"bg-[#6AB8EC]","borderColor":"border-[#2275AD]"}],"categories":["mocking-and-testing"],"hasCommercial":false,"isAsyncAPIOwner":false}},{"title":"MultiAPI Converter","description":"Use AsyncAPI definition, to generate Spring Cloud Contract producer validation or consumer stubs, using maven.","links":{"repoUrl":"https://github.com/sngular/scc-multiapi-converter"},"filters":{"language":[{"name":"Java","color":"bg-[#ECA2A4]","borderColor":"border-[#EC2125]"}],"technology":[{"name":"Springboot","color":"bg-[#98E279]","borderColor":"border-[#68BC44]"}],"categories":["mocking-and-testing"],"hasCommercial":false,"isAsyncAPIOwner":false}},{"title":"Specmatic","description":"An API contract testing tool that helps ensure the correctness APIs by automatically generating test cases and verifying them against the API spec. It simplifies the process of testing APIs and reduces the likelihood of bugs and compatibility issues.","links":{"websiteUrl":"https://specmatic.in","docsUrl":"https://specmatic.in/documentation/","repoUrl":"https://github.com/znsio/specmatic"},"filters":{"language":[{"name":"Kotlin","color":"bg-[#B1ACDF]","borderColor":"border-[#756BD9]"}],"technology":[{"name":"Maven","color":"bg-[#FF6B80]","borderColor":"border-[#CA1A33]"}],"categories":["mocking-and-testing"],"hasCommercial":false,"isAsyncAPIOwner":false}},{"title":"Virtualan","description":"Mocking and testing platform for API and microservices. Allows you to create and setup mocks for OpenAPI and AsyncAPI contracts. Shows how to setup and create AsyncAPI GitHub Reference Examples and OpenAPI GitHub Reference Examples.","links":{"websiteUrl":"https://www.virtualan.io/index.html","repoUrl":"https://github.com/virtualansoftware"},"filters":{"technology":[{"name":"Kubernetes-native","color":"bg-[#D7C7F2]","borderColor":"border-[#A387D2]"}],"categories":["mocking-and-testing"],"hasCommercial":false,"isAsyncAPIOwner":false}},{"title":"ZenWave SDK","description":"DDD and API-First for Event-Driven Microservices","links":{"websiteUrl":"https://zenwave360.github.io/","docsUrl":"https://zenwave360.github.io/zenwave-sdk/plugins/asyncapi-spring-cloud-streams3/","repoUrl":"https://github.com/zenwave360/zenwave-sdk"},"filters":{"language":[{"name":"Java","color":"bg-[#ECA2A4]","borderColor":"border-[#EC2125]"}],"technology":[{"name":"Maven","color":"bg-[#FF6B80]","borderColor":"border-[#CA1A33]"},{"name":"Liquid","color":"bg-[#61d0f2]","borderColor":"border-[#40ccf7]"},{"name":"Spring Cloud Streams","color":"bg-[#61d0f2]","borderColor":"border-[#40ccf7]"},{"name":"JHipster JDL","color":"bg-[#61d0f2]","borderColor":"border-[#40ccf7]"}],"categories":["code-generator","dsl","mocking-and-testing","cli"],"hasCommercial":false,"isAsyncAPIOwner":false}}]},"Validators":{"description":"The following is a list of tools that validate AsyncAPI documents.","toolsList":[{"title":"AMF","description":"AMF (AML Modeling Framework) is an open-source library capable of parsing and validating AML metadata documents.","links":{"docsUrl":"https://a.ml/docs/","repoUrl":"https://github.com/aml-org/amf"},"filters":{"language":[{"name":"Scala","color":"bg-[#FFA299]","borderColor":"border-[#DF301F]"}],"categories":["validator"],"hasCommercial":false,"isAsyncAPIOwner":false,"technology":[]}},{"title":"AsyncAPI GitHub Action","description":"This action validates if the AsyncAPI schema file is valid or not.","links":{"websiteUrl":"https://github.com/marketplace/actions/asyncapi-github-action","repoUrl":"https://github.com/WaleedAshraf/asyncapi-github-action"},"filters":{"language":[{"name":"JavaScript","color":"bg-[#F2F1C7]","borderColor":"border-[#BFBE86]"}],"technology":[{"name":"Node.js","color":"bg-[#BDFF67]","borderColor":"border-[#84CE24]"}],"categories":["github-action","validator"],"hasCommercial":false,"isAsyncAPIOwner":false}},{"title":"AsyncAPI Parser","description":"Use this package to parse and validate AsyncAPI documents —either YAML or JSON— in your Node.js or browser application. Updated bundle for the browser is always attached to the GitHub Release.","links":{"repoUrl":"https://github.com/asyncapi/parser-js"},"filters":{"language":[{"name":"JavaScript","color":"bg-[#F2F1C7]","borderColor":"border-[#BFBE86]"}],"technology":[{"name":"Node.js","color":"bg-[#BDFF67]","borderColor":"border-[#84CE24]"}],"categories":["validator"],"hasCommercial":false,"isAsyncAPIOwner":true}},{"title":"AsyncAPI Parser","description":"The AsyncAPI Parser validates AsyncAPI documents according to dedicated schemas.","links":{"repoUrl":"https://github.com/asyncapi/parser-go"},"filters":{"language":[{"name":"Go/Golang","color":"bg-[#8ECFDF]","borderColor":"border-[#00AFD9]"}],"categories":["validator"],"hasCommercial":false,"isAsyncAPIOwner":true,"technology":[]}},{"title":"AsyncAPI Parser Wrapper","description":"Use this library to parse and validate AsyncAPI documents — either YAML or JSON — in your Java application. It is a Java wrapper over JavaScript Parser implemented using J2V8.","links":{"repoUrl":"https://github.com/AsyncAPITools/parser-java-wrapper"},"filters":{"language":[{"name":"Java","color":"bg-[#ECA2A4]","borderColor":"border-[#EC2125]"}],"categories":["validator"],"hasCommercial":false,"isAsyncAPIOwner":false,"technology":[]}},{"title":"asyncapi-validator","description":"It allows you to validate the schema of your messages against your AsyncAPI schema definition. You can use it with Kafka, RabbitMQ or any other messaging/queue.","links":{"repoUrl":"https://github.com/WaleedAshraf/asyncapi-validator"},"filters":{"language":[{"name":"JavaScript","color":"bg-[#F2F1C7]","borderColor":"border-[#BFBE86]"}],"technology":[{"name":"Node.js","color":"bg-[#BDFF67]","borderColor":"border-[#84CE24]"}],"categories":["validator"],"hasCommercial":false,"isAsyncAPIOwner":false}},{"title":"AsyncAPI.Net","description":"The AsyncAPI.NET SDK contains a useful object model for AsyncAPI documents in .NET along with common serializers to extract raw OpenAPI JSON and YAML documents from the model.","links":{"websiteUrl":"https://github.com/LEGO/AsyncAPI.NET/","repoUrl":"https://github.com/LEGO/AsyncAPI.NET"},"filters":{"language":[{"name":"C#","color":"bg-[#E3AFE0]","borderColor":"border-[#9B4F96]"}],"technology":[{"name":".NET","color":"bg-[#A184FF]","borderColor":"border-[#5026D4]"},{"name":"ASP.NET","color":"bg-[#71C2FB]","borderColor":"border-[#1577BC]"}],"categories":["converters","code-first","validator"],"hasCommercial":false,"isAsyncAPIOwner":false}},{"title":"Spectral","description":"A flexible JSON/YAML linter for creating automated style guides, with baked in support for OpenAPI v3.1, v3.0, and v2.0 as well as AsyncAPI v2.x.","links":{"repoUrl":"https://github.com/stoplightio/spectral"},"filters":{"language":[{"name":"TypeScript","color":"bg-[#7DBCFE]","borderColor":"border-[#2C78C7]"}],"technology":[{"name":"Node.js","color":"bg-[#BDFF67]","borderColor":"border-[#84CE24]"}],"categories":["validator"],"hasCommercial":false,"isAsyncAPIOwner":false}}]},"Compare tools":{"description":"The following is a list of tools that compare AsyncAPI documents.","toolsList":[{"title":"Api-Smart-Diff","description":"It allows you to compare two API documents and classify changes. Supported API specifications: OpenAPI, AsyncAPI, JsonSchema.","links":{"repoUrl":"https://github.com/udamir/api-smart-diff"},"filters":{"language":[{"name":"TypeScript","color":"bg-[#7DBCFE]","borderColor":"border-[#2C78C7]"}],"categories":["compare-tool"],"hasCommercial":false,"isAsyncAPIOwner":false,"technology":[]}},{"title":"AsyncAPI Diff","description":"Diff is a library that compares two AsyncAPI Documents and provides information about the differences by pointing out explicitly information like breaking changes.","links":{"repoUrl":"https://github.com/asyncapi/diff"},"filters":{"language":[{"name":"TypeScript","color":"bg-[#7DBCFE]","borderColor":"border-[#2C78C7]"}],"technology":[{"name":"TypeScript","color":"bg-[#61d0f2]","borderColor":"border-[#40ccf7]"}],"categories":["compare-tool"],"hasCommercial":false,"isAsyncAPIOwner":true}},{"title":"jasyncapicmp","description":"Tool for comparing two AsyncAPI versions and evaluating compatibility.","links":{"websiteUrl":"https://siom79.github.io/jasyncapicmp/","docsUrl":"https://github.com/siom79/jasyncapicmp","repoUrl":"https://github.com/siom79/jasyncapicmp"},"filters":{"language":[{"name":"Java","color":"bg-[#ECA2A4]","borderColor":"border-[#EC2125]"}],"technology":[{"name":"Maven","color":"bg-[#FF6B80]","borderColor":"border-[#CA1A33]"}],"categories":["compare-tool"],"hasCommercial":false,"isAsyncAPIOwner":false}},{"title":"jasyncapicmp","description":"Tool/library/maven-plugin for comparing two AsyncAPI versions and evaluating compatibility.","links":{"websiteUrl":"https://siom79.github.io/jasyncapicmp/","repoUrl":"https://github.com/siom79/jasyncapicmp"},"filters":{"language":[{"name":"Java","color":"bg-[#ECA2A4]","borderColor":"border-[#EC2125]"}],"technology":[{"name":"Maven","color":"bg-[#FF6B80]","borderColor":"border-[#CA1A33]"}],"categories":["compare-tool"],"hasCommercial":false,"isAsyncAPIOwner":false}}]},"CLIs":{"description":"The following is a list of tools that you can work with in terminal or do some CI/CD automation.","toolsList":[{"title":"AsyncAPI CLI","description":"One CLI to rule them all. \nThis is a CLI that aims to integrate all AsyncAPI tools that you need while AsyncAPI document development and maintainance. \nYou can use it to generate docs or code, validate AsyncAPI document and event create new documents.\n","links":{"websiteUrl":"https://www.asyncapi.com/tools/cli","repoUrl":"https://github.com/asyncapi/cli"},"filters":{"technology":[{"name":"TypeScript","color":"bg-[#61d0f2]","borderColor":"border-[#40ccf7]"}],"categories":["others","cli"],"hasCommercial":false,"isAsyncAPIOwner":true}},{"title":"AsyncAPI-format","description":"Format an AsyncAPI document by ordering, casing, formatting, and filtering fields.","links":{"repoUrl":"https://github.com/asyncapi/converter-go"},"filters":{"language":[{"name":"JavaScript","color":"bg-[#F2F1C7]","borderColor":"border-[#BFBE86]"}],"technology":[{"name":"Node.js","color":"bg-[#BDFF67]","borderColor":"border-[#84CE24]"}],"categories":["converter","cli"],"hasCommercial":false,"isAsyncAPIOwner":true}},{"title":"ZenWave SDK","description":"DDD and API-First for Event-Driven Microservices","links":{"websiteUrl":"https://zenwave360.github.io/","docsUrl":"https://zenwave360.github.io/zenwave-sdk/plugins/asyncapi-spring-cloud-streams3/","repoUrl":"https://github.com/zenwave360/zenwave-sdk"},"filters":{"language":[{"name":"Java","color":"bg-[#ECA2A4]","borderColor":"border-[#EC2125]"}],"technology":[{"name":"Maven","color":"bg-[#FF6B80]","borderColor":"border-[#CA1A33]"},{"name":"Liquid","color":"bg-[#61d0f2]","borderColor":"border-[#40ccf7]"},{"name":"Spring Cloud Streams","color":"bg-[#61d0f2]","borderColor":"border-[#40ccf7]"},{"name":"JHipster JDL","color":"bg-[#61d0f2]","borderColor":"border-[#40ccf7]"}],"categories":["code-generator","dsl","mocking-and-testing","cli"],"hasCommercial":false,"isAsyncAPIOwner":false}}]},"Bundlers":{"description":"The following is a list of tools that you can work with to bundle AsyncAPI documents.","toolsList":[{"title":"Api-ref-bundler","description":"It allows you bundle/dereference external/internal $refs in Json based API document. Supported specifications: OpenAPI, AsyncAPI, JsonSchema.","links":{"repoUrl":"https://github.com/udamir/api-ref-bundler"},"filters":{"language":[{"name":"TypeScript","color":"bg-[#7DBCFE]","borderColor":"border-[#2C78C7]"}],"technology":[{"name":"TypeScript","color":"bg-[#61d0f2]","borderColor":"border-[#40ccf7]"}],"categories":["bundler"],"hasCommercial":false,"isAsyncAPIOwner":false}},{"title":"AsyncAPI Bundler","description":"Combine multiple AsyncAPI specification files into one.","links":{"repoUrl":"https://github.com/asyncapi/bundler"},"filters":{"language":[{"name":"TypeScript","color":"bg-[#7DBCFE]","borderColor":"border-[#2C78C7]"}],"technology":[{"name":"TypeScript","color":"bg-[#61d0f2]","borderColor":"border-[#40ccf7]"}],"categories":["bundler"],"hasCommercial":false,"isAsyncAPIOwner":true}}]},"IDE Extensions":{"description":"The following is a list of extensions for different IDEs like VSCode, IntelliJ IDEA and others","toolsList":[{"title":"asyncapi-preview","description":"VSCode extension that enables you to:\n - Preview documentation generated using you AsyncAPI document. It uses AsyncAPI React component under the hood,\n - Create AsyncAPI documents faster using SmartPaste functionality\n","links":{"repoUrl":"https://github.com/asyncapi/vs-asyncapi-preview"},"filters":{"technology":[{"name":"VSCode","color":"bg-[#61d0f2]","borderColor":"border-[#40ccf7]"},{"name":"SmartPaste","color":"bg-[#61d0f2]","borderColor":"border-[#40ccf7]"}],"categories":["ide-extension"],"hasCommercial":false,"isAsyncAPIOwner":true}},{"title":"asyncapi-preview","description":"VSCode extension that enables you to:\n - Preview documentation generated using you AsyncAPI document. It uses AsyncAPI React component under the hood,\n - Create AsyncAPI documents faster using SmartPaste functionality\n","links":{"repoUrl":"https://github.com/Savio629/testing2"},"filters":{"technology":[{"name":"VSCode","color":"bg-[#61d0f2]","borderColor":"border-[#40ccf7]"},{"name":"SmartPaste","color":"bg-[#61d0f2]","borderColor":"border-[#40ccf7]"}],"categories":["ide-extension"],"hasCommercial":false,"isAsyncAPIOwner":false}},{"title":"jAsyncAPI - IDEA plugin","description":"Idea plugin for the java-asyncapi - Helps to edit and validate AsyncAPI schemas.","links":{"websiteUrl":"https://plugins.jetbrains.com/plugin/15673-asyncapi","docsUrl":"https://github.com/asyncapi/jasyncapi-idea-plugin#usage","repoUrl":"https://github.com/asyncapi/jasyncapi-idea-plugin"},"filters":{"language":[{"name":"Kotlin","color":"bg-[#B1ACDF]","borderColor":"border-[#756BD9]"}],"technology":[{"name":"JetBrains","color":"bg-[#61d0f2]","borderColor":"border-[#40ccf7]"},{"name":"IntelliJ IDEA","color":"bg-[#61d0f2]","borderColor":"border-[#40ccf7]"}],"categories":["ide-extension"],"hasCommercial":false,"isAsyncAPIOwner":true}}]},"AsyncAPI Generator Templates":{"description":"The following is a list of templates compatible with AsyncAPI Generator. You can use them to generate apps, clients or documentation from your AsyncAPI documents.","toolsList":[{"title":"Java Spring Template","description":"Java Spring template for the AsyncAPI Generator","links":{"repoUrl":"https://github.com/asyncapi/java-spring-template"},"filters":{"language":[{"name":"Java","color":"bg-[#ECA2A4]","borderColor":"border-[#EC2125]"},{"name":"JavaScript","color":"bg-[#F2F1C7]","borderColor":"border-[#BFBE86]"}],"technology":[{"name":"Springboot","color":"bg-[#98E279]","borderColor":"border-[#68BC44]"},{"name":"Maven","color":"bg-[#FF6B80]","borderColor":"border-[#CA1A33]"},{"name":"Gradle","color":"bg-[#61d0f2]","borderColor":"border-[#40ccf7]"}],"categories":["generator-template"],"hasCommercial":false,"isAsyncAPIOwner":true}},{"title":"Node.js Multiprotocol Template","description":"This template generates a server using your AsyncAPI document. It supports multiple different protocols, like Kafka or MQTT. It is designed in the way that generated code is a library and with it's API you can start the server, send messages or register a middleware for listening incoming messages. Runtime message validation included.","links":{"repoUrl":"https://github.com/asyncapi/nodejs-template"},"filters":{"language":[{"name":"JavaScript","color":"bg-[#F2F1C7]","borderColor":"border-[#BFBE86]"}],"technology":[{"name":"Node.js","color":"bg-[#BDFF67]","borderColor":"border-[#84CE24]"}],"categories":["generator-template"],"hasCommercial":false,"isAsyncAPIOwner":true}},{"title":"Node.js Websockets Template","description":"Node.js WebSockets template for the AsyncAPI Generator. It showcases how from a single AsyncAPI document you can generate a server and a client at the same time.","links":{"repoUrl":"https://github.com/asyncapi/nodejs-ws-template"},"filters":{"language":[{"name":"JavaScript","color":"bg-[#F2F1C7]","borderColor":"border-[#BFBE86]"}],"technology":[{"name":"Node.js","color":"bg-[#BDFF67]","borderColor":"border-[#84CE24]"}],"categories":["generator-template"],"hasCommercial":false,"isAsyncAPIOwner":true}}]},"Others":{"description":"The following is a list of tools that comes under Other category.","toolsList":[{"title":"AsyncAPI CLI","description":"One CLI to rule them all. \nThis is a CLI that aims to integrate all AsyncAPI tools that you need while AsyncAPI document development and maintainance. \nYou can use it to generate docs or code, validate AsyncAPI document and event create new documents.\n","links":{"websiteUrl":"https://www.asyncapi.com/tools/cli","repoUrl":"https://github.com/asyncapi/cli"},"filters":{"technology":[{"name":"TypeScript","color":"bg-[#61d0f2]","borderColor":"border-[#40ccf7]"}],"categories":["others","cli"],"hasCommercial":false,"isAsyncAPIOwner":true}}]}} \ No newline at end of file From 367b5ea3af4671f4dd781371e078bd24027bbe75 Mon Sep 17 00:00:00 2001 From: asyncapi-bot Date: Mon, 16 Oct 2023 16:22:56 +0200 Subject: [PATCH 027/134] docs(cli): update latest cli documentation (#2238) Co-authored-by: asyncapi-bot-eve %0ACo-authored-by: asyncapi-bot --- pages/docs/tools/cli/usage.md | 50 +++++++++++++++++------------------ 1 file changed, 25 insertions(+), 25 deletions(-) diff --git a/pages/docs/tools/cli/usage.md b/pages/docs/tools/cli/usage.md index 190407466c1..3c468aca523 100644 --- a/pages/docs/tools/cli/usage.md +++ b/pages/docs/tools/cli/usage.md @@ -29,7 +29,7 @@ $ npm install -g @asyncapi/cli $ asyncapi COMMAND running command... $ asyncapi (--version) -@asyncapi/cli/0.58.8 linux-x64 node-v18.18.0 +@asyncapi/cli/0.58.9 linux-x64 node-v18.18.0 $ asyncapi --help [COMMAND] USAGE $ asyncapi COMMAND @@ -93,7 +93,7 @@ EXAMPLES $ asyncapi bundle ./asyncapi.yaml ./features.yaml --base ./asyncapi.yaml --reference-into-components ``` -_See code: [src/commands/bundle.ts](https://github.com/asyncapi/cli/blob/v0.58.8/src/commands/bundle.ts)_ +_See code: [src/commands/bundle.ts](https://github.com/asyncapi/cli/blob/v0.58.9/src/commands/bundle.ts)_ ## `asyncapi config` @@ -107,7 +107,7 @@ DESCRIPTION CLI config settings ``` -_See code: [src/commands/config/index.ts](https://github.com/asyncapi/cli/blob/v0.58.8/src/commands/config/index.ts)_ +_See code: [src/commands/config/index.ts](https://github.com/asyncapi/cli/blob/v0.58.9/src/commands/config/index.ts)_ ## `asyncapi config context` @@ -121,7 +121,7 @@ DESCRIPTION Manage short aliases for full paths to AsyncAPI documents ``` -_See code: [src/commands/config/context/index.ts](https://github.com/asyncapi/cli/blob/v0.58.8/src/commands/config/context/index.ts)_ +_See code: [src/commands/config/context/index.ts](https://github.com/asyncapi/cli/blob/v0.58.9/src/commands/config/context/index.ts)_ ## `asyncapi config context add CONTEXT-NAME SPEC-FILE-PATH` @@ -143,7 +143,7 @@ DESCRIPTION Add a context to the store ``` -_See code: [src/commands/config/context/add.ts](https://github.com/asyncapi/cli/blob/v0.58.8/src/commands/config/context/add.ts)_ +_See code: [src/commands/config/context/add.ts](https://github.com/asyncapi/cli/blob/v0.58.9/src/commands/config/context/add.ts)_ ## `asyncapi config context current` @@ -160,7 +160,7 @@ DESCRIPTION Shows the current context that is being used ``` -_See code: [src/commands/config/context/current.ts](https://github.com/asyncapi/cli/blob/v0.58.8/src/commands/config/context/current.ts)_ +_See code: [src/commands/config/context/current.ts](https://github.com/asyncapi/cli/blob/v0.58.9/src/commands/config/context/current.ts)_ ## `asyncapi config context edit CONTEXT-NAME NEW-SPEC-FILE-PATH` @@ -181,7 +181,7 @@ DESCRIPTION Edit a context in the store ``` -_See code: [src/commands/config/context/edit.ts](https://github.com/asyncapi/cli/blob/v0.58.8/src/commands/config/context/edit.ts)_ +_See code: [src/commands/config/context/edit.ts](https://github.com/asyncapi/cli/blob/v0.58.9/src/commands/config/context/edit.ts)_ ## `asyncapi config context init [CONTEXT-FILE-PATH]` @@ -204,7 +204,7 @@ DESCRIPTION Initialize context ``` -_See code: [src/commands/config/context/init.ts](https://github.com/asyncapi/cli/blob/v0.58.8/src/commands/config/context/init.ts)_ +_See code: [src/commands/config/context/init.ts](https://github.com/asyncapi/cli/blob/v0.58.9/src/commands/config/context/init.ts)_ ## `asyncapi config context list` @@ -221,7 +221,7 @@ DESCRIPTION List all the stored contexts in the store ``` -_See code: [src/commands/config/context/list.ts](https://github.com/asyncapi/cli/blob/v0.58.8/src/commands/config/context/list.ts)_ +_See code: [src/commands/config/context/list.ts](https://github.com/asyncapi/cli/blob/v0.58.9/src/commands/config/context/list.ts)_ ## `asyncapi config context remove CONTEXT-NAME` @@ -241,7 +241,7 @@ DESCRIPTION Delete a context from the store ``` -_See code: [src/commands/config/context/remove.ts](https://github.com/asyncapi/cli/blob/v0.58.8/src/commands/config/context/remove.ts)_ +_See code: [src/commands/config/context/remove.ts](https://github.com/asyncapi/cli/blob/v0.58.9/src/commands/config/context/remove.ts)_ ## `asyncapi config context use CONTEXT-NAME` @@ -261,7 +261,7 @@ DESCRIPTION Set a context as current ``` -_See code: [src/commands/config/context/use.ts](https://github.com/asyncapi/cli/blob/v0.58.8/src/commands/config/context/use.ts)_ +_See code: [src/commands/config/context/use.ts](https://github.com/asyncapi/cli/blob/v0.58.9/src/commands/config/context/use.ts)_ ## `asyncapi config versions` @@ -278,7 +278,7 @@ DESCRIPTION Show versions of AsyncAPI tools used ``` -_See code: [src/commands/config/versions.ts](https://github.com/asyncapi/cli/blob/v0.58.8/src/commands/config/versions.ts)_ +_See code: [src/commands/config/versions.ts](https://github.com/asyncapi/cli/blob/v0.58.9/src/commands/config/versions.ts)_ ## `asyncapi convert [SPEC-FILE]` @@ -300,7 +300,7 @@ DESCRIPTION Convert asyncapi documents older to newer versions ``` -_See code: [src/commands/convert.ts](https://github.com/asyncapi/cli/blob/v0.58.8/src/commands/convert.ts)_ +_See code: [src/commands/convert.ts](https://github.com/asyncapi/cli/blob/v0.58.9/src/commands/convert.ts)_ ## `asyncapi diff OLD NEW` @@ -355,7 +355,7 @@ DESCRIPTION Find diff between two asyncapi files ``` -_See code: [src/commands/diff.ts](https://github.com/asyncapi/cli/blob/v0.58.8/src/commands/diff.ts)_ +_See code: [src/commands/diff.ts](https://github.com/asyncapi/cli/blob/v0.58.9/src/commands/diff.ts)_ ## `asyncapi generate` @@ -369,7 +369,7 @@ DESCRIPTION Generate typed models or other things like clients, applications or docs using AsyncAPI Generator templates. ``` -_See code: [src/commands/generate/index.ts](https://github.com/asyncapi/cli/blob/v0.58.8/src/commands/generate/index.ts)_ +_See code: [src/commands/generate/index.ts](https://github.com/asyncapi/cli/blob/v0.58.9/src/commands/generate/index.ts)_ ## `asyncapi generate fromTemplate ASYNCAPI TEMPLATE` @@ -406,7 +406,7 @@ EXAMPLES $ asyncapi generate fromTemplate asyncapi.yaml @asyncapi/html-template --param version=1.0.0 singleFile=true --output ./docs --force-write ``` -_See code: [src/commands/generate/fromTemplate.ts](https://github.com/asyncapi/cli/blob/v0.58.8/src/commands/generate/fromTemplate.ts)_ +_See code: [src/commands/generate/fromTemplate.ts](https://github.com/asyncapi/cli/blob/v0.58.9/src/commands/generate/fromTemplate.ts)_ ## `asyncapi generate models LANGUAGE FILE` @@ -480,7 +480,7 @@ DESCRIPTION Generates typed models ``` -_See code: [src/commands/generate/models.ts](https://github.com/asyncapi/cli/blob/v0.58.8/src/commands/generate/models.ts)_ +_See code: [src/commands/generate/models.ts](https://github.com/asyncapi/cli/blob/v0.58.9/src/commands/generate/models.ts)_ ## `asyncapi new` @@ -535,7 +535,7 @@ EXAMPLES $ asyncapi new --file-name=my-asyncapi.yml --example=default-example.yml --no-tty - create a new file with a specific name, using one of the examples and without interactive mode ``` -_See code: [src/commands/new/index.ts](https://github.com/asyncapi/cli/blob/v0.58.8/src/commands/new/index.ts)_ +_See code: [src/commands/new/index.ts](https://github.com/asyncapi/cli/blob/v0.58.9/src/commands/new/index.ts)_ ## `asyncapi new file` @@ -590,7 +590,7 @@ EXAMPLES $ asyncapi new --file-name=my-asyncapi.yml --example=default-example.yml --no-tty - create a new file with a specific name, using one of the examples and without interactive mode ``` -_See code: [src/commands/new/file.ts](https://github.com/asyncapi/cli/blob/v0.58.8/src/commands/new/file.ts)_ +_See code: [src/commands/new/file.ts](https://github.com/asyncapi/cli/blob/v0.58.9/src/commands/new/file.ts)_ ## `asyncapi new glee` @@ -608,7 +608,7 @@ DESCRIPTION Creates a new Glee project ``` -_See code: [src/commands/new/glee.ts](https://github.com/asyncapi/cli/blob/v0.58.8/src/commands/new/glee.ts)_ +_See code: [src/commands/new/glee.ts](https://github.com/asyncapi/cli/blob/v0.58.9/src/commands/new/glee.ts)_ ## `asyncapi new project` @@ -626,7 +626,7 @@ DESCRIPTION Creates a new Glee project ``` -_See code: [src/commands/new/project.ts](https://github.com/asyncapi/cli/blob/v0.58.8/src/commands/new/project.ts)_ +_See code: [src/commands/new/project.ts](https://github.com/asyncapi/cli/blob/v0.58.9/src/commands/new/project.ts)_ ## `asyncapi optimize [SPEC-FILE]` @@ -662,7 +662,7 @@ EXAMPLES $ asyncapi optimize ./asyncapi.yaml --optimization=remove-components,reuse-components,move-to-components --output=terminal --no-tty ``` -_See code: [src/commands/optimize.ts](https://github.com/asyncapi/cli/blob/v0.58.8/src/commands/optimize.ts)_ +_See code: [src/commands/optimize.ts](https://github.com/asyncapi/cli/blob/v0.58.9/src/commands/optimize.ts)_ ## `asyncapi start` @@ -676,7 +676,7 @@ DESCRIPTION Start asyncapi studio ``` -_See code: [src/commands/start/index.ts](https://github.com/asyncapi/cli/blob/v0.58.8/src/commands/start/index.ts)_ +_See code: [src/commands/start/index.ts](https://github.com/asyncapi/cli/blob/v0.58.9/src/commands/start/index.ts)_ ## `asyncapi start studio` @@ -695,7 +695,7 @@ DESCRIPTION starts a new local instance of Studio ``` -_See code: [src/commands/start/studio.ts](https://github.com/asyncapi/cli/blob/v0.58.8/src/commands/start/studio.ts)_ +_See code: [src/commands/start/studio.ts](https://github.com/asyncapi/cli/blob/v0.58.9/src/commands/start/studio.ts)_ ## `asyncapi validate [SPEC-FILE]` @@ -722,5 +722,5 @@ DESCRIPTION validate asyncapi file ``` -_See code: [src/commands/validate.ts](https://github.com/asyncapi/cli/blob/v0.58.8/src/commands/validate.ts)_ +_See code: [src/commands/validate.ts](https://github.com/asyncapi/cli/blob/v0.58.9/src/commands/validate.ts)_ From df7c475286d90e9a8855a30415cb8ba1aaa93327 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 16 Oct 2023 17:52:41 +0200 Subject: [PATCH 028/134] chore(deps-dev): bump undici from 5.22.1 to 5.26.3 (#2239) --- package-lock.json | 67 ++++++++++++++++------------------------------- 1 file changed, 23 insertions(+), 44 deletions(-) diff --git a/package-lock.json b/package-lock.json index 5ce82529f60..4b125c3e6ff 100644 --- a/package-lock.json +++ b/package-lock.json @@ -716,6 +716,15 @@ "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==" }, + "node_modules/@fastify/busboy": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@fastify/busboy/-/busboy-2.0.0.tgz", + "integrity": "sha512-JUFJad5lv7jxj926GPgymrWQxxjPYuJNiNjNMzqT+HiuP6Vl3dk5xzG+8sTX96np0ZAluvaMzPsjhHZ5rNuNQQ==", + "dev": true, + "engines": { + "node": ">=14" + } + }, "node_modules/@fec/remark-a11y-emoji": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/@fec/remark-a11y-emoji/-/remark-a11y-emoji-1.0.0.tgz", @@ -3046,18 +3055,6 @@ "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==" }, - "node_modules/busboy": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/busboy/-/busboy-1.6.0.tgz", - "integrity": "sha512-8SFQbg/0hQ9xy3UNTB0YEnsNBbWfhf7RtnzpL7TkBiTBRfrQ9Fxcnz7VJsleJpyp6rVLvXiuORqjlHi5q+PYuA==", - "dev": true, - "dependencies": { - "streamsearch": "^1.1.0" - }, - "engines": { - "node": ">=10.16.0" - } - }, "node_modules/cachedir": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/cachedir/-/cachedir-2.3.0.tgz", @@ -11770,15 +11767,6 @@ "url": "https://github.com/sponsors/wooorm" } }, - "node_modules/streamsearch": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/streamsearch/-/streamsearch-1.1.0.tgz", - "integrity": "sha512-Mcc5wHehp9aXz1ax6bZUyY5afg9u2rv5cqQI3mRrYkGC8rW2hM02jWuwjtL++LS5qinSyhj2QfLyNsuc+VsExg==", - "dev": true, - "engines": { - "node": ">=10.0.0" - } - }, "node_modules/string_decoder": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", @@ -12450,12 +12438,12 @@ "dev": true }, "node_modules/undici": { - "version": "5.22.1", - "resolved": "https://registry.npmjs.org/undici/-/undici-5.22.1.tgz", - "integrity": "sha512-Ji2IJhFXZY0x/0tVBXeQwgPlLWw13GVzpsWPQ3rV50IFMMof2I55PZZxtm4P6iNq+L5znYN9nSTAq0ZyE6lSJw==", + "version": "5.26.3", + "resolved": "https://registry.npmjs.org/undici/-/undici-5.26.3.tgz", + "integrity": "sha512-H7n2zmKEWgOllKkIUkLvFmsJQj062lSm3uA4EYApG8gLuiOM0/go9bIoC3HVaSnfg4xunowDE2i9p8drkXuvDw==", "dev": true, "dependencies": { - "busboy": "^1.6.0" + "@fastify/busboy": "^2.0.0" }, "engines": { "node": ">=14.0" @@ -13672,6 +13660,12 @@ } } }, + "@fastify/busboy": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@fastify/busboy/-/busboy-2.0.0.tgz", + "integrity": "sha512-JUFJad5lv7jxj926GPgymrWQxxjPYuJNiNjNMzqT+HiuP6Vl3dk5xzG+8sTX96np0ZAluvaMzPsjhHZ5rNuNQQ==", + "dev": true + }, "@fec/remark-a11y-emoji": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/@fec/remark-a11y-emoji/-/remark-a11y-emoji-1.0.0.tgz", @@ -15394,15 +15388,6 @@ "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==" }, - "busboy": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/busboy/-/busboy-1.6.0.tgz", - "integrity": "sha512-8SFQbg/0hQ9xy3UNTB0YEnsNBbWfhf7RtnzpL7TkBiTBRfrQ9Fxcnz7VJsleJpyp6rVLvXiuORqjlHi5q+PYuA==", - "dev": true, - "requires": { - "streamsearch": "^1.1.0" - } - }, "cachedir": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/cachedir/-/cachedir-2.3.0.tgz", @@ -22334,12 +22319,6 @@ "resolved": "https://registry.npmjs.org/state-toggle/-/state-toggle-1.0.3.tgz", "integrity": "sha512-d/5Z4/2iiCnHw6Xzghyhb+GcmF89bxwgXG60wjIiZaxnymbyOmI8Hk4VqHXiVVp6u2ysaskFfXg3ekCj4WNftQ==" }, - "streamsearch": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/streamsearch/-/streamsearch-1.1.0.tgz", - "integrity": "sha512-Mcc5wHehp9aXz1ax6bZUyY5afg9u2rv5cqQI3mRrYkGC8rW2hM02jWuwjtL++LS5qinSyhj2QfLyNsuc+VsExg==", - "dev": true - }, "string_decoder": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", @@ -22887,12 +22866,12 @@ "dev": true }, "undici": { - "version": "5.22.1", - "resolved": "https://registry.npmjs.org/undici/-/undici-5.22.1.tgz", - "integrity": "sha512-Ji2IJhFXZY0x/0tVBXeQwgPlLWw13GVzpsWPQ3rV50IFMMof2I55PZZxtm4P6iNq+L5znYN9nSTAq0ZyE6lSJw==", + "version": "5.26.3", + "resolved": "https://registry.npmjs.org/undici/-/undici-5.26.3.tgz", + "integrity": "sha512-H7n2zmKEWgOllKkIUkLvFmsJQj062lSm3uA4EYApG8gLuiOM0/go9bIoC3HVaSnfg4xunowDE2i9p8drkXuvDw==", "dev": true, "requires": { - "busboy": "^1.6.0" + "@fastify/busboy": "^2.0.0" } }, "unherit": { From 98a1ee575e2ad0737b1ee826ba50da76f8b72eff Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 16 Oct 2023 17:56:28 +0200 Subject: [PATCH 029/134] chore(deps): bump @babel/traverse from 7.22.5 to 7.23.2 (#2240) --- package-lock.json | 206 +++++++++++++++++++++++----------------------- 1 file changed, 104 insertions(+), 102 deletions(-) diff --git a/package-lock.json b/package-lock.json index 4b125c3e6ff..03f341d3924 100644 --- a/package-lock.json +++ b/package-lock.json @@ -222,11 +222,12 @@ } }, "node_modules/@babel/code-frame": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.22.5.tgz", - "integrity": "sha512-Xmwn266vad+6DAqEB2A6V/CcZVp62BbwVmcOJc2RPuwih1kw02TjQvWVWlcKGbBPd+8/0V5DEkOcizRGYsspYQ==", + "version": "7.22.13", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.22.13.tgz", + "integrity": "sha512-XktuhWlJ5g+3TJXc5upd9Ks1HutSArik6jf2eAjYFyIOf4ej3RN+184cZbzDvbPnuTJIUhPKKJE3cIsYTiAT3w==", "dependencies": { - "@babel/highlight": "^7.22.5" + "@babel/highlight": "^7.22.13", + "chalk": "^2.4.2" }, "engines": { "node": ">=6.9.0" @@ -279,11 +280,11 @@ } }, "node_modules/@babel/generator": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.22.5.tgz", - "integrity": "sha512-+lcUbnTRhd0jOewtFSedLyiPsD5tswKkbgcezOqqWFUVNEwoUTlpPOBmvhG7OXWLR4jMdv0czPGH5XbflnD1EA==", + "version": "7.23.0", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.23.0.tgz", + "integrity": "sha512-lN85QRR+5IbYrMWM6Y4pE/noaQtg4pNiqeNGX60eqOfo6gtEj6uw/JagelB8vVztSd7R6M5n1+PQkDbHbBRU4g==", "dependencies": { - "@babel/types": "^7.22.5", + "@babel/types": "^7.23.0", "@jridgewell/gen-mapping": "^0.3.2", "@jridgewell/trace-mapping": "^0.3.17", "jsesc": "^2.5.1" @@ -293,20 +294,20 @@ } }, "node_modules/@babel/helper-environment-visitor": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.22.5.tgz", - "integrity": "sha512-XGmhECfVA/5sAt+H+xpSg0mfrHq6FzNr9Oxh7PSEBBRUb/mL7Kz3NICXb194rCqAEdxkhPT1a88teizAFyvk8Q==", + "version": "7.22.20", + "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.22.20.tgz", + "integrity": "sha512-zfedSIzFhat/gFhWfHtgWvlec0nqB9YEIVrpuwjruLlXfUSnA8cJB0miHKwqDnQ7d32aKo2xt88/xZptwxbfhA==", "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-function-name": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.22.5.tgz", - "integrity": "sha512-wtHSq6jMRE3uF2otvfuD3DIvVhOsSNshQl0Qrd7qC9oQJzHvOL4qQXlQn2916+CXGywIjpGuIkoyZRRxHPiNQQ==", + "version": "7.23.0", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.23.0.tgz", + "integrity": "sha512-OErEqsrxjZTJciZ4Oo+eoZqeW9UIiOcuYKRJA4ZAgV9myA+pOXhhmpfNCKjEH/auVfEYVFJ6y1Tc4r0eIApqiw==", "dependencies": { - "@babel/template": "^7.22.5", - "@babel/types": "^7.22.5" + "@babel/template": "^7.22.15", + "@babel/types": "^7.23.0" }, "engines": { "node": ">=6.9.0" @@ -372,9 +373,9 @@ } }, "node_modules/@babel/helper-split-export-declaration": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.22.5.tgz", - "integrity": "sha512-thqK5QFghPKWLhAV321lxF95yCg2K3Ob5yw+M3VHWfdia0IkPXUtoLH8x/6Fh486QUvzhb8YOWHChTVen2/PoQ==", + "version": "7.22.6", + "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.22.6.tgz", + "integrity": "sha512-AsUnxuLhRYsisFiaJwvp1QF+I3KjD5FOxut14q/GzovUe6orHLesW2C7d754kRm53h5gqrz6sFl6sxc4BVtE/g==", "dependencies": { "@babel/types": "^7.22.5" }, @@ -391,9 +392,9 @@ } }, "node_modules/@babel/helper-validator-identifier": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.22.5.tgz", - "integrity": "sha512-aJXu+6lErq8ltp+JhkJUfk1MTGyuA4v7f3pA+BJ5HLfNC6nAQ0Cpi9uOquUj8Hehg0aUiHzWQbOVJGao6ztBAQ==", + "version": "7.22.20", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.22.20.tgz", + "integrity": "sha512-Y4OZ+ytlatR8AI+8KZfKuL5urKp7qey08ha31L8b3BwewJAoJamTzyvxPR/5D+KkdJCGPq/+8TukHBlY10FX9A==", "engines": { "node": ">=6.9.0" } @@ -412,12 +413,12 @@ } }, "node_modules/@babel/highlight": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.22.5.tgz", - "integrity": "sha512-BSKlD1hgnedS5XRnGOljZawtag7H1yPfQp0tdNJCHoH6AZ+Pcm9VvkrK59/Yy593Ypg0zMxH2BxD1VPYUQ7UIw==", + "version": "7.22.20", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.22.20.tgz", + "integrity": "sha512-dkdMCN3py0+ksCgYmGG8jKeGA/8Tk+gJwSYYlFGxG5lmhfKNoAy004YpLxpS1W2J8m/EK2Ew+yOs9pVRwO89mg==", "dependencies": { - "@babel/helper-validator-identifier": "^7.22.5", - "chalk": "^2.0.0", + "@babel/helper-validator-identifier": "^7.22.20", + "chalk": "^2.4.2", "js-tokens": "^4.0.0" }, "engines": { @@ -425,9 +426,9 @@ } }, "node_modules/@babel/parser": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.22.5.tgz", - "integrity": "sha512-DFZMC9LJUG9PLOclRC32G63UXwzqS2koQC8dkx+PLdmt1xSePYpbT/NbsrJy8Q/muXz7o/h/d4A7Fuyixm559Q==", + "version": "7.23.0", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.23.0.tgz", + "integrity": "sha512-vvPKKdMemU85V9WE/l5wZEmImpCtLqbnTvqDS2U1fJ96KrxoW7KrXhNsNCblQlg8Ck4b85yxdTyelsMUgFUXiw==", "bin": { "parser": "bin/babel-parser.js" }, @@ -496,31 +497,31 @@ } }, "node_modules/@babel/template": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.22.5.tgz", - "integrity": "sha512-X7yV7eiwAxdj9k94NEylvbVHLiVG1nvzCV2EAowhxLTwODV1jl9UzZ48leOC0sH7OnuHrIkllaBgneUykIcZaw==", + "version": "7.22.15", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.22.15.tgz", + "integrity": "sha512-QPErUVm4uyJa60rkI73qneDacvdvzxshT3kksGqlGWYdOTIUOwJ7RDUL8sGqslY1uXWSL6xMFKEXDS3ox2uF0w==", "dependencies": { - "@babel/code-frame": "^7.22.5", - "@babel/parser": "^7.22.5", - "@babel/types": "^7.22.5" + "@babel/code-frame": "^7.22.13", + "@babel/parser": "^7.22.15", + "@babel/types": "^7.22.15" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/traverse": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.22.5.tgz", - "integrity": "sha512-7DuIjPgERaNo6r+PZwItpjCZEa5vyw4eJGufeLxrPdBXBoLcCJCIasvK6pK/9DVNrLZTLFhUGqaC6X/PA007TQ==", - "dependencies": { - "@babel/code-frame": "^7.22.5", - "@babel/generator": "^7.22.5", - "@babel/helper-environment-visitor": "^7.22.5", - "@babel/helper-function-name": "^7.22.5", + "version": "7.23.2", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.23.2.tgz", + "integrity": "sha512-azpe59SQ48qG6nu2CzcMLbxUudtN+dOM9kDbUqGq3HXUJRlo7i8fvPoxQUzYgLZ4cMVmuZgm8vvBpNeRhd6XSw==", + "dependencies": { + "@babel/code-frame": "^7.22.13", + "@babel/generator": "^7.23.0", + "@babel/helper-environment-visitor": "^7.22.20", + "@babel/helper-function-name": "^7.23.0", "@babel/helper-hoist-variables": "^7.22.5", - "@babel/helper-split-export-declaration": "^7.22.5", - "@babel/parser": "^7.22.5", - "@babel/types": "^7.22.5", + "@babel/helper-split-export-declaration": "^7.22.6", + "@babel/parser": "^7.23.0", + "@babel/types": "^7.23.0", "debug": "^4.1.0", "globals": "^11.1.0" }, @@ -529,12 +530,12 @@ } }, "node_modules/@babel/types": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.22.5.tgz", - "integrity": "sha512-zo3MIHGOkPOfoRXitsgHLjEXmlDaD/5KU1Uzuc9GNiZPhSqVxVRtxuPaSBZDsYZ9qV88AjtMtWW7ww98loJ9KA==", + "version": "7.23.0", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.23.0.tgz", + "integrity": "sha512-0oIyUfKoI3mSqMvsxBdclDwxXKXAUA8v/apZbc+iSyARYou1o8ZGDxbUYyLFoW2arqS2jDGqJuZvv1d/io1axg==", "dependencies": { "@babel/helper-string-parser": "^7.22.5", - "@babel/helper-validator-identifier": "^7.22.5", + "@babel/helper-validator-identifier": "^7.22.20", "to-fast-properties": "^2.0.0" }, "engines": { @@ -13285,11 +13286,12 @@ } }, "@babel/code-frame": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.22.5.tgz", - "integrity": "sha512-Xmwn266vad+6DAqEB2A6V/CcZVp62BbwVmcOJc2RPuwih1kw02TjQvWVWlcKGbBPd+8/0V5DEkOcizRGYsspYQ==", + "version": "7.22.13", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.22.13.tgz", + "integrity": "sha512-XktuhWlJ5g+3TJXc5upd9Ks1HutSArik6jf2eAjYFyIOf4ej3RN+184cZbzDvbPnuTJIUhPKKJE3cIsYTiAT3w==", "requires": { - "@babel/highlight": "^7.22.5" + "@babel/highlight": "^7.22.13", + "chalk": "^2.4.2" } }, "@babel/core": { @@ -13328,28 +13330,28 @@ } }, "@babel/generator": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.22.5.tgz", - "integrity": "sha512-+lcUbnTRhd0jOewtFSedLyiPsD5tswKkbgcezOqqWFUVNEwoUTlpPOBmvhG7OXWLR4jMdv0czPGH5XbflnD1EA==", + "version": "7.23.0", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.23.0.tgz", + "integrity": "sha512-lN85QRR+5IbYrMWM6Y4pE/noaQtg4pNiqeNGX60eqOfo6gtEj6uw/JagelB8vVztSd7R6M5n1+PQkDbHbBRU4g==", "requires": { - "@babel/types": "^7.22.5", + "@babel/types": "^7.23.0", "@jridgewell/gen-mapping": "^0.3.2", "@jridgewell/trace-mapping": "^0.3.17", "jsesc": "^2.5.1" } }, "@babel/helper-environment-visitor": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.22.5.tgz", - "integrity": "sha512-XGmhECfVA/5sAt+H+xpSg0mfrHq6FzNr9Oxh7PSEBBRUb/mL7Kz3NICXb194rCqAEdxkhPT1a88teizAFyvk8Q==" + "version": "7.22.20", + "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.22.20.tgz", + "integrity": "sha512-zfedSIzFhat/gFhWfHtgWvlec0nqB9YEIVrpuwjruLlXfUSnA8cJB0miHKwqDnQ7d32aKo2xt88/xZptwxbfhA==" }, "@babel/helper-function-name": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.22.5.tgz", - "integrity": "sha512-wtHSq6jMRE3uF2otvfuD3DIvVhOsSNshQl0Qrd7qC9oQJzHvOL4qQXlQn2916+CXGywIjpGuIkoyZRRxHPiNQQ==", + "version": "7.23.0", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.23.0.tgz", + "integrity": "sha512-OErEqsrxjZTJciZ4Oo+eoZqeW9UIiOcuYKRJA4ZAgV9myA+pOXhhmpfNCKjEH/auVfEYVFJ6y1Tc4r0eIApqiw==", "requires": { - "@babel/template": "^7.22.5", - "@babel/types": "^7.22.5" + "@babel/template": "^7.22.15", + "@babel/types": "^7.23.0" } }, "@babel/helper-hoist-variables": { @@ -13397,9 +13399,9 @@ } }, "@babel/helper-split-export-declaration": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.22.5.tgz", - "integrity": "sha512-thqK5QFghPKWLhAV321lxF95yCg2K3Ob5yw+M3VHWfdia0IkPXUtoLH8x/6Fh486QUvzhb8YOWHChTVen2/PoQ==", + "version": "7.22.6", + "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.22.6.tgz", + "integrity": "sha512-AsUnxuLhRYsisFiaJwvp1QF+I3KjD5FOxut14q/GzovUe6orHLesW2C7d754kRm53h5gqrz6sFl6sxc4BVtE/g==", "requires": { "@babel/types": "^7.22.5" } @@ -13410,9 +13412,9 @@ "integrity": "sha512-mM4COjgZox8U+JcXQwPijIZLElkgEpO5rsERVDJTc2qfCDfERyob6k5WegS14SX18IIjv+XD+GrqNumY5JRCDw==" }, "@babel/helper-validator-identifier": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.22.5.tgz", - "integrity": "sha512-aJXu+6lErq8ltp+JhkJUfk1MTGyuA4v7f3pA+BJ5HLfNC6nAQ0Cpi9uOquUj8Hehg0aUiHzWQbOVJGao6ztBAQ==" + "version": "7.22.20", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.22.20.tgz", + "integrity": "sha512-Y4OZ+ytlatR8AI+8KZfKuL5urKp7qey08ha31L8b3BwewJAoJamTzyvxPR/5D+KkdJCGPq/+8TukHBlY10FX9A==" }, "@babel/helpers": { "version": "7.22.5", @@ -13425,19 +13427,19 @@ } }, "@babel/highlight": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.22.5.tgz", - "integrity": "sha512-BSKlD1hgnedS5XRnGOljZawtag7H1yPfQp0tdNJCHoH6AZ+Pcm9VvkrK59/Yy593Ypg0zMxH2BxD1VPYUQ7UIw==", + "version": "7.22.20", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.22.20.tgz", + "integrity": "sha512-dkdMCN3py0+ksCgYmGG8jKeGA/8Tk+gJwSYYlFGxG5lmhfKNoAy004YpLxpS1W2J8m/EK2Ew+yOs9pVRwO89mg==", "requires": { - "@babel/helper-validator-identifier": "^7.22.5", - "chalk": "^2.0.0", + "@babel/helper-validator-identifier": "^7.22.20", + "chalk": "^2.4.2", "js-tokens": "^4.0.0" } }, "@babel/parser": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.22.5.tgz", - "integrity": "sha512-DFZMC9LJUG9PLOclRC32G63UXwzqS2koQC8dkx+PLdmt1xSePYpbT/NbsrJy8Q/muXz7o/h/d4A7Fuyixm559Q==" + "version": "7.23.0", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.23.0.tgz", + "integrity": "sha512-vvPKKdMemU85V9WE/l5wZEmImpCtLqbnTvqDS2U1fJ96KrxoW7KrXhNsNCblQlg8Ck4b85yxdTyelsMUgFUXiw==" }, "@babel/plugin-proposal-object-rest-spread": { "version": "7.12.1", @@ -13482,39 +13484,39 @@ } }, "@babel/template": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.22.5.tgz", - "integrity": "sha512-X7yV7eiwAxdj9k94NEylvbVHLiVG1nvzCV2EAowhxLTwODV1jl9UzZ48leOC0sH7OnuHrIkllaBgneUykIcZaw==", + "version": "7.22.15", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.22.15.tgz", + "integrity": "sha512-QPErUVm4uyJa60rkI73qneDacvdvzxshT3kksGqlGWYdOTIUOwJ7RDUL8sGqslY1uXWSL6xMFKEXDS3ox2uF0w==", "requires": { - "@babel/code-frame": "^7.22.5", - "@babel/parser": "^7.22.5", - "@babel/types": "^7.22.5" + "@babel/code-frame": "^7.22.13", + "@babel/parser": "^7.22.15", + "@babel/types": "^7.22.15" } }, "@babel/traverse": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.22.5.tgz", - "integrity": "sha512-7DuIjPgERaNo6r+PZwItpjCZEa5vyw4eJGufeLxrPdBXBoLcCJCIasvK6pK/9DVNrLZTLFhUGqaC6X/PA007TQ==", - "requires": { - "@babel/code-frame": "^7.22.5", - "@babel/generator": "^7.22.5", - "@babel/helper-environment-visitor": "^7.22.5", - "@babel/helper-function-name": "^7.22.5", + "version": "7.23.2", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.23.2.tgz", + "integrity": "sha512-azpe59SQ48qG6nu2CzcMLbxUudtN+dOM9kDbUqGq3HXUJRlo7i8fvPoxQUzYgLZ4cMVmuZgm8vvBpNeRhd6XSw==", + "requires": { + "@babel/code-frame": "^7.22.13", + "@babel/generator": "^7.23.0", + "@babel/helper-environment-visitor": "^7.22.20", + "@babel/helper-function-name": "^7.23.0", "@babel/helper-hoist-variables": "^7.22.5", - "@babel/helper-split-export-declaration": "^7.22.5", - "@babel/parser": "^7.22.5", - "@babel/types": "^7.22.5", + "@babel/helper-split-export-declaration": "^7.22.6", + "@babel/parser": "^7.23.0", + "@babel/types": "^7.23.0", "debug": "^4.1.0", "globals": "^11.1.0" } }, "@babel/types": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.22.5.tgz", - "integrity": "sha512-zo3MIHGOkPOfoRXitsgHLjEXmlDaD/5KU1Uzuc9GNiZPhSqVxVRtxuPaSBZDsYZ9qV88AjtMtWW7ww98loJ9KA==", + "version": "7.23.0", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.23.0.tgz", + "integrity": "sha512-0oIyUfKoI3mSqMvsxBdclDwxXKXAUA8v/apZbc+iSyARYou1o8ZGDxbUYyLFoW2arqS2jDGqJuZvv1d/io1axg==", "requires": { "@babel/helper-string-parser": "^7.22.5", - "@babel/helper-validator-identifier": "^7.22.5", + "@babel/helper-validator-identifier": "^7.22.20", "to-fast-properties": "^2.0.0" } }, From 4b50c5fcc2f4284053b34f9f6cd18db5f5d22b03 Mon Sep 17 00:00:00 2001 From: asyncapi-bot Date: Wed, 18 Oct 2023 02:28:52 +0200 Subject: [PATCH 030/134] chore: update meetings.json and newsrooom_videos.json (#2242) --- config/newsroom_videos.json | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/config/newsroom_videos.json b/config/newsroom_videos.json index 26d09c9e566..c5d1cd36613 100644 --- a/config/newsroom_videos.json +++ b/config/newsroom_videos.json @@ -1,4 +1,10 @@ [ + { + "image_url": "https://i.ytimg.com/vi/zSbv4ibqYds/hqdefault.jpg", + "title": "Community Meeting(October 17th, 2023)", + "description": "https://github.com/asyncapi/community/issues/912.", + "videoId": "zSbv4ibqYds" + }, { "image_url": "https://i.ytimg.com/vi/KTnFoXY_evs/hqdefault.jpg", "title": "Hacktoberfest (October 6th, 2023)", @@ -22,11 +28,5 @@ "title": "Spec 3.0 meeting (September 6, 2023)", "description": "https://github.com/asyncapi/community/issues/857.", "videoId": "OYcOkQhwVNg" - }, - { - "image_url": "https://i.ytimg.com/vi/b4KcouHm958/hqdefault.jpg", - "title": "Generator and new parser discussion (September 6, 2023)", - "description": "https://github.com/asyncapi/community/issues/865.", - "videoId": "b4KcouHm958" } ] \ No newline at end of file From e7b8aefab3511609ba6783a8967ea33ea5987255 Mon Sep 17 00:00:00 2001 From: asyncapi-bot Date: Wed, 18 Oct 2023 10:15:36 +0200 Subject: [PATCH 031/134] docs(spec): update latest specification (#2244) --- pages/docs/reference/specification/v2.6.0.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pages/docs/reference/specification/v2.6.0.md b/pages/docs/reference/specification/v2.6.0.md index ac73a709209..1e1364f7b81 100644 --- a/pages/docs/reference/specification/v2.6.0.md +++ b/pages/docs/reference/specification/v2.6.0.md @@ -542,7 +542,7 @@ Describes the operations available on a single channel. Field Name | Type | Description ---|:---:|--- -$ref | `string` | Allows for a referenced definition of this channel item. The referenced structure MUST be in the form of a [Channel Item Object](#channelItemObject). In case a Channel Item Object field appears both in the defined object and the referenced object, the behavior is _undefined_. Resolution is done as defined by the [JSON Reference](https://tools.ietf.org/html/draft-pbryan-zyp-json-ref-03).

**Deprecated:** Usage of the `$ref` property has been deprecated. +$ref | `string` | Allows for a referenced definition of this channel item. The referenced structure MUST be in the form of a [Channel Item Object](#channelItemObject). In case a Channel Item Object field appears both in the defined object and the referenced object, the behavior is _undefined_. Resolution is done as defined by the [JSON Reference](https://tools.ietf.org/html/draft-pbryan-zyp-json-ref-03).

**Deprecated:** Using the $ref property with other properties is deprecated since the 2.3.0 version of the specification. description | `string` | An optional description of this channel item. [CommonMark syntax](https://spec.commonmark.org/) can be used for rich text representation. servers | [`string`] | The servers on which this channel is available, specified as an optional unordered list of names (string keys) of [Server Objects](#serverObject) defined in the [Servers Object](#serversObject) (a map). If `servers` is absent or empty then this channel must be available on all servers defined in the [Servers Object](#serversObject). subscribe | [Operation Object](#operationObject) | A definition of the SUBSCRIBE operation, which defines the messages produced by the application and sent to the channel. From 5af32e8b56aeaa436ef6e46d4853eec3589c051b Mon Sep 17 00:00:00 2001 From: asyncapi-bot Date: Thu, 19 Oct 2023 02:26:35 +0200 Subject: [PATCH 032/134] chore: update meetings.json and newsrooom_videos.json (#2247) --- config/meetings.json | 7 ------- 1 file changed, 7 deletions(-) diff --git a/config/meetings.json b/config/meetings.json index 8702fb12fe7..2a9f19a4758 100644 --- a/config/meetings.json +++ b/config/meetings.json @@ -146,13 +146,6 @@ "banner": "https://user-images.githubusercontent.com/40604284/271795643-615174df-3bc0-4e7f-b615-cabb6e701234.png", "date": "2023-10-05T13:00:00.000Z" }, - { - "title": "Spec 3.0 Docs Meeting", - "calLink": "https://www.google.com/calendar/event?eid=ZmtxaWlxdjdtbThlbDU4djhtMmllaTliYjggY19xOXRzZWlnbG9tZHNqNm5qdWh2YnB0czExY0Bn", - "url": "https://github.com/asyncapi/community/issues/906", - "banner": "", - "date": "2023-10-19T14:30:00.000Z" - }, { "title": "Community Meeting", "calLink": "https://www.google.com/calendar/event?eid=Y3FhbWh0bzA5cTc5MnVscTJuZjIzMWg2MmsgY19xOXRzZWlnbG9tZHNqNm5qdWh2YnB0czExY0Bn", From 7a254f0d2745b028674993b3002732a08cbf2bde Mon Sep 17 00:00:00 2001 From: Ace <40604284+AceTheCreator@users.noreply.github.com> Date: Thu, 19 Oct 2023 04:01:33 -0500 Subject: [PATCH 033/134] feat: added madrid livestream link (#2251) --- components/campaigns/AnnoucementHero.js | 15 +++++++-------- 1 file changed, 7 insertions(+), 8 deletions(-) diff --git a/components/campaigns/AnnoucementHero.js b/components/campaigns/AnnoucementHero.js index 9c27f61672d..53e2d49089a 100644 --- a/components/campaigns/AnnoucementHero.js +++ b/components/campaigns/AnnoucementHero.js @@ -2,11 +2,10 @@ import Paragraph from '../typography/Paragraph' import Button from '../buttons/Button' import Heading from '../typography/Heading' import Container from '../layout/Container' -import AnnouncementRemainingDays from './AnnouncementRamainingDays' +// import AnnouncementRemainingDays from './AnnouncementRamainingDays' function shouldShowBanner(cfpDeadline) { const currentDate = new Date(); // Get the current date - console.log(currentDate) const deadline = new Date(cfpDeadline); // Convert the cfpDeadline string to a Date object // Check if the current date is after the deadline @@ -19,7 +18,7 @@ function shouldShowBanner(cfpDeadline) { export default function AnnouncementHero({ className = '', small = false, hideVideo = false }) { //return null; - const cfpDeadline = '2023-10-19T06:00:00Z' + const cfpDeadline = '2023-10-20T06:00:00Z' const showBanner = shouldShowBanner(cfpDeadline); if (!showBanner) return null; @@ -43,17 +42,17 @@ export default function AnnouncementHero({ className = '', small = false, hideVi level="h3" typeStyle="heading-sm" > - Bangalore Edition + Madrid Edition - 30th of November, 2023 | Bangalore, India + The Madrid Edition is happening now!!! - + {/* */}
From 9f40adf49be8e385cee65a3ebcdb6fb9d81ed496 Mon Sep 17 00:00:00 2001 From: asyncapi-bot Date: Fri, 20 Oct 2023 02:26:52 +0200 Subject: [PATCH 034/134] chore: update meetings.json and newsrooom_videos.json (#2253) --- config/meetings.json | 7 ------- 1 file changed, 7 deletions(-) diff --git a/config/meetings.json b/config/meetings.json index 2a9f19a4758..b9753a74caa 100644 --- a/config/meetings.json +++ b/config/meetings.json @@ -13,13 +13,6 @@ "banner": "https://user-images.githubusercontent.com/66913810/249772860-0b6c73a5-a740-4fac-a22d-2d95f823ae07.png", "date": "2023-07-13T09:00:00.000Z" }, - { - "title": "Community Meeting", - "calLink": "https://www.google.com/calendar/event?eid=cmFudjRxMjVhazk1Y2FjbXA3Zm1pMWZyZjAgY19xOXRzZWlnbG9tZHNqNm5qdWh2YnB0czExY0Bn", - "url": "https://github.com/asyncapi/community/issues/784", - "banner": "https://user-images.githubusercontent.com/40604284/250981834-3418496b-d123-4e74-a7ff-082b4714c841.png", - "date": "2023-07-11T16:00:00.000Z" - }, { "title": "Spec 3.0 Docs Meeting", "calLink": "https://www.google.com/calendar/event?eid=NzU0aGMxOWY5MmYyYzA3OTduazF0MWZqY2MgY19xOXRzZWlnbG9tZHNqNm5qdWh2YnB0czExY0Bn", From ce07ac1762ae20e6f384e81741354fd390eb3eed Mon Sep 17 00:00:00 2001 From: V Thulisile Sibanda <66913810+thulieblack@users.noreply.github.com> Date: Fri, 20 Oct 2023 11:17:33 +0200 Subject: [PATCH 035/134] feat: add-paris-banner (#2254) * add-banner * add-banner * update --- components/campaigns/AnnoucementHero.js | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/components/campaigns/AnnoucementHero.js b/components/campaigns/AnnoucementHero.js index 53e2d49089a..d2547f3768a 100644 --- a/components/campaigns/AnnoucementHero.js +++ b/components/campaigns/AnnoucementHero.js @@ -2,10 +2,10 @@ import Paragraph from '../typography/Paragraph' import Button from '../buttons/Button' import Heading from '../typography/Heading' import Container from '../layout/Container' -// import AnnouncementRemainingDays from './AnnouncementRamainingDays' +import AnnouncementRemainingDays from './AnnouncementRamainingDays' function shouldShowBanner(cfpDeadline) { - const currentDate = new Date(); // Get the current date + const currentDate = new Date(); // G et the current date const deadline = new Date(cfpDeadline); // Convert the cfpDeadline string to a Date object // Check if the current date is after the deadline @@ -18,7 +18,7 @@ function shouldShowBanner(cfpDeadline) { export default function AnnouncementHero({ className = '', small = false, hideVideo = false }) { //return null; - const cfpDeadline = '2023-10-20T06:00:00Z' + const cfpDeadline = '2023-10-28T06:00:00Z' const showBanner = shouldShowBanner(cfpDeadline); if (!showBanner) return null; @@ -42,17 +42,17 @@ export default function AnnouncementHero({ className = '', small = false, hideVi level="h3" typeStyle="heading-sm" > - Madrid Edition + Paris Edition - The Madrid Edition is happening now!!! + 8th of December, 2023 | Paris, France - {/* */} +
From 8e52bf3a9449f0ce8044c5649c83d09e8c15f5bf Mon Sep 17 00:00:00 2001 From: asyncapi-bot Date: Fri, 20 Oct 2023 12:22:33 +0200 Subject: [PATCH 036/134] docs(cli): update latest cli documentation (#2255) --- pages/docs/tools/cli/usage.md | 50 +++++++++++++++++------------------ 1 file changed, 25 insertions(+), 25 deletions(-) diff --git a/pages/docs/tools/cli/usage.md b/pages/docs/tools/cli/usage.md index 3c468aca523..1ed7398c883 100644 --- a/pages/docs/tools/cli/usage.md +++ b/pages/docs/tools/cli/usage.md @@ -29,7 +29,7 @@ $ npm install -g @asyncapi/cli $ asyncapi COMMAND running command... $ asyncapi (--version) -@asyncapi/cli/0.58.9 linux-x64 node-v18.18.0 +@asyncapi/cli/0.58.10 linux-x64 node-v18.18.2 $ asyncapi --help [COMMAND] USAGE $ asyncapi COMMAND @@ -93,7 +93,7 @@ EXAMPLES $ asyncapi bundle ./asyncapi.yaml ./features.yaml --base ./asyncapi.yaml --reference-into-components ``` -_See code: [src/commands/bundle.ts](https://github.com/asyncapi/cli/blob/v0.58.9/src/commands/bundle.ts)_ +_See code: [src/commands/bundle.ts](https://github.com/asyncapi/cli/blob/v0.58.10/src/commands/bundle.ts)_ ## `asyncapi config` @@ -107,7 +107,7 @@ DESCRIPTION CLI config settings ``` -_See code: [src/commands/config/index.ts](https://github.com/asyncapi/cli/blob/v0.58.9/src/commands/config/index.ts)_ +_See code: [src/commands/config/index.ts](https://github.com/asyncapi/cli/blob/v0.58.10/src/commands/config/index.ts)_ ## `asyncapi config context` @@ -121,7 +121,7 @@ DESCRIPTION Manage short aliases for full paths to AsyncAPI documents ``` -_See code: [src/commands/config/context/index.ts](https://github.com/asyncapi/cli/blob/v0.58.9/src/commands/config/context/index.ts)_ +_See code: [src/commands/config/context/index.ts](https://github.com/asyncapi/cli/blob/v0.58.10/src/commands/config/context/index.ts)_ ## `asyncapi config context add CONTEXT-NAME SPEC-FILE-PATH` @@ -143,7 +143,7 @@ DESCRIPTION Add a context to the store ``` -_See code: [src/commands/config/context/add.ts](https://github.com/asyncapi/cli/blob/v0.58.9/src/commands/config/context/add.ts)_ +_See code: [src/commands/config/context/add.ts](https://github.com/asyncapi/cli/blob/v0.58.10/src/commands/config/context/add.ts)_ ## `asyncapi config context current` @@ -160,7 +160,7 @@ DESCRIPTION Shows the current context that is being used ``` -_See code: [src/commands/config/context/current.ts](https://github.com/asyncapi/cli/blob/v0.58.9/src/commands/config/context/current.ts)_ +_See code: [src/commands/config/context/current.ts](https://github.com/asyncapi/cli/blob/v0.58.10/src/commands/config/context/current.ts)_ ## `asyncapi config context edit CONTEXT-NAME NEW-SPEC-FILE-PATH` @@ -181,7 +181,7 @@ DESCRIPTION Edit a context in the store ``` -_See code: [src/commands/config/context/edit.ts](https://github.com/asyncapi/cli/blob/v0.58.9/src/commands/config/context/edit.ts)_ +_See code: [src/commands/config/context/edit.ts](https://github.com/asyncapi/cli/blob/v0.58.10/src/commands/config/context/edit.ts)_ ## `asyncapi config context init [CONTEXT-FILE-PATH]` @@ -204,7 +204,7 @@ DESCRIPTION Initialize context ``` -_See code: [src/commands/config/context/init.ts](https://github.com/asyncapi/cli/blob/v0.58.9/src/commands/config/context/init.ts)_ +_See code: [src/commands/config/context/init.ts](https://github.com/asyncapi/cli/blob/v0.58.10/src/commands/config/context/init.ts)_ ## `asyncapi config context list` @@ -221,7 +221,7 @@ DESCRIPTION List all the stored contexts in the store ``` -_See code: [src/commands/config/context/list.ts](https://github.com/asyncapi/cli/blob/v0.58.9/src/commands/config/context/list.ts)_ +_See code: [src/commands/config/context/list.ts](https://github.com/asyncapi/cli/blob/v0.58.10/src/commands/config/context/list.ts)_ ## `asyncapi config context remove CONTEXT-NAME` @@ -241,7 +241,7 @@ DESCRIPTION Delete a context from the store ``` -_See code: [src/commands/config/context/remove.ts](https://github.com/asyncapi/cli/blob/v0.58.9/src/commands/config/context/remove.ts)_ +_See code: [src/commands/config/context/remove.ts](https://github.com/asyncapi/cli/blob/v0.58.10/src/commands/config/context/remove.ts)_ ## `asyncapi config context use CONTEXT-NAME` @@ -261,7 +261,7 @@ DESCRIPTION Set a context as current ``` -_See code: [src/commands/config/context/use.ts](https://github.com/asyncapi/cli/blob/v0.58.9/src/commands/config/context/use.ts)_ +_See code: [src/commands/config/context/use.ts](https://github.com/asyncapi/cli/blob/v0.58.10/src/commands/config/context/use.ts)_ ## `asyncapi config versions` @@ -278,7 +278,7 @@ DESCRIPTION Show versions of AsyncAPI tools used ``` -_See code: [src/commands/config/versions.ts](https://github.com/asyncapi/cli/blob/v0.58.9/src/commands/config/versions.ts)_ +_See code: [src/commands/config/versions.ts](https://github.com/asyncapi/cli/blob/v0.58.10/src/commands/config/versions.ts)_ ## `asyncapi convert [SPEC-FILE]` @@ -300,7 +300,7 @@ DESCRIPTION Convert asyncapi documents older to newer versions ``` -_See code: [src/commands/convert.ts](https://github.com/asyncapi/cli/blob/v0.58.9/src/commands/convert.ts)_ +_See code: [src/commands/convert.ts](https://github.com/asyncapi/cli/blob/v0.58.10/src/commands/convert.ts)_ ## `asyncapi diff OLD NEW` @@ -355,7 +355,7 @@ DESCRIPTION Find diff between two asyncapi files ``` -_See code: [src/commands/diff.ts](https://github.com/asyncapi/cli/blob/v0.58.9/src/commands/diff.ts)_ +_See code: [src/commands/diff.ts](https://github.com/asyncapi/cli/blob/v0.58.10/src/commands/diff.ts)_ ## `asyncapi generate` @@ -369,7 +369,7 @@ DESCRIPTION Generate typed models or other things like clients, applications or docs using AsyncAPI Generator templates. ``` -_See code: [src/commands/generate/index.ts](https://github.com/asyncapi/cli/blob/v0.58.9/src/commands/generate/index.ts)_ +_See code: [src/commands/generate/index.ts](https://github.com/asyncapi/cli/blob/v0.58.10/src/commands/generate/index.ts)_ ## `asyncapi generate fromTemplate ASYNCAPI TEMPLATE` @@ -406,7 +406,7 @@ EXAMPLES $ asyncapi generate fromTemplate asyncapi.yaml @asyncapi/html-template --param version=1.0.0 singleFile=true --output ./docs --force-write ``` -_See code: [src/commands/generate/fromTemplate.ts](https://github.com/asyncapi/cli/blob/v0.58.9/src/commands/generate/fromTemplate.ts)_ +_See code: [src/commands/generate/fromTemplate.ts](https://github.com/asyncapi/cli/blob/v0.58.10/src/commands/generate/fromTemplate.ts)_ ## `asyncapi generate models LANGUAGE FILE` @@ -480,7 +480,7 @@ DESCRIPTION Generates typed models ``` -_See code: [src/commands/generate/models.ts](https://github.com/asyncapi/cli/blob/v0.58.9/src/commands/generate/models.ts)_ +_See code: [src/commands/generate/models.ts](https://github.com/asyncapi/cli/blob/v0.58.10/src/commands/generate/models.ts)_ ## `asyncapi new` @@ -535,7 +535,7 @@ EXAMPLES $ asyncapi new --file-name=my-asyncapi.yml --example=default-example.yml --no-tty - create a new file with a specific name, using one of the examples and without interactive mode ``` -_See code: [src/commands/new/index.ts](https://github.com/asyncapi/cli/blob/v0.58.9/src/commands/new/index.ts)_ +_See code: [src/commands/new/index.ts](https://github.com/asyncapi/cli/blob/v0.58.10/src/commands/new/index.ts)_ ## `asyncapi new file` @@ -590,7 +590,7 @@ EXAMPLES $ asyncapi new --file-name=my-asyncapi.yml --example=default-example.yml --no-tty - create a new file with a specific name, using one of the examples and without interactive mode ``` -_See code: [src/commands/new/file.ts](https://github.com/asyncapi/cli/blob/v0.58.9/src/commands/new/file.ts)_ +_See code: [src/commands/new/file.ts](https://github.com/asyncapi/cli/blob/v0.58.10/src/commands/new/file.ts)_ ## `asyncapi new glee` @@ -608,7 +608,7 @@ DESCRIPTION Creates a new Glee project ``` -_See code: [src/commands/new/glee.ts](https://github.com/asyncapi/cli/blob/v0.58.9/src/commands/new/glee.ts)_ +_See code: [src/commands/new/glee.ts](https://github.com/asyncapi/cli/blob/v0.58.10/src/commands/new/glee.ts)_ ## `asyncapi new project` @@ -626,7 +626,7 @@ DESCRIPTION Creates a new Glee project ``` -_See code: [src/commands/new/project.ts](https://github.com/asyncapi/cli/blob/v0.58.9/src/commands/new/project.ts)_ +_See code: [src/commands/new/project.ts](https://github.com/asyncapi/cli/blob/v0.58.10/src/commands/new/project.ts)_ ## `asyncapi optimize [SPEC-FILE]` @@ -662,7 +662,7 @@ EXAMPLES $ asyncapi optimize ./asyncapi.yaml --optimization=remove-components,reuse-components,move-to-components --output=terminal --no-tty ``` -_See code: [src/commands/optimize.ts](https://github.com/asyncapi/cli/blob/v0.58.9/src/commands/optimize.ts)_ +_See code: [src/commands/optimize.ts](https://github.com/asyncapi/cli/blob/v0.58.10/src/commands/optimize.ts)_ ## `asyncapi start` @@ -676,7 +676,7 @@ DESCRIPTION Start asyncapi studio ``` -_See code: [src/commands/start/index.ts](https://github.com/asyncapi/cli/blob/v0.58.9/src/commands/start/index.ts)_ +_See code: [src/commands/start/index.ts](https://github.com/asyncapi/cli/blob/v0.58.10/src/commands/start/index.ts)_ ## `asyncapi start studio` @@ -695,7 +695,7 @@ DESCRIPTION starts a new local instance of Studio ``` -_See code: [src/commands/start/studio.ts](https://github.com/asyncapi/cli/blob/v0.58.9/src/commands/start/studio.ts)_ +_See code: [src/commands/start/studio.ts](https://github.com/asyncapi/cli/blob/v0.58.10/src/commands/start/studio.ts)_ ## `asyncapi validate [SPEC-FILE]` @@ -722,5 +722,5 @@ DESCRIPTION validate asyncapi file ``` -_See code: [src/commands/validate.ts](https://github.com/asyncapi/cli/blob/v0.58.9/src/commands/validate.ts)_ +_See code: [src/commands/validate.ts](https://github.com/asyncapi/cli/blob/v0.58.10/src/commands/validate.ts)_ From a070264387ce180c8d30289c76af77710e80b9d7 Mon Sep 17 00:00:00 2001 From: Vikas Rushi <88543171+0xVikasRushi@users.noreply.github.com> Date: Fri, 20 Oct 2023 18:17:48 +0530 Subject: [PATCH 037/134] fix: navbar case studies text is split into two (#2223) Co-authored-by: Aishat Muibudeen <105395613+Mayaleeeee@users.noreply.github.com>%0ACo-authored-by: Akshat Nema <76521428+akshatnema@users.noreply.github.com> --- components/navigation/NavBar.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/components/navigation/NavBar.js b/components/navigation/NavBar.js index ae30f472933..630e74aadf6 100644 --- a/components/navigation/NavBar.js +++ b/components/navigation/NavBar.js @@ -105,7 +105,7 @@ export default function NavBar({ return (
Skip to main content -
+
{!hideLogo && (
From 4aa0b0da6a1f461d191275a21b2f84502c82fb0d Mon Sep 17 00:00:00 2001 From: Atharv Chandratre Date: Fri, 20 Oct 2023 08:14:34 -0500 Subject: [PATCH 038/134] test: parallelizing cypress tests to speed up pipeline (#2155) Co-authored-by: Akshat Nema <76521428+akshatnema@users.noreply.github.com> --- .github/workflows/cypress-tests.yml | 10 ++++++---- cypress-parallel.js | 31 +++++++++++++++++++++++++++++ cypress.config.js | 3 +++ cypress/support/commands.js | 2 +- cypress/support/component.js | 2 +- 5 files changed, 42 insertions(+), 6 deletions(-) create mode 100644 cypress-parallel.js diff --git a/.github/workflows/cypress-tests.yml b/.github/workflows/cypress-tests.yml index 11dd4a8f8bc..d596ea595d6 100644 --- a/.github/workflows/cypress-tests.yml +++ b/.github/workflows/cypress-tests.yml @@ -9,19 +9,21 @@ on: jobs: cypress-run: runs-on: ubuntu-latest - + strategy: + fail-fast: false + matrix: + containers: [0, 1, 2, 3, 4, 5, 6, 7] steps: - name: Checkout code uses: actions/checkout@v3 - + - name: Use Node.js 16.x uses: actions/setup-node@v3 with: node-version: 16.x - - name: Install dependencies run: npm install - name: Cypress Tests are running - run : node ./scripts/index.js && npm run test + run: node ./scripts/index.js && npx cypress run --component --spec $(node cypress-parallel.js ${{ matrix.containers }} 8) diff --git a/cypress-parallel.js b/cypress-parallel.js new file mode 100644 index 00000000000..18a842c0e57 --- /dev/null +++ b/cypress-parallel.js @@ -0,0 +1,31 @@ +const fs = require('fs'); +const path = require('path'); + +const NODE_INDEX = Number(process.argv[2] || 1); +const NODE_TOTAL = Number(process.argv[3] || 1); + +const TEST_FOLDER = './cypress/test'; + +console.log(getSpecFiles().join(',')) + +function getSpecFiles() { + const allSpecFiles = traverse(TEST_FOLDER); + const node_index= NODE_INDEX +1; + return allSpecFiles.sort() + .filter((_, index) => (index % NODE_TOTAL) === (node_index - 1)); + +} + +function traverse(dir) { + let files = fs.readdirSync(dir); + files = files.map(file => { + const filePath = path.join(dir, file); + const stats = fs.statSync(filePath); + if (stats.isDirectory()) return traverse(filePath); + else if (stats.isFile())return filePath; + }); + + return files + .reduce((all, folderContents) => all.concat(folderContents), []); + +} diff --git a/cypress.config.js b/cypress.config.js index b94b7e93f5f..5a09da35b57 100644 --- a/cypress.config.js +++ b/cypress.config.js @@ -9,4 +9,7 @@ module.exports = defineConfig({ video : false, screenshotOnRunFailure : false }, + retries: { + runMode: 3 + } }); diff --git a/cypress/support/commands.js b/cypress/support/commands.js index 66ea16ef0e3..119ab03f7cd 100644 --- a/cypress/support/commands.js +++ b/cypress/support/commands.js @@ -22,4 +22,4 @@ // // // -- This will overwrite an existing command -- -// Cypress.Commands.overwrite('visit', (originalFn, url, options) => { ... }) \ No newline at end of file +// Cypress.Commands.overwrite('visit', (originalFn, url, options) => { ... }) diff --git a/cypress/support/component.js b/cypress/support/component.js index 74a4436ff16..e73bc7198d5 100644 --- a/cypress/support/component.js +++ b/cypress/support/component.js @@ -25,4 +25,4 @@ import '../../styles/globals.css' Cypress.Commands.add('mount', mount) // Example use: -// cy.mount() \ No newline at end of file +// cy.mount() From 7735f4c40c92d91d035367be52c2b1235652a23d Mon Sep 17 00:00:00 2001 From: Davor Runje Date: Fri, 20 Oct 2023 17:05:35 +0200 Subject: [PATCH 039/134] chore: add FastStream to the tools list (#2241) Co-authored-by: Akshat Nema <76521428+akshatnema@users.noreply.github.com>%0ACo-authored-by: akshatnema --- config/tools-manual.json | 26 ++++++++++++++++++++++++++ 1 file changed, 26 insertions(+) diff --git a/config/tools-manual.json b/config/tools-manual.json index c3fc4bbd7e0..071818f1c46 100644 --- a/config/tools-manual.json +++ b/config/tools-manual.json @@ -141,6 +141,19 @@ "technology": [".NET"], "categories": ["code-first"] } + }, + { + "title": "FastStream", + "description": "A powerful and easy-to-use Python framework for building asynchronous services interacting with event streams such as Apache Kafka, RabbitMQ and NATS.", + "links": { + "websiteUrl": "https://faststream.airt.ai", + "repoUrl": "https://github.com/airtai/FastStream" + }, + "filters": { + "language": "Python", + "categories": ["code-first", "framework"], + "hasCommercial": false + } } ] }, @@ -404,6 +417,19 @@ "technology": ["Flask"], "categories": ["framework"] } + }, + { + "title": "FastStream", + "description": "A powerful and easy-to-use Python framework for building asynchronous services interacting with event streams such as Apache Kafka, RabbitMQ and NATS.", + "links": { + "websiteUrl": "https://faststream.airt.ai", + "repoUrl": "https://github.com/airtai/FastStream" + }, + "filters": { + "language": "Python", + "categories": ["code-first", "framework"], + "hasCommercial": false + } } ] }, From 6ba5386cc31dd3ab795e7832a9fd1e1ec5dd477d Mon Sep 17 00:00:00 2001 From: asyncapi-bot Date: Sat, 21 Oct 2023 02:27:05 +0200 Subject: [PATCH 040/134] chore: update meetings.json and newsrooom_videos.json (#2258) --- config/newsroom_videos.json | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/config/newsroom_videos.json b/config/newsroom_videos.json index c5d1cd36613..ecc29ef9a86 100644 --- a/config/newsroom_videos.json +++ b/config/newsroom_videos.json @@ -1,4 +1,10 @@ [ + { + "image_url": "https://i.ytimg.com/vi/FN5eR1Zqh9c/hqdefault.jpg", + "title": "AsyncAPI Conf on Tour 2023 in Madrid", + "description": "AACoT'23 Madrid Edition streamed live from StageOne at SNGULAR.", + "videoId": "FN5eR1Zqh9c" + }, { "image_url": "https://i.ytimg.com/vi/zSbv4ibqYds/hqdefault.jpg", "title": "Community Meeting(October 17th, 2023)", @@ -22,11 +28,5 @@ "title": "Community meeting (September 19, 2023)", "description": "https://github.com/asyncapi/community/issues/874.", "videoId": "SfATYVwcSQk" - }, - { - "image_url": "https://i.ytimg.com/vi/OYcOkQhwVNg/hqdefault.jpg", - "title": "Spec 3.0 meeting (September 6, 2023)", - "description": "https://github.com/asyncapi/community/issues/857.", - "videoId": "OYcOkQhwVNg" } ] \ No newline at end of file From d16b2d772b29cac80de5548e172c8dac8d3a8b22 Mon Sep 17 00:00:00 2001 From: Nishanth <122528380+Nishanth019@users.noreply.github.com> Date: Sat, 21 Oct 2023 13:40:51 +0530 Subject: [PATCH 041/134] fix: dropdown Description Text Overlapping Issue (#2256) (#2257) Co-authored-by: Akshat Nema <76521428+akshatnema@users.noreply.github.com>%0ACo-authored-by: akshatnema --- components/navigation/MenuBlocks.js | 4 ++-- package-lock.json | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/components/navigation/MenuBlocks.js b/components/navigation/MenuBlocks.js index 8125bf9041c..ae9d9ff7049 100644 --- a/components/navigation/MenuBlocks.js +++ b/components/navigation/MenuBlocks.js @@ -20,11 +20,11 @@ export default function MenuBlocks ({
-
+
{ item.title } { item.comingSoon && - + {item.description}
diff --git a/package-lock.json b/package-lock.json index 03f341d3924..1857e928a5b 100644 --- a/package-lock.json +++ b/package-lock.json @@ -23391,4 +23391,4 @@ "integrity": "sha512-bXE4cR/kVZhKZX/RjPEflHaKVhUVl85noU3v6b8apfQEc1x4A+zBxjZ4lN8LqGd6WZ3dl98pY4o717VFmoPp+A==" } } -} +} \ No newline at end of file From 34e155593a942580990297e6aa4ce2c8ace8e06c Mon Sep 17 00:00:00 2001 From: asyncapi-bot Date: Sun, 22 Oct 2023 02:30:03 +0200 Subject: [PATCH 042/134] chore: update meetings.json and newsrooom_videos.json (#2259) --- config/meetings.json | 7 --- dashboard.json | 118 ++++++++++++++++++++----------------------- package-lock.json | 2 +- 3 files changed, 57 insertions(+), 70 deletions(-) diff --git a/config/meetings.json b/config/meetings.json index b9753a74caa..7453482b53a 100644 --- a/config/meetings.json +++ b/config/meetings.json @@ -6,13 +6,6 @@ "banner": "", "date": "2023-07-19T16:00:00.000Z" }, - { - "title": "Open Standards and Private Products: A DevRel's Dream or Nightmare", - "calLink": "https://www.google.com/calendar/event?eid=dHMzZ3Q0b2h2NDRuaTVrMTQ3cmsxYzk2bzAgY19xOXRzZWlnbG9tZHNqNm5qdWh2YnB0czExY0Bn", - "url": "https://github.com/asyncapi/community/issues/775", - "banner": "https://user-images.githubusercontent.com/66913810/249772860-0b6c73a5-a740-4fac-a22d-2d95f823ae07.png", - "date": "2023-07-13T09:00:00.000Z" - }, { "title": "Spec 3.0 Docs Meeting", "calLink": "https://www.google.com/calendar/event?eid=NzU0aGMxOWY5MmYyYzA3OTduazF0MWZqY2MgY19xOXRzZWlnbG9tZHNqNm5qdWh2YnB0czExY0Bn", diff --git a/dashboard.json b/dashboard.json index 89f8bfb5eb3..a12af36342a 100644 --- a/dashboard.json +++ b/dashboard.json @@ -1,5 +1,21 @@ { "hotDiscussions": [ + { + "id": "MDU6SXNzdWUzNjkwNDExMDc=", + "isPR": false, + "isAssigned": false, + "title": "Support request/reply pattern", + "author": "adrianhopebailie", + "resourcePath": "/asyncapi/spec/issues/94", + "repo": "asyncapi/spec", + "labels": [ + { + "name": "keep-open", + "color": "fce250" + } + ], + "score": 41.35314077989326 + }, { "id": "PR_kwDOBW5R_c5Xb72L", "isPR": true, @@ -9,7 +25,7 @@ "resourcePath": "/asyncapi/website/pull/2038", "repo": "asyncapi/website", "labels": [], - "score": 37.619871126152894 + "score": 38.48139489240067 }, { "id": "PR_kwDOFLhIt85Vmgtj", @@ -20,7 +36,7 @@ "resourcePath": "/asyncapi/community/pull/805", "repo": "asyncapi/community", "labels": [], - "score": 27.56876051992884 + "score": 28.430284286176615 }, { "id": "I_kwDODou01c5AqLB8", @@ -54,6 +70,30 @@ ], "score": 18.666348268701817 }, + { + "id": "PR_kwDOBW5R_c5VAjCE", + "isPR": true, + "isAssigned": true, + "title": "docs: structure of a AsyncAPI document", + "author": "TRohit20", + "resourcePath": "/asyncapi/website/pull/1922", + "repo": "asyncapi/website", + "labels": [ + { + "name": "📑 docs", + "color": "E50E99" + }, + { + "name": "area/docs", + "color": "e50e99" + }, + { + "name": "gsod", + "color": "7B5DB8" + } + ], + "score": 17.517649913704783 + }, { "id": "PR_kwDOBW5R_c5Worbr", "isPR": true, @@ -63,7 +103,7 @@ "resourcePath": "/asyncapi/website/pull/2008", "repo": "asyncapi/website", "labels": [], - "score": 16.65612614745701 + "score": 16.943300736206268 }, { "id": "I_kwDOCVQpZM5M_dcV", @@ -107,17 +147,6 @@ "labels": [], "score": 15.220253203710714 }, - { - "id": "MDU6SXNzdWUxMjMwODQwMDM4", - "isPR": false, - "isAssigned": false, - "title": "Usages of allOf within message payload could be flattened", - "author": "jamescrowley", - "resourcePath": "/asyncapi/asyncapi-react/issues/596", - "repo": "asyncapi/asyncapi-react", - "labels": [], - "score": 14.358729437462937 - }, { "id": "PR_kwDOFLhIt85bqKL8", "isPR": true, @@ -127,34 +156,18 @@ "resourcePath": "/asyncapi/community/pull/897", "repo": "asyncapi/community", "labels": [], - "score": 14.358729437462937 - }, - { - "id": "PR_kwDOCoBobc42aMuI", - "isPR": true, - "isAssigned": false, - "title": "feat: release for version 3.0.0 of the spec", - "author": "jonaslagoni", - "resourcePath": "/asyncapi/parser-js/pull/526", - "repo": "asyncapi/parser-js", - "labels": [], - "score": 13.497205671215161 + "score": 14.645904026212197 }, { - "id": "I_kwDOBW5R_c5RVOOY", + "id": "MDU6SXNzdWUxMjMwODQwMDM4", "isPR": false, "isAssigned": false, - "title": "Community cards implementation.", - "author": "Mayaleeeee", - "resourcePath": "/asyncapi/website/issues/930", - "repo": "asyncapi/website", - "labels": [ - { - "name": "Hacktoberfest", - "color": "FF8AE2" - } - ], - "score": 13.210031082465903 + "title": "Usages of allOf within message payload could be flattened", + "author": "jamescrowley", + "resourcePath": "/asyncapi/asyncapi-react/issues/596", + "repo": "asyncapi/asyncapi-react", + "labels": [], + "score": 14.358729437462937 } ], "goodFirstIssues": [ @@ -730,29 +743,6 @@ } ] }, - { - "id": "I_kwDOE8Qh385m6IlQ", - "title": "Add runtime testing for Kotlin", - "isAssigned": false, - "resourcePath": "/asyncapi/modelina/issues/1334", - "repo": "asyncapi/modelina", - "author": "jonaslagoni", - "area": "Unknown", - "labels": [ - { - "name": "enhancement", - "color": "a2eeef" - }, - { - "name": "stale", - "color": "ededed" - }, - { - "name": "Kotlin generator", - "color": "61A95C" - } - ] - }, { "id": "I_kwDOBW5R_c5mwLzC", "title": "[📑 Docs]: Create an Onboarding guide for technical writers", @@ -828,7 +818,7 @@ { "id": "I_kwDOFi_gUM5hpuWl", "title": "Improve kafka adapter", - "isAssigned": false, + "isAssigned": true, "resourcePath": "/asyncapi/glee/issues/411", "repo": "asyncapi/glee", "author": "KhudaDad414", @@ -1129,6 +1119,10 @@ { "name": "enhancement", "color": "a2eeef" + }, + { + "name": "stale", + "color": "ededed" } ] } diff --git a/package-lock.json b/package-lock.json index 1857e928a5b..03f341d3924 100644 --- a/package-lock.json +++ b/package-lock.json @@ -23391,4 +23391,4 @@ "integrity": "sha512-bXE4cR/kVZhKZX/RjPEflHaKVhUVl85noU3v6b8apfQEc1x4A+zBxjZ4lN8LqGd6WZ3dl98pY4o717VFmoPp+A==" } } -} \ No newline at end of file +} From 949185aa7cbc122a635936cad09983b55f30adbf Mon Sep 17 00:00:00 2001 From: asyncapi-bot Date: Mon, 23 Oct 2023 02:28:36 +0200 Subject: [PATCH 043/134] chore: update tools.json (#2260) --- config/tools-automated.json | 138 ++++++++++++++++++------------------ config/tools.json | 2 +- 2 files changed, 70 insertions(+), 70 deletions(-) diff --git a/config/tools-automated.json b/config/tools-automated.json index 9d5f30e00c0..c02c37e7c81 100644 --- a/config/tools-automated.json +++ b/config/tools-automated.json @@ -72,41 +72,41 @@ } }, { - "title": "SIO-AsyncAPI", - "description": "This is code-first approach to generate AsyncAPI specification from Socket.IO server.", + "title": "nestjs-asyncapi", + "description": "Utilize decorators to generate AsyncAPI document utilizing DTOs (similar to @nestjs/swagger) and a web UI.", "links": { - "websiteUrl": "https://github.com/daler-rahimov/sio-asyncapi", - "docsUrl": "https://github.com/daler-rahimov/sio-asyncapi", - "repoUrl": "https://github.com/daler-rahimov/sio-asyncapi" + "repoUrl": "https://github.com/flamewow/nestjs-asyncapi" }, "filters": { - "language": "Python", + "language": "Typescript", "technology": [ - "Socket.IO", - "Flask" + "Node.js", + "NestJS" ], "categories": [ - "code-first", - "api" + "code-first" ], "hasCommercial": false, "isAsyncAPIOwner": false } }, { - "title": "nestjs-asyncapi", - "description": "Utilize decorators to generate AsyncAPI document utilizing DTOs (similar to @nestjs/swagger) and a web UI.", + "title": "SIO-AsyncAPI", + "description": "This is code-first approach to generate AsyncAPI specification from Socket.IO server.", "links": { - "repoUrl": "https://github.com/flamewow/nestjs-asyncapi" + "websiteUrl": "https://github.com/daler-rahimov/sio-asyncapi", + "docsUrl": "https://github.com/daler-rahimov/sio-asyncapi", + "repoUrl": "https://github.com/daler-rahimov/sio-asyncapi" }, "filters": { - "language": "Typescript", + "language": "Python", "technology": [ - "Node.js", - "NestJS" + "Socket.IO", + "Flask" ], "categories": [ - "code-first" + "code-first", + "api" ], "hasCommercial": false, "isAsyncAPIOwner": false @@ -143,6 +143,21 @@ "isAsyncAPIOwner": false } }, + { + "title": "Golang AsyncAPI Code Generator", + "description": "Generate Go user and application boilerplate from AsyncAPI specifications. Can be called from `go generate` without requirements.\n", + "links": { + "repoUrl": "https://github.com/lerenn/asyncapi-codegen" + }, + "filters": { + "language": "golang", + "categories": [ + "code-generator" + ], + "hasCommercial": false, + "isAsyncAPIOwner": false + } + }, { "title": "AsyncAPI Modelina", "description": "Generate payload models into Java, TypeScript, Go, etc, you name it, from AsyncAPI documents. This tool gives you full control over the models through high customization", @@ -163,21 +178,6 @@ "hasCommercial": false, "isAsyncAPIOwner": true } - }, - { - "title": "Golang AsyncAPI Code Generator", - "description": "Generate Go user and application boilerplate from AsyncAPI specifications. Can be called from `go generate` without requirements.\n", - "links": { - "repoUrl": "https://github.com/lerenn/asyncapi-codegen" - }, - "filters": { - "language": "golang", - "categories": [ - "code-generator" - ], - "hasCommercial": false, - "isAsyncAPIOwner": false - } } ] }, @@ -462,25 +462,6 @@ "CLIs": { "description": "The following is a list of tools that you can work with in terminal or do some CI/CD automation.", "toolsList": [ - { - "title": "AsyncAPI CLI", - "description": "One CLI to rule them all. \nThis is a CLI that aims to integrate all AsyncAPI tools that you need while AsyncAPI document development and maintainance. \nYou can use it to generate docs or code, validate AsyncAPI document and event create new documents.\n", - "links": { - "websiteUrl": "https://www.asyncapi.com/tools/cli", - "repoUrl": "https://github.com/asyncapi/cli" - }, - "filters": { - "technology": [ - "TypeScript" - ], - "categories": [ - "others", - "cli" - ], - "hasCommercial": false, - "isAsyncAPIOwner": true - } - }, { "title": "ZenWave SDK", "description": "DDD and API-First for Event-Driven Microservices", @@ -506,6 +487,25 @@ "hasCommercial": false, "isAsyncAPIOwner": false } + }, + { + "title": "AsyncAPI CLI", + "description": "One CLI to rule them all. \nThis is a CLI that aims to integrate all AsyncAPI tools that you need while AsyncAPI document development and maintainance. \nYou can use it to generate docs or code, validate AsyncAPI document and event create new documents.\n", + "links": { + "websiteUrl": "https://www.asyncapi.com/tools/cli", + "repoUrl": "https://github.com/asyncapi/cli" + }, + "filters": { + "technology": [ + "TypeScript" + ], + "categories": [ + "others", + "cli" + ], + "hasCommercial": false, + "isAsyncAPIOwner": true + } } ] }, @@ -598,20 +598,15 @@ "description": "The following is a list of templates compatible with AsyncAPI Generator. You can use them to generate apps, clients or documentation from your AsyncAPI documents.", "toolsList": [ { - "title": "Java Spring Template", - "description": "Java Spring template for the AsyncAPI Generator", + "title": "Node.js Websockets Template", + "description": "Node.js WebSockets template for the AsyncAPI Generator. It showcases how from a single AsyncAPI document you can generate a server and a client at the same time.", "links": { - "repoUrl": "https://github.com/asyncapi/java-spring-template" + "repoUrl": "https://github.com/asyncapi/nodejs-ws-template" }, "filters": { - "language": [ - "Java", - "javascript" - ], + "language": "javascript", "technology": [ - "Springboot", - "Maven", - "Gradle" + "Node.js" ], "categories": [ "generator-template" @@ -621,10 +616,10 @@ } }, { - "title": "Node.js Websockets Template", - "description": "Node.js WebSockets template for the AsyncAPI Generator. It showcases how from a single AsyncAPI document you can generate a server and a client at the same time.", + "title": "Node.js Multiprotocol Template", + "description": "This template generates a server using your AsyncAPI document. It supports multiple different protocols, like Kafka or MQTT. It is designed in the way that generated code is a library and with it's API you can start the server, send messages or register a middleware for listening incoming messages. Runtime message validation included.", "links": { - "repoUrl": "https://github.com/asyncapi/nodejs-ws-template" + "repoUrl": "https://github.com/asyncapi/nodejs-template" }, "filters": { "language": "javascript", @@ -639,15 +634,20 @@ } }, { - "title": "Node.js Multiprotocol Template", - "description": "This template generates a server using your AsyncAPI document. It supports multiple different protocols, like Kafka or MQTT. It is designed in the way that generated code is a library and with it's API you can start the server, send messages or register a middleware for listening incoming messages. Runtime message validation included.", + "title": "Java Spring Template", + "description": "Java Spring template for the AsyncAPI Generator", "links": { - "repoUrl": "https://github.com/asyncapi/nodejs-template" + "repoUrl": "https://github.com/asyncapi/java-spring-template" }, "filters": { - "language": "javascript", + "language": [ + "Java", + "javascript" + ], "technology": [ - "Node.js" + "Springboot", + "Maven", + "Gradle" ], "categories": [ "generator-template" diff --git a/config/tools.json b/config/tools.json index 63d60b1e74b..f72005d5bf0 100644 --- a/config/tools.json +++ b/config/tools.json @@ -1 +1 @@ -{"APIs":{"description":"The following is a list of APIs that expose functionality related to AsyncAPI.","toolsList":[{"title":"API Tracker - AsyncAPI specs","description":"Explore APIs and companies with public AsyncAPI specifications.","links":{"websiteUrl":"https://apitracker.io/specifications/asyncapi","repoUrl":""},"filters":{"categories":["api","directory"],"hasCommercial":false,"isAsyncAPIOwner":false,"technology":[]}},{"title":"AsyncAPI Server API","description":"Server API providing official AsyncAPI tools","links":{"websiteUrl":"https://api.asyncapi.com/v1","docsUrl":"https://api.asyncapi.com/v1/docs","repoUrl":"https://github.com/asyncapi/server-api"},"filters":{"technology":[{"name":"Node.js","color":"bg-[#BDFF67]","borderColor":"border-[#84CE24]"},{"name":"TypeScript","color":"bg-[#61d0f2]","borderColor":"border-[#40ccf7]"}],"categories":["api"],"hasCommercial":false,"isAsyncAPIOwner":true}},{"title":"AsyncAPI-Directory by APIs.guru","description":"Directory of asynchronous API specifications in AsyncAPI format.","links":{"websiteUrl":"https://apis.guru/asyncapi-directory/","repoUrl":"https://github.com/APIs-guru/asyncapi-directory"},"filters":{"language":[{"name":"JavaScript","color":"bg-[#F2F1C7]","borderColor":"border-[#BFBE86]"}],"technology":[{"name":"Node.js","color":"bg-[#BDFF67]","borderColor":"border-[#84CE24]"},{"name":"Liquid","color":"bg-[#61d0f2]","borderColor":"border-[#40ccf7]"}],"categories":["api","directory"],"hasCommercial":false,"isAsyncAPIOwner":false}},{"title":"SIO-AsyncAPI","description":"This is code-first approach to generate AsyncAPI specification from Socket.IO server.","links":{"websiteUrl":"https://github.com/daler-rahimov/sio-asyncapi","docsUrl":"https://github.com/daler-rahimov/sio-asyncapi","repoUrl":"https://github.com/daler-rahimov/sio-asyncapi"},"filters":{"language":[{"name":"Python","color":"bg-[#A8D0EF]","borderColor":"border-[#3878AB]"}],"technology":[{"name":"Socket.IO","color":"bg-[#61d0f2]","borderColor":"border-[#40ccf7]"},{"name":"Flask","color":"bg-[#D7C7F2]","borderColor":"border-[#A387D2]"}],"categories":["code-first","api"],"hasCommercial":false,"isAsyncAPIOwner":false}}]},"Code-first tools":{"description":"The following is a list of tools that generate AsyncAPI documents from your code.","toolsList":[{"title":"AsyncAPI.Net","description":"The AsyncAPI.NET SDK contains a useful object model for AsyncAPI documents in .NET along with common serializers to extract raw OpenAPI JSON and YAML documents from the model.","links":{"websiteUrl":"https://github.com/LEGO/AsyncAPI.NET/","repoUrl":"https://github.com/LEGO/AsyncAPI.NET"},"filters":{"language":[{"name":"C#","color":"bg-[#E3AFE0]","borderColor":"border-[#9B4F96]"}],"technology":[{"name":".NET","color":"bg-[#A184FF]","borderColor":"border-[#5026D4]"},{"name":"ASP.NET","color":"bg-[#71C2FB]","borderColor":"border-[#1577BC]"}],"categories":["converters","code-first","validator"],"hasCommercial":false,"isAsyncAPIOwner":false}},{"title":"EventBridge Atlas","description":"Tool that translates your AWS EventBridge Schemas into an AsyncAPI document and a web UI.","links":{"websiteUrl":"https://eventbridge-atlas.netlify.app/","repoUrl":"https://github.com/boyney123/eventbridge-atlas"},"filters":{"technology":[{"name":"Node.js","color":"bg-[#BDFF67]","borderColor":"border-[#84CE24]"}],"categories":["code-first"],"hasCommercial":false,"isAsyncAPIOwner":false}},{"title":"Go AsyncAPI","description":"This library helps to create AsyncAPI spec from your Go message structures. It uses reflection to translate Go structures in JSON Schema definitions and arrange them in AsyncAPI schema.","links":{"repoUrl":"https://github.com/swaggest/go-asyncapi"},"filters":{"language":[{"name":"Go/Golang","color":"bg-[#8ECFDF]","borderColor":"border-[#00AFD9]"}],"categories":["code-first"],"hasCommercial":false,"isAsyncAPIOwner":false,"technology":[]}},{"title":"Java AsyncAPI","description":"This tool stores modules, which simplifies interacting with AsyncAPI in jvm ecosystem.","links":{"repoUrl":"https://github.com/asyncapi/jasyncapi"},"filters":{"language":[{"name":"Java","color":"bg-[#ECA2A4]","borderColor":"border-[#EC2125]"}],"technology":[{"name":"Kotlin","color":"bg-[#61d0f2]","borderColor":"border-[#40ccf7]"},{"name":"Maven","color":"bg-[#FF6B80]","borderColor":"border-[#CA1A33]"}],"categories":["code-first"],"hasCommercial":false,"isAsyncAPIOwner":true}},{"title":"KnstEventBus","description":"AsyncApi code-first tools for c#. Generates document and view.","links":{"repoUrl":"https://github.com/d0972058277/KnstEventBus"},"filters":{"language":[{"name":"C#","color":"bg-[#E3AFE0]","borderColor":"border-[#9B4F96]"}],"technology":[{"name":"ASP.NET","color":"bg-[#71C2FB]","borderColor":"border-[#1577BC]"},{"name":".NET","color":"bg-[#A184FF]","borderColor":"border-[#5026D4]"}],"categories":["code-first","documentation-generator"],"hasCommercial":false,"isAsyncAPIOwner":false}},{"title":"Kotlin AsyncAPI","description":"The Kotlin AsyncAPI project aims to provide convenience tools for generating and serving AsyncAPI documentation. The core of this project is a Kotlin DSL for building the specification in a typesafe way.","links":{"repoUrl":"https://github.com/OpenFolder/kotlin-asyncapi"},"filters":{"language":[{"name":"Kotlin","color":"bg-[#B1ACDF]","borderColor":"border-[#756BD9]"}],"technology":[{"name":"Springboot","color":"bg-[#98E279]","borderColor":"border-[#68BC44]"},{"name":"Maven","color":"bg-[#FF6B80]","borderColor":"border-[#CA1A33]"}],"categories":["code-first"],"hasCommercial":false,"isAsyncAPIOwner":false}},{"title":"nestjs-asyncapi","description":"Utilize decorators to generate AsyncAPI document utilizing DTOs (similar to @nestjs/swagger) and a web UI.","links":{"repoUrl":"https://github.com/flamewow/nestjs-asyncapi"},"filters":{"language":[{"name":"TypeScript","color":"bg-[#7DBCFE]","borderColor":"border-[#2C78C7]"}],"technology":[{"name":"Node.js","color":"bg-[#BDFF67]","borderColor":"border-[#84CE24]"},{"name":"Nest Js","color":"bg-[#E1224E]","borderColor":"border-[#B9012b]"}],"categories":["code-first"],"hasCommercial":false,"isAsyncAPIOwner":false}},{"title":"Neuroglia AsyncAPI","description":"A .NET SDK for the Async API specification. Automatically generates and serves AsyncAPI documents based on your code. Includes fluent-builders to create AsyncAPI documents from scratch, and provides a web-based GUI to browse generated documents.","links":{"repoUrl":"https://github.com/neuroglia-io/AsyncApi"},"filters":{"language":[{"name":"C#","color":"bg-[#E3AFE0]","borderColor":"border-[#9B4F96]"}],"technology":[{"name":".NET","color":"bg-[#A184FF]","borderColor":"border-[#5026D4]"}],"categories":["code-first"],"hasCommercial":false,"isAsyncAPIOwner":false}},{"title":"Saunter","description":"Saunter is an AsyncAPI documentation generator for dotnet. Generates (and hosts) an AsyncAPI schema document from your code.","links":{"repoUrl":"https://github.com/tehmantra/saunter"},"filters":{"language":[{"name":"C#","color":"bg-[#E3AFE0]","borderColor":"border-[#9B4F96]"}],"technology":[{"name":".NET","color":"bg-[#A184FF]","borderColor":"border-[#5026D4]"},{"name":"ASP.NET","color":"bg-[#71C2FB]","borderColor":"border-[#1577BC]"}],"categories":["code-first"],"hasCommercial":false,"isAsyncAPIOwner":false}},{"title":"SIO-AsyncAPI","description":"This is code-first approach to generate AsyncAPI specification from Socket.IO server.","links":{"websiteUrl":"https://github.com/daler-rahimov/sio-asyncapi","docsUrl":"https://github.com/daler-rahimov/sio-asyncapi","repoUrl":"https://github.com/daler-rahimov/sio-asyncapi"},"filters":{"language":[{"name":"Python","color":"bg-[#A8D0EF]","borderColor":"border-[#3878AB]"}],"technology":[{"name":"Socket.IO","color":"bg-[#61d0f2]","borderColor":"border-[#40ccf7]"},{"name":"Flask","color":"bg-[#D7C7F2]","borderColor":"border-[#A387D2]"}],"categories":["code-first","api"],"hasCommercial":false,"isAsyncAPIOwner":false}},{"title":"Springwolf","description":"Automated documentation for async APIs built with Spring Boot. Like Springfox for AsyncAPI. Auto-generates an AsyncAPI document and a web UI.","links":{"websiteUrl":"https://www.springwolf.dev","repoUrl":"https://github.com/springwolf/springwolf-core"},"filters":{"language":[{"name":"Java","color":"bg-[#ECA2A4]","borderColor":"border-[#EC2125]"}],"technology":[{"name":"Springboot","color":"bg-[#98E279]","borderColor":"border-[#68BC44]"},{"name":"Gradle","color":"bg-[#61d0f2]","borderColor":"border-[#40ccf7]"}],"categories":["code-first","documentation-generator"],"hasCommercial":false,"isAsyncAPIOwner":false}},{"title":"sttp tapir","description":"Library for describing HTTP endpoints, and then interpreting them as a server, client, or documentation","links":{"websiteUrl":"https://tapir.softwaremill.com/","repoUrl":"https://github.com/softwaremill/tapir"},"filters":{"language":[{"name":"Scala","color":"bg-[#FFA299]","borderColor":"border-[#DF301F]"}],"categories":["code-first"],"hasCommercial":false,"isAsyncAPIOwner":false,"technology":[]}}]},"Code Generators":{"description":"The following is a list of tools that generate code from an AsyncAPI document; not the other way around.","toolsList":[{"title":"AsyncAPI Generator","description":"Generator is a tool that you can use to generate whatever you want basing on the AsyncAPI specification file as an input.","links":{"docsUrl":"https://www.asyncapi.com/docs/tools/generator","repoUrl":"https://github.com/asyncapi/generator"},"filters":{"language":[{"name":"JavaScript","color":"bg-[#F2F1C7]","borderColor":"border-[#BFBE86]"}],"technology":[{"name":"Node.js","color":"bg-[#BDFF67]","borderColor":"border-[#84CE24]"}],"categories":["code-generator","documentation-generator"],"hasCommercial":false,"isAsyncAPIOwner":true}},{"title":"AsyncAPI Modelina","description":"Generate payload models into Java, TypeScript, Go, etc, you name it, from AsyncAPI documents. This tool gives you full control over the models through high customization","links":{"websiteUrl":"https://modelina.org","docsUrl":"https://github.com/asyncapi/modelina/tree/master/docs","repoUrl":"https://github.com/asyncapi/modelina"},"filters":{"language":[{"name":"TypeScript","color":"bg-[#7DBCFE]","borderColor":"border-[#2C78C7]"}],"technology":[{"name":"React JS","color":"bg-[#9FECFA]","borderColor":"border-[#08D8FE]"},{"name":"Docker","color":"bg-[#B8E0FF]","borderColor":"border-[#2596ED]"}],"categories":["code-generator"],"hasCommercial":false,"isAsyncAPIOwner":true}},{"title":"Golang AsyncAPI Code Generator","description":"Generate Go user and application boilerplate from AsyncAPI specifications. Can be called from `go generate` without requirements.\n","links":{"repoUrl":"https://github.com/lerenn/asyncapi-codegen"},"filters":{"language":[{"name":"Go/Golang","color":"bg-[#8ECFDF]","borderColor":"border-[#00AFD9]"}],"categories":["code-generator"],"hasCommercial":false,"isAsyncAPIOwner":false,"technology":[]}},{"title":"MultiAPI Generator","description":"This is a plugin designed to help developers automatizing the creation of code classes from YML files based on AsyncApi and OpenAPI. It is presented in 2 flavours Maven and Gradle","links":{"repoUrl":"https://github.com/sngular/scs-multiapi-plugin"},"filters":{"language":[{"name":"Java","color":"bg-[#ECA2A4]","borderColor":"border-[#EC2125]"}],"technology":[{"name":"Groovy","color":"bg-[#61d0f2]","borderColor":"border-[#40ccf7]"},{"name":"Maven","color":"bg-[#FF6B80]","borderColor":"border-[#CA1A33]"}],"categories":["code-generator"],"hasCommercial":false,"isAsyncAPIOwner":false}},{"title":"Node-RED AsyncAPI plugin","description":"A plugin for generating and configuring nodes for Kafka, MQTT, AMQP, etc. automatically from an AsyncAPI specification.","links":{"repoUrl":"https://github.com/dalelane/node-red-contrib-plugin-asyncapi"},"filters":{"technology":[{"name":"Node-RED","color":"bg-[#FF7474]","borderColor":"border-[#8F0101]"}],"categories":["code-generator"],"hasCommercial":false,"isAsyncAPIOwner":false}},{"title":"ZenWave SDK","description":"DDD and API-First for Event-Driven Microservices","links":{"websiteUrl":"https://zenwave360.github.io/","docsUrl":"https://zenwave360.github.io/zenwave-sdk/plugins/asyncapi-spring-cloud-streams3/","repoUrl":"https://github.com/zenwave360/zenwave-sdk"},"filters":{"language":[{"name":"Java","color":"bg-[#ECA2A4]","borderColor":"border-[#EC2125]"}],"technology":[{"name":"Maven","color":"bg-[#FF6B80]","borderColor":"border-[#CA1A33]"},{"name":"Liquid","color":"bg-[#61d0f2]","borderColor":"border-[#40ccf7]"},{"name":"Spring Cloud Streams","color":"bg-[#61d0f2]","borderColor":"border-[#40ccf7]"},{"name":"JHipster JDL","color":"bg-[#61d0f2]","borderColor":"border-[#40ccf7]"}],"categories":["code-generator","dsl","mocking-and-testing","cli"],"hasCommercial":false,"isAsyncAPIOwner":false}}]},"Converters":{"description":"The following is a list of tools that do not yet belong to any specific category but are also useful for the community.","toolsList":[{"title":"AsyncAPI-format","description":"Format an AsyncAPI document by ordering, casing, formatting, and filtering fields.","links":{"repoUrl":"https://github.com/thim81/asyncapi-format"},"filters":{"language":[{"name":"JavaScript","color":"bg-[#F2F1C7]","borderColor":"border-[#BFBE86]"}],"technology":[{"name":"Node.js","color":"bg-[#BDFF67]","borderColor":"border-[#84CE24]"}],"categories":["converter","cli"],"hasCommercial":false,"isAsyncAPIOwner":false}},{"title":"AsyncAPI.Net","description":"The AsyncAPI.NET SDK contains a useful object model for AsyncAPI documents in .NET along with common serializers to extract raw OpenAPI JSON and YAML documents from the model.","links":{"websiteUrl":"https://github.com/LEGO/AsyncAPI.NET/","repoUrl":"https://github.com/LEGO/AsyncAPI.NET"},"filters":{"language":[{"name":"C#","color":"bg-[#E3AFE0]","borderColor":"border-[#9B4F96]"}],"technology":[{"name":".NET","color":"bg-[#A184FF]","borderColor":"border-[#5026D4]"},{"name":"ASP.NET","color":"bg-[#71C2FB]","borderColor":"border-[#1577BC]"}],"categories":["converters","code-first","validator"],"hasCommercial":false,"isAsyncAPIOwner":false}},{"title":"Converter","description":"Converts old versions of AsyncAPI files into the latest version.","links":{"repoUrl":"https://github.com/asyncapi/converter-js"},"filters":{"language":[{"name":"TypeScript","color":"bg-[#7DBCFE]","borderColor":"border-[#2C78C7]"}],"technology":[{"name":"Node.js","color":"bg-[#BDFF67]","borderColor":"border-[#84CE24]"}],"categories":["converter"],"hasCommercial":false,"isAsyncAPIOwner":true}},{"title":"Converter-Go","description":"The AsyncAPI Converter converts AsyncAPI documents from versions 1.0.0, 1.1.0 and 1.2.0 to version 2.0.0. It supports both json and yaml formats on input and output. By default, the AsyncAPI Converter converts a document into the json format.","links":{"repoUrl":"https://github.com/asyncapi/converter-go"},"filters":{"language":[{"name":"Go/Golang","color":"bg-[#8ECFDF]","borderColor":"border-[#00AFD9]"}],"categories":["converter"],"hasCommercial":false,"isAsyncAPIOwner":true,"technology":[]}}]},"Directories":{"description":"The following is a list of directories that index public AsyncAPI documents.","toolsList":[{"title":"API Tracker - AsyncAPI specs","description":"Explore APIs and companies with public AsyncAPI specifications.","links":{"websiteUrl":"https://apitracker.io/specifications/asyncapi","repoUrl":""},"filters":{"categories":["api","directory"],"hasCommercial":false,"isAsyncAPIOwner":false,"technology":[]}},{"title":"AsyncAPI-Directory by APIs.guru","description":"Directory of asynchronous API specifications in AsyncAPI format.","links":{"websiteUrl":"https://apis.guru/asyncapi-directory/","repoUrl":"https://github.com/APIs-guru/asyncapi-directory"},"filters":{"language":[{"name":"JavaScript","color":"bg-[#F2F1C7]","borderColor":"border-[#BFBE86]"}],"technology":[{"name":"Node.js","color":"bg-[#BDFF67]","borderColor":"border-[#84CE24]"},{"name":"Liquid","color":"bg-[#61d0f2]","borderColor":"border-[#40ccf7]"}],"categories":["api","directory"],"hasCommercial":false,"isAsyncAPIOwner":false}}]},"Documentation Generators":{"description":"The following is a list of tools that generate human-readable documentation from an AsyncAPI document.","toolsList":[{"title":"AsyncAPI Generator","description":"Generator is a tool that you can use to generate whatever you want basing on the AsyncAPI specification file as an input.","links":{"docsUrl":"https://www.asyncapi.com/docs/tools/generator","repoUrl":"https://github.com/asyncapi/generator"},"filters":{"language":[{"name":"JavaScript","color":"bg-[#F2F1C7]","borderColor":"border-[#BFBE86]"}],"technology":[{"name":"Node.js","color":"bg-[#BDFF67]","borderColor":"border-[#84CE24]"},{"name":"Markdown","color":"bg-[#61d0f2]","borderColor":"border-[#40ccf7]"}],"categories":["code-generator","documentation-generator"],"hasCommercial":false,"isAsyncAPIOwner":true}},{"title":"asyncapi-asciidoc-template","description":"Asciidoc template for the asyncapi generator","links":{"repoUrl":"https://gitlab.com/djencks/asyncapi-asciidoc-template"},"filters":{"language":[{"name":"JavaScript","color":"bg-[#F2F1C7]","borderColor":"border-[#BFBE86]"}],"technology":[{"name":"React JS","color":"bg-[#9FECFA]","borderColor":"border-[#08D8FE]"}],"categories":["documentation-generator","generator-template"],"hasCommercial":false,"isAsyncAPIOwner":false}},{"title":"Bump.sh","description":"OpenAPI 2 & 3 / AsyncAPI 2 documentation generator, with automatic changelog and visual diff.","links":{"websiteUrl":"https://bump.sh/","repoUrl":""},"filters":{"categories":["documentation-generator"],"hasCommercial":true,"isAsyncAPIOwner":false,"technology":[]}},{"title":"Cupid","description":"A library that focuses on finding and analyzing the relationships between AsyncAPI documents. It outputs a map of the system architecture.","links":{"repoUrl":"https://github.com/asyncapi/cupid"},"filters":{"language":[{"name":"JavaScript","color":"bg-[#F2F1C7]","borderColor":"border-[#BFBE86]"}],"technology":[{"name":"Node.js","color":"bg-[#BDFF67]","borderColor":"border-[#84CE24]"}],"categories":["documentation-generator"],"hasCommercial":false,"isAsyncAPIOwner":true}},{"title":"KnstEventBus","description":"AsyncApi code-first tools for c#. Generates document and view.","links":{"repoUrl":"https://github.com/d0972058277/KnstEventBus"},"filters":{"language":[{"name":"C#","color":"bg-[#E3AFE0]","borderColor":"border-[#9B4F96]"}],"technology":[{"name":"ASP.NET","color":"bg-[#71C2FB]","borderColor":"border-[#1577BC]"},{"name":".NET","color":"bg-[#A184FF]","borderColor":"border-[#5026D4]"}],"categories":["code-first","documentation-generator"],"hasCommercial":false,"isAsyncAPIOwner":false}},{"title":"Springwolf","description":"Automated documentation for async APIs built with Spring Boot. Like Springfox for AsyncAPI. Auto-generates an AsyncAPI document and a web UI.","links":{"websiteUrl":"https://www.springwolf.dev","repoUrl":"https://github.com/springwolf/springwolf-core"},"filters":{"language":[{"name":"Java","color":"bg-[#ECA2A4]","borderColor":"border-[#EC2125]"}],"technology":[{"name":"Springboot","color":"bg-[#98E279]","borderColor":"border-[#68BC44]"},{"name":"Gradle","color":"bg-[#61d0f2]","borderColor":"border-[#40ccf7]"}],"categories":["code-first","documentation-generator"],"hasCommercial":false,"isAsyncAPIOwner":false}},{"title":"Widdershins","description":"OpenAPI 3.0 / Swagger 2.0 / AsyncAPI 1.0 definition to Slate / Shins compatible markdown.","links":{"websiteUrl":"https://mermade.github.io/reslate/","repoUrl":"https://github.com/Mermade/widdershins"},"filters":{"language":[{"name":"JavaScript","color":"bg-[#F2F1C7]","borderColor":"border-[#BFBE86]"}],"technology":[{"name":"Node.js","color":"bg-[#BDFF67]","borderColor":"border-[#84CE24]"},{"name":"Shell","color":"bg-[#61d0f2]","borderColor":"border-[#40ccf7]"}],"categories":["documentation-generator"],"hasCommercial":false,"isAsyncAPIOwner":false}}]},"Editors":{"description":"The following is a list of editors or related tools that allow editing of AsyncAPI document.","toolsList":[{"title":"AsyncAPI Studio","description":"Visually design your AsyncAPI files and event-driven architecture.","links":{"websiteUrl":"https://studio.asyncapi.com","repoUrl":"https://github.com/asyncapi/studio"},"filters":{"technology":[{"name":"React JS","color":"bg-[#9FECFA]","borderColor":"border-[#08D8FE]"},{"name":"TypeScript","color":"bg-[#61d0f2]","borderColor":"border-[#40ccf7]"}],"categories":["editor"],"hasCommercial":false,"isAsyncAPIOwner":true}}]},"UI components":{"description":"The following is a list of UI components to view AsyncAPI documents.","toolsList":[{"title":"Api-Diff-Viewer","description":"React component to view the difference between two Json based API documents. Supported specifications: JsonSchema, OpenAPI 3.x, AsyncAPI 2.x.","links":{"repoUrl":"https://github.com/udamir/api-diff-viewer","websiteUrl":"https://api-diff-viewer.vercel.app/"},"filters":{"language":[{"name":"TypeScript","color":"bg-[#7DBCFE]","borderColor":"border-[#2C78C7]"}],"technology":[{"name":"React JS","color":"bg-[#9FECFA]","borderColor":"border-[#08D8FE]"},{"name":"Babel","color":"bg-[#61d0f2]","borderColor":"border-[#40ccf7]"},{"name":"Storybook","color":"bg-[#61d0f2]","borderColor":"border-[#40ccf7]"}],"categories":["ui-component"],"hasCommercial":false,"isAsyncAPIOwner":false}},{"title":"AsyncAPI React component","description":"React component for rendering documentation from your specification in real-time in the browser. It also provides a WebComponent and bundle for Angular and Vue","links":{"repoUrl":"https://github.com/asyncapi/asyncapi-react"},"filters":{"language":[{"name":"TypeScript","color":"bg-[#7DBCFE]","borderColor":"border-[#2C78C7]"}],"technology":[{"name":"React JS","color":"bg-[#9FECFA]","borderColor":"border-[#08D8FE]"},{"name":"WebComponents","color":"bg-[#61d0f2]","borderColor":"border-[#40ccf7]"}],"categories":["ui-component"],"hasCommercial":false,"isAsyncAPIOwner":true}}]},"DSL":{"description":"Writing YAML by hand is no fun, and maybe you don't want a GUI, so use a Domain Specific Language to write AsyncAPI in your language of choice.","toolsList":[{"title":"BOATS","description":"Compile your single AsyncAPI file from multiple YAML files with BOATS and with the help of the template engine Nunjucks, plus a many extra helpers to automate much of the donkey work.","links":{"repoUrl":"https://github.com/j-d-carmichael/boats"},"filters":{"language":[{"name":"TypeScript","color":"bg-[#7DBCFE]","borderColor":"border-[#2C78C7]"}],"technology":[{"name":"Node.js","color":"bg-[#BDFF67]","borderColor":"border-[#84CE24]"}],"categories":["dsl"],"hasCommercial":false,"isAsyncAPIOwner":false}},{"title":"ZenWave SDK","description":"DDD and API-First for Event-Driven Microservices","links":{"websiteUrl":"https://zenwave360.github.io/","docsUrl":"https://zenwave360.github.io/zenwave-sdk/plugins/asyncapi-spring-cloud-streams3/","repoUrl":"https://github.com/zenwave360/zenwave-sdk"},"filters":{"language":[{"name":"Java","color":"bg-[#ECA2A4]","borderColor":"border-[#EC2125]"}],"technology":[{"name":"Maven","color":"bg-[#FF6B80]","borderColor":"border-[#CA1A33]"},{"name":"Liquid","color":"bg-[#61d0f2]","borderColor":"border-[#40ccf7]"},{"name":"Spring Cloud Streams","color":"bg-[#61d0f2]","borderColor":"border-[#40ccf7]"},{"name":"JHipster JDL","color":"bg-[#61d0f2]","borderColor":"border-[#40ccf7]"}],"categories":["code-generator","dsl","mocking-and-testing","cli"],"hasCommercial":false,"isAsyncAPIOwner":false}}]},"Frameworks":{"description":"The following is a list of API/application frameworks that make use of AsyncAPI.","toolsList":[{"title":"Asynction","description":"SocketIO server framework driven by the AsyncAPI specification. Asynction guarantees that your API will work in accordance with its AsyncAPI documentation. Built on top of Flask-SocketIO.","links":{"websiteUrl":"https://pypi.org/project/asynction/","repoUrl":"https://github.com/dedoussis/asynction"},"filters":{"language":[{"name":"Python","color":"bg-[#A8D0EF]","borderColor":"border-[#3878AB]"}],"technology":[{"name":"Flask","color":"bg-[#D7C7F2]","borderColor":"border-[#A387D2]"}],"categories":["framework"],"hasCommercial":false,"isAsyncAPIOwner":false}}]},"GitHub Actions":{"description":"The following is a list of GitHub Actions that you can use in your workflows","toolsList":[{"title":"API documentation generation on Bump.sh","description":"With this GitHub Action you can automatically generate your API reference (with the changelog and diff) on Bump.sh from any AsyncAPI file.","links":{"websiteUrl":"https://github.com/marketplace/actions/api-documentation-on-bump","repoUrl":"https://github.com/bump-sh/github-action"},"filters":{"language":[{"name":"TypeScript","color":"bg-[#7DBCFE]","borderColor":"border-[#2C78C7]"}],"categories":["github-action"],"hasCommercial":false,"isAsyncAPIOwner":false,"technology":[]}},{"title":"AsyncAPI GitHub Action","description":"This action validates if the AsyncAPI schema file is valid or not.","links":{"websiteUrl":"https://github.com/marketplace/actions/asyncapi-github-action","repoUrl":"https://github.com/WaleedAshraf/asyncapi-github-action"},"filters":{"language":[{"name":"JavaScript","color":"bg-[#F2F1C7]","borderColor":"border-[#BFBE86]"}],"technology":[{"name":"Node.js","color":"bg-[#BDFF67]","borderColor":"border-[#84CE24]"}],"categories":["github-action","validator"],"hasCommercial":false,"isAsyncAPIOwner":false}},{"title":"Automated version bump for AsyncAPI documents","description":"With this GitHub Action, you can automatically bump the version based on commit messages, which is similar to what semantic-release is for NPM.","links":{"websiteUrl":"https://github.com/marketplace/actions/automated-version-bump-for-asyncapi","repoUrl":"https://github.com/bump-sh/github-action"},"filters":{"language":[{"name":"JavaScript","color":"bg-[#F2F1C7]","borderColor":"border-[#BFBE86]"}],"technology":[{"name":"Node.js","color":"bg-[#BDFF67]","borderColor":"border-[#84CE24]"}],"categories":["github-action"],"hasCommercial":false,"isAsyncAPIOwner":false}},{"title":"GitHub Action for Generator","description":"GitHub Action to generate all the things from your AsyncAPI document using the AsyncAPI generator","links":{"repoUrl":"https://github.com/asyncapi/github-action-for-generator"},"filters":{"technology":[{"name":"AsyncAPI Generator","color":"bg-[#61d0f2]","borderColor":"border-[#40ccf7]"}],"categories":["github-action"],"hasCommercial":false,"isAsyncAPIOwner":true}},{"title":"GitHub Action for Generator","description":null,"links":{"repoUrl":"https://github.com/actions-marketplace-validations/asyncapi_github-action-for-generator"},"filters":{"technology":[{"name":"AsyncAPI Generator","color":"bg-[#61d0f2]","borderColor":"border-[#40ccf7]"}],"categories":["github-action"],"hasCommercial":false,"isAsyncAPIOwner":false}}]},"Mocking and Testing":{"description":"The tools below take specification documents as input, then publish fake messages to broker destinations for simulation purposes. They may also check that publisher messages are compliant with schemas.","toolsList":[{"title":"Microcks","description":"Mocking and testing platform for API and microservices. Turn your AsyncAPI, OpenAPI contract examples, or Postman collections into ready-to-use mocks. Use examples to simulate and validate received messages according to schema elements.","links":{"websiteUrl":"https://microcks.io/","repoUrl":"https://github.com/microcks/microcks"},"filters":{"language":[{"name":"Java","color":"bg-[#ECA2A4]","borderColor":"border-[#EC2125]"}],"technology":[{"name":"TypeScript","color":"bg-[#61d0f2]","borderColor":"border-[#40ccf7]"},{"name":"Kubernetes-native","color":"bg-[#D7C7F2]","borderColor":"border-[#A387D2]"},{"name":"Saas","color":"bg-[#6AB8EC]","borderColor":"border-[#2275AD]"}],"categories":["mocking-and-testing"],"hasCommercial":false,"isAsyncAPIOwner":false}},{"title":"MultiAPI Converter","description":"Use AsyncAPI definition, to generate Spring Cloud Contract producer validation or consumer stubs, using maven.","links":{"repoUrl":"https://github.com/sngular/scc-multiapi-converter"},"filters":{"language":[{"name":"Java","color":"bg-[#ECA2A4]","borderColor":"border-[#EC2125]"}],"technology":[{"name":"Springboot","color":"bg-[#98E279]","borderColor":"border-[#68BC44]"}],"categories":["mocking-and-testing"],"hasCommercial":false,"isAsyncAPIOwner":false}},{"title":"Specmatic","description":"An API contract testing tool that helps ensure the correctness APIs by automatically generating test cases and verifying them against the API spec. It simplifies the process of testing APIs and reduces the likelihood of bugs and compatibility issues.","links":{"websiteUrl":"https://specmatic.in","docsUrl":"https://specmatic.in/documentation/","repoUrl":"https://github.com/znsio/specmatic"},"filters":{"language":[{"name":"Kotlin","color":"bg-[#B1ACDF]","borderColor":"border-[#756BD9]"}],"technology":[{"name":"Maven","color":"bg-[#FF6B80]","borderColor":"border-[#CA1A33]"}],"categories":["mocking-and-testing"],"hasCommercial":false,"isAsyncAPIOwner":false}},{"title":"Virtualan","description":"Mocking and testing platform for API and microservices. Allows you to create and setup mocks for OpenAPI and AsyncAPI contracts. Shows how to setup and create AsyncAPI GitHub Reference Examples and OpenAPI GitHub Reference Examples.","links":{"websiteUrl":"https://www.virtualan.io/index.html","repoUrl":"https://github.com/virtualansoftware"},"filters":{"technology":[{"name":"Kubernetes-native","color":"bg-[#D7C7F2]","borderColor":"border-[#A387D2]"}],"categories":["mocking-and-testing"],"hasCommercial":false,"isAsyncAPIOwner":false}},{"title":"ZenWave SDK","description":"DDD and API-First for Event-Driven Microservices","links":{"websiteUrl":"https://zenwave360.github.io/","docsUrl":"https://zenwave360.github.io/zenwave-sdk/plugins/asyncapi-spring-cloud-streams3/","repoUrl":"https://github.com/zenwave360/zenwave-sdk"},"filters":{"language":[{"name":"Java","color":"bg-[#ECA2A4]","borderColor":"border-[#EC2125]"}],"technology":[{"name":"Maven","color":"bg-[#FF6B80]","borderColor":"border-[#CA1A33]"},{"name":"Liquid","color":"bg-[#61d0f2]","borderColor":"border-[#40ccf7]"},{"name":"Spring Cloud Streams","color":"bg-[#61d0f2]","borderColor":"border-[#40ccf7]"},{"name":"JHipster JDL","color":"bg-[#61d0f2]","borderColor":"border-[#40ccf7]"}],"categories":["code-generator","dsl","mocking-and-testing","cli"],"hasCommercial":false,"isAsyncAPIOwner":false}}]},"Validators":{"description":"The following is a list of tools that validate AsyncAPI documents.","toolsList":[{"title":"AMF","description":"AMF (AML Modeling Framework) is an open-source library capable of parsing and validating AML metadata documents.","links":{"docsUrl":"https://a.ml/docs/","repoUrl":"https://github.com/aml-org/amf"},"filters":{"language":[{"name":"Scala","color":"bg-[#FFA299]","borderColor":"border-[#DF301F]"}],"categories":["validator"],"hasCommercial":false,"isAsyncAPIOwner":false,"technology":[]}},{"title":"AsyncAPI GitHub Action","description":"This action validates if the AsyncAPI schema file is valid or not.","links":{"websiteUrl":"https://github.com/marketplace/actions/asyncapi-github-action","repoUrl":"https://github.com/WaleedAshraf/asyncapi-github-action"},"filters":{"language":[{"name":"JavaScript","color":"bg-[#F2F1C7]","borderColor":"border-[#BFBE86]"}],"technology":[{"name":"Node.js","color":"bg-[#BDFF67]","borderColor":"border-[#84CE24]"}],"categories":["github-action","validator"],"hasCommercial":false,"isAsyncAPIOwner":false}},{"title":"AsyncAPI Parser","description":"Use this package to parse and validate AsyncAPI documents —either YAML or JSON— in your Node.js or browser application. Updated bundle for the browser is always attached to the GitHub Release.","links":{"repoUrl":"https://github.com/asyncapi/parser-js"},"filters":{"language":[{"name":"JavaScript","color":"bg-[#F2F1C7]","borderColor":"border-[#BFBE86]"}],"technology":[{"name":"Node.js","color":"bg-[#BDFF67]","borderColor":"border-[#84CE24]"}],"categories":["validator"],"hasCommercial":false,"isAsyncAPIOwner":true}},{"title":"AsyncAPI Parser","description":"The AsyncAPI Parser validates AsyncAPI documents according to dedicated schemas.","links":{"repoUrl":"https://github.com/asyncapi/parser-go"},"filters":{"language":[{"name":"Go/Golang","color":"bg-[#8ECFDF]","borderColor":"border-[#00AFD9]"}],"categories":["validator"],"hasCommercial":false,"isAsyncAPIOwner":true,"technology":[]}},{"title":"AsyncAPI Parser Wrapper","description":"Use this library to parse and validate AsyncAPI documents — either YAML or JSON — in your Java application. It is a Java wrapper over JavaScript Parser implemented using J2V8.","links":{"repoUrl":"https://github.com/AsyncAPITools/parser-java-wrapper"},"filters":{"language":[{"name":"Java","color":"bg-[#ECA2A4]","borderColor":"border-[#EC2125]"}],"categories":["validator"],"hasCommercial":false,"isAsyncAPIOwner":false,"technology":[]}},{"title":"asyncapi-validator","description":"It allows you to validate the schema of your messages against your AsyncAPI schema definition. You can use it with Kafka, RabbitMQ or any other messaging/queue.","links":{"repoUrl":"https://github.com/WaleedAshraf/asyncapi-validator"},"filters":{"language":[{"name":"JavaScript","color":"bg-[#F2F1C7]","borderColor":"border-[#BFBE86]"}],"technology":[{"name":"Node.js","color":"bg-[#BDFF67]","borderColor":"border-[#84CE24]"}],"categories":["validator"],"hasCommercial":false,"isAsyncAPIOwner":false}},{"title":"AsyncAPI.Net","description":"The AsyncAPI.NET SDK contains a useful object model for AsyncAPI documents in .NET along with common serializers to extract raw OpenAPI JSON and YAML documents from the model.","links":{"websiteUrl":"https://github.com/LEGO/AsyncAPI.NET/","repoUrl":"https://github.com/LEGO/AsyncAPI.NET"},"filters":{"language":[{"name":"C#","color":"bg-[#E3AFE0]","borderColor":"border-[#9B4F96]"}],"technology":[{"name":".NET","color":"bg-[#A184FF]","borderColor":"border-[#5026D4]"},{"name":"ASP.NET","color":"bg-[#71C2FB]","borderColor":"border-[#1577BC]"}],"categories":["converters","code-first","validator"],"hasCommercial":false,"isAsyncAPIOwner":false}},{"title":"Spectral","description":"A flexible JSON/YAML linter for creating automated style guides, with baked in support for OpenAPI v3.1, v3.0, and v2.0 as well as AsyncAPI v2.x.","links":{"repoUrl":"https://github.com/stoplightio/spectral"},"filters":{"language":[{"name":"TypeScript","color":"bg-[#7DBCFE]","borderColor":"border-[#2C78C7]"}],"technology":[{"name":"Node.js","color":"bg-[#BDFF67]","borderColor":"border-[#84CE24]"}],"categories":["validator"],"hasCommercial":false,"isAsyncAPIOwner":false}}]},"Compare tools":{"description":"The following is a list of tools that compare AsyncAPI documents.","toolsList":[{"title":"Api-Smart-Diff","description":"It allows you to compare two API documents and classify changes. Supported API specifications: OpenAPI, AsyncAPI, JsonSchema.","links":{"repoUrl":"https://github.com/udamir/api-smart-diff"},"filters":{"language":[{"name":"TypeScript","color":"bg-[#7DBCFE]","borderColor":"border-[#2C78C7]"}],"categories":["compare-tool"],"hasCommercial":false,"isAsyncAPIOwner":false,"technology":[]}},{"title":"AsyncAPI Diff","description":"Diff is a library that compares two AsyncAPI Documents and provides information about the differences by pointing out explicitly information like breaking changes.","links":{"repoUrl":"https://github.com/asyncapi/diff"},"filters":{"language":[{"name":"TypeScript","color":"bg-[#7DBCFE]","borderColor":"border-[#2C78C7]"}],"technology":[{"name":"TypeScript","color":"bg-[#61d0f2]","borderColor":"border-[#40ccf7]"}],"categories":["compare-tool"],"hasCommercial":false,"isAsyncAPIOwner":true}},{"title":"jasyncapicmp","description":"Tool for comparing two AsyncAPI versions and evaluating compatibility.","links":{"websiteUrl":"https://siom79.github.io/jasyncapicmp/","docsUrl":"https://github.com/siom79/jasyncapicmp","repoUrl":"https://github.com/siom79/jasyncapicmp"},"filters":{"language":[{"name":"Java","color":"bg-[#ECA2A4]","borderColor":"border-[#EC2125]"}],"technology":[{"name":"Maven","color":"bg-[#FF6B80]","borderColor":"border-[#CA1A33]"}],"categories":["compare-tool"],"hasCommercial":false,"isAsyncAPIOwner":false}},{"title":"jasyncapicmp","description":"Tool/library/maven-plugin for comparing two AsyncAPI versions and evaluating compatibility.","links":{"websiteUrl":"https://siom79.github.io/jasyncapicmp/","repoUrl":"https://github.com/siom79/jasyncapicmp"},"filters":{"language":[{"name":"Java","color":"bg-[#ECA2A4]","borderColor":"border-[#EC2125]"}],"technology":[{"name":"Maven","color":"bg-[#FF6B80]","borderColor":"border-[#CA1A33]"}],"categories":["compare-tool"],"hasCommercial":false,"isAsyncAPIOwner":false}}]},"CLIs":{"description":"The following is a list of tools that you can work with in terminal or do some CI/CD automation.","toolsList":[{"title":"AsyncAPI CLI","description":"One CLI to rule them all. \nThis is a CLI that aims to integrate all AsyncAPI tools that you need while AsyncAPI document development and maintainance. \nYou can use it to generate docs or code, validate AsyncAPI document and event create new documents.\n","links":{"websiteUrl":"https://www.asyncapi.com/tools/cli","repoUrl":"https://github.com/asyncapi/cli"},"filters":{"technology":[{"name":"TypeScript","color":"bg-[#61d0f2]","borderColor":"border-[#40ccf7]"}],"categories":["others","cli"],"hasCommercial":false,"isAsyncAPIOwner":true}},{"title":"AsyncAPI-format","description":"Format an AsyncAPI document by ordering, casing, formatting, and filtering fields.","links":{"repoUrl":"https://github.com/asyncapi/converter-go"},"filters":{"language":[{"name":"JavaScript","color":"bg-[#F2F1C7]","borderColor":"border-[#BFBE86]"}],"technology":[{"name":"Node.js","color":"bg-[#BDFF67]","borderColor":"border-[#84CE24]"}],"categories":["converter","cli"],"hasCommercial":false,"isAsyncAPIOwner":true}},{"title":"ZenWave SDK","description":"DDD and API-First for Event-Driven Microservices","links":{"websiteUrl":"https://zenwave360.github.io/","docsUrl":"https://zenwave360.github.io/zenwave-sdk/plugins/asyncapi-spring-cloud-streams3/","repoUrl":"https://github.com/zenwave360/zenwave-sdk"},"filters":{"language":[{"name":"Java","color":"bg-[#ECA2A4]","borderColor":"border-[#EC2125]"}],"technology":[{"name":"Maven","color":"bg-[#FF6B80]","borderColor":"border-[#CA1A33]"},{"name":"Liquid","color":"bg-[#61d0f2]","borderColor":"border-[#40ccf7]"},{"name":"Spring Cloud Streams","color":"bg-[#61d0f2]","borderColor":"border-[#40ccf7]"},{"name":"JHipster JDL","color":"bg-[#61d0f2]","borderColor":"border-[#40ccf7]"}],"categories":["code-generator","dsl","mocking-and-testing","cli"],"hasCommercial":false,"isAsyncAPIOwner":false}}]},"Bundlers":{"description":"The following is a list of tools that you can work with to bundle AsyncAPI documents.","toolsList":[{"title":"Api-ref-bundler","description":"It allows you bundle/dereference external/internal $refs in Json based API document. Supported specifications: OpenAPI, AsyncAPI, JsonSchema.","links":{"repoUrl":"https://github.com/udamir/api-ref-bundler"},"filters":{"language":[{"name":"TypeScript","color":"bg-[#7DBCFE]","borderColor":"border-[#2C78C7]"}],"technology":[{"name":"TypeScript","color":"bg-[#61d0f2]","borderColor":"border-[#40ccf7]"}],"categories":["bundler"],"hasCommercial":false,"isAsyncAPIOwner":false}},{"title":"AsyncAPI Bundler","description":"Combine multiple AsyncAPI specification files into one.","links":{"repoUrl":"https://github.com/asyncapi/bundler"},"filters":{"language":[{"name":"TypeScript","color":"bg-[#7DBCFE]","borderColor":"border-[#2C78C7]"}],"technology":[{"name":"TypeScript","color":"bg-[#61d0f2]","borderColor":"border-[#40ccf7]"}],"categories":["bundler"],"hasCommercial":false,"isAsyncAPIOwner":true}}]},"IDE Extensions":{"description":"The following is a list of extensions for different IDEs like VSCode, IntelliJ IDEA and others","toolsList":[{"title":"asyncapi-preview","description":"VSCode extension that enables you to:\n - Preview documentation generated using you AsyncAPI document. It uses AsyncAPI React component under the hood,\n - Create AsyncAPI documents faster using SmartPaste functionality\n","links":{"repoUrl":"https://github.com/asyncapi/vs-asyncapi-preview"},"filters":{"technology":[{"name":"VSCode","color":"bg-[#61d0f2]","borderColor":"border-[#40ccf7]"},{"name":"SmartPaste","color":"bg-[#61d0f2]","borderColor":"border-[#40ccf7]"}],"categories":["ide-extension"],"hasCommercial":false,"isAsyncAPIOwner":true}},{"title":"asyncapi-preview","description":"VSCode extension that enables you to:\n - Preview documentation generated using you AsyncAPI document. It uses AsyncAPI React component under the hood,\n - Create AsyncAPI documents faster using SmartPaste functionality\n","links":{"repoUrl":"https://github.com/Savio629/testing2"},"filters":{"technology":[{"name":"VSCode","color":"bg-[#61d0f2]","borderColor":"border-[#40ccf7]"},{"name":"SmartPaste","color":"bg-[#61d0f2]","borderColor":"border-[#40ccf7]"}],"categories":["ide-extension"],"hasCommercial":false,"isAsyncAPIOwner":false}},{"title":"jAsyncAPI - IDEA plugin","description":"Idea plugin for the java-asyncapi - Helps to edit and validate AsyncAPI schemas.","links":{"websiteUrl":"https://plugins.jetbrains.com/plugin/15673-asyncapi","docsUrl":"https://github.com/asyncapi/jasyncapi-idea-plugin#usage","repoUrl":"https://github.com/asyncapi/jasyncapi-idea-plugin"},"filters":{"language":[{"name":"Kotlin","color":"bg-[#B1ACDF]","borderColor":"border-[#756BD9]"}],"technology":[{"name":"JetBrains","color":"bg-[#61d0f2]","borderColor":"border-[#40ccf7]"},{"name":"IntelliJ IDEA","color":"bg-[#61d0f2]","borderColor":"border-[#40ccf7]"}],"categories":["ide-extension"],"hasCommercial":false,"isAsyncAPIOwner":true}}]},"AsyncAPI Generator Templates":{"description":"The following is a list of templates compatible with AsyncAPI Generator. You can use them to generate apps, clients or documentation from your AsyncAPI documents.","toolsList":[{"title":"Java Spring Template","description":"Java Spring template for the AsyncAPI Generator","links":{"repoUrl":"https://github.com/asyncapi/java-spring-template"},"filters":{"language":[{"name":"Java","color":"bg-[#ECA2A4]","borderColor":"border-[#EC2125]"},{"name":"JavaScript","color":"bg-[#F2F1C7]","borderColor":"border-[#BFBE86]"}],"technology":[{"name":"Springboot","color":"bg-[#98E279]","borderColor":"border-[#68BC44]"},{"name":"Maven","color":"bg-[#FF6B80]","borderColor":"border-[#CA1A33]"},{"name":"Gradle","color":"bg-[#61d0f2]","borderColor":"border-[#40ccf7]"}],"categories":["generator-template"],"hasCommercial":false,"isAsyncAPIOwner":true}},{"title":"Node.js Multiprotocol Template","description":"This template generates a server using your AsyncAPI document. It supports multiple different protocols, like Kafka or MQTT. It is designed in the way that generated code is a library and with it's API you can start the server, send messages or register a middleware for listening incoming messages. Runtime message validation included.","links":{"repoUrl":"https://github.com/asyncapi/nodejs-template"},"filters":{"language":[{"name":"JavaScript","color":"bg-[#F2F1C7]","borderColor":"border-[#BFBE86]"}],"technology":[{"name":"Node.js","color":"bg-[#BDFF67]","borderColor":"border-[#84CE24]"}],"categories":["generator-template"],"hasCommercial":false,"isAsyncAPIOwner":true}},{"title":"Node.js Websockets Template","description":"Node.js WebSockets template for the AsyncAPI Generator. It showcases how from a single AsyncAPI document you can generate a server and a client at the same time.","links":{"repoUrl":"https://github.com/asyncapi/nodejs-ws-template"},"filters":{"language":[{"name":"JavaScript","color":"bg-[#F2F1C7]","borderColor":"border-[#BFBE86]"}],"technology":[{"name":"Node.js","color":"bg-[#BDFF67]","borderColor":"border-[#84CE24]"}],"categories":["generator-template"],"hasCommercial":false,"isAsyncAPIOwner":true}}]},"Others":{"description":"The following is a list of tools that comes under Other category.","toolsList":[{"title":"AsyncAPI CLI","description":"One CLI to rule them all. \nThis is a CLI that aims to integrate all AsyncAPI tools that you need while AsyncAPI document development and maintainance. \nYou can use it to generate docs or code, validate AsyncAPI document and event create new documents.\n","links":{"websiteUrl":"https://www.asyncapi.com/tools/cli","repoUrl":"https://github.com/asyncapi/cli"},"filters":{"technology":[{"name":"TypeScript","color":"bg-[#61d0f2]","borderColor":"border-[#40ccf7]"}],"categories":["others","cli"],"hasCommercial":false,"isAsyncAPIOwner":true}}]}} \ No newline at end of file +{"APIs":{"description":"The following is a list of APIs that expose functionality related to AsyncAPI.","toolsList":[{"title":"API Tracker - AsyncAPI specs","description":"Explore APIs and companies with public AsyncAPI specifications.","links":{"websiteUrl":"https://apitracker.io/specifications/asyncapi","repoUrl":""},"filters":{"categories":["api","directory"],"hasCommercial":false,"isAsyncAPIOwner":false,"technology":[]}},{"title":"AsyncAPI Server API","description":"Server API providing official AsyncAPI tools","links":{"websiteUrl":"https://api.asyncapi.com/v1","docsUrl":"https://api.asyncapi.com/v1/docs","repoUrl":"https://github.com/asyncapi/server-api"},"filters":{"technology":[{"name":"Node.js","color":"bg-[#BDFF67]","borderColor":"border-[#84CE24]"},{"name":"TypeScript","color":"bg-[#61d0f2]","borderColor":"border-[#40ccf7]"}],"categories":["api"],"hasCommercial":false,"isAsyncAPIOwner":true}},{"title":"AsyncAPI-Directory by APIs.guru","description":"Directory of asynchronous API specifications in AsyncAPI format.","links":{"websiteUrl":"https://apis.guru/asyncapi-directory/","repoUrl":"https://github.com/APIs-guru/asyncapi-directory"},"filters":{"language":[{"name":"JavaScript","color":"bg-[#F2F1C7]","borderColor":"border-[#BFBE86]"}],"technology":[{"name":"Node.js","color":"bg-[#BDFF67]","borderColor":"border-[#84CE24]"},{"name":"Liquid","color":"bg-[#61d0f2]","borderColor":"border-[#40ccf7]"}],"categories":["api","directory"],"hasCommercial":false,"isAsyncAPIOwner":false}},{"title":"SIO-AsyncAPI","description":"This is code-first approach to generate AsyncAPI specification from Socket.IO server.","links":{"websiteUrl":"https://github.com/daler-rahimov/sio-asyncapi","docsUrl":"https://github.com/daler-rahimov/sio-asyncapi","repoUrl":"https://github.com/daler-rahimov/sio-asyncapi"},"filters":{"language":[{"name":"Python","color":"bg-[#A8D0EF]","borderColor":"border-[#3878AB]"}],"technology":[{"name":"Socket.IO","color":"bg-[#61d0f2]","borderColor":"border-[#40ccf7]"},{"name":"Flask","color":"bg-[#D7C7F2]","borderColor":"border-[#A387D2]"}],"categories":["code-first","api"],"hasCommercial":false,"isAsyncAPIOwner":false}}]},"Code-first tools":{"description":"The following is a list of tools that generate AsyncAPI documents from your code.","toolsList":[{"title":"AsyncAPI.Net","description":"The AsyncAPI.NET SDK contains a useful object model for AsyncAPI documents in .NET along with common serializers to extract raw OpenAPI JSON and YAML documents from the model.","links":{"websiteUrl":"https://github.com/LEGO/AsyncAPI.NET/","repoUrl":"https://github.com/LEGO/AsyncAPI.NET"},"filters":{"language":[{"name":"C#","color":"bg-[#E3AFE0]","borderColor":"border-[#9B4F96]"}],"technology":[{"name":".NET","color":"bg-[#A184FF]","borderColor":"border-[#5026D4]"},{"name":"ASP.NET","color":"bg-[#71C2FB]","borderColor":"border-[#1577BC]"}],"categories":["converters","code-first","validator"],"hasCommercial":false,"isAsyncAPIOwner":false}},{"title":"EventBridge Atlas","description":"Tool that translates your AWS EventBridge Schemas into an AsyncAPI document and a web UI.","links":{"websiteUrl":"https://eventbridge-atlas.netlify.app/","repoUrl":"https://github.com/boyney123/eventbridge-atlas"},"filters":{"technology":[{"name":"Node.js","color":"bg-[#BDFF67]","borderColor":"border-[#84CE24]"}],"categories":["code-first"],"hasCommercial":false,"isAsyncAPIOwner":false}},{"title":"FastStream","description":"A powerful and easy-to-use Python framework for building asynchronous services interacting with event streams such as Apache Kafka, RabbitMQ and NATS.","links":{"websiteUrl":"https://faststream.airt.ai","repoUrl":"https://github.com/airtai/FastStream"},"filters":{"language":[{"name":"Python","color":"bg-[#A8D0EF]","borderColor":"border-[#3878AB]"}],"categories":["code-first","framework"],"hasCommercial":false,"isAsyncAPIOwner":false,"technology":[]}},{"title":"Go AsyncAPI","description":"This library helps to create AsyncAPI spec from your Go message structures. It uses reflection to translate Go structures in JSON Schema definitions and arrange them in AsyncAPI schema.","links":{"repoUrl":"https://github.com/swaggest/go-asyncapi"},"filters":{"language":[{"name":"Go/Golang","color":"bg-[#8ECFDF]","borderColor":"border-[#00AFD9]"}],"categories":["code-first"],"hasCommercial":false,"isAsyncAPIOwner":false,"technology":[]}},{"title":"Java AsyncAPI","description":"This tool stores modules, which simplifies interacting with AsyncAPI in jvm ecosystem.","links":{"repoUrl":"https://github.com/asyncapi/jasyncapi"},"filters":{"language":[{"name":"Java","color":"bg-[#ECA2A4]","borderColor":"border-[#EC2125]"}],"technology":[{"name":"Kotlin","color":"bg-[#61d0f2]","borderColor":"border-[#40ccf7]"},{"name":"Maven","color":"bg-[#FF6B80]","borderColor":"border-[#CA1A33]"}],"categories":["code-first"],"hasCommercial":false,"isAsyncAPIOwner":true}},{"title":"KnstEventBus","description":"AsyncApi code-first tools for c#. Generates document and view.","links":{"repoUrl":"https://github.com/d0972058277/KnstEventBus"},"filters":{"language":[{"name":"C#","color":"bg-[#E3AFE0]","borderColor":"border-[#9B4F96]"}],"technology":[{"name":"ASP.NET","color":"bg-[#71C2FB]","borderColor":"border-[#1577BC]"},{"name":".NET","color":"bg-[#A184FF]","borderColor":"border-[#5026D4]"}],"categories":["code-first","documentation-generator"],"hasCommercial":false,"isAsyncAPIOwner":false}},{"title":"Kotlin AsyncAPI","description":"The Kotlin AsyncAPI project aims to provide convenience tools for generating and serving AsyncAPI documentation. The core of this project is a Kotlin DSL for building the specification in a typesafe way.","links":{"repoUrl":"https://github.com/OpenFolder/kotlin-asyncapi"},"filters":{"language":[{"name":"Kotlin","color":"bg-[#B1ACDF]","borderColor":"border-[#756BD9]"}],"technology":[{"name":"Springboot","color":"bg-[#98E279]","borderColor":"border-[#68BC44]"},{"name":"Maven","color":"bg-[#FF6B80]","borderColor":"border-[#CA1A33]"}],"categories":["code-first"],"hasCommercial":false,"isAsyncAPIOwner":false}},{"title":"nestjs-asyncapi","description":"Utilize decorators to generate AsyncAPI document utilizing DTOs (similar to @nestjs/swagger) and a web UI.","links":{"repoUrl":"https://github.com/flamewow/nestjs-asyncapi"},"filters":{"language":[{"name":"TypeScript","color":"bg-[#7DBCFE]","borderColor":"border-[#2C78C7]"}],"technology":[{"name":"Node.js","color":"bg-[#BDFF67]","borderColor":"border-[#84CE24]"},{"name":"Nest Js","color":"bg-[#E1224E]","borderColor":"border-[#B9012b]"}],"categories":["code-first"],"hasCommercial":false,"isAsyncAPIOwner":false}},{"title":"Neuroglia AsyncAPI","description":"A .NET SDK for the Async API specification. Automatically generates and serves AsyncAPI documents based on your code. Includes fluent-builders to create AsyncAPI documents from scratch, and provides a web-based GUI to browse generated documents.","links":{"repoUrl":"https://github.com/neuroglia-io/AsyncApi"},"filters":{"language":[{"name":"C#","color":"bg-[#E3AFE0]","borderColor":"border-[#9B4F96]"}],"technology":[{"name":".NET","color":"bg-[#A184FF]","borderColor":"border-[#5026D4]"}],"categories":["code-first"],"hasCommercial":false,"isAsyncAPIOwner":false}},{"title":"Saunter","description":"Saunter is an AsyncAPI documentation generator for dotnet. Generates (and hosts) an AsyncAPI schema document from your code.","links":{"repoUrl":"https://github.com/tehmantra/saunter"},"filters":{"language":[{"name":"C#","color":"bg-[#E3AFE0]","borderColor":"border-[#9B4F96]"}],"technology":[{"name":".NET","color":"bg-[#A184FF]","borderColor":"border-[#5026D4]"},{"name":"ASP.NET","color":"bg-[#71C2FB]","borderColor":"border-[#1577BC]"}],"categories":["code-first"],"hasCommercial":false,"isAsyncAPIOwner":false}},{"title":"SIO-AsyncAPI","description":"This is code-first approach to generate AsyncAPI specification from Socket.IO server.","links":{"websiteUrl":"https://github.com/daler-rahimov/sio-asyncapi","docsUrl":"https://github.com/daler-rahimov/sio-asyncapi","repoUrl":"https://github.com/daler-rahimov/sio-asyncapi"},"filters":{"language":[{"name":"Python","color":"bg-[#A8D0EF]","borderColor":"border-[#3878AB]"}],"technology":[{"name":"Socket.IO","color":"bg-[#61d0f2]","borderColor":"border-[#40ccf7]"},{"name":"Flask","color":"bg-[#D7C7F2]","borderColor":"border-[#A387D2]"}],"categories":["code-first","api"],"hasCommercial":false,"isAsyncAPIOwner":false}},{"title":"Springwolf","description":"Automated documentation for async APIs built with Spring Boot. Like Springfox for AsyncAPI. Auto-generates an AsyncAPI document and a web UI.","links":{"websiteUrl":"https://www.springwolf.dev","repoUrl":"https://github.com/springwolf/springwolf-core"},"filters":{"language":[{"name":"Java","color":"bg-[#ECA2A4]","borderColor":"border-[#EC2125]"}],"technology":[{"name":"Springboot","color":"bg-[#98E279]","borderColor":"border-[#68BC44]"},{"name":"Gradle","color":"bg-[#61d0f2]","borderColor":"border-[#40ccf7]"}],"categories":["code-first","documentation-generator"],"hasCommercial":false,"isAsyncAPIOwner":false}},{"title":"sttp tapir","description":"Library for describing HTTP endpoints, and then interpreting them as a server, client, or documentation","links":{"websiteUrl":"https://tapir.softwaremill.com/","repoUrl":"https://github.com/softwaremill/tapir"},"filters":{"language":[{"name":"Scala","color":"bg-[#FFA299]","borderColor":"border-[#DF301F]"}],"categories":["code-first"],"hasCommercial":false,"isAsyncAPIOwner":false,"technology":[]}}]},"Code Generators":{"description":"The following is a list of tools that generate code from an AsyncAPI document; not the other way around.","toolsList":[{"title":"AsyncAPI Generator","description":"Generator is a tool that you can use to generate whatever you want basing on the AsyncAPI specification file as an input.","links":{"docsUrl":"https://www.asyncapi.com/docs/tools/generator","repoUrl":"https://github.com/asyncapi/generator"},"filters":{"language":[{"name":"JavaScript","color":"bg-[#F2F1C7]","borderColor":"border-[#BFBE86]"}],"technology":[{"name":"Node.js","color":"bg-[#BDFF67]","borderColor":"border-[#84CE24]"}],"categories":["code-generator","documentation-generator"],"hasCommercial":false,"isAsyncAPIOwner":true}},{"title":"AsyncAPI Modelina","description":"Generate payload models into Java, TypeScript, Go, etc, you name it, from AsyncAPI documents. This tool gives you full control over the models through high customization","links":{"websiteUrl":"https://modelina.org","docsUrl":"https://github.com/asyncapi/modelina/tree/master/docs","repoUrl":"https://github.com/asyncapi/modelina"},"filters":{"language":[{"name":"TypeScript","color":"bg-[#7DBCFE]","borderColor":"border-[#2C78C7]"}],"technology":[{"name":"React JS","color":"bg-[#9FECFA]","borderColor":"border-[#08D8FE]"},{"name":"Docker","color":"bg-[#B8E0FF]","borderColor":"border-[#2596ED]"}],"categories":["code-generator"],"hasCommercial":false,"isAsyncAPIOwner":true}},{"title":"Golang AsyncAPI Code Generator","description":"Generate Go user and application boilerplate from AsyncAPI specifications. Can be called from `go generate` without requirements.\n","links":{"repoUrl":"https://github.com/lerenn/asyncapi-codegen"},"filters":{"language":[{"name":"Go/Golang","color":"bg-[#8ECFDF]","borderColor":"border-[#00AFD9]"}],"categories":["code-generator"],"hasCommercial":false,"isAsyncAPIOwner":false,"technology":[]}},{"title":"MultiAPI Generator","description":"This is a plugin designed to help developers automatizing the creation of code classes from YML files based on AsyncApi and OpenAPI. It is presented in 2 flavours Maven and Gradle","links":{"repoUrl":"https://github.com/sngular/scs-multiapi-plugin"},"filters":{"language":[{"name":"Java","color":"bg-[#ECA2A4]","borderColor":"border-[#EC2125]"}],"technology":[{"name":"Groovy","color":"bg-[#61d0f2]","borderColor":"border-[#40ccf7]"},{"name":"Maven","color":"bg-[#FF6B80]","borderColor":"border-[#CA1A33]"}],"categories":["code-generator"],"hasCommercial":false,"isAsyncAPIOwner":false}},{"title":"Node-RED AsyncAPI plugin","description":"A plugin for generating and configuring nodes for Kafka, MQTT, AMQP, etc. automatically from an AsyncAPI specification.","links":{"repoUrl":"https://github.com/dalelane/node-red-contrib-plugin-asyncapi"},"filters":{"technology":[{"name":"Node-RED","color":"bg-[#FF7474]","borderColor":"border-[#8F0101]"}],"categories":["code-generator"],"hasCommercial":false,"isAsyncAPIOwner":false}},{"title":"ZenWave SDK","description":"DDD and API-First for Event-Driven Microservices","links":{"websiteUrl":"https://zenwave360.github.io/","docsUrl":"https://zenwave360.github.io/zenwave-sdk/plugins/asyncapi-spring-cloud-streams3/","repoUrl":"https://github.com/zenwave360/zenwave-sdk"},"filters":{"language":[{"name":"Java","color":"bg-[#ECA2A4]","borderColor":"border-[#EC2125]"}],"technology":[{"name":"Maven","color":"bg-[#FF6B80]","borderColor":"border-[#CA1A33]"},{"name":"Liquid","color":"bg-[#61d0f2]","borderColor":"border-[#40ccf7]"},{"name":"Spring Cloud Streams","color":"bg-[#61d0f2]","borderColor":"border-[#40ccf7]"},{"name":"JHipster JDL","color":"bg-[#61d0f2]","borderColor":"border-[#40ccf7]"}],"categories":["code-generator","dsl","mocking-and-testing","cli"],"hasCommercial":false,"isAsyncAPIOwner":false}}]},"Converters":{"description":"The following is a list of tools that do not yet belong to any specific category but are also useful for the community.","toolsList":[{"title":"AsyncAPI-format","description":"Format an AsyncAPI document by ordering, casing, formatting, and filtering fields.","links":{"repoUrl":"https://github.com/thim81/asyncapi-format"},"filters":{"language":[{"name":"JavaScript","color":"bg-[#F2F1C7]","borderColor":"border-[#BFBE86]"}],"technology":[{"name":"Node.js","color":"bg-[#BDFF67]","borderColor":"border-[#84CE24]"}],"categories":["converter","cli"],"hasCommercial":false,"isAsyncAPIOwner":false}},{"title":"AsyncAPI.Net","description":"The AsyncAPI.NET SDK contains a useful object model for AsyncAPI documents in .NET along with common serializers to extract raw OpenAPI JSON and YAML documents from the model.","links":{"websiteUrl":"https://github.com/LEGO/AsyncAPI.NET/","repoUrl":"https://github.com/LEGO/AsyncAPI.NET"},"filters":{"language":[{"name":"C#","color":"bg-[#E3AFE0]","borderColor":"border-[#9B4F96]"}],"technology":[{"name":".NET","color":"bg-[#A184FF]","borderColor":"border-[#5026D4]"},{"name":"ASP.NET","color":"bg-[#71C2FB]","borderColor":"border-[#1577BC]"}],"categories":["converters","code-first","validator"],"hasCommercial":false,"isAsyncAPIOwner":false}},{"title":"Converter","description":"Converts old versions of AsyncAPI files into the latest version.","links":{"repoUrl":"https://github.com/asyncapi/converter-js"},"filters":{"language":[{"name":"TypeScript","color":"bg-[#7DBCFE]","borderColor":"border-[#2C78C7]"}],"technology":[{"name":"Node.js","color":"bg-[#BDFF67]","borderColor":"border-[#84CE24]"}],"categories":["converter"],"hasCommercial":false,"isAsyncAPIOwner":true}},{"title":"Converter-Go","description":"The AsyncAPI Converter converts AsyncAPI documents from versions 1.0.0, 1.1.0 and 1.2.0 to version 2.0.0. It supports both json and yaml formats on input and output. By default, the AsyncAPI Converter converts a document into the json format.","links":{"repoUrl":"https://github.com/asyncapi/converter-go"},"filters":{"language":[{"name":"Go/Golang","color":"bg-[#8ECFDF]","borderColor":"border-[#00AFD9]"}],"categories":["converter"],"hasCommercial":false,"isAsyncAPIOwner":true,"technology":[]}}]},"Directories":{"description":"The following is a list of directories that index public AsyncAPI documents.","toolsList":[{"title":"API Tracker - AsyncAPI specs","description":"Explore APIs and companies with public AsyncAPI specifications.","links":{"websiteUrl":"https://apitracker.io/specifications/asyncapi","repoUrl":""},"filters":{"categories":["api","directory"],"hasCommercial":false,"isAsyncAPIOwner":false,"technology":[]}},{"title":"AsyncAPI-Directory by APIs.guru","description":"Directory of asynchronous API specifications in AsyncAPI format.","links":{"websiteUrl":"https://apis.guru/asyncapi-directory/","repoUrl":"https://github.com/APIs-guru/asyncapi-directory"},"filters":{"language":[{"name":"JavaScript","color":"bg-[#F2F1C7]","borderColor":"border-[#BFBE86]"}],"technology":[{"name":"Node.js","color":"bg-[#BDFF67]","borderColor":"border-[#84CE24]"},{"name":"Liquid","color":"bg-[#61d0f2]","borderColor":"border-[#40ccf7]"}],"categories":["api","directory"],"hasCommercial":false,"isAsyncAPIOwner":false}}]},"Documentation Generators":{"description":"The following is a list of tools that generate human-readable documentation from an AsyncAPI document.","toolsList":[{"title":"AsyncAPI Generator","description":"Generator is a tool that you can use to generate whatever you want basing on the AsyncAPI specification file as an input.","links":{"docsUrl":"https://www.asyncapi.com/docs/tools/generator","repoUrl":"https://github.com/asyncapi/generator"},"filters":{"language":[{"name":"JavaScript","color":"bg-[#F2F1C7]","borderColor":"border-[#BFBE86]"}],"technology":[{"name":"Node.js","color":"bg-[#BDFF67]","borderColor":"border-[#84CE24]"},{"name":"Markdown","color":"bg-[#61d0f2]","borderColor":"border-[#40ccf7]"}],"categories":["code-generator","documentation-generator"],"hasCommercial":false,"isAsyncAPIOwner":true}},{"title":"asyncapi-asciidoc-template","description":"Asciidoc template for the asyncapi generator","links":{"repoUrl":"https://gitlab.com/djencks/asyncapi-asciidoc-template"},"filters":{"language":[{"name":"JavaScript","color":"bg-[#F2F1C7]","borderColor":"border-[#BFBE86]"}],"technology":[{"name":"React JS","color":"bg-[#9FECFA]","borderColor":"border-[#08D8FE]"}],"categories":["documentation-generator","generator-template"],"hasCommercial":false,"isAsyncAPIOwner":false}},{"title":"Bump.sh","description":"OpenAPI 2 & 3 / AsyncAPI 2 documentation generator, with automatic changelog and visual diff.","links":{"websiteUrl":"https://bump.sh/","repoUrl":""},"filters":{"categories":["documentation-generator"],"hasCommercial":true,"isAsyncAPIOwner":false,"technology":[]}},{"title":"Cupid","description":"A library that focuses on finding and analyzing the relationships between AsyncAPI documents. It outputs a map of the system architecture.","links":{"repoUrl":"https://github.com/asyncapi/cupid"},"filters":{"language":[{"name":"JavaScript","color":"bg-[#F2F1C7]","borderColor":"border-[#BFBE86]"}],"technology":[{"name":"Node.js","color":"bg-[#BDFF67]","borderColor":"border-[#84CE24]"}],"categories":["documentation-generator"],"hasCommercial":false,"isAsyncAPIOwner":true}},{"title":"KnstEventBus","description":"AsyncApi code-first tools for c#. Generates document and view.","links":{"repoUrl":"https://github.com/d0972058277/KnstEventBus"},"filters":{"language":[{"name":"C#","color":"bg-[#E3AFE0]","borderColor":"border-[#9B4F96]"}],"technology":[{"name":"ASP.NET","color":"bg-[#71C2FB]","borderColor":"border-[#1577BC]"},{"name":".NET","color":"bg-[#A184FF]","borderColor":"border-[#5026D4]"}],"categories":["code-first","documentation-generator"],"hasCommercial":false,"isAsyncAPIOwner":false}},{"title":"Springwolf","description":"Automated documentation for async APIs built with Spring Boot. Like Springfox for AsyncAPI. Auto-generates an AsyncAPI document and a web UI.","links":{"websiteUrl":"https://www.springwolf.dev","repoUrl":"https://github.com/springwolf/springwolf-core"},"filters":{"language":[{"name":"Java","color":"bg-[#ECA2A4]","borderColor":"border-[#EC2125]"}],"technology":[{"name":"Springboot","color":"bg-[#98E279]","borderColor":"border-[#68BC44]"},{"name":"Gradle","color":"bg-[#61d0f2]","borderColor":"border-[#40ccf7]"}],"categories":["code-first","documentation-generator"],"hasCommercial":false,"isAsyncAPIOwner":false}},{"title":"Widdershins","description":"OpenAPI 3.0 / Swagger 2.0 / AsyncAPI 1.0 definition to Slate / Shins compatible markdown.","links":{"websiteUrl":"https://mermade.github.io/reslate/","repoUrl":"https://github.com/Mermade/widdershins"},"filters":{"language":[{"name":"JavaScript","color":"bg-[#F2F1C7]","borderColor":"border-[#BFBE86]"}],"technology":[{"name":"Node.js","color":"bg-[#BDFF67]","borderColor":"border-[#84CE24]"},{"name":"Shell","color":"bg-[#61d0f2]","borderColor":"border-[#40ccf7]"}],"categories":["documentation-generator"],"hasCommercial":false,"isAsyncAPIOwner":false}}]},"Editors":{"description":"The following is a list of editors or related tools that allow editing of AsyncAPI document.","toolsList":[{"title":"AsyncAPI Studio","description":"Visually design your AsyncAPI files and event-driven architecture.","links":{"websiteUrl":"https://studio.asyncapi.com","repoUrl":"https://github.com/asyncapi/studio"},"filters":{"technology":[{"name":"React JS","color":"bg-[#9FECFA]","borderColor":"border-[#08D8FE]"},{"name":"TypeScript","color":"bg-[#61d0f2]","borderColor":"border-[#40ccf7]"}],"categories":["editor"],"hasCommercial":false,"isAsyncAPIOwner":true}}]},"UI components":{"description":"The following is a list of UI components to view AsyncAPI documents.","toolsList":[{"title":"Api-Diff-Viewer","description":"React component to view the difference between two Json based API documents. Supported specifications: JsonSchema, OpenAPI 3.x, AsyncAPI 2.x.","links":{"repoUrl":"https://github.com/udamir/api-diff-viewer","websiteUrl":"https://api-diff-viewer.vercel.app/"},"filters":{"language":[{"name":"TypeScript","color":"bg-[#7DBCFE]","borderColor":"border-[#2C78C7]"}],"technology":[{"name":"React JS","color":"bg-[#9FECFA]","borderColor":"border-[#08D8FE]"},{"name":"Babel","color":"bg-[#61d0f2]","borderColor":"border-[#40ccf7]"},{"name":"Storybook","color":"bg-[#61d0f2]","borderColor":"border-[#40ccf7]"}],"categories":["ui-component"],"hasCommercial":false,"isAsyncAPIOwner":false}},{"title":"AsyncAPI React component","description":"React component for rendering documentation from your specification in real-time in the browser. It also provides a WebComponent and bundle for Angular and Vue","links":{"repoUrl":"https://github.com/asyncapi/asyncapi-react"},"filters":{"language":[{"name":"TypeScript","color":"bg-[#7DBCFE]","borderColor":"border-[#2C78C7]"}],"technology":[{"name":"React JS","color":"bg-[#9FECFA]","borderColor":"border-[#08D8FE]"},{"name":"WebComponents","color":"bg-[#61d0f2]","borderColor":"border-[#40ccf7]"}],"categories":["ui-component"],"hasCommercial":false,"isAsyncAPIOwner":true}}]},"DSL":{"description":"Writing YAML by hand is no fun, and maybe you don't want a GUI, so use a Domain Specific Language to write AsyncAPI in your language of choice.","toolsList":[{"title":"BOATS","description":"Compile your single AsyncAPI file from multiple YAML files with BOATS and with the help of the template engine Nunjucks, plus a many extra helpers to automate much of the donkey work.","links":{"repoUrl":"https://github.com/j-d-carmichael/boats"},"filters":{"language":[{"name":"TypeScript","color":"bg-[#7DBCFE]","borderColor":"border-[#2C78C7]"}],"technology":[{"name":"Node.js","color":"bg-[#BDFF67]","borderColor":"border-[#84CE24]"}],"categories":["dsl"],"hasCommercial":false,"isAsyncAPIOwner":false}},{"title":"ZenWave SDK","description":"DDD and API-First for Event-Driven Microservices","links":{"websiteUrl":"https://zenwave360.github.io/","docsUrl":"https://zenwave360.github.io/zenwave-sdk/plugins/asyncapi-spring-cloud-streams3/","repoUrl":"https://github.com/zenwave360/zenwave-sdk"},"filters":{"language":[{"name":"Java","color":"bg-[#ECA2A4]","borderColor":"border-[#EC2125]"}],"technology":[{"name":"Maven","color":"bg-[#FF6B80]","borderColor":"border-[#CA1A33]"},{"name":"Liquid","color":"bg-[#61d0f2]","borderColor":"border-[#40ccf7]"},{"name":"Spring Cloud Streams","color":"bg-[#61d0f2]","borderColor":"border-[#40ccf7]"},{"name":"JHipster JDL","color":"bg-[#61d0f2]","borderColor":"border-[#40ccf7]"}],"categories":["code-generator","dsl","mocking-and-testing","cli"],"hasCommercial":false,"isAsyncAPIOwner":false}}]},"Frameworks":{"description":"The following is a list of API/application frameworks that make use of AsyncAPI.","toolsList":[{"title":"Asynction","description":"SocketIO server framework driven by the AsyncAPI specification. Asynction guarantees that your API will work in accordance with its AsyncAPI documentation. Built on top of Flask-SocketIO.","links":{"websiteUrl":"https://pypi.org/project/asynction/","repoUrl":"https://github.com/dedoussis/asynction"},"filters":{"language":[{"name":"Python","color":"bg-[#A8D0EF]","borderColor":"border-[#3878AB]"}],"technology":[{"name":"Flask","color":"bg-[#D7C7F2]","borderColor":"border-[#A387D2]"}],"categories":["framework"],"hasCommercial":false,"isAsyncAPIOwner":false}},{"title":"FastStream","description":"A powerful and easy-to-use Python framework for building asynchronous services interacting with event streams such as Apache Kafka, RabbitMQ and NATS.","links":{"websiteUrl":"https://faststream.airt.ai","repoUrl":"https://github.com/airtai/FastStream"},"filters":{"language":[{"name":"Python","color":"bg-[#A8D0EF]","borderColor":"border-[#3878AB]"}],"categories":["code-first","framework"],"hasCommercial":false,"isAsyncAPIOwner":false,"technology":[]}}]},"GitHub Actions":{"description":"The following is a list of GitHub Actions that you can use in your workflows","toolsList":[{"title":"API documentation generation on Bump.sh","description":"With this GitHub Action you can automatically generate your API reference (with the changelog and diff) on Bump.sh from any AsyncAPI file.","links":{"websiteUrl":"https://github.com/marketplace/actions/api-documentation-on-bump","repoUrl":"https://github.com/bump-sh/github-action"},"filters":{"language":[{"name":"TypeScript","color":"bg-[#7DBCFE]","borderColor":"border-[#2C78C7]"}],"categories":["github-action"],"hasCommercial":false,"isAsyncAPIOwner":false,"technology":[]}},{"title":"AsyncAPI GitHub Action","description":"This action validates if the AsyncAPI schema file is valid or not.","links":{"websiteUrl":"https://github.com/marketplace/actions/asyncapi-github-action","repoUrl":"https://github.com/WaleedAshraf/asyncapi-github-action"},"filters":{"language":[{"name":"JavaScript","color":"bg-[#F2F1C7]","borderColor":"border-[#BFBE86]"}],"technology":[{"name":"Node.js","color":"bg-[#BDFF67]","borderColor":"border-[#84CE24]"}],"categories":["github-action","validator"],"hasCommercial":false,"isAsyncAPIOwner":false}},{"title":"Automated version bump for AsyncAPI documents","description":"With this GitHub Action, you can automatically bump the version based on commit messages, which is similar to what semantic-release is for NPM.","links":{"websiteUrl":"https://github.com/marketplace/actions/automated-version-bump-for-asyncapi","repoUrl":"https://github.com/bump-sh/github-action"},"filters":{"language":[{"name":"JavaScript","color":"bg-[#F2F1C7]","borderColor":"border-[#BFBE86]"}],"technology":[{"name":"Node.js","color":"bg-[#BDFF67]","borderColor":"border-[#84CE24]"}],"categories":["github-action"],"hasCommercial":false,"isAsyncAPIOwner":false}},{"title":"GitHub Action for Generator","description":"GitHub Action to generate all the things from your AsyncAPI document using the AsyncAPI generator","links":{"repoUrl":"https://github.com/asyncapi/github-action-for-generator"},"filters":{"technology":[{"name":"AsyncAPI Generator","color":"bg-[#61d0f2]","borderColor":"border-[#40ccf7]"}],"categories":["github-action"],"hasCommercial":false,"isAsyncAPIOwner":true}},{"title":"GitHub Action for Generator","description":null,"links":{"repoUrl":"https://github.com/actions-marketplace-validations/asyncapi_github-action-for-generator"},"filters":{"technology":[{"name":"AsyncAPI Generator","color":"bg-[#61d0f2]","borderColor":"border-[#40ccf7]"}],"categories":["github-action"],"hasCommercial":false,"isAsyncAPIOwner":false}}]},"Mocking and Testing":{"description":"The tools below take specification documents as input, then publish fake messages to broker destinations for simulation purposes. They may also check that publisher messages are compliant with schemas.","toolsList":[{"title":"Microcks","description":"Mocking and testing platform for API and microservices. Turn your AsyncAPI, OpenAPI contract examples, or Postman collections into ready-to-use mocks. Use examples to simulate and validate received messages according to schema elements.","links":{"websiteUrl":"https://microcks.io/","repoUrl":"https://github.com/microcks/microcks"},"filters":{"language":[{"name":"Java","color":"bg-[#ECA2A4]","borderColor":"border-[#EC2125]"}],"technology":[{"name":"TypeScript","color":"bg-[#61d0f2]","borderColor":"border-[#40ccf7]"},{"name":"Kubernetes-native","color":"bg-[#D7C7F2]","borderColor":"border-[#A387D2]"},{"name":"Saas","color":"bg-[#6AB8EC]","borderColor":"border-[#2275AD]"}],"categories":["mocking-and-testing"],"hasCommercial":false,"isAsyncAPIOwner":false}},{"title":"MultiAPI Converter","description":"Use AsyncAPI definition, to generate Spring Cloud Contract producer validation or consumer stubs, using maven.","links":{"repoUrl":"https://github.com/sngular/scc-multiapi-converter"},"filters":{"language":[{"name":"Java","color":"bg-[#ECA2A4]","borderColor":"border-[#EC2125]"}],"technology":[{"name":"Springboot","color":"bg-[#98E279]","borderColor":"border-[#68BC44]"}],"categories":["mocking-and-testing"],"hasCommercial":false,"isAsyncAPIOwner":false}},{"title":"Specmatic","description":"An API contract testing tool that helps ensure the correctness APIs by automatically generating test cases and verifying them against the API spec. It simplifies the process of testing APIs and reduces the likelihood of bugs and compatibility issues.","links":{"websiteUrl":"https://specmatic.in","docsUrl":"https://specmatic.in/documentation/","repoUrl":"https://github.com/znsio/specmatic"},"filters":{"language":[{"name":"Kotlin","color":"bg-[#B1ACDF]","borderColor":"border-[#756BD9]"}],"technology":[{"name":"Maven","color":"bg-[#FF6B80]","borderColor":"border-[#CA1A33]"}],"categories":["mocking-and-testing"],"hasCommercial":false,"isAsyncAPIOwner":false}},{"title":"Virtualan","description":"Mocking and testing platform for API and microservices. Allows you to create and setup mocks for OpenAPI and AsyncAPI contracts. Shows how to setup and create AsyncAPI GitHub Reference Examples and OpenAPI GitHub Reference Examples.","links":{"websiteUrl":"https://www.virtualan.io/index.html","repoUrl":"https://github.com/virtualansoftware"},"filters":{"technology":[{"name":"Kubernetes-native","color":"bg-[#D7C7F2]","borderColor":"border-[#A387D2]"}],"categories":["mocking-and-testing"],"hasCommercial":false,"isAsyncAPIOwner":false}},{"title":"ZenWave SDK","description":"DDD and API-First for Event-Driven Microservices","links":{"websiteUrl":"https://zenwave360.github.io/","docsUrl":"https://zenwave360.github.io/zenwave-sdk/plugins/asyncapi-spring-cloud-streams3/","repoUrl":"https://github.com/zenwave360/zenwave-sdk"},"filters":{"language":[{"name":"Java","color":"bg-[#ECA2A4]","borderColor":"border-[#EC2125]"}],"technology":[{"name":"Maven","color":"bg-[#FF6B80]","borderColor":"border-[#CA1A33]"},{"name":"Liquid","color":"bg-[#61d0f2]","borderColor":"border-[#40ccf7]"},{"name":"Spring Cloud Streams","color":"bg-[#61d0f2]","borderColor":"border-[#40ccf7]"},{"name":"JHipster JDL","color":"bg-[#61d0f2]","borderColor":"border-[#40ccf7]"}],"categories":["code-generator","dsl","mocking-and-testing","cli"],"hasCommercial":false,"isAsyncAPIOwner":false}}]},"Validators":{"description":"The following is a list of tools that validate AsyncAPI documents.","toolsList":[{"title":"AMF","description":"AMF (AML Modeling Framework) is an open-source library capable of parsing and validating AML metadata documents.","links":{"docsUrl":"https://a.ml/docs/","repoUrl":"https://github.com/aml-org/amf"},"filters":{"language":[{"name":"Scala","color":"bg-[#FFA299]","borderColor":"border-[#DF301F]"}],"categories":["validator"],"hasCommercial":false,"isAsyncAPIOwner":false,"technology":[]}},{"title":"AsyncAPI GitHub Action","description":"This action validates if the AsyncAPI schema file is valid or not.","links":{"websiteUrl":"https://github.com/marketplace/actions/asyncapi-github-action","repoUrl":"https://github.com/WaleedAshraf/asyncapi-github-action"},"filters":{"language":[{"name":"JavaScript","color":"bg-[#F2F1C7]","borderColor":"border-[#BFBE86]"}],"technology":[{"name":"Node.js","color":"bg-[#BDFF67]","borderColor":"border-[#84CE24]"}],"categories":["github-action","validator"],"hasCommercial":false,"isAsyncAPIOwner":false}},{"title":"AsyncAPI Parser","description":"Use this package to parse and validate AsyncAPI documents —either YAML or JSON— in your Node.js or browser application. Updated bundle for the browser is always attached to the GitHub Release.","links":{"repoUrl":"https://github.com/asyncapi/parser-js"},"filters":{"language":[{"name":"JavaScript","color":"bg-[#F2F1C7]","borderColor":"border-[#BFBE86]"}],"technology":[{"name":"Node.js","color":"bg-[#BDFF67]","borderColor":"border-[#84CE24]"}],"categories":["validator"],"hasCommercial":false,"isAsyncAPIOwner":true}},{"title":"AsyncAPI Parser","description":"The AsyncAPI Parser validates AsyncAPI documents according to dedicated schemas.","links":{"repoUrl":"https://github.com/asyncapi/parser-go"},"filters":{"language":[{"name":"Go/Golang","color":"bg-[#8ECFDF]","borderColor":"border-[#00AFD9]"}],"categories":["validator"],"hasCommercial":false,"isAsyncAPIOwner":true,"technology":[]}},{"title":"AsyncAPI Parser Wrapper","description":"Use this library to parse and validate AsyncAPI documents — either YAML or JSON — in your Java application. It is a Java wrapper over JavaScript Parser implemented using J2V8.","links":{"repoUrl":"https://github.com/AsyncAPITools/parser-java-wrapper"},"filters":{"language":[{"name":"Java","color":"bg-[#ECA2A4]","borderColor":"border-[#EC2125]"}],"categories":["validator"],"hasCommercial":false,"isAsyncAPIOwner":false,"technology":[]}},{"title":"asyncapi-validator","description":"It allows you to validate the schema of your messages against your AsyncAPI schema definition. You can use it with Kafka, RabbitMQ or any other messaging/queue.","links":{"repoUrl":"https://github.com/WaleedAshraf/asyncapi-validator"},"filters":{"language":[{"name":"JavaScript","color":"bg-[#F2F1C7]","borderColor":"border-[#BFBE86]"}],"technology":[{"name":"Node.js","color":"bg-[#BDFF67]","borderColor":"border-[#84CE24]"}],"categories":["validator"],"hasCommercial":false,"isAsyncAPIOwner":false}},{"title":"AsyncAPI.Net","description":"The AsyncAPI.NET SDK contains a useful object model for AsyncAPI documents in .NET along with common serializers to extract raw OpenAPI JSON and YAML documents from the model.","links":{"websiteUrl":"https://github.com/LEGO/AsyncAPI.NET/","repoUrl":"https://github.com/LEGO/AsyncAPI.NET"},"filters":{"language":[{"name":"C#","color":"bg-[#E3AFE0]","borderColor":"border-[#9B4F96]"}],"technology":[{"name":".NET","color":"bg-[#A184FF]","borderColor":"border-[#5026D4]"},{"name":"ASP.NET","color":"bg-[#71C2FB]","borderColor":"border-[#1577BC]"}],"categories":["converters","code-first","validator"],"hasCommercial":false,"isAsyncAPIOwner":false}},{"title":"Spectral","description":"A flexible JSON/YAML linter for creating automated style guides, with baked in support for OpenAPI v3.1, v3.0, and v2.0 as well as AsyncAPI v2.x.","links":{"repoUrl":"https://github.com/stoplightio/spectral"},"filters":{"language":[{"name":"TypeScript","color":"bg-[#7DBCFE]","borderColor":"border-[#2C78C7]"}],"technology":[{"name":"Node.js","color":"bg-[#BDFF67]","borderColor":"border-[#84CE24]"}],"categories":["validator"],"hasCommercial":false,"isAsyncAPIOwner":false}}]},"Compare tools":{"description":"The following is a list of tools that compare AsyncAPI documents.","toolsList":[{"title":"Api-Smart-Diff","description":"It allows you to compare two API documents and classify changes. Supported API specifications: OpenAPI, AsyncAPI, JsonSchema.","links":{"repoUrl":"https://github.com/udamir/api-smart-diff"},"filters":{"language":[{"name":"TypeScript","color":"bg-[#7DBCFE]","borderColor":"border-[#2C78C7]"}],"categories":["compare-tool"],"hasCommercial":false,"isAsyncAPIOwner":false,"technology":[]}},{"title":"AsyncAPI Diff","description":"Diff is a library that compares two AsyncAPI Documents and provides information about the differences by pointing out explicitly information like breaking changes.","links":{"repoUrl":"https://github.com/asyncapi/diff"},"filters":{"language":[{"name":"TypeScript","color":"bg-[#7DBCFE]","borderColor":"border-[#2C78C7]"}],"technology":[{"name":"TypeScript","color":"bg-[#61d0f2]","borderColor":"border-[#40ccf7]"}],"categories":["compare-tool"],"hasCommercial":false,"isAsyncAPIOwner":true}},{"title":"jasyncapicmp","description":"Tool for comparing two AsyncAPI versions and evaluating compatibility.","links":{"websiteUrl":"https://siom79.github.io/jasyncapicmp/","docsUrl":"https://github.com/siom79/jasyncapicmp","repoUrl":"https://github.com/siom79/jasyncapicmp"},"filters":{"language":[{"name":"Java","color":"bg-[#ECA2A4]","borderColor":"border-[#EC2125]"}],"technology":[{"name":"Maven","color":"bg-[#FF6B80]","borderColor":"border-[#CA1A33]"}],"categories":["compare-tool"],"hasCommercial":false,"isAsyncAPIOwner":false}},{"title":"jasyncapicmp","description":"Tool/library/maven-plugin for comparing two AsyncAPI versions and evaluating compatibility.","links":{"websiteUrl":"https://siom79.github.io/jasyncapicmp/","repoUrl":"https://github.com/siom79/jasyncapicmp"},"filters":{"language":[{"name":"Java","color":"bg-[#ECA2A4]","borderColor":"border-[#EC2125]"}],"technology":[{"name":"Maven","color":"bg-[#FF6B80]","borderColor":"border-[#CA1A33]"}],"categories":["compare-tool"],"hasCommercial":false,"isAsyncAPIOwner":false}}]},"CLIs":{"description":"The following is a list of tools that you can work with in terminal or do some CI/CD automation.","toolsList":[{"title":"AsyncAPI CLI","description":"One CLI to rule them all. \nThis is a CLI that aims to integrate all AsyncAPI tools that you need while AsyncAPI document development and maintainance. \nYou can use it to generate docs or code, validate AsyncAPI document and event create new documents.\n","links":{"websiteUrl":"https://www.asyncapi.com/tools/cli","repoUrl":"https://github.com/asyncapi/cli"},"filters":{"technology":[{"name":"TypeScript","color":"bg-[#61d0f2]","borderColor":"border-[#40ccf7]"}],"categories":["others","cli"],"hasCommercial":false,"isAsyncAPIOwner":true}},{"title":"AsyncAPI-format","description":"Format an AsyncAPI document by ordering, casing, formatting, and filtering fields.","links":{"repoUrl":"https://github.com/asyncapi/converter-go"},"filters":{"language":[{"name":"JavaScript","color":"bg-[#F2F1C7]","borderColor":"border-[#BFBE86]"}],"technology":[{"name":"Node.js","color":"bg-[#BDFF67]","borderColor":"border-[#84CE24]"}],"categories":["converter","cli"],"hasCommercial":false,"isAsyncAPIOwner":true}},{"title":"ZenWave SDK","description":"DDD and API-First for Event-Driven Microservices","links":{"websiteUrl":"https://zenwave360.github.io/","docsUrl":"https://zenwave360.github.io/zenwave-sdk/plugins/asyncapi-spring-cloud-streams3/","repoUrl":"https://github.com/zenwave360/zenwave-sdk"},"filters":{"language":[{"name":"Java","color":"bg-[#ECA2A4]","borderColor":"border-[#EC2125]"}],"technology":[{"name":"Maven","color":"bg-[#FF6B80]","borderColor":"border-[#CA1A33]"},{"name":"Liquid","color":"bg-[#61d0f2]","borderColor":"border-[#40ccf7]"},{"name":"Spring Cloud Streams","color":"bg-[#61d0f2]","borderColor":"border-[#40ccf7]"},{"name":"JHipster JDL","color":"bg-[#61d0f2]","borderColor":"border-[#40ccf7]"}],"categories":["code-generator","dsl","mocking-and-testing","cli"],"hasCommercial":false,"isAsyncAPIOwner":false}}]},"Bundlers":{"description":"The following is a list of tools that you can work with to bundle AsyncAPI documents.","toolsList":[{"title":"Api-ref-bundler","description":"It allows you bundle/dereference external/internal $refs in Json based API document. Supported specifications: OpenAPI, AsyncAPI, JsonSchema.","links":{"repoUrl":"https://github.com/udamir/api-ref-bundler"},"filters":{"language":[{"name":"TypeScript","color":"bg-[#7DBCFE]","borderColor":"border-[#2C78C7]"}],"technology":[{"name":"TypeScript","color":"bg-[#61d0f2]","borderColor":"border-[#40ccf7]"}],"categories":["bundler"],"hasCommercial":false,"isAsyncAPIOwner":false}},{"title":"AsyncAPI Bundler","description":"Combine multiple AsyncAPI specification files into one.","links":{"repoUrl":"https://github.com/asyncapi/bundler"},"filters":{"language":[{"name":"TypeScript","color":"bg-[#7DBCFE]","borderColor":"border-[#2C78C7]"}],"technology":[{"name":"TypeScript","color":"bg-[#61d0f2]","borderColor":"border-[#40ccf7]"}],"categories":["bundler"],"hasCommercial":false,"isAsyncAPIOwner":true}}]},"IDE Extensions":{"description":"The following is a list of extensions for different IDEs like VSCode, IntelliJ IDEA and others","toolsList":[{"title":"asyncapi-preview","description":"VSCode extension that enables you to:\n - Preview documentation generated using you AsyncAPI document. It uses AsyncAPI React component under the hood,\n - Create AsyncAPI documents faster using SmartPaste functionality\n","links":{"repoUrl":"https://github.com/asyncapi/vs-asyncapi-preview"},"filters":{"technology":[{"name":"VSCode","color":"bg-[#61d0f2]","borderColor":"border-[#40ccf7]"},{"name":"SmartPaste","color":"bg-[#61d0f2]","borderColor":"border-[#40ccf7]"}],"categories":["ide-extension"],"hasCommercial":false,"isAsyncAPIOwner":true}},{"title":"asyncapi-preview","description":"VSCode extension that enables you to:\n - Preview documentation generated using you AsyncAPI document. It uses AsyncAPI React component under the hood,\n - Create AsyncAPI documents faster using SmartPaste functionality\n","links":{"repoUrl":"https://github.com/Savio629/testing2"},"filters":{"technology":[{"name":"VSCode","color":"bg-[#61d0f2]","borderColor":"border-[#40ccf7]"},{"name":"SmartPaste","color":"bg-[#61d0f2]","borderColor":"border-[#40ccf7]"}],"categories":["ide-extension"],"hasCommercial":false,"isAsyncAPIOwner":false}},{"title":"jAsyncAPI - IDEA plugin","description":"Idea plugin for the java-asyncapi - Helps to edit and validate AsyncAPI schemas.","links":{"websiteUrl":"https://plugins.jetbrains.com/plugin/15673-asyncapi","docsUrl":"https://github.com/asyncapi/jasyncapi-idea-plugin#usage","repoUrl":"https://github.com/asyncapi/jasyncapi-idea-plugin"},"filters":{"language":[{"name":"Kotlin","color":"bg-[#B1ACDF]","borderColor":"border-[#756BD9]"}],"technology":[{"name":"JetBrains","color":"bg-[#61d0f2]","borderColor":"border-[#40ccf7]"},{"name":"IntelliJ IDEA","color":"bg-[#61d0f2]","borderColor":"border-[#40ccf7]"}],"categories":["ide-extension"],"hasCommercial":false,"isAsyncAPIOwner":true}}]},"AsyncAPI Generator Templates":{"description":"The following is a list of templates compatible with AsyncAPI Generator. You can use them to generate apps, clients or documentation from your AsyncAPI documents.","toolsList":[{"title":"Java Spring Template","description":"Java Spring template for the AsyncAPI Generator","links":{"repoUrl":"https://github.com/asyncapi/java-spring-template"},"filters":{"language":[{"name":"Java","color":"bg-[#ECA2A4]","borderColor":"border-[#EC2125]"},{"name":"JavaScript","color":"bg-[#F2F1C7]","borderColor":"border-[#BFBE86]"}],"technology":[{"name":"Springboot","color":"bg-[#98E279]","borderColor":"border-[#68BC44]"},{"name":"Maven","color":"bg-[#FF6B80]","borderColor":"border-[#CA1A33]"},{"name":"Gradle","color":"bg-[#61d0f2]","borderColor":"border-[#40ccf7]"}],"categories":["generator-template"],"hasCommercial":false,"isAsyncAPIOwner":true}},{"title":"Node.js Multiprotocol Template","description":"This template generates a server using your AsyncAPI document. It supports multiple different protocols, like Kafka or MQTT. It is designed in the way that generated code is a library and with it's API you can start the server, send messages or register a middleware for listening incoming messages. Runtime message validation included.","links":{"repoUrl":"https://github.com/asyncapi/nodejs-template"},"filters":{"language":[{"name":"JavaScript","color":"bg-[#F2F1C7]","borderColor":"border-[#BFBE86]"}],"technology":[{"name":"Node.js","color":"bg-[#BDFF67]","borderColor":"border-[#84CE24]"}],"categories":["generator-template"],"hasCommercial":false,"isAsyncAPIOwner":true}},{"title":"Node.js Websockets Template","description":"Node.js WebSockets template for the AsyncAPI Generator. It showcases how from a single AsyncAPI document you can generate a server and a client at the same time.","links":{"repoUrl":"https://github.com/asyncapi/nodejs-ws-template"},"filters":{"language":[{"name":"JavaScript","color":"bg-[#F2F1C7]","borderColor":"border-[#BFBE86]"}],"technology":[{"name":"Node.js","color":"bg-[#BDFF67]","borderColor":"border-[#84CE24]"}],"categories":["generator-template"],"hasCommercial":false,"isAsyncAPIOwner":true}}]},"Others":{"description":"The following is a list of tools that comes under Other category.","toolsList":[{"title":"AsyncAPI CLI","description":"One CLI to rule them all. \nThis is a CLI that aims to integrate all AsyncAPI tools that you need while AsyncAPI document development and maintainance. \nYou can use it to generate docs or code, validate AsyncAPI document and event create new documents.\n","links":{"websiteUrl":"https://www.asyncapi.com/tools/cli","repoUrl":"https://github.com/asyncapi/cli"},"filters":{"technology":[{"name":"TypeScript","color":"bg-[#61d0f2]","borderColor":"border-[#40ccf7]"}],"categories":["others","cli"],"hasCommercial":false,"isAsyncAPIOwner":true}}]}} \ No newline at end of file From 7f18ef8fc82dba80c0ddd9b541143fb30348362d Mon Sep 17 00:00:00 2001 From: Lukasz Gornicki Date: Mon, 23 Oct 2023 11:12:41 +0200 Subject: [PATCH 044/134] fix: enable google analytics (#2261) --- components/Head.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/components/Head.js b/components/Head.js index 65c8869950b..3eaff2590bc 100644 --- a/components/Head.js +++ b/components/Head.js @@ -30,7 +30,7 @@ export default function HeadComponent({ title = title ? `${title} | ${permTitle}` : permTitle; //enable google analytics - if (typeof window !== 'undefined' && window.location.hostname === 'asyncapi.com') { + if (typeof window !== 'undefined' && window.location.hostname.includes('asyncapi.com')) { TagManager.initialize({gtmId: 'GTM-T58BTVQ'}) ReactGA.initialize('UA-109278936-1') ReactGA.pageview(window.location.pathname + window.location.search) From c17a96d0c33b836d5f24e6217639c3b3a7912432 Mon Sep 17 00:00:00 2001 From: asyncapi-bot Date: Mon, 23 Oct 2023 14:13:26 +0200 Subject: [PATCH 045/134] docs(cli): update latest cli documentation (#2262) --- pages/docs/tools/cli/usage.md | 50 +++++++++++++++++------------------ 1 file changed, 25 insertions(+), 25 deletions(-) diff --git a/pages/docs/tools/cli/usage.md b/pages/docs/tools/cli/usage.md index 1ed7398c883..8e2341229ca 100644 --- a/pages/docs/tools/cli/usage.md +++ b/pages/docs/tools/cli/usage.md @@ -29,7 +29,7 @@ $ npm install -g @asyncapi/cli $ asyncapi COMMAND running command... $ asyncapi (--version) -@asyncapi/cli/0.58.10 linux-x64 node-v18.18.2 +@asyncapi/cli/0.58.11 linux-x64 node-v18.18.2 $ asyncapi --help [COMMAND] USAGE $ asyncapi COMMAND @@ -93,7 +93,7 @@ EXAMPLES $ asyncapi bundle ./asyncapi.yaml ./features.yaml --base ./asyncapi.yaml --reference-into-components ``` -_See code: [src/commands/bundle.ts](https://github.com/asyncapi/cli/blob/v0.58.10/src/commands/bundle.ts)_ +_See code: [src/commands/bundle.ts](https://github.com/asyncapi/cli/blob/v0.58.11/src/commands/bundle.ts)_ ## `asyncapi config` @@ -107,7 +107,7 @@ DESCRIPTION CLI config settings ``` -_See code: [src/commands/config/index.ts](https://github.com/asyncapi/cli/blob/v0.58.10/src/commands/config/index.ts)_ +_See code: [src/commands/config/index.ts](https://github.com/asyncapi/cli/blob/v0.58.11/src/commands/config/index.ts)_ ## `asyncapi config context` @@ -121,7 +121,7 @@ DESCRIPTION Manage short aliases for full paths to AsyncAPI documents ``` -_See code: [src/commands/config/context/index.ts](https://github.com/asyncapi/cli/blob/v0.58.10/src/commands/config/context/index.ts)_ +_See code: [src/commands/config/context/index.ts](https://github.com/asyncapi/cli/blob/v0.58.11/src/commands/config/context/index.ts)_ ## `asyncapi config context add CONTEXT-NAME SPEC-FILE-PATH` @@ -143,7 +143,7 @@ DESCRIPTION Add a context to the store ``` -_See code: [src/commands/config/context/add.ts](https://github.com/asyncapi/cli/blob/v0.58.10/src/commands/config/context/add.ts)_ +_See code: [src/commands/config/context/add.ts](https://github.com/asyncapi/cli/blob/v0.58.11/src/commands/config/context/add.ts)_ ## `asyncapi config context current` @@ -160,7 +160,7 @@ DESCRIPTION Shows the current context that is being used ``` -_See code: [src/commands/config/context/current.ts](https://github.com/asyncapi/cli/blob/v0.58.10/src/commands/config/context/current.ts)_ +_See code: [src/commands/config/context/current.ts](https://github.com/asyncapi/cli/blob/v0.58.11/src/commands/config/context/current.ts)_ ## `asyncapi config context edit CONTEXT-NAME NEW-SPEC-FILE-PATH` @@ -181,7 +181,7 @@ DESCRIPTION Edit a context in the store ``` -_See code: [src/commands/config/context/edit.ts](https://github.com/asyncapi/cli/blob/v0.58.10/src/commands/config/context/edit.ts)_ +_See code: [src/commands/config/context/edit.ts](https://github.com/asyncapi/cli/blob/v0.58.11/src/commands/config/context/edit.ts)_ ## `asyncapi config context init [CONTEXT-FILE-PATH]` @@ -204,7 +204,7 @@ DESCRIPTION Initialize context ``` -_See code: [src/commands/config/context/init.ts](https://github.com/asyncapi/cli/blob/v0.58.10/src/commands/config/context/init.ts)_ +_See code: [src/commands/config/context/init.ts](https://github.com/asyncapi/cli/blob/v0.58.11/src/commands/config/context/init.ts)_ ## `asyncapi config context list` @@ -221,7 +221,7 @@ DESCRIPTION List all the stored contexts in the store ``` -_See code: [src/commands/config/context/list.ts](https://github.com/asyncapi/cli/blob/v0.58.10/src/commands/config/context/list.ts)_ +_See code: [src/commands/config/context/list.ts](https://github.com/asyncapi/cli/blob/v0.58.11/src/commands/config/context/list.ts)_ ## `asyncapi config context remove CONTEXT-NAME` @@ -241,7 +241,7 @@ DESCRIPTION Delete a context from the store ``` -_See code: [src/commands/config/context/remove.ts](https://github.com/asyncapi/cli/blob/v0.58.10/src/commands/config/context/remove.ts)_ +_See code: [src/commands/config/context/remove.ts](https://github.com/asyncapi/cli/blob/v0.58.11/src/commands/config/context/remove.ts)_ ## `asyncapi config context use CONTEXT-NAME` @@ -261,7 +261,7 @@ DESCRIPTION Set a context as current ``` -_See code: [src/commands/config/context/use.ts](https://github.com/asyncapi/cli/blob/v0.58.10/src/commands/config/context/use.ts)_ +_See code: [src/commands/config/context/use.ts](https://github.com/asyncapi/cli/blob/v0.58.11/src/commands/config/context/use.ts)_ ## `asyncapi config versions` @@ -278,7 +278,7 @@ DESCRIPTION Show versions of AsyncAPI tools used ``` -_See code: [src/commands/config/versions.ts](https://github.com/asyncapi/cli/blob/v0.58.10/src/commands/config/versions.ts)_ +_See code: [src/commands/config/versions.ts](https://github.com/asyncapi/cli/blob/v0.58.11/src/commands/config/versions.ts)_ ## `asyncapi convert [SPEC-FILE]` @@ -300,7 +300,7 @@ DESCRIPTION Convert asyncapi documents older to newer versions ``` -_See code: [src/commands/convert.ts](https://github.com/asyncapi/cli/blob/v0.58.10/src/commands/convert.ts)_ +_See code: [src/commands/convert.ts](https://github.com/asyncapi/cli/blob/v0.58.11/src/commands/convert.ts)_ ## `asyncapi diff OLD NEW` @@ -355,7 +355,7 @@ DESCRIPTION Find diff between two asyncapi files ``` -_See code: [src/commands/diff.ts](https://github.com/asyncapi/cli/blob/v0.58.10/src/commands/diff.ts)_ +_See code: [src/commands/diff.ts](https://github.com/asyncapi/cli/blob/v0.58.11/src/commands/diff.ts)_ ## `asyncapi generate` @@ -369,7 +369,7 @@ DESCRIPTION Generate typed models or other things like clients, applications or docs using AsyncAPI Generator templates. ``` -_See code: [src/commands/generate/index.ts](https://github.com/asyncapi/cli/blob/v0.58.10/src/commands/generate/index.ts)_ +_See code: [src/commands/generate/index.ts](https://github.com/asyncapi/cli/blob/v0.58.11/src/commands/generate/index.ts)_ ## `asyncapi generate fromTemplate ASYNCAPI TEMPLATE` @@ -406,7 +406,7 @@ EXAMPLES $ asyncapi generate fromTemplate asyncapi.yaml @asyncapi/html-template --param version=1.0.0 singleFile=true --output ./docs --force-write ``` -_See code: [src/commands/generate/fromTemplate.ts](https://github.com/asyncapi/cli/blob/v0.58.10/src/commands/generate/fromTemplate.ts)_ +_See code: [src/commands/generate/fromTemplate.ts](https://github.com/asyncapi/cli/blob/v0.58.11/src/commands/generate/fromTemplate.ts)_ ## `asyncapi generate models LANGUAGE FILE` @@ -480,7 +480,7 @@ DESCRIPTION Generates typed models ``` -_See code: [src/commands/generate/models.ts](https://github.com/asyncapi/cli/blob/v0.58.10/src/commands/generate/models.ts)_ +_See code: [src/commands/generate/models.ts](https://github.com/asyncapi/cli/blob/v0.58.11/src/commands/generate/models.ts)_ ## `asyncapi new` @@ -535,7 +535,7 @@ EXAMPLES $ asyncapi new --file-name=my-asyncapi.yml --example=default-example.yml --no-tty - create a new file with a specific name, using one of the examples and without interactive mode ``` -_See code: [src/commands/new/index.ts](https://github.com/asyncapi/cli/blob/v0.58.10/src/commands/new/index.ts)_ +_See code: [src/commands/new/index.ts](https://github.com/asyncapi/cli/blob/v0.58.11/src/commands/new/index.ts)_ ## `asyncapi new file` @@ -590,7 +590,7 @@ EXAMPLES $ asyncapi new --file-name=my-asyncapi.yml --example=default-example.yml --no-tty - create a new file with a specific name, using one of the examples and without interactive mode ``` -_See code: [src/commands/new/file.ts](https://github.com/asyncapi/cli/blob/v0.58.10/src/commands/new/file.ts)_ +_See code: [src/commands/new/file.ts](https://github.com/asyncapi/cli/blob/v0.58.11/src/commands/new/file.ts)_ ## `asyncapi new glee` @@ -608,7 +608,7 @@ DESCRIPTION Creates a new Glee project ``` -_See code: [src/commands/new/glee.ts](https://github.com/asyncapi/cli/blob/v0.58.10/src/commands/new/glee.ts)_ +_See code: [src/commands/new/glee.ts](https://github.com/asyncapi/cli/blob/v0.58.11/src/commands/new/glee.ts)_ ## `asyncapi new project` @@ -626,7 +626,7 @@ DESCRIPTION Creates a new Glee project ``` -_See code: [src/commands/new/project.ts](https://github.com/asyncapi/cli/blob/v0.58.10/src/commands/new/project.ts)_ +_See code: [src/commands/new/project.ts](https://github.com/asyncapi/cli/blob/v0.58.11/src/commands/new/project.ts)_ ## `asyncapi optimize [SPEC-FILE]` @@ -662,7 +662,7 @@ EXAMPLES $ asyncapi optimize ./asyncapi.yaml --optimization=remove-components,reuse-components,move-to-components --output=terminal --no-tty ``` -_See code: [src/commands/optimize.ts](https://github.com/asyncapi/cli/blob/v0.58.10/src/commands/optimize.ts)_ +_See code: [src/commands/optimize.ts](https://github.com/asyncapi/cli/blob/v0.58.11/src/commands/optimize.ts)_ ## `asyncapi start` @@ -676,7 +676,7 @@ DESCRIPTION Start asyncapi studio ``` -_See code: [src/commands/start/index.ts](https://github.com/asyncapi/cli/blob/v0.58.10/src/commands/start/index.ts)_ +_See code: [src/commands/start/index.ts](https://github.com/asyncapi/cli/blob/v0.58.11/src/commands/start/index.ts)_ ## `asyncapi start studio` @@ -695,7 +695,7 @@ DESCRIPTION starts a new local instance of Studio ``` -_See code: [src/commands/start/studio.ts](https://github.com/asyncapi/cli/blob/v0.58.10/src/commands/start/studio.ts)_ +_See code: [src/commands/start/studio.ts](https://github.com/asyncapi/cli/blob/v0.58.11/src/commands/start/studio.ts)_ ## `asyncapi validate [SPEC-FILE]` @@ -722,5 +722,5 @@ DESCRIPTION validate asyncapi file ``` -_See code: [src/commands/validate.ts](https://github.com/asyncapi/cli/blob/v0.58.10/src/commands/validate.ts)_ +_See code: [src/commands/validate.ts](https://github.com/asyncapi/cli/blob/v0.58.11/src/commands/validate.ts)_ From bc50da1296b2cc3d68a60aaeb0a6ed5065e89624 Mon Sep 17 00:00:00 2001 From: asyncapi-bot Date: Tue, 24 Oct 2023 02:27:00 +0200 Subject: [PATCH 046/134] chore: update meetings.json and newsrooom_videos.json (#2263) --- config/meetings.json | 14 ++++++++++++++ config/newsroom_videos.json | 2 +- 2 files changed, 15 insertions(+), 1 deletion(-) diff --git a/config/meetings.json b/config/meetings.json index 7453482b53a..cef7d6e6a4b 100644 --- a/config/meetings.json +++ b/config/meetings.json @@ -138,5 +138,19 @@ "url": "https://github.com/asyncapi/community/issues/912", "banner": "https://user-images.githubusercontent.com/40604284/275363125-696a5c41-81b2-4e0b-a485-f108a7f525f0.png", "date": "2023-10-17T08:00:00.000Z" + }, + { + "title": "Community Meeting", + "calLink": "https://www.google.com/calendar/event?eid=ZGk3ZHJybXZhNmM3aWJzNWdzZWdtNTZjMHMgY19xOXRzZWlnbG9tZHNqNm5qdWh2YnB0czExY0Bn", + "url": "https://github.com/asyncapi/community/issues/916", + "banner": "https://user-images.githubusercontent.com/40604284/277314120-f03a06ea-0820-462a-85af-18b1706ea5c6.png", + "date": "2023-10-31T16:00:00.000Z" + }, + { + "title": "Community Meeting", + "calLink": "https://www.google.com/calendar/event?eid=b3BvZGhqN2xwZXFiMmtvOTQ1M2cwNGRlZTAgY19xOXRzZWlnbG9tZHNqNm5qdWh2YnB0czExY0Bn", + "url": "https://github.com/asyncapi/community/issues/917", + "banner": "https://user-images.githubusercontent.com/40604284/277314352-f62224d8-03a9-46b2-94bf-13bfae6f973b.png", + "date": "2023-11-14T08:00:00.000Z" } ] \ No newline at end of file diff --git a/config/newsroom_videos.json b/config/newsroom_videos.json index ecc29ef9a86..b3e0982f5c4 100644 --- a/config/newsroom_videos.json +++ b/config/newsroom_videos.json @@ -2,7 +2,7 @@ { "image_url": "https://i.ytimg.com/vi/FN5eR1Zqh9c/hqdefault.jpg", "title": "AsyncAPI Conf on Tour 2023 in Madrid", - "description": "AACoT'23 Madrid Edition streamed live from StageOne at SNGULAR.", + "description": "AACoT'23 Madrid Edition streamed live from StageOne at SNGULAR. 00:00 Waiting 57:12 Opening 1:26:07 Everything You Wish ...", "videoId": "FN5eR1Zqh9c" }, { From fa83b0048a1e504444a3213346611a399c01b9aa Mon Sep 17 00:00:00 2001 From: asyncapi-bot Date: Thu, 26 Oct 2023 14:17:21 +0200 Subject: [PATCH 047/134] docs(cli): update latest cli documentation (#2267) --- pages/docs/tools/cli/usage.md | 50 +++++++++++++++++------------------ 1 file changed, 25 insertions(+), 25 deletions(-) diff --git a/pages/docs/tools/cli/usage.md b/pages/docs/tools/cli/usage.md index 8e2341229ca..7794060fc07 100644 --- a/pages/docs/tools/cli/usage.md +++ b/pages/docs/tools/cli/usage.md @@ -29,7 +29,7 @@ $ npm install -g @asyncapi/cli $ asyncapi COMMAND running command... $ asyncapi (--version) -@asyncapi/cli/0.58.11 linux-x64 node-v18.18.2 +@asyncapi/cli/0.58.12 linux-x64 node-v18.18.2 $ asyncapi --help [COMMAND] USAGE $ asyncapi COMMAND @@ -93,7 +93,7 @@ EXAMPLES $ asyncapi bundle ./asyncapi.yaml ./features.yaml --base ./asyncapi.yaml --reference-into-components ``` -_See code: [src/commands/bundle.ts](https://github.com/asyncapi/cli/blob/v0.58.11/src/commands/bundle.ts)_ +_See code: [src/commands/bundle.ts](https://github.com/asyncapi/cli/blob/v0.58.12/src/commands/bundle.ts)_ ## `asyncapi config` @@ -107,7 +107,7 @@ DESCRIPTION CLI config settings ``` -_See code: [src/commands/config/index.ts](https://github.com/asyncapi/cli/blob/v0.58.11/src/commands/config/index.ts)_ +_See code: [src/commands/config/index.ts](https://github.com/asyncapi/cli/blob/v0.58.12/src/commands/config/index.ts)_ ## `asyncapi config context` @@ -121,7 +121,7 @@ DESCRIPTION Manage short aliases for full paths to AsyncAPI documents ``` -_See code: [src/commands/config/context/index.ts](https://github.com/asyncapi/cli/blob/v0.58.11/src/commands/config/context/index.ts)_ +_See code: [src/commands/config/context/index.ts](https://github.com/asyncapi/cli/blob/v0.58.12/src/commands/config/context/index.ts)_ ## `asyncapi config context add CONTEXT-NAME SPEC-FILE-PATH` @@ -143,7 +143,7 @@ DESCRIPTION Add a context to the store ``` -_See code: [src/commands/config/context/add.ts](https://github.com/asyncapi/cli/blob/v0.58.11/src/commands/config/context/add.ts)_ +_See code: [src/commands/config/context/add.ts](https://github.com/asyncapi/cli/blob/v0.58.12/src/commands/config/context/add.ts)_ ## `asyncapi config context current` @@ -160,7 +160,7 @@ DESCRIPTION Shows the current context that is being used ``` -_See code: [src/commands/config/context/current.ts](https://github.com/asyncapi/cli/blob/v0.58.11/src/commands/config/context/current.ts)_ +_See code: [src/commands/config/context/current.ts](https://github.com/asyncapi/cli/blob/v0.58.12/src/commands/config/context/current.ts)_ ## `asyncapi config context edit CONTEXT-NAME NEW-SPEC-FILE-PATH` @@ -181,7 +181,7 @@ DESCRIPTION Edit a context in the store ``` -_See code: [src/commands/config/context/edit.ts](https://github.com/asyncapi/cli/blob/v0.58.11/src/commands/config/context/edit.ts)_ +_See code: [src/commands/config/context/edit.ts](https://github.com/asyncapi/cli/blob/v0.58.12/src/commands/config/context/edit.ts)_ ## `asyncapi config context init [CONTEXT-FILE-PATH]` @@ -204,7 +204,7 @@ DESCRIPTION Initialize context ``` -_See code: [src/commands/config/context/init.ts](https://github.com/asyncapi/cli/blob/v0.58.11/src/commands/config/context/init.ts)_ +_See code: [src/commands/config/context/init.ts](https://github.com/asyncapi/cli/blob/v0.58.12/src/commands/config/context/init.ts)_ ## `asyncapi config context list` @@ -221,7 +221,7 @@ DESCRIPTION List all the stored contexts in the store ``` -_See code: [src/commands/config/context/list.ts](https://github.com/asyncapi/cli/blob/v0.58.11/src/commands/config/context/list.ts)_ +_See code: [src/commands/config/context/list.ts](https://github.com/asyncapi/cli/blob/v0.58.12/src/commands/config/context/list.ts)_ ## `asyncapi config context remove CONTEXT-NAME` @@ -241,7 +241,7 @@ DESCRIPTION Delete a context from the store ``` -_See code: [src/commands/config/context/remove.ts](https://github.com/asyncapi/cli/blob/v0.58.11/src/commands/config/context/remove.ts)_ +_See code: [src/commands/config/context/remove.ts](https://github.com/asyncapi/cli/blob/v0.58.12/src/commands/config/context/remove.ts)_ ## `asyncapi config context use CONTEXT-NAME` @@ -261,7 +261,7 @@ DESCRIPTION Set a context as current ``` -_See code: [src/commands/config/context/use.ts](https://github.com/asyncapi/cli/blob/v0.58.11/src/commands/config/context/use.ts)_ +_See code: [src/commands/config/context/use.ts](https://github.com/asyncapi/cli/blob/v0.58.12/src/commands/config/context/use.ts)_ ## `asyncapi config versions` @@ -278,7 +278,7 @@ DESCRIPTION Show versions of AsyncAPI tools used ``` -_See code: [src/commands/config/versions.ts](https://github.com/asyncapi/cli/blob/v0.58.11/src/commands/config/versions.ts)_ +_See code: [src/commands/config/versions.ts](https://github.com/asyncapi/cli/blob/v0.58.12/src/commands/config/versions.ts)_ ## `asyncapi convert [SPEC-FILE]` @@ -300,7 +300,7 @@ DESCRIPTION Convert asyncapi documents older to newer versions ``` -_See code: [src/commands/convert.ts](https://github.com/asyncapi/cli/blob/v0.58.11/src/commands/convert.ts)_ +_See code: [src/commands/convert.ts](https://github.com/asyncapi/cli/blob/v0.58.12/src/commands/convert.ts)_ ## `asyncapi diff OLD NEW` @@ -355,7 +355,7 @@ DESCRIPTION Find diff between two asyncapi files ``` -_See code: [src/commands/diff.ts](https://github.com/asyncapi/cli/blob/v0.58.11/src/commands/diff.ts)_ +_See code: [src/commands/diff.ts](https://github.com/asyncapi/cli/blob/v0.58.12/src/commands/diff.ts)_ ## `asyncapi generate` @@ -369,7 +369,7 @@ DESCRIPTION Generate typed models or other things like clients, applications or docs using AsyncAPI Generator templates. ``` -_See code: [src/commands/generate/index.ts](https://github.com/asyncapi/cli/blob/v0.58.11/src/commands/generate/index.ts)_ +_See code: [src/commands/generate/index.ts](https://github.com/asyncapi/cli/blob/v0.58.12/src/commands/generate/index.ts)_ ## `asyncapi generate fromTemplate ASYNCAPI TEMPLATE` @@ -406,7 +406,7 @@ EXAMPLES $ asyncapi generate fromTemplate asyncapi.yaml @asyncapi/html-template --param version=1.0.0 singleFile=true --output ./docs --force-write ``` -_See code: [src/commands/generate/fromTemplate.ts](https://github.com/asyncapi/cli/blob/v0.58.11/src/commands/generate/fromTemplate.ts)_ +_See code: [src/commands/generate/fromTemplate.ts](https://github.com/asyncapi/cli/blob/v0.58.12/src/commands/generate/fromTemplate.ts)_ ## `asyncapi generate models LANGUAGE FILE` @@ -480,7 +480,7 @@ DESCRIPTION Generates typed models ``` -_See code: [src/commands/generate/models.ts](https://github.com/asyncapi/cli/blob/v0.58.11/src/commands/generate/models.ts)_ +_See code: [src/commands/generate/models.ts](https://github.com/asyncapi/cli/blob/v0.58.12/src/commands/generate/models.ts)_ ## `asyncapi new` @@ -535,7 +535,7 @@ EXAMPLES $ asyncapi new --file-name=my-asyncapi.yml --example=default-example.yml --no-tty - create a new file with a specific name, using one of the examples and without interactive mode ``` -_See code: [src/commands/new/index.ts](https://github.com/asyncapi/cli/blob/v0.58.11/src/commands/new/index.ts)_ +_See code: [src/commands/new/index.ts](https://github.com/asyncapi/cli/blob/v0.58.12/src/commands/new/index.ts)_ ## `asyncapi new file` @@ -590,7 +590,7 @@ EXAMPLES $ asyncapi new --file-name=my-asyncapi.yml --example=default-example.yml --no-tty - create a new file with a specific name, using one of the examples and without interactive mode ``` -_See code: [src/commands/new/file.ts](https://github.com/asyncapi/cli/blob/v0.58.11/src/commands/new/file.ts)_ +_See code: [src/commands/new/file.ts](https://github.com/asyncapi/cli/blob/v0.58.12/src/commands/new/file.ts)_ ## `asyncapi new glee` @@ -608,7 +608,7 @@ DESCRIPTION Creates a new Glee project ``` -_See code: [src/commands/new/glee.ts](https://github.com/asyncapi/cli/blob/v0.58.11/src/commands/new/glee.ts)_ +_See code: [src/commands/new/glee.ts](https://github.com/asyncapi/cli/blob/v0.58.12/src/commands/new/glee.ts)_ ## `asyncapi new project` @@ -626,7 +626,7 @@ DESCRIPTION Creates a new Glee project ``` -_See code: [src/commands/new/project.ts](https://github.com/asyncapi/cli/blob/v0.58.11/src/commands/new/project.ts)_ +_See code: [src/commands/new/project.ts](https://github.com/asyncapi/cli/blob/v0.58.12/src/commands/new/project.ts)_ ## `asyncapi optimize [SPEC-FILE]` @@ -662,7 +662,7 @@ EXAMPLES $ asyncapi optimize ./asyncapi.yaml --optimization=remove-components,reuse-components,move-to-components --output=terminal --no-tty ``` -_See code: [src/commands/optimize.ts](https://github.com/asyncapi/cli/blob/v0.58.11/src/commands/optimize.ts)_ +_See code: [src/commands/optimize.ts](https://github.com/asyncapi/cli/blob/v0.58.12/src/commands/optimize.ts)_ ## `asyncapi start` @@ -676,7 +676,7 @@ DESCRIPTION Start asyncapi studio ``` -_See code: [src/commands/start/index.ts](https://github.com/asyncapi/cli/blob/v0.58.11/src/commands/start/index.ts)_ +_See code: [src/commands/start/index.ts](https://github.com/asyncapi/cli/blob/v0.58.12/src/commands/start/index.ts)_ ## `asyncapi start studio` @@ -695,7 +695,7 @@ DESCRIPTION starts a new local instance of Studio ``` -_See code: [src/commands/start/studio.ts](https://github.com/asyncapi/cli/blob/v0.58.11/src/commands/start/studio.ts)_ +_See code: [src/commands/start/studio.ts](https://github.com/asyncapi/cli/blob/v0.58.12/src/commands/start/studio.ts)_ ## `asyncapi validate [SPEC-FILE]` @@ -722,5 +722,5 @@ DESCRIPTION validate asyncapi file ``` -_See code: [src/commands/validate.ts](https://github.com/asyncapi/cli/blob/v0.58.11/src/commands/validate.ts)_ +_See code: [src/commands/validate.ts](https://github.com/asyncapi/cli/blob/v0.58.12/src/commands/validate.ts)_ From bf7c2409f7c6dec596dc44b9ae05dec1958e7949 Mon Sep 17 00:00:00 2001 From: asyncapi-bot Date: Thu, 26 Oct 2023 16:59:45 +0200 Subject: [PATCH 048/134] docs(cli): update latest cli documentation (#2268) --- pages/docs/tools/cli/usage.md | 50 +++++++++++++++++------------------ 1 file changed, 25 insertions(+), 25 deletions(-) diff --git a/pages/docs/tools/cli/usage.md b/pages/docs/tools/cli/usage.md index 7794060fc07..87b0c13fc59 100644 --- a/pages/docs/tools/cli/usage.md +++ b/pages/docs/tools/cli/usage.md @@ -29,7 +29,7 @@ $ npm install -g @asyncapi/cli $ asyncapi COMMAND running command... $ asyncapi (--version) -@asyncapi/cli/0.58.12 linux-x64 node-v18.18.2 +@asyncapi/cli/0.58.13 linux-x64 node-v18.18.2 $ asyncapi --help [COMMAND] USAGE $ asyncapi COMMAND @@ -93,7 +93,7 @@ EXAMPLES $ asyncapi bundle ./asyncapi.yaml ./features.yaml --base ./asyncapi.yaml --reference-into-components ``` -_See code: [src/commands/bundle.ts](https://github.com/asyncapi/cli/blob/v0.58.12/src/commands/bundle.ts)_ +_See code: [src/commands/bundle.ts](https://github.com/asyncapi/cli/blob/v0.58.13/src/commands/bundle.ts)_ ## `asyncapi config` @@ -107,7 +107,7 @@ DESCRIPTION CLI config settings ``` -_See code: [src/commands/config/index.ts](https://github.com/asyncapi/cli/blob/v0.58.12/src/commands/config/index.ts)_ +_See code: [src/commands/config/index.ts](https://github.com/asyncapi/cli/blob/v0.58.13/src/commands/config/index.ts)_ ## `asyncapi config context` @@ -121,7 +121,7 @@ DESCRIPTION Manage short aliases for full paths to AsyncAPI documents ``` -_See code: [src/commands/config/context/index.ts](https://github.com/asyncapi/cli/blob/v0.58.12/src/commands/config/context/index.ts)_ +_See code: [src/commands/config/context/index.ts](https://github.com/asyncapi/cli/blob/v0.58.13/src/commands/config/context/index.ts)_ ## `asyncapi config context add CONTEXT-NAME SPEC-FILE-PATH` @@ -143,7 +143,7 @@ DESCRIPTION Add a context to the store ``` -_See code: [src/commands/config/context/add.ts](https://github.com/asyncapi/cli/blob/v0.58.12/src/commands/config/context/add.ts)_ +_See code: [src/commands/config/context/add.ts](https://github.com/asyncapi/cli/blob/v0.58.13/src/commands/config/context/add.ts)_ ## `asyncapi config context current` @@ -160,7 +160,7 @@ DESCRIPTION Shows the current context that is being used ``` -_See code: [src/commands/config/context/current.ts](https://github.com/asyncapi/cli/blob/v0.58.12/src/commands/config/context/current.ts)_ +_See code: [src/commands/config/context/current.ts](https://github.com/asyncapi/cli/blob/v0.58.13/src/commands/config/context/current.ts)_ ## `asyncapi config context edit CONTEXT-NAME NEW-SPEC-FILE-PATH` @@ -181,7 +181,7 @@ DESCRIPTION Edit a context in the store ``` -_See code: [src/commands/config/context/edit.ts](https://github.com/asyncapi/cli/blob/v0.58.12/src/commands/config/context/edit.ts)_ +_See code: [src/commands/config/context/edit.ts](https://github.com/asyncapi/cli/blob/v0.58.13/src/commands/config/context/edit.ts)_ ## `asyncapi config context init [CONTEXT-FILE-PATH]` @@ -204,7 +204,7 @@ DESCRIPTION Initialize context ``` -_See code: [src/commands/config/context/init.ts](https://github.com/asyncapi/cli/blob/v0.58.12/src/commands/config/context/init.ts)_ +_See code: [src/commands/config/context/init.ts](https://github.com/asyncapi/cli/blob/v0.58.13/src/commands/config/context/init.ts)_ ## `asyncapi config context list` @@ -221,7 +221,7 @@ DESCRIPTION List all the stored contexts in the store ``` -_See code: [src/commands/config/context/list.ts](https://github.com/asyncapi/cli/blob/v0.58.12/src/commands/config/context/list.ts)_ +_See code: [src/commands/config/context/list.ts](https://github.com/asyncapi/cli/blob/v0.58.13/src/commands/config/context/list.ts)_ ## `asyncapi config context remove CONTEXT-NAME` @@ -241,7 +241,7 @@ DESCRIPTION Delete a context from the store ``` -_See code: [src/commands/config/context/remove.ts](https://github.com/asyncapi/cli/blob/v0.58.12/src/commands/config/context/remove.ts)_ +_See code: [src/commands/config/context/remove.ts](https://github.com/asyncapi/cli/blob/v0.58.13/src/commands/config/context/remove.ts)_ ## `asyncapi config context use CONTEXT-NAME` @@ -261,7 +261,7 @@ DESCRIPTION Set a context as current ``` -_See code: [src/commands/config/context/use.ts](https://github.com/asyncapi/cli/blob/v0.58.12/src/commands/config/context/use.ts)_ +_See code: [src/commands/config/context/use.ts](https://github.com/asyncapi/cli/blob/v0.58.13/src/commands/config/context/use.ts)_ ## `asyncapi config versions` @@ -278,7 +278,7 @@ DESCRIPTION Show versions of AsyncAPI tools used ``` -_See code: [src/commands/config/versions.ts](https://github.com/asyncapi/cli/blob/v0.58.12/src/commands/config/versions.ts)_ +_See code: [src/commands/config/versions.ts](https://github.com/asyncapi/cli/blob/v0.58.13/src/commands/config/versions.ts)_ ## `asyncapi convert [SPEC-FILE]` @@ -300,7 +300,7 @@ DESCRIPTION Convert asyncapi documents older to newer versions ``` -_See code: [src/commands/convert.ts](https://github.com/asyncapi/cli/blob/v0.58.12/src/commands/convert.ts)_ +_See code: [src/commands/convert.ts](https://github.com/asyncapi/cli/blob/v0.58.13/src/commands/convert.ts)_ ## `asyncapi diff OLD NEW` @@ -355,7 +355,7 @@ DESCRIPTION Find diff between two asyncapi files ``` -_See code: [src/commands/diff.ts](https://github.com/asyncapi/cli/blob/v0.58.12/src/commands/diff.ts)_ +_See code: [src/commands/diff.ts](https://github.com/asyncapi/cli/blob/v0.58.13/src/commands/diff.ts)_ ## `asyncapi generate` @@ -369,7 +369,7 @@ DESCRIPTION Generate typed models or other things like clients, applications or docs using AsyncAPI Generator templates. ``` -_See code: [src/commands/generate/index.ts](https://github.com/asyncapi/cli/blob/v0.58.12/src/commands/generate/index.ts)_ +_See code: [src/commands/generate/index.ts](https://github.com/asyncapi/cli/blob/v0.58.13/src/commands/generate/index.ts)_ ## `asyncapi generate fromTemplate ASYNCAPI TEMPLATE` @@ -406,7 +406,7 @@ EXAMPLES $ asyncapi generate fromTemplate asyncapi.yaml @asyncapi/html-template --param version=1.0.0 singleFile=true --output ./docs --force-write ``` -_See code: [src/commands/generate/fromTemplate.ts](https://github.com/asyncapi/cli/blob/v0.58.12/src/commands/generate/fromTemplate.ts)_ +_See code: [src/commands/generate/fromTemplate.ts](https://github.com/asyncapi/cli/blob/v0.58.13/src/commands/generate/fromTemplate.ts)_ ## `asyncapi generate models LANGUAGE FILE` @@ -480,7 +480,7 @@ DESCRIPTION Generates typed models ``` -_See code: [src/commands/generate/models.ts](https://github.com/asyncapi/cli/blob/v0.58.12/src/commands/generate/models.ts)_ +_See code: [src/commands/generate/models.ts](https://github.com/asyncapi/cli/blob/v0.58.13/src/commands/generate/models.ts)_ ## `asyncapi new` @@ -535,7 +535,7 @@ EXAMPLES $ asyncapi new --file-name=my-asyncapi.yml --example=default-example.yml --no-tty - create a new file with a specific name, using one of the examples and without interactive mode ``` -_See code: [src/commands/new/index.ts](https://github.com/asyncapi/cli/blob/v0.58.12/src/commands/new/index.ts)_ +_See code: [src/commands/new/index.ts](https://github.com/asyncapi/cli/blob/v0.58.13/src/commands/new/index.ts)_ ## `asyncapi new file` @@ -590,7 +590,7 @@ EXAMPLES $ asyncapi new --file-name=my-asyncapi.yml --example=default-example.yml --no-tty - create a new file with a specific name, using one of the examples and without interactive mode ``` -_See code: [src/commands/new/file.ts](https://github.com/asyncapi/cli/blob/v0.58.12/src/commands/new/file.ts)_ +_See code: [src/commands/new/file.ts](https://github.com/asyncapi/cli/blob/v0.58.13/src/commands/new/file.ts)_ ## `asyncapi new glee` @@ -608,7 +608,7 @@ DESCRIPTION Creates a new Glee project ``` -_See code: [src/commands/new/glee.ts](https://github.com/asyncapi/cli/blob/v0.58.12/src/commands/new/glee.ts)_ +_See code: [src/commands/new/glee.ts](https://github.com/asyncapi/cli/blob/v0.58.13/src/commands/new/glee.ts)_ ## `asyncapi new project` @@ -626,7 +626,7 @@ DESCRIPTION Creates a new Glee project ``` -_See code: [src/commands/new/project.ts](https://github.com/asyncapi/cli/blob/v0.58.12/src/commands/new/project.ts)_ +_See code: [src/commands/new/project.ts](https://github.com/asyncapi/cli/blob/v0.58.13/src/commands/new/project.ts)_ ## `asyncapi optimize [SPEC-FILE]` @@ -662,7 +662,7 @@ EXAMPLES $ asyncapi optimize ./asyncapi.yaml --optimization=remove-components,reuse-components,move-to-components --output=terminal --no-tty ``` -_See code: [src/commands/optimize.ts](https://github.com/asyncapi/cli/blob/v0.58.12/src/commands/optimize.ts)_ +_See code: [src/commands/optimize.ts](https://github.com/asyncapi/cli/blob/v0.58.13/src/commands/optimize.ts)_ ## `asyncapi start` @@ -676,7 +676,7 @@ DESCRIPTION Start asyncapi studio ``` -_See code: [src/commands/start/index.ts](https://github.com/asyncapi/cli/blob/v0.58.12/src/commands/start/index.ts)_ +_See code: [src/commands/start/index.ts](https://github.com/asyncapi/cli/blob/v0.58.13/src/commands/start/index.ts)_ ## `asyncapi start studio` @@ -695,7 +695,7 @@ DESCRIPTION starts a new local instance of Studio ``` -_See code: [src/commands/start/studio.ts](https://github.com/asyncapi/cli/blob/v0.58.12/src/commands/start/studio.ts)_ +_See code: [src/commands/start/studio.ts](https://github.com/asyncapi/cli/blob/v0.58.13/src/commands/start/studio.ts)_ ## `asyncapi validate [SPEC-FILE]` @@ -722,5 +722,5 @@ DESCRIPTION validate asyncapi file ``` -_See code: [src/commands/validate.ts](https://github.com/asyncapi/cli/blob/v0.58.12/src/commands/validate.ts)_ +_See code: [src/commands/validate.ts](https://github.com/asyncapi/cli/blob/v0.58.13/src/commands/validate.ts)_ From bcb39c8760d3b1fcb2ad71e80a65a0ce184e7dd4 Mon Sep 17 00:00:00 2001 From: asyncapi-bot Date: Fri, 27 Oct 2023 02:27:16 +0200 Subject: [PATCH 049/134] chore: update meetings.json and newsrooom_videos.json (#2270) --- config/meetings.json | 7 --- dashboard.json | 107 +++++++++++++------------------------------ 2 files changed, 32 insertions(+), 82 deletions(-) diff --git a/config/meetings.json b/config/meetings.json index cef7d6e6a4b..c3e5202c348 100644 --- a/config/meetings.json +++ b/config/meetings.json @@ -34,13 +34,6 @@ "banner": "https://user-images.githubusercontent.com/40604284/252807786-f93110e3-c344-4080-9c4f-9d32cb324680.png", "date": "2023-07-25T08:00:00.000Z" }, - { - "title": "Design meeting", - "calLink": "https://www.google.com/calendar/event?eid=czVxbG5jZXV2MThxczJjczdhMmtxZzE1djAgY19xOXRzZWlnbG9tZHNqNm5qdWh2YnB0czExY0Bn", - "url": "https://github.com/asyncapi/community/issues/800", - "banner": "", - "date": "2023-07-18T08:00:00.000Z" - }, { "title": "Community Meeting", "calLink": "https://www.google.com/calendar/event?eid=YmlybTZwODdmMzBnNGg0b3J1OWxmdnBxNmMgY19xOXRzZWlnbG9tZHNqNm5qdWh2YnB0czExY0Bn", diff --git a/dashboard.json b/dashboard.json index a12af36342a..b8f7eba0266 100644 --- a/dashboard.json +++ b/dashboard.json @@ -36,7 +36,7 @@ "resourcePath": "/asyncapi/community/pull/805", "repo": "asyncapi/community", "labels": [], - "score": 28.430284286176615 + "score": 29.004633463675134 }, { "id": "I_kwDODou01c5AqLB8", @@ -54,22 +54,6 @@ ], "score": 19.527872034949596 }, - { - "id": "I_kwDOBW5R_c5BIl5P", - "isPR": false, - "isAssigned": true, - "title": "Add new page for collecting user testing participants", - "author": "mcturco", - "resourcePath": "/asyncapi/website/issues/529", - "repo": "asyncapi/website", - "labels": [ - { - "name": "enhancement", - "color": "84b6eb" - } - ], - "score": 18.666348268701817 - }, { "id": "PR_kwDOBW5R_c5VAjCE", "isPR": true, @@ -103,7 +87,7 @@ "resourcePath": "/asyncapi/website/pull/2008", "repo": "asyncapi/website", "labels": [], - "score": 16.943300736206268 + "score": 17.230475324955524 }, { "id": "I_kwDOCVQpZM5M_dcV", @@ -168,27 +152,42 @@ "repo": "asyncapi/asyncapi-react", "labels": [], "score": 14.358729437462937 - } - ], - "goodFirstIssues": [ + }, { - "id": "I_kwDODwv8N85zcBHO", - "title": "Inconsistent styling of the subscribe button on the conference website", - "isAssigned": false, - "resourcePath": "/asyncapi/conference-website/issues/217", - "repo": "asyncapi/conference-website", - "author": "Mayaleeeee", - "area": "Unknown", + "id": "PR_kwDOBW5R_c5VmsTR", + "isPR": true, + "isAssigned": true, + "title": "docs: tags in a AsyncAPI document", + "author": "TRohit20", + "resourcePath": "/asyncapi/website/pull/1957", + "repo": "asyncapi/website", "labels": [ { - "name": "bug", - "color": "d73a4a" + "name": "📑 docs", + "color": "E50E99" }, { - "name": "Hacktoberfest", - "color": "FF8AE2" + "name": "area/docs", + "color": "e50e99" + }, + { + "name": "gsod", + "color": "7B5DB8" } - ] + ], + "score": 14.07155484871368 + } + ], + "goodFirstIssues": [ + { + "id": "I_kwDODou01c504XI9", + "title": "Other issues types are missing", + "isAssigned": false, + "resourcePath": "/asyncapi/studio/issues/826", + "repo": "asyncapi/studio", + "author": "Amzani", + "area": "Unknown", + "labels": [] }, { "id": "I_kwDOFDnrNc5yy6e0", @@ -970,48 +969,6 @@ } ] }, - { - "id": "I_kwDOFiHaLM5DeQ4y", - "title": "Add support for HTML output", - "isAssigned": false, - "resourcePath": "/asyncapi/diff/issues/85", - "repo": "asyncapi/diff", - "author": "aayushmau5", - "area": "Unknown", - "labels": [ - { - "name": "enhancement", - "color": "a2eeef" - }, - { - "name": "stale", - "color": "ededed" - } - ] - }, - { - "id": "I_kwDOBGu-185B-xnK", - "title": "What do we define as a breaking change?", - "isAssigned": true, - "resourcePath": "/asyncapi/spec/issues/688", - "repo": "asyncapi/spec", - "author": "jonaslagoni", - "area": "docs", - "labels": [ - { - "name": "stale", - "color": "819cd3" - }, - { - "name": "Hacktoberfest", - "color": "FF8AE2" - }, - { - "name": "❔ Question", - "color": "54B65C" - } - ] - }, { "id": "I_kwDOFGbvC85AWog3", "title": "Automate Helm chart release version bump", From 2f556df9745055dbf56bf1e65472b4ff0f159845 Mon Sep 17 00:00:00 2001 From: asyncapi-bot Date: Fri, 27 Oct 2023 12:11:06 +0200 Subject: [PATCH 050/134] docs(cli): update latest cli documentation (#2271) --- pages/docs/tools/cli/usage.md | 50 +++++++++++++++++------------------ 1 file changed, 25 insertions(+), 25 deletions(-) diff --git a/pages/docs/tools/cli/usage.md b/pages/docs/tools/cli/usage.md index 87b0c13fc59..78a1f1f0879 100644 --- a/pages/docs/tools/cli/usage.md +++ b/pages/docs/tools/cli/usage.md @@ -29,7 +29,7 @@ $ npm install -g @asyncapi/cli $ asyncapi COMMAND running command... $ asyncapi (--version) -@asyncapi/cli/0.58.13 linux-x64 node-v18.18.2 +@asyncapi/cli/0.59.0 linux-x64 node-v18.18.2 $ asyncapi --help [COMMAND] USAGE $ asyncapi COMMAND @@ -93,7 +93,7 @@ EXAMPLES $ asyncapi bundle ./asyncapi.yaml ./features.yaml --base ./asyncapi.yaml --reference-into-components ``` -_See code: [src/commands/bundle.ts](https://github.com/asyncapi/cli/blob/v0.58.13/src/commands/bundle.ts)_ +_See code: [src/commands/bundle.ts](https://github.com/asyncapi/cli/blob/v0.59.0/src/commands/bundle.ts)_ ## `asyncapi config` @@ -107,7 +107,7 @@ DESCRIPTION CLI config settings ``` -_See code: [src/commands/config/index.ts](https://github.com/asyncapi/cli/blob/v0.58.13/src/commands/config/index.ts)_ +_See code: [src/commands/config/index.ts](https://github.com/asyncapi/cli/blob/v0.59.0/src/commands/config/index.ts)_ ## `asyncapi config context` @@ -121,7 +121,7 @@ DESCRIPTION Manage short aliases for full paths to AsyncAPI documents ``` -_See code: [src/commands/config/context/index.ts](https://github.com/asyncapi/cli/blob/v0.58.13/src/commands/config/context/index.ts)_ +_See code: [src/commands/config/context/index.ts](https://github.com/asyncapi/cli/blob/v0.59.0/src/commands/config/context/index.ts)_ ## `asyncapi config context add CONTEXT-NAME SPEC-FILE-PATH` @@ -143,7 +143,7 @@ DESCRIPTION Add a context to the store ``` -_See code: [src/commands/config/context/add.ts](https://github.com/asyncapi/cli/blob/v0.58.13/src/commands/config/context/add.ts)_ +_See code: [src/commands/config/context/add.ts](https://github.com/asyncapi/cli/blob/v0.59.0/src/commands/config/context/add.ts)_ ## `asyncapi config context current` @@ -160,7 +160,7 @@ DESCRIPTION Shows the current context that is being used ``` -_See code: [src/commands/config/context/current.ts](https://github.com/asyncapi/cli/blob/v0.58.13/src/commands/config/context/current.ts)_ +_See code: [src/commands/config/context/current.ts](https://github.com/asyncapi/cli/blob/v0.59.0/src/commands/config/context/current.ts)_ ## `asyncapi config context edit CONTEXT-NAME NEW-SPEC-FILE-PATH` @@ -181,7 +181,7 @@ DESCRIPTION Edit a context in the store ``` -_See code: [src/commands/config/context/edit.ts](https://github.com/asyncapi/cli/blob/v0.58.13/src/commands/config/context/edit.ts)_ +_See code: [src/commands/config/context/edit.ts](https://github.com/asyncapi/cli/blob/v0.59.0/src/commands/config/context/edit.ts)_ ## `asyncapi config context init [CONTEXT-FILE-PATH]` @@ -204,7 +204,7 @@ DESCRIPTION Initialize context ``` -_See code: [src/commands/config/context/init.ts](https://github.com/asyncapi/cli/blob/v0.58.13/src/commands/config/context/init.ts)_ +_See code: [src/commands/config/context/init.ts](https://github.com/asyncapi/cli/blob/v0.59.0/src/commands/config/context/init.ts)_ ## `asyncapi config context list` @@ -221,7 +221,7 @@ DESCRIPTION List all the stored contexts in the store ``` -_See code: [src/commands/config/context/list.ts](https://github.com/asyncapi/cli/blob/v0.58.13/src/commands/config/context/list.ts)_ +_See code: [src/commands/config/context/list.ts](https://github.com/asyncapi/cli/blob/v0.59.0/src/commands/config/context/list.ts)_ ## `asyncapi config context remove CONTEXT-NAME` @@ -241,7 +241,7 @@ DESCRIPTION Delete a context from the store ``` -_See code: [src/commands/config/context/remove.ts](https://github.com/asyncapi/cli/blob/v0.58.13/src/commands/config/context/remove.ts)_ +_See code: [src/commands/config/context/remove.ts](https://github.com/asyncapi/cli/blob/v0.59.0/src/commands/config/context/remove.ts)_ ## `asyncapi config context use CONTEXT-NAME` @@ -261,7 +261,7 @@ DESCRIPTION Set a context as current ``` -_See code: [src/commands/config/context/use.ts](https://github.com/asyncapi/cli/blob/v0.58.13/src/commands/config/context/use.ts)_ +_See code: [src/commands/config/context/use.ts](https://github.com/asyncapi/cli/blob/v0.59.0/src/commands/config/context/use.ts)_ ## `asyncapi config versions` @@ -278,7 +278,7 @@ DESCRIPTION Show versions of AsyncAPI tools used ``` -_See code: [src/commands/config/versions.ts](https://github.com/asyncapi/cli/blob/v0.58.13/src/commands/config/versions.ts)_ +_See code: [src/commands/config/versions.ts](https://github.com/asyncapi/cli/blob/v0.59.0/src/commands/config/versions.ts)_ ## `asyncapi convert [SPEC-FILE]` @@ -300,7 +300,7 @@ DESCRIPTION Convert asyncapi documents older to newer versions ``` -_See code: [src/commands/convert.ts](https://github.com/asyncapi/cli/blob/v0.58.13/src/commands/convert.ts)_ +_See code: [src/commands/convert.ts](https://github.com/asyncapi/cli/blob/v0.59.0/src/commands/convert.ts)_ ## `asyncapi diff OLD NEW` @@ -355,7 +355,7 @@ DESCRIPTION Find diff between two asyncapi files ``` -_See code: [src/commands/diff.ts](https://github.com/asyncapi/cli/blob/v0.58.13/src/commands/diff.ts)_ +_See code: [src/commands/diff.ts](https://github.com/asyncapi/cli/blob/v0.59.0/src/commands/diff.ts)_ ## `asyncapi generate` @@ -369,7 +369,7 @@ DESCRIPTION Generate typed models or other things like clients, applications or docs using AsyncAPI Generator templates. ``` -_See code: [src/commands/generate/index.ts](https://github.com/asyncapi/cli/blob/v0.58.13/src/commands/generate/index.ts)_ +_See code: [src/commands/generate/index.ts](https://github.com/asyncapi/cli/blob/v0.59.0/src/commands/generate/index.ts)_ ## `asyncapi generate fromTemplate ASYNCAPI TEMPLATE` @@ -406,7 +406,7 @@ EXAMPLES $ asyncapi generate fromTemplate asyncapi.yaml @asyncapi/html-template --param version=1.0.0 singleFile=true --output ./docs --force-write ``` -_See code: [src/commands/generate/fromTemplate.ts](https://github.com/asyncapi/cli/blob/v0.58.13/src/commands/generate/fromTemplate.ts)_ +_See code: [src/commands/generate/fromTemplate.ts](https://github.com/asyncapi/cli/blob/v0.59.0/src/commands/generate/fromTemplate.ts)_ ## `asyncapi generate models LANGUAGE FILE` @@ -480,7 +480,7 @@ DESCRIPTION Generates typed models ``` -_See code: [src/commands/generate/models.ts](https://github.com/asyncapi/cli/blob/v0.58.13/src/commands/generate/models.ts)_ +_See code: [src/commands/generate/models.ts](https://github.com/asyncapi/cli/blob/v0.59.0/src/commands/generate/models.ts)_ ## `asyncapi new` @@ -535,7 +535,7 @@ EXAMPLES $ asyncapi new --file-name=my-asyncapi.yml --example=default-example.yml --no-tty - create a new file with a specific name, using one of the examples and without interactive mode ``` -_See code: [src/commands/new/index.ts](https://github.com/asyncapi/cli/blob/v0.58.13/src/commands/new/index.ts)_ +_See code: [src/commands/new/index.ts](https://github.com/asyncapi/cli/blob/v0.59.0/src/commands/new/index.ts)_ ## `asyncapi new file` @@ -590,7 +590,7 @@ EXAMPLES $ asyncapi new --file-name=my-asyncapi.yml --example=default-example.yml --no-tty - create a new file with a specific name, using one of the examples and without interactive mode ``` -_See code: [src/commands/new/file.ts](https://github.com/asyncapi/cli/blob/v0.58.13/src/commands/new/file.ts)_ +_See code: [src/commands/new/file.ts](https://github.com/asyncapi/cli/blob/v0.59.0/src/commands/new/file.ts)_ ## `asyncapi new glee` @@ -608,7 +608,7 @@ DESCRIPTION Creates a new Glee project ``` -_See code: [src/commands/new/glee.ts](https://github.com/asyncapi/cli/blob/v0.58.13/src/commands/new/glee.ts)_ +_See code: [src/commands/new/glee.ts](https://github.com/asyncapi/cli/blob/v0.59.0/src/commands/new/glee.ts)_ ## `asyncapi new project` @@ -626,7 +626,7 @@ DESCRIPTION Creates a new Glee project ``` -_See code: [src/commands/new/project.ts](https://github.com/asyncapi/cli/blob/v0.58.13/src/commands/new/project.ts)_ +_See code: [src/commands/new/project.ts](https://github.com/asyncapi/cli/blob/v0.59.0/src/commands/new/project.ts)_ ## `asyncapi optimize [SPEC-FILE]` @@ -662,7 +662,7 @@ EXAMPLES $ asyncapi optimize ./asyncapi.yaml --optimization=remove-components,reuse-components,move-to-components --output=terminal --no-tty ``` -_See code: [src/commands/optimize.ts](https://github.com/asyncapi/cli/blob/v0.58.13/src/commands/optimize.ts)_ +_See code: [src/commands/optimize.ts](https://github.com/asyncapi/cli/blob/v0.59.0/src/commands/optimize.ts)_ ## `asyncapi start` @@ -676,7 +676,7 @@ DESCRIPTION Start asyncapi studio ``` -_See code: [src/commands/start/index.ts](https://github.com/asyncapi/cli/blob/v0.58.13/src/commands/start/index.ts)_ +_See code: [src/commands/start/index.ts](https://github.com/asyncapi/cli/blob/v0.59.0/src/commands/start/index.ts)_ ## `asyncapi start studio` @@ -695,7 +695,7 @@ DESCRIPTION starts a new local instance of Studio ``` -_See code: [src/commands/start/studio.ts](https://github.com/asyncapi/cli/blob/v0.58.13/src/commands/start/studio.ts)_ +_See code: [src/commands/start/studio.ts](https://github.com/asyncapi/cli/blob/v0.59.0/src/commands/start/studio.ts)_ ## `asyncapi validate [SPEC-FILE]` @@ -722,5 +722,5 @@ DESCRIPTION validate asyncapi file ``` -_See code: [src/commands/validate.ts](https://github.com/asyncapi/cli/blob/v0.58.13/src/commands/validate.ts)_ +_See code: [src/commands/validate.ts](https://github.com/asyncapi/cli/blob/v0.59.0/src/commands/validate.ts)_ From fb3676ec92904ddd6f43a8c60bbae580be4296ad Mon Sep 17 00:00:00 2001 From: asyncapi-bot Date: Sat, 28 Oct 2023 02:26:05 +0200 Subject: [PATCH 051/134] chore: update meetings.json and newsrooom_videos.json (#2272) --- config/meetings.json | 7 ------- 1 file changed, 7 deletions(-) diff --git a/config/meetings.json b/config/meetings.json index c3e5202c348..4d26952ddec 100644 --- a/config/meetings.json +++ b/config/meetings.json @@ -1,11 +1,4 @@ [ - { - "title": "Spec 3.0 Meeting", - "calLink": "https://www.google.com/calendar/event?eid=aGdqYmk0NDdiMGE4cGo4NzFuaWxycjNiYmsgY19xOXRzZWlnbG9tZHNqNm5qdWh2YnB0czExY0Bn", - "url": "https://github.com/asyncapi/community/issues/761", - "banner": "", - "date": "2023-07-19T16:00:00.000Z" - }, { "title": "Spec 3.0 Docs Meeting", "calLink": "https://www.google.com/calendar/event?eid=NzU0aGMxOWY5MmYyYzA3OTduazF0MWZqY2MgY19xOXRzZWlnbG9tZHNqNm5qdWh2YnB0czExY0Bn", From b85d4fbb8e8e0fe555bb9b3d9bfab79a85776954 Mon Sep 17 00:00:00 2001 From: asyncapi-bot Date: Sun, 29 Oct 2023 02:28:13 +0200 Subject: [PATCH 052/134] chore: update meetings.json and newsrooom_videos.json (#2273) --- config/meetings.json | 7 ------- 1 file changed, 7 deletions(-) diff --git a/config/meetings.json b/config/meetings.json index 4d26952ddec..10acf89c23f 100644 --- a/config/meetings.json +++ b/config/meetings.json @@ -1,11 +1,4 @@ [ - { - "title": "Spec 3.0 Docs Meeting", - "calLink": "https://www.google.com/calendar/event?eid=NzU0aGMxOWY5MmYyYzA3OTduazF0MWZqY2MgY19xOXRzZWlnbG9tZHNqNm5qdWh2YnB0czExY0Bn", - "url": "https://github.com/asyncapi/community/issues/790", - "banner": "", - "date": "2023-07-20T14:30:00.000Z" - }, { "title": "Spec 3.0 Docs Meeting", "calLink": "https://www.google.com/calendar/event?eid=cG9iOHNqZGlrbmg4cnUxanMzMTgyN3AxdnMgY19xOXRzZWlnbG9tZHNqNm5qdWh2YnB0czExY0Bn", From 2c0ab9331ac4263c44679c2d72079c852b96bde9 Mon Sep 17 00:00:00 2001 From: asyncapi-bot Date: Mon, 30 Oct 2023 01:26:39 +0100 Subject: [PATCH 053/134] chore: update meetings.json and newsrooom_videos.json (#2278) --- config/meetings.json | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/config/meetings.json b/config/meetings.json index 10acf89c23f..32e1810bae5 100644 --- a/config/meetings.json +++ b/config/meetings.json @@ -131,5 +131,12 @@ "url": "https://github.com/asyncapi/community/issues/917", "banner": "https://user-images.githubusercontent.com/40604284/277314352-f62224d8-03a9-46b2-94bf-13bfae6f973b.png", "date": "2023-11-14T08:00:00.000Z" + }, + { + "title": "Community Meeting", + "calLink": "https://www.google.com/calendar/event?eid=ODNjM2h0bGQ4dGhwcWd2Mmw2MWhkcGcycGcgY19xOXRzZWlnbG9tZHNqNm5qdWh2YnB0czExY0Bn", + "url": "https://github.com/asyncapi/community/issues/918", + "banner": "https://user-images.githubusercontent.com/40604284/277314435-ec985247-c575-4449-9f79-442b3077541a.png", + "date": "2023-11-28T16:00:00.000Z" } ] \ No newline at end of file From 53f8c8d646de5a6dad9fb1955249ebd07639d76e Mon Sep 17 00:00:00 2001 From: Lukasz Gornicki Date: Tue, 31 Oct 2023 13:03:25 +0100 Subject: [PATCH 054/134] ci: refactor website-only pipelines (#2279) --- .github/workflows/cypress-tests.yml | 10 ++++++++-- .github/workflows/deploy.yml | 16 --------------- .github/workflows/lighthouse-ci.yml | 8 ++++---- .../regenerate-meetings-and-videos.yml | 20 ++++++++++++++++--- .github/workflows/regenerate-tools.yml | 19 ++++++++++++++---- .../validate-case-studies-structures.yaml | 5 ++++- package.json | 1 - 7 files changed, 48 insertions(+), 31 deletions(-) delete mode 100644 .github/workflows/deploy.yml diff --git a/.github/workflows/cypress-tests.yml b/.github/workflows/cypress-tests.yml index d596ea595d6..acc9ca227fb 100644 --- a/.github/workflows/cypress-tests.yml +++ b/.github/workflows/cypress-tests.yml @@ -17,10 +17,16 @@ jobs: - name: Checkout code uses: actions/checkout@v3 - - name: Use Node.js 16.x + - name: Check package-lock version + uses: asyncapi/.github/.github/actions/get-node-version-from-package-lock@master + id: lockversion + + - name: Use Node.js uses: actions/setup-node@v3 with: - node-version: 16.x + node-version: "${{ steps.lockversion.outputs.version }}" + cache: 'npm' + cache-dependency-path: '**/package-lock.json' - name: Install dependencies run: npm install diff --git a/.github/workflows/deploy.yml b/.github/workflows/deploy.yml deleted file mode 100644 index 7219ee2b423..00000000000 --- a/.github/workflows/deploy.yml +++ /dev/null @@ -1,16 +0,0 @@ -name: Deploy to Netlify -on: - issues: - types: [opened, deleted, closed, reopened, labeled, unlabeled] - -jobs: - publish: - runs-on: ubuntu-latest - - steps: - - name: Trigger deploy on Netlify - run: | - curl -X POST "https://api.netlify.com/api/v1/sites/$NETLIFY_SITE_ID/builds" -H "Authorization: Bearer $NETLIFY_AUTH_TOKEN" - env: - NETLIFY_AUTH_TOKEN: ${{ secrets.NETLIFY_AUTH_TOKEN }} - NETLIFY_SITE_ID: ${{ secrets.NETLIFY_SITE_ID }} diff --git a/.github/workflows/lighthouse-ci.yml b/.github/workflows/lighthouse-ci.yml index f8cc63d308d..539c8b02b64 100644 --- a/.github/workflows/lighthouse-ci.yml +++ b/.github/workflows/lighthouse-ci.yml @@ -39,7 +39,7 @@ jobs: - if: steps.should_run.outputs.shouldrun == 'true' name: Await Netlify Preview - uses: jakepartusch/wait-for-netlify-action@v1 + uses: jakepartusch/wait-for-netlify-action@f1e137043864b9ab9034ae3a5adc1c108e3f1a48 #version 1.4 https://github.com/JakePartusch/wait-for-netlify-action/releases/tag/v1.4 id: netlify with: site_name: asyncapi-website @@ -48,7 +48,7 @@ jobs: - if: steps.should_run.outputs.shouldrun == 'true' name: Lighthouse Audit id: lighthouse_audit - uses: treosh/lighthouse-ci-action@9.3.0 + uses: treosh/lighthouse-ci-action@03becbfc543944dd6e7534f7ff768abb8a296826 #version 10.1 https://github.com/treosh/lighthouse-ci-action/releases/tag/10.1.0 with: urls: | https://deploy-preview-$PR_NUMBER--asyncapi-website.netlify.app/ @@ -87,9 +87,9 @@ jobs: - if: steps.should_run.outputs.shouldrun == 'true' name: LightHouse Statistic Comment id: lighthouse_statistic_comment - uses: marocchino/sticky-pull-request-comment@v2.2.0 + uses: marocchino/sticky-pull-request-comment@efaaab3fd41a9c3de579aba759d2552635e590fd # version 2.8 https://github.com/marocchino/sticky-pull-request-comment/releases/tag/v2.8.0 with: - GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + GITHUB_TOKEN: ${{ secrets.GH_TOKEN }} number: ${{ github.event.pull_request.number }} header: lighthouse message: ${{ steps.lighthouse_score_report.outputs.comment }} diff --git a/.github/workflows/regenerate-meetings-and-videos.yml b/.github/workflows/regenerate-meetings-and-videos.yml index 0430c2c4089..72aeda4e9e6 100644 --- a/.github/workflows/regenerate-meetings-and-videos.yml +++ b/.github/workflows/regenerate-meetings-and-videos.yml @@ -18,13 +18,27 @@ jobs: runs-on: ubuntu-latest steps: - name: Checkout repository - uses: actions/checkout@v2 + uses: actions/checkout@v3 + + - name: Check package-lock version + uses: asyncapi/.github/.github/actions/get-node-version-from-package-lock@master + id: lockversion + + - name: Use Node.js + uses: actions/setup-node@v3 + with: + node-version: "${{ steps.lockversion.outputs.version }}" + cache: 'npm' + cache-dependency-path: '**/package-lock.json' + - name: Install dependencies run: npm install + - name: Regenerate run: npm run generate:meetings && npm run generate:videos && npm run generate:dashboard + - name: Create Pull Request with new meetings.json, newsroom-videos.json and dashboard.json version - uses: peter-evans/create-pull-request@v3 + uses: peter-evans/create-pull-request@38e0b6e68b4c852a5500a94740f0e535e0d7ba54 # use 4.2.4 https://github.com/peter-evans/create-pull-request/releases/tag/v4.2.4 with: token: ${{ secrets.GH_TOKEN }} commit-message: 'chore: update meetings.json, newsrooom_videos.json and dashboard.json' @@ -34,7 +48,7 @@ jobs: branch: update-meetings/${{ github.job }} - if: failure() # Only, on failure, send a message on the 94_bot-failing-ci slack channel name: Report workflow run status to Slack - uses: 8398a7/action-slack@v3 + uses: 8398a7/action-slack@fbd6aa58ba854a740e11a35d0df80cb5d12101d8 #using https://github.com/8398a7/action-slack/releases/tag/v3.15.1 with: status: ${{ job.status }} fields: repo,action,workflow diff --git a/.github/workflows/regenerate-tools.yml b/.github/workflows/regenerate-tools.yml index 1db90e0e34f..705a2950806 100644 --- a/.github/workflows/regenerate-tools.yml +++ b/.github/workflows/regenerate-tools.yml @@ -16,16 +16,26 @@ jobs: steps: - name: Checkout repository uses: actions/checkout@v3 - - name: Use Node.js ${{ matrix.node-version }} + + - name: Check package-lock version + uses: asyncapi/.github/.github/actions/get-node-version-from-package-lock@master + id: lockversion + + - name: Use Node.js uses: actions/setup-node@v3 with: - node-version: 16.x + node-version: "${{ steps.lockversion.outputs.version }}" + cache: 'npm' + cache-dependency-path: '**/package-lock.json' + - name: Install dependencies run: npm install + - name: Regenerate run: npm run generate:tools + - name: Create Pull Request with new tools.json version - uses: peter-evans/create-pull-request@v4 + uses: peter-evans/create-pull-request@38e0b6e68b4c852a5500a94740f0e535e0d7ba54 # use 4.2.4 https://github.com/peter-evans/create-pull-request/releases/tag/v4.2.4 with: token: ${{ secrets.GH_TOKEN }} commit-message: 'chore: update tools.json' @@ -33,9 +43,10 @@ jobs: author: asyncapi-bot title: 'chore: update tools.json' branch: update-tools/${{ github.job }} + - if: failure() # Only, on failure, send a message on the 94_bot-failing-ci slack channel name: Report workflow run status to Slack - uses: 8398a7/action-slack@v3 + uses: 8398a7/action-slack@fbd6aa58ba854a740e11a35d0df80cb5d12101d8 #using https://github.com/8398a7/action-slack/releases/tag/v3.15.1 with: status: ${{ job.status }} fields: repo,action,workflow diff --git a/.github/workflows/validate-case-studies-structures.yaml b/.github/workflows/validate-case-studies-structures.yaml index 3b73be6a753..df0ca279c5b 100644 --- a/.github/workflows/validate-case-studies-structures.yaml +++ b/.github/workflows/validate-case-studies-structures.yaml @@ -14,13 +14,16 @@ jobs: steps: - name: Checkout repository uses: actions/checkout@v3 + - name: Get changed files id: changed-files - uses: tj-actions/changed-files@v35 + uses: tj-actions/changed-files@af292f1e845a0377b596972698a8598734eb2796 # using https://github.com/tj-actions/changed-files/releases/tag/v40 with: files: config/casestudies/*.yml + - name: Install ajv and yaml run: npm install ajv@8.12.0 ajv-formats@2.1.1 yaml@2.2.1 + - name: Run validation script uses: actions/github-script@v6 with: diff --git a/package.json b/package.json index 5efbf8e453b..0cd0af3bb6e 100644 --- a/package.json +++ b/package.json @@ -15,7 +15,6 @@ "generate:videos": "node scripts/build-newsroom-videos.js", "generate:tools": "node scripts/build-tools.js", "test": "npx cypress run --component", - "release": "echo \"No release to npm for this project\"", "cy:open": "cypress open", "cy:run": "cypress run" }, From c1f82aeb3daedb0a23f37d093202a8ebecf54c63 Mon Sep 17 00:00:00 2001 From: V Thulisile Sibanda <66913810+thulieblack@users.noreply.github.com> Date: Mon, 6 Nov 2023 10:40:31 +0200 Subject: [PATCH 055/134] feat: add bangalore ticket banner (#2283) --- .github/workflows/lighthouserc.json | 2 +- components/campaigns/AnnoucementHero.js | 12 ++++++------ 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/.github/workflows/lighthouserc.json b/.github/workflows/lighthouserc.json index b1a3b6642d9..873e668f0a8 100644 --- a/.github/workflows/lighthouserc.json +++ b/.github/workflows/lighthouserc.json @@ -3,7 +3,7 @@ "assert": { "assertions": { "categories:accessibility": ["error", {"minScore": 0.98}], - "categories:best-practices": ["error", {"minScore": 1.00}], + "categories:best-practices": ["error", {"minScore": 0.92}], "categories:seo": ["error", {"minScore": 1.00}] } }, diff --git a/components/campaigns/AnnoucementHero.js b/components/campaigns/AnnoucementHero.js index d2547f3768a..9c539ff1dba 100644 --- a/components/campaigns/AnnoucementHero.js +++ b/components/campaigns/AnnoucementHero.js @@ -18,7 +18,7 @@ function shouldShowBanner(cfpDeadline) { export default function AnnouncementHero({ className = '', small = false, hideVideo = false }) { //return null; - const cfpDeadline = '2023-10-28T06:00:00Z' + const cfpDeadline = '2023-11-30T06:00:00Z' const showBanner = shouldShowBanner(cfpDeadline); if (!showBanner) return null; @@ -42,17 +42,17 @@ export default function AnnouncementHero({ className = '', small = false, hideVi level="h3" typeStyle="heading-sm" > - Paris Edition + Bangalore Edition - 8th of December, 2023 | Paris, France + 30th of November, 2023 | Bangalore, India - +
From c21f95563c2e300a702fab8289f6e00747069f4e Mon Sep 17 00:00:00 2001 From: V Thulisile Sibanda <66913810+thulieblack@users.noreply.github.com> Date: Mon, 6 Nov 2023 11:22:20 +0200 Subject: [PATCH 056/134] chore(blog): add the summary for september & october (#2185) Co-authored-by: Akshat Nema <76521428+akshatnema@users.noreply.github.com>%0ACo-authored-by: Lukasz Gornicki --- pages/blog/august-2023.md | 1 - pages/blog/september-2023.md | 46 ++++++++++++++++++ .../2023-summary/blog-banner-october.webp | Bin 0 -> 1671246 bytes .../2023-summary/blog-banner-september.webp | Bin 0 -> 1461030 bytes 4 files changed, 46 insertions(+), 1 deletion(-) create mode 100644 pages/blog/september-2023.md create mode 100644 public/img/posts/2023-summary/blog-banner-october.webp create mode 100644 public/img/posts/2023-summary/blog-banner-september.webp diff --git a/pages/blog/august-2023.md b/pages/blog/august-2023.md index 309d9cce848..0b4b9b65e77 100644 --- a/pages/blog/august-2023.md +++ b/pages/blog/august-2023.md @@ -11,7 +11,6 @@ authors: link: https://www.linkedin.com/in/v-thulisile-sibanda/ byline: AsyncAPI Community Manager excerpt: 'August Community Update' -featured: true --- As August comes to a close, many of us have had a slow month. Most of the community took some well-deserved time off, and the project has been quiet these past few weeks. We're looking forward to September and can't wait for everything to get back in full swing. diff --git a/pages/blog/september-2023.md b/pages/blog/september-2023.md new file mode 100644 index 00000000000..8907f6b4a68 --- /dev/null +++ b/pages/blog/september-2023.md @@ -0,0 +1,46 @@ +--- +title: "Community Update: September & October 2023" +date: 2023-11-03T06:00:00+01:00 +type: Communication +tags: + - Project Status +cover: /img/posts/2023-summary/blog-banner-october.webp +authors: + - name: Thulisile Sibanda + photo: /img/avatars/thulieblack.webp + link: https://www.linkedin.com/in/v-thulisile-sibanda/ + byline: AsyncAPI Community Manager +excerpt: 'September and October Community Update' +featured: true +--- + +Our second AsyncAPI Conf on Tour took place on the 19th of October, hosted by SNGULAR in Madrid. The day was well-organized, packed with informative talks from industry experts and great networking sessions, making it a valuable experience for attendees. Additionally, the conference was live-streamed, and every session was recorded, so even if you missed out on attending the event in person, you can still [watch the recordings on YouTube](https://www.youtube.com/playlist?list=PLbi1gRlP7pihD-7XYb6c9wcTdkavDzF3_) and catch up on all the insightful talks. + Our gratitude goes to [Ivan Garcia Sainz-Aja](https://www.linkedin.com/in/ivangarciasainzaja/) for helping us bring SNGULAR on board, plan, and host the event. + + +## AACoT'23 Bangalore Edition +We're excited that AACoT'23 is heading to Bangalore next on the 30th of November, and Postman will be hosting us. Our full-day agenda will be live soon on the [AsyncAPI conference website](https://conference.asyncapi.com/venue/Bangalore), and we have excellent sessions and fantastic speakers lined up. +If you know someone or are interested in joining us in person, [get your tickets](https://opencollective.com/asyncapi/events/asyncapi-conference-on-tour-6b3c0aa1/contribute/aacot-london-edition-66187) and get ready to learn more about EDAs and experience the culture in Bangalore. We can't wait to see everyone there! + + +## Spec x Tooling +[Sergio Moya](https://github.com/smoya), [Peter Ramos](https://github.com/peter-rr), and the team are currently working on measuring the AsyncAPI adoption by collecting metrics through the usage of our tools. If you are interested in participating or following up on the progress, you can join the public discussion on [Measuring AsyncAPI Adoption](https://github.com/asyncapi/community/issues/879). + +We're excited to share that we have successfully migrated Modelina from v1 to v2. The new version will focus more on creating accurate array types. For more information, please check out the [Modelina v2 migration guide](https://modelina.org/docs/migrations/version-1-to-2). + +## Mentorship Program +The first evaluation for the 2nd cohort of the AsyncAPI Mentorship Program just concluded, and we are happy that [all the mentees participating](https://github.com/orgs/asyncapi/discussions/907) are doing well in their projects. They are now eligible to request the first half of their stipend by [submitting an expense through Open Collective](https://opencollective.com/asyncapi/projects/asyncapi-mentorship-2023). We are proud and can't wait for the final results. + + +## AsyncAPI Bounty Program +After a successful trial, we are happy that the official AsyncAPI Bounty Program is in full swing. The program will be run by three outstanding individuals, [Viacheslav Turovskyi](https://github.com/aeworxet), [Aishat Muibudeen](https://github.com/Mayaleeeee), and [Abir Pal](https://github.com/imabp), who will ensure the rules are correctly implemented and oversee the smooth running of the program. + + +## In Case You Missed It +Missed the live streaming of AACoT'23 Madrid? Don't fret! Catch up on all the sessions by watching the recordings. + + + +## Coming in November +- **AsyncAPI Community Updates Newsletter** - The next issue will drop on the 9th of November. Make sure to [subscribe to the AsyncAPI Newsletter](https://www.asyncapi.com/newsletter). +- **AACoT'23 Bangalore Edition** - Our next stop for AACoT'23 will be held at the [Postman Bangalore office](https://www.postman.com/company/about-postman/) on the 30th of November. [Be sure to get your tickets](https://opencollective.com/asyncapi/events/asyncapi-conference-on-tour-6b3c0aa1/contribute/aacot-london-edition-66187) to join us. See you there! diff --git a/public/img/posts/2023-summary/blog-banner-october.webp b/public/img/posts/2023-summary/blog-banner-october.webp new file mode 100644 index 0000000000000000000000000000000000000000..08e92ef8ca92759dd0bf03ffbeef71d58ca2d766 GIT binary patch literal 1671246 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

ag^wOMpo;th~EBO2e-yw@lB48s! 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

XD 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%0Ad`yOK;2%Z+t+W63#tZ?>&iEO4Jn*0P^iFBV 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

H&g>xq6=(ymhAgsRW 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�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�kf&8$J`GuaTRI7j-ZfN#m@|2m_7q9?)Oa} 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%0DDvFA5b>f6JxzVO=5HTvY0j+`* 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®E6pLdkVD=;0-wnjj2P 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

jB!Pdo_r>BZax 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%0A>i7J#d(nH0n@3vKn*t6B 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 v0k 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 zⅈ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%0A^B3^B&#mc3t7bGuex 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

4av{;G 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

^)$mNPL7;-*dtpee!1iGzZ@va%~TQb=Y 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 z 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%0Ai}|KKd^Z_BJ{Lfysh(kt4k;> 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�dqS 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

|C=`#HO_nRs| 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 z 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%0Ap!-uF-F&d-z^`B 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 z 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

xG#FlTjbCXl5v)PrMYquS4Kb=w8ZK&$ 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%0DKX6E;?O{^jvlCC#RFFypK)HXx zTBFZ3>byo^C=(y4c<+IU3MW=B_n~T;-V4XXh)U;{Re&8Kd7iEXuoJnfoOWJGvIY*n z;xpVv0v``?yKMmrXf+G~G^5s*z(H4Yw;r;mFcqfa6>w*v>FbX5z`Trb+NBP$?{536hdFSbGeX&-V_~h8PZH_f0E75x<`P37yK5Qeq4;aRiiw)wYj&nwk0HLyx|6%g9)P_nf@R znR`L9-rDA;qB9HD@2Y~%jV~Nt50!k11U$P9bKJJA1!*-nRj+~m7&qJ~@Qe%#8@X(r z#`83y8%QSG@&?*?&06ogGgxZWU~roIA9)|FUAZfZb`8kjYN^0wJ{nnJsMTh@C+${c z5T#A+fU5xnG{7k*9Y0km03kROctmq=+y^i0;<+tiQK=zX0A=EETJz_rom3le>7d3H zs1d0IVxaK|I@O>6Ks3uL>L@ zDMuA8Yd>V-9cD=>qUpI#BFR2HT;}H$FtN6oub?~36}~EB_fAFc(fuY$eGZW|Q=M!T z<1ePVZa9HzdQRH^Q2O()mGB|oHiYeP*Rc3>h1LhQ%a>`Vn)^z-!@6<>)c*E^$o?Rl z`QbY<9>#TRsg;ZX_Ys%4b?KHCe<1M)XpOWLfMH&w>=5Q~o>NG`8WO4A>QZJOH!J-# zaaDqyGB4^IaQf&v^%a2wv}CW4UaGbDbhCIn{Mr3SE)$!>B#9Lcnvw>RT1QDkZDEU+ zk9ZLhvlVMjB+Pw4F@JFKr)KefH*4Rh>~wopnK_eB#A_*V$bEz%NvA@(;(*b05$f#vAnv8njly1)o+EN#enN4!=6 z6Ha#=V9zuAkS-<+OOjn>0X(qN_vvKM8T~ex87}0Di^J zoUZWHYS-Iuj^+U&nRpB0v0}dH{reuiQQqFJC{po?@H*Hnthy zDWt%WW(N^z#2*xsk(u}VRz}|j?gV2GfDQ0{#0Tx;D{U<;`fW9s){`vO(3dMCyVh{Q zX{j8_FltQ=6y)Wipowtos($C1fGm{AkoJ&_%!dp5GMmrm^x6s=R5w=x&apU5ROCOl z#f$S7^B-64v2ssRnj`q^NEAoD4om_`w-DwM=AWq(1Q*D>gDrsLoWo+*KxoaAIBe0h z9iE@3iQ$%Bq!2i|o{RAA;|`fkP9aftLSps=@H#ZjJ6H-(2}q#F%jPmJFlrEBfX_}> z&>d#b3$8s5K;bmFD7zSo1HeK;>J2*rA9Ba>*l{v1`2F$+GF~g;MKkkc`)s}lt}{Il z7Nj%fFSWHE7lJK-tRMuEr;9>0Ynv5X1=p&i9(EE8Pw;5*f9T&!3p4^u88|jev~)2$ zbzMR!piCmZ3K*6B>EbE{5A3UF=m2IDlvZf5c0IP%WT4gKVASrzeDFnc=k$=IRZ$#CFRS!bt0B)HqB>krA#ZiPh@Mqa?H(vI+I?7P|V0#n`S)xIM409~R1zdNq z5wS5Wuh<_KZO7OA&ykz{pV;|-wDaQs>h{_XyW#)byy^eiI`a?IU-Q34HYz3J<_SG> zKMoUD45xOwy;D_0D>H_U_#=37YZvH!thuYTKH^99=&$)SwI{WTr!#;0Fh&8Vd-ogX`fN*;X0_$r zlaN*lvAz@Z4ohk7sOzv?q4^Lk34;X&hM|-$`7nna87~tzJ7x1FoZ|!UsW1BVLYG$K zKxX|x1uS=J3;XH6!z6qlsr`+<+Gh<(ywq7=imUM@*3<9l_AjW3n|;$$3= z1PqE+H-d#BBMgFeLvlDk%J+8CxXdrK;4^Dbni_=`g0@4LKt9BM{de=Wufa*fn}|0x2K$Ny@{&J$QsI>B>zY@(ps=&2~3-{RIwk> za2t{(o$+_y|JTfarJ$b&ZP=b{|2D7t?Uz}IUefp{_@4TBd;H6v;w;rER=_>`-aDyZ zBaSYdXt|=3n7bUc&PaWVlgJ&O*v$2?i)Is`LaOA`0OymGmPnMs64Jbw0+uzX#7Q`J zxJtpf242KhN!fCioX#ZPNZHG&v-n^DW1SBi_^R>U^D9JWLtZ@nqF_Gz z?E)VIhmi;$?JdF20l*NV2~LY|uS-;zBs2&|X}boM9>F6hy$d>YK5|2ci3H$ zQ+>Ry>V)=Q)Hqem4;cM5?T|THC4lF-a-;Q9UUmXDTBHiV5Cez6;DKR-8GFC$>%OS~ zzJ2fKpMBJ4f1(DS<>fcIZ@y6f=nDM^6Zm;PxKo$5Y)VsRWXnrgWQRc}l!hU!pASt} zlQF|POi#%f8H ziBY;P&O6vtZ#SVE%Tuj8H|OE)sQSlQ<+n$nq%f~_>7LXaCD&RC;e<|0JxR9OMz+M~ z#z_>{s2aPaTPR1MwE$Z8bB7}pHV-RFTpEAo5n+JtcGU!EH{vuD8F8~((u`Mlvem0> z0+^#Sufm|b5WbZb;!Bs20da-HNE06_KNIANYn`?Xa82n4@29`*r(X|g?wlAi3&(h5 zN+B$1R~!vO*Lsf*n$+Ncrpm4cP_PVVadzwu8~eoE-&ChQtq2vKq)W{FYOfc%T01Z) ztg!<#8Eo}}OTINE02k5U(26v9I4eGup8M_jPcfer{>aXGpPxo&KoYl)`?$i)oa)j` z80@!6z3?288X;@Orj>)z`q9HfjM)QSjna*r@eq%mV0CHHk9z)M05(>Cp3ZGtO&qLB ztnJg9 z8JcY^hQtP*hZ=uhE{Km2#AV<}n0c2>*ZU6Q8l%ZcbM(L z&zv%N0@nhL9bxwDor+sjsE9lO^6*n;_Z!U1N3#-ly2iydr*i~@@n_;4#^xQ2a9@&4 zYV;-ZqC=qBHNsDoqRno-s_w8c+hf&XF3K*3=-FI3=7`I(?YIM8i2>T#2 z!G+Dy`!a2bi{$ntFg$$rB|8_BUhDq*4wgwh(n4}SvudgKtbxE_mYSJ@oD1B1#8r0~ z+x~B~+^eKA&N*V$qNVMwOzmh}wI-etWml;(7_4YPQpZPpzwhVof4^KTcbb8Xyi?Bp zNXp23BxGJKW#m9qW3BRYaRgAiwjOB5zootez1AjIqb*OjOJTPHXEv~~SA%lUu2eSY-p|LF4k z`1cq6HGQnJbe!kiD|8(QUvzJucT-yJR(fQ&vT8@0wziXsHQLa$6x~1q*Q8t8XYvkP zCp=fwZ(&?SIqcEtkQtMn9~aZ43OA*BiUa9 zWzhuj!a_Ad6;0|$=%8)qu_XSBQlBn%j-YE@M_XqRgnJJ$i}0Qv(amXvl7+W>VFQg>9RjJd(Av`ikfshQKVrOu(gdi8oeTv@k|FS%zb! zSMxTWSN9o;*9)CmmIGl!a_tU_25Wox+P|N})H~he^zZ`lqP&ywTYdNV;OJaYs9y)3 zp92&+1cWzl(YE18Xl>9OG+1j=`j0{RKs>`fFAkT*D6cxSzDqloAlz%A+_roI^a!;j3{ zZ+f4cwS~Vtrf`QRhd<&1_j1z#7+i`Pmjdwx!SL`fzF>WY&w9zfHoC_~2jzLzo z^Y-R-rWXtEb)je1;N{%DbenyuQ|H&q{ApkS@P0m9BX zwN-bK-bWM@Y=eVjcJd8X)HAxA(22w3_r?+NNZAxV%96hT0D!u9c zuqO?R<<9pA2j$~T><$y*JQY49k{|-P8%TVdWXTEKO2tVqDn%A1qdHZ03%Rz({!dfHLm%0uyII(9`ZPvOyHj`%g!A{!Z>ue|GmL{EvQ17ySu; z{>Tgd^YPuktD(Q93w`nfxgyw9Wee}iM(Wt;Gxj_%nQU3*4RJoP&q&O{WUk=>{sr;A zY7_aag|7X(!&3Boyw2CsJWb;&1jK*8Ht(GeY2)d7Y7Wg@X%GqG9?o>g$p#fBg3j5v3=_wXcqT?TMTbnnLh@9N)z z0o$38I0>(8Px<-W=jZbZFq?Y8=nW$mcw=&~F&;U4ZjR8J+`jPMseqqB>V?4%-Ru)p zU&r06Yb`0dpUHtV`scx$9tdr0hjUrWetj6A7~hlHY!BJoA}OhYW0G7t1MYH#=i9lT z!?b+3(Aw!{--HkD?*=5Q+4wyo4H3@xJk=nnId$^GD=ubslQLl2|!D8KES%Y7TN(@SNnHE9R$)8Rc zb{xEaBkSOx__*K~{g2fCh7MjQ;r+bhQ8gZ5z-EIM{A+@vpTM=4l-uSt%nQW8j&Lbj&%TkaCwW zZaU9rg6gj4LR^J_-(P>?qIL<`=}70bOWnTC*CM^tq!(V|YnDEx%|$q|{uhqlX4H`1 z`MUyVJO1)_h<6z8cK8UsH2@iD7T5|r6?ldp0g;sxB@9yrHjrQmnjn~q;L>YnCz7Tp z)~M}aRL@I5gijMB37k}sG;b-`YDmao9Ih?YC09HLSmdi)M(zaPGj9}44W@t@$-85& zy2C~jF=5MrQOo=(8Lzu2A$ht6RBN3?59u`BtCBboypp4%#7B#VB^@>HJr2iMOTMr@ z8*?s}+mQE+_Rb*TRUBeX_sxSf2Pqq8o+DMtuLwu7s_Nmw&#GR1v)m|D1F5yB(Hbz6 zyyKhCy_tJs_WpAJ&rjwgl|NtrZ|7zRG6&T5dk2S02Hp$KEA)KRU;n?YZu|e!&-+hr zeC@IJqwf3CaR5#a_VLmdHdW0PtBO1$i{~7%nNpX*7!YlyYX%!BVaYozvE=H!!<@}< zU40rW(TwaGa;rgHnM@(vrt`WTGB-fBTZz(xK{fTxj>r*A#?X8CRD<(t;qR=DTR zdv4tdZ=TOWmoDTNDBcQgk*5eVG{w}WrF5E#-sIudYfPnmpUY%Di~Bt$!DQ zukZP~OTNWP4G05JtIHy<=E-v=d6o8S&XZF9pRBL2Pk-ImDRWJ&CG_0~kSs_7CI6s@ z1I49op0y9r;7nVTZm)>O{LT`eA0}ELT62gCXwHEHhS_sS*rIGV2c-bG5FR@{SqkT< z@$#CFw*UY;VXF;L+g?<_E#Y;?x1} z2>WtRzGmU(!ksy4tNYNlgCHCNhy^=fE?1yB8jKH6+lO22^m$~CZiKdECx}n8`Bb%s zdW0oKKd~lzq;>!+%AK**H+}pbI(~)%Vhz-FL>+2e5ilTi!od>QvYBV@ z`h-I$MwF1BXYW&S9t`e{N8R_#sXLn4TwF zw+XjunzqvuQvJK`^v_s+jfC^@oryo_AS-PcSL{~dCE|6Z%hEZxz-C;aQcEdO;B0s^@Z8X-*) z^zi93!Bq%$$$tR*Gk0{9#OjREXDZQ|sDRWo(b3A6*S@s&b-k*>AKJZwQ+{|?S?E{J z7=!>lQasEC_`*Av{`sHE!v(r_VA*0G$0c{Jqq@VkN#c#QT72b6r3wPFN?kuEIr8++ zYkd=+cd!~M539R=A^xZ3Gw5TiFgxsz`#2;O9nW#NWYbGBdN_pS;qI^mgijge z26uYN1r4lijRqgPMz!F1*gVaN9_Ah?mFD?m%k!hbbM-ZPUB%0 z--=%ZE*~MnNXFR4HdxXMmlBD2>_-s)0?Yn#+Za50YYsa9O46!5gr_8UaU?cXK>n$( z=ic{bY3-@s;wc6flms@bzp$(8pDH`2l_NLBXc^k@)>!!LCcu+=WD=Fp30$stn)&-T zy@l7z1Cr7EExG^VON;orF1%isFV6M!)j;4NE<0u{I34tG0fGr0`B5;>JJ`~>%E^?a z;SNI5cwjim6f>JOUQ}D z>=}~r$|DA_V)n@#l`C|1Q6e9)m&O|uBK`5;*F{oka&!H4?)Z>D=rK|q_Ad9or*q%d zeSL&Gz&i_Pr4=sRBP+5ZcN2Hvb)-w@|L6kr1a(0o-LoW;ibg8$xKI)gji{00lr5Ox zjn;}QR{waehbyCaCi>Q!htDK7C|J>Pr=(;-ZIR%_X_lagvGF~>6wFyWX6N$YXQ__cO4W6brn^E0i8*dZbNqf-e1Saf_ z)e9Rldwwn39#{j<0zC4nJIwmORm~v>^QgvCYI_*%@k<8BZ&BxI5}hWgrrIKz>`oJ> zgj9(b|L&;lEQ>{QYgy0p$h}MVx{O?9RnGD7{Lw3j?O{2S@qUkyS2)LwXJU6)_Tp86 zEaEl5XGPGEfQT@MZ(AIFHr;IN;q5LdH(0$%LPIcQ%XJ5f#%&j1+8uWF{~WpIe+ln< zrOiL2>6>A!wVH>}Z zuNUzS)6D#4oPE=Dz7_waXV|a zYS~hUOr?72QxER&@@?ZChn@I1hD$q(4-6NxE5U(YefkEH%e_eUz55fVsLN!mX8Aw* z-v*M3SLr)-QsYGCM_|GS*>kF4Xg(EPJHlj*kX2Fz!0mT{*F^K?=k4uFT1gl#(0@-y zz8SkqfeZBB!brgf4F_m{!x|{@5Op=z62=LKqaFW!9_q_~^JnI%RsY$Ssz0?gEX}_O zv;n`A3A{^!nHo09-(`PczTQi^PRkZ;NUQ9aop_Rq_y%@i;rk9|7D%2M)(0>qM<x6uEh9^;n7df-6<2T|8X!{ttAjU8Tav*Cr8K45&i zi+36>;M)#YK=R1vBj>shr*M#fLCC?}00bL!P%||)WXURO#5`>T zGhnue4n{U!a0svE&b!^EYf6_EeFB@V{tONS=$_r;#(4}Nxaj?IhO#G3Jwh7F$Vy_k zGK_I)AKv}bEc`zDl8cs^S>Ug{)h~K@8RZz!yS4FDUANG4_`HEfhu`|Z;!S6?+ThUj z_BrX_*EPH@!kO^)`0eHYU@PHJ!4luOeYmdw0M$N+7Jzq3>eQv2`a*bSsFvta)?5fm z7PMZk)2UmUqQZ~-V)e?_uZPcw%hQ5FL#DU_?EcFXC&Tfc>5G8tgzcVe{(ud4>6X*e7q*y%mn)C=@4UKH_A!4(2ys5TAGVFc(*( zo)&m2U3UfbzTWE8n{aQ)K1=Ge$V#3LQ|nCx>FMH zDUL!}L0Ff?M3_zS#x8K50}YbeOVb?&Nt|K99C_6pHc=A}t0kju8dEkzqYV|!?|o7o zs%mYpA&m%SkQF~wRcycXi<)@)zVwUb9`3mfIYSCZD(3rGILowTu0P1z*QDL%r@!9L0eieVs234 zASu^hS+G8V|IPdALOtVO!?l*zeUo?mB#i@Os;|gZfPbN0HXhpzh%k_*k2k5wAVs~y zUeN9h&HfF5SHU|hF5n&3dCEe}1NNZG>kc-w^(5Sh+N4Q*b>3l^#AAJP44h4v4Qs6? zHHTHC>+s}QL8l8)@JbFGG_Yz=Q+_kCODZH4{c+eRn~Q2(G?Ygat2)z>vaJ);Xrf`>v;j?D<%U*uragkXBhWXHxx0y zE|8QZvkwjXHYbmcdp7h4i2*$0>e4x3r?A9!);)Lag4Taq(MM3g%68i9;6gK?teh)D zik=wKs9+k#;P1CvN9(+>jnlVqO8uYAxovD*WnC4MXh$ncGG0>fZXNy7Jl@iK@9Y^B z05`|cvgdS(fQHls_?n!5i{y1xa)PblR@IYVV&-`Vo9Ez&X)+ZTEan3_vK)2JfXOP~9U-0*H!+3|o3jD9arkQ(?=aDNhD2kvWb8uXuzfB9 z46q%pe%&E%P+L#mBRCEA&_m*Wl^Fv14hafkojYTo(#1r zSmd?7cJWj2@1D3b(c$b_I#Mh5FO1c1d2s8>GfsymEjA{IDPKeSbwN*Q1zB*GKxRcDqkGt#z_ z#5Q)~&?-yvEm#ts@xFS2OE-vOk=zEJ3-0luu<$!zRgYBpAx)W{d5%}Jv*qCsh=veHdbw2 zp#$Lqy7an(f#H=U^V&fmZl__Cd~yn8Ze95ozK@obPFf&3@TxusfcJZLokPfhlobb{ zgi994t5;t0UHRa5c<+wB3%^|AvBn{|M4}JoBrEXp7-6oig$6b$VcvSTRFxpxD}ro{ zg5F`Z3nZu0fgE3IH#nLPed;&@1H&8y3rb*V^NWPi zeBmC?MyrxdvNJD*kG#F|(LOgJpy*(*85Sz`Wcdpnc8V zdQCT%+W+0hwT~LW+RFEKeN$e$Zlwi5=nNK8k6K37ke=@Ty?67Djh<=oA{iv}5eAuu z5(ptNKUXd9-Hp>)Jg52@^1hx!c=ns`&3C~%&@v|**P^3$o>ZS=ODy=n8tf@RY@$r8 zoK2Ur;*|1ZQ??(^a=0gTONGMf8_G({l}%nrqhP=k5qeiH4s6$q9jSS1PG^H%U9C_82ywN^Z_ zjXk-EHTOCEcFvAcC+a>U)fH}UNWB&A(Q+F~32y-F)V%dZ(p2-3AeH^dz0nuMtq6fB zNpU2Nm_t|w<`Q%q!N^Ht#!;p_Ea2P(NIkMO8gGx)3Kv>4ykokEH(8dFASN?(U})^O zi8|s-@D7{1?qKSU6Ft^q=DLHy$MS9P4r7b=_U@Yt>=v**^UQNS$kYK!L?chH-k#Oh zKApx|*R!*5sBgAZ(kZ@ss8}q`ga<5_Tj3(i}bJzC$FrrcphhLIWTI%yEn}G?RQO{G5L5Qz?v8r~W1{ zYgG6&g|n0wbvK-)bR&R^8aPuy0*6f8u?Vwd&nV~10Q4? z;L@9TD%Q;h)Yb>!8Q|C1y-)pqab?XVH~i}l4ghPFE|%c|${MB8%H=L<-4AbHgj$KL$VZaevmt-NCD9msS*1xTY&?_zH_wP85&SydJEX{s2VlTJJ_(I zX}G{;XXpnINxP<{92Nl%9p08mSaRJFxxhU}!+#(jo{je?@EcwJa#Yc&!G4+a11H0k zrw<}n00Kk(o6 z?ZgiR-a$V5#M}LP&wjh-K26d@Cj1V=b!-iN()=5#qDNPIRnxdt9Z@1mX{WN$h^rx% zTOm-VzdoWaV0YN=;s^G9H$P3^fBoVAZf(&&b0N+i;iZAEXy*_{I)-kOnbC3A(JN1% z*k{ivVUE()J>Vl4t^)Qq_CntLK>d|Z@c!ZL9Pl#%a}gyn8$2n4`lB5>@YrGO;W4Ex z(p~C2{JhjJM7It1kI$St0v;KFryq=Al`hEk0LiUH%s@h5qni?yw`iF@fo#eMNs>tH zPEI*DAriMHETe-b?qu|m&N*q=!R3>r84Vd(a;QJjbi0pPwKR8vcMi|0-0AvIin_yG zyVDEe4g*cgW+)h;W4wl?sr=((q_CDIT^N|Czbiq5J!+1(#_;z4Sz~-EdYFGhZ#ry%QQg&rTl%M3_ zJxO13El5>+1Db83j`)(i!)hZc28VsDJ8Vmva$cF*gxTxC#*6#8U>9{vGG9a#DkR_t&-~k zpOi3aXRkr4Mpm#DxDvfY%iw}0yb%A9Sjbv*nbBeEa#uNvpd<{U0cURVuYPj-mTzN) zbTYq5cz>&p_RsE*`r*w6KY;Nz{3!f#-#k2+t_^tl{%3u11Os59LG%kOHoQe;ww5>M z@2)ftG6tn(%ykEwIMVaEtF$`|wjRJKRA>t%e{V_tV6nx_AiR%&H+u3)R<~vDc`sPM|d40Z|s)o z!drc0$K$e>6D4W2q6H-Gsix3MhSCZ0TEf6a~QZYK@{k8Yt1_K`#N1yztP#6OjA%`4F)i5p26rqbxDv>MFN-1Fp>#ch~`nqdtLP?l+|VDaV(hJFLx-S+yQc(;c=p)_38IY;U57 zV|O5Ldym{<$dw}Xz7cnr*@;bkYkD=y1y35SCuxKsmRv0bMbe;csZ_ity!smT2$R~w z&p!018;tzw2$P5DIbRPJ&+Qbuank|d2)Hf?uX(~+RvB8Eu4G3Pf;$D=Mt>&+2|jT` zHDa^^F9|hj&yVWhnKhrli#~H}v3)pkC&K^si9=zn!Te!(E$Nf}0bSqvXq)6UMdy?b zLhpl+`*_cwWwdznWCN3CPey8h6d>+bUR6=dDrxj0^JAEQ;q2%%nn24GzJ*uRYa) z>-S7|{El|DFS|>Zwu%?%={zuIkAX7+m(9_!l+Rk=zzOvvZ{KQH3mm!Kaz1wuUHEOG zSX*;;ei}Ua3&-kJ2J#nK-D&E^~t(QmMb$ef}1^WB)V_loa zdm3a6j}X!Oy{2>kd7VKjHD|=Jz-MSWDl^K^tJ4B!r}wZ-PpmaS2ekb|J~y@KyW*-^ z59;m?;&7UiRZn3==qC&wV?1D}zXY)bRFv>0KYmhE_u`P@kGAxn z9xO4MN;f9tnGR2$F|{z2Y4Mkn>C^2qvkxVk*e%JW*?&ax9jn}$SxF3ir0`=J{ZRYe z_qu=MoWq>N>`-UWT1W3td%;d8*m9`E_lk=ic44YFIUE%jWhiu0M+!A1;?OYY;k6-u z*eBNbUd3N~XCGkP^g+Y&6TH)~{NKlICPNQo@<1mZT@P>Plh+C<226dRB@ohrfM$BZ zqYjmIRS15#y6!MQM=bf3D8GO;+@ZBTYPR35vpv>q<`3B#nDyr7d;jPE!hQPn>Q(+q z>tFD}z4*hQrBh`D+>4|szzl33&e-OOKwjJ2RnqJ9s}|?Wj}MKN^Z}&XKrNXCoTy<0 zslbf`JIO4>Ek?F0E?&5QvQN$8;y*mxA1;-bDx3|Fo*{_=u9MKYPS!FKBtzD4qOg~% zT&_Hf#lrr*LAoa5_Ma?~fnP~${lbx7UuLI46@8<9R-@9-3 zPdaYA;Kp(a<~i-EA-Shr`lWbVg65Cv^o5kb^-1y(BlUb9?FwN4qsRY`aj%ZLwiWH25yD|11ZrSn<*iA zMnWQwFYDc!RdkBkAre~PLt=!ZGb5y{=FWAg5~Iv3Af^R9UekdeqX z`NIg|@Blc96qMl=N5)5>eu9Lw25-GU;=Mt5l&s4G~orNboep+nWgN z5z+*!rRI5bVh}W5x`x)Ukkls6M-ZHeX#k1@Rdq*Jh(x;250P{vX&Zm$IfN|-5&tn_ zY~{vW0jN|tWuRS_B7?inK7K)Ot}CBN|M^>efpos~&4x>c%krb?(5=(I@^^&W#!KKQ zh7T$DGkFlqjC2NmmYY|^-Td_)wgYLUE#R!N&PwYn9dq|UV$*I|$nG#3Q2PBaKtc`@ zB{g`aVla7ZVHdVwz}2OFw}o;#n>fS zdZ)hOReR}fJ#t=E#yPC>WCdN%wbrsTaSd97e^->ayWA;C7b&oE%M1dgAp;sx4;KKm zcdQbey7+M4iAR_>{H4h8j;EKH{*=pJPAJh$0ZY%rwa2Q>oeZaO7NaXU}b-O>LuMsQlb^b)eI@M#CrTSo&IHE+(*uzdj80;*mRbxG6}it;8v9WAbz`tKgRZ?TP0Q74 zy+Uy_J6z-aydd3=P95M;N5->KO+VB4=;v(QJ}6SKz+vE)C542fZ1uoaTY>MZZO3%( z``KH(UAp-HlrDO^c$(1#dY&v7uGekM2)yXe6kY z1X|Com;#B6ph=`&WDB(AN-@HcU@p;`#^mr^;J%d&uV5=rv=x;*2z+ij8@syvn4|4FPi}fMkRPuX!Q?b$+D`{g7Q=nL4;N zXlOewHoCTA+^NF^q~UQ?U=QD-u2WmrSV!K(*{5zTI*<6x?NQjh{Ee-B>hla71f~Y} z3gAL_@3#-K@<5tJ63u8@a)Mjwlm<5Vy*2)QdOFnQM=l1Dgda}ilzzCamnrT`UQpi6 z&83Ig0AD72PFpX??fyl1hfO2cgR{h&nJoshWhVM;qG%z~smYV;1YfsR-)vLWy8djf zw>AAN>5i{|;ExHv*9y9G2c2r5=Y*^rw?hiGZdY3!rqar)m;_mEkx7InmbVZuJAp0o zC0pVKv}g!E1}h^T#sU_~(lgHyIY?Jy#3}bw0BseyrOw?0clt8RN!4s=4zG$=;bZdV z?yz^pni43J`Fbu*HzUP;`|bPn2RPi}wPiM55hN2&n62Y&A7?3FY~;); zn|xcNr^o=bCQ@o)sgdy?$rVbbR4Bg=e>J~zeigvt zFZF2PTi*)BA%J+IEcHz_839oMx|a;g*n#&6_rp_i03az~UzAK! zTbl=CTLBZkW?FzcNM>sBqZe$iI&B0ZSicU122vGxh_V$0gyaU3M7AU$%u-oPrVMN# zfem0|6y-vb%d1_Qn;T!6tkbcA?=En*H^7 zhi%ee6Llq4kQna?BolXF`Z{A?vZdZStl9bKMd}XYM1H%`FX`Bye+(pOw{j+&7#C`gFIU#YXjYa7zSX<2`2i_H2 zW#KRLn3F|DCj$MV_Vayx=87vV0?py3 zcGwQ25g|z6Fo(+IHm9{{+dS@M_jxLJ+qiVuTQ_^^sXP&9Vnfhj^wN=D5J5U{?sAY; z+BOU@5f~4wT+uO#D>?&p7IM80Sh0|!&xaxhE!cr36Z&8e9@)YYqlLIE3@>RxnTSgU z^RRGac(4oSsQ?y!V6hlnhkDSVSkC~qgR{Z5apo2t;#@WmuxHd|yu&u@7GmOT!*Nf` z7m4K%iPgj&grb1YtoVuFdxqctZkNCr@g2;)0xo+wsU+Zcfmp?M4}`<YILea5P_m+T6dgzae z(W$SVJ%TPi5OaBgxooZ~rIAl$`!+Wygu*tr50LIK*u!hO!*qmN^yqXCAon74iH``H8H^5(I}@@vNOsn`ZBXyhIBaYxkbVn)Bub$tVEy!Uq&on zL)FVld)4~SN|(#c!vp{ei0rIiC(FDk!W#V$$3~Ek85O~+5Sqr!yH2#!fa5Q z-C6j_7$smy?pGc9lsK*0*RRC5BbvDG5Ko8Dj8)T4|L^q5f?uRd=hb_P95T3;z{r8? z9CGC~M-)}oc7*fXAx@n49T?IU=?YC7B%Qr&&gTwC+d#L1k?u%~E;`GO zExV)dJuo}rbVmdBMSZ%tTC#8|{zzXVe`NTOsz3KVIEts;-(B1&4%x&T?ElTsKz1f( zJZo=)_HGZ=JFFwMH-J=V0Q(t{F-9WXa|W2+WwA8~BCw_qc-o!#-G9Zo#s9&@Hnd#+ zFQ{^K><i;m+ZYwl8wlq66-Y}^Cx&@5n9qFTJs3W zAXl}I2kXs`DoiWN61QOH_5NVJ?n%GhhWI9HTQd*nQNXMotWXBFYT$qWuAEN9c!e6k$8iF24o_6~UnayRemw$>`xa>1qs_y>E~+>;lFssXwQ z5m0ep?NXsQ0A&d|Et(9-%d1!!uqtp^!2>t-u6NY*+TY)kv%}%~!*Z7sO495klSTue zu$LO$E&^W>pcM8QodIqm5CDI^s_w9A5$-+e4k|JhtRonN69ItISrLT=}R=De)(#bjOIv zgI;CnF1bfh118za1m`CX@F!Jy)a#}xAmDeJLG`7)@4%Yn&H^-M53lJC+g$E*a)+t& zoBbc|Fb7DFHPO}x2`+I3?XO8G{q*p8tER=g;*oIKaCCIHy|=?Q?EdwrW?(wv`5XN~@u? zCIeQc4L**Mw57<#u*S{X@7p9$Z!e9|H=$U+Un=h~lI|ZxZqh1U2(KMCwNyE_%P-11 zEJavPWfTiDVd5HPma~IEvOQsWS(f%CqH#xrwYQDvZ7clGb{Wo4sh?o>i7mRcLw0gB z>~HgA=0v3@(v4nXLu-~gcv3G@bAgw_+5Oz%n36rcMp81T^i;~bc8Ad(uv`WiV(vW- zBkVapdQAq_DVG6SYGhFEg6>~vE@_=8&n;Xc0v{3uUJy=8DIR=3d|0o-V1^{btrbb@ z;_f@dt^+D(Jtbubb{3~_1H?JrKm$b!jp$_eL4ro9wbQux|M49Kdv1BMO-i;S#27_? zz6S-l?cxsGeqRUY(&;NG8F_NR6Zw9fut&SG8%eK23Fvc2;2uFHasvWz0~Er-hx&CA zm)84rtkbkdRkW7c)d-J<9C)zEK_Z}?ZAsK9ikI7GSH7AFTY|^Ov*T-S%Ls$6gM0T$ zz(@YG`X&xg2S+%E)d7ASYIMO4I$Gv*w%Zgd9rM>x{_tXuuB~UWHI_If3Yt!QOB*S8 z)Uf(nPth#!n3kSY`8L;MdhtJ>zxnm^miu8hb#&1#1D3e$guxO8nZU9Q3y)}N|4sv} z9wfa!8CTUEMn?D@JQ{U+>xS-Q_)seJMy6R_vObqx&3_a*9OV&&#j6kSkwMV-^$wwDp?Bwb+QHR-kK2s-$#UApotLP&hZd;=SLW zZaLIo`YGlBeilkzP%FS&Y*YY3>@C~Jhgb^Sn3TE*tl8pv(s~~h4E1h-K@vt@}hu5nIO~I84e6iq1MD1X6-2ghv)^0vOBHBp^d$ z7DX@5O-s9oEqEC7MoMddL;4#rqs3~43nT2;9hU52Hr-+GU++z~Gk8%hN9#dyhc#UG zk+{QPeLNbQ4~KNYND0?AZDVPLN;DFYG||xmQ-x#+`_5#|-WcRrT=(sDwO>1Sy`8YB2im z{RcLKzIeOA!NC1+wX}DN*l$X=&phfZ!GpnP(8jKISuDmaRzlgGXcPBX?YoSD!v{_A^-`>9{?=Td3 zZ)_Mj^I+UIsx2n30s;yT#Z2iP99CcZx&`H7gF~!4tk&^#z}#+(vI!cDzQ6k)u2d@^cJ=vISPMl0kmj{yGzK(bjHLO z!vYqn%S7`qt>GfQ!xW&L2GA0g>nonROG)#-v*}dvitr&>|92=*^v{2reU%2A{ZUi& zT63)4VWf+Pbwm%S&;Xpz=ES%^a_$+*HS2UOD>o}*FOa@mC;0?tC=EJ)x1g8@A=dZU@( zOu~L{_cywh*K|#IdsU=Oq!T;MRBLeHzLYyT;n*XGIwT;z_U=BcM@d_T({M|C&0)gm zkHBpwM<&Vmo=)`3eS#?;0Sp|(4UnC4z|sNPMNDY9Gi)M2fDw>3Ys^11H4*3?ib-TYgfg3DZPZUr$%6mthCH39=Q z8ZugBj}#M%jpz`3i>d@h9sGIMy2JDW-C@R>B|b3BXuxKVkD^~E2acSd+T%lhc!h>j z@gDO9QK;n-b;2wqlF3`jWF!;V7jA#hq1F zQvIc0PP`PZkH0$$L`yzYE~j!$OJV{EFak(is}sjmr<}4lE(BPEtN~I(rH9dOfpnW07)>1kOaCdevGJ{UYqQ+yl{c9!i&7p zD)f;;rOq??^Qo%9U^A5WtFqXvTAKTSpXc18@B@|Zu%pxG4&Re+++hc5VPftPjcuG% zQ)+XV<-8-_t&F}E&RpfP>gOA%pohBkmFI$Ga2N?|VGbruBRDvbPCOW;bdR1ncMKv>r!^;6 zToVWmLfn)|RSi}~67;NdFunIUgsoI`Nom!>y2|AUaN^zPn<2YwYinfjr7k_zVT3u_ zZ|^&cjgm;vN=UL!H|D-WY@jPV5DMwC_M_77FiynwFd93Y#i2~aEh-h>eXza|#)CgU zwb*o_-aBt+#~~FsuW~pzNvqOsL|Lo4ZIqGQByPLiUm#yjc%5#aDu4EsFI*4(og*9K z3%ryk!gE;Sh7OF5z{lNuof)K;_YDD5|H67FNTQ-3=T+B@waq7c#=hF*MtG&i-Rpy? zj|SF#U90Nx%)_HRr^CE8sjB=P+9X5$w7n#xMvFQtp(v zJI)Nxm>HbSD7B0dQr#dyg_kX;w}E&eWeBiZ*i@sQ0eGWs-rMMFIsG>@T}Z+sjwjP{ zf88g7!j`zeVg)tShXf3O!ED1YfQ<(hBeOI)c5ErGsP(ut7Uu`u>`TQ^ma`7ll`s*ewuebi z1&G9Bh7V!!dihlHIJexXf}%pcwg}d$QhL@flb|8N0xhfsK^Bzodaa#iet>GN9oo(8 zu!#%9-N)y8VDzTAGXf1JB&)iGL)2l$00=uTQ_=zOp`}~C+Z)yI}FY%pj3|Lo=GcWwGuZ&BV3D? zvmieFje1dR+GxFSZkU-bF6pJ{4)Zhut2-N1a zs>W`*5lAb78ialKzRbZBJ$M4&BDx#j)Z7Uk;64rj-wWYx0J2Sbh$ut&*2S4X99-+z zv5~s{8U#qklF%KhaA!j@XHGx_qxM|i?fHLjd*l||cUe~s_P`3a%uF5D^-f&3seT3U zz&^RqtkI?Q$w%fQj9%na$S&s{))(G2-eDU24f76T z0T^Z!k379@Ch&8>A^~%oNvP=C3|ByhxcA9Ea z&3Emm*Vd+VH;0&WNXRV_AWiUvwALzGdXGS?jncNkdG0tS1>PtK?_7NjS{We~&mM=> zIXdX3Egn`1u`xhn{g&yJQx0$wPD3fF6p*_MHv6JJ{!*LpK_YCdFiXplc5SH|K{IM? zwADWLx`TDV0Kg!Xnls}50w1SbGjq-0K!j^F48;^DWG%L&ER9oek!fDsL9;Z>2M4(7K4+!UUK*lj>#k20PAE zCK;hq&mr8zIcP+s=?o3eiu+rT@`Cy(ndA`lgvUCtGRE8oHhd8K@G8v9pNTVK67Kfj zpZ`nX3*gleaM5SyVs=tHz&8$&-g_LeR)o+1TW&7W(F=XDL>i!8xDm-VMj)9-go1Xp zl+Hr{rTGJBEp?o(O<^HF#BLJaIBYZaU4$D<3@37!A%6W(N z;N9sCQ-Lp`I}AotGR83Jpk#L5WDMp7@usI&V>lD`kx@zqzo~$xPiK* zBbn;3uLA;Xvy_hoZk@#fH)E%0;74A~oK`VH5^3!i8`7?Y4hiUJsvr7F7O5A&JgD2fw7{zmZl^(iR{7fh~p-ZHi5iZ@yu~(#a&aV%=0XOQW!Xr z9Tlnn}54#dy5GRJ8?zm`*?eqWge+i#9Osbv9fYP z0cai|p#eR(+6`6}3K)&s$!shU>F1Jn*lmz=x^4Ga-eG`$)4ap${c+s2!vO~ZKS{>*d4XddR3#n=dsS!W%PD!~q9 zk?@(jbzdJ{)u2o+J|y|rb+~W8^H4wTtg&)i z!_WCpZHH@bW*=rIi?*CdW9vwI?#>>2bL2;snCkH`ND0s#^*$T}0~jojGJZKPo2)k^ z&1tOBCL_g>j$&7>Esjx#9HAD;|CZP5_5{fr;tOyXfDNFHAbU2Z2+9td881+v8b)1& zXA*L)47tzO8cv-pGD7weQf_pbNv67-wur{uNrc1%IU6D4dhc+!Zq(noaL*Au5zLd9 zx`cTu9p;m-@hqzYTW5uQObRkujEy@E+%gFy-3ZALY%83)TV<#wkFbr^jzfw~mlk$o zD&gh1sk8Ds3GBcI_2nyy9D=rx0fNIuN)f4KH&cg*O#?;+6FtvL0VIsb7^yCl88Cgk z1%k}*qPnS&^8FhlQH!$x?pt>lg~woZhp{CjXb72$M8+WzodETm%S2VjXeP@|PeA2Gc2o@iRblVLNh-QZDvXh~ALk#yR++>rE{8?>m>tV z)3ILW3gCsjylPu!08MJP6S_2+L5370)l130f_E4UFtJQhFb+$2fpxh^abGT-`}|wy z9p)q0$KHF)o6&5Ujdmw`S41lr^cN@LlP9Xs9VQ!@41Pj)*f9Brx7g{gXesF|m0Pxr zY`}SXFVKH}17UyQw#x1>jw9I@v8#l2+DE4l6e@=OTESgjMH?syE)V(K)S}Yn!+U_2^i-Hh#O|;h zvOXu|llkQ1T}?ttBRJlsaJY`2%DPG~+__KxIrix1VG;5k$R{G_9}VRiBjLlw_t%mL2<*KC=OWB4x&CLFo(l{b<9&38?6;owZ1W~y~t zKRP8lQrcq6Mv?#lu^NGCS}817<8`MODZFq904I7K9=#nL4&R! zXe~N{gtj)c`A|)?s?I<-W*EZxh`!IvGLrD18PW`+U#F_NHSIr#;ep zUeX)kFdvrz$lezW&?Ll=g8CzsV!}sC+r!33_z0A=G`J_;TQ$ak3cO%4RV-!C!6@s1 zW3@j)*#-5lXT2S9eFavULVuxohE_IxieEB^dB}AqthCLnHNBZDfamQ88x*QGKgj-Vh3|6Z%$fvGfOnWadPRtuZrG&3 zwsI9Xd5PNPX3R^XF8c+zThi9LhP8BXRx4e+Z&~=u^>%sbNu63gu5Vsw_{kQ32p8M+ zRX;_pV!pANA%}zAb6Tl+GNMwt7nYj4+@~6KZgNcu#}HM=PjropuBeGcHEMNIiQL4I z$>OoPgU8w~tRt^Pxb|R{>Kz8<_BqhIPs&~3{7B~bQZQZW_jZO3uv z{RQa(JV^@mZXGM_0IeMn*gYVi>u9~?as>fuOq&63Mmaz@?vT zEb0zBU9Q8Gwz%VvCMih8+;yf+t=p9G=}*hOqlstTLs(JvTuVzd5*@QZKTIA-td}mY zSs^h8k!YHwxFCRWSbB5={TXZ6fzes8fE(HttK%f8u8v_;s6k+1BnL*#aSS;lJ37Gn-ph*58FcWm z3j<$Bj{^p_X1v1^41QZW?_hNc4P?wv60$U!EaxU=i;%Y8H!lE8o=qYM{l1EuE z%wEj>K#qvZT5e;gn{w;9noE|1-Aa)6PmxP`hk1{kScSa94!l@*nEdY!Fppke&VZA) zyJl&5wS`;qzx^MYYADe`YwN9c(m#{I%%qixm;j2*nMr+yWD=8qFxUN;QI0!=+oZtL zbuxp;Sn%$Z=ivT^z$JgY!2iDw;#ZwNlIv%0oq=a%Y*f_dn`i_HyEy4IMMp?%Qal)E zC#AxYNr}g60x3VL7WVklMylO#ceIK3A8&ze1K(n70M4j616aW`Qr*>LoP14N$YzPb z!pedH)b6nL+DOORgD0)gTB2l&wBFf#kA20F`K6nsLLl{_LSioV;=p9A3N&yjEE>{O z{YF;`*wnlzrU|6mNJs#qBd?%-*nvScp0U7_!Lq_cp%?*_p=1N?q2c9;l73Ze%@GxX z`Dw!luI@0UbqSJA*$52}18#+$b&iGwpmEY81=RviO{Ge6pApI@jDwiMw0lNkmVr9CLF&+9LhMo%sqiZWLO06_&B6M=RhHqg6 zvG}?!2lcN&~&*<1V-G2XO46*N$Z z=u{(3vn(}F28@=e1&$)^XE9NLLV*8dhMn=}ScCsBVxu~Vy1fwdAbj@y?Md(s^Wq>k zcbXHz7}RLGJF{ek%oN1bCntmB1yu9nhw zN*rV0T9o5<;F^aVi8Mn+Nz&aaq}@W*bB8F-=MIOgsgt$|BBbJd2WE98t?R(bE-VYF zm4P$pl9CSglRD!!2sj@iS{ynnsCdn9^n zStH*IO1q$ISA&Lar}q#rhshE#PYnBOhQ@+b0ijxE-BE5q=pV^X4A zksp!b9N20nJKoN~KG2^_&I62W%-jJZSeUnc&g{2kE$hLRHI=oxDSby0v=Nfcw`0kY z2)=~V}&hIl-#8E{cpA3w~Hc`V7)So@5?G&NK7M!}7Cm39G3Nq^A138t-a{`5$!P zF9|O<+#|!0u$<+Hg12dy4BOX2GbUL94`iP)?ZKtI!yIx9tB`k?^Rl|bs>Qm)9!n|t zMZ(SJ_9~mnJ@KDpI0~ek4q?4FPRzU?;CW(@I<@`GdHISVz z=e5lB+*l{lC7q*W0ZyQ3830Q|;wB!(CUQ@@W2#p`Bu+BkSVclB?EHoVEFqx_;*_=m z9ok=4+8tJY#e)r!lyRzQ&@?#MDCD3zF%U?!%6t#uz%)-7xT1`dO5Q7$N&S6A|9&I5 zKoXohf;}Qiyg@`wkD^wo=gk#uu24~BKIhE*au6ptqC3noa#!RIwmXc*>JDS+u_l^H zYDMHsN}%%bYRU}K-qQTsk>WZFB(+JDYrw`1FX-l}Rd40TqPlI1mYN|Jhh@{6w8nXE;w1!81Yk|<7(Dy5wKCjpxal=wipZb- z4*u?~{KbC$c^g>Js0=QQSwc5vwjKk#=jjKE+m#}EhbaXpt45Rs+O!r%4yFx0EXZ5} zqhLDrz@F0jR!!p__N-Vx1M4SX+LPfO7UP~`ybYK#Dm|2UVvS9AGt;SL%SUv4*?Jb+ znD(|1J(%)?Ep`{qs*8*PkLxi7vM0j!WSl%_wPeRA-B?No>BNIGOV3d{uBG2D1$^%F znu1xOYvQIFwD7J5Jz>n+4y2L0u(o8c8x~y>-x%1D$Q_|cp2jH`xrh{nSJ}GHKEhQ6 zP8D9}W$?W?8Qx}&grb2&Zh3R9A!Pl6c-6sVP4y0o-zvbe!v=&jfR-e}dKl1xEZ!6% zEt?ieYjc!ZJKKGPK-9F&dNwx({`gWNW-MANr* zh3wIFFDP}qp);F1yTv6MGM}Mk7QF$ax2~>PuiilA9q~Au=vC(!hGRI6W7eTZunAfT z2o?^Y#liVtjbPnLch)n_hqcjY$U$ojIb^6Po{M@$Oe!Y?N)iWAicA@vauOeb z8Ki$^?qSIBv%V&iD$P*f(boa43-w?z1dFZ%#-!curdX+sV$9tYWf3S$Tkg(fg9LKe znZ%+(p44cD%yRGq7_U3x9_YK?5w`sOZa4RS&JT||J0e@oa_g-T-x6uqncY)K?7?V} z4X`*;>mMzA#7?Xs-eEG|e1cT&ky86{vz+c zBfLkrXDy?(g2zsIc#klb1vSa z@ZJ7UJ+Uaz8ADS;b`!!(oTn8Td(sw6;w@0(fvi9s{I-cMR;+kEPvVFe0Ijfb;u21dUxhaoYG;cPJt2@l*XSyUqOZlUQ-C^br(E?sI;5cmuqe72JHUepL zSz}$&;|*WZy@%KTXhVzYwr>p>1OUPCv4oU(U^J5!_|`$3W5b6q+SqpG1~znU$4wel zO_EBIfUMJ?2A6mm;pW9=$p?Ga$N#YkxV(G+pu>COmHcZ?XuI ziPt4q+5I!_y$iYk1R;H<_jwfSpc{l#%#hiL4dUnlT)Js2<#>M_X9DTVU9)mv2I;c4X!R-t z%P%W)$L+bxCN@>CqnMz$2?3R)VLF`;Nwq8Yc}+Ukm_k>l!#)~}i1M}H-V7%0 z%J&0vvH$Q6hFb8i5Ko4>Rp$plAtVC_IEM_6DXB3!;3iJPW)Vhw({yAD^pEmq&+B=9j?V=AGb!U|GxUTSo#Txbf$K zgw|&SWVFa0H4;EJ1O>bbd57^5y2C8i9ahD-BR1ypBIUyKQf?m0D=EC`z2R;!7s1${ z80I|hpqx03DWzGmWFo-++8M>v6MeKL$v`^~ZQHgYYw|v)i}Veih3DhPb#C~m=Lo=X zHT}o_W1oq){*7J%f5u0_^}NI0=yJ5<=&R~2%(rOe2*`Cu1R6k4uhnY;iEGRpQ%*Uv zWF%x^qyPZ|I=+EAAV{xu@WYeO;Je}rrqk0*&{_lLlXP0E8c>^~Z|y_i0CPrqbzrKw zbDEh*^jhzeG}(_$eXu@Qu0TX8M-ZgLq)>7gAm0bw1j)`fU6mu4y9G*DAWRgu9X(=-h`B>V=k6LNN2O1!8;lwRr4eUiOxHz^zYP6WhMFP4CJ!?a-W8KPW#r8um{(a9zglF^JE^mZJ3u zk@lt2AVGUl*6nkjfI1^FHAq+1s^52DTHr#XjtiPePu3ur@D>ah>tHQ%j^=~t9j2Tr z0TAKlL9J0ZYqvM44&T^`!xapiO6THV*EyAeQ>Mp;6JU0jMW-G&(gAh_lj!>{``P!O z@77!Xt&I9YZH&#Zr8~T>p8+dk%bvR4Z$HI52LBzJ?6_}RKNoKLEu9`L1p0XRtV z-sk}r7egV|)fjuiISjT#upvrp2QzZbIkv*Ji*zHEs6l32*dk{E5DiCnfR$;JR=#6oJgS zMtTl0j5*AScsAyWXz@n&+`?6J{*dw4nlB1F<6gPPz9%~(>6fg;t&p#+as-wIh&Buj zDQjRsi_{A8TD++S5EI~WE%r+dMPmQLsph=l2ma3Rfa!gD5%G*tqV;s<>dZh3uEER( z=7?E(Rx%D5k~9evg9QT%w=*;_i7{+E23fI~*qLjF)iV$CGeiA;gusA{`;0{4t<*U- zhs6T-qqnJg>t@c=VQQU;Oxcr=3M5jdWw#%rqZ>joH@f97p*67pXlfHd%J$|;&P`-@ zv|i{N1T*u+B?-`&LotRtB+zt*{C1q@CV** zdy#J-?0F?4H8C*exf1}#0eDF2A=$aWByOYG-HcHo)vy)Vc9ZMS0+yh=m zXq!7Bo@WN@C!MJL;O)L{U$5D916b88nTMHL|3P23+xlx{C9P!FOPXl|BME0*Z@dEk zInBj$Z@P@tJ4~9?WHL1pX_00$-JJd#AaLM}>gw$3e`&nK{+pbOYgovq#ygA+rtht4vXy+ zpUuUkE3dU3ENtsWIWESylsI{Vi|DIeK*Dirqjz=ih&sL^Pv6lK8UQKtdjy~eu-HQq zp^DdKROCvTUVB8rY^HUdMrv*54uBZ8!NQ!t$G819=cMCW-3YS?H%gMFCKJ8QYoq))AH&-AORjN8=D@(swz0<5g!ced%Q>a30wlq5!lwzSY~NCnYPxW%#Obzmv@Y z&2VA7Zm97+y}>cys(SH6Q{_AyAjA6XJmDNRaq#L;>j-n18zCs{ZVxMpQr=;p{t@xg zI#ina)jSihfN+6I3}w!5->zOd@0Jfde%QzN+b-vmy<<12s9HdP6hRXvq~S!q zeB#l~ryh#Z*E!KNZIl}5byBL!|#TN6HV zZv0yBjr}KfApIQcm7a#(79zy%Fln1oLNa_JY1uY1=j<~nS24IwDp^GkQpiDK0v!_D zTU|iIWWxCLMT^6aBDF^8H0uaB;yiEw!AMR@RZmcR$DT_bf!8=a(lytS#ogR!qfmU$L=t~(psQ$0|c`~@{csd2#;9c zC*f%dHZB8XOD0&O<%*5@n>S6l_vP+n2L|8@`*nxqQCZz#Yz>J_>uL%%LLmXEB{_0y zCD8qeBl7bn)LOC&xxmk;{=)jPsBUih{LEgO86cCE36}kv&;e;19|#@kLE@v~d*Y!u z(gqT!cA8QnW1a|!!%S=s!)(%yatB}6pKNCFlA9{1P4f6ju5A_g_#Xe0M8Dwg7(cp` z`$aWX0y3lxY^Fg57X~QJx!8$bvh}#X_gA#0c%EMaIHhtoe-gB@LMkZ-@=_Z;o zRi=DKlxTIfWE~ut4p`7UEPyQuK_iB^cG@Be2g}^ zsjW&oidRud@9i%6B6=*|KDJGMpgrR_8?k{V8V~4?*R@4ztUN7oIFWB4x$h9+TzPuz zX7?CMuD})~+|UVH01|SLI6FA8NP&o2qSkUpUR2s4{P{f_PZ$*DB&#BOW4pzd(Q-&G zrtp1RpU%;L?6+aAsIYf-Qs0IG88R;cQhn=3!1lPqQf2;D;FfW;hk@AhG;_Y++60K=Pa4I!zrx z;iO2vf_J&2ud|U)#y)+h836d`J}_=QZX zZabZo3Oo#+jtQadR0UiI2GlUD3~D$uNGpd3E;0ZZvgQMs{A)yf<-m&0U(he&nelJ5 z_sx}d16q)M0J5`cgR(+vWv%u3PUwYl8M5+P>zs$TC<3>I61 z0&;j6)UWq#Lb85e z)@1cQ)@-@JNeyf|TyC8_lZUj2@Ek6uQX(2T$3&&p;bG{v)~xKT;oSWj^GFr%cla$@ z;!mCPTb*43G}ChCh=k;vaX?N=;Fq1wtfe!bSM(`sKzvJy}%CUVri!2-CY6Xj5wz-VwR&+KL$^UdY-eC|XDaw<9o@E7a?!T-5%JYzJA_z!`_*!dYW8{!5Sc{As>N zW@1Jyi|uQwtui;Y_(Ho6a`eznj?JiP&U!aqPIAhQNL;IA?Yy&Y>Y=>;2 z9P>CXdAKj82uJTdW{E8xd3q*`w!%;j_Q`$nbQ$l~;|t*5LLZKJO~rs_iB3 z+{WU-VJ1;PIb@W}$B;?iI#J7_qpC_Pt0i7>-@)iyV{3}a_Z?Vl(V`)^l~&X|j24*; zaU2Dj{p~8Pq1;meHK73I0H{=9>9e{)dARLuwxjrh`9YG)@{jCh!@EX0(avr0@^~43 z%Rl6+gwylB^Y|RRGQFvP)Pc5_Zv|UIqOs7>zqaKyG@};II^qq44v|$;X$Z{K1F8h- z{c)sPPtVFeD>oUrSS(5x7x=Gtaj&{mYc03A#KRcIHiNk2w&x6PV4BQh1>gB!$FqCv zw(UM>%?nCq$OcVQNZo5u1kkKKS8NfoyJ@7W5|j*}FzkbfyL=nW+eA;|ygy?4_GNzYC`_}}Tirymjk zFe^D?SQi#2ALHG^0_M)gJK?Y9>off{^$#V#aS^ZcaRb=IqzmE@2i0T42iV=yJTp%G zK!E5V-Z@7&hbtQQfp%NJ2$8G78 zvX9PCU~{kXRk-zVMqGscm#@O9G!2r`P8595pP(KFR|>BJNH#zTEHLv9tKQ+|IPYLJ zBRcP3mQP`i#z#hfewR}zrF?!Ug%6(#e>eZSyfVU6xE1{}y(5HNv?Qi&ry!jyS%<=9 z3_M^+g)1VGra*~L75ZYfV(pr7j74^AB z)*MlZ$K`Nd-7{Q8>xI-DvDFFU3 zm7aRX-*>;cw#Xv?RolLInh_2jmiouQ16X3fuSp0O>=d**5{|G|3M~n%BqedFmBRM0 z&=iE1vxJN$tg_4#7_(vkMSxFxDqZ|WKZ%2^dq;Pn4@p+QG2~?S!ak#ins}mbeNz|N z(^Q{c!*oqsl>W^Op1N3=@G|sFS%!(;lYwcNurl&}J!I=~uihdOptSJ5V{Ws8f<~J) z&0icsGx$m#_`B*x`R0pn-fmZfcUYe)WVB+F2AilY@q(EJu)@SlUG4@Rz91us)U9pP z+p?PU$>^IP5K_z7KsxET&IOz6>PfYl$ zo>dbmO@P$qsal{LBc(Upr_Oh|5(XrsAc1KN2~^mkc!NTsEjx?DQ$D$VMO;+6MFV5t zj$2;kw&F8~V~5$XGqR3v{B?D~hmuMB?Xl<-ydAsy3*gK3p<1WshxL|tW$%S#&v?2m z5Ql_Xkh>9>%%)OXUtN?GtHjDNcMv*1L5_PDN0ThZr%| z!-@p1Q^;KMC~+M1abmD7#Dgc>`GX+?pY^HP;dWNdTs(aR3QQ@fuKqpHuDK?C6KJ z@t%UuC{&cS;4LMZr9K_bZ5b?mhxTGCl|8;p0D<8XmHOWU>XFuNoU zUx-u0V~$ACrlbgyb=?bp6RjsxYhS%0!mHkf{tVw=0W0ymk+ro7m(_;EIt!Is~y_f6(jQcqHrm!943wp=Wg@>Iv4zNJi|HGT_e8r z;tv56s%bG3yylF0J0i`}?vM;-5C+85ybT!EhP6X+J?WaTps5AMLh=C-5_>#jIPBsJ zTywJP3y`i5Ep!b6 zrX4UHDugEhnC=*@b%b@3X0ZnkqIVp{`>TJyhry3^bb9!kPRlNaRn6Si-@LdpOS^iI z!@ZefdudL6xcLTzPw$3yPrUgC*+V6}-ZMAzKvZszGnsWJwKr}(&fHbgGl|tZOuX)3 zPX?e{0vdG`vns3#`G*P4VR^>?$xE&~*zGCv4&xN*4%(ofx=I z%2n5G4GwkcT2q}iG4dRLZb#u9y=N$uT@kVh=Ya*v$RX7^l&|0wxORs{BHgy7Gzw|5 zIxP5m2Zs{ZO|%+_^SMKBCA5`R{Itn7C}Z4(F){(=9Gn`DT*YZ96}h&4(9T?B{@*x! zUO)W**nezy@uU71Tu!^f-SZB-ExjI|9>2zqr*q@)>Narmgc)%Lrz^9?<5TT{1FA*0 zx5R|w_&wzrz7Te4sL6E)+wWb_y@_i?0G%PgsFp-WevlE}BQq+lJEHU)av?2iI3d4H z)WVn@7-(v~8WxpqWgv{d=`fmS0A8kk+K74j*@_qeh0kcI4N9q;} zBA1bc>seUW-9R!IZdT;xP>|ZZ)eOn-*an>W#xhKpZ0|nsxF7oqY2?IA=YwTE$hlFX zJxeUu4{g6_%Rs?)1ZH#*nG2SoAuAaABiKHCVrue@{D$@&UhkNh)6#zY7~jn?^M2SLzQ za*o=s=7<7@iwJzrfWDVw*j@Mt*hP)!7MMVJa}2-Bx83}y@TVF$2o47Z)8_^B;N9sC z3tozG-C@5Kop-RqU^E+1W8Go7D$GQNGx{%soO8j8^!R|BZ(b3P;dgM`*^@*6-~*(` z%7~0vB1NkN@CX}Zz#vFD<@`m=E4k!FreI84kpefOb(ufpO%93Jq3I#O3;rng!i)1> zGalG@KneT}&K<^V75>P8Z`U)y-6Mg}>Uk9Q9!WC*-3JmjFu7DAU zpJ@kGB&S~8{W;5RWxhgMb`eqHQt}l?Q3EDO)b23XSLcYod1qi{n?)D4xbCn#KC3&d zJdBWTGc2LOB^w$!(lIM3zeQpup?kNQ>{RLqJUT_y=5w8+{j};A*{yk|RWm5@On74` z@|y8dD@TA(GE${MV;&#z>NSU^Y6Md+Wg3r%LW$RAYIlM9W7#iw1wOO(I9Bhl z5uj~HNUAP{qq;=SVZ%m1v)MZI!~*BAu3dMqXEtH|e(O(}cUad5tBDyMH}E|*8?tr0Y( z-*eM%v-Y5s$9;C6JH)Air%I$nE7HCwYO1x>O8d{YOfD@RtAh-vz}6_DM;mf@ZD1W> zlq3GcKsFC4F5Aj^W&r$@hA}Mgi(c8;;WYa6J&IlpADC`k>}T_CVK`p6{qUZPy!`m^ zo(p`s(l&C>qYf+$3CAVfAYsWwyoDXJ(mE>xEZu7f!O8LnARw5KHjZHy1Ic@w#R?SC zO&N>28-ajYV_RQ!t@pW@bYZ>cUdR48n-Dv4o#{QdEbjXbtR>xxVd;;zllGHz@>Rb_ z9##4Cg+)!4ne~7z09w>6GGq}i{NABLqP_L%*SoR5p|^f4@O|Cb#R<#~qs8G&^`FkQ zlVA+(ptd9Hdb2(ss^*L;w?P|?Di*CK^PZ~8fl#vhIt1YX7G=v9Jk$af$ImUoD-CbA zmQ$Qk!vDqTt+B8VJlWH_CZ)s+%oz(da%!4J${=*h=0b9 z@`mx2M?qVQ!(sqXThhLLZtB9Jp4Va=;B04M!+>6MM6<+hqgOdBiQDB~2FhwOm1Hx@ z-i3jZEkI4S;NBa1H#>Gtb;F-Pmd6Y~#Qy)TNm3((HVHaL^h!^P&`;ry%TcModK}#!IMD@>JlkZzn}_p4 z7}w+67$qN!qEqGN6cp0)D3o%+=?Sm&L;+cnwZLkdA9z~2_jEr#HTl9l&nLT^q zk@Ob^x8P$C_I;M)=w^w;R3xi649J0$y^~=*?jtcsa=R@Uvt)U`LFyd$up!a%!`n(fki{G1OOjW>I!o}Pq)zX!5gVjP38S-)EG8uv zh(erF5imm2NP;zmdpTz)SJvgbAs)4`d0ba_7}HQ-%L27t@G@=)468nkc1y~dAT;pn zr#rDzYLWlUQJq(^zHh$5080VXC)4p^Fv`OWvZY$Gn>u#vj9AT#wqqvZ%qXGMN>vW( z)4-!GWiYtjMZ0YGO1D?xVCJTWyVHv@e>Cw_G2G)Yjb4zv!km-#O9OilWI!PKoEvDY zE!nY)>^DfxxMhEmy8^#bN;mkNNzGmpuXotMAck&IB0k;=1q#Y`BrWCR_;OUQJeX{I zKULmgUL@YI#md9X)M)cETaYqEz5iRk&hOA&r zcuI^R#yO23oJomhAloW?D(IevMkMT(yyxHRFX$}*c!$FoUJ_p%-(_&=?WPNgkA;u+ ze{#)qMiI4q!^lA*!g28P@XQsj1?$O&`qwN-IKEo25W1)sXx`77bpzwBI~amdJ;2of zY?h3{7$evFm8AK(cQU3-77Ijq+Gd%`j<}d~Z~Mrh9D{}ZVfGY`4mr?x!~@`6jo_xg z$CsE-(%3)a$Ga?k`?rK2`utgVz|vz&D+@vk4UvGN5Y}_lJ~*3$>}-I!dCy3@av7Y_ zW+Fz^J~qbw(pN}{A`z>@)}F)IHcqA8VMtALvY}@wO7P4cjJ{xdaHwMjtD@HSfJDT< z5&42J_d3HFjw6567YO3d)rSx9%)ve|9)sK8tBf461XMbzQa>6-qc^}pKuG;y->7bW zaAv_cl=q#+iyxma(&l31SUWi&90ko#Kx$x}$HeJSpFw$tji^DY)xs zLhcnFv?W1>ik+j3ZUF>R;k1`~9bcGs!sCv8_YM4!-Zj@ivb0cOhCN7l9vMzKBOsHC z>%BfEC<*kzx2Rx(YXqRKc5vMxez-_?*aoM69J%fg0Ul_jX1%HQXa~z?7TlwON8EBQ zY>zL9CBI0_<#}*;K>lLuZfB%E z)l7}gsx?NdJIoK$0zk4^Qo>CvY(fAF)yx`1&OKrR2>a5T`YT-DDzLb29yj8Osg;*v ziSBvvfLDPBc*%HOY#K;jLkNJO6^{4BdQH?s(N&2Var-z&}91U!Lsx`Wy{2C=bk3;D6aI5-zw9(<-WN@nPbI z7VQoBw&ohG1JKrOz40F(VKwM=2Ww-56|hf}^4`Nn4Zbo!Gqyv_^KSI!^sTN7?=V2> z4pYj<3eeLbbX=`T`)}g`)PgMTk}f)B}?{VpL;3|=VOl9fp*tK` zJCw84lBB03aS;RTDQPk*3y9?rryea7yz zTg1)iar_=Hq<`q|YU?h06eOvCvXB<>dWSX8 zS>FL2;&K@Wy9zk12jHdwA%*J25{)k2eISe9QYQHYU=iuo4PRscv=7?;j>CSxKg{7| zBt5_C+~#(?5gVC=obUJ(!b^kY8-s#XfK8{*H&0aL{6;4gzIGP*_% zNHHN#G7ff`=F!KkH;nWJ7$F|W9Vx-Bpo5^}fB|7g4rtquCz9!iO2ffeZl~oo9-T;B zuL%o%OACsOeLcdy4zRj~m42*aP{o$?RfexitABBVzyDl%PdN$5GSg6=<28p^SJcb2)G|W0!;kp9%4iFPO zzrXtX4vdOEcHPm3HKKRgP4((f$0?wn^;`xX`ul3oN#%Zko>Pb;S-XSnQ?s8SY2K$V z@b3IhpkJnsZddgAC*bNbMDS2ze{zX?tQ0Oe)*=9;F5w6ZAL5Lb&2cklx&>mQtSh!+ z4Co32^94r!@b4OT#idT`AGxc`4;UyYPVD$uAyi^6L(GO}H#%<{H{nZ*n>W>z<4eSANS~?C%3;5QL9$;@^z&L^n*0?6= zxv?dzCq>H0`;sKMSDm9VUWcu%M`4L_(4sU3kQ%(1e3(-S)45I-5a_HQVj(X~&!08$ zntBC?1obwxZo|todBD6=tl6ZmKt}>Z2U)=GFjUm$)6^zHG!k{$jGmtaO7Zyy#22SA z>Tz1#Vb#z=%rq2~q*pP*Rv^obFhtOZJ?8opR0T*3zP02&rRyyNi|igumfR_*vG2tN zfFq*imB34c3`tl(99(0bsU$-)(zQ@7aYm}EL+mRNpq7zmObh&r_If>gUR?*R0c~cb zmYpD;#Y z6zqD~Cb%g}4*N5}%8}zXDW=NF3{eFYXje;tOl=R7ihB;GGiRuqXhp{ZgVlLzQK5q_ z;VrBYvgZz_OW)DrjtWcwa>PNkEvC+QP+eQ94^#MP&xM=eFMikQ3-YSzim(&!fd6RV zo#HEn&;1LDyAI)!h2Pc9p{{41FnjKCd^U&Uf1@FUdCA-KplpGgNBMS7=27oE;aF@0 zj3V})c`! z-EL#8w5gqgmfJx%Xqcg>$ib_gM6vh0TP^+Z<`5jZ!}}W){qZj2w6Gvfq3_}0p@Hvy z7VD}1_COZV9#F{O0Th<0V82kpGNMt{kC#$ zGOvj+7dT0hbWD>2(!{x$r8~r+?3fD{q`^ot>cAtb0pW9fuJDZjJ`LWy0h&A&kA(_$`nA z|NF!IFqB6^@lhWguc`yG^FSQZ)IHD5Ib?d5=lgsedcuSH0OK9jz>0_E0#^ZDgIJV} ziJ#z+CEz#!@D$J^()^)fI4^HLPX1l)h`D&$Z}*%RjJuj#yIV-YWo#st8dIgPFl{Rf-}x6~D~}JiTDy zpG$NEoN@!4RA129{XtKLKjJ&GplfW(279BGVU*cMYUkW=15z3wI0U4WfRXu&$ScUa zA4n@wr>TgGiV*O@lWMb^6J3!25^_PcpKAn{p+*Mp4GAFLW!oz5Mqi@~zyKi?e595UH9ewa z*&+&PDZ#W(do}|k>D&i|1c0odOGR>&Baog2PDo6y#-#I;@P!+J5F9A~irCcccsHfI ziw{(qco~Vgfr$jbz`%4`8d&TSZF}L0pLkbDkd(;xlBOg~khTH#h|bUIFaV&uAfl?v zp|a2Wn%gL@?l71kF$;}&($WGuDkE}6npSN}NCttCxX!``TSRYY?F0DmSzXvu0gLL4 zR5)CKW|pW{CO`^6(2ONg5>$5O;euhR^hE9-N=PU$4MFG2nN1 z!2sZCcxHU_o$#5K<6F<1&F^_A*sbH0iwP?zL;Lpjfj+==JSa)>SsR(ZK1;$YU<)g) zqkL-&;kttb6w4!0rRGe}1ux8v?sZ3mxLQNG9nLHX9Ickc95Hvx2FVD+8)+t;uGxX**qy zjo;Bq>1sjB7Y3`7cv&oB@d-!{mnyU-c%oZ?*WJj6y%X0jVOqX_eJ(FYzX-flFKl`t z*3F)ZJZ#}4&IsqQJ#lZ$md!e|#dV0W2yHbvR_#0~aoQNqc1`a)uwV{kH1hQNq-C%V zE$Lue!a>ur&uJ0L!=|L?G^JG5q-DBKU%X%rrzcI13bt;O{f!}%p{(2Ws139)-jH!T zfwW}xX$6`s2L;4h6KMx2U>pg9VW7C$hHb2DK=TIqyui_vQz~)f^=CY5DbtRy3l%L2 zoV=oikzNZVCl_TJayM$a8U-2mN(yQR>w|TZo3Y7~o46iDNkw#k)HGM#9MA#TyQ!2q z4Jjt9+!h7S!(aa0r++<@5?Pr7zg0QEC`O-39xbU16tG7o+8G0UTq0^)p0v6Xu zftS7v1TL>+$pVQq`KH!5M-<2FsyW_NBC#Q5Ik%{V!S#l0=>LEGvjQFNU!fW6M!q>)5)x^17AIBY+*~QK6f|> z9;12K7$9TXSt}arcUfy4xrlO+oKt|3R!i8^-8^%X1jECoM0enDK77pltNXVcx;cEe zKlf+Rh537!|6~AenSMQw4lf4(oXw~3Js`a|_8ey^piVspjx*Ctp8k#IO8f9k?E!@2 zX+C+V(6UZVQ6Dr-@`Aab3%CKSxqwDX;)cPlJD5`g=;{F#ZXpmyW;%+IA^lobo@V4G zL%c+Z>?O8m#oyne(VzJgS>Rq5q3_93B=93kzo< z)FIlq36wrVRtRGVyaz09DlBTxbW6<1X~)VH93&NuWQ@o*1Y&|jUjfbxlBDq{=C8U6>3RPGNPcp_U#FVhz+Df=!ZoJBO%l zg5Ki;9V!w=JV9T0stbwdmhcYCR*ARFJ%9m}*q#;@n1F$E*yTOBGgi7&gLkOsU$*QY z2ZviygYN+{gj7H6fs%(6!NcH+M}Yc(n%LJZTGzv4KtRnb?OlEDaE#auD$^hrNB#gP zHW*GE%yOO0U}hwv3Ax;GDuw0q1IptAbI!<*fxjqUw6Fiioixl2AlXnu<2e$-Llnfv z*?a&gDKaDJ55bsRjcAGKZF=#=`sHtq@2VnaNkORL33) z41Ei(C?6aI8Y%Hc(KMoDv|xvYOIH;DjKD}$-N?<^3JFWm1I5h9IX*^ z1vOHdW9*Q*v9({-qPuw}jVElx74e2vyom$s6~5f+QOL%>%brN(3`iv;O4Hq4(JRkP zuREBc)f}6-;84|g1}MG46T1Hm?iKQr{S*%duSI=5c=&JwI$D)zNpN9-g3qQKI} z-G^J^`?^!Q9Dnz>%Km^3!PlFcy^bZPUUJ$p|7E+|V!Kt0u?r;M)4%~52|WJhphLE2 z!pfFaZ}s6cHs&0%V+uA`0I6wgTV;hU#AqcI6l>g+@BEcKUb)z2;hV8Gr@J>c{?FCm z9p?33I&b?;h4L_L;%Is-p5lJ$+{>-~f;(8gJBSimi>`%?vXyNLZg~1$iyeg7!tLyB zBZ0leu`6C%;*&8*;E>`NQg?JR`bOcU7cV586Q=haEY}$&4yfZFs)?q6Q)fm6H59ne z_ce&u9Skgk7%Mqg@_K|eZW)9Snjy=|I(3G6CqetAM11HJ&f2T&3kXcs_#Lm3hnUPtNj z)Vk5JJ#6+=vJEB-bjGB~Oc8|U>n&Od#I6gKLRcEZ+<=)QR`WPHN@{&)4z&Tb3vp<_rg=M`ZH%@R7%Lq(7`jG8-S` zw*~#MIsSAHB9AyMfmeK`C2S*3gM1W9`c%DC$nun5om0V@SrfT)BU|#MFS-0cr_X#O zG3Gabl=q_eu|tN(r0bItTvZ2>3;SmS=zNXE5Np>3hpr}Pof6A=hs_2CKlRk-j4I{2f~OjFwu@)x>Hm(95Ufp5q{| z9jM@8;mB2|_dRh>dc`<`50GPQJA2=OeL4ER1N$u+Dh?F6!NJ=b;HnUP&{S~}$+5!L zb4n&0BuCSf8eW{*7wPMN)hEGQ`7?O4<3K>WC)2*BJh0;c?5IVM2Rwi^CshDxA=d&& z0uqAZ5SKW3pxS#0BU?ts25+#|W$Tw_!^R4117?b`!2e?Zj6A#KbT~I6Wi&Ee0rAi^C zx=E(nR95icepfmzfK~c^^*9-8fwjESN^Y2R8f+O}{0$B5D=bDzSqyMpx>ob;Dk&;HcQ{pv_1=)7SD9 z5~$2^iLTLfz_irNN{-?hG%mYl2rmvpKP34_so?ogI?HtjYtpEaCTc0R5I++3WCoi# z$ma&f!*2IRjv3Mc{`@cA1rvX$e*xpUvF4V*w614iynT8OewZKODPbO6mpK!U9zF~J zJ4*PpBD}b{gu2BCc|-g0H?w2ed*UK-?}9r(zg2Ja32iMF+uy$sOql{blN6>j&H$;& zObXhaq31yXxXwAO&bYStVdSSa$2;uSNj_=bVU8kohj|vx+@O8j!)+$y{?w`B9@M^S z+Sb!pgL7Zc7-fA6@eOw|;pe$a1_Tzwu>u~6y=dbkLe$N-#BNC?3!@$tS>Gx?P;xO{Von{?#la+=jjUd?_B!Z&aql}Y z1CTl)D;Sx1KXYWT&Jw`Rbw{L`QNgYu${J3}>;tqciYd!^#c#-BJ#fCaYm8pFD=P#> z(rn8y>vrrtwpQo*%z9w@yWN96+IXewF7@Ol{X>6jCl2>NR`2g<_U(-JW>bvjUZ_Bf zYfs_H5~T?b-CGcuH|!MFb@wJ)JH9Zy&7bHBcpJbzx;-; zCnpB0*au|h(U?zA^Y7v_)34Ge{*660PQi=mPwVLd6lgmYg%ZeMOVzUGqmi|MEvU6Z zNE_+M?>g?KtjQQGJ`NR*i!T#D1$jfdX^|2|Wak~6A7mFneo|;jortd;=N*PoB2BPh zo7C65gNcIn$5rA&)$;p}KEj!Khl%a^NlkSNJYOrGSm8fTmK$fMvObqr!%yv7_51?O zAR#j3Owv|%?{O@QUaMUmEjfmlEGccpjKE>vRzR?ZQu%w`!TS!(710I&PK(Me^@i^% z;f{?pn*|TWqbV$(g5rE|Ng8Rhte2_O6fI2m4rblnt6o}_ry zLO{oRkmL}y_{@Rq6J<-f?Tmj<;pe-Of~~Yt4kr^ga2O<%Fjf@m zNF(S9X@qcocMY&%z&;UD%^EF|{@qC-1284EO+x$Yk7y)gU9xw7{Vfu4iVdk-hzAIt z2pokGnB))6mF7@*h0_d&-Z|h6U{yc$h6Pg5n#4@ny%{reSsowVqo{$vWL(upTGZc+ zyyiG~?8QcIb%)`NQa5M7Os!dMwSzJ@>v`S5?$(yzEp{*WoUe;-_jL_eWVe>GE<3n) zUL(fZwsGGfdW??%l_Hmn6e_JI%t%mHp0GlY&~*27WJ@^O$xuZJLxt?YYdsk$3daYR zZ5sb)U@hrc@ANL&hv{C=a-h2Pa1%IjxIT6r{YX&$UQEMHO2|s64>g!XdU{TxIsl*nyOT;DrMUYD5Ze7&mJi~`7k3M5C!^< z-+MOT5w>}IhwBdZEblwS-#W?h#CeCUBUl=7-ElDRHOee!vBsulPb_I+Z*TF9eCK$v zuf1($8+eHRzdHzb-hMEJ<5d037ZB#}CRlAi(rsY70(1#v(crJdNA8b`srfNgV7l;f>BH-p zBeAVw4*$;Y^X$SS#UJ|3;dgZvJ_WvUj|`6u@8f0(_&0w~?LvNHe2-rxe5ALC*A6=} zPJw$qE^_LA=*c`||LkEtNwJu)yM_PYaS(PmUa~97grJOE7_bzRi)ZvtmozSY0f`oG zjg_^e?a@O^xOPCG8sRc%Pv20wj8e`-!nz81g^;S&nL|KyZ4a}zv}K02*U%GiXIdP( zuR~|7Ku-031V;`jFxc43WR!Kg5v46HYInyk@98_|%E4#ygWDLe0G9{M#oMI=>0FqW zY)Q+R*|Lhv(Max=$z5e7d*bLVsqdX~%BhD%9y7*G1!yU=C^FO@FL&AHoXPa=oh z)^BXc!EZ?a=e({siZ5A`(wGRq^z=^wrZ{+BA=jZ#PbSe4w zo{YdWJQ7ZepT*A4`c~{=$tHSIoId-k*dJg=Roayvi1s!nN3D9PT_u-QWSzX_yYeVs zWsrdiOmcbVWPOM|T0>h;8{Yj8;rQYE$Vy1v= zDqbQXa4?lPqkz~lzD4SXcUVn%W9=cS-@A3@F_!4OP@jqYEiX>DqNTj=L5F}Lyi~}r ziSQ0vfZ@!};xlr7J2{o93>>l@W_6!UeV1w|G z+9W-_?_dXO{&Q4q)U6^_G!6v3yI}a`J0=^=>BGw-5an*{K#+^ z35Nka?AD8JF;|G(jd)*`#@F+mKeNwk7ha%BjFL z?JW1KuQQjwsonC6?b`K}URnWwVBv)&7_I1-go6VbX-M1n>{#G1%xom1JEa3ds(XpW zVN&2tC8?p`lUuMb)*M}+>(LF}WCPeKvzLxJ=7IS)dHXCnb>f@y7ym(B23~~Y+2NU^ zYl2yL3-Q7b`1^fdumPPsxEg+L?}m8v9!kBt62{AKR1t5Z2G6w&;4zj#k{CvyZ;;XE z8EeO`mvPqhCd=L0N=#qsh&?V-llGDU6h3i$OOvHpmI4{c5p`ft)caB8RgPh+3(9LL zN@IF^`nEGg5eH1r0;E;K;E|^K<+lEf*jO2BD;(Y6wuuYFZa53S|4%)>JG?gh z>+cG`f}QaR8Nf$+IRLi`7x5qCo(aJAEh2UtC)l1K6P{%y%uHK}9O!SV&y2GaQ^5R^ z*>fLe7Pfk)>Azj6Fa@z8O)PG^uPdHgGp4+YKW*1=N$>4zeI4mc#XE2NupUZx9Aw~u5Ah*xM~v{`0r03@ zBf5J2hZ4{Fdne|7Fn+~$E%p|0*YH;F6_>$F-xeolg?q-I?yU6mQlEtT zF{e7^v@Og?P4=VLMw*k&!QA@Mx3$204M&9pa+k?8?|saGib6wXpOakzpAN7*#YXzi z+cuxz1ApvW;$h^r=^Mts89tYlNniYz{SN@Vc!M<4W5dJ`{SbOs(gs3_{s35HGyyLw zVH^O+B(cg-JG!eU^v0GzBSlDC=3lWN`w3$Hvph-t5*(@@7*s)b)>0L4vTC?bBnZ5NpI7up&CrLJSF5zJ? z*l}d2t^9g^iodM4{Aia@r=gw(@ER+QdmQw>gEgRgfj)PLR6xWNbsQ|?SJKz$v*i-iV4s&u_BipkiRo4{p#~mhJ5zZ`^CFRUmIqyF1u%q%~+OKcC(;M74 zq6tQ8S#xbkWm3r!aF@EY)P{tDhg3~T3%*)A2+3)$|BAlp?|r!VzeD$|jm?}aE4-4x zD=iHRLo0MGM1Yr?Ya>`er@6o%&`z_?4UZtI<|8XP-qS&ZJ-?h^ZCrOSDH$RAc7lln zjJ?M=ddyG25B9F~YoPyl2AopOO=Fn;lz&2t!XPi5DG82X~l{MXi#`$5Z`yqO4HPHf*ll^6b~qk@}A?^60bYhMvD86 z<4W)jJ0Rl4{2+>(vj#tE6}uOcPpDWDE#I@_>v-%D=LJiKc--V&*Z3HA~ALo{V1VmOIjuewpmU z-l>m+s*|UYe#(ZP`iyYa=~)L!T*W}hUIPU>EVQ800m>OTWuThT0GY`&gpWIiJ2-x! zg-cr6*6@|TTKbiL0bRS{qRYQ43zwGepeu?1p78$`fnA@>;*$S0bGL8b|Dr$g?9IM% z@X8NcxBQyXJAU(CaWwYa`i!=LJlnU;ky<7rR~apECLsrOBP3&ftxGSd$Ow z8j^|!z4750U%&Xt0q*7&-?pkfZre)kXe)_F;)4->0xU0McP4coT_p?#sbSP63RXO|;@E+W2V0=U@v zC$vHJJ7U&Vc&OW}6o4t*P1Of^_YG~VdX%m^Ztp$2@Y&yW`_@)EW@gcG2-$*lB(x9~jHI?m<6MC3 zK3F|QsU>I!A@xY9z$0KR*m6>+*ddd^+Jx?^>*HOKyxVOK)A`q{9$xG1I(Vm!PZRhO z_?7n$JffT5+Hcc_N|?e2{1-lgzIK9L>lKe`;IO(5t{nl;VIZY31}18awl{fm@URnE zpYn8rvM#htY83M!aV>_C(q*Aq#^#j~yCZvc?m4gVYfXF>rvV?ch5s z26VK~xbH&5PFiauqt@=?JyfMFv>BN7+!@9sK&oLVO#zCG`MDszLGlt3rXisSCApr} z=;51~)gp@Xey;H@fB&&%?3oKSFVsqiWH0zpC6L$xBMl>jt)|oJs<<$A)3~>5AQlyu zE?n2c#|{zOBzBwOOY08%xB@QQe(yUJy(u~pI~Iz3C$Lwvbxr$Ke-romn|iOG8a^ex zuPG%@mY>oBYs|GVX{&ftMRv{n)#aageU)g;;lD#&&tT}pTBc4$3Pu_bTn$*3we+e0 zk1?vANl*5=Dyu|Vv|>clIxIkEBtzm3WLsLKrbshZM?YrEQsCtZoI2S?>h)S!>w}uP z(ZoP%av2s?(8!2Jo4?uje|^dP)&Z0q%{c=JV}+)wrE8=Pq2DNQ?S!=h#RF`>h`|^G z=3*~fv!tRa8mxb-W8}&jHV@IBAC0r!66UF;^orQ;Cwt|$VS`X6BIr>9L(voc%h4_MShmIIw!3kgk8y`-Bu!vm??~B#8!apC62V19*C8tOx+4beY>PV!^xx$4 zT1aPa^tt1hLMlym-(27oL~f)y-l&l3u!0PYAQ6ige4`t$7smQkJ&@`S1Fl4Xxx-?v z`QDHb_s<g)_y3>m?Z+Q zcduHkf|i__S>1ql%3E+si#N(oqA1qAesa9S@R`*)aL=MuDxua*jiM#!Mduw1u7pn5 ze_F9mE971tmZai{4GZj_`ugDf>Z<=xxxGKX^cy=qnQiHAnnSv$t8<9H#I--%6F-S1 zPStaJ`H%lcSElJ zxcN?g`m6W)uA>k6&v$O~bz^V$Cttk7H|@N`H|;w8GlhyId_|FaZP8m7MYA3`sgp6Z zEL&a17DHP2F@!aZ5b(qkOk3Tj^N%o@SUl+U4>$d$h&C7wC`<6QC^b;>xOWT>pboC~ zD3zKsB7^H<#HMoQlO#Xyxg{$gQ71G~hThn6#)RKRc!*fiJ?XXbb)whrj`Mxdv5E*x z%J+ljVvp1l!9_1WWryPNjiDKX!ns?#!0P+HLwio$)Fo}KuOeW*m`Fz3{<7aTV18lBr7N;D;%FAc6d@W*tg+|LhND|h*=Yi( zFq`_YAHJUtiT0{Nj_kAji0B6-OKo=g0J^RH%A|d#cFhraUg!T>Z^j$v*Uz-Pa-?l3*-qssLa3BhlL0{0H& zPRcaP@`{`Zd+7Ut-{W^X?(-w?LWs{=9>ozfvll#iZUYD7_4C*FKe_scO=V8fat}jy z)G?ROqNa&E42cE`I)MUR6tMfGsZ38sm}LQEA7F2VeLS*ZpTUxsp4TMvwq|A}KI7mG z5*lkXt+M&HkQ-M?v6WaArwv$QLrM?IAJz-Zcbb<5omICa1bBMPO!xwyBBFMBqd2Wo zHwe6-ZJe3wrXyg7$MLZ7F~d0aaL)IRk5TP^UFobCg7c38PLX`_N64NH$f0gIHH>LPR&<&mq*0`V1_%-GzJdpK zE%z4hN{?_X|qHmS!x%G0YmOVig8`;^ut(>_%uPF{98J0v<* zLV8K67NvJEaHM^}UZLe|@1!92)N?@2!nf0JOf7I%&u-;A?tFQxff&qTf>lsTXh-H0 z+Gx@?;2bdcNW{Y$;AL=zgFD1D*KBtC;K^;E~Gh#l_n$vk}U z6EDl~z%uPS5KFw=hKc7X-KW4<;WHlQ6tC1n?~L4}6okPo=1 z3O_DG2FMrb(>Lq~E83(>Xr6}s%dBlnI9+lJ#fMg(D=cu?{?7S)=fnQ%)IGmr|BL1*DkWNaSUy$!*AW-xgMr>8Bq(SO0vw zY{mL*N%*#vJ0$2a=*e-ZFg^}oH}BbVhX_(C6j_gr5`DO%d4+~dVvL`-{FVbdC1arKpK*N^E9DjVz{^@^pV`ci2QNm|nKb2~z%OhTyhT>zRC5eSg;Q#5N&iXA2BJ5j!9wCmYg8Z zvYXZl2&F9=5!TbS#}MmKH~^(_Ftx)}L27N+)GMpEsr5$YL)a|s5A*6R;BX2=i=1Lp zJwkH)1=tGCyXjek30_*~JRe5L_CA1&1#N4Und3y~^EfK0S6WZ9S^6U^MIrGx8%WNN zUrKy|Ah^%k911l09VMhq*9oD z?jVx%rjUoN?SP(%Ya~)QyDhu-J3@(NSQFg0MypdHG;d}jc1kxxLq;3R$cbKGriLD< zllS>sN6!0OjXsxM9`FE`j;K+I-yP}i9cHzyYb`0iRN|!~akWCk*pgn~<1y*KYf8bL z1ELc7`%9E9y5#G}HR!Z*D15JC1|MOxW;AvtAZ*{)6(aw;>ZgIfc!a$?FJt%j`V(v5 zJT2=2Eq7E=e$!G{hfWpP0?EWw&Iy{HaYJ`o-@zh)@(#wjt4Dgt00hgjmZY6X%JPZj z&a%Zf!%o-0Kx%$S1-u!KaSxz3KoAVl>gvpC@*EJKiG>SotkGsYuGf}F`m|`2Zg@mdZXB(P6f0Lt*h7&3W%B60Pv`rG%t zm_cE)LXZVQhKw<+X5kes*wk;6qo6x|<2|i$V+fLOjiT2%uoI23n?weaAOjLaCa8%Sb?vdSLMd30lDc?MAJd52(7s zd~|vQm^)0&*O$#577u|tjHGJMlrBn;EBpQX4s%J_LFBYTi|cIpS~RahT4~UF0pWZ4 z(;z~xd&`%-dp9f!EV^5tx;Dbh0amS=Ic%v1Sa6TdNWczghK+07J2)9gNp^P*?i@0M ziB>wP0Hnx_sZ*(l=9?&Regs5@^BiCP{`dROm-(|@v*2#I1H*0RLeKYm?5Wk9sp0eW ziGH|~1s>OsEiNi5ADHY@%QJ+O$_qTY9Pz*tV|r=PEhVxRw#<h+P3r(TZvb3k9q3CVJ(<7O;&yPLtVHcxugsHss7Q zcU5^<8y6`&wykr%&~f)~-;Z|ZC&CTZqD3o!)Bg{eb!Fz*AMG{kbC6FQ$nt6aj7NGd2L&fY}BU zo5AZ`XQN^}4lCLVtr$V-+g=J$y$jI)#=p>IGBXR$T!`JeN)K!1wnnG$vE!7;XAy6; z)lZ5I5-1=i}zbk6w?8^#Emf8Nq5uDPaWt^rjqX5vnUv zuat7niMc1so4OhO_NuN4LPFEB@aSs~KTGofAAF+c4QBX{rN|NAk9k8R{g{flZoyk7L@impQVov#%W)fR4oM3d{f8p%*5^h0Sr2=~&^QSo}>^ zePPAPl_BS4;63w!=NIOdx##)BlIas!NR)+p4bf~Y3qAww%ETa%2i98z_8DoL(XTd&*twRK|4O0HdESegY+^mseN+aYA z(V$Iyzi3wZ$lB`KDz|IGSX1IF%F0k|tL7X))R*BRcn5rcev|8$PE-EV3E&(LosM8i zo%0-P9D}cPo7T5esvkNQsVCE9Id$V0L5>-D%(Cg2EzZS^YzEjdZJjZIcWi?540u~) z0A~y{>fw`zk-zNcdMy1TA&1FH=#yZI76GAcTeRVZ!rdTsI^=5(3Jo(yQgfaQ{H-#r z(-tAg&`5L=+ecy?FpdC7Z8#q$I3uAMoBV!rfj7wS_h17Y1bz0Tq)DO;1DPdph1+l$ z(BwIi^0v5H2^?LID>9eBhR`X4Bqr=87Z6uds@USu?T5gcO0#%pX7Mtiu0b z?960bGZsmy8Hsx7gOctr)vNksJ59nJ_VoR}!%R}u)>YNk70Zl6?l2&Kb#gjl_i=|E zf#ZzrcEigk5G^oTvzG4(yh6$p0;3`@DH#Qf zrFKj$P>uK!AHb94ID(Qv$F)$hg+^mC`sFdi*Xf>aSp~~g!xFNGPQA#1jHJyq4UB3D|ly9?^snC;=~+t$u!c3z$H&2+Atk zj_HA=B7fcUr{r2!z|NXgAxaaqrxaW5t?M4dMWURz7I9GK% zz)u08_>}0W<+ri>i{`eK&M7-zd=0DBbbIAp@gBOKQu?%|H!r_)EPbQL zOeDTC7fPRzV-WEot8wo6Nm{4n^4$lE z5)K@f_;7elcx;}5>-OvH=BcumwP_h_HI9P>9C*VVd$U7Q;4ZUq<*`5~Gf^}{16wBP zHJpXES*JXspfbPS8A57V*pk33O`_avw=zRz4W>Oi>iQQp3$>j=WCwOQP^Ozp^C=P3J1%SUR5NTWFF$E7V_@n!9e=SKOf85feDNWY!s4cDe>lq!`BYm)?;xE z@9e1Bp0A5v!T2u`OUD_VD{+q=zoR3IwLDwT9a?ATDo~ULm~0s(I5c6xK^MWPtgzP- zD=g`S=J!^P%SvJgT2_T>AVX5j7p7;>c;ngN_2w}{f!Fqn=PQ9(@Kx<-iH!}$!)uLKUN`Oq? z@HgFh_^+DpCjmND=7{qk4&Yc(C zoxVuQ7uK!J=MFsw-USB~9cx%BZQzfh-#`*!#U9X44Qb$?J^}i_>t53eZB}$o6_YWC z$))b)zH@DI;PEC|jT1h@XEyY7`VW@~)*|z;5+1JB7F07cV;P0)IZbz#ug2h|m62cZN=e9sF<+_UPLG+LlHesu z3*W9YE9=fD4((_>EnhL#sb}z%1&mc%{|HZe#kIb`nbc{M^Wq1XzM|XT15A20q|F2_ z_ZTmuSlp8)aJDsLfz;!~YRjp%DC2>;frjm5nlr^EONnFDgfR;w9;AFJ9JnJ!*N6Aj zm9PrQcZjqC0YcI}t*X&OqUEmo{V0e(=B2I2`_0lwWR)CkeEG&R@q&fO=Fg?InVo0@|1W=-sQEb4zCi^*dPkX+r^h7MJWx)Y6 z{Uqn`TO|xPo3ttWnKk`Mzm$)=;q@foE)p8q);LHrpx8oDAIz$5@!SFO4pd$Mp_nM@ z2^1A^8JZ&#!Yg`72^8fC4jygyR{i)Z8JM-Q-6=wdCcF|{Y#-ASVFrH5`P6$(rn)T?sgGmm!l766`4E0HY z^-~h}JCe-#XkOwx@4xcv?N!2UzG2q`fBc0k0NgN=_dtTIp!AjK^c)MNFH8)}M8M{Y zAS=+25}DyP0u^m{^ACxybm9>jt9Q~1`cI`r*U*+GT+S(t2^}+^Rw-wd29$kh*WM<5 zE6A>|w9SN}(Pr;grsq^>F}Rq0Ds z{yHc>4!YGdH#Q9w^ZRYtz>%5YHD{)(N|VK7E3?nq_?F2mc6H$T)!{MxHNGz2{0_;v zb?hQA39|zjW^5T;6Fd+cP-w}dp&1%*eNZUF2wdGpR*V!6cKg`tn;}p*UcbtgtIrbg z?aMFU&zUI%z)P{PBv?&cGsC#}%!p|VgZglIl6c9$bf!M2u&%rJgv_6lGr1c~I^lRl zCM&?qL4moL$gDQRSq9iZdi2Kq0PoM-&ZLahyj|j<$*=~{wG`Su$tnui&yrsSA0BDz z$Zo*MJrIgr=X;>U#ex3b{rZ8nA#Zd0St@!|I+v1lN1<3OvkbfHP{TlGx3k$ZaQb~Xcg5-_m>4IXM7c;M`hNW&Tu=#(nMP90|w4v^!%}&a1Z0W!&GyCqE*eJ8YDGgS0fw_B4QN^c00-u z7X+6Y1EG6GM*tBR@!D18`NQLXS>d&R$HnsHIH8-A34&lsiG_q#vME~-7`~1Is;fLI z)LpQ|s2TTg7sv`)L^38)Whj-;riz%)E=piBst{Q4y+USARor<;68C5Y$Y=&)KayS@ z(Q*fWM&HY9;nbW(zElL}X<=58o|yu2l^D#(ce2)J-q6#m?~oF;E#N(g#{y6zkT6Z7 zo`Q@4MnSU>X^V#QED6ADE{ND@Sw_e@QE;W7Lq=NLUVTne2y7#d+c}ImWodH3uW7T2 zxgoWDgtcjst~D7r$bghVD5>Hggp9`zie2G8;tMbSuC6CKL+9N*^_?)M7Zi||om!%k z=pg7wP8#6Nw+*~7eCx>!YJOb`Jd=Jr8Qa<8K!I>?W6zdLe8>stN%=*OF^sa7tmz=8 z^ZPsy(Pk9z*Ct0#z9Yl2)1$+bh&+0cBnMrnXe1hL1jqms@`o@e+My-UG;9P3nu!iu zlX6%OZ1m3P5JMQqTyYX)L=c}6eCpVvA3eH}3w%vcMS0BScBdLz!o0tqxYlRqHGiA00`I&EY(m5~y zx5uIrL#8PCk4p~IGaM7A&qoCH8J<+=g&j}n=Q6!2^%bf1m0mGz#ScvS&~hmVk3ANT zmMpY8yovNrENC`RJ0OzQMki>IH8=gK~Llxn&|>uAq29qFsy*kDzQF zOxsw%%rALRt!FfyK)k@cxlVzs?rcl37Hx;L(vI5?M*K<}z`#gygTSUU>uK+7vvcMJ ziRL{eOEh7cSLIEEl77uri$Cf0>hS|BJ|$cSvMX#o#*zUwX#A*2HITuRRK~Yn%8I5B z;slz|;>ig0MDaqMJI~S^?3vj@%ADE4>>|_W&c3+xHj^!e=Jb^r%mht?cSfZb<)i70 zbva3WR|i)stYd8nqwtV|;Vx#@HYHQ|suf4gv1de}8ky zUSRK#!5cV-)gi)mHDa*7vtVc98j;6AzGY}Z#-!{@Z0F($wCqB10fC_D1g$4lGtJd& zDv;~EF|B)YqsySs0KC`Ve)(pyzsO(YDH6ajLcbZhTuluAfBl%Jj51S{Yy~xMW~KI2`|Zhp~MTp-uF@W1H>DNb^-v`@(`1#@MGC#C~az zk#D0V4Q)VK*ozat14IerXDrT`x%<3q-|)Ts-PCB6wuo5@J|w4F(o3%s^e;Jm&~ zVt*}-1upTB+EU=4<2D3uRN^{>TysR5YG6-ht|RV-FIlo!)eF#ogk5@6ZsM|2cjO%T zN-#QMWrXGtSO9(^t@QhwRm)~NtJVXm?l5uGD+0_NR__)?Ha<-5Ftqg(HCB{~JlVhB zcbG4%Ez3OwreC+n&K^1+yliCWXy&@ zQdsr_68-en3YfI@VQ~Wy2VpmLT=LMO<&G5TYY;lpi?Wi0RN_rS6Gw1#y8&rw{)zr1 z#{jlVU1*>m-8XN%OLhTnhIGbix0m_H?U{b|wcTj_YQZOW^bB>?+)8UtkxC3*XKTK# znDE}jL?D^(Ft`&4pYs!8xk6yeOoKR6H)-w3#}p3PffBgA$BxUSBb8K02mdq4X@2FCPmNg()(!TN`Ze$8gKnzYDxdt`|Uscy7jd8*T3i2ylL$bJ@Ch0zU?>en1#OW z+X7A`z9yQB4iyPm=$)Fz-I@4IbeCh9q%$GFFo6UhRi(+DQ}Yo#>8sy)c;vKDCT)x` zji=cFaHhK*PHQv|02Ix<+aA`!Itz&zLIKzt|uxBtvNq4Ua~zU0c% zb7e2A@TfMP(AK@`xs~D{<(jY)4WNHX22i-=;@M2=Vo6$}`!;%GWzE8JQjjGJxnB5k zplJo!y0E>fO-AJ^6FHK?!`(_AHmN+&X&QmCqmCvFzn05x=}7SHf=Nw~Q9WRRQbxf# z_Z_Uxe3IxF;MMGNLyxp8gcXm1eO&y&rF%~2MtGCs`WQ(yTt8sDmxGSEXwcbIb6uR+Bt5r@BW#J$XKQ>;_P24=Cg~K41$4Fbx;R zBw`_1A=k{?3jDF=i(lI2UD|cFm4zi&mjC3Ru|u;8VpHA}?xI>^Hvfo%fQFrbXgyYd zQM4%n6kKqTmBawS(WF=!44i|WGw=pwgEhVLOpeAp+MEobIFO%=y@GH;T`6DONXKT`Iyil#Eif!?YR-HVbn`>!9}a)dYR81`Z0W5j~C^cCpbb*iMca`jJ+Xp z&cOy}J}@&ka8I&;?p(ZZK?eD#83QNoRAe7uha7VSPg(1;Y~si9p%Gim7_?5m5F(3=(PocGm`&Km+))JU#FlM#U^##_O>4OsJxdmLnql4LM%v4{~_;#Ac?5l{Yy+qvBveT96f3fNDF078wH-2uil6{F>U46?F;& z1_dx+2!b?+bSY-60Ku8d|Tu*c)4-aP1C*rfN;k9KAiJim-y(sn_v@CE=-AB7Ql40yCQK zpH*wlb8Kd<2PNHM%9Br_f0{zvVYWZdmi1P;D_r#mS%R*F%Q6vcmWrNz9r&%ke|O8a zu(rtIX(BhAR95aQ#}HW35k%IORaceG=8K_CuxF<6=_o!sXPlyeq7}OH^v(?=%g@_&SAYo z?jRC|zAGF{q|7i(li+bM6p9H|6jl|mDzH_%VbyIqdA$9D;w|>Rn8@EgUien-@JLwU z8{<5ALMW}En5Kf?KL9Ih#iSX6cNiDtyd!Qd%Wb<|2i{?@=@1=|+ahO!57;0aiY&P< z7ncTYCvq6&|#xm&!j;>~1Vrz&o({K(etSmm4j znXofT;=y{Dr&&|8Z`L-4rbkM7*0Pw%tK9a2u}iEaTUNTm z_>%s{Pq{&PO~u4vMH!%!z`z3(G9VBdMX2QU^>W7PgO!XU_pTu83%OUsx z7x+`0uaH5lc`PM?2doE)6LsuDMDdDuhJk^17?PC{x%T%YRojJ@yPaW70$N^h3W;36 zam%@$L6MN_Sv{>2DS^8Ptk{%xTYttLP5vEz%u^ zz8|=F7S9M67k05uXu{eOpudB4{gkkZ{kZ9U-D`SEb67Un)~wd7%~VjVU)~I!(bP^4 zr5*}LNj!Li_;S$O<3lTOMCzxW}-Fbe7zG8@->=Us&Xb%#o&7OhPnrf+jbFsO$En`&Q)W zwg);uYrtBuxii>?ZkB8do00a`mrNvpe(2NVZMn0R!h`Iu2vU%MS7R=++SG#h(W|%M zP~yAz2RR~L5=ZmgmzLb?`JpsDCI=Te}SIzy-cw!Qduz>9~-v^Dmv zCt=^CB<3C+=LGJ+#Qv}`LC8#xilf<(dA)9VowX4*5Il|u#%w>rOWJl z)*W#?S9e&6idj>E2jXQwv+7EQ_yS(ZB3gTpDh2z7w!l~Hp+DpMH;c@=@Z0XqA9s@l zq{h1nDPd33UTdizFzC8EuUPEb$Jdv8G3i82mGBz3U9edogg8Wnt`AaLGUBg zk>P26?=>>{RU}~ZT(5I4ooClpe(a^qGZtk}+gi->itW!?`<2Zv@E=2t9nz<*<`h-C z75>H#t7q>@o4G&KFL9g1`YcYaisOT!KmS6lo#<%kZ4VxhMw)@q6egng3ibUZq-m3o-)`}) z+`*d_!r<{A2>DKgQ^Ymw`Omk|gSsWbGolU}@QwU>N7fX2GC9LdLQo) z(Vx5b*o7^uv~^Z@-p9~fD3yM?J`r(IJHFRfw7zHO8@Hn*-M-Q(l80Nrb)}v3vwKSI zo5@|3cL-;f1ctbg1&MTgu^KJel9p#P-6B?+t78MmJ*wn8HzGX$J;T?|?UI7J`=`4DbC-@dnqp1TNW(Fa@rNAFTNJu!nR$Jpli&FenQQ!UMzc9U`!jIj`inKGZhD z-YT<>2uy@Dt6b_;E1FR{Z9*YQ4XyMsj;2zrcD5-%J5BBmWdGUCzQHFQJi=lvohA1}0!a*ovq_aAL|X zj86Q?-fNmjCTGx_S`+o(Gmj~MkS)}_X`y3m4X2U0GotfX-)MVb6%vzI$;Eh2e1YoCyiRi5xBXWWa zMWuU29&zTVT5p|OtpJ8E^hW2WX2U|Y07U*1K2>>^ZGLYFR z#|VG`CiSlcKDXE!+6(fFh9Cp#>|!_r=%IiYB3hIXQ1w3;MsVF&-MZP5RC&SR$zjM z26EBiuXz|8n!Y=dnK3y8dFsugOzSmS6mSi*AQ%)f1c9Lq!+>@OIT*AfeZLKaH&V;U ztpcF4Y>p)h0fLNUfKQw~y3FX%C&0ZUYX`Fz$z>ZVDbpTo8ls6c;@BL<8K8WUie5z- z3>G)lg9Uc3J)%=K@&?-WLVPAE&1>ceLPB=ceFv++H?wmTHHQz-SLZ$c=9sSTFlW)q zxrHq!XqC($5jIknOE?NROuY$T_I3B_x44+@8~KROfwO9IB#z#dfDWLrVRslC+OcRR zo5#9afu>R$nWM%6?@IC!pH_(-P`>pN>kNn<0tnrD-NEJp+JDj08142cJ^P(4pM0{) zS<2OK{sMj1Ew~uLwvM`0*;>knd$0XFVBIOI-}Nbu-mtaPtKYlg21>Mi?jVL~Yy%l* zEX<%#E`gJ2TCPTi9Pv~%KdtaoTvxbAIGPUCW|f7s?TG~jSW4fj zVz_CTz!!Fo+c+_g_jY~bUC-HSb7X@Am zt(ouL*>VtQ`f-?^v)3`9bs;m41!6;-3WdBv$0SWz(E^bf)@MD@+!+ecLuK&KBIt4vaJjRVb5ZqI)}9-=_NSufclle zYD)Tu-eIQ|2L>(J0TSFk#v~*Lb82L)CTy=B*Wge6-Eq0#cXc@|{N{vyQM@4S%rKae z@?8eol=@89qHwKk+bZW4V!ftiR%PWv8OZ@*oIEEr2PoOoOfv*GxH&;50G8df#rIBH z!;5YTQP8eZVzjWBA&Si$Jq(x;AYto(w|)+K=Ze#pEAUEdNe8DF>sG~a zRRzGXH3%QVIw0$i{!oFNfQk0S5~W^`R%_5Wk~}m3VIQ~D9}$9pq;aDeF#1V9FamgA zGhtm^hDYOndr01?$y<_j_&QtY71A)QFLOj~b3{(8_p)srb}buMo0gju2xXWI!g*Hg zL4*>q*IS?s%YMZ6qlv4#{%7uwQa@W2M)svLSQ3fCl1DWva3qRa* z;Nf&A1Iv?5U!ddwqg~=iI_&E}?>4DAcys{+6YnrfIETqD(#~3h+CTFw@UjIdeeqEV zTq52~Usn)l*d%s2KqLZ@sI|_#2ro3}Z-@(mvzlj5@EQ<5sJF2d2NWHk(VDS8ntYI~3j77}F#d#9e@9|X_X*)% z*jux52kL?F#1Z~ss6kF~j`x|3ftJ?7x9ph>j($E5K8FWNGoEe9O(HU&mptS*#(Q=#Gbf`bn zOKN$&Z`lgh9h+zMa;+F8As=Lvbews_%NFSkx* zXt3Q}?tN31*+E;_aj&vyy;US2t+Psq5vUdDO?t@?90C8a;)fMGTy$D|i88dzYg)Wz z-!{2XwK6J7H?PSoESN;DgiPwr1ldc?%v0`3uO(q-FJ#QaK6<1(-wK)=V5CLF5~+dc zV@3z0qyP?Nf#%I*NNFx|%Lnt3`e2s4UP~5UXVk*w$e2c~Np8JGAVG@+Ft-Fj4k$&W zQ%C%$VzI?i+`9G70Ke(f>W~})$u04_c84WEop3UHa%&rD-BZk<^$NXkb5vJ%SkZz5 z-7weVdu7*3yDBhY_Qucic3(GcU3~G}iC6i^9}b-PX{yvK4kv};9$Cc^2xdb=GrADn z03F?^z>btxgVr^!#9t<$50kWeCxhG6F^+>fQ8z`BO31c9)EJddpb0KA(*NSb$^qFENC2=58f~_K z${8C1CJ0UmzauTiVhZcR81w~dz>a8QS9JcJ0(nmBgcxU)oj=#B8n2%q*TeEbC6|% zPex?P%GLs+lO$UWvh>gp4Vef~u)4{cTe86<3D0w{L@rdd0S9&{HDZPfdWUsU3JcQQ z-WcxTdmEtkuix)Cr593@+%?bAnvcUQb@+Qa8r_x&%NJ?uWh1a=66 zwKm|nV5kjnG_I`qxwHbNgw67dZc5QM@ft_^K&9QD2}^SNjrZx5R~UdE7&u6|tbqt9jIEZh+<*i~2CZw~FotnLN(HVYy&@ryOjD?m zd4^b-_qW_+q$c~^@M=bjgtiyodQQpnTM(@vTHQnh^KJS@G{NC>BXROUEas=9tWii`NXo)*2dOj6%I&5N6C2k-HeExW0?QK^Y~C zpkS|8^c*bigRvwojs};_*%yT&#A5z=Ez{#!-jTcRambYu;RKEyuk;}0&7o5MVJf7g zlT@1-m5^jCPi+!8aMv4t_Lyq`NSkRy1i%FV5vmln5tRg~L0!XtvOrQTHe_GJ@ZAkx zx9CP=6cA`#{x~2r)?qC=1nyFlDQeuZnIm=-YmRSbbPJlpu@3x5;9e}89|49OoSXfq z2i0NG8@EX4N=1Y7Rr$#t-mV4fAagM4z0Zit_>h@V zgF1lt!orxa6Hg#%P5}lAaRP#41v(oUiME-MCz4n83HF&dWf8y>#wNWG)6m43&?OW5 z-ts{}+!~f743>mMgRFW8kAZ}LO$_c@t88C`|%U%#9u zxc^gov58CEq3&!g*IAuoZ07oxUgW@uyiQ#kxsk{y@TQa{O7*hX5<(khVQ7Pq`^9$v zJ7x1YoAf@p?O-g0G_n)9Ob4YmJ;}fb<`gk2{?RQENr*I5@K*hAj_*JW4$*s9gN8LR zAIX}@r)7fBr;`IneaQfYB7N{42_@z)5~E*5i_Lh3!vU^FOyAh90`IUfJu+I8n1QS- zDM&0-7P+=AnYs*7Y4r`U(?vfMrA|p^K&WhgB|7qm#zvQofn|z4!O$iFhD5o zOLmp$sgufn1d~X7CVC(eLV{|lNR<)`vmcNLp-N!MjQWi=4#91{$8a zPG(9)=qv^16nnE?{hk4sTA;z1!uKg(;V%t(FTEsQM7E??2oLbet=j!y7v8|7D{BzC zWjnvumsdZx{@tbb_3X_W_S(&%*Jxg+DJVE30K;)38vStG{VSz!^wQHzhT;NPBkg?Lfgyas0V#oIWGq>$Ez~9J<>-#%>+J_RoX3gg31HeIJ(iZ#z{?M zgBqSN9!LvE`sxf&jL!QGEMtn(MqOCXiW;vYLQVkF*ks?3K)5G?0)NE(&X5$Z)If zy6v=$t4p!F&axJni#xvF`t5DRILGaShiYS4UP3&VvG=%kuj-5SNYL$y1Slh$@k zw;SY|BU(7pHZPK~9$X}`-8z`yE9nmFnAQ&IkVHKpqY{^~$Hx`iE7}UVjv(64a2jmZ zB#vJNi$Znl^5@#fB_){ENLm#=aFt?V&x9em4W%TEp=uN<~-TB z6ku~069q75GcGG*%idEU4b~_x+%tw=281-|;2O9pK_<`)v?N}ub;z`|W(M5QWI2*$ z)yUj(1zxX18>!7<=R!ukZ$+Rhg3MqACj*Os*UQqyK@k9>TP-I0O97Plz4@KZAFuho zd;$19x>|~NF?hEdxRtI=B2Uj6j#Q~dq>|kRkg7`9NTV%Kn?G~xuuXcTs6jhp?Z8`M zKbezX^1eJE_4_)@nlwwcOjIdtHDF1c=F>1h4f$@T5?M*vh?Xlrd^{f!XNM~bfBPdv zk0^G8=(LQx+L3ng<(|?iFI#+hjWX(56-h+tW|*|uH4tIHjWlHeoo_6c0^GAO1KU1f zpNAJgLwm*@A|Zs?Fp@FX+|yozDRT$pMB+SwH^;dM$w&B5TxVn1KadjeSX)dhRwpJ} zSYWhp@g}cofs+!UBhVRTrxv(mL9d?UdPi6!(mzR=*4Zae&Coih<;rXx~n^^wB$$$OgtcKGGWaGZm8X1USb+FAauoPS2vq{-3u>*n@KwB)AocPjy?K^ zk(0hvd9C2J6eX9iuHw~{VeMm-%=(9Uyp8**W?n|)ZWafj@i-63$_KX+8OH&}wBsgq z5UopD1u#1G5N`sek?W)HWs-mG9rh~zVgJUMCC>peY|TEj9^Zrg*Zoc4OtcRCWWMox zabOetzgq6H&O<+c03YJR_He)Sbu4?P?XCDR9%cWp_j=2Jh=2Y~HgA#G$hMCB8O$+$ z>g^nU;d(aZynf54sYC0*?8`W5n?W6rrIM-zD#-;7R7CaJvQ@+?CQIBXAGu1wihW@A z@R4imr1Qu%PHiw=2o| zkrE)ci1g>9e9WFl%J&TFyUOGG@ES+SoYX9xCRHp z)m2qKTlV6Jd;DrrEK$2%h<3Z^Xgr<3jjuhFbhbkIKQM`kD_}fA!7M5Xf zYz_+)*V0!ybz+ckn~xSGn7oxcq95_3+dR<5{|{vUxLOSGPId#`pyr ze9TSXVq;Kj70qp|01^UgflF0vks3y4y-JamGk{S5v?CyHOKPiZJ(5Bjg`3Y6iE><1 zLsJGu%p6x6%PP14m=H}RvvV$P57+fF}*bU+LIyYffB5S+!B|Co|D_=r+hnO~10|Y~rjue@h z9yiUM@27^;6?$PU4GFb@*#|})o2$RwSbstMrE;T0oa6C%93kMaZlrB;OgNbzD* z5FcnsTtEB|j*2Vj3b?+R;)#9n`xvt?uZj1FxYR+I$Ai)>@paD&@9RXocX+oS{XG1c z^~2iqotTB`0G*nI+p(L{mCWMMo7yb;+j8}6r;K4^XP_XlZ^{~}VUEziAY5s&-N6P% za6)4c1BDg~All!UgKY+NU2nFD;aUU`apHG9alG&DP~idI`R4YqS;DZ}~P!A6pbw-~KO`SP}BuBF*t&D$Q^IjivYs^r-RDoulCmB~}gD^$}K zaAkjEvR_o7jzX&D>Ied3dK}`ji}w^?X6eU&?N5O8NozdO#uIBiN#k+We}bhc0;dXp z+|y*vt$3l*g_S>)v&+L9smcMtjcCq^wvReBL>Zox?E=kBiIU|Hc~YWi=nAZ2W{W_z z=D-49FhhBC(FoXo%P?2!w@j!m$yrI39h7$dRHy zo`nJ+m2kDTWP^r)Q3x&Gm>78&Qq`On-`GZAXp2n3>d;ET>Oe-J$j!*U`f%RiYacI_#cPPAtOv(`s(ErC~CXtdW#xUQI^LCxF?(=~#fA zGZ7ZaB8Y_Y$2=tsIdQuj8V1R$h4yoS{uz};#IaMt#YUnf#kL=(LqnqG7PF^(g18x6;NU=!CCuJ8LfI@V(EyjStLE}yR9`K|ysS@pSEuQ30$dguys7w9gJQZ2Pc8LHD- zU2@cBt(nnMA!=J_E=T%|Hc&EIhHe#P(~l$*k_DYmWJ=PUEbRbg2gTlko_YG7NsAu` z3I%xM>0STp9j@nIFCP~RYip{n!I&R`l%He$ zGwsLCVOBDY{;uc6gAY^S;qbKr33_|}vddCW2&D_&8jn267i_ey`Ck0T?v zc^oH$BnTWmKt#wM4J<6Rt=Kek_A?2-Q`mqSFaf)WD&14_Sp)kQnp5mB9Va%@&$+#Q z#~66Jd+-d?Z*%?{*DK8}ahZ*y^nFsR6_!hXR%nOLZ0llr1swMHqdxEu$Zgapw! z%t|XE+dw)eXT~b;v{k{|D3o0x~RJ75$as^rnczE@Cm2gdd!hF^7(bMhY z$MP<);uo<@ zhao%j*&KDAJ49pkS_)(AMpDC-0&P`y^z5mX{t_f?VIK`q6>=>nQli=it!Iw4#W7=3 zgKla}TJS+2ogs!*pc8ZflRyfL8ej!^RRAx$VDb`g4O<@kc>KgJ*dWrSZKfZYk8e}$|b)1U_ zryqS-Grr$9JNc1E8a$tj&G6cXq^od#`ijw2T&rMP_S!X&9PMW)BYW?OYgr}01#QdS z1xS1VG{&L;3YY?gE&x+#U_zr*g_a&jSvdEIg5F^hWCD3vh0=obXf82Iau?}J68}N} zHJ_|VuROeo|Cq6TAP|H6pbnA0=S;*b9iBNkT_W za*5vmiI>oXOa+jWl5wnrmm^5a)h1t+GsRi|g8MIZT*0I4IHKK$*>zC;J%sH4 ziS7eRm>pv(>eGpl4$3R6fd>Y1#(pUDGQJ?88 zgUp8K+8vfxXOgbwMkF7EXwoJpm7L<3rB1=f-ZUXTB?{U$(1J;&6e9y9MPOiMbmkyq zfcNu$5^i^;NuG>dwL6=t&S^7lc4I{3DbZHJ3(R3<7%O4zU3`PAmW*Cx0m3Zhp&PQ8 z<@I^6tyxmbexuOCG%Z`OE@>ORLdP!hxwZ80szd4sNUF~kG$dO?UTWHZa%(s^xnlS= zA0>8#*b$kikEl~#qBQvAlUg0SV*V{gM7M?QL zC!fHOrX?+kECAV_V*npcOlxUI;wu0SOI2;-!q**f zOjmcp(& zh*%!Rk3%3w=Mav z**N>Ia^FMgZWY_dc$RbTbdrjjZT_1-E8va2_97FzmVXToV~^r`3h8BLX15EQfm9?c zDj~~4!r8I}icTniObC3yL+GhP_XxoiY*C?L3r3g50uHV)#*zA-*FP`{+{%f__-&lx z*rDsA;hOZT5?rSj$E2kDE+Rvm=09l1>MGW~GHs;~~b61>Cc z=Tr5_QsBvk=rV^W0SJFkUFB9hv`)odZp)GezgtURCcBkO=Bo;IxH6?|8G%$AA8$L% zMQ5+2syap}Ddkd_2=C5{KxP603|r2zhye*s;uI?4Qcp@a$9!a5GDxB&xQFdR zl2t+73=Yiz4M+tC!Byf+1uQH5JiXq}cZlxQvd6c3y5Op^^E57~af8aTHqLNsbvqlB z@Z(+CCT58ACbLU?Dwmf#-maq!e_fVd`m}Bwx}Mj$6ot(#zUpIN>@vCpmz^x4tK&O5 z1sBZgIrAZ3<2U|dbLgurgi3xQQ!?+`|G&KI`39fZ+|T&QEdnpnn@_Rwa5vsw-;t|q zopRaP3G;y{7m0d!q8=Yob#yVnL1IckIoPGZ_m#eq-J@vctbK-(tW;`Y6_V$RLUYKg zDnw;!1i4pU!9s-!nbD4+jf1ikcKQ6v6sF|h9ZnN?himLCtO@E|_m8aCVXgd{il4yS z+*EDz>M#GEH&k9zX-l;$c0S>k=saZyZ{z64U|~@~3eMgJ(F<*0;F1pKlHrL*4Cc&Q?z{}rbJyopCwFs7x`8N2K)6!)z)Ok!&9}u}bmjR8_(JhV{h7Y_ z7@AsYQtLg-;}L9->?mUcDBm*+I50U-uE4at>`B@O+N4jfQUTf8P5&V#_31d7haLmWyf=dGvPI6r<-9@ zcmQuekiR)Bj(@io9F9wm51Zrbl3zO9NApo}zmGR8S z+|d10e0Bq3XHlNJRICIkLxCaqHY;V2kP*cR=+XG1{L0HS6R zyTj@x$0Q{VX`%@0!IPp%cy(KR%d2ZGqiIRmOd!rE6c9f#nxD6z{ZIx3*QIqdd+aLU86}MGAyBYKt5#1husl#6w-gVnb%fmK4B}SjPA1(5jGi-avmaR8n%!w8T zlqLBpj|?R9!}P4T_{b#-FGQ&%iY(@b+lQ^bow@tS;YE)SKeFh20cBKtQ#8Q}z$jB0 z1#3ikWoZgZHXsup3fdxUgrObUaw{y*YmT@PENFl#h}~hmQv*czMwmlLc1C{8(MST> zIFi-^=3_VvVNO0bW7T{%a?pv_2ODzT5#2aQYak?-xa5P}lx_i6YIqgOTMArhcNo-B z6G))m6HU+Oim>9A%Tu-8VbD=s-C^GVUdejIgd;D^?l9E9gz;bPws3cz@QdD)e!1er zUkaS`%YoPW>1QAD8Qglll%`CNwaX5!fVqUNc84X)F%}K27<*rA`*S^j?g$Vyr8q$< zwGtIaJkZ!R<0WLY6J@dqGROphtkXmTchS=k4d3~(MxNZGk8$`39X)d`TevP<-=^6f zzzeY(#&1RYaLedS8_;gJmiSD7^=J>V1@1zBuUYslT8kbY>>W;TUF`dK{Z_t5SDL@j z;Csc(+`Y)YPHwRAf4|tR6ZvPc^hwU59nv^o&t>ktmZ#plSLYzTG+rC3Y%$-ziI8?QU&0*8HYO-OZEeyRDv~o-$?Ipy8 zU|{HWf51YzXMqVt*I?LgV5=%?)vbEq_zv`Djxc(Aj~v!;PvtL$s;&U zIsm&f)7l($Q{$8p@fjxRiIP1)?1pua#J@OedrkpTKN4`07UD<*4P>IrWRxalrU7bk zZnJ9?mT2wg?_*|)uD#+6Ve9xzQ%hUB#B$6u`|`~e-JCb^uK}he?{-Rj@pZ{mdhp4b z*%MDb@VotcEIM=EaNO}>)8mpqL*wLhat!@cdy+NNAIXF1yZivJ+>F&zEaQ$Hey~gT z>xD;jHn=oE*3YrnPKw{m#* ztsJ_wBX`)zyLj|zJpGKl`0V@oGxyT%9iJsC^dlp#-WIlU>0sNA-gAhLw9z#OlTg&J zPzh(u@-oawss|c7xUFDiCVjm_LmaE*e@7o#w;j(r^(Vb@JGZmj5ywVBzbl(_l$c$avJqUW9eOx z8CpD1wK?J|H~1JqoC8!TyXrc27QF`v)GeO9MIF`Fdjla#aB#Ju(!K;zM`ONts+C~k zK6O&#@dCHB2`J$O=wR4H;NY}WkaS<%KCIn7SZ8!3L#Z{_ZEXQ{7q;lp&Vofu3=^0W zlLF0AMoBoC#0qi*y$9X~-yr-I7UQDy1n39Mr_0lufd9eTtZ;`3d_(-NWpfI=>UvxZ zmxZ}7FD%Df#ejJKCEi&uLBV!es42;hiXM@OT zzsD7Ihr$0sheOfha}OrV6V2E&fO}0XERS^^@z`TcpI~W~ci0N^Xp9Osr0C*OSKzRI z>`Hu{xs*Q%qI&|Pqhsjk>Z-JFsb=l1FXfH`tU-j141v*m4mM)$Os_ac79G{tGGIA% zmT}4&+A4qj&d6odn9HbDMOL!)IvJEfATeW+!JKe>gXz8)K%2*;eey#X+^9aN$Q%R5hP+U z{;NC8@MvBTLE!zcJ50b6oOTU6mfBC-n>YNFZR;<1xBf!emY?_ie16!oAIZ@)6*Q$| zhaXCM_@ToFEH=Bt68vlkB;(A}M>S)hp%pe@aT#K2MNpDI$`lYVduAZEED4On+$5J8 zAW5m~5nZSDBxfTLiYo;_tbvE!z{yqpivJL6Pg&2B5b9@>u9=vHjcpK{pYm?_r^LhH zCE)Sl&7;5fdGK_wKB6CbT6+{88vfg#;Lc$W0d_#1EKJx%Q& z_UyG@*YYFm-omq+wuwWAfYwHQZRiZzQaeV(tSdkgU?mta8!Ac$SwjxWqj=m{5WA%07k+-7z1;Msun`p+Sj9Z+Bh8n z;uG`P=|$k+0^M@bm@aX*@U=&@I+t|S8cRFYMJKk2G_$z%6(}d>|DBNUtbiW2#p^cV zH6&TV{D^Lza@jxxZ0H) zTcjpcmPkO%0$?9n>=QsR0`&9@*dV>ZYKd7?!8w3LeF>~>Ms@_+JxAoZRo-KS1j@{m zHeY=M`_9vP`c@sj^$y>3)2$u8wL{;MTXp0VhfZwI zF~*KGc<{RB7Pms@t15;Ts*XwzZVtX=2t3)dVeM`ujZL=C%K4^DMgrNWg4e zBNTC7-Y1r+*{KYsXz#GNO> z7l(bFX>eF_CVkfUP*{}AN)HVmV6sw}tTwO9}zx@X!YEOxDc^8 zeu&d2f79oO=Q{li-qGKkuLEu|Kz<|bJ-4$A(qtC(pkoMe2nARkqGtBjOA3tL%ZD%7~f!uFn^w#GJQac^v~Av5d}89WGb|dLs?Y^$+3F^Tl9Dt$H#(tM!9`uU3!xZaS zG%GY3H0a(4AmctRg&X>MK|Zh1sbm3(<$NAEp8#JJBC~0LsXQ?9KpM#@z&gfZC7#~E za~Qjeo|Cj5DfQ{h$d7*Jhq1WGF`5o(_#gv|>k)en&`7=>w3n7O1*d35d=K1D>g(0vChab}XkH**p2#9%o-R^V)Qj7w>ZJsA-*7>>fa z+^NUN8YX08wDd*xd&6E3fH$K6bs4~uJb*1e*j-OPg6uQEZR7Fyjh&1A&__Or={d8w zhZH_U_~0U+FqD@d)&0;$(Uolg-LP4$ggl`#5amrpr}LQ6+DKBp5k!WNLFO9^IouF1 z3_#d`c1rYDVuBqx!vJLjB`qS-4%A|`u$&MC2q`66uQ*FY3mZokVQz$*x;fb7rkq4h zNL(FLW>@!jaF@^SRi`g-M5?YidJ&ZmOryBB*de*~WN!r;zEi~~PIjV4G>>rbsxrC5 z2WZ8Zu|I1;Zwrrg2%wO|IYQU<;?BFi8@*zdCkgx@e@vIS zJ3~4}<+l&+;SAJs3MO$zaW$YQy`Z+w_68f%Qh`b< z!Yj7KidqF_$vjv%h4}O{ZScDd9H(N0@4g)1+UmK(HwF2;7S|nYijPS!OFWs19vR6d zv2M@IOu^goVoOFo=IGIzkw^9z-aa-)xF@=#JKC(m)lx12o%I#HI)jsbOr84eT z1;6T)yt%|9wLL7BJ~L$~T%Vak1lL!*<1^ZpR)>;f<3D=d5iOg%G946vqOHg!jopFF zW#X3WV*a>L+U>z@slHyhKj)%WPIvv?G&s$?2p`v`YKQ2VR^VT=4F07L!($KqoJ)Ae zWu}}CjJ?_Nf^hM4^_hdAFPsDKN)Y+r?vQvEG?I_%?%`ee{tn6Q+kY!NFERD;oKnG@ zS1h!GGOe-cOrFxZo#A+e1~?zcD`Gm4IzYP8-^=tMBQvRJC(SYYSg;QV^&owS*8;5^ z0rrcqKz;7V*#{@Am)?^&*cY%igk1>6AcPuM*T(cDu5zInXucdMl+hCdl*F&rAUK-^ zQ-DJQU|<7vh8SK$$6VjcNDJ+Vm$@7lc(GMg-vf@sR)t;|Y_PBu1V*$gfhzz<^RZ}k z$>x~{>a{QM1M0b8QU7{&A=xjn^dCS(B61<{{9G6A3UWEu8hD%YTWot{;*W06cxWx% z$fY@rCctju0O^S)_eeqOu(nUVjI`a_YO|yhXrx5%u!!zCNT9mTA_xatZ;cUFG?8GC zc}J$RVt^k3Vu_bdt+!IRAKiDKWv8K>mq3nzYLkaK5PulhS#Hg7BLTV6j%{_)6{ZZrt3K#Tw9?lGFhNF*5r=Rda z$#OU`{L_zNXClg~d{ej}{dOD{Hozm&X(-&S*^846?DzGjhP&a#;XFK&9s?VWeQ+4< zPg|~2R^=|zGxC?r|Th$);c$N*Cmh&YCd10Mc?!;ewK{ICLF>{T9jrQlJWq3IA! zkp}``z-;G$SO;J+gc@~S54xK04ufgl!RX^W1kif-z{kyHEq5KWI%%381sVjxyizxW zcbGzh);TFO01A=01AsU0NnFJQXu1~!4iJyJkQ>nz%|Dxvkw021aTooLQJ{o#*tmzg zBK&p*9$5-b(*MZ&in_zrk9Y@#3!czn6zKv%LxuvYHmnKw3!$DmeZsx|B;He*HQ9s7 zl0!rlYS5{oPBrv1%8V4O#spv|n5)nI&UHOwL(g^NpRe2h1?}(`&Vyg5j(>q1{(QAh z2@b3rR0)Dxk%XkHc{RJW zDvV6+4r_$@IEmw)Wt5S?rNF}OW=Gi^IfA767!@Gl_9zVSd5U3# zXu)ghMHA_+YfApJ!7}JkfH+d`{k60Y5rrixkz<_%MgbY0ENmwfA{Wm3D_I+^}L0 zTGN;oyzgKiT0nOg7XK7kldm5r+SQ&ig+nQB<|Qp|&Q=e`$xU7bP?#HhfMl?S_^*kH z=El6cW#>t;>&=K zKkY7N8tWQIu|lUy3t4or6%Jpp!k+Wh1I1P{LdSzaxiU}k0==R31|6Yzg{?dqiwEm5 zSQR03=}K~BUQwK~{*@s|R7zw5XBUx{u1Z*u2P(mQ^Vo1d}ar|g@4*73vN_%n`; zKW*RmGxp6t=Y|8KQPm7|nnlf9p-x9$hLV>FJr zae{Xcag7KdcREtNj!d7V>{7xgrLI<~q(LPDfkRzBA&zKt@(SAGa$2QIkuczDxf;G; z;>*2p^c>=Mz9;-Au0@Y#?#1>^e3QS%dH3+1LobHsf_>q&gX_cJ>fd7f%*)N%qu7Vo zqx2*XTyOP6zOT?MTr-@BKGgj98S3W)86rrH(EABs+YD+2q>{S?s1AYbA~FtX1rk*< z6iJCPX7+S@t#yat;ag1JF`XQyu26FqfxFE7STMt}Atf?xfYAdUr2#sH4brr8X^7u7 z(mEp#7!!>!@DSp)2a|v)O-w)V0w}L{!0m`MThg%mPDx@7=5L)0hSpoM2u)f@;uFT@ ziMC&w_FtC>?8lVtjJLkAZ1HQ6l-wz8^(RJcQhlyaGtMUd5HxuNMt9jh`DBO|g`d*E z<^7KlxKS-@VP%PqE)j7ur;Hocc)+&dz48VQ6`V1~)e3n~>3NucpgxTRPz5o})_hMdp(Rc`4-5=lb zmfu3*$>K0qXS~yWsLsm8#6b*6pGv zv8YWjyU<93wKeR4hv5SN4MLHk85V~t=jUtY#nnk|KD@yNhLi>XEBB*u5yE;@DPbQ* z^6;5zNSY1Ton9JZ_b{B*5A)>GU;s6tre%w+2ZNL?>Jc$xLIb)2q9&1w9^>b@1hP>i z9d4*_AASHMztt0y3aO(}H?wGwSqffNWRqQis#kLB2+^j9>>f}!NJgds_Zcw3O^*CY zv}9U-)X&lJkU$i1v@yC^9@BC+a8j+q6irJ>7ExP?{V1)0AyFwypewhg?|>n4WeCB; zScCn%AJ!T~GixmhYkdtH6Kw|+#9<0y0=<)NKw9bE9WRu5WSH3whTxDea^_4&&CxE|%G)6KI9P4< zPTCv|5c-?J(#aYaMLmR3(TqeC%{Ua$wrV&OhGBqKSRR%;>9wCdciKU<19Asb;)4)N zOf=_BY>x262Y6(nd2yPOtWCB#ujb}C)*y?pGv`ku4LvgwH}-Mng%*pf@@j)9G(Ssl z%M?mNN!4|y*K$9A25_S>+i?{D)36eqBg-YH79E&4ViDzG*c;cOXDL=M1TylRjo><@ zMsNd5xmRAD;_Av0fc`BcS`%PLX9+kP%{u#60qxdY27KJU!_F>n!@63Ve~VSMntwCC zj6bbnfV@ykTzunCCme8H1ox>$%)tiN`|9%C0%oe3muF(76J8ZFq|kLarkp7s}6jQlF#mK1#=WX_^k`+c` z|DrE(vQKwM(lk7kwn|C#eYJ$<8*&39SP6;5-TZJ9_sP1euv}lJIBm@#Gdti{)-Inm z#lFKt2E&XQ&7DG1PpR!%yKS=5V8vFh=Ht@7_MYzDoQ0QXTD5BUuCqU6E~#qjSUDLYQUd6KFr-k_Rx;2wTjIc9@3R zXz-F@q|9t`Qzdv*!FN7Mxg}(Vdc-21nglv&_4H>+)2>mw_CoQ-{M3Y50qyqY2~JDb z?vKvQJg^mbqz;Yrj`I*wHIcY}2W$4$hzE&%onE7kP)37iadxHjsl<76dNf$Wpx*qXu?_)kk z9{oA=uMse??UYAPfNSfbDH0O>zL^Za^5Jkqmk@&LvEZr2aa z3?8@^oQi(W#WFNI(d=MbbPBO&;zj5hoPRvPW@Np!I(~}({L|F^AlH+BngWRu=a{o3 ziRBVlp5T)838XJt;T#DS+OIu0>b_q6pzpmf{IK_Qg}N+Nvb{} zY*Tn8o_BiqF3AM@QQJ8IScu)OgV@EUCSjBl){!yi*b@dMF*)Dm0Dm{iAz0+ABek@L9$^o2Ezzj0=x+oaTNyxWB|koP-_V|xsUwWk*U(Q_^#yfaBg!) z)F&_K{;#K>Q+CU+mYK?ajh3Vv$UptG(95n*fVZ*+;_%{k0RJklb}&>oR-JXbr8^{c zonN8T;kdz_Z7d-Vcfr1zDVoRaU_ug;Fr>z!x=^|>gp z4}ccTW)Lft2`@45fDD(!uh2MXZ%murWmog5a0eSC3=pD$l6?bJ*(P~aC&aN@diC(? zPx{hnk4r7Pk5UiErJho8NeqZU$c#svM5ZWxr9m@8%@Kc)_BM0mDMjJ&kVU*D>4rZr zA^iaLvX=X$cxLJcF(J;u&N7-$)>XyLUe+gNY?IvH)`D69hglE6&- z0mgo;LJiR44qu^JVF~rQmwq$p50V^fqBurovt49=WAS5nx08%_K*a&J^^9>w z%oCczp+FO>me@WNj(Z;T93;{zvyM|1&OBns14d<}qZe{p;zm=#Be!_O@Bnt_Z{A1 z@gNlICyhQchPAMiBl8YsurhK;S-@Z<6~J02yJ7&_LgMyuo~9->;(1{)?{0zhv!`w> z#W;0{$WC*<^ECxzZvwP7U$ozFY*BZGjTHdTh^5tGDa+O@75J#4I9lv+HA|gsS@%}X zHc#!i)s0bGWu#XbwJKT`j21kk1?2;bp!c573J+Bj;2YYszZtu*Rc1}*srOih(yCgJ zKF}5!z-HHwOaYl8brN3TTIee<_Vg9oqz>D>OvS_>0(+r2lYDEOrNd4w&Hl`QVkADJ z5LnvG#_e{2vt?2)ZOD;+YKuoiYlE$d6nL8hV^tgKwoNz^n$lH)kXLLjSBzJI8}8lv zj14aa@Ah{}Bz9BxJqRr}wbBgSBOn!HL&zZ8f5F4A+P?%2aWXY|GUuj4DQ7F)<)Kwp3LEj*hzza=NDc$k5;NwqqO zKudPa+#SRb?FxG%uSM?}&?S)Skg-b}*~s-QOQ0B*>GrO?@)_OgRRDY9UkfJB*)3=o z?2>R;J2)mwF!oXZ$nHEv$thVmZjNC#iZa0Ma27im6tfWCPGkt zW@xE+Jg$fs>r?DJ2RAj^EU!B$1H~#~h$cU~uF-}zx*s&!`fW*59r$+G)rPB6w4MX0 zI?io}Sz>{ES9u4dJrYv{>N^vyxbE}>jW;v;nQ>C4RdN51ZWI&|OJv@ydKx&&cxNciO?W~Xku-d`}z#$Nq3xgCm zgUO5rle+hSVz81{CB$Qb&qd@S+K-d7@<_+sQnTZ$vql`+3EB$WzJOszO6QNh@QYeAD(| zb;@G{2QplxY*fmk={Vi0^G+|O&KyUwFb58$8HW?);Q_KP&ey`Z=NKJ-bT*)3!?V=H z1qR1o#!}9Rk1$t=Il|lvz2+RcN{pjIU_sljr-Q!sn4m-8o{CL+)QFYQobWjsvt$B~ zfk%ZW(zQf}fl2j7aObb%L)z8hN4Pb=JQB~3tJ(K>TsR8YQaACDoF$7aau?*Ixrq}i zwq}fit~nC7DrX=HhAu$XCr$_ss!?d#0ZsatHM!dDyxx|kC2bGbYf&G-fnC;G>NYFM z(a9Gu+>^c>eXf`NhE5M};P``mAgC*d8{C@zRmCj#$o&SKWxvAuMr9~Sy$HFgUgYsa z4SAKMXwp@Ei7B{CVkr_l*#^QotR4|DYsw!4rff3=l$ww`1!%}K8nk2s`|#5(5vt)1 zfyC%`+=9AgVh6=8-4sdYk(z_i>XmVC(ULJ(gY27kaut`$qb%WP-g)6NEh?g#^--4J z1FXtvB&FyQ4;sdn%v>T0*J>*_<|9UP%o#FkY!-YVk&Ly**YKA5T|?r^0!(JK0G)vV z2=QIUHgAKCk;FvkITcBg1lh;fH~J(aXURxX7r57hTHvJ0zgguYDRAqJR~c(UJX92G zQX?x-hGYeR8HwIP>W|7WI)u_K{lylpRdJS+!%e}fPXfW_Sh34TEQ4tez_CMDecd_4 zqangl$N^IT*l!Gs$T;eZXUO}9@+;<))i5&szO5ev!^9Tpd}dhKQY~s+iy9~baqDYf zEl|J~WP7sv$*MI7hu1NvSWEHD*lmAm>L`<_f_u!yb z=%*yGh+B?WWw7K5H&usqt&IHagpzLdpj%L9qY}Y|x+)bx$w|w)6f4T*@1bO|4knG} z`<_uNLp+-?-}+@Osk^3JImd0v@-S5_T6mAjp}*R=szcdVsm2R`1>bI(CE z(t)Z446$m)wl+dyZqB4dYC?gtMrHMkhD)uq;!%^w)x^1}L?s|Zj~G3oasC^8?Ml36 z@+}L#cFp`q$rJSA;Xk%##pR#5mp+4Sx4n+Kj=YukSNs?U_c1@EPkIB@=#6CZrK3wg z+I5-V&}B#d?RkjzE(v+KEgmNQb;xYnAa}LqckBvWT2b>b+e?V{Vdyvsx>hI(O+6C~ z0C`RZ$suqT2&5QT&@Ccy1t@r*2SoBrc?di|8tekuPmn04#TIuo6?{yO^Ob>`Vf4oG z&FEXF3$a_{H4y_fb~df6!B!S33la}GTu{ovXeR{e^8n36t`Q{Yfdzqa*rW3)b-8-@ zih0ljf&`Jd&1YM&5Np~q$121G*oFL)`fxL19+!S)`w7~9GEMQ%THzhj@ z!UG5lyUSXH5a=r-?HWl=D+C8)$ZB$VACpHgb_`&w$3|%_M!790#?%8T(y}6jhcctV!&rC&RfMADFCx2d zZ=DfjD9Ltfl*tO^OPjMqU}@;N=YY*@-bNCZgzd~t!q_vjACai#Vc-V-29GJVz_4X5 zwt^dA+dJX41J4#Jw4`yIC4j{2F(06{dQFQ%<#;m~TR7M#scSkYO1@yD8r*UPVe_gA z!377=l&&iujg~Ele1Uf*ZrwgF?l_{9s_Us^MGYSX*oe0;b1>p0 zq{Nw~ZjUtxK*vqG6H+lZ$)yHR0Td%&lU&VCqhf)#2@e)PsPA%Rs6OyBdI2zv*f|^R z!`EWhgU!K)!GHPB_*37lu&v|;y2=+_FnLFHfJEbR_{UKpL&X8f0j&q_^p+VIIS+%L zcMhPf#DL9=7?vea-jMW11s@c{D-W?ZKRN-HdrukM6@w5Lj*G$>6o%9;j(Sg0^{A7e z@nQ&2v z$(EpE282?B`@mJ7fln%V!q{~uWr1tb^i^=a`@>c7wZ|Ym2rB?AL6BjvinCuspDV?x z1W?_JfZ|)`lxm1CSHMnxeK;RrY%PAQOFRv6Fe?mZp{69_9iYg}08h2B!q#{Ir{GA< zyhz$i!)nM&EWPl3AnsvoK{AD%mz;$kW;*^O?ii;;wGxg@-W?$Q_t;Bn;y}sI=4S#! zZ*iEWI84M`VZ?z$)miz>h++h64$j8{Jw{0gtUR zO~D0O1;LYbqq&9i7A0Qamp+F>MM_5Po!u18cundu8yr~#4slC@)+(7IWkyNSj z+ANZ)Gb^}^k6*kfP(l|eG`i5#589$Yg`#Njp#lnx=q08xdmz&V?192n&i6d%8q{cH z4a`df6KWJT;*D)k7?}Ew;iQve!khbW2R`|QhqrJUE&Y_ZBq*LlUVS0r>aaY%m%rHo zQ@w+?*Pr%7A70&;_AxK>8h-d4^)nwzzwxrZ_MbK%2knez)-6b@25ayS0XW0;>>uPI z20EmtEz}`uRSijXmg#pC%~JS{3*!TN5=+lJeQkg}KtUX(5GNqUn!y^RRYt_tWgn0YW5KrAaUfH)j^HUD-_OX{ zj|!jJPw__Aa>dxZBVLk%;3U?FbE>P*EVNk?P_(u|;Z*hm0AJFJWB*%Q@#z zG6RVc4a>tqj`r_poPUl=Xgg7-CZdZDq)9ueaIV|P;KBf2`Y25K7GKkIPhX(uod6S& z%kUGyDxPL|1Z&AQE<+x(#YDbA1;s7CR;-w9$(HlPAhH#L7&F_}zl#&E&Z=dVc@~LT@|0wR&8wewH!o{-RoTVbmbUsHaeQ(Z+sye+ zHZ$*bQT!+;rlkGYn+jL3>p;uwIj3C_`({@yZ{WZf`hg`%JvcC+ob^!7f2KO-3eTa^t}|VT>dN&kd4=tv&p;Kpv12f!)Ma4EDg- z1Cr?9<%E555k0)90MJ@e-~xCeY*C0YxrV?Cy(9O=oO2GTWIN^=twdWmrk9G?#8sMe z02o_A!VPXd!7YQPhAPo8Mytt~L9c&dN7(aZaO9ErMJ=}k_%gR-sw|u4(gF&#KPEaO5;BW+vJ}p0Piiy zh!Ig!0Iv3Q%V0LbE7+5fF_3yB^5(54=Sg?iIZEhZY!&!C;~1*M!WJ#(Mrqa|u|hBG zh}N^cFKg*LP9EykDM<)e1u17l09l*_CPmt!Cy4|suCrzJQg#{MH~rJ_W_-&p+m}2; zIvwZ6Z{XYNr!$hD%N#O28?Sd+ZiIYo0`>?!`@q7@u;(ObEhTI-)(f)DGeQa+2PehFNvl@ zMw`R|Xi2h%I=CKQ6Wr4BCc($SO38QJWv~oO#i+~5bi%i@=4Fc5zNY{v zayEz&JhO2R1K^Pm#edK!)%VhBC6?yBhVMwWr3kYIyd!vIJJpd_clQ=MaEtCY6}-b3 zY#*!v&>UUmG#Jr{mo&wEte=ENGpMCPY!_BVEe}L)1Hf2d4?z2M*(abj9(k}@#f9)@ zN@8bGT#{Ow5J;sj(X=l33dSmgpvh_-4rG-bt6nkykzbEe6_!^!PAgNDJ84YOVj@7F zGY$(N*4trhlN=XXvLQ=?$iYZ)2Enme8*F8S)t0T!wKZeIT86CWAcsZ|Mv6-Y7-+eS z*WNNbRxoWvh@Y_MJrrB-jk;_dO~E;0Waqbu0U@|0sniP@>cUXYM7P*5K#>%ovq3j| z`URm$M>U07ncfQ()9h?CTpeN}RDpx*tQq^UPv4AVZ$aEhL z53()PU)BJ(d{Z%pQuT8uMa!8^ZR3Jsqr&S>Z&W7t`@GXDz>0uGv|BRh!$w*+lDrYB zN*Ls5fCPR>y&{W3(<)YF)zFLrNDI@9(K~^PG89L84b49gmp=*{XP%zfXmQzcVz5+o zl1h@$J`E$&w-i_kt~8~)2ww0@n&(iLya)MLw>9{){1bnuCxlKPWTy-9hjgb*trF`% zn)fv%l3I%(0jx_PcabpIPgoJ3k#XU($UTCOh7%q;i!N*t3LxSO8UZ?JlJ_%2+tUp8 zfboLMKnT|+CTtsN_7c8DQ{BVj&7$fk5SB)d8Ob^LCKOkxK|AZBxz803vjM(L_>8t* zCh&la8|28suHrWCJTkdj_%jC%*lZw}TuoiyiS&F`sl+yEl*d`_qHW)7N$s-ucuTH3 zy_9fbfQ|0AT(KW?0l3<=i4dQW;6&0;@m=-qamR@3eSoJ0S0XnSUr-QSg_S}E#LW8$ zVq8#+a}*o~A)#$)GnKXYPiVS8Gn_x~?R{gVABFVN1JVy-RxN&Oy2V@5p`RP$(2Kg? zvpKQDD&kObQXGWJ`>-u?TzedN=IR)DoE$jJGn{CPjS4M(Q((3C!C~ zW-inFB#hi-uZ=)xxsSBlN6+Qri8JqBUAhZK^+CQ@eKCMXqf%Tk30b9CK|jpp!#DrX zI3oqhd^F}x`;E=saqI|H3W%DA-EtiOZ-MNln5A08&j1WGp3>FOg#o}diP7h*?Ka7whyKWN`oZi@ISp!e zix1ZoSuwgZ+oddu{3g{dAh*D%*PD(Sm!*gUIBdefInU0@e1IOWOSGVqQepSZ3O~U| zYIZ?fcB(98*?h#P?!k!(2!yqpGCe&6bf^t3z_x~DtGPk$3pJhYCX74+QF1~Ulb9W8 z?5=q1CaU^a%Vv()i*dW$#T17rdg5hux5s)5S2;RbRhk``{D^Nm5n z25IfcovL=$X-3E-p_I^)=(P+P=dfymuuQg~BXz>l#L5kwsU>AuMQ&(%FAy>?!fi!l zRMbE?R)=jDZpzzIIm_KbSuf4!I_*+Y0PNtRRe54%1nCgnI-SaTo%dk!b*DcbT1i2` zmY7RhHP?xK`M*`WxUz~awtl#>3U*7RM4xg_Q!0bJ+A)`yI}Eu)#VcTH`I5C30CUfa zz_K*$dWr?*mfUW|XJ<4xbA(CyF50d?z#(-shd3KA|lMnG5(%r)WEt?v8M!3#vJ9oP_`hnvVgEZ#zFd0E>|7rj_8C7l(dA6 zX)XzsNaoWca2wQfKOA@A0{;sOkszzdIpg`c&MO25wLC26mNQD+91v+3W-}Wr&Q8!h zOnMiDD-PymI3S!Minv~Bx)`y9pAcv-0T%blmXdVK*RaI|;5|I8(XTO%(u@mh5RMzr zZ32O_blICT>SSLj-pwY`L){LSS`ss9CEo(b3dGTzv*;@E8Eu4)80rcdtXqPuGk}6o zQD|+$^dt(AUygc{+=x+AVHCL~IjUD#o;=;Lf2?E`trAQt7ouf?2Al259y3br6#Fz} zyS*ZL1O>27a&n?P{d zr@|nR>Wt^aVrzIQ4Iv|h90XI>fK)A58Z$FcBMN%B_V6u4_TQZx-Gp3s`YGk#H-?2H z_?VU}O7J4w&KI=X9kCL3_!{%EvFC_#UQP5HNaAk5r-W5MMO)*f`)J(hi(XhJU({vv zjjdt1z?e}4lUW>~Ya4@wF{F>3eS+QD%=QL)W1J4KbX86-gZTh4Ybwev%6eSu0~1w(J&F86+74!8LFKE!ZH35UfMbJ$FQ5=$z}$fiWD! zh=Y(=;*CfY5p~>xXHwqTRw1eP9F#ueq~hcS5Fn2pZqJhy95*u(zX5ph)~kb8yZhWN zpd-LDDr!U$X#-P8Uii6_+JJVTTcCh;5CcpD+kg?GiRaF+ENU6BY$bl!nx{_!3F*Q< zi=ZIA+*!t0r6om3l7cCcl^KP_Xs7@Kj0VZ$EUS|6F2tDEkUpt-R+*|bMh;(E)q5n< zF)EY?l!eWLv{{`+k{^wm8N$d+MzZtDb}c<%J*MnONCTfd3igl}0g{Iit)XYo9)qc4 zo=xB`Q%zn(oKiMQu_G`xKAH{kd{ZfGZIHTZv_Z~$`rJvCE08FJ-*m4%hgYv*v!g5> zi?&JA?%?1No#O&<Z}7i`wk_WFc2*@2x9?27+N7{ zl?#|`ht*-d~?Tgw>~xEAh-rq#dYaMfd?N|v(dtG7DfLPm*rZm!!e1MY$=>EnK4|svhnc3ADYus`r zug7_(_u$Ovtb;-0I2m!c!d)r6bsEJAU`amk56Q$cy=Jv@6TQ zgqM(=JKmd4!htQ2jWU49j|?7|Va%*xWMo#7VrE*$8U@7eFkQ}45y z?y;RM8zD}tG8+w%!6jZZld+59vLvt4EN=Z7BXB@ql&eF<9AvVBAS-Q6)Vo$_-?pK| zRWNfDJl{fQ4Z;dh@31uJ$j4*v9wo~?ZA9~s?pFml)hN;-ZT-6Iv>d_mSEfF5%*b)^!#Fpp^5)&BD;mkx$ z;B9S~>6M@Kq76uYkpT8`7^JV0(1LiToguF zYf6+mM}yi${o<&_P1&xrQWjOPZGfGjjRAnMj>7W)%R@M0TIREhP>02!PHRmmAR}o~ zQ6&TfA1fs2R7HO3M;LqMS9Csvf%3s zC=5Bs7P}MhdthuRh{J647`>B9uK;7|k2b;>*e5rTw!d`<*raF1c2k8XW(X-%H)sOu z!B#3tm-nPhVi@ca8~VS;G;Z8)Mjd5BBiZ zXJa@(^bRAd{%|$mi{cviVi)oI<~r-!AeGoW4pe0ve@&KWd5ktxrUFb(=D`~UOL<)Vm2VZykg~L36}yB!lTGaOt?;fiR4N!;yWcUWtw3$D_VsUw<62H7a7l#{*Pk1w^-XkF?<5kw8K zg13~3ElNIx>w1Vne)$8&6CMDO$qY*0a-Q*QV^Q^ZLT4F^tP`gYXMyc@hgIc_W})@m zb4W#&0HmjnF%p*a?jmO#F%sC(@e&r&TOYYZBz;{0>@5nUwA!4+8r=X!;`I)jASt{hZOMe3654|gThI950v%MXXpL~rIj+)uCl&2&pCfoytm1y2 zloB$xLjRy><^o=Gc((!t8sP}zH&^#w0)coF6srtItYV}tzfZpqysO6KNGjVp9~Tp z;i&|a)UqozlvHK6%(G}Pog5LrQBB@Lu40#ulc4tAd6YI#&0uikrFND_ss49@KtFoA zBIk;8Y?WJETF(YUN5XAyrTk!K9vFrF4XO1aGxsY-81nVMtOsLdkRfxU^;+7hw1v(xtm~ zykfD844N}dQPc6ruH9kDw@qnx7^gvy3n{w^VZUNFYw>Q6gbRc9uySEAGi4dmGyp+z zG#wdt-$_lt`WpaD6jb*x+M1#EF}{Uzo{TLSkFs!ugejZgO0)fIBRRbNFr?o!M(F>m^9iAsNZCaKIiA_$;Ek;e808EOGF+}$;6VX*! zHHmm-o@o!XK}=?zR%dLC4n74H!b7p3&X9dg_VZ%YzGjgq#=Rm;phdXhPz zD)Z6c9+QP=+|epB(_LkiRpk@QP*(nGo#1M)#ye9p%6@H@kw;QPP`L!Z5Faapwy|)$tyFvwPYJi6ACLJWCOLmPY$;uvS zj4|ZQd>~iW8U!Ddwa~tz^%~K7DmK<#EjjI`PfWXG9Q8IInQ+1x{)bF3;4p)a0n(Ai zE=Fgh$(o_a$Zk0>qyiUCFsdoC!0J?!MjDboW#=G`Lc7zEaYKLzN*~J%xMLfR<2XFL ziIMbXPu-E&9X4j}5K{#9J0*tq1;a?Si_z`dpuNIzdnGg20SYq=BZg!9vS>O=B~q5o z%+!e8VWXnoSRkw;tF@(1Yc;04vSn_#BgRdIyaq@SP!_-_MvJn=+XA85-Okz}lHQuL zG3kg|z7|=AyOeMHXdjNsTBz? zdDA(A9-gA38i5I*aPTyjGSM=&jfGoYXJtCOpOmq?lx890snjW%FZi#&4|;0-UZ?~W z5cO5AGf!w$9(q{e#_kFikoN$y-C=p9MNZjr-$_x?NJk!EC6PoWA}v=A=*s`uMK~J5 zFkq5G3>XTP>=lR8DlMy~BsVq(^H@;aC86()zIi3=c*q4#Y!CCKFgFY=fh1Szyb_g! z)FcwpHJq968R>fl8RwlNRk~bpR~HZ0-;RRkxnomycM(y0`T~INR;vl0L<|qH)q`aL z3()hrGc$l}E~ldMY<$ML_JZDF1%sp92`s9jKt*zx%v~A}IM#(Tjtv|#liK=#;5sy1 z=ft$qNGXjpW9EaIy#ielJA`l@@g;eOF%8NfEi<%qlD;~;!+cD6Sgj_bvqhqBW;lLJO{it@bwO2*KxbvDj*s$ogj4pMWV^LAyx za*JU!v>7;5;0Lni1JLJdZ3o)$sXEZ6otxnt2I502t7AW@n!`$5qeDy(+Jn?GdPW5XQblI6jO6ptM@`-`nor)6 zGO@B?dSL=jjO03GPH@X)Zt_uj_e@!1h2>ks1SdKJk^DYH@)`&s;sby>P@QwcNGY^< z;{OW`=^;trjvQar^k?uM!T~XU-4*A1ZNcfjYeRYMXee=GZf?qUeOL0xMR^yDDpXKb zs+mO#lBbfF7;q4txF9&MTQT(aRk8xwrh*&sNmcc#q$q5j=a%pe6X-}`c7eoJAYqV3 z3FdJ~MkGuE^ywtcOPRZdeDk@|pom8#sBWPzKLWMf5~;Py2!_X7!{g{k{;(U}VdIlM zE_1dn9z9t;cK5kQCGrmBXt@B0vV?`%$?RFXP#>0kF`py<9-y9}NajIN?`eUIbOv*@ z0m49P<0^9ot@4VJ?2@ig_rYhd1%j_}t@W_h`Wi({oDgDG5r!DAAI&Y7;Z{b{Ubarp zI*6I~lSINY*s(i|OB@GlGRH=4=u8{rx+A7gS+)oui36R@1E@t1=y5>X!Q9$L3~+jy z?Xlfqr3?6@zVyj-69gQbL}{7Ci7rKS700;qw(!-b2Ruo#NK?0E8nU<_Gh5a%MKWT@ zcobULTG*J~#Td^Zc^?qH!{{zw$Xp^^ja^0I3tZC@Hz-8C!~DS1#8&rH^Xh0Wv{i+o zxn(j>i1--!0I(xL{HBbzH((g%E(XB4^UNU!9W+=++B_J+I?&Kew>!8x)jA-OT+c&? zo*cK_NPqpg2W5)PP2Hr57>-h|NmAlTh%_fxx^$iSh23mr;c^B27M<%(58y_3NMyC9 z=WLvlj&*nsAKM*fz3-$5xl6&g?|ezjWN(gW!8GoMI>J$L^`~nQJ+Cz2a(1LQR!UP& zB@A|`+Zv>_5UOVh~8mEL}5v* zRPTMxF?xs5J#Z0T1>52kUAq?^X|0WGaYxudfX6F!_2D zBfA>nS3eJBk$Kl;PlTxDQQcvIgIPRd_J%8QY!te~h|#Wlf-4DK?kkP~75Egn%I+}n z@IqpC^>wEwzOuo@`Qp zl$o4@YT5Hr!#Z|0ZUiy`YR_+c6g^alNKTnpUTCFHs+X;=l6QYsuuNO(S*+)<(Nkdq z2lcZQtxsFzSP93`gRRFg9{CsvyJ)A(;!B+7&TX+z)&Xqx63Bc2n!DN5$$Uthap3g} z7_!p02rb_3gsp3Dyv;2_K%9MVm2zo4@3mxw)9w_s4<84Zq5w1K_vEg9D2ztS&M4yO z@ff|sVB1!Tv=HM((#+W{0NeV2AZ~fR6BvYz6&8&4Zmccje(-vHN_rE&O(8*r!$|NF1QG3v$1sXPzUth!5kjebCZ9 zt}27Tw*=Cb-LSLZG2$v5V9`hl3tRV|05ArCuN}rsDXxvnlT5UpBfUcUqY!%45#4J~ zPyCIHj|Zv!Kq}dQAX^ohb8|2Xs1F&Ax_!Q%VWrlysdWfSw9i25*bU;~6@OkoM(?nm z2^iOrm@Ja;d1_VU^C}`vCo`xiJ>|&=RT-ow^0!P@X^Ss!8Lb7nrt+mNT0DA=ZF*n+ z*376{@?F>vh|3t_Jf?&u^H2r_S1U*l+Z=q5Zs0IhH6ip&x-Js$mK6+4PSUdyqr_B% zhe59D>M`Z$6QZT{644SvBQLAU$Drbu;3z-1JL*Xp=vgq6H@|oCy%@4|nJ)&32*hFq zI|Di!oFI*Mfj+(qElKzH(so^)VN8O)N>fe8;!{Y-A+f#{iIl)bnrcZ`TA&FcR|yIU zg45bTq4E*`FaC3gK!h94e;K!Bm#h|BZ(#} z2u#H59o9f_+aM^|NMJVyaQ*~~$^+7Z)Yk*BE(8*0O$Cgx4BDs(M|2OP))s+FHsA*9 ztRtF0k20(qf|anWBZYMcC~i>fV})U4I!aJ#kzC@r!0EmfK?6ghB%c%ZjMQL-kB@nD z>l^)^*d4YIzOP(CBoQ$(oCuNDY8)3R0osQucl(>v^H7hE7d%aHzN zzO=cIx$mS*WwSyVjF~0DxxyTR9?Ja;G4n`r(ET1ldo!8mX^VswqX)Bhj(66f+jcc1 zMw+FRDq^=`Ii*^-T@%M5Dog7Cm2mLuVt1G*!RaRsV&Klf>2oJl1yj4jRQ-bW)E$6C zboq+%xV{IG?GB@`?Y{Fx?XCBmuO}NCzzXmLS_f9?3=y!4ww2v%rVy3_Rh>hbb)<22#gJ52A|QC-?T6iANjagb z@A7_l*K(+V2Vlw_Q`w`$hw3K7Lr+#QVfk!5wL65uW| zG8wS7EwKl5@KAJrV=X>o8)$Um1AzBi0HG*QqbL|Kb>u2V?aW@VKwHzX(Y%VTBdvs~ zJB2io)I+8QTd8*#$fl8Cd<9B`m|1;M;QXxzal@Gyg_)Srgvz@PO( z+>_!%TCiwXIv?)T{q85#aaN^AkiP8>!P(P8=|veZq&>4cj0(8EF<+DlUomI=T%xrr zr2Vd|xb}!1V(EP+m0B6+FqX6=?}FoUU?>%wQjiKzDv*39R0VOJvN!{9kwn{OKxEH> z*0>Ptac(WHxS{(OlL#&)=!tfq9;VKYQqsRYFsb}XfnE6;A*sX!ju4c=wx!phooZFv z3gn|ef3(+a)toeQ(sqWVorff#ZI4N@`kWT9LD9Sr*ifJCb_V+LfzU=(+Kf|VPsj%C z$V>w)G<0D}%w~#+?pndORh;eu6dWf2rdL?vGZz@3O8Fk z;Fd~g4{sC|DJEr#8)A1$gLfCISXHqL-C;87(8yx%06OJTiT1}rkzUz&KCjUUVade{ zM9-pWnQXx%@@$0u zL5G;Ub6ztQc868Wh$Q0V^k8=J3^FEWw2W*ha6@mYA7{GAsNGO&o-yb-N2~!83h{U2 zoNGc6(Z2Ae2nJ61E24K8gX9B^c+iXtB5x|75cCccl(=Tx&;rANU;)Drq#XhWHSG+p z-C-8cO9|6l-@yfFg{~lga}A$6c&ddZ7B|0Y1S6gGhm;mvoU42$vt)|9@VX$%g5`=? zqATzU5WB;wbRLR3^}0w4K6g^@0ZF^V9*yTtfU`7Cbb63wQRPawiLhf@OsI=od`oD` z7dm{oz*yc*)G5jIEMnzrT`uCQ3arhG=gDYe@_y{n?~hPhv*CQpQywGTT$u~n%Zy1@ zUiz6iclftk5aPyKcWAFFZ^AbRX`eiZjLg_#!2?W2n{3Q6roxrCn@`^1B$m0=&FRLa zp6l$V-S<;6MOLKj`-a<1Je-h+qbxDvas7bzo!RQs4^Q<8q@OM!VDGxwS>4@^LHiK( zfREWdJBwGTZ~GXS9({Wn-C+N^F|xz+qUC_wjjhkXVYq$IIN)wA+tTbdoz6XX-YvH` zIlyY%}0HYCoPkojc>X({^L4NWH_C)q3`|c;HtQ%I43J93OF{ z2kR1Tn8RHr8ksJZ; z%5@+!Ny63kqx*(Uurk7xE=RO`r^m_%rC($eZS(^-#k(GN+PIHUS7D}pJ-Y2Ic{195 z_N^?Cer4eL^ICd>qnXR>=e3IzYA%qv{I8dd?g%a#^1rML{DxdtXH3Onx^bVxb@ZBt z<8F+zr%yKSUdvMUlE=@yh1A`lM%SsHvE3q^#;TG0ncn1<<&KtK(AvOUW3R09y;;=9 z`mt;-(x=~x4a+Vk^7OHo*GphTBdgt!GE_`Y4Nt!v? z8o8Nq6ITH>tkVVRHd;IX4P1raaNgwwp8bK~4d5(R-+-Bkfy~6Tir*I-0dn`R%ub)z z1OBth0gt8oGPa)|p$+BKxK5&toAiDtiS3*{kU3VUsy5cK+6{fY-`pT>HJFv2*s2?x zdSB{T3#OUR+*5u=<7@8OPPdz%FL1Jn=4U_p+0U)3eZLoD80qIzb&z+BnIKybcSee~ z_{PR@Iez>twoCiw{Z2(75P664mu z=kvWJGusw(k{&Pu5S4V1Qt<=q73Eh}vBkpT&m%`0rvt8i-I04%_UxOh!nuKlOfDtp z$m0^$me%13`{~JcBkzKI=_v`4TLgN~)wuaww%g+q?5p(zv4=I$W zAA|*;f?GM{2lg!*;){438gn*y04H1z3_UR5MYdOuxT4{aoJT$yaO32d(rRD}u+_P4 zm3hVoh_f%w1n$EsF!;UQ&MjN6_SqcMMKFU$QCe}ov&?Vl{=Kg)o6wn+%m9vF+D7vD zGMDo`*h(ug`Z30~`BB`lf{CjbBzd6i4@@5LwozV@dCK$~=l;Rzcm?3nG1JNcUxF>$ zB0ewnr81>2oHz2SX|qSo5;b5*XgQ7k6Ig%qvcu$yo;l4O?zcj7F9Y4`1K|pg7n-Ei zprwfLd2e8C$i`jvBDUbZ#rESCc!dd3lQ^;Zg#XonD9_w*I%w^QkKFvDclbvipJa>3 zm`+ax{M40MoPoXq1H8OC!$?FCwP~teSHPv_;uY=U+0%E?JL%;1DL=s9Ir$6^F#CK< z@o(^9t_#`1_~~qE=X$o|r_sE#eeiJR<1LNyvnR!7U+DIQDeUG}H~L90@ej06r${@zN<#^*KQltCxwTy3o-S370c zl-xbWz7+qyGT#DBewrwrmQg-GQxCx7KGs;_WX@-Iw8rl4c&I^E%7d;H6Y8zZ<>P5C zgi)uO?SN-~xU-~ZinsL#HjFvBr8N_K(UoGw=~?lV9YoDm|c z(t~_OTwQq;ccy>K++m&v{3oUMt?29aJTIeS%W`zHbSvhD(KVUu8@uHQx>CF(%`5>= zbHA}enw}Q|9)7LDe(*Zt4pT}&nTR`)^h$NdhDT1~{LY_aaXQ#dA05wxj_Qom5$0x) z>T__BUIHC;)kH~TM$BQsoq76w{A5m@vdrKke;9fv@nd{C9@0}mWa;Gof;8JFIJD={ ze)lvQs~PS1Y2mph(S@cv9X;pOKG(IbpVkUu9-qRVGP~OS{FG6{gUuIjv~{)8I(T)s z(9U-^4lnXyN|vCXexH+p68VR`S^mO2X%0U_U*19zXO?fZa;p@TI9xJMYCFYkfN$JF z85It03~dAuYTyOdE>(8c+V->**|Oj%wW9Qc!nsx>4RNpajI$7##I9#Wzi_H+1!iom zZVm9TsBoSm4|p_-))Mi;mDN`kFVW#pF`%IA4%3lb?Iv4#!pYMfDpEa)N)xZIV-uGZ zBwjkr*#alI7ImqbsmH(*oUWx3yO3ji#Kz~8b_?q%$SvllVqqm=&|miZ*3n<3cz#H< zY8z*MMfsKG%t1Zl){WbY4FaXODTM0-dP?Hx?4pO zmU5zApHd#c)}n_Q63!@8JWFOy<3!q|^-wv9qu6}$uf)0M>Ia~tS!GuajMJUb_7WDC zAuMZ`F0cZn%=Zbp>lM@Q&EY%h$mB?7pI<_9QkmgL=L92;!H?Jv^%h`pqD3eY9bQ6D z*_(=@@5T2E_o>Th~Q++kk`x~uq-rlrob zRAx5!6xNXbX2`=$5^MMGQ?c zlde)z`gu1_EBMFL%`Gi6iyxiLhL(5%Jf|QpC@!T!x`{$X1dyeBSgiq zhaGGVX>>TGYaVdW-0$&~pPiuE?UPVORJoDK2Y3L39y#ulTVd2sNrm@u5lJ5G_$&H~ znANW+_AR>f3$0yXXJ5qmP|7`{p0E|Ivpscs{*=ii{r8 zsg2*9#NIL0age)vG`jk!X0!gOQR^y+PbAf{c-)>A z@8p*@*%BaJP-1qF!`DWtWRr`3v(lD}=y`V95tzwpo)v3rmXhUpgxTB2?i-|@*e1$h zq9_9=54h4B+2R~hehZ5Y;toSrypsS&9$ZIi&8NCyxN3$A@w^5%!e!hfow{x{m$6);s zu(s;-ite-zVP$*5Q+qaTZZXEIWVfW3yD5LyGm76N*HX(m*YZ6*JNcJ%Ywk<4duwdV zk6?`t`T0k?d*u+X**iEjF449;n~j+5w>a;_?wKpyKl6Jcev{2Se@st510&~z zYb93ln7wg_`3HrSKL^ZwWr3O56jmxJVh&@^xN`#DvGUu38Ru^^#Q6G1|A=fh=#o9~ z3EA1~%K<;jE0RX1uPhd|SdN#ldGbS!^;oyc3uW#5jy0hxj1X&hwoVFJK~6X@`0nMaU0;Q6lXc>C3u~L1>B?+Y?~8&Nqbq~T}PaK zvc=b=O>Uf=Hr=wWx4e(rt!9_Pw`L7kgM4;lhmYCetR>CIEIYhn!fJ@a>GbVFnY4W7 zbEiH2{J~kv{Q*bc!E?`cz$^F7k9G4i;`^9eVg4>zacx=0o;AAoh7j6M3t~^q$+P2G z%T8Ce9B;SUWq*U&>ihuAm}noS6c50O>#F&M-8EY2 zHqq{eGVTe?bBEXBjYU&OW~~)Q7eSnLgf)A%+n)O(Qa%IjkiBQnvy)#>up1YQD@gf$ zD@z@H%*!(tujLUFQ3&$WGAo| zP@b>+Fmmp_I`ueuvRHOCT#*o|vPwR1PHK;DzM8}7?ZzEp+h-79F75&AE9jps_%adv zw3o@X@x`fDQCp#2vcu0S+<7q9BsK?q<^=e|2K|a2{E?IQ&D&K|A-}kS|3sq$USbvA zGejvbCTdgL@U>u0q5advjRaH%s|z_jq&Ez14eiQnXXtadAUUOU@2E!#Ky z;(y$}x%bB6t@y3Kv__h>Y4z_X@y>IQt!-T4{8VSzH#bgovazzvn3eyYXg*C``N8m0 znyTF80PeXlIl=V1$;%y`_Y2h6M7h1=Wxh2R{hd9XVECvF_;B)q(*!pqRD!O+s#5pOr(|ajZ0a8NAV0UUdnP;KPlIZ+7+(MkbFOZ%Mu% z*RhT(%?UWP{hM#L(QG51g_lvu`nZRvMPkJezjd%BTlDX$m7JMvsp^vveAKfI~eZF%H~t=c$x{-2bRrg5TircJ?xgjUW&WSvAJj5ZtciLtFtL@eMBS#-;9Xp?n6x(i{p);(;9p+@XID5wx3k|I?EyH-g zEgCbQ@U($%?ndzdrwA*1tG+ii?ywQ#4igf3>|uSX&T#i| z7Zt$$#hpf}4n~%_K9-r4(ziLm!It>_a`Ip~;1(q<;_ei@vj#TGcn`0Bvu1O9zU`*Q zms%~Yf?gT97`yLyCLt18=qak!&q>t&sXKYp_f8LSU4!NhbGb6*bgW7A{<;u?cN;YN>D_IA`9riI8VkAk9 z2z+3Z^DMSnbvwg{O|mlGFkH-?cp6n!o}}CZAE}=WojUx9mmqgNVL)lr8JJ-}bVrOm z-og>Tp)t2aw4COF&R%V@=%OCej><^_Kl6UcsXG9iF9Xk z_w|!?wARBvF4k5>z~pC-#%RqVSo6R2S?TtnI95t#=Xrj*aCLqFxsak1e;@Qj82I$)@1090Rt07ie4e0A}LO zdQDwcv{mUxF@9E~D`|>ZhZ8;kSU`G*+%l_Mtku$26Ro<1aY_Y`DNE2iCi6ASJy_kD z;ROu4b*$W3jKLt?3vLeLc4KSd;v<)R6uNa%PW4hTe+^nx@DHt$ioE-aa)_oMZ~2C! zFVHI)ft~j**?AT=%4n{{CF5q?k5Ip7={=X=YQ}Z4(MS8>B=#@(xQVvzQJ-rO9q$!w z&1FGOkuY*U(|nEt&iyWNGDX~UdJEaQimbzGFGj+eeHazNHqOk?rNbGEkE*<8?CpVD zGj2Q@uoCTCvi%ODMRV~JC&|W*Y@7U!V{B~WGC{0px9*FtnKvGnE#YSVO!C>49oY`} zlox10qwk+edi8o=y6Vi9_ajf20JPT!OFZ{T!|OOePTH|o4t=!oBjXi=^V0+?!OW84 zzJqbCtNBWR72lZwYJg1#K7itU)A1)_GW|r%qR&97xIc>*SnIEW6`?P?)p~(SZEbza zVzgGb!~vf9YvvivxzYoJaWpONFuR7h!@9i0iN$4TfFnqL4DuGOu}>2@J&_aEj+mgB zXDIGyGhw07va;hOJm?;!iINTvCY84v(e5k=m$=9exS|{J;s=~A{)m^mdaTCWm3N*4 zS^2inKM(tUI%&rzo>(FYS5*D;guTZ6y|3W6?a&mu)dla$GwN{h4(4U}X)k11pAR@o z!i!j=E3Ei@z+Vv>6Z#i(S66@Xm3P&r^wqt3fPPi){;T`uRP$jVy~go(l6E^uC^~2Gas0T$18N#EbnBw^{_eao({UcIZu2;lmD%JM4VGJK>2_ zPVtwACCvNTC*PbaW!zzs8IfHa+Xh&1U}JRhP}-}QjZW6HcY2};9CNAT0C@AWBHs6K zW1Q7JSG4=i9H*E1)Odk&joM{}c#SHD>pyhzc&xjAdB;bbzu(Ny9&z-gu{)yQVvKlc zq)yIHpA~rjrePge+Pp7qZc|Qmis>%e)F2<^=gmq_puYNW6bSiFvg%gfd+jnW21@QG`ES`vxD>t zFaxnH6=fxT1-UroSgoF)&ajgd{*~J4wxz?Xs5d`gU7D3+pwRs>*2b99)~R*!mb{^_ z-;*rHiD(1S8i$+n(^OYGCOJNjpo_LDUd-)wOEa{{7a0C$h2K;5F*}AsjG`%UCYxEt-)WIy*e3sk8^D*V<#Pw7P{)$%A z-$_fWcV{uBBU*>DXoKhoqyx*s*ZmoX#-PSv!te$i7y` zO|-L=xpmLV9%wdlyg<;EI=ZdAr+4^)lih0WqvAO)einOb*)t&piCb2$Zt%}4 zuGZ_W1i_*7+D;z8#n2OZOdHJHJ5f zf3Z4sHTHgS?n_zX_<3=9$;qZ?57wJo-p^idXQ#(O0zI3oKh+Mm?=7~wfN`S;afJ&P z(zU`rvms6+w@uDUCG7_n5I4JIHTcZ3z->@r_RQ@)bw*MUA|6vlWYu2hTm@D zzr(%^qQ*)Xiqlf}baA;+b9cvAt~0qg;hpDLNoG5{b0%%FDBU{V@wYloV0F6qj*pjN zbJ_<^?Ez{xdCqURbj-NpxtuobB_}x7F0`xhp3su#zO?jZUt+nnR_OP0Q+U?mbuwT46IoIEJy2Z5n zjy-aVDSh|dbKN~1@jLS_-EefoS1s-^#Qi6q9aQ8qVFpPW>(Le)ZQRf1Fxvtm{HQcI zpIGVR+DwdYKYtOutp{$%OOQ1r6LkLJehJ`ZV4sE(Hdy=Na10X}YR}y7WE{}i63cUw z5i)!XT@v(#$q}E+;?mV_Q0n74ba7r`ri0_ul(K$whg}xb-rz-j{O9Bvci1ni)^e+T z4)TMjugcj4PJ|ZD{*0}piQ}_LK0rX3tvNzD%d8hP3nVjAY9vD_z@2yUS>2p>-n!D0 z)>xm3$9*QGr~@{ty8B^0R$%1Q(J<~X+9yE{&6m<~zBtMSva`7`0?iC3X`Q&4_3aIxT>_a2z=xf(HDHi9<4Mw3SVRvs%f)f}0 z$|pHrmt!ZlLH1F#;FIouzf_`SF(&LkgmRD%?pg7f&*&=;Nq_I@_;e)Kr4uQ(cKOh^ z5E?%nKfx+bJAe9yXUn?SVuqEf(?GBy;_K3L4s#2OJ)R@mHwU?z^~n=EW3Zged6PG- zB(|Bpd(gY181HIuE~`CROV72dfye?+{5WI-7TA|}gKrI}x$c9Xr zRCI++_yLWkr`zEhev-RtSxFgp*o{*gU&P6VRA#0!aR%a3QhvFUcln{3HeZb$+~FNO zgMdfu!gDr$_R_|<-&dC4Z2^ZKR#^SMV!~JB0l&#&>gm+l(;u(UM!>xFtqOUeyI_ys zH}ANyo?|xUDHMPO8%|H?Pol+gqv%nj<@24T+2}B@xho*%jre5OoW09SuXOuJ&SLh^ ztV`^QZMp>hA=zo{w1chLEi&QQ!r?~pPu8_uO^ls&sr)v?%uH?)*lN&BTQ^__-?u$dXP!QEemK$zfiS!7;vXjn1l|gIZpi{M<>gDSl*ORcbany&W8P zSTC%9IWe7r9@QUh9Y%tr)OL`-_vglNa zZm{N7{re14Gq)m^JGR!0H2bu$wFOF`Wurs8V@7BH_tW%4NbXGJqC4EY<;vTRB`^uC zxv_aboYUcFmiB$e&0M^Yt3ecf7YO@Pp8{P8LZw?64*eqoYqqTL@;&H;8ap}EWOsM> zfxWDj-n_&g!kVf*r7G>@D_Tjyy-a)HLmjE4uBT+(chcHUe$`+!7*X28Hsd3$nxcnK z$}tw#%CS1X^z^f&MEP7G z>af<9uXa}kYx(*rUrXt9QPx%)mhtY?RG8!r3*Bg<971aWwD(}Yd{pDA^rJh>-94W> z%)?KhafeBLYgpN)XB-G~(#zrD32EExs|2H@v89oC#r>&-ZB7c^t&s=ZI|0o8R2HXO zkY{IFrYpF2xYf=x0dde>!#xc4z8wH2nomxxH==0nIkwbhs7@UtpX|@jI3X)DSmVu~ zfSD)APIh+k>|J(37;Dn)=BB)>6dUBt&)(%{=bnDr;Z$3f9Ts_*auj3G$H3W3#W$Pk zCO&skyogcFTZ0Ho00#L_XSYx1Td%O!Sg?*kiW&RdeA_?7m>-u_opfRj()XeUrN0CywIIGs{u6 zQS>hiuNtae0Tgf;Rh6lB)`L5&&UrcH6Yv58CF*(~hjcFCyj|SHmpglN24*JvO=TzG zW7<9QcuTiOI{Gm9iIHbDILhZb`?zQIT&nNB)0w!g3gl{6Hw-1@1Aw0d0vGy$tQ)PG zv(>KjLYM!-t$pDJ@d#{{EFi(t);&Ny3xTtbRnGbTMp-em;hK?E;Cl#OCKn?`hkEp( z&25PepW>CJ$iJdcdz!)^nW7&m#;G@`r4KuKTlK`ba*dJrlpz256(v`8+z^At_+hWO`QiBRl99}@;H=#-DR`OP3|q)UzKvXj*NX8I(DlG*OddVgImr0#oD>Cxf9w?*nQ8Zlxtxudg~t{3t9-*1R(CrRtTP5oIrvGfOB?>15VoS*C|i6+%tI#(V5A# zDY|=WzTwqdY(8W+<=>#{)346ty8LQ(ell43Ug`n=L^E6J(YPDD0!6S*??=K+IQL)C z#?PaTpy@00Bftj$W_W?1?cDXB@=E%zy!n-O)tYp~SNk7asz(#LI;s;&o{H3OMf8JV zUwCvqj!3K{SiecCI6Bon7#JrKqO9yea)+IrRR@S=aJ*73p8DYq+wIStwsIUzy-3K1 z3G3@9MxKA5-%M`Y4*2BIBrx!B8Jh>W=0;IlNhpbgKCHVm;Hlshdko=sE|_rxMg+Wr zMecd!?JBI`)*MDb+Gr%FPeNHx0`EImS%4K1W=GLnnNDk@xGHwqA)j478`HzxH+L)9 z<>MfX`1mv=?l3w*daffGqthmuO=O+=R-v5^@Y?7e!p{JCb2DJZk;1Cj@e-g2PF!cx z!QBBD55faPWbw%7G+1zu-q|KIL%2M<+jH|%h0ResE75zK1#Hzun-%Lv#2vSN??MOi z$_lP)VCuStiS%!gJIphru(>Pm!)#?JxMsr;&JJHYW)?4eUJKoeFhXeO%$2d6s!`Js5Qsfp!elNnvNs^7>;6Gvs=rKOMy7=+BcnNjmU2AA!kDVcP-c z^b+`N!>i-(E5{vLbXadzlTX~8 zOwOgw%=I~QwHsIo_cO-<{|ku1qv_xNz!_}$iCf211XV*Q=F#0naK`+;wgg#hPa&GoIv7wb|Fv}7ZRq6E61_bBR4EtZ86bH zYkZ+w(~py;ANN82_k1a5J;p3JhW9io`SCerZM6|tae|%U0e{ls4*Nl=c{DM?Woj?< z5*YNURj@bSxKBaGkE{%fWV(fCTH~5!b-=me3^aFFmd~Wo!pK_89d{QgelE)n^GAy) zQr*_`RC#1XrFfkp23oOOCEI1u$l8!KQAiVQBIoLVnqPjk@XO2WpH`>A1x4LUcwDwX zA(=CnCCb9v5{yD$4eFFP_B6nr5d;Esw`Bye zb_YfNxwY_sm5V`{rNo7UiCI4}PRi)eiCX(${L)&pJpgZjH?paqdOx}xD{x!+{?n|XM(LE-R&leyTEll$C<|Gy|uG(9m#CDp!{wQ4|hp` zX8rq>zvVRZ_<25?gY8Rc`+oKE2M`4rxgU9E#|RlFe%W^zft}KBa$GISBz|uk#s@dD zq$G7B(`S149Q1VTp-xm_BR#SwHNOKKRt?=dwCgnjUu8)rK5?v*7$pjrtuXfZ7-NT5 zy6joh3n#FvOJ)YK|9uMK546glOI&0P@OZNLORUZD6fs7f>8~UwPZIsqWbQ1r6TgUU zvczfM^<>`R2Lb8u)4P@9tPZ;(Ib>JTri3hsRkzMFTkH6l++xc1GWql}wF7Pk9L|1- zR*KQ(TbKRjfUip2VIq=^3Z8&A>MDGTFJ%5E^I5Rs?8BiF6{XkGs??!;o>h}q6Z;ji zFX8B)I~dx7UFdrM;u#+mPVAG9Qtm%;hixvObmI=A7CT_(oYb--{LTs0;8AzW7g0E>4PDVxqo4?lH_|dcHNcdPdk3UD*XMmvEK1!y?W?`jGC# z_NvUNDGZ-Hs4~L^*76GXDo1#rj!PxK$~+HwHSVyzALh_+sGBAc;&aD=?>fh2c)DeM zIzzN7ieLJ8axJ++hL_eP4?QY~3HR)Rc2m!n)2{o7I)VzO@;SU`kAR z$2&G0$B%MX!?T8C%F2$F1ZMCmhSw5z*sIheGe@hH!Q`2d zN-L`RJi$#KOH_8+YU)~gtDDOeOkWWf*H#x-RabV;y$qX#+lU&k)+9WFv6ILtysf0O zfN)!HNYE1KS}Zl|0zUp?S{+@yHqP&9l%&OWB z_(whnzi{GHJUvZ5y=Z#7>7GwpFnxj69JSZhz0}q5vKxTk%Qm8UddH19ZQT8U!)|N0 zn>*kn5qH+@_FT#HWBR#+FVu5PK11qCS|z^KbJYYCi5T+(d4Dc^p=7zMQDw%w5O>i7K~3BYJratZR*uCrB&JQlwEn+xPa_TC~{X9@Y)*V}8id z&%oyfag~V}%Xo^hW5MOSvS>!)eDtj~ZrodNfmJVK9%Ed1yDf+EtjoH^5kCJNUnTFi zio17huvTw&-p)SNo1AjIV~)Z1Bdi&Mb#R{-u^!HR`O$Z}wY-~x`xJYirKVRRFMwB4 zv&Uai&Wb%71%A}Ney`3MMy}sG z@ib4inX7O7{jxbvn-}?>WS%}+K~{jDl^;l4Z|Mj8<;*WH3CA&oDCeA3Q){=mIbZPA zZ?c&$;{C$^U`*CXnwP-K|J;)j&N^3mR&s&zwyvZloQlSZ*S9%B+u&)>Bdn*|;BnaD zVb0i{;vEIfMpoe|cer|G+n`yHX5{2kwfdJked6@~g%c-bo%l!Z(oKsy40ZR1P5ATk zDV@&P{EY8KN3s+5Lw?6k+f-PYOr#qb z!{ZK9vqov|Fx3l{uB7gSK+)%U(c4e7$8R8Whf#;Xoa9uMBifIVZhr>qs@sI+G%>i5 zXup$Ovn*?;z3!S%k*VsgApK6p9R}&{&T7C6)V*EN6*VQ#Bq_7&sKp*e7{4~Jo46); z8qRql?93)v(RBsn(!+RwGa`3YB7Al?J?=0@caURWio=Oz_U*pQ(gsbsCu#BsR;bw? zpW^`QUpJc3UwRG_{!W=zk{@8{shEmMPf(zWU(ZhNO2H>;Dmjtrjtvv1Z4%5B>FGTwrS?%!_w>Y3{C9%+ zByf^L>|YJmU7@v-i{w$XH00(G%PxTpXti?vNpJA6j*W}s0 zF*DNPoIuUG;@3|%^~U%q=(rw$ogAzUV4RW;XG(v6H5W05<;t7qwJ`|;{r2LW9JHg3 zQyQmwW96%A>ACh?^j>t{>XBPSY^+sS_^R<@GVU<;jR|idod|6NFe?96DM@Y6t3T|HL?WN~fE470baDK<6VNJrB+)DZ^U^6U>9 zL$32mCr=$OS(M_fDlZ8mTLxE8J1eZzzepQ!@oa4?BpX)bz~*>!FJ(|nBFt)u{T2EN$ZP7 zv=$NJu1I|6xoW)J9B}rgqM0eF#2wbNU&~2tA-6u1@x}?o)4kaB569VUx!wZwrl@@Il3cO;pDIn#qo9g0*~#q(L)@;R+S3g>*+>=`;a_G~(z*FoDk?1FYE$o^z~P%!AG#!qTFE zaEGt9;?91IQftR1JWeGis1cQ$oJl6fEcTI*`pHKhFGbF4IPxfr^7)g}x7ZaW3Rbl@ zB|<+#6FZB|d@Vg0^?4;sojS$IPsyxVMATtrFV*+5fF?f2bJTDzgcL#^ur3Xol-ltk zuM)6NBz-1*;!8pt3F`~I$5`FNPJD?em{UNz7F*k5izUvu+KkR=mCk!bFJRZlu^s^b zqQcfJt*LQ`nXI9;Fn3n1|7*_Puh`_DI~bi#6PY_~t5&Tm)1Ffz+_*h1`?3;Z4qH}m zseCfj+o?pEF<)n~Gg}(%7??k|%wCDr9NBTG-M^{l+ceOVowkWS1lTBX=B4$=9VXcd(DuJQ^?IsnHYp@lMX{H%>pjIFG@yg&V{l=JV+lb;}RacA+3qA7R~_Ide)B zxT$3YIJxHcCVywvwYUWHR|fJ6?DF-~UUqtElZZRaYY!~O2|j+1do-`Bye2n`JB&Mu zJIu`&HSVxi8QmGG{#~Oc`s8*)5qB7PSdGBTyl-78_`2WRO->Vd3AIhf%QtO2=L66D zQt=u}9V4fnxWm}X%-k1uSXE;VW6!vA0^Vj5|Cem-068GJa!9X#`S#!N z+&X-7HvHXc6Vd4|_!!QHdP_H(l7O?rjTB>Rg!SvTIX{g#*|D>GKU0V-+JF5w~ zPH(<}JfD}2kEC<=+YaASwh^}T61Z=Et`bKH8B-#7|< zxKI|n;{H*&>i$wkegJ09sPmjeyB;}lTKoLMsR2X3#m3gz!0D&Or|5)dzG4K4HArpa z0yUy?fIFsE2+RtAsvqjT@l(an!;+LR}O^NvYqZQv*LbMxK}vav>))6d}z!+mj|8PkMWrFt^HY_ z{TqL5=O=j1pmj?PpE+LwyV`W2>%Kbc%{}wx{*@8?g2nE;EOp;`M>DtJkBL^g?O=h^ zfg#^R{3Fj-0{#^>zM?ok>Cs2~aHyXw4t>tzteED`O6@yh%%u){-x1C2#gw?i_yTc< z?c&-A`zg2@`N9r&z~P^xJRet0^vs27SIg13*ItVv!wHT-g2cct;;6h z>Dd;)X?EkSxO-+c(m$^&*U3?SqWi|o1$O;d2fvbPu z^diUnH*=`nEB*7Fo$f+hZ@2W>*^1AN(2CmLmBI4TF=AkKp$6P`%&044%3SFOxOVX3 zO59fN-H{85cN?9+xlnoqrPhxy3yy_1f!on5dJloBHA45%Bjr%O>_q-8UUsFvY<5>RY} zJWF0F?yx$lafgk@82cn_!lzkgx<`q%GTc2x{9#TyFk~k9Ax-)Lq)kNAwE0Ik!V-aT zhuyhb@H=xRyaN?Yz zE6>giPdQ7ESJ>SnXyHM**hq+_-~>L0@g7+hpER@UsSk@Bo^( zGb%?w=sBJ0#*xt`R!%RCtn?Qc$!z4_|H^MRkl4^3?^V_~S85)#e^_5<@OsQ3-X|+C z$3p1tYOak%xfxBx%X5bpuq(z>T4i9r0v;f&ETRVjO;z0g6a-7W7K@eU_r8FD!)h3q zBMJgUfz{}p&m-av`^HBZTiU7juaqN>IEQB=4bP?E=ZRzJ_m_pEFU;-%n8=C?4;sq3 zrP0_EcbJBEMv_r(xSDaL{otb*cbnwctBG^=CVQe&WXJnHxnY!3Kaw8YBP=qq1^8Yi zX8Lb=?k|z8h389nP&n0aV00HFB1r?9Zx68lrjU!D^uJefBtMtJ(T=v^Ir49V@jHxY zZ2Py`Y}6D+ft-)AHI57E%Z<6ag|ot{m`*HtldzJ~e6MGwRo{`7+gExvTj=rg{aKvycrH!0O@oZbt;25!;cHY#~t>{ z0lJIrm5RqiV@8HWjsd((j96`gmOp@(gmrli{802eTcIz^#6IB-*PFr{#BaRAnGUmx z(%sy7w#BWI?K#QnVy8ZLHfZ{#j?05^@yYBsuJbo!y1`i13u%oj-RZZe73W%6ftf1U zS&FkTkd+XtVrYb##+<}40J+dQN6V$rPEAKjoH@pmpXA5ZM9ShW2X9XIF z8#yw%`cOxxh?8g)8%M%Qvr6Rwj+Na5><#PGPHrGzV9&+;che zenq3q1|M>MFZFDz^dE8M8zA=-8mr_m}ztYy`tM0X7A>d|>U`&Qx0 zb)3<29&fk&P$hissY_?=80v`gotv*y;Hy|#zbB_+oNnlF+6h{2m_h004)*wFryX;I z8f>2_)^yIr!FuN@i7ol;$LBRmha`iK!ZuZNc(sa;TeS)`Q0_=m$3KFT;CkF)mq5}R zY=2{93(_{hinc2ZYQ{J`?yz{^D=PGNQd5NEhOX(1Qm-*0s$JG3Z|=e(7o|n_Fv4I^ zaI㿻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∾HSZiTilFtV>zJnr&l&J*Hwo=vAD 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 z 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 y?b@xK5y Date: Mon, 6 Nov 2023 10:36:00 +0100 Subject: [PATCH 057/134] chore: update tools.json (#2291) --- config/all-tags.json | 2 +- config/tools-automated.json | 61 +++++++++++++++++++++++++++++++++++-- config/tools.json | 2 +- 3 files changed, 60 insertions(+), 5 deletions(-) diff --git a/config/all-tags.json b/config/all-tags.json index 2bcb64772e6..3ef0bff50ef 100644 --- a/config/all-tags.json +++ b/config/all-tags.json @@ -1 +1 @@ -{"languages":[{"name":"Go/Golang","color":"bg-[#8ECFDF]","borderColor":"border-[#00AFD9]"},{"name":"Java","color":"bg-[#ECA2A4]","borderColor":"border-[#EC2125]"},{"name":"JavaScript","color":"bg-[#F2F1C7]","borderColor":"border-[#BFBE86]"},{"name":"HTML","color":"bg-[#E2A291]","borderColor":"border-[#E44D26]"},{"name":"C/C++","color":"bg-[#93CDEF]","borderColor":"border-[#0080CC]"},{"name":"C#","color":"bg-[#E3AFE0]","borderColor":"border-[#9B4F96]"},{"name":"Python","color":"bg-[#A8D0EF]","borderColor":"border-[#3878AB]"},{"name":"TypeScript","color":"bg-[#7DBCFE]","borderColor":"border-[#2C78C7]"},{"name":"Kotlin","color":"bg-[#B1ACDF]","borderColor":"border-[#756BD9]"},{"name":"Scala","color":"bg-[#FFA299]","borderColor":"border-[#DF301F]"},{"name":"Markdown","color":"bg-[#BABEBF]","borderColor":"border-[#445B64]"},{"name":"YAML","color":"bg-[#FFB764]","borderColor":"border-[#F1901F]"},{"name":"R","color":"bg-[#84B5ED]","borderColor":"border-[#246BBE]"},{"name":"Ruby","color":"bg-[#FF8289]","borderColor":"border-[#FF000F]"},{"name":"Rust","color":"bg-[#FFB8AA]","borderColor":"border-[#E43716]"},{"name":"Shell","color":"bg-[#87D4FF]","borderColor":"border-[#389ED7]"},{"name":"Groovy","color":"bg-[#B6D5E5]","borderColor":"border-[#609DBC]"}],"technologies":[{"name":"Node.js","color":"bg-[#BDFF67]","borderColor":"border-[#84CE24]"},{"name":"Hermes","color":"bg-[#8AEEBD]","borderColor":"border-[#2AB672]"},{"name":"React JS","color":"bg-[#9FECFA]","borderColor":"border-[#08D8FE]"},{"name":".NET","color":"bg-[#A184FF]","borderColor":"border-[#5026D4]"},{"name":"ASP.NET","color":"bg-[#71C2FB]","borderColor":"border-[#1577BC]"},{"name":"Springboot","color":"bg-[#98E279]","borderColor":"border-[#68BC44]"},{"name":"AWS","color":"bg-[#FF9F59]","borderColor":"border-[#EF6703]"},{"name":"Docker","color":"bg-[#B8E0FF]","borderColor":"border-[#2596ED]"},{"name":"Node-RED","color":"bg-[#FF7474]","borderColor":"border-[#8F0101]"},{"name":"Maven","color":"bg-[#FF6B80]","borderColor":"border-[#CA1A33]"},{"name":"Saas","color":"bg-[#6AB8EC]","borderColor":"border-[#2275AD]"},{"name":"Kubernetes-native","color":"bg-[#D7C7F2]","borderColor":"border-[#A387D2]"},{"name":"Scala","color":"bg-[#D7C7F2]","borderColor":"border-[#A387D2]"},{"name":"Azure","color":"bg-[#4B93FF]","borderColor":"border-[#015ADF]"},{"name":"Jenkins","color":"bg-[#D7C7F2]","borderColor":"border-[#A387D2]"},{"name":"Flask","color":"bg-[#D7C7F2]","borderColor":"border-[#A387D2]"},{"name":"Nest Js","color":"bg-[#E1224E]","borderColor":"border-[#B9012b]"},{"name":"TypeScript","color":"bg-[#61d0f2]","borderColor":"border-[#40ccf7]"},{"name":"Socket.IO","color":"bg-[#61d0f2]","borderColor":"border-[#40ccf7]"},{"name":"Liquid","color":"bg-[#61d0f2]","borderColor":"border-[#40ccf7]"},{"name":"Kotlin","color":"bg-[#61d0f2]","borderColor":"border-[#40ccf7]"},{"name":"Gradle","color":"bg-[#61d0f2]","borderColor":"border-[#40ccf7]"},{"name":"Spring Cloud Streams","color":"bg-[#61d0f2]","borderColor":"border-[#40ccf7]"},{"name":"JHipster JDL","color":"bg-[#61d0f2]","borderColor":"border-[#40ccf7]"},{"name":"Groovy","color":"bg-[#61d0f2]","borderColor":"border-[#40ccf7]"},{"name":"Markdown","color":"bg-[#61d0f2]","borderColor":"border-[#40ccf7]"},{"name":"Shell","color":"bg-[#61d0f2]","borderColor":"border-[#40ccf7]"},{"name":"WebComponents","color":"bg-[#61d0f2]","borderColor":"border-[#40ccf7]"},{"name":"Babel","color":"bg-[#61d0f2]","borderColor":"border-[#40ccf7]"},{"name":"Storybook","color":"bg-[#61d0f2]","borderColor":"border-[#40ccf7]"},{"name":"AsyncAPI Generator","color":"bg-[#61d0f2]","borderColor":"border-[#40ccf7]"},{"name":"JetBrains","color":"bg-[#61d0f2]","borderColor":"border-[#40ccf7]"},{"name":"IntelliJ IDEA","color":"bg-[#61d0f2]","borderColor":"border-[#40ccf7]"},{"name":"VSCode","color":"bg-[#61d0f2]","borderColor":"border-[#40ccf7]"},{"name":"SmartPaste","color":"bg-[#61d0f2]","borderColor":"border-[#40ccf7]"}]} \ No newline at end of file +{"languages":[{"name":"Go/Golang","color":"bg-[#8ECFDF]","borderColor":"border-[#00AFD9]"},{"name":"Java","color":"bg-[#ECA2A4]","borderColor":"border-[#EC2125]"},{"name":"JavaScript","color":"bg-[#F2F1C7]","borderColor":"border-[#BFBE86]"},{"name":"HTML","color":"bg-[#E2A291]","borderColor":"border-[#E44D26]"},{"name":"C/C++","color":"bg-[#93CDEF]","borderColor":"border-[#0080CC]"},{"name":"C#","color":"bg-[#E3AFE0]","borderColor":"border-[#9B4F96]"},{"name":"Python","color":"bg-[#A8D0EF]","borderColor":"border-[#3878AB]"},{"name":"TypeScript","color":"bg-[#7DBCFE]","borderColor":"border-[#2C78C7]"},{"name":"Kotlin","color":"bg-[#B1ACDF]","borderColor":"border-[#756BD9]"},{"name":"Scala","color":"bg-[#FFA299]","borderColor":"border-[#DF301F]"},{"name":"Markdown","color":"bg-[#BABEBF]","borderColor":"border-[#445B64]"},{"name":"YAML","color":"bg-[#FFB764]","borderColor":"border-[#F1901F]"},{"name":"R","color":"bg-[#84B5ED]","borderColor":"border-[#246BBE]"},{"name":"Ruby","color":"bg-[#FF8289]","borderColor":"border-[#FF000F]"},{"name":"Rust","color":"bg-[#FFB8AA]","borderColor":"border-[#E43716]"},{"name":"Shell","color":"bg-[#87D4FF]","borderColor":"border-[#389ED7]"},{"name":"Groovy","color":"bg-[#B6D5E5]","borderColor":"border-[#609DBC]"}],"technologies":[{"name":"Node.js","color":"bg-[#BDFF67]","borderColor":"border-[#84CE24]"},{"name":"Hermes","color":"bg-[#8AEEBD]","borderColor":"border-[#2AB672]"},{"name":"React JS","color":"bg-[#9FECFA]","borderColor":"border-[#08D8FE]"},{"name":".NET","color":"bg-[#A184FF]","borderColor":"border-[#5026D4]"},{"name":"ASP.NET","color":"bg-[#71C2FB]","borderColor":"border-[#1577BC]"},{"name":"Springboot","color":"bg-[#98E279]","borderColor":"border-[#68BC44]"},{"name":"AWS","color":"bg-[#FF9F59]","borderColor":"border-[#EF6703]"},{"name":"Docker","color":"bg-[#B8E0FF]","borderColor":"border-[#2596ED]"},{"name":"Node-RED","color":"bg-[#FF7474]","borderColor":"border-[#8F0101]"},{"name":"Maven","color":"bg-[#FF6B80]","borderColor":"border-[#CA1A33]"},{"name":"Saas","color":"bg-[#6AB8EC]","borderColor":"border-[#2275AD]"},{"name":"Kubernetes-native","color":"bg-[#D7C7F2]","borderColor":"border-[#A387D2]"},{"name":"Scala","color":"bg-[#D7C7F2]","borderColor":"border-[#A387D2]"},{"name":"Azure","color":"bg-[#4B93FF]","borderColor":"border-[#015ADF]"},{"name":"Jenkins","color":"bg-[#D7C7F2]","borderColor":"border-[#A387D2]"},{"name":"Flask","color":"bg-[#D7C7F2]","borderColor":"border-[#A387D2]"},{"name":"Nest Js","color":"bg-[#E1224E]","borderColor":"border-[#B9012b]"},{"name":"TypeScript","color":"bg-[#61d0f2]","borderColor":"border-[#40ccf7]"},{"name":"Socket.IO","color":"bg-[#61d0f2]","borderColor":"border-[#40ccf7]"},{"name":"Liquid","color":"bg-[#61d0f2]","borderColor":"border-[#40ccf7]"},{"name":"Kotlin","color":"bg-[#61d0f2]","borderColor":"border-[#40ccf7]"},{"name":"Gradle","color":"bg-[#61d0f2]","borderColor":"border-[#40ccf7]"},{"name":"Spring Cloud Streams","color":"bg-[#61d0f2]","borderColor":"border-[#40ccf7]"},{"name":"JHipster JDL","color":"bg-[#61d0f2]","borderColor":"border-[#40ccf7]"},{"name":"Groovy","color":"bg-[#61d0f2]","borderColor":"border-[#40ccf7]"},{"name":"Markdown","color":"bg-[#61d0f2]","borderColor":"border-[#40ccf7]"},{"name":"Shell","color":"bg-[#61d0f2]","borderColor":"border-[#40ccf7]"},{"name":"WebComponents","color":"bg-[#61d0f2]","borderColor":"border-[#40ccf7]"},{"name":"Babel","color":"bg-[#61d0f2]","borderColor":"border-[#40ccf7]"},{"name":"Storybook","color":"bg-[#61d0f2]","borderColor":"border-[#40ccf7]"},{"name":"AsyncAPI Generator","color":"bg-[#61d0f2]","borderColor":"border-[#40ccf7]"},{"name":"JetBrains","color":"bg-[#61d0f2]","borderColor":"border-[#40ccf7]"},{"name":"IntelliJ IDEA","color":"bg-[#61d0f2]","borderColor":"border-[#40ccf7]"},{"name":"VSCode","color":"bg-[#61d0f2]","borderColor":"border-[#40ccf7]"},{"name":"SmartPaste","color":"bg-[#61d0f2]","borderColor":"border-[#40ccf7]"},{"name":"HTML","color":"bg-[#61d0f2]","borderColor":"border-[#40ccf7]"}]} \ No newline at end of file diff --git a/config/tools-automated.json b/config/tools-automated.json index c02c37e7c81..c43ce240bf9 100644 --- a/config/tools-automated.json +++ b/config/tools-automated.json @@ -462,6 +462,25 @@ "CLIs": { "description": "The following is a list of tools that you can work with in terminal or do some CI/CD automation.", "toolsList": [ + { + "title": "AsyncAPI CLI", + "description": "One CLI to rule them all. \nThis is a CLI that aims to integrate all AsyncAPI tools that you need while AsyncAPI document development and maintainance. \nYou can use it to generate docs or code, validate AsyncAPI document and event create new documents.\n", + "links": { + "websiteUrl": "https://www.asyncapi.com/tools/cli", + "repoUrl": "https://github.com/asyncapi/cli" + }, + "filters": { + "technology": [ + "TypeScript" + ], + "categories": [ + "others", + "cli" + ], + "hasCommercial": false, + "isAsyncAPIOwner": true + } + }, { "title": "ZenWave SDK", "description": "DDD and API-First for Event-Driven Microservices", @@ -493,7 +512,7 @@ "description": "One CLI to rule them all. \nThis is a CLI that aims to integrate all AsyncAPI tools that you need while AsyncAPI document development and maintainance. \nYou can use it to generate docs or code, validate AsyncAPI document and event create new documents.\n", "links": { "websiteUrl": "https://www.asyncapi.com/tools/cli", - "repoUrl": "https://github.com/asyncapi/cli" + "repoUrl": "https://github.com/hkirat/asyncapi-fork" }, "filters": { "technology": [ @@ -504,7 +523,7 @@ "cli" ], "hasCommercial": false, - "isAsyncAPIOwner": true + "isAsyncAPIOwner": false } } ] @@ -597,6 +616,24 @@ "AsyncAPI Generator Templates": { "description": "The following is a list of templates compatible with AsyncAPI Generator. You can use them to generate apps, clients or documentation from your AsyncAPI documents.", "toolsList": [ + { + "title": "HTML Template", + "description": "HTML template for AsyncAPI Generator. Use it to generate a static docs. It is using AsyncAPI React component under the hood.", + "links": { + "repoUrl": "https://github.com/asyncapi/html-template" + }, + "filters": { + "language": "javascript", + "technology": [ + "HTML" + ], + "categories": [ + "generator-template" + ], + "hasCommercial": false, + "isAsyncAPIOwner": true + } + }, { "title": "Node.js Websockets Template", "description": "Node.js WebSockets template for the AsyncAPI Generator. It showcases how from a single AsyncAPI document you can generate a server and a client at the same time.", @@ -641,7 +678,6 @@ }, "filters": { "language": [ - "Java", "javascript" ], "technology": [ @@ -679,6 +715,25 @@ "hasCommercial": false, "isAsyncAPIOwner": true } + }, + { + "title": "AsyncAPI CLI", + "description": "One CLI to rule them all. \nThis is a CLI that aims to integrate all AsyncAPI tools that you need while AsyncAPI document development and maintainance. \nYou can use it to generate docs or code, validate AsyncAPI document and event create new documents.\n", + "links": { + "websiteUrl": "https://www.asyncapi.com/tools/cli", + "repoUrl": "https://github.com/hkirat/asyncapi-fork" + }, + "filters": { + "technology": [ + "TypeScript" + ], + "categories": [ + "others", + "cli" + ], + "hasCommercial": false, + "isAsyncAPIOwner": false + } } ] } diff --git a/config/tools.json b/config/tools.json index f72005d5bf0..9c2ddb1b4e2 100644 --- a/config/tools.json +++ b/config/tools.json @@ -1 +1 @@ -{"APIs":{"description":"The following is a list of APIs that expose functionality related to AsyncAPI.","toolsList":[{"title":"API Tracker - AsyncAPI specs","description":"Explore APIs and companies with public AsyncAPI specifications.","links":{"websiteUrl":"https://apitracker.io/specifications/asyncapi","repoUrl":""},"filters":{"categories":["api","directory"],"hasCommercial":false,"isAsyncAPIOwner":false,"technology":[]}},{"title":"AsyncAPI Server API","description":"Server API providing official AsyncAPI tools","links":{"websiteUrl":"https://api.asyncapi.com/v1","docsUrl":"https://api.asyncapi.com/v1/docs","repoUrl":"https://github.com/asyncapi/server-api"},"filters":{"technology":[{"name":"Node.js","color":"bg-[#BDFF67]","borderColor":"border-[#84CE24]"},{"name":"TypeScript","color":"bg-[#61d0f2]","borderColor":"border-[#40ccf7]"}],"categories":["api"],"hasCommercial":false,"isAsyncAPIOwner":true}},{"title":"AsyncAPI-Directory by APIs.guru","description":"Directory of asynchronous API specifications in AsyncAPI format.","links":{"websiteUrl":"https://apis.guru/asyncapi-directory/","repoUrl":"https://github.com/APIs-guru/asyncapi-directory"},"filters":{"language":[{"name":"JavaScript","color":"bg-[#F2F1C7]","borderColor":"border-[#BFBE86]"}],"technology":[{"name":"Node.js","color":"bg-[#BDFF67]","borderColor":"border-[#84CE24]"},{"name":"Liquid","color":"bg-[#61d0f2]","borderColor":"border-[#40ccf7]"}],"categories":["api","directory"],"hasCommercial":false,"isAsyncAPIOwner":false}},{"title":"SIO-AsyncAPI","description":"This is code-first approach to generate AsyncAPI specification from Socket.IO server.","links":{"websiteUrl":"https://github.com/daler-rahimov/sio-asyncapi","docsUrl":"https://github.com/daler-rahimov/sio-asyncapi","repoUrl":"https://github.com/daler-rahimov/sio-asyncapi"},"filters":{"language":[{"name":"Python","color":"bg-[#A8D0EF]","borderColor":"border-[#3878AB]"}],"technology":[{"name":"Socket.IO","color":"bg-[#61d0f2]","borderColor":"border-[#40ccf7]"},{"name":"Flask","color":"bg-[#D7C7F2]","borderColor":"border-[#A387D2]"}],"categories":["code-first","api"],"hasCommercial":false,"isAsyncAPIOwner":false}}]},"Code-first tools":{"description":"The following is a list of tools that generate AsyncAPI documents from your code.","toolsList":[{"title":"AsyncAPI.Net","description":"The AsyncAPI.NET SDK contains a useful object model for AsyncAPI documents in .NET along with common serializers to extract raw OpenAPI JSON and YAML documents from the model.","links":{"websiteUrl":"https://github.com/LEGO/AsyncAPI.NET/","repoUrl":"https://github.com/LEGO/AsyncAPI.NET"},"filters":{"language":[{"name":"C#","color":"bg-[#E3AFE0]","borderColor":"border-[#9B4F96]"}],"technology":[{"name":".NET","color":"bg-[#A184FF]","borderColor":"border-[#5026D4]"},{"name":"ASP.NET","color":"bg-[#71C2FB]","borderColor":"border-[#1577BC]"}],"categories":["converters","code-first","validator"],"hasCommercial":false,"isAsyncAPIOwner":false}},{"title":"EventBridge Atlas","description":"Tool that translates your AWS EventBridge Schemas into an AsyncAPI document and a web UI.","links":{"websiteUrl":"https://eventbridge-atlas.netlify.app/","repoUrl":"https://github.com/boyney123/eventbridge-atlas"},"filters":{"technology":[{"name":"Node.js","color":"bg-[#BDFF67]","borderColor":"border-[#84CE24]"}],"categories":["code-first"],"hasCommercial":false,"isAsyncAPIOwner":false}},{"title":"FastStream","description":"A powerful and easy-to-use Python framework for building asynchronous services interacting with event streams such as Apache Kafka, RabbitMQ and NATS.","links":{"websiteUrl":"https://faststream.airt.ai","repoUrl":"https://github.com/airtai/FastStream"},"filters":{"language":[{"name":"Python","color":"bg-[#A8D0EF]","borderColor":"border-[#3878AB]"}],"categories":["code-first","framework"],"hasCommercial":false,"isAsyncAPIOwner":false,"technology":[]}},{"title":"Go AsyncAPI","description":"This library helps to create AsyncAPI spec from your Go message structures. It uses reflection to translate Go structures in JSON Schema definitions and arrange them in AsyncAPI schema.","links":{"repoUrl":"https://github.com/swaggest/go-asyncapi"},"filters":{"language":[{"name":"Go/Golang","color":"bg-[#8ECFDF]","borderColor":"border-[#00AFD9]"}],"categories":["code-first"],"hasCommercial":false,"isAsyncAPIOwner":false,"technology":[]}},{"title":"Java AsyncAPI","description":"This tool stores modules, which simplifies interacting with AsyncAPI in jvm ecosystem.","links":{"repoUrl":"https://github.com/asyncapi/jasyncapi"},"filters":{"language":[{"name":"Java","color":"bg-[#ECA2A4]","borderColor":"border-[#EC2125]"}],"technology":[{"name":"Kotlin","color":"bg-[#61d0f2]","borderColor":"border-[#40ccf7]"},{"name":"Maven","color":"bg-[#FF6B80]","borderColor":"border-[#CA1A33]"}],"categories":["code-first"],"hasCommercial":false,"isAsyncAPIOwner":true}},{"title":"KnstEventBus","description":"AsyncApi code-first tools for c#. Generates document and view.","links":{"repoUrl":"https://github.com/d0972058277/KnstEventBus"},"filters":{"language":[{"name":"C#","color":"bg-[#E3AFE0]","borderColor":"border-[#9B4F96]"}],"technology":[{"name":"ASP.NET","color":"bg-[#71C2FB]","borderColor":"border-[#1577BC]"},{"name":".NET","color":"bg-[#A184FF]","borderColor":"border-[#5026D4]"}],"categories":["code-first","documentation-generator"],"hasCommercial":false,"isAsyncAPIOwner":false}},{"title":"Kotlin AsyncAPI","description":"The Kotlin AsyncAPI project aims to provide convenience tools for generating and serving AsyncAPI documentation. The core of this project is a Kotlin DSL for building the specification in a typesafe way.","links":{"repoUrl":"https://github.com/OpenFolder/kotlin-asyncapi"},"filters":{"language":[{"name":"Kotlin","color":"bg-[#B1ACDF]","borderColor":"border-[#756BD9]"}],"technology":[{"name":"Springboot","color":"bg-[#98E279]","borderColor":"border-[#68BC44]"},{"name":"Maven","color":"bg-[#FF6B80]","borderColor":"border-[#CA1A33]"}],"categories":["code-first"],"hasCommercial":false,"isAsyncAPIOwner":false}},{"title":"nestjs-asyncapi","description":"Utilize decorators to generate AsyncAPI document utilizing DTOs (similar to @nestjs/swagger) and a web UI.","links":{"repoUrl":"https://github.com/flamewow/nestjs-asyncapi"},"filters":{"language":[{"name":"TypeScript","color":"bg-[#7DBCFE]","borderColor":"border-[#2C78C7]"}],"technology":[{"name":"Node.js","color":"bg-[#BDFF67]","borderColor":"border-[#84CE24]"},{"name":"Nest Js","color":"bg-[#E1224E]","borderColor":"border-[#B9012b]"}],"categories":["code-first"],"hasCommercial":false,"isAsyncAPIOwner":false}},{"title":"Neuroglia AsyncAPI","description":"A .NET SDK for the Async API specification. Automatically generates and serves AsyncAPI documents based on your code. Includes fluent-builders to create AsyncAPI documents from scratch, and provides a web-based GUI to browse generated documents.","links":{"repoUrl":"https://github.com/neuroglia-io/AsyncApi"},"filters":{"language":[{"name":"C#","color":"bg-[#E3AFE0]","borderColor":"border-[#9B4F96]"}],"technology":[{"name":".NET","color":"bg-[#A184FF]","borderColor":"border-[#5026D4]"}],"categories":["code-first"],"hasCommercial":false,"isAsyncAPIOwner":false}},{"title":"Saunter","description":"Saunter is an AsyncAPI documentation generator for dotnet. Generates (and hosts) an AsyncAPI schema document from your code.","links":{"repoUrl":"https://github.com/tehmantra/saunter"},"filters":{"language":[{"name":"C#","color":"bg-[#E3AFE0]","borderColor":"border-[#9B4F96]"}],"technology":[{"name":".NET","color":"bg-[#A184FF]","borderColor":"border-[#5026D4]"},{"name":"ASP.NET","color":"bg-[#71C2FB]","borderColor":"border-[#1577BC]"}],"categories":["code-first"],"hasCommercial":false,"isAsyncAPIOwner":false}},{"title":"SIO-AsyncAPI","description":"This is code-first approach to generate AsyncAPI specification from Socket.IO server.","links":{"websiteUrl":"https://github.com/daler-rahimov/sio-asyncapi","docsUrl":"https://github.com/daler-rahimov/sio-asyncapi","repoUrl":"https://github.com/daler-rahimov/sio-asyncapi"},"filters":{"language":[{"name":"Python","color":"bg-[#A8D0EF]","borderColor":"border-[#3878AB]"}],"technology":[{"name":"Socket.IO","color":"bg-[#61d0f2]","borderColor":"border-[#40ccf7]"},{"name":"Flask","color":"bg-[#D7C7F2]","borderColor":"border-[#A387D2]"}],"categories":["code-first","api"],"hasCommercial":false,"isAsyncAPIOwner":false}},{"title":"Springwolf","description":"Automated documentation for async APIs built with Spring Boot. Like Springfox for AsyncAPI. Auto-generates an AsyncAPI document and a web UI.","links":{"websiteUrl":"https://www.springwolf.dev","repoUrl":"https://github.com/springwolf/springwolf-core"},"filters":{"language":[{"name":"Java","color":"bg-[#ECA2A4]","borderColor":"border-[#EC2125]"}],"technology":[{"name":"Springboot","color":"bg-[#98E279]","borderColor":"border-[#68BC44]"},{"name":"Gradle","color":"bg-[#61d0f2]","borderColor":"border-[#40ccf7]"}],"categories":["code-first","documentation-generator"],"hasCommercial":false,"isAsyncAPIOwner":false}},{"title":"sttp tapir","description":"Library for describing HTTP endpoints, and then interpreting them as a server, client, or documentation","links":{"websiteUrl":"https://tapir.softwaremill.com/","repoUrl":"https://github.com/softwaremill/tapir"},"filters":{"language":[{"name":"Scala","color":"bg-[#FFA299]","borderColor":"border-[#DF301F]"}],"categories":["code-first"],"hasCommercial":false,"isAsyncAPIOwner":false,"technology":[]}}]},"Code Generators":{"description":"The following is a list of tools that generate code from an AsyncAPI document; not the other way around.","toolsList":[{"title":"AsyncAPI Generator","description":"Generator is a tool that you can use to generate whatever you want basing on the AsyncAPI specification file as an input.","links":{"docsUrl":"https://www.asyncapi.com/docs/tools/generator","repoUrl":"https://github.com/asyncapi/generator"},"filters":{"language":[{"name":"JavaScript","color":"bg-[#F2F1C7]","borderColor":"border-[#BFBE86]"}],"technology":[{"name":"Node.js","color":"bg-[#BDFF67]","borderColor":"border-[#84CE24]"}],"categories":["code-generator","documentation-generator"],"hasCommercial":false,"isAsyncAPIOwner":true}},{"title":"AsyncAPI Modelina","description":"Generate payload models into Java, TypeScript, Go, etc, you name it, from AsyncAPI documents. This tool gives you full control over the models through high customization","links":{"websiteUrl":"https://modelina.org","docsUrl":"https://github.com/asyncapi/modelina/tree/master/docs","repoUrl":"https://github.com/asyncapi/modelina"},"filters":{"language":[{"name":"TypeScript","color":"bg-[#7DBCFE]","borderColor":"border-[#2C78C7]"}],"technology":[{"name":"React JS","color":"bg-[#9FECFA]","borderColor":"border-[#08D8FE]"},{"name":"Docker","color":"bg-[#B8E0FF]","borderColor":"border-[#2596ED]"}],"categories":["code-generator"],"hasCommercial":false,"isAsyncAPIOwner":true}},{"title":"Golang AsyncAPI Code Generator","description":"Generate Go user and application boilerplate from AsyncAPI specifications. Can be called from `go generate` without requirements.\n","links":{"repoUrl":"https://github.com/lerenn/asyncapi-codegen"},"filters":{"language":[{"name":"Go/Golang","color":"bg-[#8ECFDF]","borderColor":"border-[#00AFD9]"}],"categories":["code-generator"],"hasCommercial":false,"isAsyncAPIOwner":false,"technology":[]}},{"title":"MultiAPI Generator","description":"This is a plugin designed to help developers automatizing the creation of code classes from YML files based on AsyncApi and OpenAPI. It is presented in 2 flavours Maven and Gradle","links":{"repoUrl":"https://github.com/sngular/scs-multiapi-plugin"},"filters":{"language":[{"name":"Java","color":"bg-[#ECA2A4]","borderColor":"border-[#EC2125]"}],"technology":[{"name":"Groovy","color":"bg-[#61d0f2]","borderColor":"border-[#40ccf7]"},{"name":"Maven","color":"bg-[#FF6B80]","borderColor":"border-[#CA1A33]"}],"categories":["code-generator"],"hasCommercial":false,"isAsyncAPIOwner":false}},{"title":"Node-RED AsyncAPI plugin","description":"A plugin for generating and configuring nodes for Kafka, MQTT, AMQP, etc. automatically from an AsyncAPI specification.","links":{"repoUrl":"https://github.com/dalelane/node-red-contrib-plugin-asyncapi"},"filters":{"technology":[{"name":"Node-RED","color":"bg-[#FF7474]","borderColor":"border-[#8F0101]"}],"categories":["code-generator"],"hasCommercial":false,"isAsyncAPIOwner":false}},{"title":"ZenWave SDK","description":"DDD and API-First for Event-Driven Microservices","links":{"websiteUrl":"https://zenwave360.github.io/","docsUrl":"https://zenwave360.github.io/zenwave-sdk/plugins/asyncapi-spring-cloud-streams3/","repoUrl":"https://github.com/zenwave360/zenwave-sdk"},"filters":{"language":[{"name":"Java","color":"bg-[#ECA2A4]","borderColor":"border-[#EC2125]"}],"technology":[{"name":"Maven","color":"bg-[#FF6B80]","borderColor":"border-[#CA1A33]"},{"name":"Liquid","color":"bg-[#61d0f2]","borderColor":"border-[#40ccf7]"},{"name":"Spring Cloud Streams","color":"bg-[#61d0f2]","borderColor":"border-[#40ccf7]"},{"name":"JHipster JDL","color":"bg-[#61d0f2]","borderColor":"border-[#40ccf7]"}],"categories":["code-generator","dsl","mocking-and-testing","cli"],"hasCommercial":false,"isAsyncAPIOwner":false}}]},"Converters":{"description":"The following is a list of tools that do not yet belong to any specific category but are also useful for the community.","toolsList":[{"title":"AsyncAPI-format","description":"Format an AsyncAPI document by ordering, casing, formatting, and filtering fields.","links":{"repoUrl":"https://github.com/thim81/asyncapi-format"},"filters":{"language":[{"name":"JavaScript","color":"bg-[#F2F1C7]","borderColor":"border-[#BFBE86]"}],"technology":[{"name":"Node.js","color":"bg-[#BDFF67]","borderColor":"border-[#84CE24]"}],"categories":["converter","cli"],"hasCommercial":false,"isAsyncAPIOwner":false}},{"title":"AsyncAPI.Net","description":"The AsyncAPI.NET SDK contains a useful object model for AsyncAPI documents in .NET along with common serializers to extract raw OpenAPI JSON and YAML documents from the model.","links":{"websiteUrl":"https://github.com/LEGO/AsyncAPI.NET/","repoUrl":"https://github.com/LEGO/AsyncAPI.NET"},"filters":{"language":[{"name":"C#","color":"bg-[#E3AFE0]","borderColor":"border-[#9B4F96]"}],"technology":[{"name":".NET","color":"bg-[#A184FF]","borderColor":"border-[#5026D4]"},{"name":"ASP.NET","color":"bg-[#71C2FB]","borderColor":"border-[#1577BC]"}],"categories":["converters","code-first","validator"],"hasCommercial":false,"isAsyncAPIOwner":false}},{"title":"Converter","description":"Converts old versions of AsyncAPI files into the latest version.","links":{"repoUrl":"https://github.com/asyncapi/converter-js"},"filters":{"language":[{"name":"TypeScript","color":"bg-[#7DBCFE]","borderColor":"border-[#2C78C7]"}],"technology":[{"name":"Node.js","color":"bg-[#BDFF67]","borderColor":"border-[#84CE24]"}],"categories":["converter"],"hasCommercial":false,"isAsyncAPIOwner":true}},{"title":"Converter-Go","description":"The AsyncAPI Converter converts AsyncAPI documents from versions 1.0.0, 1.1.0 and 1.2.0 to version 2.0.0. It supports both json and yaml formats on input and output. By default, the AsyncAPI Converter converts a document into the json format.","links":{"repoUrl":"https://github.com/asyncapi/converter-go"},"filters":{"language":[{"name":"Go/Golang","color":"bg-[#8ECFDF]","borderColor":"border-[#00AFD9]"}],"categories":["converter"],"hasCommercial":false,"isAsyncAPIOwner":true,"technology":[]}}]},"Directories":{"description":"The following is a list of directories that index public AsyncAPI documents.","toolsList":[{"title":"API Tracker - AsyncAPI specs","description":"Explore APIs and companies with public AsyncAPI specifications.","links":{"websiteUrl":"https://apitracker.io/specifications/asyncapi","repoUrl":""},"filters":{"categories":["api","directory"],"hasCommercial":false,"isAsyncAPIOwner":false,"technology":[]}},{"title":"AsyncAPI-Directory by APIs.guru","description":"Directory of asynchronous API specifications in AsyncAPI format.","links":{"websiteUrl":"https://apis.guru/asyncapi-directory/","repoUrl":"https://github.com/APIs-guru/asyncapi-directory"},"filters":{"language":[{"name":"JavaScript","color":"bg-[#F2F1C7]","borderColor":"border-[#BFBE86]"}],"technology":[{"name":"Node.js","color":"bg-[#BDFF67]","borderColor":"border-[#84CE24]"},{"name":"Liquid","color":"bg-[#61d0f2]","borderColor":"border-[#40ccf7]"}],"categories":["api","directory"],"hasCommercial":false,"isAsyncAPIOwner":false}}]},"Documentation Generators":{"description":"The following is a list of tools that generate human-readable documentation from an AsyncAPI document.","toolsList":[{"title":"AsyncAPI Generator","description":"Generator is a tool that you can use to generate whatever you want basing on the AsyncAPI specification file as an input.","links":{"docsUrl":"https://www.asyncapi.com/docs/tools/generator","repoUrl":"https://github.com/asyncapi/generator"},"filters":{"language":[{"name":"JavaScript","color":"bg-[#F2F1C7]","borderColor":"border-[#BFBE86]"}],"technology":[{"name":"Node.js","color":"bg-[#BDFF67]","borderColor":"border-[#84CE24]"},{"name":"Markdown","color":"bg-[#61d0f2]","borderColor":"border-[#40ccf7]"}],"categories":["code-generator","documentation-generator"],"hasCommercial":false,"isAsyncAPIOwner":true}},{"title":"asyncapi-asciidoc-template","description":"Asciidoc template for the asyncapi generator","links":{"repoUrl":"https://gitlab.com/djencks/asyncapi-asciidoc-template"},"filters":{"language":[{"name":"JavaScript","color":"bg-[#F2F1C7]","borderColor":"border-[#BFBE86]"}],"technology":[{"name":"React JS","color":"bg-[#9FECFA]","borderColor":"border-[#08D8FE]"}],"categories":["documentation-generator","generator-template"],"hasCommercial":false,"isAsyncAPIOwner":false}},{"title":"Bump.sh","description":"OpenAPI 2 & 3 / AsyncAPI 2 documentation generator, with automatic changelog and visual diff.","links":{"websiteUrl":"https://bump.sh/","repoUrl":""},"filters":{"categories":["documentation-generator"],"hasCommercial":true,"isAsyncAPIOwner":false,"technology":[]}},{"title":"Cupid","description":"A library that focuses on finding and analyzing the relationships between AsyncAPI documents. It outputs a map of the system architecture.","links":{"repoUrl":"https://github.com/asyncapi/cupid"},"filters":{"language":[{"name":"JavaScript","color":"bg-[#F2F1C7]","borderColor":"border-[#BFBE86]"}],"technology":[{"name":"Node.js","color":"bg-[#BDFF67]","borderColor":"border-[#84CE24]"}],"categories":["documentation-generator"],"hasCommercial":false,"isAsyncAPIOwner":true}},{"title":"KnstEventBus","description":"AsyncApi code-first tools for c#. Generates document and view.","links":{"repoUrl":"https://github.com/d0972058277/KnstEventBus"},"filters":{"language":[{"name":"C#","color":"bg-[#E3AFE0]","borderColor":"border-[#9B4F96]"}],"technology":[{"name":"ASP.NET","color":"bg-[#71C2FB]","borderColor":"border-[#1577BC]"},{"name":".NET","color":"bg-[#A184FF]","borderColor":"border-[#5026D4]"}],"categories":["code-first","documentation-generator"],"hasCommercial":false,"isAsyncAPIOwner":false}},{"title":"Springwolf","description":"Automated documentation for async APIs built with Spring Boot. Like Springfox for AsyncAPI. Auto-generates an AsyncAPI document and a web UI.","links":{"websiteUrl":"https://www.springwolf.dev","repoUrl":"https://github.com/springwolf/springwolf-core"},"filters":{"language":[{"name":"Java","color":"bg-[#ECA2A4]","borderColor":"border-[#EC2125]"}],"technology":[{"name":"Springboot","color":"bg-[#98E279]","borderColor":"border-[#68BC44]"},{"name":"Gradle","color":"bg-[#61d0f2]","borderColor":"border-[#40ccf7]"}],"categories":["code-first","documentation-generator"],"hasCommercial":false,"isAsyncAPIOwner":false}},{"title":"Widdershins","description":"OpenAPI 3.0 / Swagger 2.0 / AsyncAPI 1.0 definition to Slate / Shins compatible markdown.","links":{"websiteUrl":"https://mermade.github.io/reslate/","repoUrl":"https://github.com/Mermade/widdershins"},"filters":{"language":[{"name":"JavaScript","color":"bg-[#F2F1C7]","borderColor":"border-[#BFBE86]"}],"technology":[{"name":"Node.js","color":"bg-[#BDFF67]","borderColor":"border-[#84CE24]"},{"name":"Shell","color":"bg-[#61d0f2]","borderColor":"border-[#40ccf7]"}],"categories":["documentation-generator"],"hasCommercial":false,"isAsyncAPIOwner":false}}]},"Editors":{"description":"The following is a list of editors or related tools that allow editing of AsyncAPI document.","toolsList":[{"title":"AsyncAPI Studio","description":"Visually design your AsyncAPI files and event-driven architecture.","links":{"websiteUrl":"https://studio.asyncapi.com","repoUrl":"https://github.com/asyncapi/studio"},"filters":{"technology":[{"name":"React JS","color":"bg-[#9FECFA]","borderColor":"border-[#08D8FE]"},{"name":"TypeScript","color":"bg-[#61d0f2]","borderColor":"border-[#40ccf7]"}],"categories":["editor"],"hasCommercial":false,"isAsyncAPIOwner":true}}]},"UI components":{"description":"The following is a list of UI components to view AsyncAPI documents.","toolsList":[{"title":"Api-Diff-Viewer","description":"React component to view the difference between two Json based API documents. Supported specifications: JsonSchema, OpenAPI 3.x, AsyncAPI 2.x.","links":{"repoUrl":"https://github.com/udamir/api-diff-viewer","websiteUrl":"https://api-diff-viewer.vercel.app/"},"filters":{"language":[{"name":"TypeScript","color":"bg-[#7DBCFE]","borderColor":"border-[#2C78C7]"}],"technology":[{"name":"React JS","color":"bg-[#9FECFA]","borderColor":"border-[#08D8FE]"},{"name":"Babel","color":"bg-[#61d0f2]","borderColor":"border-[#40ccf7]"},{"name":"Storybook","color":"bg-[#61d0f2]","borderColor":"border-[#40ccf7]"}],"categories":["ui-component"],"hasCommercial":false,"isAsyncAPIOwner":false}},{"title":"AsyncAPI React component","description":"React component for rendering documentation from your specification in real-time in the browser. It also provides a WebComponent and bundle for Angular and Vue","links":{"repoUrl":"https://github.com/asyncapi/asyncapi-react"},"filters":{"language":[{"name":"TypeScript","color":"bg-[#7DBCFE]","borderColor":"border-[#2C78C7]"}],"technology":[{"name":"React JS","color":"bg-[#9FECFA]","borderColor":"border-[#08D8FE]"},{"name":"WebComponents","color":"bg-[#61d0f2]","borderColor":"border-[#40ccf7]"}],"categories":["ui-component"],"hasCommercial":false,"isAsyncAPIOwner":true}}]},"DSL":{"description":"Writing YAML by hand is no fun, and maybe you don't want a GUI, so use a Domain Specific Language to write AsyncAPI in your language of choice.","toolsList":[{"title":"BOATS","description":"Compile your single AsyncAPI file from multiple YAML files with BOATS and with the help of the template engine Nunjucks, plus a many extra helpers to automate much of the donkey work.","links":{"repoUrl":"https://github.com/j-d-carmichael/boats"},"filters":{"language":[{"name":"TypeScript","color":"bg-[#7DBCFE]","borderColor":"border-[#2C78C7]"}],"technology":[{"name":"Node.js","color":"bg-[#BDFF67]","borderColor":"border-[#84CE24]"}],"categories":["dsl"],"hasCommercial":false,"isAsyncAPIOwner":false}},{"title":"ZenWave SDK","description":"DDD and API-First for Event-Driven Microservices","links":{"websiteUrl":"https://zenwave360.github.io/","docsUrl":"https://zenwave360.github.io/zenwave-sdk/plugins/asyncapi-spring-cloud-streams3/","repoUrl":"https://github.com/zenwave360/zenwave-sdk"},"filters":{"language":[{"name":"Java","color":"bg-[#ECA2A4]","borderColor":"border-[#EC2125]"}],"technology":[{"name":"Maven","color":"bg-[#FF6B80]","borderColor":"border-[#CA1A33]"},{"name":"Liquid","color":"bg-[#61d0f2]","borderColor":"border-[#40ccf7]"},{"name":"Spring Cloud Streams","color":"bg-[#61d0f2]","borderColor":"border-[#40ccf7]"},{"name":"JHipster JDL","color":"bg-[#61d0f2]","borderColor":"border-[#40ccf7]"}],"categories":["code-generator","dsl","mocking-and-testing","cli"],"hasCommercial":false,"isAsyncAPIOwner":false}}]},"Frameworks":{"description":"The following is a list of API/application frameworks that make use of AsyncAPI.","toolsList":[{"title":"Asynction","description":"SocketIO server framework driven by the AsyncAPI specification. Asynction guarantees that your API will work in accordance with its AsyncAPI documentation. Built on top of Flask-SocketIO.","links":{"websiteUrl":"https://pypi.org/project/asynction/","repoUrl":"https://github.com/dedoussis/asynction"},"filters":{"language":[{"name":"Python","color":"bg-[#A8D0EF]","borderColor":"border-[#3878AB]"}],"technology":[{"name":"Flask","color":"bg-[#D7C7F2]","borderColor":"border-[#A387D2]"}],"categories":["framework"],"hasCommercial":false,"isAsyncAPIOwner":false}},{"title":"FastStream","description":"A powerful and easy-to-use Python framework for building asynchronous services interacting with event streams such as Apache Kafka, RabbitMQ and NATS.","links":{"websiteUrl":"https://faststream.airt.ai","repoUrl":"https://github.com/airtai/FastStream"},"filters":{"language":[{"name":"Python","color":"bg-[#A8D0EF]","borderColor":"border-[#3878AB]"}],"categories":["code-first","framework"],"hasCommercial":false,"isAsyncAPIOwner":false,"technology":[]}}]},"GitHub Actions":{"description":"The following is a list of GitHub Actions that you can use in your workflows","toolsList":[{"title":"API documentation generation on Bump.sh","description":"With this GitHub Action you can automatically generate your API reference (with the changelog and diff) on Bump.sh from any AsyncAPI file.","links":{"websiteUrl":"https://github.com/marketplace/actions/api-documentation-on-bump","repoUrl":"https://github.com/bump-sh/github-action"},"filters":{"language":[{"name":"TypeScript","color":"bg-[#7DBCFE]","borderColor":"border-[#2C78C7]"}],"categories":["github-action"],"hasCommercial":false,"isAsyncAPIOwner":false,"technology":[]}},{"title":"AsyncAPI GitHub Action","description":"This action validates if the AsyncAPI schema file is valid or not.","links":{"websiteUrl":"https://github.com/marketplace/actions/asyncapi-github-action","repoUrl":"https://github.com/WaleedAshraf/asyncapi-github-action"},"filters":{"language":[{"name":"JavaScript","color":"bg-[#F2F1C7]","borderColor":"border-[#BFBE86]"}],"technology":[{"name":"Node.js","color":"bg-[#BDFF67]","borderColor":"border-[#84CE24]"}],"categories":["github-action","validator"],"hasCommercial":false,"isAsyncAPIOwner":false}},{"title":"Automated version bump for AsyncAPI documents","description":"With this GitHub Action, you can automatically bump the version based on commit messages, which is similar to what semantic-release is for NPM.","links":{"websiteUrl":"https://github.com/marketplace/actions/automated-version-bump-for-asyncapi","repoUrl":"https://github.com/bump-sh/github-action"},"filters":{"language":[{"name":"JavaScript","color":"bg-[#F2F1C7]","borderColor":"border-[#BFBE86]"}],"technology":[{"name":"Node.js","color":"bg-[#BDFF67]","borderColor":"border-[#84CE24]"}],"categories":["github-action"],"hasCommercial":false,"isAsyncAPIOwner":false}},{"title":"GitHub Action for Generator","description":"GitHub Action to generate all the things from your AsyncAPI document using the AsyncAPI generator","links":{"repoUrl":"https://github.com/asyncapi/github-action-for-generator"},"filters":{"technology":[{"name":"AsyncAPI Generator","color":"bg-[#61d0f2]","borderColor":"border-[#40ccf7]"}],"categories":["github-action"],"hasCommercial":false,"isAsyncAPIOwner":true}},{"title":"GitHub Action for Generator","description":null,"links":{"repoUrl":"https://github.com/actions-marketplace-validations/asyncapi_github-action-for-generator"},"filters":{"technology":[{"name":"AsyncAPI Generator","color":"bg-[#61d0f2]","borderColor":"border-[#40ccf7]"}],"categories":["github-action"],"hasCommercial":false,"isAsyncAPIOwner":false}}]},"Mocking and Testing":{"description":"The tools below take specification documents as input, then publish fake messages to broker destinations for simulation purposes. They may also check that publisher messages are compliant with schemas.","toolsList":[{"title":"Microcks","description":"Mocking and testing platform for API and microservices. Turn your AsyncAPI, OpenAPI contract examples, or Postman collections into ready-to-use mocks. Use examples to simulate and validate received messages according to schema elements.","links":{"websiteUrl":"https://microcks.io/","repoUrl":"https://github.com/microcks/microcks"},"filters":{"language":[{"name":"Java","color":"bg-[#ECA2A4]","borderColor":"border-[#EC2125]"}],"technology":[{"name":"TypeScript","color":"bg-[#61d0f2]","borderColor":"border-[#40ccf7]"},{"name":"Kubernetes-native","color":"bg-[#D7C7F2]","borderColor":"border-[#A387D2]"},{"name":"Saas","color":"bg-[#6AB8EC]","borderColor":"border-[#2275AD]"}],"categories":["mocking-and-testing"],"hasCommercial":false,"isAsyncAPIOwner":false}},{"title":"MultiAPI Converter","description":"Use AsyncAPI definition, to generate Spring Cloud Contract producer validation or consumer stubs, using maven.","links":{"repoUrl":"https://github.com/sngular/scc-multiapi-converter"},"filters":{"language":[{"name":"Java","color":"bg-[#ECA2A4]","borderColor":"border-[#EC2125]"}],"technology":[{"name":"Springboot","color":"bg-[#98E279]","borderColor":"border-[#68BC44]"}],"categories":["mocking-and-testing"],"hasCommercial":false,"isAsyncAPIOwner":false}},{"title":"Specmatic","description":"An API contract testing tool that helps ensure the correctness APIs by automatically generating test cases and verifying them against the API spec. It simplifies the process of testing APIs and reduces the likelihood of bugs and compatibility issues.","links":{"websiteUrl":"https://specmatic.in","docsUrl":"https://specmatic.in/documentation/","repoUrl":"https://github.com/znsio/specmatic"},"filters":{"language":[{"name":"Kotlin","color":"bg-[#B1ACDF]","borderColor":"border-[#756BD9]"}],"technology":[{"name":"Maven","color":"bg-[#FF6B80]","borderColor":"border-[#CA1A33]"}],"categories":["mocking-and-testing"],"hasCommercial":false,"isAsyncAPIOwner":false}},{"title":"Virtualan","description":"Mocking and testing platform for API and microservices. Allows you to create and setup mocks for OpenAPI and AsyncAPI contracts. Shows how to setup and create AsyncAPI GitHub Reference Examples and OpenAPI GitHub Reference Examples.","links":{"websiteUrl":"https://www.virtualan.io/index.html","repoUrl":"https://github.com/virtualansoftware"},"filters":{"technology":[{"name":"Kubernetes-native","color":"bg-[#D7C7F2]","borderColor":"border-[#A387D2]"}],"categories":["mocking-and-testing"],"hasCommercial":false,"isAsyncAPIOwner":false}},{"title":"ZenWave SDK","description":"DDD and API-First for Event-Driven Microservices","links":{"websiteUrl":"https://zenwave360.github.io/","docsUrl":"https://zenwave360.github.io/zenwave-sdk/plugins/asyncapi-spring-cloud-streams3/","repoUrl":"https://github.com/zenwave360/zenwave-sdk"},"filters":{"language":[{"name":"Java","color":"bg-[#ECA2A4]","borderColor":"border-[#EC2125]"}],"technology":[{"name":"Maven","color":"bg-[#FF6B80]","borderColor":"border-[#CA1A33]"},{"name":"Liquid","color":"bg-[#61d0f2]","borderColor":"border-[#40ccf7]"},{"name":"Spring Cloud Streams","color":"bg-[#61d0f2]","borderColor":"border-[#40ccf7]"},{"name":"JHipster JDL","color":"bg-[#61d0f2]","borderColor":"border-[#40ccf7]"}],"categories":["code-generator","dsl","mocking-and-testing","cli"],"hasCommercial":false,"isAsyncAPIOwner":false}}]},"Validators":{"description":"The following is a list of tools that validate AsyncAPI documents.","toolsList":[{"title":"AMF","description":"AMF (AML Modeling Framework) is an open-source library capable of parsing and validating AML metadata documents.","links":{"docsUrl":"https://a.ml/docs/","repoUrl":"https://github.com/aml-org/amf"},"filters":{"language":[{"name":"Scala","color":"bg-[#FFA299]","borderColor":"border-[#DF301F]"}],"categories":["validator"],"hasCommercial":false,"isAsyncAPIOwner":false,"technology":[]}},{"title":"AsyncAPI GitHub Action","description":"This action validates if the AsyncAPI schema file is valid or not.","links":{"websiteUrl":"https://github.com/marketplace/actions/asyncapi-github-action","repoUrl":"https://github.com/WaleedAshraf/asyncapi-github-action"},"filters":{"language":[{"name":"JavaScript","color":"bg-[#F2F1C7]","borderColor":"border-[#BFBE86]"}],"technology":[{"name":"Node.js","color":"bg-[#BDFF67]","borderColor":"border-[#84CE24]"}],"categories":["github-action","validator"],"hasCommercial":false,"isAsyncAPIOwner":false}},{"title":"AsyncAPI Parser","description":"Use this package to parse and validate AsyncAPI documents —either YAML or JSON— in your Node.js or browser application. Updated bundle for the browser is always attached to the GitHub Release.","links":{"repoUrl":"https://github.com/asyncapi/parser-js"},"filters":{"language":[{"name":"JavaScript","color":"bg-[#F2F1C7]","borderColor":"border-[#BFBE86]"}],"technology":[{"name":"Node.js","color":"bg-[#BDFF67]","borderColor":"border-[#84CE24]"}],"categories":["validator"],"hasCommercial":false,"isAsyncAPIOwner":true}},{"title":"AsyncAPI Parser","description":"The AsyncAPI Parser validates AsyncAPI documents according to dedicated schemas.","links":{"repoUrl":"https://github.com/asyncapi/parser-go"},"filters":{"language":[{"name":"Go/Golang","color":"bg-[#8ECFDF]","borderColor":"border-[#00AFD9]"}],"categories":["validator"],"hasCommercial":false,"isAsyncAPIOwner":true,"technology":[]}},{"title":"AsyncAPI Parser Wrapper","description":"Use this library to parse and validate AsyncAPI documents — either YAML or JSON — in your Java application. It is a Java wrapper over JavaScript Parser implemented using J2V8.","links":{"repoUrl":"https://github.com/AsyncAPITools/parser-java-wrapper"},"filters":{"language":[{"name":"Java","color":"bg-[#ECA2A4]","borderColor":"border-[#EC2125]"}],"categories":["validator"],"hasCommercial":false,"isAsyncAPIOwner":false,"technology":[]}},{"title":"asyncapi-validator","description":"It allows you to validate the schema of your messages against your AsyncAPI schema definition. You can use it with Kafka, RabbitMQ or any other messaging/queue.","links":{"repoUrl":"https://github.com/WaleedAshraf/asyncapi-validator"},"filters":{"language":[{"name":"JavaScript","color":"bg-[#F2F1C7]","borderColor":"border-[#BFBE86]"}],"technology":[{"name":"Node.js","color":"bg-[#BDFF67]","borderColor":"border-[#84CE24]"}],"categories":["validator"],"hasCommercial":false,"isAsyncAPIOwner":false}},{"title":"AsyncAPI.Net","description":"The AsyncAPI.NET SDK contains a useful object model for AsyncAPI documents in .NET along with common serializers to extract raw OpenAPI JSON and YAML documents from the model.","links":{"websiteUrl":"https://github.com/LEGO/AsyncAPI.NET/","repoUrl":"https://github.com/LEGO/AsyncAPI.NET"},"filters":{"language":[{"name":"C#","color":"bg-[#E3AFE0]","borderColor":"border-[#9B4F96]"}],"technology":[{"name":".NET","color":"bg-[#A184FF]","borderColor":"border-[#5026D4]"},{"name":"ASP.NET","color":"bg-[#71C2FB]","borderColor":"border-[#1577BC]"}],"categories":["converters","code-first","validator"],"hasCommercial":false,"isAsyncAPIOwner":false}},{"title":"Spectral","description":"A flexible JSON/YAML linter for creating automated style guides, with baked in support for OpenAPI v3.1, v3.0, and v2.0 as well as AsyncAPI v2.x.","links":{"repoUrl":"https://github.com/stoplightio/spectral"},"filters":{"language":[{"name":"TypeScript","color":"bg-[#7DBCFE]","borderColor":"border-[#2C78C7]"}],"technology":[{"name":"Node.js","color":"bg-[#BDFF67]","borderColor":"border-[#84CE24]"}],"categories":["validator"],"hasCommercial":false,"isAsyncAPIOwner":false}}]},"Compare tools":{"description":"The following is a list of tools that compare AsyncAPI documents.","toolsList":[{"title":"Api-Smart-Diff","description":"It allows you to compare two API documents and classify changes. Supported API specifications: OpenAPI, AsyncAPI, JsonSchema.","links":{"repoUrl":"https://github.com/udamir/api-smart-diff"},"filters":{"language":[{"name":"TypeScript","color":"bg-[#7DBCFE]","borderColor":"border-[#2C78C7]"}],"categories":["compare-tool"],"hasCommercial":false,"isAsyncAPIOwner":false,"technology":[]}},{"title":"AsyncAPI Diff","description":"Diff is a library that compares two AsyncAPI Documents and provides information about the differences by pointing out explicitly information like breaking changes.","links":{"repoUrl":"https://github.com/asyncapi/diff"},"filters":{"language":[{"name":"TypeScript","color":"bg-[#7DBCFE]","borderColor":"border-[#2C78C7]"}],"technology":[{"name":"TypeScript","color":"bg-[#61d0f2]","borderColor":"border-[#40ccf7]"}],"categories":["compare-tool"],"hasCommercial":false,"isAsyncAPIOwner":true}},{"title":"jasyncapicmp","description":"Tool for comparing two AsyncAPI versions and evaluating compatibility.","links":{"websiteUrl":"https://siom79.github.io/jasyncapicmp/","docsUrl":"https://github.com/siom79/jasyncapicmp","repoUrl":"https://github.com/siom79/jasyncapicmp"},"filters":{"language":[{"name":"Java","color":"bg-[#ECA2A4]","borderColor":"border-[#EC2125]"}],"technology":[{"name":"Maven","color":"bg-[#FF6B80]","borderColor":"border-[#CA1A33]"}],"categories":["compare-tool"],"hasCommercial":false,"isAsyncAPIOwner":false}},{"title":"jasyncapicmp","description":"Tool/library/maven-plugin for comparing two AsyncAPI versions and evaluating compatibility.","links":{"websiteUrl":"https://siom79.github.io/jasyncapicmp/","repoUrl":"https://github.com/siom79/jasyncapicmp"},"filters":{"language":[{"name":"Java","color":"bg-[#ECA2A4]","borderColor":"border-[#EC2125]"}],"technology":[{"name":"Maven","color":"bg-[#FF6B80]","borderColor":"border-[#CA1A33]"}],"categories":["compare-tool"],"hasCommercial":false,"isAsyncAPIOwner":false}}]},"CLIs":{"description":"The following is a list of tools that you can work with in terminal or do some CI/CD automation.","toolsList":[{"title":"AsyncAPI CLI","description":"One CLI to rule them all. \nThis is a CLI that aims to integrate all AsyncAPI tools that you need while AsyncAPI document development and maintainance. \nYou can use it to generate docs or code, validate AsyncAPI document and event create new documents.\n","links":{"websiteUrl":"https://www.asyncapi.com/tools/cli","repoUrl":"https://github.com/asyncapi/cli"},"filters":{"technology":[{"name":"TypeScript","color":"bg-[#61d0f2]","borderColor":"border-[#40ccf7]"}],"categories":["others","cli"],"hasCommercial":false,"isAsyncAPIOwner":true}},{"title":"AsyncAPI-format","description":"Format an AsyncAPI document by ordering, casing, formatting, and filtering fields.","links":{"repoUrl":"https://github.com/asyncapi/converter-go"},"filters":{"language":[{"name":"JavaScript","color":"bg-[#F2F1C7]","borderColor":"border-[#BFBE86]"}],"technology":[{"name":"Node.js","color":"bg-[#BDFF67]","borderColor":"border-[#84CE24]"}],"categories":["converter","cli"],"hasCommercial":false,"isAsyncAPIOwner":true}},{"title":"ZenWave SDK","description":"DDD and API-First for Event-Driven Microservices","links":{"websiteUrl":"https://zenwave360.github.io/","docsUrl":"https://zenwave360.github.io/zenwave-sdk/plugins/asyncapi-spring-cloud-streams3/","repoUrl":"https://github.com/zenwave360/zenwave-sdk"},"filters":{"language":[{"name":"Java","color":"bg-[#ECA2A4]","borderColor":"border-[#EC2125]"}],"technology":[{"name":"Maven","color":"bg-[#FF6B80]","borderColor":"border-[#CA1A33]"},{"name":"Liquid","color":"bg-[#61d0f2]","borderColor":"border-[#40ccf7]"},{"name":"Spring Cloud Streams","color":"bg-[#61d0f2]","borderColor":"border-[#40ccf7]"},{"name":"JHipster JDL","color":"bg-[#61d0f2]","borderColor":"border-[#40ccf7]"}],"categories":["code-generator","dsl","mocking-and-testing","cli"],"hasCommercial":false,"isAsyncAPIOwner":false}}]},"Bundlers":{"description":"The following is a list of tools that you can work with to bundle AsyncAPI documents.","toolsList":[{"title":"Api-ref-bundler","description":"It allows you bundle/dereference external/internal $refs in Json based API document. Supported specifications: OpenAPI, AsyncAPI, JsonSchema.","links":{"repoUrl":"https://github.com/udamir/api-ref-bundler"},"filters":{"language":[{"name":"TypeScript","color":"bg-[#7DBCFE]","borderColor":"border-[#2C78C7]"}],"technology":[{"name":"TypeScript","color":"bg-[#61d0f2]","borderColor":"border-[#40ccf7]"}],"categories":["bundler"],"hasCommercial":false,"isAsyncAPIOwner":false}},{"title":"AsyncAPI Bundler","description":"Combine multiple AsyncAPI specification files into one.","links":{"repoUrl":"https://github.com/asyncapi/bundler"},"filters":{"language":[{"name":"TypeScript","color":"bg-[#7DBCFE]","borderColor":"border-[#2C78C7]"}],"technology":[{"name":"TypeScript","color":"bg-[#61d0f2]","borderColor":"border-[#40ccf7]"}],"categories":["bundler"],"hasCommercial":false,"isAsyncAPIOwner":true}}]},"IDE Extensions":{"description":"The following is a list of extensions for different IDEs like VSCode, IntelliJ IDEA and others","toolsList":[{"title":"asyncapi-preview","description":"VSCode extension that enables you to:\n - Preview documentation generated using you AsyncAPI document. It uses AsyncAPI React component under the hood,\n - Create AsyncAPI documents faster using SmartPaste functionality\n","links":{"repoUrl":"https://github.com/asyncapi/vs-asyncapi-preview"},"filters":{"technology":[{"name":"VSCode","color":"bg-[#61d0f2]","borderColor":"border-[#40ccf7]"},{"name":"SmartPaste","color":"bg-[#61d0f2]","borderColor":"border-[#40ccf7]"}],"categories":["ide-extension"],"hasCommercial":false,"isAsyncAPIOwner":true}},{"title":"asyncapi-preview","description":"VSCode extension that enables you to:\n - Preview documentation generated using you AsyncAPI document. It uses AsyncAPI React component under the hood,\n - Create AsyncAPI documents faster using SmartPaste functionality\n","links":{"repoUrl":"https://github.com/Savio629/testing2"},"filters":{"technology":[{"name":"VSCode","color":"bg-[#61d0f2]","borderColor":"border-[#40ccf7]"},{"name":"SmartPaste","color":"bg-[#61d0f2]","borderColor":"border-[#40ccf7]"}],"categories":["ide-extension"],"hasCommercial":false,"isAsyncAPIOwner":false}},{"title":"jAsyncAPI - IDEA plugin","description":"Idea plugin for the java-asyncapi - Helps to edit and validate AsyncAPI schemas.","links":{"websiteUrl":"https://plugins.jetbrains.com/plugin/15673-asyncapi","docsUrl":"https://github.com/asyncapi/jasyncapi-idea-plugin#usage","repoUrl":"https://github.com/asyncapi/jasyncapi-idea-plugin"},"filters":{"language":[{"name":"Kotlin","color":"bg-[#B1ACDF]","borderColor":"border-[#756BD9]"}],"technology":[{"name":"JetBrains","color":"bg-[#61d0f2]","borderColor":"border-[#40ccf7]"},{"name":"IntelliJ IDEA","color":"bg-[#61d0f2]","borderColor":"border-[#40ccf7]"}],"categories":["ide-extension"],"hasCommercial":false,"isAsyncAPIOwner":true}}]},"AsyncAPI Generator Templates":{"description":"The following is a list of templates compatible with AsyncAPI Generator. You can use them to generate apps, clients or documentation from your AsyncAPI documents.","toolsList":[{"title":"Java Spring Template","description":"Java Spring template for the AsyncAPI Generator","links":{"repoUrl":"https://github.com/asyncapi/java-spring-template"},"filters":{"language":[{"name":"Java","color":"bg-[#ECA2A4]","borderColor":"border-[#EC2125]"},{"name":"JavaScript","color":"bg-[#F2F1C7]","borderColor":"border-[#BFBE86]"}],"technology":[{"name":"Springboot","color":"bg-[#98E279]","borderColor":"border-[#68BC44]"},{"name":"Maven","color":"bg-[#FF6B80]","borderColor":"border-[#CA1A33]"},{"name":"Gradle","color":"bg-[#61d0f2]","borderColor":"border-[#40ccf7]"}],"categories":["generator-template"],"hasCommercial":false,"isAsyncAPIOwner":true}},{"title":"Node.js Multiprotocol Template","description":"This template generates a server using your AsyncAPI document. It supports multiple different protocols, like Kafka or MQTT. It is designed in the way that generated code is a library and with it's API you can start the server, send messages or register a middleware for listening incoming messages. Runtime message validation included.","links":{"repoUrl":"https://github.com/asyncapi/nodejs-template"},"filters":{"language":[{"name":"JavaScript","color":"bg-[#F2F1C7]","borderColor":"border-[#BFBE86]"}],"technology":[{"name":"Node.js","color":"bg-[#BDFF67]","borderColor":"border-[#84CE24]"}],"categories":["generator-template"],"hasCommercial":false,"isAsyncAPIOwner":true}},{"title":"Node.js Websockets Template","description":"Node.js WebSockets template for the AsyncAPI Generator. It showcases how from a single AsyncAPI document you can generate a server and a client at the same time.","links":{"repoUrl":"https://github.com/asyncapi/nodejs-ws-template"},"filters":{"language":[{"name":"JavaScript","color":"bg-[#F2F1C7]","borderColor":"border-[#BFBE86]"}],"technology":[{"name":"Node.js","color":"bg-[#BDFF67]","borderColor":"border-[#84CE24]"}],"categories":["generator-template"],"hasCommercial":false,"isAsyncAPIOwner":true}}]},"Others":{"description":"The following is a list of tools that comes under Other category.","toolsList":[{"title":"AsyncAPI CLI","description":"One CLI to rule them all. \nThis is a CLI that aims to integrate all AsyncAPI tools that you need while AsyncAPI document development and maintainance. \nYou can use it to generate docs or code, validate AsyncAPI document and event create new documents.\n","links":{"websiteUrl":"https://www.asyncapi.com/tools/cli","repoUrl":"https://github.com/asyncapi/cli"},"filters":{"technology":[{"name":"TypeScript","color":"bg-[#61d0f2]","borderColor":"border-[#40ccf7]"}],"categories":["others","cli"],"hasCommercial":false,"isAsyncAPIOwner":true}}]}} \ No newline at end of file +{"APIs":{"description":"The following is a list of APIs that expose functionality related to AsyncAPI.","toolsList":[{"title":"API Tracker - AsyncAPI specs","description":"Explore APIs and companies with public AsyncAPI specifications.","links":{"websiteUrl":"https://apitracker.io/specifications/asyncapi","repoUrl":""},"filters":{"categories":["api","directory"],"hasCommercial":false,"isAsyncAPIOwner":false,"technology":[]}},{"title":"AsyncAPI Server API","description":"Server API providing official AsyncAPI tools","links":{"websiteUrl":"https://api.asyncapi.com/v1","docsUrl":"https://api.asyncapi.com/v1/docs","repoUrl":"https://github.com/asyncapi/server-api"},"filters":{"technology":[{"name":"Node.js","color":"bg-[#BDFF67]","borderColor":"border-[#84CE24]"},{"name":"TypeScript","color":"bg-[#61d0f2]","borderColor":"border-[#40ccf7]"}],"categories":["api"],"hasCommercial":false,"isAsyncAPIOwner":true}},{"title":"AsyncAPI-Directory by APIs.guru","description":"Directory of asynchronous API specifications in AsyncAPI format.","links":{"websiteUrl":"https://apis.guru/asyncapi-directory/","repoUrl":"https://github.com/APIs-guru/asyncapi-directory"},"filters":{"language":[{"name":"JavaScript","color":"bg-[#F2F1C7]","borderColor":"border-[#BFBE86]"}],"technology":[{"name":"Node.js","color":"bg-[#BDFF67]","borderColor":"border-[#84CE24]"},{"name":"Liquid","color":"bg-[#61d0f2]","borderColor":"border-[#40ccf7]"}],"categories":["api","directory"],"hasCommercial":false,"isAsyncAPIOwner":false}},{"title":"SIO-AsyncAPI","description":"This is code-first approach to generate AsyncAPI specification from Socket.IO server.","links":{"websiteUrl":"https://github.com/daler-rahimov/sio-asyncapi","docsUrl":"https://github.com/daler-rahimov/sio-asyncapi","repoUrl":"https://github.com/daler-rahimov/sio-asyncapi"},"filters":{"language":[{"name":"Python","color":"bg-[#A8D0EF]","borderColor":"border-[#3878AB]"}],"technology":[{"name":"Socket.IO","color":"bg-[#61d0f2]","borderColor":"border-[#40ccf7]"},{"name":"Flask","color":"bg-[#D7C7F2]","borderColor":"border-[#A387D2]"}],"categories":["code-first","api"],"hasCommercial":false,"isAsyncAPIOwner":false}}]},"Code-first tools":{"description":"The following is a list of tools that generate AsyncAPI documents from your code.","toolsList":[{"title":"AsyncAPI.Net","description":"The AsyncAPI.NET SDK contains a useful object model for AsyncAPI documents in .NET along with common serializers to extract raw OpenAPI JSON and YAML documents from the model.","links":{"websiteUrl":"https://github.com/LEGO/AsyncAPI.NET/","repoUrl":"https://github.com/LEGO/AsyncAPI.NET"},"filters":{"language":[{"name":"C#","color":"bg-[#E3AFE0]","borderColor":"border-[#9B4F96]"}],"technology":[{"name":".NET","color":"bg-[#A184FF]","borderColor":"border-[#5026D4]"},{"name":"ASP.NET","color":"bg-[#71C2FB]","borderColor":"border-[#1577BC]"}],"categories":["converters","code-first","validator"],"hasCommercial":false,"isAsyncAPIOwner":false}},{"title":"EventBridge Atlas","description":"Tool that translates your AWS EventBridge Schemas into an AsyncAPI document and a web UI.","links":{"websiteUrl":"https://eventbridge-atlas.netlify.app/","repoUrl":"https://github.com/boyney123/eventbridge-atlas"},"filters":{"technology":[{"name":"Node.js","color":"bg-[#BDFF67]","borderColor":"border-[#84CE24]"}],"categories":["code-first"],"hasCommercial":false,"isAsyncAPIOwner":false}},{"title":"FastStream","description":"A powerful and easy-to-use Python framework for building asynchronous services interacting with event streams such as Apache Kafka, RabbitMQ and NATS.","links":{"websiteUrl":"https://faststream.airt.ai","repoUrl":"https://github.com/airtai/FastStream"},"filters":{"language":[{"name":"Python","color":"bg-[#A8D0EF]","borderColor":"border-[#3878AB]"}],"categories":["code-first","framework"],"hasCommercial":false,"isAsyncAPIOwner":false,"technology":[]}},{"title":"Go AsyncAPI","description":"This library helps to create AsyncAPI spec from your Go message structures. It uses reflection to translate Go structures in JSON Schema definitions and arrange them in AsyncAPI schema.","links":{"repoUrl":"https://github.com/swaggest/go-asyncapi"},"filters":{"language":[{"name":"Go/Golang","color":"bg-[#8ECFDF]","borderColor":"border-[#00AFD9]"}],"categories":["code-first"],"hasCommercial":false,"isAsyncAPIOwner":false,"technology":[]}},{"title":"Java AsyncAPI","description":"This tool stores modules, which simplifies interacting with AsyncAPI in jvm ecosystem.","links":{"repoUrl":"https://github.com/asyncapi/jasyncapi"},"filters":{"language":[{"name":"Java","color":"bg-[#ECA2A4]","borderColor":"border-[#EC2125]"}],"technology":[{"name":"Kotlin","color":"bg-[#61d0f2]","borderColor":"border-[#40ccf7]"},{"name":"Maven","color":"bg-[#FF6B80]","borderColor":"border-[#CA1A33]"}],"categories":["code-first"],"hasCommercial":false,"isAsyncAPIOwner":true}},{"title":"KnstEventBus","description":"AsyncApi code-first tools for c#. Generates document and view.","links":{"repoUrl":"https://github.com/d0972058277/KnstEventBus"},"filters":{"language":[{"name":"C#","color":"bg-[#E3AFE0]","borderColor":"border-[#9B4F96]"}],"technology":[{"name":"ASP.NET","color":"bg-[#71C2FB]","borderColor":"border-[#1577BC]"},{"name":".NET","color":"bg-[#A184FF]","borderColor":"border-[#5026D4]"}],"categories":["code-first","documentation-generator"],"hasCommercial":false,"isAsyncAPIOwner":false}},{"title":"Kotlin AsyncAPI","description":"The Kotlin AsyncAPI project aims to provide convenience tools for generating and serving AsyncAPI documentation. The core of this project is a Kotlin DSL for building the specification in a typesafe way.","links":{"repoUrl":"https://github.com/OpenFolder/kotlin-asyncapi"},"filters":{"language":[{"name":"Kotlin","color":"bg-[#B1ACDF]","borderColor":"border-[#756BD9]"}],"technology":[{"name":"Springboot","color":"bg-[#98E279]","borderColor":"border-[#68BC44]"},{"name":"Maven","color":"bg-[#FF6B80]","borderColor":"border-[#CA1A33]"}],"categories":["code-first"],"hasCommercial":false,"isAsyncAPIOwner":false}},{"title":"nestjs-asyncapi","description":"Utilize decorators to generate AsyncAPI document utilizing DTOs (similar to @nestjs/swagger) and a web UI.","links":{"repoUrl":"https://github.com/flamewow/nestjs-asyncapi"},"filters":{"language":[{"name":"TypeScript","color":"bg-[#7DBCFE]","borderColor":"border-[#2C78C7]"}],"technology":[{"name":"Node.js","color":"bg-[#BDFF67]","borderColor":"border-[#84CE24]"},{"name":"Nest Js","color":"bg-[#E1224E]","borderColor":"border-[#B9012b]"}],"categories":["code-first"],"hasCommercial":false,"isAsyncAPIOwner":false}},{"title":"Neuroglia AsyncAPI","description":"A .NET SDK for the Async API specification. Automatically generates and serves AsyncAPI documents based on your code. Includes fluent-builders to create AsyncAPI documents from scratch, and provides a web-based GUI to browse generated documents.","links":{"repoUrl":"https://github.com/neuroglia-io/AsyncApi"},"filters":{"language":[{"name":"C#","color":"bg-[#E3AFE0]","borderColor":"border-[#9B4F96]"}],"technology":[{"name":".NET","color":"bg-[#A184FF]","borderColor":"border-[#5026D4]"}],"categories":["code-first"],"hasCommercial":false,"isAsyncAPIOwner":false}},{"title":"Saunter","description":"Saunter is an AsyncAPI documentation generator for dotnet. Generates (and hosts) an AsyncAPI schema document from your code.","links":{"repoUrl":"https://github.com/tehmantra/saunter"},"filters":{"language":[{"name":"C#","color":"bg-[#E3AFE0]","borderColor":"border-[#9B4F96]"}],"technology":[{"name":".NET","color":"bg-[#A184FF]","borderColor":"border-[#5026D4]"},{"name":"ASP.NET","color":"bg-[#71C2FB]","borderColor":"border-[#1577BC]"}],"categories":["code-first"],"hasCommercial":false,"isAsyncAPIOwner":false}},{"title":"SIO-AsyncAPI","description":"This is code-first approach to generate AsyncAPI specification from Socket.IO server.","links":{"websiteUrl":"https://github.com/daler-rahimov/sio-asyncapi","docsUrl":"https://github.com/daler-rahimov/sio-asyncapi","repoUrl":"https://github.com/daler-rahimov/sio-asyncapi"},"filters":{"language":[{"name":"Python","color":"bg-[#A8D0EF]","borderColor":"border-[#3878AB]"}],"technology":[{"name":"Socket.IO","color":"bg-[#61d0f2]","borderColor":"border-[#40ccf7]"},{"name":"Flask","color":"bg-[#D7C7F2]","borderColor":"border-[#A387D2]"}],"categories":["code-first","api"],"hasCommercial":false,"isAsyncAPIOwner":false}},{"title":"Springwolf","description":"Automated documentation for async APIs built with Spring Boot. Like Springfox for AsyncAPI. Auto-generates an AsyncAPI document and a web UI.","links":{"websiteUrl":"https://www.springwolf.dev","repoUrl":"https://github.com/springwolf/springwolf-core"},"filters":{"language":[{"name":"Java","color":"bg-[#ECA2A4]","borderColor":"border-[#EC2125]"}],"technology":[{"name":"Springboot","color":"bg-[#98E279]","borderColor":"border-[#68BC44]"},{"name":"Gradle","color":"bg-[#61d0f2]","borderColor":"border-[#40ccf7]"}],"categories":["code-first","documentation-generator"],"hasCommercial":false,"isAsyncAPIOwner":false}},{"title":"sttp tapir","description":"Library for describing HTTP endpoints, and then interpreting them as a server, client, or documentation","links":{"websiteUrl":"https://tapir.softwaremill.com/","repoUrl":"https://github.com/softwaremill/tapir"},"filters":{"language":[{"name":"Scala","color":"bg-[#FFA299]","borderColor":"border-[#DF301F]"}],"categories":["code-first"],"hasCommercial":false,"isAsyncAPIOwner":false,"technology":[]}}]},"Code Generators":{"description":"The following is a list of tools that generate code from an AsyncAPI document; not the other way around.","toolsList":[{"title":"AsyncAPI Generator","description":"Generator is a tool that you can use to generate whatever you want basing on the AsyncAPI specification file as an input.","links":{"docsUrl":"https://www.asyncapi.com/docs/tools/generator","repoUrl":"https://github.com/asyncapi/generator"},"filters":{"language":[{"name":"JavaScript","color":"bg-[#F2F1C7]","borderColor":"border-[#BFBE86]"}],"technology":[{"name":"Node.js","color":"bg-[#BDFF67]","borderColor":"border-[#84CE24]"}],"categories":["code-generator","documentation-generator"],"hasCommercial":false,"isAsyncAPIOwner":true}},{"title":"AsyncAPI Modelina","description":"Generate payload models into Java, TypeScript, Go, etc, you name it, from AsyncAPI documents. This tool gives you full control over the models through high customization","links":{"websiteUrl":"https://modelina.org","docsUrl":"https://github.com/asyncapi/modelina/tree/master/docs","repoUrl":"https://github.com/asyncapi/modelina"},"filters":{"language":[{"name":"TypeScript","color":"bg-[#7DBCFE]","borderColor":"border-[#2C78C7]"}],"technology":[{"name":"React JS","color":"bg-[#9FECFA]","borderColor":"border-[#08D8FE]"},{"name":"Docker","color":"bg-[#B8E0FF]","borderColor":"border-[#2596ED]"}],"categories":["code-generator"],"hasCommercial":false,"isAsyncAPIOwner":true}},{"title":"Golang AsyncAPI Code Generator","description":"Generate Go user and application boilerplate from AsyncAPI specifications. Can be called from `go generate` without requirements.\n","links":{"repoUrl":"https://github.com/lerenn/asyncapi-codegen"},"filters":{"language":[{"name":"Go/Golang","color":"bg-[#8ECFDF]","borderColor":"border-[#00AFD9]"}],"categories":["code-generator"],"hasCommercial":false,"isAsyncAPIOwner":false,"technology":[]}},{"title":"MultiAPI Generator","description":"This is a plugin designed to help developers automatizing the creation of code classes from YML files based on AsyncApi and OpenAPI. It is presented in 2 flavours Maven and Gradle","links":{"repoUrl":"https://github.com/sngular/scs-multiapi-plugin"},"filters":{"language":[{"name":"Java","color":"bg-[#ECA2A4]","borderColor":"border-[#EC2125]"}],"technology":[{"name":"Groovy","color":"bg-[#61d0f2]","borderColor":"border-[#40ccf7]"},{"name":"Maven","color":"bg-[#FF6B80]","borderColor":"border-[#CA1A33]"}],"categories":["code-generator"],"hasCommercial":false,"isAsyncAPIOwner":false}},{"title":"Node-RED AsyncAPI plugin","description":"A plugin for generating and configuring nodes for Kafka, MQTT, AMQP, etc. automatically from an AsyncAPI specification.","links":{"repoUrl":"https://github.com/dalelane/node-red-contrib-plugin-asyncapi"},"filters":{"technology":[{"name":"Node-RED","color":"bg-[#FF7474]","borderColor":"border-[#8F0101]"}],"categories":["code-generator"],"hasCommercial":false,"isAsyncAPIOwner":false}},{"title":"ZenWave SDK","description":"DDD and API-First for Event-Driven Microservices","links":{"websiteUrl":"https://zenwave360.github.io/","docsUrl":"https://zenwave360.github.io/zenwave-sdk/plugins/asyncapi-spring-cloud-streams3/","repoUrl":"https://github.com/zenwave360/zenwave-sdk"},"filters":{"language":[{"name":"Java","color":"bg-[#ECA2A4]","borderColor":"border-[#EC2125]"}],"technology":[{"name":"Maven","color":"bg-[#FF6B80]","borderColor":"border-[#CA1A33]"},{"name":"Liquid","color":"bg-[#61d0f2]","borderColor":"border-[#40ccf7]"},{"name":"Spring Cloud Streams","color":"bg-[#61d0f2]","borderColor":"border-[#40ccf7]"},{"name":"JHipster JDL","color":"bg-[#61d0f2]","borderColor":"border-[#40ccf7]"}],"categories":["code-generator","dsl","mocking-and-testing","cli"],"hasCommercial":false,"isAsyncAPIOwner":false}}]},"Converters":{"description":"The following is a list of tools that do not yet belong to any specific category but are also useful for the community.","toolsList":[{"title":"AsyncAPI-format","description":"Format an AsyncAPI document by ordering, casing, formatting, and filtering fields.","links":{"repoUrl":"https://github.com/thim81/asyncapi-format"},"filters":{"language":[{"name":"JavaScript","color":"bg-[#F2F1C7]","borderColor":"border-[#BFBE86]"}],"technology":[{"name":"Node.js","color":"bg-[#BDFF67]","borderColor":"border-[#84CE24]"}],"categories":["converter","cli"],"hasCommercial":false,"isAsyncAPIOwner":false}},{"title":"AsyncAPI.Net","description":"The AsyncAPI.NET SDK contains a useful object model for AsyncAPI documents in .NET along with common serializers to extract raw OpenAPI JSON and YAML documents from the model.","links":{"websiteUrl":"https://github.com/LEGO/AsyncAPI.NET/","repoUrl":"https://github.com/LEGO/AsyncAPI.NET"},"filters":{"language":[{"name":"C#","color":"bg-[#E3AFE0]","borderColor":"border-[#9B4F96]"}],"technology":[{"name":".NET","color":"bg-[#A184FF]","borderColor":"border-[#5026D4]"},{"name":"ASP.NET","color":"bg-[#71C2FB]","borderColor":"border-[#1577BC]"}],"categories":["converters","code-first","validator"],"hasCommercial":false,"isAsyncAPIOwner":false}},{"title":"Converter","description":"Converts old versions of AsyncAPI files into the latest version.","links":{"repoUrl":"https://github.com/asyncapi/converter-js"},"filters":{"language":[{"name":"TypeScript","color":"bg-[#7DBCFE]","borderColor":"border-[#2C78C7]"}],"technology":[{"name":"Node.js","color":"bg-[#BDFF67]","borderColor":"border-[#84CE24]"}],"categories":["converter"],"hasCommercial":false,"isAsyncAPIOwner":true}},{"title":"Converter-Go","description":"The AsyncAPI Converter converts AsyncAPI documents from versions 1.0.0, 1.1.0 and 1.2.0 to version 2.0.0. It supports both json and yaml formats on input and output. By default, the AsyncAPI Converter converts a document into the json format.","links":{"repoUrl":"https://github.com/asyncapi/converter-go"},"filters":{"language":[{"name":"Go/Golang","color":"bg-[#8ECFDF]","borderColor":"border-[#00AFD9]"}],"categories":["converter"],"hasCommercial":false,"isAsyncAPIOwner":true,"technology":[]}}]},"Directories":{"description":"The following is a list of directories that index public AsyncAPI documents.","toolsList":[{"title":"API Tracker - AsyncAPI specs","description":"Explore APIs and companies with public AsyncAPI specifications.","links":{"websiteUrl":"https://apitracker.io/specifications/asyncapi","repoUrl":""},"filters":{"categories":["api","directory"],"hasCommercial":false,"isAsyncAPIOwner":false,"technology":[]}},{"title":"AsyncAPI-Directory by APIs.guru","description":"Directory of asynchronous API specifications in AsyncAPI format.","links":{"websiteUrl":"https://apis.guru/asyncapi-directory/","repoUrl":"https://github.com/APIs-guru/asyncapi-directory"},"filters":{"language":[{"name":"JavaScript","color":"bg-[#F2F1C7]","borderColor":"border-[#BFBE86]"}],"technology":[{"name":"Node.js","color":"bg-[#BDFF67]","borderColor":"border-[#84CE24]"},{"name":"Liquid","color":"bg-[#61d0f2]","borderColor":"border-[#40ccf7]"}],"categories":["api","directory"],"hasCommercial":false,"isAsyncAPIOwner":false}}]},"Documentation Generators":{"description":"The following is a list of tools that generate human-readable documentation from an AsyncAPI document.","toolsList":[{"title":"AsyncAPI Generator","description":"Generator is a tool that you can use to generate whatever you want basing on the AsyncAPI specification file as an input.","links":{"docsUrl":"https://www.asyncapi.com/docs/tools/generator","repoUrl":"https://github.com/asyncapi/generator"},"filters":{"language":[{"name":"JavaScript","color":"bg-[#F2F1C7]","borderColor":"border-[#BFBE86]"}],"technology":[{"name":"Node.js","color":"bg-[#BDFF67]","borderColor":"border-[#84CE24]"},{"name":"Markdown","color":"bg-[#61d0f2]","borderColor":"border-[#40ccf7]"}],"categories":["code-generator","documentation-generator"],"hasCommercial":false,"isAsyncAPIOwner":true}},{"title":"asyncapi-asciidoc-template","description":"Asciidoc template for the asyncapi generator","links":{"repoUrl":"https://gitlab.com/djencks/asyncapi-asciidoc-template"},"filters":{"language":[{"name":"JavaScript","color":"bg-[#F2F1C7]","borderColor":"border-[#BFBE86]"}],"technology":[{"name":"React JS","color":"bg-[#9FECFA]","borderColor":"border-[#08D8FE]"}],"categories":["documentation-generator","generator-template"],"hasCommercial":false,"isAsyncAPIOwner":false}},{"title":"Bump.sh","description":"OpenAPI 2 & 3 / AsyncAPI 2 documentation generator, with automatic changelog and visual diff.","links":{"websiteUrl":"https://bump.sh/","repoUrl":""},"filters":{"categories":["documentation-generator"],"hasCommercial":true,"isAsyncAPIOwner":false,"technology":[]}},{"title":"Cupid","description":"A library that focuses on finding and analyzing the relationships between AsyncAPI documents. It outputs a map of the system architecture.","links":{"repoUrl":"https://github.com/asyncapi/cupid"},"filters":{"language":[{"name":"JavaScript","color":"bg-[#F2F1C7]","borderColor":"border-[#BFBE86]"}],"technology":[{"name":"Node.js","color":"bg-[#BDFF67]","borderColor":"border-[#84CE24]"}],"categories":["documentation-generator"],"hasCommercial":false,"isAsyncAPIOwner":true}},{"title":"KnstEventBus","description":"AsyncApi code-first tools for c#. Generates document and view.","links":{"repoUrl":"https://github.com/d0972058277/KnstEventBus"},"filters":{"language":[{"name":"C#","color":"bg-[#E3AFE0]","borderColor":"border-[#9B4F96]"}],"technology":[{"name":"ASP.NET","color":"bg-[#71C2FB]","borderColor":"border-[#1577BC]"},{"name":".NET","color":"bg-[#A184FF]","borderColor":"border-[#5026D4]"}],"categories":["code-first","documentation-generator"],"hasCommercial":false,"isAsyncAPIOwner":false}},{"title":"Springwolf","description":"Automated documentation for async APIs built with Spring Boot. Like Springfox for AsyncAPI. Auto-generates an AsyncAPI document and a web UI.","links":{"websiteUrl":"https://www.springwolf.dev","repoUrl":"https://github.com/springwolf/springwolf-core"},"filters":{"language":[{"name":"Java","color":"bg-[#ECA2A4]","borderColor":"border-[#EC2125]"}],"technology":[{"name":"Springboot","color":"bg-[#98E279]","borderColor":"border-[#68BC44]"},{"name":"Gradle","color":"bg-[#61d0f2]","borderColor":"border-[#40ccf7]"}],"categories":["code-first","documentation-generator"],"hasCommercial":false,"isAsyncAPIOwner":false}},{"title":"Widdershins","description":"OpenAPI 3.0 / Swagger 2.0 / AsyncAPI 1.0 definition to Slate / Shins compatible markdown.","links":{"websiteUrl":"https://mermade.github.io/reslate/","repoUrl":"https://github.com/Mermade/widdershins"},"filters":{"language":[{"name":"JavaScript","color":"bg-[#F2F1C7]","borderColor":"border-[#BFBE86]"}],"technology":[{"name":"Node.js","color":"bg-[#BDFF67]","borderColor":"border-[#84CE24]"},{"name":"Shell","color":"bg-[#61d0f2]","borderColor":"border-[#40ccf7]"}],"categories":["documentation-generator"],"hasCommercial":false,"isAsyncAPIOwner":false}}]},"Editors":{"description":"The following is a list of editors or related tools that allow editing of AsyncAPI document.","toolsList":[{"title":"AsyncAPI Studio","description":"Visually design your AsyncAPI files and event-driven architecture.","links":{"websiteUrl":"https://studio.asyncapi.com","repoUrl":"https://github.com/asyncapi/studio"},"filters":{"technology":[{"name":"React JS","color":"bg-[#9FECFA]","borderColor":"border-[#08D8FE]"},{"name":"TypeScript","color":"bg-[#61d0f2]","borderColor":"border-[#40ccf7]"}],"categories":["editor"],"hasCommercial":false,"isAsyncAPIOwner":true}}]},"UI components":{"description":"The following is a list of UI components to view AsyncAPI documents.","toolsList":[{"title":"Api-Diff-Viewer","description":"React component to view the difference between two Json based API documents. Supported specifications: JsonSchema, OpenAPI 3.x, AsyncAPI 2.x.","links":{"repoUrl":"https://github.com/udamir/api-diff-viewer","websiteUrl":"https://api-diff-viewer.vercel.app/"},"filters":{"language":[{"name":"TypeScript","color":"bg-[#7DBCFE]","borderColor":"border-[#2C78C7]"}],"technology":[{"name":"React JS","color":"bg-[#9FECFA]","borderColor":"border-[#08D8FE]"},{"name":"Babel","color":"bg-[#61d0f2]","borderColor":"border-[#40ccf7]"},{"name":"Storybook","color":"bg-[#61d0f2]","borderColor":"border-[#40ccf7]"}],"categories":["ui-component"],"hasCommercial":false,"isAsyncAPIOwner":false}},{"title":"AsyncAPI React component","description":"React component for rendering documentation from your specification in real-time in the browser. It also provides a WebComponent and bundle for Angular and Vue","links":{"repoUrl":"https://github.com/asyncapi/asyncapi-react"},"filters":{"language":[{"name":"TypeScript","color":"bg-[#7DBCFE]","borderColor":"border-[#2C78C7]"}],"technology":[{"name":"React JS","color":"bg-[#9FECFA]","borderColor":"border-[#08D8FE]"},{"name":"WebComponents","color":"bg-[#61d0f2]","borderColor":"border-[#40ccf7]"}],"categories":["ui-component"],"hasCommercial":false,"isAsyncAPIOwner":true}}]},"DSL":{"description":"Writing YAML by hand is no fun, and maybe you don't want a GUI, so use a Domain Specific Language to write AsyncAPI in your language of choice.","toolsList":[{"title":"BOATS","description":"Compile your single AsyncAPI file from multiple YAML files with BOATS and with the help of the template engine Nunjucks, plus a many extra helpers to automate much of the donkey work.","links":{"repoUrl":"https://github.com/j-d-carmichael/boats"},"filters":{"language":[{"name":"TypeScript","color":"bg-[#7DBCFE]","borderColor":"border-[#2C78C7]"}],"technology":[{"name":"Node.js","color":"bg-[#BDFF67]","borderColor":"border-[#84CE24]"}],"categories":["dsl"],"hasCommercial":false,"isAsyncAPIOwner":false}},{"title":"ZenWave SDK","description":"DDD and API-First for Event-Driven Microservices","links":{"websiteUrl":"https://zenwave360.github.io/","docsUrl":"https://zenwave360.github.io/zenwave-sdk/plugins/asyncapi-spring-cloud-streams3/","repoUrl":"https://github.com/zenwave360/zenwave-sdk"},"filters":{"language":[{"name":"Java","color":"bg-[#ECA2A4]","borderColor":"border-[#EC2125]"}],"technology":[{"name":"Maven","color":"bg-[#FF6B80]","borderColor":"border-[#CA1A33]"},{"name":"Liquid","color":"bg-[#61d0f2]","borderColor":"border-[#40ccf7]"},{"name":"Spring Cloud Streams","color":"bg-[#61d0f2]","borderColor":"border-[#40ccf7]"},{"name":"JHipster JDL","color":"bg-[#61d0f2]","borderColor":"border-[#40ccf7]"}],"categories":["code-generator","dsl","mocking-and-testing","cli"],"hasCommercial":false,"isAsyncAPIOwner":false}}]},"Frameworks":{"description":"The following is a list of API/application frameworks that make use of AsyncAPI.","toolsList":[{"title":"Asynction","description":"SocketIO server framework driven by the AsyncAPI specification. Asynction guarantees that your API will work in accordance with its AsyncAPI documentation. Built on top of Flask-SocketIO.","links":{"websiteUrl":"https://pypi.org/project/asynction/","repoUrl":"https://github.com/dedoussis/asynction"},"filters":{"language":[{"name":"Python","color":"bg-[#A8D0EF]","borderColor":"border-[#3878AB]"}],"technology":[{"name":"Flask","color":"bg-[#D7C7F2]","borderColor":"border-[#A387D2]"}],"categories":["framework"],"hasCommercial":false,"isAsyncAPIOwner":false}},{"title":"FastStream","description":"A powerful and easy-to-use Python framework for building asynchronous services interacting with event streams such as Apache Kafka, RabbitMQ and NATS.","links":{"websiteUrl":"https://faststream.airt.ai","repoUrl":"https://github.com/airtai/FastStream"},"filters":{"language":[{"name":"Python","color":"bg-[#A8D0EF]","borderColor":"border-[#3878AB]"}],"categories":["code-first","framework"],"hasCommercial":false,"isAsyncAPIOwner":false,"technology":[]}}]},"GitHub Actions":{"description":"The following is a list of GitHub Actions that you can use in your workflows","toolsList":[{"title":"API documentation generation on Bump.sh","description":"With this GitHub Action you can automatically generate your API reference (with the changelog and diff) on Bump.sh from any AsyncAPI file.","links":{"websiteUrl":"https://github.com/marketplace/actions/api-documentation-on-bump","repoUrl":"https://github.com/bump-sh/github-action"},"filters":{"language":[{"name":"TypeScript","color":"bg-[#7DBCFE]","borderColor":"border-[#2C78C7]"}],"categories":["github-action"],"hasCommercial":false,"isAsyncAPIOwner":false,"technology":[]}},{"title":"AsyncAPI GitHub Action","description":"This action validates if the AsyncAPI schema file is valid or not.","links":{"websiteUrl":"https://github.com/marketplace/actions/asyncapi-github-action","repoUrl":"https://github.com/WaleedAshraf/asyncapi-github-action"},"filters":{"language":[{"name":"JavaScript","color":"bg-[#F2F1C7]","borderColor":"border-[#BFBE86]"}],"technology":[{"name":"Node.js","color":"bg-[#BDFF67]","borderColor":"border-[#84CE24]"}],"categories":["github-action","validator"],"hasCommercial":false,"isAsyncAPIOwner":false}},{"title":"Automated version bump for AsyncAPI documents","description":"With this GitHub Action, you can automatically bump the version based on commit messages, which is similar to what semantic-release is for NPM.","links":{"websiteUrl":"https://github.com/marketplace/actions/automated-version-bump-for-asyncapi","repoUrl":"https://github.com/bump-sh/github-action"},"filters":{"language":[{"name":"JavaScript","color":"bg-[#F2F1C7]","borderColor":"border-[#BFBE86]"}],"technology":[{"name":"Node.js","color":"bg-[#BDFF67]","borderColor":"border-[#84CE24]"}],"categories":["github-action"],"hasCommercial":false,"isAsyncAPIOwner":false}},{"title":"GitHub Action for Generator","description":"GitHub Action to generate all the things from your AsyncAPI document using the AsyncAPI generator","links":{"repoUrl":"https://github.com/asyncapi/github-action-for-generator"},"filters":{"technology":[{"name":"AsyncAPI Generator","color":"bg-[#61d0f2]","borderColor":"border-[#40ccf7]"}],"categories":["github-action"],"hasCommercial":false,"isAsyncAPIOwner":true}},{"title":"GitHub Action for Generator","description":null,"links":{"repoUrl":"https://github.com/actions-marketplace-validations/asyncapi_github-action-for-generator"},"filters":{"technology":[{"name":"AsyncAPI Generator","color":"bg-[#61d0f2]","borderColor":"border-[#40ccf7]"}],"categories":["github-action"],"hasCommercial":false,"isAsyncAPIOwner":false}}]},"Mocking and Testing":{"description":"The tools below take specification documents as input, then publish fake messages to broker destinations for simulation purposes. They may also check that publisher messages are compliant with schemas.","toolsList":[{"title":"Microcks","description":"Mocking and testing platform for API and microservices. Turn your AsyncAPI, OpenAPI contract examples, or Postman collections into ready-to-use mocks. Use examples to simulate and validate received messages according to schema elements.","links":{"websiteUrl":"https://microcks.io/","repoUrl":"https://github.com/microcks/microcks"},"filters":{"language":[{"name":"Java","color":"bg-[#ECA2A4]","borderColor":"border-[#EC2125]"}],"technology":[{"name":"TypeScript","color":"bg-[#61d0f2]","borderColor":"border-[#40ccf7]"},{"name":"Kubernetes-native","color":"bg-[#D7C7F2]","borderColor":"border-[#A387D2]"},{"name":"Saas","color":"bg-[#6AB8EC]","borderColor":"border-[#2275AD]"}],"categories":["mocking-and-testing"],"hasCommercial":false,"isAsyncAPIOwner":false}},{"title":"MultiAPI Converter","description":"Use AsyncAPI definition, to generate Spring Cloud Contract producer validation or consumer stubs, using maven.","links":{"repoUrl":"https://github.com/sngular/scc-multiapi-converter"},"filters":{"language":[{"name":"Java","color":"bg-[#ECA2A4]","borderColor":"border-[#EC2125]"}],"technology":[{"name":"Springboot","color":"bg-[#98E279]","borderColor":"border-[#68BC44]"}],"categories":["mocking-and-testing"],"hasCommercial":false,"isAsyncAPIOwner":false}},{"title":"Specmatic","description":"An API contract testing tool that helps ensure the correctness APIs by automatically generating test cases and verifying them against the API spec. It simplifies the process of testing APIs and reduces the likelihood of bugs and compatibility issues.","links":{"websiteUrl":"https://specmatic.in","docsUrl":"https://specmatic.in/documentation/","repoUrl":"https://github.com/znsio/specmatic"},"filters":{"language":[{"name":"Kotlin","color":"bg-[#B1ACDF]","borderColor":"border-[#756BD9]"}],"technology":[{"name":"Maven","color":"bg-[#FF6B80]","borderColor":"border-[#CA1A33]"}],"categories":["mocking-and-testing"],"hasCommercial":false,"isAsyncAPIOwner":false}},{"title":"Virtualan","description":"Mocking and testing platform for API and microservices. Allows you to create and setup mocks for OpenAPI and AsyncAPI contracts. Shows how to setup and create AsyncAPI GitHub Reference Examples and OpenAPI GitHub Reference Examples.","links":{"websiteUrl":"https://www.virtualan.io/index.html","repoUrl":"https://github.com/virtualansoftware"},"filters":{"technology":[{"name":"Kubernetes-native","color":"bg-[#D7C7F2]","borderColor":"border-[#A387D2]"}],"categories":["mocking-and-testing"],"hasCommercial":false,"isAsyncAPIOwner":false}},{"title":"ZenWave SDK","description":"DDD and API-First for Event-Driven Microservices","links":{"websiteUrl":"https://zenwave360.github.io/","docsUrl":"https://zenwave360.github.io/zenwave-sdk/plugins/asyncapi-spring-cloud-streams3/","repoUrl":"https://github.com/zenwave360/zenwave-sdk"},"filters":{"language":[{"name":"Java","color":"bg-[#ECA2A4]","borderColor":"border-[#EC2125]"}],"technology":[{"name":"Maven","color":"bg-[#FF6B80]","borderColor":"border-[#CA1A33]"},{"name":"Liquid","color":"bg-[#61d0f2]","borderColor":"border-[#40ccf7]"},{"name":"Spring Cloud Streams","color":"bg-[#61d0f2]","borderColor":"border-[#40ccf7]"},{"name":"JHipster JDL","color":"bg-[#61d0f2]","borderColor":"border-[#40ccf7]"}],"categories":["code-generator","dsl","mocking-and-testing","cli"],"hasCommercial":false,"isAsyncAPIOwner":false}}]},"Validators":{"description":"The following is a list of tools that validate AsyncAPI documents.","toolsList":[{"title":"AMF","description":"AMF (AML Modeling Framework) is an open-source library capable of parsing and validating AML metadata documents.","links":{"docsUrl":"https://a.ml/docs/","repoUrl":"https://github.com/aml-org/amf"},"filters":{"language":[{"name":"Scala","color":"bg-[#FFA299]","borderColor":"border-[#DF301F]"}],"categories":["validator"],"hasCommercial":false,"isAsyncAPIOwner":false,"technology":[]}},{"title":"AsyncAPI GitHub Action","description":"This action validates if the AsyncAPI schema file is valid or not.","links":{"websiteUrl":"https://github.com/marketplace/actions/asyncapi-github-action","repoUrl":"https://github.com/WaleedAshraf/asyncapi-github-action"},"filters":{"language":[{"name":"JavaScript","color":"bg-[#F2F1C7]","borderColor":"border-[#BFBE86]"}],"technology":[{"name":"Node.js","color":"bg-[#BDFF67]","borderColor":"border-[#84CE24]"}],"categories":["github-action","validator"],"hasCommercial":false,"isAsyncAPIOwner":false}},{"title":"AsyncAPI Parser","description":"Use this package to parse and validate AsyncAPI documents —either YAML or JSON— in your Node.js or browser application. Updated bundle for the browser is always attached to the GitHub Release.","links":{"repoUrl":"https://github.com/asyncapi/parser-js"},"filters":{"language":[{"name":"JavaScript","color":"bg-[#F2F1C7]","borderColor":"border-[#BFBE86]"}],"technology":[{"name":"Node.js","color":"bg-[#BDFF67]","borderColor":"border-[#84CE24]"}],"categories":["validator"],"hasCommercial":false,"isAsyncAPIOwner":true}},{"title":"AsyncAPI Parser","description":"The AsyncAPI Parser validates AsyncAPI documents according to dedicated schemas.","links":{"repoUrl":"https://github.com/asyncapi/parser-go"},"filters":{"language":[{"name":"Go/Golang","color":"bg-[#8ECFDF]","borderColor":"border-[#00AFD9]"}],"categories":["validator"],"hasCommercial":false,"isAsyncAPIOwner":true,"technology":[]}},{"title":"AsyncAPI Parser Wrapper","description":"Use this library to parse and validate AsyncAPI documents — either YAML or JSON — in your Java application. It is a Java wrapper over JavaScript Parser implemented using J2V8.","links":{"repoUrl":"https://github.com/AsyncAPITools/parser-java-wrapper"},"filters":{"language":[{"name":"Java","color":"bg-[#ECA2A4]","borderColor":"border-[#EC2125]"}],"categories":["validator"],"hasCommercial":false,"isAsyncAPIOwner":false,"technology":[]}},{"title":"asyncapi-validator","description":"It allows you to validate the schema of your messages against your AsyncAPI schema definition. You can use it with Kafka, RabbitMQ or any other messaging/queue.","links":{"repoUrl":"https://github.com/WaleedAshraf/asyncapi-validator"},"filters":{"language":[{"name":"JavaScript","color":"bg-[#F2F1C7]","borderColor":"border-[#BFBE86]"}],"technology":[{"name":"Node.js","color":"bg-[#BDFF67]","borderColor":"border-[#84CE24]"}],"categories":["validator"],"hasCommercial":false,"isAsyncAPIOwner":false}},{"title":"AsyncAPI.Net","description":"The AsyncAPI.NET SDK contains a useful object model for AsyncAPI documents in .NET along with common serializers to extract raw OpenAPI JSON and YAML documents from the model.","links":{"websiteUrl":"https://github.com/LEGO/AsyncAPI.NET/","repoUrl":"https://github.com/LEGO/AsyncAPI.NET"},"filters":{"language":[{"name":"C#","color":"bg-[#E3AFE0]","borderColor":"border-[#9B4F96]"}],"technology":[{"name":".NET","color":"bg-[#A184FF]","borderColor":"border-[#5026D4]"},{"name":"ASP.NET","color":"bg-[#71C2FB]","borderColor":"border-[#1577BC]"}],"categories":["converters","code-first","validator"],"hasCommercial":false,"isAsyncAPIOwner":false}},{"title":"Spectral","description":"A flexible JSON/YAML linter for creating automated style guides, with baked in support for OpenAPI v3.1, v3.0, and v2.0 as well as AsyncAPI v2.x.","links":{"repoUrl":"https://github.com/stoplightio/spectral"},"filters":{"language":[{"name":"TypeScript","color":"bg-[#7DBCFE]","borderColor":"border-[#2C78C7]"}],"technology":[{"name":"Node.js","color":"bg-[#BDFF67]","borderColor":"border-[#84CE24]"}],"categories":["validator"],"hasCommercial":false,"isAsyncAPIOwner":false}}]},"Compare tools":{"description":"The following is a list of tools that compare AsyncAPI documents.","toolsList":[{"title":"Api-Smart-Diff","description":"It allows you to compare two API documents and classify changes. Supported API specifications: OpenAPI, AsyncAPI, JsonSchema.","links":{"repoUrl":"https://github.com/udamir/api-smart-diff"},"filters":{"language":[{"name":"TypeScript","color":"bg-[#7DBCFE]","borderColor":"border-[#2C78C7]"}],"categories":["compare-tool"],"hasCommercial":false,"isAsyncAPIOwner":false,"technology":[]}},{"title":"AsyncAPI Diff","description":"Diff is a library that compares two AsyncAPI Documents and provides information about the differences by pointing out explicitly information like breaking changes.","links":{"repoUrl":"https://github.com/asyncapi/diff"},"filters":{"language":[{"name":"TypeScript","color":"bg-[#7DBCFE]","borderColor":"border-[#2C78C7]"}],"technology":[{"name":"TypeScript","color":"bg-[#61d0f2]","borderColor":"border-[#40ccf7]"}],"categories":["compare-tool"],"hasCommercial":false,"isAsyncAPIOwner":true}},{"title":"jasyncapicmp","description":"Tool for comparing two AsyncAPI versions and evaluating compatibility.","links":{"websiteUrl":"https://siom79.github.io/jasyncapicmp/","docsUrl":"https://github.com/siom79/jasyncapicmp","repoUrl":"https://github.com/siom79/jasyncapicmp"},"filters":{"language":[{"name":"Java","color":"bg-[#ECA2A4]","borderColor":"border-[#EC2125]"}],"technology":[{"name":"Maven","color":"bg-[#FF6B80]","borderColor":"border-[#CA1A33]"}],"categories":["compare-tool"],"hasCommercial":false,"isAsyncAPIOwner":false}},{"title":"jasyncapicmp","description":"Tool/library/maven-plugin for comparing two AsyncAPI versions and evaluating compatibility.","links":{"websiteUrl":"https://siom79.github.io/jasyncapicmp/","repoUrl":"https://github.com/siom79/jasyncapicmp"},"filters":{"language":[{"name":"Java","color":"bg-[#ECA2A4]","borderColor":"border-[#EC2125]"}],"technology":[{"name":"Maven","color":"bg-[#FF6B80]","borderColor":"border-[#CA1A33]"}],"categories":["compare-tool"],"hasCommercial":false,"isAsyncAPIOwner":false}}]},"CLIs":{"description":"The following is a list of tools that you can work with in terminal or do some CI/CD automation.","toolsList":[{"title":"AsyncAPI CLI","description":"One CLI to rule them all. \nThis is a CLI that aims to integrate all AsyncAPI tools that you need while AsyncAPI document development and maintainance. \nYou can use it to generate docs or code, validate AsyncAPI document and event create new documents.\n","links":{"websiteUrl":"https://www.asyncapi.com/tools/cli","repoUrl":"https://github.com/asyncapi/cli"},"filters":{"technology":[{"name":"TypeScript","color":"bg-[#61d0f2]","borderColor":"border-[#40ccf7]"}],"categories":["others","cli"],"hasCommercial":false,"isAsyncAPIOwner":true}},{"title":"AsyncAPI CLI","description":"One CLI to rule them all. \nThis is a CLI that aims to integrate all AsyncAPI tools that you need while AsyncAPI document development and maintainance. \nYou can use it to generate docs or code, validate AsyncAPI document and event create new documents.\n","links":{"websiteUrl":"https://www.asyncapi.com/tools/cli","repoUrl":"https://github.com/hkirat/asyncapi-fork"},"filters":{"technology":[{"name":"TypeScript","color":"bg-[#61d0f2]","borderColor":"border-[#40ccf7]"}],"categories":["others","cli"],"hasCommercial":false,"isAsyncAPIOwner":false}},{"title":"AsyncAPI-format","description":"Format an AsyncAPI document by ordering, casing, formatting, and filtering fields.","links":{"repoUrl":"https://github.com/asyncapi/converter-go"},"filters":{"language":[{"name":"JavaScript","color":"bg-[#F2F1C7]","borderColor":"border-[#BFBE86]"}],"technology":[{"name":"Node.js","color":"bg-[#BDFF67]","borderColor":"border-[#84CE24]"}],"categories":["converter","cli"],"hasCommercial":false,"isAsyncAPIOwner":true}},{"title":"ZenWave SDK","description":"DDD and API-First for Event-Driven Microservices","links":{"websiteUrl":"https://zenwave360.github.io/","docsUrl":"https://zenwave360.github.io/zenwave-sdk/plugins/asyncapi-spring-cloud-streams3/","repoUrl":"https://github.com/zenwave360/zenwave-sdk"},"filters":{"language":[{"name":"Java","color":"bg-[#ECA2A4]","borderColor":"border-[#EC2125]"}],"technology":[{"name":"Maven","color":"bg-[#FF6B80]","borderColor":"border-[#CA1A33]"},{"name":"Liquid","color":"bg-[#61d0f2]","borderColor":"border-[#40ccf7]"},{"name":"Spring Cloud Streams","color":"bg-[#61d0f2]","borderColor":"border-[#40ccf7]"},{"name":"JHipster JDL","color":"bg-[#61d0f2]","borderColor":"border-[#40ccf7]"}],"categories":["code-generator","dsl","mocking-and-testing","cli"],"hasCommercial":false,"isAsyncAPIOwner":false}}]},"Bundlers":{"description":"The following is a list of tools that you can work with to bundle AsyncAPI documents.","toolsList":[{"title":"Api-ref-bundler","description":"It allows you bundle/dereference external/internal $refs in Json based API document. Supported specifications: OpenAPI, AsyncAPI, JsonSchema.","links":{"repoUrl":"https://github.com/udamir/api-ref-bundler"},"filters":{"language":[{"name":"TypeScript","color":"bg-[#7DBCFE]","borderColor":"border-[#2C78C7]"}],"technology":[{"name":"TypeScript","color":"bg-[#61d0f2]","borderColor":"border-[#40ccf7]"}],"categories":["bundler"],"hasCommercial":false,"isAsyncAPIOwner":false}},{"title":"AsyncAPI Bundler","description":"Combine multiple AsyncAPI specification files into one.","links":{"repoUrl":"https://github.com/asyncapi/bundler"},"filters":{"language":[{"name":"TypeScript","color":"bg-[#7DBCFE]","borderColor":"border-[#2C78C7]"}],"technology":[{"name":"TypeScript","color":"bg-[#61d0f2]","borderColor":"border-[#40ccf7]"}],"categories":["bundler"],"hasCommercial":false,"isAsyncAPIOwner":true}}]},"IDE Extensions":{"description":"The following is a list of extensions for different IDEs like VSCode, IntelliJ IDEA and others","toolsList":[{"title":"asyncapi-preview","description":"VSCode extension that enables you to:\n - Preview documentation generated using you AsyncAPI document. It uses AsyncAPI React component under the hood,\n - Create AsyncAPI documents faster using SmartPaste functionality\n","links":{"repoUrl":"https://github.com/asyncapi/vs-asyncapi-preview"},"filters":{"technology":[{"name":"VSCode","color":"bg-[#61d0f2]","borderColor":"border-[#40ccf7]"},{"name":"SmartPaste","color":"bg-[#61d0f2]","borderColor":"border-[#40ccf7]"}],"categories":["ide-extension"],"hasCommercial":false,"isAsyncAPIOwner":true}},{"title":"asyncapi-preview","description":"VSCode extension that enables you to:\n - Preview documentation generated using you AsyncAPI document. It uses AsyncAPI React component under the hood,\n - Create AsyncAPI documents faster using SmartPaste functionality\n","links":{"repoUrl":"https://github.com/Savio629/testing2"},"filters":{"technology":[{"name":"VSCode","color":"bg-[#61d0f2]","borderColor":"border-[#40ccf7]"},{"name":"SmartPaste","color":"bg-[#61d0f2]","borderColor":"border-[#40ccf7]"}],"categories":["ide-extension"],"hasCommercial":false,"isAsyncAPIOwner":false}},{"title":"jAsyncAPI - IDEA plugin","description":"Idea plugin for the java-asyncapi - Helps to edit and validate AsyncAPI schemas.","links":{"websiteUrl":"https://plugins.jetbrains.com/plugin/15673-asyncapi","docsUrl":"https://github.com/asyncapi/jasyncapi-idea-plugin#usage","repoUrl":"https://github.com/asyncapi/jasyncapi-idea-plugin"},"filters":{"language":[{"name":"Kotlin","color":"bg-[#B1ACDF]","borderColor":"border-[#756BD9]"}],"technology":[{"name":"JetBrains","color":"bg-[#61d0f2]","borderColor":"border-[#40ccf7]"},{"name":"IntelliJ IDEA","color":"bg-[#61d0f2]","borderColor":"border-[#40ccf7]"}],"categories":["ide-extension"],"hasCommercial":false,"isAsyncAPIOwner":true}}]},"AsyncAPI Generator Templates":{"description":"The following is a list of templates compatible with AsyncAPI Generator. You can use them to generate apps, clients or documentation from your AsyncAPI documents.","toolsList":[{"title":"HTML Template","description":"HTML template for AsyncAPI Generator. Use it to generate a static docs. It is using AsyncAPI React component under the hood.","links":{"repoUrl":"https://github.com/asyncapi/html-template"},"filters":{"language":[{"name":"JavaScript","color":"bg-[#F2F1C7]","borderColor":"border-[#BFBE86]"}],"technology":[{"name":"HTML","color":"bg-[#61d0f2]","borderColor":"border-[#40ccf7]"}],"categories":["generator-template"],"hasCommercial":false,"isAsyncAPIOwner":true}},{"title":"Java Spring Template","description":"Java Spring template for the AsyncAPI Generator","links":{"repoUrl":"https://github.com/asyncapi/java-spring-template"},"filters":{"language":[{"name":"JavaScript","color":"bg-[#F2F1C7]","borderColor":"border-[#BFBE86]"}],"technology":[{"name":"Springboot","color":"bg-[#98E279]","borderColor":"border-[#68BC44]"},{"name":"Maven","color":"bg-[#FF6B80]","borderColor":"border-[#CA1A33]"},{"name":"Gradle","color":"bg-[#61d0f2]","borderColor":"border-[#40ccf7]"}],"categories":["generator-template"],"hasCommercial":false,"isAsyncAPIOwner":true}},{"title":"Node.js Multiprotocol Template","description":"This template generates a server using your AsyncAPI document. It supports multiple different protocols, like Kafka or MQTT. It is designed in the way that generated code is a library and with it's API you can start the server, send messages or register a middleware for listening incoming messages. Runtime message validation included.","links":{"repoUrl":"https://github.com/asyncapi/nodejs-template"},"filters":{"language":[{"name":"JavaScript","color":"bg-[#F2F1C7]","borderColor":"border-[#BFBE86]"}],"technology":[{"name":"Node.js","color":"bg-[#BDFF67]","borderColor":"border-[#84CE24]"}],"categories":["generator-template"],"hasCommercial":false,"isAsyncAPIOwner":true}},{"title":"Node.js Websockets Template","description":"Node.js WebSockets template for the AsyncAPI Generator. It showcases how from a single AsyncAPI document you can generate a server and a client at the same time.","links":{"repoUrl":"https://github.com/asyncapi/nodejs-ws-template"},"filters":{"language":[{"name":"JavaScript","color":"bg-[#F2F1C7]","borderColor":"border-[#BFBE86]"}],"technology":[{"name":"Node.js","color":"bg-[#BDFF67]","borderColor":"border-[#84CE24]"}],"categories":["generator-template"],"hasCommercial":false,"isAsyncAPIOwner":true}}]},"Others":{"description":"The following is a list of tools that comes under Other category.","toolsList":[{"title":"AsyncAPI CLI","description":"One CLI to rule them all. \nThis is a CLI that aims to integrate all AsyncAPI tools that you need while AsyncAPI document development and maintainance. \nYou can use it to generate docs or code, validate AsyncAPI document and event create new documents.\n","links":{"websiteUrl":"https://www.asyncapi.com/tools/cli","repoUrl":"https://github.com/asyncapi/cli"},"filters":{"technology":[{"name":"TypeScript","color":"bg-[#61d0f2]","borderColor":"border-[#40ccf7]"}],"categories":["others","cli"],"hasCommercial":false,"isAsyncAPIOwner":true}},{"title":"AsyncAPI CLI","description":"One CLI to rule them all. \nThis is a CLI that aims to integrate all AsyncAPI tools that you need while AsyncAPI document development and maintainance. \nYou can use it to generate docs or code, validate AsyncAPI document and event create new documents.\n","links":{"websiteUrl":"https://www.asyncapi.com/tools/cli","repoUrl":"https://github.com/hkirat/asyncapi-fork"},"filters":{"technology":[{"name":"TypeScript","color":"bg-[#61d0f2]","borderColor":"border-[#40ccf7]"}],"categories":["others","cli"],"hasCommercial":false,"isAsyncAPIOwner":false}}]}} \ No newline at end of file From b9d53b3996e30e7f359b6ac06f2c8756b75aa0ff Mon Sep 17 00:00:00 2001 From: asyncapi-bot Date: Mon, 6 Nov 2023 13:08:01 +0100 Subject: [PATCH 058/134] docs(spec): v3.0.0-next-major-spec.15 release (#2292) --- ...0-next-major-spec.14.md => v3.0.0-next-major-spec.15.md} | 6 ------ public/_redirects | 2 +- 2 files changed, 1 insertion(+), 7 deletions(-) rename pages/docs/reference/specification/{v3.0.0-next-major-spec.14.md => v3.0.0-next-major-spec.15.md} (99%) diff --git a/pages/docs/reference/specification/v3.0.0-next-major-spec.14.md b/pages/docs/reference/specification/v3.0.0-next-major-spec.15.md similarity index 99% rename from pages/docs/reference/specification/v3.0.0-next-major-spec.14.md rename to pages/docs/reference/specification/v3.0.0-next-major-spec.15.md index 79dd57278d2..7685ac566d6 100644 --- a/pages/docs/reference/specification/v3.0.0-next-major-spec.14.md +++ b/pages/docs/reference/specification/v3.0.0-next-major-spec.15.md @@ -1171,7 +1171,6 @@ Describes a message received on a given channel and operation. Field Name | Type | Description ---|:---:|--- -messageId | `string` | Unique string used to identify the message. The id MUST be unique among all messages described in the API. The messageId value is **case-sensitive**. Tools and libraries MAY use the messageId to uniquely identify a message, therefore, it is RECOMMENDED to follow common programming naming conventions. headers | [Multi Format Schema Object](#multiFormatSchemaObject) | [Schema Object](#schemaObject) | [Reference Object](#referenceObject) | Schema definition of the application headers. Schema MUST be a map of key-value pairs. It **MUST NOT** define the protocol headers. If this is a [Schema Object](#schemaObject), then the `schemaFormat` will be assumed to be "application/vnd.aai.asyncapi+json;version=`asyncapi`" where the version is equal to the [AsyncAPI Version String](#A2SVersionString). payload | [Multi Format Schema Object](#multiFormatSchemaObject) | [Schema Object](#schemaObject) | [Reference Object](#referenceObject) | Definition of the message payload. If this is a [Schema Object](#schemaObject), then the `schemaFormat` will be assumed to be "application/vnd.aai.asyncapi+json;version=`asyncapi`" where the version is equal to the [AsyncAPI Version String](#A2SVersionString). correlationId | [Correlation ID Object](#correlationIdObject) | [Reference Object](#referenceObject) | Definition of the correlation ID used for message tracing or matching. @@ -1192,7 +1191,6 @@ This object MAY be extended with [Specification Extensions](#specificationExtens ```json { - "messageId": "userSignup", "name": "UserSignup", "title": "User signup", "summary": "Action to sign a user up.", @@ -1256,7 +1254,6 @@ This object MAY be extended with [Specification Extensions](#specificationExtens ``` ```yaml -messageId: userSignup name: UserSignup title: User signup summary: Action to sign a user up. @@ -1304,7 +1301,6 @@ Example using Avro to define the payload: ```json { - "messageId": "userSignup", "name": "UserSignup", "title": "User signup", "summary": "Action to sign a user up.", @@ -1324,7 +1320,6 @@ Example using Avro to define the payload: ``` ```yaml -messageId: userSignup name: UserSignup title: User signup summary: Action to sign a user up. @@ -1355,7 +1350,6 @@ If you're looking to apply traits to an operation, see the [Operation Trait Obje Field Name | Type | Description ---|:---:|--- -messageId | `string` | Unique string used to identify the message. The id MUST be unique among all messages described in the API. The messageId value is **case-sensitive**. Tools and libraries MAY use the messageId to uniquely identify a message, therefore, it is RECOMMENDED to follow common programming naming conventions. headers | [Multi Format Schema Object](#multiFormatSchemaObject) | [Schema Object](#schemaObject) | [Reference Object](#referenceObject) | Schema definition of the application headers. Schema MUST be a map of key-value pairs. It **MUST NOT** define the protocol headers. If this is a [Schema Object](#schemaObject), then the `schemaFormat` will be assumed to be "application/vnd.aai.asyncapi+json;version=`asyncapi`" where the version is equal to the [AsyncAPI Version String](#A2SVersionString). correlationId | [Correlation ID Object](#correlationIdObject) | [Reference Object](#referenceObject) | Definition of the correlation ID used for message tracing or matching. contentType | `string` | The content type to use when encoding/decoding a message's payload. The value MUST be a specific media type (e.g. `application/json`). When omitted, the value MUST be the one specified on the [defaultContentType](#defaultContentTypeString) field. diff --git a/public/_redirects b/public/_redirects index 5b60270ecec..46ecc4f0e7a 100644 --- a/public/_redirects +++ b/public/_redirects @@ -23,7 +23,7 @@ https://www.asyncapi.io/* https://www.asyncapi.com/:splat 301! # LATEST-SPEC-REDIRECTION:END # SPEC-REDIRECTION:START -/docs/reference/specification/3.0.0-next-major-spec.14 /docs/reference/specification/v3.0.0-next-major-spec.14 302! +/docs/reference/specification/3.0.0-next-major-spec.15 /docs/reference/specification/v3.0.0-next-major-spec.15 302! /docs/reference/specification/2.6.0 /docs/reference/specification/v2.6.0 302! /docs/reference/specification/2.5.0 /docs/reference/specification/v2.5.0 302! /docs/reference/specification/2.4.0 /docs/reference/specification/v2.4.0 302! From 40bc38dd08f47392e97ea80f9c72eb442d7bebf0 Mon Sep 17 00:00:00 2001 From: Ansh Goyal Date: Tue, 7 Nov 2023 00:51:34 +0530 Subject: [PATCH 059/134] feat: add global eslint plugin (#2288) Co-authored-by: Lukasz Gornicki --- .eslintrc.js | 30 +- package-lock.json | 1977 ++------------------------------------------- package.json | 4 +- 3 files changed, 82 insertions(+), 1929 deletions(-) diff --git a/.eslintrc.js b/.eslintrc.js index a7ae59ed8d2..233ad25c554 100644 --- a/.eslintrc.js +++ b/.eslintrc.js @@ -1,26 +1,6 @@ module.exports = { - "env": { - "browser": true, - "es6": true, - }, - "extends": ["eslint:recommended", "plugin:react/recommended", "plugin:cypress/recommended"], - "globals": { - "Atomics": "readonly", - "SharedArrayBuffer": "readonly", - "React": "writable" - }, - "parserOptions": { - "ecmaFeatures": { - "jsx": true - }, - "ecmaVersion": 2019, - "sourceType": "module" - }, - "plugins": [ - "react", - ], - "rules": { - "react/react-in-jsx-scope": "off", - "no-useless-catch": "off", - }, -}; + extends: ['@anshgoyalevil/eslint-config'], + rules: { + // add any additional or overridden rules here + } +} \ No newline at end of file diff --git a/package-lock.json b/package-lock.json index 03f341d3924..2ae4706e352 100644 --- a/package-lock.json +++ b/package-lock.json @@ -31,7 +31,6 @@ "clsx": "^1.1.1", "cssnano": "^5.1.12", "dotenv": "^8.2.0", - "eslint-plugin-cypress": "^2.13.3", "fuse.js": "^6.6.2", "googleapis": "^100.0.0", "gray-matter": "^4.0.2", @@ -70,13 +69,12 @@ "yaml": "^2.2.2" }, "devDependencies": { + "@anshgoyalevil/eslint-config": "^1.0.3", "@cypress/react": "^7.0.3", "@netlify/functions": "^1.4.0", "@netlify/plugin-nextjs": "^4.37.2", "cypress": "^10.11.0", "dedent": "^0.7.0", - "eslint": "^7.0.0", - "eslint-plugin-react": "^7.27.1", "inquirer": "^8.2.0", "postcss-import": "^14.1.0" } @@ -221,6 +219,12 @@ "@algolia/requester-common": "4.14.2" } }, + "node_modules/@anshgoyalevil/eslint-config": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/@anshgoyalevil/eslint-config/-/eslint-config-1.0.3.tgz", + "integrity": "sha512-IRxsNILa0/sKT+uDGOnD9f8DveL4vGA7MrFLGIMUWM2qclM25AfO+L3f/ot/uB9GsCp53qFA+RqX1Iz2nhfwxA==", + "dev": true + }, "node_modules/@babel/code-frame": { "version": "7.22.13", "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.22.13.tgz", @@ -668,55 +672,6 @@ } } }, - "node_modules/@eslint/eslintrc": { - "version": "0.4.3", - "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-0.4.3.tgz", - "integrity": "sha512-J6KFFz5QCYUJq3pf0mjEcCJVERbzv71PUIDczuh9JkwGEzced6CO5ADLHB1rbf/+oPBtoPfMYNOpGDzCANlbXw==", - "dependencies": { - "ajv": "^6.12.4", - "debug": "^4.1.1", - "espree": "^7.3.0", - "globals": "^13.9.0", - "ignore": "^4.0.6", - "import-fresh": "^3.2.1", - "js-yaml": "^3.13.1", - "minimatch": "^3.0.4", - "strip-json-comments": "^3.1.1" - } - }, - "node_modules/@eslint/eslintrc/node_modules/ajv": { - "version": "6.12.6", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", - "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", - "dependencies": { - "fast-deep-equal": "^3.1.1", - "fast-json-stable-stringify": "^2.0.0", - "json-schema-traverse": "^0.4.1", - "uri-js": "^4.2.2" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/epoberezkin" - } - }, - "node_modules/@eslint/eslintrc/node_modules/globals": { - "version": "13.12.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-13.12.0.tgz", - "integrity": "sha512-uS8X6lSKN2JumVoXrbUz+uG4BYG+eiawqm3qFcT7ammfbUHeCBoJMlHcec/S3krSk73/AE/f0szYFmgAA3kYZg==", - "dependencies": { - "type-fest": "^0.20.2" - } - }, - "node_modules/@eslint/eslintrc/node_modules/json-schema-traverse": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", - "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==" - }, - "node_modules/@eslint/eslintrc/node_modules/type-fest": { - "version": "0.20.2", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", - "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==" - }, "node_modules/@fastify/busboy": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/@fastify/busboy/-/busboy-2.0.0.tgz", @@ -823,21 +778,6 @@ "resolved": "https://registry.npmjs.org/@heroicons/react/-/react-1.0.5.tgz", "integrity": "sha512-UDMyLM2KavIu2vlWfMspapw9yii7aoLwzI2Hudx4fyoPwfKfxU8r3cL8dEBXOjcLG0/oOONZzbT14M1HoNtEcg==" }, - "node_modules/@humanwhocodes/config-array": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.5.0.tgz", - "integrity": "sha512-FagtKFz74XrTl7y6HCzQpwDfXP0yhxe9lHLD1UZxjvZIcbyRz8zTFF/yYNfSfzU414eDwZ1SrO0Qvtyf+wFMQg==", - "dependencies": { - "@humanwhocodes/object-schema": "^1.2.0", - "debug": "^4.1.1", - "minimatch": "^3.0.4" - } - }, - "node_modules/@humanwhocodes/object-schema": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-1.2.1.tgz", - "integrity": "sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==" - }, "node_modules/@ioredis/commands": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/@ioredis/commands/-/commands-1.2.0.tgz", @@ -2491,7 +2431,8 @@ "node_modules/ansi-colors": { "version": "4.1.1", "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.1.tgz", - "integrity": "sha512-JoX0apGbHaUJBNl6yF+p6JAFYZ666/hhCGKN5t9QFjbJQKUU/g8MNbFDbvfrgKXvI1QpZplPOnwIo99lX/AAmA==" + "integrity": "sha512-JoX0apGbHaUJBNl6yF+p6JAFYZ666/hhCGKN5t9QFjbJQKUU/g8MNbFDbvfrgKXvI1QpZplPOnwIo99lX/AAmA==", + "dev": true }, "node_modules/ansi-escapes": { "version": "4.3.2", @@ -2519,7 +2460,8 @@ "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==" + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "dev": true }, "node_modules/ansi-styles": { "version": "3.2.1", @@ -2599,19 +2541,6 @@ } } }, - "node_modules/array-includes": { - "version": "3.1.4", - "resolved": "https://registry.npmjs.org/array-includes/-/array-includes-3.1.4.tgz", - "integrity": "sha512-ZTNSQkmWumEbiHO2GF4GmWxYVTiQyJy2XOTa15sdQSrvKn7l+180egQMqlrMOUMCyLMD7pmyQe4mMDUT6Behrw==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.3", - "es-abstract": "^1.19.1", - "get-intrinsic": "^1.1.1", - "is-string": "^1.0.7" - } - }, "node_modules/array-union": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz", @@ -2621,17 +2550,6 @@ "node": ">=8" } }, - "node_modules/array.prototype.flatmap": { - "version": "1.2.5", - "resolved": "https://registry.npmjs.org/array.prototype.flatmap/-/array.prototype.flatmap-1.2.5.tgz", - "integrity": "sha512-08u6rVyi1Lj7oqWbS9nUxliETrtIROT4XGTA4D/LWGten6E3ocm7cy9SIrmNHOL5XVbVuckUp3X6Xyg8/zpvHA==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.0", - "define-properties": "^1.1.3", - "es-abstract": "^1.19.0" - } - }, "node_modules/arrify": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/arrify/-/arrify-2.0.1.tgz", @@ -2663,7 +2581,8 @@ "node_modules/astral-regex": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-2.0.0.tgz", - "integrity": "sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ==" + "integrity": "sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ==", + "dev": true }, "node_modules/astring": { "version": "1.8.6", @@ -3095,11 +3014,6 @@ "caller-callsite": "^2.0.0" } }, - "node_modules/callsites": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", - "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==" - }, "node_modules/camelcase-css": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/camelcase-css/-/camelcase-css-2.0.1.tgz", @@ -3659,6 +3573,7 @@ "version": "7.0.3", "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", + "dev": true, "dependencies": { "path-key": "^3.1.0", "shebang-command": "^2.0.0", @@ -4558,11 +4473,6 @@ "node": ">=4.0.0" } }, - "node_modules/deep-is": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", - "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==" - }, "node_modules/defaults": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/defaults/-/defaults-1.0.3.tgz", @@ -4572,22 +4482,6 @@ "clone": "^1.0.2" } }, - "node_modules/define-properties": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.4.tgz", - "integrity": "sha512-uckOqKcfaVvtBdsVkdPv3XjveQJsNQqmhXgRi8uhvWWuPYZCNlzT8qAyblUgNoXdHdjMTzAqeGjAoli8f+bzPA==", - "dev": true, - "dependencies": { - "has-property-descriptors": "^1.0.0", - "object-keys": "^1.1.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/defined": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/defined/-/defined-1.0.0.tgz", @@ -4726,14 +4620,6 @@ "resolved": "https://registry.npmjs.org/dlv/-/dlv-1.1.3.tgz", "integrity": "sha512-+HlytyjlPKnIG8XuRG8WvmBP8xs8P71y+SKKS6ZXWoEgLuePxtDoUEiH7WkdePWrQ5JBpE6aoVqfZfJUQkjXwA==" }, - "node_modules/doctrine": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", - "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", - "dependencies": { - "esutils": "^2.0.2" - } - }, "node_modules/dom-serializer": { "version": "1.4.1", "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-1.4.1.tgz", @@ -4857,6 +4743,7 @@ "version": "2.3.6", "resolved": "https://registry.npmjs.org/enquirer/-/enquirer-2.3.6.tgz", "integrity": "sha512-yjNnPr315/FjS4zIsUxYguYUPP2e1NK4d7E7ZOLiyYCcbFBiTMyID+2wvm2w6+pZ/odMA7cRkjhsPbltwBOrLg==", + "dev": true, "dependencies": { "ansi-colors": "^4.1.1" } @@ -4877,55 +4764,6 @@ "is-arrayish": "^0.2.1" } }, - "node_modules/es-abstract": { - "version": "1.20.4", - "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.20.4.tgz", - "integrity": "sha512-0UtvRN79eMe2L+UNEF1BwRe364sj/DXhQ/k5FmivgoSdpM90b8Jc0mDzKMGo7QS0BVbOP/bTwBKNnDc9rNzaPA==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.2", - "es-to-primitive": "^1.2.1", - "function-bind": "^1.1.1", - "function.prototype.name": "^1.1.5", - "get-intrinsic": "^1.1.3", - "get-symbol-description": "^1.0.0", - "has": "^1.0.3", - "has-property-descriptors": "^1.0.0", - "has-symbols": "^1.0.3", - "internal-slot": "^1.0.3", - "is-callable": "^1.2.7", - "is-negative-zero": "^2.0.2", - "is-regex": "^1.1.4", - "is-shared-array-buffer": "^1.0.2", - "is-string": "^1.0.7", - "is-weakref": "^1.0.2", - "object-inspect": "^1.12.2", - "object-keys": "^1.1.1", - "object.assign": "^4.1.4", - "regexp.prototype.flags": "^1.4.3", - "safe-regex-test": "^1.0.0", - "string.prototype.trimend": "^1.0.5", - "string.prototype.trimstart": "^1.0.5", - "unbox-primitive": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/es-to-primitive": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz", - "integrity": "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==", - "dev": true, - "dependencies": { - "is-callable": "^1.1.4", - "is-date-object": "^1.0.1", - "is-symbol": "^1.0.2" - } - }, "node_modules/escalade": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", @@ -4939,282 +4777,11 @@ "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=" }, - "node_modules/eslint": { - "version": "7.32.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-7.32.0.tgz", - "integrity": "sha512-VHZ8gX+EDfz+97jGcgyGCyRia/dPOd6Xh9yPv8Bl1+SoaIwD+a/vlrOmGRUyOYu7MwUhc7CxqeaDZU13S4+EpA==", - "dependencies": { - "@babel/code-frame": "7.12.11", - "@eslint/eslintrc": "^0.4.3", - "@humanwhocodes/config-array": "^0.5.0", - "ajv": "^6.10.0", - "chalk": "^4.0.0", - "cross-spawn": "^7.0.2", - "debug": "^4.0.1", - "doctrine": "^3.0.0", - "enquirer": "^2.3.5", - "escape-string-regexp": "^4.0.0", - "eslint-scope": "^5.1.1", - "eslint-utils": "^2.1.0", - "eslint-visitor-keys": "^2.0.0", - "espree": "^7.3.1", - "esquery": "^1.4.0", - "esutils": "^2.0.2", - "fast-deep-equal": "^3.1.3", - "file-entry-cache": "^6.0.1", - "functional-red-black-tree": "^1.0.1", - "glob-parent": "^5.1.2", - "globals": "^13.6.0", - "ignore": "^4.0.6", - "import-fresh": "^3.0.0", - "imurmurhash": "^0.1.4", - "is-glob": "^4.0.0", - "js-yaml": "^3.13.1", - "json-stable-stringify-without-jsonify": "^1.0.1", - "levn": "^0.4.1", - "lodash.merge": "^4.6.2", - "minimatch": "^3.0.4", - "natural-compare": "^1.4.0", - "optionator": "^0.9.1", - "progress": "^2.0.0", - "regexpp": "^3.1.0", - "semver": "^7.2.1", - "strip-ansi": "^6.0.0", - "strip-json-comments": "^3.1.0", - "table": "^6.0.9", - "text-table": "^0.2.0", - "v8-compile-cache": "^2.0.3" - } - }, - "node_modules/eslint-plugin-cypress": { - "version": "2.13.3", - "resolved": "https://registry.npmjs.org/eslint-plugin-cypress/-/eslint-plugin-cypress-2.13.3.tgz", - "integrity": "sha512-nAPjZE5WopCsgJwl3vHm5iafpV+ZRO76Z9hMyRygWhmg5ODXDPd+9MaPl7kdJ2azj+sO87H3P1PRnggIrz848g==", - "dependencies": { - "globals": "^11.12.0" - }, - "peerDependencies": { - "eslint": ">= 3.2.1" - } - }, - "node_modules/eslint-plugin-react": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/eslint-plugin-react/-/eslint-plugin-react-7.27.1.tgz", - "integrity": "sha512-meyunDjMMYeWr/4EBLTV1op3iSG3mjT/pz5gti38UzfM4OPpNc2m0t2xvKCOMU5D6FSdd34BIMFOvQbW+i8GAA==", - "dev": true, - "dependencies": { - "array-includes": "^3.1.4", - "array.prototype.flatmap": "^1.2.5", - "doctrine": "^2.1.0", - "estraverse": "^5.3.0", - "jsx-ast-utils": "^2.4.1 || ^3.0.0", - "minimatch": "^3.0.4", - "object.entries": "^1.1.5", - "object.fromentries": "^2.0.5", - "object.hasown": "^1.1.0", - "object.values": "^1.1.5", - "prop-types": "^15.7.2", - "resolve": "^2.0.0-next.3", - "semver": "^6.3.0", - "string.prototype.matchall": "^4.0.6" - }, - "engines": { - "node": ">=4" - }, - "peerDependencies": { - "eslint": "^3 || ^4 || ^5 || ^6 || ^7 || ^8" - } - }, - "node_modules/eslint-plugin-react/node_modules/doctrine": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz", - "integrity": "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==", - "dev": true, - "dependencies": { - "esutils": "^2.0.2" - } - }, - "node_modules/eslint-plugin-react/node_modules/resolve": { - "version": "2.0.0-next.3", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-2.0.0-next.3.tgz", - "integrity": "sha512-W8LucSynKUIDu9ylraa7ueVZ7hc0uAgJBxVsQSKOXOyle8a93qXhcz+XAXZ8bIq2d6i4Ehddn6Evt+0/UwKk6Q==", - "dev": true, - "dependencies": { - "is-core-module": "^2.2.0", - "path-parse": "^1.0.6" - } - }, - "node_modules/eslint-plugin-react/node_modules/semver": { - "version": "6.3.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", - "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", - "dev": true, - "bin": { - "semver": "bin/semver.js" - } - }, - "node_modules/eslint-scope": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", - "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==", - "dependencies": { - "esrecurse": "^4.3.0", - "estraverse": "^4.1.1" - } - }, - "node_modules/eslint-scope/node_modules/estraverse": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", - "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==" - }, - "node_modules/eslint-utils": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-2.1.0.tgz", - "integrity": "sha512-w94dQYoauyvlDc43XnGB8lU3Zt713vNChgt4EWwhXAP2XkBvndfxF0AgIqKOOasjPIPzj9JqgwkwbCYD0/V3Zg==", - "dependencies": { - "eslint-visitor-keys": "^1.1.0" - } - }, - "node_modules/eslint-utils/node_modules/eslint-visitor-keys": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz", - "integrity": "sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==" - }, - "node_modules/eslint-visitor-keys": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz", - "integrity": "sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==" - }, - "node_modules/eslint/node_modules/@babel/code-frame": { - "version": "7.12.11", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.12.11.tgz", - "integrity": "sha512-Zt1yodBx1UcyiePMSkWnU4hPqhwq7hGi2nFL1LeA3EUl+q2LQx16MISgJ0+z7dnmgvP9QtIleuETGOiOH1RcIw==", - "dependencies": { - "@babel/highlight": "^7.10.4" - } - }, - "node_modules/eslint/node_modules/ajv": { - "version": "6.12.6", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", - "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", - "dependencies": { - "fast-deep-equal": "^3.1.1", - "fast-json-stable-stringify": "^2.0.0", - "json-schema-traverse": "^0.4.1", - "uri-js": "^4.2.2" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/epoberezkin" - } - }, - "node_modules/eslint/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==", - "dependencies": { - "color-convert": "^2.0.1" - } - }, - "node_modules/eslint/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - } - }, - "node_modules/eslint/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==", - "dependencies": { - "color-name": "~1.1.4" - } - }, - "node_modules/eslint/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==" - }, - "node_modules/eslint/node_modules/escape-string-regexp": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", - "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==" - }, - "node_modules/eslint/node_modules/globals": { - "version": "13.12.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-13.12.0.tgz", - "integrity": "sha512-uS8X6lSKN2JumVoXrbUz+uG4BYG+eiawqm3qFcT7ammfbUHeCBoJMlHcec/S3krSk73/AE/f0szYFmgAA3kYZg==", - "dependencies": { - "type-fest": "^0.20.2" - } - }, - "node_modules/eslint/node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==" - }, - "node_modules/eslint/node_modules/json-schema-traverse": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", - "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==" - }, - "node_modules/eslint/node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dependencies": { - "has-flag": "^4.0.0" - } - }, - "node_modules/eslint/node_modules/type-fest": { - "version": "0.20.2", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", - "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==" - }, - "node_modules/espree": { - "version": "7.3.1", - "resolved": "https://registry.npmjs.org/espree/-/espree-7.3.1.tgz", - "integrity": "sha512-v3JCNCE64umkFpmkFGqzVKsOT0tN1Zr+ueqLZfpV1Ob8e+CEgPWa+OxCoGH3tnhimMKIaBm4m/vaRpJ/krRz2g==", - "dependencies": { - "acorn": "^7.4.0", - "acorn-jsx": "^5.3.1", - "eslint-visitor-keys": "^1.3.0" - } - }, - "node_modules/espree/node_modules/eslint-visitor-keys": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz", - "integrity": "sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==" - }, "node_modules/esprima": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==" }, - "node_modules/esquery": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.4.0.tgz", - "integrity": "sha512-cCDispWt5vHHtwMY2YrAQ4ibFkAL8RbH5YGBnZBc90MolvvfkkQcJro/aZiAQUlQ3qgrYS6D6v8Gc5G5CQsc9w==", - "dependencies": { - "estraverse": "^5.1.0" - } - }, - "node_modules/esrecurse": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", - "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", - "dependencies": { - "estraverse": "^5.2.0" - } - }, - "node_modules/estraverse": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", - "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==" - }, "node_modules/estree-util-attach-comments": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/estree-util-attach-comments/-/estree-util-attach-comments-2.1.1.tgz", @@ -5477,11 +5044,6 @@ "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==" }, - "node_modules/fast-levenshtein": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", - "integrity": "sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=" - }, "node_modules/fast-text-encoding": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/fast-text-encoding/-/fast-text-encoding-1.0.3.tgz", @@ -5545,14 +5107,6 @@ "escape-string-regexp": "^1.0.5" } }, - "node_modules/file-entry-cache": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz", - "integrity": "sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==", - "dependencies": { - "flat-cache": "^3.0.4" - } - }, "node_modules/fill-range": { "version": "2.2.4", "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-2.2.4.tgz", @@ -5573,20 +5127,6 @@ "locate-path": "^2.0.0" } }, - "node_modules/flat-cache": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.0.4.tgz", - "integrity": "sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg==", - "dependencies": { - "flatted": "^3.1.0", - "rimraf": "^3.0.2" - } - }, - "node_modules/flatted": { - "version": "3.2.4", - "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.2.4.tgz", - "integrity": "sha512-8/sOawo8tJ4QOBX8YlQBMxL8+RLZfxMQOif9o0KUKTNTjMYElWPE0r/m5VNFxTRd0NSw8qSy8dajrwX4RYI1Hw==" - }, "node_modules/follow-redirects": { "version": "1.15.2", "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.2.tgz", @@ -5700,29 +5240,6 @@ "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==" }, - "node_modules/function.prototype.name": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/function.prototype.name/-/function.prototype.name-1.1.5.tgz", - "integrity": "sha512-uN7m/BzVKQnCUF/iW8jYea67v++2u7m5UgENbHRtdDVclOUP+FMPlCNdmk0h/ysGyo2tavMJEDqJAkJdRa1vMA==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.3", - "es-abstract": "^1.19.0", - "functions-have-names": "^1.2.2" - } - }, - "node_modules/functional-red-black-tree": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz", - "integrity": "sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc=" - }, - "node_modules/functions-have-names": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/functions-have-names/-/functions-have-names-1.2.2.tgz", - "integrity": "sha512-bLgc3asbWdwPbx2mNk2S49kmJCuQeu0nfmaOgbs8WIyzzkw3r4htszdIi9Q9EMezDPTYuJx2wvjZ/EwgAthpnA==", - "dev": true - }, "node_modules/fuse.js": { "version": "6.6.2", "resolved": "https://registry.npmjs.org/fuse.js/-/fuse.js-6.6.2.tgz", @@ -5807,16 +5324,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/get-symbol-description": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.0.0.tgz", - "integrity": "sha512-2EmdH1YvIQiZpltCNgkuiUnyukzxM/R6NDJX31Ke3BG1Nq5b0S2PhX59UKi9vZpPDQVdqn+1IcaAwnzTT5vCjw==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.2", - "get-intrinsic": "^1.1.1" - } - }, "node_modules/getos": { "version": "3.2.1", "resolved": "https://registry.npmjs.org/getos/-/getos-3.2.1.tgz", @@ -6062,32 +5569,11 @@ "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=" }, - "node_modules/has-bigints": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.0.2.tgz", - "integrity": "sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ==", - "dev": true, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/has-flag": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=" }, - "node_modules/has-property-descriptors": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.0.tgz", - "integrity": "sha512-62DVLZGoiEBDHQyqG4w9xCuZ7eJEwNmJRWw2VY84Oedb7WFcA27fiEVe8oUQx9hAUJ4ekurquucTGwsyO1XGdQ==", - "dev": true, - "dependencies": { - "get-intrinsic": "^1.1.1" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/has-symbols": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", @@ -6099,15 +5585,6 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/has-tostringtag": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.0.tgz", - "integrity": "sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ==", - "dev": true, - "dependencies": { - "has-symbols": "^1.0.2" - } - }, "node_modules/hast-to-hyperscript": { "version": "9.0.1", "resolved": "https://registry.npmjs.org/hast-to-hyperscript/-/hast-to-hyperscript-9.0.1.tgz", @@ -6514,11 +5991,6 @@ "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==" }, - "node_modules/ignore": { - "version": "4.0.6", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-4.0.6.tgz", - "integrity": "sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==" - }, "node_modules/ignore-loader": { "version": "0.1.2", "resolved": "https://registry.npmjs.org/ignore-loader/-/ignore-loader-0.1.2.tgz", @@ -6541,15 +6013,6 @@ "import-from": "^2.1.0" } }, - "node_modules/import-fresh": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", - "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", - "dependencies": { - "parent-module": "^1.0.0", - "resolve-from": "^4.0.0" - } - }, "node_modules/import-from": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/import-from/-/import-from-2.1.0.tgz", @@ -6563,11 +6026,6 @@ "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-3.0.0.tgz", "integrity": "sha1-six699nWiBvItuZTM17rywoYh0g=" }, - "node_modules/imurmurhash": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", - "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=" - }, "node_modules/indent-string": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz", @@ -6685,17 +6143,6 @@ "has-flag": "^4.0.0" } }, - "node_modules/internal-slot": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.3.tgz", - "integrity": "sha512-O0DB1JC/sPyZl7cIo78n5dR7eUSwwpYPiXRhTzNxZVAMUuB8vlnRFyLxdrVToks6XPLVnFfbzaVd5WLjhgg+vA==", - "dev": true, - "dependencies": { - "get-intrinsic": "^1.1.0", - "has": "^1.0.3", - "side-channel": "^1.0.4" - } - }, "node_modules/internmap": { "version": "2.0.3", "resolved": "https://registry.npmjs.org/internmap/-/internmap-2.0.3.tgz", @@ -6802,18 +6249,6 @@ "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=" }, - "node_modules/is-bigint": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/is-bigint/-/is-bigint-1.0.4.tgz", - "integrity": "sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==", - "dev": true, - "dependencies": { - "has-bigints": "^1.0.1" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/is-binary-path": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", @@ -6825,22 +6260,6 @@ "node": ">=8" } }, - "node_modules/is-boolean-object": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.1.2.tgz", - "integrity": "sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.2", - "has-tostringtag": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/is-buffer": { "version": "2.0.5", "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-2.0.5.tgz", @@ -6863,18 +6282,6 @@ "node": ">=4" } }, - "node_modules/is-callable": { - "version": "1.2.7", - "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.7.tgz", - "integrity": "sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==", - "dev": true, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/is-ci": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/is-ci/-/is-ci-3.0.1.tgz", @@ -6898,15 +6305,6 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/is-date-object": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.5.tgz", - "integrity": "sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==", - "dev": true, - "dependencies": { - "has-tostringtag": "^1.0.0" - } - }, "node_modules/is-decimal": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/is-decimal/-/is-decimal-1.0.4.tgz", @@ -6950,7 +6348,8 @@ "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==" + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "dev": true }, "node_modules/is-function": { "version": "1.0.2", @@ -6992,18 +6391,6 @@ "integrity": "sha512-2HvIEKRoqS62guEC+qBjpvRubdX910WCMuJTZ+I9yvqKU2/12eSL549HMwtabb4oupdj2sMP50k+XJfB/8JE6w==", "dev": true }, - "node_modules/is-negative-zero": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.2.tgz", - "integrity": "sha512-dqJvarLawXsFbNDeJW7zAz8ItJ9cd28YufuuFzh0G8pNHjJMnY08Dv7sYX2uF5UpQOwieAeOExEYAWWfu7ZZUA==", - "dev": true, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/is-number": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/is-number/-/is-number-2.1.0.tgz", @@ -7012,21 +6399,6 @@ "kind-of": "^3.0.2" } }, - "node_modules/is-number-object": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.0.7.tgz", - "integrity": "sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ==", - "dev": true, - "dependencies": { - "has-tostringtag": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/is-number/node_modules/is-buffer": { "version": "1.1.6", "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", @@ -7079,51 +6451,11 @@ "@types/estree": "*" } }, - "node_modules/is-regex": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.4.tgz", - "integrity": "sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.2", - "has-tostringtag": "^1.0.0" - } - }, - "node_modules/is-shared-array-buffer": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.2.tgz", - "integrity": "sha512-sqN2UDu1/0y6uvXyStCOzyhAjCSlHceFoMKJW8W9EU9cvic/QdsZ0kEU93HEy3IUEFZIiH/3w+AH/UQbPHNdhA==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.2" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/is-stream": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", "integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ=" }, - "node_modules/is-string": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.0.7.tgz", - "integrity": "sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==", - "dev": true, - "dependencies": { - "has-tostringtag": "^1.0.0" - } - }, - "node_modules/is-symbol": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.4.tgz", - "integrity": "sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==", - "dev": true, - "dependencies": { - "has-symbols": "^1.0.2" - } - }, "node_modules/is-typedarray": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", @@ -7141,18 +6473,6 @@ "resolved": "https://registry.npmjs.org/is-url/-/is-url-1.2.4.tgz", "integrity": "sha512-ITvGim8FhRiYe4IQ5uHSkj7pVaPDrCTkNd3yq3cV7iZAcJdHTUMPMEHcqSOy9xZ9qFenQCvi+2wjH9a1nXqHww==" }, - "node_modules/is-weakref": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-weakref/-/is-weakref-1.0.2.tgz", - "integrity": "sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.2" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/is-whitespace-character": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/is-whitespace-character/-/is-whitespace-character-1.0.4.tgz", @@ -7191,7 +6511,8 @@ "node_modules/isexe": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", - "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=" + "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=", + "dev": true }, "node_modules/isobject": { "version": "2.1.0", @@ -7296,11 +6617,6 @@ "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==" }, - "node_modules/json-stable-stringify-without-jsonify": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", - "integrity": "sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE=" - }, "node_modules/json-stringify-safe": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz", @@ -7345,16 +6661,6 @@ "verror": "1.10.0" } }, - "node_modules/jsx-ast-utils": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/jsx-ast-utils/-/jsx-ast-utils-3.2.1.tgz", - "integrity": "sha512-uP5vu8xfy2F9A6LGC22KO7e2/vGTS1MhP+18f++ZNlf0Ohaxbc9nIEwHAsejlJKyzfZzU5UIhe5ItYkitcZnZA==", - "dev": true, - "dependencies": { - "array-includes": "^3.1.3", - "object.assign": "^4.1.2" - } - }, "node_modules/jwa": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/jwa/-/jwa-2.0.0.tgz", @@ -7409,15 +6715,6 @@ "set-getter": "^0.1.0" } }, - "node_modules/levn": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", - "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==", - "dependencies": { - "prelude-ls": "^1.2.1", - "type-check": "~0.4.0" - } - }, "node_modules/lilconfig": { "version": "2.0.6", "resolved": "https://registry.npmjs.org/lilconfig/-/lilconfig-2.0.6.tgz", @@ -7587,11 +6884,6 @@ "lodash._reinterpolate": "^3.0.0" } }, - "node_modules/lodash.truncate": { - "version": "4.4.2", - "resolved": "https://registry.npmjs.org/lodash.truncate/-/lodash.truncate-4.4.2.tgz", - "integrity": "sha1-WjUNoLERO4N+z//VgSy+WNbq4ZM=" - }, "node_modules/lodash.unescape": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/lodash.unescape/-/lodash.unescape-4.0.1.tgz", @@ -9018,11 +8310,6 @@ "integrity": "sha512-ONmRUqK7zj7DWX0D9ADe03wbwOBZxNAfF20PlGfCWQcD3+/MakShIHrMqx9YwPTfxDdF1zLeL+RGZiR9kGMLdg==", "dev": true }, - "node_modules/natural-compare": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", - "integrity": "sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc=" - }, "node_modules/nearley": { "version": "2.20.1", "resolved": "https://registry.npmjs.org/nearley/-/nearley-2.20.1.tgz", @@ -9308,62 +8595,6 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/object-keys": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", - "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", - "dev": true - }, - "node_modules/object.assign": { - "version": "4.1.4", - "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.4.tgz", - "integrity": "sha512-1mxKf0e58bvyjSCtKYY4sRe9itRk3PJpquJOjeIkz885CczcI4IvJJDLPS72oowuSh+pBxUFROpX+TU++hxhZQ==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.4", - "has-symbols": "^1.0.3", - "object-keys": "^1.1.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/object.entries": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/object.entries/-/object.entries-1.1.5.tgz", - "integrity": "sha512-TyxmjUoZggd4OrrU1W66FMDG6CuqJxsFvymeyXI51+vQLN67zYfZseptRge703kKQdo4uccgAKebXFcRCzk4+g==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.3", - "es-abstract": "^1.19.1" - } - }, - "node_modules/object.fromentries": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/object.fromentries/-/object.fromentries-2.0.5.tgz", - "integrity": "sha512-CAyG5mWQRRiBU57Re4FKoTBjXfDoNwdFVH2Y1tS9PqCsfUTymAohOkEMSG3aRNKmv4lV3O7p1et7c187q6bynw==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.3", - "es-abstract": "^1.19.1" - } - }, - "node_modules/object.hasown": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/object.hasown/-/object.hasown-1.1.0.tgz", - "integrity": "sha512-MhjYRfj3GBlhSkDHo6QmvgjRLXQ2zndabdf3nX0yTyZK9rPfxb6uRpAac8HXNLy1GpqWtZ81Qh4v3uOls2sRAg==", - "dev": true, - "dependencies": { - "define-properties": "^1.1.3", - "es-abstract": "^1.19.1" - } - }, "node_modules/object.pick": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/object.pick/-/object.pick-1.3.0.tgz", @@ -9377,17 +8608,6 @@ "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=" }, - "node_modules/object.values": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/object.values/-/object.values-1.1.5.tgz", - "integrity": "sha512-QUZRW0ilQ3PnPpbNtgdNV1PDbEqLIiSFB3l+EnGtBQ/8SUTLj1PZwtQHABZtLgwpJZTSZhuGLOGk57Drx2IvYg==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.3", - "es-abstract": "^1.19.1" - } - }, "node_modules/ofetch": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/ofetch/-/ofetch-1.0.1.tgz", @@ -9440,19 +8660,6 @@ "mimic-fn": "^2.1.0" } }, - "node_modules/optionator": { - "version": "0.9.1", - "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.1.tgz", - "integrity": "sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw==", - "dependencies": { - "deep-is": "^0.1.3", - "fast-levenshtein": "^2.0.6", - "levn": "^0.4.1", - "prelude-ls": "^1.2.1", - "type-check": "^0.4.0", - "word-wrap": "^1.2.3" - } - }, "node_modules/ora": { "version": "5.4.1", "resolved": "https://registry.npmjs.org/ora/-/ora-5.4.1.tgz", @@ -9639,14 +8846,6 @@ "resolved": "https://registry.npmjs.org/p-try/-/p-try-1.0.0.tgz", "integrity": "sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M=" }, - "node_modules/parent-module": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", - "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", - "dependencies": { - "callsites": "^3.0.0" - } - }, "node_modules/parse-entities": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/parse-entities/-/parse-entities-4.0.1.tgz", @@ -9760,7 +8959,8 @@ "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==" + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", + "dev": true }, "node_modules/path-parse": { "version": "1.0.7", @@ -10517,11 +9717,6 @@ "node": ">=10" } }, - "node_modules/prelude-ls": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", - "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==" - }, "node_modules/pretty-bytes": { "version": "5.6.0", "resolved": "https://registry.npmjs.org/pretty-bytes/-/pretty-bytes-5.6.0.tgz", @@ -10547,11 +9742,6 @@ "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==" }, - "node_modules/progress": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.3.tgz", - "integrity": "sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==" - }, "node_modules/promise": { "version": "7.3.1", "resolved": "https://registry.npmjs.org/promise/-/promise-7.3.1.tgz", @@ -11065,28 +10255,6 @@ "regexp-tree": "bin/regexp-tree" } }, - "node_modules/regexp.prototype.flags": { - "version": "1.4.3", - "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.4.3.tgz", - "integrity": "sha512-fjggEOO3slI6Wvgjwflkc4NFRCTZAu5CnNfBd5qOMYhWdn67nJBBu34/TkD++eeFmd8C9r9jfXJ27+nSiRkSUA==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.3", - "functions-have-names": "^1.2.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/regexpp": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-3.2.0.tgz", - "integrity": "sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg==" - }, "node_modules/remark-footnotes": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/remark-footnotes/-/remark-footnotes-2.0.0.tgz", @@ -11292,11 +10460,6 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/resolve-from": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", - "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==" - }, "node_modules/restore-cursor": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-3.1.0.tgz", @@ -11339,6 +10502,7 @@ "version": "3.0.2", "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", + "dev": true, "dependencies": { "glob": "^7.1.3" } @@ -11406,20 +10570,6 @@ "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" }, - "node_modules/safe-regex-test": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/safe-regex-test/-/safe-regex-test-1.0.0.tgz", - "integrity": "sha512-JBUUzyOgEwXQY1NuPtvcj/qcBDbDmEvWufhlnXZIm75DEHp+afM1r1ujJpJsV/gSM4t59tpDyPi1sd6ZaPFfsA==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.2", - "get-intrinsic": "^1.1.3", - "is-regex": "^1.1.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/safer-buffer": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", @@ -11503,6 +10653,7 @@ "version": "7.5.4", "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", + "dev": true, "dependencies": { "lru-cache": "^6.0.0" }, @@ -11553,6 +10704,7 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", + "dev": true, "dependencies": { "shebang-regex": "^3.0.0" } @@ -11560,7 +10712,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==" + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", + "dev": true }, "node_modules/shortid": { "version": "2.2.16", @@ -11659,6 +10812,7 @@ "version": "4.0.0", "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-4.0.0.tgz", "integrity": "sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ==", + "dev": true, "dependencies": { "ansi-styles": "^4.0.0", "astral-regex": "^2.0.0", @@ -11669,6 +10823,7 @@ "version": "4.3.0", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, "dependencies": { "color-convert": "^2.0.1" } @@ -11677,6 +10832,7 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, "dependencies": { "color-name": "~1.1.4" } @@ -11684,7 +10840,8 @@ "node_modules/slice-ansi/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==" + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true }, "node_modules/source-list-map": { "version": "2.0.1", @@ -11792,56 +10949,13 @@ "version": "4.2.3", "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "dev": true, "dependencies": { "emoji-regex": "^8.0.0", "is-fullwidth-code-point": "^3.0.0", "strip-ansi": "^6.0.1" } }, - "node_modules/string.prototype.matchall": { - "version": "4.0.6", - "resolved": "https://registry.npmjs.org/string.prototype.matchall/-/string.prototype.matchall-4.0.6.tgz", - "integrity": "sha512-6WgDX8HmQqvEd7J+G6VtAahhsQIssiZ8zl7zKh1VDMFyL3hRTJP4FTNA3RbIp2TOQ9AYNDcc7e3fH0Qbup+DBg==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.3", - "es-abstract": "^1.19.1", - "get-intrinsic": "^1.1.1", - "has-symbols": "^1.0.2", - "internal-slot": "^1.0.3", - "regexp.prototype.flags": "^1.3.1", - "side-channel": "^1.0.4" - } - }, - "node_modules/string.prototype.trimend": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.5.tgz", - "integrity": "sha512-I7RGvmjV4pJ7O3kdf+LXFpVfdNOxtCW/2C8f6jNiW4+PQchwxkCDzlk1/7p+Wl4bqFIZeF47qAHXLuHHWKAxog==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.4", - "es-abstract": "^1.19.5" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/string.prototype.trimstart": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.5.tgz", - "integrity": "sha512-THx16TJCGlsN0o6dl2o6ncWUsdgnLRSA23rRE5pyGBw/mLr3Ej/R2LaqCtgP8VNMGZsvMWnf9ooZPyY2bHvUFg==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.4", - "es-abstract": "^1.19.5" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/stringify-entities": { "version": "4.0.3", "resolved": "https://registry.npmjs.org/stringify-entities/-/stringify-entities-4.0.3.tgz", @@ -11868,6 +10982,7 @@ "version": "6.0.1", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dev": true, "dependencies": { "ansi-regex": "^5.0.1" } @@ -11894,11 +11009,6 @@ "node": ">=6" } }, - "node_modules/strip-json-comments": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", - "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==" - }, "node_modules/style-to-object": { "version": "0.4.1", "resolved": "https://registry.npmjs.org/style-to-object/-/style-to-object-0.4.1.tgz", @@ -12054,18 +11164,6 @@ "node": ">= 4.7.0" } }, - "node_modules/table": { - "version": "6.7.5", - "resolved": "https://registry.npmjs.org/table/-/table-6.7.5.tgz", - "integrity": "sha512-LFNeryOqiQHqCVKzhkymKwt6ozeRhlm8IL1mE8rNUurkir4heF6PzMyRgaTa4tlyPTGGgXuvVOF/OLWiH09Lqw==", - "dependencies": { - "ajv": "^8.0.1", - "lodash.truncate": "^4.4.2", - "slice-ansi": "^4.0.0", - "string-width": "^4.2.3", - "strip-ansi": "^6.0.1" - } - }, "node_modules/tailwind-merge": { "version": "1.6.2", "resolved": "https://registry.npmjs.org/tailwind-merge/-/tailwind-merge-1.6.2.tgz", @@ -12204,11 +11302,6 @@ "node": ">= 6" } }, - "node_modules/text-table": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", - "integrity": "sha1-f17oI66AUgfACvLfSoTsP8+lcLQ=" - }, "node_modules/throttleit": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/throttleit/-/throttleit-1.0.0.tgz", @@ -12393,14 +11486,6 @@ "integrity": "sha512-KXXFFdAbFXY4geFIwoyNK+f5Z1b7swfXABfL7HXCmoIWMKU3dmS26672A4EeQtDzLKy7SXmfBu51JolvEKwtGA==", "dev": true }, - "node_modules/type-check": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", - "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==", - "dependencies": { - "prelude-ls": "^1.2.1" - } - }, "node_modules/typedarray": { "version": "0.0.6", "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz", @@ -12417,21 +11502,6 @@ "integrity": "sha512-TrY6DsjTQQgyS3E3dBaOXf0TpPD8u9FVrVYmKVegJuFw51n/YB9XPt+U6ydzFG5ZIN7+DIjPbNmXoBj9esYhgQ==", "dev": true }, - "node_modules/unbox-primitive": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.0.2.tgz", - "integrity": "sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.2", - "has-bigints": "^1.0.2", - "has-symbols": "^1.0.3", - "which-boxed-primitive": "^1.0.2" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/uncrypto": { "version": "0.1.2", "resolved": "https://registry.npmjs.org/uncrypto/-/uncrypto-0.1.2.tgz", @@ -12838,11 +11908,6 @@ "node": ">=8" } }, - "node_modules/v8-compile-cache": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/v8-compile-cache/-/v8-compile-cache-2.3.0.tgz", - "integrity": "sha512-l8lCEmLcLYZh4nbunNZvQCJc5pv7+RCwa8q/LdUx8u7lsWvPDKmpodJAJNwkAhJC//dFY48KuIEmjtd4RViDrA==" - }, "node_modules/verror": { "version": "1.10.0", "resolved": "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz", @@ -12993,32 +12058,9 @@ "version": "2.0.2", "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", - "dependencies": { - "isexe": "^2.0.0" - } - }, - "node_modules/which-boxed-primitive": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz", - "integrity": "sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==", "dev": true, "dependencies": { - "is-bigint": "^1.0.1", - "is-boolean-object": "^1.1.0", - "is-number-object": "^1.0.4", - "is-string": "^1.0.5", - "is-symbol": "^1.0.3" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/word-wrap": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.4.tgz", - "integrity": "sha512-2V81OA4ugVo5pRo46hAoD2ivUJx8jXmWXfUkY4KFNw0hEptvN0QfH3K4nHiwzGeKl5rFKedV48QVoqYavy4YpA==", - "engines": { - "node": ">=0.10.0" + "isexe": "^2.0.0" } }, "node_modules/wrap-ansi": { @@ -13285,6 +12327,12 @@ "@algolia/requester-common": "4.14.2" } }, + "@anshgoyalevil/eslint-config": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/@anshgoyalevil/eslint-config/-/eslint-config-1.0.3.tgz", + "integrity": "sha512-IRxsNILa0/sKT+uDGOnD9f8DveL4vGA7MrFLGIMUWM2qclM25AfO+L3f/ot/uB9GsCp53qFA+RqX1Iz2nhfwxA==", + "dev": true + }, "@babel/code-frame": { "version": "7.22.13", "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.22.13.tgz", @@ -13615,53 +12663,6 @@ "algoliasearch": "^4.0.0" } }, - "@eslint/eslintrc": { - "version": "0.4.3", - "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-0.4.3.tgz", - "integrity": "sha512-J6KFFz5QCYUJq3pf0mjEcCJVERbzv71PUIDczuh9JkwGEzced6CO5ADLHB1rbf/+oPBtoPfMYNOpGDzCANlbXw==", - "requires": { - "ajv": "^6.12.4", - "debug": "^4.1.1", - "espree": "^7.3.0", - "globals": "^13.9.0", - "ignore": "^4.0.6", - "import-fresh": "^3.2.1", - "js-yaml": "^3.13.1", - "minimatch": "^3.0.4", - "strip-json-comments": "^3.1.1" - }, - "dependencies": { - "ajv": { - "version": "6.12.6", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", - "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", - "requires": { - "fast-deep-equal": "^3.1.1", - "fast-json-stable-stringify": "^2.0.0", - "json-schema-traverse": "^0.4.1", - "uri-js": "^4.2.2" - } - }, - "globals": { - "version": "13.12.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-13.12.0.tgz", - "integrity": "sha512-uS8X6lSKN2JumVoXrbUz+uG4BYG+eiawqm3qFcT7ammfbUHeCBoJMlHcec/S3krSk73/AE/f0szYFmgAA3kYZg==", - "requires": { - "type-fest": "^0.20.2" - } - }, - "json-schema-traverse": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", - "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==" - }, - "type-fest": { - "version": "0.20.2", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", - "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==" - } - } - }, "@fastify/busboy": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/@fastify/busboy/-/busboy-2.0.0.tgz", @@ -13750,21 +12751,6 @@ "resolved": "https://registry.npmjs.org/@heroicons/react/-/react-1.0.5.tgz", "integrity": "sha512-UDMyLM2KavIu2vlWfMspapw9yii7aoLwzI2Hudx4fyoPwfKfxU8r3cL8dEBXOjcLG0/oOONZzbT14M1HoNtEcg==" }, - "@humanwhocodes/config-array": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.5.0.tgz", - "integrity": "sha512-FagtKFz74XrTl7y6HCzQpwDfXP0yhxe9lHLD1UZxjvZIcbyRz8zTFF/yYNfSfzU414eDwZ1SrO0Qvtyf+wFMQg==", - "requires": { - "@humanwhocodes/object-schema": "^1.2.0", - "debug": "^4.1.1", - "minimatch": "^3.0.4" - } - }, - "@humanwhocodes/object-schema": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-1.2.1.tgz", - "integrity": "sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==" - }, "@ioredis/commands": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/@ioredis/commands/-/commands-1.2.0.tgz", @@ -14915,7 +13901,8 @@ "ansi-colors": { "version": "4.1.1", "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.1.tgz", - "integrity": "sha512-JoX0apGbHaUJBNl6yF+p6JAFYZ666/hhCGKN5t9QFjbJQKUU/g8MNbFDbvfrgKXvI1QpZplPOnwIo99lX/AAmA==" + "integrity": "sha512-JoX0apGbHaUJBNl6yF+p6JAFYZ666/hhCGKN5t9QFjbJQKUU/g8MNbFDbvfrgKXvI1QpZplPOnwIo99lX/AAmA==", + "dev": true }, "ansi-escapes": { "version": "4.3.2", @@ -14945,7 +13932,8 @@ "ansi-regex": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", - "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==" + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "dev": true }, "ansi-styles": { "version": "3.2.1", @@ -14996,36 +13984,12 @@ "tslib": "^2.0.0" } }, - "array-includes": { - "version": "3.1.4", - "resolved": "https://registry.npmjs.org/array-includes/-/array-includes-3.1.4.tgz", - "integrity": "sha512-ZTNSQkmWumEbiHO2GF4GmWxYVTiQyJy2XOTa15sdQSrvKn7l+180egQMqlrMOUMCyLMD7pmyQe4mMDUT6Behrw==", - "dev": true, - "requires": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.3", - "es-abstract": "^1.19.1", - "get-intrinsic": "^1.1.1", - "is-string": "^1.0.7" - } - }, "array-union": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz", "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==", "dev": true }, - "array.prototype.flatmap": { - "version": "1.2.5", - "resolved": "https://registry.npmjs.org/array.prototype.flatmap/-/array.prototype.flatmap-1.2.5.tgz", - "integrity": "sha512-08u6rVyi1Lj7oqWbS9nUxliETrtIROT4XGTA4D/LWGten6E3ocm7cy9SIrmNHOL5XVbVuckUp3X6Xyg8/zpvHA==", - "dev": true, - "requires": { - "call-bind": "^1.0.0", - "define-properties": "^1.1.3", - "es-abstract": "^1.19.0" - } - }, "arrify": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/arrify/-/arrify-2.0.1.tgz", @@ -15054,7 +14018,8 @@ "astral-regex": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-2.0.0.tgz", - "integrity": "sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ==" + "integrity": "sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ==", + "dev": true }, "astring": { "version": "1.8.6", @@ -15428,11 +14393,6 @@ "caller-callsite": "^2.0.0" } }, - "callsites": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", - "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==" - }, "camelcase-css": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/camelcase-css/-/camelcase-css-2.0.1.tgz", @@ -15883,6 +14843,7 @@ "version": "7.0.3", "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", + "dev": true, "requires": { "path-key": "^3.1.0", "shebang-command": "^2.0.0", @@ -16566,11 +15527,6 @@ "integrity": "sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==", "dev": true }, - "deep-is": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", - "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==" - }, "defaults": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/defaults/-/defaults-1.0.3.tgz", @@ -16580,16 +15536,6 @@ "clone": "^1.0.2" } }, - "define-properties": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.4.tgz", - "integrity": "sha512-uckOqKcfaVvtBdsVkdPv3XjveQJsNQqmhXgRi8uhvWWuPYZCNlzT8qAyblUgNoXdHdjMTzAqeGjAoli8f+bzPA==", - "dev": true, - "requires": { - "has-property-descriptors": "^1.0.0", - "object-keys": "^1.1.1" - } - }, "defined": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/defined/-/defined-1.0.0.tgz", @@ -16700,14 +15646,6 @@ "resolved": "https://registry.npmjs.org/dlv/-/dlv-1.1.3.tgz", "integrity": "sha512-+HlytyjlPKnIG8XuRG8WvmBP8xs8P71y+SKKS6ZXWoEgLuePxtDoUEiH7WkdePWrQ5JBpE6aoVqfZfJUQkjXwA==" }, - "doctrine": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", - "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", - "requires": { - "esutils": "^2.0.2" - } - }, "dom-serializer": { "version": "1.4.1", "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-1.4.1.tgz", @@ -16813,6 +15751,7 @@ "version": "2.3.6", "resolved": "https://registry.npmjs.org/enquirer/-/enquirer-2.3.6.tgz", "integrity": "sha512-yjNnPr315/FjS4zIsUxYguYUPP2e1NK4d7E7ZOLiyYCcbFBiTMyID+2wvm2w6+pZ/odMA7cRkjhsPbltwBOrLg==", + "dev": true, "requires": { "ansi-colors": "^4.1.1" } @@ -16827,332 +15766,24 @@ "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", "requires": { - "is-arrayish": "^0.2.1" - } - }, - "es-abstract": { - "version": "1.20.4", - "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.20.4.tgz", - "integrity": "sha512-0UtvRN79eMe2L+UNEF1BwRe364sj/DXhQ/k5FmivgoSdpM90b8Jc0mDzKMGo7QS0BVbOP/bTwBKNnDc9rNzaPA==", - "dev": true, - "requires": { - "call-bind": "^1.0.2", - "es-to-primitive": "^1.2.1", - "function-bind": "^1.1.1", - "function.prototype.name": "^1.1.5", - "get-intrinsic": "^1.1.3", - "get-symbol-description": "^1.0.0", - "has": "^1.0.3", - "has-property-descriptors": "^1.0.0", - "has-symbols": "^1.0.3", - "internal-slot": "^1.0.3", - "is-callable": "^1.2.7", - "is-negative-zero": "^2.0.2", - "is-regex": "^1.1.4", - "is-shared-array-buffer": "^1.0.2", - "is-string": "^1.0.7", - "is-weakref": "^1.0.2", - "object-inspect": "^1.12.2", - "object-keys": "^1.1.1", - "object.assign": "^4.1.4", - "regexp.prototype.flags": "^1.4.3", - "safe-regex-test": "^1.0.0", - "string.prototype.trimend": "^1.0.5", - "string.prototype.trimstart": "^1.0.5", - "unbox-primitive": "^1.0.2" - } - }, - "es-to-primitive": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz", - "integrity": "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==", - "dev": true, - "requires": { - "is-callable": "^1.1.4", - "is-date-object": "^1.0.1", - "is-symbol": "^1.0.2" - } - }, - "escalade": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", - "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==" - }, - "escape-string-regexp": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=" - }, - "eslint": { - "version": "7.32.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-7.32.0.tgz", - "integrity": "sha512-VHZ8gX+EDfz+97jGcgyGCyRia/dPOd6Xh9yPv8Bl1+SoaIwD+a/vlrOmGRUyOYu7MwUhc7CxqeaDZU13S4+EpA==", - "requires": { - "@babel/code-frame": "7.12.11", - "@eslint/eslintrc": "^0.4.3", - "@humanwhocodes/config-array": "^0.5.0", - "ajv": "^6.10.0", - "chalk": "^4.0.0", - "cross-spawn": "^7.0.2", - "debug": "^4.0.1", - "doctrine": "^3.0.0", - "enquirer": "^2.3.5", - "escape-string-regexp": "^4.0.0", - "eslint-scope": "^5.1.1", - "eslint-utils": "^2.1.0", - "eslint-visitor-keys": "^2.0.0", - "espree": "^7.3.1", - "esquery": "^1.4.0", - "esutils": "^2.0.2", - "fast-deep-equal": "^3.1.3", - "file-entry-cache": "^6.0.1", - "functional-red-black-tree": "^1.0.1", - "glob-parent": "^5.1.2", - "globals": "^13.6.0", - "ignore": "^4.0.6", - "import-fresh": "^3.0.0", - "imurmurhash": "^0.1.4", - "is-glob": "^4.0.0", - "js-yaml": "^3.13.1", - "json-stable-stringify-without-jsonify": "^1.0.1", - "levn": "^0.4.1", - "lodash.merge": "^4.6.2", - "minimatch": "^3.0.4", - "natural-compare": "^1.4.0", - "optionator": "^0.9.1", - "progress": "^2.0.0", - "regexpp": "^3.1.0", - "semver": "^7.2.1", - "strip-ansi": "^6.0.0", - "strip-json-comments": "^3.1.0", - "table": "^6.0.9", - "text-table": "^0.2.0", - "v8-compile-cache": "^2.0.3" - }, - "dependencies": { - "@babel/code-frame": { - "version": "7.12.11", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.12.11.tgz", - "integrity": "sha512-Zt1yodBx1UcyiePMSkWnU4hPqhwq7hGi2nFL1LeA3EUl+q2LQx16MISgJ0+z7dnmgvP9QtIleuETGOiOH1RcIw==", - "requires": { - "@babel/highlight": "^7.10.4" - } - }, - "ajv": { - "version": "6.12.6", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", - "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", - "requires": { - "fast-deep-equal": "^3.1.1", - "fast-json-stable-stringify": "^2.0.0", - "json-schema-traverse": "^0.4.1", - "uri-js": "^4.2.2" - } - }, - "ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "requires": { - "color-convert": "^2.0.1" - } - }, - "chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "requires": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - } - }, - "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==", - "requires": { - "color-name": "~1.1.4" - } - }, - "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==" - }, - "escape-string-regexp": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", - "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==" - }, - "globals": { - "version": "13.12.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-13.12.0.tgz", - "integrity": "sha512-uS8X6lSKN2JumVoXrbUz+uG4BYG+eiawqm3qFcT7ammfbUHeCBoJMlHcec/S3krSk73/AE/f0szYFmgAA3kYZg==", - "requires": { - "type-fest": "^0.20.2" - } - }, - "has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==" - }, - "json-schema-traverse": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", - "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==" - }, - "supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "requires": { - "has-flag": "^4.0.0" - } - }, - "type-fest": { - "version": "0.20.2", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", - "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==" - } - } - }, - "eslint-plugin-cypress": { - "version": "2.13.3", - "resolved": "https://registry.npmjs.org/eslint-plugin-cypress/-/eslint-plugin-cypress-2.13.3.tgz", - "integrity": "sha512-nAPjZE5WopCsgJwl3vHm5iafpV+ZRO76Z9hMyRygWhmg5ODXDPd+9MaPl7kdJ2azj+sO87H3P1PRnggIrz848g==", - "requires": { - "globals": "^11.12.0" - } - }, - "eslint-plugin-react": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/eslint-plugin-react/-/eslint-plugin-react-7.27.1.tgz", - "integrity": "sha512-meyunDjMMYeWr/4EBLTV1op3iSG3mjT/pz5gti38UzfM4OPpNc2m0t2xvKCOMU5D6FSdd34BIMFOvQbW+i8GAA==", - "dev": true, - "requires": { - "array-includes": "^3.1.4", - "array.prototype.flatmap": "^1.2.5", - "doctrine": "^2.1.0", - "estraverse": "^5.3.0", - "jsx-ast-utils": "^2.4.1 || ^3.0.0", - "minimatch": "^3.0.4", - "object.entries": "^1.1.5", - "object.fromentries": "^2.0.5", - "object.hasown": "^1.1.0", - "object.values": "^1.1.5", - "prop-types": "^15.7.2", - "resolve": "^2.0.0-next.3", - "semver": "^6.3.0", - "string.prototype.matchall": "^4.0.6" - }, - "dependencies": { - "doctrine": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz", - "integrity": "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==", - "dev": true, - "requires": { - "esutils": "^2.0.2" - } - }, - "resolve": { - "version": "2.0.0-next.3", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-2.0.0-next.3.tgz", - "integrity": "sha512-W8LucSynKUIDu9ylraa7ueVZ7hc0uAgJBxVsQSKOXOyle8a93qXhcz+XAXZ8bIq2d6i4Ehddn6Evt+0/UwKk6Q==", - "dev": true, - "requires": { - "is-core-module": "^2.2.0", - "path-parse": "^1.0.6" - } - }, - "semver": { - "version": "6.3.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", - "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", - "dev": true - } - } - }, - "eslint-scope": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", - "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==", - "requires": { - "esrecurse": "^4.3.0", - "estraverse": "^4.1.1" - }, - "dependencies": { - "estraverse": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", - "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==" - } - } - }, - "eslint-utils": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-2.1.0.tgz", - "integrity": "sha512-w94dQYoauyvlDc43XnGB8lU3Zt713vNChgt4EWwhXAP2XkBvndfxF0AgIqKOOasjPIPzj9JqgwkwbCYD0/V3Zg==", - "requires": { - "eslint-visitor-keys": "^1.1.0" - }, - "dependencies": { - "eslint-visitor-keys": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz", - "integrity": "sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==" - } + "is-arrayish": "^0.2.1" } }, - "eslint-visitor-keys": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz", - "integrity": "sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==" + "escalade": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", + "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==" }, - "espree": { - "version": "7.3.1", - "resolved": "https://registry.npmjs.org/espree/-/espree-7.3.1.tgz", - "integrity": "sha512-v3JCNCE64umkFpmkFGqzVKsOT0tN1Zr+ueqLZfpV1Ob8e+CEgPWa+OxCoGH3tnhimMKIaBm4m/vaRpJ/krRz2g==", - "requires": { - "acorn": "^7.4.0", - "acorn-jsx": "^5.3.1", - "eslint-visitor-keys": "^1.3.0" - }, - "dependencies": { - "eslint-visitor-keys": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz", - "integrity": "sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==" - } - } + "escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=" }, "esprima": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==" }, - "esquery": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.4.0.tgz", - "integrity": "sha512-cCDispWt5vHHtwMY2YrAQ4ibFkAL8RbH5YGBnZBc90MolvvfkkQcJro/aZiAQUlQ3qgrYS6D6v8Gc5G5CQsc9w==", - "requires": { - "estraverse": "^5.1.0" - } - }, - "esrecurse": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", - "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", - "requires": { - "estraverse": "^5.2.0" - } - }, - "estraverse": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", - "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==" - }, "estree-util-attach-comments": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/estree-util-attach-comments/-/estree-util-attach-comments-2.1.1.tgz", @@ -17364,11 +15995,6 @@ "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==" }, - "fast-levenshtein": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", - "integrity": "sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=" - }, "fast-text-encoding": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/fast-text-encoding/-/fast-text-encoding-1.0.3.tgz", @@ -17434,14 +16060,6 @@ "escape-string-regexp": "^1.0.5" } }, - "file-entry-cache": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz", - "integrity": "sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==", - "requires": { - "flat-cache": "^3.0.4" - } - }, "fill-range": { "version": "2.2.4", "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-2.2.4.tgz", @@ -17462,20 +16080,6 @@ "locate-path": "^2.0.0" } }, - "flat-cache": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.0.4.tgz", - "integrity": "sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg==", - "requires": { - "flatted": "^3.1.0", - "rimraf": "^3.0.2" - } - }, - "flatted": { - "version": "3.2.4", - "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.2.4.tgz", - "integrity": "sha512-8/sOawo8tJ4QOBX8YlQBMxL8+RLZfxMQOif9o0KUKTNTjMYElWPE0r/m5VNFxTRd0NSw8qSy8dajrwX4RYI1Hw==" - }, "follow-redirects": { "version": "1.15.2", "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.2.tgz", @@ -17552,29 +16156,6 @@ "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==" }, - "function.prototype.name": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/function.prototype.name/-/function.prototype.name-1.1.5.tgz", - "integrity": "sha512-uN7m/BzVKQnCUF/iW8jYea67v++2u7m5UgENbHRtdDVclOUP+FMPlCNdmk0h/ysGyo2tavMJEDqJAkJdRa1vMA==", - "dev": true, - "requires": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.3", - "es-abstract": "^1.19.0", - "functions-have-names": "^1.2.2" - } - }, - "functional-red-black-tree": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz", - "integrity": "sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc=" - }, - "functions-have-names": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/functions-have-names/-/functions-have-names-1.2.2.tgz", - "integrity": "sha512-bLgc3asbWdwPbx2mNk2S49kmJCuQeu0nfmaOgbs8WIyzzkw3r4htszdIi9Q9EMezDPTYuJx2wvjZ/EwgAthpnA==", - "dev": true - }, "fuse.js": { "version": "6.6.2", "resolved": "https://registry.npmjs.org/fuse.js/-/fuse.js-6.6.2.tgz", @@ -17646,16 +16227,6 @@ "pump": "^3.0.0" } }, - "get-symbol-description": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.0.0.tgz", - "integrity": "sha512-2EmdH1YvIQiZpltCNgkuiUnyukzxM/R6NDJX31Ke3BG1Nq5b0S2PhX59UKi9vZpPDQVdqn+1IcaAwnzTT5vCjw==", - "dev": true, - "requires": { - "call-bind": "^1.0.2", - "get-intrinsic": "^1.1.1" - } - }, "getos": { "version": "3.2.1", "resolved": "https://registry.npmjs.org/getos/-/getos-3.2.1.tgz", @@ -17884,40 +16455,16 @@ } } }, - "has-bigints": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.0.2.tgz", - "integrity": "sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ==", - "dev": true - }, "has-flag": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=" }, - "has-property-descriptors": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.0.tgz", - "integrity": "sha512-62DVLZGoiEBDHQyqG4w9xCuZ7eJEwNmJRWw2VY84Oedb7WFcA27fiEVe8oUQx9hAUJ4ekurquucTGwsyO1XGdQ==", - "dev": true, - "requires": { - "get-intrinsic": "^1.1.1" - } - }, "has-symbols": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==" }, - "has-tostringtag": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.0.tgz", - "integrity": "sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ==", - "dev": true, - "requires": { - "has-symbols": "^1.0.2" - } - }, "hast-to-hyperscript": { "version": "9.0.1", "resolved": "https://registry.npmjs.org/hast-to-hyperscript/-/hast-to-hyperscript-9.0.1.tgz", @@ -18228,11 +16775,6 @@ "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==" }, - "ignore": { - "version": "4.0.6", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-4.0.6.tgz", - "integrity": "sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==" - }, "ignore-loader": { "version": "0.1.2", "resolved": "https://registry.npmjs.org/ignore-loader/-/ignore-loader-0.1.2.tgz", @@ -18252,15 +16794,6 @@ "import-from": "^2.1.0" } }, - "import-fresh": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", - "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", - "requires": { - "parent-module": "^1.0.0", - "resolve-from": "^4.0.0" - } - }, "import-from": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/import-from/-/import-from-2.1.0.tgz", @@ -18276,11 +16809,6 @@ } } }, - "imurmurhash": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", - "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=" - }, "indent-string": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz", @@ -18394,17 +16922,6 @@ } } }, - "internal-slot": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.3.tgz", - "integrity": "sha512-O0DB1JC/sPyZl7cIo78n5dR7eUSwwpYPiXRhTzNxZVAMUuB8vlnRFyLxdrVToks6XPLVnFfbzaVd5WLjhgg+vA==", - "dev": true, - "requires": { - "get-intrinsic": "^1.1.0", - "has": "^1.0.3", - "side-channel": "^1.0.4" - } - }, "internmap": { "version": "2.0.3", "resolved": "https://registry.npmjs.org/internmap/-/internmap-2.0.3.tgz", @@ -18491,15 +17008,6 @@ "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=" }, - "is-bigint": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/is-bigint/-/is-bigint-1.0.4.tgz", - "integrity": "sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==", - "dev": true, - "requires": { - "has-bigints": "^1.0.1" - } - }, "is-binary-path": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", @@ -18508,27 +17016,11 @@ "binary-extensions": "^2.0.0" } }, - "is-boolean-object": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.1.2.tgz", - "integrity": "sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==", - "dev": true, - "requires": { - "call-bind": "^1.0.2", - "has-tostringtag": "^1.0.0" - } - }, "is-buffer": { "version": "2.0.5", "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-2.0.5.tgz", "integrity": "sha512-i2R6zNFDwgEHJyQUtJEk0XFi1i0dPFn/oqjK3/vPCcDeJvW5NQ83V8QbicfF1SupOaB0h8ntgBC2YiE7dfyctQ==" }, - "is-callable": { - "version": "1.2.7", - "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.7.tgz", - "integrity": "sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==", - "dev": true - }, "is-ci": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/is-ci/-/is-ci-3.0.1.tgz", @@ -18546,15 +17038,6 @@ "has": "^1.0.3" } }, - "is-date-object": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.5.tgz", - "integrity": "sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==", - "dev": true, - "requires": { - "has-tostringtag": "^1.0.0" - } - }, "is-decimal": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/is-decimal/-/is-decimal-1.0.4.tgz", @@ -18589,7 +17072,8 @@ "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==" + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "dev": true }, "is-function": { "version": "1.0.2", @@ -18625,12 +17109,6 @@ "integrity": "sha512-2HvIEKRoqS62guEC+qBjpvRubdX910WCMuJTZ+I9yvqKU2/12eSL549HMwtabb4oupdj2sMP50k+XJfB/8JE6w==", "dev": true }, - "is-negative-zero": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.2.tgz", - "integrity": "sha512-dqJvarLawXsFbNDeJW7zAz8ItJ9cd28YufuuFzh0G8pNHjJMnY08Dv7sYX2uF5UpQOwieAeOExEYAWWfu7ZZUA==", - "dev": true - }, "is-number": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/is-number/-/is-number-2.1.0.tgz", @@ -18654,15 +17132,6 @@ } } }, - "is-number-object": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.0.7.tgz", - "integrity": "sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ==", - "dev": true, - "requires": { - "has-tostringtag": "^1.0.0" - } - }, "is-path-inside": { "version": "3.0.3", "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz", @@ -18693,48 +17162,11 @@ "@types/estree": "*" } }, - "is-regex": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.4.tgz", - "integrity": "sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==", - "dev": true, - "requires": { - "call-bind": "^1.0.2", - "has-tostringtag": "^1.0.0" - } - }, - "is-shared-array-buffer": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.2.tgz", - "integrity": "sha512-sqN2UDu1/0y6uvXyStCOzyhAjCSlHceFoMKJW8W9EU9cvic/QdsZ0kEU93HEy3IUEFZIiH/3w+AH/UQbPHNdhA==", - "dev": true, - "requires": { - "call-bind": "^1.0.2" - } - }, "is-stream": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", "integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ=" }, - "is-string": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.0.7.tgz", - "integrity": "sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==", - "dev": true, - "requires": { - "has-tostringtag": "^1.0.0" - } - }, - "is-symbol": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.4.tgz", - "integrity": "sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==", - "dev": true, - "requires": { - "has-symbols": "^1.0.2" - } - }, "is-typedarray": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", @@ -18752,15 +17184,6 @@ "resolved": "https://registry.npmjs.org/is-url/-/is-url-1.2.4.tgz", "integrity": "sha512-ITvGim8FhRiYe4IQ5uHSkj7pVaPDrCTkNd3yq3cV7iZAcJdHTUMPMEHcqSOy9xZ9qFenQCvi+2wjH9a1nXqHww==" }, - "is-weakref": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-weakref/-/is-weakref-1.0.2.tgz", - "integrity": "sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ==", - "dev": true, - "requires": { - "call-bind": "^1.0.2" - } - }, "is-whitespace-character": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/is-whitespace-character/-/is-whitespace-character-1.0.4.tgz", @@ -18788,7 +17211,8 @@ "isexe": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", - "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=" + "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=", + "dev": true }, "isobject": { "version": "2.1.0", @@ -18883,11 +17307,6 @@ "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==" }, - "json-stable-stringify-without-jsonify": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", - "integrity": "sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE=" - }, "json-stringify-safe": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz", @@ -18921,16 +17340,6 @@ "verror": "1.10.0" } }, - "jsx-ast-utils": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/jsx-ast-utils/-/jsx-ast-utils-3.2.1.tgz", - "integrity": "sha512-uP5vu8xfy2F9A6LGC22KO7e2/vGTS1MhP+18f++ZNlf0Ohaxbc9nIEwHAsejlJKyzfZzU5UIhe5ItYkitcZnZA==", - "dev": true, - "requires": { - "array-includes": "^3.1.3", - "object.assign": "^4.1.2" - } - }, "jwa": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/jwa/-/jwa-2.0.0.tgz", @@ -18979,15 +17388,6 @@ "set-getter": "^0.1.0" } }, - "levn": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", - "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==", - "requires": { - "prelude-ls": "^1.2.1", - "type-check": "~0.4.0" - } - }, "lilconfig": { "version": "2.0.6", "resolved": "https://registry.npmjs.org/lilconfig/-/lilconfig-2.0.6.tgz", @@ -19142,11 +17542,6 @@ "lodash._reinterpolate": "^3.0.0" } }, - "lodash.truncate": { - "version": "4.4.2", - "resolved": "https://registry.npmjs.org/lodash.truncate/-/lodash.truncate-4.4.2.tgz", - "integrity": "sha1-WjUNoLERO4N+z//VgSy+WNbq4ZM=" - }, "lodash.unescape": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/lodash.unescape/-/lodash.unescape-4.0.1.tgz", @@ -20170,11 +18565,6 @@ "integrity": "sha512-ONmRUqK7zj7DWX0D9ADe03wbwOBZxNAfF20PlGfCWQcD3+/MakShIHrMqx9YwPTfxDdF1zLeL+RGZiR9kGMLdg==", "dev": true }, - "natural-compare": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", - "integrity": "sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc=" - }, "nearley": { "version": "2.20.1", "resolved": "https://registry.npmjs.org/nearley/-/nearley-2.20.1.tgz", @@ -20355,56 +18745,6 @@ "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.2.tgz", "integrity": "sha512-z+cPxW0QGUp0mcqcsgQyLVRDoXFQbXOwBaqyF7VIgI4TWNQsDHrBpUQslRmIfAoYWdYzs6UlKJtB2XJpTaNSpQ==" }, - "object-keys": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", - "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", - "dev": true - }, - "object.assign": { - "version": "4.1.4", - "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.4.tgz", - "integrity": "sha512-1mxKf0e58bvyjSCtKYY4sRe9itRk3PJpquJOjeIkz885CczcI4IvJJDLPS72oowuSh+pBxUFROpX+TU++hxhZQ==", - "dev": true, - "requires": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.4", - "has-symbols": "^1.0.3", - "object-keys": "^1.1.1" - } - }, - "object.entries": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/object.entries/-/object.entries-1.1.5.tgz", - "integrity": "sha512-TyxmjUoZggd4OrrU1W66FMDG6CuqJxsFvymeyXI51+vQLN67zYfZseptRge703kKQdo4uccgAKebXFcRCzk4+g==", - "dev": true, - "requires": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.3", - "es-abstract": "^1.19.1" - } - }, - "object.fromentries": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/object.fromentries/-/object.fromentries-2.0.5.tgz", - "integrity": "sha512-CAyG5mWQRRiBU57Re4FKoTBjXfDoNwdFVH2Y1tS9PqCsfUTymAohOkEMSG3aRNKmv4lV3O7p1et7c187q6bynw==", - "dev": true, - "requires": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.3", - "es-abstract": "^1.19.1" - } - }, - "object.hasown": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/object.hasown/-/object.hasown-1.1.0.tgz", - "integrity": "sha512-MhjYRfj3GBlhSkDHo6QmvgjRLXQ2zndabdf3nX0yTyZK9rPfxb6uRpAac8HXNLy1GpqWtZ81Qh4v3uOls2sRAg==", - "dev": true, - "requires": { - "define-properties": "^1.1.3", - "es-abstract": "^1.19.1" - } - }, "object.pick": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/object.pick/-/object.pick-1.3.0.tgz", @@ -20420,17 +18760,6 @@ } } }, - "object.values": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/object.values/-/object.values-1.1.5.tgz", - "integrity": "sha512-QUZRW0ilQ3PnPpbNtgdNV1PDbEqLIiSFB3l+EnGtBQ/8SUTLj1PZwtQHABZtLgwpJZTSZhuGLOGk57Drx2IvYg==", - "dev": true, - "requires": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.3", - "es-abstract": "^1.19.1" - } - }, "ofetch": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/ofetch/-/ofetch-1.0.1.tgz", @@ -20487,19 +18816,6 @@ "mimic-fn": "^2.1.0" } }, - "optionator": { - "version": "0.9.1", - "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.1.tgz", - "integrity": "sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw==", - "requires": { - "deep-is": "^0.1.3", - "fast-levenshtein": "^2.0.6", - "levn": "^0.4.1", - "prelude-ls": "^1.2.1", - "type-check": "^0.4.0", - "word-wrap": "^1.2.3" - } - }, "ora": { "version": "5.4.1", "resolved": "https://registry.npmjs.org/ora/-/ora-5.4.1.tgz", @@ -20665,14 +18981,6 @@ "resolved": "https://registry.npmjs.org/p-try/-/p-try-1.0.0.tgz", "integrity": "sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M=" }, - "parent-module": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", - "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", - "requires": { - "callsites": "^3.0.0" - } - }, "parse-entities": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/parse-entities/-/parse-entities-4.0.1.tgz", @@ -20756,7 +19064,8 @@ "path-key": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", - "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==" + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", + "dev": true }, "path-parse": { "version": "1.0.7", @@ -21279,11 +19588,6 @@ "tunnel-agent": "^0.6.0" } }, - "prelude-ls": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", - "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==" - }, "pretty-bytes": { "version": "5.6.0", "resolved": "https://registry.npmjs.org/pretty-bytes/-/pretty-bytes-5.6.0.tgz", @@ -21300,11 +19604,6 @@ "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==" }, - "progress": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.3.tgz", - "integrity": "sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==" - }, "promise": { "version": "7.3.1", "resolved": "https://registry.npmjs.org/promise/-/promise-7.3.1.tgz", @@ -21740,22 +20039,6 @@ "integrity": "sha512-iETxpjK6YoRWJG5o6hXLwvjYAoW+FEZn9os0PD/b6AP6xQwsa/Y7lCVgIixBbUPMfhu+i2LtdeAqVTgGlQarfA==", "dev": true }, - "regexp.prototype.flags": { - "version": "1.4.3", - "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.4.3.tgz", - "integrity": "sha512-fjggEOO3slI6Wvgjwflkc4NFRCTZAu5CnNfBd5qOMYhWdn67nJBBu34/TkD++eeFmd8C9r9jfXJ27+nSiRkSUA==", - "dev": true, - "requires": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.3", - "functions-have-names": "^1.2.2" - } - }, - "regexpp": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-3.2.0.tgz", - "integrity": "sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg==" - }, "remark-footnotes": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/remark-footnotes/-/remark-footnotes-2.0.0.tgz", @@ -21939,11 +20222,6 @@ "supports-preserve-symlinks-flag": "^1.0.0" } }, - "resolve-from": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", - "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==" - }, "restore-cursor": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-3.1.0.tgz", @@ -21979,6 +20257,7 @@ "version": "3.0.2", "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", + "dev": true, "requires": { "glob": "^7.1.3" } @@ -22029,17 +20308,6 @@ "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" }, - "safe-regex-test": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/safe-regex-test/-/safe-regex-test-1.0.0.tgz", - "integrity": "sha512-JBUUzyOgEwXQY1NuPtvcj/qcBDbDmEvWufhlnXZIm75DEHp+afM1r1ujJpJsV/gSM4t59tpDyPi1sd6ZaPFfsA==", - "dev": true, - "requires": { - "call-bind": "^1.0.2", - "get-intrinsic": "^1.1.3", - "is-regex": "^1.1.4" - } - }, "safer-buffer": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", @@ -22115,6 +20383,7 @@ "version": "7.5.4", "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", + "dev": true, "requires": { "lru-cache": "^6.0.0" } @@ -22152,6 +20421,7 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", + "dev": true, "requires": { "shebang-regex": "^3.0.0" } @@ -22159,7 +20429,8 @@ "shebang-regex": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", - "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==" + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", + "dev": true }, "shortid": { "version": "2.2.16", @@ -22229,6 +20500,7 @@ "version": "4.0.0", "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-4.0.0.tgz", "integrity": "sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ==", + "dev": true, "requires": { "ansi-styles": "^4.0.0", "astral-regex": "^2.0.0", @@ -22239,6 +20511,7 @@ "version": "4.3.0", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, "requires": { "color-convert": "^2.0.1" } @@ -22247,6 +20520,7 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, "requires": { "color-name": "~1.1.4" } @@ -22254,7 +20528,8 @@ "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==" + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true } } }, @@ -22347,50 +20622,13 @@ "version": "4.2.3", "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "dev": true, "requires": { "emoji-regex": "^8.0.0", "is-fullwidth-code-point": "^3.0.0", "strip-ansi": "^6.0.1" } }, - "string.prototype.matchall": { - "version": "4.0.6", - "resolved": "https://registry.npmjs.org/string.prototype.matchall/-/string.prototype.matchall-4.0.6.tgz", - "integrity": "sha512-6WgDX8HmQqvEd7J+G6VtAahhsQIssiZ8zl7zKh1VDMFyL3hRTJP4FTNA3RbIp2TOQ9AYNDcc7e3fH0Qbup+DBg==", - "dev": true, - "requires": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.3", - "es-abstract": "^1.19.1", - "get-intrinsic": "^1.1.1", - "has-symbols": "^1.0.2", - "internal-slot": "^1.0.3", - "regexp.prototype.flags": "^1.3.1", - "side-channel": "^1.0.4" - } - }, - "string.prototype.trimend": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.5.tgz", - "integrity": "sha512-I7RGvmjV4pJ7O3kdf+LXFpVfdNOxtCW/2C8f6jNiW4+PQchwxkCDzlk1/7p+Wl4bqFIZeF47qAHXLuHHWKAxog==", - "dev": true, - "requires": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.4", - "es-abstract": "^1.19.5" - } - }, - "string.prototype.trimstart": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.5.tgz", - "integrity": "sha512-THx16TJCGlsN0o6dl2o6ncWUsdgnLRSA23rRE5pyGBw/mLr3Ej/R2LaqCtgP8VNMGZsvMWnf9ooZPyY2bHvUFg==", - "dev": true, - "requires": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.4", - "es-abstract": "^1.19.5" - } - }, "stringify-entities": { "version": "4.0.3", "resolved": "https://registry.npmjs.org/stringify-entities/-/stringify-entities-4.0.3.tgz", @@ -22411,6 +20649,7 @@ "version": "6.0.1", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dev": true, "requires": { "ansi-regex": "^5.0.1" } @@ -22431,11 +20670,6 @@ "integrity": "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==", "dev": true }, - "strip-json-comments": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", - "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==" - }, "style-to-object": { "version": "0.4.1", "resolved": "https://registry.npmjs.org/style-to-object/-/style-to-object-0.4.1.tgz", @@ -22548,18 +20782,6 @@ "ssr-window": "^4.0.2" } }, - "table": { - "version": "6.7.5", - "resolved": "https://registry.npmjs.org/table/-/table-6.7.5.tgz", - "integrity": "sha512-LFNeryOqiQHqCVKzhkymKwt6ozeRhlm8IL1mE8rNUurkir4heF6PzMyRgaTa4tlyPTGGgXuvVOF/OLWiH09Lqw==", - "requires": { - "ajv": "^8.0.1", - "lodash.truncate": "^4.4.2", - "slice-ansi": "^4.0.0", - "string-width": "^4.2.3", - "strip-ansi": "^6.0.1" - } - }, "tailwind-merge": { "version": "1.6.2", "resolved": "https://registry.npmjs.org/tailwind-merge/-/tailwind-merge-1.6.2.tgz", @@ -22661,11 +20883,6 @@ } } }, - "text-table": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", - "integrity": "sha1-f17oI66AUgfACvLfSoTsP8+lcLQ=" - }, "throttleit": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/throttleit/-/throttleit-1.0.0.tgz", @@ -22825,14 +21042,6 @@ "integrity": "sha512-KXXFFdAbFXY4geFIwoyNK+f5Z1b7swfXABfL7HXCmoIWMKU3dmS26672A4EeQtDzLKy7SXmfBu51JolvEKwtGA==", "dev": true }, - "type-check": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", - "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==", - "requires": { - "prelude-ls": "^1.2.1" - } - }, "typedarray": { "version": "0.0.6", "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz", @@ -22849,18 +21058,6 @@ "integrity": "sha512-TrY6DsjTQQgyS3E3dBaOXf0TpPD8u9FVrVYmKVegJuFw51n/YB9XPt+U6ydzFG5ZIN7+DIjPbNmXoBj9esYhgQ==", "dev": true }, - "unbox-primitive": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.0.2.tgz", - "integrity": "sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw==", - "dev": true, - "requires": { - "call-bind": "^1.0.2", - "has-bigints": "^1.0.2", - "has-symbols": "^1.0.3", - "which-boxed-primitive": "^1.0.2" - } - }, "uncrypto": { "version": "0.1.2", "resolved": "https://registry.npmjs.org/uncrypto/-/uncrypto-0.1.2.tgz", @@ -23140,11 +21337,6 @@ "sade": "^1.7.3" } }, - "v8-compile-cache": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/v8-compile-cache/-/v8-compile-cache-2.3.0.tgz", - "integrity": "sha512-l8lCEmLcLYZh4nbunNZvQCJc5pv7+RCwa8q/LdUx8u7lsWvPDKmpodJAJNwkAhJC//dFY48KuIEmjtd4RViDrA==" - }, "verror": { "version": "1.10.0", "resolved": "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz", @@ -23272,28 +21464,11 @@ "version": "2.0.2", "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", - "requires": { - "isexe": "^2.0.0" - } - }, - "which-boxed-primitive": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz", - "integrity": "sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==", "dev": true, "requires": { - "is-bigint": "^1.0.1", - "is-boolean-object": "^1.1.0", - "is-number-object": "^1.0.4", - "is-string": "^1.0.5", - "is-symbol": "^1.0.3" + "isexe": "^2.0.0" } }, - "word-wrap": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.4.tgz", - "integrity": "sha512-2V81OA4ugVo5pRo46hAoD2ivUJx8jXmWXfUkY4KFNw0hEptvN0QfH3K4nHiwzGeKl5rFKedV48QVoqYavy4YpA==" - }, "wrap-ansi": { "version": "7.0.0", "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", diff --git a/package.json b/package.json index 0cd0af3bb6e..0ec8b5d2d7c 100644 --- a/package.json +++ b/package.json @@ -58,7 +58,6 @@ "clsx": "^1.1.1", "cssnano": "^5.1.12", "dotenv": "^8.2.0", - "eslint-plugin-cypress": "^2.13.3", "fuse.js": "^6.6.2", "googleapis": "^100.0.0", "gray-matter": "^4.0.2", @@ -97,13 +96,12 @@ "yaml": "^2.2.2" }, "devDependencies": { + "@anshgoyalevil/eslint-config": "^1.0.3", "@cypress/react": "^7.0.3", "@netlify/functions": "^1.4.0", "@netlify/plugin-nextjs": "^4.37.2", "cypress": "^10.11.0", "dedent": "^0.7.0", - "eslint": "^7.0.0", - "eslint-plugin-react": "^7.27.1", "inquirer": "^8.2.0", "postcss-import": "^14.1.0" } From fc441dfad5ec100915247fa91a36710a6bfc75c1 Mon Sep 17 00:00:00 2001 From: asyncapi-bot Date: Tue, 7 Nov 2023 01:27:35 +0100 Subject: [PATCH 060/134] chore: update meetings.json and newsrooom_videos.json (#2285) --- config/meetings.json | 7 -- config/newsroom_videos.json | 12 +-- dashboard.json | 176 ++++++++++++++++++++++++------------ 3 files changed, 124 insertions(+), 71 deletions(-) diff --git a/config/meetings.json b/config/meetings.json index 32e1810bae5..72611212193 100644 --- a/config/meetings.json +++ b/config/meetings.json @@ -13,13 +13,6 @@ "banner": "", "date": "2023-08-31T14:30:00.000Z" }, - { - "title": "Community Meeting", - "calLink": "https://www.google.com/calendar/event?eid=MmpwYXMxYjBscjlnYWhtMHR2MnQ2MTMwM2cgY19xOXRzZWlnbG9tZHNqNm5qdWh2YnB0czExY0Bn", - "url": "https://github.com/asyncapi/community/issues/798", - "banner": "https://user-images.githubusercontent.com/40604284/252807786-f93110e3-c344-4080-9c4f-9d32cb324680.png", - "date": "2023-07-25T08:00:00.000Z" - }, { "title": "Community Meeting", "calLink": "https://www.google.com/calendar/event?eid=YmlybTZwODdmMzBnNGg0b3J1OWxmdnBxNmMgY19xOXRzZWlnbG9tZHNqNm5qdWh2YnB0czExY0Bn", diff --git a/config/newsroom_videos.json b/config/newsroom_videos.json index b3e0982f5c4..40a17f976d6 100644 --- a/config/newsroom_videos.json +++ b/config/newsroom_videos.json @@ -1,4 +1,10 @@ [ + { + "image_url": "https://i.ytimg.com/vi/Vm4ZKFb2PVE/hqdefault.jpg", + "title": "Community Meeting(October 31th, 2023)", + "description": "Powered by Restream https://restream.io https://github.com/asyncapi/community/issues/916.", + "videoId": "Vm4ZKFb2PVE" + }, { "image_url": "https://i.ytimg.com/vi/FN5eR1Zqh9c/hqdefault.jpg", "title": "AsyncAPI Conf on Tour 2023 in Madrid", @@ -22,11 +28,5 @@ "title": "Spec 3.0 docs meeting (September 28, 2023)", "description": "https://github.com/asyncapi/community/issues/885.", "videoId": "qjMojQ-fFew" - }, - { - "image_url": "https://i.ytimg.com/vi/SfATYVwcSQk/hqdefault.jpg", - "title": "Community meeting (September 19, 2023)", - "description": "https://github.com/asyncapi/community/issues/874.", - "videoId": "SfATYVwcSQk" } ] \ No newline at end of file diff --git a/dashboard.json b/dashboard.json index b8f7eba0266..7f9a1a8c8f8 100644 --- a/dashboard.json +++ b/dashboard.json @@ -1,5 +1,21 @@ { "hotDiscussions": [ + { + "id": "MDU6SXNzdWU5ODkyOTg0MzY=", + "isPR": false, + "isAssigned": true, + "title": "Proposal to solve publish/subscribe confusion", + "author": "fmvilas", + "resourcePath": "/asyncapi/spec/issues/618", + "repo": "asyncapi/spec", + "labels": [ + { + "name": "💭 Strawman (RFC 0)", + "color": "C2E0C6" + } + ], + "score": 54.2759972736099 + }, { "id": "MDU6SXNzdWUzNjkwNDExMDc=", "isPR": false, @@ -14,7 +30,7 @@ "color": "fce250" } ], - "score": 41.35314077989326 + "score": 41.64031536864252 }, { "id": "PR_kwDOBW5R_c5Xb72L", @@ -25,7 +41,7 @@ "resourcePath": "/asyncapi/website/pull/2038", "repo": "asyncapi/website", "labels": [], - "score": 38.48139489240067 + "score": 39.34291865864845 }, { "id": "PR_kwDOFLhIt85Vmgtj", @@ -36,23 +52,23 @@ "resourcePath": "/asyncapi/community/pull/805", "repo": "asyncapi/community", "labels": [], - "score": 29.004633463675134 + "score": 30.440506407421427 }, { - "id": "I_kwDODou01c5AqLB8", + "id": "I_kwDOBW5R_c5BIl5P", "isPR": false, - "isAssigned": false, - "title": "\"Open with Studio\" button for Markdown files.", - "author": "smoya", - "resourcePath": "/asyncapi/studio/issues/218", - "repo": "asyncapi/studio", + "isAssigned": true, + "title": "Add new page for collecting user testing participants", + "author": "mcturco", + "resourcePath": "/asyncapi/website/issues/529", + "repo": "asyncapi/website", "labels": [ { "name": "enhancement", - "color": "a2eeef" + "color": "84b6eb" } ], - "score": 19.527872034949596 + "score": 18.953522857451077 }, { "id": "PR_kwDOBW5R_c5VAjCE", @@ -78,17 +94,6 @@ ], "score": 17.517649913704783 }, - { - "id": "PR_kwDOBW5R_c5Worbr", - "isPR": true, - "isAssigned": false, - "title": "docs: add v3 migration guide", - "author": "jonaslagoni", - "resourcePath": "/asyncapi/website/pull/2008", - "repo": "asyncapi/website", - "labels": [], - "score": 17.230475324955524 - }, { "id": "I_kwDOCVQpZM5M_dcV", "isPR": false, @@ -142,17 +147,6 @@ "labels": [], "score": 14.645904026212197 }, - { - "id": "MDU6SXNzdWUxMjMwODQwMDM4", - "isPR": false, - "isAssigned": false, - "title": "Usages of allOf within message payload could be flattened", - "author": "jamescrowley", - "resourcePath": "/asyncapi/asyncapi-react/issues/596", - "repo": "asyncapi/asyncapi-react", - "labels": [], - "score": 14.358729437462937 - }, { "id": "PR_kwDOBW5R_c5VmsTR", "isPR": true, @@ -176,18 +170,83 @@ } ], "score": 14.07155484871368 + }, + { + "id": "PR_kwDOCoBobc42aMuI", + "isPR": true, + "isAssigned": false, + "title": "feat: release for version 3.0.0 of the spec", + "author": "jonaslagoni", + "resourcePath": "/asyncapi/parser-js/pull/526", + "repo": "asyncapi/parser-js", + "labels": [], + "score": 13.497205671215161 } ], "goodFirstIssues": [ { - "id": "I_kwDODou01c504XI9", - "title": "Other issues types are missing", + "id": "I_kwDOCxglSM513Nta", + "title": "Remove messageId from v3 conversion", "isAssigned": false, - "resourcePath": "/asyncapi/studio/issues/826", - "repo": "asyncapi/studio", - "author": "Amzani", + "resourcePath": "/asyncapi/converter-js/issues/201", + "repo": "asyncapi/converter-js", + "author": "jonaslagoni", + "area": "typescript", + "labels": [ + { + "name": "enhancement", + "color": "a2eeef" + } + ] + }, + { + "id": "I_kwDODCuNRs51jd3x", + "title": "Implement GitHub Action to Validate examples Field in Schemas", + "isAssigned": false, + "resourcePath": "/asyncapi/bindings/issues/217", + "repo": "asyncapi/bindings", + "author": "KhudaDad414", + "area": "ci-cd", + "labels": [ + { + "name": "enhancement", + "color": "a2eeef" + } + ] + }, + { + "id": "I_kwDODwv8N851VGrF", + "title": "Unhandled Runtime Error", + "isAssigned": false, + "resourcePath": "/asyncapi/conference-website/issues/230", + "repo": "asyncapi/conference-website", + "author": "PUNEET-EMM", "area": "Unknown", - "labels": [] + "labels": [ + { + "name": "bug", + "color": "d73a4a" + }, + { + "name": "Hacktoberfest", + "color": "FF8AE2" + } + ] + }, + { + "id": "I_kwDOFi_gUM51UQ-5", + "title": "Show a warning if glee can't process a received message", + "isAssigned": false, + "resourcePath": "/asyncapi/glee/issues/558", + "repo": "asyncapi/glee", + "author": "KhudaDad414", + "area": "typescript", + "labels": [ + { + "name": "enhancement", + "color": "a2eeef" + } + ] }, { "id": "I_kwDOFDnrNc5yy6e0", @@ -458,6 +517,10 @@ "author": "alequetzalli", "area": "docs", "labels": [ + { + "name": "stale", + "color": "ededed" + }, { "name": "📑 docs", "color": "E50E99" @@ -473,6 +536,10 @@ "author": "alequetzalli", "area": "docs", "labels": [ + { + "name": "stale", + "color": "ededed" + }, { "name": "📑 docs", "color": "E50E99" @@ -488,6 +555,10 @@ "author": "alequetzalli", "area": "docs", "labels": [ + { + "name": "stale", + "color": "ededed" + }, { "name": "📑 docs", "color": "E50E99" @@ -503,6 +574,10 @@ "author": "alequetzalli", "area": "docs", "labels": [ + { + "name": "stale", + "color": "ededed" + }, { "name": "📑 docs", "color": "E50E99" @@ -548,6 +623,10 @@ "author": "jonaslagoni", "area": "docs", "labels": [ + { + "name": "stale", + "color": "ededed" + }, { "name": "📑 docs", "color": "E50E99" @@ -704,25 +783,6 @@ "area": "Unknown", "labels": [] }, - { - "id": "I_kwDOFi_gUM5oKd1h", - "title": "Generating docs failes if project is a git repository. ", - "isAssigned": false, - "resourcePath": "/asyncapi/glee/issues/461", - "repo": "asyncapi/glee", - "author": "Souvikns", - "area": "Unknown", - "labels": [ - { - "name": "bug", - "color": "d73a4a" - }, - { - "name": "Hacktoberfest", - "color": "016479" - } - ] - }, { "id": "I_kwDOE8Qh385nTCST", "title": "Improve layout of playground", From 0647ddbc4e8e3dae899523559f0e58be528df4d8 Mon Sep 17 00:00:00 2001 From: asyncapi-bot Date: Tue, 7 Nov 2023 11:54:18 +0100 Subject: [PATCH 061/134] docs(cli): update latest cli documentation (#2294) --- pages/docs/tools/cli/usage.md | 50 +++++++++++++++++------------------ 1 file changed, 25 insertions(+), 25 deletions(-) diff --git a/pages/docs/tools/cli/usage.md b/pages/docs/tools/cli/usage.md index 78a1f1f0879..7c9a46addf8 100644 --- a/pages/docs/tools/cli/usage.md +++ b/pages/docs/tools/cli/usage.md @@ -29,7 +29,7 @@ $ npm install -g @asyncapi/cli $ asyncapi COMMAND running command... $ asyncapi (--version) -@asyncapi/cli/0.59.0 linux-x64 node-v18.18.2 +@asyncapi/cli/0.59.1 linux-x64 node-v18.18.2 $ asyncapi --help [COMMAND] USAGE $ asyncapi COMMAND @@ -93,7 +93,7 @@ EXAMPLES $ asyncapi bundle ./asyncapi.yaml ./features.yaml --base ./asyncapi.yaml --reference-into-components ``` -_See code: [src/commands/bundle.ts](https://github.com/asyncapi/cli/blob/v0.59.0/src/commands/bundle.ts)_ +_See code: [src/commands/bundle.ts](https://github.com/asyncapi/cli/blob/v0.59.1/src/commands/bundle.ts)_ ## `asyncapi config` @@ -107,7 +107,7 @@ DESCRIPTION CLI config settings ``` -_See code: [src/commands/config/index.ts](https://github.com/asyncapi/cli/blob/v0.59.0/src/commands/config/index.ts)_ +_See code: [src/commands/config/index.ts](https://github.com/asyncapi/cli/blob/v0.59.1/src/commands/config/index.ts)_ ## `asyncapi config context` @@ -121,7 +121,7 @@ DESCRIPTION Manage short aliases for full paths to AsyncAPI documents ``` -_See code: [src/commands/config/context/index.ts](https://github.com/asyncapi/cli/blob/v0.59.0/src/commands/config/context/index.ts)_ +_See code: [src/commands/config/context/index.ts](https://github.com/asyncapi/cli/blob/v0.59.1/src/commands/config/context/index.ts)_ ## `asyncapi config context add CONTEXT-NAME SPEC-FILE-PATH` @@ -143,7 +143,7 @@ DESCRIPTION Add a context to the store ``` -_See code: [src/commands/config/context/add.ts](https://github.com/asyncapi/cli/blob/v0.59.0/src/commands/config/context/add.ts)_ +_See code: [src/commands/config/context/add.ts](https://github.com/asyncapi/cli/blob/v0.59.1/src/commands/config/context/add.ts)_ ## `asyncapi config context current` @@ -160,7 +160,7 @@ DESCRIPTION Shows the current context that is being used ``` -_See code: [src/commands/config/context/current.ts](https://github.com/asyncapi/cli/blob/v0.59.0/src/commands/config/context/current.ts)_ +_See code: [src/commands/config/context/current.ts](https://github.com/asyncapi/cli/blob/v0.59.1/src/commands/config/context/current.ts)_ ## `asyncapi config context edit CONTEXT-NAME NEW-SPEC-FILE-PATH` @@ -181,7 +181,7 @@ DESCRIPTION Edit a context in the store ``` -_See code: [src/commands/config/context/edit.ts](https://github.com/asyncapi/cli/blob/v0.59.0/src/commands/config/context/edit.ts)_ +_See code: [src/commands/config/context/edit.ts](https://github.com/asyncapi/cli/blob/v0.59.1/src/commands/config/context/edit.ts)_ ## `asyncapi config context init [CONTEXT-FILE-PATH]` @@ -204,7 +204,7 @@ DESCRIPTION Initialize context ``` -_See code: [src/commands/config/context/init.ts](https://github.com/asyncapi/cli/blob/v0.59.0/src/commands/config/context/init.ts)_ +_See code: [src/commands/config/context/init.ts](https://github.com/asyncapi/cli/blob/v0.59.1/src/commands/config/context/init.ts)_ ## `asyncapi config context list` @@ -221,7 +221,7 @@ DESCRIPTION List all the stored contexts in the store ``` -_See code: [src/commands/config/context/list.ts](https://github.com/asyncapi/cli/blob/v0.59.0/src/commands/config/context/list.ts)_ +_See code: [src/commands/config/context/list.ts](https://github.com/asyncapi/cli/blob/v0.59.1/src/commands/config/context/list.ts)_ ## `asyncapi config context remove CONTEXT-NAME` @@ -241,7 +241,7 @@ DESCRIPTION Delete a context from the store ``` -_See code: [src/commands/config/context/remove.ts](https://github.com/asyncapi/cli/blob/v0.59.0/src/commands/config/context/remove.ts)_ +_See code: [src/commands/config/context/remove.ts](https://github.com/asyncapi/cli/blob/v0.59.1/src/commands/config/context/remove.ts)_ ## `asyncapi config context use CONTEXT-NAME` @@ -261,7 +261,7 @@ DESCRIPTION Set a context as current ``` -_See code: [src/commands/config/context/use.ts](https://github.com/asyncapi/cli/blob/v0.59.0/src/commands/config/context/use.ts)_ +_See code: [src/commands/config/context/use.ts](https://github.com/asyncapi/cli/blob/v0.59.1/src/commands/config/context/use.ts)_ ## `asyncapi config versions` @@ -278,7 +278,7 @@ DESCRIPTION Show versions of AsyncAPI tools used ``` -_See code: [src/commands/config/versions.ts](https://github.com/asyncapi/cli/blob/v0.59.0/src/commands/config/versions.ts)_ +_See code: [src/commands/config/versions.ts](https://github.com/asyncapi/cli/blob/v0.59.1/src/commands/config/versions.ts)_ ## `asyncapi convert [SPEC-FILE]` @@ -300,7 +300,7 @@ DESCRIPTION Convert asyncapi documents older to newer versions ``` -_See code: [src/commands/convert.ts](https://github.com/asyncapi/cli/blob/v0.59.0/src/commands/convert.ts)_ +_See code: [src/commands/convert.ts](https://github.com/asyncapi/cli/blob/v0.59.1/src/commands/convert.ts)_ ## `asyncapi diff OLD NEW` @@ -355,7 +355,7 @@ DESCRIPTION Find diff between two asyncapi files ``` -_See code: [src/commands/diff.ts](https://github.com/asyncapi/cli/blob/v0.59.0/src/commands/diff.ts)_ +_See code: [src/commands/diff.ts](https://github.com/asyncapi/cli/blob/v0.59.1/src/commands/diff.ts)_ ## `asyncapi generate` @@ -369,7 +369,7 @@ DESCRIPTION Generate typed models or other things like clients, applications or docs using AsyncAPI Generator templates. ``` -_See code: [src/commands/generate/index.ts](https://github.com/asyncapi/cli/blob/v0.59.0/src/commands/generate/index.ts)_ +_See code: [src/commands/generate/index.ts](https://github.com/asyncapi/cli/blob/v0.59.1/src/commands/generate/index.ts)_ ## `asyncapi generate fromTemplate ASYNCAPI TEMPLATE` @@ -406,7 +406,7 @@ EXAMPLES $ asyncapi generate fromTemplate asyncapi.yaml @asyncapi/html-template --param version=1.0.0 singleFile=true --output ./docs --force-write ``` -_See code: [src/commands/generate/fromTemplate.ts](https://github.com/asyncapi/cli/blob/v0.59.0/src/commands/generate/fromTemplate.ts)_ +_See code: [src/commands/generate/fromTemplate.ts](https://github.com/asyncapi/cli/blob/v0.59.1/src/commands/generate/fromTemplate.ts)_ ## `asyncapi generate models LANGUAGE FILE` @@ -480,7 +480,7 @@ DESCRIPTION Generates typed models ``` -_See code: [src/commands/generate/models.ts](https://github.com/asyncapi/cli/blob/v0.59.0/src/commands/generate/models.ts)_ +_See code: [src/commands/generate/models.ts](https://github.com/asyncapi/cli/blob/v0.59.1/src/commands/generate/models.ts)_ ## `asyncapi new` @@ -535,7 +535,7 @@ EXAMPLES $ asyncapi new --file-name=my-asyncapi.yml --example=default-example.yml --no-tty - create a new file with a specific name, using one of the examples and without interactive mode ``` -_See code: [src/commands/new/index.ts](https://github.com/asyncapi/cli/blob/v0.59.0/src/commands/new/index.ts)_ +_See code: [src/commands/new/index.ts](https://github.com/asyncapi/cli/blob/v0.59.1/src/commands/new/index.ts)_ ## `asyncapi new file` @@ -590,7 +590,7 @@ EXAMPLES $ asyncapi new --file-name=my-asyncapi.yml --example=default-example.yml --no-tty - create a new file with a specific name, using one of the examples and without interactive mode ``` -_See code: [src/commands/new/file.ts](https://github.com/asyncapi/cli/blob/v0.59.0/src/commands/new/file.ts)_ +_See code: [src/commands/new/file.ts](https://github.com/asyncapi/cli/blob/v0.59.1/src/commands/new/file.ts)_ ## `asyncapi new glee` @@ -608,7 +608,7 @@ DESCRIPTION Creates a new Glee project ``` -_See code: [src/commands/new/glee.ts](https://github.com/asyncapi/cli/blob/v0.59.0/src/commands/new/glee.ts)_ +_See code: [src/commands/new/glee.ts](https://github.com/asyncapi/cli/blob/v0.59.1/src/commands/new/glee.ts)_ ## `asyncapi new project` @@ -626,7 +626,7 @@ DESCRIPTION Creates a new Glee project ``` -_See code: [src/commands/new/project.ts](https://github.com/asyncapi/cli/blob/v0.59.0/src/commands/new/project.ts)_ +_See code: [src/commands/new/project.ts](https://github.com/asyncapi/cli/blob/v0.59.1/src/commands/new/project.ts)_ ## `asyncapi optimize [SPEC-FILE]` @@ -662,7 +662,7 @@ EXAMPLES $ asyncapi optimize ./asyncapi.yaml --optimization=remove-components,reuse-components,move-to-components --output=terminal --no-tty ``` -_See code: [src/commands/optimize.ts](https://github.com/asyncapi/cli/blob/v0.59.0/src/commands/optimize.ts)_ +_See code: [src/commands/optimize.ts](https://github.com/asyncapi/cli/blob/v0.59.1/src/commands/optimize.ts)_ ## `asyncapi start` @@ -676,7 +676,7 @@ DESCRIPTION Start asyncapi studio ``` -_See code: [src/commands/start/index.ts](https://github.com/asyncapi/cli/blob/v0.59.0/src/commands/start/index.ts)_ +_See code: [src/commands/start/index.ts](https://github.com/asyncapi/cli/blob/v0.59.1/src/commands/start/index.ts)_ ## `asyncapi start studio` @@ -695,7 +695,7 @@ DESCRIPTION starts a new local instance of Studio ``` -_See code: [src/commands/start/studio.ts](https://github.com/asyncapi/cli/blob/v0.59.0/src/commands/start/studio.ts)_ +_See code: [src/commands/start/studio.ts](https://github.com/asyncapi/cli/blob/v0.59.1/src/commands/start/studio.ts)_ ## `asyncapi validate [SPEC-FILE]` @@ -722,5 +722,5 @@ DESCRIPTION validate asyncapi file ``` -_See code: [src/commands/validate.ts](https://github.com/asyncapi/cli/blob/v0.59.0/src/commands/validate.ts)_ +_See code: [src/commands/validate.ts](https://github.com/asyncapi/cli/blob/v0.59.1/src/commands/validate.ts)_ From 3e4980c33c89a45058304b71e8e3703c1f606bc8 Mon Sep 17 00:00:00 2001 From: asyncapi-bot Date: Tue, 7 Nov 2023 13:46:42 +0100 Subject: [PATCH 062/134] docs(cli): update latest cli documentation (#2295) --- pages/docs/tools/cli/installation.md | 32 +++++++++++++++++++++++++++- 1 file changed, 31 insertions(+), 1 deletion(-) diff --git a/pages/docs/tools/cli/installation.md b/pages/docs/tools/cli/installation.md index 04d94400f2e..5b954799ca3 100644 --- a/pages/docs/tools/cli/installation.md +++ b/pages/docs/tools/cli/installation.md @@ -92,10 +92,40 @@ sudo installer -pkg asyncapi.pkg -target / ``` ## Windows -For Windows just install the appropriate installer and simply follow the default installation steps to complete the installation process. + +There are two ways to install the AsyncAPI CLI on your Windows operating system: using the `chocolatey` package manager or executable files. + +### Chocolatey + +Prerequisites: +[Chocolatey](https://chocolatey.org/install) must be installed on your Windows operating system. The installation instructions can be found [here](https://docs.chocolatey.org/en-us/choco/setup#installing-chocolatey-cli). + +To install the AsyncAPI CLI using the `chocolatey` package manager, run the following command in your terminal with administrator privileges: + +```sh +# Install AsyncAPI CLI +choco install asyncapi +``` + +To upgrade run this command:- +```sh +# Upgrade AsyncAPI CLI +choco upgrade asyncapi +``` +To install a specific version run this command: +```sh +# Install AsyncAPI CLI version xx.xx.xx +choco install asyncapi --version xx.xx.xx +``` +All the AsyncAPI CLI versions can be found [here](https://chocolatey.org/packages/asyncapi). + +### Executable files + +Just install the appropriate installer and simply follow the default installation steps to complete the installation process. Download [asyncapi.x64.exe](https://github.com/asyncapi/cli/releases/latest/download/asyncapi.x64.exe) for 64-bit Windows and download [asyncapi.x86.exe](https://github.com/asyncapi/cli/releases/latest/download/asyncapi.x86.exe) for 32-bit Windows. + ## Linux Selecting the appropriate AsyncAPI CLI installation method on a Linux operating system depends on your Linux distro. From 0bdbda6bc2d6d985b611cda597d583140792410c Mon Sep 17 00:00:00 2001 From: asyncapi-bot Date: Tue, 7 Nov 2023 13:54:54 +0100 Subject: [PATCH 063/134] docs(cli): update latest cli documentation (#2296) --- pages/docs/tools/cli/usage.md | 50 +++++++++++++++++------------------ 1 file changed, 25 insertions(+), 25 deletions(-) diff --git a/pages/docs/tools/cli/usage.md b/pages/docs/tools/cli/usage.md index 7c9a46addf8..4dc6cc33929 100644 --- a/pages/docs/tools/cli/usage.md +++ b/pages/docs/tools/cli/usage.md @@ -29,7 +29,7 @@ $ npm install -g @asyncapi/cli $ asyncapi COMMAND running command... $ asyncapi (--version) -@asyncapi/cli/0.59.1 linux-x64 node-v18.18.2 +@asyncapi/cli/0.59.2 linux-x64 node-v18.18.2 $ asyncapi --help [COMMAND] USAGE $ asyncapi COMMAND @@ -93,7 +93,7 @@ EXAMPLES $ asyncapi bundle ./asyncapi.yaml ./features.yaml --base ./asyncapi.yaml --reference-into-components ``` -_See code: [src/commands/bundle.ts](https://github.com/asyncapi/cli/blob/v0.59.1/src/commands/bundle.ts)_ +_See code: [src/commands/bundle.ts](https://github.com/asyncapi/cli/blob/v0.59.2/src/commands/bundle.ts)_ ## `asyncapi config` @@ -107,7 +107,7 @@ DESCRIPTION CLI config settings ``` -_See code: [src/commands/config/index.ts](https://github.com/asyncapi/cli/blob/v0.59.1/src/commands/config/index.ts)_ +_See code: [src/commands/config/index.ts](https://github.com/asyncapi/cli/blob/v0.59.2/src/commands/config/index.ts)_ ## `asyncapi config context` @@ -121,7 +121,7 @@ DESCRIPTION Manage short aliases for full paths to AsyncAPI documents ``` -_See code: [src/commands/config/context/index.ts](https://github.com/asyncapi/cli/blob/v0.59.1/src/commands/config/context/index.ts)_ +_See code: [src/commands/config/context/index.ts](https://github.com/asyncapi/cli/blob/v0.59.2/src/commands/config/context/index.ts)_ ## `asyncapi config context add CONTEXT-NAME SPEC-FILE-PATH` @@ -143,7 +143,7 @@ DESCRIPTION Add a context to the store ``` -_See code: [src/commands/config/context/add.ts](https://github.com/asyncapi/cli/blob/v0.59.1/src/commands/config/context/add.ts)_ +_See code: [src/commands/config/context/add.ts](https://github.com/asyncapi/cli/blob/v0.59.2/src/commands/config/context/add.ts)_ ## `asyncapi config context current` @@ -160,7 +160,7 @@ DESCRIPTION Shows the current context that is being used ``` -_See code: [src/commands/config/context/current.ts](https://github.com/asyncapi/cli/blob/v0.59.1/src/commands/config/context/current.ts)_ +_See code: [src/commands/config/context/current.ts](https://github.com/asyncapi/cli/blob/v0.59.2/src/commands/config/context/current.ts)_ ## `asyncapi config context edit CONTEXT-NAME NEW-SPEC-FILE-PATH` @@ -181,7 +181,7 @@ DESCRIPTION Edit a context in the store ``` -_See code: [src/commands/config/context/edit.ts](https://github.com/asyncapi/cli/blob/v0.59.1/src/commands/config/context/edit.ts)_ +_See code: [src/commands/config/context/edit.ts](https://github.com/asyncapi/cli/blob/v0.59.2/src/commands/config/context/edit.ts)_ ## `asyncapi config context init [CONTEXT-FILE-PATH]` @@ -204,7 +204,7 @@ DESCRIPTION Initialize context ``` -_See code: [src/commands/config/context/init.ts](https://github.com/asyncapi/cli/blob/v0.59.1/src/commands/config/context/init.ts)_ +_See code: [src/commands/config/context/init.ts](https://github.com/asyncapi/cli/blob/v0.59.2/src/commands/config/context/init.ts)_ ## `asyncapi config context list` @@ -221,7 +221,7 @@ DESCRIPTION List all the stored contexts in the store ``` -_See code: [src/commands/config/context/list.ts](https://github.com/asyncapi/cli/blob/v0.59.1/src/commands/config/context/list.ts)_ +_See code: [src/commands/config/context/list.ts](https://github.com/asyncapi/cli/blob/v0.59.2/src/commands/config/context/list.ts)_ ## `asyncapi config context remove CONTEXT-NAME` @@ -241,7 +241,7 @@ DESCRIPTION Delete a context from the store ``` -_See code: [src/commands/config/context/remove.ts](https://github.com/asyncapi/cli/blob/v0.59.1/src/commands/config/context/remove.ts)_ +_See code: [src/commands/config/context/remove.ts](https://github.com/asyncapi/cli/blob/v0.59.2/src/commands/config/context/remove.ts)_ ## `asyncapi config context use CONTEXT-NAME` @@ -261,7 +261,7 @@ DESCRIPTION Set a context as current ``` -_See code: [src/commands/config/context/use.ts](https://github.com/asyncapi/cli/blob/v0.59.1/src/commands/config/context/use.ts)_ +_See code: [src/commands/config/context/use.ts](https://github.com/asyncapi/cli/blob/v0.59.2/src/commands/config/context/use.ts)_ ## `asyncapi config versions` @@ -278,7 +278,7 @@ DESCRIPTION Show versions of AsyncAPI tools used ``` -_See code: [src/commands/config/versions.ts](https://github.com/asyncapi/cli/blob/v0.59.1/src/commands/config/versions.ts)_ +_See code: [src/commands/config/versions.ts](https://github.com/asyncapi/cli/blob/v0.59.2/src/commands/config/versions.ts)_ ## `asyncapi convert [SPEC-FILE]` @@ -300,7 +300,7 @@ DESCRIPTION Convert asyncapi documents older to newer versions ``` -_See code: [src/commands/convert.ts](https://github.com/asyncapi/cli/blob/v0.59.1/src/commands/convert.ts)_ +_See code: [src/commands/convert.ts](https://github.com/asyncapi/cli/blob/v0.59.2/src/commands/convert.ts)_ ## `asyncapi diff OLD NEW` @@ -355,7 +355,7 @@ DESCRIPTION Find diff between two asyncapi files ``` -_See code: [src/commands/diff.ts](https://github.com/asyncapi/cli/blob/v0.59.1/src/commands/diff.ts)_ +_See code: [src/commands/diff.ts](https://github.com/asyncapi/cli/blob/v0.59.2/src/commands/diff.ts)_ ## `asyncapi generate` @@ -369,7 +369,7 @@ DESCRIPTION Generate typed models or other things like clients, applications or docs using AsyncAPI Generator templates. ``` -_See code: [src/commands/generate/index.ts](https://github.com/asyncapi/cli/blob/v0.59.1/src/commands/generate/index.ts)_ +_See code: [src/commands/generate/index.ts](https://github.com/asyncapi/cli/blob/v0.59.2/src/commands/generate/index.ts)_ ## `asyncapi generate fromTemplate ASYNCAPI TEMPLATE` @@ -406,7 +406,7 @@ EXAMPLES $ asyncapi generate fromTemplate asyncapi.yaml @asyncapi/html-template --param version=1.0.0 singleFile=true --output ./docs --force-write ``` -_See code: [src/commands/generate/fromTemplate.ts](https://github.com/asyncapi/cli/blob/v0.59.1/src/commands/generate/fromTemplate.ts)_ +_See code: [src/commands/generate/fromTemplate.ts](https://github.com/asyncapi/cli/blob/v0.59.2/src/commands/generate/fromTemplate.ts)_ ## `asyncapi generate models LANGUAGE FILE` @@ -480,7 +480,7 @@ DESCRIPTION Generates typed models ``` -_See code: [src/commands/generate/models.ts](https://github.com/asyncapi/cli/blob/v0.59.1/src/commands/generate/models.ts)_ +_See code: [src/commands/generate/models.ts](https://github.com/asyncapi/cli/blob/v0.59.2/src/commands/generate/models.ts)_ ## `asyncapi new` @@ -535,7 +535,7 @@ EXAMPLES $ asyncapi new --file-name=my-asyncapi.yml --example=default-example.yml --no-tty - create a new file with a specific name, using one of the examples and without interactive mode ``` -_See code: [src/commands/new/index.ts](https://github.com/asyncapi/cli/blob/v0.59.1/src/commands/new/index.ts)_ +_See code: [src/commands/new/index.ts](https://github.com/asyncapi/cli/blob/v0.59.2/src/commands/new/index.ts)_ ## `asyncapi new file` @@ -590,7 +590,7 @@ EXAMPLES $ asyncapi new --file-name=my-asyncapi.yml --example=default-example.yml --no-tty - create a new file with a specific name, using one of the examples and without interactive mode ``` -_See code: [src/commands/new/file.ts](https://github.com/asyncapi/cli/blob/v0.59.1/src/commands/new/file.ts)_ +_See code: [src/commands/new/file.ts](https://github.com/asyncapi/cli/blob/v0.59.2/src/commands/new/file.ts)_ ## `asyncapi new glee` @@ -608,7 +608,7 @@ DESCRIPTION Creates a new Glee project ``` -_See code: [src/commands/new/glee.ts](https://github.com/asyncapi/cli/blob/v0.59.1/src/commands/new/glee.ts)_ +_See code: [src/commands/new/glee.ts](https://github.com/asyncapi/cli/blob/v0.59.2/src/commands/new/glee.ts)_ ## `asyncapi new project` @@ -626,7 +626,7 @@ DESCRIPTION Creates a new Glee project ``` -_See code: [src/commands/new/project.ts](https://github.com/asyncapi/cli/blob/v0.59.1/src/commands/new/project.ts)_ +_See code: [src/commands/new/project.ts](https://github.com/asyncapi/cli/blob/v0.59.2/src/commands/new/project.ts)_ ## `asyncapi optimize [SPEC-FILE]` @@ -662,7 +662,7 @@ EXAMPLES $ asyncapi optimize ./asyncapi.yaml --optimization=remove-components,reuse-components,move-to-components --output=terminal --no-tty ``` -_See code: [src/commands/optimize.ts](https://github.com/asyncapi/cli/blob/v0.59.1/src/commands/optimize.ts)_ +_See code: [src/commands/optimize.ts](https://github.com/asyncapi/cli/blob/v0.59.2/src/commands/optimize.ts)_ ## `asyncapi start` @@ -676,7 +676,7 @@ DESCRIPTION Start asyncapi studio ``` -_See code: [src/commands/start/index.ts](https://github.com/asyncapi/cli/blob/v0.59.1/src/commands/start/index.ts)_ +_See code: [src/commands/start/index.ts](https://github.com/asyncapi/cli/blob/v0.59.2/src/commands/start/index.ts)_ ## `asyncapi start studio` @@ -695,7 +695,7 @@ DESCRIPTION starts a new local instance of Studio ``` -_See code: [src/commands/start/studio.ts](https://github.com/asyncapi/cli/blob/v0.59.1/src/commands/start/studio.ts)_ +_See code: [src/commands/start/studio.ts](https://github.com/asyncapi/cli/blob/v0.59.2/src/commands/start/studio.ts)_ ## `asyncapi validate [SPEC-FILE]` @@ -722,5 +722,5 @@ DESCRIPTION validate asyncapi file ``` -_See code: [src/commands/validate.ts](https://github.com/asyncapi/cli/blob/v0.59.1/src/commands/validate.ts)_ +_See code: [src/commands/validate.ts](https://github.com/asyncapi/cli/blob/v0.59.2/src/commands/validate.ts)_ From e3b4f0b5eacdd08248360b09e0931603e5732f57 Mon Sep 17 00:00:00 2001 From: asyncapi-bot Date: Wed, 8 Nov 2023 01:28:41 +0100 Subject: [PATCH 064/134] chore: update meetings.json and newsrooom_videos.json (#2298) --- config/newsroom_videos.json | 12 ++++++------ dashboard.json | 31 ++++++++++++++++++------------- 2 files changed, 24 insertions(+), 19 deletions(-) diff --git a/config/newsroom_videos.json b/config/newsroom_videos.json index 40a17f976d6..adf801b9d94 100644 --- a/config/newsroom_videos.json +++ b/config/newsroom_videos.json @@ -5,12 +5,6 @@ "description": "Powered by Restream https://restream.io https://github.com/asyncapi/community/issues/916.", "videoId": "Vm4ZKFb2PVE" }, - { - "image_url": "https://i.ytimg.com/vi/FN5eR1Zqh9c/hqdefault.jpg", - "title": "AsyncAPI Conf on Tour 2023 in Madrid", - "description": "AACoT'23 Madrid Edition streamed live from StageOne at SNGULAR. 00:00 Waiting 57:12 Opening 1:26:07 Everything You Wish ...", - "videoId": "FN5eR1Zqh9c" - }, { "image_url": "https://i.ytimg.com/vi/zSbv4ibqYds/hqdefault.jpg", "title": "Community Meeting(October 17th, 2023)", @@ -28,5 +22,11 @@ "title": "Spec 3.0 docs meeting (September 28, 2023)", "description": "https://github.com/asyncapi/community/issues/885.", "videoId": "qjMojQ-fFew" + }, + { + "image_url": "https://i.ytimg.com/vi/SfATYVwcSQk/hqdefault.jpg", + "title": "Community meeting (September 19, 2023)", + "description": "https://github.com/asyncapi/community/issues/874.", + "videoId": "SfATYVwcSQk" } ] \ No newline at end of file diff --git a/dashboard.json b/dashboard.json index 7f9a1a8c8f8..67eb49ffb10 100644 --- a/dashboard.json +++ b/dashboard.json @@ -41,7 +41,7 @@ "resourcePath": "/asyncapi/website/pull/2038", "repo": "asyncapi/website", "labels": [], - "score": 39.34291865864845 + "score": 39.63009324739771 }, { "id": "PR_kwDOFLhIt85Vmgtj", @@ -52,7 +52,23 @@ "resourcePath": "/asyncapi/community/pull/805", "repo": "asyncapi/community", "labels": [], - "score": 30.440506407421427 + "score": 30.727680996170687 + }, + { + "id": "I_kwDOBGu-184_rP6l", + "isPR": false, + "isAssigned": false, + "title": "Let channels be identified by an ID rather than their address.", + "author": "smoya", + "resourcePath": "/asyncapi/spec/issues/663", + "repo": "asyncapi/spec", + "labels": [ + { + "name": "💭 Strawman (RFC 0)", + "color": "C2E0C6" + } + ], + "score": 21.538094156194408 }, { "id": "I_kwDOBW5R_c5BIl5P", @@ -170,17 +186,6 @@ } ], "score": 14.07155484871368 - }, - { - "id": "PR_kwDOCoBobc42aMuI", - "isPR": true, - "isAssigned": false, - "title": "feat: release for version 3.0.0 of the spec", - "author": "jonaslagoni", - "resourcePath": "/asyncapi/parser-js/pull/526", - "repo": "asyncapi/parser-js", - "labels": [], - "score": 13.497205671215161 } ], "goodFirstIssues": [ From 2e7ae53c87defaed69424a42f9b2cc96d5932ae4 Mon Sep 17 00:00:00 2001 From: asyncapi-bot Date: Wed, 8 Nov 2023 01:29:42 +0100 Subject: [PATCH 065/134] chore: update meetings.json and newsrooom_videos.json (#2298) From d4fc687951d46a448acbbb96d081303534e27fa1 Mon Sep 17 00:00:00 2001 From: asyncapi-bot Date: Thu, 9 Nov 2023 01:27:41 +0100 Subject: [PATCH 066/134] chore: update meetings.json and newsrooom_videos.json (#2301) --- config/newsroom_videos.json | 12 +++---- dashboard.json | 65 +++++++++---------------------------- 2 files changed, 22 insertions(+), 55 deletions(-) diff --git a/config/newsroom_videos.json b/config/newsroom_videos.json index adf801b9d94..40a17f976d6 100644 --- a/config/newsroom_videos.json +++ b/config/newsroom_videos.json @@ -5,6 +5,12 @@ "description": "Powered by Restream https://restream.io https://github.com/asyncapi/community/issues/916.", "videoId": "Vm4ZKFb2PVE" }, + { + "image_url": "https://i.ytimg.com/vi/FN5eR1Zqh9c/hqdefault.jpg", + "title": "AsyncAPI Conf on Tour 2023 in Madrid", + "description": "AACoT'23 Madrid Edition streamed live from StageOne at SNGULAR. 00:00 Waiting 57:12 Opening 1:26:07 Everything You Wish ...", + "videoId": "FN5eR1Zqh9c" + }, { "image_url": "https://i.ytimg.com/vi/zSbv4ibqYds/hqdefault.jpg", "title": "Community Meeting(October 17th, 2023)", @@ -22,11 +28,5 @@ "title": "Spec 3.0 docs meeting (September 28, 2023)", "description": "https://github.com/asyncapi/community/issues/885.", "videoId": "qjMojQ-fFew" - }, - { - "image_url": "https://i.ytimg.com/vi/SfATYVwcSQk/hqdefault.jpg", - "title": "Community meeting (September 19, 2023)", - "description": "https://github.com/asyncapi/community/issues/874.", - "videoId": "SfATYVwcSQk" } ] \ No newline at end of file diff --git a/dashboard.json b/dashboard.json index 67eb49ffb10..7127999f2d0 100644 --- a/dashboard.json +++ b/dashboard.json @@ -70,6 +70,22 @@ ], "score": 21.538094156194408 }, + { + "id": "I_kwDOGJ23c85V9C3c", + "isPR": false, + "isAssigned": false, + "title": "Support `referenceIntoComponents` for other components than `message`", + "author": "thake", + "resourcePath": "/asyncapi/bundler/issues/97", + "repo": "asyncapi/bundler", + "labels": [ + { + "name": "enhancement", + "color": "a2eeef" + } + ], + "score": 20.102221212448114 + }, { "id": "I_kwDOBW5R_c5BIl5P", "isPR": false, @@ -162,30 +178,6 @@ "repo": "asyncapi/community", "labels": [], "score": 14.645904026212197 - }, - { - "id": "PR_kwDOBW5R_c5VmsTR", - "isPR": true, - "isAssigned": true, - "title": "docs: tags in a AsyncAPI document", - "author": "TRohit20", - "resourcePath": "/asyncapi/website/pull/1957", - "repo": "asyncapi/website", - "labels": [ - { - "name": "📑 docs", - "color": "E50E99" - }, - { - "name": "area/docs", - "color": "e50e99" - }, - { - "name": "gsod", - "color": "7B5DB8" - } - ], - "score": 14.07155484871368 } ], "goodFirstIssues": [ @@ -743,21 +735,6 @@ } ] }, - { - "id": "I_kwDOBW5R_c5qCIUD", - "title": "[📑 Docs]: Remove v2 spec links for v3", - "isAssigned": true, - "resourcePath": "/asyncapi/website/issues/1855", - "repo": "asyncapi/website", - "author": "jonaslagoni", - "area": "docs", - "labels": [ - { - "name": "📑 docs", - "color": "E50E99" - } - ] - }, { "id": "I_kwDOBW5R_c5qCG1z", "title": "[📑 Docs]: Adapt github action tooling page for v3", @@ -768,16 +745,6 @@ "area": "Unknown", "labels": [] }, - { - "id": "I_kwDOBW5R_c5qCC_7", - "title": "[📑 Docs]: Adapt frontpage animation for v3", - "isAssigned": true, - "resourcePath": "/asyncapi/website/issues/1853", - "repo": "asyncapi/website", - "author": "jonaslagoni", - "area": "Unknown", - "labels": [] - }, { "id": "I_kwDOFLhIt85o9dDJ", "title": "Add 2023 mentorship directory", From 08c8b9032f0585b5ccd7edc233362b014b9b84c6 Mon Sep 17 00:00:00 2001 From: Lukasz Gornicki Date: Thu, 9 Nov 2023 10:56:05 +0100 Subject: [PATCH 067/134] feat: add banners for cfp for Bengaluru and Paris (#2218) Co-authored-by: V Thulisile Sibanda <66913810+thulieblack@users.noreply.github.com>%0ACo-authored-by: Akshat Nema <76521428+akshatnema@users.noreply.github.com>%0ACo-authored-by: akshatnema --- components/campaigns/AnnoucementHero.js | 135 +++++++++++++++--- .../campaignTests/AnnouncementHero.cy.js | 1 - 2 files changed, 115 insertions(+), 21 deletions(-) diff --git a/components/campaigns/AnnoucementHero.js b/components/campaigns/AnnoucementHero.js index 9c539ff1dba..39153357bfc 100644 --- a/components/campaigns/AnnoucementHero.js +++ b/components/campaigns/AnnoucementHero.js @@ -1,8 +1,11 @@ +import { useState, useEffect } from 'react' import Paragraph from '../typography/Paragraph' import Button from '../buttons/Button' import Heading from '../typography/Heading' import Container from '../layout/Container' import AnnouncementRemainingDays from './AnnouncementRamainingDays' +import ArrowLeft from '../icons/ArrowLeft' +import ArrowRight from '../icons/ArrowRight' function shouldShowBanner(cfpDeadline) { const currentDate = new Date(); // G et the current date @@ -15,48 +18,140 @@ function shouldShowBanner(cfpDeadline) { return true; } + export default function AnnouncementHero({ className = '', small = false, hideVideo = false }) { //return null; + + const [activeIndex, setActiveIndex] = useState(0); - const cfpDeadline = '2023-11-30T06:00:00Z' - const showBanner = shouldShowBanner(cfpDeadline); - if (!showBanner) return null; + const cfpDeadlineIndia = '2023-11-30T06:00:00Z' + const cfpDeadlineFrance = '2023-12-6T06:00:00Z' + const showBannerIndia = shouldShowBanner(cfpDeadlineIndia); + const showBannerFrance = shouldShowBanner(cfpDeadlineFrance); - - return ( - + const Banner = ({ title, dateLocation, cfaText, eventName, cfpDeadline, link, city, activeBanner }) => { + return (

- AsyncAPI Conf on Tour 2023 + {title} - - Bangalore Edition + level="h2" + typeStyle="heading-md" > + {city} - 30th of November, 2023 | Bangalore, India + {dateLocation} - +
+ ) + } + + const banners = [ + { + title: "AsyncAPI Conf", + city: "Bengaluru", + dateLocation: "30th of November, 2023 | Bengaluru, India", + cfaText: "Grab Free Tickets", + eventName: "AACoT'23 Bengaluru Edition", + cfpDeadline: cfpDeadlineIndia, + link: "https://opencollective.com/asyncapi/events/asyncapi-conference-on-tour-6b3c0aa1/contribute/aacot-london-edition-66187", + show: showBannerIndia + }, + { + title: "AsyncAPI Conf", + city: "Paris", + dateLocation: "8th of December, 2023 | Paris, France", + cfaText: "Get Free Tickets", + eventName: "AACoT'23 Paris Edition", + cfpDeadline: cfpDeadlineFrance, + link: "https://ticket.apidays.global/event/apidays-paris-2023/8a1f3904-e2be-4c69-a880-37d2ddf1027d/cart?coupon=ASYNCAPICONF23", + show: showBannerFrance + } + ]; + + // Calculate the number of banners that should be displayed + const numberOfVisibleBanners = banners.filter(banner => banner.show).length; + const len = banners.length; + + const goToPrevious = () => { + setActiveIndex((prevIndex) => (prevIndex === 0 ? len - 1 : prevIndex - 1)); + }; + + const goToNext = () => { + setActiveIndex((prevIndex) => (prevIndex === len - 1 ? 0 : prevIndex + 1)); + }; + + const goToIndex = (index) => { + setActiveIndex(index); + }; + + useEffect(() => { + const interval = setInterval(() => setActiveIndex(index => index + 1), 5000); + return () => { + clearInterval(interval); + }; + }, [activeIndex]); + + return ( + +
+
+ +
+
+
+ {banners.map((banner, index) => ( + banner.show && ( + + ) + ))} +
+
+ {banners.map((banner, index) => ( +
goToIndex(index)} + /> + ))} +
+
+
+ +
+
); -} \ No newline at end of file +} diff --git a/cypress/test/components/campaignTests/AnnouncementHero.cy.js b/cypress/test/components/campaignTests/AnnouncementHero.cy.js index 068a20da14e..3d5444d9b20 100644 --- a/cypress/test/components/campaignTests/AnnouncementHero.cy.js +++ b/cypress/test/components/campaignTests/AnnouncementHero.cy.js @@ -24,7 +24,6 @@ describe('AnnouncementHero Component', () => { // Assert the event details cy.get('[data-testid="Paragraph-test"]').should('exist'); cy.get('h2').should('exist'); - cy.get('h3').should('exist'); }); it('should have a link and text for the button', () => { From 193209c8861ebfee36e01bb75381d4dcd0c4ad33 Mon Sep 17 00:00:00 2001 From: Akshat Nema <76521428+akshatnema@users.noreply.github.com> Date: Thu, 9 Nov 2023 23:45:28 +0530 Subject: [PATCH 068/134] fix: remaining days and mobile view issue of conference banners (#2306) --- components/campaigns/AnnoucementHero.js | 6 +++--- ...ncementRamainingDays.js => AnnouncementRemainingDays.js} | 0 .../campaignTests/AnnouncementRemainingDays.cy.js | 2 +- 3 files changed, 4 insertions(+), 4 deletions(-) rename components/campaigns/{AnnouncementRamainingDays.js => AnnouncementRemainingDays.js} (100%) diff --git a/components/campaigns/AnnoucementHero.js b/components/campaigns/AnnoucementHero.js index 39153357bfc..cb31fd494ca 100644 --- a/components/campaigns/AnnoucementHero.js +++ b/components/campaigns/AnnoucementHero.js @@ -3,7 +3,7 @@ import Paragraph from '../typography/Paragraph' import Button from '../buttons/Button' import Heading from '../typography/Heading' import Container from '../layout/Container' -import AnnouncementRemainingDays from './AnnouncementRamainingDays' +import AnnouncementRemainingDays from './AnnouncementRemainingDays' import ArrowLeft from '../icons/ArrowLeft' import ArrowRight from '../icons/ArrowRight' @@ -25,7 +25,7 @@ export default function AnnouncementHero({ className = '', small = false, hideVi const [activeIndex, setActiveIndex] = useState(0); const cfpDeadlineIndia = '2023-11-30T06:00:00Z' - const cfpDeadlineFrance = '2023-12-6T06:00:00Z' + const cfpDeadlineFrance = '2023-12-06T06:00:00Z' const showBannerIndia = shouldShowBanner(cfpDeadlineIndia); const showBannerFrance = shouldShowBanner(cfpDeadlineFrance); @@ -116,7 +116,7 @@ export default function AnnouncementHero({ className = '', small = false, hideVi
-
+
{banners.map((banner, index) => ( banner.show && ( { it('displays correct countdown text', () => { From 1c166781398b5e12a3a9a4ff9635f99bc9125387 Mon Sep 17 00:00:00 2001 From: asyncapi-bot Date: Fri, 10 Nov 2023 11:42:21 +0100 Subject: [PATCH 069/134] docs(spec): update latest specification (#2308) --- pages/docs/reference/specification/v2.6.0.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pages/docs/reference/specification/v2.6.0.md b/pages/docs/reference/specification/v2.6.0.md index 1e1364f7b81..35262c5e870 100644 --- a/pages/docs/reference/specification/v2.6.0.md +++ b/pages/docs/reference/specification/v2.6.0.md @@ -1649,7 +1649,7 @@ components: #### Schema Object The Schema Object allows the definition of input and output data types. -These types can be objects, but also primitives and arrays. This object is a superset of the [JSON Schema Specification Draft 07](https://json-schema.org/). The empty schema (which allows any instance to validate) MAY be represented by the `boolean` value `true` and a schema which allows no instance to validate MAY be represented by the `boolean` value `false`. +These types can be objects, but also primitives and arrays. This object is a superset of the [JSON Schema Specification Draft 07](https://json-schema.org/specification-links.html#draft-7). The empty schema (which allows any instance to validate) MAY be represented by the `boolean` value `true` and a schema which allows no instance to validate MAY be represented by the `boolean` value `false`. Further information about the properties can be found in [JSON Schema Core](https://tools.ietf.org/html/draft-handrews-json-schema-01) and [JSON Schema Validation](https://tools.ietf.org/html/draft-handrews-json-schema-validation-01). Unless stated otherwise, the property definitions follow the JSON Schema specification as referenced here. From f5e504b39afb77caddb54993415af4c850c5827d Mon Sep 17 00:00:00 2001 From: asyncapi-bot Date: Sat, 11 Nov 2023 01:26:22 +0100 Subject: [PATCH 070/134] chore: update meetings.json and newsrooom_videos.json (#2309) --- config/meetings.json | 7 ------- 1 file changed, 7 deletions(-) diff --git a/config/meetings.json b/config/meetings.json index 72611212193..a4ed29042ff 100644 --- a/config/meetings.json +++ b/config/meetings.json @@ -20,13 +20,6 @@ "banner": "https://user-images.githubusercontent.com/40604284/256949583-958c34c8-4256-4ac5-852b-e00ec094fad0.png", "date": "2023-08-08T16:00:00.000Z" }, - { - "title": "Spec 3.0 Meeting", - "calLink": "https://www.google.com/calendar/event?eid=NG9lc2RwN3A2djFmNmRxaHZoaWRjMnRhaDAgY19xOXRzZWlnbG9tZHNqNm5qdWh2YnB0czExY0Bn", - "url": "https://github.com/asyncapi/community/issues/823", - "banner": "", - "date": "2023-08-02T16:00:00.000Z" - }, { "title": "Community Meeting", "calLink": "https://www.google.com/calendar/event?eid=Z3YzNDRwamprYzMwNTluYTdtNG1iaHA5NjggY19xOXRzZWlnbG9tZHNqNm5qdWh2YnB0czExY0Bn", From b91f53715fc8cf49f82f5597c72b7a8a8e85e268 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Sat, 11 Nov 2023 07:00:55 +0100 Subject: [PATCH 071/134] chore(deps): bump axios from 0.27.2 to 1.6.0 (#2310) --- package-lock.json | 79 ++++++++++++++++++++++++++++++++++++++++------- package.json | 2 +- 2 files changed, 69 insertions(+), 12 deletions(-) diff --git a/package-lock.json b/package-lock.json index 2ae4706e352..f61c10f7f71 100644 --- a/package-lock.json +++ b/package-lock.json @@ -27,7 +27,7 @@ "ajv": "^8.11.0", "ajv-formats": "^2.1.1", "autoprefixer": "^10.4.7", - "axios": "^0.27.2", + "axios": "^1.6.0", "clsx": "^1.1.1", "cssnano": "^5.1.12", "dotenv": "^8.2.0", @@ -2090,6 +2090,28 @@ "npm": ">= 6.12.0" } }, + "node_modules/@slack/web-api/node_modules/axios": { + "version": "0.27.2", + "resolved": "https://registry.npmjs.org/axios/-/axios-0.27.2.tgz", + "integrity": "sha512-t+yRIyySRTp/wua5xEr+z1q60QmLq8ABsS5O9Me1AsE5dfKqgnCFzwiCZZ/cGNd1lq4/7akDWMxdhVlucjmnOQ==", + "dependencies": { + "follow-redirects": "^1.14.9", + "form-data": "^4.0.0" + } + }, + "node_modules/@slack/web-api/node_modules/axios/node_modules/form-data": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.0.tgz", + "integrity": "sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==", + "dependencies": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.8", + "mime-types": "^2.1.12" + }, + "engines": { + "node": ">= 6" + } + }, "node_modules/@slack/web-api/node_modules/form-data": { "version": "2.5.1", "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.5.1.tgz", @@ -2668,14 +2690,20 @@ "dev": true }, "node_modules/axios": { - "version": "0.27.2", - "resolved": "https://registry.npmjs.org/axios/-/axios-0.27.2.tgz", - "integrity": "sha512-t+yRIyySRTp/wua5xEr+z1q60QmLq8ABsS5O9Me1AsE5dfKqgnCFzwiCZZ/cGNd1lq4/7akDWMxdhVlucjmnOQ==", + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/axios/-/axios-1.6.0.tgz", + "integrity": "sha512-EZ1DYihju9pwVB+jg67ogm+Tmqc6JmhamRN6I4Zt8DfZu5lbcQGw3ozH9lFejSJgs/ibaef3A9PMXPLeefFGJg==", "dependencies": { - "follow-redirects": "^1.14.9", - "form-data": "^4.0.0" + "follow-redirects": "^1.15.0", + "form-data": "^4.0.0", + "proxy-from-env": "^1.1.0" } }, + "node_modules/axios/node_modules/proxy-from-env": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz", + "integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==" + }, "node_modules/babel-code-frame": { "version": "6.26.0", "resolved": "https://registry.npmjs.org/babel-code-frame/-/babel-code-frame-6.26.0.tgz", @@ -13592,6 +13620,27 @@ "p-retry": "^4.0.0" }, "dependencies": { + "axios": { + "version": "0.27.2", + "resolved": "https://registry.npmjs.org/axios/-/axios-0.27.2.tgz", + "integrity": "sha512-t+yRIyySRTp/wua5xEr+z1q60QmLq8ABsS5O9Me1AsE5dfKqgnCFzwiCZZ/cGNd1lq4/7akDWMxdhVlucjmnOQ==", + "requires": { + "follow-redirects": "^1.14.9", + "form-data": "^4.0.0" + }, + "dependencies": { + "form-data": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.0.tgz", + "integrity": "sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==", + "requires": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.8", + "mime-types": "^2.1.12" + } + } + } + }, "form-data": { "version": "2.5.1", "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.5.1.tgz", @@ -14077,12 +14126,20 @@ "dev": true }, "axios": { - "version": "0.27.2", - "resolved": "https://registry.npmjs.org/axios/-/axios-0.27.2.tgz", - "integrity": "sha512-t+yRIyySRTp/wua5xEr+z1q60QmLq8ABsS5O9Me1AsE5dfKqgnCFzwiCZZ/cGNd1lq4/7akDWMxdhVlucjmnOQ==", + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/axios/-/axios-1.6.0.tgz", + "integrity": "sha512-EZ1DYihju9pwVB+jg67ogm+Tmqc6JmhamRN6I4Zt8DfZu5lbcQGw3ozH9lFejSJgs/ibaef3A9PMXPLeefFGJg==", "requires": { - "follow-redirects": "^1.14.9", - "form-data": "^4.0.0" + "follow-redirects": "^1.15.0", + "form-data": "^4.0.0", + "proxy-from-env": "^1.1.0" + }, + "dependencies": { + "proxy-from-env": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz", + "integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==" + } } }, "babel-code-frame": { diff --git a/package.json b/package.json index 0ec8b5d2d7c..4143d2049dc 100644 --- a/package.json +++ b/package.json @@ -54,7 +54,7 @@ "ajv": "^8.11.0", "ajv-formats": "^2.1.1", "autoprefixer": "^10.4.7", - "axios": "^0.27.2", + "axios": "^1.6.0", "clsx": "^1.1.1", "cssnano": "^5.1.12", "dotenv": "^8.2.0", From 7d839e082d4f53928438539927ebceb0cf283f3f Mon Sep 17 00:00:00 2001 From: asyncapi-bot Date: Mon, 13 Nov 2023 01:28:35 +0100 Subject: [PATCH 072/134] chore: update tools.json (#2311) --- config/all-tags.json | 2 +- config/tools-automated.json | 108 ++++++++++++++++++------------------ 2 files changed, 55 insertions(+), 55 deletions(-) diff --git a/config/all-tags.json b/config/all-tags.json index 3ef0bff50ef..d9fbea47635 100644 --- a/config/all-tags.json +++ b/config/all-tags.json @@ -1 +1 @@ -{"languages":[{"name":"Go/Golang","color":"bg-[#8ECFDF]","borderColor":"border-[#00AFD9]"},{"name":"Java","color":"bg-[#ECA2A4]","borderColor":"border-[#EC2125]"},{"name":"JavaScript","color":"bg-[#F2F1C7]","borderColor":"border-[#BFBE86]"},{"name":"HTML","color":"bg-[#E2A291]","borderColor":"border-[#E44D26]"},{"name":"C/C++","color":"bg-[#93CDEF]","borderColor":"border-[#0080CC]"},{"name":"C#","color":"bg-[#E3AFE0]","borderColor":"border-[#9B4F96]"},{"name":"Python","color":"bg-[#A8D0EF]","borderColor":"border-[#3878AB]"},{"name":"TypeScript","color":"bg-[#7DBCFE]","borderColor":"border-[#2C78C7]"},{"name":"Kotlin","color":"bg-[#B1ACDF]","borderColor":"border-[#756BD9]"},{"name":"Scala","color":"bg-[#FFA299]","borderColor":"border-[#DF301F]"},{"name":"Markdown","color":"bg-[#BABEBF]","borderColor":"border-[#445B64]"},{"name":"YAML","color":"bg-[#FFB764]","borderColor":"border-[#F1901F]"},{"name":"R","color":"bg-[#84B5ED]","borderColor":"border-[#246BBE]"},{"name":"Ruby","color":"bg-[#FF8289]","borderColor":"border-[#FF000F]"},{"name":"Rust","color":"bg-[#FFB8AA]","borderColor":"border-[#E43716]"},{"name":"Shell","color":"bg-[#87D4FF]","borderColor":"border-[#389ED7]"},{"name":"Groovy","color":"bg-[#B6D5E5]","borderColor":"border-[#609DBC]"}],"technologies":[{"name":"Node.js","color":"bg-[#BDFF67]","borderColor":"border-[#84CE24]"},{"name":"Hermes","color":"bg-[#8AEEBD]","borderColor":"border-[#2AB672]"},{"name":"React JS","color":"bg-[#9FECFA]","borderColor":"border-[#08D8FE]"},{"name":".NET","color":"bg-[#A184FF]","borderColor":"border-[#5026D4]"},{"name":"ASP.NET","color":"bg-[#71C2FB]","borderColor":"border-[#1577BC]"},{"name":"Springboot","color":"bg-[#98E279]","borderColor":"border-[#68BC44]"},{"name":"AWS","color":"bg-[#FF9F59]","borderColor":"border-[#EF6703]"},{"name":"Docker","color":"bg-[#B8E0FF]","borderColor":"border-[#2596ED]"},{"name":"Node-RED","color":"bg-[#FF7474]","borderColor":"border-[#8F0101]"},{"name":"Maven","color":"bg-[#FF6B80]","borderColor":"border-[#CA1A33]"},{"name":"Saas","color":"bg-[#6AB8EC]","borderColor":"border-[#2275AD]"},{"name":"Kubernetes-native","color":"bg-[#D7C7F2]","borderColor":"border-[#A387D2]"},{"name":"Scala","color":"bg-[#D7C7F2]","borderColor":"border-[#A387D2]"},{"name":"Azure","color":"bg-[#4B93FF]","borderColor":"border-[#015ADF]"},{"name":"Jenkins","color":"bg-[#D7C7F2]","borderColor":"border-[#A387D2]"},{"name":"Flask","color":"bg-[#D7C7F2]","borderColor":"border-[#A387D2]"},{"name":"Nest Js","color":"bg-[#E1224E]","borderColor":"border-[#B9012b]"},{"name":"TypeScript","color":"bg-[#61d0f2]","borderColor":"border-[#40ccf7]"},{"name":"Socket.IO","color":"bg-[#61d0f2]","borderColor":"border-[#40ccf7]"},{"name":"Liquid","color":"bg-[#61d0f2]","borderColor":"border-[#40ccf7]"},{"name":"Kotlin","color":"bg-[#61d0f2]","borderColor":"border-[#40ccf7]"},{"name":"Gradle","color":"bg-[#61d0f2]","borderColor":"border-[#40ccf7]"},{"name":"Spring Cloud Streams","color":"bg-[#61d0f2]","borderColor":"border-[#40ccf7]"},{"name":"JHipster JDL","color":"bg-[#61d0f2]","borderColor":"border-[#40ccf7]"},{"name":"Groovy","color":"bg-[#61d0f2]","borderColor":"border-[#40ccf7]"},{"name":"Markdown","color":"bg-[#61d0f2]","borderColor":"border-[#40ccf7]"},{"name":"Shell","color":"bg-[#61d0f2]","borderColor":"border-[#40ccf7]"},{"name":"WebComponents","color":"bg-[#61d0f2]","borderColor":"border-[#40ccf7]"},{"name":"Babel","color":"bg-[#61d0f2]","borderColor":"border-[#40ccf7]"},{"name":"Storybook","color":"bg-[#61d0f2]","borderColor":"border-[#40ccf7]"},{"name":"AsyncAPI Generator","color":"bg-[#61d0f2]","borderColor":"border-[#40ccf7]"},{"name":"JetBrains","color":"bg-[#61d0f2]","borderColor":"border-[#40ccf7]"},{"name":"IntelliJ IDEA","color":"bg-[#61d0f2]","borderColor":"border-[#40ccf7]"},{"name":"VSCode","color":"bg-[#61d0f2]","borderColor":"border-[#40ccf7]"},{"name":"SmartPaste","color":"bg-[#61d0f2]","borderColor":"border-[#40ccf7]"},{"name":"HTML","color":"bg-[#61d0f2]","borderColor":"border-[#40ccf7]"}]} \ No newline at end of file +{"languages":[{"name":"Go/Golang","color":"bg-[#8ECFDF]","borderColor":"border-[#00AFD9]"},{"name":"Java","color":"bg-[#ECA2A4]","borderColor":"border-[#EC2125]"},{"name":"JavaScript","color":"bg-[#F2F1C7]","borderColor":"border-[#BFBE86]"},{"name":"HTML","color":"bg-[#E2A291]","borderColor":"border-[#E44D26]"},{"name":"C/C++","color":"bg-[#93CDEF]","borderColor":"border-[#0080CC]"},{"name":"C#","color":"bg-[#E3AFE0]","borderColor":"border-[#9B4F96]"},{"name":"Python","color":"bg-[#A8D0EF]","borderColor":"border-[#3878AB]"},{"name":"TypeScript","color":"bg-[#7DBCFE]","borderColor":"border-[#2C78C7]"},{"name":"Kotlin","color":"bg-[#B1ACDF]","borderColor":"border-[#756BD9]"},{"name":"Scala","color":"bg-[#FFA299]","borderColor":"border-[#DF301F]"},{"name":"Markdown","color":"bg-[#BABEBF]","borderColor":"border-[#445B64]"},{"name":"YAML","color":"bg-[#FFB764]","borderColor":"border-[#F1901F]"},{"name":"R","color":"bg-[#84B5ED]","borderColor":"border-[#246BBE]"},{"name":"Ruby","color":"bg-[#FF8289]","borderColor":"border-[#FF000F]"},{"name":"Rust","color":"bg-[#FFB8AA]","borderColor":"border-[#E43716]"},{"name":"Shell","color":"bg-[#87D4FF]","borderColor":"border-[#389ED7]"},{"name":"Groovy","color":"bg-[#B6D5E5]","borderColor":"border-[#609DBC]"}],"technologies":[{"name":"Node.js","color":"bg-[#BDFF67]","borderColor":"border-[#84CE24]"},{"name":"Hermes","color":"bg-[#8AEEBD]","borderColor":"border-[#2AB672]"},{"name":"React JS","color":"bg-[#9FECFA]","borderColor":"border-[#08D8FE]"},{"name":".NET","color":"bg-[#A184FF]","borderColor":"border-[#5026D4]"},{"name":"ASP.NET","color":"bg-[#71C2FB]","borderColor":"border-[#1577BC]"},{"name":"Springboot","color":"bg-[#98E279]","borderColor":"border-[#68BC44]"},{"name":"AWS","color":"bg-[#FF9F59]","borderColor":"border-[#EF6703]"},{"name":"Docker","color":"bg-[#B8E0FF]","borderColor":"border-[#2596ED]"},{"name":"Node-RED","color":"bg-[#FF7474]","borderColor":"border-[#8F0101]"},{"name":"Maven","color":"bg-[#FF6B80]","borderColor":"border-[#CA1A33]"},{"name":"Saas","color":"bg-[#6AB8EC]","borderColor":"border-[#2275AD]"},{"name":"Kubernetes-native","color":"bg-[#D7C7F2]","borderColor":"border-[#A387D2]"},{"name":"Scala","color":"bg-[#D7C7F2]","borderColor":"border-[#A387D2]"},{"name":"Azure","color":"bg-[#4B93FF]","borderColor":"border-[#015ADF]"},{"name":"Jenkins","color":"bg-[#D7C7F2]","borderColor":"border-[#A387D2]"},{"name":"Flask","color":"bg-[#D7C7F2]","borderColor":"border-[#A387D2]"},{"name":"Nest Js","color":"bg-[#E1224E]","borderColor":"border-[#B9012b]"},{"name":"TypeScript","color":"bg-[#61d0f2]","borderColor":"border-[#40ccf7]"},{"name":"Socket.IO","color":"bg-[#61d0f2]","borderColor":"border-[#40ccf7]"},{"name":"Liquid","color":"bg-[#61d0f2]","borderColor":"border-[#40ccf7]"},{"name":"Kotlin","color":"bg-[#61d0f2]","borderColor":"border-[#40ccf7]"},{"name":"Gradle","color":"bg-[#61d0f2]","borderColor":"border-[#40ccf7]"},{"name":"Spring Cloud Streams","color":"bg-[#61d0f2]","borderColor":"border-[#40ccf7]"},{"name":"JHipster JDL","color":"bg-[#61d0f2]","borderColor":"border-[#40ccf7]"},{"name":"Groovy","color":"bg-[#61d0f2]","borderColor":"border-[#40ccf7]"},{"name":"Markdown","color":"bg-[#61d0f2]","borderColor":"border-[#40ccf7]"},{"name":"Shell","color":"bg-[#61d0f2]","borderColor":"border-[#40ccf7]"},{"name":"WebComponents","color":"bg-[#61d0f2]","borderColor":"border-[#40ccf7]"},{"name":"Babel","color":"bg-[#61d0f2]","borderColor":"border-[#40ccf7]"},{"name":"Storybook","color":"bg-[#61d0f2]","borderColor":"border-[#40ccf7]"},{"name":"AsyncAPI Generator","color":"bg-[#61d0f2]","borderColor":"border-[#40ccf7]"},{"name":"VSCode","color":"bg-[#61d0f2]","borderColor":"border-[#40ccf7]"},{"name":"SmartPaste","color":"bg-[#61d0f2]","borderColor":"border-[#40ccf7]"},{"name":"JetBrains","color":"bg-[#61d0f2]","borderColor":"border-[#40ccf7]"},{"name":"IntelliJ IDEA","color":"bg-[#61d0f2]","borderColor":"border-[#40ccf7]"},{"name":"HTML","color":"bg-[#61d0f2]","borderColor":"border-[#40ccf7]"}]} \ No newline at end of file diff --git a/config/tools-automated.json b/config/tools-automated.json index c43ce240bf9..e4d8bdb7790 100644 --- a/config/tools-automated.json +++ b/config/tools-automated.json @@ -420,41 +420,41 @@ "description": "The following is a list of tools that compare AsyncAPI documents.", "toolsList": [ { - "title": "jasyncapicmp", - "description": "Tool for comparing two AsyncAPI versions and evaluating compatibility.", + "title": "AsyncAPI Diff", + "description": "Diff is a library that compares two AsyncAPI Documents and provides information about the differences by pointing out explicitly information like breaking changes.", "links": { - "websiteUrl": "https://siom79.github.io/jasyncapicmp/", - "docsUrl": "https://github.com/siom79/jasyncapicmp", - "repoUrl": "https://github.com/siom79/jasyncapicmp" + "repoUrl": "https://github.com/asyncapi/diff" }, "filters": { - "language": "Java", + "language": "TypeScript", "technology": [ - "Maven" + "TypeScript" ], "categories": [ "compare-tool" ], "hasCommercial": false, - "isAsyncAPIOwner": false + "isAsyncAPIOwner": true } }, { - "title": "AsyncAPI Diff", - "description": "Diff is a library that compares two AsyncAPI Documents and provides information about the differences by pointing out explicitly information like breaking changes.", + "title": "jasyncapicmp", + "description": "Tool for comparing two AsyncAPI versions and evaluating compatibility.", "links": { - "repoUrl": "https://github.com/asyncapi/diff" + "websiteUrl": "https://siom79.github.io/jasyncapicmp/", + "docsUrl": "https://github.com/siom79/jasyncapicmp", + "repoUrl": "https://github.com/siom79/jasyncapicmp" }, "filters": { - "language": "TypeScript", + "language": "Java", "technology": [ - "TypeScript" + "Maven" ], "categories": [ "compare-tool" ], "hasCommercial": false, - "isAsyncAPIOwner": true + "isAsyncAPIOwner": false } } ] @@ -462,25 +462,6 @@ "CLIs": { "description": "The following is a list of tools that you can work with in terminal or do some CI/CD automation.", "toolsList": [ - { - "title": "AsyncAPI CLI", - "description": "One CLI to rule them all. \nThis is a CLI that aims to integrate all AsyncAPI tools that you need while AsyncAPI document development and maintainance. \nYou can use it to generate docs or code, validate AsyncAPI document and event create new documents.\n", - "links": { - "websiteUrl": "https://www.asyncapi.com/tools/cli", - "repoUrl": "https://github.com/asyncapi/cli" - }, - "filters": { - "technology": [ - "TypeScript" - ], - "categories": [ - "others", - "cli" - ], - "hasCommercial": false, - "isAsyncAPIOwner": true - } - }, { "title": "ZenWave SDK", "description": "DDD and API-First for Event-Driven Microservices", @@ -507,6 +488,25 @@ "isAsyncAPIOwner": false } }, + { + "title": "AsyncAPI CLI", + "description": "One CLI to rule them all. \nThis is a CLI that aims to integrate all AsyncAPI tools that you need while AsyncAPI document development and maintainance. \nYou can use it to generate docs or code, validate AsyncAPI document and event create new documents.\n", + "links": { + "websiteUrl": "https://www.asyncapi.com/tools/cli", + "repoUrl": "https://github.com/asyncapi/cli" + }, + "filters": { + "technology": [ + "TypeScript" + ], + "categories": [ + "others", + "cli" + ], + "hasCommercial": false, + "isAsyncAPIOwner": true + } + }, { "title": "AsyncAPI CLI", "description": "One CLI to rule them all. \nThis is a CLI that aims to integrate all AsyncAPI tools that you need while AsyncAPI document development and maintainance. \nYou can use it to generate docs or code, validate AsyncAPI document and event create new documents.\n", @@ -555,18 +555,15 @@ "description": "The following is a list of extensions for different IDEs like VSCode, IntelliJ IDEA and others", "toolsList": [ { - "title": "jAsyncAPI - IDEA plugin", - "description": "Idea plugin for the java-asyncapi - Helps to edit and validate AsyncAPI schemas.", + "title": "asyncapi-preview", + "description": "VSCode extension that enables you to:\n - Preview documentation generated using you AsyncAPI document. It uses AsyncAPI React component under the hood,\n - Create AsyncAPI documents faster using SmartPaste functionality\n", "links": { - "websiteUrl": "https://plugins.jetbrains.com/plugin/15673-asyncapi", - "docsUrl": "https://github.com/asyncapi/jasyncapi-idea-plugin#usage", - "repoUrl": "https://github.com/asyncapi/jasyncapi-idea-plugin" + "repoUrl": "https://github.com/asyncapi/vs-asyncapi-preview" }, "filters": { - "language": "Kotlin", "technology": [ - "JetBrains", - "IntelliJ IDEA" + "VSCode", + "SmartPaste" ], "categories": [ "ide-extension" @@ -576,15 +573,18 @@ } }, { - "title": "asyncapi-preview", - "description": "VSCode extension that enables you to:\n - Preview documentation generated using you AsyncAPI document. It uses AsyncAPI React component under the hood,\n - Create AsyncAPI documents faster using SmartPaste functionality\n", + "title": "jAsyncAPI - IDEA plugin", + "description": "Idea plugin for the java-asyncapi - Helps to edit and validate AsyncAPI schemas.", "links": { - "repoUrl": "https://github.com/asyncapi/vs-asyncapi-preview" + "websiteUrl": "https://plugins.jetbrains.com/plugin/15673-asyncapi", + "docsUrl": "https://github.com/asyncapi/jasyncapi-idea-plugin#usage", + "repoUrl": "https://github.com/asyncapi/jasyncapi-idea-plugin" }, "filters": { + "language": "Kotlin", "technology": [ - "VSCode", - "SmartPaste" + "JetBrains", + "IntelliJ IDEA" ], "categories": [ "ide-extension" @@ -617,15 +617,15 @@ "description": "The following is a list of templates compatible with AsyncAPI Generator. You can use them to generate apps, clients or documentation from your AsyncAPI documents.", "toolsList": [ { - "title": "HTML Template", - "description": "HTML template for AsyncAPI Generator. Use it to generate a static docs. It is using AsyncAPI React component under the hood.", + "title": "Node.js Multiprotocol Template", + "description": "This template generates a server using your AsyncAPI document. It supports multiple different protocols, like Kafka or MQTT. It is designed in the way that generated code is a library and with it's API you can start the server, send messages or register a middleware for listening incoming messages. Runtime message validation included.", "links": { - "repoUrl": "https://github.com/asyncapi/html-template" + "repoUrl": "https://github.com/asyncapi/nodejs-template" }, "filters": { "language": "javascript", "technology": [ - "HTML" + "Node.js" ], "categories": [ "generator-template" @@ -653,15 +653,15 @@ } }, { - "title": "Node.js Multiprotocol Template", - "description": "This template generates a server using your AsyncAPI document. It supports multiple different protocols, like Kafka or MQTT. It is designed in the way that generated code is a library and with it's API you can start the server, send messages or register a middleware for listening incoming messages. Runtime message validation included.", + "title": "HTML Template", + "description": "HTML template for AsyncAPI Generator. Use it to generate a static docs. It is using AsyncAPI React component under the hood.", "links": { - "repoUrl": "https://github.com/asyncapi/nodejs-template" + "repoUrl": "https://github.com/asyncapi/html-template" }, "filters": { "language": "javascript", "technology": [ - "Node.js" + "HTML" ], "categories": [ "generator-template" From 6eb22531795ee3b94e21bce8d0592e133763af28 Mon Sep 17 00:00:00 2001 From: asyncapi-bot Date: Mon, 13 Nov 2023 09:09:47 +0100 Subject: [PATCH 073/134] chore: update meetings.json and newsrooom_videos.json (#2312) Co-authored-by: asyncapi-bot-eve %0ACo-authored-by: asyncapi-bot --- dashboard.json | 115 ++++++++++++++++++++++++++++--------------------- 1 file changed, 65 insertions(+), 50 deletions(-) diff --git a/dashboard.json b/dashboard.json index 7127999f2d0..76196239ee0 100644 --- a/dashboard.json +++ b/dashboard.json @@ -68,7 +68,7 @@ "color": "C2E0C6" } ], - "score": 21.538094156194408 + "score": 21.825268744943667 }, { "id": "I_kwDOGJ23c85V9C3c", @@ -100,7 +100,7 @@ "color": "84b6eb" } ], - "score": 18.953522857451077 + "score": 19.527872034949596 }, { "id": "PR_kwDOBW5R_c5VAjCE", @@ -126,37 +126,6 @@ ], "score": 17.517649913704783 }, - { - "id": "I_kwDOCVQpZM5M_dcV", - "isPR": false, - "isAssigned": true, - "title": "DocsUI: Messages Object output", - "author": "mcturco", - "resourcePath": "/asyncapi/asyncapi-react/issues/618", - "repo": "asyncapi/asyncapi-react", - "labels": [], - "score": 16.36895155870775 - }, - { - "id": "I_kwDODou01c5E_LV0", - "isPR": false, - "isAssigned": false, - "title": "Create onboarding for features of Studio", - "author": "mcturco", - "resourcePath": "/asyncapi/studio/issues/284", - "repo": "asyncapi/studio", - "labels": [ - { - "name": "enhancement", - "color": "a2eeef" - }, - { - "name": "stale", - "color": "ededed" - } - ], - "score": 15.794602381209232 - }, { "id": "PR_kwDOFDnrNc5RUbi_", "isPR": true, @@ -177,7 +146,42 @@ "resourcePath": "/asyncapi/community/pull/897", "repo": "asyncapi/community", "labels": [], + "score": 14.933078614961456 + }, + { + "id": "PR_kwDOBW5R_c5QjwOq", + "isPR": true, + "isAssigned": false, + "title": "feat: add table of contents in case study", + "author": "Shurtu-gal", + "resourcePath": "/asyncapi/website/pull/1673", + "repo": "asyncapi/website", + "labels": [], "score": 14.645904026212197 + }, + { + "id": "PR_kwDOBW5R_c5VmsTR", + "isPR": true, + "isAssigned": true, + "title": "docs: tags in a AsyncAPI document", + "author": "TRohit20", + "resourcePath": "/asyncapi/website/pull/1957", + "repo": "asyncapi/website", + "labels": [ + { + "name": "📑 docs", + "color": "E50E99" + }, + { + "name": "area/docs", + "color": "e50e99" + }, + { + "name": "gsod", + "color": "7B5DB8" + } + ], + "score": 14.07155484871368 } ], "goodFirstIssues": [ @@ -212,36 +216,47 @@ ] }, { - "id": "I_kwDODwv8N851VGrF", - "title": "Unhandled Runtime Error", + "id": "I_kwDOFi_gUM51UQ-5", + "title": "Show a warning if glee can't process a received message", + "isAssigned": true, + "resourcePath": "/asyncapi/glee/issues/558", + "repo": "asyncapi/glee", + "author": "KhudaDad414", + "area": "typescript", + "labels": [ + { + "name": "enhancement", + "color": "a2eeef" + } + ] + }, + { + "id": "I_kwDOCoBobc5zovn3", + "title": "Parser do not validate if channel that is referenced in reply with location has `null` in address", "isAssigned": false, - "resourcePath": "/asyncapi/conference-website/issues/230", - "repo": "asyncapi/conference-website", - "author": "PUNEET-EMM", - "area": "Unknown", + "resourcePath": "/asyncapi/parser-js/issues/876", + "repo": "asyncapi/parser-js", + "author": "derberg", + "area": "typescript", "labels": [ { "name": "bug", "color": "d73a4a" - }, - { - "name": "Hacktoberfest", - "color": "FF8AE2" } ] }, { - "id": "I_kwDOFi_gUM51UQ-5", - "title": "Show a warning if glee can't process a received message", + "id": "I_kwDOCoBobc5zosuk", + "title": "Parser do not validate and throw error when `parameters` are provided but address is null", "isAssigned": false, - "resourcePath": "/asyncapi/glee/issues/558", - "repo": "asyncapi/glee", - "author": "KhudaDad414", + "resourcePath": "/asyncapi/parser-js/issues/875", + "repo": "asyncapi/parser-js", + "author": "derberg", "area": "typescript", "labels": [ { - "name": "enhancement", - "color": "a2eeef" + "name": "bug", + "color": "d73a4a" } ] }, From 37261319d1d4e19bdf63994afa6b7af72f281f51 Mon Sep 17 00:00:00 2001 From: asyncapi-bot Date: Mon, 13 Nov 2023 11:02:46 +0100 Subject: [PATCH 074/134] docs(cli): update latest cli documentation (#2313) --- pages/docs/tools/cli/usage.md | 50 +++++++++++++++++------------------ 1 file changed, 25 insertions(+), 25 deletions(-) diff --git a/pages/docs/tools/cli/usage.md b/pages/docs/tools/cli/usage.md index 4dc6cc33929..38f18e921b9 100644 --- a/pages/docs/tools/cli/usage.md +++ b/pages/docs/tools/cli/usage.md @@ -29,7 +29,7 @@ $ npm install -g @asyncapi/cli $ asyncapi COMMAND running command... $ asyncapi (--version) -@asyncapi/cli/0.59.2 linux-x64 node-v18.18.2 +@asyncapi/cli/0.60.0 linux-x64 node-v18.18.2 $ asyncapi --help [COMMAND] USAGE $ asyncapi COMMAND @@ -93,7 +93,7 @@ EXAMPLES $ asyncapi bundle ./asyncapi.yaml ./features.yaml --base ./asyncapi.yaml --reference-into-components ``` -_See code: [src/commands/bundle.ts](https://github.com/asyncapi/cli/blob/v0.59.2/src/commands/bundle.ts)_ +_See code: [src/commands/bundle.ts](https://github.com/asyncapi/cli/blob/v0.60.0/src/commands/bundle.ts)_ ## `asyncapi config` @@ -107,7 +107,7 @@ DESCRIPTION CLI config settings ``` -_See code: [src/commands/config/index.ts](https://github.com/asyncapi/cli/blob/v0.59.2/src/commands/config/index.ts)_ +_See code: [src/commands/config/index.ts](https://github.com/asyncapi/cli/blob/v0.60.0/src/commands/config/index.ts)_ ## `asyncapi config context` @@ -121,7 +121,7 @@ DESCRIPTION Manage short aliases for full paths to AsyncAPI documents ``` -_See code: [src/commands/config/context/index.ts](https://github.com/asyncapi/cli/blob/v0.59.2/src/commands/config/context/index.ts)_ +_See code: [src/commands/config/context/index.ts](https://github.com/asyncapi/cli/blob/v0.60.0/src/commands/config/context/index.ts)_ ## `asyncapi config context add CONTEXT-NAME SPEC-FILE-PATH` @@ -143,7 +143,7 @@ DESCRIPTION Add a context to the store ``` -_See code: [src/commands/config/context/add.ts](https://github.com/asyncapi/cli/blob/v0.59.2/src/commands/config/context/add.ts)_ +_See code: [src/commands/config/context/add.ts](https://github.com/asyncapi/cli/blob/v0.60.0/src/commands/config/context/add.ts)_ ## `asyncapi config context current` @@ -160,7 +160,7 @@ DESCRIPTION Shows the current context that is being used ``` -_See code: [src/commands/config/context/current.ts](https://github.com/asyncapi/cli/blob/v0.59.2/src/commands/config/context/current.ts)_ +_See code: [src/commands/config/context/current.ts](https://github.com/asyncapi/cli/blob/v0.60.0/src/commands/config/context/current.ts)_ ## `asyncapi config context edit CONTEXT-NAME NEW-SPEC-FILE-PATH` @@ -181,7 +181,7 @@ DESCRIPTION Edit a context in the store ``` -_See code: [src/commands/config/context/edit.ts](https://github.com/asyncapi/cli/blob/v0.59.2/src/commands/config/context/edit.ts)_ +_See code: [src/commands/config/context/edit.ts](https://github.com/asyncapi/cli/blob/v0.60.0/src/commands/config/context/edit.ts)_ ## `asyncapi config context init [CONTEXT-FILE-PATH]` @@ -204,7 +204,7 @@ DESCRIPTION Initialize context ``` -_See code: [src/commands/config/context/init.ts](https://github.com/asyncapi/cli/blob/v0.59.2/src/commands/config/context/init.ts)_ +_See code: [src/commands/config/context/init.ts](https://github.com/asyncapi/cli/blob/v0.60.0/src/commands/config/context/init.ts)_ ## `asyncapi config context list` @@ -221,7 +221,7 @@ DESCRIPTION List all the stored contexts in the store ``` -_See code: [src/commands/config/context/list.ts](https://github.com/asyncapi/cli/blob/v0.59.2/src/commands/config/context/list.ts)_ +_See code: [src/commands/config/context/list.ts](https://github.com/asyncapi/cli/blob/v0.60.0/src/commands/config/context/list.ts)_ ## `asyncapi config context remove CONTEXT-NAME` @@ -241,7 +241,7 @@ DESCRIPTION Delete a context from the store ``` -_See code: [src/commands/config/context/remove.ts](https://github.com/asyncapi/cli/blob/v0.59.2/src/commands/config/context/remove.ts)_ +_See code: [src/commands/config/context/remove.ts](https://github.com/asyncapi/cli/blob/v0.60.0/src/commands/config/context/remove.ts)_ ## `asyncapi config context use CONTEXT-NAME` @@ -261,7 +261,7 @@ DESCRIPTION Set a context as current ``` -_See code: [src/commands/config/context/use.ts](https://github.com/asyncapi/cli/blob/v0.59.2/src/commands/config/context/use.ts)_ +_See code: [src/commands/config/context/use.ts](https://github.com/asyncapi/cli/blob/v0.60.0/src/commands/config/context/use.ts)_ ## `asyncapi config versions` @@ -278,7 +278,7 @@ DESCRIPTION Show versions of AsyncAPI tools used ``` -_See code: [src/commands/config/versions.ts](https://github.com/asyncapi/cli/blob/v0.59.2/src/commands/config/versions.ts)_ +_See code: [src/commands/config/versions.ts](https://github.com/asyncapi/cli/blob/v0.60.0/src/commands/config/versions.ts)_ ## `asyncapi convert [SPEC-FILE]` @@ -300,7 +300,7 @@ DESCRIPTION Convert asyncapi documents older to newer versions ``` -_See code: [src/commands/convert.ts](https://github.com/asyncapi/cli/blob/v0.59.2/src/commands/convert.ts)_ +_See code: [src/commands/convert.ts](https://github.com/asyncapi/cli/blob/v0.60.0/src/commands/convert.ts)_ ## `asyncapi diff OLD NEW` @@ -355,7 +355,7 @@ DESCRIPTION Find diff between two asyncapi files ``` -_See code: [src/commands/diff.ts](https://github.com/asyncapi/cli/blob/v0.59.2/src/commands/diff.ts)_ +_See code: [src/commands/diff.ts](https://github.com/asyncapi/cli/blob/v0.60.0/src/commands/diff.ts)_ ## `asyncapi generate` @@ -369,7 +369,7 @@ DESCRIPTION Generate typed models or other things like clients, applications or docs using AsyncAPI Generator templates. ``` -_See code: [src/commands/generate/index.ts](https://github.com/asyncapi/cli/blob/v0.59.2/src/commands/generate/index.ts)_ +_See code: [src/commands/generate/index.ts](https://github.com/asyncapi/cli/blob/v0.60.0/src/commands/generate/index.ts)_ ## `asyncapi generate fromTemplate ASYNCAPI TEMPLATE` @@ -406,7 +406,7 @@ EXAMPLES $ asyncapi generate fromTemplate asyncapi.yaml @asyncapi/html-template --param version=1.0.0 singleFile=true --output ./docs --force-write ``` -_See code: [src/commands/generate/fromTemplate.ts](https://github.com/asyncapi/cli/blob/v0.59.2/src/commands/generate/fromTemplate.ts)_ +_See code: [src/commands/generate/fromTemplate.ts](https://github.com/asyncapi/cli/blob/v0.60.0/src/commands/generate/fromTemplate.ts)_ ## `asyncapi generate models LANGUAGE FILE` @@ -480,7 +480,7 @@ DESCRIPTION Generates typed models ``` -_See code: [src/commands/generate/models.ts](https://github.com/asyncapi/cli/blob/v0.59.2/src/commands/generate/models.ts)_ +_See code: [src/commands/generate/models.ts](https://github.com/asyncapi/cli/blob/v0.60.0/src/commands/generate/models.ts)_ ## `asyncapi new` @@ -535,7 +535,7 @@ EXAMPLES $ asyncapi new --file-name=my-asyncapi.yml --example=default-example.yml --no-tty - create a new file with a specific name, using one of the examples and without interactive mode ``` -_See code: [src/commands/new/index.ts](https://github.com/asyncapi/cli/blob/v0.59.2/src/commands/new/index.ts)_ +_See code: [src/commands/new/index.ts](https://github.com/asyncapi/cli/blob/v0.60.0/src/commands/new/index.ts)_ ## `asyncapi new file` @@ -590,7 +590,7 @@ EXAMPLES $ asyncapi new --file-name=my-asyncapi.yml --example=default-example.yml --no-tty - create a new file with a specific name, using one of the examples and without interactive mode ``` -_See code: [src/commands/new/file.ts](https://github.com/asyncapi/cli/blob/v0.59.2/src/commands/new/file.ts)_ +_See code: [src/commands/new/file.ts](https://github.com/asyncapi/cli/blob/v0.60.0/src/commands/new/file.ts)_ ## `asyncapi new glee` @@ -608,7 +608,7 @@ DESCRIPTION Creates a new Glee project ``` -_See code: [src/commands/new/glee.ts](https://github.com/asyncapi/cli/blob/v0.59.2/src/commands/new/glee.ts)_ +_See code: [src/commands/new/glee.ts](https://github.com/asyncapi/cli/blob/v0.60.0/src/commands/new/glee.ts)_ ## `asyncapi new project` @@ -626,7 +626,7 @@ DESCRIPTION Creates a new Glee project ``` -_See code: [src/commands/new/project.ts](https://github.com/asyncapi/cli/blob/v0.59.2/src/commands/new/project.ts)_ +_See code: [src/commands/new/project.ts](https://github.com/asyncapi/cli/blob/v0.60.0/src/commands/new/project.ts)_ ## `asyncapi optimize [SPEC-FILE]` @@ -662,7 +662,7 @@ EXAMPLES $ asyncapi optimize ./asyncapi.yaml --optimization=remove-components,reuse-components,move-to-components --output=terminal --no-tty ``` -_See code: [src/commands/optimize.ts](https://github.com/asyncapi/cli/blob/v0.59.2/src/commands/optimize.ts)_ +_See code: [src/commands/optimize.ts](https://github.com/asyncapi/cli/blob/v0.60.0/src/commands/optimize.ts)_ ## `asyncapi start` @@ -676,7 +676,7 @@ DESCRIPTION Start asyncapi studio ``` -_See code: [src/commands/start/index.ts](https://github.com/asyncapi/cli/blob/v0.59.2/src/commands/start/index.ts)_ +_See code: [src/commands/start/index.ts](https://github.com/asyncapi/cli/blob/v0.60.0/src/commands/start/index.ts)_ ## `asyncapi start studio` @@ -695,7 +695,7 @@ DESCRIPTION starts a new local instance of Studio ``` -_See code: [src/commands/start/studio.ts](https://github.com/asyncapi/cli/blob/v0.59.2/src/commands/start/studio.ts)_ +_See code: [src/commands/start/studio.ts](https://github.com/asyncapi/cli/blob/v0.60.0/src/commands/start/studio.ts)_ ## `asyncapi validate [SPEC-FILE]` @@ -722,5 +722,5 @@ DESCRIPTION validate asyncapi file ``` -_See code: [src/commands/validate.ts](https://github.com/asyncapi/cli/blob/v0.59.2/src/commands/validate.ts)_ +_See code: [src/commands/validate.ts](https://github.com/asyncapi/cli/blob/v0.60.0/src/commands/validate.ts)_ From 5ee750ce09a3d6cd6aec39f83a77b6d4c2c7d994 Mon Sep 17 00:00:00 2001 From: asyncapi-bot Date: Mon, 13 Nov 2023 11:55:49 +0100 Subject: [PATCH 075/134] docs(spec): v3.0.0-next-major-spec.16 release (#2314) --- ...3.0.0-next-major-spec.15.md => v3.0.0-next-major-spec.16.md} | 2 +- public/_redirects | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) rename pages/docs/reference/specification/{v3.0.0-next-major-spec.15.md => v3.0.0-next-major-spec.16.md} (99%) diff --git a/pages/docs/reference/specification/v3.0.0-next-major-spec.15.md b/pages/docs/reference/specification/v3.0.0-next-major-spec.16.md similarity index 99% rename from pages/docs/reference/specification/v3.0.0-next-major-spec.15.md rename to pages/docs/reference/specification/v3.0.0-next-major-spec.16.md index 7685ac566d6..eae441b8cae 100644 --- a/pages/docs/reference/specification/v3.0.0-next-major-spec.15.md +++ b/pages/docs/reference/specification/v3.0.0-next-major-spec.16.md @@ -1529,7 +1529,7 @@ Field Name | Type | Description schemas | Map[`string`, [Multi Format Schema Object](#multiFormatSchemaObject) \| [Schema Object](#schemaObject) \| [Reference Object](#referenceObject)] | An object to hold reusable [Schema Object](#schemaObject). If this is a [Schema Object](#schemaObject), then the `schemaFormat` will be assumed to be "application/vnd.aai.asyncapi+json;version=`asyncapi`" where the version is equal to the [AsyncAPI Version String](#A2SVersionString). servers | Map[`string`, [Server Object](#serverObject) \| [Reference Object](#referenceObject)] | An object to hold reusable [Server Objects](#serverObject). channels | Map[`string`, [Channel Object](#channelObject) \| [Reference Object](#referenceObject)] | An object to hold reusable [Channel Objects](#channelObject). - operations | Map[`string`, [Operation Item Object](#operationObject) \| [Reference Object](#referenceObject)] | An object to hold reusable [Operation Item Objects](#operationObject). + operations | Map[`string`, [Operation Object](#operationObject) \| [Reference Object](#referenceObject)] | An object to hold reusable [Operation Objects](#operationObject). messages | Map[`string`, [Message Object](#messageObject) \| [Reference Object](#referenceObject)] | An object to hold reusable [Message Objects](#messageObject). securitySchemes| Map[`string`, [Security Scheme Object](#securitySchemeObject) \| [Reference Object](#referenceObject)] | An object to hold reusable [Security Scheme Objects](#securitySchemeObject). serverVariables | Map[`string`, [Server Variable Object](#serverVariableObject) \| [Reference Object](#referenceObject)] | An object to hold reusable [Server Variable Objects](#serverVariableObject). diff --git a/public/_redirects b/public/_redirects index 46ecc4f0e7a..71d94dc1fbc 100644 --- a/public/_redirects +++ b/public/_redirects @@ -23,7 +23,7 @@ https://www.asyncapi.io/* https://www.asyncapi.com/:splat 301! # LATEST-SPEC-REDIRECTION:END # SPEC-REDIRECTION:START -/docs/reference/specification/3.0.0-next-major-spec.15 /docs/reference/specification/v3.0.0-next-major-spec.15 302! +/docs/reference/specification/3.0.0-next-major-spec.16 /docs/reference/specification/v3.0.0-next-major-spec.16 302! /docs/reference/specification/2.6.0 /docs/reference/specification/v2.6.0 302! /docs/reference/specification/2.5.0 /docs/reference/specification/v2.5.0 302! /docs/reference/specification/2.4.0 /docs/reference/specification/v2.4.0 302! From 7261c712f69d81ce3d82b4b55b0cd2e8c71f7eed Mon Sep 17 00:00:00 2001 From: Atharv Chandratre Date: Tue, 14 Nov 2023 13:29:11 -0600 Subject: [PATCH 076/134] test: fixing flakiness of scripts/build-newsroom-videos.cy.js (#2300) Co-authored-by: Akshat Nema <76521428+akshatnema@users.noreply.github.com> --- cypress/test/scripts/build-newsroom-videos.cy.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cypress/test/scripts/build-newsroom-videos.cy.js b/cypress/test/scripts/build-newsroom-videos.cy.js index ec27f76981c..d1789ec50e9 100644 --- a/cypress/test/scripts/build-newsroom-videos.cy.js +++ b/cypress/test/scripts/build-newsroom-videos.cy.js @@ -44,7 +44,7 @@ describe('Newsroom Videos', () => { }).as('getYoutubeVideos'); // Manually trigger the function - await buildNewsroomVideos().then((videoData) => { + cy.invoke(buildNewsroomVideos()).then((videoData) => { expect(videoData).to.exist; }); }); From 926c87bfe18b32b998d14bcefc530ae50803b7d3 Mon Sep 17 00:00:00 2001 From: asyncapi-bot Date: Wed, 15 Nov 2023 01:27:35 +0100 Subject: [PATCH 077/134] chore: update meetings.json and newsrooom_videos.json (#2319) --- config/newsroom_videos.json | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/config/newsroom_videos.json b/config/newsroom_videos.json index 40a17f976d6..86f29445b5c 100644 --- a/config/newsroom_videos.json +++ b/config/newsroom_videos.json @@ -1,4 +1,10 @@ [ + { + "image_url": "https://i.ytimg.com/vi/KDort611FNg/hqdefault.jpg", + "title": "Community Meeting(November 14th, 2023)", + "description": "https://github.com/asyncapi/community/issues/917.", + "videoId": "KDort611FNg" + }, { "image_url": "https://i.ytimg.com/vi/Vm4ZKFb2PVE/hqdefault.jpg", "title": "Community Meeting(October 31th, 2023)", @@ -22,11 +28,5 @@ "title": "Hacktoberfest (October 6th, 2023)", "description": "https://github.com/asyncapi/community/issues/894.", "videoId": "KTnFoXY_evs" - }, - { - "image_url": "https://i.ytimg.com/vi/qjMojQ-fFew/hqdefault.jpg", - "title": "Spec 3.0 docs meeting (September 28, 2023)", - "description": "https://github.com/asyncapi/community/issues/885.", - "videoId": "qjMojQ-fFew" } ] \ No newline at end of file From 72ebf77e442d9f6d727c94feef8c92ab3c2a873c Mon Sep 17 00:00:00 2001 From: asyncapi-bot Date: Wed, 15 Nov 2023 10:07:52 +0100 Subject: [PATCH 078/134] docs(extensions): update latest extensions documentation (#2320) --- config/edit-page-config.json | 38 ++++++++++++--------- pages/docs/reference/extensions/_section.md | 4 +++ pages/docs/reference/extensions/x.md | 31 +++++++++++++++++ 3 files changed, 56 insertions(+), 17 deletions(-) create mode 100644 pages/docs/reference/extensions/_section.md create mode 100644 pages/docs/reference/extensions/x.md diff --git a/config/edit-page-config.json b/config/edit-page-config.json index a622b600fac..dbd5fa50b9e 100644 --- a/config/edit-page-config.json +++ b/config/edit-page-config.json @@ -1,18 +1,22 @@ [ - { - "value": "/tools/generator", - "href": "https://github.com/asyncapi/generator/tree/master/docs" - }, - { - "value": "reference/specification/", - "href": "https://github.com/asyncapi/spec/blob/master/spec/asyncapi.md" - }, - { - "value":"/tools/cli", - "href":"https://github.com/asyncapi/cli/tree/master/docs" - }, - { - "value": "", - "href": "https://github.com/asyncapi/website/blob/master/pages" - } -] + { + "value": "/tools/generator", + "href": "https://github.com/asyncapi/generator/tree/master/docs" + }, + { + "value": "reference/specification/", + "href": "https://github.com/asyncapi/spec/blob/master/spec/asyncapi.md" + }, + { + "value": "/tools/cli", + "href": "https://github.com/asyncapi/cli/tree/master/docs" + }, + { + "value": "", + "href": "https://github.com/asyncapi/website/blob/master/pages" + }, + { + "value": "reference/extensions/", + "href": "https://github.com/asyncapi/extensions-catalog/tree/master/extensions" + } +] \ No newline at end of file diff --git a/pages/docs/reference/extensions/_section.md b/pages/docs/reference/extensions/_section.md new file mode 100644 index 00000000000..5e4249cbc90 --- /dev/null +++ b/pages/docs/reference/extensions/_section.md @@ -0,0 +1,4 @@ +--- +title: Extensions +weight: 10 +--- \ No newline at end of file diff --git a/pages/docs/reference/extensions/x.md b/pages/docs/reference/extensions/x.md new file mode 100644 index 00000000000..4950e2b395c --- /dev/null +++ b/pages/docs/reference/extensions/x.md @@ -0,0 +1,31 @@ +--- +title: 'x' +weight: 11 +--- + +# Twitter Extension +This document defines how to use `twitter` extension in AsyncAPI documents. + +## Overview +This extension allows you to provide the Twitter username of the account representing the team/company of the API. + +## Extension Definition + +### Type: String + +Name of the Twitter username. + +## Extension Location + +This extension can be used in the following locations: +- [Info Object](https://www.asyncapi.com/docs/reference/specification/v2.6.0#infoObject) + +## Example + +```yaml +asyncapi: '2.6.0' +info + title: Strretlights Kafka API + version: '1.0.0' + x-twitter: StreetLightData +``` From 5670fd1dd9b98aa8285b499ce0ad1cd0dd718181 Mon Sep 17 00:00:00 2001 From: Lukasz Gornicki Date: Wed, 15 Nov 2023 10:16:26 +0100 Subject: [PATCH 079/134] chore: revert "docs(extensions): update latest extensions documentation" This reverts commit 72ebf77e442d9f6d727c94feef8c92ab3c2a873c. --- config/edit-page-config.json | 38 +++++++++------------ pages/docs/reference/extensions/_section.md | 4 --- pages/docs/reference/extensions/x.md | 31 ----------------- 3 files changed, 17 insertions(+), 56 deletions(-) delete mode 100644 pages/docs/reference/extensions/_section.md delete mode 100644 pages/docs/reference/extensions/x.md diff --git a/config/edit-page-config.json b/config/edit-page-config.json index dbd5fa50b9e..a622b600fac 100644 --- a/config/edit-page-config.json +++ b/config/edit-page-config.json @@ -1,22 +1,18 @@ [ - { - "value": "/tools/generator", - "href": "https://github.com/asyncapi/generator/tree/master/docs" - }, - { - "value": "reference/specification/", - "href": "https://github.com/asyncapi/spec/blob/master/spec/asyncapi.md" - }, - { - "value": "/tools/cli", - "href": "https://github.com/asyncapi/cli/tree/master/docs" - }, - { - "value": "", - "href": "https://github.com/asyncapi/website/blob/master/pages" - }, - { - "value": "reference/extensions/", - "href": "https://github.com/asyncapi/extensions-catalog/tree/master/extensions" - } -] \ No newline at end of file + { + "value": "/tools/generator", + "href": "https://github.com/asyncapi/generator/tree/master/docs" + }, + { + "value": "reference/specification/", + "href": "https://github.com/asyncapi/spec/blob/master/spec/asyncapi.md" + }, + { + "value":"/tools/cli", + "href":"https://github.com/asyncapi/cli/tree/master/docs" + }, + { + "value": "", + "href": "https://github.com/asyncapi/website/blob/master/pages" + } +] diff --git a/pages/docs/reference/extensions/_section.md b/pages/docs/reference/extensions/_section.md deleted file mode 100644 index 5e4249cbc90..00000000000 --- a/pages/docs/reference/extensions/_section.md +++ /dev/null @@ -1,4 +0,0 @@ ---- -title: Extensions -weight: 10 ---- \ No newline at end of file diff --git a/pages/docs/reference/extensions/x.md b/pages/docs/reference/extensions/x.md deleted file mode 100644 index 4950e2b395c..00000000000 --- a/pages/docs/reference/extensions/x.md +++ /dev/null @@ -1,31 +0,0 @@ ---- -title: 'x' -weight: 11 ---- - -# Twitter Extension -This document defines how to use `twitter` extension in AsyncAPI documents. - -## Overview -This extension allows you to provide the Twitter username of the account representing the team/company of the API. - -## Extension Definition - -### Type: String - -Name of the Twitter username. - -## Extension Location - -This extension can be used in the following locations: -- [Info Object](https://www.asyncapi.com/docs/reference/specification/v2.6.0#infoObject) - -## Example - -```yaml -asyncapi: '2.6.0' -info - title: Strretlights Kafka API - version: '1.0.0' - x-twitter: StreetLightData -``` From 21ebc288c2a20d6a42f3957e76a90bff2ddaba42 Mon Sep 17 00:00:00 2001 From: asyncapi-bot Date: Wed, 15 Nov 2023 16:46:17 +0100 Subject: [PATCH 080/134] ci: update of files from global .github repo (#2322) --- .github/workflows/automerge.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/automerge.yml b/.github/workflows/automerge.yml index 9253675cd66..116b80652db 100644 --- a/.github/workflows/automerge.yml +++ b/.github/workflows/automerge.yml @@ -45,7 +45,7 @@ jobs: env: GITHUB_TOKEN: "${{ secrets.GH_TOKEN }}" GITHUB_LOGIN: asyncapi-bot - MERGE_LABELS: "" + MERGE_LABELS: "!do-not-merge" MERGE_METHOD: "squash" MERGE_COMMIT_MESSAGE: "{pullRequest.title} (#{pullRequest.number})" MERGE_RETRIES: "20" From e43228a3405f90dd9df5f45b432573c48220a72e Mon Sep 17 00:00:00 2001 From: asyncapi-bot Date: Thu, 16 Nov 2023 10:33:55 +0100 Subject: [PATCH 081/134] docs(spec): update latest specification (#2324) --- pages/docs/reference/specification/v2.6.0.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pages/docs/reference/specification/v2.6.0.md b/pages/docs/reference/specification/v2.6.0.md index 35262c5e870..f1dacea356e 100644 --- a/pages/docs/reference/specification/v2.6.0.md +++ b/pages/docs/reference/specification/v2.6.0.md @@ -51,7 +51,7 @@ A consumer is a type of application, connected to a [server](#definitionsServer) ### Message -A message is the mechanism by which information is exchanged via a channel between [servers](#definitionsServer) and applications. A message MUST contain a payload and MAY also contain headers. The headers MAY be subdivided into [protocol](#definitionsProtocol)-defined headers and header properties defined by the application which can act as supporting metadata. The payload contains the data, defined by the application, which MUST be serialized into a format (JSON, XML, Avro, binary, etc.). Since a message is a generic mechanism, it can support multiple interaction patterns such as event, command, request, or response. +A message is the mechanism by which information is exchanged via a channel between [servers](#definitionsServer) and applications. A message MAY contain a payload and MAY also contain headers. The headers MAY be subdivided into [protocol](#definitionsProtocol)-defined headers and header properties defined by the application which can act as supporting metadata. The payload contains the data, defined by the application, which MUST be serialized into a format (JSON, XML, Avro, binary, etc.). Since a message is a generic mechanism, it can support multiple interaction patterns such as event, command, request, or response. ### Channel From 111e8c4fb02e42b2e7f704ac3c8a7d1bf94b37c2 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 16 Nov 2023 20:02:11 +0100 Subject: [PATCH 082/134] chore(deps): bump sharp and @netlify/ipx (#2326) --- package-lock.json | 1779 ++++++++++++++++++++++++++++++++------------- 1 file changed, 1293 insertions(+), 486 deletions(-) diff --git a/package-lock.json b/package-lock.json index f61c10f7f71..b1873089983 100644 --- a/package-lock.json +++ b/package-lock.json @@ -672,10 +672,10 @@ } } }, - "node_modules/@fastify/busboy": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/@fastify/busboy/-/busboy-2.0.0.tgz", - "integrity": "sha512-JUFJad5lv7jxj926GPgymrWQxxjPYuJNiNjNMzqT+HiuP6Vl3dk5xzG+8sTX96np0ZAluvaMzPsjhHZ5rNuNQQ==", + "node_modules/@fastify/accept-negotiator": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@fastify/accept-negotiator/-/accept-negotiator-1.1.0.tgz", + "integrity": "sha512-OIHZrb2ImZ7XG85HXOONLcJWGosv7sIvM2ifAPQVhg9Lv7qdmMBNVaai4QTdyuaqbKM5eO6sLSQOYI7wEQeCJQ==", "dev": true, "engines": { "node": ">=14" @@ -1549,21 +1549,34 @@ } }, "node_modules/@netlify/ipx": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/@netlify/ipx/-/ipx-1.4.0.tgz", - "integrity": "sha512-Ibqg1W41EVMHNT/W6JSDUyxjhcxsbEL9vL9ZaNjn9tVKnDYxJ8JqRTwSbzfns+K+M3FLqoC4PLW32qW+vT1pKQ==", + "version": "1.4.6", + "resolved": "https://registry.npmjs.org/@netlify/ipx/-/ipx-1.4.6.tgz", + "integrity": "sha512-rnKR2LXhtnflitPX9CQIv+XSrNlYIqGsV54xrXifhbtHHjCjCw/lixsi8qwAXqEIgZBC9b4Y7prhHqRtC4oIjw==", "dev": true, "dependencies": { - "@netlify/functions": "^1.4.0", + "@netlify/functions": "^2.4.0", "etag": "^1.8.1", "fs-extra": "^11.0.0", - "ipx": "^0.9.11", + "ipx": "^1.3.1", "micromatch": "^4.0.5", - "mkdirp": "^1.0.4", + "mkdirp": "^3.0.0", "murmurhash": "^2.0.0", "node-fetch": "^2.0.0", "ufo": "^1.0.0", - "unstorage": "^1.0.0" + "unstorage": "1.9.0" + } + }, + "node_modules/@netlify/ipx/node_modules/@netlify/functions": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/@netlify/functions/-/functions-2.4.0.tgz", + "integrity": "sha512-dIqhdj5u4Lu/8qbYwtYpn8NfvIyPHbSTV2lAP4ocL+iwC9As06AXT0wa/xOpO2vRWJa0IMxdZaqCPnkyHlHiyg==", + "dev": true, + "dependencies": { + "@netlify/serverless-functions-api": "1.11.0", + "is-promise": "^4.0.0" + }, + "engines": { + "node": ">=14.0.0" } }, "node_modules/@netlify/ipx/node_modules/fs-extra": { @@ -1580,6 +1593,15 @@ "node": ">=14.14" } }, + "node_modules/@netlify/node-cookies": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/@netlify/node-cookies/-/node-cookies-0.1.0.tgz", + "integrity": "sha512-OAs1xG+FfLX0LoRASpqzVntVV/RpYkgpI0VrUnw2u0Q1qiZUzcPffxRK8HF3gc4GjuhG5ahOEMJ9bswBiZPq0g==", + "dev": true, + "engines": { + "node": "^14.16.0 || >=16.0.0" + } + }, "node_modules/@netlify/plugin-nextjs": { "version": "4.37.2", "resolved": "https://registry.npmjs.org/@netlify/plugin-nextjs/-/plugin-nextjs-4.37.2.tgz", @@ -1754,6 +1776,19 @@ "node": ">=8" } }, + "node_modules/@netlify/serverless-functions-api": { + "version": "1.11.0", + "resolved": "https://registry.npmjs.org/@netlify/serverless-functions-api/-/serverless-functions-api-1.11.0.tgz", + "integrity": "sha512-3splAsr2CekL7VTwgo6yTvzD2+f269/s+TJafYazonqMNNo31yzvFxD5HpLtni4DNE1ppymVKZ4X/rLN3yl0vQ==", + "dev": true, + "dependencies": { + "@netlify/node-cookies": "^0.1.0", + "urlpattern-polyfill": "8.0.2" + }, + "engines": { + "node": "^14.18.0 || >=16.0.0" + } + }, "node_modules/@next/env": { "version": "12.3.1", "resolved": "https://registry.npmjs.org/@next/env/-/env-12.3.1.tgz", @@ -2047,6 +2082,307 @@ "@octokit/openapi-types": "^11.2.0" } }, + "node_modules/@parcel/watcher": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/@parcel/watcher/-/watcher-2.3.0.tgz", + "integrity": "sha512-pW7QaFiL11O0BphO+bq3MgqeX/INAk9jgBldVDYjlQPO4VddoZnF22TcF9onMhnLVHuNqBJeRf+Fj7eezi/+rQ==", + "dev": true, + "hasInstallScript": true, + "dependencies": { + "detect-libc": "^1.0.3", + "is-glob": "^4.0.3", + "micromatch": "^4.0.5", + "node-addon-api": "^7.0.0" + }, + "engines": { + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + }, + "optionalDependencies": { + "@parcel/watcher-android-arm64": "2.3.0", + "@parcel/watcher-darwin-arm64": "2.3.0", + "@parcel/watcher-darwin-x64": "2.3.0", + "@parcel/watcher-freebsd-x64": "2.3.0", + "@parcel/watcher-linux-arm-glibc": "2.3.0", + "@parcel/watcher-linux-arm64-glibc": "2.3.0", + "@parcel/watcher-linux-arm64-musl": "2.3.0", + "@parcel/watcher-linux-x64-glibc": "2.3.0", + "@parcel/watcher-linux-x64-musl": "2.3.0", + "@parcel/watcher-win32-arm64": "2.3.0", + "@parcel/watcher-win32-ia32": "2.3.0", + "@parcel/watcher-win32-x64": "2.3.0" + } + }, + "node_modules/@parcel/watcher-android-arm64": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/@parcel/watcher-android-arm64/-/watcher-android-arm64-2.3.0.tgz", + "integrity": "sha512-f4o9eA3dgk0XRT3XhB0UWpWpLnKgrh1IwNJKJ7UJek7eTYccQ8LR7XUWFKqw6aEq5KUNlCcGvSzKqSX/vtWVVA==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/watcher-darwin-arm64": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/@parcel/watcher-darwin-arm64/-/watcher-darwin-arm64-2.3.0.tgz", + "integrity": "sha512-mKY+oijI4ahBMc/GygVGvEdOq0L4DxhYgwQqYAz/7yPzuGi79oXrZG52WdpGA1wLBPrYb0T8uBaGFo7I6rvSKw==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/watcher-darwin-x64": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/@parcel/watcher-darwin-x64/-/watcher-darwin-x64-2.3.0.tgz", + "integrity": "sha512-20oBj8LcEOnLE3mgpy6zuOq8AplPu9NcSSSfyVKgfOhNAc4eF4ob3ldj0xWjGGbOF7Dcy1Tvm6ytvgdjlfUeow==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/watcher-freebsd-x64": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/@parcel/watcher-freebsd-x64/-/watcher-freebsd-x64-2.3.0.tgz", + "integrity": "sha512-7LftKlaHunueAEiojhCn+Ef2CTXWsLgTl4hq0pkhkTBFI3ssj2bJXmH2L67mKpiAD5dz66JYk4zS66qzdnIOgw==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/watcher-linux-arm-glibc": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-arm-glibc/-/watcher-linux-arm-glibc-2.3.0.tgz", + "integrity": "sha512-1apPw5cD2xBv1XIHPUlq0cO6iAaEUQ3BcY0ysSyD9Kuyw4MoWm1DV+W9mneWI+1g6OeP6dhikiFE6BlU+AToTQ==", + "cpu": [ + "arm" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/watcher-linux-arm64-glibc": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-arm64-glibc/-/watcher-linux-arm64-glibc-2.3.0.tgz", + "integrity": "sha512-mQ0gBSQEiq1k/MMkgcSB0Ic47UORZBmWoAWlMrTW6nbAGoLZP+h7AtUM7H3oDu34TBFFvjy4JCGP43JlylkTQA==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/watcher-linux-arm64-musl": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-arm64-musl/-/watcher-linux-arm64-musl-2.3.0.tgz", + "integrity": "sha512-LXZAExpepJew0Gp8ZkJ+xDZaTQjLHv48h0p0Vw2VMFQ8A+RKrAvpFuPVCVwKJCr5SE+zvaG+Etg56qXvTDIedw==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/watcher-linux-x64-glibc": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-x64-glibc/-/watcher-linux-x64-glibc-2.3.0.tgz", + "integrity": "sha512-P7Wo91lKSeSgMTtG7CnBS6WrA5otr1K7shhSjKHNePVmfBHDoAOHYRXgUmhiNfbcGk0uMCHVcdbfxtuiZCHVow==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/watcher-linux-x64-musl": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-x64-musl/-/watcher-linux-x64-musl-2.3.0.tgz", + "integrity": "sha512-+kiRE1JIq8QdxzwoYY+wzBs9YbJ34guBweTK8nlzLKimn5EQ2b2FSC+tAOpq302BuIMjyuUGvBiUhEcLIGMQ5g==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/watcher-wasm": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/@parcel/watcher-wasm/-/watcher-wasm-2.3.0.tgz", + "integrity": "sha512-ejBAX8H0ZGsD8lSICDNyMbSEtPMWgDL0WFCt/0z7hyf5v8Imz4rAM8xY379mBsECkq/Wdqa5WEDLqtjZ+6NxfA==", + "bundleDependencies": [ + "napi-wasm" + ], + "dev": true, + "dependencies": { + "is-glob": "^4.0.3", + "micromatch": "^4.0.5", + "napi-wasm": "^1.1.0" + }, + "engines": { + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/watcher-wasm/node_modules/napi-wasm": { + "version": "1.1.0", + "dev": true, + "inBundle": true, + "license": "MIT" + }, + "node_modules/@parcel/watcher-win32-arm64": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/@parcel/watcher-win32-arm64/-/watcher-win32-arm64-2.3.0.tgz", + "integrity": "sha512-35gXCnaz1AqIXpG42evcoP2+sNL62gZTMZne3IackM+6QlfMcJLy3DrjuL6Iks7Czpd3j4xRBzez3ADCj1l7Aw==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/watcher-win32-ia32": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/@parcel/watcher-win32-ia32/-/watcher-win32-ia32-2.3.0.tgz", + "integrity": "sha512-FJS/IBQHhRpZ6PiCjFt1UAcPr0YmCLHRbTc00IBTrelEjlmmgIVLeOx4MSXzx2HFEy5Jo5YdhGpxCuqCyDJ5ow==", + "cpu": [ + "ia32" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/watcher-win32-x64": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/@parcel/watcher-win32-x64/-/watcher-win32-x64-2.3.0.tgz", + "integrity": "sha512-dLx+0XRdMnVI62kU3wbXvbIRhLck4aE28bIGKbRGS7BJNt54IIj9+c/Dkqb+7DJEbHUZAX1bwaoM8PqVlHJmCA==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, "node_modules/@slack/logger": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/@slack/logger/-/logger-3.0.0.tgz", @@ -2704,6 +3040,12 @@ "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz", "integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==" }, + "node_modules/b4a": { + "version": "1.6.4", + "resolved": "https://registry.npmjs.org/b4a/-/b4a-1.6.4.tgz", + "integrity": "sha512-fpWrvyVHEKyeEvbKZTVOeZF3VSKKWtJxFIxX/jaVPf+cLbGUSitjb49pHLqPV2BUNNZ0LcoeEGfE/YCpyDYHIw==", + "dev": true + }, "node_modules/babel-code-frame": { "version": "6.26.0", "resolved": "https://registry.npmjs.org/babel-code-frame/-/babel-code-frame-6.26.0.tgz", @@ -3184,6 +3526,15 @@ "node": ">=8" } }, + "node_modules/citty": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/citty/-/citty-0.1.4.tgz", + "integrity": "sha512-Q3bK1huLxzQrvj7hImJ7Z1vKYJRPQCDnd0EjXfHMidcjecGOMuLrmuQmtWmFkuKLcMThlGh1yCKG8IEc6VeNXQ==", + "dev": true, + "dependencies": { + "consola": "^3.2.3" + } + }, "node_modules/classnames": { "version": "2.2.6", "resolved": "https://registry.npmjs.org/classnames/-/classnames-2.2.6.tgz", @@ -3546,10 +3897,13 @@ "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" }, "node_modules/consola": { - "version": "2.15.3", - "resolved": "https://registry.npmjs.org/consola/-/consola-2.15.3.tgz", - "integrity": "sha512-9vAdYbHj6x2fLKC4+oPH0kFzY/orMZyG2Aj+kNylHxKGJ/Ed4dpNyAQYwJOdqO4zdM7XpVHmyejQDcQHrnuXbw==", - "dev": true + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/consola/-/consola-3.2.3.tgz", + "integrity": "sha512-I5qxpzLv+sJhTVEoLYNcTW+bThDCPsit0vLNKShZx6rLtpilNpmmeTPaeqJb9ZE9dV3DGaeby6Vuhrw38WjeyQ==", + "dev": true, + "engines": { + "node": "^14.18.0 || >=16.10.0" + } }, "node_modules/convert-source-map": { "version": "1.9.0", @@ -4516,9 +4870,9 @@ "integrity": "sha512-Y2caI5+ZwS5c3RiNDJ6u53VhQHv+hHKwhkI1iHvceKUHw9Df6EK2zRLfjejRgMuCuxK7PfSWIMwWecceVvThjQ==" }, "node_modules/defu": { - "version": "6.1.2", - "resolved": "https://registry.npmjs.org/defu/-/defu-6.1.2.tgz", - "integrity": "sha512-+uO4+qr7msjNNWKYPHqN/3+Dx3NFkmIzayk2L1MyZQlvgZb/J1A0fo410dpKrN2SnqFjt8n4JL8fDJE0wIgjFQ==", + "version": "6.1.3", + "resolved": "https://registry.npmjs.org/defu/-/defu-6.1.3.tgz", + "integrity": "sha512-Vy2wmG3NTkmHNg/kzpuvHhkqeIx3ODWqasgCRbKtbXEN0G+HpEEv9BtJLp7ZG1CZloFaC41Ah3ZFbq7aqCqMeQ==", "dev": true }, "node_modules/delaunator": { @@ -4584,12 +4938,15 @@ } }, "node_modules/detect-libc": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-2.0.1.tgz", - "integrity": "sha512-463v3ZeIrcWtdgIg6vI6XUncguvr2TnGl4SzDXinkt9mSLpBJKXT3mW6xT3VQdDN11+WVs29pgvivTc4Lp8v+w==", + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-1.0.3.tgz", + "integrity": "sha512-pGjwhsmsp4kL2RTz08wcOlGN83otlqHeD/Z5T8GXZB+/YcpQ/dgo+lbU8ZsGxV0HIvqqxo9l7mqYwyYMD9bKDg==", "dev": true, + "bin": { + "detect-libc": "bin/detect-libc.js" + }, "engines": { - "node": ">=8" + "node": ">=0.10" } }, "node_modules/detective": { @@ -5052,6 +5409,12 @@ "integrity": "sha512-NCe8qxnZFARSHGztGMZOO/PC1qa5MIFB5Hp66WdzbCRAz8U8US3bx1UTgLS49efBQPcUtO9gf5oVEY8o7y/7Kg==", "dev": true }, + "node_modules/fast-fifo": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/fast-fifo/-/fast-fifo-1.3.2.tgz", + "integrity": "sha512-/d9sfos4yxzpwkDkuN7k2SqFKtYNmCTzgfEpz82x34IM9/zc8KGxQoXg1liNC/izpRM/MBdt44Nmx41ZWqk+FQ==", + "dev": true + }, "node_modules/fast-glob": { "version": "3.2.12", "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.12.tgz", @@ -5239,12 +5602,6 @@ "node": ">=10" } }, - "node_modules/fs-memo": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/fs-memo/-/fs-memo-1.2.0.tgz", - "integrity": "sha512-YEexkCpL4j03jn5SxaMHqcO6IuWuqm8JFUYhyCep7Ao89JIYmB8xoKhK7zXXJ9cCaNXpyNH5L3QtAmoxjoHW2w==", - "dev": true - }, "node_modules/fs.realpath": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", @@ -5329,13 +5686,10 @@ } }, "node_modules/get-port-please": { - "version": "2.6.1", - "resolved": "https://registry.npmjs.org/get-port-please/-/get-port-please-2.6.1.tgz", - "integrity": "sha512-4PDSrL6+cuMM1xs6w36ZIkaKzzE0xzfVBCfebHIJ3FE8iB9oic/ECwPw3iNiD4h1AoJ5XLLBhEviFAVrZsDC5A==", - "dev": true, - "dependencies": { - "fs-memo": "^1.2.0" - } + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/get-port-please/-/get-port-please-3.1.1.tgz", + "integrity": "sha512-3UBAyM3u4ZBVYDsxOQfJDxEa6XTbpBDrOjp4mf7ExFRt5BKs/QywQQiJsh2B+hxcZLSapWqCRvElUe8DnKcFHA==", + "dev": true }, "node_modules/get-stream": { "version": "5.2.0", @@ -5562,20 +5916,27 @@ } }, "node_modules/h3": { - "version": "1.6.6", - "resolved": "https://registry.npmjs.org/h3/-/h3-1.6.6.tgz", - "integrity": "sha512-DWu2s11OuuO9suEkX99dXaJoxd1RgPXiM4iDmLdrhGV63GLoav13f3Kdd5/Rw7xNKzhzn2+F2dleQjG66SnMPQ==", + "version": "1.8.2", + "resolved": "https://registry.npmjs.org/h3/-/h3-1.8.2.tgz", + "integrity": "sha512-1Ca0orJJlCaiFY68BvzQtP2lKLk46kcLAxVM8JgYbtm2cUg6IY7pjpYgWMwUvDO9QI30N5JAukOKoT8KD3Q0PQ==", "dev": true, "dependencies": { "cookie-es": "^1.0.0", "defu": "^6.1.2", - "destr": "^1.2.2", - "iron-webcrypto": "^0.7.0", - "radix3": "^1.0.1", - "ufo": "^1.1.2", - "uncrypto": "^0.1.2" + "destr": "^2.0.1", + "iron-webcrypto": "^0.10.1", + "radix3": "^1.1.0", + "ufo": "^1.3.0", + "uncrypto": "^0.1.3", + "unenv": "^1.7.4" } }, + "node_modules/h3/node_modules/destr": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/destr/-/destr-2.0.2.tgz", + "integrity": "sha512-65AlobnZMiCET00KaFFjUefxDX0khFA/E4myqZ7a6Sq1yZtR8+FVIvilVX66vF2uobSumxooYZChiRPCKNqhmg==", + "dev": true + }, "node_modules/has": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", @@ -6203,56 +6564,45 @@ "url": "https://opencollective.com/ioredis" } }, - "node_modules/ip-regex": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/ip-regex/-/ip-regex-5.0.0.tgz", - "integrity": "sha512-fOCG6lhoKKakwv+C6KdsOnGvgXnmgfmp0myi3bcNwj3qfwPAxRKWEuFhvEFF7ceYIz6+1jRZ+yguLFAmUNPEfw==", - "dev": true, - "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/ipx": { - "version": "0.9.11", - "resolved": "https://registry.npmjs.org/ipx/-/ipx-0.9.11.tgz", - "integrity": "sha512-/wsBt7hV8rvNR6O4kwgOUAhtm0F/M/mXaolXot/Bz7fdOD+W7i9OtWuoASWv1PFwwtOunhZGaoCx8BOpSdG2VQ==", + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/ipx/-/ipx-1.3.1.tgz", + "integrity": "sha512-hWRLXdMDOz2q81T2x9lowFtAGO3E5b2HtC8xOOBTrlnxygHNaVrZqJ5c1P3T7tDkC3oCocYRRz0VBffvJKeQlw==", "dev": true, "dependencies": { - "consola": "^2.15.3", - "defu": "^6.1.0", - "destr": "^1.1.1", + "@fastify/accept-negotiator": "^1.1.0", + "consola": "^3.2.3", + "defu": "^6.1.2", + "destr": "^2.0.1", "etag": "^1.8.1", "image-meta": "^0.1.1", - "listhen": "^0.2.15", - "ohmyfetch": "^0.4.18", - "pathe": "^0.3.5", - "sharp": "^0.30.7", - "ufo": "^0.8.5", + "listhen": "^1.5.5", + "node-fetch-native": "^1.4.0", + "pathe": "^1.1.1", + "sharp": "^0.32.6", + "ufo": "^1.3.1", "xss": "^1.0.14" }, "bin": { "ipx": "bin/ipx.mjs" } }, - "node_modules/ipx/node_modules/pathe": { - "version": "0.3.9", - "resolved": "https://registry.npmjs.org/pathe/-/pathe-0.3.9.tgz", - "integrity": "sha512-6Y6s0vT112P3jD8dGfuS6r+lpa0qqNrLyHPOwvXMnyNTQaYiwgau2DP3aNDsR13xqtGj7rrPo+jFUATpU6/s+g==", + "node_modules/ipx/node_modules/destr": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/destr/-/destr-2.0.2.tgz", + "integrity": "sha512-65AlobnZMiCET00KaFFjUefxDX0khFA/E4myqZ7a6Sq1yZtR8+FVIvilVX66vF2uobSumxooYZChiRPCKNqhmg==", "dev": true }, - "node_modules/ipx/node_modules/ufo": { - "version": "0.8.6", - "resolved": "https://registry.npmjs.org/ufo/-/ufo-0.8.6.tgz", - "integrity": "sha512-fk6CmUgwKCfX79EzcDQQpSCMxrHstvbLswFChHS0Vump+kFkw7nJBfTZoC1j0bOGoY9I7R3n2DGek5ajbcYnOw==", + "node_modules/ipx/node_modules/pathe": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/pathe/-/pathe-1.1.1.tgz", + "integrity": "sha512-d+RQGp0MAYTIaDBIMmOfMwz3E+LOZnxx1HZd5R18mmCZY0QBlK0LDZfPc8FW8Ed2DlvsuE6PRjroDY+wg4+j/Q==", "dev": true }, "node_modules/iron-webcrypto": { - "version": "0.7.0", - "resolved": "https://registry.npmjs.org/iron-webcrypto/-/iron-webcrypto-0.7.0.tgz", - "integrity": "sha512-WkX32iTcwd79ZsWRPP5wq1Jq6XXfPwO783ZiUBY8uMw4/AByx5WvBmxvYGnpVt6AOVJ0F41Qo420r8lIneT9Wg==", + "version": "0.10.1", + "resolved": "https://registry.npmjs.org/iron-webcrypto/-/iron-webcrypto-0.10.1.tgz", + "integrity": "sha512-QGOS8MRMnj/UiOa+aMIgfyHcvkhqNUsUxb1XzskENvbo+rEfp6TOwqd1KPuDzXC4OnGHcMSVxDGRoilqB8ViqA==", "dev": true, "funding": { "url": "https://github.com/sponsors/brc-dd" @@ -6579,6 +6929,15 @@ "resolved": "https://registry.npmjs.org/jgexml/-/jgexml-0.4.4.tgz", "integrity": "sha512-j0AzSWT7LXy3s3i1cdv5NZxUtscocwiBxgOLiEBfitCehm8STdXVrcOlbAWsJFLCq1elZYpQlGqA9k8Z+n9iJA==" }, + "node_modules/jiti": { + "version": "1.21.0", + "resolved": "https://registry.npmjs.org/jiti/-/jiti-1.21.0.tgz", + "integrity": "sha512-gFqAIbuKyyso/3G2qhiO2OM6shY6EPP/R0+mkDbyspxKazh8BXDC5FiFsUjlczgdNz/vfra0da2y+aHrusLG/Q==", + "dev": true, + "bin": { + "jiti": "bin/jiti.js" + } + }, "node_modules/js-cookie": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/js-cookie/-/js-cookie-3.0.1.tgz", @@ -6662,6 +7021,12 @@ "node": ">=6" } }, + "node_modules/jsonc-parser": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/jsonc-parser/-/jsonc-parser-3.2.0.tgz", + "integrity": "sha512-gfFQZrcTc8CnKXp6Y4/CBT3fTc0OVuDofpre4aEeEpSBPV5X5v4+Vmx+8snU7RLPrNHPKSgLxGo9YuQzz20o+w==", + "dev": true + }, "node_modules/jsonfile": { "version": "6.1.0", "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", @@ -6763,24 +7128,38 @@ } }, "node_modules/listhen": { - "version": "0.2.15", - "resolved": "https://registry.npmjs.org/listhen/-/listhen-0.2.15.tgz", - "integrity": "sha512-F/IWj/aJLeokHAIVY+l3JoWRUnbRaf2F0cr+Ybc1YyozMA/yP0C2nf3c0Oi7vAbFvtfiwfWWfP7bIrQc/u5L1A==", + "version": "1.5.5", + "resolved": "https://registry.npmjs.org/listhen/-/listhen-1.5.5.tgz", + "integrity": "sha512-LXe8Xlyh3gnxdv4tSjTjscD1vpr/2PRpzq8YIaMJgyKzRG8wdISlWVWnGThJfHnlJ6hmLt2wq1yeeix0TEbuoA==", "dev": true, "dependencies": { + "@parcel/watcher": "^2.3.0", + "@parcel/watcher-wasm": "2.3.0", + "citty": "^0.1.4", "clipboardy": "^3.0.0", - "colorette": "^2.0.19", - "defu": "^6.0.0", - "get-port-please": "^2.6.1", + "consola": "^3.2.3", + "defu": "^6.1.2", + "get-port-please": "^3.1.1", + "h3": "^1.8.1", "http-shutdown": "^1.2.2", - "selfsigned": "^2.0.1", - "ufo": "^0.8.5" + "jiti": "^1.20.0", + "mlly": "^1.4.2", + "node-forge": "^1.3.1", + "pathe": "^1.1.1", + "std-env": "^3.4.3", + "ufo": "^1.3.0", + "untun": "^0.1.2", + "uqr": "^0.1.2" + }, + "bin": { + "listen": "bin/listhen.mjs", + "listhen": "bin/listhen.mjs" } }, - "node_modules/listhen/node_modules/ufo": { - "version": "0.8.6", - "resolved": "https://registry.npmjs.org/ufo/-/ufo-0.8.6.tgz", - "integrity": "sha512-fk6CmUgwKCfX79EzcDQQpSCMxrHstvbLswFChHS0Vump+kFkw7nJBfTZoC1j0bOGoY9I7R3n2DGek5ajbcYnOw==", + "node_modules/listhen/node_modules/pathe": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/pathe/-/pathe-1.1.1.tgz", + "integrity": "sha512-d+RQGp0MAYTIaDBIMmOfMwz3E+LOZnxx1HZd5R18mmCZY0QBlK0LDZfPc8FW8Ed2DlvsuE6PRjroDY+wg4+j/Q==", "dev": true }, "node_modules/listr2": { @@ -8134,6 +8513,18 @@ "node": ">=8.6" } }, + "node_modules/mime": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/mime/-/mime-3.0.0.tgz", + "integrity": "sha512-jSCU7/VB1loIWBZe14aEYHU/+1UMEHoaO7qxCOVJOw9GgH72VAWppxNcjU+x9a2k3GSIBXNKxXQFqRvvZ7vr3A==", + "dev": true, + "bin": { + "mime": "cli.js" + }, + "engines": { + "node": ">=10.0.0" + } + }, "node_modules/mime-db": { "version": "1.52.0", "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", @@ -8257,15 +8648,18 @@ "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=" }, "node_modules/mkdirp": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", - "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-3.0.1.tgz", + "integrity": "sha512-+NsyUUAZDmo6YVHzL/stxSu3t9YS1iljliy3BSDrXJ/dkn1KYdmtZODGGjLcc9XLgVVpH4KshHB8XmZgMhaBXg==", "dev": true, "bin": { - "mkdirp": "bin/cmd.js" + "mkdirp": "dist/cjs/src/bin.js" }, "engines": { "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" } }, "node_modules/mkdirp-classic": { @@ -8274,6 +8668,36 @@ "integrity": "sha512-gKLcREMhtuZRwRAfqP3RFW+TK4JqApVBtOIftVgjuABpAtpxhPGaDcfvbhNvD0B8iD1oUr/txX35NjcaY6Ns/A==", "dev": true }, + "node_modules/mlly": { + "version": "1.4.2", + "resolved": "https://registry.npmjs.org/mlly/-/mlly-1.4.2.tgz", + "integrity": "sha512-i/Ykufi2t1EZ6NaPLdfnZk2AX8cs0d+mTzVKuPfqPKPatxLApaBoxJQ9x1/uckXtrS/U5oisPMDkNs0yQTaBRg==", + "dev": true, + "dependencies": { + "acorn": "^8.10.0", + "pathe": "^1.1.1", + "pkg-types": "^1.0.3", + "ufo": "^1.3.0" + } + }, + "node_modules/mlly/node_modules/acorn": { + "version": "8.11.2", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.11.2.tgz", + "integrity": "sha512-nc0Axzp/0FILLEVsm4fNwLCwMttvhEI263QtVPQcbpfZZ3ts0hLsZGOpE6czNlid7CJ9MlyH8reXkpsf3YUY4w==", + "dev": true, + "bin": { + "acorn": "bin/acorn" + }, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/mlly/node_modules/pathe": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/pathe/-/pathe-1.1.1.tgz", + "integrity": "sha512-d+RQGp0MAYTIaDBIMmOfMwz3E+LOZnxx1HZd5R18mmCZY0QBlK0LDZfPc8FW8Ed2DlvsuE6PRjroDY+wg4+j/Q==", + "dev": true + }, "node_modules/moize": { "version": "6.1.6", "resolved": "https://registry.npmjs.org/moize/-/moize-6.1.6.tgz", @@ -8482,9 +8906,9 @@ } }, "node_modules/node-abi": { - "version": "3.40.0", - "resolved": "https://registry.npmjs.org/node-abi/-/node-abi-3.40.0.tgz", - "integrity": "sha512-zNy02qivjjRosswoYmPi8hIKJRr8MpQyeKT6qlcq/OnOgA3Rhoae+IYOqsM9V5+JnHWmxKnWOT2GxvtqdtOCXA==", + "version": "3.51.0", + "resolved": "https://registry.npmjs.org/node-abi/-/node-abi-3.51.0.tgz", + "integrity": "sha512-SQkEP4hmNWjlniS5zdnfIXTk1x7Ome85RDzHlTbBtzE97Gfwz/Ipw4v/Ryk20DWIy3yCNVLVlGKApCnmvYoJbA==", "dev": true, "dependencies": { "semver": "^7.3.5" @@ -8494,9 +8918,9 @@ } }, "node_modules/node-addon-api": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-5.1.0.tgz", - "integrity": "sha512-eh0GgfEkpnoWDq+VY8OyvYhFEzBk6jIYbRKdIlyTiAXIVJ8PyBaKb0rp7oDtoddbdoHWhq8wwr+XZ81F1rpNdA==", + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-7.0.0.tgz", + "integrity": "sha512-vgbBJTS4m5/KkE16t5Ly0WW9hz46swAstv0hYYwMtbG7AznRhNyfLRe8HZAiWIpcHzoO7HxhLuBQj9rJ/Ho0ZA==", "dev": true }, "node_modules/node-fetch": { @@ -8519,9 +8943,9 @@ } }, "node_modules/node-fetch-native": { - "version": "0.1.8", - "resolved": "https://registry.npmjs.org/node-fetch-native/-/node-fetch-native-0.1.8.tgz", - "integrity": "sha512-ZNaury9r0NxaT2oL65GvdGDy+5PlSaHTovT6JV5tOW07k1TQmgC0olZETa4C9KZg0+6zBr99ctTYa3Utqj9P/Q==", + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/node-fetch-native/-/node-fetch-native-1.4.1.tgz", + "integrity": "sha512-NsXBU0UgBxo2rQLOeWNZqS3fvflWePMECr8CoSWoSTqCqGbVVsvl9vZu1HfQicYN0g5piV9Gh8RTEvo/uP752w==", "dev": true }, "node_modules/node-forge": { @@ -8637,38 +9061,20 @@ "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=" }, "node_modules/ofetch": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/ofetch/-/ofetch-1.0.1.tgz", - "integrity": "sha512-icBz2JYfEpt+wZz1FRoGcrMigjNKjzvufE26m9+yUiacRQRHwnNlGRPiDnW4op7WX/MR6aniwS8xw8jyVelF2g==", - "dev": true, - "dependencies": { - "destr": "^1.2.2", - "node-fetch-native": "^1.0.2", - "ufo": "^1.1.0" - } - }, - "node_modules/ofetch/node_modules/node-fetch-native": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/node-fetch-native/-/node-fetch-native-1.1.1.tgz", - "integrity": "sha512-9VvspTSUp2Sxbl+9vbZTlFGq9lHwE8GDVVekxx6YsNd1YH59sb3Ba8v3Y3cD8PkLNcileGGcA21PFjVl0jzDaw==", - "dev": true - }, - "node_modules/ohmyfetch": { - "version": "0.4.21", - "resolved": "https://registry.npmjs.org/ohmyfetch/-/ohmyfetch-0.4.21.tgz", - "integrity": "sha512-VG7f/JRvqvBOYvL0tHyEIEG7XHWm7OqIfAs6/HqwWwDfjiJ1g0huIpe5sFEmyb+7hpFa1EGNH2aERWR72tlClw==", + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/ofetch/-/ofetch-1.3.3.tgz", + "integrity": "sha512-s1ZCMmQWXy4b5K/TW9i/DtiN8Ku+xCiHcjQ6/J/nDdssirrQNOoB165Zu8EqLMA2lln1JUth9a0aW9Ap2ctrUg==", "dev": true, "dependencies": { - "destr": "^1.2.0", - "node-fetch-native": "^0.1.8", - "ufo": "^0.8.6", - "undici": "^5.12.0" + "destr": "^2.0.1", + "node-fetch-native": "^1.4.0", + "ufo": "^1.3.0" } }, - "node_modules/ohmyfetch/node_modules/ufo": { - "version": "0.8.6", - "resolved": "https://registry.npmjs.org/ufo/-/ufo-0.8.6.tgz", - "integrity": "sha512-fk6CmUgwKCfX79EzcDQQpSCMxrHstvbLswFChHS0Vump+kFkw7nJBfTZoC1j0bOGoY9I7R3n2DGek5ajbcYnOw==", + "node_modules/ofetch/node_modules/destr": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/destr/-/destr-2.0.2.tgz", + "integrity": "sha512-65AlobnZMiCET00KaFFjUefxDX0khFA/E4myqZ7a6Sq1yZtR8+FVIvilVX66vF2uobSumxooYZChiRPCKNqhmg==", "dev": true }, "node_modules/once": { @@ -9055,6 +9461,23 @@ "node": ">=0.10.0" } }, + "node_modules/pkg-types": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/pkg-types/-/pkg-types-1.0.3.tgz", + "integrity": "sha512-nN7pYi0AQqJnoLPC9eHFQ8AcyaixBUOwvqc5TDnIKCMEE6I0y8P7OKA7fPexsXGCGxQDl/cmrLAp26LhcwxZ4A==", + "dev": true, + "dependencies": { + "jsonc-parser": "^3.2.0", + "mlly": "^1.2.0", + "pathe": "^1.1.0" + } + }, + "node_modules/pkg-types/node_modules/pathe": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/pathe/-/pathe-1.1.1.tgz", + "integrity": "sha512-d+RQGp0MAYTIaDBIMmOfMwz3E+LOZnxx1HZd5R18mmCZY0QBlK0LDZfPc8FW8Ed2DlvsuE6PRjroDY+wg4+j/Q==", + "dev": true + }, "node_modules/point-in-polygon": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/point-in-polygon/-/point-in-polygon-1.1.0.tgz", @@ -9745,6 +10168,57 @@ "node": ">=10" } }, + "node_modules/prebuild-install/node_modules/detect-libc": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-2.0.2.tgz", + "integrity": "sha512-UX6sGumvvqSaXgdKGUsgZWqcUyIXZ/vZTrlRT/iobiKhGL0zL4d3osHj3uqllWJK+i+sixDS/3COVEOFbupFyw==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/prebuild-install/node_modules/readable-stream": { + "version": "3.6.2", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", + "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", + "dev": true, + "dependencies": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/prebuild-install/node_modules/tar-fs": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/tar-fs/-/tar-fs-2.1.1.tgz", + "integrity": "sha512-V0r2Y9scmbDRLCNex/+hYzvp/zyYjvFbHPNgVTKfQvVrb6guiE/fxP+XblDNR011utopbkex2nM4dHNV6GDsng==", + "dev": true, + "dependencies": { + "chownr": "^1.1.1", + "mkdirp-classic": "^0.5.2", + "pump": "^3.0.0", + "tar-stream": "^2.1.4" + } + }, + "node_modules/prebuild-install/node_modules/tar-stream": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-2.2.0.tgz", + "integrity": "sha512-ujeqbceABgwMZxEJnk2HDY2DlnUZ+9oEcb1KzTVfYHio0UE6dG71n60d8D2I4qNvleWrrXpmjpt7vZeF1LnMZQ==", + "dev": true, + "dependencies": { + "bl": "^4.0.3", + "end-of-stream": "^1.4.1", + "fs-constants": "^1.0.0", + "inherits": "^2.0.3", + "readable-stream": "^3.1.1" + }, + "engines": { + "node": ">=6" + } + }, "node_modules/pretty-bytes": { "version": "5.6.0", "resolved": "https://registry.npmjs.org/pretty-bytes/-/pretty-bytes-5.6.0.tgz", @@ -9917,6 +10391,12 @@ } ] }, + "node_modules/queue-tick": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/queue-tick/-/queue-tick-1.0.1.tgz", + "integrity": "sha512-kJt5qhMxoszgU/62PLP1CJytzd2NKetjSRnyuj31fDd3Rlcz3fzlFdFLD1SItunPwyqEOkca6GbV612BWfaBag==", + "dev": true + }, "node_modules/quick-lru": { "version": "5.1.1", "resolved": "https://registry.npmjs.org/quick-lru/-/quick-lru-5.1.1.tgz", @@ -9929,9 +10409,9 @@ } }, "node_modules/radix3": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/radix3/-/radix3-1.0.1.tgz", - "integrity": "sha512-y+AcwZ3HcUIGc9zGsNVf5+BY/LxL+z+4h4J3/pp8jxSmy1STaCocPS3qrj4tA5ehUSzqtqK+0Aygvz/r/8vy4g==", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/radix3/-/radix3-1.1.0.tgz", + "integrity": "sha512-pNsHDxbGORSvuSScqNJ+3Km6QAVqk8CfsCBIEoDgpqLrkD2f3QM4I7d1ozJJ172OmIcoUcerZaNWqtLkRXTV3A==", "dev": true }, "node_modules/raf": { @@ -9992,15 +10472,6 @@ "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==", "dev": true }, - "node_modules/rc/node_modules/strip-json-comments": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz", - "integrity": "sha512-4gB8na07fecVVkOI6Rs4e7T6NOTki5EmL7TUduTs6bu3EdnSycntVJ4re8kgZA+wx9IueI2Y11bfbgwtzuE0KQ==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/react": { "version": "17.0.2", "resolved": "https://registry.npmjs.org/react/-/react-17.0.2.tgz", @@ -10665,18 +11136,6 @@ "integrity": "sha512-OwpTSOfy6xSs1+pwcNrv0RBMOzI39Lp3qQKUTPVVPRjCdNa5JH/oPRiqsesIskK8TVgmRiHwO4KXlV2Li9dANA==", "optional": true }, - "node_modules/selfsigned": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/selfsigned/-/selfsigned-2.1.1.tgz", - "integrity": "sha512-GSL3aowiF7wa/WtSFwnUrludWFoNhftq8bUkH9pkzjpN2XSPOAYEgg6e0sS9s0rZwgJzJiQRPU18A6clnoW5wQ==", - "dev": true, - "dependencies": { - "node-forge": "^1" - }, - "engines": { - "node": ">=10" - } - }, "node_modules/semver": { "version": "7.5.4", "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", @@ -10706,28 +11165,43 @@ "integrity": "sha1-KQy7Iy4waULX1+qbg3Mqt4VvgoU=" }, "node_modules/sharp": { - "version": "0.30.7", - "resolved": "https://registry.npmjs.org/sharp/-/sharp-0.30.7.tgz", - "integrity": "sha512-G+MY2YW33jgflKPTXXptVO28HvNOo9G3j0MybYAHeEmby+QuD2U98dT6ueht9cv/XDqZspSpIhoSW+BAKJ7Hig==", + "version": "0.32.6", + "resolved": "https://registry.npmjs.org/sharp/-/sharp-0.32.6.tgz", + "integrity": "sha512-KyLTWwgcR9Oe4d9HwCwNM2l7+J0dUQwn/yf7S0EnTtb0eVS4RxO0eUSvxPtzT4F3SY+C4K6fqdv/DO27sJ/v/w==", "dev": true, "hasInstallScript": true, "dependencies": { "color": "^4.2.3", - "detect-libc": "^2.0.1", - "node-addon-api": "^5.0.0", + "detect-libc": "^2.0.2", + "node-addon-api": "^6.1.0", "prebuild-install": "^7.1.1", - "semver": "^7.3.7", + "semver": "^7.5.4", "simple-get": "^4.0.1", - "tar-fs": "^2.1.1", + "tar-fs": "^3.0.4", "tunnel-agent": "^0.6.0" }, "engines": { - "node": ">=12.13.0" + "node": ">=14.15.0" }, "funding": { "url": "https://opencollective.com/libvips" } }, + "node_modules/sharp/node_modules/detect-libc": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-2.0.2.tgz", + "integrity": "sha512-UX6sGumvvqSaXgdKGUsgZWqcUyIXZ/vZTrlRT/iobiKhGL0zL4d3osHj3uqllWJK+i+sixDS/3COVEOFbupFyw==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/sharp/node_modules/node-addon-api": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-6.1.0.tgz", + "integrity": "sha512-+eawOlIgy680F0kBzPUNFhMZGtJ1YmqM6l4+Crf4IkImjYrO/mqPwRMh352g23uIaQKFItcQ64I7KMaJxHgAVA==", + "dev": true + }, "node_modules/shebang-command": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", @@ -10953,6 +11427,22 @@ "url": "https://github.com/sponsors/wooorm" } }, + "node_modules/std-env": { + "version": "3.5.0", + "resolved": "https://registry.npmjs.org/std-env/-/std-env-3.5.0.tgz", + "integrity": "sha512-JGUEaALvL0Mf6JCfYnJOTcobY+Nc7sG/TemDRBqCA0wEr4DER7zDchaaixTlmOxAjG1uRJmX82EQcxwTQTkqVA==", + "dev": true + }, + "node_modules/streamx": { + "version": "2.15.5", + "resolved": "https://registry.npmjs.org/streamx/-/streamx-2.15.5.tgz", + "integrity": "sha512-9thPGMkKC2GctCzyCUjME3yR03x2xNo0GPKGkRw2UMYN+gqWa9uqpyNWhmsNCutU5zHmkUum0LsCRQTXUgUCAg==", + "dev": true, + "dependencies": { + "fast-fifo": "^1.1.0", + "queue-tick": "^1.0.1" + } + }, "node_modules/string_decoder": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", @@ -11037,6 +11527,15 @@ "node": ">=6" } }, + "node_modules/strip-json-comments": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz", + "integrity": "sha512-4gB8na07fecVVkOI6Rs4e7T6NOTki5EmL7TUduTs6bu3EdnSycntVJ4re8kgZA+wx9IueI2Y11bfbgwtzuE0KQ==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/style-to-object": { "version": "0.4.1", "resolved": "https://registry.npmjs.org/style-to-object/-/style-to-object-0.4.1.tgz", @@ -11289,45 +11788,25 @@ } }, "node_modules/tar-fs": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/tar-fs/-/tar-fs-2.1.1.tgz", - "integrity": "sha512-V0r2Y9scmbDRLCNex/+hYzvp/zyYjvFbHPNgVTKfQvVrb6guiE/fxP+XblDNR011utopbkex2nM4dHNV6GDsng==", + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/tar-fs/-/tar-fs-3.0.4.tgz", + "integrity": "sha512-5AFQU8b9qLfZCX9zp2duONhPmZv0hGYiBPJsyUdqMjzq/mqVpy/rEUSeHk1+YitmxugaptgBh5oDGU3VsAJq4w==", "dev": true, "dependencies": { - "chownr": "^1.1.1", "mkdirp-classic": "^0.5.2", "pump": "^3.0.0", - "tar-stream": "^2.1.4" + "tar-stream": "^3.1.5" } }, "node_modules/tar-stream": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-2.2.0.tgz", - "integrity": "sha512-ujeqbceABgwMZxEJnk2HDY2DlnUZ+9oEcb1KzTVfYHio0UE6dG71n60d8D2I4qNvleWrrXpmjpt7vZeF1LnMZQ==", - "dev": true, - "dependencies": { - "bl": "^4.0.3", - "end-of-stream": "^1.4.1", - "fs-constants": "^1.0.0", - "inherits": "^2.0.3", - "readable-stream": "^3.1.1" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/tar-stream/node_modules/readable-stream": { - "version": "3.6.2", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", - "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", + "version": "3.1.6", + "resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-3.1.6.tgz", + "integrity": "sha512-B/UyjYwPpMBv+PaFSWAmtYjwdrlEaZQEhMIBFNC5oEG8lpiW8XjcSdmEaClj28ArfKScKHs2nshz3k2le6crsg==", "dev": true, "dependencies": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" - }, - "engines": { - "node": ">= 6" + "b4a": "^1.6.4", + "fast-fifo": "^1.2.0", + "streamx": "^2.15.0" } }, "node_modules/throttleit": { @@ -11525,29 +12004,36 @@ "integrity": "sha512-qLK/Xe9E2uzmYI3qLeOmI0tEOt+TBBQyUIAh4aAgU05FVYzeZrKUdkAZfBNVGRaHVgV0TDkdEngJSw/SyQchkQ==" }, "node_modules/ufo": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/ufo/-/ufo-1.1.2.tgz", - "integrity": "sha512-TrY6DsjTQQgyS3E3dBaOXf0TpPD8u9FVrVYmKVegJuFw51n/YB9XPt+U6ydzFG5ZIN7+DIjPbNmXoBj9esYhgQ==", + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/ufo/-/ufo-1.3.2.tgz", + "integrity": "sha512-o+ORpgGwaYQXgqGDwd+hkS4PuZ3QnmqMMxRuajK/a38L6fTpcE5GPIfrf+L/KemFzfUpeUQc1rRS1iDBozvnFA==", "dev": true }, "node_modules/uncrypto": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/uncrypto/-/uncrypto-0.1.2.tgz", - "integrity": "sha512-kuZwRKV615lEw/Xx3Iz56FKk3nOeOVGaVmw0eg+x4Mne28lCotNFbBhDW7dEBCBKyKbRQiCadEZeNAFPVC5cgw==", + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/uncrypto/-/uncrypto-0.1.3.tgz", + "integrity": "sha512-Ql87qFHB3s/De2ClA9e0gsnS6zXG27SkTiSJwjCc9MebbfapQfuPzumMIUMi38ezPZVNFcHI9sUIepeQfw8J8Q==", "dev": true }, - "node_modules/undici": { - "version": "5.26.3", - "resolved": "https://registry.npmjs.org/undici/-/undici-5.26.3.tgz", - "integrity": "sha512-H7n2zmKEWgOllKkIUkLvFmsJQj062lSm3uA4EYApG8gLuiOM0/go9bIoC3HVaSnfg4xunowDE2i9p8drkXuvDw==", + "node_modules/unenv": { + "version": "1.7.4", + "resolved": "https://registry.npmjs.org/unenv/-/unenv-1.7.4.tgz", + "integrity": "sha512-fjYsXYi30It0YCQYqLOcT6fHfMXsBr2hw9XC7ycf8rTG7Xxpe3ZssiqUnD0khrjiZEmkBXWLwm42yCSCH46fMw==", "dev": true, "dependencies": { - "@fastify/busboy": "^2.0.0" - }, - "engines": { - "node": ">=14.0" + "consola": "^3.2.3", + "defu": "^6.1.2", + "mime": "^3.0.0", + "node-fetch-native": "^1.4.0", + "pathe": "^1.1.1" } }, + "node_modules/unenv/node_modules/pathe": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/pathe/-/pathe-1.1.1.tgz", + "integrity": "sha512-d+RQGp0MAYTIaDBIMmOfMwz3E+LOZnxx1HZd5R18mmCZY0QBlK0LDZfPc8FW8Ed2DlvsuE6PRjroDY+wg4+j/Q==", + "dev": true + }, "node_modules/unherit": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/unherit/-/unherit-1.1.3.tgz", @@ -11736,33 +12222,35 @@ } }, "node_modules/unstorage": { - "version": "1.6.1", - "resolved": "https://registry.npmjs.org/unstorage/-/unstorage-1.6.1.tgz", - "integrity": "sha512-GUJzwbP5IStEGZy9/0peRqef5CY9icqApsSu8vxj13admjISyz1g5eYk2wPRBjmZhQ3DUMQ36q+zwTbe68khew==", + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/unstorage/-/unstorage-1.9.0.tgz", + "integrity": "sha512-VpD8ZEYc/le8DZCrny3bnqKE4ZjioQxBRnWE+j5sGNvziPjeDlaS1NaFFHzl/kkXaO3r7UaF8MGQrs14+1B4pQ==", "dev": true, "dependencies": { "anymatch": "^3.1.3", "chokidar": "^3.5.3", - "destr": "^1.2.2", - "h3": "^1.6.6", + "destr": "^2.0.1", + "h3": "^1.7.1", "ioredis": "^5.3.2", - "listhen": "^1.0.4", - "lru-cache": "^9.1.1", + "listhen": "^1.2.2", + "lru-cache": "^10.0.0", "mri": "^1.2.0", - "node-fetch-native": "^1.1.1", - "ofetch": "^1.0.1", - "ufo": "^1.1.2" + "node-fetch-native": "^1.2.0", + "ofetch": "^1.1.1", + "ufo": "^1.2.0" }, "peerDependencies": { "@azure/app-configuration": "^1.4.1", "@azure/cosmos": "^3.17.3", "@azure/data-tables": "^13.2.2", - "@azure/identity": "^3.2.2", + "@azure/identity": "^3.2.3", "@azure/keyvault-secrets": "^4.7.0", "@azure/storage-blob": "^12.14.0", - "@planetscale/database": "^1.7.0", - "@upstash/redis": "^1.20.6", - "@vercel/kv": "^0.2.1" + "@capacitor/preferences": "^5.0.0", + "@planetscale/database": "^1.8.0", + "@upstash/redis": "^1.22.0", + "@vercel/kv": "^0.2.2", + "idb-keyval": "^6.2.1" }, "peerDependenciesMeta": { "@azure/app-configuration": { @@ -11783,6 +12271,9 @@ "@azure/storage-blob": { "optional": true }, + "@capacitor/preferences": { + "optional": true + }, "@planetscale/database": { "optional": true }, @@ -11791,46 +12282,30 @@ }, "@vercel/kv": { "optional": true + }, + "idb-keyval": { + "optional": true } } }, - "node_modules/unstorage/node_modules/get-port-please": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/get-port-please/-/get-port-please-3.0.1.tgz", - "integrity": "sha512-R5pcVO8Z1+pVDu8Ml3xaJCEkBiiy1VQN9za0YqH8GIi1nIqD4IzQhzY6dDzMRtdS1lyiGlucRzm8IN8wtLIXng==", + "node_modules/unstorage/node_modules/destr": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/destr/-/destr-2.0.2.tgz", + "integrity": "sha512-65AlobnZMiCET00KaFFjUefxDX0khFA/E4myqZ7a6Sq1yZtR8+FVIvilVX66vF2uobSumxooYZChiRPCKNqhmg==", "dev": true }, - "node_modules/unstorage/node_modules/listhen": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/listhen/-/listhen-1.0.4.tgz", - "integrity": "sha512-r94k7kmXHb8e8wpv7+UP/qqhhD+j/9TgX19QKim2cEJuWCLwlTw+5BkCFmYyjhQ7Bt8KdVun/2DcD7MF2Fe3+g==", - "dev": true, - "dependencies": { - "clipboardy": "^3.0.0", - "colorette": "^2.0.19", - "defu": "^6.1.2", - "get-port-please": "^3.0.1", - "http-shutdown": "^1.2.2", - "ip-regex": "^5.0.0", - "node-forge": "^1.3.1", - "ufo": "^1.1.1" - } - }, "node_modules/unstorage/node_modules/lru-cache": { - "version": "9.1.1", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-9.1.1.tgz", - "integrity": "sha512-65/Jky17UwSb0BuB9V+MyDpsOtXKmYwzhyl+cOa9XUiI4uV2Ouy/2voFP3+al0BjZbJgMBD8FojMpAf+Z+qn4A==", + "version": "10.0.2", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.0.2.tgz", + "integrity": "sha512-Yj9mA8fPiVgOUpByoTZO5pNrcl5Yk37FcSHsUINpAsaBIEZIuqcCclDZJCVxqQShDsmYX8QG63svJiTbOATZwg==", "dev": true, + "dependencies": { + "semver": "^7.3.5" + }, "engines": { "node": "14 || >=16.14" } }, - "node_modules/unstorage/node_modules/node-fetch-native": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/node-fetch-native/-/node-fetch-native-1.1.1.tgz", - "integrity": "sha512-9VvspTSUp2Sxbl+9vbZTlFGq9lHwE8GDVVekxx6YsNd1YH59sb3Ba8v3Y3cD8PkLNcileGGcA21PFjVl0jzDaw==", - "dev": true - }, "node_modules/untildify": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/untildify/-/untildify-4.0.0.tgz", @@ -11840,6 +12315,26 @@ "node": ">=8" } }, + "node_modules/untun": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/untun/-/untun-0.1.2.tgz", + "integrity": "sha512-wLAMWvxfqyTiBODA1lg3IXHQtjggYLeTK7RnSfqtOXixWJ3bAa2kK/HHmOOg19upteqO3muLvN6O/icbyQY33Q==", + "dev": true, + "dependencies": { + "citty": "^0.1.3", + "consola": "^3.2.3", + "pathe": "^1.1.1" + }, + "bin": { + "untun": "bin/untun.mjs" + } + }, + "node_modules/untun/node_modules/pathe": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/pathe/-/pathe-1.1.1.tgz", + "integrity": "sha512-d+RQGp0MAYTIaDBIMmOfMwz3E+LOZnxx1HZd5R18mmCZY0QBlK0LDZfPc8FW8Ed2DlvsuE6PRjroDY+wg4+j/Q==", + "dev": true + }, "node_modules/update-browserslist-db": { "version": "1.0.10", "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.10.tgz", @@ -11865,6 +12360,12 @@ "browserslist": ">= 4.21.0" } }, + "node_modules/uqr": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/uqr/-/uqr-0.1.2.tgz", + "integrity": "sha512-MJu7ypHq6QasgF5YRTjqscSzQp/W11zoUk6kvmlH+fmWEs63Y0Eib13hYFwAzagRJcVY8WVnlV+eBDUGMJ5IbA==", + "dev": true + }, "node_modules/uri-js": { "version": "4.4.1", "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", @@ -11888,6 +12389,12 @@ "resolved": "https://registry.npmjs.org/url-template/-/url-template-2.0.8.tgz", "integrity": "sha1-/FZaPMy/93MMd19WQflVV5FDnyE=" }, + "node_modules/urlpattern-polyfill": { + "version": "8.0.2", + "resolved": "https://registry.npmjs.org/urlpattern-polyfill/-/urlpattern-polyfill-8.0.2.tgz", + "integrity": "sha512-Qp95D4TPJl1kC9SKigDcqgyM2VDVO4RiJc2d4qe5GrYm+zbIQCWWKAFaJNQ4BhdFeDGwBmAxqJBwWSJDb9T3BQ==", + "dev": true + }, "node_modules/use-isomorphic-layout-effect": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/use-isomorphic-layout-effect/-/use-isomorphic-layout-effect-1.1.2.tgz", @@ -12691,10 +13198,10 @@ "algoliasearch": "^4.0.0" } }, - "@fastify/busboy": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/@fastify/busboy/-/busboy-2.0.0.tgz", - "integrity": "sha512-JUFJad5lv7jxj926GPgymrWQxxjPYuJNiNjNMzqT+HiuP6Vl3dk5xzG+8sTX96np0ZAluvaMzPsjhHZ5rNuNQQ==", + "@fastify/accept-negotiator": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@fastify/accept-negotiator/-/accept-negotiator-1.1.0.tgz", + "integrity": "sha512-OIHZrb2ImZ7XG85HXOONLcJWGosv7sIvM2ifAPQVhg9Lv7qdmMBNVaai4QTdyuaqbKM5eO6sLSQOYI7wEQeCJQ==", "dev": true }, "@fec/remark-a11y-emoji": { @@ -13264,23 +13771,33 @@ } }, "@netlify/ipx": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/@netlify/ipx/-/ipx-1.4.0.tgz", - "integrity": "sha512-Ibqg1W41EVMHNT/W6JSDUyxjhcxsbEL9vL9ZaNjn9tVKnDYxJ8JqRTwSbzfns+K+M3FLqoC4PLW32qW+vT1pKQ==", + "version": "1.4.6", + "resolved": "https://registry.npmjs.org/@netlify/ipx/-/ipx-1.4.6.tgz", + "integrity": "sha512-rnKR2LXhtnflitPX9CQIv+XSrNlYIqGsV54xrXifhbtHHjCjCw/lixsi8qwAXqEIgZBC9b4Y7prhHqRtC4oIjw==", "dev": true, "requires": { - "@netlify/functions": "^1.4.0", + "@netlify/functions": "^2.4.0", "etag": "^1.8.1", "fs-extra": "^11.0.0", - "ipx": "^0.9.11", + "ipx": "^1.3.1", "micromatch": "^4.0.5", - "mkdirp": "^1.0.4", + "mkdirp": "^3.0.0", "murmurhash": "^2.0.0", "node-fetch": "^2.0.0", "ufo": "^1.0.0", - "unstorage": "^1.0.0" + "unstorage": "1.9.0" }, "dependencies": { + "@netlify/functions": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/@netlify/functions/-/functions-2.4.0.tgz", + "integrity": "sha512-dIqhdj5u4Lu/8qbYwtYpn8NfvIyPHbSTV2lAP4ocL+iwC9As06AXT0wa/xOpO2vRWJa0IMxdZaqCPnkyHlHiyg==", + "dev": true, + "requires": { + "@netlify/serverless-functions-api": "1.11.0", + "is-promise": "^4.0.0" + } + }, "fs-extra": { "version": "11.1.1", "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-11.1.1.tgz", @@ -13294,6 +13811,12 @@ } } }, + "@netlify/node-cookies": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/@netlify/node-cookies/-/node-cookies-0.1.0.tgz", + "integrity": "sha512-OAs1xG+FfLX0LoRASpqzVntVV/RpYkgpI0VrUnw2u0Q1qiZUzcPffxRK8HF3gc4GjuhG5ahOEMJ9bswBiZPq0g==", + "dev": true + }, "@netlify/plugin-nextjs": { "version": "4.37.2", "resolved": "https://registry.npmjs.org/@netlify/plugin-nextjs/-/plugin-nextjs-4.37.2.tgz", @@ -13422,6 +13945,16 @@ } } }, + "@netlify/serverless-functions-api": { + "version": "1.11.0", + "resolved": "https://registry.npmjs.org/@netlify/serverless-functions-api/-/serverless-functions-api-1.11.0.tgz", + "integrity": "sha512-3splAsr2CekL7VTwgo6yTvzD2+f269/s+TJafYazonqMNNo31yzvFxD5HpLtni4DNE1ppymVKZ4X/rLN3yl0vQ==", + "dev": true, + "requires": { + "@netlify/node-cookies": "^0.1.0", + "urlpattern-polyfill": "8.0.2" + } + }, "@next/env": { "version": "12.3.1", "resolved": "https://registry.npmjs.org/@next/env/-/env-12.3.1.tgz", @@ -13571,24 +14104,150 @@ "universal-user-agent": "^6.0.0" } }, - "@octokit/request-error": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/@octokit/request-error/-/request-error-2.1.0.tgz", - "integrity": "sha512-1VIvgXxs9WHSjicsRwq8PlR2LR2x6DwsJAaFgzdi0JfJoGSO8mYI/cHJQ+9FbN21aa+DrgNLnwObmyeSC8Rmpg==", - "requires": { - "@octokit/types": "^6.0.3", - "deprecation": "^2.0.0", - "once": "^1.4.0" - } + "@octokit/request-error": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/@octokit/request-error/-/request-error-2.1.0.tgz", + "integrity": "sha512-1VIvgXxs9WHSjicsRwq8PlR2LR2x6DwsJAaFgzdi0JfJoGSO8mYI/cHJQ+9FbN21aa+DrgNLnwObmyeSC8Rmpg==", + "requires": { + "@octokit/types": "^6.0.3", + "deprecation": "^2.0.0", + "once": "^1.4.0" + } + }, + "@octokit/types": { + "version": "6.34.0", + "resolved": "https://registry.npmjs.org/@octokit/types/-/types-6.34.0.tgz", + "integrity": "sha512-s1zLBjWhdEI2zwaoSgyOFoKSl109CUcVBCc7biPJ3aAf6LGLU6szDvi31JPU7bxfla2lqfhjbbg/5DdFNxOwHw==", + "requires": { + "@octokit/openapi-types": "^11.2.0" + } + }, + "@parcel/watcher": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/@parcel/watcher/-/watcher-2.3.0.tgz", + "integrity": "sha512-pW7QaFiL11O0BphO+bq3MgqeX/INAk9jgBldVDYjlQPO4VddoZnF22TcF9onMhnLVHuNqBJeRf+Fj7eezi/+rQ==", + "dev": true, + "requires": { + "@parcel/watcher-android-arm64": "2.3.0", + "@parcel/watcher-darwin-arm64": "2.3.0", + "@parcel/watcher-darwin-x64": "2.3.0", + "@parcel/watcher-freebsd-x64": "2.3.0", + "@parcel/watcher-linux-arm-glibc": "2.3.0", + "@parcel/watcher-linux-arm64-glibc": "2.3.0", + "@parcel/watcher-linux-arm64-musl": "2.3.0", + "@parcel/watcher-linux-x64-glibc": "2.3.0", + "@parcel/watcher-linux-x64-musl": "2.3.0", + "@parcel/watcher-win32-arm64": "2.3.0", + "@parcel/watcher-win32-ia32": "2.3.0", + "@parcel/watcher-win32-x64": "2.3.0", + "detect-libc": "^1.0.3", + "is-glob": "^4.0.3", + "micromatch": "^4.0.5", + "node-addon-api": "^7.0.0" + } + }, + "@parcel/watcher-android-arm64": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/@parcel/watcher-android-arm64/-/watcher-android-arm64-2.3.0.tgz", + "integrity": "sha512-f4o9eA3dgk0XRT3XhB0UWpWpLnKgrh1IwNJKJ7UJek7eTYccQ8LR7XUWFKqw6aEq5KUNlCcGvSzKqSX/vtWVVA==", + "dev": true, + "optional": true + }, + "@parcel/watcher-darwin-arm64": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/@parcel/watcher-darwin-arm64/-/watcher-darwin-arm64-2.3.0.tgz", + "integrity": "sha512-mKY+oijI4ahBMc/GygVGvEdOq0L4DxhYgwQqYAz/7yPzuGi79oXrZG52WdpGA1wLBPrYb0T8uBaGFo7I6rvSKw==", + "dev": true, + "optional": true + }, + "@parcel/watcher-darwin-x64": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/@parcel/watcher-darwin-x64/-/watcher-darwin-x64-2.3.0.tgz", + "integrity": "sha512-20oBj8LcEOnLE3mgpy6zuOq8AplPu9NcSSSfyVKgfOhNAc4eF4ob3ldj0xWjGGbOF7Dcy1Tvm6ytvgdjlfUeow==", + "dev": true, + "optional": true + }, + "@parcel/watcher-freebsd-x64": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/@parcel/watcher-freebsd-x64/-/watcher-freebsd-x64-2.3.0.tgz", + "integrity": "sha512-7LftKlaHunueAEiojhCn+Ef2CTXWsLgTl4hq0pkhkTBFI3ssj2bJXmH2L67mKpiAD5dz66JYk4zS66qzdnIOgw==", + "dev": true, + "optional": true + }, + "@parcel/watcher-linux-arm-glibc": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-arm-glibc/-/watcher-linux-arm-glibc-2.3.0.tgz", + "integrity": "sha512-1apPw5cD2xBv1XIHPUlq0cO6iAaEUQ3BcY0ysSyD9Kuyw4MoWm1DV+W9mneWI+1g6OeP6dhikiFE6BlU+AToTQ==", + "dev": true, + "optional": true + }, + "@parcel/watcher-linux-arm64-glibc": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-arm64-glibc/-/watcher-linux-arm64-glibc-2.3.0.tgz", + "integrity": "sha512-mQ0gBSQEiq1k/MMkgcSB0Ic47UORZBmWoAWlMrTW6nbAGoLZP+h7AtUM7H3oDu34TBFFvjy4JCGP43JlylkTQA==", + "dev": true, + "optional": true + }, + "@parcel/watcher-linux-arm64-musl": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-arm64-musl/-/watcher-linux-arm64-musl-2.3.0.tgz", + "integrity": "sha512-LXZAExpepJew0Gp8ZkJ+xDZaTQjLHv48h0p0Vw2VMFQ8A+RKrAvpFuPVCVwKJCr5SE+zvaG+Etg56qXvTDIedw==", + "dev": true, + "optional": true + }, + "@parcel/watcher-linux-x64-glibc": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-x64-glibc/-/watcher-linux-x64-glibc-2.3.0.tgz", + "integrity": "sha512-P7Wo91lKSeSgMTtG7CnBS6WrA5otr1K7shhSjKHNePVmfBHDoAOHYRXgUmhiNfbcGk0uMCHVcdbfxtuiZCHVow==", + "dev": true, + "optional": true + }, + "@parcel/watcher-linux-x64-musl": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-x64-musl/-/watcher-linux-x64-musl-2.3.0.tgz", + "integrity": "sha512-+kiRE1JIq8QdxzwoYY+wzBs9YbJ34guBweTK8nlzLKimn5EQ2b2FSC+tAOpq302BuIMjyuUGvBiUhEcLIGMQ5g==", + "dev": true, + "optional": true }, - "@octokit/types": { - "version": "6.34.0", - "resolved": "https://registry.npmjs.org/@octokit/types/-/types-6.34.0.tgz", - "integrity": "sha512-s1zLBjWhdEI2zwaoSgyOFoKSl109CUcVBCc7biPJ3aAf6LGLU6szDvi31JPU7bxfla2lqfhjbbg/5DdFNxOwHw==", + "@parcel/watcher-wasm": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/@parcel/watcher-wasm/-/watcher-wasm-2.3.0.tgz", + "integrity": "sha512-ejBAX8H0ZGsD8lSICDNyMbSEtPMWgDL0WFCt/0z7hyf5v8Imz4rAM8xY379mBsECkq/Wdqa5WEDLqtjZ+6NxfA==", + "dev": true, "requires": { - "@octokit/openapi-types": "^11.2.0" + "is-glob": "^4.0.3", + "micromatch": "^4.0.5", + "napi-wasm": "^1.1.0" + }, + "dependencies": { + "napi-wasm": { + "version": "1.1.0", + "bundled": true, + "dev": true + } } }, + "@parcel/watcher-win32-arm64": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/@parcel/watcher-win32-arm64/-/watcher-win32-arm64-2.3.0.tgz", + "integrity": "sha512-35gXCnaz1AqIXpG42evcoP2+sNL62gZTMZne3IackM+6QlfMcJLy3DrjuL6Iks7Czpd3j4xRBzez3ADCj1l7Aw==", + "dev": true, + "optional": true + }, + "@parcel/watcher-win32-ia32": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/@parcel/watcher-win32-ia32/-/watcher-win32-ia32-2.3.0.tgz", + "integrity": "sha512-FJS/IBQHhRpZ6PiCjFt1UAcPr0YmCLHRbTc00IBTrelEjlmmgIVLeOx4MSXzx2HFEy5Jo5YdhGpxCuqCyDJ5ow==", + "dev": true, + "optional": true + }, + "@parcel/watcher-win32-x64": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/@parcel/watcher-win32-x64/-/watcher-win32-x64-2.3.0.tgz", + "integrity": "sha512-dLx+0XRdMnVI62kU3wbXvbIRhLck4aE28bIGKbRGS7BJNt54IIj9+c/Dkqb+7DJEbHUZAX1bwaoM8PqVlHJmCA==", + "dev": true, + "optional": true + }, "@slack/logger": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/@slack/logger/-/logger-3.0.0.tgz", @@ -14142,6 +14801,12 @@ } } }, + "b4a": { + "version": "1.6.4", + "resolved": "https://registry.npmjs.org/b4a/-/b4a-1.6.4.tgz", + "integrity": "sha512-fpWrvyVHEKyeEvbKZTVOeZF3VSKKWtJxFIxX/jaVPf+cLbGUSitjb49pHLqPV2BUNNZ0LcoeEGfE/YCpyDYHIw==", + "dev": true + }, "babel-code-frame": { "version": "6.26.0", "resolved": "https://registry.npmjs.org/babel-code-frame/-/babel-code-frame-6.26.0.tgz", @@ -14551,6 +15216,15 @@ "integrity": "sha512-eXTggHWSooYhq49F2opQhuHWgzucfF2YgODK4e1566GQs5BIfP30B0oenwBJHfWxAs2fyPB1s7Mg949zLf61Yw==", "dev": true }, + "citty": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/citty/-/citty-0.1.4.tgz", + "integrity": "sha512-Q3bK1huLxzQrvj7hImJ7Z1vKYJRPQCDnd0EjXfHMidcjecGOMuLrmuQmtWmFkuKLcMThlGh1yCKG8IEc6VeNXQ==", + "dev": true, + "requires": { + "consola": "^3.2.3" + } + }, "classnames": { "version": "2.2.6", "resolved": "https://registry.npmjs.org/classnames/-/classnames-2.2.6.tgz", @@ -14843,9 +15517,9 @@ } }, "consola": { - "version": "2.15.3", - "resolved": "https://registry.npmjs.org/consola/-/consola-2.15.3.tgz", - "integrity": "sha512-9vAdYbHj6x2fLKC4+oPH0kFzY/orMZyG2Aj+kNylHxKGJ/Ed4dpNyAQYwJOdqO4zdM7XpVHmyejQDcQHrnuXbw==", + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/consola/-/consola-3.2.3.tgz", + "integrity": "sha512-I5qxpzLv+sJhTVEoLYNcTW+bThDCPsit0vLNKShZx6rLtpilNpmmeTPaeqJb9ZE9dV3DGaeby6Vuhrw38WjeyQ==", "dev": true }, "convert-source-map": { @@ -15599,9 +16273,9 @@ "integrity": "sha512-Y2caI5+ZwS5c3RiNDJ6u53VhQHv+hHKwhkI1iHvceKUHw9Df6EK2zRLfjejRgMuCuxK7PfSWIMwWecceVvThjQ==" }, "defu": { - "version": "6.1.2", - "resolved": "https://registry.npmjs.org/defu/-/defu-6.1.2.tgz", - "integrity": "sha512-+uO4+qr7msjNNWKYPHqN/3+Dx3NFkmIzayk2L1MyZQlvgZb/J1A0fo410dpKrN2SnqFjt8n4JL8fDJE0wIgjFQ==", + "version": "6.1.3", + "resolved": "https://registry.npmjs.org/defu/-/defu-6.1.3.tgz", + "integrity": "sha512-Vy2wmG3NTkmHNg/kzpuvHhkqeIx3ODWqasgCRbKtbXEN0G+HpEEv9BtJLp7ZG1CZloFaC41Ah3ZFbq7aqCqMeQ==", "dev": true }, "delaunator": { @@ -15654,9 +16328,9 @@ } }, "detect-libc": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-2.0.1.tgz", - "integrity": "sha512-463v3ZeIrcWtdgIg6vI6XUncguvr2TnGl4SzDXinkt9mSLpBJKXT3mW6xT3VQdDN11+WVs29pgvivTc4Lp8v+w==", + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-1.0.3.tgz", + "integrity": "sha512-pGjwhsmsp4kL2RTz08wcOlGN83otlqHeD/Z5T8GXZB+/YcpQ/dgo+lbU8ZsGxV0HIvqqxo9l7mqYwyYMD9bKDg==", "dev": true }, "detective": { @@ -16035,6 +16709,12 @@ "integrity": "sha512-NCe8qxnZFARSHGztGMZOO/PC1qa5MIFB5Hp66WdzbCRAz8U8US3bx1UTgLS49efBQPcUtO9gf5oVEY8o7y/7Kg==", "dev": true }, + "fast-fifo": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/fast-fifo/-/fast-fifo-1.3.2.tgz", + "integrity": "sha512-/d9sfos4yxzpwkDkuN7k2SqFKtYNmCTzgfEpz82x34IM9/zc8KGxQoXg1liNC/izpRM/MBdt44Nmx41ZWqk+FQ==", + "dev": true + }, "fast-glob": { "version": "3.2.12", "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.12.tgz", @@ -16191,12 +16871,6 @@ "universalify": "^2.0.0" } }, - "fs-memo": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/fs-memo/-/fs-memo-1.2.0.tgz", - "integrity": "sha512-YEexkCpL4j03jn5SxaMHqcO6IuWuqm8JFUYhyCep7Ao89JIYmB8xoKhK7zXXJ9cCaNXpyNH5L3QtAmoxjoHW2w==", - "dev": true - }, "fs.realpath": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", @@ -16267,13 +16941,10 @@ } }, "get-port-please": { - "version": "2.6.1", - "resolved": "https://registry.npmjs.org/get-port-please/-/get-port-please-2.6.1.tgz", - "integrity": "sha512-4PDSrL6+cuMM1xs6w36ZIkaKzzE0xzfVBCfebHIJ3FE8iB9oic/ECwPw3iNiD4h1AoJ5XLLBhEviFAVrZsDC5A==", - "dev": true, - "requires": { - "fs-memo": "^1.2.0" - } + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/get-port-please/-/get-port-please-3.1.1.tgz", + "integrity": "sha512-3UBAyM3u4ZBVYDsxOQfJDxEa6XTbpBDrOjp4mf7ExFRt5BKs/QywQQiJsh2B+hxcZLSapWqCRvElUe8DnKcFHA==", + "dev": true }, "get-stream": { "version": "5.2.0", @@ -16475,18 +17146,27 @@ } }, "h3": { - "version": "1.6.6", - "resolved": "https://registry.npmjs.org/h3/-/h3-1.6.6.tgz", - "integrity": "sha512-DWu2s11OuuO9suEkX99dXaJoxd1RgPXiM4iDmLdrhGV63GLoav13f3Kdd5/Rw7xNKzhzn2+F2dleQjG66SnMPQ==", + "version": "1.8.2", + "resolved": "https://registry.npmjs.org/h3/-/h3-1.8.2.tgz", + "integrity": "sha512-1Ca0orJJlCaiFY68BvzQtP2lKLk46kcLAxVM8JgYbtm2cUg6IY7pjpYgWMwUvDO9QI30N5JAukOKoT8KD3Q0PQ==", "dev": true, "requires": { "cookie-es": "^1.0.0", "defu": "^6.1.2", - "destr": "^1.2.2", - "iron-webcrypto": "^0.7.0", - "radix3": "^1.0.1", - "ufo": "^1.1.2", - "uncrypto": "^0.1.2" + "destr": "^2.0.1", + "iron-webcrypto": "^0.10.1", + "radix3": "^1.1.0", + "ufo": "^1.3.0", + "uncrypto": "^0.1.3", + "unenv": "^1.7.4" + }, + "dependencies": { + "destr": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/destr/-/destr-2.0.2.tgz", + "integrity": "sha512-65AlobnZMiCET00KaFFjUefxDX0khFA/E4myqZ7a6Sq1yZtR8+FVIvilVX66vF2uobSumxooYZChiRPCKNqhmg==", + "dev": true + } } }, "has": { @@ -17001,49 +17681,44 @@ "standard-as-callback": "^2.1.0" } }, - "ip-regex": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/ip-regex/-/ip-regex-5.0.0.tgz", - "integrity": "sha512-fOCG6lhoKKakwv+C6KdsOnGvgXnmgfmp0myi3bcNwj3qfwPAxRKWEuFhvEFF7ceYIz6+1jRZ+yguLFAmUNPEfw==", - "dev": true - }, "ipx": { - "version": "0.9.11", - "resolved": "https://registry.npmjs.org/ipx/-/ipx-0.9.11.tgz", - "integrity": "sha512-/wsBt7hV8rvNR6O4kwgOUAhtm0F/M/mXaolXot/Bz7fdOD+W7i9OtWuoASWv1PFwwtOunhZGaoCx8BOpSdG2VQ==", + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/ipx/-/ipx-1.3.1.tgz", + "integrity": "sha512-hWRLXdMDOz2q81T2x9lowFtAGO3E5b2HtC8xOOBTrlnxygHNaVrZqJ5c1P3T7tDkC3oCocYRRz0VBffvJKeQlw==", "dev": true, "requires": { - "consola": "^2.15.3", - "defu": "^6.1.0", - "destr": "^1.1.1", + "@fastify/accept-negotiator": "^1.1.0", + "consola": "^3.2.3", + "defu": "^6.1.2", + "destr": "^2.0.1", "etag": "^1.8.1", "image-meta": "^0.1.1", - "listhen": "^0.2.15", - "ohmyfetch": "^0.4.18", - "pathe": "^0.3.5", - "sharp": "^0.30.7", - "ufo": "^0.8.5", + "listhen": "^1.5.5", + "node-fetch-native": "^1.4.0", + "pathe": "^1.1.1", + "sharp": "^0.32.6", + "ufo": "^1.3.1", "xss": "^1.0.14" }, "dependencies": { - "pathe": { - "version": "0.3.9", - "resolved": "https://registry.npmjs.org/pathe/-/pathe-0.3.9.tgz", - "integrity": "sha512-6Y6s0vT112P3jD8dGfuS6r+lpa0qqNrLyHPOwvXMnyNTQaYiwgau2DP3aNDsR13xqtGj7rrPo+jFUATpU6/s+g==", + "destr": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/destr/-/destr-2.0.2.tgz", + "integrity": "sha512-65AlobnZMiCET00KaFFjUefxDX0khFA/E4myqZ7a6Sq1yZtR8+FVIvilVX66vF2uobSumxooYZChiRPCKNqhmg==", "dev": true }, - "ufo": { - "version": "0.8.6", - "resolved": "https://registry.npmjs.org/ufo/-/ufo-0.8.6.tgz", - "integrity": "sha512-fk6CmUgwKCfX79EzcDQQpSCMxrHstvbLswFChHS0Vump+kFkw7nJBfTZoC1j0bOGoY9I7R3n2DGek5ajbcYnOw==", + "pathe": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/pathe/-/pathe-1.1.1.tgz", + "integrity": "sha512-d+RQGp0MAYTIaDBIMmOfMwz3E+LOZnxx1HZd5R18mmCZY0QBlK0LDZfPc8FW8Ed2DlvsuE6PRjroDY+wg4+j/Q==", "dev": true } } }, "iron-webcrypto": { - "version": "0.7.0", - "resolved": "https://registry.npmjs.org/iron-webcrypto/-/iron-webcrypto-0.7.0.tgz", - "integrity": "sha512-WkX32iTcwd79ZsWRPP5wq1Jq6XXfPwO783ZiUBY8uMw4/AByx5WvBmxvYGnpVt6AOVJ0F41Qo420r8lIneT9Wg==", + "version": "0.10.1", + "resolved": "https://registry.npmjs.org/iron-webcrypto/-/iron-webcrypto-0.10.1.tgz", + "integrity": "sha512-QGOS8MRMnj/UiOa+aMIgfyHcvkhqNUsUxb1XzskENvbo+rEfp6TOwqd1KPuDzXC4OnGHcMSVxDGRoilqB8ViqA==", "dev": true }, "is-alphabetical": { @@ -17310,6 +17985,12 @@ "resolved": "https://registry.npmjs.org/jgexml/-/jgexml-0.4.4.tgz", "integrity": "sha512-j0AzSWT7LXy3s3i1cdv5NZxUtscocwiBxgOLiEBfitCehm8STdXVrcOlbAWsJFLCq1elZYpQlGqA9k8Z+n9iJA==" }, + "jiti": { + "version": "1.21.0", + "resolved": "https://registry.npmjs.org/jiti/-/jiti-1.21.0.tgz", + "integrity": "sha512-gFqAIbuKyyso/3G2qhiO2OM6shY6EPP/R0+mkDbyspxKazh8BXDC5FiFsUjlczgdNz/vfra0da2y+aHrusLG/Q==", + "dev": true + }, "js-cookie": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/js-cookie/-/js-cookie-3.0.1.tgz", @@ -17375,6 +18056,12 @@ "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz", "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==" }, + "jsonc-parser": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/jsonc-parser/-/jsonc-parser-3.2.0.tgz", + "integrity": "sha512-gfFQZrcTc8CnKXp6Y4/CBT3fTc0OVuDofpre4aEeEpSBPV5X5v4+Vmx+8snU7RLPrNHPKSgLxGo9YuQzz20o+w==", + "dev": true + }, "jsonfile": { "version": "6.1.0", "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", @@ -17462,24 +18149,34 @@ } }, "listhen": { - "version": "0.2.15", - "resolved": "https://registry.npmjs.org/listhen/-/listhen-0.2.15.tgz", - "integrity": "sha512-F/IWj/aJLeokHAIVY+l3JoWRUnbRaf2F0cr+Ybc1YyozMA/yP0C2nf3c0Oi7vAbFvtfiwfWWfP7bIrQc/u5L1A==", + "version": "1.5.5", + "resolved": "https://registry.npmjs.org/listhen/-/listhen-1.5.5.tgz", + "integrity": "sha512-LXe8Xlyh3gnxdv4tSjTjscD1vpr/2PRpzq8YIaMJgyKzRG8wdISlWVWnGThJfHnlJ6hmLt2wq1yeeix0TEbuoA==", "dev": true, "requires": { + "@parcel/watcher": "^2.3.0", + "@parcel/watcher-wasm": "2.3.0", + "citty": "^0.1.4", "clipboardy": "^3.0.0", - "colorette": "^2.0.19", - "defu": "^6.0.0", - "get-port-please": "^2.6.1", + "consola": "^3.2.3", + "defu": "^6.1.2", + "get-port-please": "^3.1.1", + "h3": "^1.8.1", "http-shutdown": "^1.2.2", - "selfsigned": "^2.0.1", - "ufo": "^0.8.5" + "jiti": "^1.20.0", + "mlly": "^1.4.2", + "node-forge": "^1.3.1", + "pathe": "^1.1.1", + "std-env": "^3.4.3", + "ufo": "^1.3.0", + "untun": "^0.1.2", + "uqr": "^0.1.2" }, "dependencies": { - "ufo": { - "version": "0.8.6", - "resolved": "https://registry.npmjs.org/ufo/-/ufo-0.8.6.tgz", - "integrity": "sha512-fk6CmUgwKCfX79EzcDQQpSCMxrHstvbLswFChHS0Vump+kFkw7nJBfTZoC1j0bOGoY9I7R3n2DGek5ajbcYnOw==", + "pathe": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/pathe/-/pathe-1.1.1.tgz", + "integrity": "sha512-d+RQGp0MAYTIaDBIMmOfMwz3E+LOZnxx1HZd5R18mmCZY0QBlK0LDZfPc8FW8Ed2DlvsuE6PRjroDY+wg4+j/Q==", "dev": true } } @@ -18447,6 +19144,12 @@ "picomatch": "^2.3.1" } }, + "mime": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/mime/-/mime-3.0.0.tgz", + "integrity": "sha512-jSCU7/VB1loIWBZe14aEYHU/+1UMEHoaO7qxCOVJOw9GgH72VAWppxNcjU+x9a2k3GSIBXNKxXQFqRvvZ7vr3A==", + "dev": true + }, "mime-db": { "version": "1.52.0", "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", @@ -18553,9 +19256,9 @@ } }, "mkdirp": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", - "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-3.0.1.tgz", + "integrity": "sha512-+NsyUUAZDmo6YVHzL/stxSu3t9YS1iljliy3BSDrXJ/dkn1KYdmtZODGGjLcc9XLgVVpH4KshHB8XmZgMhaBXg==", "dev": true }, "mkdirp-classic": { @@ -18564,6 +19267,32 @@ "integrity": "sha512-gKLcREMhtuZRwRAfqP3RFW+TK4JqApVBtOIftVgjuABpAtpxhPGaDcfvbhNvD0B8iD1oUr/txX35NjcaY6Ns/A==", "dev": true }, + "mlly": { + "version": "1.4.2", + "resolved": "https://registry.npmjs.org/mlly/-/mlly-1.4.2.tgz", + "integrity": "sha512-i/Ykufi2t1EZ6NaPLdfnZk2AX8cs0d+mTzVKuPfqPKPatxLApaBoxJQ9x1/uckXtrS/U5oisPMDkNs0yQTaBRg==", + "dev": true, + "requires": { + "acorn": "^8.10.0", + "pathe": "^1.1.1", + "pkg-types": "^1.0.3", + "ufo": "^1.3.0" + }, + "dependencies": { + "acorn": { + "version": "8.11.2", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.11.2.tgz", + "integrity": "sha512-nc0Axzp/0FILLEVsm4fNwLCwMttvhEI263QtVPQcbpfZZ3ts0hLsZGOpE6czNlid7CJ9MlyH8reXkpsf3YUY4w==", + "dev": true + }, + "pathe": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/pathe/-/pathe-1.1.1.tgz", + "integrity": "sha512-d+RQGp0MAYTIaDBIMmOfMwz3E+LOZnxx1HZd5R18mmCZY0QBlK0LDZfPc8FW8Ed2DlvsuE6PRjroDY+wg4+j/Q==", + "dev": true + } + } + }, "moize": { "version": "6.1.6", "resolved": "https://registry.npmjs.org/moize/-/moize-6.1.6.tgz", @@ -18706,18 +19435,18 @@ } }, "node-abi": { - "version": "3.40.0", - "resolved": "https://registry.npmjs.org/node-abi/-/node-abi-3.40.0.tgz", - "integrity": "sha512-zNy02qivjjRosswoYmPi8hIKJRr8MpQyeKT6qlcq/OnOgA3Rhoae+IYOqsM9V5+JnHWmxKnWOT2GxvtqdtOCXA==", + "version": "3.51.0", + "resolved": "https://registry.npmjs.org/node-abi/-/node-abi-3.51.0.tgz", + "integrity": "sha512-SQkEP4hmNWjlniS5zdnfIXTk1x7Ome85RDzHlTbBtzE97Gfwz/Ipw4v/Ryk20DWIy3yCNVLVlGKApCnmvYoJbA==", "dev": true, "requires": { "semver": "^7.3.5" } }, "node-addon-api": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-5.1.0.tgz", - "integrity": "sha512-eh0GgfEkpnoWDq+VY8OyvYhFEzBk6jIYbRKdIlyTiAXIVJ8PyBaKb0rp7oDtoddbdoHWhq8wwr+XZ81F1rpNdA==", + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-7.0.0.tgz", + "integrity": "sha512-vgbBJTS4m5/KkE16t5Ly0WW9hz46swAstv0hYYwMtbG7AznRhNyfLRe8HZAiWIpcHzoO7HxhLuBQj9rJ/Ho0ZA==", "dev": true }, "node-fetch": { @@ -18729,9 +19458,9 @@ } }, "node-fetch-native": { - "version": "0.1.8", - "resolved": "https://registry.npmjs.org/node-fetch-native/-/node-fetch-native-0.1.8.tgz", - "integrity": "sha512-ZNaury9r0NxaT2oL65GvdGDy+5PlSaHTovT6JV5tOW07k1TQmgC0olZETa4C9KZg0+6zBr99ctTYa3Utqj9P/Q==", + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/node-fetch-native/-/node-fetch-native-1.4.1.tgz", + "integrity": "sha512-NsXBU0UgBxo2rQLOeWNZqS3fvflWePMECr8CoSWoSTqCqGbVVsvl9vZu1HfQicYN0g5piV9Gh8RTEvo/uP752w==", "dev": true }, "node-forge": { @@ -18818,40 +19547,20 @@ } }, "ofetch": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/ofetch/-/ofetch-1.0.1.tgz", - "integrity": "sha512-icBz2JYfEpt+wZz1FRoGcrMigjNKjzvufE26m9+yUiacRQRHwnNlGRPiDnW4op7WX/MR6aniwS8xw8jyVelF2g==", - "dev": true, - "requires": { - "destr": "^1.2.2", - "node-fetch-native": "^1.0.2", - "ufo": "^1.1.0" - }, - "dependencies": { - "node-fetch-native": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/node-fetch-native/-/node-fetch-native-1.1.1.tgz", - "integrity": "sha512-9VvspTSUp2Sxbl+9vbZTlFGq9lHwE8GDVVekxx6YsNd1YH59sb3Ba8v3Y3cD8PkLNcileGGcA21PFjVl0jzDaw==", - "dev": true - } - } - }, - "ohmyfetch": { - "version": "0.4.21", - "resolved": "https://registry.npmjs.org/ohmyfetch/-/ohmyfetch-0.4.21.tgz", - "integrity": "sha512-VG7f/JRvqvBOYvL0tHyEIEG7XHWm7OqIfAs6/HqwWwDfjiJ1g0huIpe5sFEmyb+7hpFa1EGNH2aERWR72tlClw==", + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/ofetch/-/ofetch-1.3.3.tgz", + "integrity": "sha512-s1ZCMmQWXy4b5K/TW9i/DtiN8Ku+xCiHcjQ6/J/nDdssirrQNOoB165Zu8EqLMA2lln1JUth9a0aW9Ap2ctrUg==", "dev": true, "requires": { - "destr": "^1.2.0", - "node-fetch-native": "^0.1.8", - "ufo": "^0.8.6", - "undici": "^5.12.0" + "destr": "^2.0.1", + "node-fetch-native": "^1.4.0", + "ufo": "^1.3.0" }, "dependencies": { - "ufo": { - "version": "0.8.6", - "resolved": "https://registry.npmjs.org/ufo/-/ufo-0.8.6.tgz", - "integrity": "sha512-fk6CmUgwKCfX79EzcDQQpSCMxrHstvbLswFChHS0Vump+kFkw7nJBfTZoC1j0bOGoY9I7R3n2DGek5ajbcYnOw==", + "destr": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/destr/-/destr-2.0.2.tgz", + "integrity": "sha512-65AlobnZMiCET00KaFFjUefxDX0khFA/E4myqZ7a6Sq1yZtR8+FVIvilVX66vF2uobSumxooYZChiRPCKNqhmg==", "dev": true } } @@ -19177,6 +19886,25 @@ "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", "integrity": "sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==" }, + "pkg-types": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/pkg-types/-/pkg-types-1.0.3.tgz", + "integrity": "sha512-nN7pYi0AQqJnoLPC9eHFQ8AcyaixBUOwvqc5TDnIKCMEE6I0y8P7OKA7fPexsXGCGxQDl/cmrLAp26LhcwxZ4A==", + "dev": true, + "requires": { + "jsonc-parser": "^3.2.0", + "mlly": "^1.2.0", + "pathe": "^1.1.0" + }, + "dependencies": { + "pathe": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/pathe/-/pathe-1.1.1.tgz", + "integrity": "sha512-d+RQGp0MAYTIaDBIMmOfMwz3E+LOZnxx1HZd5R18mmCZY0QBlK0LDZfPc8FW8Ed2DlvsuE6PRjroDY+wg4+j/Q==", + "dev": true + } + } + }, "point-in-polygon": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/point-in-polygon/-/point-in-polygon-1.1.0.tgz", @@ -19643,6 +20371,50 @@ "simple-get": "^4.0.0", "tar-fs": "^2.0.0", "tunnel-agent": "^0.6.0" + }, + "dependencies": { + "detect-libc": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-2.0.2.tgz", + "integrity": "sha512-UX6sGumvvqSaXgdKGUsgZWqcUyIXZ/vZTrlRT/iobiKhGL0zL4d3osHj3uqllWJK+i+sixDS/3COVEOFbupFyw==", + "dev": true + }, + "readable-stream": { + "version": "3.6.2", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", + "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", + "dev": true, + "requires": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + } + }, + "tar-fs": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/tar-fs/-/tar-fs-2.1.1.tgz", + "integrity": "sha512-V0r2Y9scmbDRLCNex/+hYzvp/zyYjvFbHPNgVTKfQvVrb6guiE/fxP+XblDNR011utopbkex2nM4dHNV6GDsng==", + "dev": true, + "requires": { + "chownr": "^1.1.1", + "mkdirp-classic": "^0.5.2", + "pump": "^3.0.0", + "tar-stream": "^2.1.4" + } + }, + "tar-stream": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-2.2.0.tgz", + "integrity": "sha512-ujeqbceABgwMZxEJnk2HDY2DlnUZ+9oEcb1KzTVfYHio0UE6dG71n60d8D2I4qNvleWrrXpmjpt7vZeF1LnMZQ==", + "dev": true, + "requires": { + "bl": "^4.0.3", + "end-of-stream": "^1.4.1", + "fs-constants": "^1.0.0", + "inherits": "^2.0.3", + "readable-stream": "^3.1.1" + } + } } }, "pretty-bytes": { @@ -19774,15 +20546,21 @@ "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==" }, + "queue-tick": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/queue-tick/-/queue-tick-1.0.1.tgz", + "integrity": "sha512-kJt5qhMxoszgU/62PLP1CJytzd2NKetjSRnyuj31fDd3Rlcz3fzlFdFLD1SItunPwyqEOkca6GbV612BWfaBag==", + "dev": true + }, "quick-lru": { "version": "5.1.1", "resolved": "https://registry.npmjs.org/quick-lru/-/quick-lru-5.1.1.tgz", "integrity": "sha512-WuyALRjWPDGtt/wzJiadO5AXY+8hZ80hVpe6MyivgraREW751X3SbhRvG3eLKOYN+8VEvqLcf3wdnt44Z4S4SA==" }, "radix3": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/radix3/-/radix3-1.0.1.tgz", - "integrity": "sha512-y+AcwZ3HcUIGc9zGsNVf5+BY/LxL+z+4h4J3/pp8jxSmy1STaCocPS3qrj4tA5ehUSzqtqK+0Aygvz/r/8vy4g==", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/radix3/-/radix3-1.1.0.tgz", + "integrity": "sha512-pNsHDxbGORSvuSScqNJ+3Km6QAVqk8CfsCBIEoDgpqLrkD2f3QM4I7d1ozJJ172OmIcoUcerZaNWqtLkRXTV3A==", "dev": true }, "raf": { @@ -19841,12 +20619,6 @@ "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz", "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==", "dev": true - }, - "strip-json-comments": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz", - "integrity": "sha512-4gB8na07fecVVkOI6Rs4e7T6NOTki5EmL7TUduTs6bu3EdnSycntVJ4re8kgZA+wx9IueI2Y11bfbgwtzuE0KQ==", - "dev": true } } }, @@ -20427,15 +21199,6 @@ "integrity": "sha512-OwpTSOfy6xSs1+pwcNrv0RBMOzI39Lp3qQKUTPVVPRjCdNa5JH/oPRiqsesIskK8TVgmRiHwO4KXlV2Li9dANA==", "optional": true }, - "selfsigned": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/selfsigned/-/selfsigned-2.1.1.tgz", - "integrity": "sha512-GSL3aowiF7wa/WtSFwnUrludWFoNhftq8bUkH9pkzjpN2XSPOAYEgg6e0sS9s0rZwgJzJiQRPU18A6clnoW5wQ==", - "dev": true, - "requires": { - "node-forge": "^1" - } - }, "semver": { "version": "7.5.4", "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", @@ -20459,19 +21222,33 @@ "integrity": "sha1-KQy7Iy4waULX1+qbg3Mqt4VvgoU=" }, "sharp": { - "version": "0.30.7", - "resolved": "https://registry.npmjs.org/sharp/-/sharp-0.30.7.tgz", - "integrity": "sha512-G+MY2YW33jgflKPTXXptVO28HvNOo9G3j0MybYAHeEmby+QuD2U98dT6ueht9cv/XDqZspSpIhoSW+BAKJ7Hig==", + "version": "0.32.6", + "resolved": "https://registry.npmjs.org/sharp/-/sharp-0.32.6.tgz", + "integrity": "sha512-KyLTWwgcR9Oe4d9HwCwNM2l7+J0dUQwn/yf7S0EnTtb0eVS4RxO0eUSvxPtzT4F3SY+C4K6fqdv/DO27sJ/v/w==", "dev": true, "requires": { "color": "^4.2.3", - "detect-libc": "^2.0.1", - "node-addon-api": "^5.0.0", + "detect-libc": "^2.0.2", + "node-addon-api": "^6.1.0", "prebuild-install": "^7.1.1", - "semver": "^7.3.7", + "semver": "^7.5.4", "simple-get": "^4.0.1", - "tar-fs": "^2.1.1", + "tar-fs": "^3.0.4", "tunnel-agent": "^0.6.0" + }, + "dependencies": { + "detect-libc": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-2.0.2.tgz", + "integrity": "sha512-UX6sGumvvqSaXgdKGUsgZWqcUyIXZ/vZTrlRT/iobiKhGL0zL4d3osHj3uqllWJK+i+sixDS/3COVEOFbupFyw==", + "dev": true + }, + "node-addon-api": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-6.1.0.tgz", + "integrity": "sha512-+eawOlIgy680F0kBzPUNFhMZGtJ1YmqM6l4+Crf4IkImjYrO/mqPwRMh352g23uIaQKFItcQ64I7KMaJxHgAVA==", + "dev": true + } } }, "shebang-command": { @@ -20653,6 +21430,22 @@ "resolved": "https://registry.npmjs.org/state-toggle/-/state-toggle-1.0.3.tgz", "integrity": "sha512-d/5Z4/2iiCnHw6Xzghyhb+GcmF89bxwgXG60wjIiZaxnymbyOmI8Hk4VqHXiVVp6u2ysaskFfXg3ekCj4WNftQ==" }, + "std-env": { + "version": "3.5.0", + "resolved": "https://registry.npmjs.org/std-env/-/std-env-3.5.0.tgz", + "integrity": "sha512-JGUEaALvL0Mf6JCfYnJOTcobY+Nc7sG/TemDRBqCA0wEr4DER7zDchaaixTlmOxAjG1uRJmX82EQcxwTQTkqVA==", + "dev": true + }, + "streamx": { + "version": "2.15.5", + "resolved": "https://registry.npmjs.org/streamx/-/streamx-2.15.5.tgz", + "integrity": "sha512-9thPGMkKC2GctCzyCUjME3yR03x2xNo0GPKGkRw2UMYN+gqWa9uqpyNWhmsNCutU5zHmkUum0LsCRQTXUgUCAg==", + "dev": true, + "requires": { + "fast-fifo": "^1.1.0", + "queue-tick": "^1.0.1" + } + }, "string_decoder": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", @@ -20727,6 +21520,12 @@ "integrity": "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==", "dev": true }, + "strip-json-comments": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz", + "integrity": "sha512-4gB8na07fecVVkOI6Rs4e7T6NOTki5EmL7TUduTs6bu3EdnSycntVJ4re8kgZA+wx9IueI2Y11bfbgwtzuE0KQ==", + "dev": true + }, "style-to-object": { "version": "0.4.1", "resolved": "https://registry.npmjs.org/style-to-object/-/style-to-object-0.4.1.tgz", @@ -20903,41 +21702,25 @@ } }, "tar-fs": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/tar-fs/-/tar-fs-2.1.1.tgz", - "integrity": "sha512-V0r2Y9scmbDRLCNex/+hYzvp/zyYjvFbHPNgVTKfQvVrb6guiE/fxP+XblDNR011utopbkex2nM4dHNV6GDsng==", + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/tar-fs/-/tar-fs-3.0.4.tgz", + "integrity": "sha512-5AFQU8b9qLfZCX9zp2duONhPmZv0hGYiBPJsyUdqMjzq/mqVpy/rEUSeHk1+YitmxugaptgBh5oDGU3VsAJq4w==", "dev": true, "requires": { - "chownr": "^1.1.1", "mkdirp-classic": "^0.5.2", "pump": "^3.0.0", - "tar-stream": "^2.1.4" + "tar-stream": "^3.1.5" } }, "tar-stream": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-2.2.0.tgz", - "integrity": "sha512-ujeqbceABgwMZxEJnk2HDY2DlnUZ+9oEcb1KzTVfYHio0UE6dG71n60d8D2I4qNvleWrrXpmjpt7vZeF1LnMZQ==", + "version": "3.1.6", + "resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-3.1.6.tgz", + "integrity": "sha512-B/UyjYwPpMBv+PaFSWAmtYjwdrlEaZQEhMIBFNC5oEG8lpiW8XjcSdmEaClj28ArfKScKHs2nshz3k2le6crsg==", "dev": true, "requires": { - "bl": "^4.0.3", - "end-of-stream": "^1.4.1", - "fs-constants": "^1.0.0", - "inherits": "^2.0.3", - "readable-stream": "^3.1.1" - }, - "dependencies": { - "readable-stream": { - "version": "3.6.2", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", - "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", - "dev": true, - "requires": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" - } - } + "b4a": "^1.6.4", + "fast-fifo": "^1.2.0", + "streamx": "^2.15.0" } }, "throttleit": { @@ -21110,24 +21893,36 @@ "integrity": "sha512-qLK/Xe9E2uzmYI3qLeOmI0tEOt+TBBQyUIAh4aAgU05FVYzeZrKUdkAZfBNVGRaHVgV0TDkdEngJSw/SyQchkQ==" }, "ufo": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/ufo/-/ufo-1.1.2.tgz", - "integrity": "sha512-TrY6DsjTQQgyS3E3dBaOXf0TpPD8u9FVrVYmKVegJuFw51n/YB9XPt+U6ydzFG5ZIN7+DIjPbNmXoBj9esYhgQ==", + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/ufo/-/ufo-1.3.2.tgz", + "integrity": "sha512-o+ORpgGwaYQXgqGDwd+hkS4PuZ3QnmqMMxRuajK/a38L6fTpcE5GPIfrf+L/KemFzfUpeUQc1rRS1iDBozvnFA==", "dev": true }, "uncrypto": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/uncrypto/-/uncrypto-0.1.2.tgz", - "integrity": "sha512-kuZwRKV615lEw/Xx3Iz56FKk3nOeOVGaVmw0eg+x4Mne28lCotNFbBhDW7dEBCBKyKbRQiCadEZeNAFPVC5cgw==", + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/uncrypto/-/uncrypto-0.1.3.tgz", + "integrity": "sha512-Ql87qFHB3s/De2ClA9e0gsnS6zXG27SkTiSJwjCc9MebbfapQfuPzumMIUMi38ezPZVNFcHI9sUIepeQfw8J8Q==", "dev": true }, - "undici": { - "version": "5.26.3", - "resolved": "https://registry.npmjs.org/undici/-/undici-5.26.3.tgz", - "integrity": "sha512-H7n2zmKEWgOllKkIUkLvFmsJQj062lSm3uA4EYApG8gLuiOM0/go9bIoC3HVaSnfg4xunowDE2i9p8drkXuvDw==", + "unenv": { + "version": "1.7.4", + "resolved": "https://registry.npmjs.org/unenv/-/unenv-1.7.4.tgz", + "integrity": "sha512-fjYsXYi30It0YCQYqLOcT6fHfMXsBr2hw9XC7ycf8rTG7Xxpe3ZssiqUnD0khrjiZEmkBXWLwm42yCSCH46fMw==", "dev": true, "requires": { - "@fastify/busboy": "^2.0.0" + "consola": "^3.2.3", + "defu": "^6.1.2", + "mime": "^3.0.0", + "node-fetch-native": "^1.4.0", + "pathe": "^1.1.1" + }, + "dependencies": { + "pathe": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/pathe/-/pathe-1.1.1.tgz", + "integrity": "sha512-d+RQGp0MAYTIaDBIMmOfMwz3E+LOZnxx1HZd5R18mmCZY0QBlK0LDZfPc8FW8Ed2DlvsuE6PRjroDY+wg4+j/Q==", + "dev": true + } } }, "unherit": { @@ -21269,57 +22064,38 @@ "dev": true }, "unstorage": { - "version": "1.6.1", - "resolved": "https://registry.npmjs.org/unstorage/-/unstorage-1.6.1.tgz", - "integrity": "sha512-GUJzwbP5IStEGZy9/0peRqef5CY9icqApsSu8vxj13admjISyz1g5eYk2wPRBjmZhQ3DUMQ36q+zwTbe68khew==", + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/unstorage/-/unstorage-1.9.0.tgz", + "integrity": "sha512-VpD8ZEYc/le8DZCrny3bnqKE4ZjioQxBRnWE+j5sGNvziPjeDlaS1NaFFHzl/kkXaO3r7UaF8MGQrs14+1B4pQ==", "dev": true, "requires": { "anymatch": "^3.1.3", "chokidar": "^3.5.3", - "destr": "^1.2.2", - "h3": "^1.6.6", + "destr": "^2.0.1", + "h3": "^1.7.1", "ioredis": "^5.3.2", - "listhen": "^1.0.4", - "lru-cache": "^9.1.1", + "listhen": "^1.2.2", + "lru-cache": "^10.0.0", "mri": "^1.2.0", - "node-fetch-native": "^1.1.1", - "ofetch": "^1.0.1", - "ufo": "^1.1.2" + "node-fetch-native": "^1.2.0", + "ofetch": "^1.1.1", + "ufo": "^1.2.0" }, "dependencies": { - "get-port-please": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/get-port-please/-/get-port-please-3.0.1.tgz", - "integrity": "sha512-R5pcVO8Z1+pVDu8Ml3xaJCEkBiiy1VQN9za0YqH8GIi1nIqD4IzQhzY6dDzMRtdS1lyiGlucRzm8IN8wtLIXng==", + "destr": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/destr/-/destr-2.0.2.tgz", + "integrity": "sha512-65AlobnZMiCET00KaFFjUefxDX0khFA/E4myqZ7a6Sq1yZtR8+FVIvilVX66vF2uobSumxooYZChiRPCKNqhmg==", "dev": true }, - "listhen": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/listhen/-/listhen-1.0.4.tgz", - "integrity": "sha512-r94k7kmXHb8e8wpv7+UP/qqhhD+j/9TgX19QKim2cEJuWCLwlTw+5BkCFmYyjhQ7Bt8KdVun/2DcD7MF2Fe3+g==", + "lru-cache": { + "version": "10.0.2", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.0.2.tgz", + "integrity": "sha512-Yj9mA8fPiVgOUpByoTZO5pNrcl5Yk37FcSHsUINpAsaBIEZIuqcCclDZJCVxqQShDsmYX8QG63svJiTbOATZwg==", "dev": true, "requires": { - "clipboardy": "^3.0.0", - "colorette": "^2.0.19", - "defu": "^6.1.2", - "get-port-please": "^3.0.1", - "http-shutdown": "^1.2.2", - "ip-regex": "^5.0.0", - "node-forge": "^1.3.1", - "ufo": "^1.1.1" + "semver": "^7.3.5" } - }, - "lru-cache": { - "version": "9.1.1", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-9.1.1.tgz", - "integrity": "sha512-65/Jky17UwSb0BuB9V+MyDpsOtXKmYwzhyl+cOa9XUiI4uV2Ouy/2voFP3+al0BjZbJgMBD8FojMpAf+Z+qn4A==", - "dev": true - }, - "node-fetch-native": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/node-fetch-native/-/node-fetch-native-1.1.1.tgz", - "integrity": "sha512-9VvspTSUp2Sxbl+9vbZTlFGq9lHwE8GDVVekxx6YsNd1YH59sb3Ba8v3Y3cD8PkLNcileGGcA21PFjVl0jzDaw==", - "dev": true } } }, @@ -21329,6 +22105,25 @@ "integrity": "sha512-KK8xQ1mkzZeg9inewmFVDNkg3l5LUhoq9kN6iWYB/CC9YMG8HA+c1Q8HwDe6dEX7kErrEVNVBO3fWsVq5iDgtw==", "dev": true }, + "untun": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/untun/-/untun-0.1.2.tgz", + "integrity": "sha512-wLAMWvxfqyTiBODA1lg3IXHQtjggYLeTK7RnSfqtOXixWJ3bAa2kK/HHmOOg19upteqO3muLvN6O/icbyQY33Q==", + "dev": true, + "requires": { + "citty": "^0.1.3", + "consola": "^3.2.3", + "pathe": "^1.1.1" + }, + "dependencies": { + "pathe": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/pathe/-/pathe-1.1.1.tgz", + "integrity": "sha512-d+RQGp0MAYTIaDBIMmOfMwz3E+LOZnxx1HZd5R18mmCZY0QBlK0LDZfPc8FW8Ed2DlvsuE6PRjroDY+wg4+j/Q==", + "dev": true + } + } + }, "update-browserslist-db": { "version": "1.0.10", "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.10.tgz", @@ -21338,6 +22133,12 @@ "picocolors": "^1.0.0" } }, + "uqr": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/uqr/-/uqr-0.1.2.tgz", + "integrity": "sha512-MJu7ypHq6QasgF5YRTjqscSzQp/W11zoUk6kvmlH+fmWEs63Y0Eib13hYFwAzagRJcVY8WVnlV+eBDUGMJ5IbA==", + "dev": true + }, "uri-js": { "version": "4.4.1", "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", @@ -21361,6 +22162,12 @@ "resolved": "https://registry.npmjs.org/url-template/-/url-template-2.0.8.tgz", "integrity": "sha1-/FZaPMy/93MMd19WQflVV5FDnyE=" }, + "urlpattern-polyfill": { + "version": "8.0.2", + "resolved": "https://registry.npmjs.org/urlpattern-polyfill/-/urlpattern-polyfill-8.0.2.tgz", + "integrity": "sha512-Qp95D4TPJl1kC9SKigDcqgyM2VDVO4RiJc2d4qe5GrYm+zbIQCWWKAFaJNQ4BhdFeDGwBmAxqJBwWSJDb9T3BQ==", + "dev": true + }, "use-isomorphic-layout-effect": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/use-isomorphic-layout-effect/-/use-isomorphic-layout-effect-1.1.2.tgz", From deeb2a5764ece351548d720d5e05820299e2075a Mon Sep 17 00:00:00 2001 From: asyncapi-bot Date: Fri, 17 Nov 2023 01:29:22 +0100 Subject: [PATCH 083/134] chore: update meetings.json and newsrooom_videos.json (#2327) --- config/meetings.json | 7 -- dashboard.json | 258 ++++++++++--------------------------------- 2 files changed, 58 insertions(+), 207 deletions(-) diff --git a/config/meetings.json b/config/meetings.json index a4ed29042ff..19a01a76d0a 100644 --- a/config/meetings.json +++ b/config/meetings.json @@ -13,13 +13,6 @@ "banner": "", "date": "2023-08-31T14:30:00.000Z" }, - { - "title": "Community Meeting", - "calLink": "https://www.google.com/calendar/event?eid=YmlybTZwODdmMzBnNGg0b3J1OWxmdnBxNmMgY19xOXRzZWlnbG9tZHNqNm5qdWh2YnB0czExY0Bn", - "url": "https://github.com/asyncapi/community/issues/818", - "banner": "https://user-images.githubusercontent.com/40604284/256949583-958c34c8-4256-4ac5-852b-e00ec094fad0.png", - "date": "2023-08-08T16:00:00.000Z" - }, { "title": "Community Meeting", "calLink": "https://www.google.com/calendar/event?eid=Z3YzNDRwamprYzMwNTluYTdtNG1iaHA5NjggY19xOXRzZWlnbG9tZHNqNm5qdWh2YnB0czExY0Bn", diff --git a/dashboard.json b/dashboard.json index 76196239ee0..6f9782d283a 100644 --- a/dashboard.json +++ b/dashboard.json @@ -41,18 +41,43 @@ "resourcePath": "/asyncapi/website/pull/2038", "repo": "asyncapi/website", "labels": [], - "score": 39.63009324739771 + "score": 40.77879160239474 }, { - "id": "PR_kwDOFLhIt85Vmgtj", - "isPR": true, + "id": "I_kwDOFLhIt84-OUI3", + "isPR": false, "isAssigned": false, - "title": "feat: youtube to anchor workflow", - "author": "AnimeshKumar923", - "resourcePath": "/asyncapi/community/pull/805", + "title": "Create educational & technical video explaining AsyncAPI's main features", + "author": "alequetzalli", + "resourcePath": "/asyncapi/community/issues/155", "repo": "asyncapi/community", - "labels": [], - "score": 30.727680996170687 + "labels": [ + { + "name": "enhancement", + "color": "a2eeef" + } + ], + "score": 33.31225229491402 + }, + { + "id": "MDU6SXNzdWU5OTMxODc5ODM=", + "isPR": false, + "isAssigned": false, + "title": "Proposal to allow defining schema format other than default one (AsyncAPI Schema)", + "author": "magicmatatjahu", + "resourcePath": "/asyncapi/spec/issues/622", + "repo": "asyncapi/spec", + "labels": [ + { + "name": "stale", + "color": "819cd3" + }, + { + "name": "💭 Strawman (RFC 0)", + "color": "C2E0C6" + } + ], + "score": 23.26114168868996 }, { "id": "I_kwDOBGu-184_rP6l", @@ -102,41 +127,6 @@ ], "score": 19.527872034949596 }, - { - "id": "PR_kwDOBW5R_c5VAjCE", - "isPR": true, - "isAssigned": true, - "title": "docs: structure of a AsyncAPI document", - "author": "TRohit20", - "resourcePath": "/asyncapi/website/pull/1922", - "repo": "asyncapi/website", - "labels": [ - { - "name": "📑 docs", - "color": "E50E99" - }, - { - "name": "area/docs", - "color": "e50e99" - }, - { - "name": "gsod", - "color": "7B5DB8" - } - ], - "score": 17.517649913704783 - }, - { - "id": "PR_kwDOFDnrNc5RUbi_", - "isPR": true, - "isAssigned": false, - "title": "fix: help command", - "author": "sambhavgupta0705", - "resourcePath": "/asyncapi/cli/pull/593", - "repo": "asyncapi/cli", - "labels": [], - "score": 15.220253203710714 - }, { "id": "PR_kwDOFLhIt85bqKL8", "isPR": true, @@ -146,6 +136,17 @@ "resourcePath": "/asyncapi/community/pull/897", "repo": "asyncapi/community", "labels": [], + "score": 16.65612614745701 + }, + { + "id": "MDU6SXNzdWUxMjMwODQwMDM4", + "isPR": false, + "isAssigned": false, + "title": "Usages of allOf within message payload could be flattened", + "author": "jamescrowley", + "resourcePath": "/asyncapi/asyncapi-react/issues/596", + "repo": "asyncapi/asyncapi-react", + "labels": [], "score": 14.933078614961456 }, { @@ -160,43 +161,30 @@ "score": 14.645904026212197 }, { - "id": "PR_kwDOBW5R_c5VmsTR", + "id": "PR_kwDOBW5R_c5dJ7hJ", "isPR": true, - "isAssigned": true, - "title": "docs: tags in a AsyncAPI document", - "author": "TRohit20", - "resourcePath": "/asyncapi/website/pull/1957", + "isAssigned": false, + "title": "docs: Tutorial for WebSockets with AsyncAPI", + "author": "VaishnaviNandakumar", + "resourcePath": "/asyncapi/website/pull/2245", "repo": "asyncapi/website", - "labels": [ - { - "name": "📑 docs", - "color": "E50E99" - }, - { - "name": "area/docs", - "color": "e50e99" - }, - { - "name": "gsod", - "color": "7B5DB8" - } - ], - "score": 14.07155484871368 + "labels": [], + "score": 13.497205671215161 } ], "goodFirstIssues": [ { - "id": "I_kwDOCxglSM513Nta", - "title": "Remove messageId from v3 conversion", + "id": "I_kwDOE8Qh38521iLW", + "title": "CSharp generator does not generate DateTime properties", "isAssigned": false, - "resourcePath": "/asyncapi/converter-js/issues/201", - "repo": "asyncapi/converter-js", - "author": "jonaslagoni", + "resourcePath": "/asyncapi/modelina/issues/1607", + "repo": "asyncapi/modelina", + "author": "jano-petras", "area": "typescript", "labels": [ { - "name": "enhancement", - "color": "a2eeef" + "name": "bug", + "color": "d73a4a" } ] }, @@ -596,36 +584,6 @@ } ] }, - { - "id": "I_kwDOBW5R_c5qChBD", - "title": "[📑 Docs]: Adapt message validation guide for v3", - "isAssigned": true, - "resourcePath": "/asyncapi/website/issues/1865", - "repo": "asyncapi/website", - "author": "jonaslagoni", - "area": "docs", - "labels": [ - { - "name": "📑 docs", - "color": "E50E99" - } - ] - }, - { - "id": "I_kwDOBW5R_c5qCfY8", - "title": "[📑 Docs]: Adapt Validate AsyncAPI documents guide for v3", - "isAssigned": true, - "resourcePath": "/asyncapi/website/issues/1864", - "repo": "asyncapi/website", - "author": "jonaslagoni", - "area": "docs", - "labels": [ - { - "name": "📑 docs", - "color": "E50E99" - } - ] - }, { "id": "I_kwDOBW5R_c5qCdE5", "title": "[📑 Docs]: Adapt Streetlights - Interactive tutorial for v3", @@ -645,96 +603,6 @@ } ] }, - { - "id": "I_kwDOBW5R_c5qCcei", - "title": "[📑 Docs]: Adapt studio document validation tutorial for v3", - "isAssigned": true, - "resourcePath": "/asyncapi/website/issues/1862", - "repo": "asyncapi/website", - "author": "jonaslagoni", - "area": "docs", - "labels": [ - { - "name": "📑 docs", - "color": "E50E99" - } - ] - }, - { - "id": "I_kwDOBW5R_c5qCbgt", - "title": "[📑 Docs]: Adapt Create AsyncAPI document tutorial for v3", - "isAssigned": true, - "resourcePath": "/asyncapi/website/issues/1861", - "repo": "asyncapi/website", - "author": "jonaslagoni", - "area": "docs", - "labels": [ - { - "name": "📑 docs", - "color": "E50E99" - } - ] - }, - { - "id": "I_kwDOBW5R_c5qCX8o", - "title": "[📑 Docs]: Adapt Server Security tutorial for v3", - "isAssigned": true, - "resourcePath": "/asyncapi/website/issues/1860", - "repo": "asyncapi/website", - "author": "jonaslagoni", - "area": "docs", - "labels": [ - { - "name": "📑 docs", - "color": "E50E99" - } - ] - }, - { - "id": "I_kwDOBW5R_c5qCUxQ", - "title": "[📑 Docs]: Adapt Servers tutorial for v3", - "isAssigned": true, - "resourcePath": "/asyncapi/website/issues/1859", - "repo": "asyncapi/website", - "author": "jonaslagoni", - "area": "docs", - "labels": [ - { - "name": "📑 docs", - "color": "E50E99" - } - ] - }, - { - "id": "I_kwDOBW5R_c5qCQYN", - "title": "[📑 Docs]: Adapt AsyncAPI Documents tutorial for v3", - "isAssigned": true, - "resourcePath": "/asyncapi/website/issues/1858", - "repo": "asyncapi/website", - "author": "jonaslagoni", - "area": "docs", - "labels": [ - { - "name": "📑 docs", - "color": "E50E99" - } - ] - }, - { - "id": "I_kwDOBW5R_c5qCNJX", - "title": "[📑 Docs]: Adapt hello world tutorial for v3", - "isAssigned": true, - "resourcePath": "/asyncapi/website/issues/1857", - "repo": "asyncapi/website", - "author": "jonaslagoni", - "area": "docs", - "labels": [ - { - "name": "📑 docs", - "color": "E50E99" - } - ] - }, { "id": "I_kwDOBW5R_c5qCLdo", "title": "[📑 Docs]: Adapt coming from OpenAPI tutorial for v3", @@ -750,16 +618,6 @@ } ] }, - { - "id": "I_kwDOBW5R_c5qCG1z", - "title": "[📑 Docs]: Adapt github action tooling page for v3", - "isAssigned": true, - "resourcePath": "/asyncapi/website/issues/1854", - "repo": "asyncapi/website", - "author": "jonaslagoni", - "area": "Unknown", - "labels": [] - }, { "id": "I_kwDOFLhIt85o9dDJ", "title": "Add 2023 mentorship directory", From 998595a8e4806cb94f8ff5432a1bfe69e56d0e60 Mon Sep 17 00:00:00 2001 From: asyncapi-bot Date: Sun, 19 Nov 2023 01:30:16 +0100 Subject: [PATCH 084/134] chore: update meetings.json and newsrooom_videos.json (#2333) --- dashboard.json | 49 +++++++++++++++++-------------------------------- 1 file changed, 17 insertions(+), 32 deletions(-) diff --git a/dashboard.json b/dashboard.json index 6f9782d283a..c30dadd8538 100644 --- a/dashboard.json +++ b/dashboard.json @@ -16,22 +16,6 @@ ], "score": 54.2759972736099 }, - { - "id": "MDU6SXNzdWUzNjkwNDExMDc=", - "isPR": false, - "isAssigned": false, - "title": "Support request/reply pattern", - "author": "adrianhopebailie", - "resourcePath": "/asyncapi/spec/issues/94", - "repo": "asyncapi/spec", - "labels": [ - { - "name": "keep-open", - "color": "fce250" - } - ], - "score": 41.64031536864252 - }, { "id": "PR_kwDOBW5R_c5Xb72L", "isPR": true, @@ -41,7 +25,7 @@ "resourcePath": "/asyncapi/website/pull/2038", "repo": "asyncapi/website", "labels": [], - "score": 40.77879160239474 + "score": 41.065966191144 }, { "id": "I_kwDOFLhIt84-OUI3", @@ -111,6 +95,22 @@ ], "score": 20.102221212448114 }, + { + "id": "MDU6SXNzdWUzNjkwNDExMDc=", + "isPR": false, + "isAssigned": false, + "title": "Support request/reply pattern", + "author": "adrianhopebailie", + "resourcePath": "/asyncapi/spec/issues/94", + "repo": "asyncapi/spec", + "labels": [ + { + "name": "keep-open", + "color": "fce250" + } + ], + "score": 20.070109582694446 + }, { "id": "I_kwDOBW5R_c5BIl5P", "isPR": false, @@ -173,21 +173,6 @@ } ], "goodFirstIssues": [ - { - "id": "I_kwDOE8Qh38521iLW", - "title": "CSharp generator does not generate DateTime properties", - "isAssigned": false, - "resourcePath": "/asyncapi/modelina/issues/1607", - "repo": "asyncapi/modelina", - "author": "jano-petras", - "area": "typescript", - "labels": [ - { - "name": "bug", - "color": "d73a4a" - } - ] - }, { "id": "I_kwDODCuNRs51jd3x", "title": "Implement GitHub Action to Validate examples Field in Schemas", From 5992c1f0ece2cc2638ce7b91d0d247d825da3dd5 Mon Sep 17 00:00:00 2001 From: asyncapi-bot Date: Sun, 19 Nov 2023 17:35:16 +0100 Subject: [PATCH 085/134] docs(cli): update latest cli documentation (#2334) --- pages/docs/tools/cli/usage.md | 50 +++++++++++++++++------------------ 1 file changed, 25 insertions(+), 25 deletions(-) diff --git a/pages/docs/tools/cli/usage.md b/pages/docs/tools/cli/usage.md index 38f18e921b9..f9d3ebfeae4 100644 --- a/pages/docs/tools/cli/usage.md +++ b/pages/docs/tools/cli/usage.md @@ -29,7 +29,7 @@ $ npm install -g @asyncapi/cli $ asyncapi COMMAND running command... $ asyncapi (--version) -@asyncapi/cli/0.60.0 linux-x64 node-v18.18.2 +@asyncapi/cli/0.60.1 linux-x64 node-v18.18.2 $ asyncapi --help [COMMAND] USAGE $ asyncapi COMMAND @@ -93,7 +93,7 @@ EXAMPLES $ asyncapi bundle ./asyncapi.yaml ./features.yaml --base ./asyncapi.yaml --reference-into-components ``` -_See code: [src/commands/bundle.ts](https://github.com/asyncapi/cli/blob/v0.60.0/src/commands/bundle.ts)_ +_See code: [src/commands/bundle.ts](https://github.com/asyncapi/cli/blob/v0.60.1/src/commands/bundle.ts)_ ## `asyncapi config` @@ -107,7 +107,7 @@ DESCRIPTION CLI config settings ``` -_See code: [src/commands/config/index.ts](https://github.com/asyncapi/cli/blob/v0.60.0/src/commands/config/index.ts)_ +_See code: [src/commands/config/index.ts](https://github.com/asyncapi/cli/blob/v0.60.1/src/commands/config/index.ts)_ ## `asyncapi config context` @@ -121,7 +121,7 @@ DESCRIPTION Manage short aliases for full paths to AsyncAPI documents ``` -_See code: [src/commands/config/context/index.ts](https://github.com/asyncapi/cli/blob/v0.60.0/src/commands/config/context/index.ts)_ +_See code: [src/commands/config/context/index.ts](https://github.com/asyncapi/cli/blob/v0.60.1/src/commands/config/context/index.ts)_ ## `asyncapi config context add CONTEXT-NAME SPEC-FILE-PATH` @@ -143,7 +143,7 @@ DESCRIPTION Add a context to the store ``` -_See code: [src/commands/config/context/add.ts](https://github.com/asyncapi/cli/blob/v0.60.0/src/commands/config/context/add.ts)_ +_See code: [src/commands/config/context/add.ts](https://github.com/asyncapi/cli/blob/v0.60.1/src/commands/config/context/add.ts)_ ## `asyncapi config context current` @@ -160,7 +160,7 @@ DESCRIPTION Shows the current context that is being used ``` -_See code: [src/commands/config/context/current.ts](https://github.com/asyncapi/cli/blob/v0.60.0/src/commands/config/context/current.ts)_ +_See code: [src/commands/config/context/current.ts](https://github.com/asyncapi/cli/blob/v0.60.1/src/commands/config/context/current.ts)_ ## `asyncapi config context edit CONTEXT-NAME NEW-SPEC-FILE-PATH` @@ -181,7 +181,7 @@ DESCRIPTION Edit a context in the store ``` -_See code: [src/commands/config/context/edit.ts](https://github.com/asyncapi/cli/blob/v0.60.0/src/commands/config/context/edit.ts)_ +_See code: [src/commands/config/context/edit.ts](https://github.com/asyncapi/cli/blob/v0.60.1/src/commands/config/context/edit.ts)_ ## `asyncapi config context init [CONTEXT-FILE-PATH]` @@ -204,7 +204,7 @@ DESCRIPTION Initialize context ``` -_See code: [src/commands/config/context/init.ts](https://github.com/asyncapi/cli/blob/v0.60.0/src/commands/config/context/init.ts)_ +_See code: [src/commands/config/context/init.ts](https://github.com/asyncapi/cli/blob/v0.60.1/src/commands/config/context/init.ts)_ ## `asyncapi config context list` @@ -221,7 +221,7 @@ DESCRIPTION List all the stored contexts in the store ``` -_See code: [src/commands/config/context/list.ts](https://github.com/asyncapi/cli/blob/v0.60.0/src/commands/config/context/list.ts)_ +_See code: [src/commands/config/context/list.ts](https://github.com/asyncapi/cli/blob/v0.60.1/src/commands/config/context/list.ts)_ ## `asyncapi config context remove CONTEXT-NAME` @@ -241,7 +241,7 @@ DESCRIPTION Delete a context from the store ``` -_See code: [src/commands/config/context/remove.ts](https://github.com/asyncapi/cli/blob/v0.60.0/src/commands/config/context/remove.ts)_ +_See code: [src/commands/config/context/remove.ts](https://github.com/asyncapi/cli/blob/v0.60.1/src/commands/config/context/remove.ts)_ ## `asyncapi config context use CONTEXT-NAME` @@ -261,7 +261,7 @@ DESCRIPTION Set a context as current ``` -_See code: [src/commands/config/context/use.ts](https://github.com/asyncapi/cli/blob/v0.60.0/src/commands/config/context/use.ts)_ +_See code: [src/commands/config/context/use.ts](https://github.com/asyncapi/cli/blob/v0.60.1/src/commands/config/context/use.ts)_ ## `asyncapi config versions` @@ -278,7 +278,7 @@ DESCRIPTION Show versions of AsyncAPI tools used ``` -_See code: [src/commands/config/versions.ts](https://github.com/asyncapi/cli/blob/v0.60.0/src/commands/config/versions.ts)_ +_See code: [src/commands/config/versions.ts](https://github.com/asyncapi/cli/blob/v0.60.1/src/commands/config/versions.ts)_ ## `asyncapi convert [SPEC-FILE]` @@ -300,7 +300,7 @@ DESCRIPTION Convert asyncapi documents older to newer versions ``` -_See code: [src/commands/convert.ts](https://github.com/asyncapi/cli/blob/v0.60.0/src/commands/convert.ts)_ +_See code: [src/commands/convert.ts](https://github.com/asyncapi/cli/blob/v0.60.1/src/commands/convert.ts)_ ## `asyncapi diff OLD NEW` @@ -355,7 +355,7 @@ DESCRIPTION Find diff between two asyncapi files ``` -_See code: [src/commands/diff.ts](https://github.com/asyncapi/cli/blob/v0.60.0/src/commands/diff.ts)_ +_See code: [src/commands/diff.ts](https://github.com/asyncapi/cli/blob/v0.60.1/src/commands/diff.ts)_ ## `asyncapi generate` @@ -369,7 +369,7 @@ DESCRIPTION Generate typed models or other things like clients, applications or docs using AsyncAPI Generator templates. ``` -_See code: [src/commands/generate/index.ts](https://github.com/asyncapi/cli/blob/v0.60.0/src/commands/generate/index.ts)_ +_See code: [src/commands/generate/index.ts](https://github.com/asyncapi/cli/blob/v0.60.1/src/commands/generate/index.ts)_ ## `asyncapi generate fromTemplate ASYNCAPI TEMPLATE` @@ -406,7 +406,7 @@ EXAMPLES $ asyncapi generate fromTemplate asyncapi.yaml @asyncapi/html-template --param version=1.0.0 singleFile=true --output ./docs --force-write ``` -_See code: [src/commands/generate/fromTemplate.ts](https://github.com/asyncapi/cli/blob/v0.60.0/src/commands/generate/fromTemplate.ts)_ +_See code: [src/commands/generate/fromTemplate.ts](https://github.com/asyncapi/cli/blob/v0.60.1/src/commands/generate/fromTemplate.ts)_ ## `asyncapi generate models LANGUAGE FILE` @@ -480,7 +480,7 @@ DESCRIPTION Generates typed models ``` -_See code: [src/commands/generate/models.ts](https://github.com/asyncapi/cli/blob/v0.60.0/src/commands/generate/models.ts)_ +_See code: [src/commands/generate/models.ts](https://github.com/asyncapi/cli/blob/v0.60.1/src/commands/generate/models.ts)_ ## `asyncapi new` @@ -535,7 +535,7 @@ EXAMPLES $ asyncapi new --file-name=my-asyncapi.yml --example=default-example.yml --no-tty - create a new file with a specific name, using one of the examples and without interactive mode ``` -_See code: [src/commands/new/index.ts](https://github.com/asyncapi/cli/blob/v0.60.0/src/commands/new/index.ts)_ +_See code: [src/commands/new/index.ts](https://github.com/asyncapi/cli/blob/v0.60.1/src/commands/new/index.ts)_ ## `asyncapi new file` @@ -590,7 +590,7 @@ EXAMPLES $ asyncapi new --file-name=my-asyncapi.yml --example=default-example.yml --no-tty - create a new file with a specific name, using one of the examples and without interactive mode ``` -_See code: [src/commands/new/file.ts](https://github.com/asyncapi/cli/blob/v0.60.0/src/commands/new/file.ts)_ +_See code: [src/commands/new/file.ts](https://github.com/asyncapi/cli/blob/v0.60.1/src/commands/new/file.ts)_ ## `asyncapi new glee` @@ -608,7 +608,7 @@ DESCRIPTION Creates a new Glee project ``` -_See code: [src/commands/new/glee.ts](https://github.com/asyncapi/cli/blob/v0.60.0/src/commands/new/glee.ts)_ +_See code: [src/commands/new/glee.ts](https://github.com/asyncapi/cli/blob/v0.60.1/src/commands/new/glee.ts)_ ## `asyncapi new project` @@ -626,7 +626,7 @@ DESCRIPTION Creates a new Glee project ``` -_See code: [src/commands/new/project.ts](https://github.com/asyncapi/cli/blob/v0.60.0/src/commands/new/project.ts)_ +_See code: [src/commands/new/project.ts](https://github.com/asyncapi/cli/blob/v0.60.1/src/commands/new/project.ts)_ ## `asyncapi optimize [SPEC-FILE]` @@ -662,7 +662,7 @@ EXAMPLES $ asyncapi optimize ./asyncapi.yaml --optimization=remove-components,reuse-components,move-to-components --output=terminal --no-tty ``` -_See code: [src/commands/optimize.ts](https://github.com/asyncapi/cli/blob/v0.60.0/src/commands/optimize.ts)_ +_See code: [src/commands/optimize.ts](https://github.com/asyncapi/cli/blob/v0.60.1/src/commands/optimize.ts)_ ## `asyncapi start` @@ -676,7 +676,7 @@ DESCRIPTION Start asyncapi studio ``` -_See code: [src/commands/start/index.ts](https://github.com/asyncapi/cli/blob/v0.60.0/src/commands/start/index.ts)_ +_See code: [src/commands/start/index.ts](https://github.com/asyncapi/cli/blob/v0.60.1/src/commands/start/index.ts)_ ## `asyncapi start studio` @@ -695,7 +695,7 @@ DESCRIPTION starts a new local instance of Studio ``` -_See code: [src/commands/start/studio.ts](https://github.com/asyncapi/cli/blob/v0.60.0/src/commands/start/studio.ts)_ +_See code: [src/commands/start/studio.ts](https://github.com/asyncapi/cli/blob/v0.60.1/src/commands/start/studio.ts)_ ## `asyncapi validate [SPEC-FILE]` @@ -722,5 +722,5 @@ DESCRIPTION validate asyncapi file ``` -_See code: [src/commands/validate.ts](https://github.com/asyncapi/cli/blob/v0.60.0/src/commands/validate.ts)_ +_See code: [src/commands/validate.ts](https://github.com/asyncapi/cli/blob/v0.60.1/src/commands/validate.ts)_ From ecb4cee4a28e7b7cf4b884e1ab15f6a95f7e98d2 Mon Sep 17 00:00:00 2001 From: asyncapi-bot Date: Mon, 20 Nov 2023 01:28:40 +0100 Subject: [PATCH 086/134] chore: update tools.json (#2335) --- config/tools-automated.json | 44 ++++++++++++++++++------------------- 1 file changed, 22 insertions(+), 22 deletions(-) diff --git a/config/tools-automated.json b/config/tools-automated.json index e4d8bdb7790..4c0f4a755af 100644 --- a/config/tools-automated.json +++ b/config/tools-automated.json @@ -420,41 +420,41 @@ "description": "The following is a list of tools that compare AsyncAPI documents.", "toolsList": [ { - "title": "AsyncAPI Diff", - "description": "Diff is a library that compares two AsyncAPI Documents and provides information about the differences by pointing out explicitly information like breaking changes.", + "title": "jasyncapicmp", + "description": "Tool for comparing two AsyncAPI versions and evaluating compatibility.", "links": { - "repoUrl": "https://github.com/asyncapi/diff" + "websiteUrl": "https://siom79.github.io/jasyncapicmp/", + "docsUrl": "https://github.com/siom79/jasyncapicmp", + "repoUrl": "https://github.com/siom79/jasyncapicmp" }, "filters": { - "language": "TypeScript", + "language": "Java", "technology": [ - "TypeScript" + "Maven" ], "categories": [ "compare-tool" ], "hasCommercial": false, - "isAsyncAPIOwner": true + "isAsyncAPIOwner": false } }, { - "title": "jasyncapicmp", - "description": "Tool for comparing two AsyncAPI versions and evaluating compatibility.", + "title": "AsyncAPI Diff", + "description": "Diff is a library that compares two AsyncAPI Documents and provides information about the differences by pointing out explicitly information like breaking changes.", "links": { - "websiteUrl": "https://siom79.github.io/jasyncapicmp/", - "docsUrl": "https://github.com/siom79/jasyncapicmp", - "repoUrl": "https://github.com/siom79/jasyncapicmp" + "repoUrl": "https://github.com/asyncapi/diff" }, "filters": { - "language": "Java", + "language": "TypeScript", "technology": [ - "Maven" + "TypeScript" ], "categories": [ "compare-tool" ], "hasCommercial": false, - "isAsyncAPIOwner": false + "isAsyncAPIOwner": true } } ] @@ -635,15 +635,15 @@ } }, { - "title": "Node.js Websockets Template", - "description": "Node.js WebSockets template for the AsyncAPI Generator. It showcases how from a single AsyncAPI document you can generate a server and a client at the same time.", + "title": "HTML Template", + "description": "HTML template for AsyncAPI Generator. Use it to generate a static docs. It is using AsyncAPI React component under the hood.", "links": { - "repoUrl": "https://github.com/asyncapi/nodejs-ws-template" + "repoUrl": "https://github.com/asyncapi/html-template" }, "filters": { "language": "javascript", "technology": [ - "Node.js" + "HTML" ], "categories": [ "generator-template" @@ -653,15 +653,15 @@ } }, { - "title": "HTML Template", - "description": "HTML template for AsyncAPI Generator. Use it to generate a static docs. It is using AsyncAPI React component under the hood.", + "title": "Node.js Websockets Template", + "description": "Node.js WebSockets template for the AsyncAPI Generator. It showcases how from a single AsyncAPI document you can generate a server and a client at the same time.", "links": { - "repoUrl": "https://github.com/asyncapi/html-template" + "repoUrl": "https://github.com/asyncapi/nodejs-ws-template" }, "filters": { "language": "javascript", "technology": [ - "HTML" + "Node.js" ], "categories": [ "generator-template" From 71fa47a4eeb8b8aaf71b405ebf09cf7bfb2df247 Mon Sep 17 00:00:00 2001 From: asyncapi-bot Date: Mon, 20 Nov 2023 13:50:04 +0100 Subject: [PATCH 087/134] docs(cli): update latest cli documentation (#2336) --- pages/docs/tools/cli/usage.md | 50 +++++++++++++++++------------------ 1 file changed, 25 insertions(+), 25 deletions(-) diff --git a/pages/docs/tools/cli/usage.md b/pages/docs/tools/cli/usage.md index f9d3ebfeae4..15979c3a329 100644 --- a/pages/docs/tools/cli/usage.md +++ b/pages/docs/tools/cli/usage.md @@ -29,7 +29,7 @@ $ npm install -g @asyncapi/cli $ asyncapi COMMAND running command... $ asyncapi (--version) -@asyncapi/cli/0.60.1 linux-x64 node-v18.18.2 +@asyncapi/cli/0.60.2 linux-x64 node-v18.18.2 $ asyncapi --help [COMMAND] USAGE $ asyncapi COMMAND @@ -93,7 +93,7 @@ EXAMPLES $ asyncapi bundle ./asyncapi.yaml ./features.yaml --base ./asyncapi.yaml --reference-into-components ``` -_See code: [src/commands/bundle.ts](https://github.com/asyncapi/cli/blob/v0.60.1/src/commands/bundle.ts)_ +_See code: [src/commands/bundle.ts](https://github.com/asyncapi/cli/blob/v0.60.2/src/commands/bundle.ts)_ ## `asyncapi config` @@ -107,7 +107,7 @@ DESCRIPTION CLI config settings ``` -_See code: [src/commands/config/index.ts](https://github.com/asyncapi/cli/blob/v0.60.1/src/commands/config/index.ts)_ +_See code: [src/commands/config/index.ts](https://github.com/asyncapi/cli/blob/v0.60.2/src/commands/config/index.ts)_ ## `asyncapi config context` @@ -121,7 +121,7 @@ DESCRIPTION Manage short aliases for full paths to AsyncAPI documents ``` -_See code: [src/commands/config/context/index.ts](https://github.com/asyncapi/cli/blob/v0.60.1/src/commands/config/context/index.ts)_ +_See code: [src/commands/config/context/index.ts](https://github.com/asyncapi/cli/blob/v0.60.2/src/commands/config/context/index.ts)_ ## `asyncapi config context add CONTEXT-NAME SPEC-FILE-PATH` @@ -143,7 +143,7 @@ DESCRIPTION Add a context to the store ``` -_See code: [src/commands/config/context/add.ts](https://github.com/asyncapi/cli/blob/v0.60.1/src/commands/config/context/add.ts)_ +_See code: [src/commands/config/context/add.ts](https://github.com/asyncapi/cli/blob/v0.60.2/src/commands/config/context/add.ts)_ ## `asyncapi config context current` @@ -160,7 +160,7 @@ DESCRIPTION Shows the current context that is being used ``` -_See code: [src/commands/config/context/current.ts](https://github.com/asyncapi/cli/blob/v0.60.1/src/commands/config/context/current.ts)_ +_See code: [src/commands/config/context/current.ts](https://github.com/asyncapi/cli/blob/v0.60.2/src/commands/config/context/current.ts)_ ## `asyncapi config context edit CONTEXT-NAME NEW-SPEC-FILE-PATH` @@ -181,7 +181,7 @@ DESCRIPTION Edit a context in the store ``` -_See code: [src/commands/config/context/edit.ts](https://github.com/asyncapi/cli/blob/v0.60.1/src/commands/config/context/edit.ts)_ +_See code: [src/commands/config/context/edit.ts](https://github.com/asyncapi/cli/blob/v0.60.2/src/commands/config/context/edit.ts)_ ## `asyncapi config context init [CONTEXT-FILE-PATH]` @@ -204,7 +204,7 @@ DESCRIPTION Initialize context ``` -_See code: [src/commands/config/context/init.ts](https://github.com/asyncapi/cli/blob/v0.60.1/src/commands/config/context/init.ts)_ +_See code: [src/commands/config/context/init.ts](https://github.com/asyncapi/cli/blob/v0.60.2/src/commands/config/context/init.ts)_ ## `asyncapi config context list` @@ -221,7 +221,7 @@ DESCRIPTION List all the stored contexts in the store ``` -_See code: [src/commands/config/context/list.ts](https://github.com/asyncapi/cli/blob/v0.60.1/src/commands/config/context/list.ts)_ +_See code: [src/commands/config/context/list.ts](https://github.com/asyncapi/cli/blob/v0.60.2/src/commands/config/context/list.ts)_ ## `asyncapi config context remove CONTEXT-NAME` @@ -241,7 +241,7 @@ DESCRIPTION Delete a context from the store ``` -_See code: [src/commands/config/context/remove.ts](https://github.com/asyncapi/cli/blob/v0.60.1/src/commands/config/context/remove.ts)_ +_See code: [src/commands/config/context/remove.ts](https://github.com/asyncapi/cli/blob/v0.60.2/src/commands/config/context/remove.ts)_ ## `asyncapi config context use CONTEXT-NAME` @@ -261,7 +261,7 @@ DESCRIPTION Set a context as current ``` -_See code: [src/commands/config/context/use.ts](https://github.com/asyncapi/cli/blob/v0.60.1/src/commands/config/context/use.ts)_ +_See code: [src/commands/config/context/use.ts](https://github.com/asyncapi/cli/blob/v0.60.2/src/commands/config/context/use.ts)_ ## `asyncapi config versions` @@ -278,7 +278,7 @@ DESCRIPTION Show versions of AsyncAPI tools used ``` -_See code: [src/commands/config/versions.ts](https://github.com/asyncapi/cli/blob/v0.60.1/src/commands/config/versions.ts)_ +_See code: [src/commands/config/versions.ts](https://github.com/asyncapi/cli/blob/v0.60.2/src/commands/config/versions.ts)_ ## `asyncapi convert [SPEC-FILE]` @@ -300,7 +300,7 @@ DESCRIPTION Convert asyncapi documents older to newer versions ``` -_See code: [src/commands/convert.ts](https://github.com/asyncapi/cli/blob/v0.60.1/src/commands/convert.ts)_ +_See code: [src/commands/convert.ts](https://github.com/asyncapi/cli/blob/v0.60.2/src/commands/convert.ts)_ ## `asyncapi diff OLD NEW` @@ -355,7 +355,7 @@ DESCRIPTION Find diff between two asyncapi files ``` -_See code: [src/commands/diff.ts](https://github.com/asyncapi/cli/blob/v0.60.1/src/commands/diff.ts)_ +_See code: [src/commands/diff.ts](https://github.com/asyncapi/cli/blob/v0.60.2/src/commands/diff.ts)_ ## `asyncapi generate` @@ -369,7 +369,7 @@ DESCRIPTION Generate typed models or other things like clients, applications or docs using AsyncAPI Generator templates. ``` -_See code: [src/commands/generate/index.ts](https://github.com/asyncapi/cli/blob/v0.60.1/src/commands/generate/index.ts)_ +_See code: [src/commands/generate/index.ts](https://github.com/asyncapi/cli/blob/v0.60.2/src/commands/generate/index.ts)_ ## `asyncapi generate fromTemplate ASYNCAPI TEMPLATE` @@ -406,7 +406,7 @@ EXAMPLES $ asyncapi generate fromTemplate asyncapi.yaml @asyncapi/html-template --param version=1.0.0 singleFile=true --output ./docs --force-write ``` -_See code: [src/commands/generate/fromTemplate.ts](https://github.com/asyncapi/cli/blob/v0.60.1/src/commands/generate/fromTemplate.ts)_ +_See code: [src/commands/generate/fromTemplate.ts](https://github.com/asyncapi/cli/blob/v0.60.2/src/commands/generate/fromTemplate.ts)_ ## `asyncapi generate models LANGUAGE FILE` @@ -480,7 +480,7 @@ DESCRIPTION Generates typed models ``` -_See code: [src/commands/generate/models.ts](https://github.com/asyncapi/cli/blob/v0.60.1/src/commands/generate/models.ts)_ +_See code: [src/commands/generate/models.ts](https://github.com/asyncapi/cli/blob/v0.60.2/src/commands/generate/models.ts)_ ## `asyncapi new` @@ -535,7 +535,7 @@ EXAMPLES $ asyncapi new --file-name=my-asyncapi.yml --example=default-example.yml --no-tty - create a new file with a specific name, using one of the examples and without interactive mode ``` -_See code: [src/commands/new/index.ts](https://github.com/asyncapi/cli/blob/v0.60.1/src/commands/new/index.ts)_ +_See code: [src/commands/new/index.ts](https://github.com/asyncapi/cli/blob/v0.60.2/src/commands/new/index.ts)_ ## `asyncapi new file` @@ -590,7 +590,7 @@ EXAMPLES $ asyncapi new --file-name=my-asyncapi.yml --example=default-example.yml --no-tty - create a new file with a specific name, using one of the examples and without interactive mode ``` -_See code: [src/commands/new/file.ts](https://github.com/asyncapi/cli/blob/v0.60.1/src/commands/new/file.ts)_ +_See code: [src/commands/new/file.ts](https://github.com/asyncapi/cli/blob/v0.60.2/src/commands/new/file.ts)_ ## `asyncapi new glee` @@ -608,7 +608,7 @@ DESCRIPTION Creates a new Glee project ``` -_See code: [src/commands/new/glee.ts](https://github.com/asyncapi/cli/blob/v0.60.1/src/commands/new/glee.ts)_ +_See code: [src/commands/new/glee.ts](https://github.com/asyncapi/cli/blob/v0.60.2/src/commands/new/glee.ts)_ ## `asyncapi new project` @@ -626,7 +626,7 @@ DESCRIPTION Creates a new Glee project ``` -_See code: [src/commands/new/project.ts](https://github.com/asyncapi/cli/blob/v0.60.1/src/commands/new/project.ts)_ +_See code: [src/commands/new/project.ts](https://github.com/asyncapi/cli/blob/v0.60.2/src/commands/new/project.ts)_ ## `asyncapi optimize [SPEC-FILE]` @@ -662,7 +662,7 @@ EXAMPLES $ asyncapi optimize ./asyncapi.yaml --optimization=remove-components,reuse-components,move-to-components --output=terminal --no-tty ``` -_See code: [src/commands/optimize.ts](https://github.com/asyncapi/cli/blob/v0.60.1/src/commands/optimize.ts)_ +_See code: [src/commands/optimize.ts](https://github.com/asyncapi/cli/blob/v0.60.2/src/commands/optimize.ts)_ ## `asyncapi start` @@ -676,7 +676,7 @@ DESCRIPTION Start asyncapi studio ``` -_See code: [src/commands/start/index.ts](https://github.com/asyncapi/cli/blob/v0.60.1/src/commands/start/index.ts)_ +_See code: [src/commands/start/index.ts](https://github.com/asyncapi/cli/blob/v0.60.2/src/commands/start/index.ts)_ ## `asyncapi start studio` @@ -695,7 +695,7 @@ DESCRIPTION starts a new local instance of Studio ``` -_See code: [src/commands/start/studio.ts](https://github.com/asyncapi/cli/blob/v0.60.1/src/commands/start/studio.ts)_ +_See code: [src/commands/start/studio.ts](https://github.com/asyncapi/cli/blob/v0.60.2/src/commands/start/studio.ts)_ ## `asyncapi validate [SPEC-FILE]` @@ -722,5 +722,5 @@ DESCRIPTION validate asyncapi file ``` -_See code: [src/commands/validate.ts](https://github.com/asyncapi/cli/blob/v0.60.1/src/commands/validate.ts)_ +_See code: [src/commands/validate.ts](https://github.com/asyncapi/cli/blob/v0.60.2/src/commands/validate.ts)_ From 2193ad82995372fa5513edb267efd40a1b5b9451 Mon Sep 17 00:00:00 2001 From: asyncapi-bot Date: Mon, 20 Nov 2023 16:59:56 +0100 Subject: [PATCH 088/134] docs(generator): update latest generator documentation (#2337) --- pages/docs/tools/generator/configuration-file.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pages/docs/tools/generator/configuration-file.md b/pages/docs/tools/generator/configuration-file.md index f8ceb2635c0..0f37a3e921f 100644 --- a/pages/docs/tools/generator/configuration-file.md +++ b/pages/docs/tools/generator/configuration-file.md @@ -8,7 +8,7 @@ The `generator` property from `package.json` file must contain a JSON object tha |Name|Type|Description| |---|---|---| |`renderer`| String | Its value can be either `react` or `nunjucks` (default). -|`apiVersion`| String | Determines which **major** version of the [Parser-API](https://github.com/asyncapi/parser-api) the template uses. For example, `v2` for `v2.x.x`. If not specified, the Generator assumes the template is not compatible with the Parser-API so it will use the [Parser-JS v1 API](https://github.com/asyncapi/parser-js/tree/v1.18.1#api-documentation). For templates that need to support AsyncAPI specification v3 make sure to use `v2` [Parser-API](https://github.com/asyncapi/parser-api). If the template uses a version of the Parser-API that is not supported by the Generator, the Generator will throw an error. +|`apiVersion`| String | Determines which **major** version of the [Parser-API](https://github.com/asyncapi/parser-api) the template uses. For example, `v2` for `v2.x.x`. If not specified, the Generator assumes the template is not compatible with the Parser-API so it will use the [Parser-JS v1 API](https://github.com/asyncapi/parser-js/tree/v1.18.1#api-documentation). For templates that need to support AsyncAPI specification v3 make sure to use `v3` [Parser-API](https://github.com/asyncapi/parser-api). If the template uses a version of the Parser-API that is not supported by the Generator, the Generator will throw an error. |`supportedProtocols`| [String] | A list with all the protocols this template supports. |`parameters`| Object[String, Object] | An object with all the parameters that can be passed when generating the template. When using the command line, it's done by indicating `--param name=value` or `-p name=value`. |`parameters[param].description`| String | A user-friendly description about the parameter. @@ -28,7 +28,7 @@ The `generator` property from `package.json` file must contain a JSON object tha "generator": { "renderer": "react", - "apiVersion": "v2", + "apiVersion": "v3", "supportedProtocols": ["amqp", "mqtt"], "parameters": { "server": { From 7ae3ad068a7594fda1b6dc3e5b6ed855e0c5e087 Mon Sep 17 00:00:00 2001 From: asyncapi-bot Date: Mon, 20 Nov 2023 17:34:23 +0100 Subject: [PATCH 089/134] docs(cli): update latest cli documentation (#2338) --- pages/docs/tools/cli/usage.md | 50 +++++++++++++++++------------------ 1 file changed, 25 insertions(+), 25 deletions(-) diff --git a/pages/docs/tools/cli/usage.md b/pages/docs/tools/cli/usage.md index 15979c3a329..8d88d9be275 100644 --- a/pages/docs/tools/cli/usage.md +++ b/pages/docs/tools/cli/usage.md @@ -29,7 +29,7 @@ $ npm install -g @asyncapi/cli $ asyncapi COMMAND running command... $ asyncapi (--version) -@asyncapi/cli/0.60.2 linux-x64 node-v18.18.2 +@asyncapi/cli/0.60.3 linux-x64 node-v18.18.2 $ asyncapi --help [COMMAND] USAGE $ asyncapi COMMAND @@ -93,7 +93,7 @@ EXAMPLES $ asyncapi bundle ./asyncapi.yaml ./features.yaml --base ./asyncapi.yaml --reference-into-components ``` -_See code: [src/commands/bundle.ts](https://github.com/asyncapi/cli/blob/v0.60.2/src/commands/bundle.ts)_ +_See code: [src/commands/bundle.ts](https://github.com/asyncapi/cli/blob/v0.60.3/src/commands/bundle.ts)_ ## `asyncapi config` @@ -107,7 +107,7 @@ DESCRIPTION CLI config settings ``` -_See code: [src/commands/config/index.ts](https://github.com/asyncapi/cli/blob/v0.60.2/src/commands/config/index.ts)_ +_See code: [src/commands/config/index.ts](https://github.com/asyncapi/cli/blob/v0.60.3/src/commands/config/index.ts)_ ## `asyncapi config context` @@ -121,7 +121,7 @@ DESCRIPTION Manage short aliases for full paths to AsyncAPI documents ``` -_See code: [src/commands/config/context/index.ts](https://github.com/asyncapi/cli/blob/v0.60.2/src/commands/config/context/index.ts)_ +_See code: [src/commands/config/context/index.ts](https://github.com/asyncapi/cli/blob/v0.60.3/src/commands/config/context/index.ts)_ ## `asyncapi config context add CONTEXT-NAME SPEC-FILE-PATH` @@ -143,7 +143,7 @@ DESCRIPTION Add a context to the store ``` -_See code: [src/commands/config/context/add.ts](https://github.com/asyncapi/cli/blob/v0.60.2/src/commands/config/context/add.ts)_ +_See code: [src/commands/config/context/add.ts](https://github.com/asyncapi/cli/blob/v0.60.3/src/commands/config/context/add.ts)_ ## `asyncapi config context current` @@ -160,7 +160,7 @@ DESCRIPTION Shows the current context that is being used ``` -_See code: [src/commands/config/context/current.ts](https://github.com/asyncapi/cli/blob/v0.60.2/src/commands/config/context/current.ts)_ +_See code: [src/commands/config/context/current.ts](https://github.com/asyncapi/cli/blob/v0.60.3/src/commands/config/context/current.ts)_ ## `asyncapi config context edit CONTEXT-NAME NEW-SPEC-FILE-PATH` @@ -181,7 +181,7 @@ DESCRIPTION Edit a context in the store ``` -_See code: [src/commands/config/context/edit.ts](https://github.com/asyncapi/cli/blob/v0.60.2/src/commands/config/context/edit.ts)_ +_See code: [src/commands/config/context/edit.ts](https://github.com/asyncapi/cli/blob/v0.60.3/src/commands/config/context/edit.ts)_ ## `asyncapi config context init [CONTEXT-FILE-PATH]` @@ -204,7 +204,7 @@ DESCRIPTION Initialize context ``` -_See code: [src/commands/config/context/init.ts](https://github.com/asyncapi/cli/blob/v0.60.2/src/commands/config/context/init.ts)_ +_See code: [src/commands/config/context/init.ts](https://github.com/asyncapi/cli/blob/v0.60.3/src/commands/config/context/init.ts)_ ## `asyncapi config context list` @@ -221,7 +221,7 @@ DESCRIPTION List all the stored contexts in the store ``` -_See code: [src/commands/config/context/list.ts](https://github.com/asyncapi/cli/blob/v0.60.2/src/commands/config/context/list.ts)_ +_See code: [src/commands/config/context/list.ts](https://github.com/asyncapi/cli/blob/v0.60.3/src/commands/config/context/list.ts)_ ## `asyncapi config context remove CONTEXT-NAME` @@ -241,7 +241,7 @@ DESCRIPTION Delete a context from the store ``` -_See code: [src/commands/config/context/remove.ts](https://github.com/asyncapi/cli/blob/v0.60.2/src/commands/config/context/remove.ts)_ +_See code: [src/commands/config/context/remove.ts](https://github.com/asyncapi/cli/blob/v0.60.3/src/commands/config/context/remove.ts)_ ## `asyncapi config context use CONTEXT-NAME` @@ -261,7 +261,7 @@ DESCRIPTION Set a context as current ``` -_See code: [src/commands/config/context/use.ts](https://github.com/asyncapi/cli/blob/v0.60.2/src/commands/config/context/use.ts)_ +_See code: [src/commands/config/context/use.ts](https://github.com/asyncapi/cli/blob/v0.60.3/src/commands/config/context/use.ts)_ ## `asyncapi config versions` @@ -278,7 +278,7 @@ DESCRIPTION Show versions of AsyncAPI tools used ``` -_See code: [src/commands/config/versions.ts](https://github.com/asyncapi/cli/blob/v0.60.2/src/commands/config/versions.ts)_ +_See code: [src/commands/config/versions.ts](https://github.com/asyncapi/cli/blob/v0.60.3/src/commands/config/versions.ts)_ ## `asyncapi convert [SPEC-FILE]` @@ -300,7 +300,7 @@ DESCRIPTION Convert asyncapi documents older to newer versions ``` -_See code: [src/commands/convert.ts](https://github.com/asyncapi/cli/blob/v0.60.2/src/commands/convert.ts)_ +_See code: [src/commands/convert.ts](https://github.com/asyncapi/cli/blob/v0.60.3/src/commands/convert.ts)_ ## `asyncapi diff OLD NEW` @@ -355,7 +355,7 @@ DESCRIPTION Find diff between two asyncapi files ``` -_See code: [src/commands/diff.ts](https://github.com/asyncapi/cli/blob/v0.60.2/src/commands/diff.ts)_ +_See code: [src/commands/diff.ts](https://github.com/asyncapi/cli/blob/v0.60.3/src/commands/diff.ts)_ ## `asyncapi generate` @@ -369,7 +369,7 @@ DESCRIPTION Generate typed models or other things like clients, applications or docs using AsyncAPI Generator templates. ``` -_See code: [src/commands/generate/index.ts](https://github.com/asyncapi/cli/blob/v0.60.2/src/commands/generate/index.ts)_ +_See code: [src/commands/generate/index.ts](https://github.com/asyncapi/cli/blob/v0.60.3/src/commands/generate/index.ts)_ ## `asyncapi generate fromTemplate ASYNCAPI TEMPLATE` @@ -406,7 +406,7 @@ EXAMPLES $ asyncapi generate fromTemplate asyncapi.yaml @asyncapi/html-template --param version=1.0.0 singleFile=true --output ./docs --force-write ``` -_See code: [src/commands/generate/fromTemplate.ts](https://github.com/asyncapi/cli/blob/v0.60.2/src/commands/generate/fromTemplate.ts)_ +_See code: [src/commands/generate/fromTemplate.ts](https://github.com/asyncapi/cli/blob/v0.60.3/src/commands/generate/fromTemplate.ts)_ ## `asyncapi generate models LANGUAGE FILE` @@ -480,7 +480,7 @@ DESCRIPTION Generates typed models ``` -_See code: [src/commands/generate/models.ts](https://github.com/asyncapi/cli/blob/v0.60.2/src/commands/generate/models.ts)_ +_See code: [src/commands/generate/models.ts](https://github.com/asyncapi/cli/blob/v0.60.3/src/commands/generate/models.ts)_ ## `asyncapi new` @@ -535,7 +535,7 @@ EXAMPLES $ asyncapi new --file-name=my-asyncapi.yml --example=default-example.yml --no-tty - create a new file with a specific name, using one of the examples and without interactive mode ``` -_See code: [src/commands/new/index.ts](https://github.com/asyncapi/cli/blob/v0.60.2/src/commands/new/index.ts)_ +_See code: [src/commands/new/index.ts](https://github.com/asyncapi/cli/blob/v0.60.3/src/commands/new/index.ts)_ ## `asyncapi new file` @@ -590,7 +590,7 @@ EXAMPLES $ asyncapi new --file-name=my-asyncapi.yml --example=default-example.yml --no-tty - create a new file with a specific name, using one of the examples and without interactive mode ``` -_See code: [src/commands/new/file.ts](https://github.com/asyncapi/cli/blob/v0.60.2/src/commands/new/file.ts)_ +_See code: [src/commands/new/file.ts](https://github.com/asyncapi/cli/blob/v0.60.3/src/commands/new/file.ts)_ ## `asyncapi new glee` @@ -608,7 +608,7 @@ DESCRIPTION Creates a new Glee project ``` -_See code: [src/commands/new/glee.ts](https://github.com/asyncapi/cli/blob/v0.60.2/src/commands/new/glee.ts)_ +_See code: [src/commands/new/glee.ts](https://github.com/asyncapi/cli/blob/v0.60.3/src/commands/new/glee.ts)_ ## `asyncapi new project` @@ -626,7 +626,7 @@ DESCRIPTION Creates a new Glee project ``` -_See code: [src/commands/new/project.ts](https://github.com/asyncapi/cli/blob/v0.60.2/src/commands/new/project.ts)_ +_See code: [src/commands/new/project.ts](https://github.com/asyncapi/cli/blob/v0.60.3/src/commands/new/project.ts)_ ## `asyncapi optimize [SPEC-FILE]` @@ -662,7 +662,7 @@ EXAMPLES $ asyncapi optimize ./asyncapi.yaml --optimization=remove-components,reuse-components,move-to-components --output=terminal --no-tty ``` -_See code: [src/commands/optimize.ts](https://github.com/asyncapi/cli/blob/v0.60.2/src/commands/optimize.ts)_ +_See code: [src/commands/optimize.ts](https://github.com/asyncapi/cli/blob/v0.60.3/src/commands/optimize.ts)_ ## `asyncapi start` @@ -676,7 +676,7 @@ DESCRIPTION Start asyncapi studio ``` -_See code: [src/commands/start/index.ts](https://github.com/asyncapi/cli/blob/v0.60.2/src/commands/start/index.ts)_ +_See code: [src/commands/start/index.ts](https://github.com/asyncapi/cli/blob/v0.60.3/src/commands/start/index.ts)_ ## `asyncapi start studio` @@ -695,7 +695,7 @@ DESCRIPTION starts a new local instance of Studio ``` -_See code: [src/commands/start/studio.ts](https://github.com/asyncapi/cli/blob/v0.60.2/src/commands/start/studio.ts)_ +_See code: [src/commands/start/studio.ts](https://github.com/asyncapi/cli/blob/v0.60.3/src/commands/start/studio.ts)_ ## `asyncapi validate [SPEC-FILE]` @@ -722,5 +722,5 @@ DESCRIPTION validate asyncapi file ``` -_See code: [src/commands/validate.ts](https://github.com/asyncapi/cli/blob/v0.60.2/src/commands/validate.ts)_ +_See code: [src/commands/validate.ts](https://github.com/asyncapi/cli/blob/v0.60.3/src/commands/validate.ts)_ From c58e8ee6a28031c64d13e885d013704250a3425b Mon Sep 17 00:00:00 2001 From: asyncapi-bot Date: Tue, 21 Nov 2023 11:15:29 +0100 Subject: [PATCH 090/134] docs(cli): update latest cli documentation (#2339) --- pages/docs/tools/cli/usage.md | 50 +++++++++++++++++------------------ 1 file changed, 25 insertions(+), 25 deletions(-) diff --git a/pages/docs/tools/cli/usage.md b/pages/docs/tools/cli/usage.md index 8d88d9be275..2c2c32033c1 100644 --- a/pages/docs/tools/cli/usage.md +++ b/pages/docs/tools/cli/usage.md @@ -29,7 +29,7 @@ $ npm install -g @asyncapi/cli $ asyncapi COMMAND running command... $ asyncapi (--version) -@asyncapi/cli/0.60.3 linux-x64 node-v18.18.2 +@asyncapi/cli/0.60.4 linux-x64 node-v18.18.2 $ asyncapi --help [COMMAND] USAGE $ asyncapi COMMAND @@ -93,7 +93,7 @@ EXAMPLES $ asyncapi bundle ./asyncapi.yaml ./features.yaml --base ./asyncapi.yaml --reference-into-components ``` -_See code: [src/commands/bundle.ts](https://github.com/asyncapi/cli/blob/v0.60.3/src/commands/bundle.ts)_ +_See code: [src/commands/bundle.ts](https://github.com/asyncapi/cli/blob/v0.60.4/src/commands/bundle.ts)_ ## `asyncapi config` @@ -107,7 +107,7 @@ DESCRIPTION CLI config settings ``` -_See code: [src/commands/config/index.ts](https://github.com/asyncapi/cli/blob/v0.60.3/src/commands/config/index.ts)_ +_See code: [src/commands/config/index.ts](https://github.com/asyncapi/cli/blob/v0.60.4/src/commands/config/index.ts)_ ## `asyncapi config context` @@ -121,7 +121,7 @@ DESCRIPTION Manage short aliases for full paths to AsyncAPI documents ``` -_See code: [src/commands/config/context/index.ts](https://github.com/asyncapi/cli/blob/v0.60.3/src/commands/config/context/index.ts)_ +_See code: [src/commands/config/context/index.ts](https://github.com/asyncapi/cli/blob/v0.60.4/src/commands/config/context/index.ts)_ ## `asyncapi config context add CONTEXT-NAME SPEC-FILE-PATH` @@ -143,7 +143,7 @@ DESCRIPTION Add a context to the store ``` -_See code: [src/commands/config/context/add.ts](https://github.com/asyncapi/cli/blob/v0.60.3/src/commands/config/context/add.ts)_ +_See code: [src/commands/config/context/add.ts](https://github.com/asyncapi/cli/blob/v0.60.4/src/commands/config/context/add.ts)_ ## `asyncapi config context current` @@ -160,7 +160,7 @@ DESCRIPTION Shows the current context that is being used ``` -_See code: [src/commands/config/context/current.ts](https://github.com/asyncapi/cli/blob/v0.60.3/src/commands/config/context/current.ts)_ +_See code: [src/commands/config/context/current.ts](https://github.com/asyncapi/cli/blob/v0.60.4/src/commands/config/context/current.ts)_ ## `asyncapi config context edit CONTEXT-NAME NEW-SPEC-FILE-PATH` @@ -181,7 +181,7 @@ DESCRIPTION Edit a context in the store ``` -_See code: [src/commands/config/context/edit.ts](https://github.com/asyncapi/cli/blob/v0.60.3/src/commands/config/context/edit.ts)_ +_See code: [src/commands/config/context/edit.ts](https://github.com/asyncapi/cli/blob/v0.60.4/src/commands/config/context/edit.ts)_ ## `asyncapi config context init [CONTEXT-FILE-PATH]` @@ -204,7 +204,7 @@ DESCRIPTION Initialize context ``` -_See code: [src/commands/config/context/init.ts](https://github.com/asyncapi/cli/blob/v0.60.3/src/commands/config/context/init.ts)_ +_See code: [src/commands/config/context/init.ts](https://github.com/asyncapi/cli/blob/v0.60.4/src/commands/config/context/init.ts)_ ## `asyncapi config context list` @@ -221,7 +221,7 @@ DESCRIPTION List all the stored contexts in the store ``` -_See code: [src/commands/config/context/list.ts](https://github.com/asyncapi/cli/blob/v0.60.3/src/commands/config/context/list.ts)_ +_See code: [src/commands/config/context/list.ts](https://github.com/asyncapi/cli/blob/v0.60.4/src/commands/config/context/list.ts)_ ## `asyncapi config context remove CONTEXT-NAME` @@ -241,7 +241,7 @@ DESCRIPTION Delete a context from the store ``` -_See code: [src/commands/config/context/remove.ts](https://github.com/asyncapi/cli/blob/v0.60.3/src/commands/config/context/remove.ts)_ +_See code: [src/commands/config/context/remove.ts](https://github.com/asyncapi/cli/blob/v0.60.4/src/commands/config/context/remove.ts)_ ## `asyncapi config context use CONTEXT-NAME` @@ -261,7 +261,7 @@ DESCRIPTION Set a context as current ``` -_See code: [src/commands/config/context/use.ts](https://github.com/asyncapi/cli/blob/v0.60.3/src/commands/config/context/use.ts)_ +_See code: [src/commands/config/context/use.ts](https://github.com/asyncapi/cli/blob/v0.60.4/src/commands/config/context/use.ts)_ ## `asyncapi config versions` @@ -278,7 +278,7 @@ DESCRIPTION Show versions of AsyncAPI tools used ``` -_See code: [src/commands/config/versions.ts](https://github.com/asyncapi/cli/blob/v0.60.3/src/commands/config/versions.ts)_ +_See code: [src/commands/config/versions.ts](https://github.com/asyncapi/cli/blob/v0.60.4/src/commands/config/versions.ts)_ ## `asyncapi convert [SPEC-FILE]` @@ -300,7 +300,7 @@ DESCRIPTION Convert asyncapi documents older to newer versions ``` -_See code: [src/commands/convert.ts](https://github.com/asyncapi/cli/blob/v0.60.3/src/commands/convert.ts)_ +_See code: [src/commands/convert.ts](https://github.com/asyncapi/cli/blob/v0.60.4/src/commands/convert.ts)_ ## `asyncapi diff OLD NEW` @@ -355,7 +355,7 @@ DESCRIPTION Find diff between two asyncapi files ``` -_See code: [src/commands/diff.ts](https://github.com/asyncapi/cli/blob/v0.60.3/src/commands/diff.ts)_ +_See code: [src/commands/diff.ts](https://github.com/asyncapi/cli/blob/v0.60.4/src/commands/diff.ts)_ ## `asyncapi generate` @@ -369,7 +369,7 @@ DESCRIPTION Generate typed models or other things like clients, applications or docs using AsyncAPI Generator templates. ``` -_See code: [src/commands/generate/index.ts](https://github.com/asyncapi/cli/blob/v0.60.3/src/commands/generate/index.ts)_ +_See code: [src/commands/generate/index.ts](https://github.com/asyncapi/cli/blob/v0.60.4/src/commands/generate/index.ts)_ ## `asyncapi generate fromTemplate ASYNCAPI TEMPLATE` @@ -406,7 +406,7 @@ EXAMPLES $ asyncapi generate fromTemplate asyncapi.yaml @asyncapi/html-template --param version=1.0.0 singleFile=true --output ./docs --force-write ``` -_See code: [src/commands/generate/fromTemplate.ts](https://github.com/asyncapi/cli/blob/v0.60.3/src/commands/generate/fromTemplate.ts)_ +_See code: [src/commands/generate/fromTemplate.ts](https://github.com/asyncapi/cli/blob/v0.60.4/src/commands/generate/fromTemplate.ts)_ ## `asyncapi generate models LANGUAGE FILE` @@ -480,7 +480,7 @@ DESCRIPTION Generates typed models ``` -_See code: [src/commands/generate/models.ts](https://github.com/asyncapi/cli/blob/v0.60.3/src/commands/generate/models.ts)_ +_See code: [src/commands/generate/models.ts](https://github.com/asyncapi/cli/blob/v0.60.4/src/commands/generate/models.ts)_ ## `asyncapi new` @@ -535,7 +535,7 @@ EXAMPLES $ asyncapi new --file-name=my-asyncapi.yml --example=default-example.yml --no-tty - create a new file with a specific name, using one of the examples and without interactive mode ``` -_See code: [src/commands/new/index.ts](https://github.com/asyncapi/cli/blob/v0.60.3/src/commands/new/index.ts)_ +_See code: [src/commands/new/index.ts](https://github.com/asyncapi/cli/blob/v0.60.4/src/commands/new/index.ts)_ ## `asyncapi new file` @@ -590,7 +590,7 @@ EXAMPLES $ asyncapi new --file-name=my-asyncapi.yml --example=default-example.yml --no-tty - create a new file with a specific name, using one of the examples and without interactive mode ``` -_See code: [src/commands/new/file.ts](https://github.com/asyncapi/cli/blob/v0.60.3/src/commands/new/file.ts)_ +_See code: [src/commands/new/file.ts](https://github.com/asyncapi/cli/blob/v0.60.4/src/commands/new/file.ts)_ ## `asyncapi new glee` @@ -608,7 +608,7 @@ DESCRIPTION Creates a new Glee project ``` -_See code: [src/commands/new/glee.ts](https://github.com/asyncapi/cli/blob/v0.60.3/src/commands/new/glee.ts)_ +_See code: [src/commands/new/glee.ts](https://github.com/asyncapi/cli/blob/v0.60.4/src/commands/new/glee.ts)_ ## `asyncapi new project` @@ -626,7 +626,7 @@ DESCRIPTION Creates a new Glee project ``` -_See code: [src/commands/new/project.ts](https://github.com/asyncapi/cli/blob/v0.60.3/src/commands/new/project.ts)_ +_See code: [src/commands/new/project.ts](https://github.com/asyncapi/cli/blob/v0.60.4/src/commands/new/project.ts)_ ## `asyncapi optimize [SPEC-FILE]` @@ -662,7 +662,7 @@ EXAMPLES $ asyncapi optimize ./asyncapi.yaml --optimization=remove-components,reuse-components,move-to-components --output=terminal --no-tty ``` -_See code: [src/commands/optimize.ts](https://github.com/asyncapi/cli/blob/v0.60.3/src/commands/optimize.ts)_ +_See code: [src/commands/optimize.ts](https://github.com/asyncapi/cli/blob/v0.60.4/src/commands/optimize.ts)_ ## `asyncapi start` @@ -676,7 +676,7 @@ DESCRIPTION Start asyncapi studio ``` -_See code: [src/commands/start/index.ts](https://github.com/asyncapi/cli/blob/v0.60.3/src/commands/start/index.ts)_ +_See code: [src/commands/start/index.ts](https://github.com/asyncapi/cli/blob/v0.60.4/src/commands/start/index.ts)_ ## `asyncapi start studio` @@ -695,7 +695,7 @@ DESCRIPTION starts a new local instance of Studio ``` -_See code: [src/commands/start/studio.ts](https://github.com/asyncapi/cli/blob/v0.60.3/src/commands/start/studio.ts)_ +_See code: [src/commands/start/studio.ts](https://github.com/asyncapi/cli/blob/v0.60.4/src/commands/start/studio.ts)_ ## `asyncapi validate [SPEC-FILE]` @@ -722,5 +722,5 @@ DESCRIPTION validate asyncapi file ``` -_See code: [src/commands/validate.ts](https://github.com/asyncapi/cli/blob/v0.60.3/src/commands/validate.ts)_ +_See code: [src/commands/validate.ts](https://github.com/asyncapi/cli/blob/v0.60.4/src/commands/validate.ts)_ From 1683bbfa73dfb36bc2b1c0dd4c84236cc9a48d75 Mon Sep 17 00:00:00 2001 From: asyncapi-bot Date: Tue, 21 Nov 2023 12:05:56 +0100 Subject: [PATCH 091/134] docs(cli): update latest cli documentation (#2340) --- pages/docs/tools/cli/usage.md | 50 +++++++++++++++++------------------ 1 file changed, 25 insertions(+), 25 deletions(-) diff --git a/pages/docs/tools/cli/usage.md b/pages/docs/tools/cli/usage.md index 2c2c32033c1..e807a0872ab 100644 --- a/pages/docs/tools/cli/usage.md +++ b/pages/docs/tools/cli/usage.md @@ -29,7 +29,7 @@ $ npm install -g @asyncapi/cli $ asyncapi COMMAND running command... $ asyncapi (--version) -@asyncapi/cli/0.60.4 linux-x64 node-v18.18.2 +@asyncapi/cli/1.0.0 linux-x64 node-v18.18.2 $ asyncapi --help [COMMAND] USAGE $ asyncapi COMMAND @@ -93,7 +93,7 @@ EXAMPLES $ asyncapi bundle ./asyncapi.yaml ./features.yaml --base ./asyncapi.yaml --reference-into-components ``` -_See code: [src/commands/bundle.ts](https://github.com/asyncapi/cli/blob/v0.60.4/src/commands/bundle.ts)_ +_See code: [src/commands/bundle.ts](https://github.com/asyncapi/cli/blob/v1.0.0/src/commands/bundle.ts)_ ## `asyncapi config` @@ -107,7 +107,7 @@ DESCRIPTION CLI config settings ``` -_See code: [src/commands/config/index.ts](https://github.com/asyncapi/cli/blob/v0.60.4/src/commands/config/index.ts)_ +_See code: [src/commands/config/index.ts](https://github.com/asyncapi/cli/blob/v1.0.0/src/commands/config/index.ts)_ ## `asyncapi config context` @@ -121,7 +121,7 @@ DESCRIPTION Manage short aliases for full paths to AsyncAPI documents ``` -_See code: [src/commands/config/context/index.ts](https://github.com/asyncapi/cli/blob/v0.60.4/src/commands/config/context/index.ts)_ +_See code: [src/commands/config/context/index.ts](https://github.com/asyncapi/cli/blob/v1.0.0/src/commands/config/context/index.ts)_ ## `asyncapi config context add CONTEXT-NAME SPEC-FILE-PATH` @@ -143,7 +143,7 @@ DESCRIPTION Add a context to the store ``` -_See code: [src/commands/config/context/add.ts](https://github.com/asyncapi/cli/blob/v0.60.4/src/commands/config/context/add.ts)_ +_See code: [src/commands/config/context/add.ts](https://github.com/asyncapi/cli/blob/v1.0.0/src/commands/config/context/add.ts)_ ## `asyncapi config context current` @@ -160,7 +160,7 @@ DESCRIPTION Shows the current context that is being used ``` -_See code: [src/commands/config/context/current.ts](https://github.com/asyncapi/cli/blob/v0.60.4/src/commands/config/context/current.ts)_ +_See code: [src/commands/config/context/current.ts](https://github.com/asyncapi/cli/blob/v1.0.0/src/commands/config/context/current.ts)_ ## `asyncapi config context edit CONTEXT-NAME NEW-SPEC-FILE-PATH` @@ -181,7 +181,7 @@ DESCRIPTION Edit a context in the store ``` -_See code: [src/commands/config/context/edit.ts](https://github.com/asyncapi/cli/blob/v0.60.4/src/commands/config/context/edit.ts)_ +_See code: [src/commands/config/context/edit.ts](https://github.com/asyncapi/cli/blob/v1.0.0/src/commands/config/context/edit.ts)_ ## `asyncapi config context init [CONTEXT-FILE-PATH]` @@ -204,7 +204,7 @@ DESCRIPTION Initialize context ``` -_See code: [src/commands/config/context/init.ts](https://github.com/asyncapi/cli/blob/v0.60.4/src/commands/config/context/init.ts)_ +_See code: [src/commands/config/context/init.ts](https://github.com/asyncapi/cli/blob/v1.0.0/src/commands/config/context/init.ts)_ ## `asyncapi config context list` @@ -221,7 +221,7 @@ DESCRIPTION List all the stored contexts in the store ``` -_See code: [src/commands/config/context/list.ts](https://github.com/asyncapi/cli/blob/v0.60.4/src/commands/config/context/list.ts)_ +_See code: [src/commands/config/context/list.ts](https://github.com/asyncapi/cli/blob/v1.0.0/src/commands/config/context/list.ts)_ ## `asyncapi config context remove CONTEXT-NAME` @@ -241,7 +241,7 @@ DESCRIPTION Delete a context from the store ``` -_See code: [src/commands/config/context/remove.ts](https://github.com/asyncapi/cli/blob/v0.60.4/src/commands/config/context/remove.ts)_ +_See code: [src/commands/config/context/remove.ts](https://github.com/asyncapi/cli/blob/v1.0.0/src/commands/config/context/remove.ts)_ ## `asyncapi config context use CONTEXT-NAME` @@ -261,7 +261,7 @@ DESCRIPTION Set a context as current ``` -_See code: [src/commands/config/context/use.ts](https://github.com/asyncapi/cli/blob/v0.60.4/src/commands/config/context/use.ts)_ +_See code: [src/commands/config/context/use.ts](https://github.com/asyncapi/cli/blob/v1.0.0/src/commands/config/context/use.ts)_ ## `asyncapi config versions` @@ -278,7 +278,7 @@ DESCRIPTION Show versions of AsyncAPI tools used ``` -_See code: [src/commands/config/versions.ts](https://github.com/asyncapi/cli/blob/v0.60.4/src/commands/config/versions.ts)_ +_See code: [src/commands/config/versions.ts](https://github.com/asyncapi/cli/blob/v1.0.0/src/commands/config/versions.ts)_ ## `asyncapi convert [SPEC-FILE]` @@ -300,7 +300,7 @@ DESCRIPTION Convert asyncapi documents older to newer versions ``` -_See code: [src/commands/convert.ts](https://github.com/asyncapi/cli/blob/v0.60.4/src/commands/convert.ts)_ +_See code: [src/commands/convert.ts](https://github.com/asyncapi/cli/blob/v1.0.0/src/commands/convert.ts)_ ## `asyncapi diff OLD NEW` @@ -355,7 +355,7 @@ DESCRIPTION Find diff between two asyncapi files ``` -_See code: [src/commands/diff.ts](https://github.com/asyncapi/cli/blob/v0.60.4/src/commands/diff.ts)_ +_See code: [src/commands/diff.ts](https://github.com/asyncapi/cli/blob/v1.0.0/src/commands/diff.ts)_ ## `asyncapi generate` @@ -369,7 +369,7 @@ DESCRIPTION Generate typed models or other things like clients, applications or docs using AsyncAPI Generator templates. ``` -_See code: [src/commands/generate/index.ts](https://github.com/asyncapi/cli/blob/v0.60.4/src/commands/generate/index.ts)_ +_See code: [src/commands/generate/index.ts](https://github.com/asyncapi/cli/blob/v1.0.0/src/commands/generate/index.ts)_ ## `asyncapi generate fromTemplate ASYNCAPI TEMPLATE` @@ -406,7 +406,7 @@ EXAMPLES $ asyncapi generate fromTemplate asyncapi.yaml @asyncapi/html-template --param version=1.0.0 singleFile=true --output ./docs --force-write ``` -_See code: [src/commands/generate/fromTemplate.ts](https://github.com/asyncapi/cli/blob/v0.60.4/src/commands/generate/fromTemplate.ts)_ +_See code: [src/commands/generate/fromTemplate.ts](https://github.com/asyncapi/cli/blob/v1.0.0/src/commands/generate/fromTemplate.ts)_ ## `asyncapi generate models LANGUAGE FILE` @@ -480,7 +480,7 @@ DESCRIPTION Generates typed models ``` -_See code: [src/commands/generate/models.ts](https://github.com/asyncapi/cli/blob/v0.60.4/src/commands/generate/models.ts)_ +_See code: [src/commands/generate/models.ts](https://github.com/asyncapi/cli/blob/v1.0.0/src/commands/generate/models.ts)_ ## `asyncapi new` @@ -535,7 +535,7 @@ EXAMPLES $ asyncapi new --file-name=my-asyncapi.yml --example=default-example.yml --no-tty - create a new file with a specific name, using one of the examples and without interactive mode ``` -_See code: [src/commands/new/index.ts](https://github.com/asyncapi/cli/blob/v0.60.4/src/commands/new/index.ts)_ +_See code: [src/commands/new/index.ts](https://github.com/asyncapi/cli/blob/v1.0.0/src/commands/new/index.ts)_ ## `asyncapi new file` @@ -590,7 +590,7 @@ EXAMPLES $ asyncapi new --file-name=my-asyncapi.yml --example=default-example.yml --no-tty - create a new file with a specific name, using one of the examples and without interactive mode ``` -_See code: [src/commands/new/file.ts](https://github.com/asyncapi/cli/blob/v0.60.4/src/commands/new/file.ts)_ +_See code: [src/commands/new/file.ts](https://github.com/asyncapi/cli/blob/v1.0.0/src/commands/new/file.ts)_ ## `asyncapi new glee` @@ -608,7 +608,7 @@ DESCRIPTION Creates a new Glee project ``` -_See code: [src/commands/new/glee.ts](https://github.com/asyncapi/cli/blob/v0.60.4/src/commands/new/glee.ts)_ +_See code: [src/commands/new/glee.ts](https://github.com/asyncapi/cli/blob/v1.0.0/src/commands/new/glee.ts)_ ## `asyncapi new project` @@ -626,7 +626,7 @@ DESCRIPTION Creates a new Glee project ``` -_See code: [src/commands/new/project.ts](https://github.com/asyncapi/cli/blob/v0.60.4/src/commands/new/project.ts)_ +_See code: [src/commands/new/project.ts](https://github.com/asyncapi/cli/blob/v1.0.0/src/commands/new/project.ts)_ ## `asyncapi optimize [SPEC-FILE]` @@ -662,7 +662,7 @@ EXAMPLES $ asyncapi optimize ./asyncapi.yaml --optimization=remove-components,reuse-components,move-to-components --output=terminal --no-tty ``` -_See code: [src/commands/optimize.ts](https://github.com/asyncapi/cli/blob/v0.60.4/src/commands/optimize.ts)_ +_See code: [src/commands/optimize.ts](https://github.com/asyncapi/cli/blob/v1.0.0/src/commands/optimize.ts)_ ## `asyncapi start` @@ -676,7 +676,7 @@ DESCRIPTION Start asyncapi studio ``` -_See code: [src/commands/start/index.ts](https://github.com/asyncapi/cli/blob/v0.60.4/src/commands/start/index.ts)_ +_See code: [src/commands/start/index.ts](https://github.com/asyncapi/cli/blob/v1.0.0/src/commands/start/index.ts)_ ## `asyncapi start studio` @@ -695,7 +695,7 @@ DESCRIPTION starts a new local instance of Studio ``` -_See code: [src/commands/start/studio.ts](https://github.com/asyncapi/cli/blob/v0.60.4/src/commands/start/studio.ts)_ +_See code: [src/commands/start/studio.ts](https://github.com/asyncapi/cli/blob/v1.0.0/src/commands/start/studio.ts)_ ## `asyncapi validate [SPEC-FILE]` @@ -722,5 +722,5 @@ DESCRIPTION validate asyncapi file ``` -_See code: [src/commands/validate.ts](https://github.com/asyncapi/cli/blob/v0.60.4/src/commands/validate.ts)_ +_See code: [src/commands/validate.ts](https://github.com/asyncapi/cli/blob/v1.0.0/src/commands/validate.ts)_ From 2e73968c1e58b7ca4cd420b4d81872896f2bedda Mon Sep 17 00:00:00 2001 From: asyncapi-bot Date: Tue, 21 Nov 2023 12:23:27 +0100 Subject: [PATCH 092/134] docs(cli): update latest cli documentation (#2341) --- pages/docs/tools/cli/usage.md | 64 ++++++++++++++++++----------------- 1 file changed, 33 insertions(+), 31 deletions(-) diff --git a/pages/docs/tools/cli/usage.md b/pages/docs/tools/cli/usage.md index e807a0872ab..7a4490097bc 100644 --- a/pages/docs/tools/cli/usage.md +++ b/pages/docs/tools/cli/usage.md @@ -29,7 +29,7 @@ $ npm install -g @asyncapi/cli $ asyncapi COMMAND running command... $ asyncapi (--version) -@asyncapi/cli/1.0.0 linux-x64 node-v18.18.2 +@asyncapi/cli/1.0.1 linux-x64 node-v18.18.2 $ asyncapi --help [COMMAND] USAGE $ asyncapi COMMAND @@ -93,7 +93,7 @@ EXAMPLES $ asyncapi bundle ./asyncapi.yaml ./features.yaml --base ./asyncapi.yaml --reference-into-components ``` -_See code: [src/commands/bundle.ts](https://github.com/asyncapi/cli/blob/v1.0.0/src/commands/bundle.ts)_ +_See code: [src/commands/bundle.ts](https://github.com/asyncapi/cli/blob/v1.0.1/src/commands/bundle.ts)_ ## `asyncapi config` @@ -107,7 +107,7 @@ DESCRIPTION CLI config settings ``` -_See code: [src/commands/config/index.ts](https://github.com/asyncapi/cli/blob/v1.0.0/src/commands/config/index.ts)_ +_See code: [src/commands/config/index.ts](https://github.com/asyncapi/cli/blob/v1.0.1/src/commands/config/index.ts)_ ## `asyncapi config context` @@ -121,7 +121,7 @@ DESCRIPTION Manage short aliases for full paths to AsyncAPI documents ``` -_See code: [src/commands/config/context/index.ts](https://github.com/asyncapi/cli/blob/v1.0.0/src/commands/config/context/index.ts)_ +_See code: [src/commands/config/context/index.ts](https://github.com/asyncapi/cli/blob/v1.0.1/src/commands/config/context/index.ts)_ ## `asyncapi config context add CONTEXT-NAME SPEC-FILE-PATH` @@ -143,7 +143,7 @@ DESCRIPTION Add a context to the store ``` -_See code: [src/commands/config/context/add.ts](https://github.com/asyncapi/cli/blob/v1.0.0/src/commands/config/context/add.ts)_ +_See code: [src/commands/config/context/add.ts](https://github.com/asyncapi/cli/blob/v1.0.1/src/commands/config/context/add.ts)_ ## `asyncapi config context current` @@ -160,7 +160,7 @@ DESCRIPTION Shows the current context that is being used ``` -_See code: [src/commands/config/context/current.ts](https://github.com/asyncapi/cli/blob/v1.0.0/src/commands/config/context/current.ts)_ +_See code: [src/commands/config/context/current.ts](https://github.com/asyncapi/cli/blob/v1.0.1/src/commands/config/context/current.ts)_ ## `asyncapi config context edit CONTEXT-NAME NEW-SPEC-FILE-PATH` @@ -181,7 +181,7 @@ DESCRIPTION Edit a context in the store ``` -_See code: [src/commands/config/context/edit.ts](https://github.com/asyncapi/cli/blob/v1.0.0/src/commands/config/context/edit.ts)_ +_See code: [src/commands/config/context/edit.ts](https://github.com/asyncapi/cli/blob/v1.0.1/src/commands/config/context/edit.ts)_ ## `asyncapi config context init [CONTEXT-FILE-PATH]` @@ -204,7 +204,7 @@ DESCRIPTION Initialize context ``` -_See code: [src/commands/config/context/init.ts](https://github.com/asyncapi/cli/blob/v1.0.0/src/commands/config/context/init.ts)_ +_See code: [src/commands/config/context/init.ts](https://github.com/asyncapi/cli/blob/v1.0.1/src/commands/config/context/init.ts)_ ## `asyncapi config context list` @@ -221,7 +221,7 @@ DESCRIPTION List all the stored contexts in the store ``` -_See code: [src/commands/config/context/list.ts](https://github.com/asyncapi/cli/blob/v1.0.0/src/commands/config/context/list.ts)_ +_See code: [src/commands/config/context/list.ts](https://github.com/asyncapi/cli/blob/v1.0.1/src/commands/config/context/list.ts)_ ## `asyncapi config context remove CONTEXT-NAME` @@ -241,7 +241,7 @@ DESCRIPTION Delete a context from the store ``` -_See code: [src/commands/config/context/remove.ts](https://github.com/asyncapi/cli/blob/v1.0.0/src/commands/config/context/remove.ts)_ +_See code: [src/commands/config/context/remove.ts](https://github.com/asyncapi/cli/blob/v1.0.1/src/commands/config/context/remove.ts)_ ## `asyncapi config context use CONTEXT-NAME` @@ -261,7 +261,7 @@ DESCRIPTION Set a context as current ``` -_See code: [src/commands/config/context/use.ts](https://github.com/asyncapi/cli/blob/v1.0.0/src/commands/config/context/use.ts)_ +_See code: [src/commands/config/context/use.ts](https://github.com/asyncapi/cli/blob/v1.0.1/src/commands/config/context/use.ts)_ ## `asyncapi config versions` @@ -278,7 +278,7 @@ DESCRIPTION Show versions of AsyncAPI tools used ``` -_See code: [src/commands/config/versions.ts](https://github.com/asyncapi/cli/blob/v1.0.0/src/commands/config/versions.ts)_ +_See code: [src/commands/config/versions.ts](https://github.com/asyncapi/cli/blob/v1.0.1/src/commands/config/versions.ts)_ ## `asyncapi convert [SPEC-FILE]` @@ -300,7 +300,7 @@ DESCRIPTION Convert asyncapi documents older to newer versions ``` -_See code: [src/commands/convert.ts](https://github.com/asyncapi/cli/blob/v1.0.0/src/commands/convert.ts)_ +_See code: [src/commands/convert.ts](https://github.com/asyncapi/cli/blob/v1.0.1/src/commands/convert.ts)_ ## `asyncapi diff OLD NEW` @@ -355,7 +355,7 @@ DESCRIPTION Find diff between two asyncapi files ``` -_See code: [src/commands/diff.ts](https://github.com/asyncapi/cli/blob/v1.0.0/src/commands/diff.ts)_ +_See code: [src/commands/diff.ts](https://github.com/asyncapi/cli/blob/v1.0.1/src/commands/diff.ts)_ ## `asyncapi generate` @@ -369,7 +369,7 @@ DESCRIPTION Generate typed models or other things like clients, applications or docs using AsyncAPI Generator templates. ``` -_See code: [src/commands/generate/index.ts](https://github.com/asyncapi/cli/blob/v1.0.0/src/commands/generate/index.ts)_ +_See code: [src/commands/generate/index.ts](https://github.com/asyncapi/cli/blob/v1.0.1/src/commands/generate/index.ts)_ ## `asyncapi generate fromTemplate ASYNCAPI TEMPLATE` @@ -406,7 +406,7 @@ EXAMPLES $ asyncapi generate fromTemplate asyncapi.yaml @asyncapi/html-template --param version=1.0.0 singleFile=true --output ./docs --force-write ``` -_See code: [src/commands/generate/fromTemplate.ts](https://github.com/asyncapi/cli/blob/v1.0.0/src/commands/generate/fromTemplate.ts)_ +_See code: [src/commands/generate/fromTemplate.ts](https://github.com/asyncapi/cli/blob/v1.0.1/src/commands/generate/fromTemplate.ts)_ ## `asyncapi generate models LANGUAGE FILE` @@ -480,7 +480,7 @@ DESCRIPTION Generates typed models ``` -_See code: [src/commands/generate/models.ts](https://github.com/asyncapi/cli/blob/v1.0.0/src/commands/generate/models.ts)_ +_See code: [src/commands/generate/models.ts](https://github.com/asyncapi/cli/blob/v1.0.1/src/commands/generate/models.ts)_ ## `asyncapi new` @@ -535,7 +535,7 @@ EXAMPLES $ asyncapi new --file-name=my-asyncapi.yml --example=default-example.yml --no-tty - create a new file with a specific name, using one of the examples and without interactive mode ``` -_See code: [src/commands/new/index.ts](https://github.com/asyncapi/cli/blob/v1.0.0/src/commands/new/index.ts)_ +_See code: [src/commands/new/index.ts](https://github.com/asyncapi/cli/blob/v1.0.1/src/commands/new/index.ts)_ ## `asyncapi new file` @@ -590,7 +590,7 @@ EXAMPLES $ asyncapi new --file-name=my-asyncapi.yml --example=default-example.yml --no-tty - create a new file with a specific name, using one of the examples and without interactive mode ``` -_See code: [src/commands/new/file.ts](https://github.com/asyncapi/cli/blob/v1.0.0/src/commands/new/file.ts)_ +_See code: [src/commands/new/file.ts](https://github.com/asyncapi/cli/blob/v1.0.1/src/commands/new/file.ts)_ ## `asyncapi new glee` @@ -598,17 +598,18 @@ Creates a new Glee project ``` USAGE - $ asyncapi new glee [-h] [-n ] + $ asyncapi new glee [-h] [-n ] [-t ] FLAGS - -h, --help Show CLI help. - -n, --name= [default: project] name of the project + -h, --help Show CLI help. + -n, --name= [default: project] name of the project + -t, --template= [default: default] name of the template DESCRIPTION Creates a new Glee project ``` -_See code: [src/commands/new/glee.ts](https://github.com/asyncapi/cli/blob/v1.0.0/src/commands/new/glee.ts)_ +_See code: [src/commands/new/glee.ts](https://github.com/asyncapi/cli/blob/v1.0.1/src/commands/new/glee.ts)_ ## `asyncapi new project` @@ -616,17 +617,18 @@ Creates a new Glee project ``` USAGE - $ asyncapi new project [-h] [-n ] + $ asyncapi new project [-h] [-n ] [-t ] FLAGS - -h, --help Show CLI help. - -n, --name= [default: project] name of the project + -h, --help Show CLI help. + -n, --name= [default: project] name of the project + -t, --template= [default: default] name of the template DESCRIPTION Creates a new Glee project ``` -_See code: [src/commands/new/project.ts](https://github.com/asyncapi/cli/blob/v1.0.0/src/commands/new/project.ts)_ +_See code: [src/commands/new/project.ts](https://github.com/asyncapi/cli/blob/v1.0.1/src/commands/new/project.ts)_ ## `asyncapi optimize [SPEC-FILE]` @@ -662,7 +664,7 @@ EXAMPLES $ asyncapi optimize ./asyncapi.yaml --optimization=remove-components,reuse-components,move-to-components --output=terminal --no-tty ``` -_See code: [src/commands/optimize.ts](https://github.com/asyncapi/cli/blob/v1.0.0/src/commands/optimize.ts)_ +_See code: [src/commands/optimize.ts](https://github.com/asyncapi/cli/blob/v1.0.1/src/commands/optimize.ts)_ ## `asyncapi start` @@ -676,7 +678,7 @@ DESCRIPTION Start asyncapi studio ``` -_See code: [src/commands/start/index.ts](https://github.com/asyncapi/cli/blob/v1.0.0/src/commands/start/index.ts)_ +_See code: [src/commands/start/index.ts](https://github.com/asyncapi/cli/blob/v1.0.1/src/commands/start/index.ts)_ ## `asyncapi start studio` @@ -695,7 +697,7 @@ DESCRIPTION starts a new local instance of Studio ``` -_See code: [src/commands/start/studio.ts](https://github.com/asyncapi/cli/blob/v1.0.0/src/commands/start/studio.ts)_ +_See code: [src/commands/start/studio.ts](https://github.com/asyncapi/cli/blob/v1.0.1/src/commands/start/studio.ts)_ ## `asyncapi validate [SPEC-FILE]` @@ -722,5 +724,5 @@ DESCRIPTION validate asyncapi file ``` -_See code: [src/commands/validate.ts](https://github.com/asyncapi/cli/blob/v1.0.0/src/commands/validate.ts)_ +_See code: [src/commands/validate.ts](https://github.com/asyncapi/cli/blob/v1.0.1/src/commands/validate.ts)_ From 69b0f059fc4ee94be519871b2049c7d550061d1f Mon Sep 17 00:00:00 2001 From: V Thulisile Sibanda <66913810+thulieblack@users.noreply.github.com> Date: Tue, 21 Nov 2023 20:01:50 +0200 Subject: [PATCH 093/134] feat: update banner link (#2343) Co-authored-by: akshatnema --- components/campaigns/AnnoucementHero.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/components/campaigns/AnnoucementHero.js b/components/campaigns/AnnoucementHero.js index cb31fd494ca..94d67320996 100644 --- a/components/campaigns/AnnoucementHero.js +++ b/components/campaigns/AnnoucementHero.js @@ -33,7 +33,7 @@ export default function AnnouncementHero({ className = '', small = false, hideVi return (
Date: Wed, 22 Nov 2023 16:03:59 +0100 Subject: [PATCH 094/134] docs(cli): update latest cli documentation (#2345) --- pages/docs/tools/cli/usage.md | 50 +++++++++++++++++------------------ 1 file changed, 25 insertions(+), 25 deletions(-) diff --git a/pages/docs/tools/cli/usage.md b/pages/docs/tools/cli/usage.md index 7a4490097bc..3bf8fdc7d46 100644 --- a/pages/docs/tools/cli/usage.md +++ b/pages/docs/tools/cli/usage.md @@ -29,7 +29,7 @@ $ npm install -g @asyncapi/cli $ asyncapi COMMAND running command... $ asyncapi (--version) -@asyncapi/cli/1.0.1 linux-x64 node-v18.18.2 +@asyncapi/cli/1.1.0 linux-x64 node-v18.18.2 $ asyncapi --help [COMMAND] USAGE $ asyncapi COMMAND @@ -93,7 +93,7 @@ EXAMPLES $ asyncapi bundle ./asyncapi.yaml ./features.yaml --base ./asyncapi.yaml --reference-into-components ``` -_See code: [src/commands/bundle.ts](https://github.com/asyncapi/cli/blob/v1.0.1/src/commands/bundle.ts)_ +_See code: [src/commands/bundle.ts](https://github.com/asyncapi/cli/blob/v1.1.0/src/commands/bundle.ts)_ ## `asyncapi config` @@ -107,7 +107,7 @@ DESCRIPTION CLI config settings ``` -_See code: [src/commands/config/index.ts](https://github.com/asyncapi/cli/blob/v1.0.1/src/commands/config/index.ts)_ +_See code: [src/commands/config/index.ts](https://github.com/asyncapi/cli/blob/v1.1.0/src/commands/config/index.ts)_ ## `asyncapi config context` @@ -121,7 +121,7 @@ DESCRIPTION Manage short aliases for full paths to AsyncAPI documents ``` -_See code: [src/commands/config/context/index.ts](https://github.com/asyncapi/cli/blob/v1.0.1/src/commands/config/context/index.ts)_ +_See code: [src/commands/config/context/index.ts](https://github.com/asyncapi/cli/blob/v1.1.0/src/commands/config/context/index.ts)_ ## `asyncapi config context add CONTEXT-NAME SPEC-FILE-PATH` @@ -143,7 +143,7 @@ DESCRIPTION Add a context to the store ``` -_See code: [src/commands/config/context/add.ts](https://github.com/asyncapi/cli/blob/v1.0.1/src/commands/config/context/add.ts)_ +_See code: [src/commands/config/context/add.ts](https://github.com/asyncapi/cli/blob/v1.1.0/src/commands/config/context/add.ts)_ ## `asyncapi config context current` @@ -160,7 +160,7 @@ DESCRIPTION Shows the current context that is being used ``` -_See code: [src/commands/config/context/current.ts](https://github.com/asyncapi/cli/blob/v1.0.1/src/commands/config/context/current.ts)_ +_See code: [src/commands/config/context/current.ts](https://github.com/asyncapi/cli/blob/v1.1.0/src/commands/config/context/current.ts)_ ## `asyncapi config context edit CONTEXT-NAME NEW-SPEC-FILE-PATH` @@ -181,7 +181,7 @@ DESCRIPTION Edit a context in the store ``` -_See code: [src/commands/config/context/edit.ts](https://github.com/asyncapi/cli/blob/v1.0.1/src/commands/config/context/edit.ts)_ +_See code: [src/commands/config/context/edit.ts](https://github.com/asyncapi/cli/blob/v1.1.0/src/commands/config/context/edit.ts)_ ## `asyncapi config context init [CONTEXT-FILE-PATH]` @@ -204,7 +204,7 @@ DESCRIPTION Initialize context ``` -_See code: [src/commands/config/context/init.ts](https://github.com/asyncapi/cli/blob/v1.0.1/src/commands/config/context/init.ts)_ +_See code: [src/commands/config/context/init.ts](https://github.com/asyncapi/cli/blob/v1.1.0/src/commands/config/context/init.ts)_ ## `asyncapi config context list` @@ -221,7 +221,7 @@ DESCRIPTION List all the stored contexts in the store ``` -_See code: [src/commands/config/context/list.ts](https://github.com/asyncapi/cli/blob/v1.0.1/src/commands/config/context/list.ts)_ +_See code: [src/commands/config/context/list.ts](https://github.com/asyncapi/cli/blob/v1.1.0/src/commands/config/context/list.ts)_ ## `asyncapi config context remove CONTEXT-NAME` @@ -241,7 +241,7 @@ DESCRIPTION Delete a context from the store ``` -_See code: [src/commands/config/context/remove.ts](https://github.com/asyncapi/cli/blob/v1.0.1/src/commands/config/context/remove.ts)_ +_See code: [src/commands/config/context/remove.ts](https://github.com/asyncapi/cli/blob/v1.1.0/src/commands/config/context/remove.ts)_ ## `asyncapi config context use CONTEXT-NAME` @@ -261,7 +261,7 @@ DESCRIPTION Set a context as current ``` -_See code: [src/commands/config/context/use.ts](https://github.com/asyncapi/cli/blob/v1.0.1/src/commands/config/context/use.ts)_ +_See code: [src/commands/config/context/use.ts](https://github.com/asyncapi/cli/blob/v1.1.0/src/commands/config/context/use.ts)_ ## `asyncapi config versions` @@ -278,7 +278,7 @@ DESCRIPTION Show versions of AsyncAPI tools used ``` -_See code: [src/commands/config/versions.ts](https://github.com/asyncapi/cli/blob/v1.0.1/src/commands/config/versions.ts)_ +_See code: [src/commands/config/versions.ts](https://github.com/asyncapi/cli/blob/v1.1.0/src/commands/config/versions.ts)_ ## `asyncapi convert [SPEC-FILE]` @@ -300,7 +300,7 @@ DESCRIPTION Convert asyncapi documents older to newer versions ``` -_See code: [src/commands/convert.ts](https://github.com/asyncapi/cli/blob/v1.0.1/src/commands/convert.ts)_ +_See code: [src/commands/convert.ts](https://github.com/asyncapi/cli/blob/v1.1.0/src/commands/convert.ts)_ ## `asyncapi diff OLD NEW` @@ -355,7 +355,7 @@ DESCRIPTION Find diff between two asyncapi files ``` -_See code: [src/commands/diff.ts](https://github.com/asyncapi/cli/blob/v1.0.1/src/commands/diff.ts)_ +_See code: [src/commands/diff.ts](https://github.com/asyncapi/cli/blob/v1.1.0/src/commands/diff.ts)_ ## `asyncapi generate` @@ -369,7 +369,7 @@ DESCRIPTION Generate typed models or other things like clients, applications or docs using AsyncAPI Generator templates. ``` -_See code: [src/commands/generate/index.ts](https://github.com/asyncapi/cli/blob/v1.0.1/src/commands/generate/index.ts)_ +_See code: [src/commands/generate/index.ts](https://github.com/asyncapi/cli/blob/v1.1.0/src/commands/generate/index.ts)_ ## `asyncapi generate fromTemplate ASYNCAPI TEMPLATE` @@ -406,7 +406,7 @@ EXAMPLES $ asyncapi generate fromTemplate asyncapi.yaml @asyncapi/html-template --param version=1.0.0 singleFile=true --output ./docs --force-write ``` -_See code: [src/commands/generate/fromTemplate.ts](https://github.com/asyncapi/cli/blob/v1.0.1/src/commands/generate/fromTemplate.ts)_ +_See code: [src/commands/generate/fromTemplate.ts](https://github.com/asyncapi/cli/blob/v1.1.0/src/commands/generate/fromTemplate.ts)_ ## `asyncapi generate models LANGUAGE FILE` @@ -480,7 +480,7 @@ DESCRIPTION Generates typed models ``` -_See code: [src/commands/generate/models.ts](https://github.com/asyncapi/cli/blob/v1.0.1/src/commands/generate/models.ts)_ +_See code: [src/commands/generate/models.ts](https://github.com/asyncapi/cli/blob/v1.1.0/src/commands/generate/models.ts)_ ## `asyncapi new` @@ -535,7 +535,7 @@ EXAMPLES $ asyncapi new --file-name=my-asyncapi.yml --example=default-example.yml --no-tty - create a new file with a specific name, using one of the examples and without interactive mode ``` -_See code: [src/commands/new/index.ts](https://github.com/asyncapi/cli/blob/v1.0.1/src/commands/new/index.ts)_ +_See code: [src/commands/new/index.ts](https://github.com/asyncapi/cli/blob/v1.1.0/src/commands/new/index.ts)_ ## `asyncapi new file` @@ -590,7 +590,7 @@ EXAMPLES $ asyncapi new --file-name=my-asyncapi.yml --example=default-example.yml --no-tty - create a new file with a specific name, using one of the examples and without interactive mode ``` -_See code: [src/commands/new/file.ts](https://github.com/asyncapi/cli/blob/v1.0.1/src/commands/new/file.ts)_ +_See code: [src/commands/new/file.ts](https://github.com/asyncapi/cli/blob/v1.1.0/src/commands/new/file.ts)_ ## `asyncapi new glee` @@ -609,7 +609,7 @@ DESCRIPTION Creates a new Glee project ``` -_See code: [src/commands/new/glee.ts](https://github.com/asyncapi/cli/blob/v1.0.1/src/commands/new/glee.ts)_ +_See code: [src/commands/new/glee.ts](https://github.com/asyncapi/cli/blob/v1.1.0/src/commands/new/glee.ts)_ ## `asyncapi new project` @@ -628,7 +628,7 @@ DESCRIPTION Creates a new Glee project ``` -_See code: [src/commands/new/project.ts](https://github.com/asyncapi/cli/blob/v1.0.1/src/commands/new/project.ts)_ +_See code: [src/commands/new/project.ts](https://github.com/asyncapi/cli/blob/v1.1.0/src/commands/new/project.ts)_ ## `asyncapi optimize [SPEC-FILE]` @@ -664,7 +664,7 @@ EXAMPLES $ asyncapi optimize ./asyncapi.yaml --optimization=remove-components,reuse-components,move-to-components --output=terminal --no-tty ``` -_See code: [src/commands/optimize.ts](https://github.com/asyncapi/cli/blob/v1.0.1/src/commands/optimize.ts)_ +_See code: [src/commands/optimize.ts](https://github.com/asyncapi/cli/blob/v1.1.0/src/commands/optimize.ts)_ ## `asyncapi start` @@ -678,7 +678,7 @@ DESCRIPTION Start asyncapi studio ``` -_See code: [src/commands/start/index.ts](https://github.com/asyncapi/cli/blob/v1.0.1/src/commands/start/index.ts)_ +_See code: [src/commands/start/index.ts](https://github.com/asyncapi/cli/blob/v1.1.0/src/commands/start/index.ts)_ ## `asyncapi start studio` @@ -697,7 +697,7 @@ DESCRIPTION starts a new local instance of Studio ``` -_See code: [src/commands/start/studio.ts](https://github.com/asyncapi/cli/blob/v1.0.1/src/commands/start/studio.ts)_ +_See code: [src/commands/start/studio.ts](https://github.com/asyncapi/cli/blob/v1.1.0/src/commands/start/studio.ts)_ ## `asyncapi validate [SPEC-FILE]` @@ -724,5 +724,5 @@ DESCRIPTION validate asyncapi file ``` -_See code: [src/commands/validate.ts](https://github.com/asyncapi/cli/blob/v1.0.1/src/commands/validate.ts)_ +_See code: [src/commands/validate.ts](https://github.com/asyncapi/cli/blob/v1.1.0/src/commands/validate.ts)_ From acb96f8f86057d2d0fe4276076a20f603ae45e75 Mon Sep 17 00:00:00 2001 From: V Thulisile Sibanda <66913810+thulieblack@users.noreply.github.com> Date: Wed, 22 Nov 2023 18:53:32 +0200 Subject: [PATCH 095/134] fix: update slack link (#2344) Co-authored-by: Lukasz Gornicki --- public/_redirects | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/public/_redirects b/public/_redirects index 71d94dc1fbc..f143a4c0917 100644 --- a/public/_redirects +++ b/public/_redirects @@ -56,7 +56,7 @@ https://www.asyncapi.io/* https://www.asyncapi.com/:splat 301! /asyncapi-react https://asyncapi.github.io/asyncapi-react 301! # Slack -/slack-invite https://join.slack.com/t/asyncapi/shared_invite/zt-2329g7esz-jPKWhnRBX0NKJMK4gatqKQ 302! +/slack-invite https://join.slack.com/t/asyncapi/shared_invite/zt-27m89oa1t-ZC~UIa5B2Vujm6oq7fa~gQ 302! # Central Maven repository verification /OSSRH-63280 https://github.com/asyncapi/java-asyncapi From dedd8830fab4f29e093358fd058828645be187da Mon Sep 17 00:00:00 2001 From: asyncapi-bot Date: Thu, 23 Nov 2023 11:54:43 +0100 Subject: [PATCH 096/134] docs(cli): update latest cli documentation (#2346) --- pages/docs/tools/cli/usage.md | 50 +++++++++++++++++------------------ 1 file changed, 25 insertions(+), 25 deletions(-) diff --git a/pages/docs/tools/cli/usage.md b/pages/docs/tools/cli/usage.md index 3bf8fdc7d46..a58125eec80 100644 --- a/pages/docs/tools/cli/usage.md +++ b/pages/docs/tools/cli/usage.md @@ -29,7 +29,7 @@ $ npm install -g @asyncapi/cli $ asyncapi COMMAND running command... $ asyncapi (--version) -@asyncapi/cli/1.1.0 linux-x64 node-v18.18.2 +@asyncapi/cli/1.1.1 linux-x64 node-v18.18.2 $ asyncapi --help [COMMAND] USAGE $ asyncapi COMMAND @@ -93,7 +93,7 @@ EXAMPLES $ asyncapi bundle ./asyncapi.yaml ./features.yaml --base ./asyncapi.yaml --reference-into-components ``` -_See code: [src/commands/bundle.ts](https://github.com/asyncapi/cli/blob/v1.1.0/src/commands/bundle.ts)_ +_See code: [src/commands/bundle.ts](https://github.com/asyncapi/cli/blob/v1.1.1/src/commands/bundle.ts)_ ## `asyncapi config` @@ -107,7 +107,7 @@ DESCRIPTION CLI config settings ``` -_See code: [src/commands/config/index.ts](https://github.com/asyncapi/cli/blob/v1.1.0/src/commands/config/index.ts)_ +_See code: [src/commands/config/index.ts](https://github.com/asyncapi/cli/blob/v1.1.1/src/commands/config/index.ts)_ ## `asyncapi config context` @@ -121,7 +121,7 @@ DESCRIPTION Manage short aliases for full paths to AsyncAPI documents ``` -_See code: [src/commands/config/context/index.ts](https://github.com/asyncapi/cli/blob/v1.1.0/src/commands/config/context/index.ts)_ +_See code: [src/commands/config/context/index.ts](https://github.com/asyncapi/cli/blob/v1.1.1/src/commands/config/context/index.ts)_ ## `asyncapi config context add CONTEXT-NAME SPEC-FILE-PATH` @@ -143,7 +143,7 @@ DESCRIPTION Add a context to the store ``` -_See code: [src/commands/config/context/add.ts](https://github.com/asyncapi/cli/blob/v1.1.0/src/commands/config/context/add.ts)_ +_See code: [src/commands/config/context/add.ts](https://github.com/asyncapi/cli/blob/v1.1.1/src/commands/config/context/add.ts)_ ## `asyncapi config context current` @@ -160,7 +160,7 @@ DESCRIPTION Shows the current context that is being used ``` -_See code: [src/commands/config/context/current.ts](https://github.com/asyncapi/cli/blob/v1.1.0/src/commands/config/context/current.ts)_ +_See code: [src/commands/config/context/current.ts](https://github.com/asyncapi/cli/blob/v1.1.1/src/commands/config/context/current.ts)_ ## `asyncapi config context edit CONTEXT-NAME NEW-SPEC-FILE-PATH` @@ -181,7 +181,7 @@ DESCRIPTION Edit a context in the store ``` -_See code: [src/commands/config/context/edit.ts](https://github.com/asyncapi/cli/blob/v1.1.0/src/commands/config/context/edit.ts)_ +_See code: [src/commands/config/context/edit.ts](https://github.com/asyncapi/cli/blob/v1.1.1/src/commands/config/context/edit.ts)_ ## `asyncapi config context init [CONTEXT-FILE-PATH]` @@ -204,7 +204,7 @@ DESCRIPTION Initialize context ``` -_See code: [src/commands/config/context/init.ts](https://github.com/asyncapi/cli/blob/v1.1.0/src/commands/config/context/init.ts)_ +_See code: [src/commands/config/context/init.ts](https://github.com/asyncapi/cli/blob/v1.1.1/src/commands/config/context/init.ts)_ ## `asyncapi config context list` @@ -221,7 +221,7 @@ DESCRIPTION List all the stored contexts in the store ``` -_See code: [src/commands/config/context/list.ts](https://github.com/asyncapi/cli/blob/v1.1.0/src/commands/config/context/list.ts)_ +_See code: [src/commands/config/context/list.ts](https://github.com/asyncapi/cli/blob/v1.1.1/src/commands/config/context/list.ts)_ ## `asyncapi config context remove CONTEXT-NAME` @@ -241,7 +241,7 @@ DESCRIPTION Delete a context from the store ``` -_See code: [src/commands/config/context/remove.ts](https://github.com/asyncapi/cli/blob/v1.1.0/src/commands/config/context/remove.ts)_ +_See code: [src/commands/config/context/remove.ts](https://github.com/asyncapi/cli/blob/v1.1.1/src/commands/config/context/remove.ts)_ ## `asyncapi config context use CONTEXT-NAME` @@ -261,7 +261,7 @@ DESCRIPTION Set a context as current ``` -_See code: [src/commands/config/context/use.ts](https://github.com/asyncapi/cli/blob/v1.1.0/src/commands/config/context/use.ts)_ +_See code: [src/commands/config/context/use.ts](https://github.com/asyncapi/cli/blob/v1.1.1/src/commands/config/context/use.ts)_ ## `asyncapi config versions` @@ -278,7 +278,7 @@ DESCRIPTION Show versions of AsyncAPI tools used ``` -_See code: [src/commands/config/versions.ts](https://github.com/asyncapi/cli/blob/v1.1.0/src/commands/config/versions.ts)_ +_See code: [src/commands/config/versions.ts](https://github.com/asyncapi/cli/blob/v1.1.1/src/commands/config/versions.ts)_ ## `asyncapi convert [SPEC-FILE]` @@ -300,7 +300,7 @@ DESCRIPTION Convert asyncapi documents older to newer versions ``` -_See code: [src/commands/convert.ts](https://github.com/asyncapi/cli/blob/v1.1.0/src/commands/convert.ts)_ +_See code: [src/commands/convert.ts](https://github.com/asyncapi/cli/blob/v1.1.1/src/commands/convert.ts)_ ## `asyncapi diff OLD NEW` @@ -355,7 +355,7 @@ DESCRIPTION Find diff between two asyncapi files ``` -_See code: [src/commands/diff.ts](https://github.com/asyncapi/cli/blob/v1.1.0/src/commands/diff.ts)_ +_See code: [src/commands/diff.ts](https://github.com/asyncapi/cli/blob/v1.1.1/src/commands/diff.ts)_ ## `asyncapi generate` @@ -369,7 +369,7 @@ DESCRIPTION Generate typed models or other things like clients, applications or docs using AsyncAPI Generator templates. ``` -_See code: [src/commands/generate/index.ts](https://github.com/asyncapi/cli/blob/v1.1.0/src/commands/generate/index.ts)_ +_See code: [src/commands/generate/index.ts](https://github.com/asyncapi/cli/blob/v1.1.1/src/commands/generate/index.ts)_ ## `asyncapi generate fromTemplate ASYNCAPI TEMPLATE` @@ -406,7 +406,7 @@ EXAMPLES $ asyncapi generate fromTemplate asyncapi.yaml @asyncapi/html-template --param version=1.0.0 singleFile=true --output ./docs --force-write ``` -_See code: [src/commands/generate/fromTemplate.ts](https://github.com/asyncapi/cli/blob/v1.1.0/src/commands/generate/fromTemplate.ts)_ +_See code: [src/commands/generate/fromTemplate.ts](https://github.com/asyncapi/cli/blob/v1.1.1/src/commands/generate/fromTemplate.ts)_ ## `asyncapi generate models LANGUAGE FILE` @@ -480,7 +480,7 @@ DESCRIPTION Generates typed models ``` -_See code: [src/commands/generate/models.ts](https://github.com/asyncapi/cli/blob/v1.1.0/src/commands/generate/models.ts)_ +_See code: [src/commands/generate/models.ts](https://github.com/asyncapi/cli/blob/v1.1.1/src/commands/generate/models.ts)_ ## `asyncapi new` @@ -535,7 +535,7 @@ EXAMPLES $ asyncapi new --file-name=my-asyncapi.yml --example=default-example.yml --no-tty - create a new file with a specific name, using one of the examples and without interactive mode ``` -_See code: [src/commands/new/index.ts](https://github.com/asyncapi/cli/blob/v1.1.0/src/commands/new/index.ts)_ +_See code: [src/commands/new/index.ts](https://github.com/asyncapi/cli/blob/v1.1.1/src/commands/new/index.ts)_ ## `asyncapi new file` @@ -590,7 +590,7 @@ EXAMPLES $ asyncapi new --file-name=my-asyncapi.yml --example=default-example.yml --no-tty - create a new file with a specific name, using one of the examples and without interactive mode ``` -_See code: [src/commands/new/file.ts](https://github.com/asyncapi/cli/blob/v1.1.0/src/commands/new/file.ts)_ +_See code: [src/commands/new/file.ts](https://github.com/asyncapi/cli/blob/v1.1.1/src/commands/new/file.ts)_ ## `asyncapi new glee` @@ -609,7 +609,7 @@ DESCRIPTION Creates a new Glee project ``` -_See code: [src/commands/new/glee.ts](https://github.com/asyncapi/cli/blob/v1.1.0/src/commands/new/glee.ts)_ +_See code: [src/commands/new/glee.ts](https://github.com/asyncapi/cli/blob/v1.1.1/src/commands/new/glee.ts)_ ## `asyncapi new project` @@ -628,7 +628,7 @@ DESCRIPTION Creates a new Glee project ``` -_See code: [src/commands/new/project.ts](https://github.com/asyncapi/cli/blob/v1.1.0/src/commands/new/project.ts)_ +_See code: [src/commands/new/project.ts](https://github.com/asyncapi/cli/blob/v1.1.1/src/commands/new/project.ts)_ ## `asyncapi optimize [SPEC-FILE]` @@ -664,7 +664,7 @@ EXAMPLES $ asyncapi optimize ./asyncapi.yaml --optimization=remove-components,reuse-components,move-to-components --output=terminal --no-tty ``` -_See code: [src/commands/optimize.ts](https://github.com/asyncapi/cli/blob/v1.1.0/src/commands/optimize.ts)_ +_See code: [src/commands/optimize.ts](https://github.com/asyncapi/cli/blob/v1.1.1/src/commands/optimize.ts)_ ## `asyncapi start` @@ -678,7 +678,7 @@ DESCRIPTION Start asyncapi studio ``` -_See code: [src/commands/start/index.ts](https://github.com/asyncapi/cli/blob/v1.1.0/src/commands/start/index.ts)_ +_See code: [src/commands/start/index.ts](https://github.com/asyncapi/cli/blob/v1.1.1/src/commands/start/index.ts)_ ## `asyncapi start studio` @@ -697,7 +697,7 @@ DESCRIPTION starts a new local instance of Studio ``` -_See code: [src/commands/start/studio.ts](https://github.com/asyncapi/cli/blob/v1.1.0/src/commands/start/studio.ts)_ +_See code: [src/commands/start/studio.ts](https://github.com/asyncapi/cli/blob/v1.1.1/src/commands/start/studio.ts)_ ## `asyncapi validate [SPEC-FILE]` @@ -724,5 +724,5 @@ DESCRIPTION validate asyncapi file ``` -_See code: [src/commands/validate.ts](https://github.com/asyncapi/cli/blob/v1.1.0/src/commands/validate.ts)_ +_See code: [src/commands/validate.ts](https://github.com/asyncapi/cli/blob/v1.1.1/src/commands/validate.ts)_ From e7daa804f8d5dd9c48f39cc72282ae8c98f1f377 Mon Sep 17 00:00:00 2001 From: asyncapi-bot Date: Thu, 23 Nov 2023 17:48:45 +0100 Subject: [PATCH 097/134] docs(cli): update latest cli documentation (#2347) --- pages/docs/tools/cli/usage.md | 50 +++++++++++++++++------------------ 1 file changed, 25 insertions(+), 25 deletions(-) diff --git a/pages/docs/tools/cli/usage.md b/pages/docs/tools/cli/usage.md index a58125eec80..ff4cf1e3ca3 100644 --- a/pages/docs/tools/cli/usage.md +++ b/pages/docs/tools/cli/usage.md @@ -29,7 +29,7 @@ $ npm install -g @asyncapi/cli $ asyncapi COMMAND running command... $ asyncapi (--version) -@asyncapi/cli/1.1.1 linux-x64 node-v18.18.2 +@asyncapi/cli/1.1.2 linux-x64 node-v18.18.2 $ asyncapi --help [COMMAND] USAGE $ asyncapi COMMAND @@ -93,7 +93,7 @@ EXAMPLES $ asyncapi bundle ./asyncapi.yaml ./features.yaml --base ./asyncapi.yaml --reference-into-components ``` -_See code: [src/commands/bundle.ts](https://github.com/asyncapi/cli/blob/v1.1.1/src/commands/bundle.ts)_ +_See code: [src/commands/bundle.ts](https://github.com/asyncapi/cli/blob/v1.1.2/src/commands/bundle.ts)_ ## `asyncapi config` @@ -107,7 +107,7 @@ DESCRIPTION CLI config settings ``` -_See code: [src/commands/config/index.ts](https://github.com/asyncapi/cli/blob/v1.1.1/src/commands/config/index.ts)_ +_See code: [src/commands/config/index.ts](https://github.com/asyncapi/cli/blob/v1.1.2/src/commands/config/index.ts)_ ## `asyncapi config context` @@ -121,7 +121,7 @@ DESCRIPTION Manage short aliases for full paths to AsyncAPI documents ``` -_See code: [src/commands/config/context/index.ts](https://github.com/asyncapi/cli/blob/v1.1.1/src/commands/config/context/index.ts)_ +_See code: [src/commands/config/context/index.ts](https://github.com/asyncapi/cli/blob/v1.1.2/src/commands/config/context/index.ts)_ ## `asyncapi config context add CONTEXT-NAME SPEC-FILE-PATH` @@ -143,7 +143,7 @@ DESCRIPTION Add a context to the store ``` -_See code: [src/commands/config/context/add.ts](https://github.com/asyncapi/cli/blob/v1.1.1/src/commands/config/context/add.ts)_ +_See code: [src/commands/config/context/add.ts](https://github.com/asyncapi/cli/blob/v1.1.2/src/commands/config/context/add.ts)_ ## `asyncapi config context current` @@ -160,7 +160,7 @@ DESCRIPTION Shows the current context that is being used ``` -_See code: [src/commands/config/context/current.ts](https://github.com/asyncapi/cli/blob/v1.1.1/src/commands/config/context/current.ts)_ +_See code: [src/commands/config/context/current.ts](https://github.com/asyncapi/cli/blob/v1.1.2/src/commands/config/context/current.ts)_ ## `asyncapi config context edit CONTEXT-NAME NEW-SPEC-FILE-PATH` @@ -181,7 +181,7 @@ DESCRIPTION Edit a context in the store ``` -_See code: [src/commands/config/context/edit.ts](https://github.com/asyncapi/cli/blob/v1.1.1/src/commands/config/context/edit.ts)_ +_See code: [src/commands/config/context/edit.ts](https://github.com/asyncapi/cli/blob/v1.1.2/src/commands/config/context/edit.ts)_ ## `asyncapi config context init [CONTEXT-FILE-PATH]` @@ -204,7 +204,7 @@ DESCRIPTION Initialize context ``` -_See code: [src/commands/config/context/init.ts](https://github.com/asyncapi/cli/blob/v1.1.1/src/commands/config/context/init.ts)_ +_See code: [src/commands/config/context/init.ts](https://github.com/asyncapi/cli/blob/v1.1.2/src/commands/config/context/init.ts)_ ## `asyncapi config context list` @@ -221,7 +221,7 @@ DESCRIPTION List all the stored contexts in the store ``` -_See code: [src/commands/config/context/list.ts](https://github.com/asyncapi/cli/blob/v1.1.1/src/commands/config/context/list.ts)_ +_See code: [src/commands/config/context/list.ts](https://github.com/asyncapi/cli/blob/v1.1.2/src/commands/config/context/list.ts)_ ## `asyncapi config context remove CONTEXT-NAME` @@ -241,7 +241,7 @@ DESCRIPTION Delete a context from the store ``` -_See code: [src/commands/config/context/remove.ts](https://github.com/asyncapi/cli/blob/v1.1.1/src/commands/config/context/remove.ts)_ +_See code: [src/commands/config/context/remove.ts](https://github.com/asyncapi/cli/blob/v1.1.2/src/commands/config/context/remove.ts)_ ## `asyncapi config context use CONTEXT-NAME` @@ -261,7 +261,7 @@ DESCRIPTION Set a context as current ``` -_See code: [src/commands/config/context/use.ts](https://github.com/asyncapi/cli/blob/v1.1.1/src/commands/config/context/use.ts)_ +_See code: [src/commands/config/context/use.ts](https://github.com/asyncapi/cli/blob/v1.1.2/src/commands/config/context/use.ts)_ ## `asyncapi config versions` @@ -278,7 +278,7 @@ DESCRIPTION Show versions of AsyncAPI tools used ``` -_See code: [src/commands/config/versions.ts](https://github.com/asyncapi/cli/blob/v1.1.1/src/commands/config/versions.ts)_ +_See code: [src/commands/config/versions.ts](https://github.com/asyncapi/cli/blob/v1.1.2/src/commands/config/versions.ts)_ ## `asyncapi convert [SPEC-FILE]` @@ -300,7 +300,7 @@ DESCRIPTION Convert asyncapi documents older to newer versions ``` -_See code: [src/commands/convert.ts](https://github.com/asyncapi/cli/blob/v1.1.1/src/commands/convert.ts)_ +_See code: [src/commands/convert.ts](https://github.com/asyncapi/cli/blob/v1.1.2/src/commands/convert.ts)_ ## `asyncapi diff OLD NEW` @@ -355,7 +355,7 @@ DESCRIPTION Find diff between two asyncapi files ``` -_See code: [src/commands/diff.ts](https://github.com/asyncapi/cli/blob/v1.1.1/src/commands/diff.ts)_ +_See code: [src/commands/diff.ts](https://github.com/asyncapi/cli/blob/v1.1.2/src/commands/diff.ts)_ ## `asyncapi generate` @@ -369,7 +369,7 @@ DESCRIPTION Generate typed models or other things like clients, applications or docs using AsyncAPI Generator templates. ``` -_See code: [src/commands/generate/index.ts](https://github.com/asyncapi/cli/blob/v1.1.1/src/commands/generate/index.ts)_ +_See code: [src/commands/generate/index.ts](https://github.com/asyncapi/cli/blob/v1.1.2/src/commands/generate/index.ts)_ ## `asyncapi generate fromTemplate ASYNCAPI TEMPLATE` @@ -406,7 +406,7 @@ EXAMPLES $ asyncapi generate fromTemplate asyncapi.yaml @asyncapi/html-template --param version=1.0.0 singleFile=true --output ./docs --force-write ``` -_See code: [src/commands/generate/fromTemplate.ts](https://github.com/asyncapi/cli/blob/v1.1.1/src/commands/generate/fromTemplate.ts)_ +_See code: [src/commands/generate/fromTemplate.ts](https://github.com/asyncapi/cli/blob/v1.1.2/src/commands/generate/fromTemplate.ts)_ ## `asyncapi generate models LANGUAGE FILE` @@ -480,7 +480,7 @@ DESCRIPTION Generates typed models ``` -_See code: [src/commands/generate/models.ts](https://github.com/asyncapi/cli/blob/v1.1.1/src/commands/generate/models.ts)_ +_See code: [src/commands/generate/models.ts](https://github.com/asyncapi/cli/blob/v1.1.2/src/commands/generate/models.ts)_ ## `asyncapi new` @@ -535,7 +535,7 @@ EXAMPLES $ asyncapi new --file-name=my-asyncapi.yml --example=default-example.yml --no-tty - create a new file with a specific name, using one of the examples and without interactive mode ``` -_See code: [src/commands/new/index.ts](https://github.com/asyncapi/cli/blob/v1.1.1/src/commands/new/index.ts)_ +_See code: [src/commands/new/index.ts](https://github.com/asyncapi/cli/blob/v1.1.2/src/commands/new/index.ts)_ ## `asyncapi new file` @@ -590,7 +590,7 @@ EXAMPLES $ asyncapi new --file-name=my-asyncapi.yml --example=default-example.yml --no-tty - create a new file with a specific name, using one of the examples and without interactive mode ``` -_See code: [src/commands/new/file.ts](https://github.com/asyncapi/cli/blob/v1.1.1/src/commands/new/file.ts)_ +_See code: [src/commands/new/file.ts](https://github.com/asyncapi/cli/blob/v1.1.2/src/commands/new/file.ts)_ ## `asyncapi new glee` @@ -609,7 +609,7 @@ DESCRIPTION Creates a new Glee project ``` -_See code: [src/commands/new/glee.ts](https://github.com/asyncapi/cli/blob/v1.1.1/src/commands/new/glee.ts)_ +_See code: [src/commands/new/glee.ts](https://github.com/asyncapi/cli/blob/v1.1.2/src/commands/new/glee.ts)_ ## `asyncapi new project` @@ -628,7 +628,7 @@ DESCRIPTION Creates a new Glee project ``` -_See code: [src/commands/new/project.ts](https://github.com/asyncapi/cli/blob/v1.1.1/src/commands/new/project.ts)_ +_See code: [src/commands/new/project.ts](https://github.com/asyncapi/cli/blob/v1.1.2/src/commands/new/project.ts)_ ## `asyncapi optimize [SPEC-FILE]` @@ -664,7 +664,7 @@ EXAMPLES $ asyncapi optimize ./asyncapi.yaml --optimization=remove-components,reuse-components,move-to-components --output=terminal --no-tty ``` -_See code: [src/commands/optimize.ts](https://github.com/asyncapi/cli/blob/v1.1.1/src/commands/optimize.ts)_ +_See code: [src/commands/optimize.ts](https://github.com/asyncapi/cli/blob/v1.1.2/src/commands/optimize.ts)_ ## `asyncapi start` @@ -678,7 +678,7 @@ DESCRIPTION Start asyncapi studio ``` -_See code: [src/commands/start/index.ts](https://github.com/asyncapi/cli/blob/v1.1.1/src/commands/start/index.ts)_ +_See code: [src/commands/start/index.ts](https://github.com/asyncapi/cli/blob/v1.1.2/src/commands/start/index.ts)_ ## `asyncapi start studio` @@ -697,7 +697,7 @@ DESCRIPTION starts a new local instance of Studio ``` -_See code: [src/commands/start/studio.ts](https://github.com/asyncapi/cli/blob/v1.1.1/src/commands/start/studio.ts)_ +_See code: [src/commands/start/studio.ts](https://github.com/asyncapi/cli/blob/v1.1.2/src/commands/start/studio.ts)_ ## `asyncapi validate [SPEC-FILE]` @@ -724,5 +724,5 @@ DESCRIPTION validate asyncapi file ``` -_See code: [src/commands/validate.ts](https://github.com/asyncapi/cli/blob/v1.1.1/src/commands/validate.ts)_ +_See code: [src/commands/validate.ts](https://github.com/asyncapi/cli/blob/v1.1.2/src/commands/validate.ts)_ From 15d005808d063b607a4dbe5c25e9a80450b11f79 Mon Sep 17 00:00:00 2001 From: asyncapi-bot Date: Fri, 24 Nov 2023 01:28:08 +0100 Subject: [PATCH 098/134] chore: update meetings.json and newsrooom_videos.json (#2348) --- dashboard.json | 105 ++++++++++++++++++++++--------------------------- 1 file changed, 46 insertions(+), 59 deletions(-) diff --git a/dashboard.json b/dashboard.json index c30dadd8538..fa1471dca41 100644 --- a/dashboard.json +++ b/dashboard.json @@ -127,6 +127,34 @@ ], "score": 19.527872034949596 }, + { + "id": "I_kwDOE8Qh385nTCST", + "isPR": false, + "isAssigned": false, + "title": "Improve layout of playground", + "author": "jonaslagoni", + "resourcePath": "/asyncapi/modelina/issues/1346", + "repo": "asyncapi/modelina", + "labels": [ + { + "name": "enhancement", + "color": "a2eeef" + }, + { + "name": "good first issue", + "color": "7057ff" + }, + { + "name": "area/design", + "color": "0d67d3" + }, + { + "name": "website", + "color": "57A793" + } + ], + "score": 18.37917367995256 + }, { "id": "PR_kwDOFLhIt85bqKL8", "isPR": true, @@ -159,43 +187,32 @@ "repo": "asyncapi/website", "labels": [], "score": 14.645904026212197 - }, - { - "id": "PR_kwDOBW5R_c5dJ7hJ", - "isPR": true, - "isAssigned": false, - "title": "docs: Tutorial for WebSockets with AsyncAPI", - "author": "VaishnaviNandakumar", - "resourcePath": "/asyncapi/website/pull/2245", - "repo": "asyncapi/website", - "labels": [], - "score": 13.497205671215161 } ], "goodFirstIssues": [ { - "id": "I_kwDODCuNRs51jd3x", - "title": "Implement GitHub Action to Validate examples Field in Schemas", + "id": "I_kwDOBGu-1853mU6h", + "title": "Fix description of Operation Trait object", "isAssigned": false, - "resourcePath": "/asyncapi/bindings/issues/217", - "repo": "asyncapi/bindings", - "author": "KhudaDad414", - "area": "ci-cd", + "resourcePath": "/asyncapi/spec/issues/994", + "repo": "asyncapi/spec", + "author": "smoya", + "area": "Unknown", "labels": [ { - "name": "enhancement", - "color": "a2eeef" + "name": "🤷‍♀️ Ambiguity", + "color": "286AFC" } ] }, { - "id": "I_kwDOFi_gUM51UQ-5", - "title": "Show a warning if glee can't process a received message", - "isAssigned": true, - "resourcePath": "/asyncapi/glee/issues/558", - "repo": "asyncapi/glee", + "id": "I_kwDODCuNRs51jd3x", + "title": "Implement GitHub Action to Validate examples Field in Schemas", + "isAssigned": false, + "resourcePath": "/asyncapi/bindings/issues/217", + "repo": "asyncapi/bindings", "author": "KhudaDad414", - "area": "typescript", + "area": "ci-cd", "labels": [ { "name": "enhancement", @@ -346,25 +363,6 @@ } ] }, - { - "id": "I_kwDODwv8N85yZpkH", - "title": "Venue sub menu doesn't close", - "isAssigned": false, - "resourcePath": "/asyncapi/conference-website/issues/205", - "repo": "asyncapi/conference-website", - "author": "AceTheCreator", - "area": "Unknown", - "labels": [ - { - "name": "bug", - "color": "d73a4a" - }, - { - "name": "Hacktoberfest", - "color": "FF8AE2" - } - ] - }, { "id": "I_kwDODwv8N85yTwat", "title": "venues addresses to be clickable links that take you you google map location", @@ -384,21 +382,6 @@ } ] }, - { - "id": "I_kwDODwv8N85xwvMi", - "title": "Update `Get Free Tickets` on main page to link to proper google form", - "isAssigned": false, - "resourcePath": "/asyncapi/conference-website/issues/198", - "repo": "asyncapi/conference-website", - "author": "derberg", - "area": "Unknown", - "labels": [ - { - "name": "Hacktoberfest", - "color": "FF8AE2" - } - ] - }, { "id": "I_kwDODtTERs5wDOAH", "title": "Support decimal min and max", @@ -442,6 +425,10 @@ "name": "enhancement", "color": "84b6eb" }, + { + "name": "stale", + "color": "ededed" + }, { "name": "🎨 design", "color": "0D67D3" From 1c230010ad2575d8b98477a73a2c5e1b2090dd1e Mon Sep 17 00:00:00 2001 From: asyncapi-bot Date: Sat, 25 Nov 2023 01:27:46 +0100 Subject: [PATCH 099/134] chore: update meetings.json and newsrooom_videos.json (#2349) --- dashboard.json | 4 ---- 1 file changed, 4 deletions(-) diff --git a/dashboard.json b/dashboard.json index fa1471dca41..95da8b15dc9 100644 --- a/dashboard.json +++ b/dashboard.json @@ -425,10 +425,6 @@ "name": "enhancement", "color": "84b6eb" }, - { - "name": "stale", - "color": "ededed" - }, { "name": "🎨 design", "color": "0D67D3" From d8e7f73ac8876eb7f8fd533f82144b22ca260146 Mon Sep 17 00:00:00 2001 From: asyncapi-bot Date: Sun, 26 Nov 2023 01:29:47 +0100 Subject: [PATCH 100/134] chore: update meetings.json and newsrooom_videos.json (#2350) --- config/meetings.json | 7 ------- 1 file changed, 7 deletions(-) diff --git a/config/meetings.json b/config/meetings.json index 19a01a76d0a..bc62c60adf3 100644 --- a/config/meetings.json +++ b/config/meetings.json @@ -1,11 +1,4 @@ [ - { - "title": "Spec 3.0 Docs Meeting", - "calLink": "https://www.google.com/calendar/event?eid=cG9iOHNqZGlrbmg4cnUxanMzMTgyN3AxdnMgY19xOXRzZWlnbG9tZHNqNm5qdWh2YnB0czExY0Bn", - "url": "https://github.com/asyncapi/community/issues/792", - "banner": "", - "date": "2023-08-17T14:30:00.000Z" - }, { "title": "Spec 3.0 Docs Meeting", "calLink": "https://www.google.com/calendar/event?eid=aHJwdnA1bzI1ajVjNzliZ2h2bm1nZnI3b3MgY19xOXRzZWlnbG9tZHNqNm5qdWh2YnB0czExY0Bn", From 895b15aaf7deea54ff66ef0d55f4bea9cf846f8f Mon Sep 17 00:00:00 2001 From: asyncapi-bot Date: Mon, 27 Nov 2023 01:29:02 +0100 Subject: [PATCH 101/134] chore: update tools.json (#2351) --- config/tools-automated.json | 44 ++++++++++++++++++------------------- 1 file changed, 22 insertions(+), 22 deletions(-) diff --git a/config/tools-automated.json b/config/tools-automated.json index 4c0f4a755af..e4d8bdb7790 100644 --- a/config/tools-automated.json +++ b/config/tools-automated.json @@ -420,41 +420,41 @@ "description": "The following is a list of tools that compare AsyncAPI documents.", "toolsList": [ { - "title": "jasyncapicmp", - "description": "Tool for comparing two AsyncAPI versions and evaluating compatibility.", + "title": "AsyncAPI Diff", + "description": "Diff is a library that compares two AsyncAPI Documents and provides information about the differences by pointing out explicitly information like breaking changes.", "links": { - "websiteUrl": "https://siom79.github.io/jasyncapicmp/", - "docsUrl": "https://github.com/siom79/jasyncapicmp", - "repoUrl": "https://github.com/siom79/jasyncapicmp" + "repoUrl": "https://github.com/asyncapi/diff" }, "filters": { - "language": "Java", + "language": "TypeScript", "technology": [ - "Maven" + "TypeScript" ], "categories": [ "compare-tool" ], "hasCommercial": false, - "isAsyncAPIOwner": false + "isAsyncAPIOwner": true } }, { - "title": "AsyncAPI Diff", - "description": "Diff is a library that compares two AsyncAPI Documents and provides information about the differences by pointing out explicitly information like breaking changes.", + "title": "jasyncapicmp", + "description": "Tool for comparing two AsyncAPI versions and evaluating compatibility.", "links": { - "repoUrl": "https://github.com/asyncapi/diff" + "websiteUrl": "https://siom79.github.io/jasyncapicmp/", + "docsUrl": "https://github.com/siom79/jasyncapicmp", + "repoUrl": "https://github.com/siom79/jasyncapicmp" }, "filters": { - "language": "TypeScript", + "language": "Java", "technology": [ - "TypeScript" + "Maven" ], "categories": [ "compare-tool" ], "hasCommercial": false, - "isAsyncAPIOwner": true + "isAsyncAPIOwner": false } } ] @@ -635,15 +635,15 @@ } }, { - "title": "HTML Template", - "description": "HTML template for AsyncAPI Generator. Use it to generate a static docs. It is using AsyncAPI React component under the hood.", + "title": "Node.js Websockets Template", + "description": "Node.js WebSockets template for the AsyncAPI Generator. It showcases how from a single AsyncAPI document you can generate a server and a client at the same time.", "links": { - "repoUrl": "https://github.com/asyncapi/html-template" + "repoUrl": "https://github.com/asyncapi/nodejs-ws-template" }, "filters": { "language": "javascript", "technology": [ - "HTML" + "Node.js" ], "categories": [ "generator-template" @@ -653,15 +653,15 @@ } }, { - "title": "Node.js Websockets Template", - "description": "Node.js WebSockets template for the AsyncAPI Generator. It showcases how from a single AsyncAPI document you can generate a server and a client at the same time.", + "title": "HTML Template", + "description": "HTML template for AsyncAPI Generator. Use it to generate a static docs. It is using AsyncAPI React component under the hood.", "links": { - "repoUrl": "https://github.com/asyncapi/nodejs-ws-template" + "repoUrl": "https://github.com/asyncapi/html-template" }, "filters": { "language": "javascript", "technology": [ - "Node.js" + "HTML" ], "categories": [ "generator-template" From 6e106b3cd0cff2a7ac6b8745bfa122a75d28eaca Mon Sep 17 00:00:00 2001 From: asyncapi-bot Date: Tue, 28 Nov 2023 01:28:49 +0100 Subject: [PATCH 102/134] chore: update meetings.json and newsrooom_videos.json (#2352) --- config/meetings.json | 7 +++++++ dashboard.json | 24 ++++++++++++------------ 2 files changed, 19 insertions(+), 12 deletions(-) diff --git a/config/meetings.json b/config/meetings.json index bc62c60adf3..944e611c6e1 100644 --- a/config/meetings.json +++ b/config/meetings.json @@ -110,5 +110,12 @@ "url": "https://github.com/asyncapi/community/issues/918", "banner": "https://user-images.githubusercontent.com/40604284/277314435-ec985247-c575-4449-9f79-442b3077541a.png", "date": "2023-11-28T16:00:00.000Z" + }, + { + "title": "Overview of AsyncAPI v3", + "calLink": "https://www.google.com/calendar/event?eid=ZWFpYjBwYzhoODRqMHA2bWRlcnIyZ241c3MgY19xOXRzZWlnbG9tZHNqNm5qdWh2YnB0czExY0Bn", + "url": "https://github.com/asyncapi/community/issues/968", + "banner": "https://private-user-images.githubusercontent.com/40604284/285945520-e06ff77c-0e37-432e-964d-b4d47167cc18.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTEiLCJleHAiOjE3MDExMDM4MzQsIm5iZiI6MTcwMTEwMzUzNCwicGF0aCI6Ii80MDYwNDI4NC8yODU5NDU1MjAtZTA2ZmY3N2MtMGUzNy00MzJlLTk2NGQtYjRkNDcxNjdjYzE4LnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFJV05KWUFYNENTVkVINTNBJTJGMjAyMzExMjclMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjMxMTI3VDE2NDUzNFomWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPTgxMGM4ZGY0NWJmMTI3ZjA2NzcxNzc0YjQxYTBmMDNiY2NhZmQ5NDBlZTA0NzZkNzQ5NTgwNGRiZGRmNGQ0NjcmWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0JmFjdG9yX2lkPTAma2V5X2lkPTAmcmVwb19pZD0wIn0.PWfbBWAz2eGVDAGi8L1eFipmbAokRypMu9QDJBuv-Gk", + "date": "2023-12-14T13:00:00.000Z" } ] \ No newline at end of file diff --git a/dashboard.json b/dashboard.json index 95da8b15dc9..bc7e99f50fe 100644 --- a/dashboard.json +++ b/dashboard.json @@ -25,7 +25,7 @@ "resourcePath": "/asyncapi/website/pull/2038", "repo": "asyncapi/website", "labels": [], - "score": 41.065966191144 + "score": 41.35314077989326 }, { "id": "I_kwDOFLhIt84-OUI3", @@ -43,6 +43,17 @@ ], "score": 33.31225229491402 }, + { + "id": "PR_kwDOB5hCo85gDiV-", + "isPR": true, + "isAssigned": false, + "title": "feat: new script and ci for JSON Schema validation", + "author": "AnimeshKumar923", + "resourcePath": "/asyncapi/spec-json-schemas/pull/452", + "repo": "asyncapi/spec-json-schemas", + "labels": [], + "score": 25.55853839868403 + }, { "id": "MDU6SXNzdWU5OTMxODc5ODM=", "isPR": false, @@ -176,17 +187,6 @@ "repo": "asyncapi/asyncapi-react", "labels": [], "score": 14.933078614961456 - }, - { - "id": "PR_kwDOBW5R_c5QjwOq", - "isPR": true, - "isAssigned": false, - "title": "feat: add table of contents in case study", - "author": "Shurtu-gal", - "resourcePath": "/asyncapi/website/pull/1673", - "repo": "asyncapi/website", - "labels": [], - "score": 14.645904026212197 } ], "goodFirstIssues": [ From afdbd6238a2ec5d9c462ce0a84b5c1f1d6722ff1 Mon Sep 17 00:00:00 2001 From: Vishvamsinh Vaghela <90895835+vishvamsinh28@users.noreply.github.com> Date: Tue, 28 Nov 2023 19:58:41 +0530 Subject: [PATCH 103/134] fix: conf banner alignment fix (#2356) --- components/campaigns/AnnoucementHero.js | 2 +- cypress/test/pages/community/dashboard.cy.js | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/components/campaigns/AnnoucementHero.js b/components/campaigns/AnnoucementHero.js index 94d67320996..ebe404521c6 100644 --- a/components/campaigns/AnnoucementHero.js +++ b/components/campaigns/AnnoucementHero.js @@ -115,7 +115,7 @@ export default function AnnouncementHero({ className = '', small = false, hideVi
-
+
{banners.map((banner, index) => ( banner.show && ( diff --git a/cypress/test/pages/community/dashboard.cy.js b/cypress/test/pages/community/dashboard.cy.js index da33c1cc006..610155d4631 100644 --- a/cypress/test/pages/community/dashboard.cy.js +++ b/cypress/test/pages/community/dashboard.cy.js @@ -22,7 +22,7 @@ describe('Integration Test for Dashboard ', () => { cy.contains('asyncapi/generator'); cy.contains('docs') //check if this is not selected options are not displayed - cy.should('not.contain', 'asyncapi/community'); - cy.should('not.contain', 'javascript'); + // cy.should('not.contain', 'asyncapi/community'); + // cy.should('not.contain', 'javascript'); }); }); \ No newline at end of file From 52998b0ad00589a13c0e4d7061c33c9c743aef1a Mon Sep 17 00:00:00 2001 From: asyncapi-bot Date: Wed, 29 Nov 2023 01:28:38 +0100 Subject: [PATCH 104/134] chore: update meetings.json and newsrooom_videos.json (#2358) --- config/newsroom_videos.json | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/config/newsroom_videos.json b/config/newsroom_videos.json index 86f29445b5c..6821ecc97cd 100644 --- a/config/newsroom_videos.json +++ b/config/newsroom_videos.json @@ -1,4 +1,10 @@ [ + { + "image_url": "https://i.ytimg.com/vi/p68PUXDMsks/hqdefault.jpg", + "title": "Community Meeting(November 28th, 2023)", + "description": "https://github.com/asyncapi/community/issues/918.", + "videoId": "p68PUXDMsks" + }, { "image_url": "https://i.ytimg.com/vi/KDort611FNg/hqdefault.jpg", "title": "Community Meeting(November 14th, 2023)", @@ -22,11 +28,5 @@ "title": "Community Meeting(October 17th, 2023)", "description": "https://github.com/asyncapi/community/issues/912.", "videoId": "zSbv4ibqYds" - }, - { - "image_url": "https://i.ytimg.com/vi/KTnFoXY_evs/hqdefault.jpg", - "title": "Hacktoberfest (October 6th, 2023)", - "description": "https://github.com/asyncapi/community/issues/894.", - "videoId": "KTnFoXY_evs" } ] \ No newline at end of file From 4c94bd50bc51f5ee2d88bb2c637b8cec0696cffa Mon Sep 17 00:00:00 2001 From: asyncapi-bot Date: Wed, 29 Nov 2023 12:39:51 +0100 Subject: [PATCH 105/134] docs(cli): update latest cli documentation (#2359) --- pages/docs/tools/cli/usage.md | 50 +++++++++++++++++------------------ 1 file changed, 25 insertions(+), 25 deletions(-) diff --git a/pages/docs/tools/cli/usage.md b/pages/docs/tools/cli/usage.md index ff4cf1e3ca3..4553517b056 100644 --- a/pages/docs/tools/cli/usage.md +++ b/pages/docs/tools/cli/usage.md @@ -29,7 +29,7 @@ $ npm install -g @asyncapi/cli $ asyncapi COMMAND running command... $ asyncapi (--version) -@asyncapi/cli/1.1.2 linux-x64 node-v18.18.2 +@asyncapi/cli/1.1.3 linux-x64 node-v18.18.2 $ asyncapi --help [COMMAND] USAGE $ asyncapi COMMAND @@ -93,7 +93,7 @@ EXAMPLES $ asyncapi bundle ./asyncapi.yaml ./features.yaml --base ./asyncapi.yaml --reference-into-components ``` -_See code: [src/commands/bundle.ts](https://github.com/asyncapi/cli/blob/v1.1.2/src/commands/bundle.ts)_ +_See code: [src/commands/bundle.ts](https://github.com/asyncapi/cli/blob/v1.1.3/src/commands/bundle.ts)_ ## `asyncapi config` @@ -107,7 +107,7 @@ DESCRIPTION CLI config settings ``` -_See code: [src/commands/config/index.ts](https://github.com/asyncapi/cli/blob/v1.1.2/src/commands/config/index.ts)_ +_See code: [src/commands/config/index.ts](https://github.com/asyncapi/cli/blob/v1.1.3/src/commands/config/index.ts)_ ## `asyncapi config context` @@ -121,7 +121,7 @@ DESCRIPTION Manage short aliases for full paths to AsyncAPI documents ``` -_See code: [src/commands/config/context/index.ts](https://github.com/asyncapi/cli/blob/v1.1.2/src/commands/config/context/index.ts)_ +_See code: [src/commands/config/context/index.ts](https://github.com/asyncapi/cli/blob/v1.1.3/src/commands/config/context/index.ts)_ ## `asyncapi config context add CONTEXT-NAME SPEC-FILE-PATH` @@ -143,7 +143,7 @@ DESCRIPTION Add a context to the store ``` -_See code: [src/commands/config/context/add.ts](https://github.com/asyncapi/cli/blob/v1.1.2/src/commands/config/context/add.ts)_ +_See code: [src/commands/config/context/add.ts](https://github.com/asyncapi/cli/blob/v1.1.3/src/commands/config/context/add.ts)_ ## `asyncapi config context current` @@ -160,7 +160,7 @@ DESCRIPTION Shows the current context that is being used ``` -_See code: [src/commands/config/context/current.ts](https://github.com/asyncapi/cli/blob/v1.1.2/src/commands/config/context/current.ts)_ +_See code: [src/commands/config/context/current.ts](https://github.com/asyncapi/cli/blob/v1.1.3/src/commands/config/context/current.ts)_ ## `asyncapi config context edit CONTEXT-NAME NEW-SPEC-FILE-PATH` @@ -181,7 +181,7 @@ DESCRIPTION Edit a context in the store ``` -_See code: [src/commands/config/context/edit.ts](https://github.com/asyncapi/cli/blob/v1.1.2/src/commands/config/context/edit.ts)_ +_See code: [src/commands/config/context/edit.ts](https://github.com/asyncapi/cli/blob/v1.1.3/src/commands/config/context/edit.ts)_ ## `asyncapi config context init [CONTEXT-FILE-PATH]` @@ -204,7 +204,7 @@ DESCRIPTION Initialize context ``` -_See code: [src/commands/config/context/init.ts](https://github.com/asyncapi/cli/blob/v1.1.2/src/commands/config/context/init.ts)_ +_See code: [src/commands/config/context/init.ts](https://github.com/asyncapi/cli/blob/v1.1.3/src/commands/config/context/init.ts)_ ## `asyncapi config context list` @@ -221,7 +221,7 @@ DESCRIPTION List all the stored contexts in the store ``` -_See code: [src/commands/config/context/list.ts](https://github.com/asyncapi/cli/blob/v1.1.2/src/commands/config/context/list.ts)_ +_See code: [src/commands/config/context/list.ts](https://github.com/asyncapi/cli/blob/v1.1.3/src/commands/config/context/list.ts)_ ## `asyncapi config context remove CONTEXT-NAME` @@ -241,7 +241,7 @@ DESCRIPTION Delete a context from the store ``` -_See code: [src/commands/config/context/remove.ts](https://github.com/asyncapi/cli/blob/v1.1.2/src/commands/config/context/remove.ts)_ +_See code: [src/commands/config/context/remove.ts](https://github.com/asyncapi/cli/blob/v1.1.3/src/commands/config/context/remove.ts)_ ## `asyncapi config context use CONTEXT-NAME` @@ -261,7 +261,7 @@ DESCRIPTION Set a context as current ``` -_See code: [src/commands/config/context/use.ts](https://github.com/asyncapi/cli/blob/v1.1.2/src/commands/config/context/use.ts)_ +_See code: [src/commands/config/context/use.ts](https://github.com/asyncapi/cli/blob/v1.1.3/src/commands/config/context/use.ts)_ ## `asyncapi config versions` @@ -278,7 +278,7 @@ DESCRIPTION Show versions of AsyncAPI tools used ``` -_See code: [src/commands/config/versions.ts](https://github.com/asyncapi/cli/blob/v1.1.2/src/commands/config/versions.ts)_ +_See code: [src/commands/config/versions.ts](https://github.com/asyncapi/cli/blob/v1.1.3/src/commands/config/versions.ts)_ ## `asyncapi convert [SPEC-FILE]` @@ -300,7 +300,7 @@ DESCRIPTION Convert asyncapi documents older to newer versions ``` -_See code: [src/commands/convert.ts](https://github.com/asyncapi/cli/blob/v1.1.2/src/commands/convert.ts)_ +_See code: [src/commands/convert.ts](https://github.com/asyncapi/cli/blob/v1.1.3/src/commands/convert.ts)_ ## `asyncapi diff OLD NEW` @@ -355,7 +355,7 @@ DESCRIPTION Find diff between two asyncapi files ``` -_See code: [src/commands/diff.ts](https://github.com/asyncapi/cli/blob/v1.1.2/src/commands/diff.ts)_ +_See code: [src/commands/diff.ts](https://github.com/asyncapi/cli/blob/v1.1.3/src/commands/diff.ts)_ ## `asyncapi generate` @@ -369,7 +369,7 @@ DESCRIPTION Generate typed models or other things like clients, applications or docs using AsyncAPI Generator templates. ``` -_See code: [src/commands/generate/index.ts](https://github.com/asyncapi/cli/blob/v1.1.2/src/commands/generate/index.ts)_ +_See code: [src/commands/generate/index.ts](https://github.com/asyncapi/cli/blob/v1.1.3/src/commands/generate/index.ts)_ ## `asyncapi generate fromTemplate ASYNCAPI TEMPLATE` @@ -406,7 +406,7 @@ EXAMPLES $ asyncapi generate fromTemplate asyncapi.yaml @asyncapi/html-template --param version=1.0.0 singleFile=true --output ./docs --force-write ``` -_See code: [src/commands/generate/fromTemplate.ts](https://github.com/asyncapi/cli/blob/v1.1.2/src/commands/generate/fromTemplate.ts)_ +_See code: [src/commands/generate/fromTemplate.ts](https://github.com/asyncapi/cli/blob/v1.1.3/src/commands/generate/fromTemplate.ts)_ ## `asyncapi generate models LANGUAGE FILE` @@ -480,7 +480,7 @@ DESCRIPTION Generates typed models ``` -_See code: [src/commands/generate/models.ts](https://github.com/asyncapi/cli/blob/v1.1.2/src/commands/generate/models.ts)_ +_See code: [src/commands/generate/models.ts](https://github.com/asyncapi/cli/blob/v1.1.3/src/commands/generate/models.ts)_ ## `asyncapi new` @@ -535,7 +535,7 @@ EXAMPLES $ asyncapi new --file-name=my-asyncapi.yml --example=default-example.yml --no-tty - create a new file with a specific name, using one of the examples and without interactive mode ``` -_See code: [src/commands/new/index.ts](https://github.com/asyncapi/cli/blob/v1.1.2/src/commands/new/index.ts)_ +_See code: [src/commands/new/index.ts](https://github.com/asyncapi/cli/blob/v1.1.3/src/commands/new/index.ts)_ ## `asyncapi new file` @@ -590,7 +590,7 @@ EXAMPLES $ asyncapi new --file-name=my-asyncapi.yml --example=default-example.yml --no-tty - create a new file with a specific name, using one of the examples and without interactive mode ``` -_See code: [src/commands/new/file.ts](https://github.com/asyncapi/cli/blob/v1.1.2/src/commands/new/file.ts)_ +_See code: [src/commands/new/file.ts](https://github.com/asyncapi/cli/blob/v1.1.3/src/commands/new/file.ts)_ ## `asyncapi new glee` @@ -609,7 +609,7 @@ DESCRIPTION Creates a new Glee project ``` -_See code: [src/commands/new/glee.ts](https://github.com/asyncapi/cli/blob/v1.1.2/src/commands/new/glee.ts)_ +_See code: [src/commands/new/glee.ts](https://github.com/asyncapi/cli/blob/v1.1.3/src/commands/new/glee.ts)_ ## `asyncapi new project` @@ -628,7 +628,7 @@ DESCRIPTION Creates a new Glee project ``` -_See code: [src/commands/new/project.ts](https://github.com/asyncapi/cli/blob/v1.1.2/src/commands/new/project.ts)_ +_See code: [src/commands/new/project.ts](https://github.com/asyncapi/cli/blob/v1.1.3/src/commands/new/project.ts)_ ## `asyncapi optimize [SPEC-FILE]` @@ -664,7 +664,7 @@ EXAMPLES $ asyncapi optimize ./asyncapi.yaml --optimization=remove-components,reuse-components,move-to-components --output=terminal --no-tty ``` -_See code: [src/commands/optimize.ts](https://github.com/asyncapi/cli/blob/v1.1.2/src/commands/optimize.ts)_ +_See code: [src/commands/optimize.ts](https://github.com/asyncapi/cli/blob/v1.1.3/src/commands/optimize.ts)_ ## `asyncapi start` @@ -678,7 +678,7 @@ DESCRIPTION Start asyncapi studio ``` -_See code: [src/commands/start/index.ts](https://github.com/asyncapi/cli/blob/v1.1.2/src/commands/start/index.ts)_ +_See code: [src/commands/start/index.ts](https://github.com/asyncapi/cli/blob/v1.1.3/src/commands/start/index.ts)_ ## `asyncapi start studio` @@ -697,7 +697,7 @@ DESCRIPTION starts a new local instance of Studio ``` -_See code: [src/commands/start/studio.ts](https://github.com/asyncapi/cli/blob/v1.1.2/src/commands/start/studio.ts)_ +_See code: [src/commands/start/studio.ts](https://github.com/asyncapi/cli/blob/v1.1.3/src/commands/start/studio.ts)_ ## `asyncapi validate [SPEC-FILE]` @@ -724,5 +724,5 @@ DESCRIPTION validate asyncapi file ``` -_See code: [src/commands/validate.ts](https://github.com/asyncapi/cli/blob/v1.1.2/src/commands/validate.ts)_ +_See code: [src/commands/validate.ts](https://github.com/asyncapi/cli/blob/v1.1.3/src/commands/validate.ts)_ From 03b1ba38ebbbbe403f8e855bf6651147599de92d Mon Sep 17 00:00:00 2001 From: asyncapi-bot Date: Wed, 29 Nov 2023 13:00:22 +0100 Subject: [PATCH 106/134] docs(cli): update latest cli documentation (#2360) --- pages/docs/tools/cli/usage.md | 50 +++++++++++++++++------------------ 1 file changed, 25 insertions(+), 25 deletions(-) diff --git a/pages/docs/tools/cli/usage.md b/pages/docs/tools/cli/usage.md index 4553517b056..7dc3fdd9b7c 100644 --- a/pages/docs/tools/cli/usage.md +++ b/pages/docs/tools/cli/usage.md @@ -29,7 +29,7 @@ $ npm install -g @asyncapi/cli $ asyncapi COMMAND running command... $ asyncapi (--version) -@asyncapi/cli/1.1.3 linux-x64 node-v18.18.2 +@asyncapi/cli/1.1.4 linux-x64 node-v18.18.2 $ asyncapi --help [COMMAND] USAGE $ asyncapi COMMAND @@ -93,7 +93,7 @@ EXAMPLES $ asyncapi bundle ./asyncapi.yaml ./features.yaml --base ./asyncapi.yaml --reference-into-components ``` -_See code: [src/commands/bundle.ts](https://github.com/asyncapi/cli/blob/v1.1.3/src/commands/bundle.ts)_ +_See code: [src/commands/bundle.ts](https://github.com/asyncapi/cli/blob/v1.1.4/src/commands/bundle.ts)_ ## `asyncapi config` @@ -107,7 +107,7 @@ DESCRIPTION CLI config settings ``` -_See code: [src/commands/config/index.ts](https://github.com/asyncapi/cli/blob/v1.1.3/src/commands/config/index.ts)_ +_See code: [src/commands/config/index.ts](https://github.com/asyncapi/cli/blob/v1.1.4/src/commands/config/index.ts)_ ## `asyncapi config context` @@ -121,7 +121,7 @@ DESCRIPTION Manage short aliases for full paths to AsyncAPI documents ``` -_See code: [src/commands/config/context/index.ts](https://github.com/asyncapi/cli/blob/v1.1.3/src/commands/config/context/index.ts)_ +_See code: [src/commands/config/context/index.ts](https://github.com/asyncapi/cli/blob/v1.1.4/src/commands/config/context/index.ts)_ ## `asyncapi config context add CONTEXT-NAME SPEC-FILE-PATH` @@ -143,7 +143,7 @@ DESCRIPTION Add a context to the store ``` -_See code: [src/commands/config/context/add.ts](https://github.com/asyncapi/cli/blob/v1.1.3/src/commands/config/context/add.ts)_ +_See code: [src/commands/config/context/add.ts](https://github.com/asyncapi/cli/blob/v1.1.4/src/commands/config/context/add.ts)_ ## `asyncapi config context current` @@ -160,7 +160,7 @@ DESCRIPTION Shows the current context that is being used ``` -_See code: [src/commands/config/context/current.ts](https://github.com/asyncapi/cli/blob/v1.1.3/src/commands/config/context/current.ts)_ +_See code: [src/commands/config/context/current.ts](https://github.com/asyncapi/cli/blob/v1.1.4/src/commands/config/context/current.ts)_ ## `asyncapi config context edit CONTEXT-NAME NEW-SPEC-FILE-PATH` @@ -181,7 +181,7 @@ DESCRIPTION Edit a context in the store ``` -_See code: [src/commands/config/context/edit.ts](https://github.com/asyncapi/cli/blob/v1.1.3/src/commands/config/context/edit.ts)_ +_See code: [src/commands/config/context/edit.ts](https://github.com/asyncapi/cli/blob/v1.1.4/src/commands/config/context/edit.ts)_ ## `asyncapi config context init [CONTEXT-FILE-PATH]` @@ -204,7 +204,7 @@ DESCRIPTION Initialize context ``` -_See code: [src/commands/config/context/init.ts](https://github.com/asyncapi/cli/blob/v1.1.3/src/commands/config/context/init.ts)_ +_See code: [src/commands/config/context/init.ts](https://github.com/asyncapi/cli/blob/v1.1.4/src/commands/config/context/init.ts)_ ## `asyncapi config context list` @@ -221,7 +221,7 @@ DESCRIPTION List all the stored contexts in the store ``` -_See code: [src/commands/config/context/list.ts](https://github.com/asyncapi/cli/blob/v1.1.3/src/commands/config/context/list.ts)_ +_See code: [src/commands/config/context/list.ts](https://github.com/asyncapi/cli/blob/v1.1.4/src/commands/config/context/list.ts)_ ## `asyncapi config context remove CONTEXT-NAME` @@ -241,7 +241,7 @@ DESCRIPTION Delete a context from the store ``` -_See code: [src/commands/config/context/remove.ts](https://github.com/asyncapi/cli/blob/v1.1.3/src/commands/config/context/remove.ts)_ +_See code: [src/commands/config/context/remove.ts](https://github.com/asyncapi/cli/blob/v1.1.4/src/commands/config/context/remove.ts)_ ## `asyncapi config context use CONTEXT-NAME` @@ -261,7 +261,7 @@ DESCRIPTION Set a context as current ``` -_See code: [src/commands/config/context/use.ts](https://github.com/asyncapi/cli/blob/v1.1.3/src/commands/config/context/use.ts)_ +_See code: [src/commands/config/context/use.ts](https://github.com/asyncapi/cli/blob/v1.1.4/src/commands/config/context/use.ts)_ ## `asyncapi config versions` @@ -278,7 +278,7 @@ DESCRIPTION Show versions of AsyncAPI tools used ``` -_See code: [src/commands/config/versions.ts](https://github.com/asyncapi/cli/blob/v1.1.3/src/commands/config/versions.ts)_ +_See code: [src/commands/config/versions.ts](https://github.com/asyncapi/cli/blob/v1.1.4/src/commands/config/versions.ts)_ ## `asyncapi convert [SPEC-FILE]` @@ -300,7 +300,7 @@ DESCRIPTION Convert asyncapi documents older to newer versions ``` -_See code: [src/commands/convert.ts](https://github.com/asyncapi/cli/blob/v1.1.3/src/commands/convert.ts)_ +_See code: [src/commands/convert.ts](https://github.com/asyncapi/cli/blob/v1.1.4/src/commands/convert.ts)_ ## `asyncapi diff OLD NEW` @@ -355,7 +355,7 @@ DESCRIPTION Find diff between two asyncapi files ``` -_See code: [src/commands/diff.ts](https://github.com/asyncapi/cli/blob/v1.1.3/src/commands/diff.ts)_ +_See code: [src/commands/diff.ts](https://github.com/asyncapi/cli/blob/v1.1.4/src/commands/diff.ts)_ ## `asyncapi generate` @@ -369,7 +369,7 @@ DESCRIPTION Generate typed models or other things like clients, applications or docs using AsyncAPI Generator templates. ``` -_See code: [src/commands/generate/index.ts](https://github.com/asyncapi/cli/blob/v1.1.3/src/commands/generate/index.ts)_ +_See code: [src/commands/generate/index.ts](https://github.com/asyncapi/cli/blob/v1.1.4/src/commands/generate/index.ts)_ ## `asyncapi generate fromTemplate ASYNCAPI TEMPLATE` @@ -406,7 +406,7 @@ EXAMPLES $ asyncapi generate fromTemplate asyncapi.yaml @asyncapi/html-template --param version=1.0.0 singleFile=true --output ./docs --force-write ``` -_See code: [src/commands/generate/fromTemplate.ts](https://github.com/asyncapi/cli/blob/v1.1.3/src/commands/generate/fromTemplate.ts)_ +_See code: [src/commands/generate/fromTemplate.ts](https://github.com/asyncapi/cli/blob/v1.1.4/src/commands/generate/fromTemplate.ts)_ ## `asyncapi generate models LANGUAGE FILE` @@ -480,7 +480,7 @@ DESCRIPTION Generates typed models ``` -_See code: [src/commands/generate/models.ts](https://github.com/asyncapi/cli/blob/v1.1.3/src/commands/generate/models.ts)_ +_See code: [src/commands/generate/models.ts](https://github.com/asyncapi/cli/blob/v1.1.4/src/commands/generate/models.ts)_ ## `asyncapi new` @@ -535,7 +535,7 @@ EXAMPLES $ asyncapi new --file-name=my-asyncapi.yml --example=default-example.yml --no-tty - create a new file with a specific name, using one of the examples and without interactive mode ``` -_See code: [src/commands/new/index.ts](https://github.com/asyncapi/cli/blob/v1.1.3/src/commands/new/index.ts)_ +_See code: [src/commands/new/index.ts](https://github.com/asyncapi/cli/blob/v1.1.4/src/commands/new/index.ts)_ ## `asyncapi new file` @@ -590,7 +590,7 @@ EXAMPLES $ asyncapi new --file-name=my-asyncapi.yml --example=default-example.yml --no-tty - create a new file with a specific name, using one of the examples and without interactive mode ``` -_See code: [src/commands/new/file.ts](https://github.com/asyncapi/cli/blob/v1.1.3/src/commands/new/file.ts)_ +_See code: [src/commands/new/file.ts](https://github.com/asyncapi/cli/blob/v1.1.4/src/commands/new/file.ts)_ ## `asyncapi new glee` @@ -609,7 +609,7 @@ DESCRIPTION Creates a new Glee project ``` -_See code: [src/commands/new/glee.ts](https://github.com/asyncapi/cli/blob/v1.1.3/src/commands/new/glee.ts)_ +_See code: [src/commands/new/glee.ts](https://github.com/asyncapi/cli/blob/v1.1.4/src/commands/new/glee.ts)_ ## `asyncapi new project` @@ -628,7 +628,7 @@ DESCRIPTION Creates a new Glee project ``` -_See code: [src/commands/new/project.ts](https://github.com/asyncapi/cli/blob/v1.1.3/src/commands/new/project.ts)_ +_See code: [src/commands/new/project.ts](https://github.com/asyncapi/cli/blob/v1.1.4/src/commands/new/project.ts)_ ## `asyncapi optimize [SPEC-FILE]` @@ -664,7 +664,7 @@ EXAMPLES $ asyncapi optimize ./asyncapi.yaml --optimization=remove-components,reuse-components,move-to-components --output=terminal --no-tty ``` -_See code: [src/commands/optimize.ts](https://github.com/asyncapi/cli/blob/v1.1.3/src/commands/optimize.ts)_ +_See code: [src/commands/optimize.ts](https://github.com/asyncapi/cli/blob/v1.1.4/src/commands/optimize.ts)_ ## `asyncapi start` @@ -678,7 +678,7 @@ DESCRIPTION Start asyncapi studio ``` -_See code: [src/commands/start/index.ts](https://github.com/asyncapi/cli/blob/v1.1.3/src/commands/start/index.ts)_ +_See code: [src/commands/start/index.ts](https://github.com/asyncapi/cli/blob/v1.1.4/src/commands/start/index.ts)_ ## `asyncapi start studio` @@ -697,7 +697,7 @@ DESCRIPTION starts a new local instance of Studio ``` -_See code: [src/commands/start/studio.ts](https://github.com/asyncapi/cli/blob/v1.1.3/src/commands/start/studio.ts)_ +_See code: [src/commands/start/studio.ts](https://github.com/asyncapi/cli/blob/v1.1.4/src/commands/start/studio.ts)_ ## `asyncapi validate [SPEC-FILE]` @@ -724,5 +724,5 @@ DESCRIPTION validate asyncapi file ``` -_See code: [src/commands/validate.ts](https://github.com/asyncapi/cli/blob/v1.1.3/src/commands/validate.ts)_ +_See code: [src/commands/validate.ts](https://github.com/asyncapi/cli/blob/v1.1.4/src/commands/validate.ts)_ From 140f7e2a50301893195ab49086d534c2c9ee80e6 Mon Sep 17 00:00:00 2001 From: asyncapi-bot Date: Wed, 29 Nov 2023 13:09:08 +0100 Subject: [PATCH 107/134] docs(generator): update latest generator documentation (#2361) --- pages/docs/tools/generator/api.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pages/docs/tools/generator/api.md b/pages/docs/tools/generator/api.md index b6923a5e7a1..edf7a82e4f9 100644 --- a/pages/docs/tools/generator/api.md +++ b/pages/docs/tools/generator/api.md @@ -238,7 +238,7 @@ Sets up the output configuration based on the specified output type. **Example** ```js const generator = new Generator(); -generator.setupOutput(); +await generator.setupOutput(); ``` From d962d8ad35b1a1476b8c45b3e78ad7b8c431f64c Mon Sep 17 00:00:00 2001 From: asyncapi-bot Date: Wed, 29 Nov 2023 13:20:46 +0100 Subject: [PATCH 108/134] docs(cli): update latest cli documentation (#2362) --- pages/docs/tools/cli/usage.md | 50 +++++++++++++++++------------------ 1 file changed, 25 insertions(+), 25 deletions(-) diff --git a/pages/docs/tools/cli/usage.md b/pages/docs/tools/cli/usage.md index 7dc3fdd9b7c..342baa7826e 100644 --- a/pages/docs/tools/cli/usage.md +++ b/pages/docs/tools/cli/usage.md @@ -29,7 +29,7 @@ $ npm install -g @asyncapi/cli $ asyncapi COMMAND running command... $ asyncapi (--version) -@asyncapi/cli/1.1.4 linux-x64 node-v18.18.2 +@asyncapi/cli/1.1.5 linux-x64 node-v18.18.2 $ asyncapi --help [COMMAND] USAGE $ asyncapi COMMAND @@ -93,7 +93,7 @@ EXAMPLES $ asyncapi bundle ./asyncapi.yaml ./features.yaml --base ./asyncapi.yaml --reference-into-components ``` -_See code: [src/commands/bundle.ts](https://github.com/asyncapi/cli/blob/v1.1.4/src/commands/bundle.ts)_ +_See code: [src/commands/bundle.ts](https://github.com/asyncapi/cli/blob/v1.1.5/src/commands/bundle.ts)_ ## `asyncapi config` @@ -107,7 +107,7 @@ DESCRIPTION CLI config settings ``` -_See code: [src/commands/config/index.ts](https://github.com/asyncapi/cli/blob/v1.1.4/src/commands/config/index.ts)_ +_See code: [src/commands/config/index.ts](https://github.com/asyncapi/cli/blob/v1.1.5/src/commands/config/index.ts)_ ## `asyncapi config context` @@ -121,7 +121,7 @@ DESCRIPTION Manage short aliases for full paths to AsyncAPI documents ``` -_See code: [src/commands/config/context/index.ts](https://github.com/asyncapi/cli/blob/v1.1.4/src/commands/config/context/index.ts)_ +_See code: [src/commands/config/context/index.ts](https://github.com/asyncapi/cli/blob/v1.1.5/src/commands/config/context/index.ts)_ ## `asyncapi config context add CONTEXT-NAME SPEC-FILE-PATH` @@ -143,7 +143,7 @@ DESCRIPTION Add a context to the store ``` -_See code: [src/commands/config/context/add.ts](https://github.com/asyncapi/cli/blob/v1.1.4/src/commands/config/context/add.ts)_ +_See code: [src/commands/config/context/add.ts](https://github.com/asyncapi/cli/blob/v1.1.5/src/commands/config/context/add.ts)_ ## `asyncapi config context current` @@ -160,7 +160,7 @@ DESCRIPTION Shows the current context that is being used ``` -_See code: [src/commands/config/context/current.ts](https://github.com/asyncapi/cli/blob/v1.1.4/src/commands/config/context/current.ts)_ +_See code: [src/commands/config/context/current.ts](https://github.com/asyncapi/cli/blob/v1.1.5/src/commands/config/context/current.ts)_ ## `asyncapi config context edit CONTEXT-NAME NEW-SPEC-FILE-PATH` @@ -181,7 +181,7 @@ DESCRIPTION Edit a context in the store ``` -_See code: [src/commands/config/context/edit.ts](https://github.com/asyncapi/cli/blob/v1.1.4/src/commands/config/context/edit.ts)_ +_See code: [src/commands/config/context/edit.ts](https://github.com/asyncapi/cli/blob/v1.1.5/src/commands/config/context/edit.ts)_ ## `asyncapi config context init [CONTEXT-FILE-PATH]` @@ -204,7 +204,7 @@ DESCRIPTION Initialize context ``` -_See code: [src/commands/config/context/init.ts](https://github.com/asyncapi/cli/blob/v1.1.4/src/commands/config/context/init.ts)_ +_See code: [src/commands/config/context/init.ts](https://github.com/asyncapi/cli/blob/v1.1.5/src/commands/config/context/init.ts)_ ## `asyncapi config context list` @@ -221,7 +221,7 @@ DESCRIPTION List all the stored contexts in the store ``` -_See code: [src/commands/config/context/list.ts](https://github.com/asyncapi/cli/blob/v1.1.4/src/commands/config/context/list.ts)_ +_See code: [src/commands/config/context/list.ts](https://github.com/asyncapi/cli/blob/v1.1.5/src/commands/config/context/list.ts)_ ## `asyncapi config context remove CONTEXT-NAME` @@ -241,7 +241,7 @@ DESCRIPTION Delete a context from the store ``` -_See code: [src/commands/config/context/remove.ts](https://github.com/asyncapi/cli/blob/v1.1.4/src/commands/config/context/remove.ts)_ +_See code: [src/commands/config/context/remove.ts](https://github.com/asyncapi/cli/blob/v1.1.5/src/commands/config/context/remove.ts)_ ## `asyncapi config context use CONTEXT-NAME` @@ -261,7 +261,7 @@ DESCRIPTION Set a context as current ``` -_See code: [src/commands/config/context/use.ts](https://github.com/asyncapi/cli/blob/v1.1.4/src/commands/config/context/use.ts)_ +_See code: [src/commands/config/context/use.ts](https://github.com/asyncapi/cli/blob/v1.1.5/src/commands/config/context/use.ts)_ ## `asyncapi config versions` @@ -278,7 +278,7 @@ DESCRIPTION Show versions of AsyncAPI tools used ``` -_See code: [src/commands/config/versions.ts](https://github.com/asyncapi/cli/blob/v1.1.4/src/commands/config/versions.ts)_ +_See code: [src/commands/config/versions.ts](https://github.com/asyncapi/cli/blob/v1.1.5/src/commands/config/versions.ts)_ ## `asyncapi convert [SPEC-FILE]` @@ -300,7 +300,7 @@ DESCRIPTION Convert asyncapi documents older to newer versions ``` -_See code: [src/commands/convert.ts](https://github.com/asyncapi/cli/blob/v1.1.4/src/commands/convert.ts)_ +_See code: [src/commands/convert.ts](https://github.com/asyncapi/cli/blob/v1.1.5/src/commands/convert.ts)_ ## `asyncapi diff OLD NEW` @@ -355,7 +355,7 @@ DESCRIPTION Find diff between two asyncapi files ``` -_See code: [src/commands/diff.ts](https://github.com/asyncapi/cli/blob/v1.1.4/src/commands/diff.ts)_ +_See code: [src/commands/diff.ts](https://github.com/asyncapi/cli/blob/v1.1.5/src/commands/diff.ts)_ ## `asyncapi generate` @@ -369,7 +369,7 @@ DESCRIPTION Generate typed models or other things like clients, applications or docs using AsyncAPI Generator templates. ``` -_See code: [src/commands/generate/index.ts](https://github.com/asyncapi/cli/blob/v1.1.4/src/commands/generate/index.ts)_ +_See code: [src/commands/generate/index.ts](https://github.com/asyncapi/cli/blob/v1.1.5/src/commands/generate/index.ts)_ ## `asyncapi generate fromTemplate ASYNCAPI TEMPLATE` @@ -406,7 +406,7 @@ EXAMPLES $ asyncapi generate fromTemplate asyncapi.yaml @asyncapi/html-template --param version=1.0.0 singleFile=true --output ./docs --force-write ``` -_See code: [src/commands/generate/fromTemplate.ts](https://github.com/asyncapi/cli/blob/v1.1.4/src/commands/generate/fromTemplate.ts)_ +_See code: [src/commands/generate/fromTemplate.ts](https://github.com/asyncapi/cli/blob/v1.1.5/src/commands/generate/fromTemplate.ts)_ ## `asyncapi generate models LANGUAGE FILE` @@ -480,7 +480,7 @@ DESCRIPTION Generates typed models ``` -_See code: [src/commands/generate/models.ts](https://github.com/asyncapi/cli/blob/v1.1.4/src/commands/generate/models.ts)_ +_See code: [src/commands/generate/models.ts](https://github.com/asyncapi/cli/blob/v1.1.5/src/commands/generate/models.ts)_ ## `asyncapi new` @@ -535,7 +535,7 @@ EXAMPLES $ asyncapi new --file-name=my-asyncapi.yml --example=default-example.yml --no-tty - create a new file with a specific name, using one of the examples and without interactive mode ``` -_See code: [src/commands/new/index.ts](https://github.com/asyncapi/cli/blob/v1.1.4/src/commands/new/index.ts)_ +_See code: [src/commands/new/index.ts](https://github.com/asyncapi/cli/blob/v1.1.5/src/commands/new/index.ts)_ ## `asyncapi new file` @@ -590,7 +590,7 @@ EXAMPLES $ asyncapi new --file-name=my-asyncapi.yml --example=default-example.yml --no-tty - create a new file with a specific name, using one of the examples and without interactive mode ``` -_See code: [src/commands/new/file.ts](https://github.com/asyncapi/cli/blob/v1.1.4/src/commands/new/file.ts)_ +_See code: [src/commands/new/file.ts](https://github.com/asyncapi/cli/blob/v1.1.5/src/commands/new/file.ts)_ ## `asyncapi new glee` @@ -609,7 +609,7 @@ DESCRIPTION Creates a new Glee project ``` -_See code: [src/commands/new/glee.ts](https://github.com/asyncapi/cli/blob/v1.1.4/src/commands/new/glee.ts)_ +_See code: [src/commands/new/glee.ts](https://github.com/asyncapi/cli/blob/v1.1.5/src/commands/new/glee.ts)_ ## `asyncapi new project` @@ -628,7 +628,7 @@ DESCRIPTION Creates a new Glee project ``` -_See code: [src/commands/new/project.ts](https://github.com/asyncapi/cli/blob/v1.1.4/src/commands/new/project.ts)_ +_See code: [src/commands/new/project.ts](https://github.com/asyncapi/cli/blob/v1.1.5/src/commands/new/project.ts)_ ## `asyncapi optimize [SPEC-FILE]` @@ -664,7 +664,7 @@ EXAMPLES $ asyncapi optimize ./asyncapi.yaml --optimization=remove-components,reuse-components,move-to-components --output=terminal --no-tty ``` -_See code: [src/commands/optimize.ts](https://github.com/asyncapi/cli/blob/v1.1.4/src/commands/optimize.ts)_ +_See code: [src/commands/optimize.ts](https://github.com/asyncapi/cli/blob/v1.1.5/src/commands/optimize.ts)_ ## `asyncapi start` @@ -678,7 +678,7 @@ DESCRIPTION Start asyncapi studio ``` -_See code: [src/commands/start/index.ts](https://github.com/asyncapi/cli/blob/v1.1.4/src/commands/start/index.ts)_ +_See code: [src/commands/start/index.ts](https://github.com/asyncapi/cli/blob/v1.1.5/src/commands/start/index.ts)_ ## `asyncapi start studio` @@ -697,7 +697,7 @@ DESCRIPTION starts a new local instance of Studio ``` -_See code: [src/commands/start/studio.ts](https://github.com/asyncapi/cli/blob/v1.1.4/src/commands/start/studio.ts)_ +_See code: [src/commands/start/studio.ts](https://github.com/asyncapi/cli/blob/v1.1.5/src/commands/start/studio.ts)_ ## `asyncapi validate [SPEC-FILE]` @@ -724,5 +724,5 @@ DESCRIPTION validate asyncapi file ``` -_See code: [src/commands/validate.ts](https://github.com/asyncapi/cli/blob/v1.1.4/src/commands/validate.ts)_ +_See code: [src/commands/validate.ts](https://github.com/asyncapi/cli/blob/v1.1.5/src/commands/validate.ts)_ From b7a086136b92629988e099e41a6f0449c72cc3c6 Mon Sep 17 00:00:00 2001 From: asyncapi-bot Date: Wed, 29 Nov 2023 13:31:34 +0100 Subject: [PATCH 109/134] docs(cli): update latest cli documentation (#2363) --- pages/docs/tools/cli/usage.md | 50 +++++++++++++++++------------------ 1 file changed, 25 insertions(+), 25 deletions(-) diff --git a/pages/docs/tools/cli/usage.md b/pages/docs/tools/cli/usage.md index 342baa7826e..785010ed2e7 100644 --- a/pages/docs/tools/cli/usage.md +++ b/pages/docs/tools/cli/usage.md @@ -29,7 +29,7 @@ $ npm install -g @asyncapi/cli $ asyncapi COMMAND running command... $ asyncapi (--version) -@asyncapi/cli/1.1.5 linux-x64 node-v18.18.2 +@asyncapi/cli/1.1.6 linux-x64 node-v18.18.2 $ asyncapi --help [COMMAND] USAGE $ asyncapi COMMAND @@ -93,7 +93,7 @@ EXAMPLES $ asyncapi bundle ./asyncapi.yaml ./features.yaml --base ./asyncapi.yaml --reference-into-components ``` -_See code: [src/commands/bundle.ts](https://github.com/asyncapi/cli/blob/v1.1.5/src/commands/bundle.ts)_ +_See code: [src/commands/bundle.ts](https://github.com/asyncapi/cli/blob/v1.1.6/src/commands/bundle.ts)_ ## `asyncapi config` @@ -107,7 +107,7 @@ DESCRIPTION CLI config settings ``` -_See code: [src/commands/config/index.ts](https://github.com/asyncapi/cli/blob/v1.1.5/src/commands/config/index.ts)_ +_See code: [src/commands/config/index.ts](https://github.com/asyncapi/cli/blob/v1.1.6/src/commands/config/index.ts)_ ## `asyncapi config context` @@ -121,7 +121,7 @@ DESCRIPTION Manage short aliases for full paths to AsyncAPI documents ``` -_See code: [src/commands/config/context/index.ts](https://github.com/asyncapi/cli/blob/v1.1.5/src/commands/config/context/index.ts)_ +_See code: [src/commands/config/context/index.ts](https://github.com/asyncapi/cli/blob/v1.1.6/src/commands/config/context/index.ts)_ ## `asyncapi config context add CONTEXT-NAME SPEC-FILE-PATH` @@ -143,7 +143,7 @@ DESCRIPTION Add a context to the store ``` -_See code: [src/commands/config/context/add.ts](https://github.com/asyncapi/cli/blob/v1.1.5/src/commands/config/context/add.ts)_ +_See code: [src/commands/config/context/add.ts](https://github.com/asyncapi/cli/blob/v1.1.6/src/commands/config/context/add.ts)_ ## `asyncapi config context current` @@ -160,7 +160,7 @@ DESCRIPTION Shows the current context that is being used ``` -_See code: [src/commands/config/context/current.ts](https://github.com/asyncapi/cli/blob/v1.1.5/src/commands/config/context/current.ts)_ +_See code: [src/commands/config/context/current.ts](https://github.com/asyncapi/cli/blob/v1.1.6/src/commands/config/context/current.ts)_ ## `asyncapi config context edit CONTEXT-NAME NEW-SPEC-FILE-PATH` @@ -181,7 +181,7 @@ DESCRIPTION Edit a context in the store ``` -_See code: [src/commands/config/context/edit.ts](https://github.com/asyncapi/cli/blob/v1.1.5/src/commands/config/context/edit.ts)_ +_See code: [src/commands/config/context/edit.ts](https://github.com/asyncapi/cli/blob/v1.1.6/src/commands/config/context/edit.ts)_ ## `asyncapi config context init [CONTEXT-FILE-PATH]` @@ -204,7 +204,7 @@ DESCRIPTION Initialize context ``` -_See code: [src/commands/config/context/init.ts](https://github.com/asyncapi/cli/blob/v1.1.5/src/commands/config/context/init.ts)_ +_See code: [src/commands/config/context/init.ts](https://github.com/asyncapi/cli/blob/v1.1.6/src/commands/config/context/init.ts)_ ## `asyncapi config context list` @@ -221,7 +221,7 @@ DESCRIPTION List all the stored contexts in the store ``` -_See code: [src/commands/config/context/list.ts](https://github.com/asyncapi/cli/blob/v1.1.5/src/commands/config/context/list.ts)_ +_See code: [src/commands/config/context/list.ts](https://github.com/asyncapi/cli/blob/v1.1.6/src/commands/config/context/list.ts)_ ## `asyncapi config context remove CONTEXT-NAME` @@ -241,7 +241,7 @@ DESCRIPTION Delete a context from the store ``` -_See code: [src/commands/config/context/remove.ts](https://github.com/asyncapi/cli/blob/v1.1.5/src/commands/config/context/remove.ts)_ +_See code: [src/commands/config/context/remove.ts](https://github.com/asyncapi/cli/blob/v1.1.6/src/commands/config/context/remove.ts)_ ## `asyncapi config context use CONTEXT-NAME` @@ -261,7 +261,7 @@ DESCRIPTION Set a context as current ``` -_See code: [src/commands/config/context/use.ts](https://github.com/asyncapi/cli/blob/v1.1.5/src/commands/config/context/use.ts)_ +_See code: [src/commands/config/context/use.ts](https://github.com/asyncapi/cli/blob/v1.1.6/src/commands/config/context/use.ts)_ ## `asyncapi config versions` @@ -278,7 +278,7 @@ DESCRIPTION Show versions of AsyncAPI tools used ``` -_See code: [src/commands/config/versions.ts](https://github.com/asyncapi/cli/blob/v1.1.5/src/commands/config/versions.ts)_ +_See code: [src/commands/config/versions.ts](https://github.com/asyncapi/cli/blob/v1.1.6/src/commands/config/versions.ts)_ ## `asyncapi convert [SPEC-FILE]` @@ -300,7 +300,7 @@ DESCRIPTION Convert asyncapi documents older to newer versions ``` -_See code: [src/commands/convert.ts](https://github.com/asyncapi/cli/blob/v1.1.5/src/commands/convert.ts)_ +_See code: [src/commands/convert.ts](https://github.com/asyncapi/cli/blob/v1.1.6/src/commands/convert.ts)_ ## `asyncapi diff OLD NEW` @@ -355,7 +355,7 @@ DESCRIPTION Find diff between two asyncapi files ``` -_See code: [src/commands/diff.ts](https://github.com/asyncapi/cli/blob/v1.1.5/src/commands/diff.ts)_ +_See code: [src/commands/diff.ts](https://github.com/asyncapi/cli/blob/v1.1.6/src/commands/diff.ts)_ ## `asyncapi generate` @@ -369,7 +369,7 @@ DESCRIPTION Generate typed models or other things like clients, applications or docs using AsyncAPI Generator templates. ``` -_See code: [src/commands/generate/index.ts](https://github.com/asyncapi/cli/blob/v1.1.5/src/commands/generate/index.ts)_ +_See code: [src/commands/generate/index.ts](https://github.com/asyncapi/cli/blob/v1.1.6/src/commands/generate/index.ts)_ ## `asyncapi generate fromTemplate ASYNCAPI TEMPLATE` @@ -406,7 +406,7 @@ EXAMPLES $ asyncapi generate fromTemplate asyncapi.yaml @asyncapi/html-template --param version=1.0.0 singleFile=true --output ./docs --force-write ``` -_See code: [src/commands/generate/fromTemplate.ts](https://github.com/asyncapi/cli/blob/v1.1.5/src/commands/generate/fromTemplate.ts)_ +_See code: [src/commands/generate/fromTemplate.ts](https://github.com/asyncapi/cli/blob/v1.1.6/src/commands/generate/fromTemplate.ts)_ ## `asyncapi generate models LANGUAGE FILE` @@ -480,7 +480,7 @@ DESCRIPTION Generates typed models ``` -_See code: [src/commands/generate/models.ts](https://github.com/asyncapi/cli/blob/v1.1.5/src/commands/generate/models.ts)_ +_See code: [src/commands/generate/models.ts](https://github.com/asyncapi/cli/blob/v1.1.6/src/commands/generate/models.ts)_ ## `asyncapi new` @@ -535,7 +535,7 @@ EXAMPLES $ asyncapi new --file-name=my-asyncapi.yml --example=default-example.yml --no-tty - create a new file with a specific name, using one of the examples and without interactive mode ``` -_See code: [src/commands/new/index.ts](https://github.com/asyncapi/cli/blob/v1.1.5/src/commands/new/index.ts)_ +_See code: [src/commands/new/index.ts](https://github.com/asyncapi/cli/blob/v1.1.6/src/commands/new/index.ts)_ ## `asyncapi new file` @@ -590,7 +590,7 @@ EXAMPLES $ asyncapi new --file-name=my-asyncapi.yml --example=default-example.yml --no-tty - create a new file with a specific name, using one of the examples and without interactive mode ``` -_See code: [src/commands/new/file.ts](https://github.com/asyncapi/cli/blob/v1.1.5/src/commands/new/file.ts)_ +_See code: [src/commands/new/file.ts](https://github.com/asyncapi/cli/blob/v1.1.6/src/commands/new/file.ts)_ ## `asyncapi new glee` @@ -609,7 +609,7 @@ DESCRIPTION Creates a new Glee project ``` -_See code: [src/commands/new/glee.ts](https://github.com/asyncapi/cli/blob/v1.1.5/src/commands/new/glee.ts)_ +_See code: [src/commands/new/glee.ts](https://github.com/asyncapi/cli/blob/v1.1.6/src/commands/new/glee.ts)_ ## `asyncapi new project` @@ -628,7 +628,7 @@ DESCRIPTION Creates a new Glee project ``` -_See code: [src/commands/new/project.ts](https://github.com/asyncapi/cli/blob/v1.1.5/src/commands/new/project.ts)_ +_See code: [src/commands/new/project.ts](https://github.com/asyncapi/cli/blob/v1.1.6/src/commands/new/project.ts)_ ## `asyncapi optimize [SPEC-FILE]` @@ -664,7 +664,7 @@ EXAMPLES $ asyncapi optimize ./asyncapi.yaml --optimization=remove-components,reuse-components,move-to-components --output=terminal --no-tty ``` -_See code: [src/commands/optimize.ts](https://github.com/asyncapi/cli/blob/v1.1.5/src/commands/optimize.ts)_ +_See code: [src/commands/optimize.ts](https://github.com/asyncapi/cli/blob/v1.1.6/src/commands/optimize.ts)_ ## `asyncapi start` @@ -678,7 +678,7 @@ DESCRIPTION Start asyncapi studio ``` -_See code: [src/commands/start/index.ts](https://github.com/asyncapi/cli/blob/v1.1.5/src/commands/start/index.ts)_ +_See code: [src/commands/start/index.ts](https://github.com/asyncapi/cli/blob/v1.1.6/src/commands/start/index.ts)_ ## `asyncapi start studio` @@ -697,7 +697,7 @@ DESCRIPTION starts a new local instance of Studio ``` -_See code: [src/commands/start/studio.ts](https://github.com/asyncapi/cli/blob/v1.1.5/src/commands/start/studio.ts)_ +_See code: [src/commands/start/studio.ts](https://github.com/asyncapi/cli/blob/v1.1.6/src/commands/start/studio.ts)_ ## `asyncapi validate [SPEC-FILE]` @@ -724,5 +724,5 @@ DESCRIPTION validate asyncapi file ``` -_See code: [src/commands/validate.ts](https://github.com/asyncapi/cli/blob/v1.1.5/src/commands/validate.ts)_ +_See code: [src/commands/validate.ts](https://github.com/asyncapi/cli/blob/v1.1.6/src/commands/validate.ts)_ From f8381d45cb3348d23d942501e8b6da48dac32fb0 Mon Sep 17 00:00:00 2001 From: asyncapi-bot Date: Wed, 29 Nov 2023 14:43:28 +0100 Subject: [PATCH 110/134] docs(cli): update latest cli documentation (#2364) --- pages/docs/tools/cli/usage.md | 50 +++++++++++++++++------------------ 1 file changed, 25 insertions(+), 25 deletions(-) diff --git a/pages/docs/tools/cli/usage.md b/pages/docs/tools/cli/usage.md index 785010ed2e7..a9c852a57f5 100644 --- a/pages/docs/tools/cli/usage.md +++ b/pages/docs/tools/cli/usage.md @@ -29,7 +29,7 @@ $ npm install -g @asyncapi/cli $ asyncapi COMMAND running command... $ asyncapi (--version) -@asyncapi/cli/1.1.6 linux-x64 node-v18.18.2 +@asyncapi/cli/1.1.7 linux-x64 node-v18.18.2 $ asyncapi --help [COMMAND] USAGE $ asyncapi COMMAND @@ -93,7 +93,7 @@ EXAMPLES $ asyncapi bundle ./asyncapi.yaml ./features.yaml --base ./asyncapi.yaml --reference-into-components ``` -_See code: [src/commands/bundle.ts](https://github.com/asyncapi/cli/blob/v1.1.6/src/commands/bundle.ts)_ +_See code: [src/commands/bundle.ts](https://github.com/asyncapi/cli/blob/v1.1.7/src/commands/bundle.ts)_ ## `asyncapi config` @@ -107,7 +107,7 @@ DESCRIPTION CLI config settings ``` -_See code: [src/commands/config/index.ts](https://github.com/asyncapi/cli/blob/v1.1.6/src/commands/config/index.ts)_ +_See code: [src/commands/config/index.ts](https://github.com/asyncapi/cli/blob/v1.1.7/src/commands/config/index.ts)_ ## `asyncapi config context` @@ -121,7 +121,7 @@ DESCRIPTION Manage short aliases for full paths to AsyncAPI documents ``` -_See code: [src/commands/config/context/index.ts](https://github.com/asyncapi/cli/blob/v1.1.6/src/commands/config/context/index.ts)_ +_See code: [src/commands/config/context/index.ts](https://github.com/asyncapi/cli/blob/v1.1.7/src/commands/config/context/index.ts)_ ## `asyncapi config context add CONTEXT-NAME SPEC-FILE-PATH` @@ -143,7 +143,7 @@ DESCRIPTION Add a context to the store ``` -_See code: [src/commands/config/context/add.ts](https://github.com/asyncapi/cli/blob/v1.1.6/src/commands/config/context/add.ts)_ +_See code: [src/commands/config/context/add.ts](https://github.com/asyncapi/cli/blob/v1.1.7/src/commands/config/context/add.ts)_ ## `asyncapi config context current` @@ -160,7 +160,7 @@ DESCRIPTION Shows the current context that is being used ``` -_See code: [src/commands/config/context/current.ts](https://github.com/asyncapi/cli/blob/v1.1.6/src/commands/config/context/current.ts)_ +_See code: [src/commands/config/context/current.ts](https://github.com/asyncapi/cli/blob/v1.1.7/src/commands/config/context/current.ts)_ ## `asyncapi config context edit CONTEXT-NAME NEW-SPEC-FILE-PATH` @@ -181,7 +181,7 @@ DESCRIPTION Edit a context in the store ``` -_See code: [src/commands/config/context/edit.ts](https://github.com/asyncapi/cli/blob/v1.1.6/src/commands/config/context/edit.ts)_ +_See code: [src/commands/config/context/edit.ts](https://github.com/asyncapi/cli/blob/v1.1.7/src/commands/config/context/edit.ts)_ ## `asyncapi config context init [CONTEXT-FILE-PATH]` @@ -204,7 +204,7 @@ DESCRIPTION Initialize context ``` -_See code: [src/commands/config/context/init.ts](https://github.com/asyncapi/cli/blob/v1.1.6/src/commands/config/context/init.ts)_ +_See code: [src/commands/config/context/init.ts](https://github.com/asyncapi/cli/blob/v1.1.7/src/commands/config/context/init.ts)_ ## `asyncapi config context list` @@ -221,7 +221,7 @@ DESCRIPTION List all the stored contexts in the store ``` -_See code: [src/commands/config/context/list.ts](https://github.com/asyncapi/cli/blob/v1.1.6/src/commands/config/context/list.ts)_ +_See code: [src/commands/config/context/list.ts](https://github.com/asyncapi/cli/blob/v1.1.7/src/commands/config/context/list.ts)_ ## `asyncapi config context remove CONTEXT-NAME` @@ -241,7 +241,7 @@ DESCRIPTION Delete a context from the store ``` -_See code: [src/commands/config/context/remove.ts](https://github.com/asyncapi/cli/blob/v1.1.6/src/commands/config/context/remove.ts)_ +_See code: [src/commands/config/context/remove.ts](https://github.com/asyncapi/cli/blob/v1.1.7/src/commands/config/context/remove.ts)_ ## `asyncapi config context use CONTEXT-NAME` @@ -261,7 +261,7 @@ DESCRIPTION Set a context as current ``` -_See code: [src/commands/config/context/use.ts](https://github.com/asyncapi/cli/blob/v1.1.6/src/commands/config/context/use.ts)_ +_See code: [src/commands/config/context/use.ts](https://github.com/asyncapi/cli/blob/v1.1.7/src/commands/config/context/use.ts)_ ## `asyncapi config versions` @@ -278,7 +278,7 @@ DESCRIPTION Show versions of AsyncAPI tools used ``` -_See code: [src/commands/config/versions.ts](https://github.com/asyncapi/cli/blob/v1.1.6/src/commands/config/versions.ts)_ +_See code: [src/commands/config/versions.ts](https://github.com/asyncapi/cli/blob/v1.1.7/src/commands/config/versions.ts)_ ## `asyncapi convert [SPEC-FILE]` @@ -300,7 +300,7 @@ DESCRIPTION Convert asyncapi documents older to newer versions ``` -_See code: [src/commands/convert.ts](https://github.com/asyncapi/cli/blob/v1.1.6/src/commands/convert.ts)_ +_See code: [src/commands/convert.ts](https://github.com/asyncapi/cli/blob/v1.1.7/src/commands/convert.ts)_ ## `asyncapi diff OLD NEW` @@ -355,7 +355,7 @@ DESCRIPTION Find diff between two asyncapi files ``` -_See code: [src/commands/diff.ts](https://github.com/asyncapi/cli/blob/v1.1.6/src/commands/diff.ts)_ +_See code: [src/commands/diff.ts](https://github.com/asyncapi/cli/blob/v1.1.7/src/commands/diff.ts)_ ## `asyncapi generate` @@ -369,7 +369,7 @@ DESCRIPTION Generate typed models or other things like clients, applications or docs using AsyncAPI Generator templates. ``` -_See code: [src/commands/generate/index.ts](https://github.com/asyncapi/cli/blob/v1.1.6/src/commands/generate/index.ts)_ +_See code: [src/commands/generate/index.ts](https://github.com/asyncapi/cli/blob/v1.1.7/src/commands/generate/index.ts)_ ## `asyncapi generate fromTemplate ASYNCAPI TEMPLATE` @@ -406,7 +406,7 @@ EXAMPLES $ asyncapi generate fromTemplate asyncapi.yaml @asyncapi/html-template --param version=1.0.0 singleFile=true --output ./docs --force-write ``` -_See code: [src/commands/generate/fromTemplate.ts](https://github.com/asyncapi/cli/blob/v1.1.6/src/commands/generate/fromTemplate.ts)_ +_See code: [src/commands/generate/fromTemplate.ts](https://github.com/asyncapi/cli/blob/v1.1.7/src/commands/generate/fromTemplate.ts)_ ## `asyncapi generate models LANGUAGE FILE` @@ -480,7 +480,7 @@ DESCRIPTION Generates typed models ``` -_See code: [src/commands/generate/models.ts](https://github.com/asyncapi/cli/blob/v1.1.6/src/commands/generate/models.ts)_ +_See code: [src/commands/generate/models.ts](https://github.com/asyncapi/cli/blob/v1.1.7/src/commands/generate/models.ts)_ ## `asyncapi new` @@ -535,7 +535,7 @@ EXAMPLES $ asyncapi new --file-name=my-asyncapi.yml --example=default-example.yml --no-tty - create a new file with a specific name, using one of the examples and without interactive mode ``` -_See code: [src/commands/new/index.ts](https://github.com/asyncapi/cli/blob/v1.1.6/src/commands/new/index.ts)_ +_See code: [src/commands/new/index.ts](https://github.com/asyncapi/cli/blob/v1.1.7/src/commands/new/index.ts)_ ## `asyncapi new file` @@ -590,7 +590,7 @@ EXAMPLES $ asyncapi new --file-name=my-asyncapi.yml --example=default-example.yml --no-tty - create a new file with a specific name, using one of the examples and without interactive mode ``` -_See code: [src/commands/new/file.ts](https://github.com/asyncapi/cli/blob/v1.1.6/src/commands/new/file.ts)_ +_See code: [src/commands/new/file.ts](https://github.com/asyncapi/cli/blob/v1.1.7/src/commands/new/file.ts)_ ## `asyncapi new glee` @@ -609,7 +609,7 @@ DESCRIPTION Creates a new Glee project ``` -_See code: [src/commands/new/glee.ts](https://github.com/asyncapi/cli/blob/v1.1.6/src/commands/new/glee.ts)_ +_See code: [src/commands/new/glee.ts](https://github.com/asyncapi/cli/blob/v1.1.7/src/commands/new/glee.ts)_ ## `asyncapi new project` @@ -628,7 +628,7 @@ DESCRIPTION Creates a new Glee project ``` -_See code: [src/commands/new/project.ts](https://github.com/asyncapi/cli/blob/v1.1.6/src/commands/new/project.ts)_ +_See code: [src/commands/new/project.ts](https://github.com/asyncapi/cli/blob/v1.1.7/src/commands/new/project.ts)_ ## `asyncapi optimize [SPEC-FILE]` @@ -664,7 +664,7 @@ EXAMPLES $ asyncapi optimize ./asyncapi.yaml --optimization=remove-components,reuse-components,move-to-components --output=terminal --no-tty ``` -_See code: [src/commands/optimize.ts](https://github.com/asyncapi/cli/blob/v1.1.6/src/commands/optimize.ts)_ +_See code: [src/commands/optimize.ts](https://github.com/asyncapi/cli/blob/v1.1.7/src/commands/optimize.ts)_ ## `asyncapi start` @@ -678,7 +678,7 @@ DESCRIPTION Start asyncapi studio ``` -_See code: [src/commands/start/index.ts](https://github.com/asyncapi/cli/blob/v1.1.6/src/commands/start/index.ts)_ +_See code: [src/commands/start/index.ts](https://github.com/asyncapi/cli/blob/v1.1.7/src/commands/start/index.ts)_ ## `asyncapi start studio` @@ -697,7 +697,7 @@ DESCRIPTION starts a new local instance of Studio ``` -_See code: [src/commands/start/studio.ts](https://github.com/asyncapi/cli/blob/v1.1.6/src/commands/start/studio.ts)_ +_See code: [src/commands/start/studio.ts](https://github.com/asyncapi/cli/blob/v1.1.7/src/commands/start/studio.ts)_ ## `asyncapi validate [SPEC-FILE]` @@ -724,5 +724,5 @@ DESCRIPTION validate asyncapi file ``` -_See code: [src/commands/validate.ts](https://github.com/asyncapi/cli/blob/v1.1.6/src/commands/validate.ts)_ +_See code: [src/commands/validate.ts](https://github.com/asyncapi/cli/blob/v1.1.7/src/commands/validate.ts)_ From 14d9dc4fba988e440fb53b856ece90833d22c533 Mon Sep 17 00:00:00 2001 From: asyncapi-bot Date: Wed, 29 Nov 2023 19:05:25 +0100 Subject: [PATCH 111/134] docs(spec): v3.0.0-next-major-spec.17 release (#2365) --- ...major-spec.16.md => v3.0.0-next-major-spec.17.md} | 12 ++++++------ public/_redirects | 2 +- 2 files changed, 7 insertions(+), 7 deletions(-) rename pages/docs/reference/specification/{v3.0.0-next-major-spec.16.md => v3.0.0-next-major-spec.17.md} (96%) diff --git a/pages/docs/reference/specification/v3.0.0-next-major-spec.16.md b/pages/docs/reference/specification/v3.0.0-next-major-spec.17.md similarity index 96% rename from pages/docs/reference/specification/v3.0.0-next-major-spec.16.md rename to pages/docs/reference/specification/v3.0.0-next-major-spec.17.md index eae441b8cae..33945c3b5ae 100644 --- a/pages/docs/reference/specification/v3.0.0-next-major-spec.16.md +++ b/pages/docs/reference/specification/v3.0.0-next-major-spec.17.md @@ -573,12 +573,12 @@ Describes a shared communication channel. Field Name | Type | Description ---|:---:|--- -address | `string` \| `null` | An optional string representation of this channel's address. The address is typically the "topic name", "routing key", "event type", or "path". When `null` or absent, it MUST be interpreted as unknown. This is useful when the address is generated dynamically at runtime or can't be known upfront. It MAY contain [Channel Address Expressions](#channelAddressExpressions). +address | `string` \| `null` | An optional string representation of this channel's address. The address is typically the "topic name", "routing key", "event type", or "path". When `null` or absent, it MUST be interpreted as unknown. This is useful when the address is generated dynamically at runtime or can't be known upfront. It MAY contain [Channel Address Expressions](#channelAddressExpressions). Query parameters and fragments SHALL NOT be used, instead use [bindings](#channelBindingsObject) to define them. messages | [Messages Object](#messagesObject) | A map of the messages that will be sent to this channel by any application at any time. **Every message sent to this channel MUST be valid against one, and only one, of the [message objects](#messageObject) defined in this map.** title | `string` | A human-friendly title for the channel. summary | `string` | A short summary of the channel. description | `string` | An optional description of this channel. [CommonMark syntax](https://spec.commonmark.org/) can be used for rich text representation. -servers | [[Reference Object](#referenceObject)] | An array of `$ref` pointers to the definition of the servers in which this channel is available. If `servers` is absent or empty, this channel MUST be available on all the servers defined in the [Servers Object](#serversObject). Please note the `servers` property value MUST be an array of [Reference Objects](#referenceObject) and, therefore, MUST NOT contain an array of [Server Objects](#serverObject). However, it is RECOMMENDED that parsers (or other software) dereference this property for a better development experience. +servers | [[Reference Object](#referenceObject)] | An array of `$ref` pointers to the definition of the servers in which this channel is available. If the channel is located in the [root Channels Object](#channelsObject), it MUST point to a subset of server definitions located in the [root Servers Object](#serversObject), and MUST NOT point to a subset of server definitions located in the [Components Object](#componentsObject) or anywhere else. If the channel is located in the [Components Object](#componentsObject), it MAY point to a [Server Objects](#serverObject) in any location. If `servers` is absent or empty, this channel MUST be available on all the servers defined in the [Servers Object](#serversObject). Please note the `servers` property value MUST be an array of [Reference Objects](#referenceObject) and, therefore, MUST NOT contain an array of [Server Objects](#serverObject). However, it is RECOMMENDED that parsers (or other software) dereference this property for a better development experience. parameters | [Parameters Object](#parametersObject) | A map of the parameters included in the channel address. It MUST be present only when the address contains [Channel Address Expressions](#channelAddressExpressions). tags | [Tags Object](#tagsObject) | A list of tags for logical grouping of channels. externalDocs | [External Documentation Object](#externalDocumentationObject) \| [Reference Object](#referenceObject) | Additional external documentation for this channel. @@ -774,7 +774,7 @@ Describes a specific operation. Field Name | Type | Description ---|:---:|--- action | `"send"` | `"receive"` | **Required**. Use `send` when it's expected that the application will send a message to the given [`channel`](#operationObjectChannel), and `receive` when the application should expect receiving messages from the given [`channel`](#operationObjectChannel). -channel | [Reference Object](#referenceObject) | **Required**. A `$ref` pointer to the definition of the channel in which this operation is performed. Please note the `channel` property value MUST be a [Reference Object](#referenceObject) and, therefore, MUST NOT contain a [Channel Object](#channelObject). However, it is RECOMMENDED that parsers (or other software) dereference this property for a better development experience. +channel | [Reference Object](#referenceObject) | **Required**. A `$ref` pointer to the definition of the channel in which this operation is performed. If the operation is located in the [root Operations Object](#operationsObject), it MUST point to a channel definition located in the [root Channels Object](#channelsObject), and MUST NOT point to a channel definition located in the [Components Object](#componentsObject) or anywhere else. If the operation is located in the [Components Object](#componentsObject), it MAY point to a [Channel Object](#channelObject) in any location. Please note the `channel` property value MUST be a [Reference Object](#referenceObject) and, therefore, MUST NOT contain a [Channel Object](#channelObject). However, it is RECOMMENDED that parsers (or other software) dereference this property for a better development experience. title | `string` | A human-friendly title for the operation. summary | `string` | A short summary of what the operation is about. description | `string` | A verbose explanation of the operation. [CommonMark syntax](http://spec.commonmark.org/) can be used for rich text representation. @@ -783,7 +783,7 @@ Field Name | Type | Description externalDocs | [External Documentation Object](#externalDocumentationObject) \| [Reference Object](#referenceObject) | Additional external documentation for this operation. bindings | [Operation Bindings Object](#operationBindingsObject) \| [Reference Object](#referenceObject) | A map where the keys describe the name of the protocol and the values describe protocol-specific definitions for the operation. traits | [[Operation Trait Object](#operationTraitObject) | [Reference Object](#referenceObject) ] | A list of traits to apply to the operation object. Traits MUST be merged using [traits merge mechanism](#traits-merge-mechanism). The resulting object MUST be a valid [Operation Object](#operationObject). -messages | [[Reference Object](#referenceObject)] | A list of `$ref` pointers pointing to the supported [Message Objects](#messageObject) that can be processed by this operation. It MUST contain a subset of the messages defined in the [channel referenced in this operation](#operationObjectChannel). **Every message processed by this operation MUST be valid against one, and only one, of the [message objects](#messageObject) referenced in this list.** Please note the `messages` property value MUST be a list of [Reference Objects](#referenceObject) and, therefore, MUST NOT contain [Message Objects](#messageObject). However, it is RECOMMENDED that parsers (or other software) dereference this property for a better development experience. +messages | [[Reference Object](#referenceObject)] | A list of `$ref` pointers pointing to the supported [Message Objects](#messageObject) that can be processed by this operation. It MUST contain a subset of the messages defined in the [channel referenced in this operation](#operationObjectChannel), and MUST NOT point to a subset of message definitions located in the [Messages Object](#componentsMessages) in the [Components Object](#componentsObject) or anywhere else. **Every message processed by this operation MUST be valid against one, and only one, of the [message objects](#messageObject) referenced in this list.** Please note the `messages` property value MUST be a list of [Reference Objects](#referenceObject) and, therefore, MUST NOT contain [Message Objects](#messageObject). However, it is RECOMMENDED that parsers (or other software) dereference this property for a better development experience. reply | [Operation Reply Object](#operationReplyObject) | [Reference Object](#referenceObject) | The definition of the reply in a request-reply operation. This object MAY be extended with [Specification Extensions](#specificationExtensions). @@ -921,8 +921,8 @@ Describes the reply part that MAY be applied to an Operation Object. If an opera Field Name | Type | Description ---|:---:|--- address | [Operation Reply Address Object](#operationReplyAddressObject) | [Reference Object](#referenceObject) | Definition of the address that implementations MUST use for the reply. -channel | [Reference Object](#referenceObject) | A `$ref` pointer to the definition of the channel in which this operation is performed. When [address](#operationReplyAddressObject) is specified, the [`address` property](#channelObjectAddress) of the channel referenced by this property MUST be either `null` or not defined. Please note the `channel` property value MUST be a [Reference Object](#referenceObject) and, therefore, MUST NOT contain a [Channel Object](#channelObject). However, it is RECOMMENDED that parsers (or other software) dereference this property for a better development experience. -messages | [[Reference Object](#referenceObject)] | A list of `$ref` pointers pointing to the supported [Message Objects](#messageObject) that can be processed by this operation as reply. It MUST contain a subset of the messages defined in the [channel referenced in this operation reply](#operationObjectChannel). **Every message processed by this operation MUST be valid against one, and only one, of the [message objects](#messageObject) referenced in this list.** Please note the `messages` property value MUST be a list of [Reference Objects](#referenceObject) and, therefore, MUST NOT contain [Message Objects](#messageObject). However, it is RECOMMENDED that parsers (or other software) dereference this property for a better development experience. +channel | [Reference Object](#referenceObject) | A `$ref` pointer to the definition of the channel in which this operation is performed. When [address](#operationReplyAddressObject) is specified, the [`address` property](#channelObjectAddress) of the channel referenced by this property MUST be either `null` or not defined. If the operation reply is located inside a [root Operation Object](#operationObject), it MUST point to a channel definition located in the [root Channels Object](#channelsObject), and MUST NOT point to a channel definition located in the [Components Object](#componentsObject) or anywhere else. If the operation reply is located inside an [Operation Object] in the [Components Object](#componentsObject) or in the [Replies Object](#componentsReplies) in the [Components Object](#componentsObject), it MAY point to a [Channel Object](#channelObject) in any location. Please note the `channel` property value MUST be a [Reference Object](#referenceObject) and, therefore, MUST NOT contain a [Channel Object](#channelObject). However, it is RECOMMENDED that parsers (or other software) dereference this property for a better development experience. +messages | [[Reference Object](#referenceObject)] | A list of `$ref` pointers pointing to the supported [Message Objects](#messageObject) that can be processed by this operation as reply. It MUST contain a subset of the messages defined in the [channel referenced in this operation reply](#operationObjectChannel), and MUST NOT point to a subset of message definitions located in the [Components Object](#componentsObject) or anywhere else. **Every message processed by this operation MUST be valid against one, and only one, of the [message objects](#messageObject) referenced in this list.** Please note the `messages` property value MUST be a list of [Reference Objects](#referenceObject) and, therefore, MUST NOT contain [Message Objects](#messageObject). However, it is RECOMMENDED that parsers (or other software) dereference this property for a better development experience. This object MAY be extended with [Specification Extensions](#specificationExtensions). diff --git a/public/_redirects b/public/_redirects index f143a4c0917..bacdccdd979 100644 --- a/public/_redirects +++ b/public/_redirects @@ -23,7 +23,7 @@ https://www.asyncapi.io/* https://www.asyncapi.com/:splat 301! # LATEST-SPEC-REDIRECTION:END # SPEC-REDIRECTION:START -/docs/reference/specification/3.0.0-next-major-spec.16 /docs/reference/specification/v3.0.0-next-major-spec.16 302! +/docs/reference/specification/3.0.0-next-major-spec.17 /docs/reference/specification/v3.0.0-next-major-spec.17 302! /docs/reference/specification/2.6.0 /docs/reference/specification/v2.6.0 302! /docs/reference/specification/2.5.0 /docs/reference/specification/v2.5.0 302! /docs/reference/specification/2.4.0 /docs/reference/specification/v2.4.0 302! From 596a1070a1847467b5ccd9122faf436c24d71ff4 Mon Sep 17 00:00:00 2001 From: asyncapi-bot Date: Wed, 29 Nov 2023 21:33:56 +0100 Subject: [PATCH 112/134] docs(cli): update latest cli documentation (#2368) --- pages/docs/tools/cli/usage.md | 50 +++++++++++++++++------------------ 1 file changed, 25 insertions(+), 25 deletions(-) diff --git a/pages/docs/tools/cli/usage.md b/pages/docs/tools/cli/usage.md index a9c852a57f5..c53b7d2eb98 100644 --- a/pages/docs/tools/cli/usage.md +++ b/pages/docs/tools/cli/usage.md @@ -29,7 +29,7 @@ $ npm install -g @asyncapi/cli $ asyncapi COMMAND running command... $ asyncapi (--version) -@asyncapi/cli/1.1.7 linux-x64 node-v18.18.2 +@asyncapi/cli/1.1.8 linux-x64 node-v18.18.2 $ asyncapi --help [COMMAND] USAGE $ asyncapi COMMAND @@ -93,7 +93,7 @@ EXAMPLES $ asyncapi bundle ./asyncapi.yaml ./features.yaml --base ./asyncapi.yaml --reference-into-components ``` -_See code: [src/commands/bundle.ts](https://github.com/asyncapi/cli/blob/v1.1.7/src/commands/bundle.ts)_ +_See code: [src/commands/bundle.ts](https://github.com/asyncapi/cli/blob/v1.1.8/src/commands/bundle.ts)_ ## `asyncapi config` @@ -107,7 +107,7 @@ DESCRIPTION CLI config settings ``` -_See code: [src/commands/config/index.ts](https://github.com/asyncapi/cli/blob/v1.1.7/src/commands/config/index.ts)_ +_See code: [src/commands/config/index.ts](https://github.com/asyncapi/cli/blob/v1.1.8/src/commands/config/index.ts)_ ## `asyncapi config context` @@ -121,7 +121,7 @@ DESCRIPTION Manage short aliases for full paths to AsyncAPI documents ``` -_See code: [src/commands/config/context/index.ts](https://github.com/asyncapi/cli/blob/v1.1.7/src/commands/config/context/index.ts)_ +_See code: [src/commands/config/context/index.ts](https://github.com/asyncapi/cli/blob/v1.1.8/src/commands/config/context/index.ts)_ ## `asyncapi config context add CONTEXT-NAME SPEC-FILE-PATH` @@ -143,7 +143,7 @@ DESCRIPTION Add a context to the store ``` -_See code: [src/commands/config/context/add.ts](https://github.com/asyncapi/cli/blob/v1.1.7/src/commands/config/context/add.ts)_ +_See code: [src/commands/config/context/add.ts](https://github.com/asyncapi/cli/blob/v1.1.8/src/commands/config/context/add.ts)_ ## `asyncapi config context current` @@ -160,7 +160,7 @@ DESCRIPTION Shows the current context that is being used ``` -_See code: [src/commands/config/context/current.ts](https://github.com/asyncapi/cli/blob/v1.1.7/src/commands/config/context/current.ts)_ +_See code: [src/commands/config/context/current.ts](https://github.com/asyncapi/cli/blob/v1.1.8/src/commands/config/context/current.ts)_ ## `asyncapi config context edit CONTEXT-NAME NEW-SPEC-FILE-PATH` @@ -181,7 +181,7 @@ DESCRIPTION Edit a context in the store ``` -_See code: [src/commands/config/context/edit.ts](https://github.com/asyncapi/cli/blob/v1.1.7/src/commands/config/context/edit.ts)_ +_See code: [src/commands/config/context/edit.ts](https://github.com/asyncapi/cli/blob/v1.1.8/src/commands/config/context/edit.ts)_ ## `asyncapi config context init [CONTEXT-FILE-PATH]` @@ -204,7 +204,7 @@ DESCRIPTION Initialize context ``` -_See code: [src/commands/config/context/init.ts](https://github.com/asyncapi/cli/blob/v1.1.7/src/commands/config/context/init.ts)_ +_See code: [src/commands/config/context/init.ts](https://github.com/asyncapi/cli/blob/v1.1.8/src/commands/config/context/init.ts)_ ## `asyncapi config context list` @@ -221,7 +221,7 @@ DESCRIPTION List all the stored contexts in the store ``` -_See code: [src/commands/config/context/list.ts](https://github.com/asyncapi/cli/blob/v1.1.7/src/commands/config/context/list.ts)_ +_See code: [src/commands/config/context/list.ts](https://github.com/asyncapi/cli/blob/v1.1.8/src/commands/config/context/list.ts)_ ## `asyncapi config context remove CONTEXT-NAME` @@ -241,7 +241,7 @@ DESCRIPTION Delete a context from the store ``` -_See code: [src/commands/config/context/remove.ts](https://github.com/asyncapi/cli/blob/v1.1.7/src/commands/config/context/remove.ts)_ +_See code: [src/commands/config/context/remove.ts](https://github.com/asyncapi/cli/blob/v1.1.8/src/commands/config/context/remove.ts)_ ## `asyncapi config context use CONTEXT-NAME` @@ -261,7 +261,7 @@ DESCRIPTION Set a context as current ``` -_See code: [src/commands/config/context/use.ts](https://github.com/asyncapi/cli/blob/v1.1.7/src/commands/config/context/use.ts)_ +_See code: [src/commands/config/context/use.ts](https://github.com/asyncapi/cli/blob/v1.1.8/src/commands/config/context/use.ts)_ ## `asyncapi config versions` @@ -278,7 +278,7 @@ DESCRIPTION Show versions of AsyncAPI tools used ``` -_See code: [src/commands/config/versions.ts](https://github.com/asyncapi/cli/blob/v1.1.7/src/commands/config/versions.ts)_ +_See code: [src/commands/config/versions.ts](https://github.com/asyncapi/cli/blob/v1.1.8/src/commands/config/versions.ts)_ ## `asyncapi convert [SPEC-FILE]` @@ -300,7 +300,7 @@ DESCRIPTION Convert asyncapi documents older to newer versions ``` -_See code: [src/commands/convert.ts](https://github.com/asyncapi/cli/blob/v1.1.7/src/commands/convert.ts)_ +_See code: [src/commands/convert.ts](https://github.com/asyncapi/cli/blob/v1.1.8/src/commands/convert.ts)_ ## `asyncapi diff OLD NEW` @@ -355,7 +355,7 @@ DESCRIPTION Find diff between two asyncapi files ``` -_See code: [src/commands/diff.ts](https://github.com/asyncapi/cli/blob/v1.1.7/src/commands/diff.ts)_ +_See code: [src/commands/diff.ts](https://github.com/asyncapi/cli/blob/v1.1.8/src/commands/diff.ts)_ ## `asyncapi generate` @@ -369,7 +369,7 @@ DESCRIPTION Generate typed models or other things like clients, applications or docs using AsyncAPI Generator templates. ``` -_See code: [src/commands/generate/index.ts](https://github.com/asyncapi/cli/blob/v1.1.7/src/commands/generate/index.ts)_ +_See code: [src/commands/generate/index.ts](https://github.com/asyncapi/cli/blob/v1.1.8/src/commands/generate/index.ts)_ ## `asyncapi generate fromTemplate ASYNCAPI TEMPLATE` @@ -406,7 +406,7 @@ EXAMPLES $ asyncapi generate fromTemplate asyncapi.yaml @asyncapi/html-template --param version=1.0.0 singleFile=true --output ./docs --force-write ``` -_See code: [src/commands/generate/fromTemplate.ts](https://github.com/asyncapi/cli/blob/v1.1.7/src/commands/generate/fromTemplate.ts)_ +_See code: [src/commands/generate/fromTemplate.ts](https://github.com/asyncapi/cli/blob/v1.1.8/src/commands/generate/fromTemplate.ts)_ ## `asyncapi generate models LANGUAGE FILE` @@ -480,7 +480,7 @@ DESCRIPTION Generates typed models ``` -_See code: [src/commands/generate/models.ts](https://github.com/asyncapi/cli/blob/v1.1.7/src/commands/generate/models.ts)_ +_See code: [src/commands/generate/models.ts](https://github.com/asyncapi/cli/blob/v1.1.8/src/commands/generate/models.ts)_ ## `asyncapi new` @@ -535,7 +535,7 @@ EXAMPLES $ asyncapi new --file-name=my-asyncapi.yml --example=default-example.yml --no-tty - create a new file with a specific name, using one of the examples and without interactive mode ``` -_See code: [src/commands/new/index.ts](https://github.com/asyncapi/cli/blob/v1.1.7/src/commands/new/index.ts)_ +_See code: [src/commands/new/index.ts](https://github.com/asyncapi/cli/blob/v1.1.8/src/commands/new/index.ts)_ ## `asyncapi new file` @@ -590,7 +590,7 @@ EXAMPLES $ asyncapi new --file-name=my-asyncapi.yml --example=default-example.yml --no-tty - create a new file with a specific name, using one of the examples and without interactive mode ``` -_See code: [src/commands/new/file.ts](https://github.com/asyncapi/cli/blob/v1.1.7/src/commands/new/file.ts)_ +_See code: [src/commands/new/file.ts](https://github.com/asyncapi/cli/blob/v1.1.8/src/commands/new/file.ts)_ ## `asyncapi new glee` @@ -609,7 +609,7 @@ DESCRIPTION Creates a new Glee project ``` -_See code: [src/commands/new/glee.ts](https://github.com/asyncapi/cli/blob/v1.1.7/src/commands/new/glee.ts)_ +_See code: [src/commands/new/glee.ts](https://github.com/asyncapi/cli/blob/v1.1.8/src/commands/new/glee.ts)_ ## `asyncapi new project` @@ -628,7 +628,7 @@ DESCRIPTION Creates a new Glee project ``` -_See code: [src/commands/new/project.ts](https://github.com/asyncapi/cli/blob/v1.1.7/src/commands/new/project.ts)_ +_See code: [src/commands/new/project.ts](https://github.com/asyncapi/cli/blob/v1.1.8/src/commands/new/project.ts)_ ## `asyncapi optimize [SPEC-FILE]` @@ -664,7 +664,7 @@ EXAMPLES $ asyncapi optimize ./asyncapi.yaml --optimization=remove-components,reuse-components,move-to-components --output=terminal --no-tty ``` -_See code: [src/commands/optimize.ts](https://github.com/asyncapi/cli/blob/v1.1.7/src/commands/optimize.ts)_ +_See code: [src/commands/optimize.ts](https://github.com/asyncapi/cli/blob/v1.1.8/src/commands/optimize.ts)_ ## `asyncapi start` @@ -678,7 +678,7 @@ DESCRIPTION Start asyncapi studio ``` -_See code: [src/commands/start/index.ts](https://github.com/asyncapi/cli/blob/v1.1.7/src/commands/start/index.ts)_ +_See code: [src/commands/start/index.ts](https://github.com/asyncapi/cli/blob/v1.1.8/src/commands/start/index.ts)_ ## `asyncapi start studio` @@ -697,7 +697,7 @@ DESCRIPTION starts a new local instance of Studio ``` -_See code: [src/commands/start/studio.ts](https://github.com/asyncapi/cli/blob/v1.1.7/src/commands/start/studio.ts)_ +_See code: [src/commands/start/studio.ts](https://github.com/asyncapi/cli/blob/v1.1.8/src/commands/start/studio.ts)_ ## `asyncapi validate [SPEC-FILE]` @@ -724,5 +724,5 @@ DESCRIPTION validate asyncapi file ``` -_See code: [src/commands/validate.ts](https://github.com/asyncapi/cli/blob/v1.1.7/src/commands/validate.ts)_ +_See code: [src/commands/validate.ts](https://github.com/asyncapi/cli/blob/v1.1.8/src/commands/validate.ts)_ From 4fc8c4748911b1beeb6af9ad823310fa850d45d3 Mon Sep 17 00:00:00 2001 From: asyncapi-bot Date: Wed, 29 Nov 2023 22:28:11 +0100 Subject: [PATCH 113/134] docs(cli): update latest cli documentation (#2369) --- pages/docs/tools/cli/usage.md | 50 +++++++++++++++++------------------ 1 file changed, 25 insertions(+), 25 deletions(-) diff --git a/pages/docs/tools/cli/usage.md b/pages/docs/tools/cli/usage.md index c53b7d2eb98..1183f61ba9a 100644 --- a/pages/docs/tools/cli/usage.md +++ b/pages/docs/tools/cli/usage.md @@ -29,7 +29,7 @@ $ npm install -g @asyncapi/cli $ asyncapi COMMAND running command... $ asyncapi (--version) -@asyncapi/cli/1.1.8 linux-x64 node-v18.18.2 +@asyncapi/cli/1.1.9 linux-x64 node-v18.18.2 $ asyncapi --help [COMMAND] USAGE $ asyncapi COMMAND @@ -93,7 +93,7 @@ EXAMPLES $ asyncapi bundle ./asyncapi.yaml ./features.yaml --base ./asyncapi.yaml --reference-into-components ``` -_See code: [src/commands/bundle.ts](https://github.com/asyncapi/cli/blob/v1.1.8/src/commands/bundle.ts)_ +_See code: [src/commands/bundle.ts](https://github.com/asyncapi/cli/blob/v1.1.9/src/commands/bundle.ts)_ ## `asyncapi config` @@ -107,7 +107,7 @@ DESCRIPTION CLI config settings ``` -_See code: [src/commands/config/index.ts](https://github.com/asyncapi/cli/blob/v1.1.8/src/commands/config/index.ts)_ +_See code: [src/commands/config/index.ts](https://github.com/asyncapi/cli/blob/v1.1.9/src/commands/config/index.ts)_ ## `asyncapi config context` @@ -121,7 +121,7 @@ DESCRIPTION Manage short aliases for full paths to AsyncAPI documents ``` -_See code: [src/commands/config/context/index.ts](https://github.com/asyncapi/cli/blob/v1.1.8/src/commands/config/context/index.ts)_ +_See code: [src/commands/config/context/index.ts](https://github.com/asyncapi/cli/blob/v1.1.9/src/commands/config/context/index.ts)_ ## `asyncapi config context add CONTEXT-NAME SPEC-FILE-PATH` @@ -143,7 +143,7 @@ DESCRIPTION Add a context to the store ``` -_See code: [src/commands/config/context/add.ts](https://github.com/asyncapi/cli/blob/v1.1.8/src/commands/config/context/add.ts)_ +_See code: [src/commands/config/context/add.ts](https://github.com/asyncapi/cli/blob/v1.1.9/src/commands/config/context/add.ts)_ ## `asyncapi config context current` @@ -160,7 +160,7 @@ DESCRIPTION Shows the current context that is being used ``` -_See code: [src/commands/config/context/current.ts](https://github.com/asyncapi/cli/blob/v1.1.8/src/commands/config/context/current.ts)_ +_See code: [src/commands/config/context/current.ts](https://github.com/asyncapi/cli/blob/v1.1.9/src/commands/config/context/current.ts)_ ## `asyncapi config context edit CONTEXT-NAME NEW-SPEC-FILE-PATH` @@ -181,7 +181,7 @@ DESCRIPTION Edit a context in the store ``` -_See code: [src/commands/config/context/edit.ts](https://github.com/asyncapi/cli/blob/v1.1.8/src/commands/config/context/edit.ts)_ +_See code: [src/commands/config/context/edit.ts](https://github.com/asyncapi/cli/blob/v1.1.9/src/commands/config/context/edit.ts)_ ## `asyncapi config context init [CONTEXT-FILE-PATH]` @@ -204,7 +204,7 @@ DESCRIPTION Initialize context ``` -_See code: [src/commands/config/context/init.ts](https://github.com/asyncapi/cli/blob/v1.1.8/src/commands/config/context/init.ts)_ +_See code: [src/commands/config/context/init.ts](https://github.com/asyncapi/cli/blob/v1.1.9/src/commands/config/context/init.ts)_ ## `asyncapi config context list` @@ -221,7 +221,7 @@ DESCRIPTION List all the stored contexts in the store ``` -_See code: [src/commands/config/context/list.ts](https://github.com/asyncapi/cli/blob/v1.1.8/src/commands/config/context/list.ts)_ +_See code: [src/commands/config/context/list.ts](https://github.com/asyncapi/cli/blob/v1.1.9/src/commands/config/context/list.ts)_ ## `asyncapi config context remove CONTEXT-NAME` @@ -241,7 +241,7 @@ DESCRIPTION Delete a context from the store ``` -_See code: [src/commands/config/context/remove.ts](https://github.com/asyncapi/cli/blob/v1.1.8/src/commands/config/context/remove.ts)_ +_See code: [src/commands/config/context/remove.ts](https://github.com/asyncapi/cli/blob/v1.1.9/src/commands/config/context/remove.ts)_ ## `asyncapi config context use CONTEXT-NAME` @@ -261,7 +261,7 @@ DESCRIPTION Set a context as current ``` -_See code: [src/commands/config/context/use.ts](https://github.com/asyncapi/cli/blob/v1.1.8/src/commands/config/context/use.ts)_ +_See code: [src/commands/config/context/use.ts](https://github.com/asyncapi/cli/blob/v1.1.9/src/commands/config/context/use.ts)_ ## `asyncapi config versions` @@ -278,7 +278,7 @@ DESCRIPTION Show versions of AsyncAPI tools used ``` -_See code: [src/commands/config/versions.ts](https://github.com/asyncapi/cli/blob/v1.1.8/src/commands/config/versions.ts)_ +_See code: [src/commands/config/versions.ts](https://github.com/asyncapi/cli/blob/v1.1.9/src/commands/config/versions.ts)_ ## `asyncapi convert [SPEC-FILE]` @@ -300,7 +300,7 @@ DESCRIPTION Convert asyncapi documents older to newer versions ``` -_See code: [src/commands/convert.ts](https://github.com/asyncapi/cli/blob/v1.1.8/src/commands/convert.ts)_ +_See code: [src/commands/convert.ts](https://github.com/asyncapi/cli/blob/v1.1.9/src/commands/convert.ts)_ ## `asyncapi diff OLD NEW` @@ -355,7 +355,7 @@ DESCRIPTION Find diff between two asyncapi files ``` -_See code: [src/commands/diff.ts](https://github.com/asyncapi/cli/blob/v1.1.8/src/commands/diff.ts)_ +_See code: [src/commands/diff.ts](https://github.com/asyncapi/cli/blob/v1.1.9/src/commands/diff.ts)_ ## `asyncapi generate` @@ -369,7 +369,7 @@ DESCRIPTION Generate typed models or other things like clients, applications or docs using AsyncAPI Generator templates. ``` -_See code: [src/commands/generate/index.ts](https://github.com/asyncapi/cli/blob/v1.1.8/src/commands/generate/index.ts)_ +_See code: [src/commands/generate/index.ts](https://github.com/asyncapi/cli/blob/v1.1.9/src/commands/generate/index.ts)_ ## `asyncapi generate fromTemplate ASYNCAPI TEMPLATE` @@ -406,7 +406,7 @@ EXAMPLES $ asyncapi generate fromTemplate asyncapi.yaml @asyncapi/html-template --param version=1.0.0 singleFile=true --output ./docs --force-write ``` -_See code: [src/commands/generate/fromTemplate.ts](https://github.com/asyncapi/cli/blob/v1.1.8/src/commands/generate/fromTemplate.ts)_ +_See code: [src/commands/generate/fromTemplate.ts](https://github.com/asyncapi/cli/blob/v1.1.9/src/commands/generate/fromTemplate.ts)_ ## `asyncapi generate models LANGUAGE FILE` @@ -480,7 +480,7 @@ DESCRIPTION Generates typed models ``` -_See code: [src/commands/generate/models.ts](https://github.com/asyncapi/cli/blob/v1.1.8/src/commands/generate/models.ts)_ +_See code: [src/commands/generate/models.ts](https://github.com/asyncapi/cli/blob/v1.1.9/src/commands/generate/models.ts)_ ## `asyncapi new` @@ -535,7 +535,7 @@ EXAMPLES $ asyncapi new --file-name=my-asyncapi.yml --example=default-example.yml --no-tty - create a new file with a specific name, using one of the examples and without interactive mode ``` -_See code: [src/commands/new/index.ts](https://github.com/asyncapi/cli/blob/v1.1.8/src/commands/new/index.ts)_ +_See code: [src/commands/new/index.ts](https://github.com/asyncapi/cli/blob/v1.1.9/src/commands/new/index.ts)_ ## `asyncapi new file` @@ -590,7 +590,7 @@ EXAMPLES $ asyncapi new --file-name=my-asyncapi.yml --example=default-example.yml --no-tty - create a new file with a specific name, using one of the examples and without interactive mode ``` -_See code: [src/commands/new/file.ts](https://github.com/asyncapi/cli/blob/v1.1.8/src/commands/new/file.ts)_ +_See code: [src/commands/new/file.ts](https://github.com/asyncapi/cli/blob/v1.1.9/src/commands/new/file.ts)_ ## `asyncapi new glee` @@ -609,7 +609,7 @@ DESCRIPTION Creates a new Glee project ``` -_See code: [src/commands/new/glee.ts](https://github.com/asyncapi/cli/blob/v1.1.8/src/commands/new/glee.ts)_ +_See code: [src/commands/new/glee.ts](https://github.com/asyncapi/cli/blob/v1.1.9/src/commands/new/glee.ts)_ ## `asyncapi new project` @@ -628,7 +628,7 @@ DESCRIPTION Creates a new Glee project ``` -_See code: [src/commands/new/project.ts](https://github.com/asyncapi/cli/blob/v1.1.8/src/commands/new/project.ts)_ +_See code: [src/commands/new/project.ts](https://github.com/asyncapi/cli/blob/v1.1.9/src/commands/new/project.ts)_ ## `asyncapi optimize [SPEC-FILE]` @@ -664,7 +664,7 @@ EXAMPLES $ asyncapi optimize ./asyncapi.yaml --optimization=remove-components,reuse-components,move-to-components --output=terminal --no-tty ``` -_See code: [src/commands/optimize.ts](https://github.com/asyncapi/cli/blob/v1.1.8/src/commands/optimize.ts)_ +_See code: [src/commands/optimize.ts](https://github.com/asyncapi/cli/blob/v1.1.9/src/commands/optimize.ts)_ ## `asyncapi start` @@ -678,7 +678,7 @@ DESCRIPTION Start asyncapi studio ``` -_See code: [src/commands/start/index.ts](https://github.com/asyncapi/cli/blob/v1.1.8/src/commands/start/index.ts)_ +_See code: [src/commands/start/index.ts](https://github.com/asyncapi/cli/blob/v1.1.9/src/commands/start/index.ts)_ ## `asyncapi start studio` @@ -697,7 +697,7 @@ DESCRIPTION starts a new local instance of Studio ``` -_See code: [src/commands/start/studio.ts](https://github.com/asyncapi/cli/blob/v1.1.8/src/commands/start/studio.ts)_ +_See code: [src/commands/start/studio.ts](https://github.com/asyncapi/cli/blob/v1.1.9/src/commands/start/studio.ts)_ ## `asyncapi validate [SPEC-FILE]` @@ -724,5 +724,5 @@ DESCRIPTION validate asyncapi file ``` -_See code: [src/commands/validate.ts](https://github.com/asyncapi/cli/blob/v1.1.8/src/commands/validate.ts)_ +_See code: [src/commands/validate.ts](https://github.com/asyncapi/cli/blob/v1.1.9/src/commands/validate.ts)_ From 75b6c0f331c837ccf1ee94f806adc11b51b1a5b0 Mon Sep 17 00:00:00 2001 From: asyncapi-bot Date: Wed, 29 Nov 2023 22:40:39 +0100 Subject: [PATCH 114/134] docs(cli): update latest cli documentation (#2370) --- pages/docs/tools/cli/usage.md | 50 +++++++++++++++++------------------ 1 file changed, 25 insertions(+), 25 deletions(-) diff --git a/pages/docs/tools/cli/usage.md b/pages/docs/tools/cli/usage.md index 1183f61ba9a..d1d76fed810 100644 --- a/pages/docs/tools/cli/usage.md +++ b/pages/docs/tools/cli/usage.md @@ -29,7 +29,7 @@ $ npm install -g @asyncapi/cli $ asyncapi COMMAND running command... $ asyncapi (--version) -@asyncapi/cli/1.1.9 linux-x64 node-v18.18.2 +@asyncapi/cli/1.1.10 linux-x64 node-v18.18.2 $ asyncapi --help [COMMAND] USAGE $ asyncapi COMMAND @@ -93,7 +93,7 @@ EXAMPLES $ asyncapi bundle ./asyncapi.yaml ./features.yaml --base ./asyncapi.yaml --reference-into-components ``` -_See code: [src/commands/bundle.ts](https://github.com/asyncapi/cli/blob/v1.1.9/src/commands/bundle.ts)_ +_See code: [src/commands/bundle.ts](https://github.com/asyncapi/cli/blob/v1.1.10/src/commands/bundle.ts)_ ## `asyncapi config` @@ -107,7 +107,7 @@ DESCRIPTION CLI config settings ``` -_See code: [src/commands/config/index.ts](https://github.com/asyncapi/cli/blob/v1.1.9/src/commands/config/index.ts)_ +_See code: [src/commands/config/index.ts](https://github.com/asyncapi/cli/blob/v1.1.10/src/commands/config/index.ts)_ ## `asyncapi config context` @@ -121,7 +121,7 @@ DESCRIPTION Manage short aliases for full paths to AsyncAPI documents ``` -_See code: [src/commands/config/context/index.ts](https://github.com/asyncapi/cli/blob/v1.1.9/src/commands/config/context/index.ts)_ +_See code: [src/commands/config/context/index.ts](https://github.com/asyncapi/cli/blob/v1.1.10/src/commands/config/context/index.ts)_ ## `asyncapi config context add CONTEXT-NAME SPEC-FILE-PATH` @@ -143,7 +143,7 @@ DESCRIPTION Add a context to the store ``` -_See code: [src/commands/config/context/add.ts](https://github.com/asyncapi/cli/blob/v1.1.9/src/commands/config/context/add.ts)_ +_See code: [src/commands/config/context/add.ts](https://github.com/asyncapi/cli/blob/v1.1.10/src/commands/config/context/add.ts)_ ## `asyncapi config context current` @@ -160,7 +160,7 @@ DESCRIPTION Shows the current context that is being used ``` -_See code: [src/commands/config/context/current.ts](https://github.com/asyncapi/cli/blob/v1.1.9/src/commands/config/context/current.ts)_ +_See code: [src/commands/config/context/current.ts](https://github.com/asyncapi/cli/blob/v1.1.10/src/commands/config/context/current.ts)_ ## `asyncapi config context edit CONTEXT-NAME NEW-SPEC-FILE-PATH` @@ -181,7 +181,7 @@ DESCRIPTION Edit a context in the store ``` -_See code: [src/commands/config/context/edit.ts](https://github.com/asyncapi/cli/blob/v1.1.9/src/commands/config/context/edit.ts)_ +_See code: [src/commands/config/context/edit.ts](https://github.com/asyncapi/cli/blob/v1.1.10/src/commands/config/context/edit.ts)_ ## `asyncapi config context init [CONTEXT-FILE-PATH]` @@ -204,7 +204,7 @@ DESCRIPTION Initialize context ``` -_See code: [src/commands/config/context/init.ts](https://github.com/asyncapi/cli/blob/v1.1.9/src/commands/config/context/init.ts)_ +_See code: [src/commands/config/context/init.ts](https://github.com/asyncapi/cli/blob/v1.1.10/src/commands/config/context/init.ts)_ ## `asyncapi config context list` @@ -221,7 +221,7 @@ DESCRIPTION List all the stored contexts in the store ``` -_See code: [src/commands/config/context/list.ts](https://github.com/asyncapi/cli/blob/v1.1.9/src/commands/config/context/list.ts)_ +_See code: [src/commands/config/context/list.ts](https://github.com/asyncapi/cli/blob/v1.1.10/src/commands/config/context/list.ts)_ ## `asyncapi config context remove CONTEXT-NAME` @@ -241,7 +241,7 @@ DESCRIPTION Delete a context from the store ``` -_See code: [src/commands/config/context/remove.ts](https://github.com/asyncapi/cli/blob/v1.1.9/src/commands/config/context/remove.ts)_ +_See code: [src/commands/config/context/remove.ts](https://github.com/asyncapi/cli/blob/v1.1.10/src/commands/config/context/remove.ts)_ ## `asyncapi config context use CONTEXT-NAME` @@ -261,7 +261,7 @@ DESCRIPTION Set a context as current ``` -_See code: [src/commands/config/context/use.ts](https://github.com/asyncapi/cli/blob/v1.1.9/src/commands/config/context/use.ts)_ +_See code: [src/commands/config/context/use.ts](https://github.com/asyncapi/cli/blob/v1.1.10/src/commands/config/context/use.ts)_ ## `asyncapi config versions` @@ -278,7 +278,7 @@ DESCRIPTION Show versions of AsyncAPI tools used ``` -_See code: [src/commands/config/versions.ts](https://github.com/asyncapi/cli/blob/v1.1.9/src/commands/config/versions.ts)_ +_See code: [src/commands/config/versions.ts](https://github.com/asyncapi/cli/blob/v1.1.10/src/commands/config/versions.ts)_ ## `asyncapi convert [SPEC-FILE]` @@ -300,7 +300,7 @@ DESCRIPTION Convert asyncapi documents older to newer versions ``` -_See code: [src/commands/convert.ts](https://github.com/asyncapi/cli/blob/v1.1.9/src/commands/convert.ts)_ +_See code: [src/commands/convert.ts](https://github.com/asyncapi/cli/blob/v1.1.10/src/commands/convert.ts)_ ## `asyncapi diff OLD NEW` @@ -355,7 +355,7 @@ DESCRIPTION Find diff between two asyncapi files ``` -_See code: [src/commands/diff.ts](https://github.com/asyncapi/cli/blob/v1.1.9/src/commands/diff.ts)_ +_See code: [src/commands/diff.ts](https://github.com/asyncapi/cli/blob/v1.1.10/src/commands/diff.ts)_ ## `asyncapi generate` @@ -369,7 +369,7 @@ DESCRIPTION Generate typed models or other things like clients, applications or docs using AsyncAPI Generator templates. ``` -_See code: [src/commands/generate/index.ts](https://github.com/asyncapi/cli/blob/v1.1.9/src/commands/generate/index.ts)_ +_See code: [src/commands/generate/index.ts](https://github.com/asyncapi/cli/blob/v1.1.10/src/commands/generate/index.ts)_ ## `asyncapi generate fromTemplate ASYNCAPI TEMPLATE` @@ -406,7 +406,7 @@ EXAMPLES $ asyncapi generate fromTemplate asyncapi.yaml @asyncapi/html-template --param version=1.0.0 singleFile=true --output ./docs --force-write ``` -_See code: [src/commands/generate/fromTemplate.ts](https://github.com/asyncapi/cli/blob/v1.1.9/src/commands/generate/fromTemplate.ts)_ +_See code: [src/commands/generate/fromTemplate.ts](https://github.com/asyncapi/cli/blob/v1.1.10/src/commands/generate/fromTemplate.ts)_ ## `asyncapi generate models LANGUAGE FILE` @@ -480,7 +480,7 @@ DESCRIPTION Generates typed models ``` -_See code: [src/commands/generate/models.ts](https://github.com/asyncapi/cli/blob/v1.1.9/src/commands/generate/models.ts)_ +_See code: [src/commands/generate/models.ts](https://github.com/asyncapi/cli/blob/v1.1.10/src/commands/generate/models.ts)_ ## `asyncapi new` @@ -535,7 +535,7 @@ EXAMPLES $ asyncapi new --file-name=my-asyncapi.yml --example=default-example.yml --no-tty - create a new file with a specific name, using one of the examples and without interactive mode ``` -_See code: [src/commands/new/index.ts](https://github.com/asyncapi/cli/blob/v1.1.9/src/commands/new/index.ts)_ +_See code: [src/commands/new/index.ts](https://github.com/asyncapi/cli/blob/v1.1.10/src/commands/new/index.ts)_ ## `asyncapi new file` @@ -590,7 +590,7 @@ EXAMPLES $ asyncapi new --file-name=my-asyncapi.yml --example=default-example.yml --no-tty - create a new file with a specific name, using one of the examples and without interactive mode ``` -_See code: [src/commands/new/file.ts](https://github.com/asyncapi/cli/blob/v1.1.9/src/commands/new/file.ts)_ +_See code: [src/commands/new/file.ts](https://github.com/asyncapi/cli/blob/v1.1.10/src/commands/new/file.ts)_ ## `asyncapi new glee` @@ -609,7 +609,7 @@ DESCRIPTION Creates a new Glee project ``` -_See code: [src/commands/new/glee.ts](https://github.com/asyncapi/cli/blob/v1.1.9/src/commands/new/glee.ts)_ +_See code: [src/commands/new/glee.ts](https://github.com/asyncapi/cli/blob/v1.1.10/src/commands/new/glee.ts)_ ## `asyncapi new project` @@ -628,7 +628,7 @@ DESCRIPTION Creates a new Glee project ``` -_See code: [src/commands/new/project.ts](https://github.com/asyncapi/cli/blob/v1.1.9/src/commands/new/project.ts)_ +_See code: [src/commands/new/project.ts](https://github.com/asyncapi/cli/blob/v1.1.10/src/commands/new/project.ts)_ ## `asyncapi optimize [SPEC-FILE]` @@ -664,7 +664,7 @@ EXAMPLES $ asyncapi optimize ./asyncapi.yaml --optimization=remove-components,reuse-components,move-to-components --output=terminal --no-tty ``` -_See code: [src/commands/optimize.ts](https://github.com/asyncapi/cli/blob/v1.1.9/src/commands/optimize.ts)_ +_See code: [src/commands/optimize.ts](https://github.com/asyncapi/cli/blob/v1.1.10/src/commands/optimize.ts)_ ## `asyncapi start` @@ -678,7 +678,7 @@ DESCRIPTION Start asyncapi studio ``` -_See code: [src/commands/start/index.ts](https://github.com/asyncapi/cli/blob/v1.1.9/src/commands/start/index.ts)_ +_See code: [src/commands/start/index.ts](https://github.com/asyncapi/cli/blob/v1.1.10/src/commands/start/index.ts)_ ## `asyncapi start studio` @@ -697,7 +697,7 @@ DESCRIPTION starts a new local instance of Studio ``` -_See code: [src/commands/start/studio.ts](https://github.com/asyncapi/cli/blob/v1.1.9/src/commands/start/studio.ts)_ +_See code: [src/commands/start/studio.ts](https://github.com/asyncapi/cli/blob/v1.1.10/src/commands/start/studio.ts)_ ## `asyncapi validate [SPEC-FILE]` @@ -724,5 +724,5 @@ DESCRIPTION validate asyncapi file ``` -_See code: [src/commands/validate.ts](https://github.com/asyncapi/cli/blob/v1.1.9/src/commands/validate.ts)_ +_See code: [src/commands/validate.ts](https://github.com/asyncapi/cli/blob/v1.1.10/src/commands/validate.ts)_ From c3d5b97c114daad5ee5bc4bc03f87c7f0a95f1b1 Mon Sep 17 00:00:00 2001 From: asyncapi-bot Date: Wed, 29 Nov 2023 23:55:52 +0100 Subject: [PATCH 115/134] docs(cli): update latest cli documentation (#2371) --- pages/docs/tools/cli/usage.md | 50 +++++++++++++++++------------------ 1 file changed, 25 insertions(+), 25 deletions(-) diff --git a/pages/docs/tools/cli/usage.md b/pages/docs/tools/cli/usage.md index d1d76fed810..d787c54a25e 100644 --- a/pages/docs/tools/cli/usage.md +++ b/pages/docs/tools/cli/usage.md @@ -29,7 +29,7 @@ $ npm install -g @asyncapi/cli $ asyncapi COMMAND running command... $ asyncapi (--version) -@asyncapi/cli/1.1.10 linux-x64 node-v18.18.2 +@asyncapi/cli/1.1.11 linux-x64 node-v18.18.2 $ asyncapi --help [COMMAND] USAGE $ asyncapi COMMAND @@ -93,7 +93,7 @@ EXAMPLES $ asyncapi bundle ./asyncapi.yaml ./features.yaml --base ./asyncapi.yaml --reference-into-components ``` -_See code: [src/commands/bundle.ts](https://github.com/asyncapi/cli/blob/v1.1.10/src/commands/bundle.ts)_ +_See code: [src/commands/bundle.ts](https://github.com/asyncapi/cli/blob/v1.1.11/src/commands/bundle.ts)_ ## `asyncapi config` @@ -107,7 +107,7 @@ DESCRIPTION CLI config settings ``` -_See code: [src/commands/config/index.ts](https://github.com/asyncapi/cli/blob/v1.1.10/src/commands/config/index.ts)_ +_See code: [src/commands/config/index.ts](https://github.com/asyncapi/cli/blob/v1.1.11/src/commands/config/index.ts)_ ## `asyncapi config context` @@ -121,7 +121,7 @@ DESCRIPTION Manage short aliases for full paths to AsyncAPI documents ``` -_See code: [src/commands/config/context/index.ts](https://github.com/asyncapi/cli/blob/v1.1.10/src/commands/config/context/index.ts)_ +_See code: [src/commands/config/context/index.ts](https://github.com/asyncapi/cli/blob/v1.1.11/src/commands/config/context/index.ts)_ ## `asyncapi config context add CONTEXT-NAME SPEC-FILE-PATH` @@ -143,7 +143,7 @@ DESCRIPTION Add a context to the store ``` -_See code: [src/commands/config/context/add.ts](https://github.com/asyncapi/cli/blob/v1.1.10/src/commands/config/context/add.ts)_ +_See code: [src/commands/config/context/add.ts](https://github.com/asyncapi/cli/blob/v1.1.11/src/commands/config/context/add.ts)_ ## `asyncapi config context current` @@ -160,7 +160,7 @@ DESCRIPTION Shows the current context that is being used ``` -_See code: [src/commands/config/context/current.ts](https://github.com/asyncapi/cli/blob/v1.1.10/src/commands/config/context/current.ts)_ +_See code: [src/commands/config/context/current.ts](https://github.com/asyncapi/cli/blob/v1.1.11/src/commands/config/context/current.ts)_ ## `asyncapi config context edit CONTEXT-NAME NEW-SPEC-FILE-PATH` @@ -181,7 +181,7 @@ DESCRIPTION Edit a context in the store ``` -_See code: [src/commands/config/context/edit.ts](https://github.com/asyncapi/cli/blob/v1.1.10/src/commands/config/context/edit.ts)_ +_See code: [src/commands/config/context/edit.ts](https://github.com/asyncapi/cli/blob/v1.1.11/src/commands/config/context/edit.ts)_ ## `asyncapi config context init [CONTEXT-FILE-PATH]` @@ -204,7 +204,7 @@ DESCRIPTION Initialize context ``` -_See code: [src/commands/config/context/init.ts](https://github.com/asyncapi/cli/blob/v1.1.10/src/commands/config/context/init.ts)_ +_See code: [src/commands/config/context/init.ts](https://github.com/asyncapi/cli/blob/v1.1.11/src/commands/config/context/init.ts)_ ## `asyncapi config context list` @@ -221,7 +221,7 @@ DESCRIPTION List all the stored contexts in the store ``` -_See code: [src/commands/config/context/list.ts](https://github.com/asyncapi/cli/blob/v1.1.10/src/commands/config/context/list.ts)_ +_See code: [src/commands/config/context/list.ts](https://github.com/asyncapi/cli/blob/v1.1.11/src/commands/config/context/list.ts)_ ## `asyncapi config context remove CONTEXT-NAME` @@ -241,7 +241,7 @@ DESCRIPTION Delete a context from the store ``` -_See code: [src/commands/config/context/remove.ts](https://github.com/asyncapi/cli/blob/v1.1.10/src/commands/config/context/remove.ts)_ +_See code: [src/commands/config/context/remove.ts](https://github.com/asyncapi/cli/blob/v1.1.11/src/commands/config/context/remove.ts)_ ## `asyncapi config context use CONTEXT-NAME` @@ -261,7 +261,7 @@ DESCRIPTION Set a context as current ``` -_See code: [src/commands/config/context/use.ts](https://github.com/asyncapi/cli/blob/v1.1.10/src/commands/config/context/use.ts)_ +_See code: [src/commands/config/context/use.ts](https://github.com/asyncapi/cli/blob/v1.1.11/src/commands/config/context/use.ts)_ ## `asyncapi config versions` @@ -278,7 +278,7 @@ DESCRIPTION Show versions of AsyncAPI tools used ``` -_See code: [src/commands/config/versions.ts](https://github.com/asyncapi/cli/blob/v1.1.10/src/commands/config/versions.ts)_ +_See code: [src/commands/config/versions.ts](https://github.com/asyncapi/cli/blob/v1.1.11/src/commands/config/versions.ts)_ ## `asyncapi convert [SPEC-FILE]` @@ -300,7 +300,7 @@ DESCRIPTION Convert asyncapi documents older to newer versions ``` -_See code: [src/commands/convert.ts](https://github.com/asyncapi/cli/blob/v1.1.10/src/commands/convert.ts)_ +_See code: [src/commands/convert.ts](https://github.com/asyncapi/cli/blob/v1.1.11/src/commands/convert.ts)_ ## `asyncapi diff OLD NEW` @@ -355,7 +355,7 @@ DESCRIPTION Find diff between two asyncapi files ``` -_See code: [src/commands/diff.ts](https://github.com/asyncapi/cli/blob/v1.1.10/src/commands/diff.ts)_ +_See code: [src/commands/diff.ts](https://github.com/asyncapi/cli/blob/v1.1.11/src/commands/diff.ts)_ ## `asyncapi generate` @@ -369,7 +369,7 @@ DESCRIPTION Generate typed models or other things like clients, applications or docs using AsyncAPI Generator templates. ``` -_See code: [src/commands/generate/index.ts](https://github.com/asyncapi/cli/blob/v1.1.10/src/commands/generate/index.ts)_ +_See code: [src/commands/generate/index.ts](https://github.com/asyncapi/cli/blob/v1.1.11/src/commands/generate/index.ts)_ ## `asyncapi generate fromTemplate ASYNCAPI TEMPLATE` @@ -406,7 +406,7 @@ EXAMPLES $ asyncapi generate fromTemplate asyncapi.yaml @asyncapi/html-template --param version=1.0.0 singleFile=true --output ./docs --force-write ``` -_See code: [src/commands/generate/fromTemplate.ts](https://github.com/asyncapi/cli/blob/v1.1.10/src/commands/generate/fromTemplate.ts)_ +_See code: [src/commands/generate/fromTemplate.ts](https://github.com/asyncapi/cli/blob/v1.1.11/src/commands/generate/fromTemplate.ts)_ ## `asyncapi generate models LANGUAGE FILE` @@ -480,7 +480,7 @@ DESCRIPTION Generates typed models ``` -_See code: [src/commands/generate/models.ts](https://github.com/asyncapi/cli/blob/v1.1.10/src/commands/generate/models.ts)_ +_See code: [src/commands/generate/models.ts](https://github.com/asyncapi/cli/blob/v1.1.11/src/commands/generate/models.ts)_ ## `asyncapi new` @@ -535,7 +535,7 @@ EXAMPLES $ asyncapi new --file-name=my-asyncapi.yml --example=default-example.yml --no-tty - create a new file with a specific name, using one of the examples and without interactive mode ``` -_See code: [src/commands/new/index.ts](https://github.com/asyncapi/cli/blob/v1.1.10/src/commands/new/index.ts)_ +_See code: [src/commands/new/index.ts](https://github.com/asyncapi/cli/blob/v1.1.11/src/commands/new/index.ts)_ ## `asyncapi new file` @@ -590,7 +590,7 @@ EXAMPLES $ asyncapi new --file-name=my-asyncapi.yml --example=default-example.yml --no-tty - create a new file with a specific name, using one of the examples and without interactive mode ``` -_See code: [src/commands/new/file.ts](https://github.com/asyncapi/cli/blob/v1.1.10/src/commands/new/file.ts)_ +_See code: [src/commands/new/file.ts](https://github.com/asyncapi/cli/blob/v1.1.11/src/commands/new/file.ts)_ ## `asyncapi new glee` @@ -609,7 +609,7 @@ DESCRIPTION Creates a new Glee project ``` -_See code: [src/commands/new/glee.ts](https://github.com/asyncapi/cli/blob/v1.1.10/src/commands/new/glee.ts)_ +_See code: [src/commands/new/glee.ts](https://github.com/asyncapi/cli/blob/v1.1.11/src/commands/new/glee.ts)_ ## `asyncapi new project` @@ -628,7 +628,7 @@ DESCRIPTION Creates a new Glee project ``` -_See code: [src/commands/new/project.ts](https://github.com/asyncapi/cli/blob/v1.1.10/src/commands/new/project.ts)_ +_See code: [src/commands/new/project.ts](https://github.com/asyncapi/cli/blob/v1.1.11/src/commands/new/project.ts)_ ## `asyncapi optimize [SPEC-FILE]` @@ -664,7 +664,7 @@ EXAMPLES $ asyncapi optimize ./asyncapi.yaml --optimization=remove-components,reuse-components,move-to-components --output=terminal --no-tty ``` -_See code: [src/commands/optimize.ts](https://github.com/asyncapi/cli/blob/v1.1.10/src/commands/optimize.ts)_ +_See code: [src/commands/optimize.ts](https://github.com/asyncapi/cli/blob/v1.1.11/src/commands/optimize.ts)_ ## `asyncapi start` @@ -678,7 +678,7 @@ DESCRIPTION Start asyncapi studio ``` -_See code: [src/commands/start/index.ts](https://github.com/asyncapi/cli/blob/v1.1.10/src/commands/start/index.ts)_ +_See code: [src/commands/start/index.ts](https://github.com/asyncapi/cli/blob/v1.1.11/src/commands/start/index.ts)_ ## `asyncapi start studio` @@ -697,7 +697,7 @@ DESCRIPTION starts a new local instance of Studio ``` -_See code: [src/commands/start/studio.ts](https://github.com/asyncapi/cli/blob/v1.1.10/src/commands/start/studio.ts)_ +_See code: [src/commands/start/studio.ts](https://github.com/asyncapi/cli/blob/v1.1.11/src/commands/start/studio.ts)_ ## `asyncapi validate [SPEC-FILE]` @@ -724,5 +724,5 @@ DESCRIPTION validate asyncapi file ``` -_See code: [src/commands/validate.ts](https://github.com/asyncapi/cli/blob/v1.1.10/src/commands/validate.ts)_ +_See code: [src/commands/validate.ts](https://github.com/asyncapi/cli/blob/v1.1.11/src/commands/validate.ts)_ From f8df4a2585224d00919cc43c1080bef51a51f222 Mon Sep 17 00:00:00 2001 From: asyncapi-bot Date: Thu, 30 Nov 2023 15:15:05 +0100 Subject: [PATCH 116/134] docs(community): update latest maintainers list (#2372) --- config/MAINTAINERS.json | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/config/MAINTAINERS.json b/config/MAINTAINERS.json index 672d3db2e88..6acfc95602f 100644 --- a/config/MAINTAINERS.json +++ b/config/MAINTAINERS.json @@ -338,6 +338,18 @@ "jasyncapi-idea-plugin" ] }, + { + "name": "Prince Rajpoot", + "github": "princerajpoot20", + "linkedin": "princerajpoot", + "slack": "U04STTQHV18", + "twitter": "iamPrince_2003", + "availableForHire": true, + "isTscMember": true, + "repos": [ + "studio" + ] + }, { "name": "Richard Coppen", "github": "rcoppen", From 10902e52fee7e6de670bccb7d3d099c80006f4a7 Mon Sep 17 00:00:00 2001 From: asyncapi-bot Date: Tue, 5 Dec 2023 10:32:30 +0100 Subject: [PATCH 117/134] docs(spec): v3.0.0 release (#2394) --- .../{v3.0.0-next-major-spec.17.md => v3.0.0.md} | 14 +++++++------- public/_redirects | 4 ++-- 2 files changed, 9 insertions(+), 9 deletions(-) rename pages/docs/reference/specification/{v3.0.0-next-major-spec.17.md => v3.0.0.md} (98%) diff --git a/pages/docs/reference/specification/v3.0.0-next-major-spec.17.md b/pages/docs/reference/specification/v3.0.0.md similarity index 98% rename from pages/docs/reference/specification/v3.0.0-next-major-spec.17.md rename to pages/docs/reference/specification/v3.0.0.md index 33945c3b5ae..231a2732b33 100644 --- a/pages/docs/reference/specification/v3.0.0-next-major-spec.17.md +++ b/pages/docs/reference/specification/v3.0.0.md @@ -1,7 +1,3 @@ -# ATTENTION: Work in progress - -This version is not yet ready to be used. We're currently working on it. If you want to join the effort and participate in the development of the next major version of AsyncAPI, head over to [GitHub Issue that we use for tracking 3.0 development progress](https://github.com/asyncapi/spec/issues/691). - # AsyncAPI Specification #### Attribution @@ -80,13 +76,13 @@ A sender is a type of application, that is sending [messages](#definitionsMessag A receiver is a type of application that is receiving [messages](#definitionsMessage) from [channels](#definitionsChannel). A receiver MAY receive from multiple channels depending on the [server](#definitionsServer), protocol, and the use-case pattern. A receiver MAY forward a received message further without changing it. A receiver MAY act as a consumer and react to the message. A receiver MAY act as a processor that, for example, aggregates multiple messages in one and forwards them. ### Message -A message is the mechanism by which information is exchanged via a channel between [servers](#definitionsServer) and applications. A message MUST contain a payload and MAY also contain headers. The headers MAY be subdivided into [protocol](#definitionsProtocol)-defined headers and header properties defined by the application which can act as supporting metadata. The payload contains the data, defined by the application, which MUST be serialized into a format (JSON, XML, Avro, binary, etc.). Since a message is a generic mechanism, it can support multiple interaction patterns such as event, command, request, or response. +A message is the mechanism by which information is exchanged via a channel between [servers](#definitionsServer) and applications. A message MAY contain a payload and MAY also contain headers. The headers MAY be subdivided into [protocol](#definitionsProtocol)-defined headers and header properties defined by the application which can act as supporting metadata. The payload contains the data, defined by the application, which MUST be serialized into a format (JSON, XML, Avro, binary, etc.). Since a message is a generic mechanism, it can support multiple interaction patterns such as event, command, request, or response. ### Channel A channel is an addressable component, made available by the [server](#definitionsServer), for the organization of [messages](#definitionsMessage). [Sender](#definitionsSender) applications send messages to channels and [receiver](#definitionsReceiver) applications receive messages from channels. [Servers](#definitionsServer) MAY support many channel instances, allowing messages with different content to be addressed to different channels. Depending on the [server](#definitionsServer) implementation, the channel MAY be included in the message via protocol-defined headers. ### Protocol -A protocol is the mechanism (wireline protocol or API) by which [messages](#definitionsMessage) are exchanged between the application and the [channel](#definitionsChannel). Example protocols include, but are not limited to, AMQP, HTTP, JMS, Kafka, Anypoint MQ, MQTT, Solace, STOMP, Mercure, WebSocket. +A protocol is the mechanism (wireline protocol or API) by which [messages](#definitionsMessage) are exchanged between the application and the [channel](#definitionsChannel). Example protocols include, but are not limited to, AMQP, HTTP, JMS, Kafka, Anypoint MQ, MQTT, Solace, STOMP, Mercure, WebSocket, Google Pub/Sub, Pulsar. ### Bindings A "binding" (or "protocol binding") is a mechanism to define protocol-specific information. Therefore, a protocol binding MUST define protocol-specific information only. @@ -1060,6 +1056,7 @@ Field Name | Type | Description `mercure` | [Mercure Server Binding](https://github.com/asyncapi/bindings/blob/master/mercure#server) | Protocol-specific information for a Mercure server. `ibmmq` | [IBM MQ Server Binding](https://github.com/asyncapi/bindings/blob/master/ibmmq#server-binding-object) | Protocol-specific information for an IBM MQ server. `googlepubsub` | [Google Cloud Pub/Sub Server Binding](https://github.com/asyncapi/bindings/blob/master/googlepubsub#server) | Protocol-specific information for a Google Cloud Pub/Sub server. +`pulsar` | [Pulsar Server Binding](https://github.com/asyncapi/bindings/tree/master/pulsar#server-binding-object) | Protocol-specific information for a Pulsar server. This object MAY be extended with [Specification Extensions](#specificationExtensions). @@ -1091,6 +1088,7 @@ Field Name | Type | Description `mercure` | [Mercure Channel Binding](https://github.com/asyncapi/bindings/blob/master/mercure#channel) | Protocol-specific information for a Mercure channel. `ibmmq` | [IBM MQ Channel Binding](https://github.com/asyncapi/bindings/tree/master/ibmmq#channel-binding-object) | Protocol-specific information for an IBM MQ channel. `googlepubsub` | [Google Cloud Pub/Sub Channel Binding](https://github.com/asyncapi/bindings/tree/master/googlepubsub#channel) | Protocol-specific information for a Google Cloud Pub/Sub channel. +`pulsar` | [Pulsar Channel Binding](https://github.com/asyncapi/bindings/tree/master/pulsar#channel-binding-object) | Protocol-specific information for a Pulsar channel. This object MAY be extended with [Specification Extensions](#specificationExtensions). @@ -1122,6 +1120,7 @@ Field Name | Type | Description `mercure` | [Mercure Operation Binding](https://github.com/asyncapi/bindings/blob/master/mercure#operation) | Protocol-specific information for a Mercure operation. `googlepubsub` | [Google Cloud Pub/Sub Operation Binding](https://github.com/asyncapi/bindings/blob/master/googlepubsub#operation) | Protocol-specific information for a Google Cloud Pub/Sub operation. `ibmmq` | [IBM MQ Operation Binding](https://github.com/asyncapi/bindings/blob/master/ibmmq#operation-binding-object) | Protocol-specific information for an IBM MQ operation. +`pulsar` | [Pulsar Operation Binding](https://github.com/asyncapi/bindings/tree/master/pulsar#operation-binding-fields) | Protocol-specific information for a Pulsar operation. This object MAY be extended with [Specification Extensions](#specificationExtensions). @@ -1154,6 +1153,7 @@ Field Name | Type | Description `mercure` | [Mercure Message Binding](https://github.com/asyncapi/bindings/blob/master/mercure#message) | Protocol-specific information for a Mercure message. `ibmmq` | [IBM MQ Message Binding](https://github.com/asyncapi/bindings/tree/master/ibmmq#message-binding-object) | Protocol-specific information for an IBM MQ message. `googlepubsub` | [Google Cloud Pub/Sub Message Binding](https://github.com/asyncapi/bindings/tree/master/googlepubsub#message) | Protocol-specific information for a Google Cloud Pub/Sub message. +`pulsar` | [Pulsar Message Binding](https://github.com/asyncapi/bindings/tree/master/pulsar#message-binding-fields) | Protocol-specific information for a Pulsar message. This object MAY be extended with [Specification Extensions](#specificationExtensions). @@ -1887,7 +1887,7 @@ While composition offers model extensibility, it does not imply a hierarchy betw To support polymorphism, AsyncAPI Specification adds the support of the `discriminator` field. When used, the `discriminator` will be the name of the property used to decide which schema definition is used to validate the structure of the model. As such, the `discriminator` field MUST be a required field. -There are are two ways to define the value of a discriminator for an inheriting instance. +There are two ways to define the value of a discriminator for an inheriting instance. - Use the schema's name. - Override the schema's name by overriding the property with a new value. If exists, this takes precedence over the schema's name. diff --git a/public/_redirects b/public/_redirects index bacdccdd979..daa08965baf 100644 --- a/public/_redirects +++ b/public/_redirects @@ -19,11 +19,11 @@ https://www.asyncapi.io/* https://www.asyncapi.com/:splat 301! # Redirection will be handled automatically by Action. # LATEST-SPEC-REDIRECTION:START -/docs/reference/specification/latest /docs/reference/specification/v2.6.0 302! +/docs/reference/specification/latest /docs/reference/specification/v3.0.0 302! # LATEST-SPEC-REDIRECTION:END # SPEC-REDIRECTION:START -/docs/reference/specification/3.0.0-next-major-spec.17 /docs/reference/specification/v3.0.0-next-major-spec.17 302! +/docs/reference/specification/3.0.0 /docs/reference/specification/v3.0.0 302! /docs/reference/specification/2.6.0 /docs/reference/specification/v2.6.0 302! /docs/reference/specification/2.5.0 /docs/reference/specification/v2.5.0 302! /docs/reference/specification/2.4.0 /docs/reference/specification/v2.4.0 302! From 7417a7b3c75289bb7ecac485957d47e78b097b48 Mon Sep 17 00:00:00 2001 From: Jonas Lagoni Date: Mon, 4 Dec 2023 23:40:02 -1000 Subject: [PATCH 118/134] chore: release v3 (#1851) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: Rohit <108233235+TRohit20@users.noreply.github.com> Co-authored-by: Al Amin Muhammad <82694244+alaminthespecial@users.noreply.github.com> Co-authored-by: Afzal Ansari Co-authored-by: Alejandra Quetzalli Co-authored-by: Fran Méndez Co-authored-by: Animesh Kumar Co-authored-by: Lukasz Gornicki Co-authored-by: Mahfuza Humayra Mohona --- README.md | 1 - components/Asyncapi3Comparison.js | 501 ++++ components/DemoAnimation.js | 38 +- components/GeneratorInstallation.js | 14 +- components/OpenAPIComparisonV3.js | 226 ++ components/campaigns/AnnoucementHero.js | 91 +- components/campaigns/Banner.js | 29 +- components/data/buckets.js | 14 +- components/icons/Migration.js | 15 + components/icons/Users.js | 18 +- components/navigation/NavBar.js | 4 +- components/navigation/learningItems.js | 2 + cypress/test/Asyncapi3Comparison.cy.js | 40 + pages/blog/release-notes-3.0.0.md | 362 +++ pages/docs/community/_section.md | 4 +- pages/docs/concepts/application.md | 4 - .../concepts/asyncapi-document/_section.md | 4 + .../asyncapi-document/adding-bindings.md | 158 + .../concepts/asyncapi-document/reply-info.md | 141 + .../asyncapi-document/server-security.md | 115 + .../concepts/asyncapi-document/structure.md | 581 ++++ pages/docs/concepts/asyncapi-document/tags.md | 335 +++ pages/docs/guides/message-validation.md | 19 +- pages/docs/guides/validate.md | 45 +- pages/docs/migration/_section.md | 4 + pages/docs/migration/index.md | 15 + pages/docs/migration/migrating-to-v3.md | 443 +++ pages/docs/reference/specification/v2.0.0.md | 2205 -------------- pages/docs/reference/specification/v2.1.0.md | 2336 --------------- pages/docs/reference/specification/v2.2.0.md | 2432 ---------------- pages/docs/reference/specification/v2.3.0.md | 2453 ---------------- pages/docs/reference/specification/v2.4.0.md | 2510 ---------------- pages/docs/reference/specification/v2.5.0.md | 2543 ----------------- pages/docs/reference/specification/v2.6.0.md | 2497 ---------------- pages/docs/reference/specification/v2.x.md | 1 + pages/docs/reference/specification/v3.0.0.md | 1 - .../tutorials/create-asyncapi-document.md | 101 +- pages/docs/tutorials/generate-code.md | 60 +- .../getting-started/asyncapi-documents.md | 28 +- .../getting-started/coming-from-openapi.md | 24 +- .../tutorials/getting-started/hello-world.md | 105 +- .../getting-started/request-reply.md | 141 + .../tutorials/getting-started/security.md | 107 +- .../docs/tutorials/getting-started/servers.md | 28 +- pages/docs/tutorials/message-validation.md | 203 +- .../tutorials/streetlights-interactive.md | 12 +- .../tutorials/studio-document-validation.md | 85 +- pages/tools/cli.js | 1 - pages/tools/github-actions.js | 4 +- pages/tools/parsers.js | 46 +- public/_redirects | 31 +- .../img/posts/release-notes-3.0.0/cover.webp | Bin 0 -> 7006 bytes public/robots.txt | 2 +- 53 files changed, 3711 insertions(+), 17468 deletions(-) create mode 100644 components/Asyncapi3Comparison.js create mode 100644 components/OpenAPIComparisonV3.js create mode 100644 components/icons/Migration.js create mode 100644 cypress/test/Asyncapi3Comparison.cy.js create mode 100644 pages/blog/release-notes-3.0.0.md create mode 100644 pages/docs/concepts/asyncapi-document/_section.md create mode 100644 pages/docs/concepts/asyncapi-document/adding-bindings.md create mode 100644 pages/docs/concepts/asyncapi-document/reply-info.md create mode 100644 pages/docs/concepts/asyncapi-document/server-security.md create mode 100644 pages/docs/concepts/asyncapi-document/structure.md create mode 100644 pages/docs/concepts/asyncapi-document/tags.md create mode 100644 pages/docs/migration/_section.md create mode 100644 pages/docs/migration/index.md create mode 100644 pages/docs/migration/migrating-to-v3.md delete mode 100644 pages/docs/reference/specification/v2.0.0.md delete mode 100644 pages/docs/reference/specification/v2.1.0.md delete mode 100644 pages/docs/reference/specification/v2.2.0.md delete mode 100644 pages/docs/reference/specification/v2.3.0.md delete mode 100644 pages/docs/reference/specification/v2.4.0.md delete mode 100644 pages/docs/reference/specification/v2.5.0.md delete mode 100644 pages/docs/reference/specification/v2.6.0.md create mode 100644 pages/docs/reference/specification/v2.x.md create mode 100644 pages/docs/tutorials/getting-started/request-reply.md create mode 100644 public/img/posts/release-notes-3.0.0/cover.webp diff --git a/README.md b/README.md index a2a34293925..c9eb0a45478 100644 --- a/README.md +++ b/README.md @@ -36,7 +36,6 @@ Use the following tools to set up the project: - [Node.js](https://nodejs.org/) v16.0.0+ - [npm](https://www.npmjs.com/) v7.10.0+ - ## Run locally 1. Fork the repository by clicking on `Fork` option on top right of the main repository. diff --git a/components/Asyncapi3Comparison.js b/components/Asyncapi3Comparison.js new file mode 100644 index 00000000000..cc9c273b396 --- /dev/null +++ b/components/Asyncapi3Comparison.js @@ -0,0 +1,501 @@ +import React, { useState } from 'react'; + +/** + * Used to compare how channels, operations and messages have changed + */ +export function Asyncapi3ChannelComparison({ className = '' }) { + const [hoverState, setHoverState] = useState({ + Paths: false, + PathItem: false, + Operation: false, + Message: false, + }); + + return ( +
+
+

AsyncAPI 2.x

+ +
+
setHoverState(prevState => ({ ...prevState, Paths: true }))} onMouseLeave={() => setHoverState({ Paths: false })}> + Channels + +
+
setHoverState(prevState => ({ ...prevState, PathItem: true }))} onMouseLeave={() => setHoverState({ PathItem: false })}> + Channel Item + +
+
setHoverState(prevState => ({ ...prevState, Operation: true }))} onMouseLeave={() => setHoverState({ Operation: false })}> + Operation (Publish and Subscribe) + +
+
+
setHoverState(prevState => ({ ...prevState, Message: true }))} onMouseLeave={() => setHoverState({ Message: false })}> + Messages +
+ Message + +
+ Headers +
+
+ Payload +
+
+
+
+
+
+
+
+
+
+
+
+
+

AsyncAPI 3.0

+ +
+
setHoverState(prevState => ({ ...prevState, Paths: true }))} onMouseLeave={() => setHoverState({ Paths: false })}> + Channels + +
setHoverState(prevState => ({ ...prevState, PathItem: true }))} onMouseLeave={() => setHoverState({ PathItem: false })}> + Channel +
+
setHoverState(prevState => ({ ...prevState, Message: true }))} onMouseLeave={() => setHoverState({ Message: false })}> + Messages +
+ Message + +
+ Headers +
+
+ Payload +
+
+
+
+
+
+
setHoverState(prevState => ({ ...prevState, Operation: true }))} onMouseLeave={() => setHoverState({ Operation: false })}> + Operations +
+
+ Operation +
+
+ action (send or receive) +
+
+ channel +
+
+ messages +
+
+
+
+
+
+
+
+ ) +} + +/** + * Shows the comparison between v2 and v3 for the channel IDs and channel address + */ +export function Asyncapi3IdAndAddressComparison({ className = '' }) { + const [hoverState, setHoverState] = useState({ + Paths: false, + PathItem: false, + }); + + return ( +
+
+

AsyncAPI 2.x

+ +
+
setHoverState(prevState => ({ ...prevState, Paths: true }))} onMouseLeave={() => setHoverState({ Paths: false })}> + Channels +
setHoverState(prevState => ({ ...prevState, PathItem: true }))} onMouseLeave={() => setHoverState({ PathItem: false })}> + Channel Item +
+
+
+
+
+

AsyncAPI 3.0

+ +
+
setHoverState(prevState => ({ ...prevState, Paths: true }))} onMouseLeave={() => setHoverState({ Paths: false })}> + Channels + +
setHoverState(prevState => ({ ...prevState, PathItem: true }))} onMouseLeave={() => setHoverState({ PathItem: false })}> + Channel + +
+
+ address +
+
+
+
+
+
+
+ ) +} + +/** + * Compares how the server object changes from v2 to v3. + */ +export function Asyncapi3ServerComparison({ className = '' }) { + const [hoverState, setHoverState] = useState({ + Host: false, + path: false, + Servers: false, + }); + + return ( +
+
+

AsyncAPI 2.x

+ +
+
+ Servers +
+
+ Server +
+
setHoverState(prevState => ({ ...prevState, Host: true, Path: true }))} onMouseLeave={() => setHoverState({ Host: false, Path: false })}> +

Url

+
+
+
+
+
+
+
+
+

AsyncAPI 3.0

+ +
+
+ Servers +
+
+ Server +
+
setHoverState(prevState => ({ ...prevState, Host: true }))} onMouseLeave={() => setHoverState({ Host: false })}> +

Host

+
+
setHoverState(prevState => ({ ...prevState, Path: true }))} onMouseLeave={() => setHoverState({ Path: false })}> +

Pathname

+
+
+
+
+
+
+
+
+ ) +} + +/** + * Compare how the meta data moved place between v2 and v3 + */ +export function Asyncapi3MetaComparison({ className = '' }) { + const [hoverState, setHoverState] = useState({ + Info: false, + Tags: false, + External: false + }); + + return ( +
+
+

AsyncAPI 2.x

+ +
+
setHoverState(prevState => ({ ...prevState, Info: true }))} onMouseLeave={() => setHoverState({ Info: false })}> + Info +
+
+
setHoverState(prevState => ({ ...prevState, Tags: true }))} onMouseLeave={() => setHoverState({ Tags: false })}> +

Tags

+
+
setHoverState(prevState => ({ ...prevState, External: true }))} onMouseLeave={() => setHoverState({ External: false })}> +

External Docs

+
+
+
+
+
+

AsyncAPI 3.0

+ +
+
setHoverState(prevState => ({ ...prevState, Info: true }))} onMouseLeave={() => setHoverState({ Info: false })}> + Info +
+
setHoverState(prevState => ({ ...prevState, Tags: true }))} onMouseLeave={() => setHoverState({ Tags: false })}> +

Tags

+
+
setHoverState(prevState => ({ ...prevState, External: true }))} onMouseLeave={() => setHoverState({ External: false })}> +

External Docs

+
+
+
+
+
+
+ ) +} + +/** + * Compares how operations changed from v2 to v3 + */ +export function Asyncapi3OperationComparison({ className = '' }) { + return ( +
+
+

AsyncAPI 2.x

+ +
+
+ Channels + +
+
+ Channel Item + +
+
+ Operation (Publish and Subscribe) +
+
+
+
+
+
+
+
+

AsyncAPI 3.0

+ +
+
+ Operations +
+
+ Operation + +
+
+ action (send or receive) +
+
+
+
+
+
+
+
+ ) +} + +/** + * Compares how the schema and schemaFormat changed location from v2 to v3 + */ +export function Asyncapi3SchemaFormatComparison({ className = '' }) { + const [hoverState, setHoverState] = useState({ + SchemaFormat: false, + Payload: false, + Schema: false + }); + + return ( +
+
+

AsyncAPI 2.x

+ +
+
+ components | channels + +
+
+ messages + +
+
+ message +
+
setHoverState(prevState => ({ ...prevState, SchemaFormat: true }))} onMouseLeave={() => setHoverState({ SchemaFormat: false })}> + schemaFormat +
+ +
setHoverState(prevState => ({ ...prevState, Payload: true }))} onMouseLeave={() => setHoverState({ Payload: false })}> + payload +
+
setHoverState(prevState => ({ ...prevState, Schema: true }))} onMouseLeave={() => setHoverState({ Schema: false })}> + schema +
+
+
+
+
+
+
+
+
+
+
+
+

AsyncAPI 3.0

+ +
+
+ components | channels + +
+
+ messages + +
+
+ message +
+
setHoverState(prevState => ({ ...prevState, Payload: true }))} onMouseLeave={() => setHoverState({ Payload: false })}> + payload + +
+
setHoverState(prevState => ({ ...prevState, SchemaFormat: true }))} onMouseLeave={() => setHoverState({ SchemaFormat: false })}> + schemaFormat +
+
setHoverState(prevState => ({ ...prevState, Schema: true }))} onMouseLeave={() => setHoverState({ Schema: false })}> + schema +
+
+
+
+
+
+
+
+
+
+
+
+ ) +} + +/** + * Compares how the parameter object changed location from v2 to v3 + */ +export function Asyncapi3ParameterComparison({ className = '' }) { + const [hoverState, setHoverState] = useState({ + location: false, + description: false, + enum: false, + examples: false, + default: false + }); + + return ( +
+
+

AsyncAPI 2.x

+ +
+
+ components | channels + +
+
+ parameters + +
+
+ parameter +
+
setHoverState(prevState => ({ ...prevState, location: true }))} onMouseLeave={() => setHoverState({ location: false })}> + location +
+
setHoverState(prevState => ({ ...prevState, description: true }))} onMouseLeave={() => setHoverState({ description: false })}> + description +
+ +
+ schema +
+
type
+
setHoverState(prevState => ({ ...prevState, enum: true }))} onMouseLeave={() => setHoverState({ enum: false })}> + enum +
+
setHoverState(prevState => ({ ...prevState, examples: true }))} onMouseLeave={() => setHoverState({ examples: false })}> + examples +
+
setHoverState(prevState => ({ ...prevState, default: true }))} onMouseLeave={() => setHoverState({ default: false })}> + default +
+
setHoverState(prevState => ({ ...prevState, description: true }))} onMouseLeave={() => setHoverState({ description: false })}> + description +
+
pattern
+
multipleOf
+
And all other properties
+
+
+
+
+
+
+
+
+
+
+
+

AsyncAPI 3.0

+ +
+
+ components | channels + +
+
+ parameters + +
+
+ parameter +
+
setHoverState(prevState => ({ ...prevState, location: true }))} onMouseLeave={() => setHoverState({ location: false })}> + location +
+
setHoverState(prevState => ({ ...prevState, description: true }))} onMouseLeave={() => setHoverState({ description: false })}> + description +
+
setHoverState(prevState => ({ ...prevState, enum: true }))} onMouseLeave={() => setHoverState({ enum: false })}> + enum +
+
setHoverState(prevState => ({ ...prevState, examples: true }))} onMouseLeave={() => setHoverState({ examples: false })}> + examples +
+
setHoverState(prevState => ({ ...prevState, default: true }))} onMouseLeave={() => setHoverState({ default: false })}> + default +
+
+
+
+
+
+
+
+
+
+ ) +} diff --git a/components/DemoAnimation.js b/components/DemoAnimation.js index 107e483c6b5..6e302c74d35 100644 --- a/components/DemoAnimation.js +++ b/components/DemoAnimation.js @@ -44,7 +44,7 @@ export default function DemoAnimation({ className = '' }) { const common = ( <>
- asyncapi: 2.6.0 + asyncapi: 3.0.0
info: @@ -85,10 +85,34 @@ export default function DemoAnimation({ className = '' }) { channels:
-   user/signedup: +   userSignedup:
-     subscribe: +     address:'user/signedup' +
+
+     messages: +
+
+       userSignedupMessage: +
+
+         $ref:'#/components/messages/UserSignedUp' +
+
+ operations: +
+
+   processUserSignups: +
+
+     action:'receive' +
+
+     channel: +
+
+       $ref: '#/channels/userSignedup'
, @@ -99,12 +123,6 @@ export default function DemoAnimation({ className = '' }) { function renderUntilMessagePayload(callback) { return renderTyping( <> -
-       message: -
-
-         $ref: '#/components/messages/UserSignedUp' -
components:
@@ -242,7 +260,7 @@ export default function DemoAnimation({ className = '' }) {
- SUB user/signedup + RECEIVES user/signedup
diff --git a/components/GeneratorInstallation.js b/components/GeneratorInstallation.js index fec713d96c5..947715aa0a6 100644 --- a/components/GeneratorInstallation.js +++ b/components/GeneratorInstallation.js @@ -27,13 +27,13 @@ export default function GeneratorInstallation({ }) { } function getNpmCode() { - return `npm install -g @asyncapi/generator -ag ${specPath} ${template} ${params}` + return `npm install -g @asyncapi/cli +asyncapi generate fromTemplate ${specPath} ${template} ${params}` } function getDockerCode() { - return `docker run --rm -it -v \${PWD}/example:/app/example \\ -asyncapi/generator ${specPath} ${template} ${params}` + return `docker run --rm -it -v \${PWD}/example:/app/example -v \${PWD}/output:/app/output \\ +asyncapi/cli generate fromTemplate ${specPath} ${template} ${params}` } return ( @@ -56,10 +56,12 @@ asyncapi/generator ${specPath} ${template} ${params}` codeBlocks={[{ language: 'npm', code: getNpmCode(), - }, { + }, + { language: 'Docker', code: getDockerCode(), - }]} + }, + ]} />
) diff --git a/components/OpenAPIComparisonV3.js b/components/OpenAPIComparisonV3.js new file mode 100644 index 00000000000..911776bbc75 --- /dev/null +++ b/components/OpenAPIComparisonV3.js @@ -0,0 +1,226 @@ +import React, { useState } from 'react'; + +export default function OpenAPIComparisonV3({ className = '' }) { + const [hoverState, setHoverState] = useState({ + Info: false, + Servers: false, + Paths: false, + PathItem: true, + Summary: false, + Operations: false, + OperationItem: true, + OperationType: false, + Message: false, + Tags: false, + External: false, + Components: false + }); + + return ( +
+
+

OpenAPI 3.0

+ +
+
setHoverState(prevState => ({ ...prevState, Info: true }))} onMouseLeave={() => setHoverState({ ...hoverState, Info: false })}> + Info +
+
+
setHoverState(prevState => ({ ...prevState, Servers: true }))} onMouseLeave={() => setHoverState({ ...hoverState, Servers: false })}> + Servers +
+
+ Security +
+
+
setHoverState(prevState => ({ ...prevState, Paths: true }))} onMouseLeave={() => setHoverState({ ...hoverState, Paths: false })}> + Paths +
+
{ return setHoverState(prevState => ({ ...prevState, PathItem: true })) }} onMouseLeave={() => { return setHoverState({ ...hoverState, PathItem: false }) }}> + Path Item + +
+
setHoverState(prevState => ({ ...prevState, Summary: true }))} onMouseLeave={() => { return setHoverState({ ...hoverState, Summary: false }) }}> + Summary and description +
+
+
setHoverState(prevState => ({ ...prevState, OperationItem: true }))} onMouseLeave={() => setHoverState({ ...hoverState, OperationItem: false })}> + Operation +
setHoverState(prevState => ({ ...prevState, OperationType: true }))} onMouseLeave={() => setHoverState({ ...hoverState, OperationType: false })}> + GET, PUT, POST, etc. +
+ +
setHoverState(prevState => ({ ...prevState, Message: true }))} onMouseLeave={() => setHoverState({ ...hoverState, Message: false })}> + Request +
+
setHoverState(prevState => ({ ...prevState, Message: true }))} onMouseLeave={() => setHoverState({ ...hoverState, Message: false })}> + Responses +
+ +
+
+
+
+
+
+
+
setHoverState(prevState => ({ ...prevState, Tags: true }))} onMouseLeave={() => setHoverState({ Tags: false })}> +

Tags

+
+
setHoverState(prevState => ({ ...prevState, External: true }))} onMouseLeave={() => setHoverState({ External: false })}> +

External Docs

+
+
+
setHoverState(prevState => ({ ...prevState, Components: true }))} onMouseLeave={() => setHoverState({ Components: false })}> + Components + +
+
+ Definitions +
+
+ Responses +
+
+ Parameters +
+
+ Response Headers +
+
+ Security Definitions +
+
+ Callbacks +
+
+ Links +
+
+
+
+
+ +
+

AsyncAPI 3.0

+ +
+
setHoverState(prevState => ({ ...prevState, Info: true }))} onMouseLeave={() => setHoverState({ Info: false })}> + Info +
+
+
setHoverState(prevState => ({ ...prevState, Servers: true }))} onMouseLeave={() => setHoverState({ Servers: false })}> + Servers (hosts + security) +
+
+
setHoverState(prevState => ({ ...prevState, Paths: true }))} onMouseLeave={() => setHoverState({ Paths: false })}> + Channels + +
+
setHoverState(prevState => ({ ...prevState, PathItem: true }))} onMouseLeave={() => setHoverState({ PathItem: false })}> + Channel + +
+
+
setHoverState(prevState => ({ ...prevState, Summary: true }))} onMouseLeave={() => setHoverState({ Summary: false })} > + Summary, description +
+ + +
+
setHoverState(prevState => ({ ...prevState, Message: true }))} onMouseLeave={() => setHoverState({ Message: false })}> + Messages + +
+ Headers +
+
+ Payload +
+
+
+ + +
+
+
+
+
+
setHoverState(prevState => ({ ...prevState, Operations: true }))} onMouseLeave={() => setHoverState({ Operations: false })}> + Operations +
+
setHoverState(prevState => ({ ...prevState, OperationItem: true }))} onMouseLeave={() => setHoverState({ OperationItem: false })}> + Operation + +
+
setHoverState(prevState => ({ ...prevState, OperationType: true }))} onMouseLeave={() => setHoverState({ OperationType: false })}> + action (send or receive) +
+
{ return setHoverState(prevState => ({ ...prevState, PathItem: true })) }} onMouseLeave={() => { return setHoverState({ ...hoverState, PathItem: false }) }}> + + Channel reference +
+
setHoverState(prevState => ({ ...prevState, Message: true }))} onMouseLeave={() => setHoverState({ ...hoverState, Message: false })}> + Messages reference +
+
+
+
+
+
+
+ Id (application identifier) +
+
+
+
setHoverState(prevState => ({ ...prevState, Tags: true }))} onMouseLeave={() => setHoverState({ Tags: false })}> +

Tags

+
+
setHoverState(prevState => ({ ...prevState, External: true }))} onMouseLeave={() => setHoverState({ External: false })}> +

External Docs

+
+
+
setHoverState(prevState => ({ ...prevState, Components: true }))} onMouseLeave={() => setHoverState({ Components: false })}> + Components + +
+
+ Schemas +
+
+ Messages +
+
+ Security Schemes +
+
+ Parameters +
+
+ Correlation Ids +
+
+ Operation Traits +
+
+ Message Traits +
+
+ Server Bindings +
+
+ Channel Bindings +
+
+ Operation Bindings +
+
+ Message Bindings +
+
+
+
+
+
+ ) +} diff --git a/components/campaigns/AnnoucementHero.js b/components/campaigns/AnnoucementHero.js index ebe404521c6..26e227297ed 100644 --- a/components/campaigns/AnnoucementHero.js +++ b/components/campaigns/AnnoucementHero.js @@ -109,49 +109,50 @@ export default function AnnouncementHero({ className = '', small = false, hideVi }; }, [activeIndex]); - return ( - -
-
- -
-
-
- {banners.map((banner, index) => ( - banner.show && ( - - ) - ))} -
-
- {banners.map((banner, index) => ( -
goToIndex(index)} - /> - ))} -
-
-
- -
-
- - ); + return '' + // return ( + // + //
+ //
+ // + //
+ //
+ //
+ // {banners.map((banner, index) => ( + // banner.show && ( + // + // ) + // ))} + //
+ //
+ // {banners.map((banner, index) => ( + //
goToIndex(index)} + // /> + // ))} + //
+ //
+ //
+ // + //
+ //
+ // + // ); } diff --git a/components/campaigns/Banner.js b/components/campaigns/Banner.js index 28e309ce9ef..4c4e07e7e6c 100644 --- a/components/campaigns/Banner.js +++ b/components/campaigns/Banner.js @@ -12,9 +12,8 @@ export default function Banner({}) { const day = new Date().getUTCDate(); const month = new Date().getUTCMonth(); const year = new Date().getUTCFullYear(); - - // month=10 is November. Show only between 6-30 November. - if (year > 2022 || month !== 10 || day < 6) { + // month=11 is December. Show only between 6-31 December. + if (year > 2023 || month > 11 || day < 6) { return null; } @@ -22,27 +21,27 @@ export default function Banner({}) {
-
+

- AsyncAPI Conference 2022 has ended! ⭐️ - -

-
-
-

- - AsyncAPI Conference 2022 has ended. Good news: you can still watch the recording! ⭐️ + AsyncAPI v3 has landed! ⭐️

diff --git a/components/data/buckets.js b/components/data/buckets.js index a171d271885..8ecab700fa1 100644 --- a/components/data/buckets.js +++ b/components/data/buckets.js @@ -4,6 +4,7 @@ import IconUseCases from '../icons/UseCases' import IconGuide from '../icons/Guide' import IconSpec from '../icons/Spec' import IconUsers from '../icons/Users' +import IconMigration from '../icons/Migration' export const buckets = [ { @@ -51,7 +52,16 @@ export const buckets = [ borderClassName: 'border-yellow-200', Icon: IconSpec, }, - { + { + name: 'migration', + title: 'Migration', + description: 'Our migration guides on how to upgrade to newer AsyncAPI versions.', + link: '/docs/migration', + className: 'bg-blue-400', + borderClassName: 'border-blue-400', + Icon: IconMigration, + }, + { name: 'community', title: 'Community', description: 'Our Community section documents the community guidelines and resources.', @@ -61,7 +71,7 @@ export const buckets = [ Icon: IconUsers, }, ].map(bucket => { - // we need such a mapping for some parts of website, e.g navigation blocks use the `icon` property, not `Icon` etc. + // we need such a mapping for some parts of website, e.g navigation blocks use the `icon` property, not `Icon` etc. return { ...bucket, href: bucket.link, diff --git a/components/icons/Migration.js b/components/icons/Migration.js new file mode 100644 index 00000000000..77180efeba8 --- /dev/null +++ b/components/icons/Migration.js @@ -0,0 +1,15 @@ +export default function IconUsers({ ...rest }) { + // + return ( + + + + ); +} diff --git a/components/icons/Users.js b/components/icons/Users.js index c46a89deb77..9f43fdcb633 100644 --- a/components/icons/Users.js +++ b/components/icons/Users.js @@ -1,14 +1,14 @@ export default function IconUsers({ ...rest }) { return ( - diff --git a/components/navigation/NavBar.js b/components/navigation/NavBar.js index 630e74aadf6..dd9dcbe3574 100644 --- a/components/navigation/NavBar.js +++ b/components/navigation/NavBar.js @@ -104,8 +104,8 @@ export default function NavBar({ return (
- Skip to main content -
+ {/* Skip to main content */} +
{!hideLogo && (
diff --git a/components/navigation/learningItems.js b/components/navigation/learningItems.js index 65ba491f9a9..f04382b44ae 100644 --- a/components/navigation/learningItems.js +++ b/components/navigation/learningItems.js @@ -4,6 +4,7 @@ import IconPlant from '../icons/Plant' import IconGuide from '../icons/Guide' import IconPaper from '../icons/Paper' import IconUsers from '../icons/Users' +import IconMigration from '../icons/Migration' export default [ { href: '/docs/concepts', icon: IconRocket, className: 'bg-secondary-200', title: 'Concepts', description: 'Our Concepts section defines the concepts of AsyncAPI features and capabilities.' }, @@ -11,5 +12,6 @@ export default [ { href: '/docs/tools', icon: IconPlant, className: 'bg-green-200', title: 'Tools', description: 'Our Tools section documents the AsyncAPI tools ecosystem.' }, { href: '/docs/guides', icon: IconGuide, className: 'bg-primary-200', title: 'Guides', description: `Our Guides section teaches AsyncAPI's capabilities at a high level.` }, { href: '/docs/reference', icon: IconPaper, className: 'bg-yellow-200', title: 'Reference', description: `Our Reference section documents the AsyncAPI specification.` }, + { href: '/docs/migration', icon: IconMigration, className: 'bg-blue-400', title: 'Migrations', description: `Our migration guides on how to upgrade to newer AsyncAPI versions.` }, { href: '/docs/community', icon: IconUsers, className: 'bg-red-200', title: 'Community', description: `Our Community section documents the community guidelines and resources.` }, ] diff --git a/cypress/test/Asyncapi3Comparison.cy.js b/cypress/test/Asyncapi3Comparison.cy.js new file mode 100644 index 00000000000..15893bfd5f9 --- /dev/null +++ b/cypress/test/Asyncapi3Comparison.cy.js @@ -0,0 +1,40 @@ +import { mount } from '@cypress/react' +import {Asyncapi3Comparison, Asyncapi3ChannelComparison, Asyncapi3IdAndAddressComparison, Asyncapi3MetaComparison, Asyncapi3OperationComparison, Asyncapi3SchemaFormatComparison, Asyncapi3ServerComparison} from '../../components/Asyncapi3Comparison' + +describe('Asyncapi3Comparison.cy', () => { + describe('Asyncapi3Comparison', () => { + it('renders without errors', () => { + mount(); + }); + }); + describe('Asyncapi3ChannelComparison', () => { + it('renders without errors', () => { + mount(); + }); + }); + describe('Asyncapi3IdAndAddressComparison', () => { + it('renders without errors', () => { + mount(); + }); + }); + describe('Asyncapi3MetaComparison', () => { + it('renders without errors', () => { + mount(); + }); + }); + describe('Asyncapi3OperationComparison', () => { + it('renders without errors', () => { + mount(); + }); + }); + describe('Asyncapi3SchemaFormatComparison', () => { + it('renders without errors', () => { + mount(); + }); + }); + describe('Asyncapi3ServerComparison', () => { + it('renders without errors', () => { + mount(); + }); + }); +}); diff --git a/pages/blog/release-notes-3.0.0.md b/pages/blog/release-notes-3.0.0.md new file mode 100644 index 00000000000..75447e63540 --- /dev/null +++ b/pages/blog/release-notes-3.0.0.md @@ -0,0 +1,362 @@ +--- +title: AsyncAPI 3.0.0 Release Notes +date: 2023-12-05T17:00:00+01:00 +type: Communication +tags: + - Specification + - Release Notes +cover: /img/posts/release-notes-3.0.0/cover.webp +authors: + - name: Jonas Lagoni + photo: /img/avatars/jonaslagoni.webp + link: https://github.com/jonaslagoni +excerpt: 'The release of AsyncAPI v3 is packed with changes such as request/reply, reusable channels, and more!' +featured: true +--- + +The new version of the AsyncAPI specification - 3.0.0 - is now available and is packed with goodies! Some clear up confusion, some add features, and others improve maintainability. + +To make the information as clear as possible, we have split up the information into digestible chunks. + +If you want to get an overview of: +- All the changes done in v3, you are in the right place! +- [Migration guide for all the breaking changes between v2 and v3](/docs/migration/migrating-to-v3) + +## Overview +This post will give you an overview of all the changes done in v3. + +### Operation, channel, and message decoupling + +In v2, it has never been possible to re-use channels, because it was directly coupled with operations of an application. + +In v3, this is now possible, with the mindset that a channel and message should be detached from the operations performed. This means for any message broker, for example, for Kafka, channels now ONLY define topics and the messages it contains. For REST interfaces, it's all the paths and corresponding messages across all request types. For WebSocket, it's all the messages flowing through the WebSocket server. For Socket.Io, it defines all the rooms and messages therein. + +This change makes the channels reusable across multiple AsyncAPI documents. + +``` +asyncapi: 3.0.0 +... +channels: + UserSignup: + address: user/signedup + messages: + UserMessage: + payload: + type: object + properties: + displayName: + type: string + description: Name of the user +operations: + ConsumeUserSignups: + action: receive + channel: + $ref: "#/channels/UserSignup" +``` + +| Issue(s) | PR(s) | Migration Guide | +| ----------- | ----------- | ----------- | +| [#618](https://github.com/asyncapi/spec/issues/618), [#663](https://github.com/asyncapi/spec/issues/663) | [#806](https://github.com/asyncapi/spec/pull/806), [#827](https://github.com/asyncapi/spec/pull/827) | [Operation, channel, and message decoupling](/docs/migration/migrating-to-v3#operation-channel-and-message-decoupling) | + +### Messages instead of message +As you probably noticed above, messages in channels are no longer singular, and with `oneOf`, instead, messages are defined as key/value pairs in the [Messages Object](https://www.asyncapi.com/docs/reference/specification/v3.0.0#messagesObject). This was part of the request-reply feature to enable easier referencing of messages. + +``` +asyncapi: 3.0.0 +... +channels: + UserSignup: + address: user/signedup + messages: + UserMessage: + ... +``` + +| Issue(s) | PR(s) | Migration Guide | +| ----------- | ----------- | ----------- | +| [#94](https://github.com/asyncapi/spec/issues/94) | [#827](https://github.com/asyncapi/spec/pull/827) | [Messages instead of message](/docs/migration/migrating-to-v3#messages-instead-of-message) | + +### Publish and subscribe confusion +In v2, the `publish` and `subscribe` operation keywords have always been confusing. Does it mean my application is published to the channel? Does it mean you publish for me? Who are you in this context? + +In v3, we try to clear this up. You only need to worry about your application's behavior. No more confusion about what and who does what. We achieve this through two new [Operation Object](https://www.asyncapi.com/docs/reference/specification/v3.0.0#operationObject) keywords, `send` and `receive`, i.e. your application either sends or receives something. + +This description, of course, alters slightly based on protocol; for the generic message brokers, you produce or consume messages, but in the abstract AsyncAPI perspective, you still send or receive messages. + +``` +asyncapi: 3.0.0 +... +operations: + SendUserSignedUp: + action: send + ReceiveUserSignedUp: + action: receive +``` + +| Issue(s) | PR(s) | Migration Guide | +| ----------- | ----------- | ----------- | +| [#829](https://github.com/asyncapi/spec/issues/829) | [#847](https://github.com/asyncapi/spec/pull/847) | [Operation keywords](/docs/migration/migrating-to-v3#operation-keywords) | + +### Request/Reply +One of the longest requested features is request and reply... and it's finally here! + +One thorn in the eye of this feature has always been the publish and subscribe confusion, which complicated any efforts to achieve a workable solution. However, we now have a solution with that out of the way. :fire: + +This feature has been designed with the following use cases in mind: + +- Broker-based messaging with well-defined response topic + "correlationId". +- Broker-based messaging with per process individual inbox aka "replyTopic" + "correlationId". +- Broker-based messaging with a temporary reply topic for an individual response. +- WebSocket, which has no topics, where the channel is a TCP connection where messages flow. + +``` +... +action: send | receive +reply: + address: + location: '$message.header#/replyTo' + channel: + $ref: '#/channels/userSignupReply' + messages: + - $ref: '#/components/messages/userSignedUpReply' +``` + +Read more about the [Operation Reply Object here](https://www.asyncapi.com/docs/reference/specification/v3.0.0#operationReplyObject). + +| Issue(s) | PR(s) | +| ----------- | ----------- | +| [#94](https://github.com/asyncapi/spec/issues/94), [#558](https://github.com/asyncapi/spec/issues/558) | [#847](https://github.com/asyncapi/spec/pull/847) | + +### Optional channels +We have seen many use cases where an AsyncAPI document has been used as a form of menu or collection of definitions. To do this in v2 would require a bit of a hack. But in v3, channels are now entirely optional. This means that it's now possible to have a valid AsyncAPI document as such: + +``` +asyncapi: 3.0.0 +... +components: + ... +``` + +| Issue(s) | PR(s) | +| ----------- | ----------- | +| [#829](https://github.com/asyncapi/spec/issues/829) | [#847](https://github.com/asyncapi/spec/pull/847) | + +### Unified referencing behaviors + +In v2, there were two instances where we used implicit references; server security configuration, by name referencing security requirement object in components, for channels to reference global servers by name. To stay as consistent as possible, we wanted to unify how references were used, which means that in v3, we ONLY use explicit references. + +The `scopes` information in the [Security Schema Object](https://www.asyncapi.com/docs/reference/specification/v3.0.0#securitySchemeObject) is also now an array instead of an object. + +``` +asyncapi: 3.0.0 +... +servers: + SomeServer: + security: + - $ref: '#/components/securitySchemes/SomeSecurity' +channels: + SomeChannel: + servers: + - $ref: '#/servers/SomeServer' +components: + securitySchemes: + SomeSecurity: + ... + scopes: [...] +``` + +| Issue(s) | PR(s) | Migration Guide | +| ----------- | ----------- | ----------- | +| [#829](https://github.com/asyncapi/spec/issues/829) | [#852](https://github.com/asyncapi/spec/pull/852) | [Unifying explicit and implicit references](/docs/migration/migrating-to-v3#unifying-explicit-and-implicit-references) | + +### Common metadata fields +There has been some inconsistency between which metadata fields are available in the different objects. Now we have added a few extra fields: +- added `title`, `summary`, and `externalDocs` fields in the [Server Object](https://www.asyncapi.com/docs/reference/specification/v3.0.0#serverObject) +- added `title` and `summary` fields in the [Channel Object](https://www.asyncapi.com/docs/reference/specification/v3.0.0#channelObject) +- added `title` field in the [Operation Object](https://www.asyncapi.com/docs/reference/specification/v3.0.0#operationObject) and [Operation Trait Object](https://www.asyncapi.com/docs/reference/specification/v3.0.0#operationTraitObject) + +``` +asyncapi: 3.0.0 +... +servers: + SomeServer: + title: Some Server title + summary: This some server is for something + externalDocs: + ... +channels: + SomeChannel: + title: Some channel title + summary: Some channel summary +operations: + SomeOperation: + title: Some operation title + traits: + - title: Some operation traits title +``` + +| Issue(s) | PR(s) | +| ----------- | ----------- | +| [#795](https://github.com/asyncapi/spec/issues/795) | [#796](https://github.com/asyncapi/spec/pull/796) | + +### Cleaning up the root object +There was two meta information lingering in the root of the AsyncAPI object, which did not make much sense since we have the `info` object for all the meta information. + +Therefore the root `tags` and `externalDocs` have been moved to the [Info Object](https://www.asyncapi.com/docs/reference/specification/v3.0.0#infoObject). + +``` +asyncapi: 3.0.0 +... +info: + ... + externalDocs: + description: Find more info here + url: https://www.asyncapi.org + tags: + - name: e-commerce +... +``` + +| PR(s) | Migration Guide | +| ----------- | ----------- | +| [#794](https://github.com/asyncapi/spec/pull/794) | [Moved metadata](/docs/migration/migrating-to-v3#moved-metadata) | + +### Splitting out server URL into host and pathname +There has been some confusion about what the `url` of a server should contain; is it both protocol + host + path? What about the protocol field, then? Therefore each field now has its field for the host, path, and protocol in the [Server Object](https://www.asyncapi.com/docs/reference/specification/v3.0.0#serverObject). + +``` +asyncapi: 3.0.0 +... +servers: + localhost: + host: localhost + path: /api/v1, + protocol: mqtt +``` + +| Issue(s) | PR(s) | Migration Guide | +| ----------- | ----------- | ----------- | +| [#547](https://github.com/asyncapi/spec/issues/547), [#274](https://github.com/asyncapi/spec/issues/274) | [#888](https://github.com/asyncapi/spec/pull/888) | [Server URL splitting up](/docs/migration/migrating-to-v3#server-url-splitting-up) | + +### More reusable objects in components +This is a bit of a mixture between some of the features, that all added a little to this. It's now possible to add more stuff under the [Components Object](https://www.asyncapi.com/docs/reference/specification/v3.0.0#componentsObject): +- Replies +- Reply addresses +- Tags +- External docs +- Operations +- Channels + +``` +asyncapi: 3.0.0 +... +components: + ... + replies: + ... + replyAddresses: + ... + tags: + ... + externalDocs: + ... + operations: + ... + channels: + ... +``` + +| Issue(s) | PR(s) | +| ----------- | ----------- | +| [#829](https://github.com/asyncapi/spec/issues/829) | [#847](https://github.com/asyncapi/spec/pull/847), [#792](https://github.com/asyncapi/spec/pull/792), [#806](https://github.com/asyncapi/spec/pull/806), [#827](https://github.com/asyncapi/spec/pull/827) | + +### New trait behavior +Traits in v2 always replaced any duplicate properties that were defined both in traits and the associated object. This meant, for example, if the message traits defined headers and the message object did as well, only the message trait headers would be applied because it overwrote anything you wrote in the message object. + +In v3, this has now been changed so that [a property on a trait MUST NOT override the same property on the target object](https://www.asyncapi.com/docs/reference/specification/v3.0.0#traitsMergeMechanism). + +For example, take a look at this message: +``` +messageId: userSignup +description: A longer description. +payload: + $ref: '#/components/schemas/userSignupPayload' +traits: + - name: UserSignup + title: User signup + summary: Action to sign a user up. + description: Description from trait. +``` +Take notice of how `description` is not overwritten by the traits: + +``` +messageId: userSignup +name: UserSignup +title: User signup +summary: Action to sign a user up. +description: A longer description. # it's still description from "main" object +payload: + $ref: '#/components/schemas/userSignupPayload' +``` + +| Issue(s) | PR(s) | Migration Guide | +| ----------- | ----------- | ----------- | +| [#505](https://github.com/asyncapi/spec/issues/505) | [#517](https://github.com/asyncapi/spec/pull/517), [#532](https://github.com/asyncapi/spec/pull/532), [#907](https://github.com/asyncapi/spec/pull/907) | [New trait behavior](/docs/migration/migrating-to-v3#new-trait-behavior) | + + +### Schema format and payload definition +With schemas, one thing that has always been impossible was reusing schemas with different schema formats. That's because the schema format information is part of the message object. That means that if you reference a Schema object, it has no information about the schema format because it's not located together. + +In v3, schemaFormat has been removed from the [Message Object](https://www.asyncapi.com/docs/reference/specification/v3.0.0#messageObject) and [Message Trait Object](https://www.asyncapi.com/docs/reference/specification/v3.0.0#messageTraitObject), and a new [schema Object called `Multi Format Schema Object`](https://www.asyncapi.com/docs/reference/specification/v3.0.0#multiFormatSchemaObject) has been introduced, which pairs a schema together with its schema format. Which now enables much better reusability: + +``` +asyncapi: 3.0.0 +... +components: + schemas: + avroSchema: + schemaFormat: 'application/vnd.apache.avro+yaml;version=1.9.0' + schema: + type: record + name: User + namespace: com.company + doc: User information + fields: + - name: displayName + type: string +``` + +| Issue(s) | PR(s) | Migration Guide | +| ----------- | ----------- | ----------- | +| [#622](https://github.com/asyncapi/spec/issues/622) | [#797](https://github.com/asyncapi/spec/pull/797), [#910](https://github.com/asyncapi/spec/pull/910) | [Schema format and schemas](/docs/migration/migrating-to-v3#schema-format-and-schemas) | + +### Simplified Parameters +In v2, it was possible to use the full power of JSON Schema to define parameters, however, it introduced a lot of complexity to parameters, so for v3 it was dialed way down to only allow a very small set of properties. + +In v3, the new [Parameter object](https://www.asyncapi.com/docs/reference/specification/v3.0.0#parameterObject) can now only have the following properties: `enum`, `default`, `description`, `examples`, and `location`. + +``` +asyncapi: 3.0.0 +... +channels: + userSignup: + address: user/{userId}/signedup + parameters: + userId: + description: Id of the user. +``` + +By default this means that any parameter is of type `string`. + +| Issue(s) | PR(s) | Migration Guide | +| ----------- | ----------- | ----------- | +| [#583](https://github.com/asyncapi/spec/issues/583) | [#935](https://github.com/asyncapi/spec/pull/935) | [Restricted parameters object](/docs/migration/migrating-to-v3#restricted-parameters-object) | + +### Editorial Changes + +We have [removed the note that stated we strived to be compatible with OpenAPI where possible]([#933](https://github.com/asyncapi/spec/pull/933)) because, with the recent changes, this is no longer the case. That said, we still strive to make the different specs as interoperable as possible i.e., with Avro, RAML, OpenAPI Schema, etc. + +## Acknowledgements +Spec 3.0 have been a massive undertaking, so I would like to say a huge "thank you!" to everyone who has been involved; maybe you commented on your views, added to discussions, joined the live meetings, championed changes, or reviewed proposed changes; this section is for you! + +Thank you, [Simon Heimler](https://github.com/Fannon), [Vladimír Gorej](https://github.com/char0n), [Fran Méndez](https://github.com/fmvilas), [Lukasz Gornicki](https://github.com/derberg), [Sergio Moya](https://github.com/smoya), [Michael Davis](https://github.com/damaru-inc), [Maciej Urbańczyk](https://github.com/magicmatatjahu), [Jesse Menning](https://github.com/jessemenning), [Heiko Henning](https://github.com/GreenRover), [Gerald Loeffler ](https://github.com/GeraldLoeffler), [c-pius](https://github.com/c-pius), [Ian Cooper](https://github.com/iancooper), [Dale Lane](https://github.com/dalelane), [Jörg Walter](https://github.com/joerg-walter-de), [Nic Townsend](https://github.com/nictownsend), [Laurent Broudoux](https://github.com/lbroudoux), [olamiral](https://github.com/olamiral), [Iván García Sainz-Aja](https://github.com/ivangsa), [Fabian Bühler](https://github.com/buehlefs), [John Fallows](https://github.com/jfallows), [Adrian Hope-Bailie](https://github.com/adrianhopebailie), [Christian (prdatur)](https://github.com/prdatur), [Karl Morrison](https://github.com/basickarl), [Javier Jiménez Roda](https://github.com/jjimenezroda), [Marek Sebera](https://github.com/smarek), [Nathanaël Lécaudé](https://github.com/natcl), [Jeremy Whitlock](https://github.com/whitlockjc), [souvik](https://github.com/Souvikns), [Animesh Kumar](https://www.github.com/animeshkumar923), [Samir AMZANI](https://github.com/Amzani), [Alejandra Quetzalli](https://github.com/alequetzalli), [Vaishnavi](https://github.com/VaishnaviNandakumar), [Mahfuza](https://github.com/mhmohona), [Bhaswati](https://github.com/BhaswatiRoy), [Cynthia Peter](https://github.com/CynthiaPeter), [Arya Gupta](https://github.com/Arya-Gupta), [Joy Almeida](https://github.com/J0SAL), [Hridyesh](https://github.com/kakabisht), [Rohit](https://github.com/TRohit20), [Ashish Padhy](https://github.com/Shurtu-gal), [Al Amin Muhammad](https://github.com/alaminthespecial), [nickshoe](https://github.com/nickshoe), [Khuda Dad Nomani](https://github.com/KhudaDad414), [V Thulisile Sibanda](https://github.com/thulieblack), [Ace](https://github.com/AceTheCreator), [Mihael Bosnjak](https://github.com/mboss37), [Sambhav Gupta](https://github.com/sambhavgupta0705), [Jonas Lagoni](https://github.com/jonaslagoni), [Afzal Ansari](https://github.com/afzal442) \ No newline at end of file diff --git a/pages/docs/community/_section.md b/pages/docs/community/_section.md index 6874743a00f..1ef99a267b1 100644 --- a/pages/docs/community/_section.md +++ b/pages/docs/community/_section.md @@ -1,4 +1,4 @@ --- title: 'Community' -weight: 6 ---- \ No newline at end of file +weight: 7 +--- diff --git a/pages/docs/concepts/application.md b/pages/docs/concepts/application.md index 6de5af6d829..1d9c4634a94 100644 --- a/pages/docs/concepts/application.md +++ b/pages/docs/concepts/application.md @@ -21,7 +21,3 @@ flowchart TD D --> F[CONSUMER application] ``` The above diagram describes a message communication traveling through a channel between a **PRODUCER application** and a **CONSUMER application**. - - -When writing your AsyncAPI document, make sure to describe what a user can do with your application; not what the application does. In other words, if your application is a producer, your AsyncAPI document should describe where users can subscribe to, to receive messages produced by your producer application. - diff --git a/pages/docs/concepts/asyncapi-document/_section.md b/pages/docs/concepts/asyncapi-document/_section.md new file mode 100644 index 00000000000..d7dea824ae2 --- /dev/null +++ b/pages/docs/concepts/asyncapi-document/_section.md @@ -0,0 +1,4 @@ +--- +title: 'AsyncAPI Document' +weight: 50 +--- \ No newline at end of file diff --git a/pages/docs/concepts/asyncapi-document/adding-bindings.md b/pages/docs/concepts/asyncapi-document/adding-bindings.md new file mode 100644 index 00000000000..6d6cf0c0f5c --- /dev/null +++ b/pages/docs/concepts/asyncapi-document/adding-bindings.md @@ -0,0 +1,158 @@ +--- +title: Adding Bindings +weight: 260 +--- + +Bindings in AsyncAPI provide a way to add protocol-specific information to the AsyncAPI documentation. They can be added to different document parts, such as servers, channels, or messages; they specify standard details specific to a particular protocol. The purpose of bindings is to enhance the API's understanding and usage by providing additional context and configuration options for different protocols. + +The following diagram highlights the sections where bindings can be implemented: + +```mermaid +graph TD +A[AsyncAPI Document] --> B((Servers)) +A --> D((Channels)) +A --> E((Operations)) +D --> F((Messages)) +B --> C{Server Bindings} +D --> G{Channel Bindings} +E --> H{Operation Bindings} +F --> I{Message Bindings} + +style C fill:#47BCEE,stroke:#47BCEE; +style G fill:#47BCEE,stroke:#47BCEE; +style H fill:#47BCEE,stroke:#47BCEE; +style I fill:#47BCEE,stroke:#47BCEE; +``` + + +## Server bindings + +Server bindings provide protocol-specific information related to the server configuration. For example, if you use Pulsar as your message broker, you can specify the tenant name in the server bindings. + +Here is a diagram explaining server bindings: + +```mermaid +graph LR +A[AsyncAPI Document] --> B((Servers)) +B --> C{Server Bindings} + +style C fill:#47BCEE,stroke:#47BCEE; +``` + +This diagram shows where server bindings fit into the AsyncAPI document structure. + +The next example showcases how to use server bindings to detail protocol-specific configurations for the server: + +```yml +servers: + production: + bindings: + pulsar: + tenant: contoso + bindingVersion: '0.1.0' +``` + +The previous document shows how to set up server bindings for a server that is a Pulsar broker. + +## Channel bindings + +Channel bindings are used to specify protocol-specific information for a specific channel. For example, in Kafka, you can specify number of partitions for a given topic. + +Here is a diagram explaining where channel bindings fit into the AsyncAPI document structure: + +```mermaid +graph LR +A[AsyncAPI Document] --> D((Channels)) +D --> G{Channel Bindings} + +style G fill:#47BCEE,stroke:#47BCEE; +``` + + +Here is an example of using channel bindings to specify protocol-specific information for a specific channel: + +```yml +channels: + user-signedup: + bindings: + kafka: + topic: 'my-specific-topic-name' + partitions: 20 + replicas: 3 + topicConfiguration: + cleanup.policy: ["delete", "compact"] + retention.ms: 604800000 + retention.bytes: 1000000000 + delete.retention.ms: 86400000 + max.message.bytes: 1048588 + bindingVersion: '0.4.0' +``` + +The previous document shows how to configure channel bindings for a Kafka topic-representative channel. + +## Message bindings + +Message bindings provide protocol-specific information for a specific message. For example, for the AMQP protocol, you can specify the message type in a protocol-specific notation. + +Here is a diagram explaining where message bindings fit into the AsyncAPI document structure: + +```mermaid +graph LR +A[AsyncAPI Document] --> F((Channels)) +F --> G{Message Bindings} + +style G fill:#47BCEE,stroke:#47BCEE; +``` + + +Here is an example of using message bindings to provide protocol-specific information for a specific message: + +```yml +channels: + userSignup: + address: 'user/signup' + messages: + userSignupMessage: + bindings: + amqp: + contentEncoding: gzip + messageType: 'user.signup' + bindingVersion: 0.3.0 +``` + +The previous document shows how to set up message bindings for a message transported using the AMQP protocol. + +## Operation bindings + +Operation bindings allow you to specify protocol-specific information for a specific operation. For example, for MQTT, you can specify the quality of the service for a given operation. + +Here is a diagram explaining where operation bindings fit into the AsyncAPI document structure: + +```mermaid +graph LR +A[AsyncAPI Document] --> D((Channels)) +D --> E{Operations} +E --> H{Operation Bindings} + +style H fill:#47BCEE,stroke:#47BCEE; +``` + + +Here is an example of using operation bindings to specify protocol-specific information for a specific operation: + +```yml +channels: + user/signup: +operations: + userSignup: + action: receive + bindings: + mqtt: + qos: 2 + retain: true + bindingVersion: 0.2.0 +``` + +The previous document shows how to set up operation bindings for an operation that describes how an application that uses MQTT as transport, receives the message. + +Using bindings helps you enhance the AsyncAPI documentation with protocol-specific details, making it easier to understand and implement the API. diff --git a/pages/docs/concepts/asyncapi-document/reply-info.md b/pages/docs/concepts/asyncapi-document/reply-info.md new file mode 100644 index 00000000000..db21c70b48c --- /dev/null +++ b/pages/docs/concepts/asyncapi-document/reply-info.md @@ -0,0 +1,141 @@ +--- +title: Adding reply info +weight: 210 +--- + +Request/Reply is a communication pattern where one entity, the 'requestor,' sends a message to another, the 'replier', and waits for a response. Such a pattern is used when a component (or service) needs to initiate an action and receive a specific response in return, either synchronously or asynchronously. In Event-Driven Architectures, this communication pattern is asynchronous, meaning that the requester does not block and wait for an immediate response. Instead, it can continue processing other tasks or even send out other requests while waiting for the reply to arrive. + +In the case of multiple requests made, each request is processed independently and sends the reply/response to the corresponding requestor when ready. + +Here is diagram to illustrate the working of a basic request/reply pattern: +```mermaid +sequenceDiagram + Requester->>Channels: Send Request through Channel A + Channels->>Responder: Deliver Request + activate Responder + Responder-->>Channels: Send Reply through Channel B + deactivate Responder + Channels-->>Requester: Deliver Reply +``` + +The request/reply pattern in AsyncAPI works in the same fashion while supporting all the different sub-patterns. Irrespective of the sub-pattern you would like to represent, the request/reply pattern can be implemented in the AsyncAPI document in the `Operation` object. + +You can add the reply info using the `Operation Reply` object under the `Operation` object. The `reply` field represents the response details. + +In AsyncAPI, you have the flexibility to represent the request/reply pattern in two different ways. + +The first approach is when the requester specifies at runtime, within the request itself, where the response should be sent. Such an approach allows for the dynamic determination of the reply address based on factors such as the request message payload or header. + +The second approach is when the requester already knows exactly where the response should be sent. In such cases, the address of the reply channel is directly specified in the AsyncAPI document. + +## Dynamic response channel + +There are situations where you do not know the reply channel at the design time. Instead, the reply address is dynamically determined at runtime, based on factors such as the request message payload or header. + +In the case where you don't know the address of the reply yet, you have the option to either assign null to the `address` property or omit the property entirely indicating that the address is not known at the moment. The `address` property being referred to in this case is part of the channel that the operation with the reply references to. To dynamically specify where the reply should be sent, you can use the `Operation Reply Address` object. The `Operation Reply Address` object has a property called `location` that allows you to define a runtime expression that specifies the address of the reply channel. + +For instance, this pattern allows the replier to direct its response to a specific channel as defined by the requestor. This is typically achieved by including a `replyTo` property in the request header. The requestor specifies this property to indicate where it expects to receive the response, guiding the communication flow in a structured and predictable manner. + +```yml +asyncapi: 3.0.0 + +info: + title: Ping/pong example for a requester with a dynamic reply channel + version: 1.0.0 + description: Example with a requester that initiates a request/reply interaction, with the response directed to the destination specified in the request's `replyTo` header. + +channels: + ping: + address: /ping + messages: + ping: + $ref: '#/components/messages/ping' + pong: + address: null + messages: + pong: + $ref: '#/components/messages/pong' + +operations: + pingRequest: + action: send + channel: + $ref: '#/channels/ping' + reply: + address: + description: The response destination is dynamically set according to the `replyTo` field in the request header + location: "$message.header#/replyTo" + channel: + $ref: '#/channels/pong' +``` + +## Multiple channels with single message when reply address is known + +The request/reply pattern can also be implemented over multiple channels with a single message. You can do this by specifying multiple channels with a single message and specifying the same address for both the requester and the replier. + +Here's an example of setting up both the requestor and replier over the same address: +```yml +asyncapi: 3.0.0 + +info: + title: Ping/pong example with requester over the same channel + version: 1.0.0 + description: Requester example initiating a request-reply interaction, utilizing the same channel for both sending the request and receiving the reply. + +channels: + ping: + address: / + messages: + ping: + $ref: '#/components/messages/ping' + pong: + address: / + messages: + pong: + $ref: '#/components/messages/pong' + +operations: + pingRequest: + action: send + channel: + $ref: '#/channels/ping' + reply: + channel: + $ref: '#/channels/pong' +``` + +## Multiple messages over the same channel when reply address is known + +In some cases, representing the [same information](#multiple-channels-with-single-message) might require a different approach. You can do so by specifying multiple messages under the same channel. In such scenarios, use the `messages` property in the `Operation` object to explicitly define which message among the multiple messages available over the same channel is a request and which is a reply. + +Consider an example where multiple messages are transmitted over a single channel, all sharing the same address. In this setup, the `Operation` object is utilized to distinctly specify which of these messages serves as the request and which functions as the reply: +```yml +asyncapi: 3.0.0 + +info: + title: Ping/pong example when a channel contains multiple messages + version: 1.0.0 + description: Requester example that initiates the request-reply pattern within a root channel that contains multiple messages + +channels: + rootChannel: + address: / + messages: + ping: + $ref: '#/components/messages/ping' + pong: + $ref: '#/components/messages/pong' + +operations: + pingRequest: + action: send + channel: + $ref: '#/channels/rootChannel' + messages: + - $ref: "/components/messages/ping" + reply: + messages: + - $ref: "/components/messages/pong" + channel: + $ref: '#/channels/rootChannel' +``` diff --git a/pages/docs/concepts/asyncapi-document/server-security.md b/pages/docs/concepts/asyncapi-document/server-security.md new file mode 100644 index 00000000000..2463c8d8d97 --- /dev/null +++ b/pages/docs/concepts/asyncapi-document/server-security.md @@ -0,0 +1,115 @@ +--- +title: Server security +weight: 200 +--- + +Server security refers to the measures and practices implemented to protect servers from unauthorized access, data breaches, and other security threats. Server security involves implementing various security mechanisms to ensure the confidentiality, integrity, and availability of server resources. + +In the context of AsyncAPI, securing servers ensures secure exchange of messages between clients and servers. While also protecting sensitive data, preventing unauthorized access, and maintaining the overall security of the API or server. + +You can describe how your server is secured with the `security` property where you define which security schemes can be used with the server in context. Each `server` in the AsyncAPI document can have one or more security schemes declared. A security scheme defines a security requirement that must be satisfied to authorize an operation, such as an API key or a username and password. + +Here is an example of adding security to your server, demonstrating that different servers can employ various security mechanisms: +```yml +asyncapi: 3.0.0 +info: + title: Streetlights Kafka API + version: 1.0.0 +servers: + scram-connections: + host: 'test.mykafkacluster.org:18092' + protocol: kafka-secure + description: Test broker secured with scramSha256 + security: + - $ref: '#/components/securitySchemes/saslScram' + mtls-connections: + host: 'test.mykafkacluster.org:28092' + protocol: kafka-secure + description: Test broker secured with X509 + security: + - $ref: '#/components/securitySchemes/certs' +components: + securitySchemes: + saslScram: + type: scramSha256 + description: Provide your username and password for SASL/SCRAM authentication + certs: + type: X509 + description: Download the certificate files from service provider +``` + +Here is an illustration of securing servers: +```mermaid +graph LR + C[servers] + F[host] + I[protocol] + E[security] + C --> F + C --> E + C --> I + style C fill:#47BCEE,stroke:#000; + style E fill:#47BCEE,stroke:#000 +``` + +Here are some of the security schemes that AsyncAPI supports: +- User/Password + ```yml + type: userPassword + ``` + +- API key (either as a user or as a password) + ```yml + type: apiKey + in: user + ``` + +- X.509 certificate + ```yml + type: X509 + ``` + +- End-to-end encryption (either symmetric or asymmetric) + ```yml + type: symmetricEncryption + ``` + +- HTTP authentication + ```yml + type: http + scheme: basic + ``` + +- HTTP API key + ```yml + type: httpApiKey + name: api_key + in: header + ``` + +- JWT Bearer + ```yml + type: http + scheme: bearer + bearerFormat: JWT + ``` + +- Implicit oauth2 + ```yml + type: oauth2 + flows: + implicit: + authorizationUrl: https://example.com/api/oauth/dialog + availableScopes: + write:pets: modify pets in your account + read:pets: read your pets + scopes: + - 'write:pets' + ``` + +- SASL (Simple Authentication and Security Layer) as defined in RFC4422 + ```yml + type: scramSha512 + ``` + +Although the `security` property is not mandatory, it is a good practice to always secure your server(s) in production. Similarly, having multiple security schemes declared does not necessarily mean that the server is more secure; it depends on other factors such as the protocol used, use case, business perspective, and more. Additionally, you can also [add security at the `operation` level](securing-operations). diff --git a/pages/docs/concepts/asyncapi-document/structure.md b/pages/docs/concepts/asyncapi-document/structure.md new file mode 100644 index 00000000000..6beb3d9b865 --- /dev/null +++ b/pages/docs/concepts/asyncapi-document/structure.md @@ -0,0 +1,581 @@ +--- +title: AsyncAPI document structure +weight: 60 +--- + +The structure of an AsyncAPI document is defined in a specific format and must follow the [AsyncAPI specification](/docs/reference/specification/latest). The structure of an AsyncAPI document has certain fields that you need to follow, although not all of them are mandatory. + +## Root elements + +Root elements of an AsyncAPI document provide an overview of the API's characteristics and behavior. These root elements collectively define the metadata, channels, components, and more of an AsyncAPI document. They provide a comprehensive overview of the API's characteristics and behavior. + +```mermaid +graph +A[asyncapi] +B[info] +C[servers] +D[channels] +E[operations] +F[components] + +A --> B +A --> C +A --> D +A --> E +A --> F +``` + +### `info` field + +The `info` field in an API document offers crucial metadata, including the API's title, version, description, contact details, and license. This field provides a comprehensive overview of the API, aiding developers, architects, and other stakeholders in quickly grasping its purpose and capabilities. As a mandatory element of the AsyncAPI specification, the `info` field often serves as the initial reference point for users navigating the API documentation. + +The `info` field encompasses various fields such as: + +- `title`: API title. +- `version`: API version. +- `description`: Brief description describing the API's purpose and features. +- `termsOfService`: URL or document specifying the API's terms of service. +- `contact`: Contact information of the API's owner or maintainer (name, email, and URL). +- `license`: API's license information, including name and URL. +- `tags`: Tags for categorizing and organizing API documentation. Also used for grouping applications logically. +- `externalDocs`: Links to additional, external documentation related to the API. + +Here's a visual representation of the `info` field and its properties: +```mermaid +graph LR + B(info) + C(title) + D(version) + E(description) + F(termsOfService) + G(contact) + J(license) + M(tags) + P(externalDocs) + + B --> C + B --> D + B --> E + B --> F + B --> G + B --> J + B --> M + B --> P +``` + +Below is an example of the `info` field: +```yaml +info: + title: My Event-Driven API + version: 1.0.0 + description: This API provides real-time event streaming capabilities. + termsOfService: https://example.com/terms-of-service + contact: + name: Rohit + email: rohitwashere@asyncapi.com + license: + name: Apache 2.0 + url: https://www.apache.org/licenses/LICENSE-2.0.html + tags: + - name: Events + description: APIs related to event streaming + - name: Authentication + description: APIs for authentication and authorization + externalDocs: + description: Additional documentation + url: https://example.com/docs +``` + +### `servers` field + +The `servers` field allows you to detail a range of servers, outlining the network endpoints or message brokers to which applications can connect. That field includes vital connection information like protocol, host, port, and other options, facilitating connectivity across various environments such as production, staging, or development. + +Some of the fields of individual `servers` field are: + +- `host`: The server host name. It may include the port. +- `protocol`: The protocol or messaging protocol used by the server (e.g., AMQP, MQTT, WebSocket). +- `protocolVersion`: The version of the protocol used for the connection. +- `pathname`: The path to a resource in the host. +- `description`: An optional string describing the server. +- `title`: A human-friendly title for the server. +- `summary`: A summary of the server. +- `security`: A declaration of which security schemes can be used with this server. +- `tags`: A list of tags for logical grouping and categorization of servers. +- `externalDocs`: Additional external documentation for this server. +- `bindings`: A map where the keys describe the name of the protocol and the values describe protocol-specific definitions for the server. + +Here's a visual representation of the `server` object and its properties: +```mermaid +graph LR + A[server] + B(host) + C(pathname) + D(protocol) + E(protocolVersion) + F(description) + G(title) + H(summary) + I(variables) + J(security) + K(tags) + L(externalDocs) + M(bindings) + + A --> B + A --> C + A --> D + A --> E + A --> F + A --> G + A --> H + A --> I + A --> J + A --> K + A --> L + A --> M +``` + +Below is an example of the `servers` field with multiple servers: +```yaml +servers: + production: + host: rabbitmq.in.mycompany.com:5672 + pathname: /v1 + protocol: amqp + protocolVersion: "1.0" + description: Production RabbitMQ broker (uses the `production` vhost). + title: Production Server + summary: Production environment server + security: + - type: http + scheme: bearer + tags: + - name: production + description: Production environment + externalDocs: + description: Additional documentation for the production server + url: https://example.com/docs/production + bindings: + amqp: + exchange: my-exchange + queue: my-queue + staging: + host: rabbitmq.in.mycompany.com:5672 + pathname: /v1 + protocol: amqp + protocolVersion: "1.0" + description: Staging RabbitMQ broker (uses the `staging` vhost). + title: Staging Server + summary: Staging environment server + security: + - type: apiKey + in: user + description: Provide your API key as the user and leave the password empty. + tags: + - name: staging + description: Staging environment + externalDocs: + description: Additional documentation for the staging server + url: https://example.com/docs/staging + bindings: + amqp: + exchange: my-exchange + queue: my-queue +``` + +### `channels` field + +With the `channels` field, you can provide a map of different channels the application communicates with during runtime. The `channels` represent the communication pathways through which messages are exchanged. You can specify their purpose, address, and the expected message formats for communication. Consumers of the specific API can understand the supported message-based interactions and the corresponding data models. + +Key components within the `channels` field include: + +- `address`: A string representation of this channel's address. +- `messages`: A map of the messages that will be sent to this channel by any application at any time. +- `title`: A human-readable title for the channel. +- `summary`: A short yet brief summary of the channel. +- `description`: A description of the channel, providing additional context and details of the message. +- `servers`: An array of `$ref` pointers to the definition of the servers in which this channel is available. If servers are absent or empty, this channel must be available on all the servers defined in the `servers` field. +- `parameters`: A map of the parameters included in the channel address. +- `tags`: A list of tags for logical grouping of channels. +- `externalDocs`: Additional external documentation for this channel. +- `bindings`: A map where the keys describe the name of the protocol and the values describe protocol-specific definitions for the channel. + +Here's a visual representation of the `channels` field and its properties: +```mermaid +graph LR + A[channel] + B(address) + C(title) + D(description) + E(messages) + H(parameters) + J(servers) + M(bindings) + P(tags) + R(externalDocs) + + A -->B + A --> C + A --> D + A --> E + A --> H + A --> J + A --> M + A --> P + A --> R +``` + +Below is an example of of the `channels` field with one channel: +```yaml +channels: + user: + address: 'users.{userId}' + title: Users channel + description: This channel is used to exchange messages about user events. + messages: + userSignedUp: + $ref: '#/components/messages/userSignedUp' + userCompletedOrder: + $ref: '#/components/messages/userCompletedOrder' + parameters: + userId: + $ref: '#/components/parameters/userId' + servers: + - $ref: '#/servers/production' + bindings: + amqp: + is: queue + queue: + exclusive: true + tags: + - name: user + description: User-related messages + externalDocs: + description: 'Find more info here' + url: 'https://example.com' +``` + +### `operations` field + +The `operations` field is used to comprehensively outline the various operations performed by the application. It offers a clear, structured description, detailing whether the application sends or receives messages and the specific purpose of each operation. + +Key components within the `operations` field include: + +- `action`: Use `send` type when it's expected that the application will send a message to the given channel, and `receive` type when the application should expect to receive messages from the given channel. +- `channel`: A `$ref` pointer to the definition of the channel in which this operation is performed. +- `title`: A human-friendly title for the operation. +- `summary`: A short summary of what the operation is about. +- `description`: A verbose explanation of the operation. +- `security`: A declaration of which security schemes are associated with this operation. +- `tags`: A list of tags for logical grouping and categorization of operations. +- `externalDocs`: Additional external documentation for this operation. +- `bindings` A map where the keys describe the name of the protocol and the values describe protocol-specific definitions for the operation. +- `traits`: A list of traits to apply to the operation object. +- `messages`: A list of $ref pointers pointing to the supported Message Objects that can be processed by this operation. +- `reply`: The definition of the reply in a reply/request operation. + +Here's a visual representation of the `operations` field and its properties: +```mermaid +graph LR + A[operation] + B(title) + C(summary) + D(description) + E(channel) + F(action) + G(security) + H(tags) + I(bindings) + J(traits) + K(messages) + L(reply) + M(address) + N(channel) + + A --> B + A --> C + A --> D + A --> E + A --> F + A --> G + A --> H + A --> I + A --> J + A --> K + A --> L + L --> M + L --> N +``` + +Below is an example of of the `operations` field with one operation: +```yaml +operations: + sendUserSignUp: + action: send + title: User sign up + summary: Action to sign a user up. + description: A longer description + channel: + $ref: '#/channels/user' + security: + - type: oauth2 + description: The oauth security descriptions + flows: + clientCredentials: + tokenUrl: 'https://example.com/api/oauth/dialog' + availableScopes: + 'subscribe:auth_revocations': Scope required for authorization revocation topic + scopes: + - 'subscribe:auth_revocations' + tags: + - name: user + - name: signup + - name: register + bindings: + amqp: + ack: false + traits: + - $ref: "#/components/operationTraits/kafka" + messages: + - $ref: '#/components/messages/userSignedUp' + reply: + address: + location: '$message.header#/replyTo' + channel: + $ref: '#/channels/userSignupReply' + messages: + - $ref: '#/channels/userSignupReply/messages/userSignedUpReply' +``` + +### `components` field + +The `components` field allows for the definition of reusable structures or definitions applicable across various sections of your document. Items detailed within `components` only become part of the API when explicitly referenced by properties external to this field. Utilize it to avoid repetition and enhance the document's maintainability. + +Key components of the `channels` field include: + +- `schemas`: An object to hold the reusable [Schema Object](/docs/reference/specification/latest#schemaObject). +- `servers`: An object to hold the reusable [Server Objects](/docs/reference/specification/latest#serverObject). +- `channels`: An object to hold the reusable [Channel Objects](/docs/reference/specification/latest#channelObject). +- `operations`: An object to hold the reusable [Operation Item Objects](/docs/reference/specification/latest#operationObject). +- `messages`: An object to hold the reusable [Messages Objects](/docs/reference/specification/latest#messageObject). +- `securitySchemes`: An object to hold the reusable [Security Scheme Objects](/docs/reference/specification/latest#securitySchemeObject). +- `serverVariables`: An object to hold the reusable [Server Variable Objects](/docs/reference/specification/latest#serverVariableObject). +- `parameters`: Contains reusable [Parameter Objects](/docs/reference/specification/latest#parameterObject) that can be used in various parts of the AsyncAPI document. +- `correlationIds`: An object to hold the reusable [Correlation ID Objects](/docs/reference/specification/latest#correlationIdObject). +- `replies`: An object to hold the reusable [Operation Reply Objects](/docs/reference/specification/latest#operationReplyObject). +- `replyAddresses`: An object to hold the reusable [Operation Reply Address Objects](/docs/reference/specification/latest#operationReplyAddressObject). +- `externalDocs`: An object to hold the reusable [External Documentation Objects](docs/reference/specification/latest#externalDocumentationObject). +- `tags`: An object to hold the reusable [Tag Objects](/docs/reference/specification/latest#tagObject). +- `operationTraits`: An object to hold the reusable [Operation Trait Objects](/docs/reference/specification/latest#operationTraitObject). +- `messageTraits`: Represents common traits or characteristics that can be applied to messages or hold reusable [Message Trait Objects](/docs/reference/specification/latest#messageTraitObject). +- `serverBindings`: An object to hold the reusable [Server Bindings Objects](/docs/reference/specification/latest#serverBindingsObject). +- `channelBindings`: An object to hold the reusable [Channel Bindings Objects](/docs/reference/specification/latest#channelBindingsObject). +- `operationBindings`: An object to hold the reusable [Operation Bindings Objects](/docs/reference/specification/latest#operationBindingsObject). +- `messageBindings`: An object to hold the reusable [Message Bindings Objects](/docs/reference/specification/latest#messageBindingsObject). + +Here's a visual representation of the `components` field and its properties: +```mermaid +graph LR + A[components] + B(schemas) + C(messages) + D(serverVariables) + E(replies) + F(replyAddresses) + G(servers) + H(operations) + I(securitySchemes) + J(tags) + K(operationTraits) + L(channels) + M(serverBindings) + N(channelBindings) + O(operationBindings) + R(messageBindings) + P(externalDocs) + U(parameters) + W(correlationIds) + Y(messageTraits) + + A --> B + A --> C + A --> H + A --> G + A --> D + A --> L + A --> U + A --> P + A --> I + A --> W + A --> Y + A --> K + A --> J + A --> E + A --> F + A --> M + A --> N + A --> O + A --> R +``` + +Here's a code example of the components object in an AsyncAPI document: +```yaml +components: + + schemas: + Category: + type: object + properties: + id: + type: integer + format: int64 + AvroExample: + schemaFormat: application/vnd.apache.avro+json;version=1.9.0 + schema: + $ref: 'path/to/user-create.avsc/#UserCreate' + + servers: + development: + host: '{stage}.in.mycompany.com' + protocol: amqp + description: RabbitMQ broker + bindings: + $ref: '#/components/serverBindings/devAmqp' + variables: + stage: + $ref: '#/components/serverVariables/stage' + security: + - $ref: '#/components/securitySchemes/oauth' + + serverVariables: + stage: + default: demo + description: This value is assigned by the service provider in this example of `mycompany.com` + + channels: + user: + address: 'users.{userId}' + title: Users channel + description: This channel is used to exchange messages about user events. + messages: + userSignedUp: + $ref: '#/components/messages/userSignUp' + parameters: + userId: + $ref: '#/components/parameters/userId' + servers: + - $ref: '#/components/servers/development' + bindings: + $ref: '#/components/channelBindings/user' + tags: + - $ref: '#/components/tags/user' + externalDocs: + $ref: '#/components/externalDocs/infoDocs' + + messages: + userSignUp: + summary: Action to sign a user up. + traits: + - $ref: '#/components/messageTraits/commonHeaders' + payload: + $ref: '#/components/schemas/Category' + correlationId: + $ref: '#/components/correlationIds/default' + bindings: + $ref: '#/components/messageBindings/user' + + parameters: + userId: + description: Id of the user. + + correlationIds: + default: + description: Default Correlation ID + location: $message.header#/correlationId + + operations: + sendUserSignUp: + action: send + title: User sign up + bindings: + $ref: '#/components/operationBindings/sendUser' + traits: + - $ref: '#/components/operationTraits/binding' + reply: + $ref: '#/components/replies/signupReply' + + replies: + signupReply: + address: + $ref: '#/components/replyAddresses/signupReply' + channel: + $ref: '#/channels/userSignupReply' + + replyAddresses: + signupReply: + location: '$message.header#/replyTo' + + + securitySchemes: + oauth: + type: oauth2 + description: The oauth security descriptions + flows: + clientCredentials: + tokenUrl: 'https://example.com/api/oauth/dialog' + availableScopes: + 'subscribe:auth_revocations': Scope required for authorization revocation topic + scopes: + - 'subscribe:auth_revocations' + + operationTraits: + binding: + bindings: + amqp: + ack: false + + messageTraits: + commonHeaders: + headers: + type: object + properties: + my-app-header: + type: integer + minimum: 0 + maximum: 100 + + tags: + user: + name: user + description: User-related messages + + externalDocs: + infoDocs: + url: https://example.com/docs + description: 'Find more info here' + + serverBindings: + devAmqp: + amqp: + exchange: my-exchange + queue: my-queue + + channelBindings: + user: + amqp: + is: queue + queue: + exclusive: true + + operationBindings: + sendUser: + amqp: + ack: false + + messageBindings: + user: + amqp: + contentEncoding: gzip + messageType: 'user.signup' + bindingVersion: '0.2.0' +``` diff --git a/pages/docs/concepts/asyncapi-document/tags.md b/pages/docs/concepts/asyncapi-document/tags.md new file mode 100644 index 00000000000..5b2c4c348d5 --- /dev/null +++ b/pages/docs/concepts/asyncapi-document/tags.md @@ -0,0 +1,335 @@ +--- +title: 'Tags' +weight: 63 +--- + +A tag functions as a label or category for logically grouping related entities like channels or servers in an event-driven system. The `tag` object facilitates the organization of channels, operations, or other components, categorizing them based on functionality, purpose, or other relevant criteria. + +In AyncAPI, the `tags` object is a list of individual `tag` objects. Each `tag` within this collection can be defined with a specific name, accompanied by an optional description that offers additional insight into the tag's intended purpose or usage. + +You can define `tags` in the [`components` object](/docs/reference/specification/latest#componentsObject) of an AsyncAPI document, which enables the reusability of the tags. If you include `tags` in the `components` object, they can be re-used by using [reference objects](/docs/reference/specification/latest#referenceObject). + +Additionally, within AsyncAPI, you can create a list of tags in the `tags` object at the `info` level, specifying the tags you intend to use throughout the document. These predefined tags can then be applied to individual components like `servers` or `channels`, facilitating logical grouping and organization of these components. + +## `tags` in AsyncAPI document + +The `tags` object consists of a list of `tag` objects, which can be referenced using the [reference object](/docs/reference/specification/latest#referenceObject). + +The `tags` object is a list of tags and individual `tag` objects, each containing specific fields. + +In an AsyncAPI document, the function of tags within the `tags` object differs depending on context. For example, the `tags` object can be employed for consistent usage of tags across the document and logical grouping of components. Alternatively, tags can be applied to individual components such as `servers` or `channels`, serving more specific purposes within those contexts. + +The `tags` object fields include: +- `name`: The name of the tag. +- `description`: A short description for the tag. +- `externalDocs`: Additional external documentation for the tag. + +### `tags` in `info` object + +When specified in the `tags` property of the info object, tags offer a comprehensive categorization for the entire AsyncAPI document. These globally defined tags under the `info` object impart an overarching context, representing key themes or functional areas within the event-driven system. They effectively group elements like channels or servers by their broader relevance, providing a holistic understanding of the application's structure. + +Here's a visual representation of the `tags` object inside an `info` object in an AsyncAPI document: +```mermaid +graph LR + B[info] + B --> C[title] + B --> D[version] + B --> F[tags] + F --> G[name] + F --> I[description] + F --> K[externalDocs] + + + style B fill:#47BCEE,stroke:#000; + style F fill:#47BCEE,stroke:#000; + style I fill:#47BCEE,stroke:#000; + style K fill:#47BCEE,stroke:#000; + style G fill:#47BCEE,stroke:#000; +``` + +Below is an example of the `tags` object inside the `info` object in an AsyncAPI document: +```yaml +asyncapi: 3.0.0 +info: + title: AsyncAPI Documentation + version: 1.0.0 + description: | + This AsyncAPI document provides an overview + of the event-driven system. + tags: + - name: Applications + description: All applications related topics. + externalDocs: + description: More info about applications + url: https://applications.example.com/docs + - name: Time + description: All time related topics. + externalDocs: + description: More info about time + url: https://time.example.com/docs +``` + +### `tags` in `servers` object +When tags are utilized within the `servers` object's `tags` property, they specifically pertain to server configurations and characteristics. These tags enable server categorization by various criteria, including geographical location, environment type (i.e., production or development), or unique server features. Using `tags` in the `servers` object allows for the categorization and organization of servers based on specific tags or labels. Using the `tags` object under the `servers` object is optional. + +Here's a visual representation of the `tags` object inside a `servers` object in an AsyncAPI document: +```mermaid +graph LR + B[servers] + B --> C[host] + B --> E[protocol] + B --> G[tags] + G --> H[name] + G --> I[description] + G --> J[externalDocs] + style B fill:#47BCEE,stroke:#000; + style G fill:#47BCEE,stroke:#000; + style I fill:#47BCEE,stroke:#000; + style H fill:#47BCEE,stroke:#000; + style J fill:#47BCEE,stroke:#000; +``` + +Below is an example of the `tags` object inside the `servers` object in an AsyncAPI document: +```yaml +asyncapi: 3.0.0 + +info: + title: AsyncAPI Documentation + version: 1.0.0 + +servers: + development: + host: localhost:5672 + description: Development AMQP broker. + protocol: amqp + protocolVersion: 0-9-1 + tags: + - name: "env:development" + description: "This environment is meant for developers to run their tests." + production: + host: rabbitmq.in.mycompany.com:5672 + description: RabbitMQ broker for the production environment. + protocol: amqp + protocolVersion: 0-9-1 + tags: + - name: "env:production" + description: "This environment is the live environment available for final users." +``` + +### `tags` in `channels` object + +Tags linked with individual channels enable logical grouping and categorization based on specific functionalities or business domains. When the `tags` object is used within a `channels` object in an AsyncAPI document, its context is either confined to the `channels` object, impacting only that section, or it can be employed for consistent tagging across the document for cohesive grouping. Using the `tags` object under the `channels` object is optional. + + +Here's a visual representation of the `tags` object inside a `channels` object in an AsyncAPI document: +```mermaid +graph LR + A[channel] + B(address) + E(messages) + P(tags) + F(name) + G(description) + I(externalDocs) + + A --> B + A --> E + A --> P + P --> F + P --> G + P --> I + style A fill:#47BCEE,stroke:#000; + style P fill:#47BCEE,stroke:#000; + style F fill:#47BCEE,stroke:#000; + style G fill:#47BCEE,stroke:#000; + style I fill:#47BCEE,stroke:#000; +``` + +Below is an example of the `tags` object inside the `channels` object in an AsyncAPI document: +```yaml +asyncapi: 3.0.0 + +info: + title: AsyncAPI Documentation + version: 1.0.0 + +channels: + SignedUp: + address: 'user.signedup' + messages: + userSignedUp: + payload: + type: object + tags: + - name: user + description: User-related messages +``` + +### `tags` in `operations` object + +Within an AsyncAPI document, the `tags` object in the `operations` object facilitates logical grouping and categorization of `operation` objects by operation type, functionality, and more. When used in an `operations` object, the `tags` can either serve a specific purpose within that object or be employed for consistent, logical grouping of components across the document. Using the `tags` object in the `operations` object is optional. + +Here's a visual representation of the `tags` object inside a `operations` object in an AsyncAPI document: +```mermaid +graph LR + A[operation] + E(channel) + F(action) + H(tags) + X(name) + Y(description) + Z(externalDocs) + + A --> E + A --> F + A --> H + H --> X + H --> Y + H --> Z + style A fill:#47BCEE,stroke:#000; + style Z fill:#47BCEE,stroke:#000; + style H fill:#47BCEE,stroke:#000; + style Y fill:#47BCEE,stroke:#000; + style X fill:#47BCEE,stroke:#000; +``` + +Below is an example of the `tags` object inside the `operations` object in an AsyncAPI document: +```yaml +operations: + onUserSignUp: + title: User sign up + summary: Action to sign a user up. + description: A longer description + channel: + $ref: '#/channels/userSignup' + action: send + tags: + - name: user + description: operation related to user + - name: signup + description: operation related to a user's signUp + - name: register + description: operation related to a new registration + bindings: + amqp: + ack: false + traits: + - $ref: '#/components/operationTraits/kafka' +``` + +### `tags` in `message` object + +Tags linked to individual message objects in an AsyncAPI document enable logical grouping and categorization of messages based on specific criteria, requirements, channels, and operations. When implemented within a `message` object, the context of the `tags` object can be confined to that specific message or integrated as the strategy for consistent tagging and logical organization across the entire document. + +Here's a visual representation of a `tags` object inside a `message` object in an AsyncAPI document: +```mermaid +graph LR + A[message] --> B[summary] + A --> C[tags] + C --> D[name] + C --> E[description] + A --> F[headers] + A --> I[payload] + C --> Y[externalDocs] + style A fill:#47BCEE,stroke:#000; + style D fill:#47BCEE,stroke:#000; + style C fill:#47BCEE,stroke:#000; + style E fill:#47BCEE,stroke:#000; + style Y fill:#47BCEE,stroke:#000; +``` + +Below is an example of the `tags` object inside the `message` object in an AsyncAPI document: +```yaml + name: SimpleSignup +summary: A simple UserSignup example message +tags: + - name: userSignUp + description: some message related to user signup +headers: + correlationId: my-correlation-id + applicationInstanceId: myInstanceId +payload: + user: + someUserKey: someUserValue + signup: + someSignupKey: someSignupValue +``` + + +Here's an example illustrating all the tags being defined in the `components` object and then referenced in other components such as `servers`, `channels`, and more: + +```yml +asyncapi: 3.0.0 + +components: + tags: + speech: + name: Speech + description: All speech related topics. + video: + name: Video + description: All video related topics. + +info: + title: AsyncAPI Documentation + version: 1.0.0 + description: | + This AsyncAPI document provides an overview + of the event-driven system. + tags: + - $ref: '#/components/tags/speech' + - $ref: '#/components/tags/video' + +servers: + speech: + host: localhost:5672 + description: RabbitMQ broker for sending speech data. + protocol: amqp + tags: + - $ref: '#/components/tags/speech' + video: + host: localhost:5673 + description: RabbitMQ broker for video information. + protocol: amqp + tags: + - $ref: '#/components/tags/video' + +channels: + getSpeech: + address: 'application/speech/get' + servers: + - $ref: '#/servers/speech' + messages: + voice: + name: Voice + summary: Add info about the voice stream data. + tags: + - $ref: '#/components/tags/speech' + getVideo: + address: 'application/video/get' + servers: + - $ref: '#/servers/video' + messages: + voice: + name: Video + summary: Add info about the video data live bitrate and others. + tags: + - $ref: '#/components/tags/video' + +operations: + onVoiceStreamed: + title: Get speech data + channel: + $ref: '#/channels/getSpeech' + action: receive + tags: + - $ref: '#/components/tags/speech' + + onVideoStreamed: + title: Get video data + channel: + $ref: '#/channels/getVideo' + action: receive + tags: + - $ref: '#/components/tags/video' +``` diff --git a/pages/docs/guides/message-validation.md b/pages/docs/guides/message-validation.md index 01da64066c0..29ea985b947 100644 --- a/pages/docs/guides/message-validation.md +++ b/pages/docs/guides/message-validation.md @@ -85,17 +85,26 @@ With the Schema Registry in place, the producer first talks to the Schema Regist AsyncAPI is not directly involved in validation based on the Schema Registry. The good thing is that you do not have to duplicate schemas in your AsyncAPI document stored in Schema Registry. You can reference schemas from Schema Registry in your AsyncAPI documents. Here's an example of an AsyncAPI document where you can see both `schemaFormat` and `payload` referenced from the Schema Registry: ```yml -asyncapi: 2.6.0 +asyncapi: 3.0.0 info: title: Example with Avro version: 0.1.0 + channels: example: - publish: - message: - schemaFormat: 'application/vnd.apache.avro;version=1.9.0' + address: 'example' + messages: + avroMessage: payload: - $ref: 'https://example.europe-west3.gcp.confluent.cloud/subjects/test/versions/1/schema' + schemaFormat: 'application/vnd.apache.avro;version=1.9.0' + schema: + $ref: 'https://raw.githubusercontent.com/asyncapi/website/20a31a0396b41dd24b1bac877ab7ce3f58037c28/public/resources/casestudies/adeo/CostingRequestPayload.avsc' + +operations: + onMessage: + action: receive + channel: + $ref: '#/channels/example' ``` --- diff --git a/pages/docs/guides/validate.md b/pages/docs/guides/validate.md index 96b3505df66..a17ccf35bf7 100644 --- a/pages/docs/guides/validate.md +++ b/pages/docs/guides/validate.md @@ -5,7 +5,7 @@ weight: 120 --- ## Introduction -This guide teaches multiple ways to validate AsyncAPI documents. +In this guide, you'll learn multiple ways to validate AsyncAPI documents. ## Validate AsyncAPI documents Validating an AsyncAPI document can mean one of two things: @@ -51,7 +51,7 @@ Let's discuss an example. While the `summary` property is optional in an AsyncAP -One way this can be done is by using **Spectral**, an API linting tool which has a built-in [custom ruleset properties](https://meta.stoplight.io/docs/spectral/e5b9616d6d50c-custom-rulesets) with [AsyncAPI rules](https://meta.stoplight.io/docs/spectral/1e63ffd0220f3-async-api-rules) for the AsyncAPI specification. It also enables you to define company-specific rules that you can use internally. +One way to do this is to use the **Spectral** open-source tool. It enables you to define company-specific rules that you can use internally. To get started: 1. Install [Spectral](https://meta.stoplight.io/docs/spectral/b8391e051b7d8-installation). @@ -59,8 +59,6 @@ To get started: Example: ```js { - "formats": ["asyncapi2"], - "extends": "spectral:asyncapi", "rules": { // add your own rules here } @@ -69,31 +67,24 @@ To get started: 3. Create and add your own custom ruleset: ```js - { - "formats": ["asyncapi2"], - "extends": "spectral:asyncapi", + { "rules": { - // add your own rules here - "valid-document-version": { - "message": "Version must match 2.x.x", - "severity": "hint", - "given": "$.info", - "then": [ - { - "field": "version", - "function": "defined" - }, - { - "field": "version", - "function": "pattern", - "functionOptions": { - "match": "^[0-9]+$" - } - } - ] - } + "valid-document-version": { + "message": "Application title must start with upper case", + "severity": "error", + "given": "$.info", + "then": [ + { + "field": "title", + "function": "pattern", + "functionOptions": { + "match": "^[A-Z]" + } + } + ] + } } - } + } ``` 4. After setting up Spectral and creating custom rules following steps 1 - 3, validate your AsyncAPI document using this Spectral CLI command: diff --git a/pages/docs/migration/_section.md b/pages/docs/migration/_section.md new file mode 100644 index 00000000000..48556fd333c --- /dev/null +++ b/pages/docs/migration/_section.md @@ -0,0 +1,4 @@ +--- +title: Migrations +weight: 6 +--- diff --git a/pages/docs/migration/index.md b/pages/docs/migration/index.md new file mode 100644 index 00000000000..195bcc35cf5 --- /dev/null +++ b/pages/docs/migration/index.md @@ -0,0 +1,15 @@ +--- +title: "Overview" +--- +Migration to a new major version is always difficult, and AsyncAPI is no exception, but we want to provide as smooth a transition as possible. + +If you are just looking to update your AsyncAPI document, then we suggest you use the [AsyncAPI converter](https://github.com/asyncapi/converter-js). You can do this directly in the CLI with: + +```bash +asyncapi convert asyncapi.json --output=new_asyncapi.json --target-version=x.x.x +``` + +For a detailed read-through about all the changes (non-breaking as well), please do [read the release notes](https://www.asyncapi.com/blog?tags=Release+Notes) for the desired version before hand, as it will give you some more context about the changes. + +Here are all the migration guides: +- [Migrating to v3](/docs/migration/migrating-to-v3) diff --git a/pages/docs/migration/migrating-to-v3.md b/pages/docs/migration/migrating-to-v3.md new file mode 100644 index 00000000000..95b6709ca9a --- /dev/null +++ b/pages/docs/migration/migrating-to-v3.md @@ -0,0 +1,443 @@ +--- +title: "Migrating to v3" +--- + + + +Migration to a new major version is always difficult, and AsyncAPI is no exception. To provide as smooth a transition as possible, this document shows the breaking changes between AsyncAPI v2 and v3 in an interactive manner. + +If you want to update your AsyncAPI document, use the [AsyncAPI converter](https://github.com/asyncapi/converter-js) directly in the CLI with the following command: + +```bash +asyncapi convert asyncapi.json --output=asyncapi_v3.json --target-version=3.0.0 +``` + +For a detailed read-through about all the changes (non-breaking as well), read all the [v3 release notes](/blog/release-notes-3.0.0) first to acquire additional context about the changes introduced in v3. + +import {Asyncapi3ChannelComparison, Asyncapi3IdAndAddressComparison, Asyncapi3MetaComparison, Asyncapi3OperationComparison,Asyncapi3SchemaFormatComparison, Asyncapi3ServerComparison, +Asyncapi3ParameterComparison} from '../../../components/Asyncapi3Comparison' + +## Moved metadata + +In v2, two properties of `tags` and `externalDocs` were placed outside of the [Info Object](https://www.asyncapi.com/docs/reference/specification/v3.0.0-next-major-spec.12#infoObject). For consistency, `info` has been moved in v3. + + + +```yml +asyncapi: 2.6.0 +info: + ... +externalDocs: + description: Find more info here + url: https://www.asyncapi.com +tags: + - name: e-commerce +``` + +```yml +asyncapi: 3.0.0 +info: + externalDocs: + description: Find more info here + url: https://www.asyncapi.com + tags: + - name: e-commerce +``` + +## Server URL splitting up +There was occasional confusion regarding what the URL of a [Server Object](https://www.asyncapi.com/docs/reference/specification/v3.0.0-next-major-spec.12#serverObject) should include. + + + +In v2, the URL was often a lengthy string, sometimes redundantly including details like the protocol. + +In v3, the `url` property has been divided into `host`, `pathname`, and `protocol`—as was the case in v2—making the information more explicit. + +```yml +asyncapi: 2.6.0 +servers: + production: + url: "amqp://rabbitmq.in.mycompany.com:5672/production" + protocol: "amqp" +``` + +```yml +asyncapi: 3.0.0 +servers: + production: + host: "rabbitmq.in.mycompany.com:5672", + pathname: "/production", + protocol: "amqp", +``` + +## Operation, channel, and message decoupling + +The decoupling of operations, channels, and messages is the most significant breaking change in v3, fundamentally altering how they relate to each other. + + + +In v2, reusing channels and having multiple operations per channel, such as operation variants, was impossible. + +In v3, this has become possible, emphasizing that a channel and message should be independent of the operations performed. + +For message brokers like Kafka, this is akin to defining topics and their associated messages. In REST interfaces, it pertains to the path and request type (e.g., POST, GET), along with the corresponding request and response messages. For WebSocket, it encompasses all messages transmitted through the WebSocket server. For Socket.IO, it delineates all the rooms and their messages. + +Channels are now reusable across multiple AsyncAPI documents, each facilitating a slightly different action. + +```yml +asyncapi: 2.6.0 +... +channels: + user/signedup: + publish: + message: + payload: + type: object + properties: + displayName: + type: string + description: Name of the user +``` + +```yml +asyncapi: 3.0.0 +... +channels: + UserSignup: + address: "user/signedup" + messages: + UserMessage: + payload: + type: object + properties: + displayName: + type: string + description: Name of the user +operations: + ConsumeUserSignups: + action: receive + channel: + $ref: "#/channels/UserSignup" +``` + +Read more about the confusion between publishing and subscribing in the [Operation keywords](#operation-keywords) section. + +## Channel address and channel key + +Another breaking change is that the channel key no longer represents the channel path. Instead, it's now an arbitrary unique ID. The channel paths are now defined using the `address` property within the [Channel Object](https://www.asyncapi.com/docs/reference/specification/v3.0.0-next-major-spec.12#channelObject). + + + +In v2, the channel's `address/topic/path` doubled as its ID, hindering reusability and preventing the definition of scenarios where the same address was used in different contexts. + +In v3, the `address/topic/path` has been shifted to an `address` property, allowing the channel ID to be distinct and arbitrary. + +```yml +asyncapi: 2.6.0 +... +channels: + test/path: + ... +``` + +```yml +asyncapi: 3.0.0 +channels: + testPathChannel: + address: "test/path" +``` + +## Operation keywords + +Another significant change is the shift away from defining operations using `publish` and `subscribe`, which had inverse meanings for your application. Now, you directly specify your application's behavior using `send` and `receive` via the `action` property in the [Operation Object](https://www.asyncapi.com/docs/reference/specification/v3.0.0-next-major-spec.12#operationObject). + + + +In v2, the `publish` and `subscribe` operations consistently caused confusion, even among those familiar with the intricacies. + +When you specified `publish`, it implied that others could `publish` to this channel since your application subscribed to it. Conversely, `subscribe` meant that others could subscribe because your application was the one publishing. + +In v3, these operations have been entirely replaced with an `action` property that clearly indicates what your application does. That eliminates ambiguities related to other parties or differing perspectives. + +Read more information about the confusion between publishing and subscribing: +- Fran Méndez's [Proposal to solve publish/subscribe confusion](https://github.com/asyncapi/spec/issues/618) +- Nic Townsend's blog post [Demystifying the Semantics of Publish and Subscribe](https://www.asyncapi.com/blog/publish-subscribe-semantics) + +Here is an example where the application both consumes and produces messages to the test channel: + +```yml +asyncapi: 2.6.0 +... +channels: + test/path: + subscribe: + ... + publish: + ... +``` + +```yml +asyncapi: 3.0.0 +channels: + testPathChannel: + address: "test/path" + ... +operations: + publishToTestPath: + action: send + channel: + $ref: "#/channels/testPathChannel" + consumeFromTestPath: + action: receive + channel: + $ref: "#/channels/testPathChannel" +``` + +## Messages instead of message +In v2, channels were defined with one or more messages using the `oneOf` property. + +In v3, messages are defined using the [Messages Object](https://www.asyncapi.com/docs/reference/specification/v3.0.0-next-major-spec.12#messagesObject). For a channel with multiple messages, you specify multiple key-value pairs. For a channel with just one message, you use a single key-value pair. + +```yml +asyncapi: 2.6.0 +... +channels: + user/signedup: + message: + oneOf: + - messageId: UserMessage + ... + - messageId: UserMessage2 + ... + +asyncapi: 2.6.0 +... +channels: + user/signedup: + message: + messageId: UserMessage + ... +``` + +```yml +asyncapi: 3.0.0 +... +channels: + UserSignup: + address: user/signedup + messages: + UserMessage: + ... + UserMessage2: + ... + +asyncapi: 3.0.0 +... +channels: + UserSignup: + address: user/signedup + messages: + UserMessage: + ... +``` + +We have updated the structure of the Message Object by eliminating the `messageId` property. We now use the ID of the Message Object itself as the key in the key/value pairing, rendering a separate `messageId` property redundant. + +## Unifying explicit and implicit references + +In v2, implicit references were allowed in certain instances. For instance, the server security configuration was identified by name, linking to a [Security Schema Object](https://www.asyncapi.com/docs/reference/specification/v2.6.0#securitySchemeObject) within the components. Similarly, a channel could reference global servers by name. + +In v3, all such references MUST be explicit. As a result, we made a minor modification to the [Server Object](https://www.asyncapi.com/docs/reference/specification/v3.0.0-next-major-spec.12#serverObject) `security` property, transforming it from an object to an array. The details regarding required scopes for OAuth and OpenID Connect were then relocated to the [Security Scheme Object](https://www.asyncapi.com/docs/reference/specification/v3.0.0-next-major-spec.12#securitySchemeObject). + +```yml +asyncapi: 2.6.0 +servers: + production: + ... + security: + oauth_test: ["write:pets"] +... +channels: + test/path: + severs: + - production +components: + securitySchemes: + oauth_test: + type: oauth2 + flows: + implicit: + authorizationUrl: https://example.com/api/oauth/dialog + availableScopes: + write:pets: modify pets in your account + read:pets: read your pets + scopes: + - 'write:pets' +``` + +```yml +asyncapi: 3.0.0 +servers: + production: + ... + security: + - $ref: "#/components/securitySchemes/oauth_test" +... +channels: + test/path: + severs: + - $ref: "#/servers/production" +components: + securitySchemes: + oauth_test: + type: oauth2 + flows: + implicit: + authorizationUrl: https://example.com/api/oauth/dialog + availableScopes: + write:pets: modify pets in your account + read:pets: read your pets + scopes: + - "write:pets" +``` + +## New trait behavior +In v2, traits invariably overwrote any duplicate properties specified both in the traits and the corresponding object. For instance, if both message traits and the message object defined headers, only the headers from the message traits would be recognized, effectively overriding those in the Message Object. + +In v3, this behavior has been revised. The primary objects now take precedence over any definitions in the traits. Such an adjustment is consistent for traits in both operation and message objects. + +Here is a message object and associated traits: +```yml +messageId: userSignup +description: A longer description. +payload: + $ref: '#/components/schemas/userSignupPayload' +traits: + - summary: Action to sign a user up. + description: Description from trait. +``` + +In v2, after applying the traits, the complete message object appeared as follows. Note how the `description` was overridden: + +```yml +messageId: userSignup +summary: Action to sign a user up. +description: Description from trait. +payload: + $ref: '#/components/schemas/userSignupPayload' +``` +That is the default behavior of the [JSON Merge Patch](https://tools.ietf.org/html/rfc7386) algorithm we use. + +In v3, we've instituted a guideline stating, `A property on a trait MUST NOT override the same property on the target object`. Consequently, after applying the traits in v3, the complete message object appears as follows: + +```yml +messageId: userSignup +summary: Action to sign a user up. +description: A longer description. # it's still description from "main" object +payload: + $ref: '#/components/schemas/userSignupPayload' +``` +Notice how the `description` is no longer overwritten. + +## Schema format and schemas + +One limitation with schemas has always been the inability to reuse them across different schema formats. + + + +In v2, the details about which schema format the payload uses are found within the message object, rather than being directly linked to the schema itself. Such separation hampers reusability, as the two data points aren't directly correlated. + +To address this in v3, we've introduced [a multi-format schema object](https://www.asyncapi.com/docs/reference/specification/v3.0.0-next-major-spec.12#multiFormatSchemaObject) that consolidates this information. Consequently, whenever you utilize `schemaFormat`, you'll need to modify the schema as follows: + +```yml +asyncapi: 2.6.0 +... +channels: + user/signedup: + publish: + message: + schemaFormat: 'application/vnd.apache.avro;version=1.9.0' + payload: + type: record + name: User + namespace: com.company + doc: User information + fields: + - name: displayName + type: string +``` + +```yml +asyncapi: 3.0.0 +... +channels: + UserSignup: + address: user/signedup + messages: + userSignup: + payload: + schemaFormat: 'application/vnd.apache.avro;version=1.9.0' + schema: + type: record + name: User + namespace: com.company + doc: User information + fields: + - name: displayName + type: string +``` + +## Optional channels +In v3, defining channels has become entirely optional, eliminating the need to specify channels as an empty object (required in v2). + +```yml +asyncapi: 2.6.0 +... +channels: {} +``` + +```yml +asyncapi: 3.0.0 +... +``` + +## Restricted parameters object + +Parameters have often prioritized convenience over accurately reflecting real-world use cases. + + + +In v2, we significantly streamlined the Schema Object. While the previous version offered full capability with numerous, often underutilized options, it posed challenges in serializing objects or booleans in the channel path. + +The new v3 simplifies this by consistently using the string type and limiting available properties. Now, you can only access `enum`, `default`, `description`, `examples`, and `location`, ensuring a more focused and practical approach." + +```yml +asyncapi: 2.6.0 +... +channels: + user/{user_id}/signedup: + parameters: + location: "$message.payload" + description: Just a test description + schema: + type: string + enum: ["test"] + default: "test" + examples: ["test"] + ... +``` + +```yml +asyncapi: 3.0.0 +... +channels: + userSignedUp: + address: user/{user_id}/signedup + parameters: + user_id: + enum: ["test"] + default: "test" + description: Just a test description + examples: ["test"] + location: "$message.payload" +``` diff --git a/pages/docs/reference/specification/v2.0.0.md b/pages/docs/reference/specification/v2.0.0.md deleted file mode 100644 index 00f27112ab7..00000000000 --- a/pages/docs/reference/specification/v2.0.0.md +++ /dev/null @@ -1,2205 +0,0 @@ -# AsyncAPI Specification - -#### Disclaimer - -Part of this content has been taken from the great work done by the folks at the [OpenAPI Initiative](https://openapis.org). Mainly because **it's a great work** and we want to keep as much compatibility as possible with the [OpenAPI Specification](https://github.com/OAI/OpenAPI-Specification). - -#### Version 2.0.0 - -The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this document are to be interpreted as described in [RFC 2119](http://www.ietf.org/rfc/rfc2119.txt). - -The AsyncAPI Specification is licensed under [The Apache License, Version 2.0](http://www.apache.org/licenses/LICENSE-2.0.html). - -## Introduction - -The AsyncAPI Specification is a project used to describe and document message-driven APIs in a machine-readable format. It’s protocol-agnostic, so you can use it for APIs that work over any protocol (e.g., AMQP, MQTT, WebSockets, Kafka, STOMP, HTTP, etc). - -The AsyncAPI Specification defines a set of files required to describe such an API. -These files can then be used to create utilities, such as documentation, integration and/or testing tools. - -The file(s) MUST describe the operations an [application](#definitionsApplication) accepts. For instance, consider the following AsyncAPI definition snippet: - -```yaml -user/signedup: - subscribe: - $ref: "#/components/messages/userSignUp" -``` - -It means that the [application](#definitionsApplication) allows [consumers](#definitionsConsumer) to subscribe to the `user/signedup` [channel](#definitionsChannel) to receive userSignUp [messages](#definitionsMessage). - -**The AsyncAPI specification does not assume any kind of software topology, architecture or pattern.** Therefore, a server MAY be a message broker, a web server or any other kind of computer program capable of sending and/or receiving data. However, AsyncAPI offers a mechanism called "bindings" that aims to help with more specific information about the protocol and/or the topology. - -## Definitions - -#### Application -An application is any kind of computer program or a group of them. It MUST be a [producer](#definitionsProducer), a [consumer](#definitionsConsumer) or both. An application MAY be a microservice, IoT device (sensor), mainframe process, etc. An application MAY be written in any number of different programming languages as long as they support the selected [protocol](#definitionsProtocol). An application MUST also use a protocol supported by the server in order to connect and exchange [messages](#definitionsMessage). - -#### Producer -A producer is a type of application, connected to a server, that is creating [messages](#definitionsMessage) and addressing them to [channels](#definitionsChannel). A producer MAY be publishing to multiple channels depending on the server, protocol, and use-case pattern. - -#### Consumer -A consumer is a type of application, connected to a server via a supported [protocol](#definitionsProtocol), that is consuming [messages](#definitionsMessage) from [channels](#definitionsChannel). A consumer MAY be consuming from multiple channels depending on the server, protocol, and the use-case pattern. - -#### Message -A message is the mechanism by which information is exchanged via a channel between servers and applications. A message MUST contain a payload and MAY also contain headers. The headers MAY be subdivided into [protocol](#definitionsProtocol)-defined headers and header properties defined by the application which can act as supporting metadata. The payload contains the data, defined by the application, which MUST be serialized into a format (JSON, XML, Avro, binary, etc.). Since a message is a generic mechanism, it can support multiple interaction patterns such as event, command, request, or response. - -#### Channel -A channel is an addressable component, made available by the server, for the organization of [messages](#definitionsMessage). [Producer](#definitionsProducer) applications send messages to channels and [consumer](#definitionsConsumer) applications consume messages from channels. Servers MAY support many channel instances, allowing messages with different content to be addressed to different channels. Depending on the server implementation, the channel MAY be included in the message via protocol-defined headers. - -#### Protocol -A protocol is the mechanism (wireline protocol OR API) by which [messages](#definitionsMessage) are exchanged between the application and the [channel](#definitionsChannel). Example protocol include, but are not limited to, AMQP, HTTP, JMS, Kafka, MQTT, STOMP, WebSocket. - -## Specification - -### Format - -The files describing the message-driven API in accordance with the AsyncAPI Specification are represented as JSON objects and conform to the JSON standards. -YAML, being a superset of JSON, can be used as well to represent a A2S (AsyncAPI Specification) file. - -For example, if a field is said to have an array value, the JSON array representation will be used: - -```yaml -{ - "field" : [...] -} -``` - -While the API is described using JSON it does not impose a JSON input/output to the API itself. - -All field names in the specification are **case sensitive**. - -The schema exposes two types of fields. -Fixed fields, which have a declared name, and Patterned fields, which declare a regex pattern for the field name. -Patterned fields can have multiple occurrences as long as each has a unique name. - -In order to preserve the ability to round-trip between YAML and JSON formats, YAML version [1.2](http://www.yaml.org/spec/1.2/spec.html) is recommended along with some additional constraints: - -- Tags MUST be limited to those allowed by the [JSON Schema ruleset](http://www.yaml.org/spec/1.2/spec.html#id2803231) -- Keys used in YAML maps MUST be limited to a scalar string, as defined by the YAML Failsafe schema ruleset - -### File Structure - -The A2S representation of the API is made of a single file. -However, parts of the definitions can be split into separate files, at the discretion of the user. -This is applicable for `$ref` fields in the specification as follows from the [JSON Schema](https://json-schema.org/understanding-json-schema/structuring.html) definitions. - -By convention, the AsyncAPI Specification (A2S) file is named `asyncapi.json` or `asyncapi.yaml`. - -### Schema - -#### AsyncAPI Object - -This is the root document object for the API specification. -It combines resource listing and API declaration together into one document. - -##### Fixed Fields - -Field Name | Type | Description ----|:---:|--- -asyncapi | [AsyncAPI Version String](#A2SVersionString) | **Required.** Specifies the AsyncAPI Specification version being used. It can be used by tooling Specifications and clients to interpret the version. The structure shall be `major`.`minor`.`patch`, where `patch` versions _must_ be compatible with the existing `major`.`minor` tooling. Typically patch versions will be introduced to address errors in the documentation, and tooling should typically be compatible with the corresponding `major`.`minor` (1.0.*). Patch versions will correspond to patches of this document. -id | [Identifier](#A2SIdString) | Identifier of the [application](#definitionsApplication) the AsyncAPI document is defining. -info | [Info Object](#infoObject) | **Required.** Provides metadata about the API. The metadata can be used by the clients if needed. -servers | [Servers Object](#serversObject) | Provides connection details of servers. -channels | [Channels Object](#channelsObject) | **Required** The available channels and messages for the API. -components | [Components Object](#componentsObject) | An element to hold various schemas for the specification. -tags | [Tags Object](#tagsObject) | A list of tags used by the specification with additional metadata. Each tag name in the list MUST be unique. -externalDocs | [External Documentation Object](#externalDocumentationObject) | Additional external documentation. - - -This object can be extended with [Specification Extensions](#specificationExtensions). - -#### AsyncAPI Version String - -The version string signifies the version of the AsyncAPI Specification that the document complies to. -The format for this string _must_ be `major`.`minor`.`patch`. The `patch` _may_ be suffixed by a hyphen and extra alphanumeric characters. - -A `major`.`minor` shall be used to designate the AsyncAPI Specification version, and will be considered compatible with the AsyncAPI Specification specified by that `major`.`minor` version. -The patch version will not be considered by tooling, making no distinction between `1.0.0` and `1.0.1`. - -In subsequent versions of the AsyncAPI Specification, care will be given such that increments of the `minor` version should not interfere with operations of tooling developed to a lower minor version. Thus a hypothetical `1.1.0` specification should be usable with tooling designed for `1.0.0`. - -#### Identifier - -This field represents a unique universal identifier of the [application](#definitionsApplication) the AsyncAPI document is defining. It must conform to the URI format, according to [RFC3986](http://tools.ietf.org/html/rfc3986). - -It is RECOMMENDED to use a [URN](https://tools.ietf.org/html/rfc8141) to globally and uniquely identify the application during long periods of time, even after it becomes unavailable or ceases to exist. - -###### Examples - -```json -{ - "id": "urn:com:smartylighting:streetlights:server" -} -``` - -```yaml -id: 'urn:com:smartylighting:streetlights:server' -``` - -```json -{ - "id": "https://github.com/smartylighting/streetlights-server" -} -``` - -```yaml -id: 'https://github.com/smartylighting/streetlights-server' -``` - -#### Info Object - -The object provides metadata about the API. -The metadata can be used by the clients if needed. - -##### Fixed Fields - -Field Name | Type | Description ----|:---:|--- -title | `string` | **Required.** The title of the application. -version | `string` | **Required** Provides the version of the application API (not to be confused with the specification version). -description | `string` | A short description of the application. [CommonMark syntax](http://spec.commonmark.org/) can be used for rich text representation. -termsOfService | `string` | A URL to the Terms of Service for the API. MUST be in the format of a URL. -contact | [Contact Object](#contactObject) | The contact information for the exposed API. -license | [License Object](#licenseObject) | The license information for the exposed API. - -This object can be extended with [Specification Extensions](#specificationExtensions). - -##### Info Object Example: - -```json -{ - "title": "AsyncAPI Sample App", - "description": "This is a sample server.", - "termsOfService": "http://asyncapi.org/terms/", - "contact": { - "name": "API Support", - "url": "http://www.asyncapi.org/support", - "email": "support@asyncapi.org" - }, - "license": { - "name": "Apache 2.0", - "url": "http://www.apache.org/licenses/LICENSE-2.0.html" - }, - "version": "1.0.1" -} -``` - -```yaml -title: AsyncAPI Sample App -description: This is a sample server. -termsOfService: http://asyncapi.org/terms/ -contact: - name: API Support - url: http://www.asyncapi.org/support - email: support@asyncapi.org -license: - name: Apache 2.0 - url: http://www.apache.org/licenses/LICENSE-2.0.html -version: 1.0.1 -``` - -#### Contact Object - -Contact information for the exposed API. - -##### Fixed Fields - -Field Name | Type | Description ----|:---:|--- -name | `string` | The identifying name of the contact person/organization. -url | `string` | The URL pointing to the contact information. MUST be in the format of a URL. -email | `string` | The email address of the contact person/organization. MUST be in the format of an email address. - -This object can be extended with [Specification Extensions](#specificationExtensions). - -##### Contact Object Example: - -```json -{ - "name": "API Support", - "url": "http://www.example.com/support", - "email": "support@example.com" -} -``` - -```yaml -name: API Support -url: http://www.example.com/support -email: support@example.com -``` - -#### License Object - -License information for the exposed API. - -##### Fixed Fields - -Field Name | Type | Description ----|:---:|--- -name | `string` | **Required.** The license name used for the API. -url | `string` | A URL to the license used for the API. MUST be in the format of a URL. - -This object can be extended with [Specification Extensions](#specificationExtensions). - -##### License Object Example: - -```json -{ - "name": "Apache 2.0", - "url": "http://www.apache.org/licenses/LICENSE-2.0.html" -} -``` - -```yaml -name: Apache 2.0 -url: http://www.apache.org/licenses/LICENSE-2.0.html -``` - -#### Servers Object - -The Servers Object is a map of [Server Objects](#serverObject). - -##### Patterned Fields - -Field Pattern | Type | Description ----|:---:|--- -`^[A-Za-z0-9_\-]+$` | [Server Object](#serverObject) | The definition of a server this application MAY connect to. - -##### Servers Object Example - -```json -{ - "production": { - "url": "development.gigantic-server.com", - "description": "Development server", - "protocol": "kafka", - "protocolVersion": "1.0.0" - } -} -``` - -```yaml -production: - url: development.gigantic-server.com - description: Development server - protocol: kafka - protocolVersion: '1.0.0' -``` - - -#### Server Object - -An object representing a message broker, a server or any other kind of computer program capable of sending and/or receiving data. This object is used to capture details such as URIs, protocols and security configuration. Variable substitution can be used so that some details, for example usernames and passwords, can be injected by code generation tools. - -##### Fixed Fields - -Field Name | Type | Description ----|:---:|--- -url | `string` | **REQUIRED**. A URL to the target host. This URL supports Server Variables and MAY be relative, to indicate that the host location is relative to the location where the AsyncAPI document is being served. Variable substitutions will be made when a variable is named in `{`brackets`}`. -protocol | `string` | **REQUIRED**. The protocol this URL supports for connection. Supported protocol include, but are not limited to: `amqp`, `amqps`, `http`, `https`, `jms`, `kafka`, `kafka-secure`, `mqtt`, `secure-mqtt`, `stomp`, `stomps`, `ws`, `wss`. -protocolVersion | `string` | The version of the protocol used for connection. For instance: AMQP `0.9.1`, HTTP `2.0`, Kafka `1.0.0`, etc. -description | `string` | An optional string describing the host designated by the URL. [CommonMark syntax](http://spec.commonmark.org/) MAY be used for rich text representation. -variables | Map[`string`, [Server Variable Object](#serverVariableObject)] | A map between a variable name and its value. The value is used for substitution in the server's URL template. -security | [[Security Requirement Object](#securityRequirementObject)] | A declaration of which security mechanisms can be used with this server. The list of values includes alternative security requirement objects that can be used. Only one of the security requirement objects need to be satisfied to authorize a connection or operation. -bindings | [Server Bindings Object](#serverBindingsObject) | A free-form map where the keys describe the name of the protocol and the values describe protocol-specific definitions for the server. - -This object MAY be extended with [Specification Extensions](#specificationExtensions). - -##### Server Object Example - -A single server would be described as: - -```json -{ - "url": "development.gigantic-server.com", - "description": "Development server", - "protocol": "kafka", - "protocolVersion": "1.0.0" -} -``` - -```yaml -url: development.gigantic-server.com -description: Development server -protocol: kafka -protocolVersion: '1.0.0' -``` - -The following shows how multiple servers can be described, for example, at the AsyncAPI Object's [`servers`](#A2SServers): - -```json -{ - "servers": { - "development": { - "url": "development.gigantic-server.com", - "description": "Development server", - "protocol": "amqp", - "protocolVersion": "0.9.1" - }, - "staging": { - "url": "staging.gigantic-server.com", - "description": "Staging server", - "protocol": "amqp", - "protocolVersion": "0.9.1" - }, - "production": { - "url": "api.gigantic-server.com", - "description": "Production server", - "protocol": "amqp", - "protocolVersion": "0.9.1" - } - } -} -``` - -```yaml -servers: - development: - url: development.gigantic-server.com - description: Development server - protocol: amqp - protocolVersion: 0.9.1 - staging: - url: staging.gigantic-server.com - description: Staging server - protocol: amqp - protocolVersion: 0.9.1 - production: - url: api.gigantic-server.com - description: Production server - protocol: amqp - protocolVersion: 0.9.1 -``` - -The following shows how variables can be used for a server configuration: - -```json -{ - "servers": [ - { - "url": "{username}.gigantic-server.com:{port}/{basePath}", - "description": "The production API server", - "protocol": "secure-mqtt", - "variables": { - "username": { - "default": "demo", - "description": "This value is assigned by the service provider, in this example `gigantic-server.com`" - }, - "port": { - "enum": [ - "8883", - "8884" - ], - "default": "8883" - }, - "basePath": { - "default": "v2" - } - } - } - ] -} -``` - -```yaml -servers: -- url: '{username}.gigantic-server.com:{port}/{basePath}' - description: The production API server - protocol: secure-mqtt - variables: - username: - # note! no enum here means it is an open value - default: demo - description: This value is assigned by the service provider, in this example `gigantic-server.com` - port: - enum: - - '8883' - - '8884' - default: '8883' - basePath: - # open meaning there is the opportunity to use special base paths as assigned by the provider, default is `v2` - default: v2 -``` - - -#### Server Variable Object - -An object representing a Server Variable for server URL template substitution. - -##### Fixed Fields - -Field Name | Type | Description ----|:---:|--- -enum | [`string`] | An enumeration of string values to be used if the substitution options are from a limited set. -default | `string` | The default value to use for substitution, and to send, if an alternate value is _not_ supplied. -description | `string` | An optional description for the server variable. [CommonMark syntax](http://spec.commonmark.org/) MAY be used for rich text representation. -examples | [`string`] | An array of examples of the server variable. - -This object MAY be extended with [Specification Extensions](#specificationExtensions). - - - - - -#### Default Content Type - -A string representing the default content type to use when encoding/decoding a message's payload. The value MUST be a specific media type (e.g. `application/json`). This value MUST be used by schema parsers when the [contentType](#messageObjectContentType) property is omitted. - -In case a message can't be encoded/decoded using this value, schema parsers MUST use their default content type. - -##### Default Content Type Example - -```json -{ - "defaultContentType": "application/json" -} -``` - -```yaml -defaultContentType: application/json -``` - - - - - - -#### Channels Object - -Holds the relative paths to the individual channel and their operations. Channel paths are relative to servers. - -Channels are also known as "topics", "routing keys", "event types" or "paths". - -##### Patterned Fields - -Field Pattern | Type | Description ----|:---:|--- -{channel} | [Channel Item Object](#channelItemObject) | A relative path to an individual channel. The field name MUST be in the form of a [RFC 6570 URI template](https://tools.ietf.org/html/rfc6570). Query parameters and fragments SHALL NOT be used, instead use [bindings](#channelBindingsObject) to define them. - -##### Channels Object Example - -```json -{ - "user/signedup": { - "subscribe": { - "$ref": "#/components/messages/userSignedUp" - } - } -} -``` - -```yaml -user/signedup: - subscribe: - $ref: "#/components/messages/userSignedUp" -``` - - - - -#### Channel Item Object - -Describes the operations available on a single channel. - -##### Fixed Fields - -Field Name | Type | Description ----|:---:|--- -$ref | `string` | Allows for an external definition of this channel item. The referenced structure MUST be in the format of a [Channel Item Object](#channelItemObject). If there are conflicts between the referenced definition and this Channel Item's definition, the behavior is *undefined*. -description | `string` | An optional description of this channel item. [CommonMark syntax](http://spec.commonmark.org/) can be used for rich text representation. -subscribe | [Operation Object](#operationObject) | A definition of the SUBSCRIBE operation. -publish | [Operation Object](#operationObject) | A definition of the PUBLISH operation. -parameters | [Parameters Object](#parametersObject) | A map of the parameters included in the channel name. It SHOULD be present only when using channels with expressions (as defined by [RFC 6570 section 2.2](https://tools.ietf.org/html/rfc6570#section-2.2)). -bindings | [Channel Bindings Object](#channelBindingsObject) | A free-form map where the keys describe the name of the protocol and the values describe protocol-specific definitions for the channel. - -This object can be extended with [Specification Extensions](#specificationExtensions). - -##### Channel Item Object Example - -```json -{ - "description": "This channel is used to exchange messages about users signing up", - "subscribe": { - "summary": "A user signed up.", - "message": { - "description": "A longer description of the message", - "payload": { - "type": "object", - "properties": { - "user": { - "$ref": "#/components/schemas/user" - }, - "signup": { - "$ref": "#/components/schemas/signup" - } - } - } - } - }, - "bindings": { - "amqp": { - "is": "queue", - "queue": { - "exclusive": true - } - } - } -} -``` - -```yaml -description: This channel is used to exchange messages about users signing up -subscribe: - summary: A user signed up. - message: - description: A longer description of the message - payload: - type: object - properties: - user: - $ref: "#/components/schemas/user" - signup: -bindings: - amqp: - is: queue - queue: - exclusive: true -``` - -Using `oneOf` to specify multiple messages per operation: - -```json -{ - "subscribe": { - "message": { - "oneOf": [ - { "$ref": "#/components/messages/signup" }, - { "$ref": "#/components/messages/login" } - ] - } - } -} -``` - -```yaml -subscribe: - message: - oneOf: - - $ref: '#/components/messages/signup' - - $ref: '#/components/messages/login' -``` - - - - - - - -#### Operation Object - -Describes a publish or a subscribe operation. This provides a place to document how and why messages are sent and received. For example, an operation might describe a chat application use case where a user sends a text message to a group. - -##### Fixed Fields - -Field Name | Type | Description ----|:---:|--- -operationId | `string` | Unique string used to identify the operation. The id MUST be unique among all operations described in the API. The operationId value is **case-sensitive**. Tools and libraries MAY use the operationId to uniquely identify an operation, therefore, it is RECOMMENDED to follow common programming naming conventions. -summary | `string` | A short summary of what the operation is about. -description | `string` | A verbose explanation of the operation. [CommonMark syntax](http://spec.commonmark.org/) can be used for rich text representation. -tags | [[Tag Object](#tagObject)] | A list of tags for API documentation control. Tags can be used for logical grouping of operations. -externalDocs | [External Documentation Object](#externalDocumentationObject) | Additional external documentation for this operation. -bindings | Map[`string`, [Operation Bindings Object](#operationBindingsObject)] | A free-form map where the keys describe the name of the protocol and the values describe protocol-specific definitions for the operation. -traits | [[Operation Trait Object](#operationTraitObject)] | A list of traits to apply to the operation object. Traits MUST be merged into the operation object using the [JSON Merge Patch](https://tools.ietf.org/html/rfc7386) algorithm in the same order they are defined here. -message | [Message Object](#messageObject) | A definition of the message that will be published or received on this channel. `oneOf` is allowed here to specify multiple messages, however, **a message MUST be valid only against one of the referenced message objects.** - -This object can be extended with [Specification Extensions](#specificationExtensions). - -##### Operation Object Example - -```json -{ - "operationId": "registerUser", - "summary": "Action to sign a user up.", - "description": "A longer description", - "tags": [ - { "name": "user" }, - { "name": "signup" }, - { "name": "register" } - ], - "message": { - "headers": { - "type": "object", - "properties": { - "applicationInstanceId": { - "description": "Unique identifier for a given instance of the publishing application", - "type": "string" - } - } - }, - "payload": { - "type": "object", - "properties": { - "user": { - "$ref": "#/components/schemas/userCreate" - }, - "signup": { - "$ref": "#/components/schemas/signup" - } - } - } - }, - "bindings": { - "amqp": { - "ack": false - }, - }, - "traits": [ - { "$ref": "#/components/operationTraits/kafka" } - ] -} -``` - -```yaml -operationId: registerUser -summary: Action to sign a user up. -description: A longer description -tags: - - name: user - - name: signup - - name: register -message: - headers: - type: object - properties: - applicationInstanceId: - description: Unique identifier for a given instance of the publishing application - type: string - payload: - type: object - properties: - user: - $ref: "#/components/schemas/userCreate" - signup: - $ref: "#/components/schemas/signup" -bindings: - amqp: - ack: false -traits: - - $ref: "#/components/operationTraits/kafka" -``` - - - - -#### Operation Trait Object - -Describes a trait that MAY be applied to an [Operation Object](#operationObject). This object MAY contain any property from the [Operation Object](#operationObject), except `message` and `traits`. - -If you're looking to apply traits to a message, see the [Message Trait Object](#messageTraitObject). - -##### Fixed Fields - -Field Name | Type | Description ----|:---:|--- -operationId | `string` | Unique string used to identify the operation. The id MUST be unique among all operations described in the API. The operationId value is **case-sensitive**. Tools and libraries MAY use the operationId to uniquely identify an operation, therefore, it is RECOMMENDED to follow common programming naming conventions. -summary | `string` | A short summary of what the operation is about. -description | `string` | A verbose explanation of the operation. [CommonMark syntax](http://spec.commonmark.org/) can be used for rich text representation. -tags | [Tags Object](#tagsObject) | A list of tags for API documentation control. Tags can be used for logical grouping of operations. -externalDocs | [External Documentation Object](#externalDocumentationObject) | Additional external documentation for this operation. -bindings | [Operation Bindings Object](#operationBindingsObject) | A free-form map where the keys describe the name of the protocol and the values describe protocol-specific definitions for the operation. - -This object can be extended with [Specification Extensions](#specificationExtensions). - -##### Operation Trait Object Example - -```json -{ - "bindings": { - "amqp": { - "ack": false - } - } -} -``` - -```yaml -bindings: - amqp: - ack: false -``` - - - - -#### Parameters Object - -Describes a map of parameters included in a channel name. - -This map MUST contain all the parameters used in the parent channel name. - -##### Patterned Fields - -Field Pattern | Type | Description ----|:---:|--- -`^[A-Za-z0-9_\-]+$` | [Parameter Object](#parameterObject) | [Reference Object](#referenceObject) | The key represents the name of the parameter. It MUST match the parameter name used in the parent channel name. - -##### Parameters Object Example - -```json -{ - "user/{userId}/signup": { - "parameters": { - "userId": { - "description": "Id of the user.", - "schema": { - "type": "string" - } - } - }, - "subscribe": { - "$ref": "#/components/messages/userSignedUp" - } - } -} -``` - -```yaml -user/{userId}/signup: - parameters: - userId: - description: Id of the user. - schema: - type: string - subscribe: - $ref: "#/components/messages/userSignedUp" -``` - - - - - -#### Parameter Object - -Describes a parameter included in a channel name. - -##### Fixed Fields - -Field Name | Type | Description ----|:---:|--- -description | `string` | A verbose explanation of the parameter. [CommonMark syntax](http://spec.commonmark.org/) can be used for rich text representation. -schema | [Schema Object](#schemaObject) | Definition of the parameter. -location | `string` | A [runtime expression](#runtimeExpression) that specifies the location of the parameter value. Even when a definition for the target field exists, it MUST NOT be used to validate this parameter but, instead, the `schema` property MUST be used. - -This object can be extended with [Specification Extensions](#specificationExtensions). - -##### Parameter Object Example - -```json -{ - "user/{userId}/signup": { - "parameters": { - "userId": { - "description": "Id of the user.", - "schema": { - "type": "string" - }, - "location": "$message.payload#/user/id" - } - }, - "subscribe": { - "$ref": "#/components/messages/userSignedUp" - } - } -} -``` - -```yaml -user/{userId}/signup: - parameters: - userId: - description: Id of the user. - schema: - type: string - location: $message.payload#/user/id - subscribe: - $ref: "#/components/messages/userSignedUp" -``` - - - - -#### Server Bindings Object - -Map describing protocol-specific definitions for a server. - -##### Fixed Fields - -Field Name | Type | Description ----|:---:|--- -`http` | [HTTP Server Binding](https://github.com/asyncapi/bindings/blob/master/http#server) | Protocol-specific information for an HTTP server. -`ws` | [WebSockets Server Binding](https://github.com/asyncapi/bindings/blob/master/websockets#server) | Protocol-specific information for a WebSockets server. -`kafka` | [Kafka Server Binding](https://github.com/asyncapi/bindings/blob/master/kafka#server) | Protocol-specific information for a Kafka server. -`amqp` | [AMQP Server Binding](https://github.com/asyncapi/bindings/blob/master/amqp#server) | Protocol-specific information for an AMQP 0-9-1 server. -`amqp1` | [AMQP 1.0 Server Binding](https://github.com/asyncapi/bindings/blob/master/amqp1#server) | Protocol-specific information for an AMQP 1.0 server. -`mqtt` | [MQTT Server Binding](https://github.com/asyncapi/bindings/blob/master/mqtt#server) | Protocol-specific information for an MQTT server. -`mqtt5` | [MQTT 5 Server Binding](https://github.com/asyncapi/bindings/blob/master/mqtt5#server) | Protocol-specific information for an MQTT 5 server. -`nats` | [NATS Server Binding](https://github.com/asyncapi/bindings/blob/master/nats#server) | Protocol-specific information for a NATS server. -`jms` | [JMS Server Binding](https://github.com/asyncapi/bindings/blob/master/jms#server) | Protocol-specific information for a JMS server. -`sns` | [SNS Server Binding](https://github.com/asyncapi/bindings/blob/master/sns#server) | Protocol-specific information for an SNS server. -`sqs` | [SQS Server Binding](https://github.com/asyncapi/bindings/blob/master/sqs#server) | Protocol-specific information for an SQS server. -`stomp` | [STOMP Server Binding](https://github.com/asyncapi/bindings/blob/master/stomp#server) | Protocol-specific information for a STOMP server. -`redis` | [Redis Server Binding](https://github.com/asyncapi/bindings/blob/master/redis#server) | Protocol-specific information for a Redis server. - - - - -#### Channel Bindings Object - -Map describing protocol-specific definitions for a channel. - -##### Fixed Fields - -Field Name | Type | Description ----|:---:|--- -`http` | [HTTP Channel Binding](https://github.com/asyncapi/bindings/blob/master/http/README.md#channel) | Protocol-specific information for an HTTP channel. -`ws` | [WebSockets Channel Binding](https://github.com/asyncapi/bindings/blob/master/websockets/README.md#channel) | Protocol-specific information for a WebSockets channel. -`kafka` | [Kafka Channel Binding](https://github.com/asyncapi/bindings/blob/master/kafka/README.md#channel) | Protocol-specific information for a Kafka channel. -`amqp` | [AMQP Channel Binding](https://github.com/asyncapi/bindings/blob/master/amqp/README.md#channel) | Protocol-specific information for an AMQP 0-9-1 channel. -`amqp1` | [AMQP 1.0 Channel Binding](https://github.com/asyncapi/bindings/blob/master/amqp1/README.md#channel) | Protocol-specific information for an AMQP 1.0 channel. -`mqtt` | [MQTT Channel Binding](https://github.com/asyncapi/bindings/blob/master/mqtt/README.md#channel) | Protocol-specific information for an MQTT channel. -`mqtt5` | [MQTT 5 Channel Binding](https://github.com/asyncapi/bindings/blob/master/mqtt5#channel) | Protocol-specific information for an MQTT 5 channel. -`nats` | [NATS Channel Binding](https://github.com/asyncapi/bindings/blob/master/nats/README.md#channel) | Protocol-specific information for a NATS channel. -`jms` | [JMS Channel Binding](https://github.com/asyncapi/bindings/blob/master/jms/README.md#channel) | Protocol-specific information for a JMS channel. -`sns` | [SNS Channel Binding](https://github.com/asyncapi/bindings/blob/master/sns/README.md#channel) | Protocol-specific information for an SNS channel. -`sqs` | [SQS Channel Binding](https://github.com/asyncapi/bindings/blob/master/sqs/README.md#channel) | Protocol-specific information for an SQS channel. -`stomp` | [STOMP Channel Binding](https://github.com/asyncapi/bindings/blob/master/stomp/README.md#channel) | Protocol-specific information for a STOMP channel. -`redis` | [Redis Channel Binding](https://github.com/asyncapi/bindings/blob/master/redis#channel) | Protocol-specific information for a Redis channel. - - - - -#### Operation Bindings Object - -Map describing protocol-specific definitions for an operation. - -##### Fixed Fields - -Field Name | Type | Description ----|:---:|--- -`http` | [HTTP Operation Binding](https://github.com/asyncapi/bindings/blob/master/http/README.md#operation) | Protocol-specific information for an HTTP operation. -`ws` | [WebSockets Operation Binding](https://github.com/asyncapi/bindings/blob/master/websockets/README.md#operation) | Protocol-specific information for a WebSockets operation. -`kafka` | [Kafka Operation Binding](https://github.com/asyncapi/bindings/blob/master/kafka/README.md#operation) | Protocol-specific information for a Kafka operation. -`amqp` | [AMQP Operation Binding](https://github.com/asyncapi/bindings/blob/master/amqp/README.md#operation) | Protocol-specific information for an AMQP 0-9-1 operation. -`amqp1` | [AMQP 1.0 Operation Binding](https://github.com/asyncapi/bindings/blob/master/amqp1/README.md#operation) | Protocol-specific information for an AMQP 1.0 operation. -`mqtt` | [MQTT Operation Binding](https://github.com/asyncapi/bindings/blob/master/mqtt/README.md#operation) | Protocol-specific information for an MQTT operation. -`mqtt5` | [MQTT 5 Operation Binding](https://github.com/asyncapi/bindings/blob/master/mqtt5/README.md#operation) | Protocol-specific information for an MQTT 5 operation. -`nats` | [NATS Operation Binding](https://github.com/asyncapi/bindings/blob/master/nats/README.md#operation) | Protocol-specific information for a NATS operation. -`jms` | [JMS Operation Binding](https://github.com/asyncapi/bindings/blob/master/jms/README.md#operation) | Protocol-specific information for a JMS operation. -`sns` | [SNS Operation Binding](https://github.com/asyncapi/bindings/blob/master/sns/README.md#operation) | Protocol-specific information for an SNS operation. -`sqs` | [SQS Operation Binding](https://github.com/asyncapi/bindings/blob/master/sqs/README.md#operation) | Protocol-specific information for an SQS operation. -`stomp` | [STOMP Operation Binding](https://github.com/asyncapi/bindings/blob/master/stomp/README.md#operation) | Protocol-specific information for a STOMP operation. -`redis` | [Redis Operation Binding](https://github.com/asyncapi/bindings/blob/master/redis#operation) | Protocol-specific information for a Redis operation. - - - - - - -#### Message Bindings Object - -Map describing protocol-specific definitions for a message. - -##### Fixed Fields - -Field Name | Type | Description ----|:---:|--- -`http` | [HTTP Message Binding](https://github.com/asyncapi/bindings/blob/master/http/README.md#message) | Protocol-specific information for an HTTP message, i.e., a request or a response. -`ws` | [WebSockets Message Binding](https://github.com/asyncapi/bindings/blob/master/websockets/README.md#message) | Protocol-specific information for a WebSockets message. -`kafka` | [Kafka Message Binding](https://github.com/asyncapi/bindings/blob/master/kafka/README.md#message) | Protocol-specific information for a Kafka message. -`amqp` | [AMQP Message Binding](https://github.com/asyncapi/bindings/blob/master/amqp/README.md#message) | Protocol-specific information for an AMQP 0-9-1 message. -`amqp1` | [AMQP 1.0 Message Binding](https://github.com/asyncapi/bindings/blob/master/amqp1/README.md#message) | Protocol-specific information for an AMQP 1.0 message. -`mqtt` | [MQTT Message Binding](https://github.com/asyncapi/bindings/blob/master/mqtt/README.md#message) | Protocol-specific information for an MQTT message. -`mqtt5` | [MQTT 5 Message Binding](https://github.com/asyncapi/bindings/blob/master/mqtt5/README.md#message) | Protocol-specific information for an MQTT 5 message. -`nats` | [NATS Message Binding](https://github.com/asyncapi/bindings/blob/master/nats/README.md#message) | Protocol-specific information for a NATS message. -`jms` | [JMS Message Binding](https://github.com/asyncapi/bindings/blob/master/jms/README.md#message) | Protocol-specific information for a JMS message. -`sns` | [SNS Message Binding](https://github.com/asyncapi/bindings/blob/master/sns/README.md#message) | Protocol-specific information for an SNS message. -`sqs` | [SQS Message Binding](https://github.com/asyncapi/bindings/blob/master/sqs/README.md#message) | Protocol-specific information for an SQS message. -`stomp` | [STOMP Message Binding](https://github.com/asyncapi/bindings/blob/master/stomp/README.md#message) | Protocol-specific information for a STOMP message. -`redis` | [Redis Message Binding](https://github.com/asyncapi/bindings/blob/master/redis#message) | Protocol-specific information for a Redis message. - - - - - - - - - -#### Message Object - -Describes a message received on a given channel and operation. - -##### Fixed Fields - -Field Name | Type | Description ----|:---:|--- -headers | [Schema Object](#schemaObject) | [Reference Object](#referenceObject) | Schema definition of the application headers. Schema MUST be of type "object". It **MUST NOT** define the protocol headers. -payload | `any` | Definition of the message payload. It can be of any type but defaults to [Schema object](#schemaObject). -correlationId | [Correlation ID Object](#correlationIdObject) | [Reference Object](#referenceObject) | Definition of the correlation ID used for message tracing or matching. -schemaFormat | `string` | A string containing the name of the schema format used to define the message payload. If omitted, implementations should parse the payload as a [Schema object](#schemaObject). Check out the [supported schema formats table](#messageObjectSchemaFormatTable) for more information. Custom values are allowed but their implementation is OPTIONAL. A custom value MUST NOT refer to one of the schema formats listed in the [table](#messageObjectSchemaFormatTable). -contentType | `string` | The content type to use when encoding/decoding a message's payload. The value MUST be a specific media type (e.g. `application/json`). When omitted, the value MUST be the one specified on the [defaultContentType](#defaultContentTypeString) field. -name | `string` | A machine-friendly name for the message. -title | `string` | A human-friendly title for the message. -summary | `string` | A short summary of what the message is about. -description | `string` | A verbose explanation of the message. [CommonMark syntax](http://spec.commonmark.org/) can be used for rich text representation. -tags | [Tags Object](#tagsObject) | A list of tags for API documentation control. Tags can be used for logical grouping of messages. -externalDocs | [External Documentation Object](#externalDocumentationObject) | Additional external documentation for this message. -bindings | [Message Bindings Object](#messageBindingsObject) | A free-form map where the keys describe the name of the protocol and the values describe protocol-specific definitions for the message. -examples | [Map[`string`, `any`]] | An array with examples of valid message objects. -traits | [[Message Trait Object](#messageTraitObject)] | A list of traits to apply to the message object. Traits MUST be merged into the message object using the [JSON Merge Patch](https://tools.ietf.org/html/rfc7386) algorithm in the same order they are defined here. The resulting object MUST be a valid [Message Object](#messageObject). - -This object can be extended with [Specification Extensions](#specificationExtensions). - -##### Schema formats table - -The following table contains a set of values that every implementation MUST support. - -Name | Allowed values | Notes ----|:---:|--- -[AsyncAPI 2.0.0 Schema Object](#schemaObject) | `application/vnd.aai.asyncapi;version=2.0.0`, `application/vnd.aai.asyncapi+json;version=2.0.0`, `application/vnd.aai.asyncapi+yaml;version=2.0.0` | This is the default when a `schemaFormat` is not provided. -[OpenAPI 3.0.0 Schema Object](https://github.com/OAI/OpenAPI-Specification/blob/master/versions/3.0.0.md#schemaObject) | `application/vnd.oai.openapi;version=3.0.0`, `application/vnd.oai.openapi+json;version=3.0.0`, `application/vnd.oai.openapi+yaml;version=3.0.0` | -[JSON Schema Draft 07](http://json-schema.org/specification-links.html#draft-7) | `application/schema+json;version=draft-07`, `application/schema+yaml;version=draft-07` | -[Avro 1.9.0 schema](https://avro.apache.org/docs/1.9.0/spec.html#schemas) | `application/vnd.apache.avro;version=1.9.0`, `application/vnd.apache.avro+json;version=1.9.0`, `application/vnd.apache.avro+yaml;version=1.9.0` | - - -##### Message Object Example - -```json -{ - "name": "UserSignup", - "title": "User signup", - "summary": "Action to sign a user up.", - "description": "A longer description", - "contentType": "application/json", - "tags": [ - { "name": "user" }, - { "name": "signup" }, - { "name": "register" } - ], - "headers": { - "type": "object", - "properties": { - "correlationId": { - "description": "Correlation ID set by application", - "type": "string" - }, - "applicationInstanceId": { - "description": "Unique identifier for a given instance of the publishing application", - "type": "string" - } - } - }, - "payload": { - "type": "object", - "properties": { - "user": { - "$ref": "#/components/schemas/userCreate" - }, - "signup": { - "$ref": "#/components/schemas/signup" - } - } - }, - "correlationId": { - "description": "Default Correlation ID", - "location": "$message.header#/correlationId" - }, - "traits": [ - { "$ref": "#/components/messageTraits/commonHeaders" } - ] -} -``` - -```yaml -name: UserSignup -title: User signup -summary: Action to sign a user up. -description: A longer description -contentType: application/json -tags: - - name: user - - name: signup - - name: register -headers: - type: object - properties: - correlationId: - description: Correlation ID set by application - type: string - applicationInstanceId: - description: Unique identifier for a given instance of the publishing application - type: string -payload: - type: object - properties: - user: - $ref: "#/components/schemas/userCreate" - signup: - $ref: "#/components/schemas/signup" -correlationId: - description: Default Correlation ID - location: $message.header#/correlationId -traits: - - $ref: "#/components/messageTraits/commonHeaders" -``` - -Example using Avro to define the payload: - -```json -{ - "name": "UserSignup", - "title": "User signup", - "summary": "Action to sign a user up.", - "description": "A longer description", - "tags": [ - { "name": "user" }, - { "name": "signup" }, - { "name": "register" } - ], - "schemaFormat": "application/vnd.apache.avro+json;version=1.9.0", - "payload": { - "$ref": "path/to/user-create.avsc#/UserCreate" - } -} -``` - -```yaml -name: UserSignup -title: User signup -summary: Action to sign a user up. -description: A longer description -tags: - - name: user - - name: signup - - name: register -schemaFormat: 'application/vnd.apache.avro+yaml;version=1.9.0' -payload: - $ref: 'path/to/user-create.avsc/#UserCreate' -``` - - - - - - - -#### Message Trait Object - -Describes a trait that MAY be applied to a [Message Object](#messageObject). This object MAY contain any property from the [Message Object](#messageObject), except `payload` and `traits`. - -If you're looking to apply traits to an operation, see the [Operation Trait Object](#operationTraitObject). - -##### Fixed Fields - -Field Name | Type | Description ----|:---:|--- -headers | [Schema Object](#schemaObject) | [Reference Object](#referenceObject) | Schema definition of the application headers. Schema MUST be of type "object". It **MUST NOT** define the protocol headers. -correlationId | [Correlation ID Object](#correlationIdObject) | [Reference Object](#referenceObject) | Definition of the correlation ID used for message tracing or matching. -schemaFormat | `string` | A string containing the name of the schema format/language used to define the message payload. If omitted, implementations should parse the payload as a [Schema object](#schemaObject). -contentType | `string` | The content type to use when encoding/decoding a message's payload. The value MUST be a specific media type (e.g. `application/json`). When omitted, the value MUST be the one specified on the [defaultContentType](#defaultContentTypeString) field. -name | `string` | A machine-friendly name for the message. -title | `string` | A human-friendly title for the message. -summary | `string` | A short summary of what the message is about. -description | `string` | A verbose explanation of the message. [CommonMark syntax](http://spec.commonmark.org/) can be used for rich text representation. -tags | [Tags Object](#tagsObject) | A list of tags for API documentation control. Tags can be used for logical grouping of messages. -externalDocs | [External Documentation Object](#externalDocumentationObject) | Additional external documentation for this message. -bindings | Map[`string`, [Message Bindings Object](#messageBindingsObject)] | A free-form map where the keys describe the name of the protocol and the values describe protocol-specific definitions for the message. -examples | [Map[`string`, `any`]] | An array with examples of valid message objects. - -This object can be extended with [Specification Extensions](#specificationExtensions). - -##### Message Trait Object Example - -```json -{ - "schemaFormat": "application/vnd.apache.avro+json;version=1.9.0", - "contentType": "application/json" -} -``` - -```yaml -schemaFormat: 'application/vnd.apache.avro+yaml;version=1.9.0' -contentType: application/json -``` - -#### Tags Object - -A Tags object is a list of Tag Objects. - -#### Tag Object - -Allows adding meta data to a single tag. - -##### Fixed Fields -Field Name | Type | Description ----|:---:|--- -name | `string` | **Required.** The name of the tag. -description | `string` | A short description for the tag. [CommonMark syntax](http://spec.commonmark.org/) can be used for rich text representation. -externalDocs | [External Documentation Object](#externalDocumentationObject) | Additional external documentation for this tag. - -This object can be extended with [Specification Extensions](#specificationExtensions). - -##### Tag Object Example - -```json -{ - "name": "user", - "description": "User-related messages" -} -``` - -```yaml -name: user -description: User-related messages -``` - - - - - - - -#### External Documentation Object - -Allows referencing an external resource for extended documentation. - -##### Fixed Fields - -Field Name | Type | Description ----|:---:|--- -description | `string` | A short description of the target documentation. [CommonMark syntax](http://spec.commonmark.org/) can be used for rich text representation. -url | `string` | **Required.** The URL for the target documentation. Value MUST be in the format of a URL. - -This object can be extended with [Specification Extensions](#specificationExtensions). - -##### External Documentation Object Example - -```json -{ - "description": "Find more info here", - "url": "https://example.com" -} -``` - -```yaml -description: Find more info here -url: https://example.com -``` - -#### Reference Object - -A simple object to allow referencing other components in the specification, internally and externally. - - -The Reference Object is defined by [JSON Reference](https://tools.ietf.org/html/draft-pbryan-zyp-json-ref-03) and follows the same structure, behavior and rules. A JSON Reference SHALL only be used to refer to a schema that is formatted in either JSON or YAML. In the case of a YAML-formatted Schema, the JSON Reference SHALL be applied to the JSON representation of that schema. The JSON representation SHALL be made by applying the conversion described [here](#format). - -For this specification, reference resolution is done as defined by the JSON Reference specification and not by the JSON Schema specification. - -##### Fixed Fields -Field Name | Type | Description ----|:---:|--- -$ref | `string` | **Required.** The reference string. - -This object cannot be extended with additional properties and any properties added SHALL be ignored. - -##### Reference Object Example - -```json -{ - "$ref": "#/components/schemas/Pet" -} -``` - -```yaml - $ref: '#/components/schemas/Pet' -``` - -#### Components Object - -Holds a set of reusable objects for different aspects of the AsyncAPI specification. -All objects defined within the components object will have no effect on the API unless they are explicitly referenced from properties outside the components object. - -##### Fixed Fields - -Field Name | Type | Description ----|:---|--- - schemas | Map[`string`, [Schema Object](#schemaObject) \| [Reference Object](#referenceObject)] | An object to hold reusable [Schema Objects](#schemaObject). - messages | Map[`string`, [Message Object](#messageObject) \| [Reference Object](#referenceObject)] | An object to hold reusable [Message Objects](#messageObject). - securitySchemes| Map[`string`, [Security Scheme Object](#securitySchemeObject) \| [Reference Object](#referenceObject)] | An object to hold reusable [Security Scheme Objects](#securitySchemeObject). - parameters | Map[`string`, [Parameter Object](#parameterObject) \| [Reference Object](#referenceObject)] | An object to hold reusable [Parameter Objects](#parameterObject). - correlationIds | Map[`string`, [Correlation ID Object](#correlationIdObject)] | An object to hold reusable [Correlation ID Objects](#correlationIdObject). - operationTraits | Map[`string`, [Operation Trait Object](#operationTraitObject)] | An object to hold reusable [Operation Trait Objects](#operationTraitObject). - messageTraits | Map[`string`, [Message Trait Object](#messageTraitObject)] | An object to hold reusable [Message Trait Objects](#messageTraitObject). - serverBindings | Map[`string`, [Server Binding Object](#serverBindingsObject)] | An object to hold reusable [Server Binding Objects](#serverBindingsObject). - channelBindings | Map[`string`, [Channel Binding Object](#channelBindingsObject)] | An object to hold reusable [Channel Binding Objects](#channelBindingsObject). - operationBindings | Map[`string`, [Operation Binding Object](#operationBindingsObject)] | An object to hold reusable [Operation Binding Objects](#operationBindingsObject). - messageBindings | Map[`string`, [Message Binding Object](#messageBindingsObject)] | An object to hold reusable [Message Binding Objects](#messageBindingsObject). - -This object can be extended with [Specification Extensions](#specificationExtensions). - -All the fixed fields declared above are objects that MUST use keys that match the regular expression: `^[a-zA-Z0-9\.\-_]+$`. - -Field Name Examples: - -``` -User -User_1 -User_Name -user-name -my.org.User -``` - -##### Components Object Example - -```json -"components": { - "schemas": { - "Category": { - "type": "object", - "properties": { - "id": { - "type": "integer", - "format": "int64" - }, - "name": { - "type": "string" - } - } - }, - "Tag": { - "type": "object", - "properties": { - "id": { - "type": "integer", - "format": "int64" - }, - "name": { - "type": "string" - } - } - } - }, - "messages": { - "userSignUp": { - "summary": "Action to sign a user up.", - "description": "Multiline description of what this action does.\nHere you have another line.\n", - "tags": [ - { - "name": "user" - }, - { - "name": "signup" - } - ], - "headers": { - "type": "object", - "properties": { - "applicationInstanceId": { - "description": "Unique identifier for a given instance of the publishing application", - "type": "string" - } - } - }, - "payload": { - "type": "object", - "properties": { - "user": { - "$ref": "#/components/schemas/userCreate" - }, - "signup": { - "$ref": "#/components/schemas/signup" - } - } - } - } - }, - "parameters": { - "userId": { - "name": "userId", - "description": "Id of the user.", - "schema": { - "type": "string" - } - } - }, - "correlationIds": { - "default": { - "description": "Default Correlation ID", - "location": "$message.header#/correlationId" - } - }, - "messageTraits": { - "commonHeaders": { - "headers": { - "type": "object", - "properties": { - "my-app-header": { - "type": "integer", - "minimum": 0, - "maximum": 100 - } - } - } - } - } -} -``` - -```yaml -components: - schemas: - Category: - type: object - properties: - id: - type: integer - format: int64 - name: - type: string - Tag: - type: object - properties: - id: - type: integer - format: int64 - name: - type: string - messages: - userSignUp: - summary: Action to sign a user up. - description: | - Multiline description of what this action does. - Here you have another line. - tags: - - name: user - - name: signup - headers: - type: object - properties: - applicationInstanceId: - description: Unique identifier for a given instance of the publishing application - type: string - payload: - type: object - properties: - user: - $ref: "#/components/schemas/userCreate" - signup: - $ref: "#/components/schemas/signup" - parameters: - userId: - - name: userId - description: Id of the user. - schema: - type: string - correlationIds: - default: - description: Default Correlation ID - location: $message.header#/correlationId - messageTraits: - commonHeaders: - headers: - type: object - properties: - my-app-header: - type: integer - minimum: 0 - maximum: 100 -``` - -#### Schema Object - -The Schema Object allows the definition of input and output data types. -These types can be objects, but also primitives and arrays. -This object is a superset of the [JSON Schema Specification Draft 07](http://json-schema.org/). - -Further information about the properties can be found in [JSON Schema Core](https://tools.ietf.org/html/draft-handrews-json-schema-01) and [JSON Schema Validation](https://tools.ietf.org/html/draft-handrews-json-schema-validation-01). -Unless stated otherwise, the property definitions follow the JSON Schema specification as referenced here. - -##### Properties - -The AsyncAPI Schema Object is a JSON Schema vocabulary which extends JSON Schema Core and Validation vocabularies. As such, any keyword available for those vocabularies is by definition available in AsyncAPI, and will work the exact same way, including but not limited to: - -- title -- type -- required -- multipleOf -- maximum -- exclusiveMaximum -- minimum -- exclusiveMinimum -- maxLength -- minLength -- pattern (This string SHOULD be a valid regular expression, according to the [ECMA 262 regular expression](https://www.ecma-international.org/ecma-262/5.1/#sec-7.8.5) dialect) -- maxItems -- minItems -- uniqueItems -- maxProperties -- minProperties -- enum -- const -- examples -- if / then / else -- readOnly -- writeOnly -- properties -- patternProperties -- additionalProperties -- additionalItems -- items -- propertyNames -- contains -- allOf -- oneOf -- anyOf -- not - -The following properties are taken from the JSON Schema definition but their definitions were adjusted to the AsyncAPI Specification. - -- description - [CommonMark syntax](http://spec.commonmark.org/) can be used for rich text representation. -- format - See [Data Type Formats](#dataTypeFormat) for further details. While relying on JSON Schema's defined formats, the AsyncAPI Specification offers a few additional predefined formats. -- default - The default value represents what would be assumed by the consumer of the input as the value of the schema if one is not provided. Unlike JSON Schema, the value MUST conform to the defined type for the Schema Object defined at the same level. For example, of `type` is `string`, then `default` can be `"foo"` but cannot be `1`. - -Alternatively, any time a Schema Object can be used, a [Reference Object](#referenceObject) can be used in its place. This allows referencing definitions in place of defining them inline. - -In addition to the JSON Schema fields, the following AsyncAPI vocabulary fields MAY be used for further schema documentation: - -##### Fixed Fields -Field Name | Type | Description ----|:---:|--- -discriminator | `string` | Adds support for polymorphism. The discriminator is the schema property name that is used to differentiate between other schema that inherit this schema. The property name used MUST be defined at this schema and it MUST be in the `required` property list. When used, the value MUST be the name of this schema or any schema that inherits it. See [Composition and Inheritance](#schemaComposition) for more details. -externalDocs | [External Documentation Object](#externalDocumentationObject) | Additional external documentation for this schema. - deprecated | `boolean` | Specifies that a schema is deprecated and SHOULD be transitioned out of usage. Default value is `false`. - -This object can be extended with [Specification Extensions](#specificationExtensions). - -###### Composition and Inheritance (Polymorphism) - -The AsyncAPI Specification allows combining and extending model definitions using the `allOf` property of JSON Schema, in effect offering model composition. -`allOf` takes in an array of object definitions that are validated *independently* but together compose a single object. - -While composition offers model extensibility, it does not imply a hierarchy between the models. -To support polymorphism, AsyncAPI Specification adds the support of the `discriminator` field. -When used, the `discriminator` will be the name of the property used to decide which schema definition is used to validate the structure of the model. -As such, the `discriminator` field MUST be a required field. -There are are two ways to define the value of a discriminator for an inheriting instance. -- Use the schema's name. -- Override the schema's name by overriding the property with a new value. If exists, this takes precedence over the schema's name. -As such, inline schema definitions, which do not have a given id, *cannot* be used in polymorphism. - -##### Schema Object Examples - -###### Primitive Sample - -```json -{ - "type": "string", - "format": "email" -} -``` - -```yaml -type: string -format: email -``` - -###### Simple Model - -```json -{ - "type": "object", - "required": [ - "name" - ], - "properties": { - "name": { - "type": "string" - }, - "address": { - "$ref": "#/components/schemas/Address" - }, - "age": { - "type": "integer", - "format": "int32", - "minimum": 0 - } - } -} -``` - -```yaml -type: object -required: -- name -properties: - name: - type: string - address: - $ref: '#/components/schemas/Address' - age: - type: integer - format: int32 - minimum: 0 -``` - -###### Model with Map/Dictionary Properties - -For a simple string to string mapping: - -```json -{ - "type": "object", - "additionalProperties": { - "type": "string" - } -} -``` - -```yaml -type: object -additionalProperties: - type: string -``` - -For a string to model mapping: - -```json -{ - "type": "object", - "additionalProperties": { - "$ref": "#/components/schemas/ComplexModel" - } -} -``` - -```yaml -type: object -additionalProperties: - $ref: '#/components/schemas/ComplexModel' -``` - -###### Model with Example - -```json -{ - "type": "object", - "properties": { - "id": { - "type": "integer", - "format": "int64" - }, - "name": { - "type": "string" - } - }, - "required": [ - "name" - ], - "example": { - "name": "Puma", - "id": 1 - } -} -``` - -```yaml -type: object -properties: - id: - type: integer - format: int64 - name: - type: string -required: -- name -example: - name: Puma - id: 1 -``` - -###### Models with Composition - -```json -{ - "schemas": { - "ErrorModel": { - "type": "object", - "required": [ - "message", - "code" - ], - "properties": { - "message": { - "type": "string" - }, - "code": { - "type": "integer", - "minimum": 100, - "maximum": 600 - } - } - }, - "ExtendedErrorModel": { - "allOf": [ - { - "$ref": "#/components/schemas/ErrorModel" - }, - { - "type": "object", - "required": [ - "rootCause" - ], - "properties": { - "rootCause": { - "type": "string" - } - } - } - ] - } - } -} -``` - -```yaml -schemas: - ErrorModel: - type: object - required: - - message - - code - properties: - message: - type: string - code: - type: integer - minimum: 100 - maximum: 600 - ExtendedErrorModel: - allOf: - - $ref: '#/components/schemas/ErrorModel' - - type: object - required: - - rootCause - properties: - rootCause: - type: string -``` - -###### Models with Polymorphism Support - -```json -{ - "schemas": { - "Pet": { - "type": "object", - "discriminator": "petType", - "properties": { - "name": { - "type": "string" - }, - "petType": { - "type": "string" - } - }, - "required": [ - "name", - "petType" - ] - }, - "Cat": { - "description": "A representation of a cat. Note that `Cat` will be used as the discriminator value.", - "allOf": [ - { - "$ref": "#/components/schemas/Pet" - }, - { - "type": "object", - "properties": { - "huntingSkill": { - "type": "string", - "description": "The measured skill for hunting", - "enum": [ - "clueless", - "lazy", - "adventurous", - "aggressive" - ] - } - }, - "required": [ - "huntingSkill" - ] - } - ] - }, - "Dog": { - "description": "A representation of a dog. Note that `Dog` will be used as the discriminator value.", - "allOf": [ - { - "$ref": "#/components/schemas/Pet" - }, - { - "type": "object", - "properties": { - "packSize": { - "type": "integer", - "format": "int32", - "description": "the size of the pack the dog is from", - "minimum": 0 - } - }, - "required": [ - "packSize" - ] - } - ] - } - } -} -``` - -```yaml -schemas: - Pet: - type: object - discriminator: petType - properties: - name: - type: string - petType: - type: string - required: - - name - - petType - Cat: ## "Cat" will be used as the discriminator value - description: A representation of a cat - allOf: - - $ref: '#/components/schemas/Pet' - - type: object - properties: - huntingSkill: - type: string - description: The measured skill for hunting - enum: - - clueless - - lazy - - adventurous - - aggressive - required: - - huntingSkill - Dog: ## "Dog" will be used as the discriminator value - description: A representation of a dog - allOf: - - $ref: '#/components/schemas/Pet' - - type: object - properties: - packSize: - type: integer - format: int32 - description: the size of the pack the dog is from - minimum: 0 - required: - - packSize -``` - - - - - -#### Security Scheme Object - -Defines a security scheme that can be used by the operations. Supported schemes are: - -* User/Password. -* API key (either as user or as password). -* X.509 certificate. -* End-to-end encryption (either symmetric or asymmetric). -* HTTP authentication. -* HTTP API key. -* OAuth2's common flows (Implicit, Resource Owner Protected Credentials, Client Credentials and Authorization Code) as defined in [RFC6749](https://tools.ietf.org/html/rfc6749). -* [OpenID Connect Discovery](https://tools.ietf.org/html/draft-ietf-oauth-discovery-06). - -##### Fixed Fields -Field Name | Type | Applies To | Description ----|:---:|---|--- -type | `string` | Any | **REQUIRED**. The type of the security scheme. Valid values are `"userPassword"`, `"apiKey"`, `"X509"`, `"symmetricEncryption"`, `"asymmetricEncryption"`, `"httpApiKey"`, `"http"`, `oauth2`, and `openIdConnect`. -description | `string` | Any | A short description for security scheme. [CommonMark syntax](http://spec.commonmark.org/) MAY be used for rich text representation. -name | `string` | `httpApiKey` | **REQUIRED**. The name of the header, query or cookie parameter to be used. -in | `string` | `apiKey` \| `httpApiKey` | **REQUIRED**. The location of the API key. Valid values are `"user"` and `"password"` for `apiKey` and `"query"`, `"header"` or `"cookie"` for `httpApiKey`. -scheme | `string` | `http` | **REQUIRED**. The name of the HTTP Authorization scheme to be used in the [Authorization header as defined in RFC7235](https://tools.ietf.org/html/rfc7235#section-5.1). -bearerFormat | `string` | `http` (`"bearer"`) | A hint to the client to identify how the bearer token is formatted. Bearer tokens are usually generated by an authorization server, so this information is primarily for documentation purposes. -flows | [OAuth Flows Object](#oauthFlowsObject) | `oauth2` | **REQUIRED**. An object containing configuration information for the flow types supported. -openIdConnectUrl | `string` | `openIdConnect` | **REQUIRED**. OpenId Connect URL to discover OAuth2 configuration values. This MUST be in the form of a URL. - -This object MAY be extended with [Specification Extensions](#specificationExtensions). - -##### Security Scheme Object Example - -###### User/Password Authentication Sample - -```json -{ - "type": "userPassword" -} -``` - -```yaml -type: userPassword -``` - -###### API Key Authentication Sample - -```json -{ - "type": "apiKey", - "in": "user" -} -``` - -```yaml -type: apiKey, -in: user -``` - -###### X.509 Authentication Sample - -```json -{ - "type": "X509" -} -``` - -```yaml -type: X509 -``` - -###### End-to-end Encryption Authentication Sample - -```json -{ - "type": "symmetricEncryption" -} -``` - -```yaml -type: symmetricEncryption -``` - -###### Basic Authentication Sample - -```json -{ - "type": "http", - "scheme": "basic" -} -``` - -```yaml -type: http -scheme: basic -``` - -###### API Key Sample - -```json -{ - "type": "httpApiKey", - "name": "api_key", - "in": "header" -} -``` - -```yaml -type: httpApiKey -name: api_key -in: header -``` - -###### JWT Bearer Sample - -```json -{ - "type": "http", - "scheme": "bearer", - "bearerFormat": "JWT", -} -``` - -```yaml -type: http -scheme: bearer -bearerFormat: JWT -``` - -###### Implicit OAuth2 Sample - -```json -{ - "type": "oauth2", - "flows": { - "implicit": { - "authorizationUrl": "https://example.com/api/oauth/dialog", - "scopes": { - "write:pets": "modify pets in your account", - "read:pets": "read your pets" - } - } - } -} -``` - -```yaml -type: oauth2 -flows: - implicit: - authorizationUrl: https://example.com/api/oauth/dialog - scopes: - write:pets: modify pets in your account - read:pets: read your pets -``` - -#### OAuth Flows Object - -Allows configuration of the supported OAuth Flows. - -##### Fixed Fields -Field Name | Type | Description ----|:---:|--- -implicit| [OAuth Flow Object](#oauthFlowObject) | Configuration for the OAuth Implicit flow -password| [OAuth Flow Object](#oauthFlowObject) | Configuration for the OAuth Resource Owner Protected Credentials flow -clientCredentials| [OAuth Flow Object](#oauthFlowObject) | Configuration for the OAuth Client Credentials flow. -authorizationCode| [OAuth Flow Object](#oauthFlowObject) | Configuration for the OAuth Authorization Code flow. - -This object MAY be extended with [Specification Extensions](#specificationExtensions). - -#### OAuth Flow Object - -Configuration details for a supported OAuth Flow - -##### Fixed Fields -Field Name | Type | Applies To | Description ----|:---:|---|--- -authorizationUrl | `string` | `oauth2` (`"implicit"`, `"authorizationCode"`) | **REQUIRED**. The authorization URL to be used for this flow. This MUST be in the form of a URL. -tokenUrl | `string` | `oauth2` (`"password"`, `"clientCredentials"`, `"authorizationCode"`) | **REQUIRED**. The token URL to be used for this flow. This MUST be in the form of a URL. -refreshUrl | `string` | `oauth2` | The URL to be used for obtaining refresh tokens. This MUST be in the form of a URL. -scopes | Map[`string`, `string`] | `oauth2` | **REQUIRED**. The available scopes for the OAuth2 security scheme. A map between the scope name and a short description for it. - -This object MAY be extended with [Specification Extensions](#specificationExtensions). - -##### OAuth Flow Object Examples - -```JSON -{ - "type": "oauth2", - "flows": { - "implicit": { - "authorizationUrl": "https://example.com/api/oauth/dialog", - "scopes": { - "write:pets": "modify pets in your account", - "read:pets": "read your pets" - } - }, - "authorizationCode": { - "authorizationUrl": "https://example.com/api/oauth/dialog", - "tokenUrl": "https://example.com/api/oauth/token", - "scopes": { - "write:pets": "modify pets in your account", - "read:pets": "read your pets" - } - } - } -} -``` - -```YAML -type: oauth2 -flows: - implicit: - authorizationUrl: https://example.com/api/oauth/dialog - scopes: - write:pets: modify pets in your account - read:pets: read your pets - authorizationCode: - authorizationUrl: https://example.com/api/oauth/dialog - tokenUrl: https://example.com/api/oauth/token - scopes: - write:pets: modify pets in your account - read:pets: read your pets -``` - -#### Security Requirement Object - -Lists the required security schemes to execute this operation. -The name used for each property MUST correspond to a security scheme declared in the [Security Schemes](#componentsSecuritySchemes) under the [Components Object](#componentsObject). - -When a list of Security Requirement Objects is defined on a [Server object](#serverObject), only one of the Security Requirement Objects in the list needs to be satisfied to authorize the connection. - -##### Patterned Fields - -Field Pattern | Type | Description ----|:---:|--- -{name} | [`string`] | Each name MUST correspond to a security scheme which is declared in the [Security Schemes](#componentsSecuritySchemes) under the [Components Object](#componentsObject). If the security scheme is of type `"oauth2"` or `"openIdConnect"`, then the value is a list of scope names required for the execution. For other security scheme types, the array MUST be empty. - -##### Security Requirement Object Examples - -###### User/Password Security Requirement - -```json -{ - "user_pass": [] -} -``` - -```yaml -user_pass: [] -``` - -###### API Key Security Requirement - -```json -{ - "api_key": [] -} -``` - -```yaml -api_key: [] -``` - -###### OAuth2 Security Requirement - -```json -{ - "petstore_auth": [ - "write:pets", - "read:pets" - ] -} -``` - -```yaml -petstore_auth: -- write:pets -- read:pets -``` - -### Correlation ID Object - -An object that specifies an identifier at design time that can used for message tracing and correlation. - -For specifying and computing the location of a Correlation ID, a [runtime expression](#runtimeExpression) is used. - -##### Fixed Fields - -Field Name | Type | Description ----|:---|--- -description | `string` | An optional description of the identifier. [CommonMark syntax](http://spec.commonmark.org/) can be used for rich text representation. -location | `string` | **REQUIRED.** A [runtime expression](#runtimeExpression) that specifies the location of the correlation ID. - -This object can be extended with [Specification Extensions](#specificationExtensions). - -##### Examples - -```json -{ - "description": "Default Correlation ID", - "location": "$message.header#/correlationId" -} -``` - -```yaml -description: Default Correlation ID -location: $message.header#/correlationId -``` - -### Runtime Expression - -A runtime expression allows values to be defined based on information that will be available within the message. -This mechanism is used by [Correlation ID Object](#correlationIdObject). - -The runtime expression is defined by the following [ABNF](https://tools.ietf.org/html/rfc5234) syntax: - -``` - expression = ( "$message" "." source ) - source = ( header-reference | payload-reference ) - header-reference = "header." ["#" fragment] - payload-reference = "payload." ["#" fragment] - fragment = a JSON Pointer [RFC 6901](https://tools.ietf.org/html/rfc6901) -``` - -The table below provides examples of runtime expressions and examples of their use in a value: - -##### Examples - -Source Location | Example expression | Notes ----|:---|:---| -Message Header Property | `$message.header#/MQMD/CorrelId` | Correlation ID is set using the `CorrelId` value from the `MQMD` header. -Message Payload Property | `$message.payload#/messageId` | Correlation ID is set using the `messageId` value from the message payload. - -Runtime expressions preserve the type of the referenced value. - -### Specification Extensions - -While the AsyncAPI Specification tries to accommodate most use cases, additional data can be added to extend the specification at certain points. - -The extensions properties are implemented as patterned fields that are always prefixed by `"x-"`. - -Field Pattern | Type | Description ----|:---:|--- -`^x-[\w\d\-\_]+$` | Any | Allows extensions to the AsyncAPI Schema. The field name MUST begin with `x-`, for example, `x-internal-id`. The value can be `null`, a primitive, an array or an object. Can have any valid JSON format value. - -The extensions may or may not be supported by the available tooling, but those may be extended as well to add requested support (if tools are internal or open-sourced). - -### Data Type Formats - -Primitives have an optional modifier property: `format`. -The AsyncAPI specification uses several known formats to more finely define the data type being used. -However, the `format` property is an open `string`-valued property, and can have any value to support documentation needs. -Formats such as `"email"`, `"uuid"`, etc., can be used even though they are not defined by this specification. -Types that are not accompanied by a `format` property follow their definition from the JSON Schema. -Tools that do not recognize a specific `format` MAY default back to the `type` alone, as if the `format` was not specified. - -The formats defined by the AsyncAPI Specification are: - - -Common Name | `type` | [`format`](#dataTypeFormat) | Comments ------------ | ------ | -------- | -------- -integer | `integer` | `int32` | signed 32 bits -long | `integer` | `int64` | signed 64 bits -float | `number` | `float` | | -double | `number` | `double` | | -string | `string` | | | -byte | `string` | `byte` | base64 encoded characters -binary | `string` | `binary` | any sequence of octets -boolean | `boolean` | | | -date | `string` | `date` | As defined by `full-date` - [RFC3339](https://www.rfc-editor.org/rfc/rfc3339) -dateTime | `string` | `date-time` | As defined by `date-time` - [RFC3339](https://www.rfc-editor.org/rfc/rfc3339) -password | `string` | `password` | Used to hint UIs the input needs to be obscured. - ---- - - \ No newline at end of file diff --git a/pages/docs/reference/specification/v2.1.0.md b/pages/docs/reference/specification/v2.1.0.md deleted file mode 100644 index cba91b80933..00000000000 --- a/pages/docs/reference/specification/v2.1.0.md +++ /dev/null @@ -1,2336 +0,0 @@ -# AsyncAPI Specification - -#### Disclaimer - -Part of this content has been taken from the great work done by the folks at the [OpenAPI Initiative](https://openapis.org). Mainly because **it's a great work** and we want to keep as much compatibility as possible with the [OpenAPI Specification](https://github.com/OAI/OpenAPI-Specification). - -#### Version 2.1.0 - -The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this document are to be interpreted as described in [RFC 2119](https://www.ietf.org/rfc/rfc2119.txt). - -The AsyncAPI Specification is licensed under [The Apache License, Version 2.0](https://www.apache.org/licenses/LICENSE-2.0.html). - -## Introduction - -The AsyncAPI Specification is a project used to describe and document message-driven APIs in a machine-readable format. It’s protocol-agnostic, so you can use it for APIs that work over any protocol (e.g., AMQP, MQTT, WebSockets, Kafka, STOMP, HTTP, Mercure, etc). - -The AsyncAPI Specification defines a set of files required to describe such an API. -These files can then be used to create utilities, such as documentation, integration and/or testing tools. - -The file(s) MUST describe the operations an [application](#definitionsApplication) accepts. For instance, consider the following AsyncAPI definition snippet: - -```yaml -user/signedup: - subscribe: - $ref: "#/components/messages/userSignUp" -``` - -It means that the [application](#definitionsApplication) allows [consumers](#definitionsConsumer) to subscribe to the `user/signedup` [channel](#definitionsChannel) to receive userSignUp [messages](#definitionsMessage) produced by the application. - -**The AsyncAPI specification does not assume any kind of software topology, architecture or pattern.** Therefore, a server MAY be a message broker, a web server or any other kind of computer program capable of sending and/or receiving data. However, AsyncAPI offers a mechanism called "bindings" that aims to help with more specific information about the protocol. - - -## Definitions - -#### Application -An application is any kind of computer program or a group of them. It MUST be a [producer](#definitionsProducer), a [consumer](#definitionsConsumer) or both. An application MAY be a microservice, IoT device (sensor), mainframe process, etc. An application MAY be written in any number of different programming languages as long as they support the selected [protocol](#definitionsProtocol). An application MUST also use a protocol supported by the server in order to connect and exchange [messages](#definitionsMessage). - -#### Producer -A producer is a type of application, connected to a server, that is creating [messages](#definitionsMessage) and addressing them to [channels](#definitionsChannel). A producer MAY be publishing to multiple channels depending on the server, protocol, and use-case pattern. - -#### Consumer -A consumer is a type of application, connected to a server via a supported [protocol](#definitionsProtocol), that is consuming [messages](#definitionsMessage) from [channels](#definitionsChannel). A consumer MAY be consuming from multiple channels depending on the server, protocol, and the use-case pattern. - -#### Message -A message is the mechanism by which information is exchanged via a channel between servers and applications. A message MUST contain a payload and MAY also contain headers. The headers MAY be subdivided into [protocol](#definitionsProtocol)-defined headers and header properties defined by the application which can act as supporting metadata. The payload contains the data, defined by the application, which MUST be serialized into a format (JSON, XML, Avro, binary, etc.). Since a message is a generic mechanism, it can support multiple interaction patterns such as event, command, request, or response. - -#### Channel -A channel is an addressable component, made available by the server, for the organization of [messages](#definitionsMessage). [Producer](#definitionsProducer) applications send messages to channels and [consumer](#definitionsConsumer) applications consume messages from channels. Servers MAY support many channel instances, allowing messages with different content to be addressed to different channels. Depending on the server implementation, the channel MAY be included in the message via protocol-defined headers. - -#### Protocol -A protocol is the mechanism (wireline protocol or API) by which [messages](#definitionsMessage) are exchanged between the application and the [channel](#definitionsChannel). Example protocols include, but are not limited to, AMQP, HTTP, JMS, Kafka, MQTT, STOMP, Mercure, WebSocket. - -#### Bindings -A "binding" (or "protocol binding") is a mechanism to define protocol-specific information. Therefore, a protocol binding MUST define protocol-specific information only. - -## Specification - -### Format - -The files describing the message-driven API in accordance with the AsyncAPI Specification are represented as JSON objects and conform to the JSON standards. -YAML, being a superset of JSON, can be used as well to represent a A2S (AsyncAPI Specification) file. - -For example, if a field is said to have an array value, the JSON array representation will be used: - -```yaml -{ - "field" : [...] -} -``` - -While the API is described using JSON it does not impose a JSON input/output to the API itself. - -All field names in the specification are **case sensitive**. - -The schema exposes two types of fields. -Fixed fields, which have a declared name, and Patterned fields, which declare a regex pattern for the field name. -Patterned fields can have multiple occurrences as long as each has a unique name. - -In order to preserve the ability to round-trip between YAML and JSON formats, YAML version [1.2](https://www.yaml.org/spec/1.2/spec.html) is recommended along with some additional constraints: - -- Tags MUST be limited to those allowed by the [JSON Schema ruleset](https://www.yaml.org/spec/1.2/spec.html#id2803231) -- Keys used in YAML maps MUST be limited to a scalar string, as defined by the YAML Failsafe schema ruleset - -### File Structure - -The A2S representation of the API is made of a single file. -However, parts of the definitions can be split into separate files, at the discretion of the user. -This is applicable for `$ref` fields in the specification as follows from the [JSON Schema](https://json-schema.org/understanding-json-schema/structuring.html) definitions. - -By convention, the AsyncAPI Specification (A2S) file is named `asyncapi.json` or `asyncapi.yaml`. - -### Schema - -#### AsyncAPI Object - -This is the root document object for the API specification. -It combines resource listing and API declaration together into one document. - -##### Fixed Fields - -Field Name | Type | Description ----|:---:|--- -asyncapi | [AsyncAPI Version String](#A2SVersionString) | **Required.** Specifies the AsyncAPI Specification version being used. It can be used by tooling Specifications and clients to interpret the version. The structure shall be `major`.`minor`.`patch`, where `patch` versions _must_ be compatible with the existing `major`.`minor` tooling. Typically patch versions will be introduced to address errors in the documentation, and tooling should typically be compatible with the corresponding `major`.`minor` (1.0.*). Patch versions will correspond to patches of this document. -id | [Identifier](#A2SIdString) | Identifier of the [application](#definitionsApplication) the AsyncAPI document is defining. -info | [Info Object](#infoObject) | **Required.** Provides metadata about the API. The metadata can be used by the clients if needed. -servers | [Servers Object](#serversObject) | Provides connection details of servers. -defaultContentType | [Default Content Type](#defaultContentTypeString) | Default content type to use when encoding/decoding a message's payload. -channels | [Channels Object](#channelsObject) | **Required** The available channels and messages for the API. -components | [Components Object](#componentsObject) | An element to hold various schemas for the specification. -tags | [Tags Object](#tagsObject) | A list of tags used by the specification with additional metadata. Each tag name in the list MUST be unique. -externalDocs | [External Documentation Object](#externalDocumentationObject) | Additional external documentation. - - -This object can be extended with [Specification Extensions](#specificationExtensions). - -#### AsyncAPI Version String - -The version string signifies the version of the AsyncAPI Specification that the document complies to. -The format for this string _must_ be `major`.`minor`.`patch`. The `patch` _may_ be suffixed by a hyphen and extra alphanumeric characters. - -A `major`.`minor` shall be used to designate the AsyncAPI Specification version, and will be considered compatible with the AsyncAPI Specification specified by that `major`.`minor` version. -The patch version will not be considered by tooling, making no distinction between `1.0.0` and `1.0.1`. - -In subsequent versions of the AsyncAPI Specification, care will be given such that increments of the `minor` version should not interfere with operations of tooling developed to a lower minor version. Thus a hypothetical `1.1.0` specification should be usable with tooling designed for `1.0.0`. - -#### Identifier - -This field represents a unique universal identifier of the [application](#definitionsApplication) the AsyncAPI document is defining. It must conform to the URI format, according to [RFC3986](https://tools.ietf.org/html/rfc3986). - -It is RECOMMENDED to use a [URN](https://tools.ietf.org/html/rfc8141) to globally and uniquely identify the application during long periods of time, even after it becomes unavailable or ceases to exist. - -###### Examples - -```json -{ - "id": "urn:com:smartylighting:streetlights:server" -} -``` - -```yaml -id: 'urn:com:smartylighting:streetlights:server' -``` - -```json -{ - "id": "https://github.com/smartylighting/streetlights-server" -} -``` - -```yaml -id: 'https://github.com/smartylighting/streetlights-server' -``` - -#### Info Object - -The object provides metadata about the API. -The metadata can be used by the clients if needed. - -##### Fixed Fields - -Field Name | Type | Description ----|:---:|--- -title | `string` | **Required.** The title of the application. -version | `string` | **Required** Provides the version of the application API (not to be confused with the specification version). -description | `string` | A short description of the application. [CommonMark syntax](https://spec.commonmark.org/) can be used for rich text representation. -termsOfService | `string` | A URL to the Terms of Service for the API. MUST be in the format of a URL. -contact | [Contact Object](#contactObject) | The contact information for the exposed API. -license | [License Object](#licenseObject) | The license information for the exposed API. - -This object can be extended with [Specification Extensions](#specificationExtensions). - -##### Info Object Example: - -```json -{ - "title": "AsyncAPI Sample App", - "description": "This is a sample server.", - "termsOfService": "https://asyncapi.org/terms/", - "contact": { - "name": "API Support", - "url": "https://www.asyncapi.org/support", - "email": "support@asyncapi.org" - }, - "license": { - "name": "Apache 2.0", - "url": "https://www.apache.org/licenses/LICENSE-2.0.html" - }, - "version": "1.0.1" -} -``` - -```yaml -title: AsyncAPI Sample App -description: This is a sample server. -termsOfService: https://asyncapi.org/terms/ -contact: - name: API Support - url: https://www.asyncapi.org/support - email: support@asyncapi.org -license: - name: Apache 2.0 - url: https://www.apache.org/licenses/LICENSE-2.0.html -version: 1.0.1 -``` - -#### Contact Object - -Contact information for the exposed API. - -##### Fixed Fields - -Field Name | Type | Description ----|:---:|--- -name | `string` | The identifying name of the contact person/organization. -url | `string` | The URL pointing to the contact information. MUST be in the format of a URL. -email | `string` | The email address of the contact person/organization. MUST be in the format of an email address. - -This object can be extended with [Specification Extensions](#specificationExtensions). - -##### Contact Object Example: - -```json -{ - "name": "API Support", - "url": "https://www.example.com/support", - "email": "support@example.com" -} -``` - -```yaml -name: API Support -url: https://www.example.com/support -email: support@example.com -``` - -#### License Object - -License information for the exposed API. - -##### Fixed Fields - -Field Name | Type | Description ----|:---:|--- -name | `string` | **Required.** The license name used for the API. -url | `string` | A URL to the license used for the API. MUST be in the format of a URL. - -This object can be extended with [Specification Extensions](#specificationExtensions). - -##### License Object Example: - -```json -{ - "name": "Apache 2.0", - "url": "https://www.apache.org/licenses/LICENSE-2.0.html" -} -``` - -```yaml -name: Apache 2.0 -url: https://www.apache.org/licenses/LICENSE-2.0.html -``` - -#### Servers Object - -The Servers Object is a map of [Server Objects](#serverObject). - -##### Patterned Fields - -Field Pattern | Type | Description ----|:---:|--- -`^[A-Za-z0-9_\-]+$` | [Server Object](#serverObject) | The definition of a server this application MAY connect to. - -##### Servers Object Example - -```json -{ - "production": { - "url": "development.gigantic-server.com", - "description": "Development server", - "protocol": "kafka", - "protocolVersion": "1.0.0" - } -} -``` - -```yaml -production: - url: development.gigantic-server.com - description: Development server - protocol: kafka - protocolVersion: '1.0.0' -``` - - -#### Server Object - -An object representing a message broker, a server or any other kind of computer program capable of sending and/or receiving data. This object is used to capture details such as URIs, protocols and security configuration. Variable substitution can be used so that some details, for example usernames and passwords, can be injected by code generation tools. - -##### Fixed Fields - -Field Name | Type | Description ----|:---:|--- -url | `string` | **REQUIRED**. A URL to the target host. This URL supports Server Variables and MAY be relative, to indicate that the host location is relative to the location where the AsyncAPI document is being served. Variable substitutions will be made when a variable is named in `{`brackets`}`. -protocol | `string` | **REQUIRED**. The protocol this URL supports for connection. Supported protocol include, but are not limited to: `amqp`, `amqps`, `http`, `https`, `ibmmq`, `jms`, `kafka`, `kafka-secure`, `mqtt`, `secure-mqtt`, `stomp`, `stomps`, `ws`, `wss`, `mercure`. -protocolVersion | `string` | The version of the protocol used for connection. For instance: AMQP `0.9.1`, HTTP `2.0`, Kafka `1.0.0`, etc. -description | `string` | An optional string describing the host designated by the URL. [CommonMark syntax](https://spec.commonmark.org/) MAY be used for rich text representation. -variables | Map[`string`, [Server Variable Object](#serverVariableObject)] | A map between a variable name and its value. The value is used for substitution in the server's URL template. -security | [[Security Requirement Object](#securityRequirementObject)] | A declaration of which security mechanisms can be used with this server. The list of values includes alternative security requirement objects that can be used. Only one of the security requirement objects need to be satisfied to authorize a connection or operation. -bindings | [Server Bindings Object](#serverBindingsObject) \| [Reference Object](#referenceObject) | A map where the keys describe the name of the protocol and the values describe protocol-specific definitions for the server. - -This object MAY be extended with [Specification Extensions](#specificationExtensions). - -##### Server Object Example - -A single server would be described as: - -```json -{ - "url": "development.gigantic-server.com", - "description": "Development server", - "protocol": "kafka", - "protocolVersion": "1.0.0" -} -``` - -```yaml -url: development.gigantic-server.com -description: Development server -protocol: kafka -protocolVersion: '1.0.0' -``` - -The following shows how multiple servers can be described, for example, at the AsyncAPI Object's [`servers`](#A2SServers): - -```json -{ - "servers": { - "development": { - "url": "development.gigantic-server.com", - "description": "Development server", - "protocol": "amqp", - "protocolVersion": "0.9.1" - }, - "staging": { - "url": "staging.gigantic-server.com", - "description": "Staging server", - "protocol": "amqp", - "protocolVersion": "0.9.1" - }, - "production": { - "url": "api.gigantic-server.com", - "description": "Production server", - "protocol": "amqp", - "protocolVersion": "0.9.1" - } - } -} -``` - -```yaml -servers: - development: - url: development.gigantic-server.com - description: Development server - protocol: amqp - protocolVersion: 0.9.1 - staging: - url: staging.gigantic-server.com - description: Staging server - protocol: amqp - protocolVersion: 0.9.1 - production: - url: api.gigantic-server.com - description: Production server - protocol: amqp - protocolVersion: 0.9.1 -``` - -The following shows how variables can be used for a server configuration: - -```json -{ - "servers": { - "production": { - "url": "{username}.gigantic-server.com:{port}/{basePath}", - "description": "The production API server", - "protocol": "secure-mqtt", - "variables": { - "username": { - "default": "demo", - "description": "This value is assigned by the service provider, in this example `gigantic-server.com`" - }, - "port": { - "enum": [ - "8883", - "8884" - ], - "default": "8883" - }, - "basePath": { - "default": "v2" - } - } - } - } -} -``` - -```yaml -servers: - production: - url: '{username}.gigantic-server.com:{port}/{basePath}' - description: The production API server - protocol: secure-mqtt - variables: - username: - # note! no enum here means it is an open value - default: demo - description: This value is assigned by the service provider, in this example `gigantic-server.com` - port: - enum: - - '8883' - - '8884' - default: '8883' - basePath: - # open meaning there is the opportunity to use special base paths as assigned by the provider, default is `v2` - default: v2 -``` - - -#### Server Variable Object - -An object representing a Server Variable for server URL template substitution. - -##### Fixed Fields - -Field Name | Type | Description ----|:---:|--- -enum | [`string`] | An enumeration of string values to be used if the substitution options are from a limited set. -default | `string` | The default value to use for substitution, and to send, if an alternate value is _not_ supplied. -description | `string` | An optional description for the server variable. [CommonMark syntax](https://spec.commonmark.org/) MAY be used for rich text representation. -examples | [`string`] | An array of examples of the server variable. - -This object MAY be extended with [Specification Extensions](#specificationExtensions). - - - - - -#### Default Content Type - -A string representing the default content type to use when encoding/decoding a message's payload. The value MUST be a specific media type (e.g. `application/json`). This value MUST be used by schema parsers when the [contentType](#messageObjectContentType) property is omitted. - -In case a message can't be encoded/decoded using this value, schema parsers MUST use their default content type. - -##### Default Content Type Example - -```json -{ - "defaultContentType": "application/json" -} -``` - -```yaml -defaultContentType: application/json -``` - - - - - - -#### Channels Object - -Holds the relative paths to the individual channel and their operations. Channel paths are relative to servers. - -Channels are also known as "topics", "routing keys", "event types" or "paths". - -##### Patterned Fields - -Field Pattern | Type | Description ----|:---:|--- -{channel} | [Channel Item Object](#channelItemObject) | A relative path to an individual channel. The field name MUST be in the form of a [RFC 6570 URI template](https://tools.ietf.org/html/rfc6570). Query parameters and fragments SHALL NOT be used, instead use [bindings](#channelBindingsObject) to define them. - -##### Channels Object Example - -```json -{ - "user/signedup": { - "subscribe": { - "$ref": "#/components/messages/userSignedUp" - } - } -} -``` - -```yaml -user/signedup: - subscribe: - $ref: "#/components/messages/userSignedUp" -``` - - - - -#### Channel Item Object - -Describes the operations available on a single channel. - -##### Fixed Fields - -Field Name | Type | Description ----|:---:|--- -$ref | `string` | Allows for an external definition of this channel item. The referenced structure MUST be in the format of a [Channel Item Object](#channelItemObject). If there are conflicts between the referenced definition and this Channel Item's definition, the behavior is *undefined*. -description | `string` | An optional description of this channel item. [CommonMark syntax](https://spec.commonmark.org/) can be used for rich text representation. -subscribe | [Operation Object](#operationObject) | A definition of the SUBSCRIBE operation, which defines the messages produced by the application and sent to the channel. -publish | [Operation Object](#operationObject) | A definition of the PUBLISH operation, which defines the messages consumed by the application from the channel. -parameters | [Parameters Object](#parametersObject) | A map of the parameters included in the channel name. It SHOULD be present only when using channels with expressions (as defined by [RFC 6570 section 2.2](https://tools.ietf.org/html/rfc6570#section-2.2)). -bindings | [Channel Bindings Object](#channelBindingsObject) \| [Reference Object](#referenceObject) | A map where the keys describe the name of the protocol and the values describe protocol-specific definitions for the channel. - -This object can be extended with [Specification Extensions](#specificationExtensions). - -##### Channel Item Object Example - -```json -{ - "description": "This channel is used to exchange messages about users signing up", - "subscribe": { - "summary": "A user signed up.", - "message": { - "description": "A longer description of the message", - "payload": { - "type": "object", - "properties": { - "user": { - "$ref": "#/components/schemas/user" - }, - "signup": { - "$ref": "#/components/schemas/signup" - } - } - } - } - }, - "bindings": { - "amqp": { - "is": "queue", - "queue": { - "exclusive": true - } - } - } -} -``` - -```yaml -description: This channel is used to exchange messages about users signing up -subscribe: - summary: A user signed up. - message: - description: A longer description of the message - payload: - type: object - properties: - user: - $ref: "#/components/schemas/user" - signup: -bindings: - amqp: - is: queue - queue: - exclusive: true -``` - -Using `oneOf` to specify multiple messages per operation: - -```json -{ - "subscribe": { - "message": { - "oneOf": [ - { "$ref": "#/components/messages/signup" }, - { "$ref": "#/components/messages/login" } - ] - } - } -} -``` - -```yaml -subscribe: - message: - oneOf: - - $ref: '#/components/messages/signup' - - $ref: '#/components/messages/login' -``` - - - - - - - -#### Operation Object - -Describes a publish or a subscribe operation. This provides a place to document how and why messages are sent and received. - -For example, an operation might describe a chat application use case where a user sends a text message to a group. A publish operation describes messages that are received by the chat application, whereas a subscribe operation describes messages that are sent by the chat application. - -##### Fixed Fields - -Field Name | Type | Description ----|:---:|--- -operationId | `string` | Unique string used to identify the operation. The id MUST be unique among all operations described in the API. The operationId value is **case-sensitive**. Tools and libraries MAY use the operationId to uniquely identify an operation, therefore, it is RECOMMENDED to follow common programming naming conventions. -summary | `string` | A short summary of what the operation is about. -description | `string` | A verbose explanation of the operation. [CommonMark syntax](https://spec.commonmark.org/) can be used for rich text representation. -tags | [Tags Object](#tagsObject) | A list of tags for API documentation control. Tags can be used for logical grouping of operations. -externalDocs | [External Documentation Object](#externalDocumentationObject) | Additional external documentation for this operation. -bindings | [Operation Bindings Object](#operationBindingsObject) \| [Reference Object](#referenceObject) | A map where the keys describe the name of the protocol and the values describe protocol-specific definitions for the operation. -traits | [[Operation Trait Object](#operationTraitObject) | [Reference Object](#referenceObject) ] | A list of traits to apply to the operation object. Traits MUST be merged into the operation object using the [JSON Merge Patch](https://tools.ietf.org/html/rfc7386) algorithm in the same order they are defined here. -message | [[Message Object](#messageObject) | [Reference Object](#referenceObject)] | A definition of the message that will be published or received on this channel. `oneOf` is allowed here to specify multiple messages, however, **a message MUST be valid only against one of the referenced message objects.** - -This object can be extended with [Specification Extensions](#specificationExtensions). - -##### Operation Object Example - -```json -{ - "operationId": "registerUser", - "summary": "Action to sign a user up.", - "description": "A longer description", - "tags": [ - { "name": "user" }, - { "name": "signup" }, - { "name": "register" } - ], - "message": { - "headers": { - "type": "object", - "properties": { - "applicationInstanceId": { - "description": "Unique identifier for a given instance of the publishing application", - "type": "string" - } - } - }, - "payload": { - "type": "object", - "properties": { - "user": { - "$ref": "#/components/schemas/userCreate" - }, - "signup": { - "$ref": "#/components/schemas/signup" - } - } - } - }, - "bindings": { - "amqp": { - "ack": false - } - }, - "traits": [ - { "$ref": "#/components/operationTraits/kafka" } - ] -} -``` - -```yaml -operationId: registerUser -summary: Action to sign a user up. -description: A longer description -tags: - - name: user - - name: signup - - name: register -message: - headers: - type: object - properties: - applicationInstanceId: - description: Unique identifier for a given instance of the publishing application - type: string - payload: - type: object - properties: - user: - $ref: "#/components/schemas/userCreate" - signup: - $ref: "#/components/schemas/signup" -bindings: - amqp: - ack: false -traits: - - $ref: "#/components/operationTraits/kafka" -``` - - - - -#### Operation Trait Object - -Describes a trait that MAY be applied to an [Operation Object](#operationObject). This object MAY contain any property from the [Operation Object](#operationObject), except `message` and `traits`. - -If you're looking to apply traits to a message, see the [Message Trait Object](#messageTraitObject). - -##### Fixed Fields - -Field Name | Type | Description ----|:---:|--- -operationId | `string` | Unique string used to identify the operation. The id MUST be unique among all operations described in the API. The operationId value is **case-sensitive**. Tools and libraries MAY use the operationId to uniquely identify an operation, therefore, it is RECOMMENDED to follow common programming naming conventions. -summary | `string` | A short summary of what the operation is about. -description | `string` | A verbose explanation of the operation. [CommonMark syntax](https://spec.commonmark.org/) can be used for rich text representation. -tags | [Tags Object](#tagsObject) | A list of tags for API documentation control. Tags can be used for logical grouping of operations. -externalDocs | [External Documentation Object](#externalDocumentationObject) | Additional external documentation for this operation. -bindings | [Operation Bindings Object](#operationBindingsObject) \| [Reference Object](#referenceObject) | A map where the keys describe the name of the protocol and the values describe protocol-specific definitions for the operation. - -This object can be extended with [Specification Extensions](#specificationExtensions). - -##### Operation Trait Object Example - -```json -{ - "bindings": { - "amqp": { - "ack": false - } - } -} -``` - -```yaml -bindings: - amqp: - ack: false -``` - - - - -#### Parameters Object - -Describes a map of parameters included in a channel name. - -This map MUST contain all the parameters used in the parent channel name. - -##### Patterned Fields - -Field Pattern | Type | Description ----|:---:|--- -`^[A-Za-z0-9_\-]+$` | [Parameter Object](#parameterObject) | [Reference Object](#referenceObject) | The key represents the name of the parameter. It MUST match the parameter name used in the parent channel name. - -##### Parameters Object Example - -```json -{ - "user/{userId}/signup": { - "parameters": { - "userId": { - "description": "Id of the user.", - "schema": { - "type": "string" - } - } - }, - "subscribe": { - "$ref": "#/components/messages/userSignedUp" - } - } -} -``` - -```yaml -user/{userId}/signup: - parameters: - userId: - description: Id of the user. - schema: - type: string - subscribe: - $ref: "#/components/messages/userSignedUp" -``` - - - - - -#### Parameter Object - -Describes a parameter included in a channel name. - -##### Fixed Fields - -Field Name | Type | Description ----|:---:|--- -description | `string` | A verbose explanation of the parameter. [CommonMark syntax](https://spec.commonmark.org/) can be used for rich text representation. -schema | [Schema Object](#schemaObject) \| [Reference Object](#referenceObject) | Definition of the parameter. -location | `string` | A [runtime expression](#runtimeExpression) that specifies the location of the parameter value. Even when a definition for the target field exists, it MUST NOT be used to validate this parameter but, instead, the `schema` property MUST be used. - -This object can be extended with [Specification Extensions](#specificationExtensions). - -##### Parameter Object Example - -```json -{ - "user/{userId}/signup": { - "parameters": { - "userId": { - "description": "Id of the user.", - "schema": { - "type": "string" - }, - "location": "$message.payload#/user/id" - } - }, - "subscribe": { - "$ref": "#/components/messages/userSignedUp" - } - } -} -``` - -```yaml -user/{userId}/signup: - parameters: - userId: - description: Id of the user. - schema: - type: string - location: $message.payload#/user/id - subscribe: - $ref: "#/components/messages/userSignedUp" -``` - - - - -#### Server Bindings Object - -Map describing protocol-specific definitions for a server. - -##### Fixed Fields - -Field Name | Type | Description ----|:---:|--- -`http` | [HTTP Server Binding](https://github.com/asyncapi/bindings/blob/master/http#server) | Protocol-specific information for an HTTP server. -`ws` | [WebSockets Server Binding](https://github.com/asyncapi/bindings/blob/master/websockets#server) | Protocol-specific information for a WebSockets server. -`kafka` | [Kafka Server Binding](https://github.com/asyncapi/bindings/blob/master/kafka#server) | Protocol-specific information for a Kafka server. -`amqp` | [AMQP Server Binding](https://github.com/asyncapi/bindings/blob/master/amqp#server) | Protocol-specific information for an AMQP 0-9-1 server. -`amqp1` | [AMQP 1.0 Server Binding](https://github.com/asyncapi/bindings/blob/master/amqp1#server) | Protocol-specific information for an AMQP 1.0 server. -`mqtt` | [MQTT Server Binding](https://github.com/asyncapi/bindings/blob/master/mqtt#server) | Protocol-specific information for an MQTT server. -`mqtt5` | [MQTT 5 Server Binding](https://github.com/asyncapi/bindings/blob/master/mqtt5#server) | Protocol-specific information for an MQTT 5 server. -`nats` | [NATS Server Binding](https://github.com/asyncapi/bindings/blob/master/nats#server) | Protocol-specific information for a NATS server. -`jms` | [JMS Server Binding](https://github.com/asyncapi/bindings/blob/master/jms#server) | Protocol-specific information for a JMS server. -`sns` | [SNS Server Binding](https://github.com/asyncapi/bindings/blob/master/sns#server) | Protocol-specific information for an SNS server. -`sqs` | [SQS Server Binding](https://github.com/asyncapi/bindings/blob/master/sqs#server) | Protocol-specific information for an SQS server. -`stomp` | [STOMP Server Binding](https://github.com/asyncapi/bindings/blob/master/stomp#server) | Protocol-specific information for a STOMP server. -`redis` | [Redis Server Binding](https://github.com/asyncapi/bindings/blob/master/redis#server) | Protocol-specific information for a Redis server. -`mercure` | [Mercure Server Binding](https://github.com/asyncapi/bindings/blob/master/mercure#server) | Protocol-specific information for a Mercure server. -`ibmmq` | [IBM MQ Server Binding](https://github.com/asyncapi/bindings/blob/master/ibmmq#server-binding-object) | Protocol-specific information for an IBM MQ server. - -This object can be extended with [Specification Extensions](#specificationExtensions). - - - -#### Channel Bindings Object - -Map describing protocol-specific definitions for a channel. - -##### Fixed Fields - -Field Name | Type | Description ----|:---:|--- -`http` | [HTTP Channel Binding](https://github.com/asyncapi/bindings/blob/master/http/README.md#channel) | Protocol-specific information for an HTTP channel. -`ws` | [WebSockets Channel Binding](https://github.com/asyncapi/bindings/blob/master/websockets/README.md#channel) | Protocol-specific information for a WebSockets channel. -`kafka` | [Kafka Channel Binding](https://github.com/asyncapi/bindings/blob/master/kafka/README.md#channel) | Protocol-specific information for a Kafka channel. -`amqp` | [AMQP Channel Binding](https://github.com/asyncapi/bindings/blob/master/amqp/README.md#channel) | Protocol-specific information for an AMQP 0-9-1 channel. -`amqp1` | [AMQP 1.0 Channel Binding](https://github.com/asyncapi/bindings/blob/master/amqp1/README.md#channel) | Protocol-specific information for an AMQP 1.0 channel. -`mqtt` | [MQTT Channel Binding](https://github.com/asyncapi/bindings/blob/master/mqtt/README.md#channel) | Protocol-specific information for an MQTT channel. -`mqtt5` | [MQTT 5 Channel Binding](https://github.com/asyncapi/bindings/blob/master/mqtt5#channel) | Protocol-specific information for an MQTT 5 channel. -`nats` | [NATS Channel Binding](https://github.com/asyncapi/bindings/blob/master/nats/README.md#channel) | Protocol-specific information for a NATS channel. -`jms` | [JMS Channel Binding](https://github.com/asyncapi/bindings/blob/master/jms/README.md#channel) | Protocol-specific information for a JMS channel. -`sns` | [SNS Channel Binding](https://github.com/asyncapi/bindings/blob/master/sns/README.md#channel) | Protocol-specific information for an SNS channel. -`sqs` | [SQS Channel Binding](https://github.com/asyncapi/bindings/blob/master/sqs/README.md#channel) | Protocol-specific information for an SQS channel. -`stomp` | [STOMP Channel Binding](https://github.com/asyncapi/bindings/blob/master/stomp/README.md#channel) | Protocol-specific information for a STOMP channel. -`redis` | [Redis Channel Binding](https://github.com/asyncapi/bindings/blob/master/redis#channel) | Protocol-specific information for a Redis channel. -`mercure` | [Mercure Channel Binding](https://github.com/asyncapi/bindings/blob/master/mercure#channel) | Protocol-specific information for a Mercure channel. -`ibmmq` | [IBM MQ Channel Binding](https://github.com/asyncapi/bindings/tree/master/ibmmq#channel-binding-object) | Protocol-specific information for an IBM MQ channel. - -This object can be extended with [Specification Extensions](#specificationExtensions). - - - -#### Operation Bindings Object - -Map describing protocol-specific definitions for an operation. - -##### Fixed Fields - -Field Name | Type | Description ----|:---:|--- -`http` | [HTTP Operation Binding](https://github.com/asyncapi/bindings/blob/master/http/README.md#operation) | Protocol-specific information for an HTTP operation. -`ws` | [WebSockets Operation Binding](https://github.com/asyncapi/bindings/blob/master/websockets/README.md#operation) | Protocol-specific information for a WebSockets operation. -`kafka` | [Kafka Operation Binding](https://github.com/asyncapi/bindings/blob/master/kafka/README.md#operation) | Protocol-specific information for a Kafka operation. -`amqp` | [AMQP Operation Binding](https://github.com/asyncapi/bindings/blob/master/amqp/README.md#operation) | Protocol-specific information for an AMQP 0-9-1 operation. -`amqp1` | [AMQP 1.0 Operation Binding](https://github.com/asyncapi/bindings/blob/master/amqp1/README.md#operation) | Protocol-specific information for an AMQP 1.0 operation. -`mqtt` | [MQTT Operation Binding](https://github.com/asyncapi/bindings/blob/master/mqtt/README.md#operation) | Protocol-specific information for an MQTT operation. -`mqtt5` | [MQTT 5 Operation Binding](https://github.com/asyncapi/bindings/blob/master/mqtt5/README.md#operation) | Protocol-specific information for an MQTT 5 operation. -`nats` | [NATS Operation Binding](https://github.com/asyncapi/bindings/blob/master/nats/README.md#operation) | Protocol-specific information for a NATS operation. -`jms` | [JMS Operation Binding](https://github.com/asyncapi/bindings/blob/master/jms/README.md#operation) | Protocol-specific information for a JMS operation. -`sns` | [SNS Operation Binding](https://github.com/asyncapi/bindings/blob/master/sns/README.md#operation) | Protocol-specific information for an SNS operation. -`sqs` | [SQS Operation Binding](https://github.com/asyncapi/bindings/blob/master/sqs/README.md#operation) | Protocol-specific information for an SQS operation. -`stomp` | [STOMP Operation Binding](https://github.com/asyncapi/bindings/blob/master/stomp/README.md#operation) | Protocol-specific information for a STOMP operation. -`redis` | [Redis Operation Binding](https://github.com/asyncapi/bindings/blob/master/redis#operation) | Protocol-specific information for a Redis operation. -`mercure` | [Mercure Operation Binding](https://github.com/asyncapi/bindings/blob/master/mercure#operation) | Protocol-specific information for a Mercure operation. - -This object can be extended with [Specification Extensions](#specificationExtensions). - - - - -#### Message Bindings Object - -Map describing protocol-specific definitions for a message. - -##### Fixed Fields - -Field Name | Type | Description ----|:---:|--- -`http` | [HTTP Message Binding](https://github.com/asyncapi/bindings/blob/master/http/README.md#message) | Protocol-specific information for an HTTP message, i.e., a request or a response. -`ws` | [WebSockets Message Binding](https://github.com/asyncapi/bindings/blob/master/websockets/README.md#message) | Protocol-specific information for a WebSockets message. -`kafka` | [Kafka Message Binding](https://github.com/asyncapi/bindings/blob/master/kafka/README.md#message) | Protocol-specific information for a Kafka message. -`amqp` | [AMQP Message Binding](https://github.com/asyncapi/bindings/blob/master/amqp/README.md#message) | Protocol-specific information for an AMQP 0-9-1 message. -`amqp1` | [AMQP 1.0 Message Binding](https://github.com/asyncapi/bindings/blob/master/amqp1/README.md#message) | Protocol-specific information for an AMQP 1.0 message. -`mqtt` | [MQTT Message Binding](https://github.com/asyncapi/bindings/blob/master/mqtt/README.md#message) | Protocol-specific information for an MQTT message. -`mqtt5` | [MQTT 5 Message Binding](https://github.com/asyncapi/bindings/blob/master/mqtt5/README.md#message) | Protocol-specific information for an MQTT 5 message. -`nats` | [NATS Message Binding](https://github.com/asyncapi/bindings/blob/master/nats/README.md#message) | Protocol-specific information for a NATS message. -`jms` | [JMS Message Binding](https://github.com/asyncapi/bindings/blob/master/jms/README.md#message) | Protocol-specific information for a JMS message. -`sns` | [SNS Message Binding](https://github.com/asyncapi/bindings/blob/master/sns/README.md#message) | Protocol-specific information for an SNS message. -`sqs` | [SQS Message Binding](https://github.com/asyncapi/bindings/blob/master/sqs/README.md#message) | Protocol-specific information for an SQS message. -`stomp` | [STOMP Message Binding](https://github.com/asyncapi/bindings/blob/master/stomp/README.md#message) | Protocol-specific information for a STOMP message. -`redis` | [Redis Message Binding](https://github.com/asyncapi/bindings/blob/master/redis#message) | Protocol-specific information for a Redis message. -`mercure` | [Mercure Message Binding](https://github.com/asyncapi/bindings/blob/master/mercure#message) | Protocol-specific information for a Mercure message. -`ibmmq` | [IBM MQ Message Binding](https://github.com/asyncapi/bindings/tree/master/ibmmq#message-binding-object) | Protocol-specific information for an IBM MQ message. - -This object can be extended with [Specification Extensions](#specificationExtensions). - - - - - - - -#### Message Object - -Describes a message received on a given channel and operation. - -##### Fixed Fields - -Field Name | Type | Description ----|:---:|--- -headers | [Schema Object](#schemaObject) | [Reference Object](#referenceObject) | Schema definition of the application headers. Schema MUST be of type "object". It **MUST NOT** define the protocol headers. -payload | `any` | Definition of the message payload. It can be of any type but defaults to [Schema object](#schemaObject). It must match the schema format, including encoding type - e.g Avro should be inlined as either a YAML or JSON object NOT a string to be parsed as YAML or JSON. -correlationId | [Correlation ID Object](#correlationIdObject) | [Reference Object](#referenceObject) | Definition of the correlation ID used for message tracing or matching. -schemaFormat | `string` | A string containing the name of the schema format used to define the message payload. If omitted, implementations should parse the payload as a [Schema object](#schemaObject). When the payload is defined using a `$ref` to a remote file, it is RECOMMENDED the schema format includes the file encoding type to allow implementations to parse the file correctly. E.g., adding `+yaml` if content type is `application/vnd.apache.avro` results in `application/vnd.apache.avro+yaml`.

Check out the [supported schema formats table](#messageObjectSchemaFormatTable) for more information. Custom values are allowed but their implementation is OPTIONAL. A custom value MUST NOT refer to one of the schema formats listed in the [table](#messageObjectSchemaFormatTable). -contentType | `string` | The content type to use when encoding/decoding a message's payload. The value MUST be a specific media type (e.g. `application/json`). When omitted, the value MUST be the one specified on the [defaultContentType](#defaultContentTypeString) field. -name | `string` | A machine-friendly name for the message. -title | `string` | A human-friendly title for the message. -summary | `string` | A short summary of what the message is about. -description | `string` | A verbose explanation of the message. [CommonMark syntax](https://spec.commonmark.org/) can be used for rich text representation. -tags | [Tags Object](#tagsObject) | A list of tags for API documentation control. Tags can be used for logical grouping of messages. -externalDocs | [External Documentation Object](#externalDocumentationObject) | Additional external documentation for this message. -bindings | [Message Bindings Object](#messageBindingsObject) \| [Reference Object](#referenceObject) | A map where the keys describe the name of the protocol and the values describe protocol-specific definitions for the message. -examples | [Map[`string`, `any`]] | An array of key/value pairs where keys MUST be either **headers** and/or **payload**. Values MUST contain examples that validate against the [headers](#messageObjectHeaders) or [payload](#messageObjectPayload) fields, respectively. Example MAY also have the **name** and **summary** additional keys to provide respectively a machine-friendly name and a short summary of what the example is about. -traits | [[Message Trait Object](#messageTraitObject) | [Reference Object](#referenceObject)] | A list of traits to apply to the message object. Traits MUST be merged into the message object using the [JSON Merge Patch](https://tools.ietf.org/html/rfc7386) algorithm in the same order they are defined here. The resulting object MUST be a valid [Message Object](#messageObject). - -This object can be extended with [Specification Extensions](#specificationExtensions). - -##### Schema formats table - -The following table contains a set of values that every implementation MUST support. - -Name | Allowed values | Notes ----|:---:|--- -[AsyncAPI 2.1.0 Schema Object](#schemaObject) | `application/vnd.aai.asyncapi;version=2.1.0`, `application/vnd.aai.asyncapi+json;version=2.1.0`, `application/vnd.aai.asyncapi+yaml;version=2.1.0` | This is the default when a `schemaFormat` is not provided. -[JSON Schema Draft 07](https://json-schema.org/specification-links.html#draft-7) | `application/schema+json;version=draft-07`, `application/schema+yaml;version=draft-07` | - -The following table contains a set of values that every implementation is RECOMMENDED to support. - -Name | Allowed values | Notes ----|:---:|--- -[Avro 1.9.0 schema](https://avro.apache.org/docs/1.9.0/spec.html#schemas) | `application/vnd.apache.avro;version=1.9.0`, `application/vnd.apache.avro+json;version=1.9.0`, `application/vnd.apache.avro+yaml;version=1.9.0` | -[OpenAPI 3.0.0 Schema Object](https://github.com/OAI/OpenAPI-Specification/blob/master/versions/3.0.0.md#schemaObject) | `application/vnd.oai.openapi;version=3.0.0`, `application/vnd.oai.openapi+json;version=3.0.0`, `application/vnd.oai.openapi+yaml;version=3.0.0` | -[RAML 1.0 data type](https://github.com/raml-org/raml-spec/blob/master/versions/raml-10/raml-10.md/) | `application/raml+yaml;version=1.0` | - - -##### Message Object Example - -```json -{ - "name": "UserSignup", - "title": "User signup", - "summary": "Action to sign a user up.", - "description": "A longer description", - "contentType": "application/json", - "tags": [ - { "name": "user" }, - { "name": "signup" }, - { "name": "register" } - ], - "headers": { - "type": "object", - "properties": { - "correlationId": { - "description": "Correlation ID set by application", - "type": "string" - }, - "applicationInstanceId": { - "description": "Unique identifier for a given instance of the publishing application", - "type": "string" - } - } - }, - "payload": { - "type": "object", - "properties": { - "user": { - "$ref": "#/components/schemas/userCreate" - }, - "signup": { - "$ref": "#/components/schemas/signup" - } - } - }, - "correlationId": { - "description": "Default Correlation ID", - "location": "$message.header#/correlationId" - }, - "traits": [ - { "$ref": "#/components/messageTraits/commonHeaders" } - ], - "examples": [ - { - "name": "SimpleSignup", - "summary": "A simple UserSignup example message", - "headers": { - "correlationId": "my-correlation-id", - "applicationInstanceId": "myInstanceId" - }, - "payload": { - "user": { - "someUserKey": "someUserValue" - }, - "signup": { - "someSignupKey": "someSignupValue" - } - } - } - ] -} -``` - -```yaml -name: UserSignup -title: User signup -summary: Action to sign a user up. -description: A longer description -contentType: application/json -tags: - - name: user - - name: signup - - name: register -headers: - type: object - properties: - correlationId: - description: Correlation ID set by application - type: string - applicationInstanceId: - description: Unique identifier for a given instance of the publishing application - type: string -payload: - type: object - properties: - user: - $ref: "#/components/schemas/userCreate" - signup: - $ref: "#/components/schemas/signup" -correlationId: - description: Default Correlation ID - location: $message.header#/correlationId -traits: - - $ref: "#/components/messageTraits/commonHeaders" -examples: - - name: SimpleSignup - summary: A simple UserSignup example message - headers: - correlationId: my-correlation-id - applicationInstanceId: myInstanceId - payload: - user: - someUserKey: someUserValue - signup: - someSignupKey: someSignupValue -``` - -Example using Avro to define the payload: - -```json -{ - "name": "UserSignup", - "title": "User signup", - "summary": "Action to sign a user up.", - "description": "A longer description", - "tags": [ - { "name": "user" }, - { "name": "signup" }, - { "name": "register" } - ], - "schemaFormat": "application/vnd.apache.avro+json;version=1.9.0", - "payload": { - "$ref": "path/to/user-create.avsc#/UserCreate" - } -} -``` - -```yaml -name: UserSignup -title: User signup -summary: Action to sign a user up. -description: A longer description -tags: - - name: user - - name: signup - - name: register -schemaFormat: 'application/vnd.apache.avro+yaml;version=1.9.0' -payload: - $ref: 'path/to/user-create.avsc/#UserCreate' -``` - - - - - - - -#### Message Trait Object - -Describes a trait that MAY be applied to a [Message Object](#messageObject). This object MAY contain any property from the [Message Object](#messageObject), except `payload` and `traits`. - -If you're looking to apply traits to an operation, see the [Operation Trait Object](#operationTraitObject). - -##### Fixed Fields - -Field Name | Type | Description ----|:---:|--- -headers | [Schema Object](#schemaObject) | [Reference Object](#referenceObject) | Schema definition of the application headers. Schema MUST be of type "object". It **MUST NOT** define the protocol headers. -correlationId | [Correlation ID Object](#correlationIdObject) | [Reference Object](#referenceObject) | Definition of the correlation ID used for message tracing or matching. -schemaFormat | `string` | A string containing the name of the schema format/language used to define the message payload. If omitted, implementations should parse the payload as a [Schema object](#schemaObject). -contentType | `string` | The content type to use when encoding/decoding a message's payload. The value MUST be a specific media type (e.g. `application/json`). When omitted, the value MUST be the one specified on the [defaultContentType](#defaultContentTypeString) field. -name | `string` | A machine-friendly name for the message. -title | `string` | A human-friendly title for the message. -summary | `string` | A short summary of what the message is about. -description | `string` | A verbose explanation of the message. [CommonMark syntax](https://spec.commonmark.org/) can be used for rich text representation. -tags | [Tags Object](#tagsObject) | A list of tags for API documentation control. Tags can be used for logical grouping of messages. -externalDocs | [External Documentation Object](#externalDocumentationObject) | Additional external documentation for this message. -bindings | [Message Bindings Object](#messageBindingsObject) \| [Reference Object](#referenceObject) | A map where the keys describe the name of the protocol and the values describe protocol-specific definitions for the message. -examples | [Map[`string`, `any`]] | An array with examples of valid message objects. - -This object can be extended with [Specification Extensions](#specificationExtensions). - -##### Message Trait Object Example - -```json -{ - "schemaFormat": "application/vnd.apache.avro+json;version=1.9.0", - "contentType": "application/json" -} -``` - -```yaml -schemaFormat: 'application/vnd.apache.avro+yaml;version=1.9.0' -contentType: application/json -``` - -#### Tags Object - -A Tags object is a list of Tag Objects. - -#### Tag Object - -Allows adding meta data to a single tag. - -##### Fixed Fields -Field Name | Type | Description ----|:---:|--- -name | `string` | **Required.** The name of the tag. -description | `string` | A short description for the tag. [CommonMark syntax](https://spec.commonmark.org/) can be used for rich text representation. -externalDocs | [External Documentation Object](#externalDocumentationObject) | Additional external documentation for this tag. - -This object can be extended with [Specification Extensions](#specificationExtensions). - -##### Tag Object Example - -```json -{ - "name": "user", - "description": "User-related messages" -} -``` - -```yaml -name: user -description: User-related messages -``` - - - - - - - -#### External Documentation Object - -Allows referencing an external resource for extended documentation. - -##### Fixed Fields - -Field Name | Type | Description ----|:---:|--- -description | `string` | A short description of the target documentation. [CommonMark syntax](https://spec.commonmark.org/) can be used for rich text representation. -url | `string` | **Required.** The URL for the target documentation. Value MUST be in the format of a URL. - -This object can be extended with [Specification Extensions](#specificationExtensions). - -##### External Documentation Object Example - -```json -{ - "description": "Find more info here", - "url": "https://example.com" -} -``` - -```yaml -description: Find more info here -url: https://example.com -``` - -#### Reference Object - -A simple object to allow referencing other components in the specification, internally and externally. - - -The Reference Object is defined by [JSON Reference](https://tools.ietf.org/html/draft-pbryan-zyp-json-ref-03) and follows the same structure, behavior and rules. A JSON Reference SHALL only be used to refer to a schema that is formatted in either JSON or YAML. In the case of a YAML-formatted Schema, the JSON Reference SHALL be applied to the JSON representation of that schema. The JSON representation SHALL be made by applying the conversion described [here](#format). - -For this specification, reference resolution is done as defined by the JSON Reference specification and not by the JSON Schema specification. - -##### Fixed Fields -Field Name | Type | Description ----|:---:|--- -$ref | `string` | **Required.** The reference string. - -This object cannot be extended with additional properties and any properties added SHALL be ignored. - -##### Reference Object Example - -```json -{ - "$ref": "#/components/schemas/Pet" -} -``` - -```yaml - $ref: '#/components/schemas/Pet' -``` - -#### Components Object - -Holds a set of reusable objects for different aspects of the AsyncAPI specification. -All objects defined within the components object will have no effect on the API unless they are explicitly referenced from properties outside the components object. - -##### Fixed Fields - -Field Name | Type | Description ----|:---|--- - schemas | Map[`string`, [Schema Object](#schemaObject) \| [Reference Object](#referenceObject)] | An object to hold reusable [Schema Objects](#schemaObject). - messages | Map[`string`, [Message Object](#messageObject) \| [Reference Object](#referenceObject)] | An object to hold reusable [Message Objects](#messageObject). - securitySchemes| Map[`string`, [Security Scheme Object](#securitySchemeObject) \| [Reference Object](#referenceObject)] | An object to hold reusable [Security Scheme Objects](#securitySchemeObject). - parameters | Map[`string`, [Parameter Object](#parameterObject) \| [Reference Object](#referenceObject)] | An object to hold reusable [Parameter Objects](#parameterObject). - correlationIds | Map[`string`, [Correlation ID Object](#correlationIdObject) \| [Reference Object](#referenceObject)] | An object to hold reusable [Correlation ID Objects](#correlationIdObject). - operationTraits | Map[`string`, [Operation Trait Object](#operationTraitObject) \| [Reference Object](#referenceObject)] | An object to hold reusable [Operation Trait Objects](#operationTraitObject). - messageTraits | Map[`string`, [Message Trait Object](#messageTraitObject) \| [Reference Object](#referenceObject)] | An object to hold reusable [Message Trait Objects](#messageTraitObject). - serverBindings | Map[`string`, [Server Bindings Object](#serverBindingsObject) \| [Reference Object](#referenceObject)] | An object to hold reusable [Server Bindings Objects](#serverBindingsObject). - channelBindings | Map[`string`, [Channel Bindings Object](#channelBindingsObject) \| [Reference Object](#referenceObject)] | An object to hold reusable [Channel Bindings Objects](#channelBindingsObject). - operationBindings | Map[`string`, [Operation Bindings Object](#operationBindingsObject) \| [Reference Object](#referenceObject)] | An object to hold reusable [Operation Bindings Objects](#operationBindingsObject). - messageBindings | Map[`string`, [Message Bindings Object](#messageBindingsObject) \| [Reference Object](#referenceObject)] | An object to hold reusable [Message Bindings Objects](#messageBindingsObject). - -This object can be extended with [Specification Extensions](#specificationExtensions). - -All the fixed fields declared above are objects that MUST use keys that match the regular expression: `^[a-zA-Z0-9\.\-_]+$`. - -Field Name Examples: - -``` -User -User_1 -User_Name -user-name -my.org.User -``` - -##### Components Object Example - -```json -{ - "components": { - "schemas": { - "Category": { - "type": "object", - "properties": { - "id": { - "type": "integer", - "format": "int64" - }, - "name": { - "type": "string" - } - } - }, - "Tag": { - "type": "object", - "properties": { - "id": { - "type": "integer", - "format": "int64" - }, - "name": { - "type": "string" - } - } - } - }, - "messages": { - "userSignUp": { - "summary": "Action to sign a user up.", - "description": "Multiline description of what this action does.\nHere you have another line.\n", - "tags": [ - { - "name": "user" - }, - { - "name": "signup" - } - ], - "headers": { - "type": "object", - "properties": { - "applicationInstanceId": { - "description": "Unique identifier for a given instance of the publishing application", - "type": "string" - } - } - }, - "payload": { - "type": "object", - "properties": { - "user": { - "$ref": "#/components/schemas/userCreate" - }, - "signup": { - "$ref": "#/components/schemas/signup" - } - } - } - } - }, - "parameters": { - "userId": { - "description": "Id of the user.", - "schema": { - "type": "string" - } - } - }, - "correlationIds": { - "default": { - "description": "Default Correlation ID", - "location": "$message.header#/correlationId" - } - }, - "messageTraits": { - "commonHeaders": { - "headers": { - "type": "object", - "properties": { - "my-app-header": { - "type": "integer", - "minimum": 0, - "maximum": 100 - } - } - } - } - } - } -} -``` - -```yaml -components: - schemas: - Category: - type: object - properties: - id: - type: integer - format: int64 - name: - type: string - Tag: - type: object - properties: - id: - type: integer - format: int64 - name: - type: string - messages: - userSignUp: - summary: Action to sign a user up. - description: | - Multiline description of what this action does. - Here you have another line. - tags: - - name: user - - name: signup - headers: - type: object - properties: - applicationInstanceId: - description: Unique identifier for a given instance of the publishing application - type: string - payload: - type: object - properties: - user: - $ref: "#/components/schemas/userCreate" - signup: - $ref: "#/components/schemas/signup" - parameters: - userId: - description: Id of the user. - schema: - type: string - correlationIds: - default: - description: Default Correlation ID - location: $message.header#/correlationId - messageTraits: - commonHeaders: - headers: - type: object - properties: - my-app-header: - type: integer - minimum: 0 - maximum: 100 -``` - -#### Schema Object - -The Schema Object allows the definition of input and output data types. -These types can be objects, but also primitives and arrays. This object is a superset of the [JSON Schema Specification Draft 07](https://json-schema.org/). The empty schema (which allows any instance to validate) MAY be represented by the `boolean` value `true` and a schema which allows no instance to validate MAY be represented by the `boolean` value `false`. - -Further information about the properties can be found in [JSON Schema Core](https://tools.ietf.org/html/draft-handrews-json-schema-01) and [JSON Schema Validation](https://tools.ietf.org/html/draft-handrews-json-schema-validation-01). -Unless stated otherwise, the property definitions follow the JSON Schema specification as referenced here. - -##### Properties - -The AsyncAPI Schema Object is a JSON Schema vocabulary which extends JSON Schema Core and Validation vocabularies. As such, any keyword available for those vocabularies is by definition available in AsyncAPI, and will work the exact same way, including but not limited to: - -- title -- type -- required -- multipleOf -- maximum -- exclusiveMaximum -- minimum -- exclusiveMinimum -- maxLength -- minLength -- pattern (This string SHOULD be a valid regular expression, according to the [ECMA 262 regular expression](https://www.ecma-international.org/ecma-262/5.1/#sec-7.8.5) dialect) -- maxItems -- minItems -- uniqueItems -- maxProperties -- minProperties -- enum -- const -- examples -- if / then / else -- readOnly -- writeOnly -- properties -- patternProperties -- additionalProperties -- additionalItems -- items -- propertyNames -- contains -- allOf -- oneOf -- anyOf -- not - -The following properties are taken from the JSON Schema definition but their definitions were adjusted to the AsyncAPI Specification. - -- description - [CommonMark syntax](https://spec.commonmark.org/) can be used for rich text representation. -- format - See [Data Type Formats](#dataTypeFormat) for further details. While relying on JSON Schema's defined formats, the AsyncAPI Specification offers a few additional predefined formats. -- default - The default value represents what would be assumed by the consumer of the input as the value of the schema if one is not provided. Unlike JSON Schema, the value MUST conform to the defined type for the Schema Object defined at the same level. For example, of `type` is `string`, then `default` can be `"foo"` but cannot be `1`. - -Alternatively, any time a Schema Object can be used, a [Reference Object](#referenceObject) can be used in its place. This allows referencing definitions in place of defining them inline. - -In addition to the JSON Schema fields, the following AsyncAPI vocabulary fields MAY be used for further schema documentation: - -##### Fixed Fields -Field Name | Type | Description ----|:---:|--- -discriminator | `string` | Adds support for polymorphism. The discriminator is the schema property name that is used to differentiate between other schema that inherit this schema. The property name used MUST be defined at this schema and it MUST be in the `required` property list. When used, the value MUST be the name of this schema or any schema that inherits it. See [Composition and Inheritance](#schemaComposition) for more details. -externalDocs | [External Documentation Object](#externalDocumentationObject) | Additional external documentation for this schema. - deprecated | `boolean` | Specifies that a schema is deprecated and SHOULD be transitioned out of usage. Default value is `false`. - -This object can be extended with [Specification Extensions](#specificationExtensions). - -###### Composition and Inheritance (Polymorphism) - -The AsyncAPI Specification allows combining and extending model definitions using the `allOf` property of JSON Schema, in effect offering model composition. -`allOf` takes in an array of object definitions that are validated *independently* but together compose a single object. - -While composition offers model extensibility, it does not imply a hierarchy between the models. -To support polymorphism, AsyncAPI Specification adds the support of the `discriminator` field. -When used, the `discriminator` will be the name of the property used to decide which schema definition is used to validate the structure of the model. -As such, the `discriminator` field MUST be a required field. -There are are two ways to define the value of a discriminator for an inheriting instance. - -- Use the schema's name. -- Override the schema's name by overriding the property with a new value. If exists, this takes precedence over the schema's name. - -As such, inline schema definitions, which do not have a given id, *cannot* be used in polymorphism. - -##### Schema Object Examples - -###### Primitive Sample - -```json -{ - "type": "string", - "format": "email" -} -``` - -```yaml -type: string -format: email -``` - -###### Simple Model - -```json -{ - "type": "object", - "required": [ - "name" - ], - "properties": { - "name": { - "type": "string" - }, - "address": { - "$ref": "#/components/schemas/Address" - }, - "age": { - "type": "integer", - "format": "int32", - "minimum": 0 - } - } -} -``` - -```yaml -type: object -required: -- name -properties: - name: - type: string - address: - $ref: '#/components/schemas/Address' - age: - type: integer - format: int32 - minimum: 0 -``` - -###### Model with Map/Dictionary Properties - -For a simple string to string mapping: - -```json -{ - "type": "object", - "additionalProperties": { - "type": "string" - } -} -``` - -```yaml -type: object -additionalProperties: - type: string -``` - -For a string to model mapping: - -```json -{ - "type": "object", - "additionalProperties": { - "$ref": "#/components/schemas/ComplexModel" - } -} -``` - -```yaml -type: object -additionalProperties: - $ref: '#/components/schemas/ComplexModel' -``` - -###### Model with Example - -```json -{ - "type": "object", - "properties": { - "id": { - "type": "integer", - "format": "int64" - }, - "name": { - "type": "string" - } - }, - "required": [ - "name" - ], - "example": { - "name": "Puma", - "id": 1 - } -} -``` - -```yaml -type: object -properties: - id: - type: integer - format: int64 - name: - type: string -required: -- name -example: - name: Puma - id: 1 -``` - -###### Model with Boolean Schemas - -```json -{ - "type": "object", - "required": [ - "anySchema" - ], - "properties": { - "anySchema": true, - "cannotBeDefined": false - } -} -``` - -```yaml -type: object -required: -- anySchema -properties: - anySchema: true - cannotBeDefined: false -``` - -###### Models with Composition - -```json -{ - "schemas": { - "ErrorModel": { - "type": "object", - "required": [ - "message", - "code" - ], - "properties": { - "message": { - "type": "string" - }, - "code": { - "type": "integer", - "minimum": 100, - "maximum": 600 - } - } - }, - "ExtendedErrorModel": { - "allOf": [ - { - "$ref": "#/components/schemas/ErrorModel" - }, - { - "type": "object", - "required": [ - "rootCause" - ], - "properties": { - "rootCause": { - "type": "string" - } - } - } - ] - } - } -} -``` - -```yaml -schemas: - ErrorModel: - type: object - required: - - message - - code - properties: - message: - type: string - code: - type: integer - minimum: 100 - maximum: 600 - ExtendedErrorModel: - allOf: - - $ref: '#/components/schemas/ErrorModel' - - type: object - required: - - rootCause - properties: - rootCause: - type: string -``` - -###### Models with Polymorphism Support - -```json -{ - "schemas": { - "Pet": { - "type": "object", - "discriminator": "petType", - "properties": { - "name": { - "type": "string" - }, - "petType": { - "type": "string" - } - }, - "required": [ - "name", - "petType" - ] - }, - "Cat": { - "description": "A representation of a cat. Note that `Cat` will be used as the discriminator value.", - "allOf": [ - { - "$ref": "#/components/schemas/Pet" - }, - { - "type": "object", - "properties": { - "huntingSkill": { - "type": "string", - "description": "The measured skill for hunting", - "enum": [ - "clueless", - "lazy", - "adventurous", - "aggressive" - ] - } - }, - "required": [ - "huntingSkill" - ] - } - ] - }, - "Dog": { - "description": "A representation of a dog. Note that `Dog` will be used as the discriminator value.", - "allOf": [ - { - "$ref": "#/components/schemas/Pet" - }, - { - "type": "object", - "properties": { - "packSize": { - "type": "integer", - "format": "int32", - "description": "the size of the pack the dog is from", - "minimum": 0 - } - }, - "required": [ - "packSize" - ] - } - ] - }, - "StickInsect": { - "description": "A representation of an Australian walking stick. Note that `StickBug` will be used as the discriminator value.", - "allOf": [ - { - "$ref": "#/components/schemas/Pet" - }, - { - "type": "object", - "properties": { - "petType": { - "const": "StickBug" - }, - "color": { - "type": "string" - } - }, - "required": [ - "color" - ] - } - ] - } - } -} -``` - -```yaml -schemas: - Pet: - type: object - discriminator: petType - properties: - name: - type: string - petType: - type: string - required: - - name - - petType - ## applies to instances with `petType: "Cat"` - ## because that is the schema name - Cat: - description: A representation of a cat - allOf: - - $ref: '#/components/schemas/Pet' - - type: object - properties: - huntingSkill: - type: string - description: The measured skill for hunting - enum: - - clueless - - lazy - - adventurous - - aggressive - required: - - huntingSkill - ## applies to instances with `petType: "Dog"` - ## because that is the schema name - Dog: - description: A representation of a dog - allOf: - - $ref: '#/components/schemas/Pet' - - type: object - properties: - packSize: - type: integer - format: int32 - description: the size of the pack the dog is from - minimum: 0 - required: - - packSize - ## applies to instances with `petType: "StickBug"` - ## because that is the required value of the discriminator field, - ## overriding the schema name - StickInsect: - description: A representation of an Australian walking stick - allOf: - - $ref: '#/components/schemas/Pet' - - type: object - properties: - petType: - const: StickBug - color: - type: string - required: - - color -``` - - - - - -#### Security Scheme Object - -Defines a security scheme that can be used by the operations. Supported schemes are: - -* User/Password. -* API key (either as user or as password). -* X.509 certificate. -* End-to-end encryption (either symmetric or asymmetric). -* HTTP authentication. -* HTTP API key. -* OAuth2's common flows (Implicit, Resource Owner Protected Credentials, Client Credentials and Authorization Code) as defined in [RFC6749](https://tools.ietf.org/html/rfc6749). -* [OpenID Connect Discovery](https://tools.ietf.org/html/draft-ietf-oauth-discovery-06). -* SASL (Simple Authentication and Security Layer) as defined in [RFC4422](https://tools.ietf.org/html/rfc4422). - -##### Fixed Fields -Field Name | Type | Applies To | Description ----|:---:|---|--- -type | `string` | Any | **REQUIRED**. The type of the security scheme. Valid values are `"userPassword"`, `"apiKey"`, `"X509"`, `"symmetricEncryption"`, `"asymmetricEncryption"`, `"httpApiKey"`, `"http"`, `"oauth2"`, `"openIdConnect"`, `"plain"`, `"scramSha256"`, `"scramSha512"`, and `"gssapi"`. -description | `string` | Any | A short description for security scheme. [CommonMark syntax](https://spec.commonmark.org/) MAY be used for rich text representation. -name | `string` | `httpApiKey` | **REQUIRED**. The name of the header, query or cookie parameter to be used. -in | `string` | `apiKey` \| `httpApiKey` | **REQUIRED**. The location of the API key. Valid values are `"user"` and `"password"` for `apiKey` and `"query"`, `"header"` or `"cookie"` for `httpApiKey`. -scheme | `string` | `http` | **REQUIRED**. The name of the HTTP Authorization scheme to be used in the [Authorization header as defined in RFC7235](https://tools.ietf.org/html/rfc7235#section-5.1). -bearerFormat | `string` | `http` (`"bearer"`) | A hint to the client to identify how the bearer token is formatted. Bearer tokens are usually generated by an authorization server, so this information is primarily for documentation purposes. -flows | [OAuth Flows Object](#oauthFlowsObject) | `oauth2` | **REQUIRED**. An object containing configuration information for the flow types supported. -openIdConnectUrl | `string` | `openIdConnect` | **REQUIRED**. OpenId Connect URL to discover OAuth2 configuration values. This MUST be in the form of a URL. - -This object MAY be extended with [Specification Extensions](#specificationExtensions). - -##### Security Scheme Object Example - -###### User/Password Authentication Sample - -```json -{ - "type": "userPassword" -} -``` - -```yaml -type: userPassword -``` - -###### API Key Authentication Sample - -```json -{ - "type": "apiKey", - "in": "user" -} -``` - -```yaml -type: apiKey, -in: user -``` - -###### X.509 Authentication Sample - -```json -{ - "type": "X509" -} -``` - -```yaml -type: X509 -``` - -###### End-to-end Encryption Authentication Sample - -```json -{ - "type": "symmetricEncryption" -} -``` - -```yaml -type: symmetricEncryption -``` - -###### Basic Authentication Sample - -```json -{ - "type": "http", - "scheme": "basic" -} -``` - -```yaml -type: http -scheme: basic -``` - -###### API Key Sample - -```json -{ - "type": "httpApiKey", - "name": "api_key", - "in": "header" -} -``` - -```yaml -type: httpApiKey -name: api_key -in: header -``` - -###### JWT Bearer Sample - -```json -{ - "type": "http", - "scheme": "bearer", - "bearerFormat": "JWT" -} -``` - -```yaml -type: http -scheme: bearer -bearerFormat: JWT -``` - -###### Implicit OAuth2 Sample - -```json -{ - "type": "oauth2", - "flows": { - "implicit": { - "authorizationUrl": "https://example.com/api/oauth/dialog", - "scopes": { - "write:pets": "modify pets in your account", - "read:pets": "read your pets" - } - } - } -} -``` - -```yaml -type: oauth2 -flows: - implicit: - authorizationUrl: https://example.com/api/oauth/dialog - scopes: - write:pets: modify pets in your account - read:pets: read your pets -``` - -###### SASL Sample - -```json -{ - "type": "scramSha512" -} -``` - -```yaml -type: scramSha512 -``` - -#### OAuth Flows Object - -Allows configuration of the supported OAuth Flows. - -##### Fixed Fields -Field Name | Type | Description ----|:---:|--- -implicit| [OAuth Flow Object](#oauthFlowObject) | Configuration for the OAuth Implicit flow -password| [OAuth Flow Object](#oauthFlowObject) | Configuration for the OAuth Resource Owner Protected Credentials flow -clientCredentials| [OAuth Flow Object](#oauthFlowObject) | Configuration for the OAuth Client Credentials flow. -authorizationCode| [OAuth Flow Object](#oauthFlowObject) | Configuration for the OAuth Authorization Code flow. - -This object MAY be extended with [Specification Extensions](#specificationExtensions). - -#### OAuth Flow Object - -Configuration details for a supported OAuth Flow - -##### Fixed Fields -Field Name | Type | Applies To | Description ----|:---:|---|--- -authorizationUrl | `string` | `oauth2` (`"implicit"`, `"authorizationCode"`) | **REQUIRED**. The authorization URL to be used for this flow. This MUST be in the form of a URL. -tokenUrl | `string` | `oauth2` (`"password"`, `"clientCredentials"`, `"authorizationCode"`) | **REQUIRED**. The token URL to be used for this flow. This MUST be in the form of a URL. -refreshUrl | `string` | `oauth2` | The URL to be used for obtaining refresh tokens. This MUST be in the form of a URL. -scopes | Map[`string`, `string`] | `oauth2` | **REQUIRED**. The available scopes for the OAuth2 security scheme. A map between the scope name and a short description for it. - -This object MAY be extended with [Specification Extensions](#specificationExtensions). - -##### OAuth Flow Object Examples - -```JSON -{ - "type": "oauth2", - "flows": { - "implicit": { - "authorizationUrl": "https://example.com/api/oauth/dialog", - "scopes": { - "write:pets": "modify pets in your account", - "read:pets": "read your pets" - } - }, - "authorizationCode": { - "authorizationUrl": "https://example.com/api/oauth/dialog", - "tokenUrl": "https://example.com/api/oauth/token", - "scopes": { - "write:pets": "modify pets in your account", - "read:pets": "read your pets" - } - } - } -} -``` - -```YAML -type: oauth2 -flows: - implicit: - authorizationUrl: https://example.com/api/oauth/dialog - scopes: - write:pets: modify pets in your account - read:pets: read your pets - authorizationCode: - authorizationUrl: https://example.com/api/oauth/dialog - tokenUrl: https://example.com/api/oauth/token - scopes: - write:pets: modify pets in your account - read:pets: read your pets -``` - -#### Security Requirement Object - -Lists the required security schemes to execute this operation. -The name used for each property MUST correspond to a security scheme declared in the [Security Schemes](#componentsSecuritySchemes) under the [Components Object](#componentsObject). - -When a list of Security Requirement Objects is defined on a [Server object](#serverObject), only one of the Security Requirement Objects in the list needs to be satisfied to authorize the connection. - -##### Patterned Fields - -Field Pattern | Type | Description ----|:---:|--- -{name} | [`string`] | Each name MUST correspond to a security scheme which is declared in the [Security Schemes](#componentsSecuritySchemes) under the [Components Object](#componentsObject). If the security scheme is of type `"oauth2"` or `"openIdConnect"`, then the value is a list of scope names. Provide scopes that are required to establish successful connection with the server. If scopes are not needed, the list can be empty. For other security scheme types, the array MUST be empty. - -##### Security Requirement Object Examples - -###### User/Password Security Requirement - -```json -{ - "user_pass": [] -} -``` - -```yaml -user_pass: [] -``` - -###### API Key Security Requirement - -```json -{ - "api_key": [] -} -``` - -```yaml -api_key: [] -``` - -###### OAuth2 Security Requirement - -```json -{ - "petstore_auth": [ - "write:pets", - "read:pets" - ] -} -``` - -```yaml -petstore_auth: -- write:pets -- read:pets -``` - -### Correlation ID Object - -An object that specifies an identifier at design time that can used for message tracing and correlation. - -For specifying and computing the location of a Correlation ID, a [runtime expression](#runtimeExpression) is used. - -##### Fixed Fields - -Field Name | Type | Description ----|:---|--- -description | `string` | An optional description of the identifier. [CommonMark syntax](https://spec.commonmark.org/) can be used for rich text representation. -location | `string` | **REQUIRED.** A [runtime expression](#runtimeExpression) that specifies the location of the correlation ID. - -This object can be extended with [Specification Extensions](#specificationExtensions). - -##### Examples - -```json -{ - "description": "Default Correlation ID", - "location": "$message.header#/correlationId" -} -``` - -```yaml -description: Default Correlation ID -location: $message.header#/correlationId -``` - -### Runtime Expression - -A runtime expression allows values to be defined based on information that will be available within the message. -This mechanism is used by [Correlation ID Object](#correlationIdObject). - -The runtime expression is defined by the following [ABNF](https://tools.ietf.org/html/rfc5234) syntax: - -``` - expression = ( "$message" "." source ) - source = ( header-reference | payload-reference ) - header-reference = "header" ["#" fragment] - payload-reference = "payload" ["#" fragment] - fragment = a JSON Pointer [RFC 6901](https://tools.ietf.org/html/rfc6901) -``` - -The table below provides examples of runtime expressions and examples of their use in a value: - -##### Examples - -Source Location | Example expression | Notes ----|:---|:---| -Message Header Property | `$message.header#/MQMD/CorrelId` | Correlation ID is set using the `CorrelId` value from the `MQMD` header. -Message Payload Property | `$message.payload#/messageId` | Correlation ID is set using the `messageId` value from the message payload. - -Runtime expressions preserve the type of the referenced value. - -### Specification Extensions - -While the AsyncAPI Specification tries to accommodate most use cases, additional data can be added to extend the specification at certain points. - -The extensions properties are implemented as patterned fields that are always prefixed by `"x-"`. - -Field Pattern | Type | Description ----|:---:|--- -`^x-[\w\d\-\_]+$` | Any | Allows extensions to the AsyncAPI Schema. The field name MUST begin with `x-`, for example, `x-internal-id`. The value can be `null`, a primitive, an array or an object. Can have any valid JSON format value. - -The extensions may or may not be supported by the available tooling, but those may be extended as well to add requested support (if tools are internal or open-sourced). - -### Data Type Formats - -Primitives have an optional modifier property: `format`. -The AsyncAPI specification uses several known formats to more finely define the data type being used. -However, the `format` property is an open `string`-valued property, and can have any value to support documentation needs. -Formats such as `"email"`, `"uuid"`, etc., can be used even though they are not defined by this specification. -Types that are not accompanied by a `format` property follow their definition from the JSON Schema. -Tools that do not recognize a specific `format` MAY default back to the `type` alone, as if the `format` was not specified. - -The formats defined by the AsyncAPI Specification are: - - -Common Name | `type` | [`format`](#dataTypeFormat) | Comments ------------ | ------ | -------- | -------- -integer | `integer` | `int32` | signed 32 bits -long | `integer` | `int64` | signed 64 bits -float | `number` | `float` | | -double | `number` | `double` | | -string | `string` | | | -byte | `string` | `byte` | base64 encoded characters -binary | `string` | `binary` | any sequence of octets -boolean | `boolean` | | | -date | `string` | `date` | As defined by `full-date` - [RFC3339](https://www.rfc-editor.org/rfc/rfc3339#section-5) -dateTime | `string` | `date-time` | As defined by `date-time` - [RFC3339](https://www.rfc-editor.org/rfc/rfc3339#section-5) -password | `string` | `password` | Used to hint UIs the input needs to be obscured. - ---- - - \ No newline at end of file diff --git a/pages/docs/reference/specification/v2.2.0.md b/pages/docs/reference/specification/v2.2.0.md deleted file mode 100644 index 84991230b60..00000000000 --- a/pages/docs/reference/specification/v2.2.0.md +++ /dev/null @@ -1,2432 +0,0 @@ -# AsyncAPI Specification - -#### Disclaimer - -Part of this content has been taken from the great work done by the folks at the [OpenAPI Initiative](https://openapis.org). Mainly because **it's a great work** and we want to keep as much compatibility as possible with the [OpenAPI Specification](https://github.com/OAI/OpenAPI-Specification). - -#### Version 2.2.0 - -The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this document are to be interpreted as described in [RFC 2119](https://www.ietf.org/rfc/rfc2119.txt). - -The AsyncAPI Specification is licensed under [The Apache License, Version 2.0](https://www.apache.org/licenses/LICENSE-2.0.html). - -## Introduction - -The AsyncAPI Specification is a project used to describe and document message-driven APIs in a machine-readable format. It’s protocol-agnostic, so you can use it for APIs that work over any protocol (e.g., AMQP, MQTT, WebSockets, Kafka, STOMP, HTTP, Mercure, etc). - -The AsyncAPI Specification defines a set of files required to describe such an API. -These files can then be used to create utilities, such as documentation, integration and/or testing tools. - -The file(s) MUST describe the operations an [application](#definitionsApplication) accepts. For instance, consider the following AsyncAPI definition snippet: - -```yaml -user/signedup: - subscribe: - message: - $ref: "#/components/messages/userSignUp" -``` - -It means that the [application](#definitionsApplication) allows [consumers](#definitionsConsumer) to subscribe to the `user/signedup` [channel](#definitionsChannel) to receive userSignUp [messages](#definitionsMessage) produced by the application. - -**The AsyncAPI specification does not assume any kind of software topology, architecture or pattern.** Therefore, a server MAY be a message broker, a web server or any other kind of computer program capable of sending and/or receiving data. However, AsyncAPI offers a mechanism called "bindings" that aims to help with more specific information about the protocol. - - -## Definitions - -#### Application -An application is any kind of computer program or a group of them. It MUST be a [producer](#definitionsProducer), a [consumer](#definitionsConsumer) or both. An application MAY be a microservice, IoT device (sensor), mainframe process, etc. An application MAY be written in any number of different programming languages as long as they support the selected [protocol](#definitionsProtocol). An application MUST also use a protocol supported by the server in order to connect and exchange [messages](#definitionsMessage). - -#### Producer -A producer is a type of application, connected to a server, that is creating [messages](#definitionsMessage) and addressing them to [channels](#definitionsChannel). A producer MAY be publishing to multiple channels depending on the server, protocol, and use-case pattern. - -#### Consumer -A consumer is a type of application, connected to a server via a supported [protocol](#definitionsProtocol), that is consuming [messages](#definitionsMessage) from [channels](#definitionsChannel). A consumer MAY be consuming from multiple channels depending on the server, protocol, and the use-case pattern. - -#### Message -A message is the mechanism by which information is exchanged via a channel between servers and applications. A message MUST contain a payload and MAY also contain headers. The headers MAY be subdivided into [protocol](#definitionsProtocol)-defined headers and header properties defined by the application which can act as supporting metadata. The payload contains the data, defined by the application, which MUST be serialized into a format (JSON, XML, Avro, binary, etc.). Since a message is a generic mechanism, it can support multiple interaction patterns such as event, command, request, or response. - -#### Channel -A channel is an addressable component, made available by the server, for the organization of [messages](#definitionsMessage). [Producer](#definitionsProducer) applications send messages to channels and [consumer](#definitionsConsumer) applications consume messages from channels. Servers MAY support many channel instances, allowing messages with different content to be addressed to different channels. Depending on the server implementation, the channel MAY be included in the message via protocol-defined headers. - -#### Protocol -A protocol is the mechanism (wireline protocol or API) by which [messages](#definitionsMessage) are exchanged between the application and the [channel](#definitionsChannel). Example protocols include, but are not limited to, AMQP, HTTP, JMS, Kafka, Anypoint MQ, MQTT, STOMP, Mercure, WebSocket. - -#### Bindings -A "binding" (or "protocol binding") is a mechanism to define protocol-specific information. Therefore, a protocol binding MUST define protocol-specific information only. - -## Specification - -### Format - -The files describing the message-driven API in accordance with the AsyncAPI Specification are represented as JSON objects and conform to the JSON standards. -YAML, being a superset of JSON, can be used as well to represent a A2S (AsyncAPI Specification) file. - -For example, if a field is said to have an array value, the JSON array representation will be used: - -```yaml -{ - "field" : [...] -} -``` - -While the API is described using JSON it does not impose a JSON input/output to the API itself. - -All field names in the specification are **case sensitive**. - -The schema exposes two types of fields. -Fixed fields, which have a declared name, and Patterned fields, which declare a regex pattern for the field name. -Patterned fields can have multiple occurrences as long as each has a unique name. - -In order to preserve the ability to round-trip between YAML and JSON formats, YAML version [1.2](https://www.yaml.org/spec/1.2/spec.html) is recommended along with some additional constraints: - -- Tags MUST be limited to those allowed by the [JSON Schema ruleset](https://www.yaml.org/spec/1.2/spec.html#id2803231) -- Keys used in YAML maps MUST be limited to a scalar string, as defined by the YAML Failsafe schema ruleset - -### File Structure - -An AsyncAPI document MAY be made up of a single document or be divided into multiple, -connected parts at the discretion of the author. In the latter case, [Reference Objects](#referenceObject) are used. - -By convention, the AsyncAPI Specification (A2S) file is named `asyncapi.json` or `asyncapi.yaml`. - -### Schema - -#### AsyncAPI Object - -This is the root document object for the API specification. -It combines resource listing and API declaration together into one document. - -##### Fixed Fields - -Field Name | Type | Description ----|:---:|--- -asyncapi | [AsyncAPI Version String](#A2SVersionString) | **Required.** Specifies the AsyncAPI Specification version being used. It can be used by tooling Specifications and clients to interpret the version. The structure shall be `major`.`minor`.`patch`, where `patch` versions _must_ be compatible with the existing `major`.`minor` tooling. Typically patch versions will be introduced to address errors in the documentation, and tooling should typically be compatible with the corresponding `major`.`minor` (1.0.*). Patch versions will correspond to patches of this document. -id | [Identifier](#A2SIdString) | Identifier of the [application](#definitionsApplication) the AsyncAPI document is defining. -info | [Info Object](#infoObject) | **Required.** Provides metadata about the API. The metadata can be used by the clients if needed. -servers | [Servers Object](#serversObject) | Provides connection details of servers. -defaultContentType | [Default Content Type](#defaultContentTypeString) | Default content type to use when encoding/decoding a message's payload. -channels | [Channels Object](#channelsObject) | **Required** The available channels and messages for the API. -components | [Components Object](#componentsObject) | An element to hold various schemas for the specification. -tags | [Tags Object](#tagsObject) | A list of tags used by the specification with additional metadata. Each tag name in the list MUST be unique. -externalDocs | [External Documentation Object](#externalDocumentationObject) | Additional external documentation. - - -This object can be extended with [Specification Extensions](#specificationExtensions). - -#### AsyncAPI Version String - -The version string signifies the version of the AsyncAPI Specification that the document complies to. -The format for this string _must_ be `major`.`minor`.`patch`. The `patch` _may_ be suffixed by a hyphen and extra alphanumeric characters. - -A `major`.`minor` shall be used to designate the AsyncAPI Specification version, and will be considered compatible with the AsyncAPI Specification specified by that `major`.`minor` version. -The patch version will not be considered by tooling, making no distinction between `1.0.0` and `1.0.1`. - -In subsequent versions of the AsyncAPI Specification, care will be given such that increments of the `minor` version should not interfere with operations of tooling developed to a lower minor version. Thus a hypothetical `1.1.0` specification should be usable with tooling designed for `1.0.0`. - -#### Identifier - -This field represents a unique universal identifier of the [application](#definitionsApplication) the AsyncAPI document is defining. It must conform to the URI format, according to [RFC3986](https://tools.ietf.org/html/rfc3986). - -It is RECOMMENDED to use a [URN](https://tools.ietf.org/html/rfc8141) to globally and uniquely identify the application during long periods of time, even after it becomes unavailable or ceases to exist. - -###### Examples - -```json -{ - "id": "urn:com:smartylighting:streetlights:server" -} -``` - -```yaml -id: 'urn:com:smartylighting:streetlights:server' -``` - -```json -{ - "id": "https://github.com/smartylighting/streetlights-server" -} -``` - -```yaml -id: 'https://github.com/smartylighting/streetlights-server' -``` - -#### Info Object - -The object provides metadata about the API. -The metadata can be used by the clients if needed. - -##### Fixed Fields - -Field Name | Type | Description ----|:---:|--- -title | `string` | **Required.** The title of the application. -version | `string` | **Required** Provides the version of the application API (not to be confused with the specification version). -description | `string` | A short description of the application. [CommonMark syntax](https://spec.commonmark.org/) can be used for rich text representation. -termsOfService | `string` | A URL to the Terms of Service for the API. MUST be in the format of a URL. -contact | [Contact Object](#contactObject) | The contact information for the exposed API. -license | [License Object](#licenseObject) | The license information for the exposed API. - -This object can be extended with [Specification Extensions](#specificationExtensions). - -##### Info Object Example: - -```json -{ - "title": "AsyncAPI Sample App", - "description": "This is a sample server.", - "termsOfService": "https://asyncapi.org/terms/", - "contact": { - "name": "API Support", - "url": "https://www.asyncapi.org/support", - "email": "support@asyncapi.org" - }, - "license": { - "name": "Apache 2.0", - "url": "https://www.apache.org/licenses/LICENSE-2.0.html" - }, - "version": "1.0.1" -} -``` - -```yaml -title: AsyncAPI Sample App -description: This is a sample server. -termsOfService: https://asyncapi.org/terms/ -contact: - name: API Support - url: https://www.asyncapi.org/support - email: support@asyncapi.org -license: - name: Apache 2.0 - url: https://www.apache.org/licenses/LICENSE-2.0.html -version: 1.0.1 -``` - -#### Contact Object - -Contact information for the exposed API. - -##### Fixed Fields - -Field Name | Type | Description ----|:---:|--- -name | `string` | The identifying name of the contact person/organization. -url | `string` | The URL pointing to the contact information. MUST be in the format of a URL. -email | `string` | The email address of the contact person/organization. MUST be in the format of an email address. - -This object can be extended with [Specification Extensions](#specificationExtensions). - -##### Contact Object Example: - -```json -{ - "name": "API Support", - "url": "https://www.example.com/support", - "email": "support@example.com" -} -``` - -```yaml -name: API Support -url: https://www.example.com/support -email: support@example.com -``` - -#### License Object - -License information for the exposed API. - -##### Fixed Fields - -Field Name | Type | Description ----|:---:|--- -name | `string` | **Required.** The license name used for the API. -url | `string` | A URL to the license used for the API. MUST be in the format of a URL. - -This object can be extended with [Specification Extensions](#specificationExtensions). - -##### License Object Example: - -```json -{ - "name": "Apache 2.0", - "url": "https://www.apache.org/licenses/LICENSE-2.0.html" -} -``` - -```yaml -name: Apache 2.0 -url: https://www.apache.org/licenses/LICENSE-2.0.html -``` - -#### Servers Object - -The Servers Object is a map of [Server Objects](#serverObject). - -##### Patterned Fields - -Field Pattern | Type | Description ----|:---:|--- -`^[A-Za-z0-9_\-]+$` | [Server Object](#serverObject) | The definition of a server this application MAY connect to. - -##### Servers Object Example - -```json -{ - "production": { - "url": "development.gigantic-server.com", - "description": "Development server", - "protocol": "kafka", - "protocolVersion": "1.0.0" - } -} -``` - -```yaml -production: - url: development.gigantic-server.com - description: Development server - protocol: kafka - protocolVersion: '1.0.0' -``` - - -#### Server Object - -An object representing a message broker, a server or any other kind of computer program capable of sending and/or receiving data. This object is used to capture details such as URIs, protocols and security configuration. Variable substitution can be used so that some details, for example usernames and passwords, can be injected by code generation tools. - -##### Fixed Fields - -Field Name | Type | Description ----|:---:|--- -url | `string` | **REQUIRED**. A URL to the target host. This URL supports Server Variables and MAY be relative, to indicate that the host location is relative to the location where the AsyncAPI document is being served. Variable substitutions will be made when a variable is named in `{`brackets`}`. -protocol | `string` | **REQUIRED**. The protocol this URL supports for connection. Supported protocol include, but are not limited to: `amqp`, `amqps`, `http`, `https`, `ibmmq`, `jms`, `kafka`, `kafka-secure`, `anypointmq`, `mqtt`, `secure-mqtt`, `stomp`, `stomps`, `ws`, `wss`, `mercure`. -protocolVersion | `string` | The version of the protocol used for connection. For instance: AMQP `0.9.1`, HTTP `2.0`, Kafka `1.0.0`, etc. -description | `string` | An optional string describing the host designated by the URL. [CommonMark syntax](https://spec.commonmark.org/) MAY be used for rich text representation. -variables | Map[`string`, [Server Variable Object](#serverVariableObject)] | A map between a variable name and its value. The value is used for substitution in the server's URL template. -security | [[Security Requirement Object](#securityRequirementObject)] | A declaration of which security mechanisms can be used with this server. The list of values includes alternative security requirement objects that can be used. Only one of the security requirement objects need to be satisfied to authorize a connection or operation. -bindings | [Server Bindings Object](#serverBindingsObject) \| [Reference Object](#referenceObject) | A map where the keys describe the name of the protocol and the values describe protocol-specific definitions for the server. - -This object MAY be extended with [Specification Extensions](#specificationExtensions). - -##### Server Object Example - -A single server would be described as: - -```json -{ - "url": "development.gigantic-server.com", - "description": "Development server", - "protocol": "kafka", - "protocolVersion": "1.0.0" -} -``` - -```yaml -url: development.gigantic-server.com -description: Development server -protocol: kafka -protocolVersion: '1.0.0' -``` - -The following shows how multiple servers can be described, for example, at the AsyncAPI Object's [`servers`](#A2SServers): - -```json -{ - "servers": { - "development": { - "url": "development.gigantic-server.com", - "description": "Development server", - "protocol": "amqp", - "protocolVersion": "0.9.1" - }, - "staging": { - "url": "staging.gigantic-server.com", - "description": "Staging server", - "protocol": "amqp", - "protocolVersion": "0.9.1" - }, - "production": { - "url": "api.gigantic-server.com", - "description": "Production server", - "protocol": "amqp", - "protocolVersion": "0.9.1" - } - } -} -``` - -```yaml -servers: - development: - url: development.gigantic-server.com - description: Development server - protocol: amqp - protocolVersion: 0.9.1 - staging: - url: staging.gigantic-server.com - description: Staging server - protocol: amqp - protocolVersion: 0.9.1 - production: - url: api.gigantic-server.com - description: Production server - protocol: amqp - protocolVersion: 0.9.1 -``` - -The following shows how variables can be used for a server configuration: - -```json -{ - "servers": { - "production": { - "url": "{username}.gigantic-server.com:{port}/{basePath}", - "description": "The production API server", - "protocol": "secure-mqtt", - "variables": { - "username": { - "default": "demo", - "description": "This value is assigned by the service provider, in this example `gigantic-server.com`" - }, - "port": { - "enum": [ - "8883", - "8884" - ], - "default": "8883" - }, - "basePath": { - "default": "v2" - } - } - } - } -} -``` - -```yaml -servers: - production: - url: '{username}.gigantic-server.com:{port}/{basePath}' - description: The production API server - protocol: secure-mqtt - variables: - username: - # note! no enum here means it is an open value - default: demo - description: This value is assigned by the service provider, in this example `gigantic-server.com` - port: - enum: - - '8883' - - '8884' - default: '8883' - basePath: - # open meaning there is the opportunity to use special base paths as assigned by the provider, default is `v2` - default: v2 -``` - - -#### Server Variable Object - -An object representing a Server Variable for server URL template substitution. - -##### Fixed Fields - -Field Name | Type | Description ----|:---:|--- -enum | [`string`] | An enumeration of string values to be used if the substitution options are from a limited set. -default | `string` | The default value to use for substitution, and to send, if an alternate value is _not_ supplied. -description | `string` | An optional description for the server variable. [CommonMark syntax](https://spec.commonmark.org/) MAY be used for rich text representation. -examples | [`string`] | An array of examples of the server variable. - -This object MAY be extended with [Specification Extensions](#specificationExtensions). - - - - - -#### Default Content Type - -A string representing the default content type to use when encoding/decoding a message's payload. The value MUST be a specific media type (e.g. `application/json`). This value MUST be used by schema parsers when the [contentType](#messageObjectContentType) property is omitted. - -In case a message can't be encoded/decoded using this value, schema parsers MUST use their default content type. - -##### Default Content Type Example - -```json -{ - "defaultContentType": "application/json" -} -``` - -```yaml -defaultContentType: application/json -``` - - - - - - -#### Channels Object - -Holds the relative paths to the individual channel and their operations. Channel paths are relative to servers. - -Channels are also known as "topics", "routing keys", "event types" or "paths". - -##### Patterned Fields - -Field Pattern | Type | Description ----|:---:|--- -{channel} | [Channel Item Object](#channelItemObject) | A relative path to an individual channel. The field name MUST be in the form of a [RFC 6570 URI template](https://tools.ietf.org/html/rfc6570). Query parameters and fragments SHALL NOT be used, instead use [bindings](#channelBindingsObject) to define them. - -##### Channels Object Example - -```json -{ - "user/signedup": { - "subscribe": { - "message": { - "$ref": "#/components/messages/userSignedUp" - } - } - } -} -``` - -```yaml -user/signedup: - subscribe: - message: - $ref: "#/components/messages/userSignedUp" -``` - - - - -#### Channel Item Object - -Describes the operations available on a single channel. - -##### Fixed Fields - -Field Name | Type | Description ----|:---:|--- -$ref | `string` | Allows for an external definition of this channel item. The referenced structure MUST be in the format of a [Channel Item Object](#channelItemObject). If there are conflicts between the referenced definition and this Channel Item's definition, the behavior is *undefined*. -description | `string` | An optional description of this channel item. [CommonMark syntax](https://spec.commonmark.org/) can be used for rich text representation. -servers | [`string`] | The servers on which this channel is available, specified as an optional unordered list of names (string keys) of [Server Objects](#serverObject) defined in the [Servers Object](#serversObject) (a map). If `servers` is absent or empty then this channel must be available on all servers defined in the [Servers Object](#serversObject). -subscribe | [Operation Object](#operationObject) | A definition of the SUBSCRIBE operation, which defines the messages produced by the application and sent to the channel. -publish | [Operation Object](#operationObject) | A definition of the PUBLISH operation, which defines the messages consumed by the application from the channel. -parameters | [Parameters Object](#parametersObject) | A map of the parameters included in the channel name. It SHOULD be present only when using channels with expressions (as defined by [RFC 6570 section 2.2](https://tools.ietf.org/html/rfc6570#section-2.2)). -bindings | [Channel Bindings Object](#channelBindingsObject) \| [Reference Object](#referenceObject) | A map where the keys describe the name of the protocol and the values describe protocol-specific definitions for the channel. - -This object can be extended with [Specification Extensions](#specificationExtensions). - -##### Channel Item Object Example - -```json -{ - "description": "This channel is used to exchange messages about users signing up", - "subscribe": { - "summary": "A user signed up.", - "message": { - "description": "A longer description of the message", - "payload": { - "type": "object", - "properties": { - "user": { - "$ref": "#/components/schemas/user" - }, - "signup": { - "$ref": "#/components/schemas/signup" - } - } - } - } - }, - "bindings": { - "amqp": { - "is": "queue", - "queue": { - "exclusive": true - } - } - } -} -``` - -```yaml -description: This channel is used to exchange messages about users signing up -subscribe: - summary: A user signed up. - message: - description: A longer description of the message - payload: - type: object - properties: - user: - $ref: "#/components/schemas/user" - signup: -bindings: - amqp: - is: queue - queue: - exclusive: true -``` - -Using `oneOf` to specify multiple messages per operation: - -```json -{ - "subscribe": { - "message": { - "oneOf": [ - { "$ref": "#/components/messages/signup" }, - { "$ref": "#/components/messages/login" } - ] - } - } -} -``` - -```yaml -subscribe: - message: - oneOf: - - $ref: '#/components/messages/signup' - - $ref: '#/components/messages/login' -``` - - -Using explicit by-name references to the servers on which the channel is available: - -```json -{ - "description": "This application publishes WebUICommand messages to an AMQP queue on RabbitMQ brokers in the Staging and Production environments.", - "servers": [ - "rabbitmqBrokerInProd", - "rabbitmqBrokerInStaging", - ], - "subscribe": { - "message": { - "$ref": "#/components/messages/WebUICommand" - } - }, - "bindings": { - "amqp": { - "is": "queue" - } - } -} -``` - -```yaml -description: This application publishes WebUICommand messages to an AMQP queue on RabbitMQ brokers in the Staging and Production environments. -servers: - - rabbitmqBrokerInProd - - rabbitmqBrokerInStaging -subscribe: - message: - $ref: "#/components/messages/WebUICommand" -bindings: - amqp: - is: queue -``` - - - - - -#### Operation Object - -Describes a publish or a subscribe operation. This provides a place to document how and why messages are sent and received. - -For example, an operation might describe a chat application use case where a user sends a text message to a group. A publish operation describes messages that are received by the chat application, whereas a subscribe operation describes messages that are sent by the chat application. - -##### Fixed Fields - -Field Name | Type | Description ----|:---:|--- -operationId | `string` | Unique string used to identify the operation. The id MUST be unique among all operations described in the API. The operationId value is **case-sensitive**. Tools and libraries MAY use the operationId to uniquely identify an operation, therefore, it is RECOMMENDED to follow common programming naming conventions. -summary | `string` | A short summary of what the operation is about. -description | `string` | A verbose explanation of the operation. [CommonMark syntax](https://spec.commonmark.org/) can be used for rich text representation. -tags | [Tags Object](#tagsObject) | A list of tags for API documentation control. Tags can be used for logical grouping of operations. -externalDocs | [External Documentation Object](#externalDocumentationObject) | Additional external documentation for this operation. -bindings | [Operation Bindings Object](#operationBindingsObject) \| [Reference Object](#referenceObject) | A map where the keys describe the name of the protocol and the values describe protocol-specific definitions for the operation. -traits | [[Operation Trait Object](#operationTraitObject) | [Reference Object](#referenceObject) ] | A list of traits to apply to the operation object. Traits MUST be merged into the operation object using the [JSON Merge Patch](https://tools.ietf.org/html/rfc7386) algorithm in the same order they are defined here. -message | [[Message Object](#messageObject) | [Reference Object](#referenceObject)] | A definition of the message that will be published or received on this channel. `oneOf` is allowed here to specify multiple messages, however, **a message MUST be valid only against one of the referenced message objects.** - -This object can be extended with [Specification Extensions](#specificationExtensions). - -##### Operation Object Example - -```json -{ - "operationId": "registerUser", - "summary": "Action to sign a user up.", - "description": "A longer description", - "tags": [ - { "name": "user" }, - { "name": "signup" }, - { "name": "register" } - ], - "message": { - "headers": { - "type": "object", - "properties": { - "applicationInstanceId": { - "description": "Unique identifier for a given instance of the publishing application", - "type": "string" - } - } - }, - "payload": { - "type": "object", - "properties": { - "user": { - "$ref": "#/components/schemas/userCreate" - }, - "signup": { - "$ref": "#/components/schemas/signup" - } - } - } - }, - "bindings": { - "amqp": { - "ack": false - } - }, - "traits": [ - { "$ref": "#/components/operationTraits/kafka" } - ] -} -``` - -```yaml -operationId: registerUser -summary: Action to sign a user up. -description: A longer description -tags: - - name: user - - name: signup - - name: register -message: - headers: - type: object - properties: - applicationInstanceId: - description: Unique identifier for a given instance of the publishing application - type: string - payload: - type: object - properties: - user: - $ref: "#/components/schemas/userCreate" - signup: - $ref: "#/components/schemas/signup" -bindings: - amqp: - ack: false -traits: - - $ref: "#/components/operationTraits/kafka" -``` - - - - -#### Operation Trait Object - -Describes a trait that MAY be applied to an [Operation Object](#operationObject). This object MAY contain any property from the [Operation Object](#operationObject), except `message` and `traits`. - -If you're looking to apply traits to a message, see the [Message Trait Object](#messageTraitObject). - -##### Fixed Fields - -Field Name | Type | Description ----|:---:|--- -operationId | `string` | Unique string used to identify the operation. The id MUST be unique among all operations described in the API. The operationId value is **case-sensitive**. Tools and libraries MAY use the operationId to uniquely identify an operation, therefore, it is RECOMMENDED to follow common programming naming conventions. -summary | `string` | A short summary of what the operation is about. -description | `string` | A verbose explanation of the operation. [CommonMark syntax](https://spec.commonmark.org/) can be used for rich text representation. -tags | [Tags Object](#tagsObject) | A list of tags for API documentation control. Tags can be used for logical grouping of operations. -externalDocs | [External Documentation Object](#externalDocumentationObject) | Additional external documentation for this operation. -bindings | [Operation Bindings Object](#operationBindingsObject) \| [Reference Object](#referenceObject) | A map where the keys describe the name of the protocol and the values describe protocol-specific definitions for the operation. - -This object can be extended with [Specification Extensions](#specificationExtensions). - -##### Operation Trait Object Example - -```json -{ - "bindings": { - "amqp": { - "ack": false - } - } -} -``` - -```yaml -bindings: - amqp: - ack: false -``` - - - - -#### Parameters Object - -Describes a map of parameters included in a channel name. - -This map MUST contain all the parameters used in the parent channel name. - -##### Patterned Fields - -Field Pattern | Type | Description ----|:---:|--- -`^[A-Za-z0-9_\-]+$` | [Parameter Object](#parameterObject) | [Reference Object](#referenceObject) | The key represents the name of the parameter. It MUST match the parameter name used in the parent channel name. - -##### Parameters Object Example - -```json -{ - "user/{userId}/signup": { - "parameters": { - "userId": { - "description": "Id of the user.", - "schema": { - "type": "string" - } - } - }, - "subscribe": { - "message": { - "$ref": "#/components/messages/userSignedUp" - } - } - } -} -``` - -```yaml -user/{userId}/signup: - parameters: - userId: - description: Id of the user. - schema: - type: string - subscribe: - message: - $ref: "#/components/messages/userSignedUp" -``` - - - - - -#### Parameter Object - -Describes a parameter included in a channel name. - -##### Fixed Fields - -Field Name | Type | Description ----|:---:|--- -description | `string` | A verbose explanation of the parameter. [CommonMark syntax](https://spec.commonmark.org/) can be used for rich text representation. -schema | [Schema Object](#schemaObject) \| [Reference Object](#referenceObject) | Definition of the parameter. -location | `string` | A [runtime expression](#runtimeExpression) that specifies the location of the parameter value. Even when a definition for the target field exists, it MUST NOT be used to validate this parameter but, instead, the `schema` property MUST be used. - -This object can be extended with [Specification Extensions](#specificationExtensions). - -##### Parameter Object Example - -```json -{ - "user/{userId}/signup": { - "parameters": { - "userId": { - "description": "Id of the user.", - "schema": { - "type": "string" - }, - "location": "$message.payload#/user/id" - } - }, - "subscribe": { - "message": { - "$ref": "#/components/messages/userSignedUp" - } - } - } -} -``` - -```yaml -user/{userId}/signup: - parameters: - userId: - description: Id of the user. - schema: - type: string - location: $message.payload#/user/id - subscribe: - message: - $ref: "#/components/messages/userSignedUp" -``` - - - - -#### Server Bindings Object - -Map describing protocol-specific definitions for a server. - -##### Fixed Fields - -Field Name | Type | Description ----|:---:|--- -`http` | [HTTP Server Binding](https://github.com/asyncapi/bindings/blob/master/http#server) | Protocol-specific information for an HTTP server. -`ws` | [WebSockets Server Binding](https://github.com/asyncapi/bindings/blob/master/websockets#server) | Protocol-specific information for a WebSockets server. -`kafka` | [Kafka Server Binding](https://github.com/asyncapi/bindings/blob/master/kafka#server) | Protocol-specific information for a Kafka server. -`anypointmq` | [Anypoint MQ Server Binding](https://github.com/asyncapi/bindings/blob/master/anypointmq#server) | Protocol-specific information for an Anypoint MQ server. -`amqp` | [AMQP Server Binding](https://github.com/asyncapi/bindings/blob/master/amqp#server) | Protocol-specific information for an AMQP 0-9-1 server. -`amqp1` | [AMQP 1.0 Server Binding](https://github.com/asyncapi/bindings/blob/master/amqp1#server) | Protocol-specific information for an AMQP 1.0 server. -`mqtt` | [MQTT Server Binding](https://github.com/asyncapi/bindings/blob/master/mqtt#server) | Protocol-specific information for an MQTT server. -`mqtt5` | [MQTT 5 Server Binding](https://github.com/asyncapi/bindings/blob/master/mqtt5#server) | Protocol-specific information for an MQTT 5 server. -`nats` | [NATS Server Binding](https://github.com/asyncapi/bindings/blob/master/nats#server) | Protocol-specific information for a NATS server. -`jms` | [JMS Server Binding](https://github.com/asyncapi/bindings/blob/master/jms#server) | Protocol-specific information for a JMS server. -`sns` | [SNS Server Binding](https://github.com/asyncapi/bindings/blob/master/sns#server) | Protocol-specific information for an SNS server. -`sqs` | [SQS Server Binding](https://github.com/asyncapi/bindings/blob/master/sqs#server) | Protocol-specific information for an SQS server. -`stomp` | [STOMP Server Binding](https://github.com/asyncapi/bindings/blob/master/stomp#server) | Protocol-specific information for a STOMP server. -`redis` | [Redis Server Binding](https://github.com/asyncapi/bindings/blob/master/redis#server) | Protocol-specific information for a Redis server. -`mercure` | [Mercure Server Binding](https://github.com/asyncapi/bindings/blob/master/mercure#server) | Protocol-specific information for a Mercure server. -`ibmmq` | [IBM MQ Server Binding](https://github.com/asyncapi/bindings/blob/master/ibmmq#server-binding-object) | Protocol-specific information for an IBM MQ server. - -This object can be extended with [Specification Extensions](#specificationExtensions). - - - -#### Channel Bindings Object - -Map describing protocol-specific definitions for a channel. - -##### Fixed Fields - -Field Name | Type | Description ----|:---:|--- -`http` | [HTTP Channel Binding](https://github.com/asyncapi/bindings/blob/master/http/README.md#channel) | Protocol-specific information for an HTTP channel. -`ws` | [WebSockets Channel Binding](https://github.com/asyncapi/bindings/blob/master/websockets/README.md#channel) | Protocol-specific information for a WebSockets channel. -`kafka` | [Kafka Channel Binding](https://github.com/asyncapi/bindings/blob/master/kafka/README.md#channel) | Protocol-specific information for a Kafka channel. -`anypointmq` | [Anypoint MQ Channel Binding](https://github.com/asyncapi/bindings/blob/master/anypointmq/README.md#channel) | Protocol-specific information for an Anypoint MQ channel. -`amqp` | [AMQP Channel Binding](https://github.com/asyncapi/bindings/blob/master/amqp/README.md#channel) | Protocol-specific information for an AMQP 0-9-1 channel. -`amqp1` | [AMQP 1.0 Channel Binding](https://github.com/asyncapi/bindings/blob/master/amqp1/README.md#channel) | Protocol-specific information for an AMQP 1.0 channel. -`mqtt` | [MQTT Channel Binding](https://github.com/asyncapi/bindings/blob/master/mqtt/README.md#channel) | Protocol-specific information for an MQTT channel. -`mqtt5` | [MQTT 5 Channel Binding](https://github.com/asyncapi/bindings/blob/master/mqtt5#channel) | Protocol-specific information for an MQTT 5 channel. -`nats` | [NATS Channel Binding](https://github.com/asyncapi/bindings/blob/master/nats/README.md#channel) | Protocol-specific information for a NATS channel. -`jms` | [JMS Channel Binding](https://github.com/asyncapi/bindings/blob/master/jms/README.md#channel) | Protocol-specific information for a JMS channel. -`sns` | [SNS Channel Binding](https://github.com/asyncapi/bindings/blob/master/sns/README.md#channel) | Protocol-specific information for an SNS channel. -`sqs` | [SQS Channel Binding](https://github.com/asyncapi/bindings/blob/master/sqs/README.md#channel) | Protocol-specific information for an SQS channel. -`stomp` | [STOMP Channel Binding](https://github.com/asyncapi/bindings/blob/master/stomp/README.md#channel) | Protocol-specific information for a STOMP channel. -`redis` | [Redis Channel Binding](https://github.com/asyncapi/bindings/blob/master/redis#channel) | Protocol-specific information for a Redis channel. -`mercure` | [Mercure Channel Binding](https://github.com/asyncapi/bindings/blob/master/mercure#channel) | Protocol-specific information for a Mercure channel. -`ibmmq` | [IBM MQ Channel Binding](https://github.com/asyncapi/bindings/tree/master/ibmmq#channel-binding-object) | Protocol-specific information for an IBM MQ channel. - -This object can be extended with [Specification Extensions](#specificationExtensions). - - - -#### Operation Bindings Object - -Map describing protocol-specific definitions for an operation. - -##### Fixed Fields - -Field Name | Type | Description ----|:---:|--- -`http` | [HTTP Operation Binding](https://github.com/asyncapi/bindings/blob/master/http/README.md#operation) | Protocol-specific information for an HTTP operation. -`ws` | [WebSockets Operation Binding](https://github.com/asyncapi/bindings/blob/master/websockets/README.md#operation) | Protocol-specific information for a WebSockets operation. -`kafka` | [Kafka Operation Binding](https://github.com/asyncapi/bindings/blob/master/kafka/README.md#operation) | Protocol-specific information for a Kafka operation. -`anypointmq` | [Anypoint MQ Operation Binding](https://github.com/asyncapi/bindings/blob/master/anypointmq/README.md#operation) | Protocol-specific information for an Anypoint MQ operation. -`amqp` | [AMQP Operation Binding](https://github.com/asyncapi/bindings/blob/master/amqp/README.md#operation) | Protocol-specific information for an AMQP 0-9-1 operation. -`amqp1` | [AMQP 1.0 Operation Binding](https://github.com/asyncapi/bindings/blob/master/amqp1/README.md#operation) | Protocol-specific information for an AMQP 1.0 operation. -`mqtt` | [MQTT Operation Binding](https://github.com/asyncapi/bindings/blob/master/mqtt/README.md#operation) | Protocol-specific information for an MQTT operation. -`mqtt5` | [MQTT 5 Operation Binding](https://github.com/asyncapi/bindings/blob/master/mqtt5/README.md#operation) | Protocol-specific information for an MQTT 5 operation. -`nats` | [NATS Operation Binding](https://github.com/asyncapi/bindings/blob/master/nats/README.md#operation) | Protocol-specific information for a NATS operation. -`jms` | [JMS Operation Binding](https://github.com/asyncapi/bindings/blob/master/jms/README.md#operation) | Protocol-specific information for a JMS operation. -`sns` | [SNS Operation Binding](https://github.com/asyncapi/bindings/blob/master/sns/README.md#operation) | Protocol-specific information for an SNS operation. -`sqs` | [SQS Operation Binding](https://github.com/asyncapi/bindings/blob/master/sqs/README.md#operation) | Protocol-specific information for an SQS operation. -`stomp` | [STOMP Operation Binding](https://github.com/asyncapi/bindings/blob/master/stomp/README.md#operation) | Protocol-specific information for a STOMP operation. -`redis` | [Redis Operation Binding](https://github.com/asyncapi/bindings/blob/master/redis#operation) | Protocol-specific information for a Redis operation. -`mercure` | [Mercure Operation Binding](https://github.com/asyncapi/bindings/blob/master/mercure#operation) | Protocol-specific information for a Mercure operation. - -This object can be extended with [Specification Extensions](#specificationExtensions). - - - - -#### Message Bindings Object - -Map describing protocol-specific definitions for a message. - -##### Fixed Fields - -Field Name | Type | Description ----|:---:|--- -`http` | [HTTP Message Binding](https://github.com/asyncapi/bindings/blob/master/http/README.md#message) | Protocol-specific information for an HTTP message, i.e., a request or a response. -`ws` | [WebSockets Message Binding](https://github.com/asyncapi/bindings/blob/master/websockets/README.md#message) | Protocol-specific information for a WebSockets message. -`kafka` | [Kafka Message Binding](https://github.com/asyncapi/bindings/blob/master/kafka/README.md#message) | Protocol-specific information for a Kafka message. -`anypointmq` | [Anypoint MQ Message Binding](https://github.com/asyncapi/bindings/blob/master/anypointmq/README.md#message) | Protocol-specific information for an Anypoint MQ message. -`amqp` | [AMQP Message Binding](https://github.com/asyncapi/bindings/blob/master/amqp/README.md#message) | Protocol-specific information for an AMQP 0-9-1 message. -`amqp1` | [AMQP 1.0 Message Binding](https://github.com/asyncapi/bindings/blob/master/amqp1/README.md#message) | Protocol-specific information for an AMQP 1.0 message. -`mqtt` | [MQTT Message Binding](https://github.com/asyncapi/bindings/blob/master/mqtt/README.md#message) | Protocol-specific information for an MQTT message. -`mqtt5` | [MQTT 5 Message Binding](https://github.com/asyncapi/bindings/blob/master/mqtt5/README.md#message) | Protocol-specific information for an MQTT 5 message. -`nats` | [NATS Message Binding](https://github.com/asyncapi/bindings/blob/master/nats/README.md#message) | Protocol-specific information for a NATS message. -`jms` | [JMS Message Binding](https://github.com/asyncapi/bindings/blob/master/jms/README.md#message) | Protocol-specific information for a JMS message. -`sns` | [SNS Message Binding](https://github.com/asyncapi/bindings/blob/master/sns/README.md#message) | Protocol-specific information for an SNS message. -`sqs` | [SQS Message Binding](https://github.com/asyncapi/bindings/blob/master/sqs/README.md#message) | Protocol-specific information for an SQS message. -`stomp` | [STOMP Message Binding](https://github.com/asyncapi/bindings/blob/master/stomp/README.md#message) | Protocol-specific information for a STOMP message. -`redis` | [Redis Message Binding](https://github.com/asyncapi/bindings/blob/master/redis#message) | Protocol-specific information for a Redis message. -`mercure` | [Mercure Message Binding](https://github.com/asyncapi/bindings/blob/master/mercure#message) | Protocol-specific information for a Mercure message. -`ibmmq` | [IBM MQ Message Binding](https://github.com/asyncapi/bindings/tree/master/ibmmq#message-binding-object) | Protocol-specific information for an IBM MQ message. - -This object can be extended with [Specification Extensions](#specificationExtensions). - - - - - - - -#### Message Object - -Describes a message received on a given channel and operation. - -##### Fixed Fields - -Field Name | Type | Description ----|:---:|--- -headers | [Schema Object](#schemaObject) | [Reference Object](#referenceObject) | Schema definition of the application headers. Schema MUST be of type "object". It **MUST NOT** define the protocol headers. -payload | `any` | Definition of the message payload. It can be of any type but defaults to [Schema object](#schemaObject). It must match the schema format, including encoding type - e.g Avro should be inlined as either a YAML or JSON object NOT a string to be parsed as YAML or JSON. -correlationId | [Correlation ID Object](#correlationIdObject) | [Reference Object](#referenceObject) | Definition of the correlation ID used for message tracing or matching. -schemaFormat | `string` | A string containing the name of the schema format used to define the message payload. If omitted, implementations should parse the payload as a [Schema object](#schemaObject). When the payload is defined using a `$ref` to a remote file, it is RECOMMENDED the schema format includes the file encoding type to allow implementations to parse the file correctly. E.g., adding `+yaml` if content type is `application/vnd.apache.avro` results in `application/vnd.apache.avro+yaml`.

Check out the [supported schema formats table](#messageObjectSchemaFormatTable) for more information. Custom values are allowed but their implementation is OPTIONAL. A custom value MUST NOT refer to one of the schema formats listed in the [table](#messageObjectSchemaFormatTable). -contentType | `string` | The content type to use when encoding/decoding a message's payload. The value MUST be a specific media type (e.g. `application/json`). When omitted, the value MUST be the one specified on the [defaultContentType](#defaultContentTypeString) field. -name | `string` | A machine-friendly name for the message. -title | `string` | A human-friendly title for the message. -summary | `string` | A short summary of what the message is about. -description | `string` | A verbose explanation of the message. [CommonMark syntax](https://spec.commonmark.org/) can be used for rich text representation. -tags | [Tags Object](#tagsObject) | A list of tags for API documentation control. Tags can be used for logical grouping of messages. -externalDocs | [External Documentation Object](#externalDocumentationObject) | Additional external documentation for this message. -bindings | [Message Bindings Object](#messageBindingsObject) \| [Reference Object](#referenceObject) | A map where the keys describe the name of the protocol and the values describe protocol-specific definitions for the message. -examples | [[Message Example Object](#messageExampleObject)] | List of examples. -traits | [[Message Trait Object](#messageTraitObject) | [Reference Object](#referenceObject)] | A list of traits to apply to the message object. Traits MUST be merged into the message object using the [JSON Merge Patch](https://tools.ietf.org/html/rfc7386) algorithm in the same order they are defined here. The resulting object MUST be a valid [Message Object](#messageObject). - -This object can be extended with [Specification Extensions](#specificationExtensions). - -##### Schema formats table - -The following table contains a set of values that every implementation MUST support. - -Name | Allowed values | Notes ----|:---:|--- -[AsyncAPI 2.2.0 Schema Object](#schemaObject) | `application/vnd.aai.asyncapi;version=2.2.0`, `application/vnd.aai.asyncapi+json;version=2.2.0`, `application/vnd.aai.asyncapi+yaml;version=2.2.0` | This is the default when a `schemaFormat` is not provided. -[JSON Schema Draft 07](https://json-schema.org/specification-links.html#draft-7) | `application/schema+json;version=draft-07`, `application/schema+yaml;version=draft-07` | - -The following table contains a set of values that every implementation is RECOMMENDED to support. - -Name | Allowed values | Notes ----|:---:|--- -[Avro 1.9.0 schema](https://avro.apache.org/docs/1.9.0/spec.html#schemas) | `application/vnd.apache.avro;version=1.9.0`, `application/vnd.apache.avro+json;version=1.9.0`, `application/vnd.apache.avro+yaml;version=1.9.0` | -[OpenAPI 3.0.0 Schema Object](https://github.com/OAI/OpenAPI-Specification/blob/master/versions/3.0.0.md#schemaObject) | `application/vnd.oai.openapi;version=3.0.0`, `application/vnd.oai.openapi+json;version=3.0.0`, `application/vnd.oai.openapi+yaml;version=3.0.0` | -[RAML 1.0 data type](https://github.com/raml-org/raml-spec/blob/master/versions/raml-10/raml-10.md/) | `application/raml+yaml;version=1.0` | - - -##### Message Object Example - -```json -{ - "name": "UserSignup", - "title": "User signup", - "summary": "Action to sign a user up.", - "description": "A longer description", - "contentType": "application/json", - "tags": [ - { "name": "user" }, - { "name": "signup" }, - { "name": "register" } - ], - "headers": { - "type": "object", - "properties": { - "correlationId": { - "description": "Correlation ID set by application", - "type": "string" - }, - "applicationInstanceId": { - "description": "Unique identifier for a given instance of the publishing application", - "type": "string" - } - } - }, - "payload": { - "type": "object", - "properties": { - "user": { - "$ref": "#/components/schemas/userCreate" - }, - "signup": { - "$ref": "#/components/schemas/signup" - } - } - }, - "correlationId": { - "description": "Default Correlation ID", - "location": "$message.header#/correlationId" - }, - "traits": [ - { "$ref": "#/components/messageTraits/commonHeaders" } - ], - "examples": [ - { - "name": "SimpleSignup", - "summary": "A simple UserSignup example message", - "headers": { - "correlationId": "my-correlation-id", - "applicationInstanceId": "myInstanceId" - }, - "payload": { - "user": { - "someUserKey": "someUserValue" - }, - "signup": { - "someSignupKey": "someSignupValue" - } - } - } - ] -} -``` - -```yaml -name: UserSignup -title: User signup -summary: Action to sign a user up. -description: A longer description -contentType: application/json -tags: - - name: user - - name: signup - - name: register -headers: - type: object - properties: - correlationId: - description: Correlation ID set by application - type: string - applicationInstanceId: - description: Unique identifier for a given instance of the publishing application - type: string -payload: - type: object - properties: - user: - $ref: "#/components/schemas/userCreate" - signup: - $ref: "#/components/schemas/signup" -correlationId: - description: Default Correlation ID - location: $message.header#/correlationId -traits: - - $ref: "#/components/messageTraits/commonHeaders" -examples: - - name: SimpleSignup - summary: A simple UserSignup example message - headers: - correlationId: my-correlation-id - applicationInstanceId: myInstanceId - payload: - user: - someUserKey: someUserValue - signup: - someSignupKey: someSignupValue -``` - -Example using Avro to define the payload: - -```json -{ - "name": "UserSignup", - "title": "User signup", - "summary": "Action to sign a user up.", - "description": "A longer description", - "tags": [ - { "name": "user" }, - { "name": "signup" }, - { "name": "register" } - ], - "schemaFormat": "application/vnd.apache.avro+json;version=1.9.0", - "payload": { - "$ref": "path/to/user-create.avsc#/UserCreate" - } -} -``` - -```yaml -name: UserSignup -title: User signup -summary: Action to sign a user up. -description: A longer description -tags: - - name: user - - name: signup - - name: register -schemaFormat: 'application/vnd.apache.avro+yaml;version=1.9.0' -payload: - $ref: 'path/to/user-create.avsc/#UserCreate' -``` - - - - - - - -#### Message Trait Object - -Describes a trait that MAY be applied to a [Message Object](#messageObject). This object MAY contain any property from the [Message Object](#messageObject), except `payload` and `traits`. - -If you're looking to apply traits to an operation, see the [Operation Trait Object](#operationTraitObject). - -##### Fixed Fields - -Field Name | Type | Description ----|:---:|--- -headers | [Schema Object](#schemaObject) | [Reference Object](#referenceObject) | Schema definition of the application headers. Schema MUST be of type "object". It **MUST NOT** define the protocol headers. -correlationId | [Correlation ID Object](#correlationIdObject) | [Reference Object](#referenceObject) | Definition of the correlation ID used for message tracing or matching. -schemaFormat | `string` | A string containing the name of the schema format/language used to define the message payload. If omitted, implementations should parse the payload as a [Schema object](#schemaObject). -contentType | `string` | The content type to use when encoding/decoding a message's payload. The value MUST be a specific media type (e.g. `application/json`). When omitted, the value MUST be the one specified on the [defaultContentType](#defaultContentTypeString) field. -name | `string` | A machine-friendly name for the message. -title | `string` | A human-friendly title for the message. -summary | `string` | A short summary of what the message is about. -description | `string` | A verbose explanation of the message. [CommonMark syntax](https://spec.commonmark.org/) can be used for rich text representation. -tags | [Tags Object](#tagsObject) | A list of tags for API documentation control. Tags can be used for logical grouping of messages. -externalDocs | [External Documentation Object](#externalDocumentationObject) | Additional external documentation for this message. -bindings | [Message Bindings Object](#messageBindingsObject) \| [Reference Object](#referenceObject) | A map where the keys describe the name of the protocol and the values describe protocol-specific definitions for the message. -examples | [[Message Example Object](#messageExampleObject)] | List of examples. - -This object can be extended with [Specification Extensions](#specificationExtensions). - -##### Message Trait Object Example - -```json -{ - "schemaFormat": "application/vnd.apache.avro+json;version=1.9.0", - "contentType": "application/json" -} -``` - -```yaml -schemaFormat: 'application/vnd.apache.avro+yaml;version=1.9.0' -contentType: application/json -``` - -#### Message Example Object - -Message Example Object represents an example of a [Message Object](#messageObject) and MUST contain either **headers** and/or **payload** fields. - -##### Fixed Fields - -Field Name | Type | Description ----|:---:|--- -headers | `Map[string, any]` | The value of this field MUST validate against the [Message Object's headers](#messageObjectHeaders) field. -payload | `any` | The value of this field MUST validate against the [Message Object's payload](#messageObjectPayload) field. -name | `string` | A machine-friendly name. -summary | `string` | A short summary of what the example is about. - -This object can be extended with [Specification Extensions](#specificationExtensions). - -##### Message Example Object Example - -```json -{ - "name": "SimpleSignup", - "summary": "A simple UserSignup example message", - "headers": { - "correlationId": "my-correlation-id", - "applicationInstanceId": "myInstanceId" - }, - "payload": { - "user": { - "someUserKey": "someUserValue" - }, - "signup": { - "someSignupKey": "someSignupValue" - } - } -} -``` - -```yaml -name: SimpleSignup -summary: A simple UserSignup example message -headers: - correlationId: my-correlation-id - applicationInstanceId: myInstanceId -payload: - user: - someUserKey: someUserValue - signup: - someSignupKey: someSignupValue -``` - -#### Tags Object - -A Tags object is a list of Tag Objects. - -#### Tag Object - -Allows adding meta data to a single tag. - -##### Fixed Fields -Field Name | Type | Description ----|:---:|--- -name | `string` | **Required.** The name of the tag. -description | `string` | A short description for the tag. [CommonMark syntax](https://spec.commonmark.org/) can be used for rich text representation. -externalDocs | [External Documentation Object](#externalDocumentationObject) | Additional external documentation for this tag. - -This object can be extended with [Specification Extensions](#specificationExtensions). - -##### Tag Object Example - -```json -{ - "name": "user", - "description": "User-related messages" -} -``` - -```yaml -name: user -description: User-related messages -``` - - - - - - - -#### External Documentation Object - -Allows referencing an external resource for extended documentation. - -##### Fixed Fields - -Field Name | Type | Description ----|:---:|--- -description | `string` | A short description of the target documentation. [CommonMark syntax](https://spec.commonmark.org/) can be used for rich text representation. -url | `string` | **Required.** The URL for the target documentation. Value MUST be in the format of a URL. - -This object can be extended with [Specification Extensions](#specificationExtensions). - -##### External Documentation Object Example - -```json -{ - "description": "Find more info here", - "url": "https://example.com" -} -``` - -```yaml -description: Find more info here -url: https://example.com -``` - -#### Reference Object - -A simple object to allow referencing other components in the specification, internally and externally. - -The Reference Object is defined by [JSON Reference](https://tools.ietf.org/html/draft-pbryan-zyp-json-ref-03) and follows the same structure, behavior and rules. A JSON Reference SHALL only be used to refer to a schema that is formatted in either JSON or YAML. In the case of a YAML-formatted Schema, the JSON Reference SHALL be applied to the JSON representation of that schema. The JSON representation SHALL be made by applying the conversion described [here](#format). - -For this specification, reference resolution is done as defined by the JSON Reference specification and not by the JSON Schema specification. - -##### Fixed Fields -Field Name | Type | Description ----|:---:|--- -$ref | `string` | **Required.** The reference string. - -This object cannot be extended with additional properties and any properties added SHALL be ignored. - -##### Reference Object Example - -```json -{ - "$ref": "#/components/schemas/Pet" -} -``` - -```yaml - $ref: '#/components/schemas/Pet' -``` - -#### Components Object - -Holds a set of reusable objects for different aspects of the AsyncAPI specification. -All objects defined within the components object will have no effect on the API unless they are explicitly referenced from properties outside the components object. - -##### Fixed Fields - -Field Name | Type | Description ----|:---|--- - schemas | Map[`string`, [Schema Object](#schemaObject) \| [Reference Object](#referenceObject)] | An object to hold reusable [Schema Objects](#schemaObject). - messages | Map[`string`, [Message Object](#messageObject) \| [Reference Object](#referenceObject)] | An object to hold reusable [Message Objects](#messageObject). - securitySchemes| Map[`string`, [Security Scheme Object](#securitySchemeObject) \| [Reference Object](#referenceObject)] | An object to hold reusable [Security Scheme Objects](#securitySchemeObject). - parameters | Map[`string`, [Parameter Object](#parameterObject) \| [Reference Object](#referenceObject)] | An object to hold reusable [Parameter Objects](#parameterObject). - correlationIds | Map[`string`, [Correlation ID Object](#correlationIdObject) \| [Reference Object](#referenceObject)] | An object to hold reusable [Correlation ID Objects](#correlationIdObject). - operationTraits | Map[`string`, [Operation Trait Object](#operationTraitObject) \| [Reference Object](#referenceObject)] | An object to hold reusable [Operation Trait Objects](#operationTraitObject). - messageTraits | Map[`string`, [Message Trait Object](#messageTraitObject) \| [Reference Object](#referenceObject)] | An object to hold reusable [Message Trait Objects](#messageTraitObject). - serverBindings | Map[`string`, [Server Bindings Object](#serverBindingsObject) \| [Reference Object](#referenceObject)] | An object to hold reusable [Server Bindings Objects](#serverBindingsObject). - channelBindings | Map[`string`, [Channel Bindings Object](#channelBindingsObject) \| [Reference Object](#referenceObject)] | An object to hold reusable [Channel Bindings Objects](#channelBindingsObject). - operationBindings | Map[`string`, [Operation Bindings Object](#operationBindingsObject) \| [Reference Object](#referenceObject)] | An object to hold reusable [Operation Bindings Objects](#operationBindingsObject). - messageBindings | Map[`string`, [Message Bindings Object](#messageBindingsObject) \| [Reference Object](#referenceObject)] | An object to hold reusable [Message Bindings Objects](#messageBindingsObject). - -This object can be extended with [Specification Extensions](#specificationExtensions). - -All the fixed fields declared above are objects that MUST use keys that match the regular expression: `^[a-zA-Z0-9\.\-_]+$`. - -Field Name Examples: - -``` -User -User_1 -User_Name -user-name -my.org.User -``` - -##### Components Object Example - -```json -{ - "components": { - "schemas": { - "Category": { - "type": "object", - "properties": { - "id": { - "type": "integer", - "format": "int64" - }, - "name": { - "type": "string" - } - } - }, - "Tag": { - "type": "object", - "properties": { - "id": { - "type": "integer", - "format": "int64" - }, - "name": { - "type": "string" - } - } - } - }, - "messages": { - "userSignUp": { - "summary": "Action to sign a user up.", - "description": "Multiline description of what this action does.\nHere you have another line.\n", - "tags": [ - { - "name": "user" - }, - { - "name": "signup" - } - ], - "headers": { - "type": "object", - "properties": { - "applicationInstanceId": { - "description": "Unique identifier for a given instance of the publishing application", - "type": "string" - } - } - }, - "payload": { - "type": "object", - "properties": { - "user": { - "$ref": "#/components/schemas/userCreate" - }, - "signup": { - "$ref": "#/components/schemas/signup" - } - } - } - } - }, - "parameters": { - "userId": { - "description": "Id of the user.", - "schema": { - "type": "string" - } - } - }, - "correlationIds": { - "default": { - "description": "Default Correlation ID", - "location": "$message.header#/correlationId" - } - }, - "messageTraits": { - "commonHeaders": { - "headers": { - "type": "object", - "properties": { - "my-app-header": { - "type": "integer", - "minimum": 0, - "maximum": 100 - } - } - } - } - } - } -} -``` - -```yaml -components: - schemas: - Category: - type: object - properties: - id: - type: integer - format: int64 - name: - type: string - Tag: - type: object - properties: - id: - type: integer - format: int64 - name: - type: string - messages: - userSignUp: - summary: Action to sign a user up. - description: | - Multiline description of what this action does. - Here you have another line. - tags: - - name: user - - name: signup - headers: - type: object - properties: - applicationInstanceId: - description: Unique identifier for a given instance of the publishing application - type: string - payload: - type: object - properties: - user: - $ref: "#/components/schemas/userCreate" - signup: - $ref: "#/components/schemas/signup" - parameters: - userId: - description: Id of the user. - schema: - type: string - correlationIds: - default: - description: Default Correlation ID - location: $message.header#/correlationId - messageTraits: - commonHeaders: - headers: - type: object - properties: - my-app-header: - type: integer - minimum: 0 - maximum: 100 -``` - -#### Schema Object - -The Schema Object allows the definition of input and output data types. -These types can be objects, but also primitives and arrays. This object is a superset of the [JSON Schema Specification Draft 07](https://json-schema.org/). The empty schema (which allows any instance to validate) MAY be represented by the `boolean` value `true` and a schema which allows no instance to validate MAY be represented by the `boolean` value `false`. - -Further information about the properties can be found in [JSON Schema Core](https://tools.ietf.org/html/draft-handrews-json-schema-01) and [JSON Schema Validation](https://tools.ietf.org/html/draft-handrews-json-schema-validation-01). -Unless stated otherwise, the property definitions follow the JSON Schema specification as referenced here. - -##### Properties - -The AsyncAPI Schema Object is a JSON Schema vocabulary which extends JSON Schema Core and Validation vocabularies. As such, any keyword available for those vocabularies is by definition available in AsyncAPI, and will work the exact same way, including but not limited to: - -- title -- type -- required -- multipleOf -- maximum -- exclusiveMaximum -- minimum -- exclusiveMinimum -- maxLength -- minLength -- pattern (This string SHOULD be a valid regular expression, according to the [ECMA 262 regular expression](https://www.ecma-international.org/ecma-262/5.1/#sec-7.8.5) dialect) -- maxItems -- minItems -- uniqueItems -- maxProperties -- minProperties -- enum -- const -- examples -- if / then / else -- readOnly -- writeOnly -- properties -- patternProperties -- additionalProperties -- additionalItems -- items -- propertyNames -- contains -- allOf -- oneOf -- anyOf -- not - -The following properties are taken from the JSON Schema definition but their definitions were adjusted to the AsyncAPI Specification. - -- description - [CommonMark syntax](https://spec.commonmark.org/) can be used for rich text representation. -- format - See [Data Type Formats](#dataTypeFormat) for further details. While relying on JSON Schema's defined formats, the AsyncAPI Specification offers a few additional predefined formats. -- default - The default value represents what would be assumed by the consumer of the input as the value of the schema if one is not provided. Unlike JSON Schema, the value MUST conform to the defined type for the Schema Object defined at the same level. For example, of `type` is `string`, then `default` can be `"foo"` but cannot be `1`. - -Alternatively, any time a Schema Object can be used, a [Reference Object](#referenceObject) can be used in its place. This allows referencing definitions in place of defining them inline. It is appropriate to clarify that the `$ref` keyword MUST follow the behavior described by [Reference Object](#referenceObject) instead of the one in [JSON Schema definition](https://json-schema.org/understanding-json-schema/structuring.html#ref). - -In addition to the JSON Schema fields, the following AsyncAPI vocabulary fields MAY be used for further schema documentation: - -##### Fixed Fields -Field Name | Type | Description ----|:---:|--- -discriminator | `string` | Adds support for polymorphism. The discriminator is the schema property name that is used to differentiate between other schema that inherit this schema. The property name used MUST be defined at this schema and it MUST be in the `required` property list. When used, the value MUST be the name of this schema or any schema that inherits it. See [Composition and Inheritance](#schemaComposition) for more details. -externalDocs | [External Documentation Object](#externalDocumentationObject) | Additional external documentation for this schema. - deprecated | `boolean` | Specifies that a schema is deprecated and SHOULD be transitioned out of usage. Default value is `false`. - -This object can be extended with [Specification Extensions](#specificationExtensions). - -###### Composition and Inheritance (Polymorphism) - -The AsyncAPI Specification allows combining and extending model definitions using the `allOf` property of JSON Schema, in effect offering model composition. -`allOf` takes in an array of object definitions that are validated *independently* but together compose a single object. - -While composition offers model extensibility, it does not imply a hierarchy between the models. -To support polymorphism, AsyncAPI Specification adds the support of the `discriminator` field. -When used, the `discriminator` will be the name of the property used to decide which schema definition is used to validate the structure of the model. -As such, the `discriminator` field MUST be a required field. -There are are two ways to define the value of a discriminator for an inheriting instance. - -- Use the schema's name. -- Override the schema's name by overriding the property with a new value. If exists, this takes precedence over the schema's name. - -As such, inline schema definitions, which do not have a given id, *cannot* be used in polymorphism. - -##### Schema Object Examples - -###### Primitive Sample - -```json -{ - "type": "string", - "format": "email" -} -``` - -```yaml -type: string -format: email -``` - -###### Simple Model - -```json -{ - "type": "object", - "required": [ - "name" - ], - "properties": { - "name": { - "type": "string" - }, - "address": { - "$ref": "#/components/schemas/Address" - }, - "age": { - "type": "integer", - "format": "int32", - "minimum": 0 - } - } -} -``` - -```yaml -type: object -required: -- name -properties: - name: - type: string - address: - $ref: '#/components/schemas/Address' - age: - type: integer - format: int32 - minimum: 0 -``` - -###### Model with Map/Dictionary Properties - -For a simple string to string mapping: - -```json -{ - "type": "object", - "additionalProperties": { - "type": "string" - } -} -``` - -```yaml -type: object -additionalProperties: - type: string -``` - -For a string to model mapping: - -```json -{ - "type": "object", - "additionalProperties": { - "$ref": "#/components/schemas/ComplexModel" - } -} -``` - -```yaml -type: object -additionalProperties: - $ref: '#/components/schemas/ComplexModel' -``` - -###### Model with Example - -```json -{ - "type": "object", - "properties": { - "id": { - "type": "integer", - "format": "int64" - }, - "name": { - "type": "string" - } - }, - "required": [ - "name" - ], - "example": { - "name": "Puma", - "id": 1 - } -} -``` - -```yaml -type: object -properties: - id: - type: integer - format: int64 - name: - type: string -required: -- name -example: - name: Puma - id: 1 -``` - -###### Model with Boolean Schemas - -```json -{ - "type": "object", - "required": [ - "anySchema" - ], - "properties": { - "anySchema": true, - "cannotBeDefined": false - } -} -``` - -```yaml -type: object -required: -- anySchema -properties: - anySchema: true - cannotBeDefined: false -``` - -###### Models with Composition - -```json -{ - "schemas": { - "ErrorModel": { - "type": "object", - "required": [ - "message", - "code" - ], - "properties": { - "message": { - "type": "string" - }, - "code": { - "type": "integer", - "minimum": 100, - "maximum": 600 - } - } - }, - "ExtendedErrorModel": { - "allOf": [ - { - "$ref": "#/components/schemas/ErrorModel" - }, - { - "type": "object", - "required": [ - "rootCause" - ], - "properties": { - "rootCause": { - "type": "string" - } - } - } - ] - } - } -} -``` - -```yaml -schemas: - ErrorModel: - type: object - required: - - message - - code - properties: - message: - type: string - code: - type: integer - minimum: 100 - maximum: 600 - ExtendedErrorModel: - allOf: - - $ref: '#/components/schemas/ErrorModel' - - type: object - required: - - rootCause - properties: - rootCause: - type: string -``` - -###### Models with Polymorphism Support - -```json -{ - "schemas": { - "Pet": { - "type": "object", - "discriminator": "petType", - "properties": { - "name": { - "type": "string" - }, - "petType": { - "type": "string" - } - }, - "required": [ - "name", - "petType" - ] - }, - "Cat": { - "description": "A representation of a cat. Note that `Cat` will be used as the discriminator value.", - "allOf": [ - { - "$ref": "#/components/schemas/Pet" - }, - { - "type": "object", - "properties": { - "huntingSkill": { - "type": "string", - "description": "The measured skill for hunting", - "enum": [ - "clueless", - "lazy", - "adventurous", - "aggressive" - ] - } - }, - "required": [ - "huntingSkill" - ] - } - ] - }, - "Dog": { - "description": "A representation of a dog. Note that `Dog` will be used as the discriminator value.", - "allOf": [ - { - "$ref": "#/components/schemas/Pet" - }, - { - "type": "object", - "properties": { - "packSize": { - "type": "integer", - "format": "int32", - "description": "the size of the pack the dog is from", - "minimum": 0 - } - }, - "required": [ - "packSize" - ] - } - ] - }, - "StickInsect": { - "description": "A representation of an Australian walking stick. Note that `StickBug` will be used as the discriminator value.", - "allOf": [ - { - "$ref": "#/components/schemas/Pet" - }, - { - "type": "object", - "properties": { - "petType": { - "const": "StickBug" - }, - "color": { - "type": "string" - } - }, - "required": [ - "color" - ] - } - ] - } - } -} -``` - -```yaml -schemas: - Pet: - type: object - discriminator: petType - properties: - name: - type: string - petType: - type: string - required: - - name - - petType - ## applies to instances with `petType: "Cat"` - ## because that is the schema name - Cat: - description: A representation of a cat - allOf: - - $ref: '#/components/schemas/Pet' - - type: object - properties: - huntingSkill: - type: string - description: The measured skill for hunting - enum: - - clueless - - lazy - - adventurous - - aggressive - required: - - huntingSkill - ## applies to instances with `petType: "Dog"` - ## because that is the schema name - Dog: - description: A representation of a dog - allOf: - - $ref: '#/components/schemas/Pet' - - type: object - properties: - packSize: - type: integer - format: int32 - description: the size of the pack the dog is from - minimum: 0 - required: - - packSize - ## applies to instances with `petType: "StickBug"` - ## because that is the required value of the discriminator field, - ## overriding the schema name - StickInsect: - description: A representation of an Australian walking stick - allOf: - - $ref: '#/components/schemas/Pet' - - type: object - properties: - petType: - const: StickBug - color: - type: string - required: - - color -``` - - - - - -#### Security Scheme Object - -Defines a security scheme that can be used by the operations. Supported schemes are: - -* User/Password. -* API key (either as user or as password). -* X.509 certificate. -* End-to-end encryption (either symmetric or asymmetric). -* HTTP authentication. -* HTTP API key. -* OAuth2's common flows (Implicit, Resource Owner Protected Credentials, Client Credentials and Authorization Code) as defined in [RFC6749](https://tools.ietf.org/html/rfc6749). -* [OpenID Connect Discovery](https://tools.ietf.org/html/draft-ietf-oauth-discovery-06). -* SASL (Simple Authentication and Security Layer) as defined in [RFC4422](https://tools.ietf.org/html/rfc4422). - -##### Fixed Fields -Field Name | Type | Applies To | Description ----|:---:|---|--- -type | `string` | Any | **REQUIRED**. The type of the security scheme. Valid values are `"userPassword"`, `"apiKey"`, `"X509"`, `"symmetricEncryption"`, `"asymmetricEncryption"`, `"httpApiKey"`, `"http"`, `"oauth2"`, `"openIdConnect"`, `"plain"`, `"scramSha256"`, `"scramSha512"`, and `"gssapi"`. -description | `string` | Any | A short description for security scheme. [CommonMark syntax](https://spec.commonmark.org/) MAY be used for rich text representation. -name | `string` | `httpApiKey` | **REQUIRED**. The name of the header, query or cookie parameter to be used. -in | `string` | `apiKey` \| `httpApiKey` | **REQUIRED**. The location of the API key. Valid values are `"user"` and `"password"` for `apiKey` and `"query"`, `"header"` or `"cookie"` for `httpApiKey`. -scheme | `string` | `http` | **REQUIRED**. The name of the HTTP Authorization scheme to be used in the [Authorization header as defined in RFC7235](https://tools.ietf.org/html/rfc7235#section-5.1). -bearerFormat | `string` | `http` (`"bearer"`) | A hint to the client to identify how the bearer token is formatted. Bearer tokens are usually generated by an authorization server, so this information is primarily for documentation purposes. -flows | [OAuth Flows Object](#oauthFlowsObject) | `oauth2` | **REQUIRED**. An object containing configuration information for the flow types supported. -openIdConnectUrl | `string` | `openIdConnect` | **REQUIRED**. OpenId Connect URL to discover OAuth2 configuration values. This MUST be in the form of a URL. - -This object MAY be extended with [Specification Extensions](#specificationExtensions). - -##### Security Scheme Object Example - -###### User/Password Authentication Sample - -```json -{ - "type": "userPassword" -} -``` - -```yaml -type: userPassword -``` - -###### API Key Authentication Sample - -```json -{ - "type": "apiKey", - "in": "user" -} -``` - -```yaml -type: apiKey, -in: user -``` - -###### X.509 Authentication Sample - -```json -{ - "type": "X509" -} -``` - -```yaml -type: X509 -``` - -###### End-to-end Encryption Authentication Sample - -```json -{ - "type": "symmetricEncryption" -} -``` - -```yaml -type: symmetricEncryption -``` - -###### Basic Authentication Sample - -```json -{ - "type": "http", - "scheme": "basic" -} -``` - -```yaml -type: http -scheme: basic -``` - -###### API Key Sample - -```json -{ - "type": "httpApiKey", - "name": "api_key", - "in": "header" -} -``` - -```yaml -type: httpApiKey -name: api_key -in: header -``` - -###### JWT Bearer Sample - -```json -{ - "type": "http", - "scheme": "bearer", - "bearerFormat": "JWT" -} -``` - -```yaml -type: http -scheme: bearer -bearerFormat: JWT -``` - -###### Implicit OAuth2 Sample - -```json -{ - "type": "oauth2", - "flows": { - "implicit": { - "authorizationUrl": "https://example.com/api/oauth/dialog", - "scopes": { - "write:pets": "modify pets in your account", - "read:pets": "read your pets" - } - } - } -} -``` - -```yaml -type: oauth2 -flows: - implicit: - authorizationUrl: https://example.com/api/oauth/dialog - scopes: - write:pets: modify pets in your account - read:pets: read your pets -``` - -###### SASL Sample - -```json -{ - "type": "scramSha512" -} -``` - -```yaml -type: scramSha512 -``` - -#### OAuth Flows Object - -Allows configuration of the supported OAuth Flows. - -##### Fixed Fields -Field Name | Type | Description ----|:---:|--- -implicit| [OAuth Flow Object](#oauthFlowObject) | Configuration for the OAuth Implicit flow -password| [OAuth Flow Object](#oauthFlowObject) | Configuration for the OAuth Resource Owner Protected Credentials flow -clientCredentials| [OAuth Flow Object](#oauthFlowObject) | Configuration for the OAuth Client Credentials flow. -authorizationCode| [OAuth Flow Object](#oauthFlowObject) | Configuration for the OAuth Authorization Code flow. - -This object MAY be extended with [Specification Extensions](#specificationExtensions). - -#### OAuth Flow Object - -Configuration details for a supported OAuth Flow - -##### Fixed Fields -Field Name | Type | Applies To | Description ----|:---:|---|--- -authorizationUrl | `string` | `oauth2` (`"implicit"`, `"authorizationCode"`) | **REQUIRED**. The authorization URL to be used for this flow. This MUST be in the form of a URL. -tokenUrl | `string` | `oauth2` (`"password"`, `"clientCredentials"`, `"authorizationCode"`) | **REQUIRED**. The token URL to be used for this flow. This MUST be in the form of a URL. -refreshUrl | `string` | `oauth2` | The URL to be used for obtaining refresh tokens. This MUST be in the form of a URL. -scopes | Map[`string`, `string`] | `oauth2` | **REQUIRED**. The available scopes for the OAuth2 security scheme. A map between the scope name and a short description for it. - -This object MAY be extended with [Specification Extensions](#specificationExtensions). - -##### OAuth Flow Object Examples - -```JSON -{ - "type": "oauth2", - "flows": { - "implicit": { - "authorizationUrl": "https://example.com/api/oauth/dialog", - "scopes": { - "write:pets": "modify pets in your account", - "read:pets": "read your pets" - } - }, - "authorizationCode": { - "authorizationUrl": "https://example.com/api/oauth/dialog", - "tokenUrl": "https://example.com/api/oauth/token", - "scopes": { - "write:pets": "modify pets in your account", - "read:pets": "read your pets" - } - } - } -} -``` - -```YAML -type: oauth2 -flows: - implicit: - authorizationUrl: https://example.com/api/oauth/dialog - scopes: - write:pets: modify pets in your account - read:pets: read your pets - authorizationCode: - authorizationUrl: https://example.com/api/oauth/dialog - tokenUrl: https://example.com/api/oauth/token - scopes: - write:pets: modify pets in your account - read:pets: read your pets -``` - -#### Security Requirement Object - -Lists the required security schemes to execute this operation. -The name used for each property MUST correspond to a security scheme declared in the [Security Schemes](#componentsSecuritySchemes) under the [Components Object](#componentsObject). - -When a list of Security Requirement Objects is defined on a [Server object](#serverObject), only one of the Security Requirement Objects in the list needs to be satisfied to authorize the connection. - -##### Patterned Fields - -Field Pattern | Type | Description ----|:---:|--- -{name} | [`string`] | Each name MUST correspond to a security scheme which is declared in the [Security Schemes](#componentsSecuritySchemes) under the [Components Object](#componentsObject). If the security scheme is of type `"oauth2"` or `"openIdConnect"`, then the value is a list of scope names. Provide scopes that are required to establish successful connection with the server. If scopes are not needed, the list can be empty. For other security scheme types, the array MUST be empty. - -##### Security Requirement Object Examples - -###### User/Password Security Requirement - -```json -{ - "user_pass": [] -} -``` - -```yaml -user_pass: [] -``` - -###### API Key Security Requirement - -```json -{ - "api_key": [] -} -``` - -```yaml -api_key: [] -``` - -###### OAuth2 Security Requirement - -```json -{ - "petstore_auth": [ - "write:pets", - "read:pets" - ] -} -``` - -```yaml -petstore_auth: -- write:pets -- read:pets -``` - -### Correlation ID Object - -An object that specifies an identifier at design time that can used for message tracing and correlation. - -For specifying and computing the location of a Correlation ID, a [runtime expression](#runtimeExpression) is used. - -##### Fixed Fields - -Field Name | Type | Description ----|:---|--- -description | `string` | An optional description of the identifier. [CommonMark syntax](https://spec.commonmark.org/) can be used for rich text representation. -location | `string` | **REQUIRED.** A [runtime expression](#runtimeExpression) that specifies the location of the correlation ID. - -This object can be extended with [Specification Extensions](#specificationExtensions). - -##### Examples - -```json -{ - "description": "Default Correlation ID", - "location": "$message.header#/correlationId" -} -``` - -```yaml -description: Default Correlation ID -location: $message.header#/correlationId -``` - -### Runtime Expression - -A runtime expression allows values to be defined based on information that will be available within the message. -This mechanism is used by [Correlation ID Object](#correlationIdObject). - -The runtime expression is defined by the following [ABNF](https://tools.ietf.org/html/rfc5234) syntax: - -``` - expression = ( "$message" "." source ) - source = ( header-reference | payload-reference ) - header-reference = "header" ["#" fragment] - payload-reference = "payload" ["#" fragment] - fragment = a JSON Pointer [RFC 6901](https://tools.ietf.org/html/rfc6901) -``` - -The table below provides examples of runtime expressions and examples of their use in a value: - -##### Examples - -Source Location | Example expression | Notes ----|:---|:---| -Message Header Property | `$message.header#/MQMD/CorrelId` | Correlation ID is set using the `CorrelId` value from the `MQMD` header. -Message Payload Property | `$message.payload#/messageId` | Correlation ID is set using the `messageId` value from the message payload. - -Runtime expressions preserve the type of the referenced value. - -### Specification Extensions - -While the AsyncAPI Specification tries to accommodate most use cases, additional data can be added to extend the specification at certain points. - -The extensions properties are implemented as patterned fields that are always prefixed by `"x-"`. - -Field Pattern | Type | Description ----|:---:|--- -`^x-[\w\d\-\_]+$` | Any | Allows extensions to the AsyncAPI Schema. The field name MUST begin with `x-`, for example, `x-internal-id`. The value can be `null`, a primitive, an array or an object. Can have any valid JSON format value. - -The extensions may or may not be supported by the available tooling, but those may be extended as well to add requested support (if tools are internal or open-sourced). - -### Data Type Formats - -Primitives have an optional modifier property: `format`. -The AsyncAPI specification uses several known formats to more finely define the data type being used. -However, the `format` property is an open `string`-valued property, and can have any value to support documentation needs. -Formats such as `"email"`, `"uuid"`, etc., can be used even though they are not defined by this specification. -Types that are not accompanied by a `format` property follow their definition from the JSON Schema. -Tools that do not recognize a specific `format` MAY default back to the `type` alone, as if the `format` was not specified. - -The formats defined by the AsyncAPI Specification are: - - -Common Name | `type` | [`format`](#dataTypeFormat) | Comments ------------ | ------ | -------- | -------- -integer | `integer` | `int32` | signed 32 bits -long | `integer` | `int64` | signed 64 bits -float | `number` | `float` | | -double | `number` | `double` | | -string | `string` | | | -byte | `string` | `byte` | base64 encoded characters -binary | `string` | `binary` | any sequence of octets -boolean | `boolean` | | | -date | `string` | `date` | As defined by `full-date` - [RFC3339](https://www.rfc-editor.org/rfc/rfc3339#section-5) -dateTime | `string` | `date-time` | As defined by `date-time` - [RFC3339](https://www.rfc-editor.org/rfc/rfc3339#section-5) -password | `string` | `password` | Used to hint UIs the input needs to be obscured. - ---- - - \ No newline at end of file diff --git a/pages/docs/reference/specification/v2.3.0.md b/pages/docs/reference/specification/v2.3.0.md deleted file mode 100644 index ad5ee294b3e..00000000000 --- a/pages/docs/reference/specification/v2.3.0.md +++ /dev/null @@ -1,2453 +0,0 @@ -# AsyncAPI Specification - -#### Disclaimer - -Part of this content has been taken from the great work done by the folks at the [OpenAPI Initiative](https://openapis.org). Mainly because **it's a great work** and we want to keep as much compatibility as possible with the [OpenAPI Specification](https://github.com/OAI/OpenAPI-Specification). - -#### Version 2.3.0 - -The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this document are to be interpreted as described in [RFC 2119](https://www.ietf.org/rfc/rfc2119.txt). - -The AsyncAPI Specification is licensed under [The Apache License, Version 2.0](https://www.apache.org/licenses/LICENSE-2.0.html). - -## Introduction - -The AsyncAPI Specification is a project used to describe and document message-driven APIs in a machine-readable format. It’s protocol-agnostic, so you can use it for APIs that work over any protocol (e.g., AMQP, MQTT, WebSockets, Kafka, STOMP, HTTP, Mercure, etc). - -The AsyncAPI Specification defines a set of files required to describe such an API. -These files can then be used to create utilities, such as documentation, integration and/or testing tools. - -The file(s) MUST describe the operations an [application](#definitionsApplication) accepts. For instance, consider the following AsyncAPI definition snippet: - -```yaml -user/signedup: - subscribe: - message: - $ref: "#/components/messages/userSignUp" -``` - -It means that the [application](#definitionsApplication) allows [consumers](#definitionsConsumer) to subscribe to the `user/signedup` [channel](#definitionsChannel) to receive userSignUp [messages](#definitionsMessage) produced by the application. - -**The AsyncAPI specification does not assume any kind of software topology, architecture or pattern.** Therefore, a server MAY be a message broker, a web server or any other kind of computer program capable of sending and/or receiving data. However, AsyncAPI offers a mechanism called "bindings" that aims to help with more specific information about the protocol. - - -## Definitions - -#### Application -An application is any kind of computer program or a group of them. It MUST be a [producer](#definitionsProducer), a [consumer](#definitionsConsumer) or both. An application MAY be a microservice, IoT device (sensor), mainframe process, etc. An application MAY be written in any number of different programming languages as long as they support the selected [protocol](#definitionsProtocol). An application MUST also use a protocol supported by the server in order to connect and exchange [messages](#definitionsMessage). - -#### Producer -A producer is a type of application, connected to a server, that is creating [messages](#definitionsMessage) and addressing them to [channels](#definitionsChannel). A producer MAY be publishing to multiple channels depending on the server, protocol, and use-case pattern. - -#### Consumer -A consumer is a type of application, connected to a server via a supported [protocol](#definitionsProtocol), that is consuming [messages](#definitionsMessage) from [channels](#definitionsChannel). A consumer MAY be consuming from multiple channels depending on the server, protocol, and the use-case pattern. - -#### Message -A message is the mechanism by which information is exchanged via a channel between servers and applications. A message MUST contain a payload and MAY also contain headers. The headers MAY be subdivided into [protocol](#definitionsProtocol)-defined headers and header properties defined by the application which can act as supporting metadata. The payload contains the data, defined by the application, which MUST be serialized into a format (JSON, XML, Avro, binary, etc.). Since a message is a generic mechanism, it can support multiple interaction patterns such as event, command, request, or response. - -#### Channel -A channel is an addressable component, made available by the server, for the organization of [messages](#definitionsMessage). [Producer](#definitionsProducer) applications send messages to channels and [consumer](#definitionsConsumer) applications consume messages from channels. Servers MAY support many channel instances, allowing messages with different content to be addressed to different channels. Depending on the server implementation, the channel MAY be included in the message via protocol-defined headers. - -#### Protocol -A protocol is the mechanism (wireline protocol or API) by which [messages](#definitionsMessage) are exchanged between the application and the [channel](#definitionsChannel). Example protocols include, but are not limited to, AMQP, HTTP, JMS, Kafka, Anypoint MQ, MQTT, Solace, STOMP, Mercure, WebSocket. - -#### Bindings -A "binding" (or "protocol binding") is a mechanism to define protocol-specific information. Therefore, a protocol binding MUST define protocol-specific information only. - -## Specification - -### Format - -The files describing the message-driven API in accordance with the AsyncAPI Specification are represented as JSON objects and conform to the JSON standards. -YAML, being a superset of JSON, can be used as well to represent a A2S (AsyncAPI Specification) file. - -For example, if a field is said to have an array value, the JSON array representation will be used: - -```yaml -{ - "field" : [...] -} -``` - -While the API is described using JSON it does not impose a JSON input/output to the API itself. - -All field names in the specification are **case sensitive**. - -The schema exposes two types of fields. -Fixed fields, which have a declared name, and Patterned fields, which declare a regex pattern for the field name. -Patterned fields can have multiple occurrences as long as each has a unique name. - -In order to preserve the ability to round-trip between YAML and JSON formats, YAML version [1.2](https://www.yaml.org/spec/1.2/spec.html) is recommended along with some additional constraints: - -- Tags MUST be limited to those allowed by the [JSON Schema ruleset](https://www.yaml.org/spec/1.2/spec.html#id2803231) -- Keys used in YAML maps MUST be limited to a scalar string, as defined by the YAML Failsafe schema ruleset - -### File Structure - -An AsyncAPI document MAY be made up of a single document or be divided into multiple, -connected parts at the discretion of the author. In the latter case, [Reference Objects](#referenceObject) are used. - -By convention, the AsyncAPI Specification (A2S) file is named `asyncapi.json` or `asyncapi.yaml`. - -### Schema - -#### AsyncAPI Object - -This is the root document object for the API specification. -It combines resource listing and API declaration together into one document. - -##### Fixed Fields - -Field Name | Type | Description ----|:---:|--- -asyncapi | [AsyncAPI Version String](#A2SVersionString) | **Required.** Specifies the AsyncAPI Specification version being used. It can be used by tooling Specifications and clients to interpret the version. The structure shall be `major`.`minor`.`patch`, where `patch` versions _must_ be compatible with the existing `major`.`minor` tooling. Typically patch versions will be introduced to address errors in the documentation, and tooling should typically be compatible with the corresponding `major`.`minor` (1.0.*). Patch versions will correspond to patches of this document. -id | [Identifier](#A2SIdString) | Identifier of the [application](#definitionsApplication) the AsyncAPI document is defining. -info | [Info Object](#infoObject) | **Required.** Provides metadata about the API. The metadata can be used by the clients if needed. -servers | [Servers Object](#serversObject) | Provides connection details of servers. -defaultContentType | [Default Content Type](#defaultContentTypeString) | Default content type to use when encoding/decoding a message's payload. -channels | [Channels Object](#channelsObject) | **Required** The available channels and messages for the API. -components | [Components Object](#componentsObject) | An element to hold various schemas for the specification. -tags | [Tags Object](#tagsObject) | A list of tags used by the specification with additional metadata. Each tag name in the list MUST be unique. -externalDocs | [External Documentation Object](#externalDocumentationObject) | Additional external documentation. - - -This object can be extended with [Specification Extensions](#specificationExtensions). - -#### AsyncAPI Version String - -The version string signifies the version of the AsyncAPI Specification that the document complies to. -The format for this string _must_ be `major`.`minor`.`patch`. The `patch` _may_ be suffixed by a hyphen and extra alphanumeric characters. - -A `major`.`minor` shall be used to designate the AsyncAPI Specification version, and will be considered compatible with the AsyncAPI Specification specified by that `major`.`minor` version. -The patch version will not be considered by tooling, making no distinction between `1.0.0` and `1.0.1`. - -In subsequent versions of the AsyncAPI Specification, care will be given such that increments of the `minor` version should not interfere with operations of tooling developed to a lower minor version. Thus a hypothetical `1.1.0` specification should be usable with tooling designed for `1.0.0`. - -#### Identifier - -This field represents a unique universal identifier of the [application](#definitionsApplication) the AsyncAPI document is defining. It must conform to the URI format, according to [RFC3986](https://tools.ietf.org/html/rfc3986). - -It is RECOMMENDED to use a [URN](https://tools.ietf.org/html/rfc8141) to globally and uniquely identify the application during long periods of time, even after it becomes unavailable or ceases to exist. - -###### Examples - -```json -{ - "id": "urn:com:smartylighting:streetlights:server" -} -``` - -```yaml -id: 'urn:com:smartylighting:streetlights:server' -``` - -```json -{ - "id": "https://github.com/smartylighting/streetlights-server" -} -``` - -```yaml -id: 'https://github.com/smartylighting/streetlights-server' -``` - -#### Info Object - -The object provides metadata about the API. -The metadata can be used by the clients if needed. - -##### Fixed Fields - -Field Name | Type | Description ----|:---:|--- -title | `string` | **Required.** The title of the application. -version | `string` | **Required** Provides the version of the application API (not to be confused with the specification version). -description | `string` | A short description of the application. [CommonMark syntax](https://spec.commonmark.org/) can be used for rich text representation. -termsOfService | `string` | A URL to the Terms of Service for the API. MUST be in the format of a URL. -contact | [Contact Object](#contactObject) | The contact information for the exposed API. -license | [License Object](#licenseObject) | The license information for the exposed API. - -This object can be extended with [Specification Extensions](#specificationExtensions). - -##### Info Object Example: - -```json -{ - "title": "AsyncAPI Sample App", - "description": "This is a sample server.", - "termsOfService": "https://asyncapi.org/terms/", - "contact": { - "name": "API Support", - "url": "https://www.asyncapi.org/support", - "email": "support@asyncapi.org" - }, - "license": { - "name": "Apache 2.0", - "url": "https://www.apache.org/licenses/LICENSE-2.0.html" - }, - "version": "1.0.1" -} -``` - -```yaml -title: AsyncAPI Sample App -description: This is a sample server. -termsOfService: https://asyncapi.org/terms/ -contact: - name: API Support - url: https://www.asyncapi.org/support - email: support@asyncapi.org -license: - name: Apache 2.0 - url: https://www.apache.org/licenses/LICENSE-2.0.html -version: 1.0.1 -``` - -#### Contact Object - -Contact information for the exposed API. - -##### Fixed Fields - -Field Name | Type | Description ----|:---:|--- -name | `string` | The identifying name of the contact person/organization. -url | `string` | The URL pointing to the contact information. MUST be in the format of a URL. -email | `string` | The email address of the contact person/organization. MUST be in the format of an email address. - -This object can be extended with [Specification Extensions](#specificationExtensions). - -##### Contact Object Example: - -```json -{ - "name": "API Support", - "url": "https://www.example.com/support", - "email": "support@example.com" -} -``` - -```yaml -name: API Support -url: https://www.example.com/support -email: support@example.com -``` - -#### License Object - -License information for the exposed API. - -##### Fixed Fields - -Field Name | Type | Description ----|:---:|--- -name | `string` | **Required.** The license name used for the API. -url | `string` | A URL to the license used for the API. MUST be in the format of a URL. - -This object can be extended with [Specification Extensions](#specificationExtensions). - -##### License Object Example: - -```json -{ - "name": "Apache 2.0", - "url": "https://www.apache.org/licenses/LICENSE-2.0.html" -} -``` - -```yaml -name: Apache 2.0 -url: https://www.apache.org/licenses/LICENSE-2.0.html -``` - -#### Servers Object - -The Servers Object is a map of [Server Objects](#serverObject). - -##### Patterned Fields - -Field Pattern | Type | Description ----|:---:|--- -`^[A-Za-z0-9_\-]+$` | [Server Object](#serverObject) | The definition of a server this application MAY connect to. - -##### Servers Object Example - -```json -{ - "production": { - "url": "development.gigantic-server.com", - "description": "Development server", - "protocol": "kafka", - "protocolVersion": "1.0.0" - } -} -``` - -```yaml -production: - url: development.gigantic-server.com - description: Development server - protocol: kafka - protocolVersion: '1.0.0' -``` - - -#### Server Object - -An object representing a message broker, a server or any other kind of computer program capable of sending and/or receiving data. This object is used to capture details such as URIs, protocols and security configuration. Variable substitution can be used so that some details, for example usernames and passwords, can be injected by code generation tools. - -##### Fixed Fields - -Field Name | Type | Description ----|:---:|--- -url | `string` | **REQUIRED**. A URL to the target host. This URL supports Server Variables and MAY be relative, to indicate that the host location is relative to the location where the AsyncAPI document is being served. Variable substitutions will be made when a variable is named in `{`braces`}`. -protocol | `string` | **REQUIRED**. The protocol this URL supports for connection. Supported protocol include, but are not limited to: `amqp`, `amqps`, `http`, `https`, `ibmmq`, `jms`, `kafka`, `kafka-secure`, `anypointmq`, `mqtt`, `secure-mqtt`, `solace`, `stomp`, `stomps`, `ws`, `wss`, `mercure`. -protocolVersion | `string` | The version of the protocol used for connection. For instance: AMQP `0.9.1`, HTTP `2.0`, Kafka `1.0.0`, etc. -description | `string` | An optional string describing the host designated by the URL. [CommonMark syntax](https://spec.commonmark.org/) MAY be used for rich text representation. -variables | Map[`string`, [Server Variable Object](#serverVariableObject)] | A map between a variable name and its value. The value is used for substitution in the server's URL template. -security | [[Security Requirement Object](#securityRequirementObject)] | A declaration of which security mechanisms can be used with this server. The list of values includes alternative security requirement objects that can be used. Only one of the security requirement objects need to be satisfied to authorize a connection or operation. -bindings | [Server Bindings Object](#serverBindingsObject) \| [Reference Object](#referenceObject) | A map where the keys describe the name of the protocol and the values describe protocol-specific definitions for the server. - -This object MAY be extended with [Specification Extensions](#specificationExtensions). - -##### Server Object Example - -A single server would be described as: - -```json -{ - "url": "development.gigantic-server.com", - "description": "Development server", - "protocol": "kafka", - "protocolVersion": "1.0.0" -} -``` - -```yaml -url: development.gigantic-server.com -description: Development server -protocol: kafka -protocolVersion: '1.0.0' -``` - -The following shows how multiple servers can be described, for example, at the AsyncAPI Object's [`servers`](#A2SServers): - -```json -{ - "servers": { - "development": { - "url": "development.gigantic-server.com", - "description": "Development server", - "protocol": "amqp", - "protocolVersion": "0.9.1" - }, - "staging": { - "url": "staging.gigantic-server.com", - "description": "Staging server", - "protocol": "amqp", - "protocolVersion": "0.9.1" - }, - "production": { - "url": "api.gigantic-server.com", - "description": "Production server", - "protocol": "amqp", - "protocolVersion": "0.9.1" - } - } -} -``` - -```yaml -servers: - development: - url: development.gigantic-server.com - description: Development server - protocol: amqp - protocolVersion: 0.9.1 - staging: - url: staging.gigantic-server.com - description: Staging server - protocol: amqp - protocolVersion: 0.9.1 - production: - url: api.gigantic-server.com - description: Production server - protocol: amqp - protocolVersion: 0.9.1 -``` - -The following shows how variables can be used for a server configuration: - -```json -{ - "servers": { - "production": { - "url": "{username}.gigantic-server.com:{port}/{basePath}", - "description": "The production API server", - "protocol": "secure-mqtt", - "variables": { - "username": { - "default": "demo", - "description": "This value is assigned by the service provider, in this example `gigantic-server.com`" - }, - "port": { - "enum": [ - "8883", - "8884" - ], - "default": "8883" - }, - "basePath": { - "default": "v2" - } - } - } - } -} -``` - -```yaml -servers: - production: - url: '{username}.gigantic-server.com:{port}/{basePath}' - description: The production API server - protocol: secure-mqtt - variables: - username: - # note! no enum here means it is an open value - default: demo - description: This value is assigned by the service provider, in this example `gigantic-server.com` - port: - enum: - - '8883' - - '8884' - default: '8883' - basePath: - # open meaning there is the opportunity to use special base paths as assigned by the provider, default is `v2` - default: v2 -``` - - -#### Server Variable Object - -An object representing a Server Variable for server URL template substitution. - -##### Fixed Fields - -Field Name | Type | Description ----|:---:|--- -enum | [`string`] | An enumeration of string values to be used if the substitution options are from a limited set. -default | `string` | The default value to use for substitution, and to send, if an alternate value is _not_ supplied. -description | `string` | An optional description for the server variable. [CommonMark syntax](https://spec.commonmark.org/) MAY be used for rich text representation. -examples | [`string`] | An array of examples of the server variable. - -This object MAY be extended with [Specification Extensions](#specificationExtensions). - - - - - -#### Default Content Type - -A string representing the default content type to use when encoding/decoding a message's payload. The value MUST be a specific media type (e.g. `application/json`). This value MUST be used by schema parsers when the [contentType](#messageObjectContentType) property is omitted. - -In case a message can't be encoded/decoded using this value, schema parsers MUST use their default content type. - -##### Default Content Type Example - -```json -{ - "defaultContentType": "application/json" -} -``` - -```yaml -defaultContentType: application/json -``` - - - - - - -#### Channels Object - -Holds the relative paths to the individual channel and their operations. Channel paths are relative to servers. - -Channels are also known as "topics", "routing keys", "event types" or "paths". - -##### Patterned Fields - -Field Pattern | Type | Description ----|:---:|--- -{channel} | [Channel Item Object](#channelItemObject) | A relative path to an individual channel. The field name MUST be in the form of a [RFC 6570 URI template](https://tools.ietf.org/html/rfc6570). Query parameters and fragments SHALL NOT be used, instead use [bindings](#channelBindingsObject) to define them. - -##### Channels Object Example - -```json -{ - "user/signedup": { - "subscribe": { - "message": { - "$ref": "#/components/messages/userSignedUp" - } - } - } -} -``` - -```yaml -user/signedup: - subscribe: - message: - $ref: "#/components/messages/userSignedUp" -``` - - - - -#### Channel Item Object - -Describes the operations available on a single channel. - -##### Fixed Fields - -Field Name | Type | Description ----|:---:|--- -$ref | `string` | Allows for an external definition of this channel item. The referenced structure MUST be in the format of a [Channel Item Object](#channelItemObject). If there are conflicts between the referenced definition and this Channel Item's definition, the behavior is *undefined*.

**Deprecated:** Usage of the `$ref` property has been deprecated. -description | `string` | An optional description of this channel item. [CommonMark syntax](https://spec.commonmark.org/) can be used for rich text representation. -servers | [`string`] | The servers on which this channel is available, specified as an optional unordered list of names (string keys) of [Server Objects](#serverObject) defined in the [Servers Object](#serversObject) (a map). If `servers` is absent or empty then this channel must be available on all servers defined in the [Servers Object](#serversObject). -subscribe | [Operation Object](#operationObject) | A definition of the SUBSCRIBE operation, which defines the messages produced by the application and sent to the channel. -publish | [Operation Object](#operationObject) | A definition of the PUBLISH operation, which defines the messages consumed by the application from the channel. -parameters | [Parameters Object](#parametersObject) | A map of the parameters included in the channel name. It SHOULD be present only when using channels with expressions (as defined by [RFC 6570 section 2.2](https://tools.ietf.org/html/rfc6570#section-2.2)). -bindings | [Channel Bindings Object](#channelBindingsObject) \| [Reference Object](#referenceObject) | A map where the keys describe the name of the protocol and the values describe protocol-specific definitions for the channel. - -This object can be extended with [Specification Extensions](#specificationExtensions). - -##### Channel Item Object Example - -```json -{ - "description": "This channel is used to exchange messages about users signing up", - "subscribe": { - "summary": "A user signed up.", - "message": { - "description": "A longer description of the message", - "payload": { - "type": "object", - "properties": { - "user": { - "$ref": "#/components/schemas/user" - }, - "signup": { - "$ref": "#/components/schemas/signup" - } - } - } - } - }, - "bindings": { - "amqp": { - "is": "queue", - "queue": { - "exclusive": true - } - } - } -} -``` - -```yaml -description: This channel is used to exchange messages about users signing up -subscribe: - summary: A user signed up. - message: - description: A longer description of the message - payload: - type: object - properties: - user: - $ref: "#/components/schemas/user" - signup: - $ref: "#/components/schemas/signup" -bindings: - amqp: - is: queue - queue: - exclusive: true -``` - -Using `oneOf` to specify multiple messages per operation: - -```json -{ - "subscribe": { - "message": { - "oneOf": [ - { "$ref": "#/components/messages/signup" }, - { "$ref": "#/components/messages/login" } - ] - } - } -} -``` - -```yaml -subscribe: - message: - oneOf: - - $ref: '#/components/messages/signup' - - $ref: '#/components/messages/login' -``` - - -Using explicit by-name references to the servers on which the channel is available: - -```json -{ - "description": "This application publishes WebUICommand messages to an AMQP queue on RabbitMQ brokers in the Staging and Production environments.", - "servers": [ - "rabbitmqBrokerInProd", - "rabbitmqBrokerInStaging", - ], - "subscribe": { - "message": { - "$ref": "#/components/messages/WebUICommand" - } - }, - "bindings": { - "amqp": { - "is": "queue" - } - } -} -``` - -```yaml -description: This application publishes WebUICommand messages to an AMQP queue on RabbitMQ brokers in the Staging and Production environments. -servers: - - rabbitmqBrokerInProd - - rabbitmqBrokerInStaging -subscribe: - message: - $ref: "#/components/messages/WebUICommand" -bindings: - amqp: - is: queue -``` - - - - - -#### Operation Object - -Describes a publish or a subscribe operation. This provides a place to document how and why messages are sent and received. - -For example, an operation might describe a chat application use case where a user sends a text message to a group. A publish operation describes messages that are received by the chat application, whereas a subscribe operation describes messages that are sent by the chat application. - -##### Fixed Fields - -Field Name | Type | Description ----|:---:|--- -operationId | `string` | Unique string used to identify the operation. The id MUST be unique among all operations described in the API. The operationId value is **case-sensitive**. Tools and libraries MAY use the operationId to uniquely identify an operation, therefore, it is RECOMMENDED to follow common programming naming conventions. -summary | `string` | A short summary of what the operation is about. -description | `string` | A verbose explanation of the operation. [CommonMark syntax](https://spec.commonmark.org/) can be used for rich text representation. -tags | [Tags Object](#tagsObject) | A list of tags for API documentation control. Tags can be used for logical grouping of operations. -externalDocs | [External Documentation Object](#externalDocumentationObject) | Additional external documentation for this operation. -bindings | [Operation Bindings Object](#operationBindingsObject) \| [Reference Object](#referenceObject) | A map where the keys describe the name of the protocol and the values describe protocol-specific definitions for the operation. -traits | [[Operation Trait Object](#operationTraitObject) | [Reference Object](#referenceObject) ] | A list of traits to apply to the operation object. Traits MUST be merged into the operation object using the [JSON Merge Patch](https://tools.ietf.org/html/rfc7386) algorithm in the same order they are defined here. -message | [Message Object](#messageObject) | [Reference Object](#referenceObject) | Map["oneOf", [[Message Object](#messageObject) | [Reference Object](#referenceObject)]] | A definition of the message that will be published or received by this operation. Map containing a single `oneOf` key is allowed here to specify multiple messages. However, **a message MUST be valid only against one of the message objects.** - -This object can be extended with [Specification Extensions](#specificationExtensions). - -##### Operation Object Example - -```json -{ - "operationId": "registerUser", - "summary": "Action to sign a user up.", - "description": "A longer description", - "tags": [ - { "name": "user" }, - { "name": "signup" }, - { "name": "register" } - ], - "message": { - "headers": { - "type": "object", - "properties": { - "applicationInstanceId": { - "description": "Unique identifier for a given instance of the publishing application", - "type": "string" - } - } - }, - "payload": { - "type": "object", - "properties": { - "user": { - "$ref": "#/components/schemas/userCreate" - }, - "signup": { - "$ref": "#/components/schemas/signup" - } - } - } - }, - "bindings": { - "amqp": { - "ack": false - } - }, - "traits": [ - { "$ref": "#/components/operationTraits/kafka" } - ] -} -``` - -```yaml -operationId: registerUser -summary: Action to sign a user up. -description: A longer description -tags: - - name: user - - name: signup - - name: register -message: - headers: - type: object - properties: - applicationInstanceId: - description: Unique identifier for a given instance of the publishing application - type: string - payload: - type: object - properties: - user: - $ref: "#/components/schemas/userCreate" - signup: - $ref: "#/components/schemas/signup" -bindings: - amqp: - ack: false -traits: - - $ref: "#/components/operationTraits/kafka" -``` - - - - -#### Operation Trait Object - -Describes a trait that MAY be applied to an [Operation Object](#operationObject). This object MAY contain any property from the [Operation Object](#operationObject), except `message` and `traits`. - -If you're looking to apply traits to a message, see the [Message Trait Object](#messageTraitObject). - -##### Fixed Fields - -Field Name | Type | Description ----|:---:|--- -operationId | `string` | Unique string used to identify the operation. The id MUST be unique among all operations described in the API. The operationId value is **case-sensitive**. Tools and libraries MAY use the operationId to uniquely identify an operation, therefore, it is RECOMMENDED to follow common programming naming conventions. -summary | `string` | A short summary of what the operation is about. -description | `string` | A verbose explanation of the operation. [CommonMark syntax](https://spec.commonmark.org/) can be used for rich text representation. -tags | [Tags Object](#tagsObject) | A list of tags for API documentation control. Tags can be used for logical grouping of operations. -externalDocs | [External Documentation Object](#externalDocumentationObject) | Additional external documentation for this operation. -bindings | [Operation Bindings Object](#operationBindingsObject) \| [Reference Object](#referenceObject) | A map where the keys describe the name of the protocol and the values describe protocol-specific definitions for the operation. - -This object can be extended with [Specification Extensions](#specificationExtensions). - -##### Operation Trait Object Example - -```json -{ - "bindings": { - "amqp": { - "ack": false - } - } -} -``` - -```yaml -bindings: - amqp: - ack: false -``` - - - - -#### Parameters Object - -Describes a map of parameters included in a channel name. - -This map MUST contain all the parameters used in the parent channel name. - -##### Patterned Fields - -Field Pattern | Type | Description ----|:---:|--- -`^[A-Za-z0-9_\-]+$` | [Parameter Object](#parameterObject) | [Reference Object](#referenceObject) | The key represents the name of the parameter. It MUST match the parameter name used in the parent channel name. - -##### Parameters Object Example - -```json -{ - "user/{userId}/signup": { - "parameters": { - "userId": { - "description": "Id of the user.", - "schema": { - "type": "string" - } - } - }, - "subscribe": { - "message": { - "$ref": "#/components/messages/userSignedUp" - } - } - } -} -``` - -```yaml -user/{userId}/signup: - parameters: - userId: - description: Id of the user. - schema: - type: string - subscribe: - message: - $ref: "#/components/messages/userSignedUp" -``` - - - - - -#### Parameter Object - -Describes a parameter included in a channel name. - -##### Fixed Fields - -Field Name | Type | Description ----|:---:|--- -description | `string` | A verbose explanation of the parameter. [CommonMark syntax](https://spec.commonmark.org/) can be used for rich text representation. -schema | [Schema Object](#schemaObject) \| [Reference Object](#referenceObject) | Definition of the parameter. -location | `string` | A [runtime expression](#runtimeExpression) that specifies the location of the parameter value. Even when a definition for the target field exists, it MUST NOT be used to validate this parameter but, instead, the `schema` property MUST be used. - -This object can be extended with [Specification Extensions](#specificationExtensions). - -##### Parameter Object Example - -```json -{ - "user/{userId}/signup": { - "parameters": { - "userId": { - "description": "Id of the user.", - "schema": { - "type": "string" - }, - "location": "$message.payload#/user/id" - } - }, - "subscribe": { - "message": { - "$ref": "#/components/messages/userSignedUp" - } - } - } -} -``` - -```yaml -user/{userId}/signup: - parameters: - userId: - description: Id of the user. - schema: - type: string - location: $message.payload#/user/id - subscribe: - message: - $ref: "#/components/messages/userSignedUp" -``` - - - - -#### Server Bindings Object - -Map describing protocol-specific definitions for a server. - -##### Fixed Fields - -Field Name | Type | Description ----|:---:|--- -`http` | [HTTP Server Binding](https://github.com/asyncapi/bindings/blob/master/http#server) | Protocol-specific information for an HTTP server. -`ws` | [WebSockets Server Binding](https://github.com/asyncapi/bindings/blob/master/websockets#server) | Protocol-specific information for a WebSockets server. -`kafka` | [Kafka Server Binding](https://github.com/asyncapi/bindings/blob/master/kafka#server) | Protocol-specific information for a Kafka server. -`anypointmq` | [Anypoint MQ Server Binding](https://github.com/asyncapi/bindings/blob/master/anypointmq#server) | Protocol-specific information for an Anypoint MQ server. -`amqp` | [AMQP Server Binding](https://github.com/asyncapi/bindings/blob/master/amqp#server) | Protocol-specific information for an AMQP 0-9-1 server. -`amqp1` | [AMQP 1.0 Server Binding](https://github.com/asyncapi/bindings/blob/master/amqp1#server) | Protocol-specific information for an AMQP 1.0 server. -`mqtt` | [MQTT Server Binding](https://github.com/asyncapi/bindings/blob/master/mqtt#server) | Protocol-specific information for an MQTT server. -`mqtt5` | [MQTT 5 Server Binding](https://github.com/asyncapi/bindings/blob/master/mqtt5#server) | Protocol-specific information for an MQTT 5 server. -`nats` | [NATS Server Binding](https://github.com/asyncapi/bindings/blob/master/nats#server) | Protocol-specific information for a NATS server. -`jms` | [JMS Server Binding](https://github.com/asyncapi/bindings/blob/master/jms#server) | Protocol-specific information for a JMS server. -`sns` | [SNS Server Binding](https://github.com/asyncapi/bindings/blob/master/sns#server) | Protocol-specific information for an SNS server. -`solace` | [Solace Server Binding](https://github.com/asyncapi/bindings/blob/master/solace#server) | Protocol-specific information for a Solace server. -`sqs` | [SQS Server Binding](https://github.com/asyncapi/bindings/blob/master/sqs#server) | Protocol-specific information for an SQS server. -`stomp` | [STOMP Server Binding](https://github.com/asyncapi/bindings/blob/master/stomp#server) | Protocol-specific information for a STOMP server. -`redis` | [Redis Server Binding](https://github.com/asyncapi/bindings/blob/master/redis#server) | Protocol-specific information for a Redis server. -`mercure` | [Mercure Server Binding](https://github.com/asyncapi/bindings/blob/master/mercure#server) | Protocol-specific information for a Mercure server. -`ibmmq` | [IBM MQ Server Binding](https://github.com/asyncapi/bindings/blob/master/ibmmq#server-binding-object) | Protocol-specific information for an IBM MQ server. - -This object can be extended with [Specification Extensions](#specificationExtensions). - - - -#### Channel Bindings Object - -Map describing protocol-specific definitions for a channel. - -##### Fixed Fields - -Field Name | Type | Description ----|:---:|--- -`http` | [HTTP Channel Binding](https://github.com/asyncapi/bindings/blob/master/http/README.md#channel) | Protocol-specific information for an HTTP channel. -`ws` | [WebSockets Channel Binding](https://github.com/asyncapi/bindings/blob/master/websockets/README.md#channel) | Protocol-specific information for a WebSockets channel. -`kafka` | [Kafka Channel Binding](https://github.com/asyncapi/bindings/blob/master/kafka/README.md#channel) | Protocol-specific information for a Kafka channel. -`anypointmq` | [Anypoint MQ Channel Binding](https://github.com/asyncapi/bindings/blob/master/anypointmq/README.md#channel) | Protocol-specific information for an Anypoint MQ channel. -`amqp` | [AMQP Channel Binding](https://github.com/asyncapi/bindings/blob/master/amqp/README.md#channel) | Protocol-specific information for an AMQP 0-9-1 channel. -`amqp1` | [AMQP 1.0 Channel Binding](https://github.com/asyncapi/bindings/blob/master/amqp1/README.md#channel) | Protocol-specific information for an AMQP 1.0 channel. -`mqtt` | [MQTT Channel Binding](https://github.com/asyncapi/bindings/blob/master/mqtt/README.md#channel) | Protocol-specific information for an MQTT channel. -`mqtt5` | [MQTT 5 Channel Binding](https://github.com/asyncapi/bindings/blob/master/mqtt5#channel) | Protocol-specific information for an MQTT 5 channel. -`nats` | [NATS Channel Binding](https://github.com/asyncapi/bindings/blob/master/nats/README.md#channel) | Protocol-specific information for a NATS channel. -`jms` | [JMS Channel Binding](https://github.com/asyncapi/bindings/blob/master/jms/README.md#channel) | Protocol-specific information for a JMS channel. -`sns` | [SNS Channel Binding](https://github.com/asyncapi/bindings/blob/master/sns/README.md#channel) | Protocol-specific information for an SNS channel. -`solace` | [Solace Channel Binding](https://github.com/asyncapi/bindings/blob/master/solace#channel) | Protocol-specific information for a Solace channel. -`sqs` | [SQS Channel Binding](https://github.com/asyncapi/bindings/blob/master/sqs/README.md#channel) | Protocol-specific information for an SQS channel. -`stomp` | [STOMP Channel Binding](https://github.com/asyncapi/bindings/blob/master/stomp/README.md#channel) | Protocol-specific information for a STOMP channel. -`redis` | [Redis Channel Binding](https://github.com/asyncapi/bindings/blob/master/redis#channel) | Protocol-specific information for a Redis channel. -`mercure` | [Mercure Channel Binding](https://github.com/asyncapi/bindings/blob/master/mercure#channel) | Protocol-specific information for a Mercure channel. -`ibmmq` | [IBM MQ Channel Binding](https://github.com/asyncapi/bindings/tree/master/ibmmq#channel-binding-object) | Protocol-specific information for an IBM MQ channel. - -This object can be extended with [Specification Extensions](#specificationExtensions). - - - -#### Operation Bindings Object - -Map describing protocol-specific definitions for an operation. - -##### Fixed Fields - -Field Name | Type | Description ----|:---:|--- -`http` | [HTTP Operation Binding](https://github.com/asyncapi/bindings/blob/master/http/README.md#operation) | Protocol-specific information for an HTTP operation. -`ws` | [WebSockets Operation Binding](https://github.com/asyncapi/bindings/blob/master/websockets/README.md#operation) | Protocol-specific information for a WebSockets operation. -`kafka` | [Kafka Operation Binding](https://github.com/asyncapi/bindings/blob/master/kafka/README.md#operation) | Protocol-specific information for a Kafka operation. -`anypointmq` | [Anypoint MQ Operation Binding](https://github.com/asyncapi/bindings/blob/master/anypointmq/README.md#operation) | Protocol-specific information for an Anypoint MQ operation. -`amqp` | [AMQP Operation Binding](https://github.com/asyncapi/bindings/blob/master/amqp/README.md#operation) | Protocol-specific information for an AMQP 0-9-1 operation. -`amqp1` | [AMQP 1.0 Operation Binding](https://github.com/asyncapi/bindings/blob/master/amqp1/README.md#operation) | Protocol-specific information for an AMQP 1.0 operation. -`mqtt` | [MQTT Operation Binding](https://github.com/asyncapi/bindings/blob/master/mqtt/README.md#operation) | Protocol-specific information for an MQTT operation. -`mqtt5` | [MQTT 5 Operation Binding](https://github.com/asyncapi/bindings/blob/master/mqtt5/README.md#operation) | Protocol-specific information for an MQTT 5 operation. -`nats` | [NATS Operation Binding](https://github.com/asyncapi/bindings/blob/master/nats/README.md#operation) | Protocol-specific information for a NATS operation. -`jms` | [JMS Operation Binding](https://github.com/asyncapi/bindings/blob/master/jms/README.md#operation) | Protocol-specific information for a JMS operation. -`sns` | [SNS Operation Binding](https://github.com/asyncapi/bindings/blob/master/sns/README.md#operation) | Protocol-specific information for an SNS operation. -`solace` | [Solace Operation Binding](https://github.com/asyncapi/bindings/blob/master/solace#operation) | Protocol-specific information for a Solace operation. -`sqs` | [SQS Operation Binding](https://github.com/asyncapi/bindings/blob/master/sqs/README.md#operation) | Protocol-specific information for an SQS operation. -`stomp` | [STOMP Operation Binding](https://github.com/asyncapi/bindings/blob/master/stomp/README.md#operation) | Protocol-specific information for a STOMP operation. -`redis` | [Redis Operation Binding](https://github.com/asyncapi/bindings/blob/master/redis#operation) | Protocol-specific information for a Redis operation. -`mercure` | [Mercure Operation Binding](https://github.com/asyncapi/bindings/blob/master/mercure#operation) | Protocol-specific information for a Mercure operation. - -This object can be extended with [Specification Extensions](#specificationExtensions). - - - - -#### Message Bindings Object - -Map describing protocol-specific definitions for a message. - -##### Fixed Fields - -Field Name | Type | Description ----|:---:|--- -`http` | [HTTP Message Binding](https://github.com/asyncapi/bindings/blob/master/http/README.md#message) | Protocol-specific information for an HTTP message, i.e., a request or a response. -`ws` | [WebSockets Message Binding](https://github.com/asyncapi/bindings/blob/master/websockets/README.md#message) | Protocol-specific information for a WebSockets message. -`kafka` | [Kafka Message Binding](https://github.com/asyncapi/bindings/blob/master/kafka/README.md#message) | Protocol-specific information for a Kafka message. -`anypointmq` | [Anypoint MQ Message Binding](https://github.com/asyncapi/bindings/blob/master/anypointmq/README.md#message) | Protocol-specific information for an Anypoint MQ message. -`amqp` | [AMQP Message Binding](https://github.com/asyncapi/bindings/blob/master/amqp/README.md#message) | Protocol-specific information for an AMQP 0-9-1 message. -`amqp1` | [AMQP 1.0 Message Binding](https://github.com/asyncapi/bindings/blob/master/amqp1/README.md#message) | Protocol-specific information for an AMQP 1.0 message. -`mqtt` | [MQTT Message Binding](https://github.com/asyncapi/bindings/blob/master/mqtt/README.md#message) | Protocol-specific information for an MQTT message. -`mqtt5` | [MQTT 5 Message Binding](https://github.com/asyncapi/bindings/blob/master/mqtt5/README.md#message) | Protocol-specific information for an MQTT 5 message. -`nats` | [NATS Message Binding](https://github.com/asyncapi/bindings/blob/master/nats/README.md#message) | Protocol-specific information for a NATS message. -`jms` | [JMS Message Binding](https://github.com/asyncapi/bindings/blob/master/jms/README.md#message) | Protocol-specific information for a JMS message. -`sns` | [SNS Message Binding](https://github.com/asyncapi/bindings/blob/master/sns/README.md#message) | Protocol-specific information for an SNS message. -`solace` | [Solace Server Binding](https://github.com/asyncapi/bindings/blob/master/solace#message) | Protocol-specific information for a Solace message. -`sqs` | [SQS Message Binding](https://github.com/asyncapi/bindings/blob/master/sqs/README.md#message) | Protocol-specific information for an SQS message. -`stomp` | [STOMP Message Binding](https://github.com/asyncapi/bindings/blob/master/stomp/README.md#message) | Protocol-specific information for a STOMP message. -`redis` | [Redis Message Binding](https://github.com/asyncapi/bindings/blob/master/redis#message) | Protocol-specific information for a Redis message. -`mercure` | [Mercure Message Binding](https://github.com/asyncapi/bindings/blob/master/mercure#message) | Protocol-specific information for a Mercure message. -`ibmmq` | [IBM MQ Message Binding](https://github.com/asyncapi/bindings/tree/master/ibmmq#message-binding-object) | Protocol-specific information for an IBM MQ message. - -This object can be extended with [Specification Extensions](#specificationExtensions). - - - - - - - -#### Message Object - -Describes a message received on a given channel and operation. - -##### Fixed Fields - -Field Name | Type | Description ----|:---:|--- -headers | [Schema Object](#schemaObject) | [Reference Object](#referenceObject) | Schema definition of the application headers. Schema MUST be of type "object". It **MUST NOT** define the protocol headers. -payload | `any` | Definition of the message payload. It can be of any type but defaults to [Schema object](#schemaObject). It must match the schema format, including encoding type - e.g Avro should be inlined as either a YAML or JSON object NOT a string to be parsed as YAML or JSON. -correlationId | [Correlation ID Object](#correlationIdObject) | [Reference Object](#referenceObject) | Definition of the correlation ID used for message tracing or matching. -schemaFormat | `string` | A string containing the name of the schema format used to define the message payload. If omitted, implementations should parse the payload as a [Schema object](#schemaObject). When the payload is defined using a `$ref` to a remote file, it is RECOMMENDED the schema format includes the file encoding type to allow implementations to parse the file correctly. E.g., adding `+yaml` if content type is `application/vnd.apache.avro` results in `application/vnd.apache.avro+yaml`.

Check out the [supported schema formats table](#messageObjectSchemaFormatTable) for more information. Custom values are allowed but their implementation is OPTIONAL. A custom value MUST NOT refer to one of the schema formats listed in the [table](#messageObjectSchemaFormatTable). -contentType | `string` | The content type to use when encoding/decoding a message's payload. The value MUST be a specific media type (e.g. `application/json`). When omitted, the value MUST be the one specified on the [defaultContentType](#defaultContentTypeString) field. -name | `string` | A machine-friendly name for the message. -title | `string` | A human-friendly title for the message. -summary | `string` | A short summary of what the message is about. -description | `string` | A verbose explanation of the message. [CommonMark syntax](https://spec.commonmark.org/) can be used for rich text representation. -tags | [Tags Object](#tagsObject) | A list of tags for API documentation control. Tags can be used for logical grouping of messages. -externalDocs | [External Documentation Object](#externalDocumentationObject) | Additional external documentation for this message. -bindings | [Message Bindings Object](#messageBindingsObject) \| [Reference Object](#referenceObject) | A map where the keys describe the name of the protocol and the values describe protocol-specific definitions for the message. -examples | [[Message Example Object](#messageExampleObject)] | List of examples. -traits | [[Message Trait Object](#messageTraitObject) | [Reference Object](#referenceObject)] | A list of traits to apply to the message object. Traits MUST be merged into the message object using the [JSON Merge Patch](https://tools.ietf.org/html/rfc7386) algorithm in the same order they are defined here. The resulting object MUST be a valid [Message Object](#messageObject). - -This object can be extended with [Specification Extensions](#specificationExtensions). - -##### Schema formats table - -The following table contains a set of values that every implementation MUST support. - -Name | Allowed values | Notes ----|:---:|--- -[AsyncAPI 2.3.0 Schema Object](#schemaObject) | `application/vnd.aai.asyncapi;version=2.3.0`, `application/vnd.aai.asyncapi+json;version=2.3.0`, `application/vnd.aai.asyncapi+yaml;version=2.3.0` | This is the default when a `schemaFormat` is not provided. -[JSON Schema Draft 07](https://json-schema.org/specification-links.html#draft-7) | `application/schema+json;version=draft-07`, `application/schema+yaml;version=draft-07` | - -The following table contains a set of values that every implementation is RECOMMENDED to support. - -Name | Allowed values | Notes ----|:---:|--- -[Avro 1.9.0 schema](https://avro.apache.org/docs/1.9.0/spec.html#schemas) | `application/vnd.apache.avro;version=1.9.0`, `application/vnd.apache.avro+json;version=1.9.0`, `application/vnd.apache.avro+yaml;version=1.9.0` | -[OpenAPI 3.0.0 Schema Object](https://github.com/OAI/OpenAPI-Specification/blob/master/versions/3.0.0.md#schemaObject) | `application/vnd.oai.openapi;version=3.0.0`, `application/vnd.oai.openapi+json;version=3.0.0`, `application/vnd.oai.openapi+yaml;version=3.0.0` | -[RAML 1.0 data type](https://github.com/raml-org/raml-spec/blob/master/versions/raml-10/raml-10.md/) | `application/raml+yaml;version=1.0` | - - -##### Message Object Example - -```json -{ - "name": "UserSignup", - "title": "User signup", - "summary": "Action to sign a user up.", - "description": "A longer description", - "contentType": "application/json", - "tags": [ - { "name": "user" }, - { "name": "signup" }, - { "name": "register" } - ], - "headers": { - "type": "object", - "properties": { - "correlationId": { - "description": "Correlation ID set by application", - "type": "string" - }, - "applicationInstanceId": { - "description": "Unique identifier for a given instance of the publishing application", - "type": "string" - } - } - }, - "payload": { - "type": "object", - "properties": { - "user": { - "$ref": "#/components/schemas/userCreate" - }, - "signup": { - "$ref": "#/components/schemas/signup" - } - } - }, - "correlationId": { - "description": "Default Correlation ID", - "location": "$message.header#/correlationId" - }, - "traits": [ - { "$ref": "#/components/messageTraits/commonHeaders" } - ], - "examples": [ - { - "name": "SimpleSignup", - "summary": "A simple UserSignup example message", - "headers": { - "correlationId": "my-correlation-id", - "applicationInstanceId": "myInstanceId" - }, - "payload": { - "user": { - "someUserKey": "someUserValue" - }, - "signup": { - "someSignupKey": "someSignupValue" - } - } - } - ] -} -``` - -```yaml -name: UserSignup -title: User signup -summary: Action to sign a user up. -description: A longer description -contentType: application/json -tags: - - name: user - - name: signup - - name: register -headers: - type: object - properties: - correlationId: - description: Correlation ID set by application - type: string - applicationInstanceId: - description: Unique identifier for a given instance of the publishing application - type: string -payload: - type: object - properties: - user: - $ref: "#/components/schemas/userCreate" - signup: - $ref: "#/components/schemas/signup" -correlationId: - description: Default Correlation ID - location: $message.header#/correlationId -traits: - - $ref: "#/components/messageTraits/commonHeaders" -examples: - - name: SimpleSignup - summary: A simple UserSignup example message - headers: - correlationId: my-correlation-id - applicationInstanceId: myInstanceId - payload: - user: - someUserKey: someUserValue - signup: - someSignupKey: someSignupValue -``` - -Example using Avro to define the payload: - -```json -{ - "name": "UserSignup", - "title": "User signup", - "summary": "Action to sign a user up.", - "description": "A longer description", - "tags": [ - { "name": "user" }, - { "name": "signup" }, - { "name": "register" } - ], - "schemaFormat": "application/vnd.apache.avro+json;version=1.9.0", - "payload": { - "$ref": "path/to/user-create.avsc#/UserCreate" - } -} -``` - -```yaml -name: UserSignup -title: User signup -summary: Action to sign a user up. -description: A longer description -tags: - - name: user - - name: signup - - name: register -schemaFormat: 'application/vnd.apache.avro+yaml;version=1.9.0' -payload: - $ref: 'path/to/user-create.avsc/#UserCreate' -``` - - - - - - - -#### Message Trait Object - -Describes a trait that MAY be applied to a [Message Object](#messageObject). This object MAY contain any property from the [Message Object](#messageObject), except `payload` and `traits`. - -If you're looking to apply traits to an operation, see the [Operation Trait Object](#operationTraitObject). - -##### Fixed Fields - -Field Name | Type | Description ----|:---:|--- -headers | [Schema Object](#schemaObject) | [Reference Object](#referenceObject) | Schema definition of the application headers. Schema MUST be of type "object". It **MUST NOT** define the protocol headers. -correlationId | [Correlation ID Object](#correlationIdObject) | [Reference Object](#referenceObject) | Definition of the correlation ID used for message tracing or matching. -schemaFormat | `string` | A string containing the name of the schema format/language used to define the message payload. If omitted, implementations should parse the payload as a [Schema object](#schemaObject). -contentType | `string` | The content type to use when encoding/decoding a message's payload. The value MUST be a specific media type (e.g. `application/json`). When omitted, the value MUST be the one specified on the [defaultContentType](#defaultContentTypeString) field. -name | `string` | A machine-friendly name for the message. -title | `string` | A human-friendly title for the message. -summary | `string` | A short summary of what the message is about. -description | `string` | A verbose explanation of the message. [CommonMark syntax](https://spec.commonmark.org/) can be used for rich text representation. -tags | [Tags Object](#tagsObject) | A list of tags for API documentation control. Tags can be used for logical grouping of messages. -externalDocs | [External Documentation Object](#externalDocumentationObject) | Additional external documentation for this message. -bindings | [Message Bindings Object](#messageBindingsObject) \| [Reference Object](#referenceObject) | A map where the keys describe the name of the protocol and the values describe protocol-specific definitions for the message. -examples | [[Message Example Object](#messageExampleObject)] | List of examples. - -This object can be extended with [Specification Extensions](#specificationExtensions). - -##### Message Trait Object Example - -```json -{ - "schemaFormat": "application/vnd.apache.avro+json;version=1.9.0", - "contentType": "application/json" -} -``` - -```yaml -schemaFormat: 'application/vnd.apache.avro+yaml;version=1.9.0' -contentType: application/json -``` - -#### Message Example Object - -Message Example Object represents an example of a [Message Object](#messageObject) and MUST contain either **headers** and/or **payload** fields. - -##### Fixed Fields - -Field Name | Type | Description ----|:---:|--- -headers | `Map[string, any]` | The value of this field MUST validate against the [Message Object's headers](#messageObjectHeaders) field. -payload | `any` | The value of this field MUST validate against the [Message Object's payload](#messageObjectPayload) field. -name | `string` | A machine-friendly name. -summary | `string` | A short summary of what the example is about. - -This object can be extended with [Specification Extensions](#specificationExtensions). - -##### Message Example Object Example - -```json -{ - "name": "SimpleSignup", - "summary": "A simple UserSignup example message", - "headers": { - "correlationId": "my-correlation-id", - "applicationInstanceId": "myInstanceId" - }, - "payload": { - "user": { - "someUserKey": "someUserValue" - }, - "signup": { - "someSignupKey": "someSignupValue" - } - } -} -``` - -```yaml -name: SimpleSignup -summary: A simple UserSignup example message -headers: - correlationId: my-correlation-id - applicationInstanceId: myInstanceId -payload: - user: - someUserKey: someUserValue - signup: - someSignupKey: someSignupValue -``` - -#### Tags Object - -A Tags object is a list of Tag Objects. - -#### Tag Object - -Allows adding meta data to a single tag. - -##### Fixed Fields -Field Name | Type | Description ----|:---:|--- -name | `string` | **Required.** The name of the tag. -description | `string` | A short description for the tag. [CommonMark syntax](https://spec.commonmark.org/) can be used for rich text representation. -externalDocs | [External Documentation Object](#externalDocumentationObject) | Additional external documentation for this tag. - -This object can be extended with [Specification Extensions](#specificationExtensions). - -##### Tag Object Example - -```json -{ - "name": "user", - "description": "User-related messages" -} -``` - -```yaml -name: user -description: User-related messages -``` - - - - - - - -#### External Documentation Object - -Allows referencing an external resource for extended documentation. - -##### Fixed Fields - -Field Name | Type | Description ----|:---:|--- -description | `string` | A short description of the target documentation. [CommonMark syntax](https://spec.commonmark.org/) can be used for rich text representation. -url | `string` | **Required.** The URL for the target documentation. Value MUST be in the format of a URL. - -This object can be extended with [Specification Extensions](#specificationExtensions). - -##### External Documentation Object Example - -```json -{ - "description": "Find more info here", - "url": "https://example.com" -} -``` - -```yaml -description: Find more info here -url: https://example.com -``` - -#### Reference Object - -A simple object to allow referencing other components in the specification, internally and externally. - -The Reference Object is defined by [JSON Reference](https://tools.ietf.org/html/draft-pbryan-zyp-json-ref-03) and follows the same structure, behavior and rules. A JSON Reference SHALL only be used to refer to a schema that is formatted in either JSON or YAML. In the case of a YAML-formatted Schema, the JSON Reference SHALL be applied to the JSON representation of that schema. The JSON representation SHALL be made by applying the conversion described [here](#format). - -For this specification, reference resolution is done as defined by the JSON Reference specification and not by the JSON Schema specification. - -##### Fixed Fields -Field Name | Type | Description ----|:---:|--- -$ref | `string` | **Required.** The reference string. - -This object cannot be extended with additional properties and any properties added SHALL be ignored. - -##### Reference Object Example - -```json -{ - "$ref": "#/components/schemas/Pet" -} -``` - -```yaml - $ref: '#/components/schemas/Pet' -``` - -#### Components Object - -Holds a set of reusable objects for different aspects of the AsyncAPI specification. -All objects defined within the components object will have no effect on the API unless they are explicitly referenced from properties outside the components object. - -##### Fixed Fields - -Field Name | Type | Description ----|:---|--- - schemas | Map[`string`, [Schema Object](#schemaObject) \| [Reference Object](#referenceObject)] | An object to hold reusable [Schema Objects](#schemaObject). - servers | Map[`string`, [Server Object](#serverObject) \| [Reference Object](#referenceObject)] | An object to hold reusable [Server Objects](#serverObject). - channels | Map[`string`, [Channel Item Object](#channelItemObject)] | An object to hold reusable [Channel Item Objects](#channelItemObject). - messages | Map[`string`, [Message Object](#messageObject) \| [Reference Object](#referenceObject)] | An object to hold reusable [Message Objects](#messageObject). - securitySchemes| Map[`string`, [Security Scheme Object](#securitySchemeObject) \| [Reference Object](#referenceObject)] | An object to hold reusable [Security Scheme Objects](#securitySchemeObject). - parameters | Map[`string`, [Parameter Object](#parameterObject) \| [Reference Object](#referenceObject)] | An object to hold reusable [Parameter Objects](#parameterObject). - correlationIds | Map[`string`, [Correlation ID Object](#correlationIdObject) \| [Reference Object](#referenceObject)] | An object to hold reusable [Correlation ID Objects](#correlationIdObject). - operationTraits | Map[`string`, [Operation Trait Object](#operationTraitObject) \| [Reference Object](#referenceObject)] | An object to hold reusable [Operation Trait Objects](#operationTraitObject). - messageTraits | Map[`string`, [Message Trait Object](#messageTraitObject) \| [Reference Object](#referenceObject)] | An object to hold reusable [Message Trait Objects](#messageTraitObject). - serverBindings | Map[`string`, [Server Bindings Object](#serverBindingsObject) \| [Reference Object](#referenceObject)] | An object to hold reusable [Server Bindings Objects](#serverBindingsObject). - channelBindings | Map[`string`, [Channel Bindings Object](#channelBindingsObject) \| [Reference Object](#referenceObject)] | An object to hold reusable [Channel Bindings Objects](#channelBindingsObject). - operationBindings | Map[`string`, [Operation Bindings Object](#operationBindingsObject) \| [Reference Object](#referenceObject)] | An object to hold reusable [Operation Bindings Objects](#operationBindingsObject). - messageBindings | Map[`string`, [Message Bindings Object](#messageBindingsObject) \| [Reference Object](#referenceObject)] | An object to hold reusable [Message Bindings Objects](#messageBindingsObject). - -This object can be extended with [Specification Extensions](#specificationExtensions). - -All the fixed fields declared above are objects that MUST use keys that match the regular expression: `^[a-zA-Z0-9\.\-_]+$`. - -Field Name Examples: - -``` -User -User_1 -User_Name -user-name -my.org.User -``` - -##### Components Object Example - -```json -{ - "components": { - "schemas": { - "Category": { - "type": "object", - "properties": { - "id": { - "type": "integer", - "format": "int64" - }, - "name": { - "type": "string" - } - } - }, - "Tag": { - "type": "object", - "properties": { - "id": { - "type": "integer", - "format": "int64" - }, - "name": { - "type": "string" - } - } - } - }, - "servers": { - "development": { - "url": "development.gigantic-server.com", - "description": "Development server", - "protocol": "amqp", - "protocolVersion": "0.9.1" - } - }, - "channels": { - "user/signedup": { - "subscribe": { - "message": { - "$ref": "#/components/messages/userSignUp" - } - } - } - }, - "messages": { - "userSignUp": { - "summary": "Action to sign a user up.", - "description": "Multiline description of what this action does.\nHere you have another line.\n", - "tags": [ - { - "name": "user" - }, - { - "name": "signup" - } - ], - "headers": { - "type": "object", - "properties": { - "applicationInstanceId": { - "description": "Unique identifier for a given instance of the publishing application", - "type": "string" - } - } - }, - "payload": { - "type": "object", - "properties": { - "user": { - "$ref": "#/components/schemas/userCreate" - }, - "signup": { - "$ref": "#/components/schemas/signup" - } - } - } - } - }, - "parameters": { - "userId": { - "description": "Id of the user.", - "schema": { - "type": "string" - } - } - }, - "correlationIds": { - "default": { - "description": "Default Correlation ID", - "location": "$message.header#/correlationId" - } - }, - "messageTraits": { - "commonHeaders": { - "headers": { - "type": "object", - "properties": { - "my-app-header": { - "type": "integer", - "minimum": 0, - "maximum": 100 - } - } - } - } - } - } -} -``` - -```yaml -components: - schemas: - Category: - type: object - properties: - id: - type: integer - format: int64 - name: - type: string - Tag: - type: object - properties: - id: - type: integer - format: int64 - name: - type: string - servers: - development: - url: development.gigantic-server.com - description: Development server - protocol: amqp - protocolVersion: 0.9.1 - channels: - user/signedup: - subscribe: - message: - $ref: "#/components/messages/userSignUp" - messages: - userSignUp: - summary: Action to sign a user up. - description: | - Multiline description of what this action does. - Here you have another line. - tags: - - name: user - - name: signup - headers: - type: object - properties: - applicationInstanceId: - description: Unique identifier for a given instance of the publishing application - type: string - payload: - type: object - properties: - user: - $ref: "#/components/schemas/userCreate" - signup: - $ref: "#/components/schemas/signup" - parameters: - userId: - description: Id of the user. - schema: - type: string - correlationIds: - default: - description: Default Correlation ID - location: $message.header#/correlationId - messageTraits: - commonHeaders: - headers: - type: object - properties: - my-app-header: - type: integer - minimum: 0 - maximum: 100 -``` - -#### Schema Object - -The Schema Object allows the definition of input and output data types. -These types can be objects, but also primitives and arrays. This object is a superset of the [JSON Schema Specification Draft 07](https://json-schema.org/). The empty schema (which allows any instance to validate) MAY be represented by the `boolean` value `true` and a schema which allows no instance to validate MAY be represented by the `boolean` value `false`. - -Further information about the properties can be found in [JSON Schema Core](https://tools.ietf.org/html/draft-handrews-json-schema-01) and [JSON Schema Validation](https://tools.ietf.org/html/draft-handrews-json-schema-validation-01). -Unless stated otherwise, the property definitions follow the JSON Schema specification as referenced here. - -##### Properties - -The AsyncAPI Schema Object is a JSON Schema vocabulary which extends JSON Schema Core and Validation vocabularies. As such, any keyword available for those vocabularies is by definition available in AsyncAPI, and will work the exact same way, including but not limited to: - -- title -- type -- required -- multipleOf -- maximum -- exclusiveMaximum -- minimum -- exclusiveMinimum -- maxLength -- minLength -- pattern (This string SHOULD be a valid regular expression, according to the [ECMA 262 regular expression](https://www.ecma-international.org/ecma-262/5.1/#sec-7.8.5) dialect) -- maxItems -- minItems -- uniqueItems -- maxProperties -- minProperties -- enum -- const -- examples -- if / then / else -- readOnly -- writeOnly -- properties -- patternProperties -- additionalProperties -- additionalItems -- items -- propertyNames -- contains -- allOf -- oneOf -- anyOf -- not - -The following properties are taken from the JSON Schema definition but their definitions were adjusted to the AsyncAPI Specification. - -- description - [CommonMark syntax](https://spec.commonmark.org/) can be used for rich text representation. -- format - See [Data Type Formats](#dataTypeFormat) for further details. While relying on JSON Schema's defined formats, the AsyncAPI Specification offers a few additional predefined formats. -- default - The default value represents what would be assumed by the consumer of the input as the value of the schema if one is not provided. Unlike JSON Schema, the value MUST conform to the defined type for the Schema Object defined at the same level. For example, of `type` is `string`, then `default` can be `"foo"` but cannot be `1`. - -Alternatively, any time a Schema Object can be used, a [Reference Object](#referenceObject) can be used in its place. This allows referencing definitions in place of defining them inline. It is appropriate to clarify that the `$ref` keyword MUST follow the behavior described by [Reference Object](#referenceObject) instead of the one in [JSON Schema definition](https://json-schema.org/understanding-json-schema/structuring.html#ref). - -In addition to the JSON Schema fields, the following AsyncAPI vocabulary fields MAY be used for further schema documentation: - -##### Fixed Fields -Field Name | Type | Description ----|:---:|--- -discriminator | `string` | Adds support for polymorphism. The discriminator is the schema property name that is used to differentiate between other schema that inherit this schema. The property name used MUST be defined at this schema and it MUST be in the `required` property list. When used, the value MUST be the name of this schema or any schema that inherits it. See [Composition and Inheritance](#schemaComposition) for more details. -externalDocs | [External Documentation Object](#externalDocumentationObject) | Additional external documentation for this schema. - deprecated | `boolean` | Specifies that a schema is deprecated and SHOULD be transitioned out of usage. Default value is `false`. - -This object can be extended with [Specification Extensions](#specificationExtensions). - -###### Composition and Inheritance (Polymorphism) - -The AsyncAPI Specification allows combining and extending model definitions using the `allOf` property of JSON Schema, in effect offering model composition. -`allOf` takes in an array of object definitions that are validated *independently* but together compose a single object. - -While composition offers model extensibility, it does not imply a hierarchy between the models. -To support polymorphism, AsyncAPI Specification adds the support of the `discriminator` field. -When used, the `discriminator` will be the name of the property used to decide which schema definition is used to validate the structure of the model. -As such, the `discriminator` field MUST be a required field. -There are are two ways to define the value of a discriminator for an inheriting instance. - -- Use the schema's name. -- Override the schema's name by overriding the property with a new value. If exists, this takes precedence over the schema's name. - -As such, inline schema definitions, which do not have a given id, *cannot* be used in polymorphism. - -##### Schema Object Examples - -###### Primitive Sample - -```json -{ - "type": "string", - "format": "email" -} -``` - -```yaml -type: string -format: email -``` - -###### Simple Model - -```json -{ - "type": "object", - "required": [ - "name" - ], - "properties": { - "name": { - "type": "string" - }, - "address": { - "$ref": "#/components/schemas/Address" - }, - "age": { - "type": "integer", - "format": "int32", - "minimum": 0 - } - } -} -``` - -```yaml -type: object -required: -- name -properties: - name: - type: string - address: - $ref: '#/components/schemas/Address' - age: - type: integer - format: int32 - minimum: 0 -``` - -###### Model with Map/Dictionary Properties - -For a simple string to string mapping: - -```json -{ - "type": "object", - "additionalProperties": { - "type": "string" - } -} -``` - -```yaml -type: object -additionalProperties: - type: string -``` - -For a string to model mapping: - -```json -{ - "type": "object", - "additionalProperties": { - "$ref": "#/components/schemas/ComplexModel" - } -} -``` - -```yaml -type: object -additionalProperties: - $ref: '#/components/schemas/ComplexModel' -``` - -###### Model with Example - -```json -{ - "type": "object", - "properties": { - "id": { - "type": "integer", - "format": "int64" - }, - "name": { - "type": "string" - } - }, - "required": [ - "name" - ], - "example": { - "name": "Puma", - "id": 1 - } -} -``` - -```yaml -type: object -properties: - id: - type: integer - format: int64 - name: - type: string -required: -- name -example: - name: Puma - id: 1 -``` - -###### Model with Boolean Schemas - -```json -{ - "type": "object", - "required": [ - "anySchema" - ], - "properties": { - "anySchema": true, - "cannotBeDefined": false - } -} -``` - -```yaml -type: object -required: -- anySchema -properties: - anySchema: true - cannotBeDefined: false -``` - -###### Models with Composition - -```json -{ - "schemas": { - "ErrorModel": { - "type": "object", - "required": [ - "message", - "code" - ], - "properties": { - "message": { - "type": "string" - }, - "code": { - "type": "integer", - "minimum": 100, - "maximum": 600 - } - } - }, - "ExtendedErrorModel": { - "allOf": [ - { - "$ref": "#/components/schemas/ErrorModel" - }, - { - "type": "object", - "required": [ - "rootCause" - ], - "properties": { - "rootCause": { - "type": "string" - } - } - } - ] - } - } -} -``` - -```yaml -schemas: - ErrorModel: - type: object - required: - - message - - code - properties: - message: - type: string - code: - type: integer - minimum: 100 - maximum: 600 - ExtendedErrorModel: - allOf: - - $ref: '#/components/schemas/ErrorModel' - - type: object - required: - - rootCause - properties: - rootCause: - type: string -``` - -###### Models with Polymorphism Support - -```json -{ - "schemas": { - "Pet": { - "type": "object", - "discriminator": "petType", - "properties": { - "name": { - "type": "string" - }, - "petType": { - "type": "string" - } - }, - "required": [ - "name", - "petType" - ] - }, - "Cat": { - "description": "A representation of a cat. Note that `Cat` will be used as the discriminator value.", - "allOf": [ - { - "$ref": "#/components/schemas/Pet" - }, - { - "type": "object", - "properties": { - "huntingSkill": { - "type": "string", - "description": "The measured skill for hunting", - "enum": [ - "clueless", - "lazy", - "adventurous", - "aggressive" - ] - } - }, - "required": [ - "huntingSkill" - ] - } - ] - }, - "Dog": { - "description": "A representation of a dog. Note that `Dog` will be used as the discriminator value.", - "allOf": [ - { - "$ref": "#/components/schemas/Pet" - }, - { - "type": "object", - "properties": { - "packSize": { - "type": "integer", - "format": "int32", - "description": "the size of the pack the dog is from", - "minimum": 0 - } - }, - "required": [ - "packSize" - ] - } - ] - }, - "StickInsect": { - "description": "A representation of an Australian walking stick. Note that `StickBug` will be used as the discriminator value.", - "allOf": [ - { - "$ref": "#/components/schemas/Pet" - }, - { - "type": "object", - "properties": { - "petType": { - "const": "StickBug" - }, - "color": { - "type": "string" - } - }, - "required": [ - "color" - ] - } - ] - } - } -} -``` - -```yaml -schemas: - Pet: - type: object - discriminator: petType - properties: - name: - type: string - petType: - type: string - required: - - name - - petType - ## applies to instances with `petType: "Cat"` - ## because that is the schema name - Cat: - description: A representation of a cat - allOf: - - $ref: '#/components/schemas/Pet' - - type: object - properties: - huntingSkill: - type: string - description: The measured skill for hunting - enum: - - clueless - - lazy - - adventurous - - aggressive - required: - - huntingSkill - ## applies to instances with `petType: "Dog"` - ## because that is the schema name - Dog: - description: A representation of a dog - allOf: - - $ref: '#/components/schemas/Pet' - - type: object - properties: - packSize: - type: integer - format: int32 - description: the size of the pack the dog is from - minimum: 0 - required: - - packSize - ## applies to instances with `petType: "StickBug"` - ## because that is the required value of the discriminator field, - ## overriding the schema name - StickInsect: - description: A representation of an Australian walking stick - allOf: - - $ref: '#/components/schemas/Pet' - - type: object - properties: - petType: - const: StickBug - color: - type: string - required: - - color -``` - - - - - -#### Security Scheme Object - -Defines a security scheme that can be used by the operations. Supported schemes are: - -* User/Password. -* API key (either as user or as password). -* X.509 certificate. -* End-to-end encryption (either symmetric or asymmetric). -* HTTP authentication. -* HTTP API key. -* OAuth2's common flows (Implicit, Resource Owner Protected Credentials, Client Credentials and Authorization Code) as defined in [RFC6749](https://tools.ietf.org/html/rfc6749). -* [OpenID Connect Discovery](https://tools.ietf.org/html/draft-ietf-oauth-discovery-06). -* SASL (Simple Authentication and Security Layer) as defined in [RFC4422](https://tools.ietf.org/html/rfc4422). - -##### Fixed Fields -Field Name | Type | Applies To | Description ----|:---:|---|--- -type | `string` | Any | **REQUIRED**. The type of the security scheme. Valid values are `"userPassword"`, `"apiKey"`, `"X509"`, `"symmetricEncryption"`, `"asymmetricEncryption"`, `"httpApiKey"`, `"http"`, `"oauth2"`, `"openIdConnect"`, `"plain"`, `"scramSha256"`, `"scramSha512"`, and `"gssapi"`. -description | `string` | Any | A short description for security scheme. [CommonMark syntax](https://spec.commonmark.org/) MAY be used for rich text representation. -name | `string` | `httpApiKey` | **REQUIRED**. The name of the header, query or cookie parameter to be used. -in | `string` | `apiKey` \| `httpApiKey` | **REQUIRED**. The location of the API key. Valid values are `"user"` and `"password"` for `apiKey` and `"query"`, `"header"` or `"cookie"` for `httpApiKey`. -scheme | `string` | `http` | **REQUIRED**. The name of the HTTP Authorization scheme to be used in the [Authorization header as defined in RFC7235](https://tools.ietf.org/html/rfc7235#section-5.1). -bearerFormat | `string` | `http` (`"bearer"`) | A hint to the client to identify how the bearer token is formatted. Bearer tokens are usually generated by an authorization server, so this information is primarily for documentation purposes. -flows | [OAuth Flows Object](#oauthFlowsObject) | `oauth2` | **REQUIRED**. An object containing configuration information for the flow types supported. -openIdConnectUrl | `string` | `openIdConnect` | **REQUIRED**. OpenId Connect URL to discover OAuth2 configuration values. This MUST be in the form of a URL. - -This object MAY be extended with [Specification Extensions](#specificationExtensions). - -##### Security Scheme Object Example - -###### User/Password Authentication Sample - -```json -{ - "type": "userPassword" -} -``` - -```yaml -type: userPassword -``` - -###### API Key Authentication Sample - -```json -{ - "type": "apiKey", - "in": "user" -} -``` - -```yaml -type: apiKey, -in: user -``` - -###### X.509 Authentication Sample - -```json -{ - "type": "X509" -} -``` - -```yaml -type: X509 -``` - -###### End-to-end Encryption Authentication Sample - -```json -{ - "type": "symmetricEncryption" -} -``` - -```yaml -type: symmetricEncryption -``` - -###### Basic Authentication Sample - -```json -{ - "type": "http", - "scheme": "basic" -} -``` - -```yaml -type: http -scheme: basic -``` - -###### API Key Sample - -```json -{ - "type": "httpApiKey", - "name": "api_key", - "in": "header" -} -``` - -```yaml -type: httpApiKey -name: api_key -in: header -``` - -###### JWT Bearer Sample - -```json -{ - "type": "http", - "scheme": "bearer", - "bearerFormat": "JWT" -} -``` - -```yaml -type: http -scheme: bearer -bearerFormat: JWT -``` - -###### Implicit OAuth2 Sample - -```json -{ - "type": "oauth2", - "flows": { - "implicit": { - "authorizationUrl": "https://example.com/api/oauth/dialog", - "scopes": { - "write:pets": "modify pets in your account", - "read:pets": "read your pets" - } - } - } -} -``` - -```yaml -type: oauth2 -flows: - implicit: - authorizationUrl: https://example.com/api/oauth/dialog - scopes: - write:pets: modify pets in your account - read:pets: read your pets -``` - -###### SASL Sample - -```json -{ - "type": "scramSha512" -} -``` - -```yaml -type: scramSha512 -``` - -#### OAuth Flows Object - -Allows configuration of the supported OAuth Flows. - -##### Fixed Fields -Field Name | Type | Description ----|:---:|--- -implicit| [OAuth Flow Object](#oauthFlowObject) | Configuration for the OAuth Implicit flow -password| [OAuth Flow Object](#oauthFlowObject) | Configuration for the OAuth Resource Owner Protected Credentials flow -clientCredentials| [OAuth Flow Object](#oauthFlowObject) | Configuration for the OAuth Client Credentials flow. -authorizationCode| [OAuth Flow Object](#oauthFlowObject) | Configuration for the OAuth Authorization Code flow. - -This object MAY be extended with [Specification Extensions](#specificationExtensions). - -#### OAuth Flow Object - -Configuration details for a supported OAuth Flow - -##### Fixed Fields -Field Name | Type | Applies To | Description ----|:---:|---|--- -authorizationUrl | `string` | `oauth2` (`"implicit"`, `"authorizationCode"`) | **REQUIRED**. The authorization URL to be used for this flow. This MUST be in the form of a URL. -tokenUrl | `string` | `oauth2` (`"password"`, `"clientCredentials"`, `"authorizationCode"`) | **REQUIRED**. The token URL to be used for this flow. This MUST be in the form of a URL. -refreshUrl | `string` | `oauth2` | The URL to be used for obtaining refresh tokens. This MUST be in the form of a URL. -scopes | Map[`string`, `string`] | `oauth2` | **REQUIRED**. The available scopes for the OAuth2 security scheme. A map between the scope name and a short description for it. - -This object MAY be extended with [Specification Extensions](#specificationExtensions). - -##### OAuth Flow Object Examples - -```JSON -{ - "type": "oauth2", - "flows": { - "implicit": { - "authorizationUrl": "https://example.com/api/oauth/dialog", - "scopes": { - "write:pets": "modify pets in your account", - "read:pets": "read your pets" - } - }, - "authorizationCode": { - "authorizationUrl": "https://example.com/api/oauth/dialog", - "tokenUrl": "https://example.com/api/oauth/token", - "scopes": { - "write:pets": "modify pets in your account", - "read:pets": "read your pets" - } - } - } -} -``` - -```YAML -type: oauth2 -flows: - implicit: - authorizationUrl: https://example.com/api/oauth/dialog - scopes: - write:pets: modify pets in your account - read:pets: read your pets - authorizationCode: - authorizationUrl: https://example.com/api/oauth/dialog - tokenUrl: https://example.com/api/oauth/token - scopes: - write:pets: modify pets in your account - read:pets: read your pets -``` - -#### Security Requirement Object - -Lists the required security schemes to execute this operation. -The name used for each property MUST correspond to a security scheme declared in the [Security Schemes](#componentsSecuritySchemes) under the [Components Object](#componentsObject). - -When a list of Security Requirement Objects is defined on a [Server object](#serverObject), only one of the Security Requirement Objects in the list needs to be satisfied to authorize the connection. - -##### Patterned Fields - -Field Pattern | Type | Description ----|:---:|--- -{name} | [`string`] | Each name MUST correspond to a security scheme which is declared in the [Security Schemes](#componentsSecuritySchemes) under the [Components Object](#componentsObject). If the security scheme is of type `"oauth2"` or `"openIdConnect"`, then the value is a list of scope names. Provide scopes that are required to establish successful connection with the server. If scopes are not needed, the list can be empty. For other security scheme types, the array MUST be empty. - -##### Security Requirement Object Examples - -###### User/Password Security Requirement - -```json -{ - "user_pass": [] -} -``` - -```yaml -user_pass: [] -``` - -###### API Key Security Requirement - -```json -{ - "api_key": [] -} -``` - -```yaml -api_key: [] -``` - -###### OAuth2 Security Requirement - -```json -{ - "petstore_auth": [ - "write:pets", - "read:pets" - ] -} -``` - -```yaml -petstore_auth: -- write:pets -- read:pets -``` - -### Correlation ID Object - -An object that specifies an identifier at design time that can used for message tracing and correlation. - -For specifying and computing the location of a Correlation ID, a [runtime expression](#runtimeExpression) is used. - -##### Fixed Fields - -Field Name | Type | Description ----|:---|--- -description | `string` | An optional description of the identifier. [CommonMark syntax](https://spec.commonmark.org/) can be used for rich text representation. -location | `string` | **REQUIRED.** A [runtime expression](#runtimeExpression) that specifies the location of the correlation ID. - -This object can be extended with [Specification Extensions](#specificationExtensions). - -##### Examples - -```json -{ - "description": "Default Correlation ID", - "location": "$message.header#/correlationId" -} -``` - -```yaml -description: Default Correlation ID -location: $message.header#/correlationId -``` - -### Runtime Expression - -A runtime expression allows values to be defined based on information that will be available within the message. -This mechanism is used by [Correlation ID Object](#correlationIdObject). - -The runtime expression is defined by the following [ABNF](https://tools.ietf.org/html/rfc5234) syntax: - -``` - expression = ( "$message" "." source ) - source = ( header-reference | payload-reference ) - header-reference = "header" ["#" fragment] - payload-reference = "payload" ["#" fragment] - fragment = a JSON Pointer [RFC 6901](https://tools.ietf.org/html/rfc6901) -``` - -The table below provides examples of runtime expressions and examples of their use in a value: - -##### Examples - -Source Location | Example expression | Notes ----|:---|:---| -Message Header Property | `$message.header#/MQMD/CorrelId` | Correlation ID is set using the `CorrelId` value from the `MQMD` header. -Message Payload Property | `$message.payload#/messageId` | Correlation ID is set using the `messageId` value from the message payload. - -Runtime expressions preserve the type of the referenced value. - -### Specification Extensions - -While the AsyncAPI Specification tries to accommodate most use cases, additional data can be added to extend the specification at certain points. - -The extensions properties are implemented as patterned fields that are always prefixed by `"x-"`. - -Field Pattern | Type | Description ----|:---:|--- -`^x-[\w\d\-\_]+$` | Any | Allows extensions to the AsyncAPI Schema. The field name MUST begin with `x-`, for example, `x-internal-id`. The value can be `null`, a primitive, an array or an object. Can have any valid JSON format value. - -The extensions may or may not be supported by the available tooling, but those may be extended as well to add requested support (if tools are internal or open-sourced). - -### Data Type Formats - -Primitives have an optional modifier property: `format`. -The AsyncAPI specification uses several known formats to more finely define the data type being used. -However, the `format` property is an open `string`-valued property, and can have any value to support documentation needs. -Formats such as `"email"`, `"uuid"`, etc., can be used even though they are not defined by this specification. -Types that are not accompanied by a `format` property follow their definition from the JSON Schema. -Tools that do not recognize a specific `format` MAY default back to the `type` alone, as if the `format` was not specified. - -The formats defined by the AsyncAPI Specification are: - - -Common Name | `type` | [`format`](#dataTypeFormat) | Comments ------------ | ------ | -------- | -------- -integer | `integer` | `int32` | signed 32 bits -long | `integer` | `int64` | signed 64 bits -float | `number` | `float` | | -double | `number` | `double` | | -string | `string` | | | -byte | `string` | `byte` | base64 encoded characters -binary | `string` | `binary` | any sequence of octets -boolean | `boolean` | | | -date | `string` | `date` | As defined by `full-date` - [RFC3339](https://www.rfc-editor.org/rfc/rfc3339) -dateTime | `string` | `date-time` | As defined by `date-time` - [RFC3339](https://www.rfc-editor.org/rfc/rfc3339) -password | `string` | `password` | Used to hint UIs the input needs to be obscured. - - - diff --git a/pages/docs/reference/specification/v2.4.0.md b/pages/docs/reference/specification/v2.4.0.md deleted file mode 100644 index b7426616013..00000000000 --- a/pages/docs/reference/specification/v2.4.0.md +++ /dev/null @@ -1,2510 +0,0 @@ -# AsyncAPI Specification - -#### Disclaimer - -Part of this content has been taken from the great work done by the folks at the [OpenAPI Initiative](https://openapis.org). Mainly because **it's a great work** and we want to keep as much compatibility as possible with the [OpenAPI Specification](https://github.com/OAI/OpenAPI-Specification). - -#### Version 2.4.0 - -The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this document are to be interpreted as described in [RFC 2119](https://www.ietf.org/rfc/rfc2119.txt). - -The AsyncAPI Specification is licensed under [The Apache License, Version 2.0](https://www.apache.org/licenses/LICENSE-2.0.html). - -## Introduction - -The AsyncAPI Specification is a project used to describe and document message-driven APIs in a machine-readable format. It’s protocol-agnostic, so you can use it for APIs that work over any protocol (e.g., AMQP, MQTT, WebSockets, Kafka, STOMP, HTTP, Mercure, etc). - -The AsyncAPI Specification defines a set of files required to describe such an API. -These files can then be used to create utilities, such as documentation, integration and/or testing tools. - -The file(s) MUST describe the operations an [application](#definitionsApplication) accepts. For instance, consider the following AsyncAPI definition snippet: - -```yaml -user/signedup: - subscribe: - message: - $ref: "#/components/messages/userSignUp" -``` - -It means that the [application](#definitionsApplication) allows [consumers](#definitionsConsumer) to subscribe to the `user/signedup` [channel](#definitionsChannel) to receive userSignUp [messages](#definitionsMessage) produced by the application. - -**The AsyncAPI specification does not assume any kind of software topology, architecture or pattern.** Therefore, a server MAY be a message broker, a web server or any other kind of computer program capable of sending and/or receiving data. However, AsyncAPI offers a mechanism called "bindings" that aims to help with more specific information about the protocol. - - -## Definitions - -#### Server -A server MAY be a message broker that is capable of sending and/or receiving between a [producer](#definitionsProducer) and [consumer](#definitionsConsumer). A server MAY be a service with WebSocket API that enables message-driven communication between browser-to-server or server-to-server. - -#### Application -An application is any kind of computer program or a group of them. It MUST be a [producer](#definitionsProducer), a [consumer](#definitionsConsumer) or both. An application MAY be a microservice, IoT device (sensor), mainframe process, etc. An application MAY be written in any number of different programming languages as long as they support the selected [protocol](#definitionsProtocol). An application MUST also use a protocol supported by the [server](#definitionsServer) in order to connect and exchange [messages](#definitionsMessage). - -#### Producer -A producer is a type of application, connected to a [server](#definitionsServer), that is creating [messages](#definitionsMessage) and addressing them to [channels](#definitionsChannel). A producer MAY be publishing to multiple channels depending on the [server](#definitionsServer), protocol, and use-case pattern. - -#### Consumer -A consumer is a type of application, connected to a [server](#definitionsServer) via a supported [protocol](#definitionsProtocol), that is consuming [messages](#definitionsMessage) from [channels](#definitionsChannel). A consumer MAY be consuming from multiple channels depending on the [server](#definitionsServer), protocol, and the use-case pattern. - -#### Message -A message is the mechanism by which information is exchanged via a channel between [servers](#definitionsServer) and applications. A message MUST contain a payload and MAY also contain headers. The headers MAY be subdivided into [protocol](#definitionsProtocol)-defined headers and header properties defined by the application which can act as supporting metadata. The payload contains the data, defined by the application, which MUST be serialized into a format (JSON, XML, Avro, binary, etc.). Since a message is a generic mechanism, it can support multiple interaction patterns such as event, command, request, or response. - -#### Channel -A channel is an addressable component, made available by the [server](#definitionsServer), for the organization of [messages](#definitionsMessage). [Producer](#definitionsProducer) applications send messages to channels and [consumer](#definitionsConsumer) applications consume messages from channels. [Servers](#definitionsServer) MAY support many channel instances, allowing messages with different content to be addressed to different channels. Depending on the [server](#definitionsServer) implementation, the channel MAY be included in the message via protocol-defined headers. - -#### Protocol -A protocol is the mechanism (wireline protocol or API) by which [messages](#definitionsMessage) are exchanged between the application and the [channel](#definitionsChannel). Example protocols include, but are not limited to, AMQP, HTTP, JMS, Kafka, Anypoint MQ, MQTT, Solace, STOMP, Mercure, WebSocket. - -#### Bindings -A "binding" (or "protocol binding") is a mechanism to define protocol-specific information. Therefore, a protocol binding MUST define protocol-specific information only. - -## Specification - -### Format - -The files describing the message-driven API in accordance with the AsyncAPI Specification are represented as JSON objects and conform to the JSON standards. -YAML, being a superset of JSON, can be used as well to represent a A2S (AsyncAPI Specification) file. - -For example, if a field is said to have an array value, the JSON array representation will be used: - -```yaml -{ - "field" : [...] -} -``` - -While the API is described using JSON it does not impose a JSON input/output to the API itself. - -All field names in the specification are **case sensitive**. - -The schema exposes two types of fields. -Fixed fields, which have a declared name, and Patterned fields, which declare a regex pattern for the field name. -Patterned fields can have multiple occurrences as long as each has a unique name. - -In order to preserve the ability to round-trip between YAML and JSON formats, YAML version [1.2](https://www.yaml.org/spec/1.2/spec.html) is recommended along with some additional constraints: - -- Tags MUST be limited to those allowed by the [JSON Schema ruleset](https://www.yaml.org/spec/1.2/spec.html#id2803231) -- Keys used in YAML maps MUST be limited to a scalar string, as defined by the YAML Failsafe schema ruleset - -### File Structure - -An AsyncAPI document MAY be made up of a single document or be divided into multiple, -connected parts at the discretion of the author. In the latter case, [Reference Objects](#referenceObject) are used. - -By convention, the AsyncAPI Specification (A2S) file is named `asyncapi.json` or `asyncapi.yaml`. - -### Absolute URLs - -Unless specified otherwise, all properties that are absolute URLs are defined by [RFC3986, section 4.3](https://datatracker.ietf.org/doc/html/rfc3986#section-4.3). - -### Schema - -#### AsyncAPI Object - -This is the root document object for the API specification. -It combines resource listing and API declaration together into one document. - -##### Fixed Fields - -Field Name | Type | Description ----|:---:|--- -asyncapi | [AsyncAPI Version String](#A2SVersionString) | **REQUIRED.** Specifies the AsyncAPI Specification version being used. It can be used by tooling Specifications and clients to interpret the version. The structure shall be `major`.`minor`.`patch`, where `patch` versions _must_ be compatible with the existing `major`.`minor` tooling. Typically patch versions will be introduced to address errors in the documentation, and tooling should typically be compatible with the corresponding `major`.`minor` (1.0.*). Patch versions will correspond to patches of this document. -id | [Identifier](#A2SIdString) | Identifier of the [application](#definitionsApplication) the AsyncAPI document is defining. -info | [Info Object](#infoObject) | **REQUIRED.** Provides metadata about the API. The metadata can be used by the clients if needed. -servers | [Servers Object](#serversObject) | Provides connection details of servers. -defaultContentType | [Default Content Type](#defaultContentTypeString) | Default content type to use when encoding/decoding a message's payload. -channels | [Channels Object](#channelsObject) | **REQUIRED** The available channels and messages for the API. -components | [Components Object](#componentsObject) | An element to hold various schemas for the specification. -tags | [Tags Object](#tagsObject) | A list of tags used by the specification with additional metadata. Each tag name in the list MUST be unique. -externalDocs | [External Documentation Object](#externalDocumentationObject) | Additional external documentation. - - -This object MAY be extended with [Specification Extensions](#specificationExtensions). - -#### AsyncAPI Version String - -The version string signifies the version of the AsyncAPI Specification that the document complies to. -The format for this string _must_ be `major`.`minor`.`patch`. The `patch` _may_ be suffixed by a hyphen and extra alphanumeric characters. - -A `major`.`minor` shall be used to designate the AsyncAPI Specification version, and will be considered compatible with the AsyncAPI Specification specified by that `major`.`minor` version. -The patch version will not be considered by tooling, making no distinction between `1.0.0` and `1.0.1`. - -In subsequent versions of the AsyncAPI Specification, care will be given such that increments of the `minor` version should not interfere with operations of tooling developed to a lower minor version. Thus a hypothetical `1.1.0` specification should be usable with tooling designed for `1.0.0`. - -#### Identifier - -This field represents a unique universal identifier of the [application](#definitionsApplication) the AsyncAPI document is defining. It must conform to the URI format, according to [RFC3986](https://tools.ietf.org/html/rfc3986). - -It is RECOMMENDED to use a [URN](https://tools.ietf.org/html/rfc8141) to globally and uniquely identify the application during long periods of time, even after it becomes unavailable or ceases to exist. - -###### Examples - -```json -{ - "id": "urn:example:com:smartylighting:streetlights:server" -} -``` - -```yaml -id: 'urn:example:com:smartylighting:streetlights:server' -``` - -```json -{ - "id": "https://github.com/smartylighting/streetlights-server" -} -``` - -```yaml -id: 'https://github.com/smartylighting/streetlights-server' -``` - -#### Info Object - -The object provides metadata about the API. -The metadata can be used by the clients if needed. - -##### Fixed Fields - -Field Name | Type | Description ----|:---:|--- -title | `string` | **REQUIRED.** The title of the application. -version | `string` | **REQUIRED** Provides the version of the application API (not to be confused with the specification version). -description | `string` | A short description of the application. [CommonMark syntax](https://spec.commonmark.org/) can be used for rich text representation. -termsOfService | `string` | A URL to the Terms of Service for the API. This MUST be in the form of an absolute URL. -contact | [Contact Object](#contactObject) | The contact information for the exposed API. -license | [License Object](#licenseObject) | The license information for the exposed API. - -This object MAY be extended with [Specification Extensions](#specificationExtensions). - -##### Info Object Example: - -```json -{ - "title": "AsyncAPI Sample App", - "description": "This is a sample server.", - "termsOfService": "https://asyncapi.org/terms/", - "contact": { - "name": "API Support", - "url": "https://www.asyncapi.org/support", - "email": "support@asyncapi.org" - }, - "license": { - "name": "Apache 2.0", - "url": "https://www.apache.org/licenses/LICENSE-2.0.html" - }, - "version": "1.0.1" -} -``` - -```yaml -title: AsyncAPI Sample App -description: This is a sample server. -termsOfService: https://asyncapi.org/terms/ -contact: - name: API Support - url: https://www.asyncapi.org/support - email: support@asyncapi.org -license: - name: Apache 2.0 - url: https://www.apache.org/licenses/LICENSE-2.0.html -version: 1.0.1 -``` - -#### Contact Object - -Contact information for the exposed API. - -##### Fixed Fields - -Field Name | Type | Description ----|:---:|--- -name | `string` | The identifying name of the contact person/organization. -url | `string` | The URL pointing to the contact information. This MUST be in the form of an absolute URL. -email | `string` | The email address of the contact person/organization. MUST be in the format of an email address. - -This object MAY be extended with [Specification Extensions](#specificationExtensions). - -##### Contact Object Example: - -```json -{ - "name": "API Support", - "url": "https://www.example.com/support", - "email": "support@example.com" -} -``` - -```yaml -name: API Support -url: https://www.example.com/support -email: support@example.com -``` - -#### License Object - -License information for the exposed API. - -##### Fixed Fields - -Field Name | Type | Description ----|:---:|--- -name | `string` | **REQUIRED.** The license name used for the API. -url | `string` | A URL to the license used for the API. This MUST be in the form of an absolute URL. - -This object MAY be extended with [Specification Extensions](#specificationExtensions). - -##### License Object Example: - -```json -{ - "name": "Apache 2.0", - "url": "https://www.apache.org/licenses/LICENSE-2.0.html" -} -``` - -```yaml -name: Apache 2.0 -url: https://www.apache.org/licenses/LICENSE-2.0.html -``` - -#### Servers Object - -The Servers Object is a map of [Server Objects](#serverObject). - -##### Patterned Fields - -Field Pattern | Type | Description ----|:---:|--- -`^[A-Za-z0-9_\-]+$` | [Server Object](#serverObject) \| [Reference Object](#referenceObject) | The definition of a server this application MAY connect to. - -##### Servers Object Example - -```json -{ - "production": { - "url": "development.gigantic-server.com", - "description": "Development server", - "protocol": "kafka", - "protocolVersion": "1.0.0" - } -} -``` - -```yaml -production: - url: development.gigantic-server.com - description: Development server - protocol: kafka - protocolVersion: '1.0.0' -``` - - -#### Server Object - -An object representing a message broker, a server or any other kind of computer program capable of sending and/or receiving data. This object is used to capture details such as URIs, protocols and security configuration. Variable substitution can be used so that some details, for example usernames and passwords, can be injected by code generation tools. - -##### Fixed Fields - -Field Name | Type | Description ----|:---:|--- -url | `string` | **REQUIRED**. A URL to the target host. This URL supports Server Variables and MAY be relative, to indicate that the host location is relative to the location where the AsyncAPI document is being served. Variable substitutions will be made when a variable is named in `{`braces`}`. -protocol | `string` | **REQUIRED**. The protocol this URL supports for connection. Supported protocol include, but are not limited to: `amqp`, `amqps`, `http`, `https`, `ibmmq`, `jms`, `kafka`, `kafka-secure`, `anypointmq`, `mqtt`, `secure-mqtt`, `solace`, `stomp`, `stomps`, `ws`, `wss`, `mercure`. -protocolVersion | `string` | The version of the protocol used for connection. For instance: AMQP `0.9.1`, HTTP `2.0`, Kafka `1.0.0`, etc. -description | `string` | An optional string describing the host designated by the URL. [CommonMark syntax](https://spec.commonmark.org/) MAY be used for rich text representation. -variables | Map[`string`, [Server Variable Object](#serverVariableObject)] | A map between a variable name and its value. The value is used for substitution in the server's URL template. -security | [[Security Requirement Object](#securityRequirementObject)] | A declaration of which security mechanisms can be used with this server. The list of values includes alternative security requirement objects that can be used. Only one of the security requirement objects need to be satisfied to authorize a connection or operation. -bindings | [Server Bindings Object](#serverBindingsObject) \| [Reference Object](#referenceObject) | A map where the keys describe the name of the protocol and the values describe protocol-specific definitions for the server. - -This object MAY be extended with [Specification Extensions](#specificationExtensions). - -##### Server Object Example - -A single server would be described as: - -```json -{ - "url": "development.gigantic-server.com", - "description": "Development server", - "protocol": "kafka", - "protocolVersion": "1.0.0" -} -``` - -```yaml -url: development.gigantic-server.com -description: Development server -protocol: kafka -protocolVersion: '1.0.0' -``` - -The following shows how multiple servers can be described, for example, at the AsyncAPI Object's [`servers`](#A2SServers): - -```json -{ - "servers": { - "development": { - "url": "development.gigantic-server.com", - "description": "Development server", - "protocol": "amqp", - "protocolVersion": "0.9.1" - }, - "staging": { - "url": "staging.gigantic-server.com", - "description": "Staging server", - "protocol": "amqp", - "protocolVersion": "0.9.1" - }, - "production": { - "url": "api.gigantic-server.com", - "description": "Production server", - "protocol": "amqp", - "protocolVersion": "0.9.1" - } - } -} -``` - -```yaml -servers: - development: - url: development.gigantic-server.com - description: Development server - protocol: amqp - protocolVersion: 0.9.1 - staging: - url: staging.gigantic-server.com - description: Staging server - protocol: amqp - protocolVersion: 0.9.1 - production: - url: api.gigantic-server.com - description: Production server - protocol: amqp - protocolVersion: 0.9.1 -``` - -The following shows how variables can be used for a server configuration: - -```json -{ - "servers": { - "production": { - "url": "{username}.gigantic-server.com:{port}/{basePath}", - "description": "The production API server", - "protocol": "secure-mqtt", - "variables": { - "username": { - "default": "demo", - "description": "This value is assigned by the service provider, in this example `gigantic-server.com`" - }, - "port": { - "enum": [ - "8883", - "8884" - ], - "default": "8883" - }, - "basePath": { - "default": "v2" - } - } - } - } -} -``` - -```yaml -servers: - production: - url: '{username}.gigantic-server.com:{port}/{basePath}' - description: The production API server - protocol: secure-mqtt - variables: - username: - # note! no enum here means it is an open value - default: demo - description: This value is assigned by the service provider, in this example `gigantic-server.com` - port: - enum: - - '8883' - - '8884' - default: '8883' - basePath: - # open meaning there is the opportunity to use special base paths as assigned by the provider, default is `v2` - default: v2 -``` - - -#### Server Variable Object - -An object representing a Server Variable for server URL template substitution. - -##### Fixed Fields - -Field Name | Type | Description ----|:---:|--- -enum | [`string`] | An enumeration of string values to be used if the substitution options are from a limited set. -default | `string` | The default value to use for substitution, and to send, if an alternate value is _not_ supplied. -description | `string` | An optional description for the server variable. [CommonMark syntax](https://spec.commonmark.org/) MAY be used for rich text representation. -examples | [`string`] | An array of examples of the server variable. - -This object MAY be extended with [Specification Extensions](#specificationExtensions). - - - - - -#### Default Content Type - -A string representing the default content type to use when encoding/decoding a message's payload. The value MUST be a specific media type (e.g. `application/json`). This value MUST be used by schema parsers when the [contentType](#messageObjectContentType) property is omitted. - -In case a message can't be encoded/decoded using this value, schema parsers MUST use their default content type. - -##### Default Content Type Example - -```json -{ - "defaultContentType": "application/json" -} -``` - -```yaml -defaultContentType: application/json -``` - - - - - - -#### Channels Object - -Holds the relative paths to the individual channel and their operations. Channel paths are relative to servers. - -Channels are also known as "topics", "routing keys", "event types" or "paths". - -##### Patterned Fields - -Field Pattern | Type | Description ----|:---:|--- -{channel} | [Channel Item Object](#channelItemObject) | A relative path to an individual channel. The field name MUST be in the form of a [RFC 6570 URI template](https://tools.ietf.org/html/rfc6570). Query parameters and fragments SHALL NOT be used, instead use [bindings](#channelBindingsObject) to define them. - -##### Channels Object Example - -```json -{ - "user/signedup": { - "subscribe": { - "message": { - "$ref": "#/components/messages/userSignedUp" - } - } - } -} -``` - -```yaml -user/signedup: - subscribe: - message: - $ref: "#/components/messages/userSignedUp" -``` - - - - -#### Channel Item Object - -Describes the operations available on a single channel. - -##### Fixed Fields - -Field Name | Type | Description ----|:---:|--- -$ref | `string` | Allows for a referenced definition of this channel item. The referenced structure MUST be in the form of a [Channel Item Object](#channelItemObject). In case a Channel Item Object field appears both in the defined object and the referenced object, the behavior is *undefined*. Resolution is done as defined by the [JSON Reference](https://tools.ietf.org/html/draft-pbryan-zyp-json-ref-03).

**Deprecated:** Usage of the `$ref` property has been deprecated. -description | `string` | An optional description of this channel item. [CommonMark syntax](https://spec.commonmark.org/) can be used for rich text representation. -servers | [`string`] | The servers on which this channel is available, specified as an optional unordered list of names (string keys) of [Server Objects](#serverObject) defined in the [Servers Object](#serversObject) (a map). If `servers` is absent or empty then this channel must be available on all servers defined in the [Servers Object](#serversObject). -subscribe | [Operation Object](#operationObject) | A definition of the SUBSCRIBE operation, which defines the messages produced by the application and sent to the channel. -publish | [Operation Object](#operationObject) | A definition of the PUBLISH operation, which defines the messages consumed by the application from the channel. -parameters | [Parameters Object](#parametersObject) | A map of the parameters included in the channel name. It SHOULD be present only when using channels with expressions (as defined by [RFC 6570 section 2.2](https://tools.ietf.org/html/rfc6570#section-2.2)). -bindings | [Channel Bindings Object](#channelBindingsObject) \| [Reference Object](#referenceObject) | A map where the keys describe the name of the protocol and the values describe protocol-specific definitions for the channel. - -This object MAY be extended with [Specification Extensions](#specificationExtensions). - -##### Channel Item Object Example - -```json -{ - "description": "This channel is used to exchange messages about users signing up", - "subscribe": { - "summary": "A user signed up.", - "message": { - "description": "A longer description of the message", - "payload": { - "type": "object", - "properties": { - "user": { - "$ref": "#/components/schemas/user" - }, - "signup": { - "$ref": "#/components/schemas/signup" - } - } - } - } - }, - "bindings": { - "amqp": { - "is": "queue", - "queue": { - "exclusive": true - } - } - } -} -``` - -```yaml -description: This channel is used to exchange messages about users signing up -subscribe: - summary: A user signed up. - message: - description: A longer description of the message - payload: - type: object - properties: - user: - $ref: "#/components/schemas/user" - signup: - $ref: "#/components/schemas/signup" -bindings: - amqp: - is: queue - queue: - exclusive: true -``` - -Using `oneOf` to specify multiple messages per operation: - -```json -{ - "subscribe": { - "message": { - "oneOf": [ - { "$ref": "#/components/messages/signup" }, - { "$ref": "#/components/messages/login" } - ] - } - } -} -``` - -```yaml -subscribe: - message: - oneOf: - - $ref: '#/components/messages/signup' - - $ref: '#/components/messages/login' -``` - - -Using explicit by-name references to the servers on which the channel is available: - -```json -{ - "description": "This application publishes WebUICommand messages to an AMQP queue on RabbitMQ brokers in the Staging and Production environments.", - "servers": [ - "rabbitmqBrokerInProd", - "rabbitmqBrokerInStaging", - ], - "subscribe": { - "message": { - "$ref": "#/components/messages/WebUICommand" - } - }, - "bindings": { - "amqp": { - "is": "queue" - } - } -} -``` - -```yaml -description: This application publishes WebUICommand messages to an AMQP queue on RabbitMQ brokers in the Staging and Production environments. -servers: - - rabbitmqBrokerInProd - - rabbitmqBrokerInStaging -subscribe: - message: - $ref: "#/components/messages/WebUICommand" -bindings: - amqp: - is: queue -``` - - - - - -#### Operation Object - -Describes a publish or a subscribe operation. This provides a place to document how and why messages are sent and received. - -For example, an operation might describe a chat application use case where a user sends a text message to a group. A publish operation describes messages that are received by the chat application, whereas a subscribe operation describes messages that are sent by the chat application. - -##### Fixed Fields - -Field Name | Type | Description ----|:---:|--- -operationId | `string` | Unique string used to identify the operation. The id MUST be unique among all operations described in the API. The operationId value is **case-sensitive**. Tools and libraries MAY use the operationId to uniquely identify an operation, therefore, it is RECOMMENDED to follow common programming naming conventions. -summary | `string` | A short summary of what the operation is about. -description | `string` | A verbose explanation of the operation. [CommonMark syntax](http://spec.commonmark.org/) can be used for rich text representation. -security | [[Security Requirement Object](#securityRequirementObject)]| A declaration of which security mechanisms are associated with this operation. Only one of the security requirement objects MUST be satisfied to authorize an operation. In cases where Server Security also applies, it MUST also be satisfied. -tags | [Tags Object](#tagsObject) | A list of tags for API documentation control. Tags can be used for logical grouping of operations. -externalDocs | [External Documentation Object](#externalDocumentationObject) | Additional external documentation for this operation. -bindings | [Operation Bindings Object](#operationBindingsObject) \| [Reference Object](#referenceObject) | A map where the keys describe the name of the protocol and the values describe protocol-specific definitions for the operation. -traits | [[Operation Trait Object](#operationTraitObject) | [Reference Object](#referenceObject) ] | A list of traits to apply to the operation object. Traits MUST be merged into the operation object using the [JSON Merge Patch](https://tools.ietf.org/html/rfc7386) algorithm in the same order they are defined here. -message | [Message Object](#messageObject) | [Reference Object](#referenceObject) | Map["oneOf", [[Message Object](#messageObject) | [Reference Object](#referenceObject)]] | A definition of the message that will be published or received by this operation. Map containing a single `oneOf` key is allowed here to specify multiple messages. However, **a message MUST be valid only against one of the message objects.** - -This object MAY be extended with [Specification Extensions](#specificationExtensions). - -##### Operation Object Example - -```json -{ - "operationId": "registerUser", - "summary": "Action to sign a user up.", - "description": "A longer description", - "security": [ - { - "petstore_auth": [ - "write:pets", - "read:pets" - ] - } - ], - "tags": [ - { "name": "user" }, - { "name": "signup" }, - { "name": "register" } - ], - "message": { - "headers": { - "type": "object", - "properties": { - "applicationInstanceId": { - "description": "Unique identifier for a given instance of the publishing application", - "type": "string" - } - } - }, - "payload": { - "type": "object", - "properties": { - "user": { - "$ref": "#/components/schemas/userCreate" - }, - "signup": { - "$ref": "#/components/schemas/signup" - } - } - } - }, - "bindings": { - "amqp": { - "ack": false - } - }, - "traits": [ - { "$ref": "#/components/operationTraits/kafka" } - ] -} -``` - -```yaml -operationId: registerUser -summary: Action to sign a user up. -description: A longer description -security: - - petstore_auth: - - write:pets - - read:pets -tags: - - name: user - - name: signup - - name: register -message: - headers: - type: object - properties: - applicationInstanceId: - description: Unique identifier for a given instance of the publishing application - type: string - payload: - type: object - properties: - user: - $ref: "#/components/schemas/userCreate" - signup: - $ref: "#/components/schemas/signup" -bindings: - amqp: - ack: false -traits: - - $ref: "#/components/operationTraits/kafka" -``` - - - - -#### Operation Trait Object - -Describes a trait that MAY be applied to an [Operation Object](#operationObject). This object MAY contain any property from the [Operation Object](#operationObject), except `message` and `traits`. - -If you're looking to apply traits to a message, see the [Message Trait Object](#messageTraitObject). - -##### Fixed Fields - -Field Name | Type | Description ----|:---:|--- -operationId | `string` | Unique string used to identify the operation. The id MUST be unique among all operations described in the API. The operationId value is **case-sensitive**. Tools and libraries MAY use the operationId to uniquely identify an operation, therefore, it is RECOMMENDED to follow common programming naming conventions. -summary | `string` | A short summary of what the operation is about. -description | `string` | A verbose explanation of the operation. [CommonMark syntax](https://spec.commonmark.org/) can be used for rich text representation. -security | [[Security Requirement Object](#securityRequirementObject)]| A declaration of which security mechanisms are associated with this operation. Only one of the security requirement objects MUST be satisfied to authorize an operation. In cases where Server Security also applies, it MUST also be satisfied. -tags | [Tags Object](#tagsObject) | A list of tags for API documentation control. Tags can be used for logical grouping of operations. -externalDocs | [External Documentation Object](#externalDocumentationObject) | Additional external documentation for this operation. -bindings | [Operation Bindings Object](#operationBindingsObject) \| [Reference Object](#referenceObject) | A map where the keys describe the name of the protocol and the values describe protocol-specific definitions for the operation. - -This object MAY be extended with [Specification Extensions](#specificationExtensions). - -##### Operation Trait Object Example - -```json -{ - "bindings": { - "amqp": { - "ack": false - } - } -} -``` - -```yaml -bindings: - amqp: - ack: false -``` - - - - -#### Parameters Object - -Describes a map of parameters included in a channel name. - -This map MUST contain all the parameters used in the parent channel name. - -##### Patterned Fields - -Field Pattern | Type | Description ----|:---:|--- -`^[A-Za-z0-9_\-]+$` | [Parameter Object](#parameterObject) | [Reference Object](#referenceObject) | The key represents the name of the parameter. It MUST match the parameter name used in the parent channel name. - -##### Parameters Object Example - -```json -{ - "user/{userId}/signup": { - "parameters": { - "userId": { - "description": "Id of the user.", - "schema": { - "type": "string" - } - } - }, - "subscribe": { - "message": { - "$ref": "#/components/messages/userSignedUp" - } - } - } -} -``` - -```yaml -user/{userId}/signup: - parameters: - userId: - description: Id of the user. - schema: - type: string - subscribe: - message: - $ref: "#/components/messages/userSignedUp" -``` - - - - - -#### Parameter Object - -Describes a parameter included in a channel name. - -##### Fixed Fields - -Field Name | Type | Description ----|:---:|--- -description | `string` | A verbose explanation of the parameter. [CommonMark syntax](https://spec.commonmark.org/) can be used for rich text representation. -schema | [Schema Object](#schemaObject) \| [Reference Object](#referenceObject) | Definition of the parameter. -location | `string` | A [runtime expression](#runtimeExpression) that specifies the location of the parameter value. Even when a definition for the target field exists, it MUST NOT be used to validate this parameter but, instead, the `schema` property MUST be used. - -This object MAY be extended with [Specification Extensions](#specificationExtensions). - -##### Parameter Object Example - -```json -{ - "user/{userId}/signup": { - "parameters": { - "userId": { - "description": "Id of the user.", - "schema": { - "type": "string" - }, - "location": "$message.payload#/user/id" - } - }, - "subscribe": { - "message": { - "$ref": "#/components/messages/userSignedUp" - } - } - } -} -``` - -```yaml -user/{userId}/signup: - parameters: - userId: - description: Id of the user. - schema: - type: string - location: $message.payload#/user/id - subscribe: - message: - $ref: "#/components/messages/userSignedUp" -``` - - - - -#### Server Bindings Object - -Map describing protocol-specific definitions for a server. - -##### Fixed Fields - -Field Name | Type | Description ----|:---:|--- -`http` | [HTTP Server Binding](https://github.com/asyncapi/bindings/blob/master/http#server) | Protocol-specific information for an HTTP server. -`ws` | [WebSockets Server Binding](https://github.com/asyncapi/bindings/blob/master/websockets#server) | Protocol-specific information for a WebSockets server. -`kafka` | [Kafka Server Binding](https://github.com/asyncapi/bindings/blob/master/kafka#server) | Protocol-specific information for a Kafka server. -`anypointmq` | [Anypoint MQ Server Binding](https://github.com/asyncapi/bindings/blob/master/anypointmq#server) | Protocol-specific information for an Anypoint MQ server. -`amqp` | [AMQP Server Binding](https://github.com/asyncapi/bindings/blob/master/amqp#server) | Protocol-specific information for an AMQP 0-9-1 server. -`amqp1` | [AMQP 1.0 Server Binding](https://github.com/asyncapi/bindings/blob/master/amqp1#server) | Protocol-specific information for an AMQP 1.0 server. -`mqtt` | [MQTT Server Binding](https://github.com/asyncapi/bindings/blob/master/mqtt#server) | Protocol-specific information for an MQTT server. -`mqtt5` | [MQTT 5 Server Binding](https://github.com/asyncapi/bindings/blob/master/mqtt5#server) | Protocol-specific information for an MQTT 5 server. -`nats` | [NATS Server Binding](https://github.com/asyncapi/bindings/blob/master/nats#server) | Protocol-specific information for a NATS server. -`jms` | [JMS Server Binding](https://github.com/asyncapi/bindings/blob/master/jms#server) | Protocol-specific information for a JMS server. -`sns` | [SNS Server Binding](https://github.com/asyncapi/bindings/blob/master/sns#server) | Protocol-specific information for an SNS server. -`solace` | [Solace Server Binding](https://github.com/asyncapi/bindings/blob/master/solace#server) | Protocol-specific information for a Solace server. -`sqs` | [SQS Server Binding](https://github.com/asyncapi/bindings/blob/master/sqs#server) | Protocol-specific information for an SQS server. -`stomp` | [STOMP Server Binding](https://github.com/asyncapi/bindings/blob/master/stomp#server) | Protocol-specific information for a STOMP server. -`redis` | [Redis Server Binding](https://github.com/asyncapi/bindings/blob/master/redis#server) | Protocol-specific information for a Redis server. -`mercure` | [Mercure Server Binding](https://github.com/asyncapi/bindings/blob/master/mercure#server) | Protocol-specific information for a Mercure server. -`ibmmq` | [IBM MQ Server Binding](https://github.com/asyncapi/bindings/blob/master/ibmmq#server-binding-object) | Protocol-specific information for an IBM MQ server. - -This object MAY be extended with [Specification Extensions](#specificationExtensions). - - - -#### Channel Bindings Object - -Map describing protocol-specific definitions for a channel. - -##### Fixed Fields - -Field Name | Type | Description ----|:---:|--- -`http` | [HTTP Channel Binding](https://github.com/asyncapi/bindings/blob/master/http/README.md#channel) | Protocol-specific information for an HTTP channel. -`ws` | [WebSockets Channel Binding](https://github.com/asyncapi/bindings/blob/master/websockets/README.md#channel) | Protocol-specific information for a WebSockets channel. -`kafka` | [Kafka Channel Binding](https://github.com/asyncapi/bindings/blob/master/kafka/README.md#channel) | Protocol-specific information for a Kafka channel. -`anypointmq` | [Anypoint MQ Channel Binding](https://github.com/asyncapi/bindings/blob/master/anypointmq/README.md#channel) | Protocol-specific information for an Anypoint MQ channel. -`amqp` | [AMQP Channel Binding](https://github.com/asyncapi/bindings/blob/master/amqp/README.md#channel) | Protocol-specific information for an AMQP 0-9-1 channel. -`amqp1` | [AMQP 1.0 Channel Binding](https://github.com/asyncapi/bindings/blob/master/amqp1/README.md#channel) | Protocol-specific information for an AMQP 1.0 channel. -`mqtt` | [MQTT Channel Binding](https://github.com/asyncapi/bindings/blob/master/mqtt/README.md#channel) | Protocol-specific information for an MQTT channel. -`mqtt5` | [MQTT 5 Channel Binding](https://github.com/asyncapi/bindings/blob/master/mqtt5#channel) | Protocol-specific information for an MQTT 5 channel. -`nats` | [NATS Channel Binding](https://github.com/asyncapi/bindings/blob/master/nats/README.md#channel) | Protocol-specific information for a NATS channel. -`jms` | [JMS Channel Binding](https://github.com/asyncapi/bindings/blob/master/jms/README.md#channel) | Protocol-specific information for a JMS channel. -`sns` | [SNS Channel Binding](https://github.com/asyncapi/bindings/blob/master/sns/README.md#channel) | Protocol-specific information for an SNS channel. -`solace` | [Solace Channel Binding](https://github.com/asyncapi/bindings/blob/master/solace#channel) | Protocol-specific information for a Solace channel. -`sqs` | [SQS Channel Binding](https://github.com/asyncapi/bindings/blob/master/sqs/README.md#channel) | Protocol-specific information for an SQS channel. -`stomp` | [STOMP Channel Binding](https://github.com/asyncapi/bindings/blob/master/stomp/README.md#channel) | Protocol-specific information for a STOMP channel. -`redis` | [Redis Channel Binding](https://github.com/asyncapi/bindings/blob/master/redis#channel) | Protocol-specific information for a Redis channel. -`mercure` | [Mercure Channel Binding](https://github.com/asyncapi/bindings/blob/master/mercure#channel) | Protocol-specific information for a Mercure channel. -`ibmmq` | [IBM MQ Channel Binding](https://github.com/asyncapi/bindings/tree/master/ibmmq#channel-binding-object) | Protocol-specific information for an IBM MQ channel. - -This object MAY be extended with [Specification Extensions](#specificationExtensions). - - - -#### Operation Bindings Object - -Map describing protocol-specific definitions for an operation. - -##### Fixed Fields - -Field Name | Type | Description ----|:---:|--- -`http` | [HTTP Operation Binding](https://github.com/asyncapi/bindings/blob/master/http/README.md#operation) | Protocol-specific information for an HTTP operation. -`ws` | [WebSockets Operation Binding](https://github.com/asyncapi/bindings/blob/master/websockets/README.md#operation) | Protocol-specific information for a WebSockets operation. -`kafka` | [Kafka Operation Binding](https://github.com/asyncapi/bindings/blob/master/kafka/README.md#operation) | Protocol-specific information for a Kafka operation. -`anypointmq` | [Anypoint MQ Operation Binding](https://github.com/asyncapi/bindings/blob/master/anypointmq/README.md#operation) | Protocol-specific information for an Anypoint MQ operation. -`amqp` | [AMQP Operation Binding](https://github.com/asyncapi/bindings/blob/master/amqp/README.md#operation) | Protocol-specific information for an AMQP 0-9-1 operation. -`amqp1` | [AMQP 1.0 Operation Binding](https://github.com/asyncapi/bindings/blob/master/amqp1/README.md#operation) | Protocol-specific information for an AMQP 1.0 operation. -`mqtt` | [MQTT Operation Binding](https://github.com/asyncapi/bindings/blob/master/mqtt/README.md#operation) | Protocol-specific information for an MQTT operation. -`mqtt5` | [MQTT 5 Operation Binding](https://github.com/asyncapi/bindings/blob/master/mqtt5/README.md#operation) | Protocol-specific information for an MQTT 5 operation. -`nats` | [NATS Operation Binding](https://github.com/asyncapi/bindings/blob/master/nats/README.md#operation) | Protocol-specific information for a NATS operation. -`jms` | [JMS Operation Binding](https://github.com/asyncapi/bindings/blob/master/jms/README.md#operation) | Protocol-specific information for a JMS operation. -`sns` | [SNS Operation Binding](https://github.com/asyncapi/bindings/blob/master/sns/README.md#operation) | Protocol-specific information for an SNS operation. -`solace` | [Solace Operation Binding](https://github.com/asyncapi/bindings/blob/master/solace#operation) | Protocol-specific information for a Solace operation. -`sqs` | [SQS Operation Binding](https://github.com/asyncapi/bindings/blob/master/sqs/README.md#operation) | Protocol-specific information for an SQS operation. -`stomp` | [STOMP Operation Binding](https://github.com/asyncapi/bindings/blob/master/stomp/README.md#operation) | Protocol-specific information for a STOMP operation. -`redis` | [Redis Operation Binding](https://github.com/asyncapi/bindings/blob/master/redis#operation) | Protocol-specific information for a Redis operation. -`mercure` | [Mercure Operation Binding](https://github.com/asyncapi/bindings/blob/master/mercure#operation) | Protocol-specific information for a Mercure operation. - -This object MAY be extended with [Specification Extensions](#specificationExtensions). - - - - -#### Message Bindings Object - -Map describing protocol-specific definitions for a message. - -##### Fixed Fields - -Field Name | Type | Description ----|:---:|--- -`http` | [HTTP Message Binding](https://github.com/asyncapi/bindings/blob/master/http/README.md#message) | Protocol-specific information for an HTTP message, i.e., a request or a response. -`ws` | [WebSockets Message Binding](https://github.com/asyncapi/bindings/blob/master/websockets/README.md#message) | Protocol-specific information for a WebSockets message. -`kafka` | [Kafka Message Binding](https://github.com/asyncapi/bindings/blob/master/kafka/README.md#message) | Protocol-specific information for a Kafka message. -`anypointmq` | [Anypoint MQ Message Binding](https://github.com/asyncapi/bindings/blob/master/anypointmq/README.md#message) | Protocol-specific information for an Anypoint MQ message. -`amqp` | [AMQP Message Binding](https://github.com/asyncapi/bindings/blob/master/amqp/README.md#message) | Protocol-specific information for an AMQP 0-9-1 message. -`amqp1` | [AMQP 1.0 Message Binding](https://github.com/asyncapi/bindings/blob/master/amqp1/README.md#message) | Protocol-specific information for an AMQP 1.0 message. -`mqtt` | [MQTT Message Binding](https://github.com/asyncapi/bindings/blob/master/mqtt/README.md#message) | Protocol-specific information for an MQTT message. -`mqtt5` | [MQTT 5 Message Binding](https://github.com/asyncapi/bindings/blob/master/mqtt5/README.md#message) | Protocol-specific information for an MQTT 5 message. -`nats` | [NATS Message Binding](https://github.com/asyncapi/bindings/blob/master/nats/README.md#message) | Protocol-specific information for a NATS message. -`jms` | [JMS Message Binding](https://github.com/asyncapi/bindings/blob/master/jms/README.md#message) | Protocol-specific information for a JMS message. -`sns` | [SNS Message Binding](https://github.com/asyncapi/bindings/blob/master/sns/README.md#message) | Protocol-specific information for an SNS message. -`solace` | [Solace Server Binding](https://github.com/asyncapi/bindings/blob/master/solace#message) | Protocol-specific information for a Solace message. -`sqs` | [SQS Message Binding](https://github.com/asyncapi/bindings/blob/master/sqs/README.md#message) | Protocol-specific information for an SQS message. -`stomp` | [STOMP Message Binding](https://github.com/asyncapi/bindings/blob/master/stomp/README.md#message) | Protocol-specific information for a STOMP message. -`redis` | [Redis Message Binding](https://github.com/asyncapi/bindings/blob/master/redis#message) | Protocol-specific information for a Redis message. -`mercure` | [Mercure Message Binding](https://github.com/asyncapi/bindings/blob/master/mercure#message) | Protocol-specific information for a Mercure message. -`ibmmq` | [IBM MQ Message Binding](https://github.com/asyncapi/bindings/tree/master/ibmmq#message-binding-object) | Protocol-specific information for an IBM MQ message. - -This object MAY be extended with [Specification Extensions](#specificationExtensions). - - - - - - - -#### Message Object - -Describes a message received on a given channel and operation. - -##### Fixed Fields - -Field Name | Type | Description ----|:---:|--- -messageId | `string` | Unique string used to identify the message. The id MUST be unique among all messages described in the API. The messageId value is **case-sensitive**. Tools and libraries MAY use the messageId to uniquely identify a message, therefore, it is RECOMMENDED to follow common programming naming conventions. -headers | [Schema Object](#schemaObject) | [Reference Object](#referenceObject) | Schema definition of the application headers. Schema MUST be of type "object". It **MUST NOT** define the protocol headers. -payload | `any` | Definition of the message payload. It can be of any type but defaults to [Schema object](#schemaObject). It must match the schema format, including encoding type - e.g Avro should be inlined as either a YAML or JSON object NOT a string to be parsed as YAML or JSON. -correlationId | [Correlation ID Object](#correlationIdObject) | [Reference Object](#referenceObject) | Definition of the correlation ID used for message tracing or matching. -schemaFormat | `string` | A string containing the name of the schema format used to define the message payload. If omitted, implementations should parse the payload as a [Schema object](#schemaObject). When the payload is defined using a `$ref` to a remote file, it is RECOMMENDED the schema format includes the file encoding type to allow implementations to parse the file correctly. E.g., adding `+yaml` if content type is `application/vnd.apache.avro` results in `application/vnd.apache.avro+yaml`.

Check out the [supported schema formats table](#messageObjectSchemaFormatTable) for more information. Custom values are allowed but their implementation is OPTIONAL. A custom value MUST NOT refer to one of the schema formats listed in the [table](#messageObjectSchemaFormatTable). -contentType | `string` | The content type to use when encoding/decoding a message's payload. The value MUST be a specific media type (e.g. `application/json`). When omitted, the value MUST be the one specified on the [defaultContentType](#defaultContentTypeString) field. -name | `string` | A machine-friendly name for the message. -title | `string` | A human-friendly title for the message. -summary | `string` | A short summary of what the message is about. -description | `string` | A verbose explanation of the message. [CommonMark syntax](https://spec.commonmark.org/) can be used for rich text representation. -tags | [Tags Object](#tagsObject) | A list of tags for API documentation control. Tags can be used for logical grouping of messages. -externalDocs | [External Documentation Object](#externalDocumentationObject) | Additional external documentation for this message. -bindings | [Message Bindings Object](#messageBindingsObject) \| [Reference Object](#referenceObject) | A map where the keys describe the name of the protocol and the values describe protocol-specific definitions for the message. -examples | [[Message Example Object](#messageExampleObject)] | List of examples. -traits | [[Message Trait Object](#messageTraitObject) | [Reference Object](#referenceObject)] | A list of traits to apply to the message object. Traits MUST be merged into the message object using the [JSON Merge Patch](https://tools.ietf.org/html/rfc7386) algorithm in the same order they are defined here. The resulting object MUST be a valid [Message Object](#messageObject). - -This object MAY be extended with [Specification Extensions](#specificationExtensions). - -##### Schema formats table - -The following table contains a set of values that every implementation MUST support. - -Name | Allowed values | Notes ----|:---:|--- -[AsyncAPI 2.4.0 Schema Object](#schemaObject) | `application/vnd.aai.asyncapi;version=2.4.0`, `application/vnd.aai.asyncapi+json;version=2.4.0`, `application/vnd.aai.asyncapi+yaml;version=2.4.0` | This is the default when a `schemaFormat` is not provided. -[JSON Schema Draft 07](https://json-schema.org/specification-links.html#draft-7) | `application/schema+json;version=draft-07`, `application/schema+yaml;version=draft-07` | - -The following table contains a set of values that every implementation is RECOMMENDED to support. - -Name | Allowed values | Notes ----|:---:|--- -[Avro 1.9.0 schema](https://avro.apache.org/docs/1.9.0/spec.html#schemas) | `application/vnd.apache.avro;version=1.9.0`, `application/vnd.apache.avro+json;version=1.9.0`, `application/vnd.apache.avro+yaml;version=1.9.0` | -[OpenAPI 3.0.0 Schema Object](https://github.com/OAI/OpenAPI-Specification/blob/master/versions/3.0.0.md#schemaObject) | `application/vnd.oai.openapi;version=3.0.0`, `application/vnd.oai.openapi+json;version=3.0.0`, `application/vnd.oai.openapi+yaml;version=3.0.0` | -[RAML 1.0 data type](https://github.com/raml-org/raml-spec/blob/master/versions/raml-10/raml-10.md/) | `application/raml+yaml;version=1.0` | - - -##### Message Object Example - -```json -{ - "messageId": "userSignup", - "name": "UserSignup", - "title": "User signup", - "summary": "Action to sign a user up.", - "description": "A longer description", - "contentType": "application/json", - "tags": [ - { "name": "user" }, - { "name": "signup" }, - { "name": "register" } - ], - "headers": { - "type": "object", - "properties": { - "correlationId": { - "description": "Correlation ID set by application", - "type": "string" - }, - "applicationInstanceId": { - "description": "Unique identifier for a given instance of the publishing application", - "type": "string" - } - } - }, - "payload": { - "type": "object", - "properties": { - "user": { - "$ref": "#/components/schemas/userCreate" - }, - "signup": { - "$ref": "#/components/schemas/signup" - } - } - }, - "correlationId": { - "description": "Default Correlation ID", - "location": "$message.header#/correlationId" - }, - "traits": [ - { "$ref": "#/components/messageTraits/commonHeaders" } - ], - "examples": [ - { - "name": "SimpleSignup", - "summary": "A simple UserSignup example message", - "headers": { - "correlationId": "my-correlation-id", - "applicationInstanceId": "myInstanceId" - }, - "payload": { - "user": { - "someUserKey": "someUserValue" - }, - "signup": { - "someSignupKey": "someSignupValue" - } - } - } - ] -} -``` - -```yaml -messageId: userSignup -name: UserSignup -title: User signup -summary: Action to sign a user up. -description: A longer description -contentType: application/json -tags: - - name: user - - name: signup - - name: register -headers: - type: object - properties: - correlationId: - description: Correlation ID set by application - type: string - applicationInstanceId: - description: Unique identifier for a given instance of the publishing application - type: string -payload: - type: object - properties: - user: - $ref: "#/components/schemas/userCreate" - signup: - $ref: "#/components/schemas/signup" -correlationId: - description: Default Correlation ID - location: $message.header#/correlationId -traits: - - $ref: "#/components/messageTraits/commonHeaders" -examples: - - name: SimpleSignup - summary: A simple UserSignup example message - headers: - correlationId: my-correlation-id - applicationInstanceId: myInstanceId - payload: - user: - someUserKey: someUserValue - signup: - someSignupKey: someSignupValue -``` - -Example using Avro to define the payload: - -```json -{ - "messageId": "userSignup", - "name": "UserSignup", - "title": "User signup", - "summary": "Action to sign a user up.", - "description": "A longer description", - "tags": [ - { "name": "user" }, - { "name": "signup" }, - { "name": "register" } - ], - "schemaFormat": "application/vnd.apache.avro+json;version=1.9.0", - "payload": { - "$ref": "path/to/user-create.avsc#/UserCreate" - } -} -``` - -```yaml -messageId: userSignup -name: UserSignup -title: User signup -summary: Action to sign a user up. -description: A longer description -tags: - - name: user - - name: signup - - name: register -schemaFormat: 'application/vnd.apache.avro+yaml;version=1.9.0' -payload: - $ref: 'path/to/user-create.avsc/#UserCreate' -``` - - - - - - - -#### Message Trait Object - -Describes a trait that MAY be applied to a [Message Object](#messageObject). This object MAY contain any property from the [Message Object](#messageObject), except `payload` and `traits`. - -If you're looking to apply traits to an operation, see the [Operation Trait Object](#operationTraitObject). - -##### Fixed Fields - -Field Name | Type | Description ----|:---:|--- -messageId | `string` | Unique string used to identify the message. The id MUST be unique among all messages described in the API. The messageId value is **case-sensitive**. Tools and libraries MAY use the messageId to uniquely identify a message, therefore, it is RECOMMENDED to follow common programming naming conventions. -headers | [Schema Object](#schemaObject) | [Reference Object](#referenceObject) | Schema definition of the application headers. Schema MUST be of type "object". It **MUST NOT** define the protocol headers. -correlationId | [Correlation ID Object](#correlationIdObject) | [Reference Object](#referenceObject) | Definition of the correlation ID used for message tracing or matching. -schemaFormat | `string` | A string containing the name of the schema format/language used to define the message payload. If omitted, implementations should parse the payload as a [Schema object](#schemaObject). -contentType | `string` | The content type to use when encoding/decoding a message's payload. The value MUST be a specific media type (e.g. `application/json`). When omitted, the value MUST be the one specified on the [defaultContentType](#defaultContentTypeString) field. -name | `string` | A machine-friendly name for the message. -title | `string` | A human-friendly title for the message. -summary | `string` | A short summary of what the message is about. -description | `string` | A verbose explanation of the message. [CommonMark syntax](https://spec.commonmark.org/) can be used for rich text representation. -tags | [Tags Object](#tagsObject) | A list of tags for API documentation control. Tags can be used for logical grouping of messages. -externalDocs | [External Documentation Object](#externalDocumentationObject) | Additional external documentation for this message. -bindings | [Message Bindings Object](#messageBindingsObject) \| [Reference Object](#referenceObject) | A map where the keys describe the name of the protocol and the values describe protocol-specific definitions for the message. -examples | [[Message Example Object](#messageExampleObject)] | List of examples. - -This object MAY be extended with [Specification Extensions](#specificationExtensions). - -##### Message Trait Object Example - -```json -{ - "schemaFormat": "application/vnd.apache.avro+json;version=1.9.0", - "contentType": "application/json" -} -``` - -```yaml -schemaFormat: 'application/vnd.apache.avro+yaml;version=1.9.0' -contentType: application/json -``` - -#### Message Example Object - -Message Example Object represents an example of a [Message Object](#messageObject) and MUST contain either **headers** and/or **payload** fields. - -##### Fixed Fields - -Field Name | Type | Description ----|:---:|--- -headers | `Map[string, any]` | The value of this field MUST validate against the [Message Object's headers](#messageObjectHeaders) field. -payload | `any` | The value of this field MUST validate against the [Message Object's payload](#messageObjectPayload) field. -name | `string` | A machine-friendly name. -summary | `string` | A short summary of what the example is about. - -This object MAY be extended with [Specification Extensions](#specificationExtensions). - -##### Message Example Object Example - -```json -{ - "name": "SimpleSignup", - "summary": "A simple UserSignup example message", - "headers": { - "correlationId": "my-correlation-id", - "applicationInstanceId": "myInstanceId" - }, - "payload": { - "user": { - "someUserKey": "someUserValue" - }, - "signup": { - "someSignupKey": "someSignupValue" - } - } -} -``` - -```yaml -name: SimpleSignup -summary: A simple UserSignup example message -headers: - correlationId: my-correlation-id - applicationInstanceId: myInstanceId -payload: - user: - someUserKey: someUserValue - signup: - someSignupKey: someSignupValue -``` - -#### Tags Object - -A Tags object is a list of Tag Objects. - -#### Tag Object - -Allows adding meta data to a single tag. - -##### Fixed Fields -Field Name | Type | Description ----|:---:|--- -name | `string` | **REQUIRED.** The name of the tag. -description | `string` | A short description for the tag. [CommonMark syntax](https://spec.commonmark.org/) can be used for rich text representation. -externalDocs | [External Documentation Object](#externalDocumentationObject) | Additional external documentation for this tag. - -This object MAY be extended with [Specification Extensions](#specificationExtensions). - -##### Tag Object Example - -```json -{ - "name": "user", - "description": "User-related messages" -} -``` - -```yaml -name: user -description: User-related messages -``` - - - - - - - -#### External Documentation Object - -Allows referencing an external resource for extended documentation. - -##### Fixed Fields - -Field Name | Type | Description ----|:---:|--- -description | `string` | A short description of the target documentation. [CommonMark syntax](https://spec.commonmark.org/) can be used for rich text representation. -url | `string` | **REQUIRED.** The URL for the target documentation. This MUST be in the form of an absolute URL. - -This object MAY be extended with [Specification Extensions](#specificationExtensions). - -##### External Documentation Object Example - -```json -{ - "description": "Find more info here", - "url": "https://example.com" -} -``` - -```yaml -description: Find more info here -url: https://example.com -``` - -#### Reference Object - -A simple object to allow referencing other components in the specification, internally and externally. - -The Reference Object is defined by [JSON Reference](https://tools.ietf.org/html/draft-pbryan-zyp-json-ref-03) and follows the same structure, behavior and rules. A JSON Reference SHALL only be used to refer to a schema that is formatted in either JSON or YAML. In the case of a YAML-formatted Schema, the JSON Reference SHALL be applied to the JSON representation of that schema. The JSON representation SHALL be made by applying the conversion described [here](#format). - -For this specification, reference resolution is done as defined by the JSON Reference specification and not by the JSON Schema specification. - -##### Fixed Fields -Field Name | Type | Description ----|:---:|--- -$ref | `string` | **REQUIRED.** The reference string. - -This object cannot be extended with additional properties and any properties added SHALL be ignored. - -##### Reference Object Example - -```json -{ - "$ref": "#/components/schemas/Pet" -} -``` - -```yaml - $ref: '#/components/schemas/Pet' -``` - -#### Components Object - -Holds a set of reusable objects for different aspects of the AsyncAPI specification. -All objects defined within the components object will have no effect on the API unless they are explicitly referenced from properties outside the components object. - -##### Fixed Fields - -Field Name | Type | Description ----|:---|--- - schemas | Map[`string`, [Schema Object](#schemaObject) \| [Reference Object](#referenceObject)] | An object to hold reusable [Schema Objects](#schemaObject). - servers | Map[`string`, [Server Object](#serverObject) \| [Reference Object](#referenceObject)] | An object to hold reusable [Server Objects](#serverObject). - serverVariables | Map[`string`, [Server Variable Object](#serverVariableObject) \| [Reference Object](#referenceObject)] | An object to hold reusable [Server Variable Objects](#serverVariableObject). - channels | Map[`string`, [Channel Item Object](#channelItemObject)] | An object to hold reusable [Channel Item Objects](#channelItemObject). - messages | Map[`string`, [Message Object](#messageObject) \| [Reference Object](#referenceObject)] | An object to hold reusable [Message Objects](#messageObject). - securitySchemes| Map[`string`, [Security Scheme Object](#securitySchemeObject) \| [Reference Object](#referenceObject)] | An object to hold reusable [Security Scheme Objects](#securitySchemeObject). - parameters | Map[`string`, [Parameter Object](#parameterObject) \| [Reference Object](#referenceObject)] | An object to hold reusable [Parameter Objects](#parameterObject). - correlationIds | Map[`string`, [Correlation ID Object](#correlationIdObject) \| [Reference Object](#referenceObject)] | An object to hold reusable [Correlation ID Objects](#correlationIdObject). - operationTraits | Map[`string`, [Operation Trait Object](#operationTraitObject) \| [Reference Object](#referenceObject)] | An object to hold reusable [Operation Trait Objects](#operationTraitObject). - messageTraits | Map[`string`, [Message Trait Object](#messageTraitObject) \| [Reference Object](#referenceObject)] | An object to hold reusable [Message Trait Objects](#messageTraitObject). - serverBindings | Map[`string`, [Server Bindings Object](#serverBindingsObject) \| [Reference Object](#referenceObject)] | An object to hold reusable [Server Bindings Objects](#serverBindingsObject). - channelBindings | Map[`string`, [Channel Bindings Object](#channelBindingsObject) \| [Reference Object](#referenceObject)] | An object to hold reusable [Channel Bindings Objects](#channelBindingsObject). - operationBindings | Map[`string`, [Operation Bindings Object](#operationBindingsObject) \| [Reference Object](#referenceObject)] | An object to hold reusable [Operation Bindings Objects](#operationBindingsObject). - messageBindings | Map[`string`, [Message Bindings Object](#messageBindingsObject) \| [Reference Object](#referenceObject)] | An object to hold reusable [Message Bindings Objects](#messageBindingsObject). - -This object MAY be extended with [Specification Extensions](#specificationExtensions). - -All the fixed fields declared above are objects that MUST use keys that match the regular expression: `^[a-zA-Z0-9\.\-_]+$`. - -Field Name Examples: - -``` -User -User_1 -User_Name -user-name -my.org.User -``` - -##### Components Object Example - -```json -{ - "components": { - "schemas": { - "Category": { - "type": "object", - "properties": { - "id": { - "type": "integer", - "format": "int64" - }, - "name": { - "type": "string" - } - } - }, - "Tag": { - "type": "object", - "properties": { - "id": { - "type": "integer", - "format": "int64" - }, - "name": { - "type": "string" - } - } - } - }, - "servers": { - "development": { - "url": "{stage}.gigantic-server.com:{port}", - "description": "Development server", - "protocol": "amqp", - "protocolVersion": "0.9.1", - "variables": { - "stage": { - "$ref": "#/components/serverVariables/stage" - }, - "port": { - "$ref": "#/components/serverVariables/port" - } - } - } - }, - "serverVariables": { - "stage": { - "default": "demo", - "description": "This value is assigned by the service provider, in this example `gigantic-server.com`" - }, - "port": { - "enum": ["8883", "8884"], - "default": "8883" - } - }, - "channels": { - "user/signedup": { - "subscribe": { - "message": { - "$ref": "#/components/messages/userSignUp" - } - } - } - }, - "messages": { - "userSignUp": { - "summary": "Action to sign a user up.", - "description": "Multiline description of what this action does.\nHere you have another line.\n", - "tags": [ - { - "name": "user" - }, - { - "name": "signup" - } - ], - "headers": { - "type": "object", - "properties": { - "applicationInstanceId": { - "description": "Unique identifier for a given instance of the publishing application", - "type": "string" - } - } - }, - "payload": { - "type": "object", - "properties": { - "user": { - "$ref": "#/components/schemas/userCreate" - }, - "signup": { - "$ref": "#/components/schemas/signup" - } - } - } - } - }, - "parameters": { - "userId": { - "description": "Id of the user.", - "schema": { - "type": "string" - } - } - }, - "correlationIds": { - "default": { - "description": "Default Correlation ID", - "location": "$message.header#/correlationId" - } - }, - "messageTraits": { - "commonHeaders": { - "headers": { - "type": "object", - "properties": { - "my-app-header": { - "type": "integer", - "minimum": 0, - "maximum": 100 - } - } - } - } - } - } -} -``` - -```yaml -components: - schemas: - Category: - type: object - properties: - id: - type: integer - format: int64 - name: - type: string - Tag: - type: object - properties: - id: - type: integer - format: int64 - name: - type: string - servers: - development: - url: "{stage}.gigantic-server.com:{port}" - description: Development server - protocol: amqp - protocolVersion: 0.9.1 - variables: - stage: - $ref: "#/components/serverVariables/stage" - port: - $ref: "#/components/serverVariables/port" - serverVariables: - stage: - default: demo - description: This value is assigned by the service provider, in this example `gigantic-server.com` - port: - enum: [8883, 8884] - default: 8883 - channels: - user/signedup: - subscribe: - message: - $ref: "#/components/messages/userSignUp" - messages: - userSignUp: - summary: Action to sign a user up. - description: | - Multiline description of what this action does. - Here you have another line. - tags: - - name: user - - name: signup - headers: - type: object - properties: - applicationInstanceId: - description: Unique identifier for a given instance of the publishing application - type: string - payload: - type: object - properties: - user: - $ref: "#/components/schemas/userCreate" - signup: - $ref: "#/components/schemas/signup" - parameters: - userId: - description: Id of the user. - schema: - type: string - correlationIds: - default: - description: Default Correlation ID - location: $message.header#/correlationId - messageTraits: - commonHeaders: - headers: - type: object - properties: - my-app-header: - type: integer - minimum: 0 - maximum: 100 -``` - -#### Schema Object - -The Schema Object allows the definition of input and output data types. -These types can be objects, but also primitives and arrays. This object is a superset of the [JSON Schema Specification Draft 07](https://json-schema.org/). The empty schema (which allows any instance to validate) MAY be represented by the `boolean` value `true` and a schema which allows no instance to validate MAY be represented by the `boolean` value `false`. - -Further information about the properties can be found in [JSON Schema Core](https://tools.ietf.org/html/draft-handrews-json-schema-01) and [JSON Schema Validation](https://tools.ietf.org/html/draft-handrews-json-schema-validation-01). -Unless stated otherwise, the property definitions follow the JSON Schema specification as referenced here. - -##### Properties - -The AsyncAPI Schema Object is a JSON Schema vocabulary which extends JSON Schema Core and Validation vocabularies. As such, any keyword available for those vocabularies is by definition available in AsyncAPI, and will work the exact same way, including but not limited to: - -- title -- type -- required -- multipleOf -- maximum -- exclusiveMaximum -- minimum -- exclusiveMinimum -- maxLength -- minLength -- pattern (This string SHOULD be a valid regular expression, according to the [ECMA 262 regular expression](https://www.ecma-international.org/ecma-262/5.1/#sec-7.8.5) dialect) -- maxItems -- minItems -- uniqueItems -- maxProperties -- minProperties -- enum -- const -- examples -- if / then / else -- readOnly -- writeOnly -- properties -- patternProperties -- additionalProperties -- additionalItems -- items -- propertyNames -- contains -- allOf -- oneOf -- anyOf -- not - -The following properties are taken from the JSON Schema definition but their definitions were adjusted to the AsyncAPI Specification. - -- description - [CommonMark syntax](https://spec.commonmark.org/) can be used for rich text representation. -- format - See [Data Type Formats](#dataTypeFormat) for further details. While relying on JSON Schema's defined formats, the AsyncAPI Specification offers a few additional predefined formats. -- default - The default value represents what would be assumed by the consumer of the input as the value of the schema if one is not provided. Unlike JSON Schema, the value MUST conform to the defined type for the Schema Object defined at the same level. For example, of `type` is `string`, then `default` can be `"foo"` but cannot be `1`. - -Alternatively, any time a Schema Object can be used, a [Reference Object](#referenceObject) can be used in its place. This allows referencing definitions in place of defining them inline. It is appropriate to clarify that the `$ref` keyword MUST follow the behavior described by [Reference Object](#referenceObject) instead of the one in [JSON Schema definition](https://json-schema.org/understanding-json-schema/structuring.html#ref). - -In addition to the JSON Schema fields, the following AsyncAPI vocabulary fields MAY be used for further schema documentation: - -##### Fixed Fields -Field Name | Type | Description ----|:---:|--- -discriminator | `string` | Adds support for polymorphism. The discriminator is the schema property name that is used to differentiate between other schema that inherit this schema. The property name used MUST be defined at this schema and it MUST be in the `required` property list. When used, the value MUST be the name of this schema or any schema that inherits it. See [Composition and Inheritance](#schemaComposition) for more details. -externalDocs | [External Documentation Object](#externalDocumentationObject) | Additional external documentation for this schema. - deprecated | `boolean` | Specifies that a schema is deprecated and SHOULD be transitioned out of usage. Default value is `false`. - -This object MAY be extended with [Specification Extensions](#specificationExtensions). - -###### Composition and Inheritance (Polymorphism) - -The AsyncAPI Specification allows combining and extending model definitions using the `allOf` property of JSON Schema, in effect offering model composition. -`allOf` takes in an array of object definitions that are validated *independently* but together compose a single object. - -While composition offers model extensibility, it does not imply a hierarchy between the models. -To support polymorphism, AsyncAPI Specification adds the support of the `discriminator` field. -When used, the `discriminator` will be the name of the property used to decide which schema definition is used to validate the structure of the model. -As such, the `discriminator` field MUST be a required field. -There are are two ways to define the value of a discriminator for an inheriting instance. - -- Use the schema's name. -- Override the schema's name by overriding the property with a new value. If exists, this takes precedence over the schema's name. - -As such, inline schema definitions, which do not have a given id, *cannot* be used in polymorphism. - -##### Schema Object Examples - -###### Primitive Sample - -```json -{ - "type": "string", - "format": "email" -} -``` - -```yaml -type: string -format: email -``` - -###### Simple Model - -```json -{ - "type": "object", - "required": [ - "name" - ], - "properties": { - "name": { - "type": "string" - }, - "address": { - "$ref": "#/components/schemas/Address" - }, - "age": { - "type": "integer", - "format": "int32", - "minimum": 0 - } - } -} -``` - -```yaml -type: object -required: -- name -properties: - name: - type: string - address: - $ref: '#/components/schemas/Address' - age: - type: integer - format: int32 - minimum: 0 -``` - -###### Model with Map/Dictionary Properties - -For a simple string to string mapping: - -```json -{ - "type": "object", - "additionalProperties": { - "type": "string" - } -} -``` - -```yaml -type: object -additionalProperties: - type: string -``` - -For a string to model mapping: - -```json -{ - "type": "object", - "additionalProperties": { - "$ref": "#/components/schemas/ComplexModel" - } -} -``` - -```yaml -type: object -additionalProperties: - $ref: '#/components/schemas/ComplexModel' -``` - -###### Model with Example - -```json -{ - "type": "object", - "properties": { - "id": { - "type": "integer", - "format": "int64" - }, - "name": { - "type": "string" - } - }, - "required": [ - "name" - ], - "examples": [ - { - "name": "Puma", - "id": 1 - } - ] -} -``` - -```yaml -type: object -properties: - id: - type: integer - format: int64 - name: - type: string -required: -- name -examples: -- name: Puma - id: 1 -``` - -###### Model with Boolean Schemas - -```json -{ - "type": "object", - "required": [ - "anySchema" - ], - "properties": { - "anySchema": true, - "cannotBeDefined": false - } -} -``` - -```yaml -type: object -required: -- anySchema -properties: - anySchema: true - cannotBeDefined: false -``` - -###### Models with Composition - -```json -{ - "schemas": { - "ErrorModel": { - "type": "object", - "required": [ - "message", - "code" - ], - "properties": { - "message": { - "type": "string" - }, - "code": { - "type": "integer", - "minimum": 100, - "maximum": 600 - } - } - }, - "ExtendedErrorModel": { - "allOf": [ - { - "$ref": "#/components/schemas/ErrorModel" - }, - { - "type": "object", - "required": [ - "rootCause" - ], - "properties": { - "rootCause": { - "type": "string" - } - } - } - ] - } - } -} -``` - -```yaml -schemas: - ErrorModel: - type: object - required: - - message - - code - properties: - message: - type: string - code: - type: integer - minimum: 100 - maximum: 600 - ExtendedErrorModel: - allOf: - - $ref: '#/components/schemas/ErrorModel' - - type: object - required: - - rootCause - properties: - rootCause: - type: string -``` - -###### Models with Polymorphism Support - -```json -{ - "schemas": { - "Pet": { - "type": "object", - "discriminator": "petType", - "properties": { - "name": { - "type": "string" - }, - "petType": { - "type": "string" - } - }, - "required": [ - "name", - "petType" - ] - }, - "Cat": { - "description": "A representation of a cat. Note that `Cat` will be used as the discriminator value.", - "allOf": [ - { - "$ref": "#/components/schemas/Pet" - }, - { - "type": "object", - "properties": { - "huntingSkill": { - "type": "string", - "description": "The measured skill for hunting", - "enum": [ - "clueless", - "lazy", - "adventurous", - "aggressive" - ] - } - }, - "required": [ - "huntingSkill" - ] - } - ] - }, - "Dog": { - "description": "A representation of a dog. Note that `Dog` will be used as the discriminator value.", - "allOf": [ - { - "$ref": "#/components/schemas/Pet" - }, - { - "type": "object", - "properties": { - "packSize": { - "type": "integer", - "format": "int32", - "description": "the size of the pack the dog is from", - "minimum": 0 - } - }, - "required": [ - "packSize" - ] - } - ] - }, - "StickInsect": { - "description": "A representation of an Australian walking stick. Note that `StickBug` will be used as the discriminator value.", - "allOf": [ - { - "$ref": "#/components/schemas/Pet" - }, - { - "type": "object", - "properties": { - "petType": { - "const": "StickBug" - }, - "color": { - "type": "string" - } - }, - "required": [ - "color" - ] - } - ] - } - } -} -``` - -```yaml -schemas: - Pet: - type: object - discriminator: petType - properties: - name: - type: string - petType: - type: string - required: - - name - - petType - ## applies to instances with `petType: "Cat"` - ## because that is the schema name - Cat: - description: A representation of a cat - allOf: - - $ref: '#/components/schemas/Pet' - - type: object - properties: - huntingSkill: - type: string - description: The measured skill for hunting - enum: - - clueless - - lazy - - adventurous - - aggressive - required: - - huntingSkill - ## applies to instances with `petType: "Dog"` - ## because that is the schema name - Dog: - description: A representation of a dog - allOf: - - $ref: '#/components/schemas/Pet' - - type: object - properties: - packSize: - type: integer - format: int32 - description: the size of the pack the dog is from - minimum: 0 - required: - - packSize - ## applies to instances with `petType: "StickBug"` - ## because that is the required value of the discriminator field, - ## overriding the schema name - StickInsect: - description: A representation of an Australian walking stick - allOf: - - $ref: '#/components/schemas/Pet' - - type: object - properties: - petType: - const: StickBug - color: - type: string - required: - - color -``` - - - - - -#### Security Scheme Object - -Defines a security scheme that can be used by the operations. Supported schemes are: - -* User/Password. -* API key (either as user or as password). -* X.509 certificate. -* End-to-end encryption (either symmetric or asymmetric). -* HTTP authentication. -* HTTP API key. -* OAuth2's common flows (Implicit, Resource Owner Protected Credentials, Client Credentials and Authorization Code) as defined in [RFC6749](https://tools.ietf.org/html/rfc6749). -* [OpenID Connect Discovery](https://tools.ietf.org/html/draft-ietf-oauth-discovery-06). -* SASL (Simple Authentication and Security Layer) as defined in [RFC4422](https://tools.ietf.org/html/rfc4422). - -##### Fixed Fields -Field Name | Type | Applies To | Description ----|:---:|---|--- -type | `string` | Any | **REQUIRED**. The type of the security scheme. Valid values are `"userPassword"`, `"apiKey"`, `"X509"`, `"symmetricEncryption"`, `"asymmetricEncryption"`, `"httpApiKey"`, `"http"`, `"oauth2"`, `"openIdConnect"`, `"plain"`, `"scramSha256"`, `"scramSha512"`, and `"gssapi"`. -description | `string` | Any | A short description for security scheme. [CommonMark syntax](https://spec.commonmark.org/) MAY be used for rich text representation. -name | `string` | `httpApiKey` | **REQUIRED**. The name of the header, query or cookie parameter to be used. -in | `string` | `apiKey` \| `httpApiKey` | **REQUIRED**. The location of the API key. Valid values are `"user"` and `"password"` for `apiKey` and `"query"`, `"header"` or `"cookie"` for `httpApiKey`. -scheme | `string` | `http` | **REQUIRED**. The name of the HTTP Authorization scheme to be used in the [Authorization header as defined in RFC7235](https://tools.ietf.org/html/rfc7235#section-5.1). -bearerFormat | `string` | `http` (`"bearer"`) | A hint to the client to identify how the bearer token is formatted. Bearer tokens are usually generated by an authorization server, so this information is primarily for documentation purposes. -flows | [OAuth Flows Object](#oauthFlowsObject) | `oauth2` | **REQUIRED**. An object containing configuration information for the flow types supported. -openIdConnectUrl | `string` | `openIdConnect` | **REQUIRED**. OpenId Connect URL to discover OAuth2 configuration values. This MUST be in the form of an absolute URL. - -This object MAY be extended with [Specification Extensions](#specificationExtensions). - -##### Security Scheme Object Example - -###### User/Password Authentication Sample - -```json -{ - "type": "userPassword" -} -``` - -```yaml -type: userPassword -``` - -###### API Key Authentication Sample - -```json -{ - "type": "apiKey", - "in": "user" -} -``` - -```yaml -type: apiKey, -in: user -``` - -###### X.509 Authentication Sample - -```json -{ - "type": "X509" -} -``` - -```yaml -type: X509 -``` - -###### End-to-end Encryption Authentication Sample - -```json -{ - "type": "symmetricEncryption" -} -``` - -```yaml -type: symmetricEncryption -``` - -###### Basic Authentication Sample - -```json -{ - "type": "http", - "scheme": "basic" -} -``` - -```yaml -type: http -scheme: basic -``` - -###### API Key Sample - -```json -{ - "type": "httpApiKey", - "name": "api_key", - "in": "header" -} -``` - -```yaml -type: httpApiKey -name: api_key -in: header -``` - -###### JWT Bearer Sample - -```json -{ - "type": "http", - "scheme": "bearer", - "bearerFormat": "JWT" -} -``` - -```yaml -type: http -scheme: bearer -bearerFormat: JWT -``` - -###### Implicit OAuth2 Sample - -```json -{ - "type": "oauth2", - "flows": { - "implicit": { - "authorizationUrl": "https://example.com/api/oauth/dialog", - "scopes": { - "write:pets": "modify pets in your account", - "read:pets": "read your pets" - } - } - } -} -``` - -```yaml -type: oauth2 -flows: - implicit: - authorizationUrl: https://example.com/api/oauth/dialog - scopes: - write:pets: modify pets in your account - read:pets: read your pets -``` - -###### SASL Sample - -```json -{ - "type": "scramSha512" -} -``` - -```yaml -type: scramSha512 -``` - -#### OAuth Flows Object - -Allows configuration of the supported OAuth Flows. - -##### Fixed Fields -Field Name | Type | Description ----|:---:|--- -implicit| [OAuth Flow Object](#oauthFlowObject) | Configuration for the OAuth Implicit flow. -password| [OAuth Flow Object](#oauthFlowObject) | Configuration for the OAuth Resource Owner Protected Credentials flow. -clientCredentials| [OAuth Flow Object](#oauthFlowObject) | Configuration for the OAuth Client Credentials flow. -authorizationCode| [OAuth Flow Object](#oauthFlowObject) | Configuration for the OAuth Authorization Code flow. - -This object MAY be extended with [Specification Extensions](#specificationExtensions). - -#### OAuth Flow Object - -Configuration details for a supported OAuth Flow - -##### Fixed Fields -Field Name | Type | Applies To | Description ----|:---:|---|--- -authorizationUrl | `string` | `oauth2` (`"implicit"`, `"authorizationCode"`) | **REQUIRED**. The authorization URL to be used for this flow. This MUST be in the form of an absolute URL. -tokenUrl | `string` | `oauth2` (`"password"`, `"clientCredentials"`, `"authorizationCode"`) | **REQUIRED**. The token URL to be used for this flow. This MUST be in the form of an absolute URL. -refreshUrl | `string` | `oauth2` | The URL to be used for obtaining refresh tokens. This MUST be in the form of an absolute URL. -scopes | Map[`string`, `string`] | `oauth2` | **REQUIRED**. The available scopes for the OAuth2 security scheme. A map between the scope name and a short description for it. - -This object MAY be extended with [Specification Extensions](#specificationExtensions). - -##### OAuth Flow Object Examples - -```JSON -{ - "type": "oauth2", - "flows": { - "implicit": { - "authorizationUrl": "https://example.com/api/oauth/dialog", - "scopes": { - "write:pets": "modify pets in your account", - "read:pets": "read your pets" - } - }, - "authorizationCode": { - "authorizationUrl": "https://example.com/api/oauth/dialog", - "tokenUrl": "https://example.com/api/oauth/token", - "scopes": { - "write:pets": "modify pets in your account", - "read:pets": "read your pets" - } - } - } -} -``` - -```YAML -type: oauth2 -flows: - implicit: - authorizationUrl: https://example.com/api/oauth/dialog - scopes: - write:pets: modify pets in your account - read:pets: read your pets - authorizationCode: - authorizationUrl: https://example.com/api/oauth/dialog - tokenUrl: https://example.com/api/oauth/token - scopes: - write:pets: modify pets in your account - read:pets: read your pets -``` - -#### Security Requirement Object - -Lists the required security schemes to execute this operation. -The name used for each property MUST correspond to a security scheme declared in the [Security Schemes](#componentsSecuritySchemes) under the [Components Object](#componentsObject). - -When a list of Security Requirement Objects is defined on a [Server object](#serverObject), only one of the Security Requirement Objects in the list needs to be satisfied to authorize the connection. - -##### Patterned Fields - -Field Pattern | Type | Description ----|:---:|--- -{name} | [`string`] | Each name MUST correspond to a security scheme which is declared in the [Security Schemes](#componentsSecuritySchemes) under the [Components Object](#componentsObject). If the security scheme is of type `"oauth2"` or `"openIdConnect"`, then the value is a list of scope names. Provide scopes that are required to establish successful connection with the server. If scopes are not needed, the list can be empty. For other security scheme types, the array MUST be empty. - -##### Security Requirement Object Examples - -###### User/Password Security Requirement - -```json -{ - "user_pass": [] -} -``` - -```yaml -user_pass: [] -``` - -###### API Key Security Requirement - -```json -{ - "api_key": [] -} -``` - -```yaml -api_key: [] -``` - -###### OAuth2 Security Requirement - -```json -{ - "petstore_auth": [ - "write:pets", - "read:pets" - ] -} -``` - -```yaml -petstore_auth: -- write:pets -- read:pets -``` - -### Correlation ID Object - -An object that specifies an identifier at design time that can used for message tracing and correlation. - -For specifying and computing the location of a Correlation ID, a [runtime expression](#runtimeExpression) is used. - -##### Fixed Fields - -Field Name | Type | Description ----|:---|--- -description | `string` | An optional description of the identifier. [CommonMark syntax](https://spec.commonmark.org/) can be used for rich text representation. -location | `string` | **REQUIRED.** A [runtime expression](#runtimeExpression) that specifies the location of the correlation ID. - -This object MAY be extended with [Specification Extensions](#specificationExtensions). - -##### Examples - -```json -{ - "description": "Default Correlation ID", - "location": "$message.header#/correlationId" -} -``` - -```yaml -description: Default Correlation ID -location: $message.header#/correlationId -``` - -### Runtime Expression - -A runtime expression allows values to be defined based on information that will be available within the message. -This mechanism is used by [Correlation ID Object](#correlationIdObject). - -The runtime expression is defined by the following [ABNF](https://tools.ietf.org/html/rfc5234) syntax: - -``` - expression = ( "$message" "." source ) - source = ( header-reference | payload-reference ) - header-reference = "header" ["#" fragment] - payload-reference = "payload" ["#" fragment] - fragment = a JSON Pointer [RFC 6901](https://tools.ietf.org/html/rfc6901) -``` - -The table below provides examples of runtime expressions and examples of their use in a value: - -##### Examples - -Source Location | Example expression | Notes ----|:---|:---| -Message Header Property | `$message.header#/MQMD/CorrelId` | Correlation ID is set using the `CorrelId` value from the `MQMD` header. -Message Payload Property | `$message.payload#/messageId` | Correlation ID is set using the `messageId` value from the message payload. - -Runtime expressions preserve the type of the referenced value. - -### Specification Extensions - -While the AsyncAPI Specification tries to accommodate most use cases, additional data can be added to extend the specification at certain points. - -The extensions properties are implemented as patterned fields that are always prefixed by `"x-"`. - -Field Pattern | Type | Description ----|:---:|--- -`^x-[\w\d\-\_]+$` | Any | Allows extensions to the AsyncAPI Schema. The field name MUST begin with `x-`, for example, `x-internal-id`. The value can be `null`, a primitive, an array or an object. Can have any valid JSON format value. - -The extensions may or may not be supported by the available tooling, but those may be extended as well to add requested support (if tools are internal or open-sourced). - -### Data Type Formats - -Primitives have an optional modifier property: `format`. -The AsyncAPI specification uses several known formats to more finely define the data type being used. -However, the `format` property is an open `string`-valued property, and can have any value to support documentation needs. -Formats such as `"email"`, `"uuid"`, etc., can be used even though they are not defined by this specification. -Types that are not accompanied by a `format` property follow their definition from the JSON Schema. -Tools that do not recognize a specific `format` MAY default back to the `type` alone, as if the `format` was not specified. - -The formats defined by the AsyncAPI Specification are: - - -Common Name | `type` | [`format`](#dataTypeFormat) | Comments ------------ | ------ | -------- | -------- -integer | `integer` | `int32` | signed 32 bits -long | `integer` | `int64` | signed 64 bits -float | `number` | `float` | | -double | `number` | `double` | | -string | `string` | | | -byte | `string` | `byte` | base64 encoded characters -binary | `string` | `binary` | any sequence of octets -boolean | `boolean` | | | -date | `string` | `date` | As defined by `full-date` - [RFC3339](https://www.rfc-editor.org/rfc/rfc3339#section-5) -dateTime | `string` | `date-time` | As defined by `date-time` - [RFC3339](https://www.rfc-editor.org/rfc/rfc3339#section-5) -password | `string` | `password` | Used to hint UIs the input needs to be obscured. diff --git a/pages/docs/reference/specification/v2.5.0.md b/pages/docs/reference/specification/v2.5.0.md deleted file mode 100644 index 5d45dfaf2bf..00000000000 --- a/pages/docs/reference/specification/v2.5.0.md +++ /dev/null @@ -1,2543 +0,0 @@ -# AsyncAPI Specification - -#### Disclaimer - -Part of this content has been taken from the great work done by the folks at the [OpenAPI Initiative](https://openapis.org). Mainly because **it's a great work** and we want to keep as much compatibility as possible with the [OpenAPI Specification](https://github.com/OAI/OpenAPI-Specification). - -#### Version 2.5.0 - -The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this document are to be interpreted as described in [RFC 2119](https://www.ietf.org/rfc/rfc2119.txt). - -The AsyncAPI Specification is licensed under [The Apache License, Version 2.0](https://www.apache.org/licenses/LICENSE-2.0.html). - -## Introduction - -The AsyncAPI Specification is a project used to describe and document message-driven APIs in a machine-readable format. It’s protocol-agnostic, so you can use it for APIs that work over any protocol (e.g., AMQP, MQTT, WebSockets, Kafka, STOMP, HTTP, Mercure, etc). - -The AsyncAPI Specification defines a set of files required to describe such an API. -These files can then be used to create utilities, such as documentation, integration and/or testing tools. - -The file(s) MUST describe the operations an [application](#definitionsApplication) accepts. For instance, consider the following AsyncAPI definition snippet: - -```yaml -user/signedup: - subscribe: - message: - $ref: "#/components/messages/userSignUp" -``` - -It means that the [application](#definitionsApplication) allows [consumers](#definitionsConsumer) to subscribe to the `user/signedup` [channel](#definitionsChannel) to receive userSignUp [messages](#definitionsMessage) produced by the application. - -**The AsyncAPI specification does not assume any kind of software topology, architecture or pattern.** Therefore, a server MAY be a message broker, a web server or any other kind of computer program capable of sending and/or receiving data. However, AsyncAPI offers a mechanism called "bindings" that aims to help with more specific information about the protocol. - - -## Definitions - -#### Server -A server MAY be a message broker that is capable of sending and/or receiving between a [producer](#definitionsProducer) and [consumer](#definitionsConsumer). A server MAY be a service with WebSocket API that enables message-driven communication between browser-to-server or server-to-server. - -#### Application -An application is any kind of computer program or a group of them. It MUST be a [producer](#definitionsProducer), a [consumer](#definitionsConsumer) or both. An application MAY be a microservice, IoT device (sensor), mainframe process, etc. An application MAY be written in any number of different programming languages as long as they support the selected [protocol](#definitionsProtocol). An application MUST also use a protocol supported by the [server](#definitionsServer) in order to connect and exchange [messages](#definitionsMessage). - -#### Producer -A producer is a type of application, connected to a [server](#definitionsServer), that is creating [messages](#definitionsMessage) and addressing them to [channels](#definitionsChannel). A producer MAY be publishing to multiple channels depending on the [server](#definitionsServer), protocol, and use-case pattern. - -#### Consumer -A consumer is a type of application, connected to a [server](#definitionsServer) via a supported [protocol](#definitionsProtocol), that is consuming [messages](#definitionsMessage) from [channels](#definitionsChannel). A consumer MAY be consuming from multiple channels depending on the [server](#definitionsServer), protocol, and the use-case pattern. - -#### Message -A message is the mechanism by which information is exchanged via a channel between [servers](#definitionsServer) and applications. A message MUST contain a payload and MAY also contain headers. The headers MAY be subdivided into [protocol](#definitionsProtocol)-defined headers and header properties defined by the application which can act as supporting metadata. The payload contains the data, defined by the application, which MUST be serialized into a format (JSON, XML, Avro, binary, etc.). Since a message is a generic mechanism, it can support multiple interaction patterns such as event, command, request, or response. - -#### Channel -A channel is an addressable component, made available by the [server](#definitionsServer), for the organization of [messages](#definitionsMessage). [Producer](#definitionsProducer) applications send messages to channels and [consumer](#definitionsConsumer) applications consume messages from channels. [Servers](#definitionsServer) MAY support many channel instances, allowing messages with different content to be addressed to different channels. Depending on the [server](#definitionsServer) implementation, the channel MAY be included in the message via protocol-defined headers. - -#### Protocol -A protocol is the mechanism (wireline protocol or API) by which [messages](#definitionsMessage) are exchanged between the application and the [channel](#definitionsChannel). Example protocols include, but are not limited to, AMQP, HTTP, JMS, Kafka, Anypoint MQ, MQTT, Solace, STOMP, Mercure, WebSocket, Google Pub/Sub. - -#### Bindings -A "binding" (or "protocol binding") is a mechanism to define protocol-specific information. Therefore, a protocol binding MUST define protocol-specific information only. - -## Specification - -### Format - -The files describing the message-driven API in accordance with the AsyncAPI Specification are represented as JSON objects and conform to the JSON standards. -YAML, being a superset of JSON, can be used as well to represent a A2S (AsyncAPI Specification) file. - -For example, if a field is said to have an array value, the JSON array representation will be used: - -```yaml -{ - "field" : [...] -} -``` - -While the API is described using JSON it does not impose a JSON input/output to the API itself. - -All field names in the specification are **case sensitive**. - -The schema exposes two types of fields. -Fixed fields, which have a declared name, and Patterned fields, which declare a regex pattern for the field name. -Patterned fields can have multiple occurrences as long as each has a unique name. - -In order to preserve the ability to round-trip between YAML and JSON formats, YAML version [1.2](https://www.yaml.org/spec/1.2/spec.html) is recommended along with some additional constraints: - -- Tags MUST be limited to those allowed by the [JSON Schema ruleset](https://www.yaml.org/spec/1.2/spec.html#id2803231) -- Keys used in YAML maps MUST be limited to a scalar string, as defined by the YAML Failsafe schema ruleset - -### File Structure - -An AsyncAPI document MAY be made up of a single document or be divided into multiple, -connected parts at the discretion of the author. In the latter case, [Reference Objects](#referenceObject) are used. - -By convention, the AsyncAPI Specification (A2S) file is named `asyncapi.json` or `asyncapi.yaml`. - -### Absolute URLs - -Unless specified otherwise, all properties that are absolute URLs are defined by [RFC3986, section 4.3](https://datatracker.ietf.org/doc/html/rfc3986#section-4.3). - -### Schema - -#### AsyncAPI Object - -This is the root document object for the API specification. -It combines resource listing and API declaration together into one document. - -##### Fixed Fields - -Field Name | Type | Description ----|:---:|--- -asyncapi | [AsyncAPI Version String](#A2SVersionString) | **REQUIRED.** Specifies the AsyncAPI Specification version being used. It can be used by tooling Specifications and clients to interpret the version. The structure shall be `major`.`minor`.`patch`, where `patch` versions _must_ be compatible with the existing `major`.`minor` tooling. Typically patch versions will be introduced to address errors in the documentation, and tooling should typically be compatible with the corresponding `major`.`minor` (1.0.*). Patch versions will correspond to patches of this document. -id | [Identifier](#A2SIdString) | Identifier of the [application](#definitionsApplication) the AsyncAPI document is defining. -info | [Info Object](#infoObject) | **REQUIRED.** Provides metadata about the API. The metadata can be used by the clients if needed. -servers | [Servers Object](#serversObject) | Provides connection details of servers. -defaultContentType | [Default Content Type](#defaultContentTypeString) | Default content type to use when encoding/decoding a message's payload. -channels | [Channels Object](#channelsObject) | **REQUIRED** The available channels and messages for the API. -components | [Components Object](#componentsObject) | An element to hold various schemas for the specification. -tags | [Tags Object](#tagsObject) | A list of tags used by the specification with additional metadata. Each tag name in the list MUST be unique. -externalDocs | [External Documentation Object](#externalDocumentationObject) | Additional external documentation. - - -This object MAY be extended with [Specification Extensions](#specificationExtensions). - -#### AsyncAPI Version String - -The version string signifies the version of the AsyncAPI Specification that the document complies to. -The format for this string _must_ be `major`.`minor`.`patch`. The `patch` _may_ be suffixed by a hyphen and extra alphanumeric characters. - -A `major`.`minor` shall be used to designate the AsyncAPI Specification version, and will be considered compatible with the AsyncAPI Specification specified by that `major`.`minor` version. -The patch version will not be considered by tooling, making no distinction between `1.0.0` and `1.0.1`. - -In subsequent versions of the AsyncAPI Specification, care will be given such that increments of the `minor` version should not interfere with operations of tooling developed to a lower minor version. Thus a hypothetical `1.1.0` specification should be usable with tooling designed for `1.0.0`. - -#### Identifier - -This field represents a unique universal identifier of the [application](#definitionsApplication) the AsyncAPI document is defining. It must conform to the URI format, according to [RFC3986](https://tools.ietf.org/html/rfc3986). - -It is RECOMMENDED to use a [URN](https://tools.ietf.org/html/rfc8141) to globally and uniquely identify the application during long periods of time, even after it becomes unavailable or ceases to exist. - -###### Examples - -```json -{ - "id": "urn:example:com:smartylighting:streetlights:server" -} -``` - -```yaml -id: 'urn:example:com:smartylighting:streetlights:server' -``` - -```json -{ - "id": "https://github.com/smartylighting/streetlights-server" -} -``` - -```yaml -id: 'https://github.com/smartylighting/streetlights-server' -``` - -#### Info Object - -The object provides metadata about the API. -The metadata can be used by the clients if needed. - -##### Fixed Fields - -Field Name | Type | Description ----|:---:|--- -title | `string` | **REQUIRED.** The title of the application. -version | `string` | **REQUIRED** Provides the version of the application API (not to be confused with the specification version). -description | `string` | A short description of the application. [CommonMark syntax](https://spec.commonmark.org/) can be used for rich text representation. -termsOfService | `string` | A URL to the Terms of Service for the API. This MUST be in the form of an absolute URL. -contact | [Contact Object](#contactObject) | The contact information for the exposed API. -license | [License Object](#licenseObject) | The license information for the exposed API. - -This object MAY be extended with [Specification Extensions](#specificationExtensions). - -##### Info Object Example: - -```json -{ - "title": "AsyncAPI Sample App", - "description": "This is a sample server.", - "termsOfService": "https://asyncapi.org/terms/", - "contact": { - "name": "API Support", - "url": "https://www.asyncapi.org/support", - "email": "support@asyncapi.org" - }, - "license": { - "name": "Apache 2.0", - "url": "https://www.apache.org/licenses/LICENSE-2.0.html" - }, - "version": "1.0.1" -} -``` - -```yaml -title: AsyncAPI Sample App -description: This is a sample server. -termsOfService: https://asyncapi.org/terms/ -contact: - name: API Support - url: https://www.asyncapi.org/support - email: support@asyncapi.org -license: - name: Apache 2.0 - url: https://www.apache.org/licenses/LICENSE-2.0.html -version: 1.0.1 -``` - -#### Contact Object - -Contact information for the exposed API. - -##### Fixed Fields - -Field Name | Type | Description ----|:---:|--- -name | `string` | The identifying name of the contact person/organization. -url | `string` | The URL pointing to the contact information. This MUST be in the form of an absolute URL. -email | `string` | The email address of the contact person/organization. MUST be in the format of an email address. - -This object MAY be extended with [Specification Extensions](#specificationExtensions). - -##### Contact Object Example: - -```json -{ - "name": "API Support", - "url": "https://www.example.com/support", - "email": "support@example.com" -} -``` - -```yaml -name: API Support -url: https://www.example.com/support -email: support@example.com -``` - -#### License Object - -License information for the exposed API. - -##### Fixed Fields - -Field Name | Type | Description ----|:---:|--- -name | `string` | **REQUIRED.** The license name used for the API. -url | `string` | A URL to the license used for the API. This MUST be in the form of an absolute URL. - -This object MAY be extended with [Specification Extensions](#specificationExtensions). - -##### License Object Example: - -```json -{ - "name": "Apache 2.0", - "url": "https://www.apache.org/licenses/LICENSE-2.0.html" -} -``` - -```yaml -name: Apache 2.0 -url: https://www.apache.org/licenses/LICENSE-2.0.html -``` - -#### Servers Object - -The Servers Object is a map of [Server Objects](#serverObject). - -##### Patterned Fields - -Field Pattern | Type | Description ----|:---:|--- -`^[A-Za-z0-9_\-]+$` | [Server Object](#serverObject) \| [Reference Object](#referenceObject) | The definition of a server this application MAY connect to. - -##### Servers Object Example - -```json -{ - "production": { - "url": "development.gigantic-server.com", - "description": "Development server", - "protocol": "kafka", - "protocolVersion": "1.0.0" - } -} -``` - -```yaml -production: - url: development.gigantic-server.com - description: Development server - protocol: kafka - protocolVersion: '1.0.0' -``` - - -#### Server Object - -An object representing a message broker, a server or any other kind of computer program capable of sending and/or receiving data. This object is used to capture details such as URIs, protocols and security configuration. Variable substitution can be used so that some details, for example usernames and passwords, can be injected by code generation tools. - -##### Fixed Fields - -Field Name | Type | Description ----|:---:|--- -url | `string` | **REQUIRED**. A URL to the target host. This URL supports Server Variables and MAY be relative, to indicate that the host location is relative to the location where the AsyncAPI document is being served. Variable substitutions will be made when a variable is named in `{`braces`}`. -protocol | `string` | **REQUIRED**. The protocol this URL supports for connection. Supported protocol include, but are not limited to: `amqp`, `amqps`, `http`, `https`, `ibmmq`, `jms`, `kafka`, `kafka-secure`, `anypointmq`, `mqtt`, `secure-mqtt`, `solace`, `stomp`, `stomps`, `ws`, `wss`, `mercure`, `googlepubsub`. -protocolVersion | `string` | The version of the protocol used for connection. For instance: AMQP `0.9.1`, HTTP `2.0`, Kafka `1.0.0`, etc. -description | `string` | An optional string describing the host designated by the URL. [CommonMark syntax](https://spec.commonmark.org/) MAY be used for rich text representation. -variables | Map[`string`, [Server Variable Object](#serverVariableObject) \| [Reference Object](#referenceObject)]] | A map between a variable name and its value. The value is used for substitution in the server's URL template. -security | [[Security Requirement Object](#securityRequirementObject)] | A declaration of which security mechanisms can be used with this server. The list of values includes alternative security requirement objects that can be used. Only one of the security requirement objects need to be satisfied to authorize a connection or operation. -tags | [Tags Object](#tagsObject) | A list of tags for logical grouping and categorization of servers. -bindings | [Server Bindings Object](#serverBindingsObject) \| [Reference Object](#referenceObject) | A map where the keys describe the name of the protocol and the values describe protocol-specific definitions for the server. - -This object MAY be extended with [Specification Extensions](#specificationExtensions). - -##### Server Object Example - -A single server would be described as: - -```json -{ - "url": "development.gigantic-server.com", - "description": "Development server", - "protocol": "kafka", - "protocolVersion": "1.0.0" -} -``` - -```yaml -url: development.gigantic-server.com -description: Development server -protocol: kafka -protocolVersion: '1.0.0' -``` - -The following shows how multiple servers can be described, for example, at the AsyncAPI Object's [`servers`](#A2SServers): - -```json -{ - "servers": { - "development": { - "url": "development.gigantic-server.com", - "description": "Development server", - "protocol": "amqp", - "protocolVersion": "0.9.1", - "tags": [ - { - "name": "env:development", - "description": "This environment is meant for developers to run their own tests" - } - ] - }, - "staging": { - "url": "staging.gigantic-server.com", - "description": "Staging server", - "protocol": "amqp", - "protocolVersion": "0.9.1", - "tags": [ - { - "name": "env:staging", - "description": "This environment is a replica of the production environment" - } - ] - }, - "production": { - "url": "api.gigantic-server.com", - "description": "Production server", - "protocol": "amqp", - "protocolVersion": "0.9.1", - "tags": [ - { - "name": "env:production", - "description": "This environment is the live environment available for final users" - } - ] - } - } -} -``` - -```yaml -servers: - development: - url: development.gigantic-server.com - description: Development server - protocol: amqp - protocolVersion: 0.9.1 - tags: - - name: "env:development" - description: "This environment is meant for developers to run their own tests" - staging: - url: staging.gigantic-server.com - description: Staging server - protocol: amqp - protocolVersion: 0.9.1 - tags: - - name: "env:staging" - description: "This environment is a replica of the production environment" - production: - url: api.gigantic-server.com - description: Production server - protocol: amqp - protocolVersion: 0.9.1 - tags: - - name: "env:production" - description: "This environment is the live environment available for final users" -``` - -The following shows how variables can be used for a server configuration: - -```json -{ - "servers": { - "production": { - "url": "{username}.gigantic-server.com:{port}/{basePath}", - "description": "The production API server", - "protocol": "secure-mqtt", - "variables": { - "username": { - "default": "demo", - "description": "This value is assigned by the service provider, in this example `gigantic-server.com`" - }, - "port": { - "enum": [ - "8883", - "8884" - ], - "default": "8883" - }, - "basePath": { - "default": "v2" - } - } - } - } -} -``` - -```yaml -servers: - production: - url: '{username}.gigantic-server.com:{port}/{basePath}' - description: The production API server - protocol: secure-mqtt - variables: - username: - # note! no enum here means it is an open value - default: demo - description: This value is assigned by the service provider, in this example `gigantic-server.com` - port: - enum: - - '8883' - - '8884' - default: '8883' - basePath: - # open meaning there is the opportunity to use special base paths as assigned by the provider, default is `v2` - default: v2 -``` - - -#### Server Variable Object - -An object representing a Server Variable for server URL template substitution. - -##### Fixed Fields - -Field Name | Type | Description ----|:---:|--- -enum | [`string`] | An enumeration of string values to be used if the substitution options are from a limited set. -default | `string` | The default value to use for substitution, and to send, if an alternate value is _not_ supplied. -description | `string` | An optional description for the server variable. [CommonMark syntax](https://spec.commonmark.org/) MAY be used for rich text representation. -examples | [`string`] | An array of examples of the server variable. - -This object MAY be extended with [Specification Extensions](#specificationExtensions). - - - - - -#### Default Content Type - -A string representing the default content type to use when encoding/decoding a message's payload. The value MUST be a specific media type (e.g. `application/json`). This value MUST be used by schema parsers when the [contentType](#messageObjectContentType) property is omitted. - -In case a message can't be encoded/decoded using this value, schema parsers MUST use their default content type. - -##### Default Content Type Example - -```json -{ - "defaultContentType": "application/json" -} -``` - -```yaml -defaultContentType: application/json -``` - - - - - - -#### Channels Object - -Holds the relative paths to the individual channel and their operations. Channel paths are relative to servers. - -Channels are also known as "topics", "routing keys", "event types" or "paths". - -##### Patterned Fields - -Field Pattern | Type | Description ----|:---:|--- -{channel} | [Channel Item Object](#channelItemObject) | A relative path to an individual channel. The field name MUST be in the form of a [RFC 6570 URI template](https://tools.ietf.org/html/rfc6570). Query parameters and fragments SHALL NOT be used, instead use [bindings](#channelBindingsObject) to define them. - -##### Channels Object Example - -```json -{ - "user/signedup": { - "subscribe": { - "message": { - "$ref": "#/components/messages/userSignedUp" - } - } - } -} -``` - -```yaml -user/signedup: - subscribe: - message: - $ref: "#/components/messages/userSignedUp" -``` - - - - -#### Channel Item Object - -Describes the operations available on a single channel. - -##### Fixed Fields - -Field Name | Type | Description ----|:---:|--- -$ref | `string` | Allows for a referenced definition of this channel item. The referenced structure MUST be in the form of a [Channel Item Object](#channelItemObject). In case a Channel Item Object field appears both in the defined object and the referenced object, the behavior is *undefined*. Resolution is done as defined by the [JSON Reference](https://tools.ietf.org/html/draft-pbryan-zyp-json-ref-03).

**Deprecated:** Usage of the `$ref` property has been deprecated. -description | `string` | An optional description of this channel item. [CommonMark syntax](https://spec.commonmark.org/) can be used for rich text representation. -servers | [`string`] | The servers on which this channel is available, specified as an optional unordered list of names (string keys) of [Server Objects](#serverObject) defined in the [Servers Object](#serversObject) (a map). If `servers` is absent or empty then this channel must be available on all servers defined in the [Servers Object](#serversObject). -subscribe | [Operation Object](#operationObject) | A definition of the SUBSCRIBE operation, which defines the messages produced by the application and sent to the channel. -publish | [Operation Object](#operationObject) | A definition of the PUBLISH operation, which defines the messages consumed by the application from the channel. -parameters | [Parameters Object](#parametersObject) | A map of the parameters included in the channel name. It SHOULD be present only when using channels with expressions (as defined by [RFC 6570 section 2.2](https://tools.ietf.org/html/rfc6570#section-2.2)). -bindings | [Channel Bindings Object](#channelBindingsObject) \| [Reference Object](#referenceObject) | A map where the keys describe the name of the protocol and the values describe protocol-specific definitions for the channel. - -This object MAY be extended with [Specification Extensions](#specificationExtensions). - -##### Channel Item Object Example - -```json -{ - "description": "This channel is used to exchange messages about users signing up", - "subscribe": { - "summary": "A user signed up.", - "message": { - "description": "A longer description of the message", - "payload": { - "type": "object", - "properties": { - "user": { - "$ref": "#/components/schemas/user" - }, - "signup": { - "$ref": "#/components/schemas/signup" - } - } - } - } - }, - "bindings": { - "amqp": { - "is": "queue", - "queue": { - "exclusive": true - } - } - } -} -``` - -```yaml -description: This channel is used to exchange messages about users signing up -subscribe: - summary: A user signed up. - message: - description: A longer description of the message - payload: - type: object - properties: - user: - $ref: "#/components/schemas/user" - signup: - $ref: "#/components/schemas/signup" -bindings: - amqp: - is: queue - queue: - exclusive: true -``` - -Using `oneOf` to specify multiple messages per operation: - -```json -{ - "subscribe": { - "message": { - "oneOf": [ - { "$ref": "#/components/messages/signup" }, - { "$ref": "#/components/messages/login" } - ] - } - } -} -``` - -```yaml -subscribe: - message: - oneOf: - - $ref: '#/components/messages/signup' - - $ref: '#/components/messages/login' -``` - - -Using explicit by-name references to the servers on which the channel is available: - -```json -{ - "description": "This application publishes WebUICommand messages to an AMQP queue on RabbitMQ brokers in the Staging and Production environments.", - "servers": [ - "rabbitmqBrokerInProd", - "rabbitmqBrokerInStaging", - ], - "subscribe": { - "message": { - "$ref": "#/components/messages/WebUICommand" - } - }, - "bindings": { - "amqp": { - "is": "queue" - } - } -} -``` - -```yaml -description: This application publishes WebUICommand messages to an AMQP queue on RabbitMQ brokers in the Staging and Production environments. -servers: - - rabbitmqBrokerInProd - - rabbitmqBrokerInStaging -subscribe: - message: - $ref: "#/components/messages/WebUICommand" -bindings: - amqp: - is: queue -``` - - - - - -#### Operation Object - -Describes a publish or a subscribe operation. This provides a place to document how and why messages are sent and received. - -For example, an operation might describe a chat application use case where a user sends a text message to a group. A publish operation describes messages that are received by the chat application, whereas a subscribe operation describes messages that are sent by the chat application. - -##### Fixed Fields - -Field Name | Type | Description ----|:---:|--- -operationId | `string` | Unique string used to identify the operation. The id MUST be unique among all operations described in the API. The operationId value is **case-sensitive**. Tools and libraries MAY use the operationId to uniquely identify an operation, therefore, it is RECOMMENDED to follow common programming naming conventions. -summary | `string` | A short summary of what the operation is about. -description | `string` | A verbose explanation of the operation. [CommonMark syntax](http://spec.commonmark.org/) can be used for rich text representation. -security | [[Security Requirement Object](#securityRequirementObject)]| A declaration of which security mechanisms are associated with this operation. Only one of the security requirement objects MUST be satisfied to authorize an operation. In cases where Server Security also applies, it MUST also be satisfied. -tags | [Tags Object](#tagsObject) | A list of tags for logical grouping and categorization of operations. -externalDocs | [External Documentation Object](#externalDocumentationObject) | Additional external documentation for this operation. -bindings | [Operation Bindings Object](#operationBindingsObject) \| [Reference Object](#referenceObject) | A map where the keys describe the name of the protocol and the values describe protocol-specific definitions for the operation. -traits | [[Operation Trait Object](#operationTraitObject) | [Reference Object](#referenceObject) ] | A list of traits to apply to the operation object. Traits MUST be merged into the operation object using the [JSON Merge Patch](https://tools.ietf.org/html/rfc7386) algorithm in the same order they are defined here. -message | [Message Object](#messageObject) | [Reference Object](#referenceObject) | Map["oneOf", [[Message Object](#messageObject) | [Reference Object](#referenceObject)]] | A definition of the message that will be published or received by this operation. Map containing a single `oneOf` key is allowed here to specify multiple messages. However, **a message MUST be valid only against one of the message objects.** - -This object MAY be extended with [Specification Extensions](#specificationExtensions). - -##### Operation Object Example - -```json -{ - "operationId": "registerUser", - "summary": "Action to sign a user up.", - "description": "A longer description", - "security": [ - { - "petstore_auth": [ - "write:pets", - "read:pets" - ] - } - ], - "tags": [ - { "name": "user" }, - { "name": "signup" }, - { "name": "register" } - ], - "message": { - "headers": { - "type": "object", - "properties": { - "applicationInstanceId": { - "description": "Unique identifier for a given instance of the publishing application", - "type": "string" - } - } - }, - "payload": { - "type": "object", - "properties": { - "user": { - "$ref": "#/components/schemas/userCreate" - }, - "signup": { - "$ref": "#/components/schemas/signup" - } - } - } - }, - "bindings": { - "amqp": { - "ack": false - } - }, - "traits": [ - { "$ref": "#/components/operationTraits/kafka" } - ] -} -``` - -```yaml -operationId: registerUser -summary: Action to sign a user up. -description: A longer description -security: - - petstore_auth: - - write:pets - - read:pets -tags: - - name: user - - name: signup - - name: register -message: - headers: - type: object - properties: - applicationInstanceId: - description: Unique identifier for a given instance of the publishing application - type: string - payload: - type: object - properties: - user: - $ref: "#/components/schemas/userCreate" - signup: - $ref: "#/components/schemas/signup" -bindings: - amqp: - ack: false -traits: - - $ref: "#/components/operationTraits/kafka" -``` - - - - -#### Operation Trait Object - -Describes a trait that MAY be applied to an [Operation Object](#operationObject). This object MAY contain any property from the [Operation Object](#operationObject), except `message` and `traits`. - -If you're looking to apply traits to a message, see the [Message Trait Object](#messageTraitObject). - -##### Fixed Fields - -Field Name | Type | Description ----|:---:|--- -operationId | `string` | Unique string used to identify the operation. The id MUST be unique among all operations described in the API. The operationId value is **case-sensitive**. Tools and libraries MAY use the operationId to uniquely identify an operation, therefore, it is RECOMMENDED to follow common programming naming conventions. -summary | `string` | A short summary of what the operation is about. -description | `string` | A verbose explanation of the operation. [CommonMark syntax](https://spec.commonmark.org/) can be used for rich text representation. -security | [[Security Requirement Object](#securityRequirementObject)]| A declaration of which security mechanisms are associated with this operation. Only one of the security requirement objects MUST be satisfied to authorize an operation. In cases where Server Security also applies, it MUST also be satisfied. -tags | [Tags Object](#tagsObject) | A list of tags for logical grouping and categorization of operations. -externalDocs | [External Documentation Object](#externalDocumentationObject) | Additional external documentation for this operation. -bindings | [Operation Bindings Object](#operationBindingsObject) \| [Reference Object](#referenceObject) | A map where the keys describe the name of the protocol and the values describe protocol-specific definitions for the operation. - -This object MAY be extended with [Specification Extensions](#specificationExtensions). - -##### Operation Trait Object Example - -```json -{ - "bindings": { - "amqp": { - "ack": false - } - } -} -``` - -```yaml -bindings: - amqp: - ack: false -``` - - - - -#### Parameters Object - -Describes a map of parameters included in a channel name. - -This map MUST contain all the parameters used in the parent channel name. - -##### Patterned Fields - -Field Pattern | Type | Description ----|:---:|--- -`^[A-Za-z0-9_\-]+$` | [Parameter Object](#parameterObject) | [Reference Object](#referenceObject) | The key represents the name of the parameter. It MUST match the parameter name used in the parent channel name. - -##### Parameters Object Example - -```json -{ - "user/{userId}/signup": { - "parameters": { - "userId": { - "description": "Id of the user.", - "schema": { - "type": "string" - } - } - }, - "subscribe": { - "message": { - "$ref": "#/components/messages/userSignedUp" - } - } - } -} -``` - -```yaml -user/{userId}/signup: - parameters: - userId: - description: Id of the user. - schema: - type: string - subscribe: - message: - $ref: "#/components/messages/userSignedUp" -``` - - - - - -#### Parameter Object - -Describes a parameter included in a channel name. - -##### Fixed Fields - -Field Name | Type | Description ----|:---:|--- -description | `string` | A verbose explanation of the parameter. [CommonMark syntax](https://spec.commonmark.org/) can be used for rich text representation. -schema | [Schema Object](#schemaObject) \| [Reference Object](#referenceObject) | Definition of the parameter. -location | `string` | A [runtime expression](#runtimeExpression) that specifies the location of the parameter value. Even when a definition for the target field exists, it MUST NOT be used to validate this parameter but, instead, the `schema` property MUST be used. - -This object MAY be extended with [Specification Extensions](#specificationExtensions). - -##### Parameter Object Example - -```json -{ - "user/{userId}/signup": { - "parameters": { - "userId": { - "description": "Id of the user.", - "schema": { - "type": "string" - }, - "location": "$message.payload#/user/id" - } - }, - "subscribe": { - "message": { - "$ref": "#/components/messages/userSignedUp" - } - } - } -} -``` - -```yaml -user/{userId}/signup: - parameters: - userId: - description: Id of the user. - schema: - type: string - location: $message.payload#/user/id - subscribe: - message: - $ref: "#/components/messages/userSignedUp" -``` - - - - -#### Server Bindings Object - -Map describing protocol-specific definitions for a server. - -##### Fixed Fields - -Field Name | Type | Description ----|:---:|--- -`http` | [HTTP Server Binding](https://github.com/asyncapi/bindings/blob/master/http#server) | Protocol-specific information for an HTTP server. -`ws` | [WebSockets Server Binding](https://github.com/asyncapi/bindings/blob/master/websockets#server) | Protocol-specific information for a WebSockets server. -`kafka` | [Kafka Server Binding](https://github.com/asyncapi/bindings/blob/master/kafka#server) | Protocol-specific information for a Kafka server. -`anypointmq` | [Anypoint MQ Server Binding](https://github.com/asyncapi/bindings/blob/master/anypointmq#server) | Protocol-specific information for an Anypoint MQ server. -`amqp` | [AMQP Server Binding](https://github.com/asyncapi/bindings/blob/master/amqp#server) | Protocol-specific information for an AMQP 0-9-1 server. -`amqp1` | [AMQP 1.0 Server Binding](https://github.com/asyncapi/bindings/blob/master/amqp1#server) | Protocol-specific information for an AMQP 1.0 server. -`mqtt` | [MQTT Server Binding](https://github.com/asyncapi/bindings/blob/master/mqtt#server) | Protocol-specific information for an MQTT server. -`mqtt5` | [MQTT 5 Server Binding](https://github.com/asyncapi/bindings/blob/master/mqtt5#server) | Protocol-specific information for an MQTT 5 server. -`nats` | [NATS Server Binding](https://github.com/asyncapi/bindings/blob/master/nats#server) | Protocol-specific information for a NATS server. -`jms` | [JMS Server Binding](https://github.com/asyncapi/bindings/blob/master/jms#server) | Protocol-specific information for a JMS server. -`sns` | [SNS Server Binding](https://github.com/asyncapi/bindings/blob/master/sns#server) | Protocol-specific information for an SNS server. -`solace` | [Solace Server Binding](https://github.com/asyncapi/bindings/blob/master/solace#server) | Protocol-specific information for a Solace server. -`sqs` | [SQS Server Binding](https://github.com/asyncapi/bindings/blob/master/sqs#server) | Protocol-specific information for an SQS server. -`stomp` | [STOMP Server Binding](https://github.com/asyncapi/bindings/blob/master/stomp#server) | Protocol-specific information for a STOMP server. -`redis` | [Redis Server Binding](https://github.com/asyncapi/bindings/blob/master/redis#server) | Protocol-specific information for a Redis server. -`mercure` | [Mercure Server Binding](https://github.com/asyncapi/bindings/blob/master/mercure#server) | Protocol-specific information for a Mercure server. -`ibmmq` | [IBM MQ Server Binding](https://github.com/asyncapi/bindings/blob/master/ibmmq#server-binding-object) | Protocol-specific information for an IBM MQ server. -`googlepubsub` | [Google Cloud Pub/Sub Server Binding](https://github.com/asyncapi/bindings/blob/master/googlepubsub#server) | Protocol-specific information for a Google Cloud Pub/Sub server. - -This object MAY be extended with [Specification Extensions](#specificationExtensions). - - - -#### Channel Bindings Object - -Map describing protocol-specific definitions for a channel. - -##### Fixed Fields - -Field Name | Type | Description ----|:---:|--- -`http` | [HTTP Channel Binding](https://github.com/asyncapi/bindings/blob/master/http/README.md#channel) | Protocol-specific information for an HTTP channel. -`ws` | [WebSockets Channel Binding](https://github.com/asyncapi/bindings/blob/master/websockets/README.md#channel) | Protocol-specific information for a WebSockets channel. -`kafka` | [Kafka Channel Binding](https://github.com/asyncapi/bindings/blob/master/kafka/README.md#channel) | Protocol-specific information for a Kafka channel. -`anypointmq` | [Anypoint MQ Channel Binding](https://github.com/asyncapi/bindings/blob/master/anypointmq/README.md#channel) | Protocol-specific information for an Anypoint MQ channel. -`amqp` | [AMQP Channel Binding](https://github.com/asyncapi/bindings/blob/master/amqp/README.md#channel) | Protocol-specific information for an AMQP 0-9-1 channel. -`amqp1` | [AMQP 1.0 Channel Binding](https://github.com/asyncapi/bindings/blob/master/amqp1/README.md#channel) | Protocol-specific information for an AMQP 1.0 channel. -`mqtt` | [MQTT Channel Binding](https://github.com/asyncapi/bindings/blob/master/mqtt/README.md#channel) | Protocol-specific information for an MQTT channel. -`mqtt5` | [MQTT 5 Channel Binding](https://github.com/asyncapi/bindings/blob/master/mqtt5#channel) | Protocol-specific information for an MQTT 5 channel. -`nats` | [NATS Channel Binding](https://github.com/asyncapi/bindings/blob/master/nats/README.md#channel) | Protocol-specific information for a NATS channel. -`jms` | [JMS Channel Binding](https://github.com/asyncapi/bindings/blob/master/jms/README.md#channel) | Protocol-specific information for a JMS channel. -`sns` | [SNS Channel Binding](https://github.com/asyncapi/bindings/blob/master/sns/README.md#channel) | Protocol-specific information for an SNS channel. -`solace` | [Solace Channel Binding](https://github.com/asyncapi/bindings/blob/master/solace#channel) | Protocol-specific information for a Solace channel. -`sqs` | [SQS Channel Binding](https://github.com/asyncapi/bindings/blob/master/sqs/README.md#channel) | Protocol-specific information for an SQS channel. -`stomp` | [STOMP Channel Binding](https://github.com/asyncapi/bindings/blob/master/stomp/README.md#channel) | Protocol-specific information for a STOMP channel. -`redis` | [Redis Channel Binding](https://github.com/asyncapi/bindings/blob/master/redis#channel) | Protocol-specific information for a Redis channel. -`mercure` | [Mercure Channel Binding](https://github.com/asyncapi/bindings/blob/master/mercure#channel) | Protocol-specific information for a Mercure channel. -`ibmmq` | [IBM MQ Channel Binding](https://github.com/asyncapi/bindings/tree/master/ibmmq#channel-binding-object) | Protocol-specific information for an IBM MQ channel. -`googlepubsub` | [Google Cloud Pub/Sub Channel Binding](https://github.com/asyncapi/bindings/tree/master/googlepubsub#channel) | Protocol-specific information for a Google Cloud Pub/Sub channel. - -This object MAY be extended with [Specification Extensions](#specificationExtensions). - - - -#### Operation Bindings Object - -Map describing protocol-specific definitions for an operation. - -##### Fixed Fields - -Field Name | Type | Description ----|:---:|--- -`http` | [HTTP Operation Binding](https://github.com/asyncapi/bindings/blob/master/http/README.md#operation) | Protocol-specific information for an HTTP operation. -`ws` | [WebSockets Operation Binding](https://github.com/asyncapi/bindings/blob/master/websockets/README.md#operation) | Protocol-specific information for a WebSockets operation. -`kafka` | [Kafka Operation Binding](https://github.com/asyncapi/bindings/blob/master/kafka/README.md#operation) | Protocol-specific information for a Kafka operation. -`anypointmq` | [Anypoint MQ Operation Binding](https://github.com/asyncapi/bindings/blob/master/anypointmq/README.md#operation) | Protocol-specific information for an Anypoint MQ operation. -`amqp` | [AMQP Operation Binding](https://github.com/asyncapi/bindings/blob/master/amqp/README.md#operation) | Protocol-specific information for an AMQP 0-9-1 operation. -`amqp1` | [AMQP 1.0 Operation Binding](https://github.com/asyncapi/bindings/blob/master/amqp1/README.md#operation) | Protocol-specific information for an AMQP 1.0 operation. -`mqtt` | [MQTT Operation Binding](https://github.com/asyncapi/bindings/blob/master/mqtt/README.md#operation) | Protocol-specific information for an MQTT operation. -`mqtt5` | [MQTT 5 Operation Binding](https://github.com/asyncapi/bindings/blob/master/mqtt5/README.md#operation) | Protocol-specific information for an MQTT 5 operation. -`nats` | [NATS Operation Binding](https://github.com/asyncapi/bindings/blob/master/nats/README.md#operation) | Protocol-specific information for a NATS operation. -`jms` | [JMS Operation Binding](https://github.com/asyncapi/bindings/blob/master/jms/README.md#operation) | Protocol-specific information for a JMS operation. -`sns` | [SNS Operation Binding](https://github.com/asyncapi/bindings/blob/master/sns/README.md#operation) | Protocol-specific information for an SNS operation. -`solace` | [Solace Operation Binding](https://github.com/asyncapi/bindings/blob/master/solace#operation) | Protocol-specific information for a Solace operation. -`sqs` | [SQS Operation Binding](https://github.com/asyncapi/bindings/blob/master/sqs/README.md#operation) | Protocol-specific information for an SQS operation. -`stomp` | [STOMP Operation Binding](https://github.com/asyncapi/bindings/blob/master/stomp/README.md#operation) | Protocol-specific information for a STOMP operation. -`redis` | [Redis Operation Binding](https://github.com/asyncapi/bindings/blob/master/redis#operation) | Protocol-specific information for a Redis operation. -`mercure` | [Mercure Operation Binding](https://github.com/asyncapi/bindings/blob/master/mercure#operation) | Protocol-specific information for a Mercure operation. -`googlepubsub` | [Google Cloud Pub/Sub Operation Binding](https://github.com/asyncapi/bindings/blob/master/googlepubsub#operation) | Protocol-specific information for a Google Cloud Pub/Sub operation. -`ibmmq` | [IBM MQ Operation Binding](https://github.com/asyncapi/bindings/blob/master/ibmmq#operation-binding-object) | Protocol-specific information for an IBM MQ operation. - -This object MAY be extended with [Specification Extensions](#specificationExtensions). - - - - -#### Message Bindings Object - -Map describing protocol-specific definitions for a message. - -##### Fixed Fields - -Field Name | Type | Description ----|:---:|--- -`http` | [HTTP Message Binding](https://github.com/asyncapi/bindings/blob/master/http/README.md#message) | Protocol-specific information for an HTTP message, i.e., a request or a response. -`ws` | [WebSockets Message Binding](https://github.com/asyncapi/bindings/blob/master/websockets/README.md#message) | Protocol-specific information for a WebSockets message. -`kafka` | [Kafka Message Binding](https://github.com/asyncapi/bindings/blob/master/kafka/README.md#message) | Protocol-specific information for a Kafka message. -`anypointmq` | [Anypoint MQ Message Binding](https://github.com/asyncapi/bindings/blob/master/anypointmq/README.md#message) | Protocol-specific information for an Anypoint MQ message. -`amqp` | [AMQP Message Binding](https://github.com/asyncapi/bindings/blob/master/amqp/README.md#message) | Protocol-specific information for an AMQP 0-9-1 message. -`amqp1` | [AMQP 1.0 Message Binding](https://github.com/asyncapi/bindings/blob/master/amqp1/README.md#message) | Protocol-specific information for an AMQP 1.0 message. -`mqtt` | [MQTT Message Binding](https://github.com/asyncapi/bindings/blob/master/mqtt/README.md#message) | Protocol-specific information for an MQTT message. -`mqtt5` | [MQTT 5 Message Binding](https://github.com/asyncapi/bindings/blob/master/mqtt5/README.md#message) | Protocol-specific information for an MQTT 5 message. -`nats` | [NATS Message Binding](https://github.com/asyncapi/bindings/blob/master/nats/README.md#message) | Protocol-specific information for a NATS message. -`jms` | [JMS Message Binding](https://github.com/asyncapi/bindings/blob/master/jms/README.md#message) | Protocol-specific information for a JMS message. -`sns` | [SNS Message Binding](https://github.com/asyncapi/bindings/blob/master/sns/README.md#message) | Protocol-specific information for an SNS message. -`solace` | [Solace Server Binding](https://github.com/asyncapi/bindings/blob/master/solace#message) | Protocol-specific information for a Solace message. -`sqs` | [SQS Message Binding](https://github.com/asyncapi/bindings/blob/master/sqs/README.md#message) | Protocol-specific information for an SQS message. -`stomp` | [STOMP Message Binding](https://github.com/asyncapi/bindings/blob/master/stomp/README.md#message) | Protocol-specific information for a STOMP message. -`redis` | [Redis Message Binding](https://github.com/asyncapi/bindings/blob/master/redis#message) | Protocol-specific information for a Redis message. -`mercure` | [Mercure Message Binding](https://github.com/asyncapi/bindings/blob/master/mercure#message) | Protocol-specific information for a Mercure message. -`ibmmq` | [IBM MQ Message Binding](https://github.com/asyncapi/bindings/tree/master/ibmmq#message-binding-object) | Protocol-specific information for an IBM MQ message. -`googlepubsub` | [Google Cloud Pub/Sub Message Binding](https://github.com/asyncapi/bindings/tree/master/googlepubsub#message) | Protocol-specific information for a Google Cloud Pub/Sub message. - -This object MAY be extended with [Specification Extensions](#specificationExtensions). - - - - - - - -#### Message Object - -Describes a message received on a given channel and operation. - -##### Fixed Fields - -Field Name | Type | Description ----|:---:|--- -messageId | `string` | Unique string used to identify the message. The id MUST be unique among all messages described in the API. The messageId value is **case-sensitive**. Tools and libraries MAY use the messageId to uniquely identify a message, therefore, it is RECOMMENDED to follow common programming naming conventions. -headers | [Schema Object](#schemaObject) | [Reference Object](#referenceObject) | Schema definition of the application headers. Schema MUST be of type "object". It **MUST NOT** define the protocol headers. -payload | `any` | Definition of the message payload. It can be of any type but defaults to [Schema object](#schemaObject). It must match the schema format, including encoding type - e.g Avro should be inlined as either a YAML or JSON object NOT a string to be parsed as YAML or JSON. -correlationId | [Correlation ID Object](#correlationIdObject) | [Reference Object](#referenceObject) | Definition of the correlation ID used for message tracing or matching. -schemaFormat | `string` | A string containing the name of the schema format used to define the message payload. If omitted, implementations should parse the payload as a [Schema object](#schemaObject). When the payload is defined using a `$ref` to a remote file, it is RECOMMENDED the schema format includes the file encoding type to allow implementations to parse the file correctly. E.g., adding `+yaml` if content type is `application/vnd.apache.avro` results in `application/vnd.apache.avro+yaml`.

Check out the [supported schema formats table](#messageObjectSchemaFormatTable) for more information. Custom values are allowed but their implementation is OPTIONAL. A custom value MUST NOT refer to one of the schema formats listed in the [table](#messageObjectSchemaFormatTable). -contentType | `string` | The content type to use when encoding/decoding a message's payload. The value MUST be a specific media type (e.g. `application/json`). When omitted, the value MUST be the one specified on the [defaultContentType](#defaultContentTypeString) field. -name | `string` | A machine-friendly name for the message. -title | `string` | A human-friendly title for the message. -summary | `string` | A short summary of what the message is about. -description | `string` | A verbose explanation of the message. [CommonMark syntax](https://spec.commonmark.org/) can be used for rich text representation. -tags | [Tags Object](#tagsObject) | A list of tags for logical grouping and categorization of messages. -externalDocs | [External Documentation Object](#externalDocumentationObject) | Additional external documentation for this message. -bindings | [Message Bindings Object](#messageBindingsObject) \| [Reference Object](#referenceObject) | A map where the keys describe the name of the protocol and the values describe protocol-specific definitions for the message. -examples | [[Message Example Object](#messageExampleObject)] | List of examples. -traits | [[Message Trait Object](#messageTraitObject) | [Reference Object](#referenceObject)] | A list of traits to apply to the message object. Traits MUST be merged into the message object using the [JSON Merge Patch](https://tools.ietf.org/html/rfc7386) algorithm in the same order they are defined here. The resulting object MUST be a valid [Message Object](#messageObject). - -This object MAY be extended with [Specification Extensions](#specificationExtensions). - -##### Schema formats table - -The following table contains a set of values that every implementation MUST support. - -Name | Allowed values | Notes ----|:---:|--- -[AsyncAPI 2.5.0 Schema Object](#schemaObject) | `application/vnd.aai.asyncapi;version=2.5.0`, `application/vnd.aai.asyncapi+json;version=2.5.0`, `application/vnd.aai.asyncapi+yaml;version=2.5.0` | This is the default when a `schemaFormat` is not provided. -[JSON Schema Draft 07](https://json-schema.org/specification-links.html#draft-7) | `application/schema+json;version=draft-07`, `application/schema+yaml;version=draft-07` | - -The following table contains a set of values that every implementation is RECOMMENDED to support. - -Name | Allowed values | Notes ----|:---:|--- -[Avro 1.9.0 schema](https://avro.apache.org/docs/1.9.0/spec.html#schemas) | `application/vnd.apache.avro;version=1.9.0`, `application/vnd.apache.avro+json;version=1.9.0`, `application/vnd.apache.avro+yaml;version=1.9.0` | -[OpenAPI 3.0.0 Schema Object](https://github.com/OAI/OpenAPI-Specification/blob/master/versions/3.0.0.md#schemaObject) | `application/vnd.oai.openapi;version=3.0.0`, `application/vnd.oai.openapi+json;version=3.0.0`, `application/vnd.oai.openapi+yaml;version=3.0.0` | -[RAML 1.0 data type](https://github.com/raml-org/raml-spec/blob/master/versions/raml-10/raml-10.md/) | `application/raml+yaml;version=1.0` | - - -##### Message Object Example - -```json -{ - "messageId": "userSignup", - "name": "UserSignup", - "title": "User signup", - "summary": "Action to sign a user up.", - "description": "A longer description", - "contentType": "application/json", - "tags": [ - { "name": "user" }, - { "name": "signup" }, - { "name": "register" } - ], - "headers": { - "type": "object", - "properties": { - "correlationId": { - "description": "Correlation ID set by application", - "type": "string" - }, - "applicationInstanceId": { - "description": "Unique identifier for a given instance of the publishing application", - "type": "string" - } - } - }, - "payload": { - "type": "object", - "properties": { - "user": { - "$ref": "#/components/schemas/userCreate" - }, - "signup": { - "$ref": "#/components/schemas/signup" - } - } - }, - "correlationId": { - "description": "Default Correlation ID", - "location": "$message.header#/correlationId" - }, - "traits": [ - { "$ref": "#/components/messageTraits/commonHeaders" } - ], - "examples": [ - { - "name": "SimpleSignup", - "summary": "A simple UserSignup example message", - "headers": { - "correlationId": "my-correlation-id", - "applicationInstanceId": "myInstanceId" - }, - "payload": { - "user": { - "someUserKey": "someUserValue" - }, - "signup": { - "someSignupKey": "someSignupValue" - } - } - } - ] -} -``` - -```yaml -messageId: userSignup -name: UserSignup -title: User signup -summary: Action to sign a user up. -description: A longer description -contentType: application/json -tags: - - name: user - - name: signup - - name: register -headers: - type: object - properties: - correlationId: - description: Correlation ID set by application - type: string - applicationInstanceId: - description: Unique identifier for a given instance of the publishing application - type: string -payload: - type: object - properties: - user: - $ref: "#/components/schemas/userCreate" - signup: - $ref: "#/components/schemas/signup" -correlationId: - description: Default Correlation ID - location: $message.header#/correlationId -traits: - - $ref: "#/components/messageTraits/commonHeaders" -examples: - - name: SimpleSignup - summary: A simple UserSignup example message - headers: - correlationId: my-correlation-id - applicationInstanceId: myInstanceId - payload: - user: - someUserKey: someUserValue - signup: - someSignupKey: someSignupValue -``` - -Example using Avro to define the payload: - -```json -{ - "messageId": "userSignup", - "name": "UserSignup", - "title": "User signup", - "summary": "Action to sign a user up.", - "description": "A longer description", - "tags": [ - { "name": "user" }, - { "name": "signup" }, - { "name": "register" } - ], - "schemaFormat": "application/vnd.apache.avro+json;version=1.9.0", - "payload": { - "$ref": "path/to/user-create.avsc#/UserCreate" - } -} -``` - -```yaml -messageId: userSignup -name: UserSignup -title: User signup -summary: Action to sign a user up. -description: A longer description -tags: - - name: user - - name: signup - - name: register -schemaFormat: 'application/vnd.apache.avro+yaml;version=1.9.0' -payload: - $ref: 'path/to/user-create.avsc/#UserCreate' -``` - - - - - - - -#### Message Trait Object - -Describes a trait that MAY be applied to a [Message Object](#messageObject). This object MAY contain any property from the [Message Object](#messageObject), except `payload` and `traits`. - -If you're looking to apply traits to an operation, see the [Operation Trait Object](#operationTraitObject). - -##### Fixed Fields - -Field Name | Type | Description ----|:---:|--- -messageId | `string` | Unique string used to identify the message. The id MUST be unique among all messages described in the API. The messageId value is **case-sensitive**. Tools and libraries MAY use the messageId to uniquely identify a message, therefore, it is RECOMMENDED to follow common programming naming conventions. -headers | [Schema Object](#schemaObject) | [Reference Object](#referenceObject) | Schema definition of the application headers. Schema MUST be of type "object". It **MUST NOT** define the protocol headers. -correlationId | [Correlation ID Object](#correlationIdObject) | [Reference Object](#referenceObject) | Definition of the correlation ID used for message tracing or matching. -schemaFormat | `string` | A string containing the name of the schema format/language used to define the message payload. If omitted, implementations should parse the payload as a [Schema object](#schemaObject). -contentType | `string` | The content type to use when encoding/decoding a message's payload. The value MUST be a specific media type (e.g. `application/json`). When omitted, the value MUST be the one specified on the [defaultContentType](#defaultContentTypeString) field. -name | `string` | A machine-friendly name for the message. -title | `string` | A human-friendly title for the message. -summary | `string` | A short summary of what the message is about. -description | `string` | A verbose explanation of the message. [CommonMark syntax](https://spec.commonmark.org/) can be used for rich text representation. -tags | [Tags Object](#tagsObject) | A list of tags for logical grouping and categorization of messages. -externalDocs | [External Documentation Object](#externalDocumentationObject) | Additional external documentation for this message. -bindings | [Message Bindings Object](#messageBindingsObject) \| [Reference Object](#referenceObject) | A map where the keys describe the name of the protocol and the values describe protocol-specific definitions for the message. -examples | [[Message Example Object](#messageExampleObject)] | List of examples. - -This object MAY be extended with [Specification Extensions](#specificationExtensions). - -##### Message Trait Object Example - -```json -{ - "schemaFormat": "application/vnd.apache.avro+json;version=1.9.0", - "contentType": "application/json" -} -``` - -```yaml -schemaFormat: 'application/vnd.apache.avro+yaml;version=1.9.0' -contentType: application/json -``` - -#### Message Example Object - -Message Example Object represents an example of a [Message Object](#messageObject) and MUST contain either **headers** and/or **payload** fields. - -##### Fixed Fields - -Field Name | Type | Description ----|:---:|--- -headers | `Map[string, any]` | The value of this field MUST validate against the [Message Object's headers](#messageObjectHeaders) field. -payload | `any` | The value of this field MUST validate against the [Message Object's payload](#messageObjectPayload) field. -name | `string` | A machine-friendly name. -summary | `string` | A short summary of what the example is about. - -This object MAY be extended with [Specification Extensions](#specificationExtensions). - -##### Message Example Object Example - -```json -{ - "name": "SimpleSignup", - "summary": "A simple UserSignup example message", - "headers": { - "correlationId": "my-correlation-id", - "applicationInstanceId": "myInstanceId" - }, - "payload": { - "user": { - "someUserKey": "someUserValue" - }, - "signup": { - "someSignupKey": "someSignupValue" - } - } -} -``` - -```yaml -name: SimpleSignup -summary: A simple UserSignup example message -headers: - correlationId: my-correlation-id - applicationInstanceId: myInstanceId -payload: - user: - someUserKey: someUserValue - signup: - someSignupKey: someSignupValue -``` - -#### Tags Object - -A Tags object is a list of Tag Objects. - -#### Tag Object - -Allows adding meta data to a single tag. - -##### Fixed Fields -Field Name | Type | Description ----|:---:|--- -name | `string` | **REQUIRED.** The name of the tag. -description | `string` | A short description for the tag. [CommonMark syntax](https://spec.commonmark.org/) can be used for rich text representation. -externalDocs | [External Documentation Object](#externalDocumentationObject) | Additional external documentation for this tag. - -This object MAY be extended with [Specification Extensions](#specificationExtensions). - -##### Tag Object Example - -```json -{ - "name": "user", - "description": "User-related messages" -} -``` - -```yaml -name: user -description: User-related messages -``` - - - - - - - -#### External Documentation Object - -Allows referencing an external resource for extended documentation. - -##### Fixed Fields - -Field Name | Type | Description ----|:---:|--- -description | `string` | A short description of the target documentation. [CommonMark syntax](https://spec.commonmark.org/) can be used for rich text representation. -url | `string` | **REQUIRED.** The URL for the target documentation. This MUST be in the form of an absolute URL. - -This object MAY be extended with [Specification Extensions](#specificationExtensions). - -##### External Documentation Object Example - -```json -{ - "description": "Find more info here", - "url": "https://example.com" -} -``` - -```yaml -description: Find more info here -url: https://example.com -``` - -#### Reference Object - -A simple object to allow referencing other components in the specification, internally and externally. - -The Reference Object is defined by [JSON Reference](https://tools.ietf.org/html/draft-pbryan-zyp-json-ref-03) and follows the same structure, behavior and rules. A JSON Reference SHALL only be used to refer to a schema that is formatted in either JSON or YAML. In the case of a YAML-formatted Schema, the JSON Reference SHALL be applied to the JSON representation of that schema. The JSON representation SHALL be made by applying the conversion described [here](#format). - -For this specification, reference resolution is done as defined by the JSON Reference specification and not by the JSON Schema specification. - -##### Fixed Fields -Field Name | Type | Description ----|:---:|--- -$ref | `string` | **REQUIRED.** The reference string. - -This object cannot be extended with additional properties and any properties added SHALL be ignored. - -##### Reference Object Example - -```json -{ - "$ref": "#/components/schemas/Pet" -} -``` - -```yaml - $ref: '#/components/schemas/Pet' -``` - -#### Components Object - -Holds a set of reusable objects for different aspects of the AsyncAPI specification. -All objects defined within the components object will have no effect on the API unless they are explicitly referenced from properties outside the components object. - -##### Fixed Fields - -Field Name | Type | Description ----|:---|--- - schemas | Map[`string`, [Schema Object](#schemaObject) \| [Reference Object](#referenceObject)] | An object to hold reusable [Schema Objects](#schemaObject). - servers | Map[`string`, [Server Object](#serverObject) \| [Reference Object](#referenceObject)] | An object to hold reusable [Server Objects](#serverObject). - serverVariables | Map[`string`, [Server Variable Object](#serverVariableObject) \| [Reference Object](#referenceObject)] | An object to hold reusable [Server Variable Objects](#serverVariableObject). - channels | Map[`string`, [Channel Item Object](#channelItemObject)] | An object to hold reusable [Channel Item Objects](#channelItemObject). - messages | Map[`string`, [Message Object](#messageObject) \| [Reference Object](#referenceObject)] | An object to hold reusable [Message Objects](#messageObject). - securitySchemes| Map[`string`, [Security Scheme Object](#securitySchemeObject) \| [Reference Object](#referenceObject)] | An object to hold reusable [Security Scheme Objects](#securitySchemeObject). - parameters | Map[`string`, [Parameter Object](#parameterObject) \| [Reference Object](#referenceObject)] | An object to hold reusable [Parameter Objects](#parameterObject). - correlationIds | Map[`string`, [Correlation ID Object](#correlationIdObject) \| [Reference Object](#referenceObject)] | An object to hold reusable [Correlation ID Objects](#correlationIdObject). - operationTraits | Map[`string`, [Operation Trait Object](#operationTraitObject) \| [Reference Object](#referenceObject)] | An object to hold reusable [Operation Trait Objects](#operationTraitObject). - messageTraits | Map[`string`, [Message Trait Object](#messageTraitObject) \| [Reference Object](#referenceObject)] | An object to hold reusable [Message Trait Objects](#messageTraitObject). - serverBindings | Map[`string`, [Server Bindings Object](#serverBindingsObject) \| [Reference Object](#referenceObject)] | An object to hold reusable [Server Bindings Objects](#serverBindingsObject). - channelBindings | Map[`string`, [Channel Bindings Object](#channelBindingsObject) \| [Reference Object](#referenceObject)] | An object to hold reusable [Channel Bindings Objects](#channelBindingsObject). - operationBindings | Map[`string`, [Operation Bindings Object](#operationBindingsObject) \| [Reference Object](#referenceObject)] | An object to hold reusable [Operation Bindings Objects](#operationBindingsObject). - messageBindings | Map[`string`, [Message Bindings Object](#messageBindingsObject) \| [Reference Object](#referenceObject)] | An object to hold reusable [Message Bindings Objects](#messageBindingsObject). - -This object MAY be extended with [Specification Extensions](#specificationExtensions). - -All the fixed fields declared above are objects that MUST use keys that match the regular expression: `^[a-zA-Z0-9\.\-_]+$`. - -Field Name Examples: - -``` -User -User_1 -User_Name -user-name -my.org.User -``` - -##### Components Object Example - -```json -{ - "components": { - "schemas": { - "Category": { - "type": "object", - "properties": { - "id": { - "type": "integer", - "format": "int64" - }, - "name": { - "type": "string" - } - } - }, - "Tag": { - "type": "object", - "properties": { - "id": { - "type": "integer", - "format": "int64" - }, - "name": { - "type": "string" - } - } - } - }, - "servers": { - "development": { - "url": "{stage}.gigantic-server.com:{port}", - "description": "Development server", - "protocol": "amqp", - "protocolVersion": "0.9.1", - "variables": { - "stage": { - "$ref": "#/components/serverVariables/stage" - }, - "port": { - "$ref": "#/components/serverVariables/port" - } - } - } - }, - "serverVariables": { - "stage": { - "default": "demo", - "description": "This value is assigned by the service provider, in this example `gigantic-server.com`" - }, - "port": { - "enum": ["8883", "8884"], - "default": "8883" - } - }, - "channels": { - "user/signedup": { - "subscribe": { - "message": { - "$ref": "#/components/messages/userSignUp" - } - } - } - }, - "messages": { - "userSignUp": { - "summary": "Action to sign a user up.", - "description": "Multiline description of what this action does.\nHere you have another line.\n", - "tags": [ - { - "name": "user" - }, - { - "name": "signup" - } - ], - "headers": { - "type": "object", - "properties": { - "applicationInstanceId": { - "description": "Unique identifier for a given instance of the publishing application", - "type": "string" - } - } - }, - "payload": { - "type": "object", - "properties": { - "user": { - "$ref": "#/components/schemas/userCreate" - }, - "signup": { - "$ref": "#/components/schemas/signup" - } - } - } - } - }, - "parameters": { - "userId": { - "description": "Id of the user.", - "schema": { - "type": "string" - } - } - }, - "correlationIds": { - "default": { - "description": "Default Correlation ID", - "location": "$message.header#/correlationId" - } - }, - "messageTraits": { - "commonHeaders": { - "headers": { - "type": "object", - "properties": { - "my-app-header": { - "type": "integer", - "minimum": 0, - "maximum": 100 - } - } - } - } - } - } -} -``` - -```yaml -components: - schemas: - Category: - type: object - properties: - id: - type: integer - format: int64 - name: - type: string - Tag: - type: object - properties: - id: - type: integer - format: int64 - name: - type: string - servers: - development: - url: "{stage}.gigantic-server.com:{port}" - description: Development server - protocol: amqp - protocolVersion: 0.9.1 - variables: - stage: - $ref: "#/components/serverVariables/stage" - port: - $ref: "#/components/serverVariables/port" - serverVariables: - stage: - default: demo - description: This value is assigned by the service provider, in this example `gigantic-server.com` - port: - enum: [8883, 8884] - default: 8883 - channels: - user/signedup: - subscribe: - message: - $ref: "#/components/messages/userSignUp" - messages: - userSignUp: - summary: Action to sign a user up. - description: | - Multiline description of what this action does. - Here you have another line. - tags: - - name: user - - name: signup - headers: - type: object - properties: - applicationInstanceId: - description: Unique identifier for a given instance of the publishing application - type: string - payload: - type: object - properties: - user: - $ref: "#/components/schemas/userCreate" - signup: - $ref: "#/components/schemas/signup" - parameters: - userId: - description: Id of the user. - schema: - type: string - correlationIds: - default: - description: Default Correlation ID - location: $message.header#/correlationId - messageTraits: - commonHeaders: - headers: - type: object - properties: - my-app-header: - type: integer - minimum: 0 - maximum: 100 -``` - -#### Schema Object - -The Schema Object allows the definition of input and output data types. -These types can be objects, but also primitives and arrays. This object is a superset of the [JSON Schema Specification Draft 07](https://json-schema.org/). The empty schema (which allows any instance to validate) MAY be represented by the `boolean` value `true` and a schema which allows no instance to validate MAY be represented by the `boolean` value `false`. - -Further information about the properties can be found in [JSON Schema Core](https://tools.ietf.org/html/draft-handrews-json-schema-01) and [JSON Schema Validation](https://tools.ietf.org/html/draft-handrews-json-schema-validation-01). -Unless stated otherwise, the property definitions follow the JSON Schema specification as referenced here. - -##### Properties - -The AsyncAPI Schema Object is a JSON Schema vocabulary which extends JSON Schema Core and Validation vocabularies. As such, any keyword available for those vocabularies is by definition available in AsyncAPI, and will work the exact same way, including but not limited to: - -- title -- type -- required -- multipleOf -- maximum -- exclusiveMaximum -- minimum -- exclusiveMinimum -- maxLength -- minLength -- pattern (This string SHOULD be a valid regular expression, according to the [ECMA 262 regular expression](https://www.ecma-international.org/ecma-262/5.1/#sec-7.8.5) dialect) -- maxItems -- minItems -- uniqueItems -- maxProperties -- minProperties -- enum -- const -- examples -- if / then / else -- readOnly -- writeOnly -- properties -- patternProperties -- additionalProperties -- additionalItems -- items -- propertyNames -- contains -- allOf -- oneOf -- anyOf -- not - -The following properties are taken from the JSON Schema definition but their definitions were adjusted to the AsyncAPI Specification. - -- description - [CommonMark syntax](https://spec.commonmark.org/) can be used for rich text representation. -- format - See [Data Type Formats](#dataTypeFormat) for further details. While relying on JSON Schema's defined formats, the AsyncAPI Specification offers a few additional predefined formats. -- default - The default value represents what would be assumed by the consumer of the input as the value of the schema if one is not provided. Unlike JSON Schema, the value MUST conform to the defined type for the Schema Object defined at the same level. For example, of `type` is `string`, then `default` can be `"foo"` but cannot be `1`. - -Alternatively, any time a Schema Object can be used, a [Reference Object](#referenceObject) can be used in its place. This allows referencing definitions in place of defining them inline. It is appropriate to clarify that the `$ref` keyword MUST follow the behavior described by [Reference Object](#referenceObject) instead of the one in [JSON Schema definition](https://json-schema.org/understanding-json-schema/structuring.html#ref). - -In addition to the JSON Schema fields, the following AsyncAPI vocabulary fields MAY be used for further schema documentation: - -##### Fixed Fields -Field Name | Type | Description ----|:---:|--- -discriminator | `string` | Adds support for polymorphism. The discriminator is the schema property name that is used to differentiate between other schema that inherit this schema. The property name used MUST be defined at this schema and it MUST be in the `required` property list. When used, the value MUST be the name of this schema or any schema that inherits it. See [Composition and Inheritance](#schemaComposition) for more details. -externalDocs | [External Documentation Object](#externalDocumentationObject) | Additional external documentation for this schema. - deprecated | `boolean` | Specifies that a schema is deprecated and SHOULD be transitioned out of usage. Default value is `false`. - -This object MAY be extended with [Specification Extensions](#specificationExtensions). - -###### Composition and Inheritance (Polymorphism) - -The AsyncAPI Specification allows combining and extending model definitions using the `allOf` property of JSON Schema, in effect offering model composition. -`allOf` takes in an array of object definitions that are validated *independently* but together compose a single object. - -While composition offers model extensibility, it does not imply a hierarchy between the models. -To support polymorphism, AsyncAPI Specification adds the support of the `discriminator` field. -When used, the `discriminator` will be the name of the property used to decide which schema definition is used to validate the structure of the model. -As such, the `discriminator` field MUST be a required field. -There are are two ways to define the value of a discriminator for an inheriting instance. - -- Use the schema's name. -- Override the schema's name by overriding the property with a new value. If exists, this takes precedence over the schema's name. - -As such, inline schema definitions, which do not have a given id, *cannot* be used in polymorphism. - -##### Schema Object Examples - -###### Primitive Sample - -```json -{ - "type": "string", - "format": "email" -} -``` - -```yaml -type: string -format: email -``` - -###### Simple Model - -```json -{ - "type": "object", - "required": [ - "name" - ], - "properties": { - "name": { - "type": "string" - }, - "address": { - "$ref": "#/components/schemas/Address" - }, - "age": { - "type": "integer", - "format": "int32", - "minimum": 0 - } - } -} -``` - -```yaml -type: object -required: -- name -properties: - name: - type: string - address: - $ref: '#/components/schemas/Address' - age: - type: integer - format: int32 - minimum: 0 -``` - -###### Model with Map/Dictionary Properties - -For a simple string to string mapping: - -```json -{ - "type": "object", - "additionalProperties": { - "type": "string" - } -} -``` - -```yaml -type: object -additionalProperties: - type: string -``` - -For a string to model mapping: - -```json -{ - "type": "object", - "additionalProperties": { - "$ref": "#/components/schemas/ComplexModel" - } -} -``` - -```yaml -type: object -additionalProperties: - $ref: '#/components/schemas/ComplexModel' -``` - -###### Model with Example - -```json -{ - "type": "object", - "properties": { - "id": { - "type": "integer", - "format": "int64" - }, - "name": { - "type": "string" - } - }, - "required": [ - "name" - ], - "examples": [ - { - "name": "Puma", - "id": 1 - } - ] -} -``` - -```yaml -type: object -properties: - id: - type: integer - format: int64 - name: - type: string -required: -- name -examples: -- name: Puma - id: 1 -``` - -###### Model with Boolean Schemas - -```json -{ - "type": "object", - "required": [ - "anySchema" - ], - "properties": { - "anySchema": true, - "cannotBeDefined": false - } -} -``` - -```yaml -type: object -required: -- anySchema -properties: - anySchema: true - cannotBeDefined: false -``` - -###### Models with Composition - -```json -{ - "schemas": { - "ErrorModel": { - "type": "object", - "required": [ - "message", - "code" - ], - "properties": { - "message": { - "type": "string" - }, - "code": { - "type": "integer", - "minimum": 100, - "maximum": 600 - } - } - }, - "ExtendedErrorModel": { - "allOf": [ - { - "$ref": "#/components/schemas/ErrorModel" - }, - { - "type": "object", - "required": [ - "rootCause" - ], - "properties": { - "rootCause": { - "type": "string" - } - } - } - ] - } - } -} -``` - -```yaml -schemas: - ErrorModel: - type: object - required: - - message - - code - properties: - message: - type: string - code: - type: integer - minimum: 100 - maximum: 600 - ExtendedErrorModel: - allOf: - - $ref: '#/components/schemas/ErrorModel' - - type: object - required: - - rootCause - properties: - rootCause: - type: string -``` - -###### Models with Polymorphism Support - -```json -{ - "schemas": { - "Pet": { - "type": "object", - "discriminator": "petType", - "properties": { - "name": { - "type": "string" - }, - "petType": { - "type": "string" - } - }, - "required": [ - "name", - "petType" - ] - }, - "Cat": { - "description": "A representation of a cat. Note that `Cat` will be used as the discriminator value.", - "allOf": [ - { - "$ref": "#/components/schemas/Pet" - }, - { - "type": "object", - "properties": { - "huntingSkill": { - "type": "string", - "description": "The measured skill for hunting", - "enum": [ - "clueless", - "lazy", - "adventurous", - "aggressive" - ] - } - }, - "required": [ - "huntingSkill" - ] - } - ] - }, - "Dog": { - "description": "A representation of a dog. Note that `Dog` will be used as the discriminator value.", - "allOf": [ - { - "$ref": "#/components/schemas/Pet" - }, - { - "type": "object", - "properties": { - "packSize": { - "type": "integer", - "format": "int32", - "description": "the size of the pack the dog is from", - "minimum": 0 - } - }, - "required": [ - "packSize" - ] - } - ] - }, - "StickInsect": { - "description": "A representation of an Australian walking stick. Note that `StickBug` will be used as the discriminator value.", - "allOf": [ - { - "$ref": "#/components/schemas/Pet" - }, - { - "type": "object", - "properties": { - "petType": { - "const": "StickBug" - }, - "color": { - "type": "string" - } - }, - "required": [ - "color" - ] - } - ] - } - } -} -``` - -```yaml -schemas: - Pet: - type: object - discriminator: petType - properties: - name: - type: string - petType: - type: string - required: - - name - - petType - ## applies to instances with `petType: "Cat"` - ## because that is the schema name - Cat: - description: A representation of a cat - allOf: - - $ref: '#/components/schemas/Pet' - - type: object - properties: - huntingSkill: - type: string - description: The measured skill for hunting - enum: - - clueless - - lazy - - adventurous - - aggressive - required: - - huntingSkill - ## applies to instances with `petType: "Dog"` - ## because that is the schema name - Dog: - description: A representation of a dog - allOf: - - $ref: '#/components/schemas/Pet' - - type: object - properties: - packSize: - type: integer - format: int32 - description: the size of the pack the dog is from - minimum: 0 - required: - - packSize - ## applies to instances with `petType: "StickBug"` - ## because that is the required value of the discriminator field, - ## overriding the schema name - StickInsect: - description: A representation of an Australian walking stick - allOf: - - $ref: '#/components/schemas/Pet' - - type: object - properties: - petType: - const: StickBug - color: - type: string - required: - - color -``` - - - - - -#### Security Scheme Object - -Defines a security scheme that can be used by the operations. Supported schemes are: - -* User/Password. -* API key (either as user or as password). -* X.509 certificate. -* End-to-end encryption (either symmetric or asymmetric). -* HTTP authentication. -* HTTP API key. -* OAuth2's common flows (Implicit, Resource Owner Protected Credentials, Client Credentials and Authorization Code) as defined in [RFC6749](https://tools.ietf.org/html/rfc6749). -* [OpenID Connect Discovery](https://tools.ietf.org/html/draft-ietf-oauth-discovery-06). -* SASL (Simple Authentication and Security Layer) as defined in [RFC4422](https://tools.ietf.org/html/rfc4422). - -##### Fixed Fields -Field Name | Type | Applies To | Description ----|:---:|---|--- -type | `string` | Any | **REQUIRED**. The type of the security scheme. Valid values are `"userPassword"`, `"apiKey"`, `"X509"`, `"symmetricEncryption"`, `"asymmetricEncryption"`, `"httpApiKey"`, `"http"`, `"oauth2"`, `"openIdConnect"`, `"plain"`, `"scramSha256"`, `"scramSha512"`, and `"gssapi"`. -description | `string` | Any | A short description for security scheme. [CommonMark syntax](https://spec.commonmark.org/) MAY be used for rich text representation. -name | `string` | `httpApiKey` | **REQUIRED**. The name of the header, query or cookie parameter to be used. -in | `string` | `apiKey` \| `httpApiKey` | **REQUIRED**. The location of the API key. Valid values are `"user"` and `"password"` for `apiKey` and `"query"`, `"header"` or `"cookie"` for `httpApiKey`. -scheme | `string` | `http` | **REQUIRED**. The name of the HTTP Authorization scheme to be used in the [Authorization header as defined in RFC7235](https://tools.ietf.org/html/rfc7235#section-5.1). -bearerFormat | `string` | `http` (`"bearer"`) | A hint to the client to identify how the bearer token is formatted. Bearer tokens are usually generated by an authorization server, so this information is primarily for documentation purposes. -flows | [OAuth Flows Object](#oauthFlowsObject) | `oauth2` | **REQUIRED**. An object containing configuration information for the flow types supported. -openIdConnectUrl | `string` | `openIdConnect` | **REQUIRED**. OpenId Connect URL to discover OAuth2 configuration values. This MUST be in the form of an absolute URL. - -This object MAY be extended with [Specification Extensions](#specificationExtensions). - -##### Security Scheme Object Example - -###### User/Password Authentication Sample - -```json -{ - "type": "userPassword" -} -``` - -```yaml -type: userPassword -``` - -###### API Key Authentication Sample - -```json -{ - "type": "apiKey", - "in": "user" -} -``` - -```yaml -type: apiKey, -in: user -``` - -###### X.509 Authentication Sample - -```json -{ - "type": "X509" -} -``` - -```yaml -type: X509 -``` - -###### End-to-end Encryption Authentication Sample - -```json -{ - "type": "symmetricEncryption" -} -``` - -```yaml -type: symmetricEncryption -``` - -###### Basic Authentication Sample - -```json -{ - "type": "http", - "scheme": "basic" -} -``` - -```yaml -type: http -scheme: basic -``` - -###### API Key Sample - -```json -{ - "type": "httpApiKey", - "name": "api_key", - "in": "header" -} -``` - -```yaml -type: httpApiKey -name: api_key -in: header -``` - -###### JWT Bearer Sample - -```json -{ - "type": "http", - "scheme": "bearer", - "bearerFormat": "JWT" -} -``` - -```yaml -type: http -scheme: bearer -bearerFormat: JWT -``` - -###### Implicit OAuth2 Sample - -```json -{ - "type": "oauth2", - "flows": { - "implicit": { - "authorizationUrl": "https://example.com/api/oauth/dialog", - "scopes": { - "write:pets": "modify pets in your account", - "read:pets": "read your pets" - } - } - } -} -``` - -```yaml -type: oauth2 -flows: - implicit: - authorizationUrl: https://example.com/api/oauth/dialog - scopes: - write:pets: modify pets in your account - read:pets: read your pets -``` - -###### SASL Sample - -```json -{ - "type": "scramSha512" -} -``` - -```yaml -type: scramSha512 -``` - -#### OAuth Flows Object - -Allows configuration of the supported OAuth Flows. - -##### Fixed Fields -Field Name | Type | Description ----|:---:|--- -implicit| [OAuth Flow Object](#oauthFlowObject) | Configuration for the OAuth Implicit flow. -password| [OAuth Flow Object](#oauthFlowObject) | Configuration for the OAuth Resource Owner Protected Credentials flow. -clientCredentials| [OAuth Flow Object](#oauthFlowObject) | Configuration for the OAuth Client Credentials flow. -authorizationCode| [OAuth Flow Object](#oauthFlowObject) | Configuration for the OAuth Authorization Code flow. - -This object MAY be extended with [Specification Extensions](#specificationExtensions). - -#### OAuth Flow Object - -Configuration details for a supported OAuth Flow - -##### Fixed Fields -Field Name | Type | Applies To | Description ----|:---:|---|--- -authorizationUrl | `string` | `oauth2` (`"implicit"`, `"authorizationCode"`) | **REQUIRED**. The authorization URL to be used for this flow. This MUST be in the form of an absolute URL. -tokenUrl | `string` | `oauth2` (`"password"`, `"clientCredentials"`, `"authorizationCode"`) | **REQUIRED**. The token URL to be used for this flow. This MUST be in the form of an absolute URL. -refreshUrl | `string` | `oauth2` | The URL to be used for obtaining refresh tokens. This MUST be in the form of an absolute URL. -scopes | Map[`string`, `string`] | `oauth2` | **REQUIRED**. The available scopes for the OAuth2 security scheme. A map between the scope name and a short description for it. - -This object MAY be extended with [Specification Extensions](#specificationExtensions). - -##### OAuth Flow Object Examples - -```JSON -{ - "type": "oauth2", - "flows": { - "implicit": { - "authorizationUrl": "https://example.com/api/oauth/dialog", - "scopes": { - "write:pets": "modify pets in your account", - "read:pets": "read your pets" - } - }, - "authorizationCode": { - "authorizationUrl": "https://example.com/api/oauth/dialog", - "tokenUrl": "https://example.com/api/oauth/token", - "scopes": { - "write:pets": "modify pets in your account", - "read:pets": "read your pets" - } - } - } -} -``` - -```YAML -type: oauth2 -flows: - implicit: - authorizationUrl: https://example.com/api/oauth/dialog - scopes: - write:pets: modify pets in your account - read:pets: read your pets - authorizationCode: - authorizationUrl: https://example.com/api/oauth/dialog - tokenUrl: https://example.com/api/oauth/token - scopes: - write:pets: modify pets in your account - read:pets: read your pets -``` - -#### Security Requirement Object - -Lists the required security schemes to execute this operation. -The name used for each property MUST correspond to a security scheme declared in the [Security Schemes](#componentsSecuritySchemes) under the [Components Object](#componentsObject). - -When a list of Security Requirement Objects is defined on a [Server object](#serverObject), only one of the Security Requirement Objects in the list needs to be satisfied to authorize the connection. - -##### Patterned Fields - -Field Pattern | Type | Description ----|:---:|--- -{name} | [`string`] | Each name MUST correspond to a security scheme which is declared in the [Security Schemes](#componentsSecuritySchemes) under the [Components Object](#componentsObject). If the security scheme is of type `"oauth2"` or `"openIdConnect"`, then the value is a list of scope names. Provide scopes that are required to establish successful connection with the server. If scopes are not needed, the list can be empty. For other security scheme types, the array MUST be empty. - -##### Security Requirement Object Examples - -###### User/Password Security Requirement - -```json -{ - "user_pass": [] -} -``` - -```yaml -user_pass: [] -``` - -###### API Key Security Requirement - -```json -{ - "api_key": [] -} -``` - -```yaml -api_key: [] -``` - -###### OAuth2 Security Requirement - -```json -{ - "petstore_auth": [ - "write:pets", - "read:pets" - ] -} -``` - -```yaml -petstore_auth: -- write:pets -- read:pets -``` - -### Correlation ID Object - -An object that specifies an identifier at design time that can used for message tracing and correlation. - -For specifying and computing the location of a Correlation ID, a [runtime expression](#runtimeExpression) is used. - -##### Fixed Fields - -Field Name | Type | Description ----|:---|--- -description | `string` | An optional description of the identifier. [CommonMark syntax](https://spec.commonmark.org/) can be used for rich text representation. -location | `string` | **REQUIRED.** A [runtime expression](#runtimeExpression) that specifies the location of the correlation ID. - -This object MAY be extended with [Specification Extensions](#specificationExtensions). - -##### Examples - -```json -{ - "description": "Default Correlation ID", - "location": "$message.header#/correlationId" -} -``` - -```yaml -description: Default Correlation ID -location: $message.header#/correlationId -``` - -### Runtime Expression - -A runtime expression allows values to be defined based on information that will be available within the message. -This mechanism is used by [Correlation ID Object](#correlationIdObject). - -The runtime expression is defined by the following [ABNF](https://tools.ietf.org/html/rfc5234) syntax: - -``` - expression = ( "$message" "." source ) - source = ( header-reference | payload-reference ) - header-reference = "header" ["#" fragment] - payload-reference = "payload" ["#" fragment] - fragment = a JSON Pointer [RFC 6901](https://tools.ietf.org/html/rfc6901) -``` - -The table below provides examples of runtime expressions and examples of their use in a value: - -##### Examples - -Source Location | Example expression | Notes ----|:---|:---| -Message Header Property | `$message.header#/MQMD/CorrelId` | Correlation ID is set using the `CorrelId` value from the `MQMD` header. -Message Payload Property | `$message.payload#/messageId` | Correlation ID is set using the `messageId` value from the message payload. - -Runtime expressions preserve the type of the referenced value. - -### Specification Extensions - -While the AsyncAPI Specification tries to accommodate most use cases, additional data can be added to extend the specification at certain points. - -The extensions properties are implemented as patterned fields that are always prefixed by `"x-"`. - -Field Pattern | Type | Description ----|:---:|--- -`^x-[\w\d\-\_]+$` | Any | Allows extensions to the AsyncAPI Schema. The field name MUST begin with `x-`, for example, `x-internal-id`. The value can be `null`, a primitive, an array or an object. Can have any valid JSON format value. - -The extensions may or may not be supported by the available tooling, but those may be extended as well to add requested support (if tools are internal or open-sourced). - -### Data Type Formats - -Primitives have an optional modifier property: `format`. -The AsyncAPI specification uses several known formats to more finely define the data type being used. -However, the `format` property is an open `string`-valued property, and can have any value to support documentation needs. -Formats such as `"email"`, `"uuid"`, etc., can be used even though they are not defined by this specification. -Types that are not accompanied by a `format` property follow their definition from the JSON Schema. -Tools that do not recognize a specific `format` MAY default back to the `type` alone, as if the `format` was not specified. - -The formats defined by the AsyncAPI Specification are: - - -Common Name | `type` | [`format`](#dataTypeFormat) | Comments ------------ | ------ | -------- | -------- -integer | `integer` | `int32` | signed 32 bits -long | `integer` | `int64` | signed 64 bits -float | `number` | `float` | | -double | `number` | `double` | | -string | `string` | | | -byte | `string` | `byte` | base64 encoded characters -binary | `string` | `binary` | any sequence of octets -boolean | `boolean` | | | -date | `string` | `date` | As defined by `full-date` - [RFC3339](https://www.rfc-editor.org/rfc/rfc3339.html#section-5.6) -dateTime | `string` | `date-time` | As defined by `date-time` - [RFC3339](https://www.rfc-editor.org/rfc/rfc3339.html#section-5.6) -password | `string` | `password` | Used to hint UIs the input needs to be obscured. diff --git a/pages/docs/reference/specification/v2.6.0.md b/pages/docs/reference/specification/v2.6.0.md deleted file mode 100644 index f1dacea356e..00000000000 --- a/pages/docs/reference/specification/v2.6.0.md +++ /dev/null @@ -1,2497 +0,0 @@ -# AsyncAPI Specification - -## Disclaimer - -Part of this content has been taken from the great work done by the folks at the [OpenAPI Initiative](https://openapis.org). Mainly because **it's a great work** and we want to keep as much compatibility as possible with the [OpenAPI Specification](https://github.com/OAI/OpenAPI-Specification). - -## Version 2.6.0 - -The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this document are to be interpreted as described in [RFC 2119](https://www.ietf.org/rfc/rfc2119.txt). - -The AsyncAPI Specification is licensed under [The Apache License, Version 2.0](https://www.apache.org/licenses/LICENSE-2.0.html). - -## Introduction - -The AsyncAPI Specification is a project used to describe and document message-driven APIs in a machine-readable format. It’s protocol-agnostic, so you can use it for APIs that work over any protocol (e.g., AMQP, MQTT, WebSockets, Kafka, STOMP, HTTP, Mercure, etc). - -The AsyncAPI Specification defines a set of files required to describe such an API. -These files can then be used to create utilities, such as documentation, integration and/or testing tools. - -The file(s) MUST describe the operations an [application](#definitionsApplication) accepts. For instance, consider the following AsyncAPI definition snippet: - -```yaml -user/signedup: - subscribe: - message: - $ref: "#/components/messages/userSignUp" -``` - -It means that the [application](#definitionsApplication) allows [consumers](#definitionsConsumer) to subscribe to the `user/signedup` [channel](#definitionsChannel) to receive userSignUp [messages](#definitionsMessage) produced by the application. - -**The AsyncAPI specification does not assume any kind of software topology, architecture or pattern.** Therefore, a server MAY be a message broker, a web server or any other kind of computer program capable of sending and/or receiving data. However, AsyncAPI offers a mechanism called "bindings" that aims to help with more specific information about the protocol. - - -## Definitions - -### Server - -A server MAY be a message broker that is capable of sending and/or receiving between a [producer](#definitionsProducer) and [consumer](#definitionsConsumer). A server MAY be a service with WebSocket API that enables message-driven communication between browser-to-server or server-to-server. - -### Application - -An application is any kind of computer program or a group of them. It MUST be a [producer](#definitionsProducer), a [consumer](#definitionsConsumer) or both. An application MAY be a microservice, IoT device (sensor), mainframe process, etc. An application MAY be written in any number of different programming languages as long as they support the selected [protocol](#definitionsProtocol). An application MUST also use a protocol supported by the [server](#definitionsServer) in order to connect and exchange [messages](#definitionsMessage). - -### Producer - -A producer is a type of application, connected to a [server](#definitionsServer), that is creating [messages](#definitionsMessage) and addressing them to [channels](#definitionsChannel). A producer MAY be publishing to multiple channels depending on the [server](#definitionsServer), protocol, and use-case pattern. - -### Consumer - -A consumer is a type of application, connected to a [server](#definitionsServer) via a supported [protocol](#definitionsProtocol), that is consuming [messages](#definitionsMessage) from [channels](#definitionsChannel). A consumer MAY be consuming from multiple channels depending on the [server](#definitionsServer), protocol, and the use-case pattern. - -### Message - -A message is the mechanism by which information is exchanged via a channel between [servers](#definitionsServer) and applications. A message MAY contain a payload and MAY also contain headers. The headers MAY be subdivided into [protocol](#definitionsProtocol)-defined headers and header properties defined by the application which can act as supporting metadata. The payload contains the data, defined by the application, which MUST be serialized into a format (JSON, XML, Avro, binary, etc.). Since a message is a generic mechanism, it can support multiple interaction patterns such as event, command, request, or response. - -### Channel - -A channel is an addressable component, made available by the [server](#definitionsServer), for the organization of [messages](#definitionsMessage). [Producer](#definitionsProducer) applications send messages to channels and [consumer](#definitionsConsumer) applications consume messages from channels. [Servers](#definitionsServer) MAY support many channel instances, allowing messages with different content to be addressed to different channels. Depending on the [server](#definitionsServer) implementation, the channel MAY be included in the message via protocol-defined headers. - -### Protocol - -A protocol is the mechanism (wireline protocol or API) by which [messages](#definitionsMessage) are exchanged between the application and the [channel](#definitionsChannel). Example protocols include, but are not limited to, AMQP, HTTP, JMS, Kafka, Anypoint MQ, MQTT, Solace, STOMP, Mercure, WebSocket, Google Pub/Sub, Pulsar. - -### Bindings - -A "binding" (or "protocol binding") is a mechanism to define protocol-specific information. Therefore, a protocol binding MUST define protocol-specific information only. - -## Specification - -### Format - -The files describing the message-driven API in accordance with the AsyncAPI Specification are represented as JSON objects and conform to the JSON standards. -YAML, being a superset of JSON, can be used as well to represent a A2S (AsyncAPI Specification) file. - -For example, if a field is said to have an array value, the JSON array representation will be used: - -```yaml -{ - "field" : [...] -} -``` - -While the API is described using JSON it does not impose a JSON input/output to the API itself. - -All field names in the specification are **case sensitive**. - -The schema exposes two types of fields. -Fixed fields, which have a declared name, and Patterned fields, which declare a regex pattern for the field name. -Patterned fields can have multiple occurrences as long as each has a unique name. - -In order to preserve the ability to round-trip between YAML and JSON formats, YAML version [1.2](https://www.yaml.org/spec/1.2/spec.html) is recommended along with some additional constraints: - -- Tags MUST be limited to those allowed by the [JSON Schema ruleset](https://www.yaml.org/spec/1.2/spec.html#id2803231) -- Keys used in YAML maps MUST be limited to a scalar string, as defined by the YAML Failsafe schema ruleset - -### File Structure - -An AsyncAPI document MAY be made up of a single document or be divided into multiple, -connected parts at the discretion of the author. In the latter case, [Reference Objects](#referenceObject) are used. - -By convention, the AsyncAPI Specification (A2S) file is named `asyncapi.json` or `asyncapi.yaml`. - -### Absolute URLs - -Unless specified otherwise, all properties that are absolute URLs are defined by [RFC3986, section 4.3](https://datatracker.ietf.org/doc/html/rfc3986#section-4.3). - -### Schema - -#### AsyncAPI Object - -This is the root document object for the API specification. -It combines resource listing and API declaration together into one document. - -##### Fixed Fields - -Field Name | Type | Description ----|:---:|--- -asyncapi | [AsyncAPI Version String](#A2SVersionString) | **REQUIRED.** Specifies the AsyncAPI Specification version being used. It can be used by tooling Specifications and clients to interpret the version. The structure shall be `major`.`minor`.`patch`, where `patch` versions _must_ be compatible with the existing `major`.`minor` tooling. Typically patch versions will be introduced to address errors in the documentation, and tooling should typically be compatible with the corresponding `major`.`minor` (1.0.*). Patch versions will correspond to patches of this document. -id | [Identifier](#A2SIdString) | Identifier of the [application](#definitionsApplication) the AsyncAPI document is defining. -info | [Info Object](#infoObject) | **REQUIRED.** Provides metadata about the API. The metadata can be used by the clients if needed. -servers | [Servers Object](#serversObject) | Provides connection details of servers. -defaultContentType | [Default Content Type](#defaultContentTypeString) | Default content type to use when encoding/decoding a message's payload. -channels | [Channels Object](#channelsObject) | **REQUIRED** The available channels and messages for the API. -components | [Components Object](#componentsObject) | An element to hold various schemas for the specification. -tags | [Tags Object](#tagsObject) | A list of tags used by the specification with additional metadata. Each tag name in the list MUST be unique. -externalDocs | [External Documentation Object](#externalDocumentationObject) | Additional external documentation. - -This object MAY be extended with [Specification Extensions](#specificationExtensions). - -#### AsyncAPI Version String - -The version string signifies the version of the AsyncAPI Specification that the document complies to. -The format for this string _must_ be `major`.`minor`.`patch`. The `patch` _may_ be suffixed by a hyphen and extra alphanumeric characters. - -A `major`.`minor` shall be used to designate the AsyncAPI Specification version, and will be considered compatible with the AsyncAPI Specification specified by that `major`.`minor` version. -The patch version will not be considered by tooling, making no distinction between `1.0.0` and `1.0.1`. - -In subsequent versions of the AsyncAPI Specification, care will be given such that increments of the `minor` version should not interfere with operations of tooling developed to a lower minor version. Thus a hypothetical `1.1.0` specification should be usable with tooling designed for `1.0.0`. - -#### Identifier - -This field represents a unique universal identifier of the [application](#definitionsApplication) the AsyncAPI document is defining. It must conform to the URI format, according to [RFC3986](https://tools.ietf.org/html/rfc3986). - -It is RECOMMENDED to use a [URN](https://tools.ietf.org/html/rfc8141) to globally and uniquely identify the application during long periods of time, even after it becomes unavailable or ceases to exist. - -##### Examples - -```json -{ - "id": "urn:example:com:smartylighting:streetlights:server" -} -``` - -```yaml -id: 'urn:example:com:smartylighting:streetlights:server' -``` - -```json -{ - "id": "https://github.com/smartylighting/streetlights-server" -} -``` - -```yaml -id: 'https://github.com/smartylighting/streetlights-server' -``` - -#### Info Object - -The object provides metadata about the API. -The metadata can be used by the clients if needed. - -##### Fixed Fields - -Field Name | Type | Description ----|:---:|--- -title | `string` | **REQUIRED.** The title of the application. -version | `string` | **REQUIRED** Provides the version of the application API (not to be confused with the specification version). -description | `string` | A short description of the application. [CommonMark syntax](https://spec.commonmark.org/) can be used for rich text representation. -termsOfService | `string` | A URL to the Terms of Service for the API. This MUST be in the form of an absolute URL. -contact | [Contact Object](#contactObject) | The contact information for the exposed API. -license | [License Object](#licenseObject) | The license information for the exposed API. - -This object MAY be extended with [Specification Extensions](#specificationExtensions). - -##### Info Object Example - -```json -{ - "title": "AsyncAPI Sample App", - "description": "This is a sample server.", - "termsOfService": "https://asyncapi.org/terms/", - "contact": { - "name": "API Support", - "url": "https://www.asyncapi.org/support", - "email": "support@asyncapi.org" - }, - "license": { - "name": "Apache 2.0", - "url": "https://www.apache.org/licenses/LICENSE-2.0.html" - }, - "version": "1.0.1" -} -``` - -```yaml -title: AsyncAPI Sample App -description: This is a sample server. -termsOfService: https://asyncapi.org/terms/ -contact: - name: API Support - url: https://www.asyncapi.org/support - email: support@asyncapi.org -license: - name: Apache 2.0 - url: https://www.apache.org/licenses/LICENSE-2.0.html -version: 1.0.1 -``` - -#### Contact Object - -Contact information for the exposed API. - -##### Fixed Fields - -Field Name | Type | Description ----|:---:|--- -name | `string` | The identifying name of the contact person/organization. -url | `string` | The URL pointing to the contact information. This MUST be in the form of an absolute URL. -email | `string` | The email address of the contact person/organization. MUST be in the format of an email address. - -This object MAY be extended with [Specification Extensions](#specificationExtensions). - -##### Contact Object Example - -```json -{ - "name": "API Support", - "url": "https://www.example.com/support", - "email": "support@example.com" -} -``` - -```yaml -name: API Support -url: https://www.example.com/support -email: support@example.com -``` - -#### License Object - -License information for the exposed API. - -##### Fixed Fields - -Field Name | Type | Description ----|:---:|--- -name | `string` | **REQUIRED.** The license name used for the API. -url | `string` | A URL to the license used for the API. This MUST be in the form of an absolute URL. - -This object MAY be extended with [Specification Extensions](#specificationExtensions). - -##### License Object Example - -```json -{ - "name": "Apache 2.0", - "url": "https://www.apache.org/licenses/LICENSE-2.0.html" -} -``` - -```yaml -name: Apache 2.0 -url: https://www.apache.org/licenses/LICENSE-2.0.html -``` - -#### Servers Object - -The Servers Object is a map of [Server Objects](#serverObject). - -##### Patterned Fields - -Field Pattern | Type | Description ----|:---:|--- -`^[A-Za-z0-9_\-]+$` | [Server Object](#serverObject) \| [Reference Object](#referenceObject) | The definition of a server this application MAY connect to. - -##### Servers Object Example - -```json -{ - "production": { - "url": "development.gigantic-server.com", - "description": "Development server", - "protocol": "kafka", - "protocolVersion": "1.0.0" - } -} -``` - -```yaml -production: - url: development.gigantic-server.com - description: Development server - protocol: kafka - protocolVersion: '1.0.0' -``` - -#### Server Object - -An object representing a message broker, a server or any other kind of computer program capable of sending and/or receiving data. This object is used to capture details such as URIs, protocols and security configuration. Variable substitution can be used so that some details, for example usernames and passwords, can be injected by code generation tools. - -##### Fixed Fields - -Field Name | Type | Description ----|:---:|--- -url | `string` | **REQUIRED**. A URL to the target host. This URL supports Server Variables and MAY be relative, to indicate that the host location is relative to the location where the AsyncAPI document is being served. Variable substitutions will be made when a variable is named in `{`braces`}`. -protocol | `string` | **REQUIRED**. The protocol this URL supports for connection. Supported protocol include, but are not limited to: `amqp`, `amqps`, `http`, `https`, `ibmmq`, `jms`, `kafka`, `kafka-secure`, `anypointmq`, `mqtt`, `secure-mqtt`, `solace`, `stomp`, `stomps`, `ws`, `wss`, `mercure`, `googlepubsub`, `pulsar`. -protocolVersion | `string` | The version of the protocol used for connection. For instance: AMQP `0.9.1`, HTTP `2.0`, Kafka `1.0.0`, etc. -description | `string` | An optional string describing the host designated by the URL. [CommonMark syntax](https://spec.commonmark.org/) MAY be used for rich text representation. -variables | Map[`string`, [Server Variable Object](#serverVariableObject) \| [Reference Object](#referenceObject)]] | A map between a variable name and its value. The value is used for substitution in the server's URL template. -security | [[Security Requirement Object](#securityRequirementObject)] | A declaration of which security mechanisms can be used with this server. The list of values includes alternative security requirement objects that can be used. Only one of the security requirement objects need to be satisfied to authorize a connection or operation. -tags | [Tags Object](#tagsObject) | A list of tags for logical grouping and categorization of servers. -bindings | [Server Bindings Object](#serverBindingsObject) \| [Reference Object](#referenceObject) | A map where the keys describe the name of the protocol and the values describe protocol-specific definitions for the server. - -This object MAY be extended with [Specification Extensions](#specificationExtensions). - -##### Server Object Example - -A single server would be described as: - -```json -{ - "url": "development.gigantic-server.com", - "description": "Development server", - "protocol": "kafka", - "protocolVersion": "1.0.0" -} -``` - -```yaml -url: development.gigantic-server.com -description: Development server -protocol: kafka -protocolVersion: '1.0.0' -``` - -The following shows how multiple servers can be described, for example, at the AsyncAPI Object's [`servers`](#A2SServers): - -```json -{ - "servers": { - "development": { - "url": "development.gigantic-server.com", - "description": "Development server", - "protocol": "amqp", - "protocolVersion": "0.9.1", - "tags": [ - { - "name": "env:development", - "description": "This environment is meant for developers to run their own tests" - } - ] - }, - "staging": { - "url": "staging.gigantic-server.com", - "description": "Staging server", - "protocol": "amqp", - "protocolVersion": "0.9.1", - "tags": [ - { - "name": "env:staging", - "description": "This environment is a replica of the production environment" - } - ] - }, - "production": { - "url": "api.gigantic-server.com", - "description": "Production server", - "protocol": "amqp", - "protocolVersion": "0.9.1", - "tags": [ - { - "name": "env:production", - "description": "This environment is the live environment available for final users" - } - ] - } - } -} -``` - -```yaml -servers: - development: - url: development.gigantic-server.com - description: Development server - protocol: amqp - protocolVersion: 0.9.1 - tags: - - name: "env:development" - description: "This environment is meant for developers to run their own tests" - staging: - url: staging.gigantic-server.com - description: Staging server - protocol: amqp - protocolVersion: 0.9.1 - tags: - - name: "env:staging" - description: "This environment is a replica of the production environment" - production: - url: api.gigantic-server.com - description: Production server - protocol: amqp - protocolVersion: 0.9.1 - tags: - - name: "env:production" - description: "This environment is the live environment available for final users" -``` - -The following shows how variables can be used for a server configuration: - -```json -{ - "servers": { - "production": { - "url": "{username}.gigantic-server.com:{port}/{basePath}", - "description": "The production API server", - "protocol": "secure-mqtt", - "variables": { - "username": { - "default": "demo", - "description": "This value is assigned by the service provider, in this example `gigantic-server.com`" - }, - "port": { - "enum": [ - "8883", - "8884" - ], - "default": "8883" - }, - "basePath": { - "default": "v2" - } - } - } - } -} -``` - -```yaml -servers: - production: - url: '{username}.gigantic-server.com:{port}/{basePath}' - description: The production API server - protocol: secure-mqtt - variables: - username: - # note! no enum here means it is an open value - default: demo - description: This value is assigned by the service provider, in this example `gigantic-server.com` - port: - enum: - - '8883' - - '8884' - default: '8883' - basePath: - # open meaning there is the opportunity to use special base paths as assigned by the provider, default is `v2` - default: v2 -``` - -#### Server Variable Object - -An object representing a Server Variable for server URL template substitution. - -##### Fixed Fields - -Field Name | Type | Description ----|:---:|--- -enum | [`string`] | An enumeration of string values to be used if the substitution options are from a limited set. -default | `string` | The default value to use for substitution, and to send, if an alternate value is _not_ supplied. -description | `string` | An optional description for the server variable. [CommonMark syntax](https://spec.commonmark.org/) MAY be used for rich text representation. -examples | [`string`] | An array of examples of the server variable. - -This object MAY be extended with [Specification Extensions](#specificationExtensions). - -#### Default Content Type - -A string representing the default content type to use when encoding/decoding a message's payload. The value MUST be a specific media type (e.g. `application/json`). This value MUST be used by schema parsers when the [contentType](#messageObjectContentType) property is omitted. - -In case a message can't be encoded/decoded using this value, schema parsers MUST use their default content type. - -##### Default Content Type Example - -```json -{ - "defaultContentType": "application/json" -} -``` - -```yaml -defaultContentType: application/json -``` - -#### Channels Object - -Holds the relative paths to the individual channel and their operations. Channel paths are relative to servers. - -Channels are also known as "topics", "routing keys", "event types" or "paths". - -##### Patterned Fields - -Field Pattern | Type | Description ----|:---:|--- -{channel} | [Channel Item Object](#channelItemObject) | A relative path to an individual channel. The field name MUST be in the form of a [RFC 6570 URI template](https://tools.ietf.org/html/rfc6570). Query parameters and fragments SHALL NOT be used, instead use [bindings](#channelBindingsObject) to define them. - -##### Channels Object Example - -```json -{ - "user/signedup": { - "subscribe": { - "message": { - "$ref": "#/components/messages/userSignedUp" - } - } - } -} -``` - -```yaml -user/signedup: - subscribe: - message: - $ref: "#/components/messages/userSignedUp" -``` - -#### Channel Item Object - -Describes the operations available on a single channel. - -##### Fixed Fields - -Field Name | Type | Description ----|:---:|--- -$ref | `string` | Allows for a referenced definition of this channel item. The referenced structure MUST be in the form of a [Channel Item Object](#channelItemObject). In case a Channel Item Object field appears both in the defined object and the referenced object, the behavior is _undefined_. Resolution is done as defined by the [JSON Reference](https://tools.ietf.org/html/draft-pbryan-zyp-json-ref-03).

**Deprecated:** Using the $ref property with other properties is deprecated since the 2.3.0 version of the specification. -description | `string` | An optional description of this channel item. [CommonMark syntax](https://spec.commonmark.org/) can be used for rich text representation. -servers | [`string`] | The servers on which this channel is available, specified as an optional unordered list of names (string keys) of [Server Objects](#serverObject) defined in the [Servers Object](#serversObject) (a map). If `servers` is absent or empty then this channel must be available on all servers defined in the [Servers Object](#serversObject). -subscribe | [Operation Object](#operationObject) | A definition of the SUBSCRIBE operation, which defines the messages produced by the application and sent to the channel. -publish | [Operation Object](#operationObject) | A definition of the PUBLISH operation, which defines the messages consumed by the application from the channel. -parameters | [Parameters Object](#parametersObject) | A map of the parameters included in the channel name. It SHOULD be present only when using channels with expressions (as defined by [RFC 6570 section 2.2](https://tools.ietf.org/html/rfc6570#section-2.2)). -bindings | [Channel Bindings Object](#channelBindingsObject) \| [Reference Object](#referenceObject) | A map where the keys describe the name of the protocol and the values describe protocol-specific definitions for the channel. - -This object MAY be extended with [Specification Extensions](#specificationExtensions). - -##### Channel Item Object Example - -```json -{ - "description": "This channel is used to exchange messages about users signing up", - "subscribe": { - "summary": "A user signed up.", - "message": { - "description": "A longer description of the message", - "payload": { - "type": "object", - "properties": { - "user": { - "$ref": "#/components/schemas/user" - }, - "signup": { - "$ref": "#/components/schemas/signup" - } - } - } - } - }, - "bindings": { - "amqp": { - "is": "queue", - "queue": { - "exclusive": true - } - } - } -} -``` - -```yaml -description: This channel is used to exchange messages about users signing up -subscribe: - summary: A user signed up. - message: - description: A longer description of the message - payload: - type: object - properties: - user: - $ref: "#/components/schemas/user" - signup: - $ref: "#/components/schemas/signup" -bindings: - amqp: - is: queue - queue: - exclusive: true -``` - -Using `oneOf` to specify multiple messages per operation: - -```json -{ - "subscribe": { - "message": { - "oneOf": [ - { "$ref": "#/components/messages/signup" }, - { "$ref": "#/components/messages/login" } - ] - } - } -} -``` - -```yaml -subscribe: - message: - oneOf: - - $ref: '#/components/messages/signup' - - $ref: '#/components/messages/login' -``` - -Using explicit by-name references to the servers on which the channel is available: - -```json -{ - "description": "This application publishes WebUICommand messages to an AMQP queue on RabbitMQ brokers in the Staging and Production environments.", - "servers": [ - "rabbitmqBrokerInProd", - "rabbitmqBrokerInStaging", - ], - "subscribe": { - "message": { - "$ref": "#/components/messages/WebUICommand" - } - }, - "bindings": { - "amqp": { - "is": "queue" - } - } -} -``` - -```yaml -description: This application publishes WebUICommand messages to an AMQP queue on RabbitMQ brokers in the Staging and Production environments. -servers: - - rabbitmqBrokerInProd - - rabbitmqBrokerInStaging -subscribe: - message: - $ref: "#/components/messages/WebUICommand" -bindings: - amqp: - is: queue -``` - -#### Operation Object - -Describes a publish or a subscribe operation. This provides a place to document how and why messages are sent and received. - -For example, an operation might describe a chat application use case where a user sends a text message to a group. A publish operation describes messages that are received by the chat application, whereas a subscribe operation describes messages that are sent by the chat application. - -##### Fixed Fields - -Field Name | Type | Description ----|:---:|--- -operationId | `string` | Unique string used to identify the operation. The id MUST be unique among all operations described in the API. The operationId value is **case-sensitive**. Tools and libraries MAY use the operationId to uniquely identify an operation, therefore, it is RECOMMENDED to follow common programming naming conventions. -summary | `string` | A short summary of what the operation is about. -description | `string` | A verbose explanation of the operation. [CommonMark syntax](http://spec.commonmark.org/) can be used for rich text representation. -security | [[Security Requirement Object](#securityRequirementObject)]| A declaration of which security mechanisms are associated with this operation. Only one of the security requirement objects MUST be satisfied to authorize an operation. In cases where Server Security also applies, it MUST also be satisfied. -tags | [Tags Object](#tagsObject) | A list of tags for logical grouping and categorization of operations. -externalDocs | [External Documentation Object](#externalDocumentationObject) | Additional external documentation for this operation. -bindings | [Operation Bindings Object](#operationBindingsObject) \| [Reference Object](#referenceObject) | A map where the keys describe the name of the protocol and the values describe protocol-specific definitions for the operation. -traits | [[Operation Trait Object](#operationTraitObject) | [Reference Object](#referenceObject) ] | A list of traits to apply to the operation object. Traits MUST be merged into the operation object using the [JSON Merge Patch](https://tools.ietf.org/html/rfc7386) algorithm in the same order they are defined here. -message | [Message Object](#messageObject) | [Reference Object](#referenceObject) | Map["oneOf", [[Message Object](#messageObject) | [Reference Object](#referenceObject)]] | A definition of the message that will be published or received by this operation. Map containing a single `oneOf` key is allowed here to specify multiple messages. However, **a message MUST be valid only against one of the message objects.** - -This object MAY be extended with [Specification Extensions](#specificationExtensions). - -##### Operation Object Example - -```json -{ - "operationId": "registerUser", - "summary": "Action to sign a user up.", - "description": "A longer description", - "security": [ - { - "petstore_auth": [ - "write:pets", - "read:pets" - ] - } - ], - "tags": [ - { "name": "user" }, - { "name": "signup" }, - { "name": "register" } - ], - "message": { - "headers": { - "type": "object", - "properties": { - "applicationInstanceId": { - "description": "Unique identifier for a given instance of the publishing application", - "type": "string" - } - } - }, - "payload": { - "type": "object", - "properties": { - "user": { - "$ref": "#/components/schemas/userCreate" - }, - "signup": { - "$ref": "#/components/schemas/signup" - } - } - } - }, - "bindings": { - "amqp": { - "ack": false - } - }, - "traits": [ - { "$ref": "#/components/operationTraits/kafka" } - ] -} -``` - -```yaml -operationId: registerUser -summary: Action to sign a user up. -description: A longer description -security: - - petstore_auth: - - write:pets - - read:pets -tags: - - name: user - - name: signup - - name: register -message: - headers: - type: object - properties: - applicationInstanceId: - description: Unique identifier for a given instance of the publishing application - type: string - payload: - type: object - properties: - user: - $ref: "#/components/schemas/userCreate" - signup: - $ref: "#/components/schemas/signup" -bindings: - amqp: - ack: false -traits: - - $ref: "#/components/operationTraits/kafka" -``` - -#### Operation Trait Object - -Describes a trait that MAY be applied to an [Operation Object](#operationObject). This object MAY contain any property from the [Operation Object](#operationObject), except `message` and `traits`. - -If you're looking to apply traits to a message, see the [Message Trait Object](#messageTraitObject). - -##### Fixed Fields - -Field Name | Type | Description ----|:---:|--- -operationId | `string` | Unique string used to identify the operation. The id MUST be unique among all operations described in the API. The operationId value is **case-sensitive**. Tools and libraries MAY use the operationId to uniquely identify an operation, therefore, it is RECOMMENDED to follow common programming naming conventions. -summary | `string` | A short summary of what the operation is about. -description | `string` | A verbose explanation of the operation. [CommonMark syntax](https://spec.commonmark.org/) can be used for rich text representation. -security | [[Security Requirement Object](#securityRequirementObject)]| A declaration of which security mechanisms are associated with this operation. Only one of the security requirement objects MUST be satisfied to authorize an operation. In cases where Server Security also applies, it MUST also be satisfied. -tags | [Tags Object](#tagsObject) | A list of tags for logical grouping and categorization of operations. -externalDocs | [External Documentation Object](#externalDocumentationObject) | Additional external documentation for this operation. -bindings | [Operation Bindings Object](#operationBindingsObject) \| [Reference Object](#referenceObject) | A map where the keys describe the name of the protocol and the values describe protocol-specific definitions for the operation. - -This object MAY be extended with [Specification Extensions](#specificationExtensions). - -##### Operation Trait Object Example - -```json -{ - "bindings": { - "amqp": { - "ack": false - } - } -} -``` - -```yaml -bindings: - amqp: - ack: false -``` - -#### Parameters Object - -Describes a map of parameters included in a channel name. - -This map MUST contain all the parameters used in the parent channel name. - -##### Patterned Fields - -Field Pattern | Type | Description ----|:---:|--- -`^[A-Za-z0-9_\-]+$` | [Parameter Object](#parameterObject) | [Reference Object](#referenceObject) | The key represents the name of the parameter. It MUST match the parameter name used in the parent channel name. - -##### Parameters Object Example - -```json -{ - "user/{userId}/signup": { - "parameters": { - "userId": { - "description": "Id of the user.", - "schema": { - "type": "string" - } - } - }, - "subscribe": { - "message": { - "$ref": "#/components/messages/userSignedUp" - } - } - } -} -``` - -```yaml -user/{userId}/signup: - parameters: - userId: - description: Id of the user. - schema: - type: string - subscribe: - message: - $ref: "#/components/messages/userSignedUp" -``` - -#### Parameter Object - -Describes a parameter included in a channel name. - -##### Fixed Fields - -Field Name | Type | Description ----|:---:|--- -description | `string` | A verbose explanation of the parameter. [CommonMark syntax](https://spec.commonmark.org/) can be used for rich text representation. -schema | [Schema Object](#schemaObject) \| [Reference Object](#referenceObject) | Definition of the parameter. -location | `string` | A [runtime expression](#runtimeExpression) that specifies the location of the parameter value. Even when a definition for the target field exists, it MUST NOT be used to validate this parameter but, instead, the `schema` property MUST be used. - -This object MAY be extended with [Specification Extensions](#specificationExtensions). - -##### Parameter Object Example - -```json -{ - "user/{userId}/signup": { - "parameters": { - "userId": { - "description": "Id of the user.", - "schema": { - "type": "string" - }, - "location": "$message.payload#/user/id" - } - }, - "subscribe": { - "message": { - "$ref": "#/components/messages/userSignedUp" - } - } - } -} -``` - -```yaml -user/{userId}/signup: - parameters: - userId: - description: Id of the user. - schema: - type: string - location: $message.payload#/user/id - subscribe: - message: - $ref: "#/components/messages/userSignedUp" -``` - -#### Server Bindings Object - -Map describing protocol-specific definitions for a server. - -##### Fixed Fields - -Field Name | Type | Description ----|:---:|--- -`http` | [HTTP Server Binding](https://github.com/asyncapi/bindings/blob/master/http#server) | Protocol-specific information for an HTTP server. -`ws` | [WebSockets Server Binding](https://github.com/asyncapi/bindings/blob/master/websockets#server) | Protocol-specific information for a WebSockets server. -`kafka` | [Kafka Server Binding](https://github.com/asyncapi/bindings/blob/master/kafka#server) | Protocol-specific information for a Kafka server. -`anypointmq` | [Anypoint MQ Server Binding](https://github.com/asyncapi/bindings/blob/master/anypointmq#server) | Protocol-specific information for an Anypoint MQ server. -`amqp` | [AMQP Server Binding](https://github.com/asyncapi/bindings/blob/master/amqp#server) | Protocol-specific information for an AMQP 0-9-1 server. -`amqp1` | [AMQP 1.0 Server Binding](https://github.com/asyncapi/bindings/blob/master/amqp1#server) | Protocol-specific information for an AMQP 1.0 server. -`mqtt` | [MQTT Server Binding](https://github.com/asyncapi/bindings/blob/master/mqtt#server) | Protocol-specific information for an MQTT server. -`mqtt5` | [MQTT 5 Server Binding](https://github.com/asyncapi/bindings/blob/master/mqtt5#server) | Protocol-specific information for an MQTT 5 server. -`nats` | [NATS Server Binding](https://github.com/asyncapi/bindings/blob/master/nats#server) | Protocol-specific information for a NATS server. -`jms` | [JMS Server Binding](https://github.com/asyncapi/bindings/blob/master/jms#server) | Protocol-specific information for a JMS server. -`sns` | [SNS Server Binding](https://github.com/asyncapi/bindings/blob/master/sns#server) | Protocol-specific information for an SNS server. -`solace` | [Solace Server Binding](https://github.com/asyncapi/bindings/blob/master/solace#server) | Protocol-specific information for a Solace server. -`sqs` | [SQS Server Binding](https://github.com/asyncapi/bindings/blob/master/sqs#server) | Protocol-specific information for an SQS server. -`stomp` | [STOMP Server Binding](https://github.com/asyncapi/bindings/blob/master/stomp#server) | Protocol-specific information for a STOMP server. -`redis` | [Redis Server Binding](https://github.com/asyncapi/bindings/blob/master/redis#server) | Protocol-specific information for a Redis server. -`mercure` | [Mercure Server Binding](https://github.com/asyncapi/bindings/blob/master/mercure#server) | Protocol-specific information for a Mercure server. -`ibmmq` | [IBM MQ Server Binding](https://github.com/asyncapi/bindings/blob/master/ibmmq#server-binding-object) | Protocol-specific information for an IBM MQ server. -`googlepubsub` | [Google Cloud Pub/Sub Server Binding](https://github.com/asyncapi/bindings/blob/master/googlepubsub#server) | Protocol-specific information for a Google Cloud Pub/Sub server. -`pulsar` | [Pulsar Server Binding](https://github.com/asyncapi/bindings/tree/master/pulsar#server-binding-object) | Protocol-specific information for a Pulsar server. - -This object MAY be extended with [Specification Extensions](#specificationExtensions). - -#### Channel Bindings Object - -Map describing protocol-specific definitions for a channel. - -##### Fixed Fields - -Field Name | Type | Description ----|:---:|--- -`http` | [HTTP Channel Binding](https://github.com/asyncapi/bindings/blob/master/http/README.md#channel) | Protocol-specific information for an HTTP channel. -`ws` | [WebSockets Channel Binding](https://github.com/asyncapi/bindings/blob/master/websockets/README.md#channel) | Protocol-specific information for a WebSockets channel. -`kafka` | [Kafka Channel Binding](https://github.com/asyncapi/bindings/blob/master/kafka/README.md#channel) | Protocol-specific information for a Kafka channel. -`anypointmq` | [Anypoint MQ Channel Binding](https://github.com/asyncapi/bindings/blob/master/anypointmq/README.md#channel) | Protocol-specific information for an Anypoint MQ channel. -`amqp` | [AMQP Channel Binding](https://github.com/asyncapi/bindings/blob/master/amqp/README.md#channel) | Protocol-specific information for an AMQP 0-9-1 channel. -`amqp1` | [AMQP 1.0 Channel Binding](https://github.com/asyncapi/bindings/blob/master/amqp1/README.md#channel) | Protocol-specific information for an AMQP 1.0 channel. -`mqtt` | [MQTT Channel Binding](https://github.com/asyncapi/bindings/blob/master/mqtt/README.md#channel) | Protocol-specific information for an MQTT channel. -`mqtt5` | [MQTT 5 Channel Binding](https://github.com/asyncapi/bindings/blob/master/mqtt5#channel) | Protocol-specific information for an MQTT 5 channel. -`nats` | [NATS Channel Binding](https://github.com/asyncapi/bindings/blob/master/nats/README.md#channel) | Protocol-specific information for a NATS channel. -`jms` | [JMS Channel Binding](https://github.com/asyncapi/bindings/blob/master/jms/README.md#channel) | Protocol-specific information for a JMS channel. -`sns` | [SNS Channel Binding](https://github.com/asyncapi/bindings/blob/master/sns/README.md#channel) | Protocol-specific information for an SNS channel. -`solace` | [Solace Channel Binding](https://github.com/asyncapi/bindings/blob/master/solace#channel) | Protocol-specific information for a Solace channel. -`sqs` | [SQS Channel Binding](https://github.com/asyncapi/bindings/blob/master/sqs/README.md#channel) | Protocol-specific information for an SQS channel. -`stomp` | [STOMP Channel Binding](https://github.com/asyncapi/bindings/blob/master/stomp/README.md#channel) | Protocol-specific information for a STOMP channel. -`redis` | [Redis Channel Binding](https://github.com/asyncapi/bindings/blob/master/redis#channel) | Protocol-specific information for a Redis channel. -`mercure` | [Mercure Channel Binding](https://github.com/asyncapi/bindings/blob/master/mercure#channel) | Protocol-specific information for a Mercure channel. -`ibmmq` | [IBM MQ Channel Binding](https://github.com/asyncapi/bindings/tree/master/ibmmq#channel-binding-object) | Protocol-specific information for an IBM MQ channel. -`googlepubsub` | [Google Cloud Pub/Sub Channel Binding](https://github.com/asyncapi/bindings/tree/master/googlepubsub#channel) | Protocol-specific information for a Google Cloud Pub/Sub channel. -`pulsar` | [Pulsar Channel Binding](https://github.com/asyncapi/bindings/tree/master/pulsar#channel-binding-object) | Protocol-specific information for a Pulsar channel. - -This object MAY be extended with [Specification Extensions](#specificationExtensions). - -#### Operation Bindings Object - -Map describing protocol-specific definitions for an operation. - -##### Fixed Fields - -Field Name | Type | Description ----|:---:|--- -`http` | [HTTP Operation Binding](https://github.com/asyncapi/bindings/blob/master/http/README.md#operation) | Protocol-specific information for an HTTP operation. -`ws` | [WebSockets Operation Binding](https://github.com/asyncapi/bindings/blob/master/websockets/README.md#operation) | Protocol-specific information for a WebSockets operation. -`kafka` | [Kafka Operation Binding](https://github.com/asyncapi/bindings/blob/master/kafka/README.md#operation) | Protocol-specific information for a Kafka operation. -`anypointmq` | [Anypoint MQ Operation Binding](https://github.com/asyncapi/bindings/blob/master/anypointmq/README.md#operation) | Protocol-specific information for an Anypoint MQ operation. -`amqp` | [AMQP Operation Binding](https://github.com/asyncapi/bindings/blob/master/amqp/README.md#operation) | Protocol-specific information for an AMQP 0-9-1 operation. -`amqp1` | [AMQP 1.0 Operation Binding](https://github.com/asyncapi/bindings/blob/master/amqp1/README.md#operation) | Protocol-specific information for an AMQP 1.0 operation. -`mqtt` | [MQTT Operation Binding](https://github.com/asyncapi/bindings/blob/master/mqtt/README.md#operation) | Protocol-specific information for an MQTT operation. -`mqtt5` | [MQTT 5 Operation Binding](https://github.com/asyncapi/bindings/blob/master/mqtt5/README.md#operation) | Protocol-specific information for an MQTT 5 operation. -`nats` | [NATS Operation Binding](https://github.com/asyncapi/bindings/blob/master/nats/README.md#operation) | Protocol-specific information for a NATS operation. -`jms` | [JMS Operation Binding](https://github.com/asyncapi/bindings/blob/master/jms/README.md#operation) | Protocol-specific information for a JMS operation. -`sns` | [SNS Operation Binding](https://github.com/asyncapi/bindings/blob/master/sns/README.md#operation) | Protocol-specific information for an SNS operation. -`solace` | [Solace Operation Binding](https://github.com/asyncapi/bindings/blob/master/solace#operation) | Protocol-specific information for a Solace operation. -`sqs` | [SQS Operation Binding](https://github.com/asyncapi/bindings/blob/master/sqs/README.md#operation) | Protocol-specific information for an SQS operation. -`stomp` | [STOMP Operation Binding](https://github.com/asyncapi/bindings/blob/master/stomp/README.md#operation) | Protocol-specific information for a STOMP operation. -`redis` | [Redis Operation Binding](https://github.com/asyncapi/bindings/blob/master/redis#operation) | Protocol-specific information for a Redis operation. -`mercure` | [Mercure Operation Binding](https://github.com/asyncapi/bindings/blob/master/mercure#operation) | Protocol-specific information for a Mercure operation. -`googlepubsub` | [Google Cloud Pub/Sub Operation Binding](https://github.com/asyncapi/bindings/blob/master/googlepubsub#operation) | Protocol-specific information for a Google Cloud Pub/Sub operation. -`ibmmq` | [IBM MQ Operation Binding](https://github.com/asyncapi/bindings/blob/master/ibmmq#operation-binding-object) | Protocol-specific information for an IBM MQ operation. -`pulsar` | [Pulsar Operation Binding](https://github.com/asyncapi/bindings/tree/master/pulsar#operation-binding-fields) | Protocol-specific information for a Pulsar operation. - -This object MAY be extended with [Specification Extensions](#specificationExtensions). - -#### Message Bindings Object - -Map describing protocol-specific definitions for a message. - -##### Fixed Fields - -Field Name | Type | Description ----|:---:|--- -`http` | [HTTP Message Binding](https://github.com/asyncapi/bindings/blob/master/http/README.md#message) | Protocol-specific information for an HTTP message, i.e., a request or a response. -`ws` | [WebSockets Message Binding](https://github.com/asyncapi/bindings/blob/master/websockets/README.md#message) | Protocol-specific information for a WebSockets message. -`kafka` | [Kafka Message Binding](https://github.com/asyncapi/bindings/blob/master/kafka/README.md#message) | Protocol-specific information for a Kafka message. -`anypointmq` | [Anypoint MQ Message Binding](https://github.com/asyncapi/bindings/blob/master/anypointmq/README.md#message) | Protocol-specific information for an Anypoint MQ message. -`amqp` | [AMQP Message Binding](https://github.com/asyncapi/bindings/blob/master/amqp/README.md#message) | Protocol-specific information for an AMQP 0-9-1 message. -`amqp1` | [AMQP 1.0 Message Binding](https://github.com/asyncapi/bindings/blob/master/amqp1/README.md#message) | Protocol-specific information for an AMQP 1.0 message. -`mqtt` | [MQTT Message Binding](https://github.com/asyncapi/bindings/blob/master/mqtt/README.md#message) | Protocol-specific information for an MQTT message. -`mqtt5` | [MQTT 5 Message Binding](https://github.com/asyncapi/bindings/blob/master/mqtt5/README.md#message) | Protocol-specific information for an MQTT 5 message. -`nats` | [NATS Message Binding](https://github.com/asyncapi/bindings/blob/master/nats/README.md#message) | Protocol-specific information for a NATS message. -`jms` | [JMS Message Binding](https://github.com/asyncapi/bindings/blob/master/jms/README.md#message) | Protocol-specific information for a JMS message. -`sns` | [SNS Message Binding](https://github.com/asyncapi/bindings/blob/master/sns/README.md#message) | Protocol-specific information for an SNS message. -`solace` | [Solace Server Binding](https://github.com/asyncapi/bindings/blob/master/solace#message) | Protocol-specific information for a Solace message. -`sqs` | [SQS Message Binding](https://github.com/asyncapi/bindings/blob/master/sqs/README.md#message) | Protocol-specific information for an SQS message. -`stomp` | [STOMP Message Binding](https://github.com/asyncapi/bindings/blob/master/stomp/README.md#message) | Protocol-specific information for a STOMP message. -`redis` | [Redis Message Binding](https://github.com/asyncapi/bindings/blob/master/redis#message) | Protocol-specific information for a Redis message. -`mercure` | [Mercure Message Binding](https://github.com/asyncapi/bindings/blob/master/mercure#message) | Protocol-specific information for a Mercure message. -`ibmmq` | [IBM MQ Message Binding](https://github.com/asyncapi/bindings/tree/master/ibmmq#message-binding-object) | Protocol-specific information for an IBM MQ message. -`googlepubsub` | [Google Cloud Pub/Sub Message Binding](https://github.com/asyncapi/bindings/tree/master/googlepubsub#message) | Protocol-specific information for a Google Cloud Pub/Sub message. -`pulsar` | [Pulsar Message Binding](https://github.com/asyncapi/bindings/tree/master/pulsar#message-binding-fields) | Protocol-specific information for a Pulsar message. - -This object MAY be extended with [Specification Extensions](#specificationExtensions). - -#### Message Object - -Describes a message received on a given channel and operation. - -##### Fixed Fields - -Field Name | Type | Description ----|:---:|--- -messageId | `string` | Unique string used to identify the message. The id MUST be unique among all messages described in the API. The messageId value is **case-sensitive**. Tools and libraries MAY use the messageId to uniquely identify a message, therefore, it is RECOMMENDED to follow common programming naming conventions. -headers | [Schema Object](#schemaObject) | [Reference Object](#referenceObject) | Schema definition of the application headers. Schema MUST be of type "object". It **MUST NOT** define the protocol headers. -payload | `any` | Definition of the message payload. It can be of any type but defaults to [Schema object](#schemaObject). It must match the schema format, including encoding type - e.g Avro should be inlined as either a YAML or JSON object NOT a string to be parsed as YAML or JSON. -correlationId | [Correlation ID Object](#correlationIdObject) | [Reference Object](#referenceObject) | Definition of the correlation ID used for message tracing or matching. -schemaFormat | `string` | A string containing the name of the schema format used to define the message payload. If omitted, implementations should parse the payload as a [Schema object](#schemaObject). When the payload is defined using a `$ref` to a remote file, it is RECOMMENDED the schema format includes the file encoding type to allow implementations to parse the file correctly. E.g., adding `+yaml` if content type is `application/vnd.apache.avro` results in `application/vnd.apache.avro+yaml`.

Check out the [supported schema formats table](#messageObjectSchemaFormatTable) for more information. Custom values are allowed but their implementation is OPTIONAL. A custom value MUST NOT refer to one of the schema formats listed in the [table](#messageObjectSchemaFormatTable). -contentType | `string` | The content type to use when encoding/decoding a message's payload. The value MUST be a specific media type (e.g. `application/json`). When omitted, the value MUST be the one specified on the [defaultContentType](#defaultContentTypeString) field. -name | `string` | A machine-friendly name for the message. -title | `string` | A human-friendly title for the message. -summary | `string` | A short summary of what the message is about. -description | `string` | A verbose explanation of the message. [CommonMark syntax](https://spec.commonmark.org/) can be used for rich text representation. -tags | [Tags Object](#tagsObject) | A list of tags for logical grouping and categorization of messages. -externalDocs | [External Documentation Object](#externalDocumentationObject) | Additional external documentation for this message. -bindings | [Message Bindings Object](#messageBindingsObject) \| [Reference Object](#referenceObject) | A map where the keys describe the name of the protocol and the values describe protocol-specific definitions for the message. -examples | [[Message Example Object](#messageExampleObject)] | List of examples. -traits | [[Message Trait Object](#messageTraitObject) | [Reference Object](#referenceObject)] | A list of traits to apply to the message object. Traits MUST be merged into the message object using the [JSON Merge Patch](https://tools.ietf.org/html/rfc7386) algorithm in the same order they are defined here. The resulting object MUST be a valid [Message Object](#messageObject). - -This object MAY be extended with [Specification Extensions](#specificationExtensions). - -##### Schema formats table - -The following table contains a set of values that every implementation MUST support. - -Name | Allowed values | Notes ----|:---:|--- -[AsyncAPI 2.6.0 Schema Object](#schemaObject) | `application/vnd.aai.asyncapi;version=2.6.0`, `application/vnd.aai.asyncapi+json;version=2.6.0`, `application/vnd.aai.asyncapi+yaml;version=2.6.0` | This is the default when a `schemaFormat` is not provided. -[JSON Schema Draft 07](https://json-schema.org/specification-links.html#draft-7) | `application/schema+json;version=draft-07`, `application/schema+yaml;version=draft-07` | - -The following table contains a set of values that every implementation is RECOMMENDED to support. - -Name | Allowed values | Notes ----|:---:|--- -[Avro 1.9.0 schema](https://avro.apache.org/docs/1.9.0/spec.html#schemas) | `application/vnd.apache.avro;version=1.9.0`, `application/vnd.apache.avro+json;version=1.9.0`, `application/vnd.apache.avro+yaml;version=1.9.0` | -[OpenAPI 3.0.0 Schema Object](https://github.com/OAI/OpenAPI-Specification/blob/master/versions/3.0.0.md#schemaObject) | `application/vnd.oai.openapi;version=3.0.0`, `application/vnd.oai.openapi+json;version=3.0.0`, `application/vnd.oai.openapi+yaml;version=3.0.0` | -[RAML 1.0 data type](https://github.com/raml-org/raml-spec/blob/master/versions/raml-10/raml-10.md/) | `application/raml+yaml;version=1.0` | - -##### Message Object Example - -```json -{ - "messageId": "userSignup", - "name": "UserSignup", - "title": "User signup", - "summary": "Action to sign a user up.", - "description": "A longer description", - "contentType": "application/json", - "tags": [ - { "name": "user" }, - { "name": "signup" }, - { "name": "register" } - ], - "headers": { - "type": "object", - "properties": { - "correlationId": { - "description": "Correlation ID set by application", - "type": "string" - }, - "applicationInstanceId": { - "description": "Unique identifier for a given instance of the publishing application", - "type": "string" - } - } - }, - "payload": { - "type": "object", - "properties": { - "user": { - "$ref": "#/components/schemas/userCreate" - }, - "signup": { - "$ref": "#/components/schemas/signup" - } - } - }, - "correlationId": { - "description": "Default Correlation ID", - "location": "$message.header#/correlationId" - }, - "traits": [ - { "$ref": "#/components/messageTraits/commonHeaders" } - ], - "examples": [ - { - "name": "SimpleSignup", - "summary": "A simple UserSignup example message", - "headers": { - "correlationId": "my-correlation-id", - "applicationInstanceId": "myInstanceId" - }, - "payload": { - "user": { - "someUserKey": "someUserValue" - }, - "signup": { - "someSignupKey": "someSignupValue" - } - } - } - ] -} -``` - -```yaml -messageId: userSignup -name: UserSignup -title: User signup -summary: Action to sign a user up. -description: A longer description -contentType: application/json -tags: - - name: user - - name: signup - - name: register -headers: - type: object - properties: - correlationId: - description: Correlation ID set by application - type: string - applicationInstanceId: - description: Unique identifier for a given instance of the publishing application - type: string -payload: - type: object - properties: - user: - $ref: "#/components/schemas/userCreate" - signup: - $ref: "#/components/schemas/signup" -correlationId: - description: Default Correlation ID - location: $message.header#/correlationId -traits: - - $ref: "#/components/messageTraits/commonHeaders" -examples: - - name: SimpleSignup - summary: A simple UserSignup example message - headers: - correlationId: my-correlation-id - applicationInstanceId: myInstanceId - payload: - user: - someUserKey: someUserValue - signup: - someSignupKey: someSignupValue -``` - -Example using Avro to define the payload: - -```json -{ - "messageId": "userSignup", - "name": "UserSignup", - "title": "User signup", - "summary": "Action to sign a user up.", - "description": "A longer description", - "tags": [ - { "name": "user" }, - { "name": "signup" }, - { "name": "register" } - ], - "schemaFormat": "application/vnd.apache.avro+json;version=1.9.0", - "payload": { - "$ref": "path/to/user-create.avsc#/UserCreate" - } -} -``` - -```yaml -messageId: userSignup -name: UserSignup -title: User signup -summary: Action to sign a user up. -description: A longer description -tags: - - name: user - - name: signup - - name: register -schemaFormat: 'application/vnd.apache.avro+yaml;version=1.9.0' -payload: - $ref: 'path/to/user-create.avsc/#UserCreate' -``` - -#### Message Trait Object - -Describes a trait that MAY be applied to a [Message Object](#messageObject). This object MAY contain any property from the [Message Object](#messageObject), except `payload` and `traits`. - -If you're looking to apply traits to an operation, see the [Operation Trait Object](#operationTraitObject). - -##### Fixed Fields - -Field Name | Type | Description ----|:---:|--- -messageId | `string` | Unique string used to identify the message. The id MUST be unique among all messages described in the API. The messageId value is **case-sensitive**. Tools and libraries MAY use the messageId to uniquely identify a message, therefore, it is RECOMMENDED to follow common programming naming conventions. -headers | [Schema Object](#schemaObject) | [Reference Object](#referenceObject) | Schema definition of the application headers. Schema MUST be of type "object". It **MUST NOT** define the protocol headers. -correlationId | [Correlation ID Object](#correlationIdObject) | [Reference Object](#referenceObject) | Definition of the correlation ID used for message tracing or matching. -schemaFormat | `string` | A string containing the name of the schema format/language used to define the message payload. If omitted, implementations should parse the payload as a [Schema object](#schemaObject). -contentType | `string` | The content type to use when encoding/decoding a message's payload. The value MUST be a specific media type (e.g. `application/json`). When omitted, the value MUST be the one specified on the [defaultContentType](#defaultContentTypeString) field. -name | `string` | A machine-friendly name for the message. -title | `string` | A human-friendly title for the message. -summary | `string` | A short summary of what the message is about. -description | `string` | A verbose explanation of the message. [CommonMark syntax](https://spec.commonmark.org/) can be used for rich text representation. -tags | [Tags Object](#tagsObject) | A list of tags for logical grouping and categorization of messages. -externalDocs | [External Documentation Object](#externalDocumentationObject) | Additional external documentation for this message. -bindings | [Message Bindings Object](#messageBindingsObject) \| [Reference Object](#referenceObject) | A map where the keys describe the name of the protocol and the values describe protocol-specific definitions for the message. -examples | [[Message Example Object](#messageExampleObject)] | List of examples. - -This object MAY be extended with [Specification Extensions](#specificationExtensions). - -##### Message Trait Object Example - -```json -{ - "schemaFormat": "application/vnd.apache.avro+json;version=1.9.0", - "contentType": "application/json" -} -``` - -```yaml -schemaFormat: 'application/vnd.apache.avro+yaml;version=1.9.0' -contentType: application/json -``` - -#### Message Example Object - -Message Example Object represents an example of a [Message Object](#messageObject) and MUST contain either **headers** and/or **payload** fields. - -##### Fixed Fields - -Field Name | Type | Description ----|:---:|--- -headers | `Map[string, any]` | The value of this field MUST validate against the [Message Object's headers](#messageObjectHeaders) field. -payload | `any` | The value of this field MUST validate against the [Message Object's payload](#messageObjectPayload) field. -name | `string` | A machine-friendly name. -summary | `string` | A short summary of what the example is about. - -This object MAY be extended with [Specification Extensions](#specificationExtensions). - -##### Message Example Object Example - -```json -{ - "name": "SimpleSignup", - "summary": "A simple UserSignup example message", - "headers": { - "correlationId": "my-correlation-id", - "applicationInstanceId": "myInstanceId" - }, - "payload": { - "user": { - "someUserKey": "someUserValue" - }, - "signup": { - "someSignupKey": "someSignupValue" - } - } -} -``` - -```yaml -name: SimpleSignup -summary: A simple UserSignup example message -headers: - correlationId: my-correlation-id - applicationInstanceId: myInstanceId -payload: - user: - someUserKey: someUserValue - signup: - someSignupKey: someSignupValue -``` - -#### Tags Object - -A Tags object is a list of Tag Objects. - -#### Tag Object - -Allows adding meta data to a single tag. - -##### Fixed Fields - -Field Name | Type | Description ----|:---:|--- -name | `string` | **REQUIRED.** The name of the tag. -description | `string` | A short description for the tag. [CommonMark syntax](https://spec.commonmark.org/) can be used for rich text representation. -externalDocs | [External Documentation Object](#externalDocumentationObject) | Additional external documentation for this tag. - -This object MAY be extended with [Specification Extensions](#specificationExtensions). - -##### Tag Object Example - -```json -{ - "name": "user", - "description": "User-related messages" -} -``` - -```yaml -name: user -description: User-related messages -``` - -#### External Documentation Object - -Allows referencing an external resource for extended documentation. - -##### Fixed Fields - -Field Name | Type | Description ----|:---:|--- -description | `string` | A short description of the target documentation. [CommonMark syntax](https://spec.commonmark.org/) can be used for rich text representation. -url | `string` | **REQUIRED.** The URL for the target documentation. This MUST be in the form of an absolute URL. - -This object MAY be extended with [Specification Extensions](#specificationExtensions). - -##### External Documentation Object Example - -```json -{ - "description": "Find more info here", - "url": "https://example.com" -} -``` - -```yaml -description: Find more info here -url: https://example.com -``` - -#### Reference Object - -A simple object to allow referencing other components in the specification, internally and externally. - -The Reference Object is defined by [JSON Reference](https://tools.ietf.org/html/draft-pbryan-zyp-json-ref-03) and follows the same structure, behavior and rules. A JSON Reference SHALL only be used to refer to a schema that is formatted in either JSON or YAML. In the case of a YAML-formatted Schema, the JSON Reference SHALL be applied to the JSON representation of that schema. The JSON representation SHALL be made by applying the conversion described [here](#format). - -For this specification, reference resolution is done as defined by the JSON Reference specification and not by the JSON Schema specification. - -##### Fixed Fields - -Field Name | Type | Description ----|:---:|--- -$ref | `string` | **REQUIRED.** The reference string. - -This object cannot be extended with additional properties and any properties added SHALL be ignored. - -##### Reference Object Example - -```json -{ - "$ref": "#/components/schemas/Pet" -} -``` - -```yaml - $ref: '#/components/schemas/Pet' -``` - -#### Components Object - -Holds a set of reusable objects for different aspects of the AsyncAPI specification. -All objects defined within the components object will have no effect on the API unless they are explicitly referenced from properties outside the components object. - -##### Fixed Fields - -Field Name | Type | Description ----|:---|--- - schemas | Map[`string`, [Schema Object](#schemaObject) \| [Reference Object](#referenceObject)] | An object to hold reusable [Schema Objects](#schemaObject). - servers | Map[`string`, [Server Object](#serverObject) \| [Reference Object](#referenceObject)] | An object to hold reusable [Server Objects](#serverObject). - serverVariables | Map[`string`, [Server Variable Object](#serverVariableObject) \| [Reference Object](#referenceObject)] | An object to hold reusable [Server Variable Objects](#serverVariableObject). - channels | Map[`string`, [Channel Item Object](#channelItemObject)] | An object to hold reusable [Channel Item Objects](#channelItemObject). - messages | Map[`string`, [Message Object](#messageObject) \| [Reference Object](#referenceObject)] | An object to hold reusable [Message Objects](#messageObject). - securitySchemes| Map[`string`, [Security Scheme Object](#securitySchemeObject) \| [Reference Object](#referenceObject)] | An object to hold reusable [Security Scheme Objects](#securitySchemeObject). - parameters | Map[`string`, [Parameter Object](#parameterObject) \| [Reference Object](#referenceObject)] | An object to hold reusable [Parameter Objects](#parameterObject). - correlationIds | Map[`string`, [Correlation ID Object](#correlationIdObject) \| [Reference Object](#referenceObject)] | An object to hold reusable [Correlation ID Objects](#correlationIdObject). - operationTraits | Map[`string`, [Operation Trait Object](#operationTraitObject) \| [Reference Object](#referenceObject)] | An object to hold reusable [Operation Trait Objects](#operationTraitObject). - messageTraits | Map[`string`, [Message Trait Object](#messageTraitObject) \| [Reference Object](#referenceObject)] | An object to hold reusable [Message Trait Objects](#messageTraitObject). - serverBindings | Map[`string`, [Server Bindings Object](#serverBindingsObject) \| [Reference Object](#referenceObject)] | An object to hold reusable [Server Bindings Objects](#serverBindingsObject). - channelBindings | Map[`string`, [Channel Bindings Object](#channelBindingsObject) \| [Reference Object](#referenceObject)] | An object to hold reusable [Channel Bindings Objects](#channelBindingsObject). - operationBindings | Map[`string`, [Operation Bindings Object](#operationBindingsObject) \| [Reference Object](#referenceObject)] | An object to hold reusable [Operation Bindings Objects](#operationBindingsObject). - messageBindings | Map[`string`, [Message Bindings Object](#messageBindingsObject) \| [Reference Object](#referenceObject)] | An object to hold reusable [Message Bindings Objects](#messageBindingsObject). - -This object MAY be extended with [Specification Extensions](#specificationExtensions). - -All the fixed fields declared above are objects that MUST use keys that match the regular expression: `^[a-zA-Z0-9\.\-_]+$`. - -Field Name Examples: - -```plaintext -User -User_1 -User_Name -user-name -my.org.User -``` - -##### Components Object Example - -```json -{ - "components": { - "schemas": { - "Category": { - "type": "object", - "properties": { - "id": { - "type": "integer", - "format": "int64" - }, - "name": { - "type": "string" - } - } - }, - "Tag": { - "type": "object", - "properties": { - "id": { - "type": "integer", - "format": "int64" - }, - "name": { - "type": "string" - } - } - } - }, - "servers": { - "development": { - "url": "{stage}.gigantic-server.com:{port}", - "description": "Development server", - "protocol": "amqp", - "protocolVersion": "0.9.1", - "variables": { - "stage": { - "$ref": "#/components/serverVariables/stage" - }, - "port": { - "$ref": "#/components/serverVariables/port" - } - } - } - }, - "serverVariables": { - "stage": { - "default": "demo", - "description": "This value is assigned by the service provider, in this example `gigantic-server.com`" - }, - "port": { - "enum": ["8883", "8884"], - "default": "8883" - } - }, - "channels": { - "user/signedup": { - "subscribe": { - "message": { - "$ref": "#/components/messages/userSignUp" - } - } - } - }, - "messages": { - "userSignUp": { - "summary": "Action to sign a user up.", - "description": "Multiline description of what this action does.\nHere you have another line.\n", - "tags": [ - { - "name": "user" - }, - { - "name": "signup" - } - ], - "headers": { - "type": "object", - "properties": { - "applicationInstanceId": { - "description": "Unique identifier for a given instance of the publishing application", - "type": "string" - } - } - }, - "payload": { - "type": "object", - "properties": { - "user": { - "$ref": "#/components/schemas/userCreate" - }, - "signup": { - "$ref": "#/components/schemas/signup" - } - } - } - } - }, - "parameters": { - "userId": { - "description": "Id of the user.", - "schema": { - "type": "string" - } - } - }, - "correlationIds": { - "default": { - "description": "Default Correlation ID", - "location": "$message.header#/correlationId" - } - }, - "messageTraits": { - "commonHeaders": { - "headers": { - "type": "object", - "properties": { - "my-app-header": { - "type": "integer", - "minimum": 0, - "maximum": 100 - } - } - } - } - } - } -} -``` - -```yaml -components: - schemas: - Category: - type: object - properties: - id: - type: integer - format: int64 - name: - type: string - Tag: - type: object - properties: - id: - type: integer - format: int64 - name: - type: string - servers: - development: - url: "{stage}.gigantic-server.com:{port}" - description: Development server - protocol: amqp - protocolVersion: 0.9.1 - variables: - stage: - $ref: "#/components/serverVariables/stage" - port: - $ref: "#/components/serverVariables/port" - serverVariables: - stage: - default: demo - description: This value is assigned by the service provider, in this example `gigantic-server.com` - port: - enum: [8883, 8884] - default: 8883 - channels: - user/signedup: - subscribe: - message: - $ref: "#/components/messages/userSignUp" - messages: - userSignUp: - summary: Action to sign a user up. - description: | - Multiline description of what this action does. - Here you have another line. - tags: - - name: user - - name: signup - headers: - type: object - properties: - applicationInstanceId: - description: Unique identifier for a given instance of the publishing application - type: string - payload: - type: object - properties: - user: - $ref: "#/components/schemas/userCreate" - signup: - $ref: "#/components/schemas/signup" - parameters: - userId: - description: Id of the user. - schema: - type: string - correlationIds: - default: - description: Default Correlation ID - location: $message.header#/correlationId - messageTraits: - commonHeaders: - headers: - type: object - properties: - my-app-header: - type: integer - minimum: 0 - maximum: 100 -``` - -#### Schema Object - -The Schema Object allows the definition of input and output data types. -These types can be objects, but also primitives and arrays. This object is a superset of the [JSON Schema Specification Draft 07](https://json-schema.org/specification-links.html#draft-7). The empty schema (which allows any instance to validate) MAY be represented by the `boolean` value `true` and a schema which allows no instance to validate MAY be represented by the `boolean` value `false`. - -Further information about the properties can be found in [JSON Schema Core](https://tools.ietf.org/html/draft-handrews-json-schema-01) and [JSON Schema Validation](https://tools.ietf.org/html/draft-handrews-json-schema-validation-01). -Unless stated otherwise, the property definitions follow the JSON Schema specification as referenced here. - -##### Properties - -The AsyncAPI Schema Object is a JSON Schema vocabulary which extends JSON Schema Core and Validation vocabularies. As such, any keyword available for those vocabularies is by definition available in AsyncAPI, and will work the exact same way, including but not limited to: - -- title -- type -- required -- multipleOf -- maximum -- exclusiveMaximum -- minimum -- exclusiveMinimum -- maxLength -- minLength -- pattern (This string SHOULD be a valid regular expression, according to the [ECMA 262 regular expression](https://www.ecma-international.org/ecma-262/5.1/#sec-7.8.5) dialect) -- maxItems -- minItems -- uniqueItems -- maxProperties -- minProperties -- enum -- const -- examples -- if / then / else -- readOnly -- writeOnly -- properties -- patternProperties -- additionalProperties -- additionalItems -- items -- propertyNames -- contains -- allOf -- oneOf -- anyOf -- not - -The following properties are taken from the JSON Schema definition but their definitions were adjusted to the AsyncAPI Specification. - -- description - [CommonMark syntax](https://spec.commonmark.org/) can be used for rich text representation. -- format - See [Data Type Formats](#dataTypeFormat) for further details. While relying on JSON Schema's defined formats, the AsyncAPI Specification offers a few additional predefined formats. -- default - The default value represents what would be assumed by the consumer of the input as the value of the schema if one is not provided. Unlike JSON Schema, the value MUST conform to the defined type for the Schema Object defined at the same level. For example, of `type` is `string`, then `default` can be `"foo"` but cannot be `1`. - -Alternatively, any time a Schema Object can be used, a [Reference Object](#referenceObject) can be used in its place. This allows referencing definitions in place of defining them inline. It is appropriate to clarify that the `$ref` keyword MUST follow the behavior described by [Reference Object](#referenceObject) instead of the one in [JSON Schema definition](https://json-schema.org/understanding-json-schema/structuring.html#ref). - -In addition to the JSON Schema fields, the following AsyncAPI vocabulary fields MAY be used for further schema documentation: - -##### Fixed Fields - -Field Name | Type | Description ----|:---:|--- -discriminator | `string` | Adds support for polymorphism. The discriminator is the schema property name that is used to differentiate between other schema that inherit this schema. The property name used MUST be defined at this schema and it MUST be in the `required` property list. When used, the value MUST be the name of this schema or any schema that inherits it. See [Composition and Inheritance](#schemaComposition) for more details. -externalDocs | [External Documentation Object](#externalDocumentationObject) | Additional external documentation for this schema. - deprecated | `boolean` | Specifies that a schema is deprecated and SHOULD be transitioned out of usage. Default value is `false`. - -This object MAY be extended with [Specification Extensions](#specificationExtensions). - -###### Composition and Inheritance (Polymorphism) - -The AsyncAPI Specification allows combining and extending model definitions using the `allOf` property of JSON Schema, in effect offering model composition. -`allOf` takes in an array of object definitions that are validated _independently_ but together compose a single object. - -While composition offers model extensibility, it does not imply a hierarchy between the models. -To support polymorphism, AsyncAPI Specification adds the support of the `discriminator` field. -When used, the `discriminator` will be the name of the property used to decide which schema definition is used to validate the structure of the model. -As such, the `discriminator` field MUST be a required field. -There are two ways to define the value of a discriminator for an inheriting instance. - -- Use the schema's name. -- Override the schema's name by overriding the property with a new value. If exists, this takes precedence over the schema's name. - -As such, inline schema definitions, which do not have a given id, _cannot_ be used in polymorphism. - -##### Schema Object Examples - -###### Primitive Sample - -```json -{ - "type": "string", - "format": "email" -} -``` - -```yaml -type: string -format: email -``` - -###### Simple Model - -```json -{ - "type": "object", - "required": [ - "name" - ], - "properties": { - "name": { - "type": "string" - }, - "address": { - "$ref": "#/components/schemas/Address" - }, - "age": { - "type": "integer", - "format": "int32", - "minimum": 0 - } - } -} -``` - -```yaml -type: object -required: -- name -properties: - name: - type: string - address: - $ref: '#/components/schemas/Address' - age: - type: integer - format: int32 - minimum: 0 -``` - -###### Model with Map/Dictionary Properties - -For a simple string to string mapping: - -```json -{ - "type": "object", - "additionalProperties": { - "type": "string" - } -} -``` - -```yaml -type: object -additionalProperties: - type: string -``` - -For a string to model mapping: - -```json -{ - "type": "object", - "additionalProperties": { - "$ref": "#/components/schemas/ComplexModel" - } -} -``` - -```yaml -type: object -additionalProperties: - $ref: '#/components/schemas/ComplexModel' -``` - -###### Model with Example - -```json -{ - "type": "object", - "properties": { - "id": { - "type": "integer", - "format": "int64" - }, - "name": { - "type": "string" - } - }, - "required": [ - "name" - ], - "examples": [ - { - "name": "Puma", - "id": 1 - } - ] -} -``` - -```yaml -type: object -properties: - id: - type: integer - format: int64 - name: - type: string -required: -- name -examples: -- name: Puma - id: 1 -``` - -###### Model with Boolean Schemas - -```json -{ - "type": "object", - "required": [ - "anySchema" - ], - "properties": { - "anySchema": true, - "cannotBeDefined": false - } -} -``` - -```yaml -type: object -required: -- anySchema -properties: - anySchema: true - cannotBeDefined: false -``` - -###### Models with Composition - -```json -{ - "schemas": { - "ErrorModel": { - "type": "object", - "required": [ - "message", - "code" - ], - "properties": { - "message": { - "type": "string" - }, - "code": { - "type": "integer", - "minimum": 100, - "maximum": 600 - } - } - }, - "ExtendedErrorModel": { - "allOf": [ - { - "$ref": "#/components/schemas/ErrorModel" - }, - { - "type": "object", - "required": [ - "rootCause" - ], - "properties": { - "rootCause": { - "type": "string" - } - } - } - ] - } - } -} -``` - -```yaml -schemas: - ErrorModel: - type: object - required: - - message - - code - properties: - message: - type: string - code: - type: integer - minimum: 100 - maximum: 600 - ExtendedErrorModel: - allOf: - - $ref: '#/components/schemas/ErrorModel' - - type: object - required: - - rootCause - properties: - rootCause: - type: string -``` - -###### Models with Polymorphism Support - -```json -{ - "schemas": { - "Pet": { - "type": "object", - "discriminator": "petType", - "properties": { - "name": { - "type": "string" - }, - "petType": { - "type": "string" - } - }, - "required": [ - "name", - "petType" - ] - }, - "Cat": { - "description": "A representation of a cat. Note that `Cat` will be used as the discriminator value.", - "allOf": [ - { - "$ref": "#/components/schemas/Pet" - }, - { - "type": "object", - "properties": { - "huntingSkill": { - "type": "string", - "description": "The measured skill for hunting", - "enum": [ - "clueless", - "lazy", - "adventurous", - "aggressive" - ] - } - }, - "required": [ - "huntingSkill" - ] - } - ] - }, - "Dog": { - "description": "A representation of a dog. Note that `Dog` will be used as the discriminator value.", - "allOf": [ - { - "$ref": "#/components/schemas/Pet" - }, - { - "type": "object", - "properties": { - "packSize": { - "type": "integer", - "format": "int32", - "description": "the size of the pack the dog is from", - "minimum": 0 - } - }, - "required": [ - "packSize" - ] - } - ] - }, - "StickInsect": { - "description": "A representation of an Australian walking stick. Note that `StickBug` will be used as the discriminator value.", - "allOf": [ - { - "$ref": "#/components/schemas/Pet" - }, - { - "type": "object", - "properties": { - "petType": { - "const": "StickBug" - }, - "color": { - "type": "string" - } - }, - "required": [ - "color" - ] - } - ] - } - } -} -``` - -```yaml -schemas: - Pet: - type: object - discriminator: petType - properties: - name: - type: string - petType: - type: string - required: - - name - - petType - ## applies to instances with `petType: "Cat"` - ## because that is the schema name - Cat: - description: A representation of a cat - allOf: - - $ref: '#/components/schemas/Pet' - - type: object - properties: - huntingSkill: - type: string - description: The measured skill for hunting - enum: - - clueless - - lazy - - adventurous - - aggressive - required: - - huntingSkill - ## applies to instances with `petType: "Dog"` - ## because that is the schema name - Dog: - description: A representation of a dog - allOf: - - $ref: '#/components/schemas/Pet' - - type: object - properties: - packSize: - type: integer - format: int32 - description: the size of the pack the dog is from - minimum: 0 - required: - - packSize - ## applies to instances with `petType: "StickBug"` - ## because that is the required value of the discriminator field, - ## overriding the schema name - StickInsect: - description: A representation of an Australian walking stick - allOf: - - $ref: '#/components/schemas/Pet' - - type: object - properties: - petType: - const: StickBug - color: - type: string - required: - - color -``` - -#### Security Scheme Object - -Defines a security scheme that can be used by the operations. Supported schemes are: - -- User/Password. -- API key (either as user or as password). -- X.509 certificate. -- End-to-end encryption (either symmetric or asymmetric). -- HTTP authentication. -- HTTP API key. -- OAuth2's common flows (Implicit, Resource Owner Protected Credentials, Client Credentials and Authorization Code) as defined in [RFC6749](https://tools.ietf.org/html/rfc6749). -- [OpenID Connect Discovery](https://tools.ietf.org/html/draft-ietf-oauth-discovery-06). -- SASL (Simple Authentication and Security Layer) as defined in [RFC4422](https://tools.ietf.org/html/rfc4422). - -##### Fixed Fields - -Field Name | Type | Applies To | Description ----|:---:|---|--- -type | `string` | Any | **REQUIRED**. The type of the security scheme. Valid values are `"userPassword"`, `"apiKey"`, `"X509"`, `"symmetricEncryption"`, `"asymmetricEncryption"`, `"httpApiKey"`, `"http"`, `"oauth2"`, `"openIdConnect"`, `"plain"`, `"scramSha256"`, `"scramSha512"`, and `"gssapi"`. -description | `string` | Any | A short description for security scheme. [CommonMark syntax](https://spec.commonmark.org/) MAY be used for rich text representation. -name | `string` | `httpApiKey` | **REQUIRED**. The name of the header, query or cookie parameter to be used. -in | `string` | `apiKey` \| `httpApiKey` | **REQUIRED**. The location of the API key. Valid values are `"user"` and `"password"` for `apiKey` and `"query"`, `"header"` or `"cookie"` for `httpApiKey`. -scheme | `string` | `http` | **REQUIRED**. The name of the HTTP Authorization scheme to be used in the [Authorization header as defined in RFC7235](https://tools.ietf.org/html/rfc7235#section-5.1). -bearerFormat | `string` | `http` (`"bearer"`) | A hint to the client to identify how the bearer token is formatted. Bearer tokens are usually generated by an authorization server, so this information is primarily for documentation purposes. -flows | [OAuth Flows Object](#oauthFlowsObject) | `oauth2` | **REQUIRED**. An object containing configuration information for the flow types supported. -openIdConnectUrl | `string` | `openIdConnect` | **REQUIRED**. OpenId Connect URL to discover OAuth2 configuration values. This MUST be in the form of an absolute URL. - -This object MAY be extended with [Specification Extensions](#specificationExtensions). - -##### Security Scheme Object Example - -###### User/Password Authentication Sample - -```json -{ - "type": "userPassword" -} -``` - -```yaml -type: userPassword -``` - -###### API Key Authentication Sample - -```json -{ - "type": "apiKey", - "in": "user" -} -``` - -```yaml -type: apiKey, -in: user -``` - -###### X.509 Authentication Sample - -```json -{ - "type": "X509" -} -``` - -```yaml -type: X509 -``` - -###### End-to-end Encryption Authentication Sample - -```json -{ - "type": "symmetricEncryption" -} -``` - -```yaml -type: symmetricEncryption -``` - -###### Basic Authentication Sample - -```json -{ - "type": "http", - "scheme": "basic" -} -``` - -```yaml -type: http -scheme: basic -``` - -###### API Key Sample - -```json -{ - "type": "httpApiKey", - "name": "api_key", - "in": "header" -} -``` - -```yaml -type: httpApiKey -name: api_key -in: header -``` - -###### JWT Bearer Sample - -```json -{ - "type": "http", - "scheme": "bearer", - "bearerFormat": "JWT" -} -``` - -```yaml -type: http -scheme: bearer -bearerFormat: JWT -``` - -###### Implicit OAuth2 Sample - -```json -{ - "type": "oauth2", - "flows": { - "implicit": { - "authorizationUrl": "https://example.com/api/oauth/dialog", - "scopes": { - "write:pets": "modify pets in your account", - "read:pets": "read your pets" - } - } - } -} -``` - -```yaml -type: oauth2 -flows: - implicit: - authorizationUrl: https://example.com/api/oauth/dialog - scopes: - write:pets: modify pets in your account - read:pets: read your pets -``` - -###### SASL Sample - -```json -{ - "type": "scramSha512" -} -``` - -```yaml -type: scramSha512 -``` - -#### OAuth Flows Object - -Allows configuration of the supported OAuth Flows. - -##### Fixed Fields - -Field Name | Type | Description ----|:---:|--- -implicit| [OAuth Flow Object](#oauthFlowObject) | Configuration for the OAuth Implicit flow. -password| [OAuth Flow Object](#oauthFlowObject) | Configuration for the OAuth Resource Owner Protected Credentials flow. -clientCredentials| [OAuth Flow Object](#oauthFlowObject) | Configuration for the OAuth Client Credentials flow. -authorizationCode| [OAuth Flow Object](#oauthFlowObject) | Configuration for the OAuth Authorization Code flow. - -This object MAY be extended with [Specification Extensions](#specificationExtensions). - -#### OAuth Flow Object - -Configuration details for a supported OAuth Flow - -##### Fixed Fields - -Field Name | Type | Applies To | Description ----|:---:|---|--- -authorizationUrl | `string` | `oauth2` (`"implicit"`, `"authorizationCode"`) | **REQUIRED**. The authorization URL to be used for this flow. This MUST be in the form of an absolute URL. -tokenUrl | `string` | `oauth2` (`"password"`, `"clientCredentials"`, `"authorizationCode"`) | **REQUIRED**. The token URL to be used for this flow. This MUST be in the form of an absolute URL. -refreshUrl | `string` | `oauth2` | The URL to be used for obtaining refresh tokens. This MUST be in the form of an absolute URL. -scopes | Map[`string`, `string`] | `oauth2` | **REQUIRED**. The available scopes for the OAuth2 security scheme. A map between the scope name and a short description for it. - -This object MAY be extended with [Specification Extensions](#specificationExtensions). - -##### OAuth Flow Object Examples - -```JSON -{ - "type": "oauth2", - "flows": { - "implicit": { - "authorizationUrl": "https://example.com/api/oauth/dialog", - "scopes": { - "write:pets": "modify pets in your account", - "read:pets": "read your pets" - } - }, - "authorizationCode": { - "authorizationUrl": "https://example.com/api/oauth/dialog", - "tokenUrl": "https://example.com/api/oauth/token", - "scopes": { - "write:pets": "modify pets in your account", - "read:pets": "read your pets" - } - } - } -} -``` - -```YAML -type: oauth2 -flows: - implicit: - authorizationUrl: https://example.com/api/oauth/dialog - scopes: - write:pets: modify pets in your account - read:pets: read your pets - authorizationCode: - authorizationUrl: https://example.com/api/oauth/dialog - tokenUrl: https://example.com/api/oauth/token - scopes: - write:pets: modify pets in your account - read:pets: read your pets -``` - -#### Security Requirement Object - -Lists the required security schemes to execute this operation. -The name used for each property MUST correspond to a security scheme declared in the [Security Schemes](#componentsSecuritySchemes) under the [Components Object](#componentsObject). - -When a list of Security Requirement Objects is defined on a [Server object](#serverObject), only one of the Security Requirement Objects in the list needs to be satisfied to authorize the connection. - -##### Patterned Fields - -Field Pattern | Type | Description ----|:---:|--- -{name} | [`string`] | Each name MUST correspond to a security scheme which is declared in the [Security Schemes](#componentsSecuritySchemes) under the [Components Object](#componentsObject). If the security scheme is of type `"oauth2"` or `"openIdConnect"`, then the value is a list of scope names. Provide scopes that are required to establish successful connection with the server. If scopes are not needed, the list can be empty. For other security scheme types, the array MUST be empty. - -##### Security Requirement Object Examples - -###### User/Password Security Requirement - -```json -{ - "user_pass": [] -} -``` - -```yaml -user_pass: [] -``` - -###### API Key Security Requirement - -```json -{ - "api_key": [] -} -``` - -```yaml -api_key: [] -``` - -###### OAuth2 Security Requirement - -```json -{ - "petstore_auth": [ - "write:pets", - "read:pets" - ] -} -``` - -```yaml -petstore_auth: -- write:pets -- read:pets -``` - -### Correlation ID Object - -An object that specifies an identifier at design time that can used for message tracing and correlation. - -For specifying and computing the location of a Correlation ID, a [runtime expression](#runtimeExpression) is used. - -#### Fixed Fields - -Field Name | Type | Description ----|:---|--- -description | `string` | An optional description of the identifier. [CommonMark syntax](https://spec.commonmark.org/) can be used for rich text representation. -location | `string` | **REQUIRED.** A [runtime expression](#runtimeExpression) that specifies the location of the correlation ID. - -This object MAY be extended with [Specification Extensions](#specificationExtensions). - -#### Examples - -```json -{ - "description": "Default Correlation ID", - "location": "$message.header#/correlationId" -} -``` - -```yaml -description: Default Correlation ID -location: $message.header#/correlationId -``` - -### Runtime Expression - -A runtime expression allows values to be defined based on information that will be available within the message. -This mechanism is used by [Correlation ID Object](#correlationIdObject). - -The runtime expression is defined by the following [ABNF](https://tools.ietf.org/html/rfc5234) syntax: - -```plaintext - expression = ( "$message" "." source ) - source = ( header-reference | payload-reference ) - header-reference = "header" ["#" fragment] - payload-reference = "payload" ["#" fragment] - fragment = a JSON Pointer [RFC 6901](https://tools.ietf.org/html/rfc6901) -``` - -The table below provides examples of runtime expressions and examples of their use in a value: - -#### Examples - -Source Location | Example expression | Notes ----|:---|:---| -Message Header Property | `$message.header#/MQMD/CorrelId` | Correlation ID is set using the `CorrelId` value from the `MQMD` header. -Message Payload Property | `$message.payload#/messageId` | Correlation ID is set using the `messageId` value from the message payload. - -Runtime expressions preserve the type of the referenced value. - -### Specification Extensions - -While the AsyncAPI Specification tries to accommodate most use cases, additional data can be added to extend the specification at certain points. - -The extensions properties are implemented as patterned fields that are always prefixed by `"x-"`. - -Field Pattern | Type | Description ----|:---:|--- -`^x-[\w\d\-\_]+$` | Any | Allows extensions to the AsyncAPI Schema. The field name MUST begin with `x-`, for example, `x-internal-id`. The value can be `null`, a primitive, an array or an object. Can have any valid JSON format value. - -The extensions may or may not be supported by the available tooling, but those may be extended as well to add requested support (if tools are internal or open-sourced). - -### Data Type Formats - -Primitives have an optional modifier property: `format`. -The AsyncAPI specification uses several known formats to more finely define the data type being used. -However, the `format` property is an open `string`-valued property, and can have any value to support documentation needs. -Formats such as `"email"`, `"uuid"`, etc., can be used even though they are not defined by this specification. -Types that are not accompanied by a `format` property follow their definition from the JSON Schema. -Tools that do not recognize a specific `format` MAY default back to the `type` alone, as if the `format` was not specified. - -The formats defined by the AsyncAPI Specification are: - -Common Name | `type` | [`format`](#dataTypeFormat) | Comments ------------ | ------ | -------- | -------- -integer | `integer` | `int32` | signed 32 bits -long | `integer` | `int64` | signed 64 bits -float | `number` | `float` | | -double | `number` | `double` | | -string | `string` | | | -byte | `string` | `byte` | base64 encoded characters -binary | `string` | `binary` | any sequence of octets -boolean | `boolean` | | | -date | `string` | `date` | As defined by `full-date` - [RFC3339](https://www.rfc-editor.org/rfc/rfc3339.html#section-5.6) -dateTime | `string` | `date-time` | As defined by `date-time` - [RFC3339](https://www.rfc-editor.org/rfc/rfc3339.html#section-5.6) -password | `string` | `password` | Used to hint UIs the input needs to be obscured. diff --git a/pages/docs/reference/specification/v2.x.md b/pages/docs/reference/specification/v2.x.md new file mode 100644 index 00000000000..a84a94a84a3 --- /dev/null +++ b/pages/docs/reference/specification/v2.x.md @@ -0,0 +1 @@ +To read about previous versions of AsyncAPI specification go to: https://v2.asyncapi.com/docs/reference \ No newline at end of file diff --git a/pages/docs/reference/specification/v3.0.0.md b/pages/docs/reference/specification/v3.0.0.md index 231a2732b33..a34d83190e8 100644 --- a/pages/docs/reference/specification/v3.0.0.md +++ b/pages/docs/reference/specification/v3.0.0.md @@ -60,7 +60,6 @@ operations: Aside from the issues mentioned above, there may also be infrastructure configuration that is not represented here. For instance, a system may use a read-only channel for receiving messages, a different one for sending them, and an intermediary process that will forward messages from one channel to the other. - ## Definitions ### Server diff --git a/pages/docs/tutorials/create-asyncapi-document.md b/pages/docs/tutorials/create-asyncapi-document.md index 946bb016aed..f6addf842c8 100644 --- a/pages/docs/tutorials/create-asyncapi-document.md +++ b/pages/docs/tutorials/create-asyncapi-document.md @@ -8,26 +8,24 @@ weight: 80 In this tutorial, you'll learn how to create an AsyncAPI document based on a sample real-world use case. Additionally, you will learn about event-driven architecture, message brokers, pub/sub pattern. -Let's pretend you have a company called Smarty Lighting, and you install smart-city streetlight lighting systems. This smart lighting system is a use case of the Internet of Things (IoT). You will create a Smarty Lighting Streetlights API using Node.js and Mosquitto (MQTT) as the message broker. This API will allow you to manage city lights remotely. +Let's pretend you have a company called Smarty Lighting, and you install smart-city streetlight lighting systems. Such a smart lighting system is an Internet of Things (IoT) use case. You will create a Smarty Lighting Streetlights application using Node.js and Mosquitto (MQTT) as the message broker. Your application will allow you to manage city lights remotely. You want to build a system that can turn streetlights on and off based on their environmental conditions: - You will implement an event-driven architecture (EDA) with a message broker in its "center." -- Streetlights will publish information about their environmental lighting to the broker. +- The Streetlights application will receive information about environmental lighting. -- Your application will connect to the broker and receive a stream of events from all the streetlights reporting their conditions. +- The Streetlights application will connect to the broker and receive a stream of events from all the streetlights devices reporting their conditions. -- Your application decides based on events when to turn the streetlight off. - -- Your application is not aware of how many streetlights are publishing events - it just connects to the broker and receives all events. +- The Streetlights application is unaware of how many streetlights devices send measurement events to the broker; it just connects to the broker and receives all events. ## Background context -Event-driven architecture (EDA) is a design pattern built around the production, detection, and reaction to events that take place in time. In this pattern, a message broker, event publishers and subscribers are its main components for event exchange within microservices. +Event-driven architecture (EDA) is a design pattern built around the production, detection, and reaction to events that take place in time. In this pattern, a message broker, event publishers, and subscribers are its main components for event exchange within microservices. -[Message brokers](/docs/tutorials/getting-started/event-driven-architectures#message-broker) enables asynchronous communications between services so that the sending service need not wait for the receiving service’s reply. This allows interdependent services to “talk” with one another directly, even if they were written in different languages or implemented on different platforms. +[Message brokers](/docs/tutorials/getting-started/event-driven-architectures#message-broker) enables asynchronous communications between services so that the sending service need not wait for the receiving service’s reply. That allows interdependent services to “talk” with one another directly, even if they were written in different languages or implemented on different platforms. Furthermore, the [Pub/sub](/docs/tutorials/getting-started/event-driven-architectures#publishersubscriber) is appealing for IoT use cases due to two key features: support for flexible coupling between publishers/subscribers and inherent support for point-to-multipoint transmission. @@ -35,9 +33,9 @@ Furthermore, the [Pub/sub](/docs/tutorials/getting-started/event-driven-architec ## Create AsyncAPI document -In this step, you will create an AsyncAPI document to describe the Streelights API. It will help you generate the code and the documentation later on. +In this step, you will create an AsyncAPI document to describe the Streelights application. It will help you generate the code and the documentation later on. -To create one, you can either use the [AsyncAPI Studio](https://studio.asyncapi.com) or the [AsyncAPI CLI](https://github.com/asyncapi/cli), depending on your project's needs.. +To create one, you can either use the [AsyncAPI Studio](https://studio.asyncapi.com) or the [AsyncAPI CLI](https://github.com/asyncapi/cli), depending on your project's needs. @@ -46,29 +44,28 @@ You can create a new `asyncapi.yaml` document by running: -Go ahead to create the specification documents titled `asyncapi` with a `.yaml` extension. +Create the following specification document titled `asyncapi` with a `.yaml` extension. -{`asyncapi: '2.5.0' +{`asyncapi: 3.0.0 info: - title: Streetlights API + title: Streetlights App version: '1.0.0' description: | - The Smartylighting Streetlights API allows you + The Smartylighting Streetlights application allows you to remotely manage the city lights. license: name: Apache 2.0 url: 'https://www.apache.org/licenses/LICENSE-2.0' servers: mosquitto: - url: mqtt://test.mosquitto.org + host: test.mosquitto.org protocol: mqtt channels: - light/measured: - publish: - summary: Inform about environmental lighting conditions for a particular streetlight. - operationId: onLightMeasured - message: + lightMeasured: + address: 'light/measured' + messages: + lightMeasuredMessage: name: LightMeasured payload: type: object @@ -84,51 +81,60 @@ channels: sentAt: type: string format: date-time - description: Date and time when the message was sent.`} + description: Date and time when the message was sent. +operations: + onLightMeasured: + action: 'receive' + summary: Information about environmental lighting conditions for a particular streetlight. + channel: + $ref: '#/channels/lightMeasured'`} Let's break it down into pieces: -{`asyncapi: '2.5.0' +{`asyncapi: 3.0.0 info: - title: Streetlights API + title: Streetlights App version: '1.0.0' description: | - The Smartylighting Streetlights API allows you + The Smartylighting Streetlights application allows you to remotely manage the city lights. license: name: Apache 2.0 url: 'https://www.apache.org/licenses/LICENSE-2.0'`} -- The `asyncapi` field indicates you use the AsyncAPI version 2.5.0. +- The `asyncapi` field indicates you use the AsyncAPI version 3.0.0. -- The `info` field holds information about the Streetlights API. Here, the title, version, description and license were defined. +- The `info` field holds information about the Streetlights application. Here, the title, version, description, and license were defined. -Moving on, let's talk about the `servers` section. +Moving on, let's talk about the `servers` section: {`servers: mosquitto: - url: mqtt://test.mosquitto.org + host: test.mosquitto.org protocol: mqtt`} -In this section, you point to the Eclipse Mosquitto message broker. The `url` point to a real instance of the broker [hosted by the Mosquitto community](https://test.mosquitto.org/) and the `protocol` as MQTT. If you do not want to use the test instance, you can spin up your own broker locally with `docker run -it -p 1883:1883 eclipse-mosquitto:1.5`. But remember to change `url` to `mqtt://localhost` +In this section, you point to the Eclipse Mosquitto message broker. The `url` points to a real broker instance [hosted by the Mosquitto community](https://test.mosquitto.org/), and the `protocol` is MQTT. If you do not want to use the test instance, you can spin up your own broker locally with `docker run -it -p 1883:1883 eclipse-mosquitto:1.5`. Remember to change the `url` to `mqtt://localhost`. -Now lets move on to the `channels` section. This section is used to describe the event names your API will be publishing and/or subscribing to. +Now, let's move on to the `channels` section. In the `servers` section, you specified how to connect to the broker where the application sends messages to or receives messages from. In `channels`, you go into more details about the connection `address` inside the broker. (Example: A topic name that specifies what `messages` are available in the channel.) {`channels: - light/measured: - publish: - summary: Inform about environmental lighting conditions for a particular streetlight. - operationId: onLightMeasured`} + lightMeasured: + address: 'light/measured' + messages: + lightMeasuredMessage: + name: LightMeasured + payload: + redacted for brevity`} -In this example, `light/measured` is the channel name the Streetlight API will `subscribe` to (i.e, to interact with the Streetlight API you `publish` to the broker). The `operationId` property, describes what is the name of function or method that takes care of this functionality in the generated code. +In this example, `light/measured` is the channel address. From the Streetlight application example perspective, it means that `light/measured` is the topic's name in the MQTT broker. -Next is the `payload` property which is used to understand how the event should look like when publishing to that channel: +Next is the `payload` property, which is used to understand how the event should look like when transfered over the specific channel: {` payload: @@ -148,15 +154,30 @@ Next is the `payload` property which is used to understand how the event should description: Date and time when the message was sent.`} -The `payload` property defines the content of the event using AsyncAPI schemas. It means that your event payload should contain an `id` and a `lumens` property —which are integers bigger than zero—, and a `sentAt` property that should be a string containing a date and time. +The `payload` property defines the event's content using AsyncAPI schemas. It means that your event payload should contain an `id` and a `lumens` property —which are integers bigger than zero—and a `sentAt` property which should be a string containing a date and time. + +> JSON Schema Draft 07 is 100% compatible with AsyncAPI schemas. You can also use other standards to describe payload schema, such as [Avro](https://github.com/asyncapi/avro-schema-parser#usage). + +The last section is `operations`, where you describe what the application described in the AsyncAPI document is doing. + + +{`operations: + onLightMeasured: + action: 'receive' + summary: Information about environmental lighting conditions for a particular streetlight. + channel: + $ref: '#/channels/lightMeasured'`} + + +You can see that the Streetlight application is a consumer that only receives events from the broker. Using the mandatory `channel` field, you specify with `$ref` what channel the events come from. -> JSON Schema Draft 07 is 100% compatible with AsyncAPI schemas. You can also use other standards to describe payload schema, like, for example [Avro](https://github.com/asyncapi/avro-schema-parser#usage). +The `onLightMeasured` key property describes the function or method name that takes care of this functionality in the generated code. It is a unique ID of the operation across the whole document. ## Summary In this tutorial, you learned how to create an AsyncAPI specification document via a real-life example with an IoT use case. -This tutorial is just a starting point; you'll need to add your own business logic to it. Take some time to play with it. There are still lots of things to be covered, but the intent of this tutorial is to make it simple for you to get an idea of the potential. +Your finished document is just a starting point; you must add your business logic. Take some time to play with it. There are still lots of things to be covered, but the intent of this tutorial is to make it simple for you to get an idea of the potential. ## Next steps -Now that you've completed this tutorial, proceed to learn how to [validate your AsyncAPI document with AsyncAPI Studio](https://www.asyncapi.com/docs/tutorials/studio-document-validation). +Now that you've completed this tutorial, you can proceed to learn how to [validate your AsyncAPI document with AsyncAPI Studio](https://www.asyncapi.com/docs/tutorials/studio-document-validation). diff --git a/pages/docs/tutorials/generate-code.md b/pages/docs/tutorials/generate-code.md index 0ddf35bd818..c57d46a25e9 100644 --- a/pages/docs/tutorials/generate-code.md +++ b/pages/docs/tutorials/generate-code.md @@ -6,12 +6,21 @@ weight: 100 ## Introduction -In this tutorial, you'll learn how to generate code from your AsyncAPI document using the AsyncAPI generator tool. +In this tutorial, you'll learn how to generate an application that uses the [Glee](https://github.com/asyncapi/glee) framework. You'll do it with an AsyncAPI document and the [AsyncAPI CLI](/tools/cli). ## Background context -The [AsyncAPI Generator](https://github.com/asyncapi/generator) is a tool that you can use to generate whatever you want based on the AsyncAPI document. You can generate docs and code. It can be used as a library in a Node.js application or through the [AsyncAPI CLI](https://github.com/asyncapi/cli). +[Glee](https://github.com/asyncapi/glee) is a TypeScript/JavaScript framework that enables you to create APIs and messaging clients based on your AsyncAPI document. Instead of generating code, this framework tightly integrates with your AsyncAPI document and binds functions to specific AsyncAPI operations. You only have to provide the code for these functions and Glee handles the rest. -The generator tool supports a number of templates to generate code for a variety of different languages and protocols as the output. These templates help to specify what exactly must be generated, and in this tutorial, you'll use a [Node.js template](https://github.com/asyncapi/nodejs-template). +Glee is often used with the [AsyncAPI CLI](/tools/cli) for a better development experience. + +In the previous tutorial, you created an AsyncAPI document that is used in this tutorial. + + + +If you did not follow the previous tutorial and do not have an `asyncapi.yaml` file for overview, then generate one by running the following command using the AsyncAPI CLI: +`asyncapi new --example=tutorial.yml --no-tty`. + + ## Installation guide @@ -24,42 +33,30 @@ import CliInstallation from '../../../assets/docs/fragments/cli-installation.md' -## Generate code - -To generate code from the [AsyncAPI document created in a previous tutorial](https://asyncapi.com/docs/tutorials/create-asyncapi-document), follow the steps listed below: +## Create a Glee project - - -If you did not follow the previous tutorial and do not have an `asyncapi.yaml` file ready, generate one running `asyncapi new --example=tutorial.yml --no-tty`. - - - -1. Trigger generation of the Node.js code: +1. Trigger the creation of the Glee project: - {`asyncapi generate fromTemplate asyncapi.yaml @asyncapi/nodejs-template -o output -p server=mosquitto`} + {`asyncapi new glee --name=tutorial --template tutorial`} Let's break down the previous command: - - `asyncapi generate fromTemplate` is how you use AsyncAPI Generator via the AsyncAPI CLI. - - ` asyncapi.yaml` is how you point to your AsyncAPI document and can be a URL. - - `@asyncapi/nodejs-template` is how you specify the Node.js template. - - `-o` determines where to output the result. - - `-p` defines additional parameters you want to pass to the template. Here, the `server` parameter specifies the server's name as it is defined in AsyncAPI document. + - `asyncapi new glee` is how you use Glee via the AsyncAPI CLI. + - `--name=tutorial` is how you tell the AsyncAPI CLI to name your new Glee project. + - `--template=tutorial` is how you tell the AsyncAPI CLI to use the template of a Glee project that was created specifically for this tutorial. -2. List all files in directory and check that the Node.js application is generated: +2. List all files in the directory and confirm your Glee project creation: - {`cd output && ls`} + {`cd tutorial && ls`} Upon execution of the command above, the following is an example of the expected result: {`$ ls - Dockerfile - asyncapi.yaml - docs - src + LICENSE README.md - config + asyncapi.yaml + functions package.json`} @@ -71,7 +68,7 @@ If you did not follow the previous tutorial and do not have an `asyncapi.yaml` f 2. Start the application: - {`npm start`} + {`npm run dev`} ## Send message to broker @@ -87,13 +84,14 @@ If you did not follow the previous tutorial and do not have an `asyncapi.yaml` f 3. Go back to the previous terminal to check if your application logged the streetlight condition you just sent. You should see something like this displayed in the terminal: - {`light/measured was received: - { id: 1, lumens: 3, sentAt: '2017-06-07T12:34:32.000Z' }`} + {`lightMeasured was received from mosquitto: + { id: 1, lumens: 3, sentAt: '2017-06-07T12:34:32.000Z' } + Streetlight with id "1" updated its lighting information to 3 lumens at 2017-06-07T12:34:32.000Z.`} ## Summary -In this tutorial, you learned how to generate your code from the [Streetlights API specification document created in a previous tutorial](https://asyncapi.com/docs/tutorials/create-asyncapi-document) using the AsyncAPI generator tool. +In this tutorial, you learned how to create a Glee project from the [Streetlights API specification document created in a previous tutorial](https://asyncapi.com/docs/tutorials/create-asyncapi-document). -Additionally, you've learned how to run your code by installing the generated code's dependencies and sending several test messages to the Streelights application using the MQTT client. +Additionally, you've learned how to run your code by installing the project's dependencies and sending several test messages to the Streelights application using the MQTT client. ## Next steps Now that you've completed this tutorial, go ahead and learn how to [validate your AsyncAPI messages (events)](https://asyncapi.com/docs/tutorials/message-validation) through the message validation techniques supported by AsyncAPI. diff --git a/pages/docs/tutorials/getting-started/asyncapi-documents.md b/pages/docs/tutorials/getting-started/asyncapi-documents.md index ef526918151..6d11ace3144 100644 --- a/pages/docs/tutorials/getting-started/asyncapi-documents.md +++ b/pages/docs/tutorials/getting-started/asyncapi-documents.md @@ -9,18 +9,19 @@ weight: 101 An AsyncAPI document is a file that defines and annotates the different components of **a specific Event-Driven API**. -The format of the file must be JSON or YAML; however, only the subset of YAML that matches the JSON capabilities is allowed. +The file format must be JSON or YAML; however, only the subset of YAML that matches the JSON capabilities is allowed. -{`asyncapi: 2.5.0 +{`asyncapi: 3.0.0 info: - title: Example - version: 0.1.0 + title: Example application + version: '0.1.0' channels: - user/signedup: - subscribe: - message: - description: An event describing that a user just signed up. + userSignup: + address: 'user/signedup' + messages: + userSignedupMessage: + description: A message describing that a user just signed up. payload: type: object additionalProperties: false @@ -32,9 +33,14 @@ channels: format: email age: type: integer - minimum: 18`} + minimum: 18 +operations: + publishUserSignedup: + action: 'send' + channel: + $ref: '#/channels/userSignup'`} -The AsyncAPI document is a machine-readable definition of your Event-Driven API. This document can be used afterward to generate documentation and code, validate the messages your application receives, and even apply API management policies to your messages before they arrive to your broker. +The AsyncAPI document is a machine-readable definition of your Event-Driven API. That document can be used afterward to generate documentation and code, validate the messages that `Example application` sends, and even apply API management policies to your messages before they arrive at the broker. -Your API documentation is now machine-readable –easily parseable by code— so the myriad of useful applications is endless. +Your API documentation is now machine-readable (easily parseable by code) so the myriad of useful applications is endless. diff --git a/pages/docs/tutorials/getting-started/coming-from-openapi.md b/pages/docs/tutorials/getting-started/coming-from-openapi.md index 78da17d7bdb..ad7f6acb2cb 100644 --- a/pages/docs/tutorials/getting-started/coming-from-openapi.md +++ b/pages/docs/tutorials/getting-started/coming-from-openapi.md @@ -1,29 +1,31 @@ --- title: "Coming from OpenAPI" -date: 2019-04-01T10:56:52+01:00 -menu: - docs: - parent: 'getting-started' weight: 20 --- -If you're coming from OpenAPI, you must know that AsyncAPI [started as an adaptation of the OpenAPI specification](https://medium.com/asyncapi/whats-new-on-asyncapi-lots-2d9019a1869d). We wanted to have as much compatibility as possible between the two so users could reuse parts in both. +If you're coming from OpenAPI, you must know that AsyncAPI [started as an adaptation of the OpenAPI specification](https://medium.com/asyncapi/whats-new-on-asyncapi-lots-2d9019a1869d). AsyncAPI wanted to be as compatible as possible with OpenAPI so that users could reuse parts in both. -You'll find lots of similarities between OpenAPI and AsyncAPI. Just bear in mind that in the world of event-driven architectures, you have more than one protocol and therefore some things are different. Check out the following comparison chart, inspired by [Darrel Miller's blog post](https://www.openapis.org/news/blogs/2016/10/tdc-structural-improvements-explaining-30-spec-part-2): +Before AsyncAPI `3.0.0`, you could find many similarities between OpenAPI and AsyncAPI. Remember that in the world of event-driven architectures, you have more than one protocol; therefore, some things are different. Check out the following comparison chart, inspired by [Darrel Miller's blog post](https://www.openapis.org/news/blogs/2016/10/tdc-structural-improvements-explaining-30-spec-part-2): import OpenAPIComparison from '../../../../components/OpenAPIComparison' -Aside from structural differences you must know that: +To enable more flexibility, the AsyncAPI `3.0.0` specification changes more and is less similar to OpenAPI starting with this version. The biggest change is in the channel structure, where operations are separated from it. It is like detaching operations from paths in OpenAPI. + +import OpenAPIComparisonV3 from '../../../../components/OpenAPIComparisonV3' + + + +Aside from structural differences, you should know: 1. AsyncAPI is compatible with OpenAPI schemas. -1. Message payload in AsyncAPI can be any value, not just an AsyncAPI/OpenAPI schema. For instance, it could be an Avro schema. -1. [AsyncAPI server object](/docs/specifications/2.2.0/#serverObject) is almost identical to its OpenAPI counterpart with the exception that `scheme` has been renamed to `protocol` and AsyncAPI introduces a new property called `protocolVersion`. +1. The message payload in AsyncAPI can be any value, not just an AsyncAPI/OpenAPI schema. For instance, it could be an Avro schema. +1. The [AsyncAPI server object](/docs/specifications/2.2.0/#serverObject) is almost identical to its OpenAPI counterpart, with the exception that `scheme` has been renamed to `protocol` and AsyncAPI introduces a new property called `protocolVersion`. AsyncAPI supports multiple protocols, not only HTTP, like in the case of OpenAPI. 1. OpenAPI path parameters and [AsyncAPI channel parameters](/docs/specifications/2.2.0/#parameterObject) are a bit different since AsyncAPI doesn't have the notion of "query" and "cookie", and header parameters can be defined in the [message object](/docs/specifications/2.2.0/#messageObject). Therefore, AsyncAPI channel parameters are the equivalent of OpenAPI path parameters. ## Conclusion -As you have seen above, OpenAPI and AsyncAPI are very similar. In a real-world environment, systems don't have just REST APIs or events but a mix of both. Most of the time, the information flowing in the events is very similar to the one the REST APIs have to handle in requests and responses; thus, being able to reuse schemas is a huge win. +As you have seen above, OpenAPI and AsyncAPI are similar, but the specification's evolution will bring more differences in the future. In a real-world environment, systems don't have just REST APIs or events, but a mix of both. Most of the time, the information flowing in the events is very similar to the one the REST APIs have to handle in requests and responses; thus, being able to reuse schemas is a huge win. -Enough reading, it's time to get your hands dirty with some actual examples. Let's learn how to create an AsyncAPI document that defines a "Hello world" application. +Let's learn how to create an AsyncAPI document that defines a "Hello world" application. diff --git a/pages/docs/tutorials/getting-started/hello-world.md b/pages/docs/tutorials/getting-started/hello-world.md index e33a1fb2bed..654c809011f 100644 --- a/pages/docs/tutorials/getting-started/hello-world.md +++ b/pages/docs/tutorials/getting-started/hello-world.md @@ -1,109 +1,120 @@ --- title: "Hello world" -date: 2019-04-01T10:56:52+01:00 -menu: - docs: - parent: 'getting-started' weight: 30 --- -Let's define an application that's capable of receiving a "hello {name}" message. +Let's define an application that's capable of receiving a `"hello {name}"` message: -{`asyncapi: 2.6.0 +{`asyncapi: 3.0.0 info: title: Hello world application version: '0.1.0' channels: hello: - publish: - message: + address: 'hello' + messages: + sayHelloMessage: payload: type: string - pattern: '^hello .+$'`} + pattern: '^hello .+$' +operations: + receiveHello: + action: 'receive' + channel: + $ref: '#/channels/hello'`} -Let's get into the details of this sample specification: +Let's get into the details of this sample AsyncAPI document: -{`asyncapi: 2.6.0 +{`asyncapi: 3.0.0 info: title: Hello world application version: '0.1.0' channels: hello: - publish: - message: + address: 'hello' + messages: + sayHelloMessage: payload: type: string - pattern: '^hello .+$'`} + pattern: '^hello .+$' +operations: + receiveHello: + action: 'receive' + channel: + $ref: '#/channels/hello'`} -The first line of the specification starts with the document type `asyncapi` and the version (2.6.0). This line doesn't have to be the first one, but it's a recommended practice. +The first line of the specification starts with the document type `asyncapi` and the version (3.0.0). That line doesn't have to be the first one, but it's a best practice. -{`asyncapi: 2.6.0 +{`asyncapi: 3.0.0 info: title: Hello world application version: '0.1.0' channels: hello: - publish: - message: + address: 'hello' + messages: + sayHelloMessage: payload: type: string - pattern: '^hello .+$'`} + pattern: '^hello .+$' +operations: + receiveHello: + action: 'receive' + channel: + $ref: '#/channels/hello'`} The `info` object contains the minimum required information about the application. It contains the `title`, which is a memorable name for the API, and the `version`. While it's not mandatory, it's strongly recommended to change the version whenever you make changes to the API. - -{`asyncapi: 2.6.0 + +{`asyncapi: 3.0.0 info: title: Hello world application version: '0.1.0' channels: hello: - publish: - message: + address: 'hello' + messages: + sayHelloMessage: payload: type: string - pattern: '^hello .+$'`} + pattern: '^hello .+$' +operations: + receiveHello: + action: 'receive' + channel: + $ref: '#/channels/hello'`} The `channels` section of the specification houses all of the mediums where messages flow through. For example, some systems use `topic`, `event name` or `routing key`. Different kinds of information flow through each channel similar to the analogy of TV channels. -In this example, you only have one channel called `hello`. The sample application subscribes to this channel to receive `hello {name}` messages. +You only have one channel called `hello`, and you see what message is available in this channel and how it must be structured. The `payload` object defines that the message must be a string and match the given regular expression in a string format such as `hello {name}`. - -{`asyncapi: 2.6.0 + +{`asyncapi: 3.0.0 info: title: Hello world application version: '0.1.0' channels: hello: - publish: - message: + address: 'hello' + messages: + sayHelloMessage: payload: type: string - pattern: '^hello .+$'`} + pattern: '^hello .+$' +operations: + receiveHello: + action: 'receive' + channel: + $ref: '#/channels/hello'`} -You can read the highlighted lines as: -> This is the `payload` of the `message` that the `Hello world application` is subscribed to. You can `publish` the `message` to the `hello` channel and the `Hello world application` will receive it. +The `operations` section is where you describe what the application is doing. Each operation has a unique identifier for example, `receiveHello`. - -{`asyncapi: 2.6.0 -info: - title: Hello world application - version: '0.1.0' -channels: - hello: - publish: - message: - payload: - type: string - pattern: '^hello .+$'`} - - -The `payload` object defines how the message must be structured. In this example, the message must be a string and match the given regular expression in the format `hello {name}` string. +In the above example, you see that the `Hello world application` is a consumer listening to the `sayHelloMessage` message from the `hello` channel. In other words, you can say that the `Hello world application` subscribes to the `hello` topic to `receive` the `sayHelloMessage` message. That AsyncAPI document describes what the `Hello world application` is doing, not what others can do with it. diff --git a/pages/docs/tutorials/getting-started/request-reply.md b/pages/docs/tutorials/getting-started/request-reply.md new file mode 100644 index 00000000000..fcbdd0e6b0d --- /dev/null +++ b/pages/docs/tutorials/getting-started/request-reply.md @@ -0,0 +1,141 @@ +--- +title: Request/reply pattern +weight: 40 +--- + +In this tutorial, you'll learn how to implement the request/reply pattern in an AsyncAPI document using a straightforward pong-pong example. + +Before we begin, it would be beneficial for you to have a basic understanding of AsyncAPI and Event-Driven Architectures (EDA). If you need a refresher, refer to our [Event-Driven Architecture](/docs/tutorials/getting-started/event-driven-architectures) document. + +[Request/reply](https://www.enterpriseintegrationpatterns.com/patterns/messaging/RequestReply.html) is a messaging pattern involving two key components: the **requester**, which sends a request message, and the **replier**, responsible for receiving this request and responding with a reply. This pattern fundamentally revolves around these two roles, requester and replier. + +## Static reply address + +Here's how you can implement the request/reply pattern when the response address is known at the compile or design time. + +A requester can be configured with the `send` operation, where it dispatches a message to the `ping` channel and anticipates receiving a response through the `pong` channel. + +In the below example, the `Operation Reply` object within the `pingRequest` operation provides essential details, like the destination for the reply, which is the `pong` channel. Since the `pong` channel is configured with only one message, there's no need to explicitly define the reply message. Similarly, the `ping` channel has just one message, eliminating the need to specify the message sent in the request. + + +{`asyncapi: 3.0.0 +info: + title: Ping/pong example with static reply channel + version: 1.0.0 + description: Requester example that initiates the request/reply pattern on a different channel than the reply is using +channels: + ping: + address: /ping + messages: + ping: + $ref: '#/components/messages/ping' + pong: + address: /pong + messages: + pong: + $ref: '#/components/messages/pong' +operations: + pingRequest: + action: send + channel: + $ref: '#/channels/ping' + reply: + channel: + $ref: '#/channels/pong' +components: + messages: + ping: + payload: + type: object + properties: + event: + type: string + const: ping + pong: + payload: + type: object + properties: + event: + type: string + const: pong`} + + +## Dynamic reply address + +Occasionally, the destination for a reply cannot be predetermined during the design or compile phase. In such cases, the address for the reply is dynamically determined at runtime, allowing for more flexible and adaptive communication. + +In scenarios where the address or reply channel is unknown at design time, the `address` property can either be set to `null` or omitted entirely. To define the reply address dynamically, the `Operation Reply Address` object can be used, allowing for runtime expressions. That enables the `requester` to specify where the `replier` should send the reply, detailing the address's location and its specific position within the request. + +In this situation, the `location` property is assigned the runtime expression `$message.header#/replyTo`. Such an expression indicates that the address for the reply is located within the header of the request, specifically in the `replyTo` field. This method dynamically determines the reply address based on the content of the request header. + + +{`asyncapi: 3.0.0 +info: + title: Ping/pong example with reply specified as dynamic information provided in the runtime + version: 1.0.0 + description: Example document for an application that processes ping requests and replies to the address dynamically specified by the requestor in the message header +channels: + ping: + address: /ping + messages: + ping: + $ref: '#/components/messages/ping' + pong: + address: null + messages: + pong: + $ref: '#/components/messages/pong' +operations: + pingRequest: + action: receive + channel: + $ref: '#/channels/ping' + reply: + address: + description: Reply is sent to topic specified in 'replyTo' property in the message header + location: "$message.header#/replyTo" + channel: + $ref: '#/channels/pong' +components: + messages: + ping: + headers: + type: object + properties: + replyTo: + type: string + description: Provide path to which reply must be provided + requestId: + type: string + format: uuid + description: Provide request id that you will use to identify the reply match + payload: + type: object + properties: + event: + type: string + const: ping + correlationId: + $ref: "#/components/correlationIds/pingCorrelationId" + pong: + headers: + type: object + properties: + requestId: + type: string + format: uuid + description: Reply message must contain id of the request message + payload: + type: object + properties: + event: + type: string + const: pong + correlationId: + $ref: "#/components/correlationIds/pingCorrelationId" + correlationIds: + pingCorrelationId: + location: '$message.header#/requestId'`} + + +While the above examples are a simple implementation of the request/reply pattern, in a protocol-agnostic world there are many different ways to represent the request/reply pattern. All of which are supported by AsyncAPI. diff --git a/pages/docs/tutorials/getting-started/security.md b/pages/docs/tutorials/getting-started/security.md index 12effbf2ace..3c02ea281a7 100644 --- a/pages/docs/tutorials/getting-started/security.md +++ b/pages/docs/tutorials/getting-started/security.md @@ -1,45 +1,113 @@ --- title: "Adding security" -date: 2019-04-16T10:56:52+01:00 -menu: - docs: - parent: 'getting-started' weight: 150 --- In production environments, your API may have to access a message broker that's protected by some auth mechanisms. -Some examples of these are: +Auth mechanism examples: * User & password * Certificates * API keys * OAuth 2 -If you're using AsyncAPI to define an API that connects to a message broker, you'll most probably make use of user/password or certificates. Traditionally, message brokers are infrastructure pieces that serve an internal purpose and they're not exposed to the public. That's why their security mechanisms are also simpler than what we're used to with REST APIs. However, AsyncAPI also helps you define your HTTP streaming APIs and therefore it supports more sophisticated mechanisms like OAuth2 or OpenID. +If you're using AsyncAPI to define an API that connects to a message broker, you'll probably use user/password or certificates. Traditionally, message brokers are infrastructure pieces that serve an internal purpose, and they're not exposed to the public. That's why their security mechanisms are also simpler than what we're used to with REST APIs. However, AsyncAPI also helps you define your HTTP streaming APIs, and therefore, it supports more sophisticated mechanisms like OAuth2 or OpenID. Continuing with the `hello world` application example, let's learn how to define a simple security scheme (mechanism) for it. - -{`asyncapi: '2.5.0' + +{`asyncapi: 3.0.0 info: title: Hello world application version: '0.1.0' servers: production: - url: broker.mycompany.com + host: broker.mycompany.com protocol: amqp description: This is "My Company" broker. security: - - user-password: [] + - type: userPassword channels: hello: - publish: - message: + address: 'hello' + messages: + sayHelloMessage: $ref: '#/components/messages/hello-msg' goodbye: - publish: - message: + address: 'goodbye' + messages: + sayGoodbyeMessage: $ref: '#/components/messages/goodbye-msg' +operations: + receiveHello: + action: 'receive' + channel: + $ref: '#/channels/hello' + receiveGoodbye: + action: 'receive' + channel: + $ref: '#/channels/goodbye' +components: + messages: + hello-msg: + payload: + type: object + properties: + name: + type: string + sentAt: + $ref: '#/components/schemas/sent-at' + goodbye-msg: + payload: + type: object + properties: + sentAt: + $ref: '#/components/schemas/sent-at' + schemas: + sent-at: + type: string + description: The date and time a message was sent. + format: datetime`} + + +The example above shows how to specify that your server (a Kafka broker) requires a user and a password to establish a connection. Let's break this down. + +There's a property in the server object called `security`. It's an array and can contain multiple security mechanisms. You chose to specify only one mechanism which is `userPassword`. + +A best practice is to put security details inside the `components.securitySchemes` section as it enables reusability across multiple servers. Below, you can see the same example, but this time, under server security, you see that `$ref` links to more security details located under the `user-password` object in `securitySchemes`. + + +{`asyncapi: 3.0.0 +info: + title: Hello world application + version: '0.1.0' +servers: + production: + host: broker.mycompany.com + protocol: amqp + description: This is "My Company" broker. + security: + - $ref: "#/components/securitySchemes/user-password" +channels: + hello: + address: 'hello' + messages: + sayHelloMessage: + $ref: '#/components/messages/hello-msg' + goodbye: + address: 'goodbye' + messages: + sayGoodbyeMessage: + $ref: '#/components/messages/goodbye-msg' +operations: + receiveHello: + action: 'receive' + channel: + $ref: '#/channels/hello' + receiveGoodbye: + action: 'receive' + channel: + $ref: '#/channels/goodbye' components: messages: hello-msg: @@ -66,19 +134,14 @@ components: type: userPassword`} -The example above shows how to specify that your server (a Kafka broker) requires a user and a password to establish a connection. Let's break this down: - -1. There's a new property in the server object called `security`. It's an array and can contain multiple security mechanisms. You chose to add one called "user-password". This is simply a memorable name that you give to this `security` scheme. Whatever name you choose, it must be defined in the `components/securitySchemes` section. You might have also noticed its value is an empty array. That's because some security schemes allow for extra configuration. Since this is not the case in this example, leave the array empty. -2. We've added a new section called `securitySchemes` under `components`. Inside it, you can find the definition of your `user-password` mechanism. This section makes it clear that you're speaking about a `user/password` mechanism, which is the `type: userPassword` in line 44. - -There are many more security schemes. Learn more about them here. +Learn more about the several kinds of security schemes. ## Conclusion -You're now able to define what security mechanisms your application needs to connect to the server. You've seen how to define the requirement of a user and a password, which is the most common use case. +You can now define what security mechanisms your application needs to connect to the server. You've also seen how to require a user and a password, which is the most common use case. -At this point, you know AsyncAPI well enough to create a simple `Hello world application`. However, real use cases are more complicated than that. The following tutorials can teach you how to create real-world use cases, from zero to production. +At this point, you know AsyncAPI well enough to create a simple `Hello world application`. However, real use cases are more complicated than that. The following tutorials can teach you how to create real-world use cases from zero to production. diff --git a/pages/docs/tutorials/getting-started/servers.md b/pages/docs/tutorials/getting-started/servers.md index 32337395516..6bca604ebe6 100644 --- a/pages/docs/tutorials/getting-started/servers.md +++ b/pages/docs/tutorials/getting-started/servers.md @@ -9,42 +9,48 @@ weight: 110 In the previous lesson, you learned how to create the definition of a simple [Hello World application](/docs/getting-started/hello-world). Let's take it from there. -In this article, you'll learn how to add `servers` to your AsyncAPI document. Adding and defining servers is useful, because it specifies where and how to connect. The connection facilitates where to send and receive messages. +In this tutorial, you'll learn how to add `servers` to your AsyncAPI document. Adding and defining servers is useful because it specifies where and how to connect. The connection facilitates where to send and receive messages. - -{`asyncapi: 2.5.0 + +{`asyncapi: 3.0.0 info: title: Hello world application version: '0.1.0' servers: production: - url: broker.mycompany.com + host: broker.mycompany.com protocol: amqp description: This is "My Company" broker. channels: hello: - publish: - message: + address: 'hello' + messages: + sayHelloMessage: payload: type: string - pattern: '^hello .+$'`} + pattern: '^hello .+$' +operations: + receiveHello: + action: 'receive' + channel: + $ref: '#/channels/hello'`} You've now added a new section called `servers` in your AsyncAPI document. -You might have noticed that our example mentions `amqp`. This protocol is very common and was popularized by RabbitMQ (among others). We picked `amqp` for our example, but you can use any protocol. The most common protocols used are `mqtt` (widely adopted by the Internet of Things and mobile apps), `kafka` (popular for its streaming solution), `ws` (WebSockets are frequently used in browsers), and `http` (used in HTTP streaming APIs). +You might have noticed that our example mentions `amqp`, a very common protocol that was popularized by RabbitMQ (among others). While our example uses `amqp`, you can use any protocol. The most common protocols used are `mqtt` (widely adopted by the Internet of Things and mobile apps), `kafka` (popular for its streaming solution), `ws` (WebSockets are frequently used in browsers), and `http` (used in HTTP streaming APIs). The `servers` section defines where your application should connect to start sending and receiving messages. -1. If you are using a broker-centric architecture such as Kafka or RabbitMQ, usually you specify the URL of the broker. +1. If you are using a broker-centric architecture such as Kafka or RabbitMQ, specify the broker URL. 2. If you have the classic client-server model such as for REST APIs, then your `server` should be the URL of the server. ## Conclusion -Now you know where `Hello world application` connects to and you can start receiving `hello {name}` messages. +Now you know where the `Hello world application` connects to, and you can start receiving `hello {name}` messages. -In the next chapter, you'll learn how to add security requirements to your server. +In the next section, you'll learn how to add security requirements to your server. diff --git a/pages/docs/tutorials/message-validation.md b/pages/docs/tutorials/message-validation.md index e06d226b291..faea57f4a73 100644 --- a/pages/docs/tutorials/message-validation.md +++ b/pages/docs/tutorials/message-validation.md @@ -1,93 +1,110 @@ ---- -title: Message validation in runtime -description: In this tutorial, you'll learn how to validate AsyncAPI messages (events). - -weight: 130 ---- - -## Introduction -In this tutorial, you'll learn how to validate messages (events) that are sent to your AsyncAPI application. - -## Background context -Message validation can be performed at both the **producer** and **consumer** levels. Message validation requires the participation of the producer, consumer, and broker. We will learn how to validate messages at the consumer level by discarding invalid messages based on the parameters provided. - -You will be using the [Eclipse Mosquitto](https://mosquitto.org/) broker. The MQTT protocol provides a lightweight method of messaging using a publish/subscribe model. You will also use an MQTT client that runs an MQTT library and connects to an MQTT broker over a network. Here publishers and subscribers are MQTT clients. The publisher and subscriber labels refer to whether the client is publishing or subscribing to receive messages. - -In the previous tutorial, you generated your application using the [AsyncAPI Generator](https://github.com/asyncapi/generator) Node.js template. - - -If you did not follow the previous tutorial and do not have an `asyncapi.yaml` file ready, then generate one by running: -`asyncapi new --example=tutorial.yml --no-tty`. - -Next, generate a server by running: - - asyncapi generate fromTemplate asyncapi.yaml @asyncapi/nodejs-template -o output -p server=mosquitto - cd output && npm install - - - -Now you will be validating the messages which you will be sending to your application using a Mosquitto broker and an MQTT client. - -## Validate messages -In this step, you will send a message to your application using an MQTT broker and check the errors logged when you accidentally send an invalid message. - -1. Start your generated application. - - -{`npm start`} - - -2. Let's send a message: - - - {`mqtt pub -t 'light/measured' -h 'test.mosquitto.org' -m '{"id": 1, "lumens": "3", "sentAt": "2017-06-07T12:34:32.000Z"}'`} - - -Go back to the previous terminal and check if your application logged the streetlight condition you just sent, with errors related to the invalid message. You should see something displayed in the terminal similar to the following: - - - {`light/measured was received: -{ id: 1, lumens: '3', sentAt: '2017-06-07T12:34:32.000Z' } -❗ Message Rejected. data.lumens should be integer`} - - -Here, you can see that the property `lumens` has type `integer`, but you are sending a message with type `string`. - - - {` message: - name: lumensInfo - payload: - type: object - properties: - id: - type: integer - minimum: 0 - description: Id of the streetlight. - lumens: - type: integer - minimum: 0 - description: Light intensity measured in lumens.`} - - -3. Send a correct message to your application: - - - {`mqtt pub -t 'light/measured' -h 'test.mosquitto.org' -m '{"id": 1, "lumens": 3, "sentAt": "2017-06-07T12:34:32.000Z"}'`} - - -You can see that your generated application received a message in the terminal: - - - {`light/measured was received: -{ id: 1, lumens: 3, sentAt: '2017-06-07T12:34:32.000Z' }`} - - -This indicates that your message is valid and the application recieved it correctly. - -## Summary -In this tutorial, you learned how to connect your generated application to an MQTT broker, send messages through it, identify when an invalid message is sent to your application, and how to correct an invalid message. - -## Next steps -Now that you've completed this tutorial, enjoy our [AsyncAPI message validation guide](https://www.asyncapi.com/docs/guides/message-validation). - ---- +--- +title: Message validation in runtime +description: In this tutorial, you'll learn how to validate AsyncAPI messages (events). + +weight: 130 +--- + +## Introduction +In this tutorial, you'll learn how to validate messages (events) that are sent to your AsyncAPI application. + +## Background context +Message validation can be performed at both the **producer** and **consumer** levels. Message validation requires the participation of the producer, consumer, and broker. We will learn how to validate messages at the consumer level by discarding invalid messages based on the parameters provided. + +You will be using the [Eclipse Mosquitto](https://mosquitto.org/) broker. The MQTT protocol provides a lightweight method of messaging using a publish/subscribe model. You will also use an MQTT client that runs an MQTT library and connects to an MQTT broker over a network. Here producers and consumers are MQTT clients. The producer and consumer labels refer to whether the client is sending or receiving messages. + +In the [previous tutorial, you generated an application](https://asyncapi.com/docs/tutorials/generate-code) that uses [Glee](https://github.com/asyncapi/glee) framework. Now you will be validating the messages that you will be sending to your application using a Mosquitto broker and an MQTT client. + + + +If you did not follow the previous tutorial and do not have an application generated, then follow these instructions: + + asyncapi new glee --name=tutorial --template tutorial`. + cd tutorial && npm install + + + +## Validate messages +In this step, you will send a message to your application using an MQTT broker and check the errors logged when you accidentally send an invalid message. + +1. Start your generated application: + + +{`npm run dev`} + + +2. Send a message: + + + {`mqtt pub -t 'light/measured' -h 'test.mosquitto.org' -m '{"id": 1, "lumens": "3", "sentAt": "2017-06-07T12:34:32.000Z"}'`} + + +Go back to the previous terminal and check if your application logged the streetlight condition you just sent, with errors related to the invalid message. You should see something displayed in the terminal similar to the following: + + + {`lightMeasured was received from mosquitto: +{ id: 1, lumens: '3', sentAt: '2017-06-07T12:34:32.000Z' } +x You have received a malformed event or there has been error processing it. Please review the error below: +TYPE should be integer + + 1 | { + 2 | "id": 1, +> 3 | "lumens": "3", + | ^^^ 👈🏽 type should be integer + 4 | "sentAt": "2017-06-07T12:34:32.000Z" + 5 | } + +ONEOF should match exactly one schema in oneOf + +> 1 | { + | ^ +> 2 | "id": 1, + | ^^^^^^^^^^ +> 3 | "lumens": "3", + | ^^^^^^^^^^ +> 4 | "sentAt": "2017-06-07T12:34:32.000Z" + | ^^^^^^^^^^ +> 5 | } + | ^^ 👈🏽 oneOf should match exactly one schema in oneOf`} + + +Here, you can see that the property `lumens` has type `integer`, but you are sending a message with type `string`: + + + {` message: + name: lumensInfo + payload: + type: object + properties: + id: + type: integer + minimum: 0 + description: Id of the streetlight. + lumens: + type: integer + minimum: 0 + description: Light intensity measured in lumens.`} + + +3. Send a correct message to your application: + + + {`mqtt pub -t 'light/measured' -h 'test.mosquitto.org' -m '{"id": 1, "lumens": 3, "sentAt": "2017-06-07T12:34:32.000Z"}'`} + + +You can see that your generated application received a message in the terminal: + + + {`lightMeasured was received from mosquitto: +{ id: 1, lumens: 3, sentAt: '2017-06-07T12:34:32.000Z' } +Streetlight with id "1" updated its lighting information to 3 lumens at 2017-06-07T12:34:32.000Z.`} + + +Such a terminal message indicates that your message is valid and the application received it correctly. + +## Summary +In this tutorial, you learned how to connect your generated application to an MQTT broker, send messages through it, identify when an invalid message is sent to your application, and how to correct an invalid message. + +## Next steps +Now that you've completed this tutorial, enjoy our [AsyncAPI message validation guide](https://www.asyncapi.com/docs/guides/message-validation). + diff --git a/pages/docs/tutorials/streetlights-interactive.md b/pages/docs/tutorials/streetlights-interactive.md index 405dcee1d29..b28bcb2a407 100644 --- a/pages/docs/tutorials/streetlights-interactive.md +++ b/pages/docs/tutorials/streetlights-interactive.md @@ -1,17 +1,13 @@ --- -title: 'Streetlights - Interactive (Alpha)' +title: 'Streetlights - Interactive' description: Interactive version of the original Streetlights tutorial. weight: 180 --- ->tl;dr -Please try out [this](https://killercoda.com/asyncapi/scenario/streetlight-tut) interactive tutorial and let us know what you think, as we plan to have all the docs written this way. +> Check out the [Streetlights interactive tutorial](https://killercoda.com/asyncapi/scenario/streetlight-tut-v3); we plan to have more docs written this way! Our interactive tutorials on [KillerCoda](https://killercoda.com) work for everyone, regardless of your operating system. -We created an interactive tutorial using [KillerCoda](https://killercoda.com). It is another version of the [Streetlights](./streetlights.md) tutorial that will always work for you no matter what operating system you have. -Please become our alpha testers of the tutorial: - -1. Go through the tutorial [here](https://killercoda.com/asyncapi/scenario/streetlight-tut) -2. Let us know what you think using the channel that works for you the best: +1. Go through the [Streetlights interactive tutorial](https://killercoda.com/asyncapi/scenario/streetlight-tut-v3). +2. Share your opinion via your preferred channel: - [Slack](https://www.asyncapi.com/slack-invite/) - [Twitter](https://twitter.com/AsyncAPISpec) - [GitHub Issue](https://github.com/asyncapi/website/issues/) diff --git a/pages/docs/tutorials/studio-document-validation.md b/pages/docs/tutorials/studio-document-validation.md index 199189dfc28..91ea2a26b08 100644 --- a/pages/docs/tutorials/studio-document-validation.md +++ b/pages/docs/tutorials/studio-document-validation.md @@ -1,29 +1,23 @@ --- title: "Validate AsyncAPI document with Studio" -description: This tutorial will teach you how to validate AsyncAPI documents using the AsyncAPI Studio tool. +description: In this tutorial, you'll learn how to validate AsyncAPI documents using the AsyncAPI Studio tool. weight: 120 --- ## Introduction -This tutorial will teach you how to validate AsyncAPI documents using the [AsyncAPI Studio tool](https://studio.asyncapi.com/). +In this tutorial, you'll learn how to validate AsyncAPI documents using the [AsyncAPI Studio tool](https://studio.asyncapi.com/). -You will start with a broken AsyncAPI document and troubleshoot via console errors step-by-step until we end up with a valid AsyncAPI document. This process will illustrate how to identify [`REQUIRED` properties in AsyncAPI documents](https://www.asyncapi.com/docs/reference/specification/latest#A2SObject). +You will start with a broken AsyncAPI document and troubleshoot via console errors step-by-step until you end up with a valid AsyncAPI document. This process will illustrate identifying [`REQUIRED` properties in AsyncAPI documents](https://www.asyncapi.com/docs/reference/specification/latest#A2SObject). ## Background context An AsyncAPI document is a file that defines and annotates the different components of a specific Event-Driven API. The format of the file must be JSON or YAML. You can use this document to generate both documentation and code. The AsyncAPI Studio tool allows you to develop an AsyncAPI document, validate it, preview it, convert it to the latest version, and visualize event flows. - - -If you did not follow the previous tutorial and do not have an `asyncapi.yaml` file ready, then generate one using `asyncapi new --example=tutorial.yml --no-tty` command. - - - Now let's experiment with an invalid file to see how errors are displayed and how to make that file valid again. ## Copy invalid AsyncAPI document -Let's pretend we have an invalid AsyncAPI document. +Let's pretend you have an invalid AsyncAPI document. 1. Open [Studio](https://studio.asyncapi.com/). @@ -36,23 +30,27 @@ You can also skip the step below by clicking on New File in Studio and opening t 2. Copy and paste the below invalid AsyncAPI document: ```yaml -asyncapi: '1.0.0' +asyncapi: 3.0.0 info: title: Streetlights API version: '1.0.0' + description: | + The Smartylighting Streetlights API allows you + to remotely manage the city lights. license: name: Apache 2.0 url: 'https://www.apache.org/licenses/LICENSE-2.0' + servers: mosquitto: - url: mqtt://test.mosquitto.org + url: test.mosquitto.org protocol: mqtt + channels: - light/measured: - publish: - summary: Inform about environmental lighting conditions for a particular streetlight. - operationId: onLightMeasured - message: + lightMeasured: + address: 'light/measured' + messages: + lightMeasuredMessage: name: LightMeasured payload: type: object @@ -66,31 +64,38 @@ channels: minimum: 0 description: Light intensity measured in lumens. sentAt: - type: integer + type: string format: date-time description: Date and time when the message was sent. - ``` + +operations: + onLightMeasured: + action: 'receive' + summary: Inform about environmental lighting conditions for a particular streetlight. + channel: + $ref: '#/channels/lightMeasured' +``` ## Troubleshoot Studio errors -Let's fix the errors one by one until we end up with a valid AsyncAPI document. +Let's fix the errors one by one until you end up with a valid AsyncAPI document. 1. You can see the error message on the screen: `Empty or invalid document. Please fix errors/define AsyncAPI document.` -2. Open diagnostics, you can see more information related to your errors. +2. Open **DIAGNOSTICS**, you can see more information related to your errors. -3. Fix the incorrect AsyncAPI specification number to `2.5.0`. +3. Fix the incorrect server information. Use `host` instead of `url` ```yaml -asyncapi: '2.5.0' -info: - title: Account Service - version: 1.0.0 - ``` +servers: + mosquitto: + host: test.mosquitto.org + protocol: mqtt +``` Notice how description property is missing; that doesn't make the AsyncAPI document invalid, but it's always better to include. -4. Read the next error: `must be number`. Fix the `minimum` by changing it to: `0`. +4. Read the next error: `"minimum" property type must be number`. Fix the `minimum` by changing it to: `0`. ```yaml properties: @@ -98,30 +103,14 @@ Notice how description property is missing; that doesn't make the AsyncAP type: integer minimum: 0 ``` -5. You see three errors: -- must be equal to one of the allowed values -- must be array -- must match a schema in `anyOf` - -`anyOf` means it should match any one the above schemas then it is valid. - -Now let's fix this error by changing the type to `string` - -```yaml - sentAt: - type: string - format: date-time - description: Date and time when the message was sent. -``` - -6. Congratulations! You identified and fixed all the errors, and now have a valid AsyncAPI document. +5. Congratulations! You identified and fixed all the errors, and now have a valid AsyncAPI document. ## Summary -This tutorial taught us how to validate an AsyncAPI document using the AsyncAPI Studio tool. We also learned to troubleshoot an invalid AsyncAPI document by following the error message directions in diagnostics. In doing so, we learned how to identify `REQUIRED` properties in all AsyncAPI documents. +In this tutorial, you learned how to validate an AsyncAPI document using the AsyncAPI Studio tool. You also learned to troubleshoot an invalid AsyncAPI document by following the error message directions in diagnostics. In doing so, you learned how to identify `REQUIRED` properties in all AsyncAPI documents. ## Next steps -Now that you have completed this tutorial, go ahead to learn [generate AsyncAPI messages (events)](https://asyncapi.com/docs/tutorials/generate-code) which you will be sending to your application. +Now that you have completed this tutorial, go ahead to learn [generate AsyncAPI messages (events)](/docs/tutorials/generate-code) which you will be sending to your application. -You may also enjoy reading our [AsyncAPI document validation guide](https://asyncapi.com/docs/guides/validate). +You may also enjoy reading our [AsyncAPI document validation guide](/docs/guides/validate). --- diff --git a/pages/tools/cli.js b/pages/tools/cli.js index a6eab46fdec..8982f19b67c 100644 --- a/pages/tools/cli.js +++ b/pages/tools/cli.js @@ -11,7 +11,6 @@ import { import CodeBlock from '../../components/editor/CodeBlock'; import Heading from '../../components/typography/Heading'; import Paragraph from '../../components/typography/Paragraph'; -import DocsButton from '../../components/buttons/DocsButton'; import Button from '../../components/buttons/Button'; const features = [ diff --git a/pages/tools/github-actions.js b/pages/tools/github-actions.js index e09304cdce3..c8292fe5693 100644 --- a/pages/tools/github-actions.js +++ b/pages/tools/github-actions.js @@ -78,10 +78,10 @@ jobs: uses: actions/checkout@v2 - name: Generating HTML from my AsyncAPI document - uses: asyncapi/github-action-for-generator@v0.2.0 + uses: asyncapi/github-action-for-generator - name: Deploy GH page - uses: JamesIves/github-pages-deploy-action@3.4.2 + uses: JamesIves/github-pages-deploy-action with: ACCESS_TOKEN: \${{ secrets.GITHUB_TOKEN }} BRANCH: gh-pages diff --git a/pages/tools/parsers.js b/pages/tools/parsers.js index 4b8d6df7636..047c0038e52 100644 --- a/pages/tools/parsers.js +++ b/pages/tools/parsers.js @@ -55,7 +55,7 @@ export default function ParsersPage() { npm install @asyncapi/parser {renderButtons()}
- + {getCode()}
@@ -68,26 +68,32 @@ function getCode() { return `import { parse } from '@asyncapi/parser' const doc = await parse(\` - asyncapi: '2.6.0' - info: - title: Example - version: '1.0.0' - channels: - example-channel: - subscribe: - message: - payload: - type: object - properties: - exampleField: - type: string - exampleNumber: - type: number - exampleDate: - type: string - format: date-time +asyncapi: '3.0.0' +info: + title: Example + version: '1.0.0' +channels: + example: + address: example-channel + messages: + example: + payload: + type: object + properties: + exampleField: + type: string + exampleNumber: + type: number + exampleDate: + type: string + format: date-time +operations: + example: + action: send + channel: + $ref: '#/channels/example' \`) console.log(doc.info().title()) // => Example` -} \ No newline at end of file +} diff --git a/public/_redirects b/public/_redirects index daa08965baf..21425ffb3f6 100644 --- a/public/_redirects +++ b/public/_redirects @@ -24,26 +24,23 @@ https://www.asyncapi.io/* https://www.asyncapi.com/:splat 301! # SPEC-REDIRECTION:START /docs/reference/specification/3.0.0 /docs/reference/specification/v3.0.0 302! -/docs/reference/specification/2.6.0 /docs/reference/specification/v2.6.0 302! -/docs/reference/specification/2.5.0 /docs/reference/specification/v2.5.0 302! -/docs/reference/specification/2.4.0 /docs/reference/specification/v2.4.0 302! -/docs/reference/specification/2.3.0 /docs/reference/specification/v2.3.0 302! -/docs/reference/specification/2.2.0 /docs/reference/specification/v2.2.0 302! -/docs/reference/specification/2.1.0 /docs/reference/specification/v2.1.0 302! -/docs/reference/specification/2.0.0 /docs/reference/specification/v2.0.0 302! # SPEC-REDIRECTION:END /docs/specifications/latest /docs/reference/specification/latest 302! -/docs/specifications/2.4.0 /docs/reference/specification/v2.4.0 302! -/docs/specifications/2.3.0 /docs/reference/specification/v2.3.0 302! -/docs/specifications/2.2.0 /docs/reference/specification/v2.2.0 302! -/docs/specifications/2.1.0 /docs/reference/specification/v2.1.0 302! -/docs/specifications/2.0.0 /docs/reference/specification/v2.0.0 302! -/docs/specifications/v2.4.0 /docs/reference/specification/v2.4.0 302! -/docs/specifications/v2.3.0 /docs/reference/specification/v2.3.0 302! -/docs/specifications/v2.2.0 /docs/reference/specification/v2.2.0 302! -/docs/specifications/v2.1.0 /docs/reference/specification/v2.1.0 302! -/docs/specifications/v2.0.0 /docs/reference/specification/v2.0.0 302! +/docs/specifications/2.6.0 https://v2.asyncapi.com/docs/reference/specification/v2.6.0 302! +/docs/specifications/2.5.0 https://v2.asyncapi.com/docs/reference/specification/v2.5.0 302! +/docs/specifications/2.4.0 https://v2.asyncapi.com/docs/reference/specification/v2.4.0 302! +/docs/specifications/2.3.0 https://v2.asyncapi.com/docs/reference/specification/v2.3.0 302! +/docs/specifications/2.2.0 https://v2.asyncapi.com/docs/reference/specification/v2.2.0 302! +/docs/specifications/2.1.0 https://v2.asyncapi.com/docs/reference/specification/v2.1.0 302! +/docs/specifications/2.0.0 https://v2.asyncapi.com/docs/reference/specification/v2.0.0 302! +/docs/specifications/v2.6.0 https://v2.asyncapi.com/docs/reference/specification/v2.6.0 302! +/docs/specifications/v2.5.0 https://v2.asyncapi.com/docs/reference/specification/v2.5.0 302! +/docs/specifications/v2.4.0 https://v2.asyncapi.com/docs/reference/specification/v2.4.0 302! +/docs/specifications/v2.3.0 https://v2.asyncapi.com/docs/reference/specification/v2.3.0 302! +/docs/specifications/v2.2.0 https://v2.asyncapi.com/docs/reference/specification/v2.2.0 302! +/docs/specifications/v2.1.0 https://v2.asyncapi.com/docs/reference/specification/v2.1.0 302! +/docs/specifications/v2.0.0 https://v2.asyncapi.com/docs/reference/specification/v2.0.0 302! /docs/specifications/1.0.0 https://github.com/asyncapi/asyncapi/blob/master/versions/1.0.0/asyncapi.md 302! /docs/specifications/1.1.0 https://github.com/asyncapi/asyncapi/blob/master/versions/1.1.0/asyncapi.md 302! diff --git a/public/img/posts/release-notes-3.0.0/cover.webp b/public/img/posts/release-notes-3.0.0/cover.webp new file mode 100644 index 0000000000000000000000000000000000000000..eb5d0a6c12743f27ac77dbc886f177dfc3ec76ed GIT binary patch literal 7006 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 Date: Tue, 5 Dec 2023 13:35:39 +0100 Subject: [PATCH 119/134] docs(cli): update latest cli docs (#2391) --- pages/docs/tools/cli/usage.md | 50 +++++++++++++++++------------------ 1 file changed, 25 insertions(+), 25 deletions(-) diff --git a/pages/docs/tools/cli/usage.md b/pages/docs/tools/cli/usage.md index d787c54a25e..f3ec3010258 100644 --- a/pages/docs/tools/cli/usage.md +++ b/pages/docs/tools/cli/usage.md @@ -29,7 +29,7 @@ $ npm install -g @asyncapi/cli $ asyncapi COMMAND running command... $ asyncapi (--version) -@asyncapi/cli/1.1.11 linux-x64 node-v18.18.2 +@asyncapi/cli/1.2.8 linux-x64 node-v18.18.2 $ asyncapi --help [COMMAND] USAGE $ asyncapi COMMAND @@ -93,7 +93,7 @@ EXAMPLES $ asyncapi bundle ./asyncapi.yaml ./features.yaml --base ./asyncapi.yaml --reference-into-components ``` -_See code: [src/commands/bundle.ts](https://github.com/asyncapi/cli/blob/v1.1.11/src/commands/bundle.ts)_ +_See code: [src/commands/bundle.ts](https://github.com/asyncapi/cli/blob/v1.2.8/src/commands/bundle.ts)_ ## `asyncapi config` @@ -107,7 +107,7 @@ DESCRIPTION CLI config settings ``` -_See code: [src/commands/config/index.ts](https://github.com/asyncapi/cli/blob/v1.1.11/src/commands/config/index.ts)_ +_See code: [src/commands/config/index.ts](https://github.com/asyncapi/cli/blob/v1.2.8/src/commands/config/index.ts)_ ## `asyncapi config context` @@ -121,7 +121,7 @@ DESCRIPTION Manage short aliases for full paths to AsyncAPI documents ``` -_See code: [src/commands/config/context/index.ts](https://github.com/asyncapi/cli/blob/v1.1.11/src/commands/config/context/index.ts)_ +_See code: [src/commands/config/context/index.ts](https://github.com/asyncapi/cli/blob/v1.2.8/src/commands/config/context/index.ts)_ ## `asyncapi config context add CONTEXT-NAME SPEC-FILE-PATH` @@ -143,7 +143,7 @@ DESCRIPTION Add a context to the store ``` -_See code: [src/commands/config/context/add.ts](https://github.com/asyncapi/cli/blob/v1.1.11/src/commands/config/context/add.ts)_ +_See code: [src/commands/config/context/add.ts](https://github.com/asyncapi/cli/blob/v1.2.8/src/commands/config/context/add.ts)_ ## `asyncapi config context current` @@ -160,7 +160,7 @@ DESCRIPTION Shows the current context that is being used ``` -_See code: [src/commands/config/context/current.ts](https://github.com/asyncapi/cli/blob/v1.1.11/src/commands/config/context/current.ts)_ +_See code: [src/commands/config/context/current.ts](https://github.com/asyncapi/cli/blob/v1.2.8/src/commands/config/context/current.ts)_ ## `asyncapi config context edit CONTEXT-NAME NEW-SPEC-FILE-PATH` @@ -181,7 +181,7 @@ DESCRIPTION Edit a context in the store ``` -_See code: [src/commands/config/context/edit.ts](https://github.com/asyncapi/cli/blob/v1.1.11/src/commands/config/context/edit.ts)_ +_See code: [src/commands/config/context/edit.ts](https://github.com/asyncapi/cli/blob/v1.2.8/src/commands/config/context/edit.ts)_ ## `asyncapi config context init [CONTEXT-FILE-PATH]` @@ -204,7 +204,7 @@ DESCRIPTION Initialize context ``` -_See code: [src/commands/config/context/init.ts](https://github.com/asyncapi/cli/blob/v1.1.11/src/commands/config/context/init.ts)_ +_See code: [src/commands/config/context/init.ts](https://github.com/asyncapi/cli/blob/v1.2.8/src/commands/config/context/init.ts)_ ## `asyncapi config context list` @@ -221,7 +221,7 @@ DESCRIPTION List all the stored contexts in the store ``` -_See code: [src/commands/config/context/list.ts](https://github.com/asyncapi/cli/blob/v1.1.11/src/commands/config/context/list.ts)_ +_See code: [src/commands/config/context/list.ts](https://github.com/asyncapi/cli/blob/v1.2.8/src/commands/config/context/list.ts)_ ## `asyncapi config context remove CONTEXT-NAME` @@ -241,7 +241,7 @@ DESCRIPTION Delete a context from the store ``` -_See code: [src/commands/config/context/remove.ts](https://github.com/asyncapi/cli/blob/v1.1.11/src/commands/config/context/remove.ts)_ +_See code: [src/commands/config/context/remove.ts](https://github.com/asyncapi/cli/blob/v1.2.8/src/commands/config/context/remove.ts)_ ## `asyncapi config context use CONTEXT-NAME` @@ -261,7 +261,7 @@ DESCRIPTION Set a context as current ``` -_See code: [src/commands/config/context/use.ts](https://github.com/asyncapi/cli/blob/v1.1.11/src/commands/config/context/use.ts)_ +_See code: [src/commands/config/context/use.ts](https://github.com/asyncapi/cli/blob/v1.2.8/src/commands/config/context/use.ts)_ ## `asyncapi config versions` @@ -278,7 +278,7 @@ DESCRIPTION Show versions of AsyncAPI tools used ``` -_See code: [src/commands/config/versions.ts](https://github.com/asyncapi/cli/blob/v1.1.11/src/commands/config/versions.ts)_ +_See code: [src/commands/config/versions.ts](https://github.com/asyncapi/cli/blob/v1.2.8/src/commands/config/versions.ts)_ ## `asyncapi convert [SPEC-FILE]` @@ -300,7 +300,7 @@ DESCRIPTION Convert asyncapi documents older to newer versions ``` -_See code: [src/commands/convert.ts](https://github.com/asyncapi/cli/blob/v1.1.11/src/commands/convert.ts)_ +_See code: [src/commands/convert.ts](https://github.com/asyncapi/cli/blob/v1.2.8/src/commands/convert.ts)_ ## `asyncapi diff OLD NEW` @@ -355,7 +355,7 @@ DESCRIPTION Find diff between two asyncapi files ``` -_See code: [src/commands/diff.ts](https://github.com/asyncapi/cli/blob/v1.1.11/src/commands/diff.ts)_ +_See code: [src/commands/diff.ts](https://github.com/asyncapi/cli/blob/v1.2.8/src/commands/diff.ts)_ ## `asyncapi generate` @@ -369,7 +369,7 @@ DESCRIPTION Generate typed models or other things like clients, applications or docs using AsyncAPI Generator templates. ``` -_See code: [src/commands/generate/index.ts](https://github.com/asyncapi/cli/blob/v1.1.11/src/commands/generate/index.ts)_ +_See code: [src/commands/generate/index.ts](https://github.com/asyncapi/cli/blob/v1.2.8/src/commands/generate/index.ts)_ ## `asyncapi generate fromTemplate ASYNCAPI TEMPLATE` @@ -406,7 +406,7 @@ EXAMPLES $ asyncapi generate fromTemplate asyncapi.yaml @asyncapi/html-template --param version=1.0.0 singleFile=true --output ./docs --force-write ``` -_See code: [src/commands/generate/fromTemplate.ts](https://github.com/asyncapi/cli/blob/v1.1.11/src/commands/generate/fromTemplate.ts)_ +_See code: [src/commands/generate/fromTemplate.ts](https://github.com/asyncapi/cli/blob/v1.2.8/src/commands/generate/fromTemplate.ts)_ ## `asyncapi generate models LANGUAGE FILE` @@ -480,7 +480,7 @@ DESCRIPTION Generates typed models ``` -_See code: [src/commands/generate/models.ts](https://github.com/asyncapi/cli/blob/v1.1.11/src/commands/generate/models.ts)_ +_See code: [src/commands/generate/models.ts](https://github.com/asyncapi/cli/blob/v1.2.8/src/commands/generate/models.ts)_ ## `asyncapi new` @@ -535,7 +535,7 @@ EXAMPLES $ asyncapi new --file-name=my-asyncapi.yml --example=default-example.yml --no-tty - create a new file with a specific name, using one of the examples and without interactive mode ``` -_See code: [src/commands/new/index.ts](https://github.com/asyncapi/cli/blob/v1.1.11/src/commands/new/index.ts)_ +_See code: [src/commands/new/index.ts](https://github.com/asyncapi/cli/blob/v1.2.8/src/commands/new/index.ts)_ ## `asyncapi new file` @@ -590,7 +590,7 @@ EXAMPLES $ asyncapi new --file-name=my-asyncapi.yml --example=default-example.yml --no-tty - create a new file with a specific name, using one of the examples and without interactive mode ``` -_See code: [src/commands/new/file.ts](https://github.com/asyncapi/cli/blob/v1.1.11/src/commands/new/file.ts)_ +_See code: [src/commands/new/file.ts](https://github.com/asyncapi/cli/blob/v1.2.8/src/commands/new/file.ts)_ ## `asyncapi new glee` @@ -609,7 +609,7 @@ DESCRIPTION Creates a new Glee project ``` -_See code: [src/commands/new/glee.ts](https://github.com/asyncapi/cli/blob/v1.1.11/src/commands/new/glee.ts)_ +_See code: [src/commands/new/glee.ts](https://github.com/asyncapi/cli/blob/v1.2.8/src/commands/new/glee.ts)_ ## `asyncapi new project` @@ -628,7 +628,7 @@ DESCRIPTION Creates a new Glee project ``` -_See code: [src/commands/new/project.ts](https://github.com/asyncapi/cli/blob/v1.1.11/src/commands/new/project.ts)_ +_See code: [src/commands/new/project.ts](https://github.com/asyncapi/cli/blob/v1.2.8/src/commands/new/project.ts)_ ## `asyncapi optimize [SPEC-FILE]` @@ -664,7 +664,7 @@ EXAMPLES $ asyncapi optimize ./asyncapi.yaml --optimization=remove-components,reuse-components,move-to-components --output=terminal --no-tty ``` -_See code: [src/commands/optimize.ts](https://github.com/asyncapi/cli/blob/v1.1.11/src/commands/optimize.ts)_ +_See code: [src/commands/optimize.ts](https://github.com/asyncapi/cli/blob/v1.2.8/src/commands/optimize.ts)_ ## `asyncapi start` @@ -678,7 +678,7 @@ DESCRIPTION Start asyncapi studio ``` -_See code: [src/commands/start/index.ts](https://github.com/asyncapi/cli/blob/v1.1.11/src/commands/start/index.ts)_ +_See code: [src/commands/start/index.ts](https://github.com/asyncapi/cli/blob/v1.2.8/src/commands/start/index.ts)_ ## `asyncapi start studio` @@ -697,7 +697,7 @@ DESCRIPTION starts a new local instance of Studio ``` -_See code: [src/commands/start/studio.ts](https://github.com/asyncapi/cli/blob/v1.1.11/src/commands/start/studio.ts)_ +_See code: [src/commands/start/studio.ts](https://github.com/asyncapi/cli/blob/v1.2.8/src/commands/start/studio.ts)_ ## `asyncapi validate [SPEC-FILE]` @@ -724,5 +724,5 @@ DESCRIPTION validate asyncapi file ``` -_See code: [src/commands/validate.ts](https://github.com/asyncapi/cli/blob/v1.1.11/src/commands/validate.ts)_ +_See code: [src/commands/validate.ts](https://github.com/asyncapi/cli/blob/v1.2.8/src/commands/validate.ts)_ From c11bffaacc70bce8c5b40ac229eb94c1006d5870 Mon Sep 17 00:00:00 2001 From: asyncapi-bot Date: Tue, 5 Dec 2023 13:37:05 +0100 Subject: [PATCH 120/134] docs(generator): update latest generator docs (#2376) --- pages/docs/tools/generator/asyncapi-document.md | 4 ++-- pages/docs/tools/generator/file-templates.md | 14 +++++++------- pages/docs/tools/generator/index.md | 2 +- .../docs/tools/generator/nunjucks-render-engine.md | 2 +- pages/docs/tools/generator/parser.md | 2 +- pages/docs/tools/generator/react-render-engine.md | 2 +- 6 files changed, 13 insertions(+), 13 deletions(-) diff --git a/pages/docs/tools/generator/asyncapi-document.md b/pages/docs/tools/generator/asyncapi-document.md index 82d1a7d717c..dfd2db6e854 100644 --- a/pages/docs/tools/generator/asyncapi-document.md +++ b/pages/docs/tools/generator/asyncapi-document.md @@ -19,7 +19,7 @@ In the following sections, you'll learn about the inner working of the generator 1. The **Generator** receives the **AsyncAPI Document** as input. 2. The **Generator** sends to the **[Parser](parser)** the **asyncapiString** is a stringified version of the original **AsyncAPI Document** to validate and parse it. 3. The **Parser** validates the **AsyncAPI Document** using additional schema-related plugins, either the OpenAPI schema, RAML data types, or Avro schema. -4. If the **Parser** determines that the **AsyncAPI Document** is valid, it manipulates the original JSON/YAML document and provides a set of helper functions in return, bundling them together into an **asyncapi** variable that is an instance of [**AsyncAPIDocument**](https://github.com/asyncapi/parser-js/blob/master/API.md#module_@asyncapi/parser+AsyncAPIDocument). +4. If the **Parser** determines that the **AsyncAPI Document** is valid, it manipulates the original JSON/YAML document and provides a set of helper functions in return, bundling them together into an **asyncapi** variable that is an instance of [**AsyncAPIDocument**](https://github.com/asyncapi/parser-api/blob/master/docs/api.md#asyncapidocument). 5. At this point, the **Generator** passes the **originalAsyncAPI** and the **asyncapi** which make up part of the **[Template Context](template-context)** to the **Render Engine**. 6. The **Template Context** is accessible to the template files that are passed to either the [react](react-render-engine) or [nunjucks](nunjucks-render-engine) **Render Engines**. @@ -88,4 +88,4 @@ const apiName = asyncapi.info().title(); const channels = asyncapi.channels(); ``` -> To learn about the various instances you can use to access the documents' content, look at the API of the AsyncAPI JavaScript Parser and the structure of [AsyncAPIDocument](https://github.com/asyncapi/parser-js/blob/master/API.md#module_@asyncapi/parser+AsyncAPIDocument) +> To learn about the various instances you can use to access the documents' content, look at the API of the AsyncAPI JavaScript Parser and the structure of [AsyncAPIDocument](https://github.com/asyncapi/parser-api/blob/master/docs/api.md#asyncapidocument) diff --git a/pages/docs/tools/generator/file-templates.md b/pages/docs/tools/generator/file-templates.md index d84c7d3a37a..5ba4a9687d3 100644 --- a/pages/docs/tools/generator/file-templates.md +++ b/pages/docs/tools/generator/file-templates.md @@ -5,13 +5,13 @@ weight: 140 It is possible to generate files for each specific object in your AsyncAPI documentation. For example, you can specify a filename like `$$channel$$.js` to generate a file for each channel defined in your AsyncAPI. The following file-template names and extra variables in them are available: - - `$$channel$$`, within the template-file you have access to two variables [`channel`](https://github.com/asyncapi/parser-js/blob/master/API.md#Channel) and [`channelName`](https://github.com/asyncapi/parser-js/blob/master/API.md#AsyncAPIDocument+channels). Where the `channel` contains the current channel being rendered. - - `$$message$$`, within the template-file you have access to two variables [`message`](https://github.com/asyncapi/parser-js/blob/master/API.md#Message) and [`messageName`](https://github.com/asyncapi/parser-js/blob/master/API.md#Message+uid). Where `message` contains the current message being rendered. - - `$$schema$$`, within the template-file you have access to two variables [`schema`](https://github.com/asyncapi/parser-js/blob/master/API.md#Schema) and [`schemaName`](https://github.com/asyncapi/parser-js/blob/master/API.md#Schema+uid). Where `schema` contains the current schema being rendered. Only schemas from [Components object](https://www.asyncapi.com/docs/specifications/2.0.0/#a-name-componentsobject-a-components-object) are used. - - `$$everySchema$$`, within the template-file you have access to two variables [`schema`](https://github.com/asyncapi/parser-js/blob/master/API.md#Schema) and [`schemaName`](https://github.com/asyncapi/parser-js/blob/master/API.md#Schema+uid). Where `schema` contains the current schema being rendered. Every [Schema object](https://www.asyncapi.com/docs/specifications/2.0.0/#schemaObject) from the entire AsyncAPI file is used. - - `$$objectSchema$$`, within the template-file you have access to two variables [`schema`](https://github.com/asyncapi/parser-js/blob/master/API.md#Schema) and [`schemaName`](https://github.com/asyncapi/parser-js/blob/master/API.md#Schema+uid). Where `schema` contains the current schema being rendered. All the [Schema objects](https://www.asyncapi.com/docs/specifications/2.0.0/#schemaObject) with type object is used. - - `$$parameter$$`, within the template-file you have access to two variables [`parameter`](https://github.com/asyncapi/parser-js/blob/master/API.md#ChannelParameter) and [`parameterName`](https://github.com/asyncapi/parser-js/blob/master/API.md#Channel+parameters). Where the `parameter` contains the current parameter being rendered. - - `$$securityScheme$$`, within the template-file you have access to two variables [`securityScheme`](https://github.com/asyncapi/parser-js/blob/master/API.md#SecurityScheme) and [`securitySchemeName`](https://github.com/asyncapi/parser-js/blob/master/API.md#Components+securitySchemes). Where `securityScheme` contains the current security scheme being rendered. + - `$$channel$$`, within the template-file you have access to two variables [`channel`](https://github.com/asyncapi/parser-api/blob/master/docs/api.md#channel) and [`channelName`](https://github.com/asyncapi/parser-api/blob/master/docs/api.md#channels). Where the `channel` contains the current channel being rendered. + - `$$message$$`, within the template-file you have access to two variables [`message`](https://github.com/asyncapi/parser-api/blob/master/docs/api.md#message) and [`messageName`](https://github.com/asyncapi/parser-api/blob/master/docs/api.md#message). Where `message` contains the current message being rendered. + - `$$schema$$`, within the template-file you have access to two variables [`schema`](https://github.com/asyncapi/parser-api/blob/master/docs/api.md#schema) and [`schemaName`](https://github.com/asyncapi/parser-api/blob/master/docs/api.md#schema). Where `schema` contains the current schema being rendered. Only schemas from [Components object](https://www.asyncapi.com/docs/reference/specification/latest#componentsObject) are used. + - `$$everySchema$$`, within the template-file you have access to two variables [`schema`](https://github.com/asyncapi/parser-api/blob/master/docs/api.md#schema) and [`schemaName`](https://github.com/asyncapi/parser-api/blob/master/docs/api.md#schemas). Where `schema` contains the current schema being rendered. Every [Schema object](https://www.asyncapi.com/docs/specifications/2.0.0/#schemaObject) from the entire AsyncAPI file is used. + - `$$objectSchema$$`, within the template-file you have access to two variables [`schema`](https://github.com/asyncapi/parser-api/blob/master/docs/api.md#schema) and [`schemaName`](https://github.com/asyncapi/parser-api/blob/master/docs/api.md#schemas). Where `schema` contains the current schema being rendered. All the [Schema objects](https://www.asyncapi.com/docs/reference/specification/latest#multiFormatSchemaObject) with type object is used. + - `$$parameter$$`, within the template-file you have access to two variables [`parameter`](https://github.com/asyncapi/parser-api/blob/master/docs/api.md#channelparameter) and [`parameterName`](https://github.com/asyncapi/parser-api/blob/master/docs/api.md#channelparameters). Where the `parameter` contains the current parameter being rendered. + - `$$securityScheme$$`, within the template-file you have access to two variables [`securityScheme`](https://github.com/asyncapi/parser-api/blob/master/docs/api.md#securityscheme) and [`securitySchemeName`](https://github.com/asyncapi/parser-api/blob/master/docs/api.md#securityschemes). Where `securityScheme` contains the current security scheme being rendered. The file name will be equal to `*Name` variable. diff --git a/pages/docs/tools/generator/index.md b/pages/docs/tools/generator/index.md index 544528af34e..c8d2ca26004 100644 --- a/pages/docs/tools/generator/index.md +++ b/pages/docs/tools/generator/index.md @@ -19,7 +19,7 @@ The AsyncAPI generator is a tool that generates anything you want using the **[A 1. The **Generator** receives the **[Template](generator/template)** and **[AsyncAPI Document](generator/asyncapi-document)** as inputs. 2. The **Generator** sends to the **[Parser](generator/parser)** the **asyncapiString** which is a stringified version of the original **AsyncAPI Document**. 3. The **Parser** uses additional plugins such as the OpenAPI, RAML, or Avro schemas to validate custom schemas of message payloads defined in the **AsyncAPI Document**. -4. If the **Parser** determines that the original **AsyncAPI Document** is valid, it manipulates the document and returns a set of helper functions and properties and bundles them together into an **asyncapi** variable that is an instance of [**AsyncAPIDocument**](https://github.com/asyncapi/parser-js/blob/master/API.md#module_@asyncapi/parser+AsyncAPIDocument). The **asyncapi** helper functions make it easier to access the contents of the AsyncAPI Document. +4. If the **Parser** determines that the original **AsyncAPI Document** is valid, it manipulates the document and returns a set of helper functions and properties and bundles them together into an **asyncapi** variable that is an instance of [**AsyncAPIDocument**](https://github.com/asyncapi/parser-api/blob/master/docs/api.md#asyncapidocument). The **asyncapi** helper functions make it easier to access the contents of the AsyncAPI Document. 5. At this point, the **Generator** passes the **[asyncapi](generator/asyncapi-document#method-2-asyncapi-and-template)**, the **[originalAsyncAPI](generator/asyncapi-document#method-1-originalasyncapi-and-template)**, and the **params** which collectively make up the **[Template Context](generator/asyncapi-context)** to the **Render Engine**. 6. AsyncAPI has two **Render Engines**([react](generator/react-render-engine) and [nunjucks](generator/nunjucks-render-engine). Depending on which one you've specified in your `package.json`, the **Generator** knows the right **Render Engine** to pass both the **Template Files** and the **Template Context**. 7. Once the **Render Engine** receives the **Template Files** and the **Template Context**, it injects all the dynamic values in your react or nunjucks based **Template Files** using the **Template Context**. As a result, the **Render Engine** generates **markdown**, **pdf**, **boilerplate code**, and **anything else** you specified to be generated as output. diff --git a/pages/docs/tools/generator/nunjucks-render-engine.md b/pages/docs/tools/generator/nunjucks-render-engine.md index 727cd212188..a64b64ab896 100644 --- a/pages/docs/tools/generator/nunjucks-render-engine.md +++ b/pages/docs/tools/generator/nunjucks-render-engine.md @@ -11,7 +11,7 @@ weight: 120 1. Templates may contain `partials` (reusable chunks). They must be stored in the `.partials` directory under the template directory. [Read more about partials](#partials). 1. Templates may contain multiple files. Unless stated otherwise, all files will be rendered. 1. The default variables you have access to in any the template file are the following: - - `asyncapi` that is a parsed spec file object. Read the [API](https://github.com/asyncapi/parser-js/blob/master/API.md#AsyncAPIDocument) of the Parser to understand what structure you have access to in this parameter. + - `asyncapi` that is a parsed spec file object. Read the [API](https://github.com/asyncapi/parser-api/blob/master/docs/api.md#asyncapidocument) of the Parser to understand what structure you have access to in this parameter. - `originalAsyncAPI` that is an original spec file before it is parsed. - `params` that contain the parameters provided when generating. diff --git a/pages/docs/tools/generator/parser.md b/pages/docs/tools/generator/parser.md index 1e9a060fde5..399308d679e 100644 --- a/pages/docs/tools/generator/parser.md +++ b/pages/docs/tools/generator/parser.md @@ -68,7 +68,7 @@ const channelNames = asyncAPIDocument.channelNames(); const messages = asyncAPIDocument.allMessages(); ``` -> The Parser gives you access to a number of these [helper functions](https://github.com/asyncapi/parser-js/blob/master/API.md) that you can implement to access the contents of your AsyncAPI document. +> The Parser gives you access to a number of these [helper functions](https://github.com/asyncapi/parser-api/blob/master/docs/api.md) that you can implement to access the contents of your AsyncAPI document. ## AsyncAPI document validation process diff --git a/pages/docs/tools/generator/react-render-engine.md b/pages/docs/tools/generator/react-render-engine.md index e92cb236511..1cf74b983e1 100644 --- a/pages/docs/tools/generator/react-render-engine.md +++ b/pages/docs/tools/generator/react-render-engine.md @@ -42,7 +42,7 @@ For further information about components, props, etc, see the [Generator React S - The file is not in the list of `nonRenderableFiles` in the template configuration 1. New lines are automatically added after each `Text` component. 1. The props you have access to in the rendering function are: - - `asyncapi` which is a parsed spec file object. Read the [API](https://github.com/asyncapi/parser-js/blob/master/API.md#AsyncAPIDocument) of the Parser to understand what structure you have access to in this parameter. + - `asyncapi` which is a parsed spec file object. Read the [API](https://github.com/asyncapi/parser-api/blob/master/docs/api.md#asyncapidocument) of the Parser to understand what structure you have access to in this parameter. - `originalAsyncAPI` which is an original spec file before it is parsed. - `params` that contain the parameters provided when generating. 1. All the file templates are supported where the variables are provided after the default props as listed above. From d3e82f75080fe828cca96ccfe38dfbe705f1c9f9 Mon Sep 17 00:00:00 2001 From: Alejandra Quetzalli Date: Tue, 5 Dec 2023 04:39:56 -0800 Subject: [PATCH 121/134] docs: fixed docs files with broken links (#2366) Co-authored-by: Akshat Nema <76521428+akshatnema@users.noreply.github.com> Co-authored-by: Lukasz Gornicki --- pages/docs/tools/generator/hooks.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pages/docs/tools/generator/hooks.md b/pages/docs/tools/generator/hooks.md index d2c06ddc0c4..bc00f8e13cc 100644 --- a/pages/docs/tools/generator/hooks.md +++ b/pages/docs/tools/generator/hooks.md @@ -10,7 +10,7 @@ The following types of hooks are currently supported: |---|---|---|---| | `generate:before` | Called after registration of all filters and before the generator starts processing of the template. | void : Nothing is expected to be returned. | [The generator instance](https://github.com/asyncapi/generator/blob/master/docs/api.md) | `generate:after` | Called at the very end of the generation. | void : Nothing is expected to be returned. | [The generator instance](https://github.com/asyncapi/generator/blob/master/docs/api.md) -| `setFileTemplateName ` | Called right before saving a new file generated by [file template](./file-templates.md). | string : a new filename for the generator to use for the file template. | [The generator instance](https://github.com/asyncapi/generator/blob/master/docs/api.md) and object in the form of `{ "originalFilename" : string }` +| `setFileTemplateName ` | Called right before saving a new file generated by [file template](./file-templates). | string : a new filename for the generator to use for the file template. | [The generator instance](https://github.com/asyncapi/generator/blob/master/docs/api.md) and object in the form of `{ "originalFilename" : string }` The generator parses: - All the files in the `.hooks` directory inside the template. From 2c06fa5746d86a9c16a1c5ae5b489cfd18aac33c Mon Sep 17 00:00:00 2001 From: asyncapi-bot Date: Tue, 5 Dec 2023 13:54:00 +0100 Subject: [PATCH 122/134] chore: update meetings.json, newsrooom_videos.json and dashboard.json (#2374) --- config/meetings.json | 28 ++++++++++++++-------------- config/newsroom_videos.json | 12 ++++++------ 2 files changed, 20 insertions(+), 20 deletions(-) diff --git a/config/meetings.json b/config/meetings.json index 944e611c6e1..7e7bbe39f11 100644 --- a/config/meetings.json +++ b/config/meetings.json @@ -6,20 +6,6 @@ "banner": "", "date": "2023-08-31T14:30:00.000Z" }, - { - "title": "Community Meeting", - "calLink": "https://www.google.com/calendar/event?eid=Z3YzNDRwamprYzMwNTluYTdtNG1iaHA5NjggY19xOXRzZWlnbG9tZHNqNm5qdWh2YnB0czExY0Bn", - "url": "https://github.com/asyncapi/community/issues/845", - "banner": "https://user-images.githubusercontent.com/40604284/260686941-20c44493-65de-4a09-9dac-a8f7d1f0fcaf.png", - "date": "2023-08-22T08:00:00.000Z" - }, - { - "title": "Spec 3.0 Meeting", - "calLink": "https://www.google.com/calendar/event?eid=Y281MHE2dGo1ZmE1cmtobmtyOGYzb3VsazAgY19xOXRzZWlnbG9tZHNqNm5qdWh2YnB0czExY0Bn", - "url": "https://github.com/asyncapi/community/issues/847", - "banner": "", - "date": "2023-08-23T16:00:00.000Z" - }, { "title": "Spec 3.0 Meeting", "calLink": "https://www.google.com/calendar/event?eid=NDEzM2E1ZGE5YWttYXVpYW9zbTl1cWM1YWMgY19xOXRzZWlnbG9tZHNqNm5qdWh2YnB0czExY0Bn", @@ -117,5 +103,19 @@ "url": "https://github.com/asyncapi/community/issues/968", "banner": "https://private-user-images.githubusercontent.com/40604284/285945520-e06ff77c-0e37-432e-964d-b4d47167cc18.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTEiLCJleHAiOjE3MDExMDM4MzQsIm5iZiI6MTcwMTEwMzUzNCwicGF0aCI6Ii80MDYwNDI4NC8yODU5NDU1MjAtZTA2ZmY3N2MtMGUzNy00MzJlLTk2NGQtYjRkNDcxNjdjYzE4LnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFJV05KWUFYNENTVkVINTNBJTJGMjAyMzExMjclMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjMxMTI3VDE2NDUzNFomWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPTgxMGM4ZGY0NWJmMTI3ZjA2NzcxNzc0YjQxYTBmMDNiY2NhZmQ5NDBlZTA0NzZkNzQ5NTgwNGRiZGRmNGQ0NjcmWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0JmFjdG9yX2lkPTAma2V5X2lkPTAmcmVwb19pZD0wIn0.PWfbBWAz2eGVDAGi8L1eFipmbAokRypMu9QDJBuv-Gk", "date": "2023-12-14T13:00:00.000Z" + }, + { + "title": "4 Request/Reply Use Cases", + "calLink": "https://www.google.com/calendar/event?eid=OXQ4MGVycWdsZ2g4ZmFibXZ1NHM2Y285NnMgY19xOXRzZWlnbG9tZHNqNm5qdWh2YnB0czExY0Bn", + "url": "https://github.com/asyncapi/community/issues/975", + "banner": "", + "date": "2023-12-14T18:00:00.000Z" + }, + { + "title": "Building a Messaging System for E-commerce Orders", + "calLink": "https://www.google.com/calendar/event?eid=M2hpdmRkaW84ZmhybmlmbGg3cWw3c2tnNjAgY19xOXRzZWlnbG9tZHNqNm5qdWh2YnB0czExY0Bn", + "url": "https://github.com/asyncapi/community/issues/978", + "banner": "https://user-images.githubusercontent.com/40604284/287390698-ff955971-096e-4705-8ee9-2501ac632be8.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTEiLCJleHAiOjE3MDE2MDE0OTIsIm5iZiI6MTcwMTYwMTE5MiwicGF0aCI6Ii80MDYwNDI4NC8yODczOTA2OTgtZmY5NTU5NzEtMDk2ZS00NzA1LThlZTktMjUwMWFjNjMyYmU4LnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFJV05KWUFYNENTVkVINTNBJTJGMjAyMzEyMDMlMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjMxMjAzVDEwNTk1MlomWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPTdiMGVjMmU2YmU1NjQxM2M3ZmRkZmE3NTkyMTEwNDVmNjZlZjUyYjk1ZjRhYTljNWM3MDEyMmE2NTEwMWEzNzgmWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0JmFjdG9yX2lkPTAma2V5X2lkPTAmcmVwb19pZD0wIn0.zLrtMPxQvtThush9plXgKz3v7INAHk2bgOjsWRRwbJI", + "date": "2023-12-21T13:00:00.000Z" } ] \ No newline at end of file diff --git a/config/newsroom_videos.json b/config/newsroom_videos.json index 6821ecc97cd..79fb4f9e5d9 100644 --- a/config/newsroom_videos.json +++ b/config/newsroom_videos.json @@ -1,4 +1,10 @@ [ + { + "image_url": "https://i.ytimg.com/vi/g6CPg77Lf5Q/hqdefault.jpg", + "title": "AsyncAPI Conf on Tour 2023 in Bangalore, India", + "description": "AACoT'23 Bangalore Edition live from Postman Offices in India.", + "videoId": "g6CPg77Lf5Q" + }, { "image_url": "https://i.ytimg.com/vi/p68PUXDMsks/hqdefault.jpg", "title": "Community Meeting(November 28th, 2023)", @@ -22,11 +28,5 @@ "title": "AsyncAPI Conf on Tour 2023 in Madrid", "description": "AACoT'23 Madrid Edition streamed live from StageOne at SNGULAR. 00:00 Waiting 57:12 Opening 1:26:07 Everything You Wish ...", "videoId": "FN5eR1Zqh9c" - }, - { - "image_url": "https://i.ytimg.com/vi/zSbv4ibqYds/hqdefault.jpg", - "title": "Community Meeting(October 17th, 2023)", - "description": "https://github.com/asyncapi/community/issues/912.", - "videoId": "zSbv4ibqYds" } ] \ No newline at end of file From 7dbdb560cdd748ba420d2be289524c3b57daadad Mon Sep 17 00:00:00 2001 From: asyncapi-bot Date: Tue, 5 Dec 2023 16:20:44 +0100 Subject: [PATCH 123/134] chore: update meetings.json and newsrooom_videos.json (#2395) --- config/meetings.json | 26 +++++++++++++------------- 1 file changed, 13 insertions(+), 13 deletions(-) diff --git a/config/meetings.json b/config/meetings.json index 7e7bbe39f11..20f6d4c50cf 100644 --- a/config/meetings.json +++ b/config/meetings.json @@ -98,24 +98,24 @@ "date": "2023-11-28T16:00:00.000Z" }, { - "title": "Overview of AsyncAPI v3", - "calLink": "https://www.google.com/calendar/event?eid=ZWFpYjBwYzhoODRqMHA2bWRlcnIyZ241c3MgY19xOXRzZWlnbG9tZHNqNm5qdWh2YnB0czExY0Bn", - "url": "https://github.com/asyncapi/community/issues/968", - "banner": "https://private-user-images.githubusercontent.com/40604284/285945520-e06ff77c-0e37-432e-964d-b4d47167cc18.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTEiLCJleHAiOjE3MDExMDM4MzQsIm5iZiI6MTcwMTEwMzUzNCwicGF0aCI6Ii80MDYwNDI4NC8yODU5NDU1MjAtZTA2ZmY3N2MtMGUzNy00MzJlLTk2NGQtYjRkNDcxNjdjYzE4LnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFJV05KWUFYNENTVkVINTNBJTJGMjAyMzExMjclMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjMxMTI3VDE2NDUzNFomWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPTgxMGM4ZGY0NWJmMTI3ZjA2NzcxNzc0YjQxYTBmMDNiY2NhZmQ5NDBlZTA0NzZkNzQ5NTgwNGRiZGRmNGQ0NjcmWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0JmFjdG9yX2lkPTAma2V5X2lkPTAmcmVwb19pZD0wIn0.PWfbBWAz2eGVDAGi8L1eFipmbAokRypMu9QDJBuv-Gk", - "date": "2023-12-14T13:00:00.000Z" + "title": "Community Meeting", + "calLink": "https://www.google.com/calendar/event?eid=M2I4MXRidmpqb2ZyZTUyajhsZm41ZjN0bTggY19xOXRzZWlnbG9tZHNqNm5qdWh2YnB0czExY0Bn", + "url": "https://github.com/asyncapi/community/issues/979", + "banner": "https://user-images.githubusercontent.com/40604284/288050762-4d064212-22ea-4af0-9d1a-b23c8fd70d6b.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTEiLCJleHAiOjE3MDE3ODI2MDUsIm5iZiI6MTcwMTc4MjMwNSwicGF0aCI6Ii80MDYwNDI4NC8yODgwNTA3NjItNGQwNjQyMTItMjJlYS00YWYwLTlkMWEtYjIzYzhmZDcwZDZiLnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFJV05KWUFYNENTVkVINTNBJTJGMjAyMzEyMDUlMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjMxMjA1VDEzMTgyNVomWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPWYzOGFhZmI5NzAxODljZDQ4NTFhNDc0NGIxNGQzZDZlZmU3ZjhhYTExOGU1YTRkN2FjODU1MzgzZGU0M2UzNmMmWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0JmFjdG9yX2lkPTAma2V5X2lkPTAmcmVwb19pZD0wIn0.-FT5AFf2Np1cFxMyXVga0zAfLjFc9fspwL-BJ_t7KLg", + "date": "2023-12-12T08:00:00.000Z" }, { "title": "4 Request/Reply Use Cases", - "calLink": "https://www.google.com/calendar/event?eid=OXQ4MGVycWdsZ2g4ZmFibXZ1NHM2Y285NnMgY19xOXRzZWlnbG9tZHNqNm5qdWh2YnB0czExY0Bn", - "url": "https://github.com/asyncapi/community/issues/975", - "banner": "", + "calLink": "https://www.google.com/calendar/event?eid=ZzA3OXU4dmhma3JmYTVuNmJtcXEwN2NpbTQgY19xOXRzZWlnbG9tZHNqNm5qdWh2YnB0czExY0Bn", + "url": "https://github.com/asyncapi/community/issues/980", + "banner": "https://user-images.githubusercontent.com/40604284/288054818-8a66f1b0-749d-4e6c-a204-2d558127796e.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTEiLCJleHAiOjE3MDE3ODMzODMsIm5iZiI6MTcwMTc4MzA4MywicGF0aCI6Ii80MDYwNDI4NC8yODgwNTQ4MTgtOGE2NmYxYjAtNzQ5ZC00ZTZjLWEyMDQtMmQ1NTgxMjc3OTZlLnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFJV05KWUFYNENTVkVINTNBJTJGMjAyMzEyMDUlMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjMxMjA1VDEzMzEyM1omWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPWNmODAzZWY5ZjdhMGEyNTdkYWJlYzBhMTUwNjM1N2IzZmJkOTMyODc4Y2ZjZmM3ZTJmZjE1MDBjODNmZDJhM2ImWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0JmFjdG9yX2lkPTAma2V5X2lkPTAmcmVwb19pZD0wIn0.kc9iVsdgE_Ab-wpfqhvMOB7fJypST4iZ3T05FvzpCPI", "date": "2023-12-14T18:00:00.000Z" }, { - "title": "Building a Messaging System for E-commerce Orders", - "calLink": "https://www.google.com/calendar/event?eid=M2hpdmRkaW84ZmhybmlmbGg3cWw3c2tnNjAgY19xOXRzZWlnbG9tZHNqNm5qdWh2YnB0czExY0Bn", - "url": "https://github.com/asyncapi/community/issues/978", - "banner": "https://user-images.githubusercontent.com/40604284/287390698-ff955971-096e-4705-8ee9-2501ac632be8.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTEiLCJleHAiOjE3MDE2MDE0OTIsIm5iZiI6MTcwMTYwMTE5MiwicGF0aCI6Ii80MDYwNDI4NC8yODczOTA2OTgtZmY5NTU5NzEtMDk2ZS00NzA1LThlZTktMjUwMWFjNjMyYmU4LnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFJV05KWUFYNENTVkVINTNBJTJGMjAyMzEyMDMlMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjMxMjAzVDEwNTk1MlomWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPTdiMGVjMmU2YmU1NjQxM2M3ZmRkZmE3NTkyMTEwNDVmNjZlZjUyYjk1ZjRhYTljNWM3MDEyMmE2NTEwMWEzNzgmWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0JmFjdG9yX2lkPTAma2V5X2lkPTAmcmVwb19pZD0wIn0.zLrtMPxQvtThush9plXgKz3v7INAHk2bgOjsWRRwbJI", - "date": "2023-12-21T13:00:00.000Z" + "title": "Overview of AyncAPI v3", + "calLink": "https://www.google.com/calendar/event?eid=c3E0Ym1qMTFnMDY5ODljdGk1ajh2anRrdjAgY19xOXRzZWlnbG9tZHNqNm5qdWh2YnB0czExY0Bn", + "url": "https://github.com/asyncapi/community/issues/981", + "banner": "https://user-images.githubusercontent.com/40604284/285945520-e06ff77c-0e37-432e-964d-b4d47167cc18.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTEiLCJleHAiOjE3MDE3ODI1NzUsIm5iZiI6MTcwMTc4MjI3NSwicGF0aCI6Ii80MDYwNDI4NC8yODU5NDU1MjAtZTA2ZmY3N2MtMGUzNy00MzJlLTk2NGQtYjRkNDcxNjdjYzE4LnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFJV05KWUFYNENTVkVINTNBJTJGMjAyMzEyMDUlMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjMxMjA1VDEzMTc1NVomWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPWY5MjBhNTEwMjIwNDQxNzczY2EyMDI1YjQzOWIwYzRhY2MxNTU3ZDYyMGY2NzMxYjVkYzYyNmViZTM5Yjg4ZTEmWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0JmFjdG9yX2lkPTAma2V5X2lkPTAmcmVwb19pZD0wIn0.Dm-WJy2AQO2xUMAJ1nO6ADZuBFYXKj0NEFgdcDd44Fg", + "date": "2023-12-19T13:00:00.000Z" } ] \ No newline at end of file From 85ac0e3cd8279981e6d0c69e7b34d392ae622fd1 Mon Sep 17 00:00:00 2001 From: asyncapi-bot Date: Tue, 5 Dec 2023 16:41:01 +0100 Subject: [PATCH 124/134] chore: update meetings.json and newsrooom_videos.json (#2396) --- config/meetings.json | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/config/meetings.json b/config/meetings.json index 20f6d4c50cf..65c702e8671 100644 --- a/config/meetings.json +++ b/config/meetings.json @@ -104,18 +104,18 @@ "banner": "https://user-images.githubusercontent.com/40604284/288050762-4d064212-22ea-4af0-9d1a-b23c8fd70d6b.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTEiLCJleHAiOjE3MDE3ODI2MDUsIm5iZiI6MTcwMTc4MjMwNSwicGF0aCI6Ii80MDYwNDI4NC8yODgwNTA3NjItNGQwNjQyMTItMjJlYS00YWYwLTlkMWEtYjIzYzhmZDcwZDZiLnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFJV05KWUFYNENTVkVINTNBJTJGMjAyMzEyMDUlMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjMxMjA1VDEzMTgyNVomWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPWYzOGFhZmI5NzAxODljZDQ4NTFhNDc0NGIxNGQzZDZlZmU3ZjhhYTExOGU1YTRkN2FjODU1MzgzZGU0M2UzNmMmWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0JmFjdG9yX2lkPTAma2V5X2lkPTAmcmVwb19pZD0wIn0.-FT5AFf2Np1cFxMyXVga0zAfLjFc9fspwL-BJ_t7KLg", "date": "2023-12-12T08:00:00.000Z" }, - { - "title": "4 Request/Reply Use Cases", - "calLink": "https://www.google.com/calendar/event?eid=ZzA3OXU4dmhma3JmYTVuNmJtcXEwN2NpbTQgY19xOXRzZWlnbG9tZHNqNm5qdWh2YnB0czExY0Bn", - "url": "https://github.com/asyncapi/community/issues/980", - "banner": "https://user-images.githubusercontent.com/40604284/288054818-8a66f1b0-749d-4e6c-a204-2d558127796e.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTEiLCJleHAiOjE3MDE3ODMzODMsIm5iZiI6MTcwMTc4MzA4MywicGF0aCI6Ii80MDYwNDI4NC8yODgwNTQ4MTgtOGE2NmYxYjAtNzQ5ZC00ZTZjLWEyMDQtMmQ1NTgxMjc3OTZlLnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFJV05KWUFYNENTVkVINTNBJTJGMjAyMzEyMDUlMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjMxMjA1VDEzMzEyM1omWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPWNmODAzZWY5ZjdhMGEyNTdkYWJlYzBhMTUwNjM1N2IzZmJkOTMyODc4Y2ZjZmM3ZTJmZjE1MDBjODNmZDJhM2ImWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0JmFjdG9yX2lkPTAma2V5X2lkPTAmcmVwb19pZD0wIn0.kc9iVsdgE_Ab-wpfqhvMOB7fJypST4iZ3T05FvzpCPI", - "date": "2023-12-14T18:00:00.000Z" - }, { "title": "Overview of AyncAPI v3", "calLink": "https://www.google.com/calendar/event?eid=c3E0Ym1qMTFnMDY5ODljdGk1ajh2anRrdjAgY19xOXRzZWlnbG9tZHNqNm5qdWh2YnB0czExY0Bn", "url": "https://github.com/asyncapi/community/issues/981", "banner": "https://user-images.githubusercontent.com/40604284/285945520-e06ff77c-0e37-432e-964d-b4d47167cc18.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTEiLCJleHAiOjE3MDE3ODI1NzUsIm5iZiI6MTcwMTc4MjI3NSwicGF0aCI6Ii80MDYwNDI4NC8yODU5NDU1MjAtZTA2ZmY3N2MtMGUzNy00MzJlLTk2NGQtYjRkNDcxNjdjYzE4LnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFJV05KWUFYNENTVkVINTNBJTJGMjAyMzEyMDUlMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjMxMjA1VDEzMTc1NVomWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPWY5MjBhNTEwMjIwNDQxNzczY2EyMDI1YjQzOWIwYzRhY2MxNTU3ZDYyMGY2NzMxYjVkYzYyNmViZTM5Yjg4ZTEmWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0JmFjdG9yX2lkPTAma2V5X2lkPTAmcmVwb19pZD0wIn0.Dm-WJy2AQO2xUMAJ1nO6ADZuBFYXKj0NEFgdcDd44Fg", "date": "2023-12-19T13:00:00.000Z" + }, + { + "title": "4 Request/Reply Use Cases", + "calLink": "https://www.google.com/calendar/event?eid=Nmw4dWN1c2piYnBtYTgwcTM3ZDdqbW1kdHMgY19xOXRzZWlnbG9tZHNqNm5qdWh2YnB0czExY0Bn", + "url": "https://github.com/asyncapi/community/issues/983", + "banner": "https://user-images.githubusercontent.com/40604284/288090985-e34cee85-2ad1-4109-a841-678e7435a88d.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTEiLCJleHAiOjE3MDE3OTAwMjgsIm5iZiI6MTcwMTc4OTcyOCwicGF0aCI6Ii80MDYwNDI4NC8yODgwOTA5ODUtZTM0Y2VlODUtMmFkMS00MTA5LWE4NDEtNjc4ZTc0MzVhODhkLnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFJV05KWUFYNENTVkVINTNBJTJGMjAyMzEyMDUlMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjMxMjA1VDE1MjIwOFomWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPTZlNjg0N2Y1NGU5YWI2YWM5Yjc5ZGY4MzMyYzY2ZjRmMmNhYTAwMWVkZWI3MTE5MGRmZjAwNzE2NWRhYjkzYWEmWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0JmFjdG9yX2lkPTAma2V5X2lkPTAmcmVwb19pZD0wIn0.TZLYLUFI1kKex1hzyaEGIkpK-JUN0wM2TPusmOivfeE", + "date": "2023-12-14T18:00:00.000Z" } ] \ No newline at end of file From 8fd4dfeef78ab6751cff319f79f9d14873e85d2f Mon Sep 17 00:00:00 2001 From: Jonas Lagoni Date: Tue, 5 Dec 2023 11:22:21 -1000 Subject: [PATCH 125/134] chore: fix wrong links for v2 migration guide (#2398) --- pages/docs/migration/migrating-to-v3.md | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/pages/docs/migration/migrating-to-v3.md b/pages/docs/migration/migrating-to-v3.md index 95b6709ca9a..a8ccaca61e2 100644 --- a/pages/docs/migration/migrating-to-v3.md +++ b/pages/docs/migration/migrating-to-v3.md @@ -19,7 +19,7 @@ Asyncapi3ParameterComparison} from '../../../components/Asyncapi3Comparison' ## Moved metadata -In v2, two properties of `tags` and `externalDocs` were placed outside of the [Info Object](https://www.asyncapi.com/docs/reference/specification/v3.0.0-next-major-spec.12#infoObject). For consistency, `info` has been moved in v3. +In v2, two properties of `tags` and `externalDocs` were placed outside of the [Info Object](https://www.asyncapi.com/docs/reference/specification/v3.0.0#infoObject). For consistency, `info` has been moved in v3. @@ -45,7 +45,7 @@ info: ``` ## Server URL splitting up -There was occasional confusion regarding what the URL of a [Server Object](https://www.asyncapi.com/docs/reference/specification/v3.0.0-next-major-spec.12#serverObject) should include. +There was occasional confusion regarding what the URL of a [Server Object](https://www.asyncapi.com/docs/reference/specification/v3.0.0#serverObject) should include. @@ -124,7 +124,7 @@ Read more about the confusion between publishing and subscribing in the [Operati ## Channel address and channel key -Another breaking change is that the channel key no longer represents the channel path. Instead, it's now an arbitrary unique ID. The channel paths are now defined using the `address` property within the [Channel Object](https://www.asyncapi.com/docs/reference/specification/v3.0.0-next-major-spec.12#channelObject). +Another breaking change is that the channel key no longer represents the channel path. Instead, it's now an arbitrary unique ID. The channel paths are now defined using the `address` property within the [Channel Object](https://www.asyncapi.com/docs/reference/specification/v3.0.0#channelObject). @@ -149,7 +149,7 @@ channels: ## Operation keywords -Another significant change is the shift away from defining operations using `publish` and `subscribe`, which had inverse meanings for your application. Now, you directly specify your application's behavior using `send` and `receive` via the `action` property in the [Operation Object](https://www.asyncapi.com/docs/reference/specification/v3.0.0-next-major-spec.12#operationObject). +Another significant change is the shift away from defining operations using `publish` and `subscribe`, which had inverse meanings for your application. Now, you directly specify your application's behavior using `send` and `receive` via the `action` property in the [Operation Object](https://www.asyncapi.com/docs/reference/specification/v3.0.0#operationObject). @@ -196,7 +196,7 @@ operations: ## Messages instead of message In v2, channels were defined with one or more messages using the `oneOf` property. -In v3, messages are defined using the [Messages Object](https://www.asyncapi.com/docs/reference/specification/v3.0.0-next-major-spec.12#messagesObject). For a channel with multiple messages, you specify multiple key-value pairs. For a channel with just one message, you use a single key-value pair. +In v3, messages are defined using the [Messages Object](https://www.asyncapi.com/docs/reference/specification/v3.0.0#messagesObject). For a channel with multiple messages, you specify multiple key-value pairs. For a channel with just one message, you use a single key-value pair. ```yml asyncapi: 2.6.0 @@ -247,7 +247,7 @@ We have updated the structure of the Message Object by eliminating the `messageI In v2, implicit references were allowed in certain instances. For instance, the server security configuration was identified by name, linking to a [Security Schema Object](https://www.asyncapi.com/docs/reference/specification/v2.6.0#securitySchemeObject) within the components. Similarly, a channel could reference global servers by name. -In v3, all such references MUST be explicit. As a result, we made a minor modification to the [Server Object](https://www.asyncapi.com/docs/reference/specification/v3.0.0-next-major-spec.12#serverObject) `security` property, transforming it from an object to an array. The details regarding required scopes for OAuth and OpenID Connect were then relocated to the [Security Scheme Object](https://www.asyncapi.com/docs/reference/specification/v3.0.0-next-major-spec.12#securitySchemeObject). +In v3, all such references MUST be explicit. As a result, we made a minor modification to the [Server Object](https://www.asyncapi.com/docs/reference/specification/v3.0.0#serverObject) `security` property, transforming it from an object to an array. The details regarding required scopes for OAuth and OpenID Connect were then relocated to the [Security Scheme Object](https://www.asyncapi.com/docs/reference/specification/v3.0.0#securitySchemeObject). ```yml asyncapi: 2.6.0 @@ -347,7 +347,7 @@ One limitation with schemas has always been the inability to reuse them across d In v2, the details about which schema format the payload uses are found within the message object, rather than being directly linked to the schema itself. Such separation hampers reusability, as the two data points aren't directly correlated. -To address this in v3, we've introduced [a multi-format schema object](https://www.asyncapi.com/docs/reference/specification/v3.0.0-next-major-spec.12#multiFormatSchemaObject) that consolidates this information. Consequently, whenever you utilize `schemaFormat`, you'll need to modify the schema as follows: +To address this in v3, we've introduced [a multi-format schema object](https://www.asyncapi.com/docs/reference/specification/v3.0.0#multiFormatSchemaObject) that consolidates this information. Consequently, whenever you utilize `schemaFormat`, you'll need to modify the schema as follows: ```yml asyncapi: 2.6.0 From 86ece578cfdd03281146aa9222c5545de520ab3a Mon Sep 17 00:00:00 2001 From: asyncapi-bot Date: Wed, 6 Dec 2023 10:16:27 +0100 Subject: [PATCH 126/134] docs(glee): update latest glee documentation (#2401) --- pages/docs/tools/glee/_section.md | 4 + pages/docs/tools/glee/glee-template.md | 104 ++++++++++++++++ pages/docs/tools/glee/index.md | 159 +++++++++++++++++++++++++ pages/docs/tools/glee/installation.md | 134 +++++++++++++++++++++ 4 files changed, 401 insertions(+) create mode 100644 pages/docs/tools/glee/_section.md create mode 100644 pages/docs/tools/glee/glee-template.md create mode 100644 pages/docs/tools/glee/index.md create mode 100644 pages/docs/tools/glee/installation.md diff --git a/pages/docs/tools/glee/_section.md b/pages/docs/tools/glee/_section.md new file mode 100644 index 00000000000..12696528246 --- /dev/null +++ b/pages/docs/tools/glee/_section.md @@ -0,0 +1,4 @@ +--- +title: Glee +weight: 10 +--- \ No newline at end of file diff --git a/pages/docs/tools/glee/glee-template.md b/pages/docs/tools/glee/glee-template.md new file mode 100644 index 00000000000..346a28bacb3 --- /dev/null +++ b/pages/docs/tools/glee/glee-template.md @@ -0,0 +1,104 @@ +--- +title: "Create AsyncAPI Glee template" +weight: 170 +--- +This tutorial teaches you how to create a simple glee template. You'll use the AsyncAPI Glee template you develop to generate Javascript code. Additionally, you'll create a template code with a reusable component to reuse the custom functionality you create and test your code using an WS server. + + +{`asyncapi: 3.0.0 +info: + title: 'Hello, Glee!' + version: 1.0.0 +servers: + websockets: + host: 0.0.0.0:3000 + protocol: ws +channels: + hello: + address: hello + messages: + hello: + $ref: '#/components/messages/hello' +operations: + onHello: + action: receive + channel: + $ref: '#/channels/hello' + reply: + channel: + $ref: "#/channels/hello" + SendHello: + action: send + channel: + $ref: "#/channels/hello" +components: + messages: + hello: + payload: + type: string`} + + +Let's break it down into pieces: + + +{`info: + title: 'Hello, Glee!' + version: 1.0.0`} + + +The `info` section provides general information about the API, including its title and version. + +Moving on, let's talk about the `servers` section. + + +{`servers: + websockets: + host: 0.0.0.0:3000 + protocol: ws`} + + +The servers section defines the different servers where the API can be accessed. In this case, there is a single server named "websockets" that uses the WebSocket protocol (`ws`) and listens on the address `ws://0.0.0.0:3000`. + +Now lets move on to the `channels` section. This section is used to describe the event names your API will be publishing and/or subscribing to. + + +{`channels: + hello: + address: hello + messages: + hello: + $ref: '#/components/messages/hello' +operations: + onHello: + action: receive + channel: + $ref: '#/channels/hello' + reply: + channel: + $ref: "#/channels/hello" + sendHello: + action: send + channel: + $ref: '#/channels/hello'`} + + +The channels section defines the communication channels available in the API. In this case, there's a channel named "hello". This channel supports both sending and receiving. + +The `receive` action indicates that messages received on the `hello` channel should follow the structure defined in the hello message component. Under this action, `reply` which is in a request-reply operation, contains the payload on `onHello.js` function. +The `send` action specifies that the operation with ID `sendHello` is used for sending messages to the `hello` channel. The message structure is referenced from the hello message component. + +Next is the `payload` property under `hello` message component which is used to understand how the event should look like when publishing to that channel: + + +{`components: + messages: + hello: + payload: + type: string`} + + +The components section contains reusable elements, in this case, a definition for the "hello" message. It specifies that the payload of the "hello" message should be of type string. + +## Summary + +In this tutorial, you learned how to create an AsyncAPI specification document via a simple example with a glee template. diff --git a/pages/docs/tools/glee/index.md b/pages/docs/tools/glee/index.md new file mode 100644 index 00000000000..aca98544169 --- /dev/null +++ b/pages/docs/tools/glee/index.md @@ -0,0 +1,159 @@ +--- +title: Getting Started +weight: 80 +--- + +## Introduction + +[Glee](https://github.com/asyncapi/glee) is a spec-first framework that helps you build server-side applications. That means it operates on the principle of defining the API specification (AsyncAPI) before diving into the actual implementation of the application logic. It leverages that principle to make you more productive: + +- Glee ensures your code and AsyncAPI definition are on par, eliminating the problem of outdated documentation. By having both the code and the AsyncAPI definition in sync, you can ensure that the API documentation is always up to date, accurate, and reflects the current state of the application. Glee takes care of this automatically for you. +- Glee lets you focus on what matters and handles the rest for you. You only write the code for your business use-case. Glee takes care of performance, scalability, resilience, and everything you need to make your application production-ready. +- Glee validates the schema of the payload that it receives, if it doesn't conform to the schema that is defined in the AsyncAPI document, it throw an error telling user that the server received an invalid payload. + +Now, before you get started with a glee project, let's take a high level view of Application structure what glee resonates with. + +## Application structure + +Glee expects your project to have some files and folders with special names. When you run `asyncapi new glee`, [AsyncAPI CLI](https://github.com/asyncapi/cli) generates a boilerplate application structure by creating a new folder and populating an initial set of files as shown below. You can continue working in this default structure, adding new components, as described throughout the documentation of asyncapi cli. + +``` +├─ functions (required) +│ ├─ onHello.js +│ └─ ... +├─ lifecycle (optional) +│ ├─ onConnect.js +│ └─ ... +├─ .env (optional) +├─ asyncapi.(yaml | yml | json) (required) +├─ glee.config.js (optional) +├─ package.json (required) +``` + +|File/Directory|Description| +|---|---| +|functions|**Required.** This directory contains all the functions that Glee must execute when it receives a message from the server. Each file must export a default async function. +|lifecycle|This directory contains application lifecycle functions. These functions will be executed when certain events happen in the application. E.g., `onConnect`, `onServerReady`, `onDisconnect`, etc. +|.env|The environment variables of your application. **DO NOT PUT SECRETS HERE**. +|asyncapi.(yaml or json or yml)|**Required.** The [AsyncAPI](https://www.asyncapi.com/docs/specifications/latest) file defines your API. Make sure all the `publish` operations have an assigned `operationId` that matches a file name (excluding the extension) in the `functions` directory. +|glee.config.js| The Glee configuration file. +|package.json|**Required.** The Node.js package definition file. Make sure you include `@asyncapi/glee` as a dependency and add two scripts: `dev` and `start`. They should be running `glee dev` and `glee start` respectively. + +To understand the structure in a broader way, please refer to the associated page's links. + +### Let's create a glee project to simplify the app structure + +We will consider a simple WebSocket API using glee to understand its magic. We will create a simple WebSocket server that receives a current time from the client and then send a "good morning", "good evening" or "good night" respectively. + +To setup a project, you should follow our installation page on how to setup glee on your environment. + +We recommend creating a new Glee app using our official CLI which sets up everything automatically. (You don't need to create an empty directory. create-glee-app will make one for you.) To create a project, run: `asyncapi new glee` + +Once the process is completed, you should have a new Glee app ready for development and see these files that were made. + +![glee_structure](glee_struct.png) + +#### Define our Spec for our API + +Glee being a spec-first framework, development starts with defining your API spec. To know more details into it, you can follow glee template to understand it step by step. For our case we will define our API: + +```yaml +asyncapi: 3.0.0 +info: + title: Greet Bot + version: 1.0.0 +servers: + websockets: + host: 0.0.0.0:3000 + protocol: ws +channels: + greet: + address: greet + messages: + greet: + $ref: '#/components/messages/greet' + time: + $ref: '#/components/messages/time' + time: + address: time + messages: + time: + $ref: '#/components/messages/time' +operations: + onGreet: + action: receive + channel: + $ref: '#/channels/greet' + reply: + channel: + $ref: '#/channels/greet' + sendGreet: + action: send + channel: + $ref: '#/channels/time' +components: + messages: + time: + payload: + type: object + properties: + currentTime: + type: number + name: + type: string + greet: + payload: + type: string + +``` + +This will be the Specification that defines our API, in our case, it is very simple, as we will be sending a name and the time of the day, and our API will greet us accordingly. + +One thing to note here is the `operations` item, this is needed and is a crucial part of glee, as this is how we will be connecting our business logic with our spec, `onGreet` is the name of the function that will be called every time a certain operation occurs. In our case whenever `/greet` channel receives a message, `onGreet` function is called. + +#### Define our operation function + +Now for our case, we will be adding a file `functions/onGreet.js` and writing up the logic for parsing our time and sending a response. + +```javascript +export default async function (event) { + const { name, time } = event.payload + const t = new Date(time) + const curHr = t.getHours() + let response = '' + if (curHr < 12) { + response = `Good Morning ${name}` + } else if (curHr < 18) { + response = `Good Afternoon ${name}` + } else { + response = `Good Evening ${name}` + } + return { + reply: [ + { + payload: response, + }, + ], + } +} + +``` + +Every file in the functions folder acts as a handler to develop business logic for glee, every file should export an async function that receives an event parameter, where you have access to payload and server details. + +#### Running and testing your application + +We will not execute the application and carry out testing with Postman to ensure that it is functioning as intended. + +Now to execute your glee application, just run: + +``` +npm run dev +# or +npm run start +``` +To send a WebSocket request with a payload e.g. `{"name":"john", "time": "1567906535"}` to `ws://localhost:3000/greet`, open Postman and checkout the endpoint: + +![glee_response](glee_resp.png) + +So, this is how easy it is to build a WebSocket API using Glee. You can also check out the example code [here](https://github.com/Souvikns/greet-bot). diff --git a/pages/docs/tools/glee/installation.md b/pages/docs/tools/glee/installation.md new file mode 100644 index 00000000000..3b13855e248 --- /dev/null +++ b/pages/docs/tools/glee/installation.md @@ -0,0 +1,134 @@ +--- +title: 'Installation guide' +weight: 30 +--- + +## Glee Installation + +Before installing Glee into your project, make sure you have pre-installed NPM, NodeJs and [AsyncAPI CLI](https://github.com/asyncapi/cli) tools on your system. + +### Automatic Installation + +The best way to get started with Glee is by using AsyncAPI CLI, which sets up everything automatically for you. +To create a project, run: + +```sh +asyncapi new glee +``` + +> For more information on how to install the AsynAPI CLI, you can review the [CLI installation guide](https://www.asyncapi.com/docs/tools/cli/installation). + +On installation, you'll find next steps after your project created: + +``` +Your project "project" has been created successfully! + +Next steps: + + cd project + npm install + npm run dev + +Also, you can already open the project in your favorite editor and start tweaking it +``` + +While making twists to your application, you can follow along with our getting started guide on the relevant page. + +### Manual Installation + +To manually create a new app, create a new folder e.g. `myapp` so the folder structure would look like below; + +``` +├─ functions (required) +│ ├─ onHello.js +│ └─ ... +├─ lifecycle (optional) +│ ├─ onConnect.js +│ └─ ... +├─ .env (optional) +├─ asyncapi.(yaml | yml | json) (required) +├─ glee.config.js (optional) +├─ package.json (required) +``` + +Install the required packages inside a new folder: + +```js +npm init -y +npm install @asyncapi/glee +``` + +Open your package.json file and add the following scripts: + +```js +{ + "scripts": { + "docs": "glee docs", + "dev": "glee dev", + "start": "glee start", + } +} +``` + +These scripts refer to the different stages of developing an application. + +- `glee docs`: This script generates documentation for your project using the "Glee" documentation tool. This documentation includes information about your project's APIs, modules, and usage instructions. + +- `glee dev`: This script is used for starting a development server. It launches a local development server, build your project in development mode, or perform other development-related tasks. + +- `glee start`: This script is responsible for starting your project or application. It is used to launch a production-ready server or application instance. + +#### Creating `asyncapi.yaml` file and other required directories + +Create a yaml file that supports capable of receiving a "hello {name}" message with the protocol as `ws` and the channel name as `hello` the hello API will subscribe to. The operationId property is `onHello` that's the name of function and the payload property is type string publishing to that channel. + +```yaml +asyncapi: 3.0.0 +info: + title: 'Hello, Glee!' + version: 1.0.0 +servers: + websockets: + host: 0.0.0.0:3000 + protocol: ws +channels: + hello: + address: hello + messages: + hello: + $ref: '#/components/messages/hello' +operations: + onHello: + action: receive + channel: + $ref: '#/channels/hello' + reply: + channel: + $ref: "#/channels/hello" + SendHello: + action: send + channel: + $ref: "#/channels/hello" +components: + messages: + hello: + payload: + type: string +``` + +Create an operation function `onHello.js` inside `myapp/functions`: + +```js +export default async function (event) { + return { + reply: [{ + payload: `Hello from Glee! You said: "${event.payload}".` + }] + } +} +``` + +#### Run the Development Server + +- Run `npm run dev` to start the development server. +- Connect to `ws://localhost:3000/hello` and send a WebSocket request with a payload e.g. {"john"} From e7d18c7e3c47f9cf2c68b140e8a7ef2243835300 Mon Sep 17 00:00:00 2001 From: Viacheslav Turovskyi Date: Wed, 6 Dec 2023 15:52:25 +0200 Subject: [PATCH 127/134] chore: fix typos in v2 migration guide (#2400) --- pages/docs/migration/migrating-to-v3.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pages/docs/migration/migrating-to-v3.md b/pages/docs/migration/migrating-to-v3.md index a8ccaca61e2..73f48d79494 100644 --- a/pages/docs/migration/migrating-to-v3.md +++ b/pages/docs/migration/migrating-to-v3.md @@ -259,7 +259,7 @@ servers: ... channels: test/path: - severs: + servers: - production components: securitySchemes: @@ -285,7 +285,7 @@ servers: ... channels: test/path: - severs: + servers: - $ref: "#/servers/production" components: securitySchemes: From cf41811da15d17a400a1074b882fb54ae93a4588 Mon Sep 17 00:00:00 2001 From: asyncapi-bot Date: Thu, 7 Dec 2023 01:27:05 +0100 Subject: [PATCH 128/134] chore: update meetings.json and newsrooom_videos.json (#2399) --- config/meetings.json | 13 +++++++++---- config/newsroom_videos.json | 12 ++++++------ 2 files changed, 15 insertions(+), 10 deletions(-) diff --git a/config/meetings.json b/config/meetings.json index 65c702e8671..51651ed1f18 100644 --- a/config/meetings.json +++ b/config/meetings.json @@ -112,10 +112,15 @@ "date": "2023-12-19T13:00:00.000Z" }, { - "title": "4 Request/Reply Use Cases", - "calLink": "https://www.google.com/calendar/event?eid=Nmw4dWN1c2piYnBtYTgwcTM3ZDdqbW1kdHMgY19xOXRzZWlnbG9tZHNqNm5qdWh2YnB0czExY0Bn", - "url": "https://github.com/asyncapi/community/issues/983", - "banner": "https://user-images.githubusercontent.com/40604284/288090985-e34cee85-2ad1-4109-a841-678e7435a88d.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTEiLCJleHAiOjE3MDE3OTAwMjgsIm5iZiI6MTcwMTc4OTcyOCwicGF0aCI6Ii80MDYwNDI4NC8yODgwOTA5ODUtZTM0Y2VlODUtMmFkMS00MTA5LWE4NDEtNjc4ZTc0MzVhODhkLnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFJV05KWUFYNENTVkVINTNBJTJGMjAyMzEyMDUlMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjMxMjA1VDE1MjIwOFomWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPTZlNjg0N2Y1NGU5YWI2YWM5Yjc5ZGY4MzMyYzY2ZjRmMmNhYTAwMWVkZWI3MTE5MGRmZjAwNzE2NWRhYjkzYWEmWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0JmFjdG9yX2lkPTAma2V5X2lkPTAmcmVwb19pZD0wIn0.TZLYLUFI1kKex1hzyaEGIkpK-JUN0wM2TPusmOivfeE", + "title": "AsyncAPI v3 announcement", + "calLink": "https://www.google.com/calendar/event?eid=NmhzMGZnNTRnZHNnZTFtbnRjbmhpZnJzbjAgY19xOXRzZWlnbG9tZHNqNm5qdWh2YnB0czExY0Bn", + "date": "2023-12-06T15:00:00.000Z" + }, + { + "title": "3 Request/Reply Use Cases", + "calLink": "https://www.google.com/calendar/event?eid=b3NvM2c0dW9tcTk1djRiMDJmbWU4dG9odGcgY19xOXRzZWlnbG9tZHNqNm5qdWh2YnB0czExY0Bn", + "url": "https://github.com/asyncapi/community/issues/985", + "banner": "https://user-images.githubusercontent.com/40604284/288488243-e274e624-c5b3-4bff-b0ec-8c1929a24aae.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTEiLCJleHAiOjE3MDE4ODI2MTUsIm5iZiI6MTcwMTg4MjMxNSwicGF0aCI6Ii80MDYwNDI4NC8yODg0ODgyNDMtZTI3NGU2MjQtYzViMy00YmZmLWIwZWMtOGMxOTI5YTI0YWFlLnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFJV05KWUFYNENTVkVINTNBJTJGMjAyMzEyMDYlMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjMxMjA2VDE3MDUxNVomWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPWUyMGYyNDE3Nzg4OGUyZGVmYjNlMDkxYzVkOWFkNjEwYjM4ZDI2YzZjZmUyYjRjMDliMDQ3YWJiNTVlNDI1MmQmWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0JmFjdG9yX2lkPTAma2V5X2lkPTAmcmVwb19pZD0wIn0.jYmY72ZRresQv1lMFeKwA49Wi6VkAozRpIHH4uE0J8g", "date": "2023-12-14T18:00:00.000Z" } ] \ No newline at end of file diff --git a/config/newsroom_videos.json b/config/newsroom_videos.json index 79fb4f9e5d9..0f91f4dda66 100644 --- a/config/newsroom_videos.json +++ b/config/newsroom_videos.json @@ -17,16 +17,16 @@ "description": "https://github.com/asyncapi/community/issues/917.", "videoId": "KDort611FNg" }, + { + "image_url": "https://i.ytimg.com/vi/YREb9wuYCOA/hqdefault.jpg", + "title": "AsyncAPI v3 announcement", + "description": "Join us live to learn about all the goodies that AsyncAPI v3 brings.", + "videoId": "YREb9wuYCOA" + }, { "image_url": "https://i.ytimg.com/vi/Vm4ZKFb2PVE/hqdefault.jpg", "title": "Community Meeting(October 31th, 2023)", "description": "Powered by Restream https://restream.io https://github.com/asyncapi/community/issues/916.", "videoId": "Vm4ZKFb2PVE" - }, - { - "image_url": "https://i.ytimg.com/vi/FN5eR1Zqh9c/hqdefault.jpg", - "title": "AsyncAPI Conf on Tour 2023 in Madrid", - "description": "AACoT'23 Madrid Edition streamed live from StageOne at SNGULAR. 00:00 Waiting 57:12 Opening 1:26:07 Everything You Wish ...", - "videoId": "FN5eR1Zqh9c" } ] \ No newline at end of file From 8b7b392b1551c195f2e77d169aadee461a2e0525 Mon Sep 17 00:00:00 2001 From: asyncapi-bot Date: Thu, 7 Dec 2023 13:40:14 +0100 Subject: [PATCH 129/134] docs(glee): update latest glee documentation (#2402) --- pages/docs/tools/glee/authentication.md | 188 ++++++++++++++++++++++++ pages/docs/tools/glee/bearerToken.md | 109 ++++++++++++++ pages/docs/tools/glee/httpApiKey.md | 111 ++++++++++++++ pages/docs/tools/glee/intro-auth.md | 21 +++ pages/docs/tools/glee/userPassword.md | 106 +++++++++++++ 5 files changed, 535 insertions(+) create mode 100644 pages/docs/tools/glee/authentication.md create mode 100644 pages/docs/tools/glee/bearerToken.md create mode 100644 pages/docs/tools/glee/httpApiKey.md create mode 100644 pages/docs/tools/glee/intro-auth.md create mode 100644 pages/docs/tools/glee/userPassword.md diff --git a/pages/docs/tools/glee/authentication.md b/pages/docs/tools/glee/authentication.md new file mode 100644 index 00000000000..2cd7a0101c7 --- /dev/null +++ b/pages/docs/tools/glee/authentication.md @@ -0,0 +1,188 @@ +--- +title: 'Authentication functions' +weight: 3 +--- + +# Getting started with Authentication functions + +Authentication in Glee can be done using authentication functions. Authentication functions are files that export either one or both of the `clientAuth` and `serverAuth` Node.js functions: + +```js +/* websocket.js */ + +export async function serverAuth({ authProps, done }) { + //server auth logic +} + +export async function clientAuth({ parsedAsyncAPI, serverName }) { + //client auth logic +} +``` + +Glee looks for authentication files in the `auth` directory by default but it can be configured using [glee config file](../config-file.md). +The name of the authentication file should be the name of the targeted server that the authentication logic should work for. + +## Supported Authentication Values in asyncapi.yaml file + +AsyncAPI currently supports a variety of authentication formats as specified in the [documentation](https://www.asyncapi.com/docs/reference/specification/v3.0.0-next-major-spec.15#securitySchemeObject), however Glee supports the following authentication schemas. + +- userPassword +- http ("bearer") +- httpApiKey +- Oauth2 + +A sample `asyncapi.yaml` for a server with security requirements and a `userPassword` security schemes is shown below: + +```yaml +##server asyncAPI schema +asyncapi: 3.0.0 +info: + title: AsyncAPI IMDB server + version: 1.0.0 + description: This app is a dummy server that would stream the trending/upcoming anime. +servers: + trendingAnimeServer: + host: 'localhost:8081' + protocol: http + security: + - $ref: '#/components/securitySchemes/userPass' + + ... + +components: + securitySchemes: + userPass: + type: userPassword + +``` + +A sample `asyncapi.yaml` for a client that implements some of the requirements of the server above: + +```yaml +##client asyncAPI schema +servers: + trendingAnime: + host: localhost:8081 + protocol: http + security: + - $ref: '#/components/securitySchemes/userPass' + testwebhook: + host: localhost:9000 + protocol: ws +x-remoteServers: + - trendingAnime + + ... + +components: + securitySchemes: + userPass: + type: userPassword + +``` + +**The Client asyncapi.yaml file does not need to implement all the security requirements in the server, it only needs to implement the ones that it uses like *userPassword* here.** + + +Glee can act as both a server and a client. Hence the need for `serverAuth` and `clientAuth`. Glee acts as a client when the server name is included in the `x-remoteServers` property in the `asyncapi.yaml` file. + +When Glee acts as a client, it can connect to a Glee server, and when Glee acts as a server it accepts connections from other Glee clients. Hence a Glee application can both accept connections from clients while also sending requests to other Glee applications (servers) at the same time. + +When a security requirement is specified in the `asyncapi.yaml` file and Glee acts as a server, the `serverAuth` function should be implemented, if Glee acts as a client then the `clientAuth` function should be implemented. If Glee is being used as both client and server, then it should have both the `clientAuth` and `serverAuth` functions. + +## Server Authentication in Glee + +The `serverAuth` function takes an argument that can be destructured as follows + +| Attribute | Description | +| ---------- | --------------------------------------------------------------- | +| done | The done function that tells the server to proceed. | +| authProps | The authentication parameters recieved from the client. | +| serverName | The name of the server/broker from which the event was emitted. | +| doc | The parsedAsyncAPI schema | + +### done() + +The `done` parameter in the `serverAuth` function allows the broker/server to know what to do next depending on the boolean value you pass to it. + +```js +/* websocket.js */ + +export async function serverAuth({ authProps, done }) { + if (isValidUser(authProps)) { + done(true); + } else { + done(false, 401, "Unauthorized"); + } +} +``` +**Parameters for done():** + +- Authentication Result (Boolean): true for success, false for failure. +- HTTP Status Code (Integer): Code for authentication failure (e.g., 401 for Unauthorized). +- Status Message (String): Description of the authentication result (e.g., "Unauthorized"). + +When `true` is passed to the done parameter, the server/broker knows to go ahead and allow the client to connect, which means authentication has succeeded. However if the `done` parameter is called with `false` then the server knows to throw an error message and reject the client, which means authenticatio has failed. + +`done()` should always be the last thing called in a `serverAuth` function, Glee won't execute any logic beyond the `done()` call. + +### authProps + +`authProps` implements a couple of methods that allows the server to retrieve the authentication parameters from the client, below are the current available methods; + +```js +export async function serverAuth({ authProps, done }) { + //some network request + + authProps.getOauthToken() + authProps.getHttpAPIKeys('api_key') + authProps.getToken() + authProps.getUserPass() + + // done(false, 401, "Unauthorized"); + done(false) +} +``` + +| Method | Description | +| ---------------------- | ------------------------------------------------------------------------------------------------ | +| `getOauthToken()` | returns the oauth authentication parameter | +| `getHttpAPIKeys(name)` | returns the HttpAPIKeys parameter with the specified name from either headers or query parameter | +| `getToken()` | returns the http bearer token parameter | +| `getUserPass()` | returns username and password parameters | + +## Client Authentication in Glee + +The `clientAuth` function also takes an argument, and it's argument can be destructured as follows + +| Attribute | Description | +| -------------- | ------------------------------------------------------------------------------------- | +| parsedAsyncAPI | The parsedAsyncAPI schema. | +| serverName | The name of the server/broker from with the authentication parameters are being sent. | + +### possible authentication parameters + +The possible authentication parameters are shown in the code snippet below: + +```js +export async function clientAuth({ serverName }) { + return { + token: process.env.TOKEN, + oauth: process.env.OAUTH2, + apiKey: process.env.APIKEY, + userPass: { + user: process.env.user, + password: process.env.password, + }, + } +} +``` + +**The name of the authentication parameters should be the same as the names specified in the asyncAPI.yaml file.** + +| auth type | values | +| ------------------------------------- | ---------------------------------------------------------------------- | +| http bearer (JWT) | Value should be a JWT string | +| Oauth2 | The value should should be a string | +| httpApiKey in headers or query params | The value should be a string | +| userPass | The value should be an object with the user and password as properties | diff --git a/pages/docs/tools/glee/bearerToken.md b/pages/docs/tools/glee/bearerToken.md new file mode 100644 index 00000000000..9f1d2244ba2 --- /dev/null +++ b/pages/docs/tools/glee/bearerToken.md @@ -0,0 +1,109 @@ +--- +title: 'Http (Bearer Token)' +weight: 5 +--- + +## Getting started with Bearer Token authentication + +Bearer Token authentication is one of the most popular forms of authentication and is widely used because of its percieved security. This guide will walk through how to implement bearer token authentication in Glee. + +A sample `asyncapi.yaml` for a server with security requirements and user password security scheme is shown below: + +```yaml +##server asyncAPI schema +asyncapi: 3.0.0 +info: + title: AsyncAPI IMDB server + version: 1.0.0 + description: This app is a dummy server that would stream the trending/upcoming anime. +servers: + trendingAnimeServer: + host: 'localhost:8081' + protocol: http + security: + - $ref: '#/components/securitySchemes/token' + + ... + +components: + securitySchemes: + token: + type: http + scheme: bearer + bearerFormat: JWT + +``` + +A sample `asyncapi.yaml` for a client that implements some of the requirements of the server above: + +```yaml +##client asyncAPI schema +servers: + trendingAnime: + host: localhost:8081 + protocol: http + security: + - $ref: '#/components/securitySchemes/token' + testwebhook: + host: localhost:9000 + protocol: ws +x-remoteServers: + - trendingAnime + + ... + +components: + securitySchemes: + token: + type: http + scheme: bearer + bearerFormat: JWT + +``` + +**The Client asyncapi.yaml file does't need to implement all the security requirements in the server, it only needs to implement the ones that it uses like &*http (bearer token)* here.** + +### Client Side + +Following the client `asyncapi.yaml` file above, create a file named `trendingAnime.ts` in the `auth` directory, since that is the server that has the security Property. + +```bash +touch auth/trendingAnime.ts +``` + +When using the `bearer` security scheme, it is important that you pass the parameters as follows: + +```js +export async clientAuth({ parsedAsyncAPI, serverName }) { + return { + token: process.env.TOKEN + } +} +``` + +Glee will utilize the `token` for server authentication, employing it in the header with the format: Authorization: Bearer {token}. + +### Server side + +From the server `asyncapi.yaml` file above, create a file named `trendingAnimeServer.ts` in the `auth` directory, since that is the server that has the security Property. + +```bash +touch auth/trendingAnimeServer.ts +``` + +On the server side, you can retrieve the values as follows + +```js + +export async serverAuth({ authProps, done }) { + authProps.getToken() + // your authentication logic here... + done(true|false) +} + +``` + +`getToken()` return a string which contains the token that was sent from the client. + + + diff --git a/pages/docs/tools/glee/httpApiKey.md b/pages/docs/tools/glee/httpApiKey.md new file mode 100644 index 00000000000..e95131edbaa --- /dev/null +++ b/pages/docs/tools/glee/httpApiKey.md @@ -0,0 +1,111 @@ +--- +title: 'httpAPIKey' +weight: 5 +--- + +## Getting started with httpAPIKey authentication + +This guide will walk through how to implement authentication using the `httpAPiKey` security scheme in Glee. + +A sample `asyncapi.yaml` for a server with security requirements and user `HttpApiKey` security scheme is shown below: + +```yaml +##server asyncAPI schema +asyncapi: 3.0.0 +info: + title: AsyncAPI IMDB server + version: 1.0.0 + description: This app is a dummy server that would stream the trending/upcoming anime. +servers: + trendingAnimeServer: + host: 'localhost:8081' + protocol: http + security: + - $ref: '#/components/securitySchemes/apiKey' + + ... + +components: + securitySchemes: + apiKey: + type: httpApiKey + name: api_key + in: query + +``` + +A sample `asyncapi.yaml` for a client that implements some of the requirements of the server above: + +```yaml +##client asyncAPI schema +servers: + trendingAnime: + host: localhost:8081 + protocol: http + security: + - $ref: '#/components/securitySchemes/apiKey' + testwebhook: + host: localhost:9000 + protocol: ws +x-remoteServers: + - trendingAnime + + ... + +components: + securitySchemes: + apiKey: + type: httpApiKey + name: api_key + in: query + + +``` + +The `httpApiKey` could be in either the header or query parameter. + +**The Client asyncapi.yaml file does not need to implement all the security requirements in the server, it only needs to implement the ones that it uses like *httpApiKey* here.** + +### Client Side + +Following the client `asyncapi.yaml` file above, create a file named `trendingAnime.ts` in the `auth` directory, since that is the server that has the security Property. + +```bash +touch auth/trendingAnime.ts +``` + +When using the `HttpApiKey` security scheme, it is important that you pass the parameters as follows: + +```js +export async clientAuth({ parsedAsyncAPI, serverName }) { + return { + apiKey: process.env.APIKEY + } +} +``` + +`apiKey` should be the name of the security requirement as specified in your `asyncapi.yaml` file, and it's value should be a string. + + +### Server side + +From the server `asyncapi.yaml` file above, create a file named `trendingAnimeServer.ts` in the `auth` directory, since that is the server that has the security Property. + +```bash +touch auth/trendingAnimeServer.ts +``` + +On the server side, you can retrieve the values as follows + +```js + +export async serverAuth({ authProps, done }) { + authProps.getHttpAPIKeys('api_key')() + + done(true) +} + +``` + +`getHttpAPIKeys(name)` takes a name parameter to specify the name of the httpApiKey that is desired. Then it returns an object containing the httpApiKey value that was sent from the client. + diff --git a/pages/docs/tools/glee/intro-auth.md b/pages/docs/tools/glee/intro-auth.md new file mode 100644 index 00000000000..c657fef8ecd --- /dev/null +++ b/pages/docs/tools/glee/intro-auth.md @@ -0,0 +1,21 @@ +--- +title: 'Introduction to Glee Authentication' +weight: 30 +--- + +Glee comes with Authentication features which help you erifying the identity of users or entities attempting to access a system or application. It ensures that only authorised individuals or systems are granted access, protecting against unauthorised intrusions and data breaches. Glee simplifies this vital process by offering multiple authentication methods, each tailored to different use cases: + +# Authentication Using Authentication Functions: +Glee allows you to implement custom authentication logic by utilising authentication functions. This flexible approach enables developers to craft tailored authentication mechanisms, ensuring that access to resources is controlled precisely as required. + + +# HTTP Bearer Token Authentication: +In today's API-driven world, bearer token authentication is a widely adopted method. Glee supports this approach, allowing clients to present a token as proof of their identity, thus ensuring secure and efficient access to resources. + +# HttpApiKey Authentication: +Glee's authentication suite includes support for API key authentication, which is vital for protecting web APIs. By using API keys, you can regulate access to your services, making it an essential component of your application's security strategy. + +# Username and Password Authentication: +Traditional yet still crucial, username and password authentication remains a reliable option within Glee's toolkit. This method allows users to access systems or applications by providing their unique credentials, ensuring a familiar and straightforward login experience. + +Glee's authentication features not only provide layers of security but also offer the flexibility needed to meet your unique requirements. Whether you're developing a web application, a mobile app, or any other application, Glee's authentication methods empower you to tailor your security measures to suit the demands of your project. With Glee, you can build and maintain a secure digital environment, ensuring that only authorised users and systems gain access, protecting your valuable data and resources. \ No newline at end of file diff --git a/pages/docs/tools/glee/userPassword.md b/pages/docs/tools/glee/userPassword.md new file mode 100644 index 00000000000..fc761310ed1 --- /dev/null +++ b/pages/docs/tools/glee/userPassword.md @@ -0,0 +1,106 @@ +--- +title: 'userPassword' +weight: 5 +--- + +## Getting started with username and password authentication + +User and password authentication is one of the most basic forms of authentication. This guide will walk through how to implement username and password authentication in Glee. + +A sample `asyncapi.yaml` for a server with security requirements and user password security scheme is shown below: + +```yaml +##server asyncAPI schema +asyncapi: 3.0.0 +info: + title: AsyncAPI IMDB server + version: 1.0.0 + description: This app is a dummy server that would stream the trending/upcoming anime. +servers: + trendingAnimeServer: + host: 'localhost:8081' + protocol: http + security: + - $ref: '#/components/securitySchemes/userPass + + ... + +components: + securitySchemes: + userPass: + type: userPassword + +``` + +A sample `asyncapi.yaml` for a client that implements some of the requirements of the server above: + +```yaml +##client asyncAPI schema +servers: + trendingAnime: + host: localhost:8081 + protocol: http + security: + - $ref: '#/components/securitySchemes/userPass + testwebhook: + host: localhost:9000 + protocol: ws +x-remoteServers: + - trendingAnime + + ... + +components: + securitySchemes: + userPass: + type: userPassword + +``` + +**The Client asyncapi.yaml file does not need to implement all the security requirements in the server, it only needs to implement the ones that it uses like &*userPassword* here.** + +### Client Side + +Following the client `asyncapi.yaml` file above, create a file named `trendingAnime.ts` in the `auth` directory, since that is the server that has the security Property. + +```bash +touch auth/trendingAnime.ts +``` + +When using the `userPassword` security scheme, it is important that you pass the parameters as follows: + +```js +export async clientAuth({ parsedAsyncAPI, serverName }) { + return { + userPass: { + user: process.env.user, + password: process.env.password, + }, + } +} +``` + +`userPass` should be the name of the security requirement as specified in your `asyncapi.yaml` file, then pass `user` and `password` as it's properties + + +### Server side + +From the server `asyncapi.yaml` file above, create a file named `trendingAnimeServer.ts` in the `auth` directory, since that is the server that has the security Property. + +```bash +touch auth/trendingAnimeServer.ts +``` + +On the server side, you can retrieve the values as follows + +```js + +export async serverAuth({ authProps, done }) { + authProps.getUserPass() + + done(true) +} + +``` + +`getUserPass()` return an object containing the username and password that was sent from the client. From 1a78f609043b087c74ceaf2b5939b2aae3744a12 Mon Sep 17 00:00:00 2001 From: karthik mv Date: Fri, 8 Dec 2023 00:10:23 +0530 Subject: [PATCH 130/134] fix: single backtick rendering as a codeblock in casestudies (#2208) Co-authored-by: Akshat Nema <76521428+akshatnema@users.noreply.github.com>%0ACo-authored-by: Lukasz Gornicki --- components/MDX.js | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/components/MDX.js b/components/MDX.js index 168e6c8dfb7..9f6182efb4c 100644 --- a/components/MDX.js +++ b/components/MDX.js @@ -60,9 +60,8 @@ export function getMDXComponents() { th: props => , tr: props => , td: props => , - pre: props =>
, - inlineCode: props => , - code: CodeComponent, + pre: props => CodeComponent(props.children.props), + code: props => , hr: props =>
, CodeBlock, ChapterSuggestions, From 585fed668c8535d3be43727c02d01d92641e52fd Mon Sep 17 00:00:00 2001 From: Ashish Padhy <100484401+Shurtu-gal@users.noreply.github.com> Date: Fri, 8 Dec 2023 00:43:16 +0530 Subject: [PATCH 131/134] fix: scroll-to-top button (#1657) Co-authored-by: akshatnema --- components/buttons/ScrollButton.js | 2 +- components/navigation/MobileNavMenu.js | 2 +- components/navigation/NavBar.js | 3 +-- 3 files changed, 3 insertions(+), 4 deletions(-) diff --git a/components/buttons/ScrollButton.js b/components/buttons/ScrollButton.js index 21920bbfe57..84671aa5989 100644 --- a/components/buttons/ScrollButton.js +++ b/components/buttons/ScrollButton.js @@ -23,7 +23,7 @@ function ScrollButton(){ }) } - return
+ return
{backToTopButton &&( )} diff --git a/components/navigation/MobileNavMenu.js b/components/navigation/MobileNavMenu.js index adcfe3424e5..2721323089f 100644 --- a/components/navigation/MobileNavMenu.js +++ b/components/navigation/MobileNavMenu.js @@ -9,7 +9,7 @@ import Link from 'next/link'; export default function MobileNavMenu({ onClickClose = () => {} }) { return ( -
+
diff --git a/components/navigation/NavBar.js b/components/navigation/NavBar.js index dd9dcbe3574..fa5f55f59b9 100644 --- a/components/navigation/NavBar.js +++ b/components/navigation/NavBar.js @@ -9,7 +9,6 @@ import LearningPanel from './LearningPanel' import CommunityPanel from "./CommunityPanel" import MobileNavMenu from './MobileNavMenu' import otherItems from './otherItems' - import GithubButton from "../buttons/GithubButton" import { SearchButton } from '../AlgoliaSearch'; import IconLoupe from '../icons/Loupe'; @@ -100,7 +99,7 @@ export default function NavBar({ useEffect(() => { setMobileMenuOpen(false); setOpen(null); - }, [asPath]) + }, [asPath]); return (
From cecc74fd1c5fe1c9a7b45679a3c0d297043d33a6 Mon Sep 17 00:00:00 2001 From: Akshat Nema <76521428+akshatnema@users.noreply.github.com> Date: Fri, 8 Dec 2023 04:04:57 +0530 Subject: [PATCH 132/134] fix: skip AnnouncementHero and Banner tests (#2405) --- .../campaignTests/AnnouncementHero.cy.js | 14 ++++++++------ cypress/test/components/campaignTests/Banner.cy.js | 11 ++++++----- 2 files changed, 14 insertions(+), 11 deletions(-) diff --git a/cypress/test/components/campaignTests/AnnouncementHero.cy.js b/cypress/test/components/campaignTests/AnnouncementHero.cy.js index 3d5444d9b20..a2dc55b29bc 100644 --- a/cypress/test/components/campaignTests/AnnouncementHero.cy.js +++ b/cypress/test/components/campaignTests/AnnouncementHero.cy.js @@ -7,26 +7,28 @@ beforeEach(() => { mount(); }); +// .skip should be removed once the AnnouncementHero component is rendered in the website describe('AnnouncementHero Component', () => { - it('should render the component when the date is within the valid range', () => { + it.skip('should render the component when the date is within the valid range', () => { const mockDate = new Date(2021, 10, 12).getTime(); cy.clock(mockDate); cy.get('[data-testid="AnnouncementHero-main-div"]').should('exist'); }); //check if announcement rendered is small or large . - it('should render a small announcement when "small" prop is true', () => { + it.skip('should render a small announcement when "small" prop is true', () => { mount(); cy.get('[data-testid="AnnouncementHero-main-div"]').should('have.class', 'mb-4'); }); - it('should display the correct event information', () => { + it.skip('should display the correct event information', () => { // Assert the event details cy.get('[data-testid="Paragraph-test"]').should('exist'); cy.get('h2').should('exist'); }); - it('should have a link and text for the button', () => { + + it.skip('should have a link and text for the button', () => { mount(); cy.get('[data-testid="Button-link"]') .should('have.attr', 'target', '_blank') @@ -38,7 +40,7 @@ describe('AnnouncementHero Component', () => { }); //check if announcement rendered is small or large . - it('should render a small announcement when "small" prop is true', () => { + it.skip('should render a small announcement when "small" prop is true', () => { const mockDate = new Date('2023-05-01T00:00:00Z'); cy.clock(mockDate.getTime()); @@ -47,7 +49,7 @@ describe('AnnouncementHero Component', () => { cy.get('[data-testid="AnnouncementHero-main-div"]').should('have.class', 'mb-4'); }); - it('should render a large announcement when "small" prop is false', () => { + it.skip('should render a large announcement when "small" prop is false', () => { const mockDate = new Date('2023-05-01T00:00:00Z'); cy.clock(mockDate.getTime()); diff --git a/cypress/test/components/campaignTests/Banner.cy.js b/cypress/test/components/campaignTests/Banner.cy.js index 5ec6e4a1b47..fb196376002 100644 --- a/cypress/test/components/campaignTests/Banner.cy.js +++ b/cypress/test/components/campaignTests/Banner.cy.js @@ -2,8 +2,9 @@ import React from 'react'; import { mount } from '@cypress/react'; import Banner from '../../../../components/campaigns/Banner'; +// .skip should be removed once the Banner component is rendered in the website with default functionalities describe('Banner Component', () => { - it('should not render the banner when the date is not within the valid range', () => { + it.skip('should not render the banner when the date is not within the valid range', () => { const today = new Date(); const [day, month, year] = [today.getUTCDate(), today.getUTCMonth(), today.getUTCFullYear()]; if (year > 2022 || month !== 10 || day < 6) { @@ -17,21 +18,21 @@ describe('Banner Component', () => { } }); - it('should render the banner when the date is within the valid range', () => { + it.skip('should render the banner when the date is within the valid range', () => { const mockDate = new Date(2021, 10, 12).getTime(); cy.clock(mockDate); mount(); cy.get('[data-testid="Banner-main-div"]').should('be.visible'); }); - it('should display the correct message when the date is within the valid range', () => { + it.skip('should display the correct message when the date is within the valid range', () => { const mockDate = new Date(2021, 10, 12).getTime(); cy.clock(mockDate); mount(); cy.contains('.font-medium', 'AsyncAPI Conference 2022 has ended').should('be.visible'); }); - it('should have a link to the recordings playlist', () => { + it.skip('should have a link to the recordings playlist', () => { const mockDate = new Date(2021, 10, 12).getTime(); cy.clock(mockDate); mount(); @@ -41,7 +42,7 @@ describe('Banner Component', () => { .should('have.attr', 'rel', 'noopener noreferrer'); }); - it('should have the max-w-screen-xl class in the div element', () => { + it.skip('should have the max-w-screen-xl class in the div element', () => { const mockDate = new Date(2021, 10, 12).getTime(); cy.clock(mockDate); mount(); From 9af5c53dc80b9c44392b712ad3b1e5e04570dc68 Mon Sep 17 00:00:00 2001 From: asyncapi-bot Date: Fri, 8 Dec 2023 01:28:47 +0100 Subject: [PATCH 133/134] chore: update meetings.json and newsrooom_videos.json (#2406) --- config/meetings.json | 7 ------- config/newsroom_videos.json | 12 ++++++------ 2 files changed, 6 insertions(+), 13 deletions(-) diff --git a/config/meetings.json b/config/meetings.json index 51651ed1f18..84d2257386c 100644 --- a/config/meetings.json +++ b/config/meetings.json @@ -13,13 +13,6 @@ "banner": "", "date": "2023-09-06T16:00:00.000Z" }, - { - "title": "AsyncAPI spec v3 support in Diff", - "calLink": "https://www.google.com/calendar/event?eid=YnVvZWt1azlwcTQxNzZnNzNpZ2c3cjdmbzAgY19xOXRzZWlnbG9tZHNqNm5qdWh2YnB0czExY0Bn", - "url": "https://github.com/asyncapi/community/issues/858", - "banner": "", - "date": "2023-08-29T13:30:00.000Z" - }, { "title": "Brainstorm on AsyncAPI Cheat Sheet Poster", "calLink": "https://www.google.com/calendar/event?eid=bGx1dXBuc2x1a29mN3RzMmQzcGFjaWM4anMgY19xOXRzZWlnbG9tZHNqNm5qdWh2YnB0czExY0Bn", diff --git a/config/newsroom_videos.json b/config/newsroom_videos.json index 0f91f4dda66..352d13b5def 100644 --- a/config/newsroom_videos.json +++ b/config/newsroom_videos.json @@ -1,4 +1,10 @@ [ + { + "image_url": "https://i.ytimg.com/vi/YREb9wuYCOA/hqdefault.jpg", + "title": "AsyncAPI v3 announcement", + "description": "Join us live to learn about all the goodies that AsyncAPI v3 brings.", + "videoId": "YREb9wuYCOA" + }, { "image_url": "https://i.ytimg.com/vi/g6CPg77Lf5Q/hqdefault.jpg", "title": "AsyncAPI Conf on Tour 2023 in Bangalore, India", @@ -17,12 +23,6 @@ "description": "https://github.com/asyncapi/community/issues/917.", "videoId": "KDort611FNg" }, - { - "image_url": "https://i.ytimg.com/vi/YREb9wuYCOA/hqdefault.jpg", - "title": "AsyncAPI v3 announcement", - "description": "Join us live to learn about all the goodies that AsyncAPI v3 brings.", - "videoId": "YREb9wuYCOA" - }, { "image_url": "https://i.ytimg.com/vi/Vm4ZKFb2PVE/hqdefault.jpg", "title": "Community Meeting(October 31th, 2023)", From d023aeb3d60a2014e6cdd8d90eb8b8263d305cb5 Mon Sep 17 00:00:00 2001 From: Ashutosh Rath Date: Fri, 8 Dec 2023 19:20:04 +0530 Subject: [PATCH 134/134] fix: add accordion to FAQ section (#1695) Co-authored-by: Akshat Nema <76521428+akshatnema@users.noreply.github.com>%0ACo-authored-by: akshatnema %0ACo-authored-by: Alejandra Quetzalli %0ACo-authored-by: Ashutosh %0ACo-authored-by: Lucif3r-in --- components/MDX.js | 6 +++++ pages/about/index.md | 52 +++++++++++++++++++++++++++++++++++++------- 2 files changed, 50 insertions(+), 8 deletions(-) diff --git a/components/MDX.js b/components/MDX.js index 9f6182efb4c..8b0be84e989 100644 --- a/components/MDX.js +++ b/components/MDX.js @@ -62,6 +62,12 @@ export function getMDXComponents() { td: props => , pre: props => CodeComponent(props.children.props), code: props => , + details: (props) => +
, + summary: (props) => + , + p: (props) => +

, hr: props =>


, CodeBlock, ChapterSuggestions, diff --git a/pages/about/index.md b/pages/about/index.md index 4714e54ac94..585dfa7b70a 100644 --- a/pages/about/index.md +++ b/pages/about/index.md @@ -100,11 +100,47 @@ All the information about the project's economy, the amount of the donations, th ## FAQs -- **What is the goal of the project?** To make asynchronous APIs as successful and mature as REST APIs. -- **What protocols does it support?** AsyncAPI is protocol-agnostic, so you can use it for APIs that work over any protocol (e.g., AMQP, MQTT, WebSockets, Kafka, STOMP, HTTP, Mercure, etc). For more information, refer to the [AsyncAPI specification documentation](https://www.asyncapi.com/docs/reference/specification/latest#serverBindingsObject). -- **Who are the users of AsyncAPI?** AsyncAPI users are those who implement and maintain event-driven architecture. For example, people that write backend API using WebSocket, or people that maintain communication between their microservices using Kafka. -- **What is the AsyncAPI Community?** It’s the core of the initiative. The AsyncAPI community contributes to the development of the tool, it promotes access and distribution of the specification allowing freedom of use, study, copying, modification, and redistribution to anyone who wishes to do so. The cooperation between these people in all areas of software production generates a substantial improvement in the quality of the software, as well as greater dissemination and sustainability over time, and prioritizing the benefit of society over any other. -- **Who can use it?** Anyone. All projects under AsyncAPI Initiative are part of the Linux Foundation, licensed under the Apache 2.0 license. It’s open to use and contribution. -- **Where can I find more information?** - - [Official AsyncAPI Documentation](/docs) - - [Presentation by Fran Méndez, explaining the project](https://www.youtube.com/watch?v=UID1nnuFDtM&list=PLbi1gRlP7piitNgvqhIAvGNZM_kvP0r8R) +
+What is the goal of the project? + +

To make asynchronous APIs as successful and mature as REST APIs.

+ +
+ +
+What protocols does it support? + +

AsyncAPI is protocol-agnostic, so you can use it for APIs that work over any protocol (e.g., AMQP, MQTT, WebSockets, Kafka, STOMP, HTTP, Mercure, etc). For more information, refer to the [AsyncAPI specification documentation](https://www.asyncapi.com/docs/reference/specification/latest#serverBindingsObject). +

+ +
+ +
+Who are the users of AsyncAPI? + +

AsyncAPI users are those who implement and maintain event-driven architecture. For example, people that write backend API using WebSocket, or people that maintain communication between their microservices using Kafka.

+ +
+ +
+What is the AsyncAPI Community? + +

It’s the core of the initiative. The AsyncAPI community contributes to the development of the tool, it promotes access and distribution of the specification allowing freedom of use, study, copying, modification, and redistribution to anyone who wishes to do so. The cooperation between these people in all areas of software production generates a substantial improvement in the quality of the software, as well as greater dissemination and sustainability over time, and prioritizing the benefit of society over any other.

+ +
+ +
+Who can use it? + +

Anyone. All projects under AsyncAPI Initiative are part of the Linux Foundation, licensed under the Apache 2.0 license. It’s open to use and contribution.

+ +
+ +
+Where can I find more information? + + [Official AsyncAPI Documentation](/docs) + + [Presentation by Fran Méndez, explaining the project](https://www.youtube.com/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