2025-11-29 12:55:21 +01:00
|
|
|
//! Documentation OpenAPI pour les endpoints playlists (SSE évènements).
|
|
|
|
|
|
|
|
|
|
#[cfg(feature = "pmoserver")]
|
|
|
|
|
use utoipa::OpenApi;
|
|
|
|
|
|
|
|
|
|
/// Documentation OpenAPI pour l'API playlist (flux SSE).
|
|
|
|
|
#[derive(OpenApi)]
|
|
|
|
|
#[openapi(
|
|
|
|
|
paths(
|
2025-12-17 14:26:07 +01:00
|
|
|
crate::api::list_playlists,
|
|
|
|
|
crate::api::create_playlist,
|
|
|
|
|
crate::api::get_playlist,
|
|
|
|
|
crate::api::update_playlist,
|
|
|
|
|
crate::api::delete_playlist,
|
|
|
|
|
crate::api::add_tracks,
|
|
|
|
|
crate::api::flush_tracks,
|
|
|
|
|
crate::api::remove_track,
|
2025-11-29 12:55:21 +01:00
|
|
|
crate::sse::playlist_events_sse,
|
|
|
|
|
),
|
|
|
|
|
components(
|
|
|
|
|
schemas(
|
2025-12-17 14:26:07 +01:00
|
|
|
crate::api::PlaylistSummaryResponse,
|
|
|
|
|
crate::api::PlaylistDetailResponse,
|
|
|
|
|
crate::api::PlaylistTrackResponse,
|
|
|
|
|
crate::api::CreatePlaylistRequest,
|
|
|
|
|
crate::api::UpdatePlaylistRequest,
|
|
|
|
|
crate::api::AddTracksRequest,
|
|
|
|
|
crate::api::ErrorResponse,
|
2025-11-29 12:55:21 +01:00
|
|
|
crate::sse::EventPayload,
|
|
|
|
|
crate::sse::EventsQuery,
|
|
|
|
|
)
|
|
|
|
|
),
|
|
|
|
|
tags(
|
|
|
|
|
(name = "playlists", description = "Suivi des playlists et des morceaux joués")
|
|
|
|
|
),
|
|
|
|
|
info(
|
|
|
|
|
title = "PMO Playlist API",
|
|
|
|
|
version = "0.1.0",
|
|
|
|
|
description = r#"
|
|
|
|
|
# Flux d'évènements playlists
|
|
|
|
|
|
|
|
|
|
Endpoint SSE pour suivre :
|
|
|
|
|
- les modifications de playlists (updated)
|
|
|
|
|
- les lectures de morceaux appartenant aux playlists (track_played)
|
|
|
|
|
|
|
|
|
|
Payload JSON par évènement :
|
|
|
|
|
- `playlist_id` : identifiant de la playlist
|
|
|
|
|
- `kind` : `updated` ou `track_played`
|
|
|
|
|
- `cache_pk` : pk du morceau (si track_played)
|
|
|
|
|
- `qualifier` : qualifier de diffusion (orig/stream/etc.)
|
|
|
|
|
- `timestamp` : horodatage UTC
|
|
|
|
|
- `source_client` : client à l'origine (optionnel)
|
|
|
|
|
"#,
|
|
|
|
|
license(
|
|
|
|
|
name = "MIT",
|
|
|
|
|
),
|
|
|
|
|
)
|
|
|
|
|
)]
|
|
|
|
|
pub struct ApiDoc;
|