Skip to content

Conversation

@AceTheCreator
Copy link
Member

@AceTheCreator AceTheCreator commented Nov 14, 2024

A new websocket article using the latest AsyncAPI Spec version.

Summary by CodeRabbit

  • New Features

    • Introduced a comprehensive guide on using AsyncAPI for documenting WebSocket APIs, including key concepts, message validation, security, bindings, and tooling.
    • Added a step-by-step example showing how to build an AsyncAPI document for a chat application.
  • Documentation

    • Published a new blog post "AsyncAPI & WebSocket" with practical guidance, references, and workflows.
    • Added a curated set of AsyncAPI use cases and production examples for common scenarios.

✏️ Tip: You can customize this high-level summary in your review settings.

@coderabbitai
Copy link
Contributor

coderabbitai bot commented Nov 14, 2024

📝 Walkthrough

Walkthrough

A new technical blog post markdown/blog/asyncapi-and-websocket.md was added explaining how to document WebSocket APIs with AsyncAPI (spec-first), including concepts, examples, validation, security, bindings, tooling, and testing. A new config file config/usecases.json was added containing structured AsyncAPI use-case data and production examples.

Changes

Cohort / File(s) Change Summary
Blog post
markdown/blog/asyncapi-and-websocket.md
New comprehensive technical blog post on using AsyncAPI for WebSocket APIs: concepts (channels, messages, operations), spec-first example (chat app), validation, security, bindings, tooling, codegen, testing, and references.
Config / Use cases
config/usecases.json
New JSON file adding categorized AsyncAPI use cases (infraascode, testing, docs, governance, selfservice, codegen, extensibility, data) with descriptions, in-production scenarios, and resource links.

Sequence Diagram(s)

(omitted)

Estimated code review effort

🎯 3 (Moderate) | ⏱️ ~20 minutes

Poem

I nibble notes upon the log,
AsyncAPI hops through the fog,
Channels sing and messages prance,
A chat spec twirls in rabbit dance,
Hooray — docs, use cases, and a little code jog! 🐇✨

