diff --git a/components/TOC.js b/components/TOC.js
index 53528e9313f5..177a746df20c 100644
--- a/components/TOC.js
+++ b/components/TOC.js
@@ -42,7 +42,7 @@ export default function TOC({
{
tocItems.map((item, index) => (
diff --git a/config/AMBASSADORS_MEMBERS.json b/config/AMBASSADORS_MEMBERS.json
index b9da416f80dd..7e8bd4a4eee1 100644
--- a/config/AMBASSADORS_MEMBERS.json
+++ b/config/AMBASSADORS_MEMBERS.json
@@ -1,164 +1,174 @@
[
- {
- "name": "Alejandra Quetzalli",
- "github": "alequetzalli",
- "twitter": "QuetzalliAle",
- "linkedin": "alejandra-quetzalli",
- "company": "Postman",
- "contributions": [
- {
- "type": "presentation",
- "title": "How to contribute to AsyncAPI Dev Docs, AsyncAPI Conference",
- "date": {
- "year": 2021,
- "month": "November"
- },
- "link": "https://www.youtube.com/watch?v=xAzbDDEbQ18"
- },
- {
- "type": "workshop",
- "title": "Workshop on contributing to AsyncAPI, CCOSS",
- "date": {
- "year": 2021,
- "month": "October"
- },
- "link": "https://ccoss.org/sessions/2021/taller-contribucion-asyncapi/"
- },
- {
- "type": "article",
- "title": "Change is coming to our AsyncAPI Developer Documentation",
- "date": {
- "year": 2021,
- "month": "December"
- },
- "link": "https://www.asyncapi.com/blog/changes-coming-docs"
- },
- {
- "type": "iniciative_driver",
- "title": "Driver and promoter of Google Season of Docs at AsyncAPI",
- "date": {
- "year": 2022,
- "month": "December"
- },
- "link": "https://www.asyncapi.com/blog/google-season-of-docs-2022"
- }
- ]
- },
- {
- "name": "Hugo Guerrero",
- "github": "hguerrero",
- "twitter": "hguerreroo",
- "linkedin": "hugo-guerrero",
- "company": "Red Hat",
- "contributions": [
- {
- "type": "presentation",
- "title": "Speed-Up Kafka Delivery with AsyncAPI & Microcks",
- "date": {
- "year": 2021,
- "month": "July"
- },
- "link": "https://www.confluent.io/events/kafka-summit-apac-2021/speed-up-kafka-delivery-with-asyncapi-and-microcks/"
- },
- {
- "type": "presentation",
- "title": "Automated Apache Kafka Mocking and Testing with AsyncAPI",
- "date": {
- "year": 2021,
- "month": "September"
- },
- "link": "https://www.confluent.io/events/kafka-summit-americas-2021/automated-apache-kafka-mocking-and-testing-with-asyncapi/"
- },
- {
- "type": "presentation",
- "title": "Event-driven APIs & Schema governance for Apache Kafka, Apidays LIVE Hong Kong",
- "date": {
- "year": 2021,
- "month": "August"
- },
- "link": "https://www.youtube.com/watch?v=rwlHJkgaRdw"
- },
- {
- "type": "presentation",
- "title": "Event-driven APIs & Schema governance for Apache Kafka, API Specification Conference",
- "date": {
- "year": 2021,
- "month": "August"
- },
- "link": "https://www.youtube.com/watch?v=QZ4cJyTw-U0"
- },
- {
- "type": "presentation",
- "title": "Getting started with Event-Driven APIs, Apidays LIVE Paris",
- "date": {
- "year": 2021,
- "month": "December"
- },
- "link": "https://www.youtube.com/watch?v=_kIE-qtpwTA&t=9s"
- }
- ]
- },
- {
- "name": "Jesse Menning",
- "github": "jessemenning",
- "twitter": "JesseMenning",
- "linkedin": "jesse-menning",
- "company": "Solace",
- "contributions": [
- {
- "type": "article",
- "title": "AsyncAPI 2.3 Adds Solace Bindings to Unlock Full Power of PubSub+",
- "date": {
- "year": 2022,
- "month": "January"
- },
- "link": "https://solace.com/blog/asyncapi-adds-solace-bindings/"
- },
- {
- "type": "article",
- "title": "Align Production Reality and Event Documentation with the AsyncAPI Discovery Tool",
- "date": {
- "year": 2021,
- "month": "November"
- },
- "link": "https://solace.com/blog/asyncapi-discovery-tool/"
- },
- {
- "type": "article",
- "title": "AsyncAPI vs. OpenAPI: Answers to Your Burning Questions About the Two Leading API Specs",
- "date": {
- "year": 2021,
- "month": "June"
- },
- "link": "https://solace.com/blog/asyncapi-vs-openapi/"
- },
- {
- "type": "article",
- "title": "AsyncAPI, CloudEvents, OpenTelemetry: Which Event-Driven Specs Should Your DevOps Include?",
- "date": {
- "year": 2021,
- "month": "March"
- },
- "link": "https://solace.com/blog/asyncapi-cloudevents-opentelemetry-event-driven-specs-devops/"
- },
- {
- "type": "presentation",
- "title": "Future of AsyncAPI, Panel discussion, AsyncAPI Conference",
- "date": {
- "year": 2021,
- "month": "November"
- },
- "link": "https://www.youtube.com/watch?v=3EeMHhbwyOQ"
- },
- {
- "type": "presentation",
- "title": "Thinking Out Loud #4 — with Jesse Menning",
- "date": {
- "year": 2021,
- "month": "August"
- },
- "link": "https://www.youtube.com/watch?v=eJewFUR-OaM"
- }
- ]
- }
+ {
+ "name": "Alejandra Quetzalli",
+ "img": "https://avatars.githubusercontent.com/u/19964402?v=4",
+ "bio": "Alejandra Quetzalli is the upcoming author (2023) of the book titled 'Designing Developer Documentation as a Product', which will be published by the Apress Publishing Company. Alejandra has been in tech for 9 years, working with SEO, Paid Search, Full-Stack development, UX, Developer Relations, and Technical Writing (Engineering Documentation). She's currently a core OSS contributor for Docs, DevRel, and Community Building at AsyncAPI Initiative. She's also a member of the AsyncAPI Technical Steering Committee (TSC).",
+ "title": "DevRel & DevDocs @AsyncAPI",
+ "github": "alequetzalli",
+ "twitter": "QuetzalliAle",
+ "linkedin": "alejandra-quetzalli",
+ "company": "Postman",
+ "country": "🇲🇽",
+ "contributions": [
+ {
+ "type": "presentation",
+ "title": "How to contribute to AsyncAPI Dev Docs, AsyncAPI Conference",
+ "date": {
+ "year": 2021,
+ "month": "November"
+ },
+ "link": "https://www.youtube.com/watch?v=xAzbDDEbQ18"
+ },
+ {
+ "type": "workshop",
+ "title": "Workshop on contributing to AsyncAPI, CCOSS",
+ "date": {
+ "year": 2021,
+ "month": "October"
+ },
+ "link": "https://ccoss.org/sessions/2021/taller-contribucion-asyncapi/"
+ },
+ {
+ "type": "article",
+ "title": "Change is coming to our AsyncAPI Developer Documentation",
+ "date": {
+ "year": 2021,
+ "month": "December"
+ },
+ "link": "https://www.asyncapi.com/blog/changes-coming-docs"
+ },
+ {
+ "type": "iniciative_driver",
+ "title": "Driver and promoter of Google Season of Docs at AsyncAPI",
+ "date": {
+ "year": 2022,
+ "month": "December"
+ },
+ "link": "https://www.asyncapi.com/blog/google-season-of-docs-2022"
+ }
+ ]
+ },
+ {
+ "name": "Hugo Guerrero",
+ "img": "https://avatars.githubusercontent.com/u/1001939?v=4",
+ "bio": "Hugo Guerrero is a developer advocate for APIs and Event-driven Architecture. He assists organizations in this role by creating, editing, and curating product content shared with the community through webinars, conferences, and other activities. He works on open source software with major private and federal public sector clients looking to connect and extend their system architecture. He has over 20 years of experience as a developer, consultant, architect, and software development manager.",
+ "github": "hguerrero",
+ "twitter": "hguerreroo",
+ "title": "Chief Software Architect @Red Hat",
+ "linkedin": "hugo-guerrero",
+ "company": "Red Hat",
+ "contributions": [
+ {
+ "type": "presentation",
+ "title": "Speed-Up Kafka Delivery with AsyncAPI & Microcks",
+ "date": {
+ "year": 2021,
+ "month": "July"
+ },
+ "link": "https://www.confluent.io/events/kafka-summit-apac-2021/speed-up-kafka-delivery-with-asyncapi-and-microcks/"
+ },
+ {
+ "type": "presentation",
+ "title": "Automated Apache Kafka Mocking and Testing with AsyncAPI",
+ "date": {
+ "year": 2021,
+ "month": "September"
+ },
+ "link": "https://www.confluent.io/events/kafka-summit-americas-2021/automated-apache-kafka-mocking-and-testing-with-asyncapi/"
+ },
+ {
+ "type": "presentation",
+ "title": "Event-driven APIs & Schema governance for Apache Kafka, Apidays LIVE Hong Kong",
+ "date": {
+ "year": 2021,
+ "month": "August"
+ },
+ "link": "https://www.youtube.com/watch?v=rwlHJkgaRdw"
+ },
+ {
+ "type": "presentation",
+ "title": "Event-driven APIs & Schema governance for Apache Kafka, API Specification Conference",
+ "date": {
+ "year": 2021,
+ "month": "August"
+ },
+ "link": "https://www.youtube.com/watch?v=QZ4cJyTw-U0"
+ },
+ {
+ "type": "presentation",
+ "title": "Getting started with Event-Driven APIs, Apidays LIVE Paris",
+ "date": {
+ "year": 2021,
+ "month": "December"
+ },
+ "link": "https://www.youtube.com/watch?v=_kIE-qtpwTA&t=9s"
+ }
+ ]
+ },
+ {
+ "name": "Jesse Menning",
+ "github": "jessemenning",
+ "twitter": "JesseMenning",
+ "bio": "Jesse Menning teams with companies and government agencies to design event-driven architecture and microservices at scale. To guide those discussions, I draw upon more than 15 years of integration architecture and implementation experience, particularly with IBM and Solace platforms. I've been involved with AsyncAPI since 2020, along with other open-source initiatives such as CloudEvents and OpenTelemetry.",
+ "linkedin": "jesse-menning",
+ "company": "Solace",
+ "title": "Architect, Office of the CTO at Solace",
+ "img": "https://avatars.githubusercontent.com/u/62108913?v=4",
+ "contributions": [
+ {
+ "type": "article",
+ "title": "AsyncAPI 2.3 Adds Solace Bindings to Unlock Full Power of PubSub+",
+ "date": {
+ "year": 2022,
+ "month": "January"
+ },
+ "link": "https://solace.com/blog/asyncapi-adds-solace-bindings/"
+ },
+ {
+ "type": "article",
+ "title": "Align Production Reality and Event Documentation with the AsyncAPI Discovery Tool",
+ "date": {
+ "year": 2021,
+ "month": "November"
+ },
+ "link": "https://solace.com/blog/asyncapi-discovery-tool/"
+ },
+ {
+ "type": "article",
+ "title": "AsyncAPI vs. OpenAPI: Answers to Your Burning Questions About the Two Leading API Specs",
+ "date": {
+ "year": 2021,
+ "month": "June"
+ },
+ "link": "https://solace.com/blog/asyncapi-vs-openapi/"
+ },
+ {
+ "type": "article",
+ "title": "AsyncAPI, CloudEvents, OpenTelemetry: Which Event-Driven Specs Should Your DevOps Include?",
+ "date": {
+ "year": 2021,
+ "month": "March"
+ },
+ "link": "https://solace.com/blog/asyncapi-cloudevents-opentelemetry-event-driven-specs-devops/"
+ },
+ {
+ "type": "presentation",
+ "title": "Future of AsyncAPI, Panel discussion, AsyncAPI Conference",
+ "date": {
+ "year": 2021,
+ "month": "November"
+ },
+ "link": "https://www.youtube.com/watch?v=3EeMHhbwyOQ"
+ },
+ {
+ "type": "presentation",
+ "title": "Thinking Out Loud #4 — with Jesse Menning",
+ "date": {
+ "year": 2021,
+ "month": "August"
+ },
+ "link": "https://www.youtube.com/watch?v=eJewFUR-OaM"
+ }
+ ]
+ }
]
diff --git a/config/TSC_MEMBERS.json b/config/TSC_MEMBERS.json
index 8e8e886b80c9..c9110d89203b 100644
--- a/config/TSC_MEMBERS.json
+++ b/config/TSC_MEMBERS.json
@@ -261,6 +261,16 @@
"jasyncapi"
]
},
+ {
+ "name": "Pratik Haldankar",
+ "github": "pratik2315",
+ "linkedin": "pratik-haldankar-1b237a205",
+ "twitter": "PratikHaldankr",
+ "availableForHire": true,
+ "repos": [
+ "generator"
+ ]
+ },
{
"name": "Richard Coppen",
"github": "rcoppen",
diff --git a/config/meetings.json b/config/meetings.json
index c147368b42a4..c4ac4887905e 100644
--- a/config/meetings.json
+++ b/config/meetings.json
@@ -1,7 +1,12 @@
[
+ {
+ "title": "Spec 3.0 Meeting",
+ "url": "https://github.com/asyncapi/community/issues/564",
+ "date": "Wed, 18 Jan 2023 16:00:00 GMT"
+ },
{
"title": "Community Meeting",
- "url": "https://github.com/asyncapi/community/issues/562",
- "date": "Tue, 10 Jan 2023 08:00:00 GMT"
+ "url": "https://github.com/asyncapi/community/issues/569",
+ "date": "Tue, 24 Jan 2023 16:00:00 GMT"
}
]
\ No newline at end of file
diff --git a/config/newsroom_videos.json b/config/newsroom_videos.json
index 8771cc3e002c..d548a121c4e6 100644
--- a/config/newsroom_videos.json
+++ b/config/newsroom_videos.json
@@ -1,4 +1,16 @@
[
+ {
+ "image_url": "https://i.ytimg.com/vi/aLDkeuTQU8o/hqdefault.jpg",
+ "title": "Design Meeting, 16:00 UTC Tuesday January 16, 2023",
+ "description": "https://github.com/asyncapi/community/issues/563.",
+ "videoId": "aLDkeuTQU8o"
+ },
+ {
+ "image_url": "https://i.ytimg.com/vi/DnJv6Qm1pl8/hqdefault.jpg",
+ "title": "Community Meeting, 08:00 UTC Tuesday January 10, 2023",
+ "description": "https://github.com/asyncapi/community/issues/562.",
+ "videoId": "DnJv6Qm1pl8"
+ },
{
"image_url": "https://i.ytimg.com/vi/Va1iQLjEM4s/hqdefault.jpg",
"title": "Community Meeting (December 13, 2022)",
@@ -16,17 +28,5 @@
"title": "Let's talk about contributing - Documentation",
"description": "https://github.com/asyncapi/community.",
"videoId": "kn_oQiZ-ZXU"
- },
- {
- "image_url": "https://i.ytimg.com/vi/4i_N_I4IT34/hqdefault.jpg",
- "title": "Community Meeting, 16:00 UTC Tuesday November 29, 2022",
- "description": "https://github.com/asyncapi/community/issues/536.",
- "videoId": "4i_N_I4IT34"
- },
- {
- "image_url": "https://i.ytimg.com/vi/gQByRAjhpKA/hqdefault.jpg",
- "title": "Let's talk about contributing - AsyncAPI & MQTT Part 2",
- "description": "AsyncAPI and MQTT https://github.com/AceTheCreator/Virtual-houses.",
- "videoId": "gQByRAjhpKA"
}
]
\ No newline at end of file
diff --git a/dashboard.json b/dashboard.json
index 6e7a19818361..0ede77b22667 100644
--- a/dashboard.json
+++ b/dashboard.json
@@ -36,18 +36,18 @@
"resourcePath": "/asyncapi/website/pull/1022",
"repo": "asyncapi/website",
"labels": [],
- "score": 24.697014632436254
+ "score": 24.984189221185513
},
{
- "id": "PR_kwDOFLhIt849RhNn",
+ "id": "PR_kwDOBGu-185AIQgf",
"isPR": true,
- "isAssigned": true,
- "title": "docs: docs folder for new asyncapi community section",
- "author": "Dule-martins",
- "resourcePath": "/asyncapi/community/pull/442",
- "repo": "asyncapi/community",
+ "isAssigned": false,
+ "title": "feat: request/response support",
+ "author": "GreenRover",
+ "resourcePath": "/asyncapi/spec/pull/847",
+ "repo": "asyncapi/spec",
"labels": [],
- "score": 22.68679251119144
+ "score": 24.697014632436254
},
{
"id": "PR_kwDOFLhIt85AY9Ib",
@@ -58,18 +58,7 @@
"resourcePath": "/asyncapi/community/pull/488",
"repo": "asyncapi/community",
"labels": [],
- "score": 21.25091956744515
- },
- {
- "id": "PR_kwDOBW5R_c5AL1kI",
- "isPR": true,
- "isAssigned": true,
- "title": "docs: new guide for validation of AsyncAPI files",
- "author": "Annysah",
- "resourcePath": "/asyncapi/website/pull/1002",
- "repo": "asyncapi/website",
- "labels": [],
- "score": 21.25091956744515
+ "score": 22.399617922442182
},
{
"id": "PR_kwDOFdFGUs4x5bH2",
@@ -94,15 +83,20 @@
"score": 20.96374497869589
},
{
- "id": "PR_kwDOFi_gUM45K4cp",
- "isPR": true,
+ "id": "I_kwDOBGu-184_rP6l",
+ "isPR": false,
"isAssigned": false,
- "title": "feat: automatically generate docs",
- "author": "AceTheCreator",
- "resourcePath": "/asyncapi/glee/pull/318",
- "repo": "asyncapi/glee",
- "labels": [],
- "score": 20.67657038994663
+ "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": 20.38939580119737
},
{
"id": "PR_kwDOBW5R_c5DWzbr",
@@ -116,43 +110,60 @@
"score": 20.38939580119737
},
{
- "id": "I_kwDOBGu-184_rP6l",
- "isPR": false,
+ "id": "PR_kwDOFi_gUM5AcAeR",
+ "isPR": true,
"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": "stale",
- "color": "819cd3"
- },
- {
- "name": "💭 Strawman (RFC 0)",
- "color": "C2E0C6"
- }
- ],
- "score": 20.102221212448114
+ "title": "feat: Kafka Adapter ",
+ "author": "Ruchip16",
+ "resourcePath": "/asyncapi/glee/pull/342",
+ "repo": "asyncapi/glee",
+ "labels": [],
+ "score": 19.240697446200336
},
{
- "id": "MDU6SXNzdWUzNjkwNDExMDc=",
+ "id": "I_kwDOBW5R_c5J6qNe",
"isPR": false,
"isAssigned": false,
- "title": "Support request/reply pattern",
- "author": "adrianhopebailie",
- "resourcePath": "/asyncapi/spec/issues/94",
- "repo": "asyncapi/spec",
+ "title": "Measuring AsyncAPI spec adoption",
+ "author": "derberg",
+ "resourcePath": "/asyncapi/website/issues/780",
+ "repo": "asyncapi/website",
"labels": [
{
- "name": "keep-open",
- "color": "fce250"
+ "name": "enhancement",
+ "color": "84b6eb"
}
],
- "score": 19.378036838463604
+ "score": 18.953522857451077
+ },
+ {
+ "id": "PR_kwDOBW5R_c5GLDV9",
+ "isPR": true,
+ "isAssigned": false,
+ "title": "feat: manual tools added to the Tools Dashboard",
+ "author": "akshatnema",
+ "resourcePath": "/asyncapi/website/pull/1191",
+ "repo": "asyncapi/website",
+ "labels": [],
+ "score": 16.36895155870775
}
],
"goodFirstIssues": [
+ {
+ "id": "I_kwDOFi_gUM5beg1A",
+ "title": "support for both js and ts file for glee config",
+ "isAssigned": false,
+ "resourcePath": "/asyncapi/glee/issues/375",
+ "repo": "asyncapi/glee",
+ "author": "Souvikns",
+ "area": "Unknown",
+ "labels": [
+ {
+ "name": "enhancement",
+ "color": "a2eeef"
+ }
+ ]
+ },
{
"id": "I_kwDOIUldZc5XXsGH",
"title": "Filter out application which are not in use",
@@ -580,25 +591,6 @@
}
]
},
- {
- "id": "I_kwDOFDnrNc4_NF0N",
- "title": "feat: create a parser plugin to support RAML 1.0 data types as a schema format",
- "isAssigned": false,
- "resourcePath": "/asyncapi/cli/issues/142",
- "repo": "asyncapi/cli",
- "author": "GeraldLoeffler",
- "area": "Unknown",
- "labels": [
- {
- "name": "enhancement",
- "color": "a2eeef"
- },
- {
- "name": "stale",
- "color": "ededed"
- }
- ]
- },
{
"id": "I_kwDOFGbvC84_LkcI",
"title": "Create better Kubernetes liveness, readiness and startup Probes",
@@ -675,21 +667,6 @@
}
]
},
- {
- "id": "MDU6SXNzdWU5NDc4NzA2NTE=",
- "title": "Support different asyncapi file names: asyncapi.json and asyncapi.yml",
- "isAssigned": false,
- "resourcePath": "/asyncapi/glee/issues/23",
- "repo": "asyncapi/glee",
- "author": "fmvilas",
- "area": "Unknown",
- "labels": [
- {
- "name": "enhancement",
- "color": "a2eeef"
- }
- ]
- },
{
"id": "MDU6SXNzdWUxMDA4MjQ5Nzg4",
"title": "Set the left menu collapsable",
diff --git a/pages/blog/conference-2022.md b/pages/blog/conference-2022.md
new file mode 100644
index 000000000000..67b3afb846a5
--- /dev/null
+++ b/pages/blog/conference-2022.md
@@ -0,0 +1,209 @@
+---
+title: "2022 AsyncAPI Conference was amazing!"
+date: 2023-01-17T10:00:00+01:00
+type: Conference
+tags:
+ - Conference
+cover: /img/posts/conference-2022.webp
+featured: true
+authors:
+ - name: Azeez Elegbede
+ photo: /img/avatars/ace.webp
+ link: https://twitter.com/_acebuild
+ byline: AsyncAPI DevRel
+---
+
+The 2022 AsyncAPI Conference was amazing, and I had a great time. I volunteered at this conference, not knowing what to expect, and I must say, I left with a new resolve. The organization was top-notch, from interesting sessions to an amazing community.
+
+## The challenges
+
+Because AsycnAPI is a community-first organization, I was able to follow along with the whole process of planning the conference, and I could see some of the challenges the community faced when planning to organize the conference.
+
+Here are a few of the challenges:
+
+- **Went from hybrid to online**: The event was supposed to be an in-person and virtual event held in Barcelona, Spain. But because the foundation they partnered with couldn't find a venue within the provided date, they had to scrap the in-person idea.
+- **Fewer Sponsors**: I believe the whole planning for the 2022 AsyncAPI Conference started quite late, which made it difficult to get a budget for the event in such a short time.
+
+But despite these challenges, AsyncAPI still reached the top of the mountain by giving a blast conference with the power of the community.
+
+## How was it done
+
+AsyncAPI proved how much you can do when you have an amazing and strong community behind you.
+
+Despite AsyncAPI leveraging their experience hosting online events, they also created a conference support squad where so many amazing folks from the community volunteered, including me. This squad involves two categories of volunteers: on-stage and off-stage.
+
+This approach worked like a charm, bringing over 15 members of the community to help coordinate the conference in a collaborative way which, in my opinion, was what made the conference a blast!
+
+## Was it worth it?
+
+I wouldn't say it was amazing if it weren't worth it! The conference was amazing thanks to the contributions from the organization, community, speakers, and sponsors.
+
+Look at the number of views we had on Youtube alone; don't forget numbers don't lie.
+
+- Day 1: 584 views
+- Day 2: 325 views
+- Day 3: 247 views
+
+But hold on, we celebrated too early because two weeks after the conference, the number of views doubled.
+
+- Day 1 views grew to 1403
+- Day 2 views grew to 1181
+- Day 3 views grew to 400
+
+AsyncAPI also had significant women speakers & stream hosts. Isn't this an important move in the right direction for true diversity?
+
+## A sneak peek
+
+The AsyncAPI conference was so great that some of the sessions were not all technical; we had sessions where folks talked about their journey into Opensource and shared their experiences as a part of the AsyncAPI community.
+
+
+We've carefully curated this type of session for you, and it can be found in this youtube playlist called [Inspire & Aspire with AsyncAPI](https://www.youtube.com/playlist?list=PLbi1gRlP7pih0-GkQeQnkI_pQrTwlKrXZ).
+
+
+
+We also have all sessions from the conference recorded and available publicly. Feel free to check it out and share [AsyncAPI Conf 2022](https://www.youtube.com/playlist?list=PLbi1gRlP7pijRiA32SU36hD_FW-2qyPhl).
+
+## Meet the heroes
+
+With the help of these amazing organizations and individuals, AsyncAPI was able to host an incredible conference, and here's a special shoutout to each and every one of them.
+
+### Meet the Sponsors
+Platinum Sponsor
+
+
+
+
+Gold Sponsor
+
+
+
+
+
+
+### Media Support
+
+Special thanks to Restream for supporting us with their amazing product for media coverage.
+
+
+
+
+### Meet the volunteers
+
+
+
+## A glance at the budget
+
+Thanks to the conference sponsors, we were able to get some money to fund the conference and here's an overview of how much we raised and spent.
+
+#### Income
+- Postman - $4,854.70 (Platinum Sponsor)
+- Ably - $2,882.70 (Gold Sponsor)
+- Leftovers from conference 2021 - $7,951.71
+
+A total sum of $15,689.11 was raised for the 2022 AsyncAPI Conference.
+
+#### Spendings
+- Swags for speakers and people that helped run the event - $2,847.81
+- Facebook ad - $114.40
+- Linux Foundation services (registration and schedapp) - $10,000.00
+- Descript licenses for speakers to provide high quality recordings - $696.79
+- Headphones for Anisat - $21.74
+
+A total sum of $13,680.74 was spent on the conference needs.
+
+
+## What's Next?
+
+Because the AsyncAPI Conference happens yearly, it means there will be another one next year(2023). I can't wait for it to happen because the community happens to have learned from its mistake by deciding to kick off the planning as early as possible and I believe this is a big step in the right direction. So many lessons learned to put into play for next year!
+
+## Wrap up
+
+I am truly honored that the community "came together." This was 100% done with the community in mind, and each party involved in the conference has been thoughtfully and intentionally positioned to ensure the project is successful! Cheers to that success!
+
+We had a great time and learned a lot from this year's conference thanks to everyone who attended, was involved, and got behind AsyncAPI in putting this event on. We value and appreciate each and every one of you for making it a blast, and we can't wait to see you all next year.
\ No newline at end of file
diff --git a/pages/docs/reference/specification/v3.0.0-next-major-spec.6.md b/pages/docs/reference/specification/v3.0.0-next-major-spec.7.md
similarity index 93%
rename from pages/docs/reference/specification/v3.0.0-next-major-spec.6.md
rename to pages/docs/reference/specification/v3.0.0-next-major-spec.7.md
index c60c41fc75d9..bb4a9d87a056 100644
--- a/pages/docs/reference/specification/v3.0.0-next-major-spec.6.md
+++ b/pages/docs/reference/specification/v3.0.0-next-major-spec.7.md
@@ -352,7 +352,7 @@ Field Name | Type | Description
summary | `string` | A short summary of the server.
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.
+security | [[Security Scheme Object](#securitySchemeObject) \| [Reference Object](#referenceObject)] | A declaration of which security schemes can be used with this server. The list of values includes alternative [security scheme objects](#securitySchemeObject) that can be used. Only one of the security scheme 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.
externalDocs | [External Documentation Object](#externalDocumentationObject) \| [Reference Object](#referenceObject) | Additional external documentation for this server.
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.
@@ -395,128 +395,82 @@ externalDocs:
url: https://kafka.apache.org/
```
-The following shows how multiple servers can be described, for example, at the AsyncAPI Object's [`servers`](#A2SServers):
+Using server variables for dynamic URLs:
```json
{
- "servers": {
- "development": {
- "url": "development.gigantic-server.com",
- "protocol": "amqp",
- "protocolVersion": "0.9.1",
- "title": "Development server",
- "tags": [
- {
- "name": "env:development",
- "description": "This environment is meant for developers to run their own tests"
- }
- ]
+ "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`"
},
- "staging": {
- "url": "staging.gigantic-server.com",
- "protocol": "amqp",
- "protocolVersion": "0.9.1",
- "title": "Staging server",
- "tags": [
- {
- "name": "env:staging",
- "description": "This environment is a replica of the production environment"
- }
- ]
+ "port": {
+ "enum": [
+ "8883",
+ "8884"
+ ],
+ "default": "8883"
},
- "production": {
- "url": "api.gigantic-server.com",
- "protocol": "amqp",
- "protocolVersion": "0.9.1",
- "title": "Production server",
- "tags": [
- {
- "name": "env:production",
- "description": "This environment is the live environment available for final users"
- }
- ]
+ "basePath": {
+ "default": "v2"
}
}
}
```
```yaml
-servers:
- development:
- url: development.gigantic-server.com
- protocol: amqp
- protocolVersion: 0.9.1
- title: Development server
- tags:
- - name: "env:development"
- description: "This environment is meant for developers to run their own tests"
- staging:
- url: staging.gigantic-server.com
- protocol: amqp
- protocolVersion: 0.9.1
- title: Staging server
- tags:
- - name: "env:staging"
- description: "This environment is a replica of the production environment"
- production:
- url: api.gigantic-server.com
- protocol: amqp
- protocolVersion: 0.9.1
- title: Production server
- 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:
+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:
+ # Note: open meaning. There is the opportunity to use special base paths as assigned by the provider, default is `v2`.
+ default: v2
+```
+
+Using security mechanisms:
```json
{
- "servers": {
- "production": {
- "url": "{username}.gigantic-server.com:{port}/{basePath}",
- "protocol": "secure-mqtt",
- "title": "Production server",
- "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"
- }
- }
+ "url": "broker.company.com",
+ "description": "Production MQTT broker",
+ "protocol": "secure-mqtt",
+ "protocolVersion": "5",
+ "security": [
+ {
+ "type": "userPassword",
+ "description": "Connect to the MQTT broker using basic authentication."
+ },
+ {
+ "type": "X509",
+ "description": "Connect to the MQTT broker using a X509 certificate."
}
- }
+ ]
}
```
```yaml
-servers:
- production:
- url: '{username}.gigantic-server.com:{port}/{basePath}'
- protocol: secure-mqtt
- title: Production server
- 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
+url: broker.company.com
+description: Production MQTT broker
+protocol: secure-mqtt
+protocolVersion: '5'
+security:
+ - type: userPassword
+ description: Connect to the MQTT broker using basic authentication.
+ - type: X509
+ description: Connect to the MQTT broker using a X509 certificate.
```
@@ -810,8 +764,8 @@ Field Name | Type | Description
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.
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](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.
+description | `string` | A verbose explanation of the operation. [CommonMark syntax](http://spec.commonmark.org/) can be used for rich text representation.
+security | [[Security Scheme Object](#securitySchemeObject) \| [Reference Object](#referenceObject)]| A declaration of which security schemes are associated with this operation. Only one of the [security scheme objects](#securitySchemeObject) MUST be satisfied to authorize an operation. In cases where [Server Security](#serverObjectSecurity) 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) \| [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.
@@ -892,7 +846,7 @@ Field Name | Type | Description
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](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.
+security | [[Security Scheme Object](#securitySchemeObject) \| [Reference Object](#referenceObject)]| A declaration of which security schemes are associated with this operation. Only one of the [security scheme objects](#securitySchemeObject) MUST be satisfied to authorize an operation. In cases where [Server Security](#serverObjectSecurity) 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) \| [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.
@@ -2281,6 +2235,7 @@ Field Name | Type | Applies To | Description
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.
+scopes | [`string`] | `oauth2` \| `openIdConnect` | List of the needed scope names. An empty array means no scopes are needed.
This object MAY be extended with [Specification Extensions](#specificationExtensions).
@@ -2390,12 +2345,15 @@ bearerFormat: JWT
"flows": {
"implicit": {
"authorizationUrl": "https://example.com/api/oauth/dialog",
- "scopes": {
+ "availableScopes": {
"write:pets": "modify pets in your account",
"read:pets": "read your pets"
}
}
- }
+ },
+ "scopes": [
+ "write:pets"
+ ]
}
```
@@ -2404,9 +2362,11 @@ type: oauth2
flows:
implicit:
authorizationUrl: https://example.com/api/oauth/dialog
- scopes:
+ availableScopes:
write:pets: modify pets in your account
read:pets: read your pets
+scopes:
+ - 'write:pets'
```
###### SASL Sample
@@ -2445,7 +2405,7 @@ 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.
+availableScopes | 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).
@@ -2453,98 +2413,24 @@ This object MAY be extended with [Specification Extensions](#specificationExtens
```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"
- }
- }
+ "authorizationUrl": "https://example.com/api/oauth/dialog",
+ "tokenUrl": "https://example.com/api/oauth/token",
+ "availableScopes": {
+ "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": []
-}
+authorizationUrl: https://example.com/api/oauth/dialog
+tokenUrl: https://example.com/api/oauth/token
+availableScopes:
+ write:pets: modify pets in your account
+ read:pets: read your pets
```
-```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
diff --git a/pages/docs/tools/index.md b/pages/docs/tools/index.md
index 1cdad63aeaf3..2b87f3bcef93 100644
--- a/pages/docs/tools/index.md
+++ b/pages/docs/tools/index.md
@@ -60,7 +60,7 @@ The following is a list of tools that generate code from an AsyncAPI document; n
| :------------- | :------------- | :----------------- |
| [AsyncAPI Generator](https://github.com/asyncapi/generator) | Use your AsyncAPI definition to generate literally anything. Markdown documentation, Node.js code, Java code, HTML documentation, anything! **[Click here](https://github.com/search?q=topic%3Aasyncapi+topic%3Agenerator+topic%3Atemplate) to get a list of the existing templates**. | Node.js/Hermes, Java/Spring, Markdown, HTML, and more.
| [Node-RED AsyncAPI plugin](https://github.com/dalelane/node-red-contrib-plugin-asyncapi) | Use your AsyncAPI definition to generate and configure Node-RED nodes. | [Node-RED](https://nodered.org) |
-| [MultiAPI Generator](https://github.com/corunet/scs-multiapi-plugin) | Use AsyncAPI definition, several of them at the same time, to generate Spring Cloud code with Maven. | Java/Spring, Maven |
+| [MultiAPI Generator](https://github.com/sngular/scs-multiapi-plugin) | Use AsyncAPI definition, several of them at the same time, to generate Spring Cloud code with Maven. | Java/Spring, Maven |
| [asyncapi_gencpp](https://github.com/hatchbed/asyncapi_gencpp) | Use an AsyncAPI definition to generate C++ code for serializing and deserializing components and messages | C++ |
The language you're looking for is not here? You created a new code generator and want to list it here? [Let us know!](https://github.com/asyncapi/asyncapi/issues/new)
@@ -139,7 +139,7 @@ The tools below take specification documents as input, then publish fake message
| :------------- | :------------- | :------------- |
| [Microcks](https://microcks.io) | 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. | Kubernetes-native, Self-hosted / SaaS, Open Source |
| [Virtualan](https://virtualan.io) | 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](https://github.com/virtualansoftware/AsyncAPI-Virtualization) and OpenAPI [GitHub Reference Examples](https://github.com/virtualansoftware/service-virtualization-openapi). | Kubernetes-native, Self-hosted / SaaS, Open Source |
-| [MultiAPI Converter](https://github.com/corunet/scc-multiapi-converter) | Use AsyncAPI definition, to generate Spring Cloud Contract producer validation or consumer stubs, using maven. | [Spring Cloud Contract](https://cloud.spring.io/spring-cloud-contract/spring-cloud-contract-maven-plugin/)
+| [MultiAPI Converter](https://github.com/sngular/scc-multiapi-converter) | Use AsyncAPI definition, to generate Spring Cloud Contract producer validation or consumer stubs, using maven. | [Spring Cloud Contract](https://cloud.spring.io/spring-cloud-contract/spring-cloud-contract-maven-plugin/)
## Validators {#validators}
diff --git a/public/_redirects b/public/_redirects
index e5b23dc10093..35e3bf9c4874 100644
--- a/public/_redirects
+++ b/public/_redirects
@@ -22,7 +22,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.6 /docs/reference/specification/v3.0.0-next-major-spec.6 302!
+/docs/reference/specification/3.0.0-next-major-spec.7 /docs/reference/specification/v3.0.0-next-major-spec.7 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!
diff --git a/public/img/posts/conference-2022.webp b/public/img/posts/conference-2022.webp
new file mode 100644
index 000000000000..4bbcd7b6517e
Binary files /dev/null and b/public/img/posts/conference-2022.webp differ
diff --git a/public/img/sponsors/ably.png b/public/img/sponsors/ably.png
new file mode 100644
index 000000000000..4f121dee21f8
Binary files /dev/null and b/public/img/sponsors/ably.png differ