#![allow(non_snake_case, non_camel_case_types, dead_code, clippy::large_enum_variant)]
use chrono::{DateTime, Utc};
use serde::{Deserialize, Serialize};
use serde_json::Value;
#[derive(Debug, Clone, Serialize, Deserialize, Default)]
pub struct BlobRef {
#[serde(rename = "$type", default, skip_serializing_if = "Option::is_none")]
pub r#type: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub ref_: Option<BlobCidRef>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub mime_type: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub size: Option<i64>,
}
#[derive(Debug, Clone, Serialize, Deserialize, Default)]
pub struct BlobCidRef {
#[serde(rename = "$link", default, skip_serializing_if = "Option::is_none")]
pub link: Option<String>,
}
#[derive(Debug, Clone, Serialize, Deserialize, Default)]
pub struct ActorArtistViewBasic {
#[serde(default, skip_serializing_if = "Option::is_none")]
pub id: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub name: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub picture: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub uri: Option<String>,
#[serde(rename = "user1Rank", default, skip_serializing_if = "Option::is_none")]
pub user1_rank: Option<i64>,
#[serde(rename = "user2Rank", default, skip_serializing_if = "Option::is_none")]
pub user2_rank: Option<i64>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub weight: Option<i64>,
}
#[derive(Debug, Clone, Serialize, Deserialize, Default)]
pub struct ActorCompatibilityViewBasic {
#[serde(rename = "compatibilityLevel", default, skip_serializing_if = "Option::is_none")]
pub compatibility_level: Option<i64>,
#[serde(rename = "compatibilityPercentage", default, skip_serializing_if = "Option::is_none")]
pub compatibility_percentage: Option<i64>,
#[serde(rename = "sharedArtists", default, skip_serializing_if = "Option::is_none")]
pub shared_artists: Option<i64>,
#[serde(rename = "topSharedArtistNames", default, skip_serializing_if = "Vec::is_empty")]
pub top_shared_artist_names: Vec<String>,
#[serde(rename = "topSharedDetailedArtists", default, skip_serializing_if = "Vec::is_empty")]
pub top_shared_detailed_artists: Vec<ActorArtistViewBasic>,
#[serde(rename = "user1ArtistCount", default, skip_serializing_if = "Option::is_none")]
pub user1_artist_count: Option<i64>,
#[serde(rename = "user2ArtistCount", default, skip_serializing_if = "Option::is_none")]
pub user2_artist_count: Option<i64>,
}
#[derive(Debug, Clone, Serialize, Deserialize, Default)]
pub struct ActorNeighbourViewBasic {
#[serde(rename = "userId", default, skip_serializing_if = "Option::is_none")]
pub user_id: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub did: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub handle: Option<String>,
#[serde(rename = "displayName", default, skip_serializing_if = "Option::is_none")]
pub display_name: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub avatar: Option<String>,
#[serde(rename = "sharedArtistsCount", default, skip_serializing_if = "Option::is_none")]
pub shared_artists_count: Option<i64>,
#[serde(rename = "similarityScore", default, skip_serializing_if = "Option::is_none")]
pub similarity_score: Option<i64>,
#[serde(rename = "topSharedArtistNames", default, skip_serializing_if = "Vec::is_empty")]
pub top_shared_artist_names: Vec<String>,
#[serde(rename = "topSharedArtistsDetails", default, skip_serializing_if = "Vec::is_empty")]
pub top_shared_artists_details: Vec<ArtistViewBasic>,
}
#[derive(Debug, Clone, Serialize, Deserialize, Default)]
pub struct ActorProfileViewBasic {
#[serde(default, skip_serializing_if = "Option::is_none")]
pub id: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub did: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub handle: Option<String>,
#[serde(rename = "displayName", default, skip_serializing_if = "Option::is_none")]
pub display_name: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub avatar: Option<String>,
#[serde(rename = "createdAt", default, skip_serializing_if = "Option::is_none")]
pub created_at: Option<DateTime<Utc>>,
#[serde(rename = "updatedAt", default, skip_serializing_if = "Option::is_none")]
pub updated_at: Option<DateTime<Utc>>,
}
#[derive(Debug, Clone, Serialize, Deserialize, Default)]
pub struct ActorProfileViewDetailed {
#[serde(default, skip_serializing_if = "Option::is_none")]
pub id: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub did: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub handle: Option<String>,
#[serde(rename = "displayName", default, skip_serializing_if = "Option::is_none")]
pub display_name: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub avatar: Option<String>,
#[serde(rename = "createdAt", default, skip_serializing_if = "Option::is_none")]
pub created_at: Option<DateTime<Utc>>,
#[serde(rename = "updatedAt", default, skip_serializing_if = "Option::is_none")]
pub updated_at: Option<DateTime<Utc>>,
}
#[derive(Debug, Clone, Serialize, Deserialize, Default)]
pub struct ActorTrackView {
pub name: String,
pub artist: String,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub album: Option<String>,
#[serde(rename = "albumCoverUrl", default, skip_serializing_if = "Option::is_none")]
pub album_cover_url: Option<String>,
#[serde(rename = "durationMs", default, skip_serializing_if = "Option::is_none")]
pub duration_ms: Option<i64>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub source: Option<String>,
#[serde(rename = "recordingMbId", default, skip_serializing_if = "Option::is_none")]
pub recording_mb_id: Option<String>,
}
#[derive(Debug, Clone, Serialize, Deserialize, Default)]
pub struct AddDirectoryToQueueParams {
#[serde(rename = "playerId", default, skip_serializing_if = "Option::is_none")]
pub player_id: Option<String>,
pub directory: String,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub position: Option<i64>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub shuffle: Option<bool>,
}
#[derive(Debug, Clone, Serialize, Deserialize, Default)]
pub struct AddItemsToQueueParams {
#[serde(rename = "playerId", default, skip_serializing_if = "Option::is_none")]
pub player_id: Option<String>,
pub items: Vec<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub position: Option<i64>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub shuffle: Option<bool>,
}
#[derive(Debug, Clone, Serialize, Deserialize, Default)]
pub struct AlbumRecord {
pub title: String,
pub artist: String,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub duration: Option<i64>,
#[serde(rename = "releaseDate", default, skip_serializing_if = "Option::is_none")]
pub release_date: Option<DateTime<Utc>>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub year: Option<i64>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub genre: Option<String>,
#[serde(rename = "albumArt", default, skip_serializing_if = "Option::is_none")]
pub album_art: Option<BlobRef>,
#[serde(rename = "albumArtUrl", default, skip_serializing_if = "Option::is_none")]
pub album_art_url: Option<String>,
#[serde(default, skip_serializing_if = "Vec::is_empty")]
pub tags: Vec<String>,
#[serde(rename = "youtubeLink", default, skip_serializing_if = "Option::is_none")]
pub youtube_link: Option<String>,
#[serde(rename = "spotifyLink", default, skip_serializing_if = "Option::is_none")]
pub spotify_link: Option<String>,
#[serde(rename = "tidalLink", default, skip_serializing_if = "Option::is_none")]
pub tidal_link: Option<String>,
#[serde(rename = "appleMusicLink", default, skip_serializing_if = "Option::is_none")]
pub apple_music_link: Option<String>,
#[serde(rename = "createdAt")]
pub created_at: DateTime<Utc>,
}
#[derive(Debug, Clone, Serialize, Deserialize, Default)]
pub struct AlbumViewBasic {
#[serde(default, skip_serializing_if = "Option::is_none")]
pub id: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub uri: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub title: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub artist: Option<String>,
#[serde(rename = "artistUri", default, skip_serializing_if = "Option::is_none")]
pub artist_uri: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub year: Option<i64>,
#[serde(rename = "albumArt", default, skip_serializing_if = "Option::is_none")]
pub album_art: Option<String>,
#[serde(rename = "releaseDate", default, skip_serializing_if = "Option::is_none")]
pub release_date: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub sha256: Option<String>,
#[serde(rename = "playCount", default, skip_serializing_if = "Option::is_none")]
pub play_count: Option<i64>,
#[serde(rename = "uniqueListeners", default, skip_serializing_if = "Option::is_none")]
pub unique_listeners: Option<i64>,
}
#[derive(Debug, Clone, Serialize, Deserialize, Default)]
pub struct AlbumViewDetailed {
#[serde(default, skip_serializing_if = "Option::is_none")]
pub id: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub uri: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub title: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub artist: Option<String>,
#[serde(rename = "artistUri", default, skip_serializing_if = "Option::is_none")]
pub artist_uri: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub year: Option<i64>,
#[serde(rename = "albumArt", default, skip_serializing_if = "Option::is_none")]
pub album_art: Option<String>,
#[serde(rename = "releaseDate", default, skip_serializing_if = "Option::is_none")]
pub release_date: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub sha256: Option<String>,
#[serde(rename = "playCount", default, skip_serializing_if = "Option::is_none")]
pub play_count: Option<i64>,
#[serde(rename = "uniqueListeners", default, skip_serializing_if = "Option::is_none")]
pub unique_listeners: Option<i64>,
#[serde(default, skip_serializing_if = "Vec::is_empty")]
pub tags: Vec<String>,
#[serde(default, skip_serializing_if = "Vec::is_empty")]
pub tracks: Vec<SongViewBasic>,
}
#[derive(Debug, Clone, Serialize, Deserialize, Default)]
pub struct ApiKeyView {
#[serde(default, skip_serializing_if = "Option::is_none")]
pub id: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub name: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub description: Option<String>,
#[serde(rename = "createdAt", default, skip_serializing_if = "Option::is_none")]
pub created_at: Option<DateTime<Utc>>,
}
#[derive(Debug, Clone, Serialize, Deserialize, Default)]
pub struct ArtistListenerViewBasic {
#[serde(default, skip_serializing_if = "Option::is_none")]
pub id: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub did: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub handle: Option<String>,
#[serde(rename = "displayName", default, skip_serializing_if = "Option::is_none")]
pub display_name: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub avatar: Option<String>,
#[serde(rename = "mostListenedSong", default, skip_serializing_if = "Option::is_none")]
pub most_listened_song: Option<ArtistSongViewBasic>,
#[serde(rename = "totalPlays", default, skip_serializing_if = "Option::is_none")]
pub total_plays: Option<i64>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub rank: Option<i64>,
}
#[derive(Debug, Clone, Serialize, Deserialize, Default)]
pub struct ArtistMbid {
#[serde(default, skip_serializing_if = "Option::is_none")]
pub mbid: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub name: Option<String>,
}
#[derive(Debug, Clone, Serialize, Deserialize, Default)]
pub struct ArtistRecentListenerView {
#[serde(default, skip_serializing_if = "Option::is_none")]
pub id: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub did: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub handle: Option<String>,
#[serde(rename = "displayName", default, skip_serializing_if = "Option::is_none")]
pub display_name: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub avatar: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub timestamp: Option<DateTime<Utc>>,
#[serde(rename = "scrobbleUri", default, skip_serializing_if = "Option::is_none")]
pub scrobble_uri: Option<String>,
}
#[derive(Debug, Clone, Serialize, Deserialize, Default)]
pub struct ArtistRecord {
pub name: String,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub bio: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub picture: Option<BlobRef>,
#[serde(rename = "pictureUrl", default, skip_serializing_if = "Option::is_none")]
pub picture_url: Option<String>,
#[serde(default, skip_serializing_if = "Vec::is_empty")]
pub tags: Vec<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub born: Option<DateTime<Utc>>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub died: Option<DateTime<Utc>>,
#[serde(rename = "bornIn", default, skip_serializing_if = "Option::is_none")]
pub born_in: Option<String>,
#[serde(rename = "createdAt")]
pub created_at: DateTime<Utc>,
}
#[derive(Debug, Clone, Serialize, Deserialize, Default)]
pub struct ArtistSongViewBasic {
#[serde(default, skip_serializing_if = "Option::is_none")]
pub uri: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub title: Option<String>,
#[serde(rename = "playCount", default, skip_serializing_if = "Option::is_none")]
pub play_count: Option<i64>,
}
#[derive(Debug, Clone, Serialize, Deserialize, Default)]
pub struct ArtistViewBasic {
#[serde(default, skip_serializing_if = "Option::is_none")]
pub id: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub uri: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub name: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub picture: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub sha256: Option<String>,
#[serde(rename = "playCount", default, skip_serializing_if = "Option::is_none")]
pub play_count: Option<i64>,
#[serde(rename = "uniqueListeners", default, skip_serializing_if = "Option::is_none")]
pub unique_listeners: Option<i64>,
#[serde(default, skip_serializing_if = "Vec::is_empty")]
pub tags: Vec<String>,
}
#[derive(Debug, Clone, Serialize, Deserialize, Default)]
pub struct ArtistViewDetailed {
#[serde(default, skip_serializing_if = "Option::is_none")]
pub id: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub uri: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub name: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub picture: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub sha256: Option<String>,
#[serde(rename = "playCount", default, skip_serializing_if = "Option::is_none")]
pub play_count: Option<i64>,
#[serde(rename = "uniqueListeners", default, skip_serializing_if = "Option::is_none")]
pub unique_listeners: Option<i64>,
#[serde(default, skip_serializing_if = "Vec::is_empty")]
pub tags: Vec<String>,
}
#[derive(Debug, Clone, Serialize, Deserialize, Default)]
pub struct ChartsScrobbleViewBasic {
#[serde(default, skip_serializing_if = "Option::is_none")]
pub date: Option<DateTime<Utc>>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub count: Option<i64>,
}
#[derive(Debug, Clone, Serialize, Deserialize, Default)]
pub struct ChartsView {
#[serde(default, skip_serializing_if = "Vec::is_empty")]
pub scrobbles: Vec<ChartsScrobbleViewBasic>,
}
#[derive(Debug, Clone, Serialize, Deserialize, Default)]
pub struct CreateApikeyInput {
pub name: String,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub description: Option<String>,
}
#[derive(Debug, Clone, Serialize, Deserialize, Default)]
pub struct CreatePlaylistParams {
pub name: String,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub description: Option<String>,
}
#[derive(Debug, Clone, Serialize, Deserialize, Default)]
pub struct CreateScrobbleInput {
pub title: String,
pub artist: String,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub album: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub duration: Option<i64>,
#[serde(rename = "mbId", default, skip_serializing_if = "Option::is_none")]
pub mb_id: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub isrc: Option<String>,
#[serde(rename = "albumArt", default, skip_serializing_if = "Option::is_none")]
pub album_art: Option<String>,
#[serde(rename = "trackNumber", default, skip_serializing_if = "Option::is_none")]
pub track_number: Option<i64>,
#[serde(rename = "releaseDate", default, skip_serializing_if = "Option::is_none")]
pub release_date: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub year: Option<i64>,
#[serde(rename = "discNumber", default, skip_serializing_if = "Option::is_none")]
pub disc_number: Option<i64>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub lyrics: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub composer: Option<String>,
#[serde(rename = "copyrightMessage", default, skip_serializing_if = "Option::is_none")]
pub copyright_message: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub label: Option<String>,
#[serde(rename = "artistPicture", default, skip_serializing_if = "Option::is_none")]
pub artist_picture: Option<String>,
#[serde(rename = "spotifyLink", default, skip_serializing_if = "Option::is_none")]
pub spotify_link: Option<String>,
#[serde(rename = "lastfmLink", default, skip_serializing_if = "Option::is_none")]
pub lastfm_link: Option<String>,
#[serde(rename = "tidalLink", default, skip_serializing_if = "Option::is_none")]
pub tidal_link: Option<String>,
#[serde(rename = "appleMusicLink", default, skip_serializing_if = "Option::is_none")]
pub apple_music_link: Option<String>,
#[serde(rename = "youtubeLink", default, skip_serializing_if = "Option::is_none")]
pub youtube_link: Option<String>,
#[serde(rename = "deezerLink", default, skip_serializing_if = "Option::is_none")]
pub deezer_link: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub timestamp: Option<i64>,
}
#[derive(Debug, Clone, Serialize, Deserialize, Default)]
pub struct CreateShoutInput {
#[serde(default, skip_serializing_if = "Option::is_none")]
pub message: Option<String>,
}
#[derive(Debug, Clone, Serialize, Deserialize, Default)]
pub struct CreateSongInput {
pub title: String,
pub artist: String,
#[serde(rename = "albumArtist")]
pub album_artist: String,
pub album: String,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub duration: Option<i64>,
#[serde(rename = "mbId", default, skip_serializing_if = "Option::is_none")]
pub mb_id: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub isrc: Option<String>,
#[serde(rename = "albumArt", default, skip_serializing_if = "Option::is_none")]
pub album_art: Option<String>,
#[serde(rename = "trackNumber", default, skip_serializing_if = "Option::is_none")]
pub track_number: Option<i64>,
#[serde(rename = "releaseDate", default, skip_serializing_if = "Option::is_none")]
pub release_date: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub year: Option<i64>,
#[serde(rename = "discNumber", default, skip_serializing_if = "Option::is_none")]
pub disc_number: Option<i64>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub lyrics: Option<String>,
}
#[derive(Debug, Clone, Serialize, Deserialize, Default)]
pub struct DescribeFeedGeneratorOutput {
#[serde(default, skip_serializing_if = "Option::is_none")]
pub did: Option<String>,
#[serde(default, skip_serializing_if = "Vec::is_empty")]
pub feeds: Vec<FeedUriView>,
}
#[derive(Debug, Clone, Serialize, Deserialize, Default)]
pub struct DescribeFeedGeneratorParams {
}
#[derive(Debug, Clone, Serialize, Deserialize, Default)]
pub struct DislikeShoutInput {
#[serde(default, skip_serializing_if = "Option::is_none")]
pub uri: Option<String>,
}
#[derive(Debug, Clone, Serialize, Deserialize, Default)]
pub struct DislikeSongInput {
#[serde(default, skip_serializing_if = "Option::is_none")]
pub uri: Option<String>,
}
#[derive(Debug, Clone, Serialize, Deserialize, Default)]
pub struct DownloadFileParams {
#[serde(rename = "fileId")]
pub file_id: String,
}
#[derive(Debug, Clone, Serialize, Deserialize, Default)]
pub struct DropboxFileListView {
#[serde(default, skip_serializing_if = "Vec::is_empty")]
pub files: Vec<DropboxFileView>,
}
#[derive(Debug, Clone, Serialize, Deserialize, Default)]
pub struct DropboxFileView {
#[serde(default, skip_serializing_if = "Option::is_none")]
pub id: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub name: Option<String>,
#[serde(rename = "pathLower", default, skip_serializing_if = "Option::is_none")]
pub path_lower: Option<String>,
#[serde(rename = "pathDisplay", default, skip_serializing_if = "Option::is_none")]
pub path_display: Option<String>,
#[serde(rename = "clientModified", default, skip_serializing_if = "Option::is_none")]
pub client_modified: Option<DateTime<Utc>>,
#[serde(rename = "serverModified", default, skip_serializing_if = "Option::is_none")]
pub server_modified: Option<DateTime<Utc>>,
}
#[derive(Debug, Clone, Serialize, Deserialize, Default)]
pub struct DropboxTemporaryLinkView {
#[serde(default, skip_serializing_if = "Option::is_none")]
pub link: Option<String>,
}
#[derive(Debug, Clone, Serialize, Deserialize, Default)]
pub struct FeedGeneratorsView {
#[serde(default, skip_serializing_if = "Vec::is_empty")]
pub feeds: Vec<FeedGeneratorView>,
}
#[derive(Debug, Clone, Serialize, Deserialize, Default)]
pub struct FeedGeneratorView {
#[serde(default, skip_serializing_if = "Option::is_none")]
pub id: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub name: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub description: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub uri: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub avatar: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub creator: Option<ActorProfileViewBasic>,
}
#[derive(Debug, Clone, Serialize, Deserialize, Default)]
pub struct FeedItemView {
#[serde(default, skip_serializing_if = "Option::is_none")]
pub scrobble: Option<ScrobbleViewBasic>,
}
#[derive(Debug, Clone, Serialize, Deserialize, Default)]
pub struct FeedRecommendationsView {
#[serde(default, skip_serializing_if = "Vec::is_empty")]
pub recommendations: Vec<FeedRecommendationView>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub cursor: Option<String>,
}
#[derive(Debug, Clone, Serialize, Deserialize, Default)]
pub struct FeedRecommendationView {
#[serde(default, skip_serializing_if = "Option::is_none")]
pub title: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub artist: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub album: Option<String>,
#[serde(rename = "albumArt", default, skip_serializing_if = "Option::is_none")]
pub album_art: Option<String>,
#[serde(rename = "trackUri", default, skip_serializing_if = "Option::is_none")]
pub track_uri: Option<String>,
#[serde(rename = "artistUri", default, skip_serializing_if = "Option::is_none")]
pub artist_uri: Option<String>,
#[serde(rename = "albumUri", default, skip_serializing_if = "Option::is_none")]
pub album_uri: Option<String>,
#[serde(default, skip_serializing_if = "Vec::is_empty")]
pub genres: Vec<String>,
#[serde(rename = "recommendationScore", default, skip_serializing_if = "Option::is_none")]
pub recommendation_score: Option<i64>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub source: Option<String>,
#[serde(rename = "likesCount", default, skip_serializing_if = "Option::is_none")]
pub likes_count: Option<i64>,
}
#[derive(Debug, Clone, Serialize, Deserialize, Default)]
pub struct FeedRecommendedAlbumsView {
#[serde(default, skip_serializing_if = "Vec::is_empty")]
pub albums: Vec<FeedRecommendedAlbumView>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub cursor: Option<String>,
}
#[derive(Debug, Clone, Serialize, Deserialize, Default)]
pub struct FeedRecommendedAlbumView {
#[serde(default, skip_serializing_if = "Option::is_none")]
pub id: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub uri: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub title: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub artist: Option<String>,
#[serde(rename = "artistUri", default, skip_serializing_if = "Option::is_none")]
pub artist_uri: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub year: Option<i64>,
#[serde(rename = "albumArt", default, skip_serializing_if = "Option::is_none")]
pub album_art: Option<String>,
#[serde(rename = "recommendationScore", default, skip_serializing_if = "Option::is_none")]
pub recommendation_score: Option<i64>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub source: Option<String>,
}
#[derive(Debug, Clone, Serialize, Deserialize, Default)]
pub struct FeedRecommendedArtistsView {
#[serde(default, skip_serializing_if = "Vec::is_empty")]
pub artists: Vec<FeedRecommendedArtistView>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub cursor: Option<String>,
}
#[derive(Debug, Clone, Serialize, Deserialize, Default)]
pub struct FeedRecommendedArtistView {
#[serde(default, skip_serializing_if = "Option::is_none")]
pub id: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub uri: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub name: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub picture: Option<String>,
#[serde(default, skip_serializing_if = "Vec::is_empty")]
pub genres: Vec<String>,
#[serde(rename = "recommendationScore", default, skip_serializing_if = "Option::is_none")]
pub recommendation_score: Option<i64>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub source: Option<String>,
}
#[derive(Debug, Clone, Serialize, Deserialize, Default)]
pub struct FeedSearchResultsView {
#[serde(default, skip_serializing_if = "Vec::is_empty")]
pub hits: Vec<Value>,
#[serde(rename = "processingTimeMs", default, skip_serializing_if = "Option::is_none")]
pub processing_time_ms: Option<i64>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub limit: Option<i64>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub offset: Option<i64>,
#[serde(rename = "estimatedTotalHits", default, skip_serializing_if = "Option::is_none")]
pub estimated_total_hits: Option<i64>,
}
#[derive(Debug, Clone, Serialize, Deserialize, Default)]
pub struct FeedStoriesView {
#[serde(default, skip_serializing_if = "Vec::is_empty")]
pub stories: Vec<FeedStoryView>,
}
#[derive(Debug, Clone, Serialize, Deserialize, Default)]
pub struct FeedStoryView {
#[serde(default, skip_serializing_if = "Option::is_none")]
pub album: Option<String>,
#[serde(rename = "albumArt", default, skip_serializing_if = "Option::is_none")]
pub album_art: Option<String>,
#[serde(rename = "albumArtist", default, skip_serializing_if = "Option::is_none")]
pub album_artist: Option<String>,
#[serde(rename = "albumUri", default, skip_serializing_if = "Option::is_none")]
pub album_uri: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub artist: Option<String>,
#[serde(rename = "artistUri", default, skip_serializing_if = "Option::is_none")]
pub artist_uri: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub avatar: Option<String>,
#[serde(rename = "createdAt", default, skip_serializing_if = "Option::is_none")]
pub created_at: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub did: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub handle: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub id: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub title: Option<String>,
#[serde(rename = "trackId", default, skip_serializing_if = "Option::is_none")]
pub track_id: Option<String>,
#[serde(rename = "trackUri", default, skip_serializing_if = "Option::is_none")]
pub track_uri: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub uri: Option<String>,
}
#[derive(Debug, Clone, Serialize, Deserialize, Default)]
pub struct FeedUriView {
#[serde(default, skip_serializing_if = "Option::is_none")]
pub uri: Option<String>,
}
#[derive(Debug, Clone, Serialize, Deserialize, Default)]
pub struct FeedView {
#[serde(default, skip_serializing_if = "Vec::is_empty")]
pub feed: Vec<FeedItemView>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub cursor: Option<String>,
}
#[derive(Debug, Clone, Serialize, Deserialize, Default)]
pub struct FollowAccountOutput {
pub subject: ActorProfileViewBasic,
pub followers: Vec<ActorProfileViewBasic>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub cursor: Option<String>,
}
#[derive(Debug, Clone, Serialize, Deserialize, Default)]
pub struct FollowAccountParams {
pub account: String,
}
#[derive(Debug, Clone, Serialize, Deserialize, Default)]
pub struct FollowRecord {
#[serde(rename = "createdAt")]
pub created_at: DateTime<Utc>,
pub subject: String,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub via: Option<StrongRef>,
}
#[derive(Debug, Clone, Serialize, Deserialize, Default)]
pub struct GeneratorRecord {
pub did: String,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub avatar: Option<BlobRef>,
#[serde(rename = "displayName")]
pub display_name: String,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub description: Option<String>,
#[serde(rename = "createdAt")]
pub created_at: DateTime<Utc>,
}
#[derive(Debug, Clone, Serialize, Deserialize, Default)]
pub struct GetActorAlbumsOutput {
#[serde(default, skip_serializing_if = "Vec::is_empty")]
pub albums: Vec<AlbumViewBasic>,
}
#[derive(Debug, Clone, Serialize, Deserialize, Default)]
pub struct GetActorAlbumsParams {
pub did: String,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub limit: Option<i64>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub offset: Option<i64>,
#[serde(rename = "startDate", default, skip_serializing_if = "Option::is_none")]
pub start_date: Option<DateTime<Utc>>,
#[serde(rename = "endDate", default, skip_serializing_if = "Option::is_none")]
pub end_date: Option<DateTime<Utc>>,
}
#[derive(Debug, Clone, Serialize, Deserialize, Default)]
pub struct GetActorArtistsOutput {
#[serde(default, skip_serializing_if = "Vec::is_empty")]
pub artists: Vec<ArtistViewBasic>,
}
#[derive(Debug, Clone, Serialize, Deserialize, Default)]
pub struct GetActorArtistsParams {
pub did: String,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub limit: Option<i64>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub offset: Option<i64>,
#[serde(rename = "startDate", default, skip_serializing_if = "Option::is_none")]
pub start_date: Option<DateTime<Utc>>,
#[serde(rename = "endDate", default, skip_serializing_if = "Option::is_none")]
pub end_date: Option<DateTime<Utc>>,
}
#[derive(Debug, Clone, Serialize, Deserialize, Default)]
pub struct GetActorCompatibilityOutput {
#[serde(default, skip_serializing_if = "Option::is_none")]
pub compatibility: Option<ActorCompatibilityViewBasic>,
}
#[derive(Debug, Clone, Serialize, Deserialize, Default)]
pub struct GetActorCompatibilityParams {
pub did: String,
}
#[derive(Debug, Clone, Serialize, Deserialize, Default)]
pub struct GetActorLovedSongsOutput {
#[serde(default, skip_serializing_if = "Vec::is_empty")]
pub tracks: Vec<SongViewBasic>,
}
#[derive(Debug, Clone, Serialize, Deserialize, Default)]
pub struct GetActorLovedSongsParams {
pub did: String,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub limit: Option<i64>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub offset: Option<i64>,
}
#[derive(Debug, Clone, Serialize, Deserialize, Default)]
pub struct GetActorNeighboursOutput {
#[serde(default, skip_serializing_if = "Vec::is_empty")]
pub neighbours: Vec<ActorNeighbourViewBasic>,
}
#[derive(Debug, Clone, Serialize, Deserialize, Default)]
pub struct GetActorNeighboursParams {
pub did: String,
}
#[derive(Debug, Clone, Serialize, Deserialize, Default)]
pub struct GetActorPlaylistsOutput {
#[serde(default, skip_serializing_if = "Vec::is_empty")]
pub playlists: Vec<PlaylistViewBasic>,
}
#[derive(Debug, Clone, Serialize, Deserialize, Default)]
pub struct GetActorPlaylistsParams {
pub did: String,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub limit: Option<i64>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub offset: Option<i64>,
}
#[derive(Debug, Clone, Serialize, Deserialize, Default)]
pub struct GetActorScrobblesOutput {
#[serde(default, skip_serializing_if = "Vec::is_empty")]
pub scrobbles: Vec<ScrobbleViewBasic>,
}
#[derive(Debug, Clone, Serialize, Deserialize, Default)]
pub struct GetActorScrobblesParams {
pub did: String,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub limit: Option<i64>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub offset: Option<i64>,
}
#[derive(Debug, Clone, Serialize, Deserialize, Default)]
pub struct GetActorSongsOutput {
#[serde(default, skip_serializing_if = "Vec::is_empty")]
pub songs: Vec<SongViewBasic>,
}
#[derive(Debug, Clone, Serialize, Deserialize, Default)]
pub struct GetActorSongsParams {
pub did: String,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub limit: Option<i64>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub offset: Option<i64>,
#[serde(rename = "startDate", default, skip_serializing_if = "Option::is_none")]
pub start_date: Option<DateTime<Utc>>,
#[serde(rename = "endDate", default, skip_serializing_if = "Option::is_none")]
pub end_date: Option<DateTime<Utc>>,
}
#[derive(Debug, Clone, Serialize, Deserialize, Default)]
pub struct GetAlbumParams {
pub uri: String,
}
#[derive(Debug, Clone, Serialize, Deserialize, Default)]
pub struct GetAlbumRecommendationsParams {
pub did: String,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub limit: Option<i64>,
}
#[derive(Debug, Clone, Serialize, Deserialize, Default)]
pub struct GetAlbumShoutsOutput {
#[serde(default, skip_serializing_if = "Vec::is_empty")]
pub shouts: Vec<Value>,
}
#[derive(Debug, Clone, Serialize, Deserialize, Default)]
pub struct GetAlbumShoutsParams {
pub uri: String,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub limit: Option<i64>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub offset: Option<i64>,
}
#[derive(Debug, Clone, Serialize, Deserialize, Default)]
pub struct GetAlbumsOutput {
#[serde(default, skip_serializing_if = "Vec::is_empty")]
pub albums: Vec<AlbumViewBasic>,
}
#[derive(Debug, Clone, Serialize, Deserialize, Default)]
pub struct GetAlbumsParams {
#[serde(default, skip_serializing_if = "Option::is_none")]
pub limit: Option<i64>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub offset: Option<i64>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub genre: Option<String>,
}
#[derive(Debug, Clone, Serialize, Deserialize, Default)]
pub struct GetAlbumTracksOutput {
#[serde(default, skip_serializing_if = "Vec::is_empty")]
pub tracks: Vec<SongViewBasic>,
}
#[derive(Debug, Clone, Serialize, Deserialize, Default)]
pub struct GetAlbumTracksParams {
pub uri: String,
}
#[derive(Debug, Clone, Serialize, Deserialize, Default)]
pub struct GetApikeysOutput {
#[serde(rename = "apiKeys", default, skip_serializing_if = "Vec::is_empty")]
pub api_keys: Vec<Value>,
}
#[derive(Debug, Clone, Serialize, Deserialize, Default)]
pub struct GetApikeysParams {
#[serde(default, skip_serializing_if = "Option::is_none")]
pub offset: Option<i64>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub limit: Option<i64>,
}
#[derive(Debug, Clone, Serialize, Deserialize, Default)]
pub struct GetArtistAlbumsOutput {
#[serde(default, skip_serializing_if = "Vec::is_empty")]
pub albums: Vec<AlbumViewBasic>,
}
#[derive(Debug, Clone, Serialize, Deserialize, Default)]
pub struct GetArtistAlbumsParams {
pub uri: String,
}
#[derive(Debug, Clone, Serialize, Deserialize, Default)]
pub struct GetArtistListenersOutput {
#[serde(default, skip_serializing_if = "Vec::is_empty")]
pub listeners: Vec<ArtistListenerViewBasic>,
}
#[derive(Debug, Clone, Serialize, Deserialize, Default)]
pub struct GetArtistListenersParams {
pub uri: String,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub offset: Option<i64>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub limit: Option<i64>,
}
#[derive(Debug, Clone, Serialize, Deserialize, Default)]
pub struct GetArtistParams {
pub uri: String,
}
#[derive(Debug, Clone, Serialize, Deserialize, Default)]
pub struct GetArtistRecentListenersOutput {
#[serde(default, skip_serializing_if = "Vec::is_empty")]
pub listeners: Vec<ArtistRecentListenerView>,
}
#[derive(Debug, Clone, Serialize, Deserialize, Default)]
pub struct GetArtistRecentListenersParams {
pub uri: String,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub offset: Option<i64>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub limit: Option<i64>,
}
#[derive(Debug, Clone, Serialize, Deserialize, Default)]
pub struct GetArtistRecommendationsParams {
pub did: String,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub limit: Option<i64>,
}
#[derive(Debug, Clone, Serialize, Deserialize, Default)]
pub struct GetArtistShoutsOutput {
#[serde(default, skip_serializing_if = "Vec::is_empty")]
pub shouts: Vec<Value>,
}
#[derive(Debug, Clone, Serialize, Deserialize, Default)]
pub struct GetArtistShoutsParams {
pub uri: String,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub limit: Option<i64>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub offset: Option<i64>,
}
#[derive(Debug, Clone, Serialize, Deserialize, Default)]
pub struct GetArtistsOutput {
#[serde(default, skip_serializing_if = "Vec::is_empty")]
pub artists: Vec<ArtistViewBasic>,
}
#[derive(Debug, Clone, Serialize, Deserialize, Default)]
pub struct GetArtistsParams {
#[serde(default, skip_serializing_if = "Option::is_none")]
pub limit: Option<i64>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub offset: Option<i64>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub names: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub genre: Option<String>,
}
#[derive(Debug, Clone, Serialize, Deserialize, Default)]
pub struct GetArtistTracksOutput {
#[serde(default, skip_serializing_if = "Vec::is_empty")]
pub tracks: Vec<SongViewBasic>,
}
#[derive(Debug, Clone, Serialize, Deserialize, Default)]
pub struct GetArtistTracksParams {
#[serde(default, skip_serializing_if = "Option::is_none")]
pub uri: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub limit: Option<i64>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub offset: Option<i64>,
}
#[derive(Debug, Clone, Serialize, Deserialize, Default)]
pub struct GetCurrentlyPlayingParams {
#[serde(rename = "playerId", default, skip_serializing_if = "Option::is_none")]
pub player_id: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub actor: Option<String>,
}
#[derive(Debug, Clone, Serialize, Deserialize, Default)]
pub struct GetFeedGeneratorOutput {
#[serde(default, skip_serializing_if = "Option::is_none")]
pub view: Option<FeedGeneratorView>,
}
#[derive(Debug, Clone, Serialize, Deserialize, Default)]
pub struct GetFeedGeneratorParams {
pub feed: String,
}
#[derive(Debug, Clone, Serialize, Deserialize, Default)]
pub struct GetFeedGeneratorsParams {
#[serde(default, skip_serializing_if = "Option::is_none")]
pub size: Option<i64>,
}
#[derive(Debug, Clone, Serialize, Deserialize, Default)]
pub struct GetFeedParams {
pub feed: String,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub limit: Option<i64>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub cursor: Option<String>,
}
#[derive(Debug, Clone, Serialize, Deserialize, Default)]
pub struct GetFeedSkeletonOutput {
#[serde(default, skip_serializing_if = "Vec::is_empty")]
pub scrobbles: Vec<ScrobbleViewBasic>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub cursor: Option<String>,
}
#[derive(Debug, Clone, Serialize, Deserialize, Default)]
pub struct GetFeedSkeletonParams {
pub feed: String,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub limit: Option<i64>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub offset: Option<i64>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub cursor: Option<String>,
}
#[derive(Debug, Clone, Serialize, Deserialize, Default)]
pub struct GetFileParams {
#[serde(rename = "fileId")]
pub file_id: String,
}
#[derive(Debug, Clone, Serialize, Deserialize, Default)]
pub struct GetFilesParams {
#[serde(default, skip_serializing_if = "Option::is_none")]
pub at: Option<String>,
}
#[derive(Debug, Clone, Serialize, Deserialize, Default)]
pub struct GetFollowersOutput {
pub subject: ActorProfileViewBasic,
pub followers: Vec<ActorProfileViewBasic>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub cursor: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub count: Option<i64>,
}
#[derive(Debug, Clone, Serialize, Deserialize, Default)]
pub struct GetFollowersParams {
pub actor: String,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub limit: Option<i64>,
#[serde(default, skip_serializing_if = "Vec::is_empty")]
pub dids: Vec<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub cursor: Option<String>,
}
#[derive(Debug, Clone, Serialize, Deserialize, Default)]
pub struct GetFollowsOutput {
pub subject: ActorProfileViewBasic,
pub follows: Vec<ActorProfileViewBasic>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub cursor: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub count: Option<i64>,
}
#[derive(Debug, Clone, Serialize, Deserialize, Default)]
pub struct GetFollowsParams {
pub actor: String,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub limit: Option<i64>,
#[serde(default, skip_serializing_if = "Vec::is_empty")]
pub dids: Vec<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub cursor: Option<String>,
}
#[derive(Debug, Clone, Serialize, Deserialize, Default)]
pub struct GetGlobalStatsParams {
}
#[derive(Debug, Clone, Serialize, Deserialize, Default)]
pub struct GetKnownFollowersOutput {
pub subject: ActorProfileViewBasic,
pub followers: Vec<ActorProfileViewBasic>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub cursor: Option<String>,
}
#[derive(Debug, Clone, Serialize, Deserialize, Default)]
pub struct GetKnownFollowersParams {
pub actor: String,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub limit: Option<i64>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub cursor: Option<String>,
}
#[derive(Debug, Clone, Serialize, Deserialize, Default)]
pub struct GetMetadataParams {
pub path: String,
}
#[derive(Debug, Clone, Serialize, Deserialize, Default)]
pub struct GetMirrorSourcesOutput {
pub sources: Vec<MirrorSourceView>,
}
#[derive(Debug, Clone, Serialize, Deserialize, Default)]
pub struct GetMirrorSourcesParams {
}
#[derive(Debug, Clone, Serialize, Deserialize, Default)]
pub struct GetPlaybackQueueParams {
#[serde(rename = "playerId", default, skip_serializing_if = "Option::is_none")]
pub player_id: Option<String>,
}
#[derive(Debug, Clone, Serialize, Deserialize, Default)]
pub struct GetPlaylistParams {
pub uri: String,
}
#[derive(Debug, Clone, Serialize, Deserialize, Default)]
pub struct GetPlaylistsOutput {
#[serde(default, skip_serializing_if = "Vec::is_empty")]
pub playlists: Vec<PlaylistViewBasic>,
}
#[derive(Debug, Clone, Serialize, Deserialize, Default)]
pub struct GetPlaylistsParams {
#[serde(default, skip_serializing_if = "Option::is_none")]
pub limit: Option<i64>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub offset: Option<i64>,
}
#[derive(Debug, Clone, Serialize, Deserialize, Default)]
pub struct GetProfileParams {
#[serde(default, skip_serializing_if = "Option::is_none")]
pub did: Option<String>,
}
#[derive(Debug, Clone, Serialize, Deserialize, Default)]
pub struct GetProfileShoutsOutput {
#[serde(default, skip_serializing_if = "Vec::is_empty")]
pub shouts: Vec<Value>,
}
#[derive(Debug, Clone, Serialize, Deserialize, Default)]
pub struct GetProfileShoutsParams {
pub did: String,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub offset: Option<i64>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub limit: Option<i64>,
}
#[derive(Debug, Clone, Serialize, Deserialize, Default)]
pub struct GetRecommendationsParams {
pub did: String,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub limit: Option<i64>,
}
#[derive(Debug, Clone, Serialize, Deserialize, Default)]
pub struct GetScrobbleParams {
pub uri: String,
}
#[derive(Debug, Clone, Serialize, Deserialize, Default)]
pub struct GetScrobblesChartParams {
#[serde(default, skip_serializing_if = "Option::is_none")]
pub did: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub artisturi: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub albumuri: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub songuri: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub genre: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub from: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub to: Option<String>,
}
#[derive(Debug, Clone, Serialize, Deserialize, Default)]
pub struct GetScrobblesOutput {
#[serde(default, skip_serializing_if = "Vec::is_empty")]
pub scrobbles: Vec<ScrobbleViewBasic>,
}
#[derive(Debug, Clone, Serialize, Deserialize, Default)]
pub struct GetScrobblesParams {
#[serde(default, skip_serializing_if = "Option::is_none")]
pub did: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub following: Option<bool>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub limit: Option<i64>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub offset: Option<i64>,
}
#[derive(Debug, Clone, Serialize, Deserialize, Default)]
pub struct GetShoutRepliesOutput {
#[serde(default, skip_serializing_if = "Vec::is_empty")]
pub shouts: Vec<Value>,
}
#[derive(Debug, Clone, Serialize, Deserialize, Default)]
pub struct GetShoutRepliesParams {
pub uri: String,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub limit: Option<i64>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub offset: Option<i64>,
}
#[derive(Debug, Clone, Serialize, Deserialize, Default)]
pub struct GetSongParams {
#[serde(default, skip_serializing_if = "Option::is_none")]
pub uri: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub mbid: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub isrc: Option<String>,
#[serde(rename = "spotifyId", default, skip_serializing_if = "Option::is_none")]
pub spotify_id: Option<String>,
}
#[derive(Debug, Clone, Serialize, Deserialize, Default)]
pub struct GetSongRecentListenersOutput {
#[serde(default, skip_serializing_if = "Vec::is_empty")]
pub listeners: Vec<SongRecentListenerView>,
}
#[derive(Debug, Clone, Serialize, Deserialize, Default)]
pub struct GetSongRecentListenersParams {
pub uri: String,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub offset: Option<i64>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub limit: Option<i64>,
}
#[derive(Debug, Clone, Serialize, Deserialize, Default)]
pub struct GetSongsOutput {
#[serde(default, skip_serializing_if = "Vec::is_empty")]
pub songs: Vec<SongViewBasic>,
}
#[derive(Debug, Clone, Serialize, Deserialize, Default)]
pub struct GetSongsParams {
#[serde(default, skip_serializing_if = "Option::is_none")]
pub limit: Option<i64>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub offset: Option<i64>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub genre: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub mbid: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub isrc: Option<String>,
#[serde(rename = "spotifyId", default, skip_serializing_if = "Option::is_none")]
pub spotify_id: Option<String>,
}
#[derive(Debug, Clone, Serialize, Deserialize, Default)]
pub struct GetStatsParams {
pub did: String,
}
#[derive(Debug, Clone, Serialize, Deserialize, Default)]
pub struct GetStoriesParams {
#[serde(default, skip_serializing_if = "Option::is_none")]
pub size: Option<i64>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub feed: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub following: Option<bool>,
}
#[derive(Debug, Clone, Serialize, Deserialize, Default)]
pub struct GetTemporaryLinkParams {
pub path: String,
}
#[derive(Debug, Clone, Serialize, Deserialize, Default)]
pub struct GetTopArtistsOutput {
#[serde(default, skip_serializing_if = "Vec::is_empty")]
pub artists: Vec<ArtistViewBasic>,
}
#[derive(Debug, Clone, Serialize, Deserialize, Default)]
pub struct GetTopArtistsParams {
#[serde(default, skip_serializing_if = "Option::is_none")]
pub limit: Option<i64>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub offset: Option<i64>,
#[serde(rename = "startDate", default, skip_serializing_if = "Option::is_none")]
pub start_date: Option<DateTime<Utc>>,
#[serde(rename = "endDate", default, skip_serializing_if = "Option::is_none")]
pub end_date: Option<DateTime<Utc>>,
}
#[derive(Debug, Clone, Serialize, Deserialize, Default)]
pub struct GetTopTracksOutput {
#[serde(default, skip_serializing_if = "Vec::is_empty")]
pub tracks: Vec<SongViewBasic>,
}
#[derive(Debug, Clone, Serialize, Deserialize, Default)]
pub struct GetTopTracksParams {
#[serde(default, skip_serializing_if = "Option::is_none")]
pub limit: Option<i64>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub offset: Option<i64>,
#[serde(rename = "startDate", default, skip_serializing_if = "Option::is_none")]
pub start_date: Option<DateTime<Utc>>,
#[serde(rename = "endDate", default, skip_serializing_if = "Option::is_none")]
pub end_date: Option<DateTime<Utc>>,
}
#[derive(Debug, Clone, Serialize, Deserialize, Default)]
pub struct GetTrackShoutsOutput {
#[serde(default, skip_serializing_if = "Vec::is_empty")]
pub shouts: Vec<Value>,
}
#[derive(Debug, Clone, Serialize, Deserialize, Default)]
pub struct GetTrackShoutsParams {
pub uri: String,
}
#[derive(Debug, Clone, Serialize, Deserialize, Default)]
pub struct GetWrappedParams {
pub did: String,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub year: Option<i64>,
}
#[derive(Debug, Clone, Serialize, Deserialize, Default)]
pub struct GoogledriveFileListView {
#[serde(default, skip_serializing_if = "Vec::is_empty")]
pub files: Vec<GoogledriveFileView>,
}
#[derive(Debug, Clone, Serialize, Deserialize, Default)]
pub struct GoogledriveFileView {
#[serde(default, skip_serializing_if = "Option::is_none")]
pub id: Option<String>,
}
#[derive(Debug, Clone, Serialize, Deserialize, Default)]
pub struct GraphNotFoundActor {
pub actor: String,
#[serde(rename = "notFound")]
pub not_found: bool,
}
#[derive(Debug, Clone, Serialize, Deserialize, Default)]
pub struct GraphRelationship {
pub did: String,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub following: Option<String>,
#[serde(rename = "followedBy", default, skip_serializing_if = "Option::is_none")]
pub followed_by: Option<String>,
}
#[derive(Debug, Clone, Serialize, Deserialize, Default)]
pub struct InsertDirectoryParams {
pub uri: String,
pub directory: String,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub position: Option<i64>,
}
#[derive(Debug, Clone, Serialize, Deserialize, Default)]
pub struct InsertFilesParams {
pub uri: String,
pub files: Vec<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub position: Option<i64>,
}
#[derive(Debug, Clone, Serialize, Deserialize, Default)]
pub struct LikeRecord {
#[serde(rename = "createdAt")]
pub created_at: DateTime<Utc>,
pub subject: StrongRef,
}
#[derive(Debug, Clone, Serialize, Deserialize, Default)]
pub struct LikeShoutInput {
#[serde(default, skip_serializing_if = "Option::is_none")]
pub uri: Option<String>,
}
#[derive(Debug, Clone, Serialize, Deserialize, Default)]
pub struct LikeSongInput {
#[serde(default, skip_serializing_if = "Option::is_none")]
pub uri: Option<String>,
}
#[derive(Debug, Clone, Serialize, Deserialize, Default)]
pub struct MatchSongParams {
pub title: String,
pub artist: String,
#[serde(rename = "mbId", default, skip_serializing_if = "Option::is_none")]
pub mb_id: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub isrc: Option<String>,
}
#[derive(Debug, Clone, Serialize, Deserialize, Default)]
pub struct MirrorSourceView {
pub provider: String,
pub enabled: bool,
#[serde(rename = "externalUsername", default, skip_serializing_if = "Option::is_none")]
pub external_username: Option<String>,
#[serde(rename = "hasCredentials")]
pub has_credentials: bool,
#[serde(rename = "lastPolledAt", default, skip_serializing_if = "Option::is_none")]
pub last_polled_at: Option<DateTime<Utc>>,
#[serde(rename = "lastScrobbleSeenAt", default, skip_serializing_if = "Option::is_none")]
pub last_scrobble_seen_at: Option<DateTime<Utc>>,
}
#[derive(Debug, Clone, Serialize, Deserialize, Default)]
pub struct NextParams {
#[serde(rename = "playerId", default, skip_serializing_if = "Option::is_none")]
pub player_id: Option<String>,
}
#[derive(Debug, Clone, Serialize, Deserialize, Default)]
pub struct PauseParams {
#[serde(rename = "playerId", default, skip_serializing_if = "Option::is_none")]
pub player_id: Option<String>,
}
#[derive(Debug, Clone, Serialize, Deserialize, Default)]
pub struct PlayDirectoryParams {
#[serde(rename = "playerId", default, skip_serializing_if = "Option::is_none")]
pub player_id: Option<String>,
#[serde(rename = "directoryId")]
pub directory_id: String,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub shuffle: Option<bool>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub recurse: Option<bool>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub position: Option<i64>,
}
#[derive(Debug, Clone, Serialize, Deserialize, Default)]
pub struct PlayerCurrentlyPlayingViewDetailed {
#[serde(default, skip_serializing_if = "Option::is_none")]
pub title: Option<String>,
}
#[derive(Debug, Clone, Serialize, Deserialize, Default)]
pub struct PlayerPlaybackQueueViewDetailed {
#[serde(default, skip_serializing_if = "Vec::is_empty")]
pub tracks: Vec<SongViewBasic>,
}
#[derive(Debug, Clone, Serialize, Deserialize, Default)]
pub struct PlayFileParams {
#[serde(rename = "playerId", default, skip_serializing_if = "Option::is_none")]
pub player_id: Option<String>,
#[serde(rename = "fileId")]
pub file_id: String,
}
#[derive(Debug, Clone, Serialize, Deserialize, Default)]
pub struct PlaylistItemRecord {
pub subject: StrongRef,
#[serde(rename = "createdAt")]
pub created_at: DateTime<Utc>,
pub track: SongViewBasic,
pub order: i64,
}
#[derive(Debug, Clone, Serialize, Deserialize, Default)]
pub struct PlaylistRecord {
pub name: String,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub description: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub picture: Option<BlobRef>,
#[serde(rename = "pictureUrl", default, skip_serializing_if = "Option::is_none")]
pub picture_url: Option<String>,
#[serde(rename = "createdAt")]
pub created_at: DateTime<Utc>,
#[serde(rename = "spotifyLink", default, skip_serializing_if = "Option::is_none")]
pub spotify_link: Option<String>,
#[serde(rename = "tidalLink", default, skip_serializing_if = "Option::is_none")]
pub tidal_link: Option<String>,
#[serde(rename = "youtubeLink", default, skip_serializing_if = "Option::is_none")]
pub youtube_link: Option<String>,
#[serde(rename = "appleMusicLink", default, skip_serializing_if = "Option::is_none")]
pub apple_music_link: Option<String>,
}
#[derive(Debug, Clone, Serialize, Deserialize, Default)]
pub struct PlaylistViewBasic {
#[serde(default, skip_serializing_if = "Option::is_none")]
pub id: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub title: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub uri: Option<String>,
#[serde(rename = "curatorDid", default, skip_serializing_if = "Option::is_none")]
pub curator_did: Option<String>,
#[serde(rename = "curatorHandle", default, skip_serializing_if = "Option::is_none")]
pub curator_handle: Option<String>,
#[serde(rename = "curatorName", default, skip_serializing_if = "Option::is_none")]
pub curator_name: Option<String>,
#[serde(rename = "curatorAvatarUrl", default, skip_serializing_if = "Option::is_none")]
pub curator_avatar_url: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub description: Option<String>,
#[serde(rename = "coverImageUrl", default, skip_serializing_if = "Option::is_none")]
pub cover_image_url: Option<String>,
#[serde(rename = "createdAt", default, skip_serializing_if = "Option::is_none")]
pub created_at: Option<DateTime<Utc>>,
#[serde(rename = "trackCount", default, skip_serializing_if = "Option::is_none")]
pub track_count: Option<i64>,
}
#[derive(Debug, Clone, Serialize, Deserialize, Default)]
pub struct PlaylistViewDetailed {
#[serde(default, skip_serializing_if = "Option::is_none")]
pub id: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub title: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub uri: Option<String>,
#[serde(rename = "curatorDid", default, skip_serializing_if = "Option::is_none")]
pub curator_did: Option<String>,
#[serde(rename = "curatorHandle", default, skip_serializing_if = "Option::is_none")]
pub curator_handle: Option<String>,
#[serde(rename = "curatorName", default, skip_serializing_if = "Option::is_none")]
pub curator_name: Option<String>,
#[serde(rename = "curatorAvatarUrl", default, skip_serializing_if = "Option::is_none")]
pub curator_avatar_url: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub description: Option<String>,
#[serde(rename = "coverImageUrl", default, skip_serializing_if = "Option::is_none")]
pub cover_image_url: Option<String>,
#[serde(rename = "createdAt", default, skip_serializing_if = "Option::is_none")]
pub created_at: Option<DateTime<Utc>>,
#[serde(default, skip_serializing_if = "Vec::is_empty")]
pub tracks: Vec<SongViewBasic>,
}
#[derive(Debug, Clone, Serialize, Deserialize, Default)]
pub struct PlayParams {
#[serde(rename = "playerId", default, skip_serializing_if = "Option::is_none")]
pub player_id: Option<String>,
}
#[derive(Debug, Clone, Serialize, Deserialize, Default)]
pub struct PreviousParams {
#[serde(rename = "playerId", default, skip_serializing_if = "Option::is_none")]
pub player_id: Option<String>,
}
#[derive(Debug, Clone, Serialize, Deserialize, Default)]
pub struct ProfileRecord {
#[serde(rename = "displayName", default, skip_serializing_if = "Option::is_none")]
pub display_name: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub description: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub avatar: Option<BlobRef>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub banner: Option<BlobRef>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub labels: Option<Value>,
#[serde(rename = "joinedViaStarterPack", default, skip_serializing_if = "Option::is_none")]
pub joined_via_starter_pack: Option<StrongRef>,
#[serde(rename = "createdAt", default, skip_serializing_if = "Option::is_none")]
pub created_at: Option<DateTime<Utc>>,
}
#[derive(Debug, Clone, Serialize, Deserialize, Default)]
pub struct PutMirrorSourceInput {
pub provider: String,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub enabled: Option<bool>,
#[serde(rename = "externalUsername", default, skip_serializing_if = "Option::is_none")]
pub external_username: Option<String>,
#[serde(rename = "apiKey", default, skip_serializing_if = "Option::is_none")]
pub api_key: Option<String>,
}
#[derive(Debug, Clone, Serialize, Deserialize, Default)]
pub struct RadioRecord {
pub name: String,
pub url: String,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub description: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub genre: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub logo: Option<BlobRef>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub website: Option<String>,
#[serde(rename = "createdAt")]
pub created_at: DateTime<Utc>,
}
#[derive(Debug, Clone, Serialize, Deserialize, Default)]
pub struct RadioViewBasic {
#[serde(default, skip_serializing_if = "Option::is_none")]
pub id: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub name: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub description: Option<String>,
#[serde(rename = "createdAt", default, skip_serializing_if = "Option::is_none")]
pub created_at: Option<DateTime<Utc>>,
}
#[derive(Debug, Clone, Serialize, Deserialize, Default)]
pub struct RadioViewDetailed {
#[serde(default, skip_serializing_if = "Option::is_none")]
pub id: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub name: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub description: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub website: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub url: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub genre: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub logo: Option<String>,
#[serde(rename = "createdAt", default, skip_serializing_if = "Option::is_none")]
pub created_at: Option<DateTime<Utc>>,
}
#[derive(Debug, Clone, Serialize, Deserialize, Default)]
pub struct RemoveApikeyParams {
pub id: String,
}
#[derive(Debug, Clone, Serialize, Deserialize, Default)]
pub struct RemovePlaylistParams {
pub uri: String,
}
#[derive(Debug, Clone, Serialize, Deserialize, Default)]
pub struct RemoveShoutParams {
pub id: String,
}
#[derive(Debug, Clone, Serialize, Deserialize, Default)]
pub struct RemoveTrackParams {
pub uri: String,
pub position: i64,
}
#[derive(Debug, Clone, Serialize, Deserialize, Default)]
pub struct ReplyShoutInput {
#[serde(rename = "shoutId")]
pub shout_id: String,
pub message: String,
}
#[derive(Debug, Clone, Serialize, Deserialize, Default)]
pub struct ReportShoutInput {
#[serde(rename = "shoutId")]
pub shout_id: String,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub reason: Option<String>,
}
#[derive(Debug, Clone, Serialize, Deserialize, Default)]
pub struct ScrobbleFirstScrobbleView {
#[serde(default, skip_serializing_if = "Option::is_none")]
pub handle: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub avatar: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub timestamp: Option<DateTime<Utc>>,
}
#[derive(Debug, Clone, Serialize, Deserialize, Default)]
pub struct ScrobbleRecord {
pub title: String,
pub artist: String,
#[serde(default, skip_serializing_if = "Vec::is_empty")]
pub artists: Vec<ArtistMbid>,
#[serde(rename = "albumArtist")]
pub album_artist: String,
pub album: String,
pub duration: i64,
#[serde(rename = "trackNumber", default, skip_serializing_if = "Option::is_none")]
pub track_number: Option<i64>,
#[serde(rename = "discNumber", default, skip_serializing_if = "Option::is_none")]
pub disc_number: Option<i64>,
#[serde(rename = "releaseDate", default, skip_serializing_if = "Option::is_none")]
pub release_date: Option<DateTime<Utc>>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub year: Option<i64>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub genre: Option<String>,
#[serde(default, skip_serializing_if = "Vec::is_empty")]
pub tags: Vec<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub composer: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub lyrics: Option<String>,
#[serde(rename = "copyrightMessage", default, skip_serializing_if = "Option::is_none")]
pub copyright_message: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub wiki: Option<String>,
#[serde(rename = "albumArt", default, skip_serializing_if = "Option::is_none")]
pub album_art: Option<BlobRef>,
#[serde(rename = "albumArtUrl", default, skip_serializing_if = "Option::is_none")]
pub album_art_url: Option<String>,
#[serde(rename = "youtubeLink", default, skip_serializing_if = "Option::is_none")]
pub youtube_link: Option<String>,
#[serde(rename = "spotifyLink", default, skip_serializing_if = "Option::is_none")]
pub spotify_link: Option<String>,
#[serde(rename = "tidalLink", default, skip_serializing_if = "Option::is_none")]
pub tidal_link: Option<String>,
#[serde(rename = "appleMusicLink", default, skip_serializing_if = "Option::is_none")]
pub apple_music_link: Option<String>,
#[serde(rename = "createdAt")]
pub created_at: DateTime<Utc>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub mbid: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub label: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub isrc: Option<String>,
}
#[derive(Debug, Clone, Serialize, Deserialize, Default)]
pub struct ScrobbleViewBasic {
#[serde(default, skip_serializing_if = "Option::is_none")]
pub id: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub user: Option<String>,
#[serde(rename = "userDisplayName", default, skip_serializing_if = "Option::is_none")]
pub user_display_name: Option<String>,
#[serde(rename = "userAvatar", default, skip_serializing_if = "Option::is_none")]
pub user_avatar: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub title: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub artist: Option<String>,
#[serde(rename = "artistUri", default, skip_serializing_if = "Option::is_none")]
pub artist_uri: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub album: Option<String>,
#[serde(rename = "albumUri", default, skip_serializing_if = "Option::is_none")]
pub album_uri: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub cover: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub date: Option<DateTime<Utc>>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub uri: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub sha256: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub liked: Option<bool>,
#[serde(rename = "likesCount", default, skip_serializing_if = "Option::is_none")]
pub likes_count: Option<i64>,
}
#[derive(Debug, Clone, Serialize, Deserialize, Default)]
pub struct ScrobbleViewDetailed {
#[serde(default, skip_serializing_if = "Option::is_none")]
pub id: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub user: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub title: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub artist: Option<String>,
#[serde(rename = "artistUri", default, skip_serializing_if = "Option::is_none")]
pub artist_uri: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub album: Option<String>,
#[serde(rename = "albumUri", default, skip_serializing_if = "Option::is_none")]
pub album_uri: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub cover: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub date: Option<DateTime<Utc>>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub uri: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub sha256: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub liked: Option<bool>,
#[serde(rename = "likesCount", default, skip_serializing_if = "Option::is_none")]
pub likes_count: Option<i64>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub listeners: Option<i64>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub scrobbles: Option<i64>,
#[serde(default, skip_serializing_if = "Vec::is_empty")]
pub artists: Vec<ArtistViewBasic>,
#[serde(rename = "firstScrobble", default, skip_serializing_if = "Option::is_none")]
pub first_scrobble: Option<ScrobbleFirstScrobbleView>,
}
#[derive(Debug, Clone, Serialize, Deserialize, Default)]
pub struct SearchParams {
pub query: String,
}
#[derive(Debug, Clone, Serialize, Deserialize, Default)]
pub struct SeekParams {
#[serde(rename = "playerId", default, skip_serializing_if = "Option::is_none")]
pub player_id: Option<String>,
pub position: i64,
}
#[derive(Debug, Clone, Serialize, Deserialize, Default)]
pub struct ShoutAuthor {
#[serde(default, skip_serializing_if = "Option::is_none")]
pub id: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub did: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub handle: Option<String>,
#[serde(rename = "displayName", default, skip_serializing_if = "Option::is_none")]
pub display_name: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub avatar: Option<String>,
}
#[derive(Debug, Clone, Serialize, Deserialize, Default)]
pub struct ShoutRecord {
pub message: String,
#[serde(rename = "createdAt")]
pub created_at: DateTime<Utc>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub parent: Option<StrongRef>,
pub subject: StrongRef,
}
#[derive(Debug, Clone, Serialize, Deserialize, Default)]
pub struct ShoutView {
#[serde(default, skip_serializing_if = "Option::is_none")]
pub id: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub message: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub parent: Option<String>,
#[serde(rename = "createdAt", default, skip_serializing_if = "Option::is_none")]
pub created_at: Option<DateTime<Utc>>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub author: Option<ShoutAuthor>,
}
#[derive(Debug, Clone, Serialize, Deserialize, Default)]
pub struct SongFirstScrobbleView {
#[serde(default, skip_serializing_if = "Option::is_none")]
pub handle: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub avatar: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub timestamp: Option<DateTime<Utc>>,
}
#[derive(Debug, Clone, Serialize, Deserialize, Default)]
pub struct SongRecentListenerView {
#[serde(default, skip_serializing_if = "Option::is_none")]
pub id: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub did: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub handle: Option<String>,
#[serde(rename = "displayName", default, skip_serializing_if = "Option::is_none")]
pub display_name: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub avatar: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub timestamp: Option<DateTime<Utc>>,
#[serde(rename = "scrobbleUri", default, skip_serializing_if = "Option::is_none")]
pub scrobble_uri: Option<String>,
}
#[derive(Debug, Clone, Serialize, Deserialize, Default)]
pub struct SongRecord {
pub title: String,
pub artist: String,
#[serde(default, skip_serializing_if = "Vec::is_empty")]
pub artists: Vec<ArtistMbid>,
#[serde(rename = "albumArtist")]
pub album_artist: String,
pub album: String,
pub duration: i64,
#[serde(rename = "trackNumber", default, skip_serializing_if = "Option::is_none")]
pub track_number: Option<i64>,
#[serde(rename = "discNumber", default, skip_serializing_if = "Option::is_none")]
pub disc_number: Option<i64>,
#[serde(rename = "releaseDate", default, skip_serializing_if = "Option::is_none")]
pub release_date: Option<DateTime<Utc>>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub year: Option<i64>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub genre: Option<String>,
#[serde(default, skip_serializing_if = "Vec::is_empty")]
pub tags: Vec<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub composer: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub lyrics: Option<String>,
#[serde(rename = "copyrightMessage", default, skip_serializing_if = "Option::is_none")]
pub copyright_message: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub wiki: Option<String>,
#[serde(rename = "albumArt", default, skip_serializing_if = "Option::is_none")]
pub album_art: Option<BlobRef>,
#[serde(rename = "albumArtUrl", default, skip_serializing_if = "Option::is_none")]
pub album_art_url: Option<String>,
#[serde(rename = "youtubeLink", default, skip_serializing_if = "Option::is_none")]
pub youtube_link: Option<String>,
#[serde(rename = "spotifyLink", default, skip_serializing_if = "Option::is_none")]
pub spotify_link: Option<String>,
#[serde(rename = "tidalLink", default, skip_serializing_if = "Option::is_none")]
pub tidal_link: Option<String>,
#[serde(rename = "appleMusicLink", default, skip_serializing_if = "Option::is_none")]
pub apple_music_link: Option<String>,
#[serde(rename = "createdAt")]
pub created_at: DateTime<Utc>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub mbid: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub label: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub isrc: Option<String>,
}
#[derive(Debug, Clone, Serialize, Deserialize, Default)]
pub struct SongViewBasic {
#[serde(default, skip_serializing_if = "Option::is_none")]
pub id: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub title: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub artist: Option<String>,
#[serde(rename = "albumArtist", default, skip_serializing_if = "Option::is_none")]
pub album_artist: Option<String>,
#[serde(rename = "albumArt", default, skip_serializing_if = "Option::is_none")]
pub album_art: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub uri: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub album: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub duration: Option<i64>,
#[serde(rename = "trackNumber", default, skip_serializing_if = "Option::is_none")]
pub track_number: Option<i64>,
#[serde(rename = "discNumber", default, skip_serializing_if = "Option::is_none")]
pub disc_number: Option<i64>,
#[serde(rename = "playCount", default, skip_serializing_if = "Option::is_none")]
pub play_count: Option<i64>,
#[serde(rename = "uniqueListeners", default, skip_serializing_if = "Option::is_none")]
pub unique_listeners: Option<i64>,
#[serde(rename = "albumUri", default, skip_serializing_if = "Option::is_none")]
pub album_uri: Option<String>,
#[serde(rename = "artistUri", default, skip_serializing_if = "Option::is_none")]
pub artist_uri: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub sha256: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub mbid: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub isrc: Option<String>,
#[serde(default, skip_serializing_if = "Vec::is_empty")]
pub tags: Vec<String>,
#[serde(rename = "createdAt", default, skip_serializing_if = "Option::is_none")]
pub created_at: Option<DateTime<Utc>>,
}
#[derive(Debug, Clone, Serialize, Deserialize, Default)]
pub struct SongViewDetailed {
#[serde(default, skip_serializing_if = "Option::is_none")]
pub id: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub title: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub artist: Option<String>,
#[serde(rename = "albumArtist", default, skip_serializing_if = "Option::is_none")]
pub album_artist: Option<String>,
#[serde(rename = "albumArt", default, skip_serializing_if = "Option::is_none")]
pub album_art: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub uri: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub album: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub duration: Option<i64>,
#[serde(rename = "trackNumber", default, skip_serializing_if = "Option::is_none")]
pub track_number: Option<i64>,
#[serde(rename = "discNumber", default, skip_serializing_if = "Option::is_none")]
pub disc_number: Option<i64>,
#[serde(rename = "playCount", default, skip_serializing_if = "Option::is_none")]
pub play_count: Option<i64>,
#[serde(rename = "uniqueListeners", default, skip_serializing_if = "Option::is_none")]
pub unique_listeners: Option<i64>,
#[serde(rename = "albumUri", default, skip_serializing_if = "Option::is_none")]
pub album_uri: Option<String>,
#[serde(rename = "artistUri", default, skip_serializing_if = "Option::is_none")]
pub artist_uri: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub sha256: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub mbid: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub isrc: Option<String>,
#[serde(default, skip_serializing_if = "Vec::is_empty")]
pub tags: Vec<String>,
#[serde(rename = "createdAt", default, skip_serializing_if = "Option::is_none")]
pub created_at: Option<DateTime<Utc>>,
#[serde(default, skip_serializing_if = "Vec::is_empty")]
pub artists: Vec<ArtistViewBasic>,
#[serde(rename = "firstScrobble", default, skip_serializing_if = "Option::is_none")]
pub first_scrobble: Option<SongFirstScrobbleView>,
}
#[derive(Debug, Clone, Serialize, Deserialize, Default)]
pub struct SpotifyTrackView {
#[serde(default, skip_serializing_if = "Option::is_none")]
pub id: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub name: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub artist: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub album: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub duration: Option<i64>,
#[serde(rename = "previewUrl", default, skip_serializing_if = "Option::is_none")]
pub preview_url: Option<String>,
}
#[derive(Debug, Clone, Serialize, Deserialize, Default)]
pub struct StartPlaylistParams {
pub uri: String,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub shuffle: Option<bool>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub position: Option<i64>,
}
#[derive(Debug, Clone, Serialize, Deserialize, Default)]
pub struct StatsGlobalStatsView {
#[serde(default, skip_serializing_if = "Option::is_none")]
pub scrobbles: Option<i64>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub users: Option<i64>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub artists: Option<i64>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub albums: Option<i64>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub tracks: Option<i64>,
}
#[derive(Debug, Clone, Serialize, Deserialize, Default)]
pub struct StatsView {
#[serde(default, skip_serializing_if = "Option::is_none")]
pub scrobbles: Option<i64>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub artists: Option<i64>,
#[serde(rename = "lovedTracks", default, skip_serializing_if = "Option::is_none")]
pub loved_tracks: Option<i64>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub albums: Option<i64>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub tracks: Option<i64>,
}
#[derive(Debug, Clone, Serialize, Deserialize, Default)]
pub struct StatsWrappedAlbum {
#[serde(default, skip_serializing_if = "Option::is_none")]
pub id: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub title: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub artist: Option<String>,
#[serde(rename = "albumArt", default, skip_serializing_if = "Option::is_none")]
pub album_art: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub uri: Option<String>,
#[serde(rename = "playCount", default, skip_serializing_if = "Option::is_none")]
pub play_count: Option<i64>,
}
#[derive(Debug, Clone, Serialize, Deserialize, Default)]
pub struct StatsWrappedArtist {
#[serde(default, skip_serializing_if = "Option::is_none")]
pub id: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub name: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub picture: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub uri: Option<String>,
#[serde(rename = "playCount", default, skip_serializing_if = "Option::is_none")]
pub play_count: Option<i64>,
}
#[derive(Debug, Clone, Serialize, Deserialize, Default)]
pub struct StatsWrappedDayCount {
#[serde(default, skip_serializing_if = "Option::is_none")]
pub date: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub count: Option<i64>,
}
#[derive(Debug, Clone, Serialize, Deserialize, Default)]
pub struct StatsWrappedGenreCount {
#[serde(default, skip_serializing_if = "Option::is_none")]
pub genre: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub count: Option<i64>,
}
#[derive(Debug, Clone, Serialize, Deserialize, Default)]
pub struct StatsWrappedMilestone {
#[serde(rename = "trackTitle", default, skip_serializing_if = "Option::is_none")]
pub track_title: Option<String>,
#[serde(rename = "artistName", default, skip_serializing_if = "Option::is_none")]
pub artist_name: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub timestamp: Option<DateTime<Utc>>,
#[serde(rename = "trackUri", default, skip_serializing_if = "Option::is_none")]
pub track_uri: Option<String>,
}
#[derive(Debug, Clone, Serialize, Deserialize, Default)]
pub struct StatsWrappedMonthCount {
#[serde(default, skip_serializing_if = "Option::is_none")]
pub month: Option<i64>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub count: Option<i64>,
}
#[derive(Debug, Clone, Serialize, Deserialize, Default)]
pub struct StatsWrappedTrack {
#[serde(default, skip_serializing_if = "Option::is_none")]
pub id: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub title: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub artist: Option<String>,
#[serde(rename = "albumArt", default, skip_serializing_if = "Option::is_none")]
pub album_art: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub uri: Option<String>,
#[serde(rename = "artistUri", default, skip_serializing_if = "Option::is_none")]
pub artist_uri: Option<String>,
#[serde(rename = "albumUri", default, skip_serializing_if = "Option::is_none")]
pub album_uri: Option<String>,
#[serde(rename = "playCount", default, skip_serializing_if = "Option::is_none")]
pub play_count: Option<i64>,
}
#[derive(Debug, Clone, Serialize, Deserialize, Default)]
pub struct StatsWrappedView {
#[serde(default, skip_serializing_if = "Option::is_none")]
pub year: Option<i64>,
#[serde(rename = "totalScrobbles", default, skip_serializing_if = "Option::is_none")]
pub total_scrobbles: Option<i64>,
#[serde(rename = "totalListeningTimeMinutes", default, skip_serializing_if = "Option::is_none")]
pub total_listening_time_minutes: Option<i64>,
#[serde(rename = "topArtists", default, skip_serializing_if = "Vec::is_empty")]
pub top_artists: Vec<StatsWrappedArtist>,
#[serde(rename = "topTracks", default, skip_serializing_if = "Vec::is_empty")]
pub top_tracks: Vec<StatsWrappedTrack>,
#[serde(rename = "topAlbums", default, skip_serializing_if = "Vec::is_empty")]
pub top_albums: Vec<StatsWrappedAlbum>,
#[serde(rename = "topGenres", default, skip_serializing_if = "Vec::is_empty")]
pub top_genres: Vec<StatsWrappedGenreCount>,
#[serde(rename = "scrobblesPerMonth", default, skip_serializing_if = "Vec::is_empty")]
pub scrobbles_per_month: Vec<StatsWrappedMonthCount>,
#[serde(rename = "mostActiveDay", default, skip_serializing_if = "Option::is_none")]
pub most_active_day: Option<StatsWrappedDayCount>,
#[serde(rename = "mostActiveHour", default, skip_serializing_if = "Option::is_none")]
pub most_active_hour: Option<i64>,
#[serde(rename = "newArtistsCount", default, skip_serializing_if = "Option::is_none")]
pub new_artists_count: Option<i64>,
#[serde(rename = "longestStreak", default, skip_serializing_if = "Option::is_none")]
pub longest_streak: Option<i64>,
#[serde(rename = "firstScrobble", default, skip_serializing_if = "Option::is_none")]
pub first_scrobble: Option<StatsWrappedMilestone>,
#[serde(rename = "lastScrobble", default, skip_serializing_if = "Option::is_none")]
pub last_scrobble: Option<StatsWrappedMilestone>,
}
#[derive(Debug, Clone, Serialize, Deserialize, Default)]
pub struct StatusRecord {
pub track: ActorTrackView,
#[serde(rename = "startedAt")]
pub started_at: DateTime<Utc>,
#[serde(rename = "expiresAt", default, skip_serializing_if = "Option::is_none")]
pub expires_at: Option<DateTime<Utc>>,
}
#[derive(Debug, Clone, Serialize, Deserialize, Default)]
pub struct StrongRef {
pub uri: String,
pub cid: String,
}
#[derive(Debug, Clone, Serialize, Deserialize, Default)]
pub struct UnfollowAccountOutput {
pub subject: ActorProfileViewBasic,
pub followers: Vec<ActorProfileViewBasic>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub cursor: Option<String>,
}
#[derive(Debug, Clone, Serialize, Deserialize, Default)]
pub struct UnfollowAccountParams {
pub account: String,
}
#[derive(Debug, Clone, Serialize, Deserialize, Default)]
pub struct UpdateApikeyInput {
pub id: String,
pub name: String,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub description: Option<String>,
}