use crate::Request;
use serde::{Deserialize, Serialize};
#[derive(Serialize, Deserialize, Debug, Default)]
pub struct TravelerInfoLimitation {
#[serde(rename = "credential")]
pub credential: Option<i32>,
#[serde(rename = "name")]
pub name: Option<i32>,
#[serde(rename = "traveler_required")]
pub traveler_required: Option<i32>,
}
#[derive(Serialize, Deserialize, Debug, Default)]
pub struct ProviderContactInfo {
#[serde(rename = "provider_business_hour")]
pub provider_business_hour: Option<Vec<ProviderBusinessHour>>,
#[serde(rename = "provider_name")]
pub provider_name: Option<String>,
#[serde(rename = "provider_telephone")]
pub provider_telephone: Option<String>,
}
#[derive(Serialize, Deserialize, Debug, Default)]
pub struct TicketTime {
#[serde(rename = "comment")]
pub comment: Option<String>,
#[serde(rename = "end_at")]
pub end_at: Option<String>,
#[serde(rename = "start_at")]
pub start_at: Option<String>,
}
#[derive(Serialize, Deserialize, Debug, Default)]
pub struct RefundRules {
#[serde(rename = "ahead_time")]
pub ahead_time: Option<i32>,
#[serde(rename = "deduction_fee")]
pub deduction_fee: Option<i32>,
#[serde(rename = "deduction_unit")]
pub deduction_unit: Option<i32>,
#[serde(rename = "type")]
pub type_: Option<i32>,
}
#[derive(Serialize, Deserialize, Debug, Default)]
pub struct PddTicketSkuRuleAdd {
#[serde(rename = "booker_info_limitation")]
pub booker_info_limitation: Option<BookerInfoLimitation>,
#[serde(rename = "booking_notice")]
pub booking_notice: Option<BookingNotice>,
#[serde(rename = "order_limitation")]
pub order_limitation: Option<OrderLimitation>,
#[serde(rename = "out_rule_id")]
pub out_rule_id: Option<String>,
#[serde(rename = "provider_contact_info")]
pub provider_contact_info: Option<ProviderContactInfo>,
#[serde(rename = "refund_limitations")]
pub refund_limitations: Option<RefundLimitations>,
#[serde(rename = "rule_name")]
pub rule_name: Option<String>,
#[serde(rename = "traveler_info_limitation")]
pub traveler_info_limitation: Option<TravelerInfoLimitation>,
#[serde(rename = "valid_limitation")]
pub valid_limitation: Option<ValidLimitation>,
}
#[derive(Serialize, Deserialize, Debug, Default)]
pub struct BookerInfoLimitation {
#[serde(rename = "booker_required")]
pub booker_required: Option<i32>,
#[serde(rename = "mobile")]
pub mobile: Option<i32>,
}
#[derive(Serialize, Deserialize, Debug, Default)]
pub struct EnterTime {
#[serde(rename = "comment")]
pub comment: Option<String>,
#[serde(rename = "end_at")]
pub end_at: Option<String>,
#[serde(rename = "start_at")]
pub start_at: Option<String>,
}
#[derive(Serialize, Deserialize, Debug, Default)]
pub struct OrderLimitation {
#[serde(rename = "cycle_length")]
pub cycle_length: Option<i32>,
#[serde(rename = "limitation_type")]
pub limitation_type: Option<i32>,
#[serde(rename = "limit_cycle")]
pub limit_cycle: Option<i32>,
#[serde(rename = "limit_num")]
pub limit_num: Option<i32>,
}
#[derive(Serialize, Deserialize, Debug, Default)]
pub struct BookingNotice {
#[serde(rename = "enter_address")]
pub enter_address: Option<String>,
#[serde(rename = "enter_time")]
pub enter_time: Option<Vec<EnterTime>>,
#[serde(rename = "enter_ways")]
pub enter_ways: Option<String>,
#[serde(rename = "extra_desc")]
pub extra_desc: Option<String>,
#[serde(rename = "fee_include")]
pub fee_include: Option<String>,
#[serde(rename = "fee_not_include")]
pub fee_not_include: Option<String>,
#[serde(rename = "important_notice")]
pub important_notice: Option<String>,
#[serde(rename = "pass_time_limit")]
pub pass_time_limit: Option<i32>,
#[serde(rename = "ticket_place")]
pub ticket_place: Option<String>,
#[serde(rename = "ticket_time")]
pub ticket_time: Option<Vec<TicketTime>>,
}
#[derive(Serialize, Deserialize, Debug, Default)]
pub struct RefundLimitations {
#[serde(rename = "is_refundable")]
pub is_refundable: Option<i32>,
#[serde(rename = "refund_rules")]
pub refund_rules: Option<Vec<RefundRules>>,
}
#[derive(Serialize, Deserialize, Debug, Default)]
pub struct ValidLimitation {
#[serde(rename = "days_time")]
pub days_time: Option<i32>,
#[serde(rename = "end_time")]
pub end_time: Option<i64>,
#[serde(rename = "start_time")]
pub start_time: Option<i64>,
#[serde(rename = "time_type")]
pub time_type: Option<i32>,
}
#[derive(Serialize, Deserialize, Debug, Default)]
pub struct ProviderBusinessHour {
#[serde(rename = "close_at")]
pub close_at: Option<String>,
#[serde(rename = "open_at")]
pub open_at: Option<String>,
#[serde(rename = "time_info")]
pub time_info: Option<String>,
}
impl Request for PddTicketSkuRuleAdd {
fn get_type() -> String {
"pdd.ticket.sku.rule.add".to_string()
}
fn get_response_name() -> String {
"response".to_string()
}
}