1use serde::{Deserialize, Serialize};
2
3#[derive(Debug, Clone, Serialize, Deserialize)]
4pub struct RootStructTracksItemsItemTrackAlbumExternalUrls {
5 pub spotify: Option<String>,
6}
7
8#[derive(Debug, Clone, Serialize, Deserialize)]
9pub struct RootStructTracksItemsItemVideoThumbnail {
10 pub url: Option<serde_json::Value>,
11}
12
13#[derive(Debug, Clone, Serialize, Deserialize)]
14pub struct RootStructTracksItemsItemTrackExternalUrls {
15 pub spotify: Option<String>,
16}
17
18#[derive(Debug, Clone, Serialize, Deserialize)]
19pub struct RootStructExternalUrls {
20 pub spotify: Option<String>,
21}
22
23#[derive(Debug, Clone, Serialize, Deserialize)]
24pub struct RootStructTracksItemsItem {
25 pub added_at: Option<String>,
26 pub added_by: Option<RootStructTracksItemsItemAddedBy>,
27 pub is_local: Option<bool>,
28 pub primary_color: Option<serde_json::Value>,
29 pub track: Option<RootStructTracksItemsItemTrack>,
30 pub video_thumbnail: Option<RootStructTracksItemsItemVideoThumbnail>,
31}
32
33#[derive(Debug, Clone, Serialize, Deserialize)]
34pub struct RootStructTracksItemsItemTrackAlbumArtistsItemExternalUrls {
35 pub spotify: Option<String>,
36}
37
38#[derive(Debug, Clone, Serialize, Deserialize)]
39pub struct RootStructFollowers {
40 pub href: Option<serde_json::Value>,
41 pub total: Option<i64>,
42}
43
44#[derive(Debug, Clone, Serialize, Deserialize)]
45pub struct RootStructOwner {
46 pub display_name: Option<String>,
47 pub external_urls: Option<RootStructOwnerExternalUrls>,
48 pub href: Option<String>,
49 pub id: Option<String>,
50 #[serde(rename = "type", skip_serializing_if = "Option::is_none")]
51 pub type_: Option<String>,
52 pub uri: Option<String>,
53}
54
55#[derive(Debug, Clone, Serialize, Deserialize)]
56pub struct RootStructTracksItemsItemTrackAlbum {
57 pub album_type: Option<String>,
58 pub artists: Option<Vec<RootStructTracksItemsItemTrackAlbumArtistsItem>>,
59 pub available_markets: Option<Vec<String>>,
60 pub external_urls: Option<RootStructTracksItemsItemTrackAlbumExternalUrls>,
61 pub href: Option<String>,
62 pub id: Option<String>,
63 pub images: Option<Vec<RootStructTracksItemsItemTrackAlbumImagesItem>>,
64 pub name: Option<String>,
65 pub release_date: Option<String>,
66 pub release_date_precision: Option<String>,
67 pub total_tracks: Option<i64>,
68 #[serde(rename = "type", skip_serializing_if = "Option::is_none")]
69 pub type_: Option<String>,
70 pub uri: Option<String>,
71}
72
73#[derive(Debug, Clone, Serialize, Deserialize)]
74pub struct RootStructImagesItem {
75 pub height: Option<i64>,
76 pub url: Option<String>,
77 pub width: Option<i64>,
78}
79
80#[derive(Debug, Clone, Serialize, Deserialize)]
81pub struct RootStructTracksItemsItemAddedByExternalUrls {
82 pub spotify: Option<String>,
83}
84
85#[derive(Debug, Clone, Serialize, Deserialize)]
86pub struct RootStructTracksItemsItemTrackAlbumArtistsItem {
87 pub external_urls: Option<RootStructTracksItemsItemTrackAlbumArtistsItemExternalUrls>,
88 pub href: Option<String>,
89 pub id: Option<String>,
90 pub name: Option<String>,
91 #[serde(rename = "type", skip_serializing_if = "Option::is_none")]
92 pub type_: Option<String>,
93 pub uri: Option<String>,
94}
95
96#[derive(Debug, Clone, Serialize, Deserialize)]
97pub struct RootStructTracksItemsItemTrack {
98 pub album: Option<RootStructTracksItemsItemTrackAlbum>,
99 pub artists: Option<Vec<RootStructTracksItemsItemTrackArtistsItem>>,
100 pub available_markets: Option<Vec<String>>,
101 pub disc_number: Option<i64>,
102 pub duration_ms: Option<i64>,
103 pub episode: Option<bool>,
104 pub explicit: Option<bool>,
105 pub external_ids: Option<RootStructTracksItemsItemTrackExternalIds>,
106 pub external_urls: Option<RootStructTracksItemsItemTrackExternalUrls>,
107 pub href: Option<String>,
108 pub id: Option<String>,
109 pub is_local: Option<bool>,
110 pub name: Option<String>,
111 pub popularity: Option<i64>,
112 pub preview_url: Option<serde_json::Value>,
113 pub track: Option<bool>,
114 pub track_number: Option<i64>,
115 #[serde(rename = "type", skip_serializing_if = "Option::is_none")]
116 pub type_: Option<String>,
117 pub uri: Option<String>,
118}
119
120#[derive(Debug, Clone, Serialize, Deserialize)]
121pub struct RootStructOwnerExternalUrls {
122 pub spotify: Option<String>,
123}
124
125#[derive(Debug, Clone, Serialize, Deserialize)]
126pub struct RootStructTracksItemsItemTrackAlbumImagesItem {
127 pub height: Option<i64>,
128 pub url: Option<String>,
129 pub width: Option<i64>,
130}
131
132#[derive(Debug, Clone, Serialize, Deserialize)]
133pub struct Playlist {
134 pub collaborative: Option<bool>,
135 pub description: Option<String>,
136 pub external_urls: Option<RootStructExternalUrls>,
137 pub followers: Option<RootStructFollowers>,
138 pub href: Option<String>,
139 pub id: Option<String>,
140 pub images: Option<Vec<RootStructImagesItem>>,
141 pub name: Option<String>,
142 pub owner: Option<RootStructOwner>,
143 pub primary_color: Option<serde_json::Value>,
144 pub public: Option<bool>,
145 pub snapshot_id: Option<String>,
146 pub tracks: Option<RootStructTracks>,
147 #[serde(rename = "type", skip_serializing_if = "Option::is_none")]
148 pub type_: Option<String>,
149 pub uri: Option<String>,
150}
151
152#[derive(Debug, Clone, Serialize, Deserialize)]
153pub struct RootStructTracksItemsItemAddedBy {
154 pub external_urls: Option<RootStructTracksItemsItemAddedByExternalUrls>,
155 pub href: Option<String>,
156 pub id: Option<String>,
157 #[serde(rename = "type", skip_serializing_if = "Option::is_none")]
158 pub type_: Option<String>,
159 pub uri: Option<String>,
160}
161
162#[derive(Debug, Clone, Serialize, Deserialize)]
163pub struct RootStructTracksItemsItemTrackExternalIds {
164 pub isrc: Option<String>,
165}
166
167#[derive(Debug, Clone, Serialize, Deserialize)]
168pub struct RootStructTracksItemsItemTrackArtistsItem {
169 pub external_urls: Option<RootStructTracksItemsItemTrackArtistsItemExternalUrls>,
170 pub href: Option<String>,
171 pub id: Option<String>,
172 pub name: Option<String>,
173 #[serde(rename = "type", skip_serializing_if = "Option::is_none")]
174 pub type_: Option<String>,
175 pub uri: Option<String>,
176}
177
178#[derive(Debug, Clone, Serialize, Deserialize)]
179pub struct RootStructTracksItemsItemTrackArtistsItemExternalUrls {
180 pub spotify: Option<String>,
181}
182
183#[derive(Debug, Clone, Serialize, Deserialize)]
184pub struct RootStructTracks {
185 pub href: Option<String>,
186 pub items: Option<Vec<RootStructTracksItemsItem>>,
187 pub limit: Option<i64>,
188 pub next: Option<serde_json::Value>,
189 pub offset: Option<i64>,
190 pub previous: Option<serde_json::Value>,
191 pub total: Option<i64>,
192}