1 of 26

Introduction

Fran Méndez

2 of 26

2

Email Service

REST API

Slack Notifications

A basic EDA

THE ARCHITECTURE

3 of 26

3

Streetlight #1

(with light sensor)

Control Panel

Streetlight #2

(with light sensor)

A basic IoT EDA

THE ARCHITECTURE

4 of 26

4

Twitter Streaming API

Browser

A basic streaming API

THE ARCHITECTURE

5 of 26

SPECIFICATION

THE ASYNCAPI

6 of 26

6

Event-Driven microservices

Internet of Things APIs

Streaming APIs

…and actually pretty much any system based on messages.

The purpose

THE SPECIFICATION

7 of 26

7

AMQP

Kafka

WebSocket

NATS

MQTT

STOMP

HTTP

Any protocol!

Protocol-agnostic

THE SPECIFICATION

Protocol information is important for implementation details but it shouldn’t be a blocker for defining your interface.

8 of 26

8

Info

Servers

Channels

Components

A file per application

THE SPECIFICATION

9 of 26

9

Info

The “info” object is a placeholder where you can define information about your application.

This is very useful for your consumers, especially in large organizations or when you’re sharing it publicly.

Application information

THE SPECIFICATION

10 of 26

10

Servers

The “servers” object is a placeholder where you can define information about the servers where your consumers can interact with your application.

Note that servers can also be message brokers.

Servers information

THE SPECIFICATION

11 of 26

11

Channels

The “channels” object is the trunk of the AsyncAPI document. Channels are also known as topics or routing keys, depending on the protocol you choose for communication.

More importantly, they hold the operation and message objects, which we’ll define next.

Communication channels

THE SPECIFICATION

12 of 26

12

Operations & Messages

Every channel can have two operations: publish and subscribe. They define what consumers can do with your application and how the message looks like.

The “headers” object must contain application-specific headers only and be of type: object.

Publishing and subscribing

THE SPECIFICATION

13 of 26

13

Operations & Messages

Both “headers” and “payload” are defined using JSON Schema Draft-07.

You can use different schema languages like Avro or RAML to define the “payload” by leveraging the schemaFormat attribute.

Publishing and subscribing

THE SPECIFICATION

14 of 26

14

Components

The “components” object is a placeholder for various reusable pieces of the document.

It helps you reduce repetition inside the AsyncAPI document and make it more modular, easy to maintain, and less error-prone.

Reusing components

THE SPECIFICATION

15 of 26

INITIATIVE

THE ASYNCAPI

16 of 26

16

Great compatibility through AsyncAPI message bindings.

Since AsyncAPI is protocol-agnostic, it’s also possible to make it work with NATS.

AsyncAPI has been heavily inspired by OpenAPI. The OpenAPI 3.1.0 schema format is very similar to the AsyncAPI one.

+

CNCF and LF projects

THE SPECIFICATION

17 of 26

17

New Tools

THE INITIATIVE

18 of 26

18

Software Architecture

Trends Report

Technology Radar

2020

RapidAPI Developer Survey and Insights 2020-2021

Recognition

THE SPECIFICATION

19 of 26

19

Postman partnership

On December 8 of the year 2020, we announced a partnership with Postman.

This helps us grow the core team and focus on more ambitious results.

Growth

THE INITIATIVE

20 of 26

20

We joined Linux Foundation early 2021 to guarantee the neutrality of the initiative.

The AsyncAPI Initiative maintains both the specification and the essential tools.

Linux Foundation

Growth

THE INITIATIVE

21 of 26

21

AsyncAPI becomes the #1 API specification for defining and developing APIs.

Any kind of APIs.

Our Vision

THE INITIATIVE

22 of 26

22

Our Sponsors

THE FINANCES

23 of 26

23

$74,896.71 USD

💰 Balance

Money Stuff

THE FINANCES

24 of 26

24

11 people

10 issues

$1500 grant

Mentorship Program 2022

THE INITIATIVE

25 of 26

25

Join us!

THE INITIATIVE

26 of 26

@fmvilas

Thank you!