Skip to content

Instantly share code, notes, and snippets.

@webdevotion
Last active March 8, 2022 09:29
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save webdevotion/266bd5d73d4bae4055e21653d7e95355 to your computer and use it in GitHub Desktop.
Save webdevotion/266bd5d73d4bae4055e21653d7e95355 to your computer and use it in GitHub Desktop.
async-api-examples
asyncapi: 2.0.0
info:
title: Account Service
version: '1.0.0'
description: |
Manages user accounts in the system.
license:
name: Apache 2.0
url: https://www.apache.org/licenses/LICENSE-2.0
servers:
production:
url: mqtt://test.mosquitto.org
protocol: mqtt
description: Test MQTT broker
channels:
user/signedup:
subscribe:
operationId: emitUserSignUpEvent
message:
$ref : '#/components/messages/UserSignedUp'
components:
messages:
UserSignedUp:
name: userSignedUp
title: User signed up event
summary: Inform about a new user registration in the system
contentType: application/json
payload:
$ref: '#/components/schemas/userSignedUpPayload'
schemas:
userSignedUpPayload:
type: object
properties:
firstName:
type: string
description: "foo"
lastName:
type: string
description: "bar"
email:
type: string
format: email
description: "baz"
createdAt:
type: string
format: date-time
asyncapi: '2.1.0'
info:
title: Order Service
version: 1.0.0
description: The service is in charge of processing orders
contact:
name: Daniel Kocot
email: daniel.kocot@codecentric.de
license:
name: Apache 2.0
url: https://www.apache.org/licenses/LICENSE-2.0.html
servers:
rabbitmqInStaging:
url: rabbitmq-staging.codecentric.de:{port}
description: RabbitMQ Broker in staging environment
protocol: amqp
protocolVersion: '0.9.1'
variables:
port:
default: '5672'
enum:
- '5672'
- '15672'
rabbitmqInProd:
url: rabbitmq.codecentric.de:{port}
description: RabbitMQ Broker in production environment
protocol: amqp
protocolVersion: '0.9.1'
variables:
port:
default: '5672'
enum:
- '5672'
- '15672'
channels:
orderProcessed:
publish:
operationId: orderProcessedPub
description: Payload of processed order
message:
$ref: '#/components/messages/orderProcessed'
bindings:
$ref: '#/components/messageBindings/amqp/bindings'
subscribe:
operationId: orderProcessedSub
description: Payload of processed order
message:
$ref: '#/components/messages/orderProcessed'
bindings:
$ref: '#/components/messageBindings/amqp/bindings'
bindings:
amqp:
$ref: '#/components/channelBindings/amqp'
components:
schemas:
OrderPayload:
type: object
properties:
id:
type: integer
format: int64
description: ID of received order
customerReference:
type: string
description: Reference for the customer according the order
messages:
orderProcessed:
name: orderProcessed
title: Order Processed
summary: Inform about a new processed order in the system
contentType: application/json
payload:
$ref: '#/components/schemas/OrderPayload'
channelBindings:
amqp:
is: routingKey
exchange:
name: orderExchange
type: direct
durable: true
vhost: /
bindingVersion: 0.2.0
messageBindings:
amqp:
bindings:
amqp:
timestamp: true
ack: false
bindingVersion: 0.2.0
asyncapi: '2.2.0'
info:
title: Order Service
version: 1.0.0
description: The service is in charge of processing orders
contact:
name: Daniel Kocot
email: daniel.kocot@codecentric.de
license:
name: Apache 2.0
url: https://www.apache.org/licenses/LICENSE-2.0.html
servers:
rabbitmqInStaging:
url: rabbitmq-staging.codecentric.de:{port}
description: RabbitMQ Broker in staging environment
protocol: amqp
protocolVersion: '0.9.1'
variables:
port:
default: '5672'
enum:
- '5672'
- '15672'
rabbitmqInProd:
url: rabbitmq.codecentric.de:{port}
description: RabbitMQ Broker in production environment
protocol: amqp
protocolVersion: '0.9.1'
variables:
port:
default: '5672'
enum:
- '5672'
- '15672'
channels:
orderProcessed:
servers:
- rabbitmqInStaging
publish:
operationId: orderProcessedPub
description: Payload of processed order
message:
$ref: '#/components/messages/orderProcessed'
bindings:
$ref: '#/components/messageBindings/amqp/bindings'
subscribe:
operationId: orderProcessedSub
description: Payload of processed order
message:
$ref: '#/components/messages/orderProcessed'
bindings:
$ref: '#/components/messageBindings/amqp/bindings'
bindings:
amqp:
$ref: '#/components/channelBindings/amqp'
components:
schemas:
OrderPayload:
type: object
properties:
id:
type: integer
format: int64
description: ID of received order
customerReference:
type: string
description: Reference for the customer according the order
messages:
orderProcessed:
name: orderProcessed
title: Order Processed
summary: Inform about a new processed order in the system
contentType: application/json
payload:
$ref: '#/components/schemas/OrderPayload'
channelBindings:
amqp:
is: routingKey
exchange:
name: orderExchange
type: direct
durable: true
vhost: /
bindingVersion: 0.2.0
messageBindings:
amqp:
bindings:
amqp:
timestamp: true
ack: false
bindingVersion: 0.2.0
asyncapi: '2.3.0'
id: 'urn:com:gitter:streaming:api'
info:
title: Gitter Streaming API
version: '1.0.0'
servers:
production:
url: https://stream.gitter.im/v1
protocol: https
protocolVersion: '1.1'
security:
- httpBearerToken: []
channels:
/rooms/{roomId}/{resource}:
parameters:
roomId:
description: Id of the Gitter room.
schema:
type: string
examples:
- 53307860c3599d1de448e19d
resource:
description: The resource to consume.
schema:
type: string
enum:
- chatMessages
- events
subscribe:
bindings:
http:
type: response
message:
oneOf:
- $ref: '#/components/messages/chatMessage'
- $ref: '#/components/messages/heartbeat'
components:
securitySchemes:
httpBearerToken:
type: http
scheme: bearer
messages:
chatMessage:
schemaFormat: 'application/schema+yaml;version=draft-07'
summary: >-
A message represents an individual chat message sent to a room.
They are a sub-resource of a room.
payload:
type: object
properties:
id:
type: string
description: ID of the message.
text:
type: string
description: Original message in plain-text/markdown.
html:
type: string
description: HTML formatted message.
sent:
type: string
format: date-time
description: ISO formatted date of the message.
fromUser:
type: object
description: User that sent the message.
properties:
id:
type: string
description: Gitter User ID.
username:
type: string
description: Gitter/GitHub username.
displayName:
type: string
description: Gitter/GitHub user real name.
url:
type: string
description: Path to the user on Gitter.
avatarUrl:
type: string
format: uri
description: User avatar URI.
avatarUrlSmall:
type: string
format: uri
description: User avatar URI (small).
avatarUrlMedium:
type: string
format: uri
description: User avatar URI (medium).
v:
type: number
description: Version.
gv:
type: string
description: Stands for "Gravatar version" and is used for cache busting.
unread:
type: boolean
description: Boolean that indicates if the current user has read the message.
readBy:
type: number
description: Number of users that have read the message.
urls:
type: array
description: List of URLs present in the message.
items:
type: string
format: uri
mentions:
type: array
description: List of @Mentions in the message.
items:
type: object
properties:
screenName:
type: string
userId:
type: string
userIds:
type: array
items:
type: string
issues:
type: array
description: 'List of #Issues referenced in the message.'
items:
type: object
properties:
number:
type: string
meta:
type: array
description: Metadata. This is currently not used for anything.
items: {}
v:
type: number
description: Version.
gv:
type: string
description: Stands for "Gravatar version" and is used for cache busting.
bindings:
http:
$ref: '#/components/messageBindings/streamingHeaders'
heartbeat:
schemaFormat: 'application/schema+yaml;version=draft-07'
summary: Its purpose is to keep the connection alive.
payload:
type: string
enum: ["\r\n"]
bindings:
http:
$ref: '#/components/messageBindings/streamingHeaders'
messageBindings:
streamingHeaders:
http:
headers:
'Transfer-Encoding': 'chunked'
Trailer: '\r\n'
asyncapi: '2.3.0'
info:
title: Order Service
version: 1.0.0
description: The service is in charge of processing orders
contact:
name: Daniel Kocot
email: daniel.kocot@codecentric.de
license:
name: Apache 2.0
url: https://www.apache.org/licenses/LICENSE-2.0.html
servers:
staging:
$ref: '#/components/servers/rabbitmqInStaging'
production:
$ref: '#/components/servers/rabbitmqInProd'
channels:
orderProcessed:
servers:
- staging
publish:
operationId: orderProcessedPub
description: Payload of processed order
message:
$ref: '#/components/messages/orderProcessed'
bindings:
$ref: '#/components/messageBindings/amqp/bindings'
subscribe:
operationId: orderProcessedSub
description: Payload of processed order
message:
$ref: '#/components/messages/orderProcessed'
bindings:
$ref: '#/components/messageBindings/amqp/bindings'
bindings:
amqp:
$ref: '#/components/channelBindings/amqp'
components:
schemas:
OrderPayload:
type: object
properties:
id:
type: integer
format: int64
description: ID of received order
customerReference:
type: string
description: Reference for the customer according the order
servers:
rabbitmqInStaging:
url: rabbitmq-staging.codecentric.de:{port}
description: RabbitMQ Broker in staging environment
protocol: amqp
protocolVersion: '0.9.1'
variables:
port:
default: '5672'
enum:
- '5672'
- '15672'
rabbitmqInProd:
url: rabbitmq.codecentric.de:{port}
description: RabbitMQ Broker in production environment
protocol: amqp
protocolVersion: '0.9.1'
variables:
port:
default: '5672'
enum:
- '5672'
- '15672'
messages:
orderProcessed:
name: orderProcessed
title: Order Processed
summary: Inform about a new processed order in the system
contentType: application/json
payload:
$ref: '#/components/schemas/OrderPayload'
channelBindings:
amqp:
is: routingKey
exchange:
name: orderExchange
type: direct
durable: true
vhost: /
bindingVersion: 0.2.0
messageBindings:
amqp:
bindings:
amqp:
timestamp: true
ack: false
bindingVersion: 0.2.0
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment