· 6 years ago · Dec 13, 2019, 10:58 PM
1swagger: '2.0'
2info:
3 description: |
4 This is where you can find all the User Stories we created
5 [Google Sheet](https://docs.google.com/spreadsheets/d/1qIuBUrLQgBTlntmr3HLEKPQhXrZkuE8ijw9zai3r7zg/edit?usp=sharing)
6 If you want to log as a guard use this API key: aaaR2lhbmx1aWdpIGlsIGJlbGxv
7 If you want to log as a teacher use :
8 bbbdGVra2sgdGhlIG1la2sK
9 If u want to log as a prisoner use:
10 cccYWxiZXJ0byBpbCBub24gY2VydG8
11 version: 1.0.0
12 title: Prisoners at School
13 termsOfService: https://www.unitn.it/en/ateneo/51110/legal-information
14 contact:
15 name: Issues page
16 url: https://github.com/MattiaCarolo/SE2_Project/issues
17 email: mattia.carolo@studenti.unitn.it
18 license:
19 name: Node JS
20 url: https://github.com/nodejs/node/blob/master/LICENSE
21
22tags:
23- name: Guard
24 description: All managing tools a guard needs
25- name: Teacher
26 description: Tools to manage courses
27- name: Prisoner
28 description: Tools to let prisoners attend courses
29# schemes:
30# - https
31paths:
32 /guard/course:
33 post:
34 tags:
35 - Guard
36 summary: add new course
37 operationId: addEmptyCourse
38 produces:
39 - application/json
40 parameters:
41 - in: body
42 name: body
43 description: Empty course object (apart for name) to add to db
44 required: true
45 schema:
46 type: object
47 properties:
48 name:
49 type: string
50 example:
51 name: Balalaika
52 responses:
53 200:
54 description: Successfully added a course
55 400:
56 description: You should give a name to the course // CODE.ERR name field empty
57 security:
58 - ApiKeyAuth: []
59 patch:
60 tags:
61 - Guard
62 summary: Approve or reject a course
63 operationId: Approval
64 produces:
65 - application/json
66 parameters:
67 - in: query
68 name: name
69 description: The name of the course
70 type: string
71 required: true
72 - in: query
73 name: result
74 description: The name of the course
75 required: true
76 type: string
77 enum:
78 - true
79 - false
80 - in: query
81 name: motives
82 description: The motives leading to the rejection of the course (if it's rejected)
83 type: string
84 required: false
85 responses:
86 200:
87 description: <Course name> modified
88 400:
89 description: You should tell the teacher why the course is rejected // CODE.ERR motives field empty
90 404:
91 description: not found
92 security:
93 - ApiKeyAuth: []
94 get:
95 tags:
96 - Guard
97 summary: Finds all courses taught in jail
98 operationId: AllCourseGuard
99 produces:
100 - application/json
101# parameters:
102# - name: status
103# in: query
104# description: Status values that need to be considered for filter
105# required: true
106# type: array
107# items:
108# type: string
109# enum:
110# - pending_approval
111# - approved
112# - rejected
113# - all
114# default: all
115# collectionFormat: multi
116 responses:
117 200:
118 description: successful operation
119 schema:
120 type: array
121 items:
122 $ref: '#/definitions/Course'
123 security:
124 - ApiKeyAuth: []
125 delete:
126 tags:
127 - Guard
128 summary: Deletes a course
129 operationId: deleteCourseFinal
130 produces:
131 - application/json
132 parameters:
133 - name: name
134 in: query
135 description: name of the course to return
136 required: true
137 type: string
138 responses:
139 200:
140 description: course successfully deleted from DB
141 404:
142 description: course not found or already deleted (maybe update course list)
143 security:
144 - ApiKeyAuth: []
145
146 /guard/course/{name}:
147 get:
148 tags:
149 - Guard
150 summary: Find course by name
151 description: Returns a single pet
152 operationId: FindCourseGuard
153 produces:
154 - application/json
155 parameters:
156 - name: name
157 in: path
158 description: name of course to return
159 required: true
160 type: string
161 responses:
162 200:
163 description: successful operation
164 schema:
165 type: array
166 items:
167 $ref: '#/definitions/Course'
168 404:
169 description: Course not found // CODE.ERR the desired course < course name > was not on our list of courses
170 security:
171 - ApiKeyAuth: []
172
173 /teacher/course/{name}:
174 get:
175 tags:
176 - Teacher
177 summary: Find course by name
178 description: Returns the searched course
179 operationId: FindCourseTeacher
180 produces:
181 - application/json
182 parameters:
183 - name: name
184 in: path
185 description: name of course to return
186 required: true
187 type: string
188 responses:
189 200:
190 description: successful operation
191 schema:
192 type: array
193 items:
194 $ref: '#/definitions/Course'
195
196 security:
197 - ApiKeyAuth: []
198
199 /teacher/course:
200 post:
201 tags:
202 - Teacher
203 summary: add new course with name, description and teacher
204 operationId: addCourseByTeacher
205 produces:
206 - application/json
207 parameters:
208 - in: body
209 name: body
210 description: Course with name, description and teacher
211 required: true
212 schema:
213 type: object
214 properties:
215 name:
216 type: string
217 desc:
218 type: string
219 teac:
220 type: string
221 example:
222 name: Name
223 desc: Description
224 teac: Teacher
225 responses:
226 200:
227 description: Successfully added a course
228 400:
229 description: Course name Already on the list of courses
230 security:
231 - ApiKeyAuth: []
232
233 delete:
234 tags:
235 - Teacher
236 summary: Deletes a course
237 operationId: deleteCourseByTeacher
238 produces:
239 - application/json
240 parameters:
241 - name: name
242 in: query
243 description: name of the course to delete
244 required: true
245 type: string
246 responses:
247 200:
248 description: course successfully deleted from DB
249 404:
250 description: course not found or already deleted (maybe update course list)
251 security:
252 - ApiKeyAuth: []
253
254 patch:
255 tags:
256 - Teacher
257 summary: Change description, teacher and calendar of a course
258 operationId: editCourse
259 produces:
260 - application/json
261 parameters:
262 - in: query
263 name: name
264 description: The name of the course you want to edit
265 type: string
266 required: true
267 - in: query
268 name: desc
269 description: The new description of the course
270 required: true
271 type: string
272 - in: query
273 name: teac
274 description: The new teacher of the course
275 type: string
276 required: true
277 - in: query
278 name: calendar
279 description: The new calendar of the course
280 type: string
281 required: true
282 responses:
283 200:
284 description: course edited succesfully
285 404:
286 description: not found
287 security:
288 - ApiKeyAuth: []
289
290 /course/calendar:
291 post:
292 tags:
293 - Teacher
294 summary: add new calendar with idcourse and events
295 operationId: crateAllCalendars
296 produces:
297 - application/json
298 parameters:
299 - in: body
300 name: body
301 description: all the calendars
302 required: true
303 schema:
304 type: object
305 properties:
306 id:
307 type: integer
308 calendar:
309 type: array
310
311 responses:
312 200:
313 description: Successfully added a calendar
314 schema:
315 type: object
316 properties:
317 id:
318 type: integer
319 calendar:
320 type: array
321 400:
322 description: course already present
323 security:
324 - ApiKeyAuth: []
325
326 /course/calendar/{id}:
327
328 delete:
329 tags:
330 - Teacher
331 summary: Deletes all calendars
332 operationId: deleteAllCalendar
333 produces:
334 - application/json
335 parameters:
336 - name: id
337 in: path
338 description: idcourse of the calendar to delete
339 required: true
340 type: string
341 responses:
342 200:
343 description: calendars successfully deleted from DB
344 404:
345 description: calendars not found or already deleted (maybe update course list)
346 security:
347 - ApiKeyAuth: []
348
349 /course/calendar/{id}/{name}:
350 delete:
351 tags:
352 - Teacher
353 summary: Deletes one calendar by name
354 operationId: deleteCalendarByName
355 produces:
356 - application/json
357 parameters:
358 - name: id
359 in: path
360 description: id of the calendar to delete
361 required: true
362 type: string
363 - name: name
364 in: path
365 description: name of the calendar to delete
366 required: true
367 type: string
368 responses:
369 200:
370 description: calendar successfully deleted from DB
371 404:
372 description: calendar not found or already deleted (maybe update course list)
373 security:
374 - ApiKeyAuth: []
375
376securityDefinitions:
377 ApiKeyAuth:
378 type: apiKey
379 in: header
380 name: key
381
382definitions:
383
384 Calendar:
385 type: object
386 properties:
387 id:
388 type: integer
389 format: int64
390 name:
391 type: string
392 xml:
393 name: calendar
394
395 Showcase:
396 type: object
397 properties:
398 id:
399 type: integer
400 format: int64
401 name:
402 type: string
403 xml:
404 name: calendar
405
406 Prisoner:
407 type: object
408 properties:
409 name:
410 type: string
411 SSN:
412 type: string
413 Danger_level:
414 type: string
415 description: Danger level of the prisoner
416 enum:
417 - low
418 - medium
419 - high
420 - quarantine
421 xml:
422 name: prisoners
423 Course:
424 type: object
425 required:
426 - name
427 properties:
428 name:
429 type: string
430 example: Scacchi
431 description:
432 type: string
433 example: Sono scacchi che ti aspettavi
434 pending_approval:
435 type: boolean
436 example: false
437 approved:
438 type: boolean
439 example: false
440 teacher:
441 type: string
442 example: Anatoly Karpov
443 students:
444 type: array
445 items:
446 $ref: '#/definitions/Prisoner'
447 reject_motives:
448 type: string
449 example: Not enough students
450 calendar:
451 $ref: '#/definitions/Calendar'
452 showcase:
453 $ref: '#/definitions/Showcase'
454 xml:
455 name: Course
456 ApiResponse:
457 type: object
458 properties:
459 description:
460 type: string
461 example: You should tell the teacher why the course is rejected // CODE.ERR motives field empty
462 code:
463 type: integer
464 format: int32
465 example: 400
466host: prisoners-at-school.herokuapp.com
467basePath: /api
468schemes:
469 - https