1+ {
2+ "openapi" : " 3.0.1" ,
3+ "info" : {
4+ "title" : " Reservations API" ,
5+ "description" : " Simple API for implementing basic reservation system." ,
6+ "version" : " v1.0.0"
7+ },
8+ "servers" : [
9+ {
10+ "url" : " http://localhost:12345" ,
11+ "description" : " Generated server url"
12+ }
13+ ],
14+ "tags" : [
15+ {
16+ "name" : " Reservations"
17+ },
18+ {
19+ "name" : " Users"
20+ }
21+ ],
22+ "paths" : {
23+ "/api/reservation" : {
24+ "get" : {
25+ "tags" : [
26+ " Reservations"
27+ ],
28+ "summary" : " Get all reservations" ,
29+ "description" : " Get all reservations available." ,
30+ "operationId" : " getAllReservations" ,
31+ "responses" : {
32+ "200" : {
33+ "description" : " OK" ,
34+ "content" : {
35+ "application/json" : {
36+ "schema" : {
37+ "type" : " array" ,
38+ "items" : {
39+ "$ref" : " #/components/schemas/ReservationResponse"
40+ }
41+ }
42+ }
43+ }
44+ }
45+ },
46+ "security" : [
47+ {
48+ "bearer-key" : []
49+ }
50+ ]
51+ },
52+ "put" : {
53+ "tags" : [
54+ " Reservations"
55+ ],
56+ "summary" : " Update reservation" ,
57+ "description" : " Update reservation when valid information provided." ,
58+ "operationId" : " updateReservation" ,
59+ "requestBody" : {
60+ "content" : {
61+ "application/json" : {
62+ "schema" : {
63+ "$ref" : " #/components/schemas/UpdateReservationRequest"
64+ }
65+ }
66+ },
67+ "required" : true
68+ },
69+ "responses" : {
70+ "200" : {
71+ "description" : " OK" ,
72+ "content" : {
73+ "application/json" : {
74+ "schema" : {
75+ "$ref" : " #/components/schemas/ReservationResponse"
76+ }
77+ }
78+ }
79+ }
80+ },
81+ "security" : [
82+ {
83+ "bearer-key" : []
84+ }
85+ ]
86+ },
87+ "post" : {
88+ "tags" : [
89+ " Reservations"
90+ ],
91+ "summary" : " Create new reservation" ,
92+ "description" : " Create new reservation when valid information provided." ,
93+ "operationId" : " createReservation" ,
94+ "requestBody" : {
95+ "content" : {
96+ "application/json" : {
97+ "schema" : {
98+ "$ref" : " #/components/schemas/CreateReservationRequest"
99+ }
100+ }
101+ },
102+ "required" : true
103+ },
104+ "responses" : {
105+ "201" : {
106+ "description" : " Created" ,
107+ "content" : {
108+ "application/json" : {
109+ "schema" : {
110+ "$ref" : " #/components/schemas/ReservationResponse"
111+ }
112+ }
113+ }
114+ }
115+ },
116+ "security" : [
117+ {
118+ "bearer-key" : []
119+ }
120+ ]
121+ }
122+ },
123+ "/api/user/register" : {
124+ "post" : {
125+ "tags" : [
126+ " Users"
127+ ],
128+ "summary" : " Perform user's registration to save a user and retrieve access token." ,
129+ "description" : " Perform user's registration to save a user and retrieve access token." ,
130+ "operationId" : " register" ,
131+ "requestBody" : {
132+ "content" : {
133+ "application/json" : {
134+ "schema" : {
135+ "$ref" : " #/components/schemas/RegisterRequest"
136+ }
137+ }
138+ },
139+ "required" : true
140+ },
141+ "responses" : {
142+ "201" : {
143+ "description" : " Created" ,
144+ "content" : {
145+ "*/*" : {
146+ "schema" : {
147+ "$ref" : " #/components/schemas/AuthResponse"
148+ }
149+ }
150+ }
151+ }
152+ }
153+ }
154+ },
155+ "/api/user/login" : {
156+ "post" : {
157+ "tags" : [
158+ " Users"
159+ ],
160+ "summary" : " Perform user's login to retrieve access token." ,
161+ "description" : " Perform user's login to retrieve access token." ,
162+ "operationId" : " login" ,
163+ "requestBody" : {
164+ "content" : {
165+ "application/json" : {
166+ "schema" : {
167+ "$ref" : " #/components/schemas/LoginRequest"
168+ }
169+ }
170+ },
171+ "required" : true
172+ },
173+ "responses" : {
174+ "200" : {
175+ "description" : " OK" ,
176+ "content" : {
177+ "*/*" : {
178+ "schema" : {
179+ "$ref" : " #/components/schemas/AuthResponse"
180+ }
181+ }
182+ }
183+ }
184+ }
185+ }
186+ },
187+ "/api/reservation/{username}" : {
188+ "get" : {
189+ "tags" : [
190+ " Reservations"
191+ ],
192+ "summary" : " Get reservations for particular user" ,
193+ "description" : " Get reservations for particular user when correct username provided." ,
194+ "operationId" : " getAllReservationsForUser" ,
195+ "parameters" : [
196+ {
197+ "name" : " username" ,
198+ "in" : " path" ,
199+ "required" : true ,
200+ "schema" : {
201+ "type" : " string"
202+ }
203+ }
204+ ],
205+ "responses" : {
206+ "200" : {
207+ "description" : " OK" ,
208+ "content" : {
209+ "application/json" : {
210+ "schema" : {
211+ "type" : " array" ,
212+ "items" : {
213+ "$ref" : " #/components/schemas/ReservationResponse"
214+ }
215+ }
216+ }
217+ }
218+ }
219+ },
220+ "security" : [
221+ {
222+ "bearer-key" : []
223+ }
224+ ]
225+ }
226+ },
227+ "/api/reservation/{reservationUuid}" : {
228+ "delete" : {
229+ "tags" : [
230+ " Reservations"
231+ ],
232+ "summary" : " Delete reservation" ,
233+ "description" : " Delete reservation when valid UUID provided." ,
234+ "operationId" : " deleteReservation" ,
235+ "parameters" : [
236+ {
237+ "name" : " reservationUuid" ,
238+ "in" : " path" ,
239+ "required" : true ,
240+ "schema" : {
241+ "type" : " string"
242+ }
243+ }
244+ ],
245+ "responses" : {
246+ "200" : {
247+ "description" : " OK"
248+ }
249+ },
250+ "security" : [
251+ {
252+ "bearer-key" : []
253+ }
254+ ]
255+ }
256+ }
257+ },
258+ "components" : {
259+ "schemas" : {
260+ "UpdateReservationRequest" : {
261+ "required" : [
262+ " reservationFor" ,
263+ " reservationFrom" ,
264+ " reservationTo" ,
265+ " uuid"
266+ ],
267+ "type" : " object" ,
268+ "properties" : {
269+ "uuid" : {
270+ "type" : " string"
271+ },
272+ "reservationFor" : {
273+ "type" : " string"
274+ },
275+ "reservationFrom" : {
276+ "type" : " string" ,
277+ "format" : " date-time"
278+ },
279+ "reservationTo" : {
280+ "type" : " string" ,
281+ "format" : " date-time"
282+ }
283+ }
284+ },
285+ "ReservationResponse" : {
286+ "type" : " object" ,
287+ "properties" : {
288+ "uuid" : {
289+ "type" : " string"
290+ },
291+ "reservationFor" : {
292+ "type" : " string"
293+ },
294+ "reservationFrom" : {
295+ "type" : " string" ,
296+ "format" : " date-time"
297+ },
298+ "reservationTo" : {
299+ "type" : " string" ,
300+ "format" : " date-time"
301+ }
302+ }
303+ },
304+ "RegisterRequest" : {
305+ "required" : [
306+ " email" ,
307+ " password" ,
308+ " username"
309+ ],
310+ "type" : " object" ,
311+ "properties" : {
312+ "username" : {
313+ "type" : " string"
314+ },
315+ "email" : {
316+ "type" : " string"
317+ },
318+ "password" : {
319+ "type" : " string"
320+ }
321+ }
322+ },
323+ "AuthResponse" : {
324+ "type" : " object" ,
325+ "properties" : {
326+ "accessToken" : {
327+ "type" : " string"
328+ }
329+ }
330+ },
331+ "LoginRequest" : {
332+ "required" : [
333+ " password" ,
334+ " username"
335+ ],
336+ "type" : " object" ,
337+ "properties" : {
338+ "username" : {
339+ "type" : " string"
340+ },
341+ "password" : {
342+ "type" : " string"
343+ }
344+ }
345+ },
346+ "CreateReservationRequest" : {
347+ "required" : [
348+ " createdAt" ,
349+ " reservationFor" ,
350+ " reservationFrom" ,
351+ " reservationTo"
352+ ],
353+ "type" : " object" ,
354+ "properties" : {
355+ "reservationFor" : {
356+ "type" : " string"
357+ },
358+ "reservationFrom" : {
359+ "type" : " string" ,
360+ "format" : " date-time"
361+ },
362+ "reservationTo" : {
363+ "type" : " string" ,
364+ "format" : " date-time"
365+ },
366+ "createdAt" : {
367+ "type" : " string" ,
368+ "format" : " date-time"
369+ }
370+ }
371+ }
372+ },
373+ "securitySchemes" : {
374+ "bearer-key" : {
375+ "type" : " http" ,
376+ "scheme" : " bearer" ,
377+ "bearerFormat" : " JWT"
378+ }
379+ }
380+ }
381+ }
0 commit comments