Files
exercises-300-digital-dojo-…/DDApp/DDApplication/DigitalDojoApi.json
2026-04-01 22:13:50 +02:00

1253 lines
31 KiB
JSON

{
"openapi": "3.0.1",
"info": {
"title": "CIT.Gaming.Web.API",
"version": "1.0"
},
"paths": {
"/api/player/{playerToken}/hit/{dir}": {
"post": {
"tags": [
"Player"
],
"parameters": [
{
"name": "playerToken",
"in": "path",
"required": true,
"schema": {
"type": "string",
"format": "uuid"
}
},
{
"name": "dir",
"in": "path",
"required": true,
"schema": {
"type": "integer",
"format": "int32"
}
}
],
"responses": {
"400": {
"description": "Bad Request",
"content": {
"text/plain": {
"schema": {
"$ref": "#/components/schemas/ErrorResponse"
}
},
"application/json": {
"schema": {
"$ref": "#/components/schemas/ErrorResponse"
}
},
"text/json": {
"schema": {
"$ref": "#/components/schemas/ErrorResponse"
}
}
}
},
"200": {
"description": "Success",
"content": {
"text/plain": {
"schema": {
"$ref": "#/components/schemas/HitEntityAsyncResponse"
}
},
"application/json": {
"schema": {
"$ref": "#/components/schemas/HitEntityAsyncResponse"
}
},
"text/json": {
"schema": {
"$ref": "#/components/schemas/HitEntityAsyncResponse"
}
}
}
}
}
}
},
"/api/player/{playerToken}/move/{dir}": {
"post": {
"tags": [
"Player"
],
"parameters": [
{
"name": "playerToken",
"in": "path",
"required": true,
"schema": {
"type": "string",
"format": "uuid"
}
},
{
"name": "dir",
"in": "path",
"required": true,
"schema": {
"type": "integer",
"format": "int32"
}
}
],
"responses": {
"400": {
"description": "Bad Request",
"content": {
"text/plain": {
"schema": {
"$ref": "#/components/schemas/ErrorResponse"
}
},
"application/json": {
"schema": {
"$ref": "#/components/schemas/ErrorResponse"
}
},
"text/json": {
"schema": {
"$ref": "#/components/schemas/ErrorResponse"
}
}
}
},
"200": {
"description": "Success",
"content": {
"text/plain": {
"schema": {
"$ref": "#/components/schemas/MoveEntityAsyncResponse"
}
},
"application/json": {
"schema": {
"$ref": "#/components/schemas/MoveEntityAsyncResponse"
}
},
"text/json": {
"schema": {
"$ref": "#/components/schemas/MoveEntityAsyncResponse"
}
}
}
}
}
}
},
"/api/player/{playerToken}/peek/{dir}": {
"get": {
"tags": [
"Player"
],
"parameters": [
{
"name": "playerToken",
"in": "path",
"required": true,
"schema": {
"type": "string",
"format": "uuid"
}
},
{
"name": "dir",
"in": "path",
"required": true,
"schema": {
"type": "integer",
"format": "int32"
}
}
],
"responses": {
"400": {
"description": "Bad Request",
"content": {
"text/plain": {
"schema": {
"$ref": "#/components/schemas/ErrorResponse"
}
},
"application/json": {
"schema": {
"$ref": "#/components/schemas/ErrorResponse"
}
},
"text/json": {
"schema": {
"$ref": "#/components/schemas/ErrorResponse"
}
}
}
},
"200": {
"description": "Success",
"content": {
"text/plain": {
"schema": {
"$ref": "#/components/schemas/PeekEntitiesAsyncResponse"
}
},
"application/json": {
"schema": {
"$ref": "#/components/schemas/PeekEntitiesAsyncResponse"
}
},
"text/json": {
"schema": {
"$ref": "#/components/schemas/PeekEntitiesAsyncResponse"
}
}
}
}
}
}
},
"/api/player/{playerToken}/stats": {
"get": {
"tags": [
"Player"
],
"parameters": [
{
"name": "playerToken",
"in": "path",
"required": true,
"schema": {
"type": "string",
"format": "uuid"
}
}
],
"responses": {
"400": {
"description": "Bad Request",
"content": {
"text/plain": {
"schema": {
"$ref": "#/components/schemas/ErrorResponse"
}
},
"application/json": {
"schema": {
"$ref": "#/components/schemas/ErrorResponse"
}
},
"text/json": {
"schema": {
"$ref": "#/components/schemas/ErrorResponse"
}
}
}
},
"200": {
"description": "Success",
"content": {
"text/plain": {
"schema": {
"$ref": "#/components/schemas/PlayerStatisticsResponse"
}
},
"application/json": {
"schema": {
"$ref": "#/components/schemas/PlayerStatisticsResponse"
}
},
"text/json": {
"schema": {
"$ref": "#/components/schemas/PlayerStatisticsResponse"
}
}
}
}
}
}
},
"/api/player/{playerToken}/scan": {
"get": {
"tags": [
"Player"
],
"parameters": [
{
"name": "playerToken",
"in": "path",
"required": true,
"schema": {
"type": "string",
"format": "uuid"
}
}
],
"responses": {
"400": {
"description": "Bad Request",
"content": {
"text/plain": {
"schema": {
"$ref": "#/components/schemas/ErrorResponse"
}
},
"application/json": {
"schema": {
"$ref": "#/components/schemas/ErrorResponse"
}
},
"text/json": {
"schema": {
"$ref": "#/components/schemas/ErrorResponse"
}
}
}
},
"200": {
"description": "Success",
"content": {
"text/plain": {
"schema": {
"$ref": "#/components/schemas/ScanAsyncResponse"
}
},
"application/json": {
"schema": {
"$ref": "#/components/schemas/ScanAsyncResponse"
}
},
"text/json": {
"schema": {
"$ref": "#/components/schemas/ScanAsyncResponse"
}
}
}
}
}
}
},
"/api/player/{playerToken}/specialattack": {
"post": {
"tags": [
"Player"
],
"parameters": [
{
"name": "playerToken",
"in": "path",
"required": true,
"schema": {
"type": "string",
"format": "uuid"
}
}
],
"responses": {
"400": {
"description": "Bad Request",
"content": {
"text/plain": {
"schema": {
"$ref": "#/components/schemas/ErrorResponse"
}
},
"application/json": {
"schema": {
"$ref": "#/components/schemas/ErrorResponse"
}
},
"text/json": {
"schema": {
"$ref": "#/components/schemas/ErrorResponse"
}
}
}
},
"200": {
"description": "Success",
"content": {
"text/plain": {
"schema": {
"$ref": "#/components/schemas/SpecialAttackAsyncResult"
}
},
"application/json": {
"schema": {
"$ref": "#/components/schemas/SpecialAttackAsyncResult"
}
},
"text/json": {
"schema": {
"$ref": "#/components/schemas/SpecialAttackAsyncResult"
}
}
}
}
}
}
},
"/api/player/{playerToken}/radar": {
"get": {
"tags": [
"Player"
],
"parameters": [
{
"name": "playerToken",
"in": "path",
"required": true,
"schema": {
"type": "string",
"format": "uuid"
}
}
],
"responses": {
"400": {
"description": "Bad Request",
"content": {
"text/plain": {
"schema": {
"$ref": "#/components/schemas/ErrorResponse"
}
},
"application/json": {
"schema": {
"$ref": "#/components/schemas/ErrorResponse"
}
},
"text/json": {
"schema": {
"$ref": "#/components/schemas/ErrorResponse"
}
}
}
},
"200": {
"description": "Success",
"content": {
"text/plain": {
"schema": {
"$ref": "#/components/schemas/RadarAsyncResponse"
}
},
"application/json": {
"schema": {
"$ref": "#/components/schemas/RadarAsyncResponse"
}
},
"text/json": {
"schema": {
"$ref": "#/components/schemas/RadarAsyncResponse"
}
}
}
}
}
}
},
"/api/player/{playerToken}/dash/{direction}": {
"post": {
"tags": [
"Player"
],
"parameters": [
{
"name": "playerToken",
"in": "path",
"required": true,
"schema": {
"type": "string",
"format": "uuid"
}
},
{
"name": "direction",
"in": "path",
"required": true,
"schema": {
"type": "integer",
"format": "int32"
}
}
],
"responses": {
"400": {
"description": "Bad Request",
"content": {
"text/plain": {
"schema": {
"$ref": "#/components/schemas/ErrorResponse"
}
},
"application/json": {
"schema": {
"$ref": "#/components/schemas/ErrorResponse"
}
},
"text/json": {
"schema": {
"$ref": "#/components/schemas/ErrorResponse"
}
}
}
},
"200": {
"description": "Success",
"content": {
"text/plain": {
"schema": {
"$ref": "#/components/schemas/DashAsyncResponse"
}
},
"application/json": {
"schema": {
"$ref": "#/components/schemas/DashAsyncResponse"
}
},
"text/json": {
"schema": {
"$ref": "#/components/schemas/DashAsyncResponse"
}
}
}
}
}
}
},
"/api/player/{playerToken}/teleport/{x}/{y}": {
"get": {
"tags": [
"Player"
],
"parameters": [
{
"name": "playerToken",
"in": "path",
"required": true,
"schema": {
"type": "string",
"format": "uuid"
}
},
{
"name": "x",
"in": "path",
"required": true,
"schema": {
"type": "integer",
"format": "int32"
}
},
{
"name": "y",
"in": "path",
"required": true,
"schema": {
"type": "integer",
"format": "int32"
}
}
],
"responses": {
"400": {
"description": "Bad Request",
"content": {
"text/plain": {
"schema": {
"$ref": "#/components/schemas/ErrorResponse"
}
},
"application/json": {
"schema": {
"$ref": "#/components/schemas/ErrorResponse"
}
},
"text/json": {
"schema": {
"$ref": "#/components/schemas/ErrorResponse"
}
}
}
},
"200": {
"description": "Success",
"content": {
"text/plain": {
"schema": {
"$ref": "#/components/schemas/TeleportAsyncResponse"
}
},
"application/json": {
"schema": {
"$ref": "#/components/schemas/TeleportAsyncResponse"
}
},
"text/json": {
"schema": {
"$ref": "#/components/schemas/TeleportAsyncResponse"
}
}
}
}
}
}
},
"/api/player/{playerToken}/shoot/{direction}": {
"post": {
"tags": [
"Player"
],
"parameters": [
{
"name": "playerToken",
"in": "path",
"required": true,
"schema": {
"type": "string",
"format": "uuid"
}
},
{
"name": "direction",
"in": "path",
"required": true,
"schema": {
"type": "integer",
"format": "int32"
}
}
],
"responses": {
"400": {
"description": "Bad Request",
"content": {
"text/plain": {
"schema": {
"$ref": "#/components/schemas/ErrorResponse"
}
},
"application/json": {
"schema": {
"$ref": "#/components/schemas/ErrorResponse"
}
},
"text/json": {
"schema": {
"$ref": "#/components/schemas/ErrorResponse"
}
}
}
},
"200": {
"description": "Success",
"content": {
"text/plain": {
"schema": {
"$ref": "#/components/schemas/ShootAsyncResponse"
}
},
"application/json": {
"schema": {
"$ref": "#/components/schemas/ShootAsyncResponse"
}
},
"text/json": {
"schema": {
"$ref": "#/components/schemas/ShootAsyncResponse"
}
}
}
}
}
}
},
"/api/game/{playerToken}/status": {
"get": {
"tags": [
"Singleplayer"
],
"parameters": [
{
"name": "playerToken",
"in": "path",
"required": true,
"schema": {
"type": "string",
"format": "uuid"
}
}
],
"responses": {
"400": {
"description": "Bad Request",
"content": {
"text/plain": {
"schema": {
"$ref": "#/components/schemas/ErrorResponse"
}
},
"application/json": {
"schema": {
"$ref": "#/components/schemas/ErrorResponse"
}
},
"text/json": {
"schema": {
"$ref": "#/components/schemas/ErrorResponse"
}
}
}
},
"200": {
"description": "Success",
"content": {
"text/plain": {
"schema": {
"$ref": "#/components/schemas/GetStatusResponse"
}
},
"application/json": {
"schema": {
"$ref": "#/components/schemas/GetStatusResponse"
}
},
"text/json": {
"schema": {
"$ref": "#/components/schemas/GetStatusResponse"
}
}
}
}
}
}
},
"/api/game/{playerToken}/create": {
"post": {
"tags": [
"Singleplayer"
],
"parameters": [
{
"name": "playerToken",
"in": "path",
"required": true,
"schema": {
"type": "string",
"format": "uuid"
}
}
],
"responses": {
"400": {
"description": "Bad Request",
"content": {
"text/plain": {
"schema": {
"$ref": "#/components/schemas/ErrorResponse"
}
},
"application/json": {
"schema": {
"$ref": "#/components/schemas/ErrorResponse"
}
},
"text/json": {
"schema": {
"$ref": "#/components/schemas/ErrorResponse"
}
}
}
},
"200": {
"description": "Success",
"content": {
"text/plain": {
"schema": {
"$ref": "#/components/schemas/StartGameAsyncResponse"
}
},
"application/json": {
"schema": {
"$ref": "#/components/schemas/StartGameAsyncResponse"
}
},
"text/json": {
"schema": {
"$ref": "#/components/schemas/StartGameAsyncResponse"
}
}
}
}
}
}
},
"/api/game/{playerToken}/close": {
"post": {
"tags": [
"Singleplayer"
],
"parameters": [
{
"name": "playerToken",
"in": "path",
"required": true,
"schema": {
"type": "string",
"format": "uuid"
}
}
],
"responses": {
"400": {
"description": "Bad Request",
"content": {
"text/plain": {
"schema": {
"$ref": "#/components/schemas/ErrorResponse"
}
},
"application/json": {
"schema": {
"$ref": "#/components/schemas/ErrorResponse"
}
},
"text/json": {
"schema": {
"$ref": "#/components/schemas/ErrorResponse"
}
}
}
},
"200": {
"description": "Success",
"content": {
"text/plain": {
"schema": {
"$ref": "#/components/schemas/StopGameResponse"
}
},
"application/json": {
"schema": {
"$ref": "#/components/schemas/StopGameResponse"
}
},
"text/json": {
"schema": {
"$ref": "#/components/schemas/StopGameResponse"
}
}
}
}
}
}
},
"/api/game/{gameToken}/remainingtime": {
"get": {
"tags": [
"Singleplayer"
],
"parameters": [
{
"name": "gameToken",
"in": "path",
"required": true,
"schema": {
"type": "string",
"format": "uuid"
}
}
],
"responses": {
"400": {
"description": "Bad Request",
"content": {
"text/plain": {
"schema": {
"$ref": "#/components/schemas/ErrorResponse"
}
},
"application/json": {
"schema": {
"$ref": "#/components/schemas/ErrorResponse"
}
},
"text/json": {
"schema": {
"$ref": "#/components/schemas/ErrorResponse"
}
}
}
},
"200": {
"description": "Success",
"content": {
"text/plain": {
"schema": {
"$ref": "#/components/schemas/GetRemainingTimeResponse"
}
},
"application/json": {
"schema": {
"$ref": "#/components/schemas/GetRemainingTimeResponse"
}
},
"text/json": {
"schema": {
"$ref": "#/components/schemas/GetRemainingTimeResponse"
}
}
}
}
}
}
}
},
"components": {
"schemas": {
"DashAsyncResponse": {
"type": "object",
"properties": {
"Action": {
"type": "string",
"nullable": true
},
"Executed": {
"type": "boolean"
},
"BlocksDashed": {
"type": "integer",
"format": "int32"
},
"DamageTaken": {
"type": "integer",
"format": "int32"
}
},
"additionalProperties": false
},
"ErrorResponse": {
"type": "object",
"properties": {
"Description": {
"type": "string",
"nullable": true
},
"Error": {
"type": "boolean"
}
},
"additionalProperties": false
},
"GetRemainingTimeResponse": {
"type": "object",
"properties": {
"RemainingTime": {
"type": "number",
"format": "double"
}
},
"additionalProperties": false
},
"GetStatusResponse": {
"type": "object",
"properties": {
"Action": {
"type": "string",
"nullable": true
},
"Gameid": {
"type": "string",
"nullable": true
},
"Level": {
"type": "string",
"nullable": true
},
"Running": {
"type": "boolean"
}
},
"additionalProperties": false
},
"HitEntityAsyncResponse": {
"type": "object",
"properties": {
"Action": {
"type": "string",
"nullable": true
},
"Executed": {
"type": "boolean"
},
"Critical": {
"type": "integer",
"format": "int32"
},
"Hit": {
"type": "integer",
"format": "int32"
}
},
"additionalProperties": false
},
"MoveEntityAsyncResponse": {
"type": "object",
"properties": {
"Action": {
"type": "string",
"nullable": true
},
"Executed": {
"type": "boolean"
},
"Move": {
"type": "boolean",
"nullable": true
}
},
"additionalProperties": false
},
"PeekEntitiesAsyncResponse": {
"type": "object",
"properties": {
"Action": {
"type": "string",
"nullable": true
},
"Executed": {
"type": "boolean"
},
"PlayersInSight": {
"type": "integer",
"format": "int32"
},
"SightedPlayerDistance": {
"type": "integer",
"format": "int32",
"nullable": true
}
},
"additionalProperties": false
},
"PlayerStatisticsResponse": {
"type": "object",
"properties": {
"Action": {
"type": "string",
"nullable": true
},
"Executed": {
"type": "boolean"
},
"Health": {
"$ref": "#/components/schemas/PlayerStatisticsResponseHealth"
},
"Level": {
"$ref": "#/components/schemas/PlayerStatisticsResponseLevel"
},
"Stats": {
"$ref": "#/components/schemas/PlayerStatisticsResponseStats"
}
},
"additionalProperties": false
},
"PlayerStatisticsResponseHealth": {
"type": "object",
"properties": {
"Currenthealth": {
"type": "number",
"format": "double"
},
"Maxhealth": {
"type": "number",
"format": "double"
}
},
"additionalProperties": false
},
"PlayerStatisticsResponseLevel": {
"type": "object",
"properties": {
"Deathsleft": {
"type": "integer",
"format": "int32"
},
"Levelid": {
"type": "integer",
"format": "int32"
},
"Name": {
"type": "string",
"nullable": true
},
"Progress": {
"type": "number",
"format": "double"
},
"Remainingtime": {
"type": "number",
"format": "double"
}
},
"additionalProperties": false
},
"PlayerStatisticsResponseStats": {
"type": "object",
"properties": {
"Deaths": {
"type": "integer",
"format": "int32"
},
"Kills": {
"type": "integer",
"format": "int32"
}
},
"additionalProperties": false
},
"RadarAsyncResponse": {
"type": "object",
"properties": {
"Executed": {
"type": "boolean"
},
"Action": {
"type": "string",
"nullable": true
},
"RadarResults": {
"type": "object",
"additionalProperties": {
"type": "integer",
"format": "int32"
},
"nullable": true
}
},
"additionalProperties": false
},
"ScanAsyncResponse": {
"type": "object",
"properties": {
"Action": {
"type": "string",
"nullable": true
},
"DifferenceToNearestPlayer": {
"$ref": "#/components/schemas/ScanAsyncResponseDifference"
},
"Executed": {
"type": "boolean"
}
},
"additionalProperties": false
},
"ScanAsyncResponseDifference": {
"type": "object",
"properties": {
"X": {
"type": "integer",
"format": "int32",
"nullable": true
},
"Y": {
"type": "integer",
"format": "int32",
"nullable": true
}
},
"additionalProperties": false
},
"ShootAsyncResponse": {
"type": "object",
"properties": {
"Action": {
"type": "string",
"nullable": true
},
"Executed": {
"type": "boolean"
},
"HitSomeone": {
"type": "boolean"
}
},
"additionalProperties": false
},
"SpecialAttackAsyncResult": {
"type": "object",
"properties": {
"Action": {
"type": "string",
"nullable": true
},
"Executed": {
"type": "boolean"
},
"Hitcount": {
"type": "integer",
"format": "int32"
}
},
"additionalProperties": false
},
"StartGameAsyncResponse": {
"type": "object",
"properties": {
"Gameid": {
"type": "string",
"nullable": true
},
"Level": {
"type": "string",
"nullable": true
},
"Running": {
"type": "boolean"
}
},
"additionalProperties": false
},
"StopGameResponse": {
"type": "object",
"properties": {
"Gameid": {
"type": "string",
"nullable": true
},
"Level": {
"type": "string",
"nullable": true
},
"Running": {
"type": "boolean"
}
},
"additionalProperties": false
},
"TeleportAsyncResponse": {
"type": "object",
"properties": {
"Action": {
"type": "string",
"nullable": true
},
"Executed": {
"type": "boolean"
},
"LandedInWall": {
"type": "boolean"
}
},
"additionalProperties": false
}
}
}
}