Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

feat: Add v3 examples #842

Merged
merged 5 commits into from
Nov 24, 2023
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
38 changes: 24 additions & 14 deletions apps/studio/src/examples/ibmmq.yml
Original file line number Diff line number Diff line change
@@ -1,32 +1,42 @@
asyncapi: 2.6.0
asyncapi: 3.0.0
info:
title: Record Label Service
version: 1.1.0
description: This service is in charge of processing music
license:
name: Apache License 2.0
url: https://www.apache.org/licenses/LICENSE-2.0
url: 'https://www.apache.org/licenses/LICENSE-2.0'
servers:
production:
url: 'ibmmq://localhost:1414/QM1/DEV.APP.SVRCONN'
host: 'localhost:1414'
pathname: /QM1/DEV.APP.SVRCONN
protocol: ibmmq-secure
description: Production Instance 1
bindings:
ibmmq:
cipherSpec: ANY_TLS12
channels:
song/released:
publish:
operationId: publish
message:
$ref: '#/components/messages/song'
subscribe:
operationId: subscribe
message:
$ref: '#/components/messages/song'
songReleased:
address: song/released
messages:
Song:
$ref: '#/components/messages/Song'
operations:
receiveSong:
action: receive
channel:
$ref: '#/channels/songReleased'
messages:
- $ref: '#/components/messages/Song'
sendSong:
action: send
channel:
$ref: '#/channels/songReleased'
messages:
- $ref: '#/components/messages/Song'
components:
messages:
song:
Song:
payload:
type: object
properties:
Expand All @@ -44,4 +54,4 @@ components:
description: Primary song genre
length:
type: integer
description: Track length in seconds
description: Track length in seconds
7 changes: 7 additions & 0 deletions apps/studio/src/examples/index.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,7 @@ import invalid from './tutorials/invalid.yml';
// real world examples
import slack from './real-world/slack-rtm.yml';
import gitterStreaming from './real-world/gitter-streaming.yml';
import kraken from './real-world/kraken-api-request-reply-filter.yml';

const templateTypes = {
protocol: 'protocol-example',
Expand Down Expand Up @@ -74,5 +75,11 @@ export default [
description: () => <>Gitter Streaming API from https://stream.gitter.im. Using HTTP protocol.</>,
template: gitterStreaming,
type: templateTypes.realExample
},
{
title: 'Kraken Websockets API',
description: () => <>This Kraken Websocket specification. Using Websocket with request / reply</>,
template: kraken,
type: templateTypes.realExample
}
];
272 changes: 143 additions & 129 deletions apps/studio/src/examples/real-world/gitter-streaming.yml
Original file line number Diff line number Diff line change
@@ -1,164 +1,178 @@
asyncapi: '2.6.0'
id: 'urn:com:gitter:streaming:api'
asyncapi: 3.0.0
id: 'tag:stream.gitter.im,2022:api'
info:
title: Gitter Streaming API
version: '1.0.0'

version: 1.0.0
servers:
production:
url: https://stream.gitter.im/v1
host: stream.gitter.im
pathname: /v1
protocol: https
protocolVersion: '1.1'
security:
- httpBearerToken: []

- $ref: '#/components/securitySchemes/httpBearerToken'
channels:
/rooms/{roomId}/{resource}:
rooms:
address: '/rooms/{roomId}/{resource}'
messages:
chatMessage:
$ref: '#/components/messages/chatMessage'
heartbeat:
$ref: '#/components/messages/heartbeat'
parameters:
roomId:
description: Id of the Gitter room.
schema:
type: string
examples:
- 53307860c3599d1de448e19d
examples:
- 53307860c3599d1de448e19d
resource:
enum:
- chatMessages
- events
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'

operations:
sendRoomInfo:
action: send
channel:
$ref: '#/channels/rooms'
bindings:
http:
method: POST
messages:
- $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.
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:
schemaFormat: application/schema+yaml;version=draft-07
schema:
type: object
properties:
id:
type: string
description: ID of the message.
text:
type: string
format: uri
mentions:
type: array
description: List of @Mentions in the message.
items:
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:
screenName:
id:
type: string
userId:
description: Gitter User ID.
username:
type: string
userIds:
type: array
items:
type: string
issues:
type: array
description: 'List of #Issues referenced in the message.'
items:
type: object
properties:
number:
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
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.
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'

headers:
type: object
properties:
Transfer-Encoding:
type: string
const: chunked
Trailer:
type: string
const: \r\n
heartbeat:
schemaFormat: 'application/schema+yaml;version=draft-07'
summary: Its purpose is to keep the connection alive.
payload:
type: string
enum: ["\r\n"]
schemaFormat: application/schema+yaml;version=draft-07
schema:
type: string
enum:
- "\r\n"
bindings:
http:
$ref: '#/components/messageBindings/streamingHeaders'

messageBindings:
streamingHeaders:
http:
headers:
'Transfer-Encoding': 'chunked'
Trailer: '\r\n'
headers:
type: object
properties:
Transfer-Encoding:
type: string
const: chunked
Trailer:
type: string
const: \r\n
Loading