@cascateer/sterio 1.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.env +0 -0
- package/.github/workflows/publish.yml +11 -0
- package/.vscode/settings.json +4 -0
- package/build/routes.ts +413 -0
- package/build/swagger.json +775 -0
- package/openapitools.json +14 -0
- package/package.json +56 -0
- package/src/Spotify.service.ts +202 -0
- package/src/Sterio.service.ts +208 -0
- package/src/Youtube.service.ts +112 -0
- package/src/YoutubeMusic.service.ts +52 -0
- package/src/api/.openapi-generator/FILES +29 -0
- package/src/api/.openapi-generator/VERSION +1 -0
- package/src/api/.openapi-generator-ignore +23 -0
- package/src/api/apis/DefaultApi.ts +154 -0
- package/src/api/apis/index.ts +1 -0
- package/src/api/index.ts +4 -0
- package/src/api/models/GetYoutubeMusicAlbums200ResponseInner.ts +29 -0
- package/src/api/models/PartialSterioAlbumResourcesFull.ts +39 -0
- package/src/api/models/SpotifyApiAlbumObjectSimplified.ts +152 -0
- package/src/api/models/SpotifyApiArtistObjectSimplified.ts +68 -0
- package/src/api/models/SpotifyApiExternalUrlObject.ts +25 -0
- package/src/api/models/SpotifyApiImageObject.ts +38 -0
- package/src/api/models/SpotifyApiRestrictionsObject.ts +24 -0
- package/src/api/models/SterioAlbum.ts +39 -0
- package/src/api/models/SterioAlbumResource.ts +29 -0
- package/src/api/models/SterioAlbumResourcesTable.ts +34 -0
- package/src/api/models/SterioAlbumSongs.ts +38 -0
- package/src/api/models/SterioAlbumSongsVideoIdsInner.ts +34 -0
- package/src/api/models/YoutubePlaylist.ts +38 -0
- package/src/api/models/YoutubeV3Schema36PlaylistItem.ts +59 -0
- package/src/api/models/YoutubeV3Schema36PlaylistItemContentDetails.ts +49 -0
- package/src/api/models/YoutubeV3Schema36PlaylistItemSnippet.ts +89 -0
- package/src/api/models/YoutubeV3Schema36PlaylistItemStatus.ts +26 -0
- package/src/api/models/YoutubeV3Schema36ResourceId.ts +44 -0
- package/src/api/models/YoutubeV3Schema36Thumbnail.ts +38 -0
- package/src/api/models/YoutubeV3Schema36ThumbnailDetails.ts +49 -0
- package/src/api/models/index.ts +20 -0
- package/src/api/runtime.ts +193 -0
- package/src/api/servers.ts +45 -0
- package/src/api/tsconfig.json +22 -0
- package/src/app.ts +58 -0
- package/src/config.ts +6 -0
- package/src/controller.ts +148 -0
- package/src/lib.ts +112 -0
- package/src/main.ts +225 -0
- package/src/tables.ts +178 -0
- package/src/types.ts +113 -0
- package/src/views/spotify/auth-callback.ejs +22 -0
- package/tables/document-files/82745273-7eda-4169-8b4a-998d2de00ac2.json +5208 -0
- package/tables/spotify-albums/5bff8eba-bd2b-4485-8136-1f89da5db6d7.json +1 -0
- package/tables/sterio-albums/81d5b327-68b1-4fef-8e40-491c792e8951.json +1 -0
- package/tables/stream-files/f6697f37-7320-41df-aa50-b70264fa1bbf.json +3788 -0
- package/tables/youtube-music-albums/55fd9bb8-46ba-4d0e-9376-f2f2cbb1aa38.json +1 -0
- package/tables/youtube-playlists/e3153ab8-8e1f-491e-995e-3142d07f4ecc.json +1 -0
- package/tables/youtube-videos/9067172e-4803-48f1-8b8e-4b942f3ca228.json +1 -0
- package/tsconfig.json +16 -0
- package/tsoa.json +14 -0
|
@@ -0,0 +1,775 @@
|
|
|
1
|
+
{
|
|
2
|
+
"openapi": "3.0.0",
|
|
3
|
+
"components": {
|
|
4
|
+
"examples": {},
|
|
5
|
+
"headers": {},
|
|
6
|
+
"parameters": {},
|
|
7
|
+
"requestBodies": {},
|
|
8
|
+
"responses": {},
|
|
9
|
+
"schemas": {
|
|
10
|
+
"SterioAlbumResource": {
|
|
11
|
+
"properties": {
|
|
12
|
+
"id": {
|
|
13
|
+
"type": "string"
|
|
14
|
+
},
|
|
15
|
+
"iteratee": {
|
|
16
|
+
"type": "string"
|
|
17
|
+
}
|
|
18
|
+
},
|
|
19
|
+
"required": [
|
|
20
|
+
"id"
|
|
21
|
+
],
|
|
22
|
+
"type": "object",
|
|
23
|
+
"additionalProperties": false
|
|
24
|
+
},
|
|
25
|
+
"Partial_SterioAlbumResourcesFull_": {
|
|
26
|
+
"properties": {
|
|
27
|
+
"youtubeMusic": {
|
|
28
|
+
"$ref": "#/components/schemas/SterioAlbumResource"
|
|
29
|
+
},
|
|
30
|
+
"youtube": {
|
|
31
|
+
"$ref": "#/components/schemas/SterioAlbumResource"
|
|
32
|
+
},
|
|
33
|
+
"spotify": {
|
|
34
|
+
"$ref": "#/components/schemas/SterioAlbumResource"
|
|
35
|
+
}
|
|
36
|
+
},
|
|
37
|
+
"type": "object",
|
|
38
|
+
"description": "Make all properties in T optional"
|
|
39
|
+
},
|
|
40
|
+
"SterioAlbumResources": {
|
|
41
|
+
"$ref": "#/components/schemas/Partial_SterioAlbumResourcesFull_"
|
|
42
|
+
},
|
|
43
|
+
"SterioAlbum": {
|
|
44
|
+
"properties": {
|
|
45
|
+
"id": {
|
|
46
|
+
"type": "string"
|
|
47
|
+
},
|
|
48
|
+
"resources": {
|
|
49
|
+
"$ref": "#/components/schemas/SterioAlbumResources"
|
|
50
|
+
},
|
|
51
|
+
"songs": {
|
|
52
|
+
"properties": {
|
|
53
|
+
"exclude": {
|
|
54
|
+
"items": {
|
|
55
|
+
"type": "number",
|
|
56
|
+
"format": "double"
|
|
57
|
+
},
|
|
58
|
+
"type": "array"
|
|
59
|
+
},
|
|
60
|
+
"include": {
|
|
61
|
+
"items": {
|
|
62
|
+
"type": "number",
|
|
63
|
+
"format": "double"
|
|
64
|
+
},
|
|
65
|
+
"type": "array"
|
|
66
|
+
},
|
|
67
|
+
"videoIds": {
|
|
68
|
+
"items": {
|
|
69
|
+
"properties": {
|
|
70
|
+
"newValue": {
|
|
71
|
+
"type": "string"
|
|
72
|
+
},
|
|
73
|
+
"expectedValue": {
|
|
74
|
+
"type": "string"
|
|
75
|
+
},
|
|
76
|
+
"index": {
|
|
77
|
+
"type": "number",
|
|
78
|
+
"format": "double"
|
|
79
|
+
}
|
|
80
|
+
},
|
|
81
|
+
"required": [
|
|
82
|
+
"newValue",
|
|
83
|
+
"expectedValue",
|
|
84
|
+
"index"
|
|
85
|
+
],
|
|
86
|
+
"type": "object"
|
|
87
|
+
},
|
|
88
|
+
"type": "array"
|
|
89
|
+
}
|
|
90
|
+
},
|
|
91
|
+
"type": "object"
|
|
92
|
+
}
|
|
93
|
+
},
|
|
94
|
+
"required": [
|
|
95
|
+
"id"
|
|
96
|
+
],
|
|
97
|
+
"type": "object",
|
|
98
|
+
"additionalProperties": false
|
|
99
|
+
},
|
|
100
|
+
"SterioAlbumResourcesTable": {
|
|
101
|
+
"properties": {
|
|
102
|
+
"youtubeMusic": {
|
|
103
|
+
"items": {
|
|
104
|
+
"type": "string"
|
|
105
|
+
},
|
|
106
|
+
"type": "array"
|
|
107
|
+
},
|
|
108
|
+
"youtube": {
|
|
109
|
+
"items": {
|
|
110
|
+
"type": "string"
|
|
111
|
+
},
|
|
112
|
+
"type": "array"
|
|
113
|
+
},
|
|
114
|
+
"spotify": {
|
|
115
|
+
"items": {
|
|
116
|
+
"type": "string"
|
|
117
|
+
},
|
|
118
|
+
"type": "array"
|
|
119
|
+
}
|
|
120
|
+
},
|
|
121
|
+
"required": [
|
|
122
|
+
"youtubeMusic",
|
|
123
|
+
"youtube",
|
|
124
|
+
"spotify"
|
|
125
|
+
],
|
|
126
|
+
"type": "object",
|
|
127
|
+
"additionalProperties": false
|
|
128
|
+
},
|
|
129
|
+
"SpotifyApi.ExternalUrlObject": {
|
|
130
|
+
"description": "External Url Object\n[](https://developer.spotify.com/web-api/object-model/)\n\nNote that there might be other types available, it couldn't be found in the docs.",
|
|
131
|
+
"properties": {
|
|
132
|
+
"spotify": {
|
|
133
|
+
"type": "string"
|
|
134
|
+
}
|
|
135
|
+
},
|
|
136
|
+
"required": [
|
|
137
|
+
"spotify"
|
|
138
|
+
],
|
|
139
|
+
"type": "object",
|
|
140
|
+
"additionalProperties": false
|
|
141
|
+
},
|
|
142
|
+
"SpotifyApi.ArtistObjectSimplified": {
|
|
143
|
+
"description": "Simplified Artist Object\n[artist object (simplified)](https://developer.spotify.com/web-api/object-model/)",
|
|
144
|
+
"properties": {
|
|
145
|
+
"type": {
|
|
146
|
+
"type": "string",
|
|
147
|
+
"enum": [
|
|
148
|
+
"artist"
|
|
149
|
+
],
|
|
150
|
+
"nullable": false,
|
|
151
|
+
"description": "The object type."
|
|
152
|
+
},
|
|
153
|
+
"href": {
|
|
154
|
+
"type": "string",
|
|
155
|
+
"description": "A link to the Web API endpoint providing full details."
|
|
156
|
+
},
|
|
157
|
+
"external_urls": {
|
|
158
|
+
"$ref": "#/components/schemas/SpotifyApi.ExternalUrlObject",
|
|
159
|
+
"description": "Known external URLs."
|
|
160
|
+
},
|
|
161
|
+
"uri": {
|
|
162
|
+
"type": "string",
|
|
163
|
+
"description": "The [Spotify URI](https://developer.spotify.com/documentation/web-api/#spotify-uris-and-ids)."
|
|
164
|
+
},
|
|
165
|
+
"name": {
|
|
166
|
+
"type": "string",
|
|
167
|
+
"description": "The name of the artist."
|
|
168
|
+
},
|
|
169
|
+
"id": {
|
|
170
|
+
"type": "string",
|
|
171
|
+
"description": "The [Spotify ID](https://developer.spotify.com/documentation/web-api/#spotify-uris-and-ids) for the artist."
|
|
172
|
+
}
|
|
173
|
+
},
|
|
174
|
+
"required": [
|
|
175
|
+
"type",
|
|
176
|
+
"href",
|
|
177
|
+
"external_urls",
|
|
178
|
+
"uri",
|
|
179
|
+
"name",
|
|
180
|
+
"id"
|
|
181
|
+
],
|
|
182
|
+
"type": "object",
|
|
183
|
+
"additionalProperties": false
|
|
184
|
+
},
|
|
185
|
+
"SpotifyApi.ImageObject": {
|
|
186
|
+
"description": "Image Object\n[](https://developer.spotify.com/web-api/object-model/)",
|
|
187
|
+
"properties": {
|
|
188
|
+
"height": {
|
|
189
|
+
"type": "number",
|
|
190
|
+
"format": "double",
|
|
191
|
+
"description": "The image height in pixels. If unknown: `null` or not returned."
|
|
192
|
+
},
|
|
193
|
+
"url": {
|
|
194
|
+
"type": "string",
|
|
195
|
+
"description": "The source URL of the image."
|
|
196
|
+
},
|
|
197
|
+
"width": {
|
|
198
|
+
"type": "number",
|
|
199
|
+
"format": "double",
|
|
200
|
+
"description": "The image width in pixels. If unknown: null or not returned."
|
|
201
|
+
}
|
|
202
|
+
},
|
|
203
|
+
"required": [
|
|
204
|
+
"url"
|
|
205
|
+
],
|
|
206
|
+
"type": "object",
|
|
207
|
+
"additionalProperties": false
|
|
208
|
+
},
|
|
209
|
+
"SpotifyApi.RestrictionsObject": {
|
|
210
|
+
"properties": {
|
|
211
|
+
"reason": {
|
|
212
|
+
"type": "string"
|
|
213
|
+
}
|
|
214
|
+
},
|
|
215
|
+
"required": [
|
|
216
|
+
"reason"
|
|
217
|
+
],
|
|
218
|
+
"type": "object",
|
|
219
|
+
"additionalProperties": false
|
|
220
|
+
},
|
|
221
|
+
"SpotifyApi.AlbumObjectSimplified": {
|
|
222
|
+
"description": "Simplified Album Object\n[album object (simplified)](https://developer.spotify.com/web-api/object-model/#album-object-simplified)",
|
|
223
|
+
"properties": {
|
|
224
|
+
"type": {
|
|
225
|
+
"type": "string",
|
|
226
|
+
"enum": [
|
|
227
|
+
"album"
|
|
228
|
+
],
|
|
229
|
+
"nullable": false,
|
|
230
|
+
"description": "The object type."
|
|
231
|
+
},
|
|
232
|
+
"href": {
|
|
233
|
+
"type": "string",
|
|
234
|
+
"description": "A link to the Web API endpoint providing full details."
|
|
235
|
+
},
|
|
236
|
+
"external_urls": {
|
|
237
|
+
"$ref": "#/components/schemas/SpotifyApi.ExternalUrlObject",
|
|
238
|
+
"description": "Known external URLs."
|
|
239
|
+
},
|
|
240
|
+
"uri": {
|
|
241
|
+
"type": "string",
|
|
242
|
+
"description": "The [Spotify URI](https://developer.spotify.com/documentation/web-api/#spotify-uris-and-ids)."
|
|
243
|
+
},
|
|
244
|
+
"album_group": {
|
|
245
|
+
"type": "string",
|
|
246
|
+
"enum": [
|
|
247
|
+
"album",
|
|
248
|
+
"single",
|
|
249
|
+
"compilation",
|
|
250
|
+
"appears_on"
|
|
251
|
+
],
|
|
252
|
+
"description": "The field is present when getting an artist’s albums.\nPossible values are “album”, “single”, “compilation”, “appears_on”.\nCompare to album_type this field represents relationship between the artist and the album.",
|
|
253
|
+
"deprecated": true
|
|
254
|
+
},
|
|
255
|
+
"album_type": {
|
|
256
|
+
"type": "string",
|
|
257
|
+
"enum": [
|
|
258
|
+
"album",
|
|
259
|
+
"single",
|
|
260
|
+
"compilation"
|
|
261
|
+
],
|
|
262
|
+
"description": "The type of the album: one of “album”, “single”, or “compilation”."
|
|
263
|
+
},
|
|
264
|
+
"artists": {
|
|
265
|
+
"items": {
|
|
266
|
+
"$ref": "#/components/schemas/SpotifyApi.ArtistObjectSimplified"
|
|
267
|
+
},
|
|
268
|
+
"type": "array",
|
|
269
|
+
"description": "The artists of the album.\nEach artist object includes a link in href to more detailed information about the artist."
|
|
270
|
+
},
|
|
271
|
+
"available_markets": {
|
|
272
|
+
"items": {
|
|
273
|
+
"type": "string"
|
|
274
|
+
},
|
|
275
|
+
"type": "array",
|
|
276
|
+
"description": "The markets in which the album is available: [ISO 3166-1 alpha-2 country codes](https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2).\nNote that an album is considered available in a market when at least 1 of its tracks is available in that market.",
|
|
277
|
+
"deprecated": true
|
|
278
|
+
},
|
|
279
|
+
"id": {
|
|
280
|
+
"type": "string",
|
|
281
|
+
"description": "The [Spotify ID](https://developer.spotify.com/documentation/web-api/#spotify-uris-and-ids) for the album."
|
|
282
|
+
},
|
|
283
|
+
"images": {
|
|
284
|
+
"items": {
|
|
285
|
+
"$ref": "#/components/schemas/SpotifyApi.ImageObject"
|
|
286
|
+
},
|
|
287
|
+
"type": "array",
|
|
288
|
+
"description": "The cover art for the album in various sizes, widest first."
|
|
289
|
+
},
|
|
290
|
+
"name": {
|
|
291
|
+
"type": "string",
|
|
292
|
+
"description": "The name of the album. In case of an album takedown, the value may be an empty string."
|
|
293
|
+
},
|
|
294
|
+
"release_date": {
|
|
295
|
+
"type": "string",
|
|
296
|
+
"description": "The date the album was first released, for example `1981`.\nDepending on the precision, it might be shown as `1981-12` or `1981-12-15`."
|
|
297
|
+
},
|
|
298
|
+
"release_date_precision": {
|
|
299
|
+
"type": "string",
|
|
300
|
+
"enum": [
|
|
301
|
+
"year",
|
|
302
|
+
"month",
|
|
303
|
+
"day"
|
|
304
|
+
],
|
|
305
|
+
"description": "The precision with which release_date value is known: `year`, `month`, or `day`."
|
|
306
|
+
},
|
|
307
|
+
"restrictions": {
|
|
308
|
+
"$ref": "#/components/schemas/SpotifyApi.RestrictionsObject",
|
|
309
|
+
"description": "Part of the response when [Track Relinking](https://developer.spotify.com/documentation/general/guides/track-relinking-guide/) is applied,\nthe original track is not available in the given market, and Spotify did not have any tracks to relink it with.\nThe track response will still contain metadata for the original track,\nand a restrictions object containing the reason why the track is not available: `\"restrictions\" : {\"reason\" : \"market\"}`"
|
|
310
|
+
},
|
|
311
|
+
"total_tracks": {
|
|
312
|
+
"type": "number",
|
|
313
|
+
"format": "double",
|
|
314
|
+
"description": "The number of tracks in the album."
|
|
315
|
+
}
|
|
316
|
+
},
|
|
317
|
+
"required": [
|
|
318
|
+
"type",
|
|
319
|
+
"href",
|
|
320
|
+
"external_urls",
|
|
321
|
+
"uri",
|
|
322
|
+
"album_type",
|
|
323
|
+
"artists",
|
|
324
|
+
"id",
|
|
325
|
+
"images",
|
|
326
|
+
"name",
|
|
327
|
+
"release_date",
|
|
328
|
+
"release_date_precision",
|
|
329
|
+
"total_tracks"
|
|
330
|
+
],
|
|
331
|
+
"type": "object",
|
|
332
|
+
"additionalProperties": false
|
|
333
|
+
},
|
|
334
|
+
"youtube_v3.Schema_36_PlaylistItemContentDetails": {
|
|
335
|
+
"properties": {
|
|
336
|
+
"endAt": {
|
|
337
|
+
"type": "string",
|
|
338
|
+
"nullable": true,
|
|
339
|
+
"description": "The time, measured in seconds from the start of the video, when the video should stop playing. (The playlist owner can specify the times when the video should start and stop playing when the video is played in the context of the playlist.) By default, assume that the video.endTime is the end of the video."
|
|
340
|
+
},
|
|
341
|
+
"note": {
|
|
342
|
+
"type": "string",
|
|
343
|
+
"nullable": true,
|
|
344
|
+
"description": "A user-generated note for this item."
|
|
345
|
+
},
|
|
346
|
+
"startAt": {
|
|
347
|
+
"type": "string",
|
|
348
|
+
"nullable": true,
|
|
349
|
+
"description": "The time, measured in seconds from the start of the video, when the video should start playing. (The playlist owner can specify the times when the video should start and stop playing when the video is played in the context of the playlist.) The default value is 0."
|
|
350
|
+
},
|
|
351
|
+
"videoId": {
|
|
352
|
+
"type": "string",
|
|
353
|
+
"nullable": true,
|
|
354
|
+
"description": "The ID that YouTube uses to uniquely identify a video. To retrieve the video resource, set the id query parameter to this value in your API request."
|
|
355
|
+
},
|
|
356
|
+
"videoPublishedAt": {
|
|
357
|
+
"type": "string",
|
|
358
|
+
"nullable": true,
|
|
359
|
+
"description": "The date and time that the video was published to YouTube."
|
|
360
|
+
}
|
|
361
|
+
},
|
|
362
|
+
"type": "object",
|
|
363
|
+
"additionalProperties": false
|
|
364
|
+
},
|
|
365
|
+
"youtube_v3.Schema_36_ResourceId": {
|
|
366
|
+
"description": "A resource id is a generic reference that points to another YouTube resource.",
|
|
367
|
+
"properties": {
|
|
368
|
+
"channelId": {
|
|
369
|
+
"type": "string",
|
|
370
|
+
"nullable": true,
|
|
371
|
+
"description": "The ID that YouTube uses to uniquely identify the referred resource, if that resource is a channel. This property is only present if the resourceId.kind value is youtube#channel."
|
|
372
|
+
},
|
|
373
|
+
"kind": {
|
|
374
|
+
"type": "string",
|
|
375
|
+
"nullable": true,
|
|
376
|
+
"description": "The type of the API resource."
|
|
377
|
+
},
|
|
378
|
+
"playlistId": {
|
|
379
|
+
"type": "string",
|
|
380
|
+
"nullable": true,
|
|
381
|
+
"description": "The ID that YouTube uses to uniquely identify the referred resource, if that resource is a playlist. This property is only present if the resourceId.kind value is youtube#playlist."
|
|
382
|
+
},
|
|
383
|
+
"videoId": {
|
|
384
|
+
"type": "string",
|
|
385
|
+
"nullable": true,
|
|
386
|
+
"description": "The ID that YouTube uses to uniquely identify the referred resource, if that resource is a video. This property is only present if the resourceId.kind value is youtube#video."
|
|
387
|
+
}
|
|
388
|
+
},
|
|
389
|
+
"type": "object",
|
|
390
|
+
"additionalProperties": false
|
|
391
|
+
},
|
|
392
|
+
"youtube_v3.Schema_36_Thumbnail": {
|
|
393
|
+
"description": "A thumbnail is an image representing a YouTube resource.",
|
|
394
|
+
"properties": {
|
|
395
|
+
"height": {
|
|
396
|
+
"type": "number",
|
|
397
|
+
"format": "double",
|
|
398
|
+
"nullable": true,
|
|
399
|
+
"description": "(Optional) Height of the thumbnail image."
|
|
400
|
+
},
|
|
401
|
+
"url": {
|
|
402
|
+
"type": "string",
|
|
403
|
+
"nullable": true,
|
|
404
|
+
"description": "The thumbnail image's URL."
|
|
405
|
+
},
|
|
406
|
+
"width": {
|
|
407
|
+
"type": "number",
|
|
408
|
+
"format": "double",
|
|
409
|
+
"nullable": true,
|
|
410
|
+
"description": "(Optional) Width of the thumbnail image."
|
|
411
|
+
}
|
|
412
|
+
},
|
|
413
|
+
"type": "object",
|
|
414
|
+
"additionalProperties": false
|
|
415
|
+
},
|
|
416
|
+
"youtube_v3.Schema_36_ThumbnailDetails": {
|
|
417
|
+
"description": "Internal representation of thumbnails for a YouTube resource.",
|
|
418
|
+
"properties": {
|
|
419
|
+
"default": {
|
|
420
|
+
"$ref": "#/components/schemas/youtube_v3.Schema_36_Thumbnail",
|
|
421
|
+
"description": "The default image for this resource."
|
|
422
|
+
},
|
|
423
|
+
"high": {
|
|
424
|
+
"$ref": "#/components/schemas/youtube_v3.Schema_36_Thumbnail",
|
|
425
|
+
"description": "The high quality image for this resource."
|
|
426
|
+
},
|
|
427
|
+
"maxres": {
|
|
428
|
+
"$ref": "#/components/schemas/youtube_v3.Schema_36_Thumbnail",
|
|
429
|
+
"description": "The maximum resolution quality image for this resource."
|
|
430
|
+
},
|
|
431
|
+
"medium": {
|
|
432
|
+
"$ref": "#/components/schemas/youtube_v3.Schema_36_Thumbnail",
|
|
433
|
+
"description": "The medium quality image for this resource."
|
|
434
|
+
},
|
|
435
|
+
"standard": {
|
|
436
|
+
"$ref": "#/components/schemas/youtube_v3.Schema_36_Thumbnail",
|
|
437
|
+
"description": "The standard quality image for this resource."
|
|
438
|
+
}
|
|
439
|
+
},
|
|
440
|
+
"type": "object",
|
|
441
|
+
"additionalProperties": false
|
|
442
|
+
},
|
|
443
|
+
"youtube_v3.Schema_36_PlaylistItemSnippet": {
|
|
444
|
+
"description": "Basic details about a playlist, including title, description and thumbnails. Basic details of a YouTube Playlist item provided by the author. Next ID: 15",
|
|
445
|
+
"properties": {
|
|
446
|
+
"channelId": {
|
|
447
|
+
"type": "string",
|
|
448
|
+
"nullable": true,
|
|
449
|
+
"description": "The ID that YouTube uses to uniquely identify the user that added the item to the playlist."
|
|
450
|
+
},
|
|
451
|
+
"channelTitle": {
|
|
452
|
+
"type": "string",
|
|
453
|
+
"nullable": true,
|
|
454
|
+
"description": "Channel title for the channel that the playlist item belongs to."
|
|
455
|
+
},
|
|
456
|
+
"description": {
|
|
457
|
+
"type": "string",
|
|
458
|
+
"nullable": true,
|
|
459
|
+
"description": "The item's description."
|
|
460
|
+
},
|
|
461
|
+
"playlistId": {
|
|
462
|
+
"type": "string",
|
|
463
|
+
"nullable": true,
|
|
464
|
+
"description": "The ID that YouTube uses to uniquely identify thGe playlist that the playlist item is in."
|
|
465
|
+
},
|
|
466
|
+
"position": {
|
|
467
|
+
"type": "number",
|
|
468
|
+
"format": "double",
|
|
469
|
+
"nullable": true,
|
|
470
|
+
"description": "The order in which the item appears in the playlist. The value uses a zero-based index, so the first item has a position of 0, the second item has a position of 1, and so forth."
|
|
471
|
+
},
|
|
472
|
+
"publishedAt": {
|
|
473
|
+
"type": "string",
|
|
474
|
+
"nullable": true,
|
|
475
|
+
"description": "The date and time that the item was added to the playlist."
|
|
476
|
+
},
|
|
477
|
+
"resourceId": {
|
|
478
|
+
"$ref": "#/components/schemas/youtube_v3.Schema_36_ResourceId",
|
|
479
|
+
"description": "The id object contains information that can be used to uniquely identify the resource that is included in the playlist as the playlist item."
|
|
480
|
+
},
|
|
481
|
+
"thumbnails": {
|
|
482
|
+
"$ref": "#/components/schemas/youtube_v3.Schema_36_ThumbnailDetails",
|
|
483
|
+
"description": "A map of thumbnail images associated with the playlist item. For each object in the map, the key is the name of the thumbnail image, and the value is an object that contains other information about the thumbnail."
|
|
484
|
+
},
|
|
485
|
+
"title": {
|
|
486
|
+
"type": "string",
|
|
487
|
+
"nullable": true,
|
|
488
|
+
"description": "The item's title."
|
|
489
|
+
},
|
|
490
|
+
"videoOwnerChannelId": {
|
|
491
|
+
"type": "string",
|
|
492
|
+
"nullable": true,
|
|
493
|
+
"description": "Channel id for the channel this video belongs to."
|
|
494
|
+
},
|
|
495
|
+
"videoOwnerChannelTitle": {
|
|
496
|
+
"type": "string",
|
|
497
|
+
"nullable": true,
|
|
498
|
+
"description": "Channel title for the channel this video belongs to."
|
|
499
|
+
}
|
|
500
|
+
},
|
|
501
|
+
"type": "object",
|
|
502
|
+
"additionalProperties": false
|
|
503
|
+
},
|
|
504
|
+
"youtube_v3.Schema_36_PlaylistItemStatus": {
|
|
505
|
+
"description": "Information about the playlist item's privacy status.",
|
|
506
|
+
"properties": {
|
|
507
|
+
"privacyStatus": {
|
|
508
|
+
"type": "string",
|
|
509
|
+
"nullable": true,
|
|
510
|
+
"description": "This resource's privacy status."
|
|
511
|
+
}
|
|
512
|
+
},
|
|
513
|
+
"type": "object",
|
|
514
|
+
"additionalProperties": false
|
|
515
|
+
},
|
|
516
|
+
"youtube_v3.Schema_36_PlaylistItem": {
|
|
517
|
+
"description": "A *playlistItem* resource identifies another resource, such as a video, that is included in a playlist. In addition, the playlistItem resource contains details about the included resource that pertain specifically to how that resource is used in that playlist. YouTube uses playlists to identify special collections of videos for a channel, such as: - uploaded videos - favorite videos - positively rated (liked) videos - watch history - watch later To be more specific, these lists are associated with a channel, which is a collection of a person, group, or company's videos, playlists, and other YouTube information. You can retrieve the playlist IDs for each of these lists from the channel resource for a given channel. You can then use the playlistItems.list method to retrieve any of those lists. You can also add or remove items from those lists by calling the playlistItems.insert and playlistItems.delete methods. For example, if a user gives a positive rating to a video, you would insert that video into the liked videos playlist for that user's channel.",
|
|
518
|
+
"properties": {
|
|
519
|
+
"contentDetails": {
|
|
520
|
+
"$ref": "#/components/schemas/youtube_v3.Schema_36_PlaylistItemContentDetails",
|
|
521
|
+
"description": "The contentDetails object is included in the resource if the included item is a YouTube video. The object contains additional information about the video."
|
|
522
|
+
},
|
|
523
|
+
"etag": {
|
|
524
|
+
"type": "string",
|
|
525
|
+
"nullable": true,
|
|
526
|
+
"description": "Etag of this resource."
|
|
527
|
+
},
|
|
528
|
+
"id": {
|
|
529
|
+
"type": "string",
|
|
530
|
+
"nullable": true,
|
|
531
|
+
"description": "The ID that YouTube uses to uniquely identify the playlist item."
|
|
532
|
+
},
|
|
533
|
+
"kind": {
|
|
534
|
+
"type": "string",
|
|
535
|
+
"nullable": true,
|
|
536
|
+
"description": "Identifies what kind of resource this is. Value: the fixed string \"youtube#playlistItem\"."
|
|
537
|
+
},
|
|
538
|
+
"snippet": {
|
|
539
|
+
"$ref": "#/components/schemas/youtube_v3.Schema_36_PlaylistItemSnippet",
|
|
540
|
+
"description": "The snippet object contains basic details about the playlist item, such as its title and position in the playlist."
|
|
541
|
+
},
|
|
542
|
+
"status": {
|
|
543
|
+
"$ref": "#/components/schemas/youtube_v3.Schema_36_PlaylistItemStatus",
|
|
544
|
+
"description": "The status object contains information about the playlist item's privacy status."
|
|
545
|
+
}
|
|
546
|
+
},
|
|
547
|
+
"type": "object",
|
|
548
|
+
"additionalProperties": false
|
|
549
|
+
},
|
|
550
|
+
"YoutubePlaylist": {
|
|
551
|
+
"properties": {
|
|
552
|
+
"id": {
|
|
553
|
+
"type": "string"
|
|
554
|
+
},
|
|
555
|
+
"title": {
|
|
556
|
+
"type": "string"
|
|
557
|
+
},
|
|
558
|
+
"items": {
|
|
559
|
+
"items": {
|
|
560
|
+
"$ref": "#/components/schemas/youtube_v3.Schema_36_PlaylistItem"
|
|
561
|
+
},
|
|
562
|
+
"type": "array"
|
|
563
|
+
}
|
|
564
|
+
},
|
|
565
|
+
"required": [
|
|
566
|
+
"id",
|
|
567
|
+
"items"
|
|
568
|
+
],
|
|
569
|
+
"type": "object",
|
|
570
|
+
"additionalProperties": false
|
|
571
|
+
}
|
|
572
|
+
},
|
|
573
|
+
"securitySchemes": {}
|
|
574
|
+
},
|
|
575
|
+
"info": {
|
|
576
|
+
"title": "@cascateer/sterio",
|
|
577
|
+
"version": "1.0.0",
|
|
578
|
+
"contact": {}
|
|
579
|
+
},
|
|
580
|
+
"paths": {
|
|
581
|
+
"/sterio/album/{id}": {
|
|
582
|
+
"get": {
|
|
583
|
+
"operationId": "GetAlbum",
|
|
584
|
+
"responses": {
|
|
585
|
+
"200": {
|
|
586
|
+
"description": "Ok",
|
|
587
|
+
"content": {
|
|
588
|
+
"application/json": {
|
|
589
|
+
"schema": {
|
|
590
|
+
"$ref": "#/components/schemas/SterioAlbum"
|
|
591
|
+
}
|
|
592
|
+
}
|
|
593
|
+
}
|
|
594
|
+
}
|
|
595
|
+
},
|
|
596
|
+
"security": [],
|
|
597
|
+
"parameters": [
|
|
598
|
+
{
|
|
599
|
+
"in": "path",
|
|
600
|
+
"name": "id",
|
|
601
|
+
"required": true,
|
|
602
|
+
"schema": {
|
|
603
|
+
"type": "string"
|
|
604
|
+
}
|
|
605
|
+
}
|
|
606
|
+
]
|
|
607
|
+
}
|
|
608
|
+
},
|
|
609
|
+
"/sterio/album": {
|
|
610
|
+
"patch": {
|
|
611
|
+
"operationId": "UpdateAlbum",
|
|
612
|
+
"responses": {
|
|
613
|
+
"200": {
|
|
614
|
+
"description": "Ok",
|
|
615
|
+
"content": {
|
|
616
|
+
"application/json": {
|
|
617
|
+
"schema": {}
|
|
618
|
+
}
|
|
619
|
+
}
|
|
620
|
+
}
|
|
621
|
+
},
|
|
622
|
+
"security": [],
|
|
623
|
+
"parameters": [],
|
|
624
|
+
"requestBody": {
|
|
625
|
+
"required": true,
|
|
626
|
+
"content": {
|
|
627
|
+
"application/json": {
|
|
628
|
+
"schema": {
|
|
629
|
+
"$ref": "#/components/schemas/SterioAlbum"
|
|
630
|
+
}
|
|
631
|
+
}
|
|
632
|
+
}
|
|
633
|
+
}
|
|
634
|
+
}
|
|
635
|
+
},
|
|
636
|
+
"/sterio/album/{id}/resources/table": {
|
|
637
|
+
"post": {
|
|
638
|
+
"operationId": "GetAlbumResourcesTable",
|
|
639
|
+
"responses": {
|
|
640
|
+
"200": {
|
|
641
|
+
"description": "Ok",
|
|
642
|
+
"content": {
|
|
643
|
+
"application/json": {
|
|
644
|
+
"schema": {
|
|
645
|
+
"$ref": "#/components/schemas/SterioAlbumResourcesTable"
|
|
646
|
+
}
|
|
647
|
+
}
|
|
648
|
+
}
|
|
649
|
+
}
|
|
650
|
+
},
|
|
651
|
+
"security": [],
|
|
652
|
+
"parameters": [
|
|
653
|
+
{
|
|
654
|
+
"in": "path",
|
|
655
|
+
"name": "id",
|
|
656
|
+
"required": true,
|
|
657
|
+
"schema": {
|
|
658
|
+
"type": "string"
|
|
659
|
+
}
|
|
660
|
+
}
|
|
661
|
+
]
|
|
662
|
+
}
|
|
663
|
+
},
|
|
664
|
+
"/sterio/spotify/albums": {
|
|
665
|
+
"get": {
|
|
666
|
+
"operationId": "GetSpotifyAlbums",
|
|
667
|
+
"responses": {
|
|
668
|
+
"200": {
|
|
669
|
+
"description": "Ok",
|
|
670
|
+
"content": {
|
|
671
|
+
"application/json": {
|
|
672
|
+
"schema": {
|
|
673
|
+
"items": {
|
|
674
|
+
"$ref": "#/components/schemas/SpotifyApi.AlbumObjectSimplified"
|
|
675
|
+
},
|
|
676
|
+
"type": "array"
|
|
677
|
+
}
|
|
678
|
+
}
|
|
679
|
+
}
|
|
680
|
+
}
|
|
681
|
+
},
|
|
682
|
+
"security": [],
|
|
683
|
+
"parameters": [
|
|
684
|
+
{
|
|
685
|
+
"in": "query",
|
|
686
|
+
"name": "q",
|
|
687
|
+
"required": true,
|
|
688
|
+
"schema": {
|
|
689
|
+
"type": "string"
|
|
690
|
+
}
|
|
691
|
+
}
|
|
692
|
+
]
|
|
693
|
+
}
|
|
694
|
+
},
|
|
695
|
+
"/sterio/youtube/playlists": {
|
|
696
|
+
"get": {
|
|
697
|
+
"operationId": "GetYoutubePlaylists",
|
|
698
|
+
"responses": {
|
|
699
|
+
"200": {
|
|
700
|
+
"description": "Ok",
|
|
701
|
+
"content": {
|
|
702
|
+
"application/json": {
|
|
703
|
+
"schema": {
|
|
704
|
+
"items": {
|
|
705
|
+
"$ref": "#/components/schemas/YoutubePlaylist"
|
|
706
|
+
},
|
|
707
|
+
"type": "array"
|
|
708
|
+
}
|
|
709
|
+
}
|
|
710
|
+
}
|
|
711
|
+
}
|
|
712
|
+
},
|
|
713
|
+
"security": [],
|
|
714
|
+
"parameters": [
|
|
715
|
+
{
|
|
716
|
+
"in": "query",
|
|
717
|
+
"name": "ids",
|
|
718
|
+
"required": true,
|
|
719
|
+
"schema": {
|
|
720
|
+
"type": "string"
|
|
721
|
+
}
|
|
722
|
+
}
|
|
723
|
+
]
|
|
724
|
+
}
|
|
725
|
+
},
|
|
726
|
+
"/sterio/youtube-music/albums": {
|
|
727
|
+
"get": {
|
|
728
|
+
"operationId": "GetYoutubeMusicAlbums",
|
|
729
|
+
"responses": {
|
|
730
|
+
"200": {
|
|
731
|
+
"description": "Ok",
|
|
732
|
+
"content": {
|
|
733
|
+
"application/json": {
|
|
734
|
+
"schema": {
|
|
735
|
+
"items": {
|
|
736
|
+
"properties": {
|
|
737
|
+
"text": {
|
|
738
|
+
"type": "string"
|
|
739
|
+
},
|
|
740
|
+
"albumId": {
|
|
741
|
+
"type": "string"
|
|
742
|
+
}
|
|
743
|
+
},
|
|
744
|
+
"required": [
|
|
745
|
+
"text",
|
|
746
|
+
"albumId"
|
|
747
|
+
],
|
|
748
|
+
"type": "object"
|
|
749
|
+
},
|
|
750
|
+
"type": "array"
|
|
751
|
+
}
|
|
752
|
+
}
|
|
753
|
+
}
|
|
754
|
+
}
|
|
755
|
+
},
|
|
756
|
+
"security": [],
|
|
757
|
+
"parameters": [
|
|
758
|
+
{
|
|
759
|
+
"in": "query",
|
|
760
|
+
"name": "q",
|
|
761
|
+
"required": true,
|
|
762
|
+
"schema": {
|
|
763
|
+
"type": "string"
|
|
764
|
+
}
|
|
765
|
+
}
|
|
766
|
+
]
|
|
767
|
+
}
|
|
768
|
+
}
|
|
769
|
+
},
|
|
770
|
+
"servers": [
|
|
771
|
+
{
|
|
772
|
+
"url": "http://127.0.0.1:2700/"
|
|
773
|
+
}
|
|
774
|
+
]
|
|
775
|
+
}
|