Server/ws/ws.yml
Snoweuph b1a308ce89
All checks were successful
Quality Check / Validate OAS (push) Successful in 40s
Quality Check / Validate OAS (pull_request) Successful in 38s
Quality Check / Testing (push) Successful in 1m17s
Quality Check / Linting (push) Successful in 1m18s
Quality Check / Static Analysis (push) Successful in 1m27s
Quality Check / Linting (pull_request) Successful in 1m11s
Quality Check / Static Analysis (pull_request) Successful in 1m12s
Quality Check / Testing (pull_request) Successful in 48s
TD-18: Implement Queue System
2025-02-28 08:31:49 +01:00

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