220 lines
5.1 KiB
YAML
220 lines
5.1 KiB
YAML
openapi: 3.0.0
|
|
info:
|
|
title: PVV Ozai
|
|
description: PVV Ozai
|
|
version: 1.0.0
|
|
servers:
|
|
- url: https://ozai.pvv.ntnu.no
|
|
paths:
|
|
/game:
|
|
post:
|
|
summary: Create a game
|
|
description: Creates a game
|
|
operationId: createGame
|
|
parameters:
|
|
- name: playerNames
|
|
in: query
|
|
description: Unique list of players to join the game. (Length of 2-4)
|
|
required: true
|
|
schema:
|
|
$ref: '#/components/schemas/NewGameOptionsNew'
|
|
|
|
responses:
|
|
'200':
|
|
description: Successful operation
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: '#/components/schemas/GameResponse'
|
|
'400':
|
|
description: Invalid input
|
|
|
|
/game/{gameId}:
|
|
get:
|
|
summary: see the game
|
|
description: retunrs the game state.
|
|
operationId: getGameById
|
|
parameters:
|
|
- name: gameId
|
|
in: path
|
|
description: ID of game
|
|
required: true
|
|
schema:
|
|
type: integer
|
|
format: int64
|
|
responses:
|
|
'200':
|
|
description: successful operation
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: '#/components/schemas/GameState'
|
|
application/xml:
|
|
schema:
|
|
$ref: '#/components/schemas/GameState'
|
|
'400':
|
|
description: Invalid ID supplied
|
|
'404':
|
|
description: Game not found
|
|
put:
|
|
summary: Submit move
|
|
description: ''
|
|
operationId: submitMove
|
|
parameters:
|
|
- name: gameId
|
|
in: path
|
|
description: ID of game that needs to be updated
|
|
required: true
|
|
schema:
|
|
type: integer
|
|
format: int64
|
|
- name: playerName
|
|
in: header
|
|
description: name of player/bot
|
|
required: true
|
|
schema:
|
|
type: string
|
|
- name: move
|
|
in: query
|
|
description: Mov
|
|
schema:
|
|
$ref: '#/components/schemas/Move'
|
|
responses:
|
|
'400':
|
|
description: Invalid input
|
|
components:
|
|
schemas:
|
|
GameState:
|
|
type: object
|
|
properties:
|
|
playerNames:
|
|
type: array
|
|
items:
|
|
type: string
|
|
currentPlayerName:
|
|
type: string
|
|
currentPlayerId:
|
|
type: integer
|
|
format: int32
|
|
bag:
|
|
$ref: '#/components/schemas/TileSet'
|
|
lid:
|
|
$ref: '#/components/schemas/TileSet'
|
|
factories:
|
|
type: array
|
|
items:
|
|
$ref: '#/components/schemas/TileSet'
|
|
market:
|
|
$ref: '#/components/schemas/TileSetWithStart'
|
|
players:
|
|
type: array
|
|
items:
|
|
$ref: '#/components/schemas/Player'
|
|
TileSet:
|
|
type: object
|
|
properties:
|
|
blue:
|
|
type: integer
|
|
format: int32
|
|
yellow:
|
|
type: integer
|
|
format: int32
|
|
red:
|
|
type: integer
|
|
format: int32
|
|
black:
|
|
type: integer
|
|
format: int32
|
|
white:
|
|
type: integer
|
|
format: int32
|
|
TileSetWithStart:
|
|
type: object
|
|
properties:
|
|
start:
|
|
type: integer
|
|
format: int32
|
|
blue:
|
|
type: integer
|
|
format: int32
|
|
yellow:
|
|
type: integer
|
|
format: int32
|
|
red:
|
|
type: integer
|
|
format: int32
|
|
black:
|
|
type: integer
|
|
format: int32
|
|
white:
|
|
type: integer
|
|
format: int32
|
|
Player:
|
|
type: object
|
|
properties:
|
|
points:
|
|
type: integer
|
|
format: int32
|
|
patternLines:
|
|
type: array
|
|
items:
|
|
$ref: '#/components/schemas/PatternLine'
|
|
wall:
|
|
$ref: '#/components/schemas/Wall'
|
|
floor:
|
|
$ref: '#/components/schemas/TileSetWithStart'
|
|
PatternLine:
|
|
type: object
|
|
properties:
|
|
color:
|
|
$ref: '#/components/schemas/Color'
|
|
number:
|
|
type: integer
|
|
format: int32
|
|
Color:
|
|
enum: ["blue", "yellow", "red", "black", "white"]
|
|
Wall:
|
|
type: object
|
|
properties:
|
|
blue:
|
|
type: boolean
|
|
yellow:
|
|
type: boolean
|
|
red:
|
|
type: boolean
|
|
black:
|
|
type: boolean
|
|
white:
|
|
type: boolean
|
|
Move:
|
|
type: object
|
|
properties:
|
|
player:
|
|
description: internal playerid (is this player 1 or 2)
|
|
type: integer
|
|
format: int32
|
|
market:
|
|
type: boolean
|
|
factory:
|
|
type: integer
|
|
format: int32
|
|
color:
|
|
$ref: '#/components/schemas/Color'
|
|
patternLine:
|
|
type: integer
|
|
format: int32
|
|
PlayerName:
|
|
type: string
|
|
NewGameOptionsNew:
|
|
type: object
|
|
properties:
|
|
player_names:
|
|
type: array
|
|
items:
|
|
$ref: '#/components/schemas/PlayerName'
|
|
|
|
GameResponse:
|
|
type: object
|
|
properties:
|
|
gameId:
|
|
type: integer |