This repository has been archived by the owner on Jan 14, 2024. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 0
/
openapi.yaml
407 lines (395 loc) · 11.5 KB
/
openapi.yaml
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
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
openapi: 3.0.0
info:
title: docs-drive.it API
description: Simple APIs for user authentication and management for the docs-drive.it personal area
contact:
name: API support
url: https://github.com/Giuliopime/docs-drive-backend/issues
license:
name: MIT
url: https://choosealicense.com/licenses/mit/
version: 1.0.0
servers:
- url: https://api.docs-drive.it/{version}
variables:
version:
default: v1
- url: http://localhost:12000/{version}
description: Just for testing purpouses.
variables:
version:
default: v1
security:
- cookieAuth: []
paths:
/login:
post:
summary: Used to login.
description: Receives login in credentials and sends back a session cookie.
security: []
requestBody:
required: true
description: JSON containing email and password of the user.
content:
application/json:
schema:
$ref: '#/components/schemas/UserLoginData'
responses:
"200":
description: OK
"400":
$ref: "#/components/responses/BadRequest"
"401":
$ref: "#/components/responses/Unauthorized"
"404":
$ref: "#/components/responses/NotFound"
/user:
get:
summary: Gets the logged in user.
description: Gets a single user matching the email and password provided via authentication.
responses:
"200":
description: OK
content:
application/json:
schema:
$ref: "#/components/schemas/User"
"401":
$ref: "#/components/responses/Unauthorized"
"404":
$ref: "#/components/responses/NotFound"
/changePassword:
post:
summary: Changes your password.
description: Allows the logged in user to change its password.
requestBody:
required: true
description: JSON containing old and new password of the user.
content:
application/json:
schema:
$ref: '#/components/schemas/NewPasswordInfo'
responses:
"200":
description: OK
"400":
$ref: "#/components/responses/BadRequest"
"401":
$ref: "#/components/responses/Unauthorized"
"404":
$ref: "#/components/responses/NotFound"
/logout:
get:
summary: Logs out the current logged in user.
description: Terminates the session of the user resulting in a logout.
responses:
"200":
description: OK
"401":
$ref: "#/components/responses/Unauthorized"
/files/{id}:
get:
summary: Gets a file.
description: Gets a specific file of the current logged in user.
parameters:
- $ref: "#/components/parameters/idParam"
responses:
"200":
description: OK
"401":
$ref: "#/components/responses/Unauthorized"
"404":
$ref: "#/components/responses/NotFound"
/admin/users:
get:
summary: Get all the users.
description: Retrieves the full list of users.
responses:
"200":
description: OK
content:
application/json:
schema:
type: array
items:
$ref: "#/components/schemas/User"
"401":
$ref: "#/components/responses/Unauthorized"
"403":
$ref: "#/components/responses/Forbidden"
/admin/user/{email}:
get:
summary: Get a single user.
description: Gets a single user matching the provided email parameter.
parameters:
- $ref: "#/components/parameters/emailParam"
responses:
"200":
description: OK
content:
application/json:
schema:
$ref: "#/components/schemas/User"
"401":
$ref: "#/components/responses/Unauthorized"
"403":
$ref: "#/components/responses/Forbidden"
"404":
$ref: "#/components/responses/NotFound"
post:
summary: Modify a single user.
description: Modify a user matching the provided email parameter.
parameters:
- $ref: "#/components/parameters/emailParam"
requestBody:
content:
application/json:
schema:
$ref: "#/components/schemas/User"
responses:
"200":
description: OK
"400":
$ref: "#/components/responses/BadRequest"
"401":
$ref: "#/components/responses/Unauthorized"
"403":
$ref: "#/components/responses/Forbidden"
"404":
$ref: "#/components/responses/NotFound"
put:
summary: Create a new user.
description: Creates a new user (needs to match the provided email parameter).
parameters:
- $ref: "#/components/parameters/emailParam"
requestBody:
content:
application/json:
schema:
$ref: "#/components/schemas/User"
responses:
"200":
description: OK
"400":
$ref: "#/components/responses/BadRequest"
"401":
$ref: "#/components/responses/Unauthorized"
"403":
$ref: "#/components/responses/Forbidden"
"405":
$ref: "#/components/responses/NotAllowed"
delete:
summary: Delete a user.
description: Deletes a user matching the provided email parameter.
parameters:
- $ref: "#/components/parameters/emailParam"
responses:
"200":
description: OK
"401":
$ref: "#/components/responses/Unauthorized"
"403":
$ref: "#/components/responses/Forbidden"
"404":
$ref: "#/components/responses/NotFound"
/admin/user/{email}/files/{id}:
get:
summary: Gets a single file.
description: Gets a single file of the user matching the provided email parameter.
parameters:
- $ref: "#/components/parameters/emailParam"
- $ref: "#/components/parameters/idParam"
responses:
"200":
description: OK
"401":
$ref: "#/components/responses/Unauthorized"
"403":
$ref: "#/components/responses/Forbidden"
"404":
$ref: "#/components/responses/NotFound"
post:
summary: Modify a file name.
description: Modify a file name of the user matching the provided email parameter.
parameters:
- $ref: "#/components/parameters/emailParam"
- $ref: "#/components/parameters/idParam"
requestBody:
content:
application/json:
schema:
$ref: "#/components/schemas/NewFileInfo"
responses:
"200":
description: OK
"400":
$ref: "#/components/responses/BadRequest"
"401":
$ref: "#/components/responses/Unauthorized"
"403":
$ref: "#/components/responses/Forbidden"
"404":
$ref: "#/components/responses/NotFound"
delete:
summary: Deletes a file.
description: Deletes a file of a user matching the provided email parameter.
parameters:
- $ref: "#/components/parameters/emailParam"
- $ref: "#/components/parameters/idParam"
responses:
"200":
description: OK
"401":
$ref: "#/components/responses/Unauthorized"
"403":
$ref: "#/components/responses/Forbidden"
"404":
$ref: "#/components/responses/NotFound"
/admin/user/{email}/files:
put:
summary: Create a new file.
description: Creates a new file for a user matching the provided email parameter.
parameters:
- $ref: "#/components/parameters/emailParam"
requestBody:
content:
multipart/form-data:
schema:
type: object
properties:
file:
type: string
format: binary
responses:
"200":
description: OK
"401":
$ref: "#/components/responses/Unauthorized"
"403":
$ref: "#/components/responses/Forbidden"
components:
securitySchemes:
cookieAuth:
type: apiKey
in: cookie
name: user_session_id
responses:
BadRequest:
description: Usually happens when a request body is needed and the body is missing some properties, check for example the User schema.
content:
application/json:
schema:
$ref: "#/components/schemas/Error"
Unauthorized:
description: Request wasn't authorized via basic auth
content:
application/json:
schema:
$ref: "#/components/schemas/Error"
Forbidden:
description: Missing permissions for a certain action, some actions like editing or deleting a user can only be made by a user with admin priviliges.
content:
application/json:
schema:
$ref: "#/components/schemas/Error"
NotFound:
description: The resource isn't present in the server.
content:
application/json:
schema:
$ref: "#/components/schemas/Error"
NotAllowed:
description: The method is not allowed, for example when trying to create a user and a user with the same email already exists.
content:
application/json:
schema:
$ref: "#/components/schemas/Error"
parameters:
emailParam:
description: The email of a user.
name: email
in: path
required: true
idParam:
description: id of an entity, like files for example.
name: id
in: path
required: true
schemas:
UserLoginData:
description: Email and password of a user.
type: object
properties:
email:
type: string
description: The email of the user
password:
type: string
description:
The password of the user
required:
- email
- password
User:
description: A single user entity.
type: object
properties:
email:
type: string
description: The email of the user
password:
type: string
description: The password of the user
admin:
type: boolean
description: Whether the user is an admin of the platform
name:
type: string
description: The legal name of the user
surname:
type: string
description: The legal surname of the user
id_code:
type: string
description: The legal tax ID code ("codice fiscale" in Italy) of the user
required:
- email
- password
- admin
- name
- surname
- id_code
NewPasswordInfo:
description: Old and new password for password change.
type: object
properties:
old_password:
type: string
description: Old password of the user.
new_password:
type: string
description: New password of the user.
required:
- old_password
- new_password
NewFileInfo:
description: New informations for an existing file.
type: object
properties:
new_name:
type: string
description: New name for the file.
required:
- new_name
Error:
type: object
properties:
code:
type: string
description: Response code.
message:
type: string
description: Info about the error
required:
- code
- message