Files
pmomusic/pmoplaylist/src/openapi.rs

60 lines
1.7 KiB
Rust

//! 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(
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,
crate::sse::playlist_events_sse,
),
components(
schemas(
crate::api::PlaylistSummaryResponse,
crate::api::PlaylistDetailResponse,
crate::api::PlaylistTrackResponse,
crate::api::CreatePlaylistRequest,
crate::api::UpdatePlaylistRequest,
crate::api::AddTracksRequest,
crate::api::ErrorResponse,
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;