Board is represented as two dimensional (or nested, whatever you prefer to call it) array, e.g.: sit s
[
[null, null, null],
[null, null, null],
[null, null, null]
]
But of course, in size 15x15
.
Each board field may have one of three values:
null
if it is still freeo
- if owner of the game placed his/her token thereg
- if guest of the game placed his/her token there
The board fields uses x
and y
coordinates, but to be honest the orientation
of the board doesn't matter - rotation does not change game rules :)
And of course, both x
and y
are indexed from 0
to 14
.
IMPORTANT NOTE: please pay attention whether /
is present at the end of
the url being requested! It is generally not used after id
s.
Register new user.
POST:
{
"username": "user",
"password": "password"
}
Returns
{
"username": "user",
"won": 0,
"lost": 0,
"won_by_surrender": 0,
"draws": 0,
"surrendered": 0
}
Login existing user.
POST:
{
"username": "user",
"password": "password"
}
Returns
{
"username": "user",
"won": 0,
"lost": 0,
"won_by_surrender": 0,
"draws": 0,
"surrendered": 0
}
Logout logged-in user.
POST
{}
Returns
HTTP 200 OK
Get info about logged in user.
GET:
{
"username": "player_1",
"won": 1,
"lost": 0,
"won_by_surrender": 0,
"draws": 0,
"surrendered": 0
}
PATCH:
{
"username": "player_11"
}
Returns:
{
"username": "player_11",
"won": 1,
"lost": 0,
"won_by_surrender": 0,
"draws": 0,
"surrendered": 0
}
Retrieves info about given user.
GET:
{
"username": "player_1",
"won": 1,
"lost": 0,
"won_by_surrender": 0,
"draws": 0,
"surrendered": 0
}
List of user's active or waiting games.
GET:
[
{
"id": 3,
"players_count": 2,
"players": [
{
"id": 2,
"won": false,
"owner": true,
"first": false,
"user": 10,
"game": 3
},
{
"id": 3,
"won": false,
"owner": false,
"first": false,
"user": 9,
"game": 3
}
],
"started": true,
"finished": false,
"surrendered": false,
"draw": false
}
]
List of user's finished games.
GET:
[
{
"id": 3,
"players_count": 2,
"players": [
{
"id": 2,
"won": true,
"owner": true,
"first": false,
"user": 10,
"game": 3
},
{
"id": 3,
"won": false,
"owner": false,
"first": false,
"user": 9,
"game": 3
}
],
"started": true,
"finished": true,
"surrendered": false,
"draw": false
}
]
List of recent awaiting games.
GET:
[
{
"id": 2,
"players_count": 1,
"players": [
{
"id": 1,
"name": "23",
"won": false,
"owner": true,
"first": false,
"user": 6,
"game": 2
}
],
"started": false,
"finished": false,
"surrendered": false,
"draw": false
},
{
"id": 5,
"players_count": 1,
"players": [
{
"id": 5,
"name": "player_2",
"won": false,
"owner": true,
"first": false,
"user": 9,
"game": 5
}
],
"started": false,
"finished": false,
"surrendered": false,
"draw": false
}
]
Create new game.
POST:
{}
Returns:
{
"id": 4,
"players_count": 1,
"players": [
{
"id": 5,
"name": "player_2",
"won": false,
"owner": true,
"first": false,
"user": 9,
"game": 5
}
],
"board": [
[
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null
],
...
],
"started": false,
"finished": false,
"surrendered": false,
"draw": false
}
Retrieves detailed info about given game.
GET:
{
"id": 4,
"players_count": 1,
"players": [
{
"id": 5,
"name": "player_2",
"won": false,
"owner": true,
"first": false,
"user": 9,
"game": 5
}
],
"board": [
[
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null
],
...
],
"started": false,
"finished": false,
"surrendered": false,
"draw": false
}
Performs given action for chosen game:
join
- join free player spot in gamestart
- start game with two players joinedleave
- leave joined game, before it startedsurrender
- surrender active game
POST:
{}
Returns (note: surrender does not return game info):
{
"game": {
"id": 2,
"players_count": 2,
"players": [
{
"id": 1,
"name": "23",
"won": false,
"owner": true,
"first": false,
"user": 6,
"game": 2
},
{
"id": 6,
"name": "player_1",
"won": false,
"owner": false,
"first": false,
"user": 10,
"game": 2
}
],
"board": [
[
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null
],
...
],
"started": false,
"finished": false,
"surrendered": false,
"draw": false
},
"success": true
}
Retrieves sorted list of moves in given game.
GET:
[
{
"id": 5,
"player": 2,
"timestamp": "2017-10-05T07:08:11.655920Z",
"x": 1,
"y": 4
},
{
"id": 4,
"player": 3,
"timestamp": "2017-10-05T07:08:07.948708Z",
"x": 0,
"y": 1
},
{
"id": 3,
"player": 2,
"timestamp": "2017-10-05T07:07:57.911134Z",
"x": 1,
"y": 3
},
{
"id": 2,
"player": 3,
"timestamp": "2017-10-05T07:07:51.038740Z",
"x": 0,
"y": 0
},
{
"id": 1,
"player": 2,
"timestamp": "2017-10-05T07:07:31.975650Z",
"x": 1,
"y": 2
}
]
Makes next move in game:
POST:
{
"x": 4,
"y": 2
}
Returns:
{
"game": {
"id": 2,
"players_count": 2,
"players": [
{
"id": 1,
"name": "23",
"won": false,
"owner": true,
"first": false,
"user": 6,
"game": 2
},
{
"id": 6,
"name": "player_1",
"won": false,
"owner": false,
"first": true,
"user": 10,
"game": 2
}
],
"board": [
[
"g",
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null
],
...
],
"started": true,
"finished": false,
"surrendered": false,
"draw": false
},
"move": {
"id": 10,
"player": 6,
"timestamp": "2017-10-05T09:10:02.405071Z",
"x": 0,
"y": 0
}
}
Retrieves last move from given game.
GET:
{
"id": 10,
"player": 6,
"timestamp": "2017-10-05T09:10:02.405071Z",
"x": 0,
"y": 0
}