1use crate::Request;
2
3use serde::{Deserialize, Serialize};
4
5
6#[derive(Serialize, Deserialize, Debug, Default)]
8pub struct TravelerInfoLimitation {
9
10 #[serde(rename = "credential")]
12 pub credential: Option<i32>,
13
14 #[serde(rename = "name")]
16 pub name: Option<i32>,
17
18 #[serde(rename = "traveler_required")]
20 pub traveler_required: Option<i32>,
21
22}
23
24#[derive(Serialize, Deserialize, Debug, Default)]
26pub struct ProviderContactInfo {
27
28 #[serde(rename = "provider_business_hour")]
30 pub provider_business_hour: Option<Vec<ProviderBusinessHour>>,
31
32 #[serde(rename = "provider_name")]
34 pub provider_name: Option<String>,
35
36 #[serde(rename = "provider_telephone")]
38 pub provider_telephone: Option<String>,
39
40}
41
42#[derive(Serialize, Deserialize, Debug, Default)]
44pub struct TicketTime {
45
46 #[serde(rename = "comment")]
48 pub comment: Option<String>,
49
50 #[serde(rename = "end_at")]
52 pub end_at: Option<String>,
53
54 #[serde(rename = "start_at")]
56 pub start_at: Option<String>,
57
58}
59
60#[derive(Serialize, Deserialize, Debug, Default)]
62pub struct RefundRules {
63
64 #[serde(rename = "ahead_time")]
66 pub ahead_time: Option<i32>,
67
68 #[serde(rename = "deduction_fee")]
70 pub deduction_fee: Option<i32>,
71
72 #[serde(rename = "deduction_unit")]
74 pub deduction_unit: Option<i32>,
75
76 #[serde(rename = "type")]
78 pub type_: Option<i32>,
79
80}
81
82#[derive(Serialize, Deserialize, Debug, Default)]
84pub struct PddTicketSkuRuleAdd {
85
86 #[serde(rename = "booker_info_limitation")]
88 pub booker_info_limitation: Option<BookerInfoLimitation>,
89
90 #[serde(rename = "booking_notice")]
92 pub booking_notice: Option<BookingNotice>,
93
94 #[serde(rename = "order_limitation")]
96 pub order_limitation: Option<OrderLimitation>,
97
98 #[serde(rename = "out_rule_id")]
100 pub out_rule_id: Option<String>,
101
102 #[serde(rename = "provider_contact_info")]
104 pub provider_contact_info: Option<ProviderContactInfo>,
105
106 #[serde(rename = "refund_limitations")]
108 pub refund_limitations: Option<RefundLimitations>,
109
110 #[serde(rename = "rule_name")]
112 pub rule_name: Option<String>,
113
114 #[serde(rename = "traveler_info_limitation")]
116 pub traveler_info_limitation: Option<TravelerInfoLimitation>,
117
118 #[serde(rename = "valid_limitation")]
120 pub valid_limitation: Option<ValidLimitation>,
121
122}
123
124#[derive(Serialize, Deserialize, Debug, Default)]
126pub struct BookerInfoLimitation {
127
128 #[serde(rename = "booker_required")]
130 pub booker_required: Option<i32>,
131
132 #[serde(rename = "mobile")]
134 pub mobile: Option<i32>,
135
136}
137
138#[derive(Serialize, Deserialize, Debug, Default)]
140pub struct EnterTime {
141
142 #[serde(rename = "comment")]
144 pub comment: Option<String>,
145
146 #[serde(rename = "end_at")]
148 pub end_at: Option<String>,
149
150 #[serde(rename = "start_at")]
152 pub start_at: Option<String>,
153
154}
155
156#[derive(Serialize, Deserialize, Debug, Default)]
158pub struct OrderLimitation {
159
160 #[serde(rename = "cycle_length")]
162 pub cycle_length: Option<i32>,
163
164 #[serde(rename = "limitation_type")]
166 pub limitation_type: Option<i32>,
167
168 #[serde(rename = "limit_cycle")]
170 pub limit_cycle: Option<i32>,
171
172 #[serde(rename = "limit_num")]
174 pub limit_num: Option<i32>,
175
176}
177
178#[derive(Serialize, Deserialize, Debug, Default)]
180pub struct BookingNotice {
181
182 #[serde(rename = "enter_address")]
184 pub enter_address: Option<String>,
185
186 #[serde(rename = "enter_time")]
188 pub enter_time: Option<Vec<EnterTime>>,
189
190 #[serde(rename = "enter_ways")]
192 pub enter_ways: Option<String>,
193
194 #[serde(rename = "extra_desc")]
196 pub extra_desc: Option<String>,
197
198 #[serde(rename = "fee_include")]
200 pub fee_include: Option<String>,
201
202 #[serde(rename = "fee_not_include")]
204 pub fee_not_include: Option<String>,
205
206 #[serde(rename = "important_notice")]
208 pub important_notice: Option<String>,
209
210 #[serde(rename = "pass_time_limit")]
212 pub pass_time_limit: Option<i32>,
213
214 #[serde(rename = "ticket_place")]
216 pub ticket_place: Option<String>,
217
218 #[serde(rename = "ticket_time")]
220 pub ticket_time: Option<Vec<TicketTime>>,
221
222}
223
224#[derive(Serialize, Deserialize, Debug, Default)]
226pub struct RefundLimitations {
227
228 #[serde(rename = "is_refundable")]
230 pub is_refundable: Option<i32>,
231
232 #[serde(rename = "refund_rules")]
234 pub refund_rules: Option<Vec<RefundRules>>,
235
236}
237
238#[derive(Serialize, Deserialize, Debug, Default)]
240pub struct ValidLimitation {
241
242 #[serde(rename = "days_time")]
244 pub days_time: Option<i32>,
245
246 #[serde(rename = "end_time")]
248 pub end_time: Option<i64>,
249
250 #[serde(rename = "start_time")]
252 pub start_time: Option<i64>,
253
254 #[serde(rename = "time_type")]
256 pub time_type: Option<i32>,
257
258}
259
260#[derive(Serialize, Deserialize, Debug, Default)]
262pub struct ProviderBusinessHour {
263
264 #[serde(rename = "close_at")]
266 pub close_at: Option<String>,
267
268 #[serde(rename = "open_at")]
270 pub open_at: Option<String>,
271
272 #[serde(rename = "time_info")]
274 pub time_info: Option<String>,
275
276}
277
278
279impl Request for PddTicketSkuRuleAdd {
281 fn get_type() -> String {
282 "pdd.ticket.sku.rule.add".to_string()
283 }
284
285 fn get_response_name() -> String {
286 "response".to_string()
287 }
288}