mtgapi_client/model/
card.rs

1///DTO for the endpoints returning multiple cards
2#[derive(Serialize, Deserialize, Debug)]
3#[serde(deny_unknown_fields, untagged)]
4pub(crate) enum CardsDto {
5    Error {
6        status: Option<String>,
7        error: String,
8    },
9    Cards {
10        cards: Vec<CardDetail>,
11    },
12}
13
14///DTO for the endpoints returning a single cards
15#[derive(Serialize, Deserialize, Debug)]
16#[serde(deny_unknown_fields, untagged)]
17pub(crate) enum CardDto {
18    Error {
19        status: Option<String>,
20        error: String,
21    },
22    Card {
23        card: Box<CardDetail>,
24    },
25}
26
27#[derive(Serialize, Deserialize, Debug)]
28#[serde(rename_all = "camelCase", deny_unknown_fields)]
29pub struct CardDetail {
30    pub name: String,
31    #[serde(default)]
32    pub names: Vec<String>,
33    pub mana_cost: Option<String>,
34    pub cmc: f64,
35    #[serde(default)]
36    pub colors: Vec<String>,
37    #[serde(default)]
38    pub color_identity: Vec<String>,
39    #[serde(rename = "type")]
40    pub type_: String,
41    #[serde(default)]
42    pub supertypes: Vec<String>,
43    #[serde(default)]
44    pub types: Vec<String>,
45    #[serde(default)]
46    pub subtypes: Vec<String>,
47    pub rarity: String,
48    pub set: String,
49    pub set_name: Option<String>,
50    #[serde(default)]
51    pub text: String,
52    #[serde(default)]
53    pub flavor: String,
54    pub artist: String,
55    pub number: Option<String>,
56    pub power: Option<String>,
57    pub toughness: Option<String>,
58    pub layout: Option<String>,
59    pub loyalty: Option<u32>,
60    pub multiverseid: Option<u32>,
61    pub image_url: Option<String>,
62    #[serde(default)]
63    pub rulings: Vec<Ruling>,
64    pub watermark: Option<String>,
65    pub release_date: Option<String>,
66    #[serde(default)]
67    pub foreign_names: Vec<ForeignName>,
68    #[serde(default)]
69    pub printings: Vec<String>,
70    pub original_text: Option<String>,
71    pub original_type: Option<String>,
72    #[serde(default)]
73    pub legalities: Vec<Legality>,
74    #[serde(default)]
75    pub variations: Vec<u32>,
76    pub border: Option<String>,
77    #[serde(default)]
78    pub timeshifted: bool,
79    pub hand: Option<i32>,
80    pub life: Option<i32>,
81    #[serde(default)]
82    pub reserved: bool,
83    #[serde(default)]
84    pub starter: bool,
85    pub source: Option<String>,
86    pub id: String,
87}
88
89#[derive(Serialize, Deserialize, Debug)]
90#[serde(deny_unknown_fields)]
91pub struct Ruling {
92    pub date: String,
93    pub text: String,
94}
95
96#[derive(Serialize, Deserialize, Debug)]
97#[serde(deny_unknown_fields)]
98pub struct Legality {
99    pub format: String,
100    pub legality: String,
101}
102
103#[derive(Serialize, Deserialize, Debug)]
104#[serde(rename_all = "camelCase", deny_unknown_fields)]
105pub struct ForeignName {
106    pub image_url: Option<String>,
107    pub name: String,
108    pub multiverseid: Option<u32>,
109    pub language: String,
110}