Some checks failed
Quality Check / Validate OAS (push) Successful in 32s
Quality Check / Testing (push) Successful in 1m2s
Quality Check / Static Analysis (push) Successful in 1m6s
Quality Check / Validate OAS (pull_request) Successful in 32s
Quality Check / Linting (pull_request) Successful in 1m0s
Quality Check / Static Analysis (pull_request) Successful in 1m3s
Quality Check / Linting (push) Has been cancelled
Quality Check / Testing (pull_request) Successful in 4m8s
258 lines
6.5 KiB
YAML
258 lines
6.5 KiB
YAML
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:
|
|
$ref: "#/components/schemas/Channel"
|
|
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:
|
|
$ref: "#/components/schemas/Channel"
|
|
token:
|
|
$ref: "#/components/schemas/JWT"
|
|
required:
|
|
- $id
|
|
- channel
|
|
- token
|
|
|
|
matchmaking:
|
|
title: Matchmaking
|
|
description: |
|
|
A Channel used to search for a match and
|
|
to receive one
|
|
messages:
|
|
MatchSetSearchState:
|
|
payload:
|
|
type: object
|
|
additionalProperties: false
|
|
properties:
|
|
$id:
|
|
type: string
|
|
format: messageId
|
|
searching:
|
|
type: boolean
|
|
required:
|
|
- $id
|
|
- searching
|
|
MatchFound:
|
|
payload:
|
|
type: object
|
|
additionalProperties: false
|
|
properties:
|
|
$id:
|
|
type: string
|
|
format: messageId
|
|
matchId:
|
|
type: string
|
|
created:
|
|
description: "Unix Timestamp describing when this Match was found"
|
|
type: integer
|
|
format: int64
|
|
ttl:
|
|
description: "Time in Milliseconds, how long this Match is open for accepting"
|
|
type: integer
|
|
format: int64
|
|
required:
|
|
- $id
|
|
- matchId
|
|
- created
|
|
- ttl
|
|
MatchAccepted:
|
|
payload:
|
|
type: object
|
|
additionalProperties: false
|
|
properties:
|
|
$id:
|
|
type: string
|
|
format: messageId
|
|
matchId:
|
|
type: string
|
|
accepted:
|
|
type: boolean
|
|
required:
|
|
- $id
|
|
- matchId
|
|
- accepted
|
|
MatchAborted:
|
|
payload:
|
|
type: object
|
|
additionalProperties: false
|
|
properties:
|
|
$id:
|
|
type: string
|
|
format: messageId
|
|
matchId:
|
|
type: string
|
|
required:
|
|
- $id
|
|
- matchId
|
|
MatchEstablished:
|
|
payload:
|
|
type: object
|
|
additionalProperties: false
|
|
properties:
|
|
$id:
|
|
type: string
|
|
format: messageId
|
|
matchId:
|
|
type: string
|
|
opponentName:
|
|
type: string
|
|
required:
|
|
- $id
|
|
- matchId
|
|
- opponentName
|
|
|
|
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"
|
|
searchMatch:
|
|
title: SearchMatch
|
|
action: send
|
|
channel:
|
|
$ref: "#/channels/matchmaking"
|
|
messages:
|
|
- $ref: "#/channels/matchmaking/messages/MatchSetSearchState"
|
|
setPlayerMatchSearching:
|
|
title: SetPlayerMatchSearching
|
|
action: receive
|
|
channel:
|
|
$ref: "#/channels/matchmaking"
|
|
messages:
|
|
- $ref: "#/channels/matchmaking/messages/MatchSetSearchState"
|
|
foundMatch:
|
|
title: FoundGame
|
|
action: receive
|
|
channel:
|
|
$ref: "#/channels/matchmaking"
|
|
messages:
|
|
- $ref: "#/channels/matchmaking/messages/MatchFound"
|
|
reply:
|
|
channel:
|
|
$ref: "#/channels/matchmaking"
|
|
messages:
|
|
- $ref: "#/channels/matchmaking/messages/MatchAccepted"
|
|
abortedMatch:
|
|
title: AbortedMatch
|
|
action: receive
|
|
channel:
|
|
$ref: "#/channels/matchmaking"
|
|
messages:
|
|
- $ref: "#/channels/matchmaking/messages/MatchAborted"
|
|
establishedMatch:
|
|
title: EstablishedMatch
|
|
action: receive
|
|
channel:
|
|
$ref: "#/channels/matchmaking"
|
|
messages:
|
|
- $ref: "#/channels/matchmaking/messages/MatchEstablished"
|
|
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
|
|
Channel:
|
|
type: string
|
|
enum:
|
|
- connection
|
|
- matchmaking
|
|
- time
|
|
|