blob: 3409cea0475fdc317497eb5a1b139f541a612fb8 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
|
using TypeSpec.Http;
using TypeSpec.OpenAPI;
namespace AlbatrossApi;
// ---------- Auth ----------
@route("/login")
@post
@operationId("postLogin")
op postLogin(@body body: {
username: string;
password: string;
}): {
@body body: {
user: User;
};
} | UnauthorizedError;
@route("/logout")
@post
@operationId("postLogout")
op postLogout(): {
@statusCode statusCode: 200;
} | UnauthorizedError;
@route("/me")
@get
@operationId("getMe")
op getMe(): {
@body body: {
user: User;
};
} | UnauthorizedError;
// ---------- Games ----------
@route("/games")
@get
@operationId("getGames")
op getGames(): {
@body body: {
games: Game[];
};
} | UnauthorizedError | ForbiddenError;
@route("/games/{game_id}")
@get
@operationId("getGame")
op getGame(@path game_id: integer): {
@body body: {
game: Game;
};
} | UnauthorizedError | ForbiddenError | NotFoundError;
// ---------- Play ----------
@route("/games/{game_id}/play/latest_state")
@get
@operationId("getGamePlayLatestState")
op getGamePlayLatestState(@path game_id: integer): {
@body body: {
state: LatestGameState;
};
} | UnauthorizedError | ForbiddenError | NotFoundError;
@route("/games/{game_id}/play/code")
@post
@operationId("postGamePlayCode")
op postGamePlayCode(
@path game_id: integer,
@body body: {
code: string;
},
): {
@statusCode statusCode: 200;
} | UnauthorizedError | ForbiddenError | NotFoundError;
@route("/games/{game_id}/play/submit")
@post
@operationId("postGamePlaySubmit")
op postGamePlaySubmit(
@path game_id: integer,
@body body: {
code: string;
},
): {
@statusCode statusCode: 200;
} | UnauthorizedError | ForbiddenError | NotFoundError;
// ---------- Watch ----------
@route("/games/{game_id}/watch/ranking")
@get
@operationId("getGameWatchRanking")
op getGameWatchRanking(@path game_id: integer): {
@body body: {
ranking: RankingEntry[];
};
} | UnauthorizedError | ForbiddenError | NotFoundError;
@route("/games/{game_id}/watch/latest_states")
@get
@operationId("getGameWatchLatestStates")
op getGameWatchLatestStates(@path game_id: integer): {
@body body: {
states: Record<LatestGameState>;
};
} | UnauthorizedError | ForbiddenError | NotFoundError;
// ---------- Tournament ----------
@route("/tournament")
@get
@operationId("getTournament")
op getTournament(
@query game1: integer,
@query game2: integer,
@query game3: integer,
@query game4: integer,
@query game5: integer,
): {
@body body: {
tournament: Tournament;
};
} | UnauthorizedError | ForbiddenError | NotFoundError;
|