use serde::{Deserialize, Deserializer, Serialize};
use serde_json::Value;
fn deserialize_nullable_string<'de, D>(deserializer: D) -> Result<String, D::Error>
where
D: Deserializer<'de>,
{
let opt: Option<String> = Option::deserialize(deserializer)?;
Ok(opt.unwrap_or_default())
}
fn deserialize_string_or_i64<'de, D>(deserializer: D) -> Result<i64, D::Error>
where
D: Deserializer<'de>,
{
use serde::de::Error;
use serde_json::Value;
let value = Value::deserialize(deserializer)?;
match value {
Value::Number(n) => n.as_i64().ok_or_else(|| D::Error::custom("invalid number")),
Value::String(s) => s
.parse::<i64>()
.map_err(|_| D::Error::custom("invalid string number")),
Value::Null => Ok(0),
_ => Err(D::Error::custom("expected string or number")),
}
}
#[derive(Debug, Clone, Deserialize)]
pub struct ApiResponse {
pub code: i32,
#[serde(alias = "message", default)]
pub msg: String,
#[serde(default)]
pub data: Value,
}
#[derive(Debug, Clone, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct TokenResponse {
pub token_type: String,
#[serde(rename = "token")]
pub access_token: String,
pub expires_in: i32,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct Article {
#[serde(default, deserialize_with = "deserialize_nullable_string")]
pub id: String,
#[serde(default, deserialize_with = "deserialize_nullable_string")]
pub version: String,
#[serde(default, deserialize_with = "deserialize_nullable_string")]
pub title: String,
#[serde(default, deserialize_with = "deserialize_nullable_string")]
pub sub_title: String,
#[serde(
rename = "infoSummary",
default,
deserialize_with = "deserialize_nullable_string"
)]
pub summary: String,
#[serde(default, deserialize_with = "deserialize_nullable_string")]
pub source_id: String,
#[serde(default, deserialize_with = "deserialize_nullable_string")]
pub show_date: String,
#[serde(default, deserialize_with = "deserialize_nullable_string")]
pub release_date: String,
#[serde(default, deserialize_with = "deserialize_nullable_string")]
pub content: String,
#[serde(default, deserialize_with = "deserialize_nullable_string")]
pub keywords: String,
#[serde(default, deserialize_with = "deserialize_nullable_string")]
pub entity_type: String,
#[serde(default, deserialize_with = "deserialize_nullable_string")]
pub title_image_url: String,
#[serde(default, deserialize_with = "deserialize_nullable_string")]
pub article_static_url: String,
#[serde(default, deserialize_with = "deserialize_nullable_string")]
pub article_dynamic_url: String,
#[serde(default, deserialize_with = "deserialize_nullable_string")]
pub page_name: String,
#[serde(default, deserialize_with = "deserialize_nullable_string")]
pub create_date: String,
}
#[derive(Debug, Clone, Serialize)]
#[serde(rename_all = "camelCase")]
pub struct GetArticleByPageRequest {
pub column_id: String,
pub page_no: i32,
pub page_size: i32,
pub site_id: i32,
}
#[derive(Debug, Clone, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct GetArticleByPageResponse {
pub column_id: String,
#[serde(default, deserialize_with = "deserialize_nullable_string")]
pub status: String,
#[serde(default, deserialize_with = "deserialize_nullable_string")]
pub status_info: String,
pub result_list: Vec<Article>,
pub total_count: i32,
}
#[derive(Debug, Clone, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct TradeDate {
#[serde(
rename = "tradeDate",
default,
deserialize_with = "deserialize_nullable_string"
)]
pub date: String,
}
#[derive(Debug, Clone, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct Variety {
#[serde(
rename = "varietyId",
default,
deserialize_with = "deserialize_nullable_string"
)]
pub code: String,
#[serde(
rename = "varietyName",
default,
deserialize_with = "deserialize_nullable_string"
)]
pub name: String,
#[serde(
rename = "varietyEnglishName",
default,
deserialize_with = "deserialize_nullable_string"
)]
pub english_name: String,
#[serde(default, deserialize_with = "deserialize_nullable_string")]
pub pic: String,
#[serde(
rename = "varietyType",
default,
deserialize_with = "deserialize_nullable_string"
)]
pub variety_type: String,
}
#[derive(Debug, Clone, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct Quote {
#[serde(default, deserialize_with = "deserialize_nullable_string")]
pub variety: String,
#[serde(
rename = "varietyOrder",
default,
deserialize_with = "deserialize_nullable_string"
)]
pub variety_order: String,
#[serde(
rename = "contractId",
default,
deserialize_with = "deserialize_nullable_string"
)]
pub contract_id: String,
#[serde(
rename = "delivMonth",
default,
deserialize_with = "deserialize_nullable_string"
)]
pub deliv_month: String,
#[serde(default, deserialize_with = "deserialize_nullable_string")]
pub open: String,
#[serde(default, deserialize_with = "deserialize_nullable_string")]
pub high: String,
#[serde(default, deserialize_with = "deserialize_nullable_string")]
pub low: String,
#[serde(default, deserialize_with = "deserialize_nullable_string")]
pub close: String,
#[serde(
rename = "lastClear",
default,
deserialize_with = "deserialize_nullable_string"
)]
pub last_clear: String,
#[serde(
rename = "lastPrice",
default,
deserialize_with = "deserialize_nullable_string"
)]
pub last_price: String,
#[serde(
rename = "clearPrice",
default,
deserialize_with = "deserialize_nullable_string"
)]
pub clear_price: String,
#[serde(default, deserialize_with = "deserialize_nullable_string")]
pub diff: String,
#[serde(default, deserialize_with = "deserialize_nullable_string")]
pub diff1: String,
#[serde(
rename = "declarePrice",
default,
deserialize_with = "deserialize_nullable_string"
)]
pub declare_price: String,
#[serde(rename = "volumn", default)]
pub volume: i64,
#[serde(rename = "openInterest", default)]
pub open_interest: i64,
#[serde(rename = "diffI", default)]
pub diff_i: i64,
#[serde(default, deserialize_with = "deserialize_nullable_string")]
pub turnover: String,
#[serde(
rename = "varietyEn",
default,
deserialize_with = "deserialize_nullable_string"
)]
pub variety_en: String,
#[serde(
rename = "turnoverEn",
default,
deserialize_with = "deserialize_nullable_string"
)]
pub turnover_en: String,
#[serde(default, deserialize_with = "deserialize_nullable_string")]
pub delta: String,
#[serde(rename = "matchQtySum", default)]
pub match_qty_sum: i64,
#[serde(
rename = "diffT",
default,
deserialize_with = "deserialize_nullable_string"
)]
pub diff_t: String,
#[serde(
rename = "volumnRate",
default,
deserialize_with = "deserialize_nullable_string"
)]
pub volumn_rate: String,
#[serde(
rename = "openInterestRate",
default,
deserialize_with = "deserialize_nullable_string"
)]
pub open_interest_rate: String,
#[serde(
rename = "periodOverPeriodChg",
default,
deserialize_with = "deserialize_nullable_string"
)]
pub period_over_period_chg: String,
#[serde(rename = "diffV", default)]
pub diff_v: Option<i64>,
#[serde(
rename = "impliedVolatility",
default,
deserialize_with = "deserialize_nullable_string"
)]
pub implied_volatility: String,
#[serde(
rename = "seriesId",
default,
deserialize_with = "deserialize_nullable_string"
)]
pub series_id: String,
#[serde(rename = "avgOpenInterest", default)]
pub avg_open_interest: i64,
}
#[derive(Debug, Clone, Serialize)]
#[serde(rename_all = "camelCase")]
pub struct QuotesRequest {
#[serde(skip_serializing_if = "Option::is_none")]
pub variety_id: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub variety: Option<String>,
pub trade_date: String,
pub trade_type: String,
#[serde(skip_serializing_if = "Option::is_none")]
pub lang: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub statistics_type: Option<i32>,
}
#[derive(Debug, Clone, Serialize)]
#[serde(rename_all = "camelCase")]
pub struct WeekQuotesRequest {
pub variety_code: String,
pub year: i32,
pub week: i32,
}
#[derive(Debug, Clone, Serialize)]
#[serde(rename_all = "camelCase")]
pub struct MonthQuotesRequest {
pub variety_code: String,
pub year: i32,
pub month: i32,
}
#[derive(Debug, Clone, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct DeliveryData {
#[serde(default, deserialize_with = "deserialize_nullable_string")]
pub variety: String,
#[serde(default, deserialize_with = "deserialize_nullable_string")]
pub contract_id: String,
#[serde(default, deserialize_with = "deserialize_nullable_string")]
pub delivery_date: String,
#[serde(default)]
pub delivery_qty: i64,
#[serde(default, deserialize_with = "deserialize_nullable_string")]
pub delivery_amt: String,
}
#[derive(Debug, Clone, Serialize)]
#[serde(rename_all = "camelCase")]
pub struct DeliveryDataRequest {
pub variety_id: String,
pub start_month: String,
pub end_month: String,
pub variety_type: String,
}
#[derive(Debug, Clone, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct DeliveryMatch {
#[serde(default, deserialize_with = "deserialize_nullable_string")]
pub contract_id: String,
#[serde(default, deserialize_with = "deserialize_nullable_string")]
pub match_date: String,
#[serde(default, deserialize_with = "deserialize_nullable_string")]
pub buy_member_id: String,
#[serde(default, deserialize_with = "deserialize_nullable_string")]
pub sell_member_id: String,
#[serde(default)]
pub delivery_qty: i64,
#[serde(default, deserialize_with = "deserialize_nullable_string")]
pub delivery_price: String,
}
#[derive(Debug, Clone, Serialize)]
#[serde(rename_all = "camelCase")]
pub struct DeliveryMatchRequest {
pub variety_id: String,
pub contract_id: String,
pub start_month: String,
pub end_month: String,
}
#[derive(Debug, Clone, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct WarehouseReceipt {
#[serde(rename = "entityList", default)]
pub entity_list: Vec<WarehouseReceiptDetail>,
#[serde(
rename = "ifAgioFlag",
default,
deserialize_with = "deserialize_nullable_string"
)]
pub if_agio_flag: String,
#[serde(
rename = "agioDeliType",
default,
deserialize_with = "deserialize_nullable_string"
)]
pub agio_deli_type: String,
#[serde(
rename = "ifAgioBrandFlag",
default,
deserialize_with = "deserialize_nullable_string"
)]
pub if_agio_brand_flag: String,
}
#[derive(Debug, Clone, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct WarehouseReceiptDetail {
#[serde(
rename = "varietyOrder",
default,
deserialize_with = "deserialize_nullable_string"
)]
pub variety_order: String,
#[serde(
rename = "groupCodeOrder",
default,
deserialize_with = "deserialize_nullable_string"
)]
pub group_code_order: String,
#[serde(
rename = "whCodeOrder",
default,
deserialize_with = "deserialize_nullable_string"
)]
pub wh_code_order: String,
#[serde(
rename = "whType",
default,
deserialize_with = "deserialize_nullable_string"
)]
pub wh_type: String,
#[serde(default, deserialize_with = "deserialize_nullable_string")]
pub variety: String,
#[serde(
rename = "genDate",
default,
deserialize_with = "deserialize_nullable_string"
)]
pub gen_date: String,
#[serde(
rename = "whAbbr",
default,
deserialize_with = "deserialize_nullable_string"
)]
pub wh_abbr: String,
#[serde(
rename = "deliveryAbbr",
default,
deserialize_with = "deserialize_nullable_string"
)]
pub delivery_abbr: String,
#[serde(rename = "lastWbillQty", default)]
pub last_wbill_qty: i64,
#[serde(rename = "regWbillQty", default)]
pub reg_wbill_qty: i64,
#[serde(rename = "logoutWbillQty", default)]
pub logout_wbill_qty: i64,
#[serde(rename = "wbillQty", default)]
pub wbill_qty: i64,
#[serde(default)]
pub diff: i64,
}
#[derive(Debug, Clone, Serialize)]
#[serde(rename_all = "camelCase")]
pub struct WarehouseReceiptRequest {
pub variety_id: String,
pub trade_date: String,
}
#[derive(Debug, Clone, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct DeliveryCost {
#[serde(default, deserialize_with = "deserialize_nullable_string")]
pub variety: String,
#[serde(default, deserialize_with = "deserialize_nullable_string")]
pub earnest_rate: String,
#[serde(default, deserialize_with = "deserialize_nullable_string")]
pub unit: String,
#[serde(default, deserialize_with = "deserialize_nullable_string")]
pub delivery_fee: String,
#[serde(default, deserialize_with = "deserialize_nullable_string")]
pub fee_rate: String,
#[serde(default, deserialize_with = "deserialize_nullable_string")]
pub start_date: String,
#[serde(default, deserialize_with = "deserialize_nullable_string")]
pub end_date: String,
}
#[derive(Debug, Clone, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct WarehousePremiumResponse {
#[serde(rename = "entityList", default)]
pub entity_list: Vec<WarehousePremium>,
#[serde(
rename = "ifAgioFlag",
default,
deserialize_with = "deserialize_nullable_string"
)]
pub if_agio_flag: String,
}
#[derive(Debug, Clone, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct WarehousePremium {
#[serde(default, deserialize_with = "deserialize_nullable_string")]
pub variety_id: String,
#[serde(default, deserialize_with = "deserialize_nullable_string")]
pub variety_name: String,
#[serde(default, deserialize_with = "deserialize_nullable_string")]
pub valid_date: String,
#[serde(
rename = "whCode",
default,
deserialize_with = "deserialize_nullable_string"
)]
pub wh_code: String,
#[serde(
rename = "whName",
default,
deserialize_with = "deserialize_nullable_string"
)]
pub wh_name: String,
#[serde(
rename = "avgAgio",
default,
deserialize_with = "deserialize_nullable_string"
)]
pub avg_agio: String,
#[serde(
rename = "whGroupAbbr",
default,
deserialize_with = "deserialize_nullable_string"
)]
pub wh_group_abbr: String,
#[serde(
rename = "brandAbbr",
default,
deserialize_with = "deserialize_nullable_string"
)]
pub brand_abbr: String,
}
#[derive(Debug, Clone, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct Ranking {
#[serde(default, deserialize_with = "deserialize_nullable_string")]
pub rank: String,
#[serde(
rename = "qtyAbbr",
default,
deserialize_with = "deserialize_nullable_string"
)]
pub qty_abbr: String,
#[serde(rename = "todayQty", default)]
pub today_qty: i64,
#[serde(rename = "qtySub", default)]
pub qty_sub: i64,
#[serde(
rename = "buyAbbr",
default,
deserialize_with = "deserialize_nullable_string"
)]
pub buy_abbr: String,
#[serde(rename = "todayBuyQty", default)]
pub today_buy_qty: i64,
#[serde(rename = "buySub", default)]
pub buy_sub: i64,
#[serde(
rename = "sellAbbr",
default,
deserialize_with = "deserialize_nullable_string"
)]
pub sell_abbr: String,
#[serde(rename = "todaySellQty", default)]
pub today_sell_qty: i64,
#[serde(rename = "sellSub", default)]
pub sell_sub: i64,
}
#[derive(Debug, Clone, Serialize)]
#[serde(rename_all = "camelCase")]
pub struct DailyRankingRequest {
pub variety_id: String,
pub contract_id: String,
pub trade_date: String,
pub trade_type: String,
}
#[derive(Debug, Clone, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct DailyRankingResponse {
#[serde(
rename = "contractId",
default,
deserialize_with = "deserialize_nullable_string"
)]
pub contract_id: String,
#[serde(rename = "todayQty", default)]
pub today_qty: i64,
#[serde(rename = "qtySub", default)]
pub qty_sub: i64,
#[serde(rename = "todayBuyQty", default)]
pub today_buy_qty: i64,
#[serde(rename = "buySub", default)]
pub buy_sub: i64,
#[serde(rename = "todaySellQty", default)]
pub today_sell_qty: i64,
#[serde(rename = "sellSub", default)]
pub sell_sub: i64,
#[serde(rename = "qtyFutureList", default)]
pub qty_future_list: Vec<Ranking>,
#[serde(rename = "buyFutureList", default)]
pub buy_future_list: Vec<Ranking>,
#[serde(rename = "sellFutureList", default)]
pub sell_future_list: Vec<Ranking>,
}
#[derive(Debug, Clone, Serialize)]
#[serde(rename_all = "camelCase")]
pub struct PhaseRankingRequest {
pub variety: String,
pub start_month: String,
pub end_month: String,
pub trade_type: String,
}
#[derive(Debug, Clone, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct PhaseRanking {
#[serde(default, deserialize_with = "deserialize_nullable_string")]
pub seq: String,
#[serde(
rename = "memberId",
default,
deserialize_with = "deserialize_nullable_string"
)]
pub member_id: String,
#[serde(
rename = "memberName",
default,
deserialize_with = "deserialize_nullable_string"
)]
pub member_name: String,
#[serde(rename = "monthQty", default)]
pub month_qty: f64,
#[serde(rename = "qtyRatio", default)]
pub qty_ratio: f64,
#[serde(rename = "monthAmt", default)]
pub month_amt: f64,
#[serde(rename = "amtRatio", default)]
pub amt_ratio: f64,
}
#[derive(Debug, Clone, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct TradeParam {
#[serde(
rename = "contractId",
default,
deserialize_with = "deserialize_nullable_string"
)]
pub contract_id: String,
#[serde(rename = "specBuyRate", default)]
pub spec_buy_rate: f64,
#[serde(rename = "specBuy", default)]
pub spec_buy: f64,
#[serde(rename = "hedgeBuyRate", default)]
pub hedge_buy_rate: f64,
#[serde(rename = "hedgeBuy", default)]
pub hedge_buy: f64,
#[serde(rename = "riseLimitRate", default)]
pub rise_limit_rate: f64,
#[serde(rename = "riseLimit", default)]
pub rise_limit: f64,
#[serde(rename = "fallLimit", default)]
pub fall_limit: f64,
#[serde(default, deserialize_with = "deserialize_nullable_string")]
pub style: String,
#[serde(rename = "selfTotBuyPosiQuota", default)]
pub self_tot_buy_posi_quota: Option<f64>,
#[serde(rename = "selfTotBuyPosiQuotaSerLimit", default)]
pub self_tot_buy_posi_quota_ser_limit: Option<f64>,
#[serde(rename = "clientBuyPosiQuota", default)]
pub client_buy_posi_quota: Option<f64>,
#[serde(rename = "clientBuyPosiQuotaSerLimit", default)]
pub client_buy_posi_quota_ser_limit: Option<f64>,
#[serde(
rename = "contractLimit",
default,
deserialize_with = "deserialize_nullable_string"
)]
pub contract_limit: String,
#[serde(
rename = "varietyLimit",
default,
deserialize_with = "deserialize_nullable_string"
)]
pub variety_limit: String,
#[serde(
rename = "tradeDate",
default,
deserialize_with = "deserialize_nullable_string"
)]
pub trade_date: String,
}
#[derive(Debug, Clone, Serialize)]
#[serde(rename_all = "camelCase")]
pub struct DayTradeParamRequest {
pub variety_id: String,
pub trade_type: String,
pub lang: String,
}
#[derive(Debug, Clone, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct ContractInfo {
#[serde(
rename = "contractId",
default,
deserialize_with = "deserialize_nullable_string"
)]
pub contract_id: String,
#[serde(default, deserialize_with = "deserialize_nullable_string")]
pub variety: String,
#[serde(
rename = "varietyOrder",
default,
deserialize_with = "deserialize_nullable_string"
)]
pub variety_order: String,
#[serde(default)]
pub unit: i32,
#[serde(default, deserialize_with = "deserialize_nullable_string")]
pub tick: String,
#[serde(
rename = "startTradeDate",
default,
deserialize_with = "deserialize_nullable_string"
)]
pub start_trade_date: String,
#[serde(
rename = "endTradeDate",
default,
deserialize_with = "deserialize_nullable_string"
)]
pub end_trade_date: String,
#[serde(
rename = "endDeliveryDate",
default,
deserialize_with = "deserialize_nullable_string"
)]
pub end_delivery_date: String,
#[serde(
rename = "tradeType",
default,
deserialize_with = "deserialize_nullable_string"
)]
pub trade_type: String,
}
#[derive(Debug, Clone, Serialize)]
#[serde(rename_all = "camelCase")]
pub struct ContractInfoRequest {
pub variety_id: String,
pub trade_type: String,
pub lang: String,
}
#[derive(Debug, Clone, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct ArbitrageContract {
#[serde(
rename = "arbiName",
default,
deserialize_with = "deserialize_nullable_string"
)]
pub arbi_name: String,
#[serde(
rename = "varietyName",
default,
deserialize_with = "deserialize_nullable_string"
)]
pub variety_name: String,
#[serde(
rename = "arbiContractId",
default,
deserialize_with = "deserialize_nullable_string"
)]
pub arbi_contract_id: String,
#[serde(rename = "maxHand", default)]
pub max_hand: i32,
#[serde(default)]
pub tick: f64,
}
#[derive(Debug, Clone, Serialize)]
#[serde(rename_all = "camelCase")]
pub struct ArbitrageContractRequest {
pub lang: String,
}
#[derive(Debug, Clone, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct SettleParam {
#[serde(default, deserialize_with = "deserialize_nullable_string")]
pub variety: String,
#[serde(
rename = "varietyOrder",
default,
deserialize_with = "deserialize_nullable_string"
)]
pub variety_order: String,
#[serde(
rename = "contractId",
default,
deserialize_with = "deserialize_nullable_string"
)]
pub contract_id: String,
#[serde(
rename = "clearPrice",
default,
deserialize_with = "deserialize_nullable_string"
)]
pub clear_price: String,
#[serde(
rename = "openFee",
default,
deserialize_with = "deserialize_nullable_string"
)]
pub open_fee: String,
#[serde(
rename = "offsetFee",
default,
deserialize_with = "deserialize_nullable_string"
)]
pub offset_fee: String,
#[serde(
rename = "shortOpenFee",
default,
deserialize_with = "deserialize_nullable_string"
)]
pub short_open_fee: String,
#[serde(
rename = "shortOffsetFee",
default,
deserialize_with = "deserialize_nullable_string"
)]
pub short_offset_fee: String,
#[serde(default, deserialize_with = "deserialize_nullable_string")]
pub style: String,
#[serde(
rename = "specBuyRate",
default,
deserialize_with = "deserialize_nullable_string"
)]
pub spec_buy_rate: String,
#[serde(
rename = "specSellRate",
default,
deserialize_with = "deserialize_nullable_string"
)]
pub spec_sell_rate: String,
#[serde(
rename = "hedgeBuyRate",
default,
deserialize_with = "deserialize_nullable_string"
)]
pub hedge_buy_rate: String,
#[serde(
rename = "hedgeSellRate",
default,
deserialize_with = "deserialize_nullable_string"
)]
pub hedge_sell_rate: String,
}
#[derive(Debug, Clone, Serialize)]
#[serde(rename_all = "camelCase")]
pub struct SettleParamRequest {
pub variety_id: String,
pub trade_date: String,
pub trade_type: String,
pub lang: String,
}
#[derive(Debug, Clone, Serialize)]
#[serde(rename_all = "camelCase")]
pub struct VarietyMonthYearStatRequest {
pub trade_month: String,
pub trade_type: String,
pub lang: String,
}
#[derive(Debug, Clone, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct VarietyMonthYearStat {
#[serde(default, deserialize_with = "deserialize_nullable_string")]
pub variety: String,
#[serde(rename = "thisMonthVolumn", default)]
pub this_month_volumn: i64,
#[serde(
rename = "volumnBalance",
default,
deserialize_with = "deserialize_nullable_string"
)]
pub volumn_balance: String,
#[serde(
rename = "volumnChain",
default,
deserialize_with = "deserialize_nullable_string"
)]
pub volumn_chain: String,
#[serde(rename = "thisYearVolumn", default)]
pub this_year_volumn: i64,
#[serde(
rename = "yearVolumnChain",
default,
deserialize_with = "deserialize_nullable_string"
)]
pub year_volumn_chain: String,
#[serde(
rename = "thisMonthTurnover",
default,
deserialize_with = "deserialize_nullable_string"
)]
pub this_month_turnover: String,
#[serde(
rename = "turnoverBalance",
default,
deserialize_with = "deserialize_nullable_string"
)]
pub turnover_balance: String,
#[serde(
rename = "turnoverChain",
default,
deserialize_with = "deserialize_nullable_string"
)]
pub turnover_chain: String,
#[serde(
rename = "thisYearTurnover",
default,
deserialize_with = "deserialize_nullable_string"
)]
pub this_year_turnover: String,
#[serde(
rename = "yearTurnoverChain",
default,
deserialize_with = "deserialize_nullable_string"
)]
pub year_turnover_chain: String,
#[serde(rename = "thisMonthOpeni", default)]
pub this_month_openi: i64,
#[serde(
rename = "openiBalance",
default,
deserialize_with = "deserialize_nullable_string"
)]
pub openi_balance: String,
#[serde(
rename = "openiChain",
default,
deserialize_with = "deserialize_nullable_string"
)]
pub openi_chain: String,
}
#[derive(Debug, Clone, Serialize)]
#[serde(rename_all = "camelCase")]
pub struct ContractMonthMaxRequest {
pub start_month: String,
pub end_month: String,
pub stat_content: String,
pub trade_type: String,
pub lang: String,
}
#[derive(Debug, Clone, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct ContractMonthMaxVolume {
#[serde(
rename = "contractId",
default,
deserialize_with = "deserialize_nullable_string"
)]
pub contract_id: String,
#[serde(rename = "sumAmount", default)]
pub sum_amount: i64,
#[serde(rename = "maxAmount", default)]
pub max_amount: i64,
#[serde(
rename = "maxAmountDate",
default,
deserialize_with = "deserialize_nullable_string"
)]
pub max_amount_date: String,
#[serde(rename = "minAmount", default)]
pub min_amount: i64,
#[serde(
rename = "minAmountDate",
default,
deserialize_with = "deserialize_nullable_string"
)]
pub min_amount_date: String,
#[serde(rename = "avgAmount", default)]
pub avg_amount: i64,
}
#[derive(Debug, Clone, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct ContractMonthMaxTurnover {
#[serde(
rename = "contractId",
default,
deserialize_with = "deserialize_nullable_string"
)]
pub contract_id: String,
#[serde(
rename = "sumTurnover",
default,
deserialize_with = "deserialize_nullable_string"
)]
pub sum_turnover: String,
#[serde(
rename = "maxTurnover",
default,
deserialize_with = "deserialize_nullable_string"
)]
pub max_turnover: String,
#[serde(
rename = "maxTurnoverDate",
default,
deserialize_with = "deserialize_nullable_string"
)]
pub max_turnover_date: String,
#[serde(
rename = "minTurnover",
default,
deserialize_with = "deserialize_nullable_string"
)]
pub min_turnover: String,
#[serde(
rename = "minTurnoverDate",
default,
deserialize_with = "deserialize_nullable_string"
)]
pub min_turnover_date: String,
#[serde(
rename = "avgTurnover",
default,
deserialize_with = "deserialize_nullable_string"
)]
pub avg_turnover: String,
}
#[derive(Debug, Clone, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct ContractMonthMaxOpeni {
#[serde(
rename = "contractId",
default,
deserialize_with = "deserialize_nullable_string"
)]
pub contract_id: String,
#[serde(rename = "sumOpeni", default)]
pub sum_openi: i64,
#[serde(rename = "maxOpeni", default)]
pub max_openi: i64,
#[serde(
rename = "maxOpeniDate",
default,
deserialize_with = "deserialize_nullable_string"
)]
pub max_openi_date: String,
#[serde(rename = "minOpeni", default)]
pub min_openi: i64,
#[serde(
rename = "minOpeniDate",
default,
deserialize_with = "deserialize_nullable_string"
)]
pub min_openi_date: String,
#[serde(rename = "avgOpeni", default)]
pub avg_openi: i64,
}
#[derive(Debug, Clone, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct ContractMonthMaxPrice {
#[serde(
rename = "contractId",
default,
deserialize_with = "deserialize_nullable_string"
)]
pub contract_id: String,
#[serde(default, deserialize_with = "deserialize_nullable_string")]
pub open: String,
#[serde(default, deserialize_with = "deserialize_nullable_string")]
pub close: String,
#[serde(default, deserialize_with = "deserialize_nullable_string")]
pub high: String,
#[serde(
rename = "highDate",
default,
deserialize_with = "deserialize_nullable_string"
)]
pub high_date: String,
#[serde(default, deserialize_with = "deserialize_nullable_string")]
pub low: String,
#[serde(
rename = "lowDate",
default,
deserialize_with = "deserialize_nullable_string"
)]
pub low_date: String,
#[serde(
rename = "clearPrice",
default,
deserialize_with = "deserialize_nullable_string"
)]
pub clear_price: String,
}
#[derive(Debug, Clone, Serialize)]
#[serde(rename_all = "camelCase")]
pub struct RiseFallEventRequest {
pub start_date: String,
pub end_date: String,
pub variety_id: String,
pub lang: String,
}
#[derive(Debug, Clone, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct RiseFallEvent {
#[serde(
rename = "tradeDate",
default,
deserialize_with = "deserialize_nullable_string"
)]
pub trade_date: String,
#[serde(
rename = "contractId",
default,
deserialize_with = "deserialize_nullable_string"
)]
pub contract_id: String,
#[serde(default, deserialize_with = "deserialize_nullable_string")]
pub direction: String,
#[serde(default)]
pub times: i32,
}
#[derive(Debug, Clone, Serialize)]
#[serde(rename_all = "camelCase")]
pub struct DivisionPriceInfoRequest {
pub variety_id: String,
pub trade_date: String,
pub trade_type: String,
}
#[derive(Debug, Clone, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct DivisionPriceInfo {
#[serde(
rename = "calculateDate",
default,
deserialize_with = "deserialize_nullable_string"
)]
pub calculate_date: String,
#[serde(
rename = "calculateTime",
default,
deserialize_with = "deserialize_nullable_string"
)]
pub calculate_time: String,
#[serde(
rename = "varietyName",
default,
deserialize_with = "deserialize_nullable_string"
)]
pub variety_name: String,
#[serde(
rename = "varietyEnName",
default,
deserialize_with = "deserialize_nullable_string"
)]
pub variety_en_name: String,
#[serde(
rename = "contractId",
default,
deserialize_with = "deserialize_nullable_string"
)]
pub contract_id: String,
#[serde(rename = "clearPrice", default)]
pub clear_price: f64,
#[serde(
rename = "seriesId",
default,
deserialize_with = "deserialize_nullable_string"
)]
pub series_id: String,
#[serde(default)]
pub volatility: f64,
}
#[derive(Debug, Clone, Serialize)]
#[serde(rename_all = "camelCase")]
pub struct TradingParamRequest {
pub lang: String,
}
#[derive(Debug, Clone, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct TradingParam {
#[serde(
rename = "varietyId",
default,
deserialize_with = "deserialize_nullable_string"
)]
pub variety_id: String,
#[serde(
rename = "varietyName",
default,
deserialize_with = "deserialize_nullable_string"
)]
pub variety_name: String,
#[serde(
rename = "tradingMarginRateSpeculation",
default,
deserialize_with = "deserialize_nullable_string"
)]
pub trading_margin_rate_speculation: String,
#[serde(
rename = "tradingMarginRateHedging",
default,
deserialize_with = "deserialize_nullable_string"
)]
pub trading_margin_rate_hedging: String,
#[serde(
rename = "priceLimitExistingContract",
default,
deserialize_with = "deserialize_nullable_string"
)]
pub price_limit_existing_contract: String,
#[serde(
rename = "priceLimitNewContract",
default,
deserialize_with = "deserialize_nullable_string"
)]
pub price_limit_new_contract: String,
#[serde(
rename = "priceLimitDeliveryMonth",
default,
deserialize_with = "deserialize_nullable_string"
)]
pub price_limit_delivery_month: String,
#[serde(
rename = "tradingMarginRateSpeculationN",
default,
deserialize_with = "deserialize_nullable_string"
)]
pub trading_margin_rate_speculation_n: String,
#[serde(
rename = "tradingMarginRateHedgingN",
default,
deserialize_with = "deserialize_nullable_string"
)]
pub trading_margin_rate_hedging_n: String,
#[serde(
rename = "settlementMarginRateHedgingN",
default,
deserialize_with = "deserialize_nullable_string"
)]
pub settlement_margin_rate_hedging_n: String,
#[serde(
rename = "priceLimitN",
default,
deserialize_with = "deserialize_nullable_string"
)]
pub price_limit_n: String,
#[serde(
rename = "tradingMarginRateN1",
default,
deserialize_with = "deserialize_nullable_string"
)]
pub trading_margin_rate_n1: String,
#[serde(
rename = "settlementMarginRateHedgingN1",
default,
deserialize_with = "deserialize_nullable_string"
)]
pub settlement_margin_rate_hedging_n1: String,
#[serde(
rename = "priceLimitN1",
default,
deserialize_with = "deserialize_nullable_string"
)]
pub price_limit_n1: String,
#[serde(
rename = "tradingMarginRateN2",
default,
deserialize_with = "deserialize_nullable_string"
)]
pub trading_margin_rate_n2: String,
#[serde(
rename = "priceLimitN2",
default,
deserialize_with = "deserialize_nullable_string"
)]
pub price_limit_n2: String,
#[serde(
rename = "tradingLimit",
default,
deserialize_with = "deserialize_nullable_string"
)]
pub trading_limit: String,
#[serde(
rename = "specOpenFee",
default,
deserialize_with = "deserialize_nullable_string"
)]
pub spec_open_fee: String,
#[serde(
rename = "specOffsetFee",
default,
deserialize_with = "deserialize_nullable_string"
)]
pub spec_offset_fee: String,
#[serde(
rename = "specShortOpenFee",
default,
deserialize_with = "deserialize_nullable_string"
)]
pub spec_short_open_fee: String,
#[serde(
rename = "specShortOffsetFee",
default,
deserialize_with = "deserialize_nullable_string"
)]
pub spec_short_offset_fee: String,
#[serde(
rename = "hedgeOpenFee",
default,
deserialize_with = "deserialize_nullable_string"
)]
pub hedge_open_fee: String,
#[serde(
rename = "hedgeOffsetFee",
default,
deserialize_with = "deserialize_nullable_string"
)]
pub hedge_offset_fee: String,
#[serde(
rename = "hedgeShortOpenFee",
default,
deserialize_with = "deserialize_nullable_string"
)]
pub hedge_short_open_fee: String,
#[serde(
rename = "hedgeShortOffsetFee",
default,
deserialize_with = "deserialize_nullable_string"
)]
pub hedge_short_offset_fee: String,
#[serde(
rename = "feeStyle",
default,
deserialize_with = "deserialize_nullable_string"
)]
pub fee_style: String,
#[serde(
rename = "feeStyleEn",
default,
deserialize_with = "deserialize_nullable_string"
)]
pub fee_style_en: String,
#[serde(
rename = "deliveryFee",
default,
deserialize_with = "deserialize_nullable_string"
)]
pub delivery_fee: String,
#[serde(
rename = "maxHand",
default,
deserialize_with = "deserialize_nullable_string"
)]
pub max_hand: String,
}
#[derive(Debug, Clone, Serialize)]
#[serde(rename_all = "camelCase")]
pub struct MarginArbiPerfParaRequest {
pub variety_id: String,
}
#[derive(Debug, Clone, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct MarginArbiPerfPara {
#[serde(default, deserialize_with = "deserialize_nullable_string")]
pub variety: String,
#[serde(
rename = "strategyName",
default,
deserialize_with = "deserialize_nullable_string"
)]
pub strategy_name: String,
#[serde(
rename = "tradingMarginRateSpeculation",
default,
deserialize_with = "deserialize_nullable_string"
)]
pub trading_margin_rate_speculation: String,
#[serde(
rename = "tradingMarginRateHedging",
default,
deserialize_with = "deserialize_nullable_string"
)]
pub trading_margin_rate_hedging: String,
#[serde(
rename = "openFee",
default,
deserialize_with = "deserialize_nullable_string"
)]
pub open_fee: String,
#[serde(
rename = "offsetFee",
default,
deserialize_with = "deserialize_nullable_string"
)]
pub offset_fee: String,
#[serde(
rename = "shortOpenFee",
default,
deserialize_with = "deserialize_nullable_string"
)]
pub short_open_fee: String,
#[serde(
rename = "shortOffsetFee",
default,
deserialize_with = "deserialize_nullable_string"
)]
pub short_offset_fee: String,
}
#[derive(Debug, Clone, Serialize)]
#[serde(rename_all = "camelCase")]
pub struct NewContractInfoRequest {
pub trade_date: String,
pub trade_type: String,
#[serde(skip_serializing_if = "Option::is_none")]
pub lang: Option<String>,
}
#[derive(Debug, Clone, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct NewContractInfo {
#[serde(
rename = "tradeType",
default,
deserialize_with = "deserialize_nullable_string"
)]
pub trade_type: String,
#[serde(default, deserialize_with = "deserialize_nullable_string")]
pub variety: String,
#[serde(
rename = "varietyOrder",
default,
deserialize_with = "deserialize_nullable_string"
)]
pub variety_order: String,
#[serde(
rename = "contractId",
default,
deserialize_with = "deserialize_nullable_string"
)]
pub contract_id: String,
#[serde(
rename = "startTradeDate",
default,
deserialize_with = "deserialize_nullable_string"
)]
pub start_trade_date: String,
#[serde(
rename = "refPriceUnit",
default,
deserialize_with = "deserialize_nullable_string"
)]
pub ref_price_unit: String,
#[serde(
rename = "noRiseLimit",
default,
deserialize_with = "deserialize_nullable_string"
)]
pub no_rise_limit: String,
#[serde(
rename = "noFallLimit",
default,
deserialize_with = "deserialize_nullable_string"
)]
pub no_fall_limit: String,
}
#[derive(Debug, Clone, Serialize)]
#[serde(rename_all = "camelCase")]
pub struct MainSeriesInfoRequest {
pub variety_id: String,
pub trade_date: String,
}
#[derive(Debug, Clone, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct MainSeriesInfo {
#[serde(
rename = "tradeDate",
default,
deserialize_with = "deserialize_nullable_string"
)]
pub trade_date: String,
#[serde(
rename = "varietyId",
default,
deserialize_with = "deserialize_nullable_string"
)]
pub variety_id: String,
#[serde(
rename = "seriesId",
default,
deserialize_with = "deserialize_nullable_string"
)]
pub series_id: String,
#[serde(
rename = "contractId",
default,
deserialize_with = "deserialize_nullable_string"
)]
pub contract_id: String,
}
#[derive(Debug, Clone, Serialize)]
#[serde(rename_all = "camelCase")]
pub struct TcCongregateDeliveryRequest {
pub variety: String,
pub contract_month: String,
}
#[derive(Debug, Clone, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct TcCongregateDelivery {
#[serde(
rename = "varietyId",
default,
deserialize_with = "deserialize_nullable_string"
)]
pub variety_id: String,
#[serde(
rename = "varietyName",
default,
deserialize_with = "deserialize_nullable_string"
)]
pub variety_name: String,
#[serde(default, deserialize_with = "deserialize_nullable_string")]
pub contract: String,
#[serde(
rename = "warehouseName",
default,
deserialize_with = "deserialize_nullable_string"
)]
pub warehouse_name: String,
#[serde(
rename = "wbillQuantity",
default,
deserialize_with = "deserialize_nullable_string"
)]
pub wbill_quantity: String,
#[serde(
rename = "agreeablePlace",
default,
deserialize_with = "deserialize_nullable_string"
)]
pub agreeable_place: String,
#[serde(
rename = "agreeableBrand",
default,
deserialize_with = "deserialize_nullable_string"
)]
pub agreeable_brand: String,
#[serde(
rename = "agreeableQuality",
default,
deserialize_with = "deserialize_nullable_string"
)]
pub agreeable_quality: String,
#[serde(
rename = "agreeableQuantity",
default,
deserialize_with = "deserialize_nullable_string"
)]
pub agreeable_quantity: String,
#[serde(
rename = "agreeableSpread",
default,
deserialize_with = "deserialize_nullable_string"
)]
pub agreeable_spread: String,
#[serde(default, deserialize_with = "deserialize_nullable_string")]
pub contracts: String,
#[serde(
rename = "contractWay",
default,
deserialize_with = "deserialize_nullable_string"
)]
pub contract_way: String,
#[serde(
rename = "whGroupName",
default,
deserialize_with = "deserialize_nullable_string"
)]
pub wh_group_name: String,
}
#[derive(Debug, Clone, Serialize)]
#[serde(rename_all = "camelCase")]
pub struct RollDeliverySellerIntentionRequest {
pub variety: String,
pub date: String,
}
#[derive(Debug, Clone, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct RollDeliverySellerIntention {
#[serde(
rename = "varietyId",
default,
deserialize_with = "deserialize_nullable_string"
)]
pub variety_id: String,
#[serde(
rename = "varietyName",
default,
deserialize_with = "deserialize_nullable_string"
)]
pub variety_name: String,
#[serde(default, deserialize_with = "deserialize_nullable_string")]
pub contract: String,
#[serde(
rename = "type",
default,
deserialize_with = "deserialize_nullable_string"
)]
pub type_: String,
#[serde(
rename = "warehouseCode",
default,
deserialize_with = "deserialize_nullable_string"
)]
pub warehouse_code: String,
#[serde(
rename = "warehouseName",
default,
deserialize_with = "deserialize_nullable_string"
)]
pub warehouse_name: String,
#[serde(default, deserialize_with = "deserialize_nullable_string")]
pub quantity: String,
#[serde(
rename = "agreeablePlace",
default,
deserialize_with = "deserialize_nullable_string"
)]
pub agreeable_place: String,
#[serde(
rename = "agreeableBrand",
default,
deserialize_with = "deserialize_nullable_string"
)]
pub agreeable_brand: String,
#[serde(
rename = "agreeableQuality",
default,
deserialize_with = "deserialize_nullable_string"
)]
pub agreeable_quality: String,
#[serde(
rename = "agreeableQuantity",
default,
deserialize_with = "deserialize_nullable_string"
)]
pub agreeable_quantity: String,
#[serde(
rename = "agreeableSpread",
default,
deserialize_with = "deserialize_nullable_string"
)]
pub agreeable_spread: String,
#[serde(default, deserialize_with = "deserialize_nullable_string")]
pub contracts: String,
#[serde(
rename = "contractWay",
default,
deserialize_with = "deserialize_nullable_string"
)]
pub contract_way: String,
#[serde(
rename = "tradeDate",
default,
deserialize_with = "deserialize_nullable_string"
)]
pub trade_date: String,
#[serde(
rename = "whGroupName",
default,
deserialize_with = "deserialize_nullable_string"
)]
pub wh_group_name: String,
#[serde(
rename = "deliveryWay",
default,
deserialize_with = "deserialize_nullable_string"
)]
pub delivery_way: String,
}
#[derive(Debug, Clone, Serialize)]
#[serde(rename_all = "camelCase")]
pub struct BondedDeliveryRequest {
pub start_date: String,
pub end_date: String,
}
#[derive(Debug, Clone, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct BondedDelivery {
#[serde(
rename = "deliveryDate",
default,
deserialize_with = "deserialize_nullable_string"
)]
pub delivery_date: String,
#[serde(
rename = "deliveryWay",
default,
deserialize_with = "deserialize_nullable_string"
)]
pub delivery_way: String,
#[serde(
rename = "varietyId",
default,
deserialize_with = "deserialize_nullable_string"
)]
pub variety_id: String,
#[serde(
rename = "contractId",
default,
deserialize_with = "deserialize_nullable_string"
)]
pub contract_id: String,
#[serde(
rename = "whAbbr",
default,
deserialize_with = "deserialize_nullable_string"
)]
pub wh_abbr: String,
#[serde(
rename = "bondedDeliveryPrice",
default,
deserialize_with = "deserialize_nullable_string"
)]
pub bonded_delivery_price: String,
#[serde(
rename = "deliveryPrice",
default,
deserialize_with = "deserialize_nullable_string"
)]
pub delivery_price: String,
}
#[derive(Debug, Clone, Serialize)]
#[serde(rename_all = "camelCase")]
pub struct TdBondedDeliveryRequest {
pub start_date: String,
pub end_date: String,
}
pub type TdBondedDelivery = BondedDelivery;
#[derive(Debug, Clone, Serialize)]
#[serde(rename_all = "camelCase")]
pub struct FactorySpotAgioRequest {
pub variety_id: String,
pub trade_date: String,
}
#[derive(Debug, Clone, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct FactorySpotAgio {
#[serde(default, deserialize_with = "deserialize_nullable_string")]
pub seq_no: String,
#[serde(
rename = "whAbbr",
default,
deserialize_with = "deserialize_nullable_string"
)]
pub wh_abbr: String,
#[serde(default, deserialize_with = "deserialize_nullable_string")]
pub variety_id: String,
#[serde(default, deserialize_with = "deserialize_nullable_string")]
pub variety_name: String,
#[serde(
rename = "whCode",
default,
deserialize_with = "deserialize_nullable_string"
)]
pub wh_code: String,
#[serde(default, deserialize_with = "deserialize_nullable_string")]
pub bh: String,
#[serde(default, deserialize_with = "deserialize_nullable_string")]
pub mdmin: String,
#[serde(default, deserialize_with = "deserialize_nullable_string")]
pub mdmax: String,
#[serde(default, deserialize_with = "deserialize_nullable_string")]
pub jq: String,
#[serde(default, deserialize_with = "deserialize_nullable_string")]
pub agio: String,
#[serde(
rename = "minExchangeAmount",
default,
deserialize_with = "deserialize_nullable_string"
)]
pub min_exchange_amount: String,
#[serde(
rename = "whAddr",
default,
deserialize_with = "deserialize_nullable_string"
)]
pub wh_addr: String,
#[serde(
rename = "connectPerson",
default,
deserialize_with = "deserialize_nullable_string"
)]
pub connect_person: String,
#[serde(default, deserialize_with = "deserialize_nullable_string")]
pub tel: String,
}
#[derive(Debug, Clone, Serialize)]
#[serde(rename_all = "camelCase")]
pub struct PlywoodDeliveryCommodityRequest {
pub variety_id: String,
}
#[derive(Debug, Clone, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct PlywoodDeliveryCommodity {
#[serde(default, deserialize_with = "deserialize_nullable_string")]
pub apply_id: String,
#[serde(
rename = "whName",
default,
deserialize_with = "deserialize_nullable_string"
)]
pub wh_name: String,
#[serde(
rename = "whAbbr",
default,
deserialize_with = "deserialize_nullable_string"
)]
pub wh_abbr: String,
#[serde(
rename = "uploadFileId",
default,
deserialize_with = "deserialize_nullable_string"
)]
pub upload_file_id: String,
#[serde(default)]
pub file_size: i64,
#[serde(
rename = "uploadFileName",
default,
deserialize_with = "deserialize_nullable_string"
)]
pub upload_file_name: String,
}