1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
use super::*;
use serde::Deserialize;

#[derive(Deserialize, Debug)]
pub struct Category {
    pub id: ObjectReference,
    pub _id: ObjectReference,
    pub name: Vec<LocalizedString>,
    pub description: Vec<LocalizedString>,

    #[serde(flatten)]
    pub _extra_fields: std::collections::HashMap<String, serde_json::Value>,
}

#[derive(Deserialize, Debug)]
pub struct MenuItemOption {
    pub id: ObjectReference,
    pub _id: ObjectReference,
    pub parent: ObjectReference,
    pub name: Vec<LocalizedString>,
    pub free_selections: i32,
    pub maximum_single_selections: i32,
    pub maximum_total_selections: i32,
    pub minimum_total_selections: i32,
    pub required_option_selections: Vec<ObjectReference>,

    #[serde(flatten)]
    pub _extra_fields: std::collections::HashMap<String, serde_json::Value>,
}

#[derive(Deserialize, Debug)]
pub struct MenuItemTagStyle {
    pub text_color: String,
    pub background_color: String,
    pub decoration: String,

    #[serde(flatten)]
    pub _extra_fields: std::collections::HashMap<String, serde_json::Value>,
}

#[derive(Deserialize, Debug)]
pub struct MenuItemTag {
    pub id: String,
    pub name: Vec<LocalizedString>,
    pub style: MenuItemTagStyle,

    #[serde(flatten)]
    pub _extra_fields: std::collections::HashMap<String, serde_json::Value>,
}

#[derive(Deserialize, Debug)]
pub struct MenuItemTime {
    pub available_days_of_week: Vec<i32>,
    pub available_start_date: Date,
    pub available_end_date: Date,
    pub visible_days_of_week: Vec<i32>,
    pub visible_start_date: Date,
    pub visible_end_date: Date,

    #[serde(flatten)]
    pub _extra_fields: std::collections::HashMap<String, serde_json::Value>,
}

#[derive(Deserialize, Debug)]
pub struct MenuItemValidity {
    pub start_date: Date,

    #[serde(flatten)]
    pub _extra_fields: std::collections::HashMap<String, serde_json::Value>,
}

#[derive(Deserialize, Debug)]
pub struct MenuItem {
    pub id: ObjectReference,
    pub _id: ObjectReference,
    pub category: ObjectReference,
    pub enabled: bool,
    pub name: Vec<LocalizedString>,
    pub description: Vec<LocalizedString>,
    pub alcohol_percentage: i32,
    pub baseprice: i32,
    pub vat_percentage: i32,
    pub allowed_delivery_methods: Vec<String>,
    pub r#type: String,
    pub ftu_restrictions: Vec<String>,
    pub has_extra_info: bool,
    pub image: Option<String>,
    pub image_blurhash: Option<String>,
    pub checksum: String,
    pub is_venue_tip: bool,
    pub options: Vec<MenuItemOption>,
    pub tags: Vec<MenuItemTag>,
    pub times: Vec<MenuItemTime>,
    pub allowed_order_types: Option<Vec<String>>,
    pub original_price: Option<i32>,
    pub validity: Option<MenuItemValidity>,

    #[serde(flatten)]
    pub _extra_fields: std::collections::HashMap<String, serde_json::Value>,
}

#[derive(Deserialize, Debug)]
pub struct Recommendation {
    pub item: ObjectReference,
    pub options: Vec<String>,
}

#[derive(Deserialize, Debug)]
pub struct MenuLanguage {
    pub autotranslated: bool,
    pub language: String,
    pub name: String,
    pub primary: bool,
}

#[derive(Deserialize, Debug)]
pub struct MenuOptionValue {
    pub id: ObjectReference,
    pub price: i32,
    pub name: Vec<LocalizedString>,
    pub minimum_selections: i32,
    pub maximum_selections: i32,
    pub hide_when_selected: bool,
    pub multichoice_weight: i32,

    #[serde(flatten)]
    pub _extra_fields: std::collections::HashMap<String, serde_json::Value>,
}

#[derive(Deserialize, Debug)]
pub struct MenuOption {
    pub id: ObjectReference,
    pub _id: ObjectReference,
    pub defaultvalue: ObjectReference,
    pub r#type: String,
    pub name: Vec<LocalizedString>,
    pub values: Vec<MenuOptionValue>,
    pub has_extra_info: bool,

    #[serde(flatten)]
    pub _extra_fields: std::collections::HashMap<String, serde_json::Value>,
}

#[derive(Deserialize, Debug)]
pub struct Menu {
    pub id: ObjectReference,
    pub _id: ObjectReference,
    pub itemid: ObjectReference,
    pub merchant: ObjectReference,
    pub name: Vec<LocalizedString>,
    pub categories: Vec<Category>,
    pub items: Vec<MenuItem>,
    pub recommendations: Vec<Recommendation>,
    pub language: String,
    pub languages: Vec<MenuLanguage>,
    pub options: Vec<MenuOption>,
    #[serde(flatten)]
    pub _extra_fields: std::collections::HashMap<String, serde_json::Value>,
}

#[derive(Deserialize, Debug)]
pub struct MenuResults {
    pub results: Vec<Menu>,

    #[serde(flatten)]
    pub _extra_fields: std::collections::HashMap<String, serde_json::Value>,
}