Skip to content

Commit 33f7fcc

Browse files
committed
adding schema
1 parent 3e2930d commit 33f7fcc

1 file changed

Lines changed: 381 additions & 0 deletions

File tree

Lines changed: 381 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,381 @@
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

Comments
 (0)