🚥 Pre-merge checks | ✅ 3
✅ Passed checks (3 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The title accurately summarizes the main change: adding a new WebSocket/AsyncAPI article to the blog. It is concise, specific, and directly related to the primary changeset.
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.


Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

@netlify
Copy link

netlify bot commented Nov 14, 2024

Deploy Preview for asyncapi-website ready!

Built without sensitive environment variables

Name Link
🔨 Latest commit 82e0a4f
🔍 Latest deploy log https://app.netlify.com/projects/asyncapi-website/deploys/697781eaad0e0300087387c9
😎 Deploy Preview https://deploy-preview-3394--asyncapi-website.netlify.app
📱 Preview on mobile
Toggle QR Code...

QR Code

Use your smartphone camera to open QR code link.

To edit notification comments on pull requests, go to your Netlify project configuration.

- **SecuritySchemes:** An object that holds reusable security scheme objects
- **Schemas:** and object to hold reusable schema object.

Now, because we want our `#chat` channel to not look overwhelming and difficult to read, we are going to create our message in the component object.
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

#chat is not a value from asyncapi document but rather a name for a chat channel that you use in article to probably reference too slack channels, or in general channel chat concept, so instead of code from markdown probably leave it without anything or in bold. You use it several times in article, pick one way and be consistent

chatMessage:
$ref: '#/components/messages/chat'

userStatus: #newly added channel message
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I don't think the CodeBlock highlight is working as expected. I thought it was suppose to highlight the lines specified in the props 🤔

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

looks like there is a bug, it was suppose to highlight, just ain't working anymore, so yeah, I guess you need to fall back to comments in yaml, sorry

I'll report a bug

@asyncapi-bot
Copy link
Contributor

asyncapi-bot commented Dec 14, 2024

⚡️ Lighthouse report for the changes in this PR:

Category Score
🔴 Performance 38
🟢 Accessibility 98
🟢 Best practices 92
🟢 SEO 100
🔴 PWA 33

Lighthouse ran on https://deploy-preview-3394--asyncapi-website.netlify.app/

Copy link
Contributor

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 1

🧹 Nitpick comments (3)
markdown/blog/asyncapi-and-websocket.md (3)

127-127: Add language specifiers to code blocks

All code blocks should specify the language for proper syntax highlighting. Add yaml as the language specifier for AsyncAPI specification blocks.

Example:

-```
+```yaml

Also applies to: 146-146, 169-169, 204-204, 220-220, 236-236, 255-255, 275-275, 305-305, 319-319, 353-353, 370-370, 390-390, 412-412

🧰 Tools
🪛 Markdownlint (0.37.0)

127-127: null
Fenced code blocks should have a language specified

(MD040, fenced-code-language)


463-463: Fix operation name to match its action

The operation name receiveMessage should be consistent with other operation names in the document.

-  receiveMessage:
+  getMessage:

74-74: Fix grammar and spelling issues

Several grammar and spelling issues need attention:

  1. Add missing commas after introductory phrases
  2. Use "an" instead of "a" before "operation"
  3. Capitalize "i" to "I"
  4. Replace "is been" with "has been"

Examples:

-address This could be
+address, This could be

-create a operation
+create an operation

-i have no such message
+I have no such message

-object is been explicitly
+object has been explicitly

Also applies to: 79-79, 96-96, 157-157, 218-218, 248-248, 380-380

🧰 Tools
🪛 LanguageTool

[uncategorized] ~74-~74: Possible missing comma found.
Context: ...nal string that specifies the channel's address This could be a topic name, routing key...

(AI_HYDRA_LEO_MISSING_COMMA)

📜 Review details

Configuration used: .coderabbit.yaml
Review profile: CHILL
Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 28ce8e4 and d36f7a0.

📒 Files selected for processing (1)
  • markdown/blog/asyncapi-and-websocket.md (1 hunks)
🧰 Additional context used
🪛 LanguageTool
markdown/blog/asyncapi-and-websocket.md

[uncategorized] ~74-~74: Possible missing comma found.
Context: ...nal string that specifies the channel's address This could be a topic name, routing key...

(AI_HYDRA_LEO_MISSING_COMMA)


[uncategorized] ~79-~79: Possible missing comma found.
Context: ...cAPI, let's take a look at the next key concept which is messages. ### Messages I me...

(AI_HYDRA_LEO_MISSING_COMMA)


[uncategorized] ~96-~96: Possible missing comma found.
Context: .... Now let's take a look at another key concept which is called operations ### Operati...

(AI_HYDRA_LEO_MISSING_COMMA)


[grammar] ~157-~157: Did you mean “is being” or “has been”?
Context: ...ny effect on your API unless the object is been explicitly referenced from another prop...

(BEEN_PART_AGREEMENT)


[uncategorized] ~159-~159: Possible missing comma found.
Context: ... a set of required elements that can be defined such as the following: - Messages:...

(AI_HYDRA_LEO_MISSING_COMMA)


[misspelling] ~218-~218: Use “an” instead of ‘a’ if the following word starts with a vowel sound, e.g. ‘an article’, ‘an hour’.
Context: ...given channel. So now we need to create a operation for our chat channel and ...

(EN_A_VS_AN)


[uncategorized] ~218-~218: Use a comma before ‘and’ if it connects two independent clauses (unless they are closely connected and short).
Context: ...ate a operation for our chat channel and we do that by doing the following: ```...

(COMMA_COMPOUND_SENTENCE)


[uncategorized] ~248-~248: Did you mean “I”?
Context: ...ll fail because in my chat channel, i have no such message as hello even if...

(I_LOWERCASE_PREMIUM)


[uncategorized] ~248-~248: Did you mean “I”?
Context: ...have no such message as hello even if i have the hello message defined in my ...

(I_LOWERCASE_PREMIUM)


[uncategorized] ~253-~253: Possible missing article found.
Context: ... first operation that allows us to send message, we also need to create another operati...

(AI_HYDRA_LEO_MISSING_A)


[typographical] ~380-~380: Consider adding a comma here.
Context: ...ySchemes/apiKeyHeader' ``` As you can see we added a security property to the dev...

(AS_YOU_CAN_SEE_COMMA)


[uncategorized] ~380-~380: Did you mean “I”?
Context: ...server, and one thing you can notice is i'm specifying it as an array -$ref and...

(I_LOWERCASE_PREMIUM)


[style] ~380-~380: ‘the reason is because’ might be wordy. Consider a shorter alternative.
Context: ...m specifying it as an array -$ref and the reason is because you can pass multiple security types in...

(EN_WORDINESS_PREMIUM_THE_REASON_IS_BECAUSE)


[uncategorized] ~380-~380: Possible missing comma found.
Context: ...ection. But in our case, we only needed one so yea, let's role with that. ### Ste...

(AI_HYDRA_LEO_MISSING_COMMA)


[style] ~386-~386: Use ‘will’ instead of ‘going to’ if the following action is certain.
Context: ...ser is trying to join, a new connection is going to be established, which doesn't align wel...

(GOING_TO_WILL)


[grammar] ~546-~546: Possible agreement error. The noun thing seems to be countable; consider using: “a lot of interesting things”.
Context: ...owed the spec-first approach, we can do a lot of interesting thing with this document, such as: - **Gener...

(A_LOT_OF_NN)


[style] ~549-~549: Consider using a different verb to strengthen your wording.
Context: ...client or server code and models, while speeding up the development process and reducing th...

(SPEED_UP_ACCELERATE)


[style] ~569-~569: The phrase ‘feel free to’ is used quite frequently. Consider using a less frequent alternative to set your writing apart from others and make it sound more professional.
Context: ...n modern API design. ### References - Feel free to check out my [livestream](https://www.y...

(FEEL_FREE_TO_STYLE_ME)

🪛 Markdownlint (0.37.0)
markdown/blog/asyncapi-and-websocket.md

127-127: null
Fenced code blocks should have a language specified

(MD040, fenced-code-language)


146-146: null
Fenced code blocks should have a language specified

(MD040, fenced-code-language)


169-169: null
Fenced code blocks should have a language specified

(MD040, fenced-code-language)


204-204: null
Fenced code blocks should have a language specified

(MD040, fenced-code-language)


220-220: null
Fenced code blocks should have a language specified

(MD040, fenced-code-language)


236-236: null
Fenced code blocks should have a language specified

(MD040, fenced-code-language)


255-255: null
Fenced code blocks should have a language specified

(MD040, fenced-code-language)


275-275: null
Fenced code blocks should have a language specified

(MD040, fenced-code-language)


305-305: null
Fenced code blocks should have a language specified

(MD040, fenced-code-language)


319-319: null
Fenced code blocks should have a language specified

(MD040, fenced-code-language)


353-353: null
Fenced code blocks should have a language specified

(MD040, fenced-code-language)


370-370: null
Fenced code blocks should have a language specified

(MD040, fenced-code-language)


390-390: null
Fenced code blocks should have a language specified

(MD040, fenced-code-language)


412-412: null
Fenced code blocks should have a language specified

(MD040, fenced-code-language)

⏰ Context from checks skipped due to timeout of 180000ms (1)
  • GitHub Check: Test NodeJS PR - macos-13
🔇 Additional comments (2)
markdown/blog/asyncapi-and-websocket.md (2)

3-3: Update the blog post date

The post date is set to January 2025, which is in the future. This might cause issues with blog post sorting and RSS feeds.

Please update the date to a current or past date.


380-380: ⚠️ Potential issue

Correct the security schemes explanation

The explanation about security schemes is incorrect. When multiple security schemes are specified in an array, ALL schemes must be satisfied, not just one of them. If you want to specify alternative security schemes (OR relationship), you need to use multiple array items.

-and the reason is because you can pass multiple security types in the security object, and only one of this security scheme needs to be satisfied to authorize a connection
+Multiple security schemes in a single array item form an AND relationship, meaning all schemes must be satisfied. To specify alternative schemes (OR relationship), you would need multiple array items.

Likely invalid or redundant comment.

🧰 Tools
🪛 LanguageTool

[typographical] ~380-~380: Consider adding a comma here.
Context: ...ySchemes/apiKeyHeader' ``` As you can see we added a security property to the dev...

(AS_YOU_CAN_SEE_COMMA)


[uncategorized] ~380-~380: Did you mean “I”?
Context: ...server, and one thing you can notice is i'm specifying it as an array -$ref and...

(I_LOWERCASE_PREMIUM)


[style] ~380-~380: ‘the reason is because’ might be wordy. Consider a shorter alternative.
Context: ...m specifying it as an array -$ref and the reason is because you can pass multiple security types in...

(EN_WORDINESS_PREMIUM_THE_REASON_IS_BECAUSE)


[uncategorized] ~380-~380: Possible missing comma found.
Context: ...ection. But in our case, we only needed one so yea, let's role with that. ### Ste...

(AI_HYDRA_LEO_MISSING_COMMA)

Copy link
Contributor

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 1

🧹 Nitpick comments (1)
markdown/blog/asyncapi-and-websocket.md (1)

79-79: Address grammar and style issues

Consider the following improvements for better readability:

  • Add missing commas in compound sentences
  • Capitalize "i" to "I" consistently throughout the text
  • Replace "going to" with "will" for more formal tone
  • Fix "a lot of interesting thing" to "things"
  • Consider alternatives to casual phrases like "feel free to"

Also applies to: 96-96, 159-159, 218-218, 232-232, 248-248, 253-253, 380-380, 386-386, 546-546, 569-569

🧰 Tools
🪛 LanguageTool

[uncategorized] ~79-~79: Possible missing comma found.
Context: ...cAPI, let's take a look at the next key concept which is messages. ### Messages I me...

(AI_HYDRA_LEO_MISSING_COMMA)

📜 Review details

Configuration used: .coderabbit.yaml
Review profile: CHILL
Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between d36f7a0 and e7418c8.

📒 Files selected for processing (1)
  • markdown/blog/asyncapi-and-websocket.md (1 hunks)
🧰 Additional context used
🪛 LanguageTool
markdown/blog/asyncapi-and-websocket.md

[uncategorized] ~79-~79: Possible missing comma found.
Context: ...cAPI, let's take a look at the next key concept which is messages. ### Messages I me...

(AI_HYDRA_LEO_MISSING_COMMA)


[uncategorized] ~96-~96: Possible missing comma found.
Context: .... Now let's take a look at another key concept which is called operations ### Operati...

(AI_HYDRA_LEO_MISSING_COMMA)


[uncategorized] ~159-~159: Possible missing comma found.
Context: ... a set of required elements that can be defined such as the following: - Messages:...

(AI_HYDRA_LEO_MISSING_COMMA)


[uncategorized] ~218-~218: Use a comma before ‘and’ if it connects two independent clauses (unless they are closely connected and short).
Context: ...te an operation for our chat channel and we do that by doing the following: ```...

(COMMA_COMPOUND_SENTENCE)


[uncategorized] ~232-~232: Possible missing article found.
Context: ...This basically means we've just enabled connected client to send a message, but not any...

(AI_HYDRA_LEO_MISSING_A)


[uncategorized] ~248-~248: Did you mean “I”?
Context: ...have no such message as hello even if i have the hello message defined in my ...

(I_LOWERCASE_PREMIUM)


[uncategorized] ~253-~253: Possible missing article found.
Context: ... first operation that allows us to send message, we also need to create another operati...

(AI_HYDRA_LEO_MISSING_A)


[typographical] ~380-~380: Consider adding a comma here.
Context: ...ySchemes/apiKeyHeader' ``` As you can see we added a security property to the dev...

(AS_YOU_CAN_SEE_COMMA)


[uncategorized] ~380-~380: Did you mean “I”?
Context: ...server, and one thing you can notice is i'm specifying it as an array -$ref and...

(I_LOWERCASE_PREMIUM)


[style] ~380-~380: ‘the reason is because’ might be wordy. Consider a shorter alternative.
Context: ...m specifying it as an array -$ref and the reason is because you can pass multiple security types in...

(EN_WORDINESS_PREMIUM_THE_REASON_IS_BECAUSE)


[style] ~386-~386: Use ‘will’ instead of ‘going to’ if the following action is certain.
Context: ...ser is trying to join, a new connection is going to be established, which doesn't align wel...

(GOING_TO_WILL)


[grammar] ~546-~546: Possible agreement error. The noun thing seems to be countable; consider using: “a lot of interesting things”.
Context: ...owed the spec-first approach, we can do a lot of interesting thing with this document, such as: - **Gener...

(A_LOT_OF_NN)


[style] ~549-~549: Consider using a different verb to strengthen your wording.
Context: ...client or server code and models, while speeding up the development process and reducing th...

(SPEED_UP_ACCELERATE)


[style] ~569-~569: The phrase ‘feel free to’ is used quite frequently. Consider using a less frequent alternative to set your writing apart from others and make it sound more professional.
Context: ...n modern API design. ### References - Feel free to check out my [livestream](https://www.y...

(FEEL_FREE_TO_STYLE_ME)

🔇 Additional comments (3)
markdown/blog/asyncapi-and-websocket.md (3)

3-3: Update the blog post date

The post date is set to 2025-01-10, which is in the future. This might cause issues with content management systems or RSS feeds. Consider updating it to the current date.


192-196: Fix YAML indentation in required fields

The required field should be aligned with properties at the same level in the YAML structure.


380-380: Correct the security schemes explanation

The explanation about security schemes is incorrect. When multiple security schemes are specified in an array, ALL schemes must be satisfied, not just one of them.

🧰 Tools
🪛 LanguageTool

[typographical] ~380-~380: Consider adding a comma here.
Context: ...ySchemes/apiKeyHeader' ``` As you can see we added a security property to the dev...

(AS_YOU_CAN_SEE_COMMA)


[uncategorized] ~380-~380: Did you mean “I”?
Context: ...server, and one thing you can notice is i'm specifying it as an array -$ref and...

(I_LOWERCASE_PREMIUM)


[style] ~380-~380: ‘the reason is because’ might be wordy. Consider a shorter alternative.
Context: ...m specifying it as an array -$ref and the reason is because you can pass multiple security types in...

(EN_WORDINESS_PREMIUM_THE_REASON_IS_BECAUSE)

Copy link
Contributor

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 0

🧹 Nitpick comments (2)
markdown/blog/asyncapi-and-websocket.md (2)

31-31: Polish the writing style

Consider these improvements to enhance readability:

  1. Line 31: Add a space after the parenthesis in "intervals(a process"
  2. Line 70: "yea, that's it" sounds informal for a technical article
  3. Line 380: Replace "the reason is because" with "because" to avoid wordiness

Also applies to: 70-70, 380-380


569-569: Make references more professional

Instead of "Feel free to check out", consider using more professional language like "Watch my livestream for..." or "For a detailed walkthrough, refer to my livestream..."

🧰 Tools
🪛 LanguageTool

[style] ~569-~569: The phrase ‘feel free to’ is used quite frequently. Consider using a less frequent alternative to set your writing apart from others and make it sound more professional.
Context: ...n modern API design. ### References - Feel free to check out my [livestream](https://www.y...

(FEEL_FREE_TO_STYLE_ME)

📜 Review details

Configuration used: .coderabbit.yaml
Review profile: CHILL
Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between e7418c8 and a74591b.

📒 Files selected for processing (1)
  • markdown/blog/asyncapi-and-websocket.md (1 hunks)
🧰 Additional context used
🪛 LanguageTool
markdown/blog/asyncapi-and-websocket.md

[uncategorized] ~218-~218: Use a comma before ‘and’ if it connects two independent clauses (unless they are closely connected and short).
Context: ...te an operation for our chat channel and we do that by doing the following: ```...

(COMMA_COMPOUND_SENTENCE)


[uncategorized] ~248-~248: Did you mean “I”?
Context: ...have no such message as hello even if i have the hello message defined in my ...

(I_LOWERCASE_PREMIUM)


[typographical] ~380-~380: Consider adding a comma here.
Context: ...ySchemes/apiKeyHeader' ``` As you can see we added a security property to the dev...

(AS_YOU_CAN_SEE_COMMA)


[uncategorized] ~380-~380: Did you mean “I”?
Context: ...server, and one thing you can notice is i'm specifying it as an array -$ref and...

(I_LOWERCASE_PREMIUM)


[style] ~380-~380: ‘the reason is because’ might be wordy. Consider a shorter alternative.
Context: ...m specifying it as an array -$ref and the reason is because you can pass multiple security types in...

(EN_WORDINESS_PREMIUM_THE_REASON_IS_BECAUSE)


[style] ~386-~386: Use ‘will’ instead of ‘going to’ if the following action is certain.
Context: ...ser is trying to join, a new connection is going to be established, which doesn't align wel...

(GOING_TO_WILL)


[grammar] ~546-~546: Possible agreement error. The noun thing seems to be countable; consider using: “a lot of interesting things”.
Context: ...owed the spec-first approach, we can do a lot of interesting thing with this document, such as: - **Gener...

(A_LOT_OF_NN)


[style] ~549-~549: Consider using a different verb to strengthen your wording.
Context: ...client or server code and models, while speeding up the development process and reducing th...

(SPEED_UP_ACCELERATE)


[style] ~569-~569: The phrase ‘feel free to’ is used quite frequently. Consider using a less frequent alternative to set your writing apart from others and make it sound more professional.
Context: ...n modern API design. ### References - Feel free to check out my [livestream](https://www.y...

(FEEL_FREE_TO_STYLE_ME)

🔇 Additional comments (5)
markdown/blog/asyncapi-and-websocket.md (5)

3-3: Update the blog post date

The blog post date is set to January 2025, which is in the future. Consider updating it to a current or past date.


512-516: Fix YAML indentation in required fields

The required fields should be aligned with properties at the same level.

Also applies to: 534-537


477-486: Maintain consistent message references

The message references in the operations are inconsistent:

  • Channel messages use: userJoin and userLeave
  • Operation references use: userJoined and userLeft

380-380: Correct the security schemes explanation

The explanation about security schemes is incorrect. When multiple security schemes are specified in an array, ALL schemes must be satisfied, not just one of them.

🧰 Tools
🪛 LanguageTool

[typographical] ~380-~380: Consider adding a comma here.
Context: ...ySchemes/apiKeyHeader' ``` As you can see we added a security property to the dev...

(AS_YOU_CAN_SEE_COMMA)


[uncategorized] ~380-~380: Did you mean “I”?
Context: ...server, and one thing you can notice is i'm specifying it as an array -$ref and...

(I_LOWERCASE_PREMIUM)


[style] ~380-~380: ‘the reason is because’ might be wordy. Consider a shorter alternative.
Context: ...m specifying it as an array -$ref and the reason is because you can pass multiple security types in...

(EN_WORDINESS_PREMIUM_THE_REASON_IS_BECAUSE)


1-571: Well-structured and comprehensive article!

The article effectively explains the integration of AsyncAPI with WebSocket, providing clear explanations and practical examples. The code samples are well-organized and the concepts are thoroughly explained.

🧰 Tools
🪛 LanguageTool

[uncategorized] ~218-~218: Use a comma before ‘and’ if it connects two independent clauses (unless they are closely connected and short).
Context: ...te an operation for our chat channel and we do that by doing the following: ```...

(COMMA_COMPOUND_SENTENCE)


[uncategorized] ~248-~248: Did you mean “I”?
Context: ...have no such message as hello even if i have the hello message defined in my ...

(I_LOWERCASE_PREMIUM)


[typographical] ~380-~380: Consider adding a comma here.
Context: ...ySchemes/apiKeyHeader' ``` As you can see we added a security property to the dev...

(AS_YOU_CAN_SEE_COMMA)


[uncategorized] ~380-~380: Did you mean “I”?
Context: ...server, and one thing you can notice is i'm specifying it as an array -$ref and...

(I_LOWERCASE_PREMIUM)


[style] ~380-~380: ‘the reason is because’ might be wordy. Consider a shorter alternative.
Context: ...m specifying it as an array -$ref and the reason is because you can pass multiple security types in...

(EN_WORDINESS_PREMIUM_THE_REASON_IS_BECAUSE)


[style] ~386-~386: Use ‘will’ instead of ‘going to’ if the following action is certain.
Context: ...ser is trying to join, a new connection is going to be established, which doesn't align wel...

(GOING_TO_WILL)


[grammar] ~546-~546: Possible agreement error. The noun thing seems to be countable; consider using: “a lot of interesting things”.
Context: ...owed the spec-first approach, we can do a lot of interesting thing with this document, such as: - **Gener...

(A_LOT_OF_NN)


[style] ~549-~549: Consider using a different verb to strengthen your wording.
Context: ...client or server code and models, while speeding up the development process and reducing th...

(SPEED_UP_ACCELERATE)


[style] ~569-~569: The phrase ‘feel free to’ is used quite frequently. Consider using a less frequent alternative to set your writing apart from others and make it sound more professional.
Context: ...n modern API design. ### References - Feel free to check out my [livestream](https://www.y...

(FEEL_FREE_TO_STYLE_ME)

@thulieblack
Copy link
Member

@AceTheCreator are you still working on the article?

Copy link
Contributor

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 1

♻️ Duplicate comments (2)
markdown/blog/asyncapi-and-websocket.md (2)

376-381: Security-scheme AND/OR semantics still wrong
Spec states that all schemes within one array element are ANDed; alternatives require multiple array items. The explanation claims only one needs to be satisfied.


276-299: required is nested under properties – invalid JSON Schema

In the status message the required array must be a sibling of properties, not inside it, otherwise it is treated as an extra property.

         properties:
@@
-         required:
-           - userId
-           - type
-           - timestamp
+       required:
+         - userId
+         - type
+         - timestamp
🧹 Nitpick comments (7)
markdown/blog/asyncapi-and-websocket.md (7)

2-9: Standardize title punctuation & tag casing

• Add a colon after “WebSocket” and use the idiom “in Heaven”
• Tag value should keep the official casing “WebSocket”.

-title: "AsyncAPI & WebSocket A Match Made from Heaven?"
+title: "AsyncAPI & WebSocket: A Match Made in Heaven?"
@@
-  - Websocket
+  - WebSocket

66-73: Fix grammar & pluralisation in Channels section

“channels allows” → “channels allow”; tighten wording to avoid run-ons.

-### Channels
-
-The AsyncAPI channels allows us to establish a bidirectional communication between message senders and receivers.
-Channels in AsyncAPI are primarily based on a simple idea, Senders send messages with different contents to be addressed to different channels, and receivers subscribe to these channels to receive these messages. But AsyncAPI channels are more than just a message highway, they are made up of a number of different elements that works together to make communication between senders and receivers smooth. Some of these components includes,
+### Channels
+
+AsyncAPI channels allow bidirectional communication between senders and receivers.  A sender publishes messages to a channel and any receiver subscribed to that channel receives them.  Beyond this “message highway”, a channel contains several elements working together to make the exchange smooth.  The key elements include:

119-123: Remove duplicated introductory sentence

The two consecutive sentences introduce the same idea; keep only one to avoid repetition.


207-213: YAML snippet indentation is off

messages: is indented one space more than its siblings, which breaks the example. Align it with address / title to keep the snippet valid.


347-350: Typos & casing in security-scheme paragraph

“HTT API Key scheme” → “HTTP API Key scheme”; also add missing space before “object”.


398-402: Spelling error in bindings example

descritpiondescription


462-470: Inconsistent naming: getMessage vs receiveMessage

Earlier the tutorial refers to a receive operation; consider renaming getMessage to receiveMessage for coherence.

📜 Review details

Configuration used: .coderabbit.yaml
Review profile: CHILL
Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between a74591b and 2059bce.

📒 Files selected for processing (1)
  • markdown/blog/asyncapi-and-websocket.md (1 hunks)
🧰 Additional context used
🧠 Learnings (2)
📓 Common learnings
Learnt from: asyncapi-bot
PR: asyncapi/website#0
File: :0-0
Timestamp: 2025-02-18T12:07:42.211Z
Learning: The following PR commands are supported in the asyncapi/website repository:
- `/please-take-a-look` or `/ptal`: Requests attention from reviewers who haven't reviewed the PR
- `/ready-to-merge` or `/rtm`: Triggers automerge when all conditions are met
- `/do-not-merge` or `/dnm`: Blocks automerge even if all conditions are met
- `/autoupdate` or `/au`: Adds autoupdate label to keep PR in sync with target branch
- `/update` or `/u`: One-time update of PR with latest changes from target branch
Learnt from: TRohit20
PR: asyncapi/website#4107
File: markdown/docs/tools/studio/architecture.md:23-23
Timestamp: 2025-05-09T17:35:57.171Z
Learning: In the AsyncAPI Studio architecture documentation, "Layer Breakdown" is intentionally structured as an H3 heading (subsection) because it provides additional detail about the layered architecture pattern introduced earlier, rather than being a standalone main section.
Learnt from: anshgoyalevil
PR: asyncapi/website#3557
File: tests/fixtures/markdown/check-edit-links-data.js:3-11
Timestamp: 2025-01-19T04:51:41.255Z
Learning: In the AsyncAPI website repository, the test data in `tests/fixtures/markdown/check-edit-links-data.js` intentionally includes inconsistent paths (with and without 'docs' prefix) to verify the script's ability to normalize and handle ambiguous path structures.
Learnt from: bandantonio
PR: asyncapi/website#4264
File: markdown/docs/tutorials/getting-started/coming-from-openapi.md:24-25
Timestamp: 2025-07-19T20:58:34.040Z
Learning: In the AsyncAPI website documentation, anchor references to specification sections can use camelCase format (e.g., #serverObject, #parameterObject, #messageObject) even if the actual HTML IDs on the spec page use hyphenated lowercase format. This is acceptable and should not be changed.
Learnt from: anshgoyalevil
PR: asyncapi/website#3557
File: scripts/markdown/check-editlinks.js:58-59
Timestamp: 2025-01-08T15:15:00.759Z
Learning: In the AsyncAPI codebase, batch processing operations (like in the Dashboard script and check-editlinks.js) follow a sequential pattern using await in loops, which is the preferred approach for maintaining consistency across the codebase.
Learnt from: Siddhant-Pragyan-Sinha
PR: asyncapi/website#4074
File: markdown/blog/open-nest.md:11-12
Timestamp: 2025-04-28T01:13:59.084Z
Learning: For AsyncAPI blog posts, author photo filenames don't necessarily need to match the author's official name, as some authors may use pen names or nicknames (e.g., Aishat Muibudeen using "maya_picture.webp" for her avatar).
markdown/blog/asyncapi-and-websocket.md (6)

Learnt from: bandantonio
PR: #4264
File: markdown/docs/tutorials/getting-started/coming-from-openapi.md:24-25
Timestamp: 2025-07-19T20:58:34.040Z
Learning: In the AsyncAPI website documentation, anchor references to specification sections can use camelCase format (e.g., #serverObject, #parameterObject, #messageObject) even if the actual HTML IDs on the spec page use hyphenated lowercase format. This is acceptable and should not be changed.

Learnt from: TRohit20
PR: #4107
File: markdown/docs/tools/studio/architecture.md:23-23
Timestamp: 2025-05-09T17:35:57.171Z
Learning: In the AsyncAPI Studio architecture documentation, "Layer Breakdown" is intentionally structured as an H3 heading (subsection) because it provides additional detail about the layered architecture pattern introduced earlier, rather than being a standalone main section.

Learnt from: anshgoyalevil
PR: #3557
File: tests/fixtures/markdown/check-edit-links-data.js:3-11
Timestamp: 2025-01-19T04:51:41.255Z
Learning: In the AsyncAPI website repository, the test data in tests/fixtures/markdown/check-edit-links-data.js intentionally includes inconsistent paths (with and without 'docs' prefix) to verify the script's ability to normalize and handle ambiguous path structures.

Learnt from: iambami
PR: #4111
File: markdown/blog/community-spotlight-aayush.md:3-3
Timestamp: 2025-06-03T06:48:09.304Z
Learning: For AsyncAPI community spotlight blog posts, the frontmatter date should reflect the actual publication date, not the month being highlighted in the spotlight. For example, a "May Community Spotlight" can be published in June with a June date in the frontmatter.

Learnt from: akshatnema
PR: #3265
File: tests/fixtures/toolsObjectData.js:51-52
Timestamp: 2024-10-09T17:35:36.557Z
Learning: When reviewing code in the 'asyncapi/website' repository, akshatnema prefers that I do not provide committable code suggestions.

Learnt from: anshgoyalevil
PR: #3557
File: scripts/markdown/check-editlinks.js:58-59
Timestamp: 2025-01-08T15:15:00.759Z
Learning: In the AsyncAPI codebase, batch processing operations (like in the Dashboard script and check-editlinks.js) follow a sequential pattern using await in loops, which is the preferred approach for maintaining consistency across the codebase.

🪛 LanguageTool
markdown/blog/asyncapi-and-websocket.md

[style] ~386-~386: Use ‘will’ instead of ‘going to’ if the following action is certain.
Context: ...ser is trying to join, a new connection is going to be established, which doesn't align wel...

(GOING_TO_WILL)


[style] ~549-~549: Consider using a different verb to strengthen your wording.
Context: ...client or server code and models, while speeding up the development process and reducing th...

(SPEED_UP_ACCELERATE)

⏰ Context from checks skipped due to timeout of 180000ms. You can increase the timeout in your CodeRabbit configuration to a maximum of 15 minutes (900000ms). (4)
  • GitHub Check: Redirect rules - asyncapi-website
  • GitHub Check: Header rules - asyncapi-website
  • GitHub Check: Pages changed - asyncapi-website
  • GitHub Check: Test NodeJS PR - windows-latest

@github-actions
Copy link

This pull request has been automatically marked as stale because it has not had recent activity 😴

It will be closed in 120 days if no further activity occurs. To unstale this pull request, add a comment with detailed explanation.

There can be many reasons why some specific pull request has no activity. The most probable cause is lack of time, not lack of interest. AsyncAPI Initiative is a Linux Foundation project not owned by a single for-profit company. It is a community-driven initiative ruled under open governance model.

Let us figure out together how to push this pull request forward. Connect with us through one of many communication channels we established here.

Thank you for your patience ❤️

@princerajpoot20
Copy link
Member

@AceTheCreator any update on this one?

Copy link
Contributor

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 1

🤖 Fix all issues with AI agents
In `@config/usecases.json`:
- Line 1: The top-level "description" string in the JSON contains
grammar/terminology issues; update that value to tighten phrasing and correct
typos (e.g., change “costs reduction” → “cost reduction”, “if it this” → “if
this”, “costs increase” → “cost increases”, “Use case like” → “Use cases like”,
“in consistent way” → “in a consistent way”, “company wide” → “company‑wide”,
and “Websocket based” → “WebSocket‑based”) and ensure overall sentence
flow/readability while preserving the original meaning; edit the "description"
key value only and keep surrounding JSON structure and keys (usecases,
infraascode, testing, etc.) unchanged.

@@ -0,0 +1 @@
{"description":"All use cases related to AsyncAPI collectively contribute to most important aspect of software development, which is costs reduction. For example with \"Infrastructure as Code\" instead of enabling costly on-demand topic provisioning in your broker, you can automate it safely using AsyncAPI contracts. Before you provision new topics, you can first validate if it this is not causing duplicates and unnecessary costs increase. Use case like \"Governance and Consistency\" or \"Developer Portal\" significantly contributes to adoption of events infrastructure in consistent way and makes onboarding faster, that directly converts to cost reduction.","usecases":{"infraascode":{"title":"Infrastructure as Code","description":"This makes them a great fit for Infrastructure as Code. DevOps teams can use AsyncAPI contracts to automatically provision topics, assign access rights, and configure brokers. Instead of manual setup, everything is declarative and repeatable.","inproduction":[{"name":"Raiffeisen Bank","description":"Implementing a Continuous Integration and Continuous Delivery (CI/CD) pipeline utilizing GitOps principles to deploy a topology constructed on AsyncAPI definitions using a Kubernetes operator to an Apache Pulsar cluster.","resources":[{"type":"Video","url":"https://www.youtube.com/watch?v=_MwzLZMwFN8"}]},{"name":"Kuehne+Nagel","description":"Implementing a GitOps-based pipeline to enable self-service management of Kafka infrastructure, including access control management. Automation of AsyncAPI document governance ensures consistency in the infrastructure at the pull request level.","resources":[{"type":"Slides","url":"https://drive.google.com/file/d/1y67PI8NaITPPwZAiDF2Zs7ISfcIpqMV8/view?usp=sharing"}]},{"name":"LEGO Group","description":"Managing brokers, where developers abstain from direct access to the management console and instead upload AsyncAPI documents to a self-service API, which provisions access and topics specified in the documents.","resources":[{"type":"Video","url":"https://www.youtube.com/watch?v=m8I0fYjx6Cc"}]},{"name":"Postman","description":"Enhancing discoverability of information about system events by building a tool called Synapse for provisioning entire event-based infrastructure, with AsyncAPI documents as the source of truth.","resources":[{"type":"Video","url":"https://www.youtube.com/watch?v=0_7QZyKLPoE"}]},{"name":"Bank of New Zealand","description":"Establishing a decentralized company-wide governance strategy for APIs, providing a self-service platform for publishing APIs and documentation.","resources":[{"type":"Video","url":"https://www.confluent.io/events/kafka-summit-apac-2021/self-service-events-and-decentralised-governance-with-asyncapi-a-real-world/"}]}]},"testing":{"title":"Testing and Mocking","description":"You don’t need to wait for producers to deploy before you start building consumers. Once teams agree on the event structure, you can capture it in an AsyncAPI contract and generate mocks directly. This lets developers test consumers against simulated producers, speeding up development and avoiding bottlenecks.","inproduction":[{"name":"TransferGo","description":"TransferGo uses the AsyncAPI specification as the essential, standardized blueprint for their event-driven microservices, enabling automated documentation (Event Catalog), continuous validation, and reliable contract testing (Microcks) to ensure clarity and trust across their system.","resources":[{"type":"Article","url":"https://www.asyncapi.com/blog/transfergo-asyncapi-story"}]},{"name":"Lombard Odier","description":"Using AsyncAPI as contract for mocking and testing APIs and documentation.","resources":[{"type":"Slides","url":"https://www.slideshare.net/slideshow/apidays-paris-2022-adding-a-mock-as-a-service-capability-to-your-api-strategy-portfolio-ludovic-pourrat-lombard-odier/255041645#4"}]}]},"docs":{"title":"Developer Portal and Discoverability","description":"Generate documentation and share across entire organization which events exist, who produces them, who consumes them, and how traffic flows. This makes onboarding easier and promotes cross-team visibility. Identify what consumers will be affected by event changes introduced by producers.","inproduction":[{"name":"LEGO Group","description":"Managing brokers, where developers abstain from direct access to the management console and instead upload AsyncAPI documents to a self-service API, which provisions access and topics specified in the documents.","resources":[{"type":"Video","url":"https://www.youtube.com/watch?v=m8I0fYjx6Cc"}]},{"name":"TransferGo","description":"TransferGo uses the AsyncAPI specification as the essential, standardized blueprint for their event-driven microservices, enabling automated documentation (Event Catalog), continuous validation, and reliable contract testing (Microcks) to ensure clarity and trust across their system.","resources":[{"type":"Article","url":"https://www.asyncapi.com/blog/transfergo-asyncapi-story"}]},{"name":"Bank of New Zealand","description":"Establishing a decentralized company-wide governance strategy for APIs, providing a self-service platform for publishing APIs and documentation.","resources":[{"type":"Video","url":"https://www.confluent.io/events/kafka-summit-apac-2021/self-service-events-and-decentralised-governance-with-asyncapi-a-real-world/"}]},{"name":"Zora Robotics","description":"Documenting public MQTT APIs for IoT products and constructing a developer portal.","resources":[{"type":"Video","url":"https://www.youtube.com/watch?v=yjHgT0n2BtA"}]},{"name":"Walmart","description":"Managing a centralized API Hub for internal teams, enhancing event discoverability and visibility using AsyncAPI. AsyncAPI facilitates company-wide governance on asynchronous APIs.","resources":[{"type":"Video","url":"https://www.youtube.com/watch?v=SxTpGRaNIPo"}]},{"name":"HDI Global SE","description":"The AsyncAPI documents are used for documentation purposes by the platform team. It provides a comprehensive overview of the asynchronous communication in our system, including the available topics and the structure of the messages.","resources":[{"type":"Use Case","url":"https://www.asyncapi.com/casestudies/hdiglobal"}]},{"name":"Adidas","description":"AsyncAPI is a standard for defining asynchronous APIs using Apache Kafka. AsyncAPI governed under official guidelines. AsyncAPI is promoted to be used for documentation and code generation.","resources":[{"type":"Docs","url":"https://adidas.gitbook.io/api-guidelines/asynchronous-api-guidelines/kafka-asynchronous-guidelines/a_introduction/why-asyncapi"}]},{"name":"SAP","description":"Using AsyncAPI to deliver company wide event catalog for easier discoverability of events and event-driven APIs.","resources":[{"type":"Video","url":"https://www.youtube.com/watch?v=KcYiD67gEh0&list=PLbi1gRlP7pig_nA0tRlr0hU_h5sB2HXcq&index=6"}]},{"name":"eBay","description":"Facilitating partner integration with eBay through asynchronous communication, leveraging public AsyncAPI documents for code generation and rapid integration, while ensuring governance and standardization.","resources":[{"type":"Video","url":"https://www.youtube.com/watch?v=SxTpGRaNIPo"}]},{"name":"Adeo","description":"Document the API of the product, so its users know how it works and how to use it. AsyncAPI was selected as the standard that allows you to generate documentation from a machine-readable document that describes the API. The goal was to document API in a standardized way, so other internal products could follow to unify how APIs are documented across the company.","resources":[{"type":"Use Case","url":"https://www.asyncapi.com/casestudies/adeogroup"}]}]},"governance":{"title":"Governance and Consistency","description":"Assure consistency across your event ecosystem. You can validate contracts to ensure topic names follow organizational standards, check that no sensitive information is exposed, and apply custom rules through linting. This builds governance into the development lifecycle without slowing teams down.","inproduction":[{"name":"LEGO Group","description":"Defining, documenting, and distributing event-driven APIs while ensuring consistency and governance.","resources":[{"type":"Video","url":"https://www.youtube.com/watch?v=qjarcJQVLOg"}]},{"name":"Kuehne+Nagel","description":"Implementing a GitOps-based pipeline to enable self-service management of Kafka infrastructure, including access control management. Automation of AsyncAPI document governance ensures consistency in the infrastructure at the pull request level.","resources":[{"type":"Slides","url":"https://drive.google.com/file/d/1y67PI8NaITPPwZAiDF2Zs7ISfcIpqMV8/view?usp=sharing"}]},{"name":"Bank of New Zealand","description":"Establishing a decentralized company-wide governance strategy for APIs, providing a self-service platform for publishing APIs and documentation.","resources":[{"type":"Video","url":"https://www.confluent.io/events/kafka-summit-apac-2021/self-service-events-and-decentralised-governance-with-asyncapi-a-real-world/"}]},{"name":"Walmart","description":"Managing a centralized API Hub for internal teams, enhancing event discoverability and visibility using AsyncAPI. AsyncAPI facilitates company-wide governance on asynchronous APIs.","resources":[{"type":"Video","url":"https://www.youtube.com/watch?v=SxTpGRaNIPo"}]},{"name":"eBay","description":"Facilitating partner integration with eBay through asynchronous communication, leveraging public AsyncAPI documents for code generation and rapid integration, while ensuring governance and standardization.","resources":[{"type":"Video","url":"https://www.youtube.com/watch?v=SxTpGRaNIPo"}]},{"name":"Open University of Catalonia and Prodevelop","description":"Enabling monitoring of ports through a design-first approach, utilizing UML class diagrams to design the entire infrastructure. UML diagrams are source of truth for generated AsyncAPI documents that later are used for models and clients generation. These documents are extended with additional SLA properties to specify runtime quality of service requirements, facilitating real-time monitoring.","resources":[{"type":"Video","url":"https://www.youtube.com/watch?v=m4KS6FSeTT4"}]}]},"selfservice":{"title":"Self-Service","description":"Because AsyncAPI is machine-readable, it’s perfect for building self-service platforms. Teams can submit their contracts to a central service, which automatically validates schemas, publishes them to a shared registry, and provisions broker resources. This enables faster time-to-production while keeping standards and compliance intact.","inproduction":[{"name":"LEGO Group","description":"Managing brokers, where developers abstain from direct access to the management console and instead upload AsyncAPI documents to a self-service API, which provisions access and topics specified in the documents.","resources":[{"type":"Video","url":"https://www.youtube.com/watch?v=m8I0fYjx6Cc"}]},{"name":"Walmart","description":"Managing a centralized API Hub for internal teams, enhancing event discoverability and visibility using AsyncAPI. AsyncAPI facilitates company-wide governance on asynchronous APIs.","resources":[{"type":"Video","url":"https://www.youtube.com/watch?v=SxTpGRaNIPo"}]},{"name":"Bank of New Zealand","description":"Establishing a decentralized company-wide governance strategy for APIs, providing a self-service platform for publishing APIs and documentation.","resources":[{"type":"Video","url":"https://www.confluent.io/events/kafka-summit-apac-2021/self-service-events-and-decentralised-governance-with-asyncapi-a-real-world/"}]}]},"codegen":{"title":"Code Generation","description":"AsyncAPI helps eliminate boilerplate code. You can start by generating strongly typed models from message schemas and go further by producing client libraries or even SDKs. This accelerates development, reduces human error, and ensures producers and consumers always stay aligned with the contract.","inproduction":[{"name":"Raiffeisen Bank","description":"Implementing a Continuous Integration and Continuous Delivery (CI/CD) pipeline utilizing GitOps principles to deploy a topology constructed on AsyncAPI definitions using a Kubernetes operator to an Apache Pulsar cluster.","resources":[{"type":"Video","url":"https://www.youtube.com/watch?v=_MwzLZMwFN8"}]},{"name":"Oracle","description":"Documenting data streaming APIs with AsyncAPI documents for client library generation in various programming languages, reducing development time for applications consuming data.","resources":[{"type":"Video","url":"https://www.youtube.com/watch?v=CGLlxYy66LY"}]},{"name":"Adobe","description":"Providing event documentation to expedite development by generating classes based on message payload information from AsyncAPI documents.","resources":[{"type":"Slides","url":"https://drive.google.com/file/d/1AVCG9_fFtuOtrvZVZWENmU2aDT7C51Jr/view?usp=sharing"}]},{"name":"Adidas","description":"AsyncAPI is a standard for defining asynchronous APIs using Apache Kafka. AsyncAPI governed under official guidelines. AsyncAPI is promoted to be used for documentation and code generation.","resources":[{"type":"Docs","url":"https://adidas.gitbook.io/api-guidelines/asynchronous-api-guidelines/kafka-asynchronous-guidelines/a_introduction/why-asyncapi"}]},{"name":"Open University of Catalonia and Prodevelop","description":"Enabling monitoring of ports through a design-first approach, utilizing UML class diagrams to design the entire infrastructure. UML diagrams are source of truth for generated AsyncAPI documents that later are used for models and clients generation. These documents are extended with additional SLA properties to specify runtime quality of service requirements, facilitating real-time monitoring.","resources":[{"type":"Video","url":"https://www.youtube.com/watch?v=m4KS6FSeTT4"}]},{"name":"TransferGo","description":"TransferGo uses the AsyncAPI specification as the essential, standardized blueprint for their event-driven microservices, enabling automated documentation (Event Catalog), continuous validation, and reliable contract testing (Microcks) to ensure clarity and trust across their system.","resources":[{"type":"Article","url":"https://www.asyncapi.com/blog/transfergo-asyncapi-story"}]}]},"extensibility":{"title":"Extensibility - Quality of Service Monitoring","description":"AsyncAPI supports extensions, so you can enrich contracts with operational requirements like SLA or QoS details. For example, an IoT device might declare its expected latency or throughput. Monitoring tools can read these extensions, track service quality, and raise alerts when metrics fall below agreed levels.","inproduction":[{"name":"Open University of Catalonia and Prodevelop","description":"Enabling monitoring of ports through a design-first approach, utilizing UML class diagrams to design the entire infrastructure. UML diagrams are source of truth for generated AsyncAPI documents that later are used for models and clients generation. These documents are extended with additional SLA properties to specify runtime quality of service requirements, facilitating real-time monitoring.","resources":[{"type":"Video","url":"https://www.youtube.com/watch?v=m4KS6FSeTT4"}]}]}},"data":{"raiffeisen":{"name":"Raiffeisen Bank","description":"Implementing a Continuous Integration and Continuous Delivery (CI/CD) pipeline utilizing GitOps principles to deploy a topology constructed on AsyncAPI definitions using a Kubernetes operator to an Apache Pulsar cluster.","resources":[{"type":"Video","url":"https://www.youtube.com/watch?v=_MwzLZMwFN8"}]},"lego1":{"name":"LEGO Group","description":"Managing brokers, where developers abstain from direct access to the management console and instead upload AsyncAPI documents to a self-service API, which provisions access and topics specified in the documents.","resources":[{"type":"Video","url":"https://www.youtube.com/watch?v=m8I0fYjx6Cc"}]},"lego2":{"name":"LEGO Group","description":"Defining, documenting, and distributing event-driven APIs while ensuring consistency and governance.","resources":[{"type":"Video","url":"https://www.youtube.com/watch?v=qjarcJQVLOg"}]},"newzealand":{"name":"Bank of New Zealand","description":"Establishing a decentralized company-wide governance strategy for APIs, providing a self-service platform for publishing APIs and documentation.","resources":[{"type":"Video","url":"https://www.confluent.io/events/kafka-summit-apac-2021/self-service-events-and-decentralised-governance-with-asyncapi-a-real-world/"}]},"zora":{"name":"Zora Robotics","description":"Documenting public MQTT APIs for IoT products and constructing a developer portal.","resources":[{"type":"Video","url":"https://www.youtube.com/watch?v=yjHgT0n2BtA"}]},"walmart":{"name":"Walmart","description":"Managing a centralized API Hub for internal teams, enhancing event discoverability and visibility using AsyncAPI. AsyncAPI facilitates company-wide governance on asynchronous APIs.","resources":[{"type":"Video","url":"https://www.youtube.com/watch?v=SxTpGRaNIPo"}]},"ebay":{"name":"eBay","description":"Facilitating partner integration with eBay through asynchronous communication, leveraging public AsyncAPI documents for code generation and rapid integration, while ensuring governance and standardization.","resources":[{"type":"Video","url":"https://www.youtube.com/watch?v=SxTpGRaNIPo"}]},"postman":{"name":"Postman","description":"Enhancing discoverability of information about system events by building a tool called Synapse for provisioning entire event-based infrastructure, with AsyncAPI documents as the source of truth.","resources":[{"type":"Video","url":"https://www.youtube.com/watch?v=0_7QZyKLPoE"}]},"adobe":{"name":"Adobe","description":"Providing event documentation to expedite development by generating classes based on message payload information from AsyncAPI documents.","resources":[{"type":"Slides","url":"https://drive.google.com/file/d/1AVCG9_fFtuOtrvZVZWENmU2aDT7C51Jr/view?usp=sharing"}]},"universitycatalonia":{"name":"Open University of Catalonia and Prodevelop","description":"Enabling monitoring of ports through a design-first approach, utilizing UML class diagrams to design the entire infrastructure. UML diagrams are source of truth for generated AsyncAPI documents that later are used for models and clients generation. These documents are extended with additional SLA properties to specify runtime quality of service requirements, facilitating real-time monitoring.","resources":[{"type":"Video","url":"https://www.youtube.com/watch?v=m4KS6FSeTT4"}]},"oracle":{"name":"Oracle","description":"Documenting data streaming APIs with AsyncAPI documents for client library generation in various programming languages, reducing development time for applications consuming data.","resources":[{"type":"Video","url":"https://www.youtube.com/watch?v=CGLlxYy66LY"}]},"transfergo":{"name":"TransferGo","description":"TransferGo uses the AsyncAPI specification as the essential, standardized blueprint for their event-driven microservices, enabling automated documentation (Event Catalog), continuous validation, and reliable contract testing (Microcks) to ensure clarity and trust across their system.","resources":[{"type":"Article","url":"https://www.asyncapi.com/blog/transfergo-asyncapi-story"}]},"kuehne":{"name":"Kuehne+Nagel","description":"Implementing a GitOps-based pipeline to enable self-service management of Kafka infrastructure, including access control management. Automation of AsyncAPI document governance ensures consistency in the infrastructure at the pull request level.","resources":[{"type":"Slides","url":"https://drive.google.com/file/d/1y67PI8NaITPPwZAiDF2Zs7ISfcIpqMV8/view?usp=sharing"}]},"adidas":{"name":"Adidas","description":"AsyncAPI is a standard for defining asynchronous APIs using Apache Kafka. AsyncAPI governed under official guidelines. AsyncAPI is promoted to be used for documentation and code generation.","resources":[{"type":"Docs","url":"https://adidas.gitbook.io/api-guidelines/asynchronous-api-guidelines/kafka-asynchronous-guidelines/a_introduction/why-asyncapi"}]},"morgan":{"name":"Morgan Stanley","description":"Used for sharing Websocket based APIs for discoverability and unified security.","resources":[{"type":"Slides","url":"https://drive.google.com/file/d/1YzLwQZsMUXGwj_Lsqv-ZnvV2knuowWrS/view?usp=drive_link"}]},"adeo":{"name":"Adeo","description":"Document the API of the product, so its users know how it works and how to use it. AsyncAPI was selected as the standard that allows you to generate documentation from a machine-readable document that describes the API. The goal was to document API in a standardized way, so other internal products could follow to unify how APIs are documented across the company.","resources":[{"type":"Use Case","url":"https://www.asyncapi.com/casestudies/adeogroup"}]},"hdi":{"name":"HDI Global SE","description":"The AsyncAPI documents are used for documentation purposes by the platform team. It provides a comprehensive overview of the asynchronous communication in our system, including the available topics and the structure of the messages.","resources":[{"type":"Use Case","url":"https://www.asyncapi.com/casestudies/hdiglobal"}]},"sap":{"name":"SAP","description":"Using AsyncAPI to deliver company wide event catalog for easier discoverability of events and event-driven APIs.","resources":[{"type":"Video","url":"https://www.youtube.com/watch?v=KcYiD67gEh0&list=PLbi1gRlP7pig_nA0tRlr0hU_h5sB2HXcq&index=6"}]},"lombard":{"name":"Lombard Odier","description":"Using AsyncAPI as contract for mocking and testing APIs and documentation.","resources":[{"type":"Slides","url":"https://www.slideshare.net/slideshow/apidays-paris-2022-adding-a-mock-as-a-service-capability-to-your-api-strategy-portfolio-ludovic-pourrat-lombard-odier/255041645#4"}]},"siemens":{"name":"Siemens AG","description":"Using AsyncAPI to document their ROS2 interfaces.","resources":[{"type":"Code","url":"https://github.com/siemens/rosita"}]},"pagopa":{"name":"PagoPA","description":"Using AsyncAPI for documentation purposes to help developers understand event-driven APIs. Using Springwolf project and generate AsyncAPI documents from code.","resources":[{"type":"Code","url":"https://github.com/pagopa/p4pa-registries/blob/develop/asyncapi/generated.asyncapi.json"}]}}} No newline at end of file
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🟡 Minor

Tighten grammar/terminology in user-facing copy.

Line 1 contains several typos and phrasing issues (e.g., “costs reduction”, “if it this”, “costs increase”, “Use case like”, “in consistent way”, “company wide”, “Websocket based”). Please revise for clarity and consistent branding (e.g., “WebSocket‑based”, “cost reduction”, “cost increases”, “Use cases like”, “in a consistent way”, “company‑wide”).

🤖 Prompt for AI Agents
In `@config/usecases.json` at line 1, The top-level "description" string in the
JSON contains grammar/terminology issues; update that value to tighten phrasing
and correct typos (e.g., change “costs reduction” → “cost reduction”, “if it
this” → “if this”, “costs increase” → “cost increases”, “Use case like” → “Use
cases like”, “in consistent way” → “in a consistent way”, “company wide” →
“company‑wide”, and “Websocket based” → “WebSocket‑based”) and ensure overall
sentence flow/readability while preserving the original meaning; edit the
"description" key value only and keep surrounding JSON structure and keys
(usecases, infraascode, testing, etc.) unchanged.

remove unrelated changes
@AceTheCreator
Copy link
Member Author

Made changes to the WS article.

cc @derberg @thulieblack @bandantonio

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

area/docs Specify what technical area given issue relates to. Its goal is to ease filtering good first issues. 📑 docs

Projects

Status: To Be Triaged

Development

Successfully merging this pull request may close these issues.

6 participants