-
Notifications
You must be signed in to change notification settings - Fork 0
/
swagger.yml
303 lines (302 loc) · 7.65 KB
/
swagger.yml
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
swagger: '2.0'
info:
description: This flie describes endpoints(API) of Apollo server.
version: 0.0.1
title: Apollo
termsOfService: placeholder
contact:
email: [email protected]
license:
name: placeholder
url: 'http://placeholder'
host: placeholder.com
schemes:
- http
paths:
/registration:
post:
tags:
- registration
summary: Endpoint for registration
parameters:
- name: registrationForm
description: Registration form.
in: body
required: true
schema:
$ref: '#/components/schemas/UserData'
consumes:
- application/json
produces:
- application/json
responses:
'200':
description: If sucssesfully register user.
schema:
$ref: '#/components/schemas/RegistrationResponse'
'400':
description: If registration fails.
schema:
$ref: '#/components/schemas/ExceptionMessage'
/signin:
post:
tags:
- signin
summary: Endpoint for login
parameters:
- name: signinForm
description: Signin Form
in: body
required: true
schema:
$ref: '#/components/schemas/SigninForm'
consumes:
- application/json
produces:
- application/json
responses:
'200':
description: If sucssesfully login user.
schema:
$ref: '#/components/schemas/SigninResponse'
'400':
description: If invalid credentials was given
schema:
$ref: '#/components/schemas/ExceptionMessage'
/signin/logout:
get:
tags:
- signin
summary: Endpoint for logout
descrition: Logout and flush session for curent user.
responses:
'200':
description: If sucssesfully logout user.
/signin/deezer/step1:
get:
tags:
- signin
summary: Signin with deezer account
description: The first step of signin
consumes:
- application/json
produces:
- application/json
responses:
'303':
description: Redirect to deezer login form
'400':
description: If deezer not responded
/signin/deezer/step2:
get:
tags:
- signin
summary: This is endpoint for deezer
description: Deezer will call this enpoint with one time use code(for getting token)
consumes:
- application/json
produces:
- application/json
parameters:
- name: code
description: One time use code to get token.
in: query
required: false
type: string
- name: error
description: Error from deezer.
in: query
required: false
type: string
- name: redirect_uri
description: Redirect uri from deezer
in: query
required: true
type: string
responses:
'301':
description: redirect to /signin/deezer/step3
'403':
description: If user decide to not give us required permissions for deezer data
/signin/deezer/step3:
get:
tags:
- signin
summary: This endpoint is geting user information from deezer api using token
description: >-
After get this information we register or/and signin user in our
application
consumes:
- application/json
produces:
- application/json
responses:
'200':
description: If sucsessfully signin user
schema:
$ref: '#/components/schemas/UserData'
'400':
description: If cant register or signin user.
/chart:
get:
tags:
- music
summary: This endpoint for getting most popular playlist and tracks
description: Return list of playlists andlist of tracks
consumes:
- application/json
produces:
- application/json
responses:
'200':
description: sucsess
schema:
$ref: '#/components/schemas/Chart'
'400':
description: Top information.
'403':
description: If un authorized user tries to access this endpoint.
'/playlist/{id}':
get:
tags:
- music
summary: This endpoint for getting playlist by id
description: 'Return playlist with {id}'
consumes:
- application/json
produces:
- application/json
parameters:
- name: id
in: query
description: Playist id.
type: string
responses:
'200':
description: sucsess
schema:
$ref: '#/components/schemas/Playlist'
'400':
description: Playlist information.
'403':
description: If un authorized user tries to access this endpoint.
'/track/{id}':
get:
tags:
- music
summary: This endpoint for getting tracks by id
description: 'Return track by {id}'
parameters:
- name: id
in: query
description: Track id.
type: string
consumes:
- application/json
produces:
- application/json
responses:
'200':
description: sucsess
schema:
$ref: '#/components/schemas/Track'
'400':
description: Track information.
'403':
description: If un authorized user tries to access this endpoint.
components:
schemas:
UserData:
type: object
properties:
username:
type: string
description: The user name. Min length 5, Max length 16.
regex: [a-zA-Z0-9_.]
password:
type: string
description: Password. Min length 8, max length 32.
regex: [a-zA-Z0-9_]
email:
type: string
description: email
RegistrationResponse:
type: object
properties:
username:
type: string
description: The user name.
email:
type: string
description: email
message:
type: string
description: Message from API.
ExceptionMessage:
type: object
properties:
message:
type: string
description: Message with reason why fail.
SigninForm:
type: object
properties:
username:
type: string
password:
type: string
SigninResponse:
type: object
properties:
username:
type: string
email:
type: string
message:
type: string
description: Signin message.
Chart:
type: object
properties:
tracks:
type: array
items:
$ref: '#/components/schemas/Track'
description: Top tracks.
playlists:
type: array
items:
$ref: '#/components/schemas/Playlist'
description: Top playlists.
Playlist:
type: object
properties:
id:
type: integer
format: int64
title:
type: string
pictureMedium:
type: string
desciption: url of picture
tracks:
type: array
items:
$ref: '#/components/schemas/Track'
description: tracks of playlist.
Track:
type: object
properties:
id:
type: integer
format: int64
title:
type: string
preview:
type: string
desciption: url of picture
link:
type: string
duration:
type: integer
format: int32