Server/ws/ws.yml

127 lines
3.2 KiB
YAML
Raw Normal View History

asyncapi: 3.0.0
info:
title: Game Server
version: 0.0.1
description: |
This is the Websocket Specification for the Tower Defence Game. <br>
Because of the limitations of Async API, we expect that the actual json,
which is send as payload to always contain a field called `$id` with
the corresponding `messageId`. <br>
The `messageId` should be handled case sensitive.
defaultContentType: application/json
servers:
localhost:
host: localhost:8080
protocol: ws
pathname: /ws
security:
- $ref: "#/components/securitySchemes/JwtAuth"
channels:
connection:
title: Connection
description: |
The Base Channel used for:
- Authentication
- Receiving Tokens for other channels
- Reconnection
messages:
RequestConnectionToken:
description: |
A Message telling the Server, that
you want an Connection Token for a
Specific Channel
payload:
type: object
additionalProperties: false
properties:
$id:
type: string
format: messageId
channel:
type: string
enum:
- time
required:
- $id
- channel
ProvidedConnectionToken:
description: |
A Message telling the Server, that
you want an Connection Token for a
Specific Channel
payload:
type: object
additionalProperties: false
properties:
$id:
type: string
format: messageId
channel:
type: string
enum:
- time
token:
$ref: "#/components/schemas/JWT"
required:
- $id
- channel
- token
time:
title: Time
description: |
A Simple example channel for receiving
the current Unix time
messages:
CurrentUnixTime:
description: The Current time in Unix Time
payload:
type: object
additionalProperties: false
properties:
$id:
type: string
format: messageId
time:
type: integer
format: int64
required:
- $id
- time
operations:
requestConnectionToken:
title: RequestConnectionToken
action: send
channel:
$ref: "#/channels/connection"
messages:
- $ref: "#/channels/connection/messages/RequestConnectionToken"
reply:
channel:
$ref: "#/channels/connection"
messages:
- $ref: "#/channels/connection/messages/ProvidedConnectionToken"
updateTime:
title: Updates of the current Unix Time
action: receive
channel:
$ref: "#/channels/time"
messages:
- $ref: "#/channels/time/messages/CurrentUnixTime"
components:
securitySchemes:
JwtAuth:
name: Authorization
description: |
A JWT Token has to be provided in the Handshake Header. <br>
This Field is expected to be called `Authorization`. <br>
It is expected to not have a prefix like `bearer`.
type: httpApiKey
in: header
schemas:
JWT:
type: string
format: jwt