spec
The AsyncAPI specification allows you to create machine-readable definitions of your asynchronous APIs.
Top Related Projects
The OpenAPI Specification Repository
CloudEvents Specification
OpenAPI Generator allows generation of API client libraries (SDK generation), server stubs, documentation and configuration automatically given an OpenAPI Spec (v2, v3)
Examples and server integrations for generating the Swagger API Specification, which enables easy access to your REST API
GUI / visual editor for creating and editing OpenAPI / Swagger definitions
Quick Overview
The AsyncAPI Specification is an open-source project that defines a standard for describing asynchronous APIs. It aims to provide a common language for documenting message-driven APIs, enabling better tooling, code generation, and API management for event-driven architectures.
Pros
- Standardizes the description of asynchronous APIs, improving interoperability
- Supports multiple protocols (e.g., AMQP, MQTT, Kafka, WebSockets)
- Enables automatic code generation and documentation
- Growing ecosystem with various tools and libraries
Cons
- Still evolving, which may lead to breaking changes in future versions
- Less mature compared to REST API specifications like OpenAPI
- Limited adoption compared to synchronous API specifications
- May require a learning curve for teams unfamiliar with event-driven architectures
Getting Started
To start using AsyncAPI, create a YAML or JSON file describing your API:
asyncapi: 2.5.0
info:
title: Hello World API
version: 1.0.0
channels:
hello:
publish:
message:
payload:
type: string
pattern: ^hello .+$
Use tools like the AsyncAPI Generator to create documentation or code from your specification:
npm install -g @asyncapi/generator
ag https://raw.githubusercontent.com/asyncapi/spec/master/examples/streetlights.yml @asyncapi/html-template -o output
For more information and advanced usage, refer to the AsyncAPI documentation.
Competitor Comparisons
The OpenAPI Specification Repository
Pros of OpenAPI-Specification
- More mature and widely adopted in the industry
- Extensive tooling ecosystem and community support
- Better suited for RESTful API documentation
Cons of OpenAPI-Specification
- Limited support for event-driven architectures
- Less flexible for describing asynchronous communication patterns
- Lacks specific constructs for message-oriented protocols
Code Comparison
OpenAPI-Specification:
openapi: 3.0.0
info:
title: Sample API
version: 1.0.0
paths:
/users:
get:
summary: List users
AsyncAPI:
asyncapi: 2.0.0
info:
title: Sample API
version: 1.0.0
channels:
users:
subscribe:
summary: Receive user updates
The OpenAPI example focuses on HTTP endpoints, while AsyncAPI describes message-oriented channels. OpenAPI is tailored for RESTful APIs, whereas AsyncAPI is designed for event-driven architectures.
OpenAPI-Specification excels in documenting traditional request-response APIs, offering a mature ecosystem and widespread adoption. However, it falls short when describing asynchronous communication patterns. AsyncAPI fills this gap by providing specific constructs for event-driven architectures and message-oriented protocols, making it more suitable for modern, distributed systems that rely heavily on asynchronous communication.
CloudEvents Specification
Pros of CloudEvents spec
- Focuses on describing event data structure, making it more lightweight and flexible
- Widely adopted across cloud providers and event-driven architectures
- Simpler to implement due to its narrower scope
Cons of CloudEvents spec
- Limited to event description, lacking API-level specifications
- Less comprehensive for full API documentation compared to AsyncAPI
- May require additional tools or specifications for complete API design
Code comparison
AsyncAPI spec example:
asyncapi: 2.0.0
info:
title: Streetlights API
channels:
light/measured:
publish:
message:
payload:
type: object
properties:
id:
type: integer
lumens:
type: integer
CloudEvents spec example:
{
"specversion" : "1.0",
"type" : "com.example.someevent",
"source" : "/mycontext",
"id" : "A234-1234-1234",
"time" : "2018-04-05T17:31:00Z",
"data" : {
"message" : "Hello World!"
}
}
Both specifications serve different purposes within event-driven architectures. AsyncAPI provides a more comprehensive approach to API design, including channels and message structures, while CloudEvents focuses on standardizing event data format across different platforms and services.
OpenAPI Generator allows generation of API client libraries (SDK generation), server stubs, documentation and configuration automatically given an OpenAPI Spec (v2, v3)
Pros of openapi-generator
- Broader language support: Generates client libraries, server stubs, and documentation for 40+ programming languages
- More mature project: Larger community, more frequent updates, and extensive documentation
- Supports both OpenAPI 2.0 and 3.0 specifications
Cons of openapi-generator
- Focused solely on RESTful APIs, lacking support for event-driven architectures
- More complex setup and configuration compared to AsyncAPI's simpler approach
- Steeper learning curve due to its extensive feature set
Code comparison
AsyncAPI spec example:
asyncapi: 2.0.0
info:
title: Streetlights API
version: 1.0.0
channels:
light/measured:
publish:
message:
payload:
type: object
properties:
lumens:
type: integer
OpenAPI Generator example:
openapi: 3.0.0
info:
title: Streetlights API
version: 1.0.0
paths:
/light/measured:
post:
requestBody:
content:
application/json:
schema:
type: object
properties:
lumens:
type: integer
The AsyncAPI spec focuses on event-driven architectures, while the OpenAPI Generator example demonstrates a RESTful API structure. AsyncAPI uses "channels" for communication, whereas OpenAPI uses "paths" for endpoints.
Examples and server integrations for generating the Swagger API Specification, which enables easy access to your REST API
Pros of swagger-core
- More mature and widely adopted in the industry
- Extensive tooling ecosystem and community support
- Better suited for RESTful API documentation
Cons of swagger-core
- Limited support for event-driven architectures
- Less flexible for describing non-HTTP protocols
- Steeper learning curve for complex API structures
Code Comparison
swagger-core example:
@Path("/users")
public class UserResource {
@GET
@Produces(MediaType.APPLICATION_JSON)
public Response getUsers() {
// Implementation
}
}
spec example:
channels:
user/signedup:
publish:
message:
payload:
type: object
properties:
userId:
type: string
Key Differences
- Purpose: swagger-core focuses on RESTful APIs, while spec is designed for event-driven architectures.
- Protocol support: swagger-core primarily targets HTTP, whereas spec supports multiple protocols.
- Documentation style: swagger-core uses annotations or YAML/JSON for API descriptions, while spec uses YAML for message-driven API definitions.
- Use cases: swagger-core is ideal for traditional request-response APIs, while spec excels in describing asynchronous, event-driven systems.
- Community and adoption: swagger-core has a larger user base and more extensive tooling, but spec is gaining traction in the microservices and event-driven space.
GUI / visual editor for creating and editing OpenAPI / Swagger definitions
Pros of openapi-gui
- Provides a user-friendly graphical interface for creating and editing OpenAPI specifications
- Offers real-time preview and validation of the OpenAPI document
- Supports importing existing OpenAPI specifications for editing
Cons of openapi-gui
- Limited to OpenAPI specifications, while spec supports AsyncAPI for event-driven architectures
- Less comprehensive documentation and community support compared to spec
- Fewer integration options with other tools and frameworks
Code Comparison
spec (AsyncAPI):
asyncapi: 2.0.0
info:
title: Streetlights API
version: 1.0.0
channels:
light/measured:
publish:
message:
payload:
type: object
properties:
lumens:
type: integer
minimum: 0
openapi-gui (OpenAPI):
openapi: 3.0.0
info:
title: Streetlights API
version: 1.0.0
paths:
/light/measured:
post:
requestBody:
content:
application/json:
schema:
type: object
properties:
lumens:
type: integer
minimum: 0
While both repositories focus on API specifications, spec is tailored for event-driven architectures using AsyncAPI, whereas openapi-gui provides a graphical interface for creating RESTful API specifications using OpenAPI. The code examples illustrate the structural differences between AsyncAPI and OpenAPI formats.
Convert designs to code with AI
Introducing Visual Copilot: A new AI model to turn Figma designs to high quality code using your components.
Try Visual CopilotREADME
Read the specification
The latest draft specification can be found at spec/asyncapi.md which tracks the latest commit to the master branch in this repository.
The human-readable markdown file is the source of truth for the specification.
- Version 3.0.0 (latest) (website)
Click to see reference links to older versions of the specification.
- Version 2.6.0
- Version 2.5.0
- Version 2.4.0
- Version 2.3.0
- Version 2.2.0
- Version 2.1.0
- Version 2.0.0
- Version 1.2.0 (deprecated)
- Version 1.1.0 (deprecated)
- Version 1.0.0 (deprecated)
Looking for the JSON Schema files? Check out our spec-json-schemas repo.
Feel like contributing? Check out our contributor's guide.
Examples
Check out the examples directory for examples.
Case Studies and Adopters
Check out the AsyncAPI website to see the list of AsyncAPI adopters and their use cases.
Our Sponsors
Want to become a sponsor? Learn what we do with sponsors' money and join the club.
Platinum
Gold
Silver
Bronze
Contributors
Thanks goes to these wonderful people (emoji key):
This project follows the all-contributors specification. Contributions of any kind welcome!
Top Related Projects
The OpenAPI Specification Repository
CloudEvents Specification
OpenAPI Generator allows generation of API client libraries (SDK generation), server stubs, documentation and configuration automatically given an OpenAPI Spec (v2, v3)
Examples and server integrations for generating the Swagger API Specification, which enables easy access to your REST API
GUI / visual editor for creating and editing OpenAPI / Swagger definitions
Convert designs to code with AI
Introducing Visual Copilot: A new AI model to turn Figma designs to high quality code using your components.
Try Visual Copilot