use crate::Request;
use serde::{Deserialize, Serialize};
#[derive(Serialize, Deserialize, Debug, Default)]
pub struct OverseaGoods {
#[serde(rename = "bonded_warehouse_key")]
pub bonded_warehouse_key: Option<String>,
#[serde(rename = "consumption_tax_rate")]
pub consumption_tax_rate: Option<i32>,
#[serde(rename = "customs_broker")]
pub customs_broker: Option<String>,
#[serde(rename = "hs_code")]
pub hs_code: Option<String>,
#[serde(rename = "value_added_tax_rate")]
pub value_added_tax_rate: Option<i32>,
}
#[derive(Serialize, Deserialize, Debug, Default)]
pub struct GoodsProperties {
#[serde(rename = "group_id")]
pub group_id: Option<i32>,
#[serde(rename = "img_url")]
pub img_url: Option<String>,
#[serde(rename = "note")]
pub note: Option<String>,
#[serde(rename = "parent_spec_id")]
pub parent_spec_id: Option<i64>,
#[serde(rename = "ref_pid")]
pub ref_pid: Option<i64>,
#[serde(rename = "spec_id")]
pub spec_id: Option<i64>,
#[serde(rename = "template_pid")]
pub template_pid: Option<i64>,
#[serde(rename = "value")]
pub value: Option<String>,
#[serde(rename = "value_unit")]
pub value_unit: Option<String>,
#[serde(rename = "vid")]
pub vid: Option<i64>,
}
#[derive(Serialize, Deserialize, Debug, Default)]
pub struct SkuList {
#[serde(rename = "is_onsale")]
pub is_onsale: Option<i32>,
#[serde(rename = "length")]
pub length: Option<i64>,
#[serde(rename = "limit_quantity")]
pub limit_quantity: Option<i64>,
#[serde(rename = "multi_price")]
pub multi_price: Option<i64>,
#[serde(rename = "out_sku_sn")]
pub out_sku_sn: Option<String>,
#[serde(rename = "out_source_sku_id")]
pub out_source_sku_id: Option<String>,
#[serde(rename = "oversea_sku")]
pub oversea_sku: Option<OverseaSku>,
#[serde(rename = "price")]
pub price: Option<i64>,
#[serde(rename = "quantity")]
pub quantity: Option<i64>,
#[serde(rename = "sku_pre_sale_time")]
pub sku_pre_sale_time: Option<i32>,
#[serde(rename = "sku_properties")]
pub sku_properties: Option<Vec<SkuProperties>>,
#[serde(rename = "spec_id_list")]
pub spec_id_list: Option<Vec<i64>>,
#[serde(rename = "thumb_url")]
pub thumb_url: Option<String>,
#[serde(rename = "weight")]
pub weight: Option<i64>,
}
#[derive(Serialize, Deserialize, Debug, Default)]
pub struct GoodsTravelAttr {
#[serde(rename = "need_tourist")]
pub need_tourist: Option<bool>,
#[serde(rename = "type")]
pub type_: Option<i32>,
}
#[derive(Serialize, Deserialize, Debug, Default)]
pub struct GoodsTradeAttr {
#[serde(rename = "advances_days")]
pub advances_days: Option<i32>,
#[serde(rename = "booking_notes")]
pub booking_notes: Option<BookingNotes>,
#[serde(rename = "life_span")]
pub life_span: Option<i32>,
}
#[derive(Serialize, Deserialize, Debug, Default)]
pub struct OverseaSku {
#[serde(rename = "measurement_code")]
pub measurement_code: Option<String>,
#[serde(rename = "specifications")]
pub specifications: Option<String>,
#[serde(rename = "taxation")]
pub taxation: Option<i32>,
}
#[derive(Serialize, Deserialize, Debug, Default)]
pub struct SkuProperties {
#[serde(rename = "punit")]
pub punit: Option<String>,
#[serde(rename = "ref_pid")]
pub ref_pid: Option<i64>,
#[serde(rename = "value")]
pub value: Option<String>,
#[serde(rename = "vid")]
pub vid: Option<i64>,
}
#[derive(Serialize, Deserialize, Debug, Default)]
pub struct ElecGoodsAttributes {
#[serde(rename = "begin_time")]
pub begin_time: Option<i64>,
#[serde(rename = "days_time")]
pub days_time: Option<i32>,
#[serde(rename = "end_time")]
pub end_time: Option<i64>,
#[serde(rename = "time_type")]
pub time_type: Option<i32>,
}
#[derive(Serialize, Deserialize, Debug, Default)]
pub struct PddGoodsSubmitGoodsCommit {
#[serde(rename = "auto_fill_spu_property")]
pub auto_fill_spu_property: Option<bool>,
#[serde(rename = "bad_fruit_claim")]
pub bad_fruit_claim: Option<i32>,
#[serde(rename = "buy_limit")]
pub buy_limit: Option<i64>,
#[serde(rename = "carousel_gallery")]
pub carousel_gallery: Option<Vec<String>>,
#[serde(rename = "carousel_video")]
pub carousel_video: Option<Vec<CarouselVideo>>,
#[serde(rename = "carousel_video_url")]
pub carousel_video_url: Option<String>,
#[serde(rename = "cat_id")]
pub cat_id: Option<i64>,
#[serde(rename = "cost_template_id")]
pub cost_template_id: Option<i64>,
#[serde(rename = "country_id")]
pub country_id: Option<i32>,
#[serde(rename = "customer_num")]
pub customer_num: Option<i64>,
#[serde(rename = "customs")]
pub customs: Option<String>,
#[serde(rename = "delivery_one_day")]
pub delivery_one_day: Option<i32>,
#[serde(rename = "delivery_type")]
pub delivery_type: Option<i32>,
#[serde(rename = "detail_gallery")]
pub detail_gallery: Option<Vec<String>>,
#[serde(rename = "elec_goods_attributes")]
pub elec_goods_attributes: Option<ElecGoodsAttributes>,
#[serde(rename = "goods_commit_id")]
pub goods_commit_id: Option<i64>,
#[serde(rename = "goods_desc")]
pub goods_desc: Option<String>,
#[serde(rename = "goods_id")]
pub goods_id: Option<i64>,
#[serde(rename = "goods_name")]
pub goods_name: Option<String>,
#[serde(rename = "goods_properties")]
pub goods_properties: Option<Vec<GoodsProperties>>,
#[serde(rename = "goods_trade_attr")]
pub goods_trade_attr: Option<GoodsTradeAttr>,
#[serde(rename = "goods_travel_attr")]
pub goods_travel_attr: Option<GoodsTravelAttr>,
#[serde(rename = "goods_type")]
pub goods_type: Option<i32>,
#[serde(rename = "ignore_edit_warn")]
pub ignore_edit_warn: Option<bool>,
#[serde(rename = "image_url")]
pub image_url: Option<String>,
#[serde(rename = "invoice_status")]
pub invoice_status: Option<i32>,
#[serde(rename = "is_customs")]
pub is_customs: Option<bool>,
#[serde(rename = "is_folt")]
pub is_folt: Option<bool>,
#[serde(rename = "is_group_pre_sale")]
pub is_group_pre_sale: Option<i32>,
#[serde(rename = "is_pre_sale")]
pub is_pre_sale: Option<bool>,
#[serde(rename = "is_refundable")]
pub is_refundable: Option<bool>,
#[serde(rename = "is_sku_pre_sale")]
pub is_sku_pre_sale: Option<i32>,
#[serde(rename = "lack_of_weight_claim")]
pub lack_of_weight_claim: Option<i32>,
#[serde(rename = "local_service_id_list")]
pub local_service_id_list: Option<Vec<i32>>,
#[serde(rename = "mai_jia_zi_ti")]
pub mai_jia_zi_ti: Option<String>,
#[serde(rename = "market_price")]
pub market_price: Option<i64>,
#[serde(rename = "operate_type")]
pub operate_type: Option<i32>,
#[serde(rename = "order_limit")]
pub order_limit: Option<i64>,
#[serde(rename = "origin_country_id")]
pub origin_country_id: Option<i32>,
#[serde(rename = "out_goods_id")]
pub out_goods_id: Option<String>,
#[serde(rename = "out_source_goods_id")]
pub out_source_goods_id: Option<String>,
#[serde(rename = "out_source_type")]
pub out_source_type: Option<i32>,
#[serde(rename = "oversea_goods")]
pub oversea_goods: Option<OverseaGoods>,
#[serde(rename = "oversea_type")]
pub oversea_type: Option<i32>,
#[serde(rename = "pre_sale_time")]
pub pre_sale_time: Option<i64>,
#[serde(rename = "quan_guo_lian_bao")]
pub quan_guo_lian_bao: Option<i32>,
#[serde(rename = "second_hand")]
pub second_hand: Option<bool>,
#[serde(rename = "shang_men_an_zhuang")]
pub shang_men_an_zhuang: Option<String>,
#[serde(rename = "shipment_limit_second")]
pub shipment_limit_second: Option<i64>,
#[serde(rename = "shop_group_id")]
pub shop_group_id: Option<i64>,
#[serde(rename = "sku_list")]
pub sku_list: Option<Vec<SkuList>>,
#[serde(rename = "sku_type")]
pub sku_type: Option<i32>,
#[serde(rename = "song_huo_an_zhuang")]
pub song_huo_an_zhuang: Option<String>,
#[serde(rename = "song_huo_ru_hu")]
pub song_huo_ru_hu: Option<String>,
#[serde(rename = "sync_goods_operate")]
pub sync_goods_operate: Option<i32>,
#[serde(rename = "tiny_name")]
pub tiny_name: Option<String>,
#[serde(rename = "two_pieces_discount")]
pub two_pieces_discount: Option<i32>,
#[serde(rename = "warehouse")]
pub warehouse: Option<String>,
#[serde(rename = "warm_tips")]
pub warm_tips: Option<String>,
#[serde(rename = "zhi_huan_bu_xiu")]
pub zhi_huan_bu_xiu: Option<i32>,
}
#[derive(Serialize, Deserialize, Debug, Default)]
pub struct CarouselVideo {
#[serde(rename = "file_id")]
pub file_id: Option<i64>,
#[serde(rename = "video_url")]
pub video_url: Option<String>,
}
#[derive(Serialize, Deserialize, Debug, Default)]
pub struct BookingNotes {
#[serde(rename = "url")]
pub url: Option<String>,
}
impl Request for PddGoodsSubmitGoodsCommit {
fn get_type() -> String {
"pdd.goods.submit.goods.commit".to_string()
}
fn get_response_name() -> String {
"goods_update_response".to_string()
}
}