feat(playlists): share playlists with revocable read-only links
ci / api / api (push) Successful in 55s
release / release (версия и заметки) (push) Successful in 5s
ci / mobile / mobile (Metro-бандл Android) (push) Successful in 1m21s
ci / ts / ts (packages + web) (push) Successful in 2m19s
release / android (APK в релиз) (push) Successful in 4m45s
release / desktop (Linux и Windows в релиз) (push) Successful in 20m58s
release / prune (старые файлы и прогоны) (push) Successful in 9s
ci / module boundaries / boundaries (push) Successful in 7s
ci / contract / contract (сгенерированный код совпадает с openapi.yaml) (push) Successful in 1m35s
ci / db / db (push) Successful in 59s
ci / api / api (push) Successful in 55s
release / release (версия и заметки) (push) Successful in 5s
ci / mobile / mobile (Metro-бандл Android) (push) Successful in 1m21s
ci / ts / ts (packages + web) (push) Successful in 2m19s
release / android (APK в релиз) (push) Successful in 4m45s
release / desktop (Linux и Windows в релиз) (push) Successful in 20m58s
release / prune (старые файлы и прогоны) (push) Successful in 9s
ci / module boundaries / boundaries (push) Successful in 7s
ci / contract / contract (сгенерированный код совпадает с openapi.yaml) (push) Successful in 1m35s
ci / db / db (push) Successful in 59s
This commit is contained in:
1 parent
bfcf6e48b2
commit
0a59059738
23 files changed
+1164
-319
No files matched your search
@@ -1707,6 +1707,54 @@ paths:
|
||||
'204':
|
||||
description: Deleted
|
||||
|
||||
/api/v1/me/playlists/{id}/share:
|
||||
parameters:
|
||||
- in: path
|
||||
name: id
|
||||
required: true
|
||||
schema: { type: string, format: uuid }
|
||||
post:
|
||||
tags: [collection]
|
||||
operationId: sharePlaylist
|
||||
summary: Создать или вернуть ссылку только для чтения (только владелец)
|
||||
responses:
|
||||
default:
|
||||
$ref: '#/components/responses/Problem'
|
||||
'200':
|
||||
description: Идентификатор ссылки для /shared/playlist/{shareId}; для открытия требуется вход
|
||||
content:
|
||||
application/json:
|
||||
schema:
|
||||
$ref: '#/components/schemas/PlaylistShare'
|
||||
delete:
|
||||
tags: [collection]
|
||||
operationId: revokePlaylistShare
|
||||
summary: Отозвать ссылку (только владелец); повторная публикация создаёт новую ссылку
|
||||
responses:
|
||||
default:
|
||||
$ref: '#/components/responses/Problem'
|
||||
'204':
|
||||
description: Доступ по прежней ссылке отключён
|
||||
/api/v1/shared/playlists/{shareId}:
|
||||
parameters:
|
||||
- in: path
|
||||
name: shareId
|
||||
required: true
|
||||
schema: { type: string, format: uuid }
|
||||
get:
|
||||
tags: [collection]
|
||||
operationId: getSharedPlaylist
|
||||
summary: Прочитать плейлист по действующей ссылке (требуется вход)
|
||||
responses:
|
||||
default:
|
||||
$ref: '#/components/responses/Problem'
|
||||
'200':
|
||||
description: Плейлист с реакциями и ссылками на стрим для текущего слушателя
|
||||
content:
|
||||
application/json:
|
||||
schema:
|
||||
$ref: '#/components/schemas/Playlist'
|
||||
|
||||
components:
|
||||
parameters:
|
||||
SourceId:
|
||||
@@ -1767,6 +1815,11 @@ components:
|
||||
schema:
|
||||
$ref: "#/components/schemas/Problem"
|
||||
schemas:
|
||||
PlaylistShare:
|
||||
type: object
|
||||
required: [share_id]
|
||||
properties:
|
||||
share_id: { type: string, format: uuid }
|
||||
PlaylistInput:
|
||||
type: object
|
||||
required: [name, description, track_ids]
|
||||
@@ -1803,6 +1856,12 @@ components:
|
||||
- type: object
|
||||
required: [tracks]
|
||||
properties:
|
||||
share_id:
|
||||
type: string
|
||||
format: uuid
|
||||
nullable: true
|
||||
readOnly: true
|
||||
description: Действующая ссылка; возвращается только владельцу через /me/playlists
|
||||
tracks:
|
||||
type: array
|
||||
items: { $ref: '#/components/schemas/Track' }
|
||||
|
||||
Reference in new issue
Block a user