1use serde::{Deserialize, Serialize};
2
3#[derive(Serialize, Deserialize, Debug, Clone, Default)]
20pub struct LastUpdate {
21 #[serde(rename = "favorites")]
23 pub favorites: Option<String>,
24
25 #[serde(rename = "playlists")]
27 pub playlists: Option<String>,
28
29 #[serde(rename = "followings")]
31 pub followings: Option<String>,
32
33 #[serde(rename = "subscriptions")]
35 pub subscriptions: Option<String>,
36
37 #[serde(rename = "purchases")]
39 pub purchases: Option<String>,
40
41 #[serde(rename = "playback_history")]
43 pub playback_history: Option<String>,
44
45 #[serde(rename = "library")]
47 pub library: Option<String>,
48
49 #[serde(rename = "recommendations")]
51 pub recommendations: Option<String>,
52
53 #[serde(rename = "discover")]
55 pub discover: Option<String>,
56
57 #[serde(rename = "personal_radio")]
59 pub personal_radio: Option<String>,
60
61 #[serde(rename = "instant_mixes")]
63 pub instant_mixes: Option<String>,
64
65 #[serde(rename = "smart_playlists")]
67 pub smart_playlists: Option<String>,
68
69 #[serde(rename = "daily_mixes")]
71 pub daily_mixes: Option<String>,
72
73 #[serde(rename = "weekly_mixes")]
75 pub weekly_mixes: Option<String>,
76
77 #[serde(rename = "monthly_mixes")]
79 pub monthly_mixes: Option<String>,
80
81 #[serde(rename = "yearly_mixes")]
83 pub yearly_mixes: Option<String>,
84}
85
86#[derive(Serialize, Deserialize, Debug, Clone, Default)]
104pub struct StoreFeatures {
105 #[serde(rename = "has_free_tier")]
107 pub has_free_tier: Option<bool>,
108
109 #[serde(rename = "has_trial")]
111 pub has_trial: Option<bool>,
112
113 #[serde(rename = "has_subscription")]
115 pub has_subscription: Option<bool>,
116
117 #[serde(rename = "has_hires")]
119 pub has_hires: Option<bool>,
120
121 #[serde(rename = "has_download")]
123 pub has_download: Option<bool>,
124
125 #[serde(rename = "has_streaming")]
127 pub has_streaming: Option<bool>,
128
129 #[serde(rename = "has_radio")]
131 pub has_radio: Option<bool>,
132
133 #[serde(rename = "has_playlist")]
135 pub has_playlist: Option<bool>,
136
137 #[serde(rename = "has_favorites")]
139 pub has_favorites: Option<bool>,
140
141 #[serde(rename = "has_library")]
143 pub has_library: Option<bool>,
144
145 #[serde(rename = "has_discover")]
147 pub has_discover: Option<bool>,
148
149 #[serde(rename = "has_recommendations")]
151 pub has_recommendations: Option<bool>,
152
153 #[serde(rename = "has_personal_radio")]
155 pub has_personal_radio: Option<bool>,
156
157 #[serde(rename = "has_instant_mixes")]
159 pub has_instant_mixes: Option<bool>,
160
161 #[serde(rename = "has_smart_playlists")]
163 pub has_smart_playlists: Option<bool>,
164
165 #[serde(rename = "has_daily_mixes")]
167 pub has_daily_mixes: Option<bool>,
168
169 #[serde(rename = "has_weekly_mixes")]
171 pub has_weekly_mixes: Option<bool>,
172
173 #[serde(rename = "has_monthly_mixes")]
175 pub has_monthly_mixes: Option<bool>,
176
177 #[serde(rename = "has_yearly_mixes")]
179 pub has_yearly_mixes: Option<bool>,
180}
181
182#[derive(Serialize, Deserialize, Debug, Clone, Default)]
200pub struct Subscription {
201 #[serde(rename = "id")]
203 pub id: Option<String>,
204
205 #[serde(rename = "user_id")]
207 pub user_id: Option<i64>,
208
209 #[serde(rename = "offer_id")]
211 pub offer_id: Option<String>,
212
213 #[serde(rename = "offer_name")]
215 pub offer_name: Option<String>,
216
217 #[serde(rename = "offer_country")]
219 pub offer_country: Option<String>,
220
221 #[serde(rename = "offer_currency")]
223 pub offer_currency: Option<String>,
224
225 #[serde(rename = "offer_price")]
227 pub offer_price: Option<f64>,
228
229 #[serde(rename = "offer_trial_days")]
231 pub offer_trial_days: Option<i32>,
232
233 #[serde(rename = "offer_type")]
235 pub offer_type: Option<String>,
236
237 #[serde(rename = "offer_family")]
239 pub offer_family: Option<String>,
240
241 #[serde(rename = "offer_features")]
243 pub offer_features: Option<Vec<String>>,
244
245 #[serde(rename = "status")]
247 pub status: Option<String>,
248
249 #[serde(rename = "status_code")]
251 pub status_code: Option<String>,
252
253 #[serde(rename = "start_date")]
255 pub start_date: Option<String>,
256
257 #[serde(rename = "end_date")]
259 pub end_date: Option<String>,
260
261 #[serde(rename = "renew_date")]
263 pub renew_date: Option<String>,
264
265 #[serde(rename = "cancel_date")]
267 pub cancel_date: Option<String>,
268
269 #[serde(rename = "cancel_reason")]
271 pub cancel_reason: Option<String>,
272
273 #[serde(rename = "is_active")]
275 pub is_active: Option<bool>,
276
277 #[serde(rename = "is_trial")]
279 pub is_trial: Option<bool>,
280
281 #[serde(rename = "is_canceled")]
283 pub is_canceled: Option<bool>,
284
285 #[serde(rename = "is_expired")]
287 pub is_expired: Option<bool>,
288
289 #[serde(rename = "is_renewable")]
291 pub is_renewable: Option<bool>,
292
293 #[serde(rename = "is_auto_renew")]
295 pub is_auto_renew: Option<bool>,
296
297 #[serde(rename = "next_payment_date")]
299 pub next_payment_date: Option<String>,
300
301 #[serde(rename = "last_payment_date")]
303 pub last_payment_date: Option<String>,
304
305 #[serde(rename = "next_payment_amount")]
307 pub next_payment_amount: Option<f64>,
308
309 #[serde(rename = "payment_method")]
311 pub payment_method: Option<String>,
312
313 #[serde(rename = "payment_status")]
315 pub payment_status: Option<String>,
316
317 #[serde(rename = "payment_failed_count")]
319 pub payment_failed_count: Option<i32>,
320
321 #[serde(rename = "payment_failed_reason")]
323 pub payment_failed_reason: Option<String>,
324
325 #[serde(rename = "payment_failed_date")]
327 pub payment_failed_date: Option<String>,
328
329 #[serde(rename = "payment_retry_date")]
331 pub payment_retry_date: Option<String>,
332
333 #[serde(rename = "payment_retry_count")]
335 pub payment_retry_count: Option<i32>,
336
337 #[serde(rename = "payment_retry_max")]
339 pub payment_retry_max: Option<i32>,
340
341 #[serde(rename = "payment_retry_interval")]
343 pub payment_retry_interval: Option<i32>,
344
345 #[serde(rename = "payment_retry_multiplier")]
347 pub payment_retry_multiplier: Option<f64>,
348
349 #[serde(rename = "payment_retry_backoff")]
351 pub payment_retry_backoff: Option<String>,
352
353 #[serde(rename = "payment_retry_strategy")]
355 pub payment_retry_strategy: Option<String>,
356
357 #[serde(rename = "payment_retry_enabled")]
359 pub payment_retry_enabled: Option<bool>,
360
361 #[serde(rename = "payment_retry_active")]
363 pub payment_retry_active: Option<bool>,
364
365 #[serde(rename = "payment_retry_scheduled")]
367 pub payment_retry_scheduled: Option<bool>,
368
369 #[serde(rename = "payment_retry_scheduled_date")]
371 pub payment_retry_scheduled_date: Option<String>,
372
373 #[serde(rename = "payment_retry_scheduled_count")]
375 pub payment_retry_scheduled_count: Option<i32>,
376
377 #[serde(rename = "payment_retry_scheduled_reason")]
379 pub payment_retry_scheduled_reason: Option<String>,
380}