1use serde::{Deserialize, Deserializer, Serialize};
6use serde_json::Value;
7
8fn deserialize_nullable_string<'de, D>(deserializer: D) -> Result<String, D::Error>
10where
11 D: Deserializer<'de>,
12{
13 let opt: Option<String> = Option::deserialize(deserializer)?;
14 Ok(opt.unwrap_or_default())
15}
16
17fn deserialize_string_or_i64<'de, D>(deserializer: D) -> Result<i64, D::Error>
19where
20 D: Deserializer<'de>,
21{
22 use serde::de::Error;
23 use serde_json::Value;
24
25 let value = Value::deserialize(deserializer)?;
26 match value {
27 Value::Number(n) => n.as_i64().ok_or_else(|| D::Error::custom("invalid number")),
28 Value::String(s) => s
29 .parse::<i64>()
30 .map_err(|_| D::Error::custom("invalid string number")),
31 Value::Null => Ok(0),
32 _ => Err(D::Error::custom("expected string or number")),
33 }
34}
35
36#[derive(Debug, Clone, Deserialize)]
42pub struct ApiResponse {
43 pub code: i32,
45 #[serde(alias = "message", default)]
47 pub msg: String,
48 #[serde(default)]
50 pub data: Value,
51}
52
53#[derive(Debug, Clone, Deserialize)]
55#[serde(rename_all = "camelCase")]
56pub struct TokenResponse {
57 pub token_type: String,
59 #[serde(rename = "token")]
61 pub access_token: String,
62 pub expires_in: i32,
64}
65
66#[derive(Debug, Clone, Serialize, Deserialize)]
72#[serde(rename_all = "camelCase")]
73pub struct Article {
74 #[serde(default, deserialize_with = "deserialize_nullable_string")]
76 pub id: String,
77 #[serde(default, deserialize_with = "deserialize_nullable_string")]
79 pub version: String,
80 #[serde(default, deserialize_with = "deserialize_nullable_string")]
82 pub title: String,
83 #[serde(default, deserialize_with = "deserialize_nullable_string")]
85 pub sub_title: String,
86 #[serde(
88 rename = "infoSummary",
89 default,
90 deserialize_with = "deserialize_nullable_string"
91 )]
92 pub summary: String,
93 #[serde(default, deserialize_with = "deserialize_nullable_string")]
95 pub source_id: String,
96 #[serde(default, deserialize_with = "deserialize_nullable_string")]
98 pub show_date: String,
99 #[serde(default, deserialize_with = "deserialize_nullable_string")]
101 pub release_date: String,
102 #[serde(default, deserialize_with = "deserialize_nullable_string")]
104 pub content: String,
105 #[serde(default, deserialize_with = "deserialize_nullable_string")]
107 pub keywords: String,
108 #[serde(default, deserialize_with = "deserialize_nullable_string")]
110 pub entity_type: String,
111 #[serde(default, deserialize_with = "deserialize_nullable_string")]
113 pub title_image_url: String,
114 #[serde(default, deserialize_with = "deserialize_nullable_string")]
116 pub article_static_url: String,
117 #[serde(default, deserialize_with = "deserialize_nullable_string")]
119 pub article_dynamic_url: String,
120 #[serde(default, deserialize_with = "deserialize_nullable_string")]
122 pub page_name: String,
123 #[serde(default, deserialize_with = "deserialize_nullable_string")]
125 pub create_date: String,
126}
127
128#[derive(Debug, Clone, Serialize)]
130#[serde(rename_all = "camelCase")]
131pub struct GetArticleByPageRequest {
132 pub column_id: String,
134 pub page_no: i32,
136 pub page_size: i32,
138 pub site_id: i32,
140}
141
142#[derive(Debug, Clone, Deserialize)]
144#[serde(rename_all = "camelCase")]
145pub struct GetArticleByPageResponse {
146 pub column_id: String,
148 #[serde(default, deserialize_with = "deserialize_nullable_string")]
150 pub status: String,
151 #[serde(default, deserialize_with = "deserialize_nullable_string")]
153 pub status_info: String,
154 pub result_list: Vec<Article>,
156 pub total_count: i32,
158}
159
160#[derive(Debug, Clone, Deserialize)]
166#[serde(rename_all = "camelCase")]
167pub struct TradeDate {
168 #[serde(
170 rename = "tradeDate",
171 default,
172 deserialize_with = "deserialize_nullable_string"
173 )]
174 pub date: String,
175}
176
177#[derive(Debug, Clone, Deserialize)]
179#[serde(rename_all = "camelCase")]
180pub struct Variety {
181 #[serde(
183 rename = "varietyId",
184 default,
185 deserialize_with = "deserialize_nullable_string"
186 )]
187 pub code: String,
188 #[serde(
190 rename = "varietyName",
191 default,
192 deserialize_with = "deserialize_nullable_string"
193 )]
194 pub name: String,
195 #[serde(
197 rename = "varietyEnglishName",
198 default,
199 deserialize_with = "deserialize_nullable_string"
200 )]
201 pub english_name: String,
202 #[serde(default, deserialize_with = "deserialize_nullable_string")]
204 pub pic: String,
205 #[serde(
207 rename = "varietyType",
208 default,
209 deserialize_with = "deserialize_nullable_string"
210 )]
211 pub variety_type: String,
212}
213
214#[derive(Debug, Clone, Deserialize)]
220#[serde(rename_all = "camelCase")]
221pub struct Quote {
222 #[serde(default, deserialize_with = "deserialize_nullable_string")]
224 pub variety: String,
225 #[serde(
227 rename = "varietyOrder",
228 default,
229 deserialize_with = "deserialize_nullable_string"
230 )]
231 pub variety_order: String,
232 #[serde(
234 rename = "contractId",
235 default,
236 deserialize_with = "deserialize_nullable_string"
237 )]
238 pub contract_id: String,
239 #[serde(
241 rename = "delivMonth",
242 default,
243 deserialize_with = "deserialize_nullable_string"
244 )]
245 pub deliv_month: String,
246 #[serde(default, deserialize_with = "deserialize_nullable_string")]
248 pub open: String,
249 #[serde(default, deserialize_with = "deserialize_nullable_string")]
251 pub high: String,
252 #[serde(default, deserialize_with = "deserialize_nullable_string")]
254 pub low: String,
255 #[serde(default, deserialize_with = "deserialize_nullable_string")]
257 pub close: String,
258 #[serde(
260 rename = "lastClear",
261 default,
262 deserialize_with = "deserialize_nullable_string"
263 )]
264 pub last_clear: String,
265 #[serde(
267 rename = "lastPrice",
268 default,
269 deserialize_with = "deserialize_nullable_string"
270 )]
271 pub last_price: String,
272 #[serde(
274 rename = "clearPrice",
275 default,
276 deserialize_with = "deserialize_nullable_string"
277 )]
278 pub clear_price: String,
279 #[serde(default, deserialize_with = "deserialize_nullable_string")]
281 pub diff: String,
282 #[serde(default, deserialize_with = "deserialize_nullable_string")]
284 pub diff1: String,
285 #[serde(
287 rename = "declarePrice",
288 default,
289 deserialize_with = "deserialize_nullable_string"
290 )]
291 pub declare_price: String,
292 #[serde(rename = "volumn", default)]
294 pub volume: i64,
295 #[serde(rename = "openInterest", default)]
297 pub open_interest: i64,
298 #[serde(rename = "diffI", default)]
300 pub diff_i: i64,
301 #[serde(default, deserialize_with = "deserialize_nullable_string")]
303 pub turnover: String,
304 #[serde(
306 rename = "varietyEn",
307 default,
308 deserialize_with = "deserialize_nullable_string"
309 )]
310 pub variety_en: String,
311 #[serde(
313 rename = "turnoverEn",
314 default,
315 deserialize_with = "deserialize_nullable_string"
316 )]
317 pub turnover_en: String,
318 #[serde(default, deserialize_with = "deserialize_nullable_string")]
320 pub delta: String,
321 #[serde(rename = "matchQtySum", default)]
323 pub match_qty_sum: i64,
324 #[serde(
326 rename = "diffT",
327 default,
328 deserialize_with = "deserialize_nullable_string"
329 )]
330 pub diff_t: String,
331 #[serde(
333 rename = "volumnRate",
334 default,
335 deserialize_with = "deserialize_nullable_string"
336 )]
337 pub volumn_rate: String,
338 #[serde(
340 rename = "openInterestRate",
341 default,
342 deserialize_with = "deserialize_nullable_string"
343 )]
344 pub open_interest_rate: String,
345 #[serde(
347 rename = "periodOverPeriodChg",
348 default,
349 deserialize_with = "deserialize_nullable_string"
350 )]
351 pub period_over_period_chg: String,
352 #[serde(rename = "diffV", default)]
354 pub diff_v: Option<i64>,
355 #[serde(
357 rename = "impliedVolatility",
358 default,
359 deserialize_with = "deserialize_nullable_string"
360 )]
361 pub implied_volatility: String,
362 #[serde(
364 rename = "seriesId",
365 default,
366 deserialize_with = "deserialize_nullable_string"
367 )]
368 pub series_id: String,
369 #[serde(rename = "avgOpenInterest", default)]
371 pub avg_open_interest: i64,
372}
373
374#[derive(Debug, Clone, Serialize)]
376#[serde(rename_all = "camelCase")]
377pub struct QuotesRequest {
378 #[serde(skip_serializing_if = "Option::is_none")]
380 pub variety_id: Option<String>,
381 #[serde(skip_serializing_if = "Option::is_none")]
383 pub variety: Option<String>,
384 pub trade_date: String,
386 pub trade_type: String,
388 #[serde(skip_serializing_if = "Option::is_none")]
390 pub lang: Option<String>,
391 #[serde(skip_serializing_if = "Option::is_none")]
393 pub statistics_type: Option<i32>,
394}
395
396#[derive(Debug, Clone, Serialize)]
398#[serde(rename_all = "camelCase")]
399pub struct WeekQuotesRequest {
400 pub variety_code: String,
402 pub year: i32,
404 pub week: i32,
406}
407
408#[derive(Debug, Clone, Serialize)]
410#[serde(rename_all = "camelCase")]
411pub struct MonthQuotesRequest {
412 pub variety_code: String,
414 pub year: i32,
416 pub month: i32,
418}
419
420#[derive(Debug, Clone, Deserialize)]
426#[serde(rename_all = "camelCase")]
427pub struct DeliveryData {
428 #[serde(default, deserialize_with = "deserialize_nullable_string")]
430 pub variety: String,
431 #[serde(default, deserialize_with = "deserialize_nullable_string")]
433 pub contract_id: String,
434 #[serde(default, deserialize_with = "deserialize_nullable_string")]
436 pub delivery_date: String,
437 #[serde(default)]
439 pub delivery_qty: i64,
440 #[serde(default, deserialize_with = "deserialize_nullable_string")]
442 pub delivery_amt: String,
443}
444
445#[derive(Debug, Clone, Serialize)]
447#[serde(rename_all = "camelCase")]
448pub struct DeliveryDataRequest {
449 pub variety_id: String,
451 pub start_month: String,
453 pub end_month: String,
455 pub variety_type: String,
457}
458
459#[derive(Debug, Clone, Deserialize)]
461#[serde(rename_all = "camelCase")]
462pub struct DeliveryMatch {
463 #[serde(default, deserialize_with = "deserialize_nullable_string")]
465 pub contract_id: String,
466 #[serde(default, deserialize_with = "deserialize_nullable_string")]
468 pub match_date: String,
469 #[serde(default, deserialize_with = "deserialize_nullable_string")]
471 pub buy_member_id: String,
472 #[serde(default, deserialize_with = "deserialize_nullable_string")]
474 pub sell_member_id: String,
475 #[serde(default)]
477 pub delivery_qty: i64,
478 #[serde(default, deserialize_with = "deserialize_nullable_string")]
480 pub delivery_price: String,
481}
482
483#[derive(Debug, Clone, Serialize)]
485#[serde(rename_all = "camelCase")]
486pub struct DeliveryMatchRequest {
487 pub variety_id: String,
489 pub contract_id: String,
491 pub start_month: String,
493 pub end_month: String,
495}
496
497#[derive(Debug, Clone, Deserialize)]
499#[serde(rename_all = "camelCase")]
500pub struct WarehouseReceipt {
501 #[serde(rename = "entityList", default)]
503 pub entity_list: Vec<WarehouseReceiptDetail>,
504 #[serde(
506 rename = "ifAgioFlag",
507 default,
508 deserialize_with = "deserialize_nullable_string"
509 )]
510 pub if_agio_flag: String,
511 #[serde(
513 rename = "agioDeliType",
514 default,
515 deserialize_with = "deserialize_nullable_string"
516 )]
517 pub agio_deli_type: String,
518 #[serde(
520 rename = "ifAgioBrandFlag",
521 default,
522 deserialize_with = "deserialize_nullable_string"
523 )]
524 pub if_agio_brand_flag: String,
525}
526
527#[derive(Debug, Clone, Deserialize)]
529#[serde(rename_all = "camelCase")]
530pub struct WarehouseReceiptDetail {
531 #[serde(
533 rename = "varietyOrder",
534 default,
535 deserialize_with = "deserialize_nullable_string"
536 )]
537 pub variety_order: String,
538 #[serde(
540 rename = "groupCodeOrder",
541 default,
542 deserialize_with = "deserialize_nullable_string"
543 )]
544 pub group_code_order: String,
545 #[serde(
547 rename = "whCodeOrder",
548 default,
549 deserialize_with = "deserialize_nullable_string"
550 )]
551 pub wh_code_order: String,
552 #[serde(
554 rename = "whType",
555 default,
556 deserialize_with = "deserialize_nullable_string"
557 )]
558 pub wh_type: String,
559 #[serde(default, deserialize_with = "deserialize_nullable_string")]
561 pub variety: String,
562 #[serde(
564 rename = "genDate",
565 default,
566 deserialize_with = "deserialize_nullable_string"
567 )]
568 pub gen_date: String,
569 #[serde(
571 rename = "whAbbr",
572 default,
573 deserialize_with = "deserialize_nullable_string"
574 )]
575 pub wh_abbr: String,
576 #[serde(
578 rename = "deliveryAbbr",
579 default,
580 deserialize_with = "deserialize_nullable_string"
581 )]
582 pub delivery_abbr: String,
583 #[serde(rename = "lastWbillQty", default)]
585 pub last_wbill_qty: i64,
586 #[serde(rename = "regWbillQty", default)]
588 pub reg_wbill_qty: i64,
589 #[serde(rename = "logoutWbillQty", default)]
591 pub logout_wbill_qty: i64,
592 #[serde(rename = "wbillQty", default)]
594 pub wbill_qty: i64,
595 #[serde(default)]
597 pub diff: i64,
598}
599
600#[derive(Debug, Clone, Serialize)]
602#[serde(rename_all = "camelCase")]
603pub struct WarehouseReceiptRequest {
604 pub variety_id: String,
606 pub trade_date: String,
608}
609
610#[derive(Debug, Clone, Deserialize)]
612#[serde(rename_all = "camelCase")]
613pub struct DeliveryCost {
614 #[serde(default, deserialize_with = "deserialize_nullable_string")]
616 pub variety: String,
617 #[serde(default, deserialize_with = "deserialize_nullable_string")]
619 pub earnest_rate: String,
620 #[serde(default, deserialize_with = "deserialize_nullable_string")]
622 pub unit: String,
623 #[serde(default, deserialize_with = "deserialize_nullable_string")]
625 pub delivery_fee: String,
626 #[serde(default, deserialize_with = "deserialize_nullable_string")]
628 pub fee_rate: String,
629 #[serde(default, deserialize_with = "deserialize_nullable_string")]
631 pub start_date: String,
632 #[serde(default, deserialize_with = "deserialize_nullable_string")]
634 pub end_date: String,
635}
636
637#[derive(Debug, Clone, Deserialize)]
640#[serde(rename_all = "camelCase")]
641pub struct WarehousePremiumResponse {
642 #[serde(rename = "entityList", default)]
644 pub entity_list: Vec<WarehousePremium>,
645 #[serde(
647 rename = "ifAgioFlag",
648 default,
649 deserialize_with = "deserialize_nullable_string"
650 )]
651 pub if_agio_flag: String,
652}
653
654#[derive(Debug, Clone, Deserialize)]
656#[serde(rename_all = "camelCase")]
657pub struct WarehousePremium {
658 #[serde(default, deserialize_with = "deserialize_nullable_string")]
660 pub variety_id: String,
661 #[serde(default, deserialize_with = "deserialize_nullable_string")]
663 pub variety_name: String,
664 #[serde(default, deserialize_with = "deserialize_nullable_string")]
666 pub valid_date: String,
667 #[serde(
669 rename = "whCode",
670 default,
671 deserialize_with = "deserialize_nullable_string"
672 )]
673 pub wh_code: String,
674 #[serde(
676 rename = "whName",
677 default,
678 deserialize_with = "deserialize_nullable_string"
679 )]
680 pub wh_name: String,
681 #[serde(
683 rename = "avgAgio",
684 default,
685 deserialize_with = "deserialize_nullable_string"
686 )]
687 pub avg_agio: String,
688 #[serde(
690 rename = "whGroupAbbr",
691 default,
692 deserialize_with = "deserialize_nullable_string"
693 )]
694 pub wh_group_abbr: String,
695 #[serde(
697 rename = "brandAbbr",
698 default,
699 deserialize_with = "deserialize_nullable_string"
700 )]
701 pub brand_abbr: String,
702}
703
704#[derive(Debug, Clone, Deserialize)]
710#[serde(rename_all = "camelCase")]
711pub struct Ranking {
712 #[serde(default, deserialize_with = "deserialize_nullable_string")]
714 pub rank: String,
715 #[serde(
717 rename = "qtyAbbr",
718 default,
719 deserialize_with = "deserialize_nullable_string"
720 )]
721 pub qty_abbr: String,
722 #[serde(rename = "todayQty", default)]
724 pub today_qty: i64,
725 #[serde(rename = "qtySub", default)]
727 pub qty_sub: i64,
728 #[serde(
730 rename = "buyAbbr",
731 default,
732 deserialize_with = "deserialize_nullable_string"
733 )]
734 pub buy_abbr: String,
735 #[serde(rename = "todayBuyQty", default)]
737 pub today_buy_qty: i64,
738 #[serde(rename = "buySub", default)]
740 pub buy_sub: i64,
741 #[serde(
743 rename = "sellAbbr",
744 default,
745 deserialize_with = "deserialize_nullable_string"
746 )]
747 pub sell_abbr: String,
748 #[serde(rename = "todaySellQty", default)]
750 pub today_sell_qty: i64,
751 #[serde(rename = "sellSub", default)]
753 pub sell_sub: i64,
754}
755
756#[derive(Debug, Clone, Serialize)]
758#[serde(rename_all = "camelCase")]
759pub struct DailyRankingRequest {
760 pub variety_id: String,
762 pub contract_id: String,
764 pub trade_date: String,
766 pub trade_type: String,
768}
769
770#[derive(Debug, Clone, Deserialize)]
772#[serde(rename_all = "camelCase")]
773pub struct DailyRankingResponse {
774 #[serde(
776 rename = "contractId",
777 default,
778 deserialize_with = "deserialize_nullable_string"
779 )]
780 pub contract_id: String,
781 #[serde(rename = "todayQty", default)]
783 pub today_qty: i64,
784 #[serde(rename = "qtySub", default)]
786 pub qty_sub: i64,
787 #[serde(rename = "todayBuyQty", default)]
789 pub today_buy_qty: i64,
790 #[serde(rename = "buySub", default)]
792 pub buy_sub: i64,
793 #[serde(rename = "todaySellQty", default)]
795 pub today_sell_qty: i64,
796 #[serde(rename = "sellSub", default)]
798 pub sell_sub: i64,
799 #[serde(rename = "qtyFutureList", default)]
801 pub qty_future_list: Vec<Ranking>,
802 #[serde(rename = "buyFutureList", default)]
804 pub buy_future_list: Vec<Ranking>,
805 #[serde(rename = "sellFutureList", default)]
807 pub sell_future_list: Vec<Ranking>,
808}
809
810#[derive(Debug, Clone, Serialize)]
812#[serde(rename_all = "camelCase")]
813pub struct PhaseRankingRequest {
814 pub variety: String,
816 pub start_month: String,
818 pub end_month: String,
820 pub trade_type: String,
822}
823
824#[derive(Debug, Clone, Deserialize)]
826#[serde(rename_all = "camelCase")]
827pub struct PhaseRanking {
828 #[serde(default, deserialize_with = "deserialize_nullable_string")]
830 pub seq: String,
831 #[serde(
833 rename = "memberId",
834 default,
835 deserialize_with = "deserialize_nullable_string"
836 )]
837 pub member_id: String,
838 #[serde(
840 rename = "memberName",
841 default,
842 deserialize_with = "deserialize_nullable_string"
843 )]
844 pub member_name: String,
845 #[serde(rename = "monthQty", default)]
847 pub month_qty: f64,
848 #[serde(rename = "qtyRatio", default)]
850 pub qty_ratio: f64,
851 #[serde(rename = "monthAmt", default)]
853 pub month_amt: f64,
854 #[serde(rename = "amtRatio", default)]
856 pub amt_ratio: f64,
857}
858
859#[derive(Debug, Clone, Deserialize)]
865#[serde(rename_all = "camelCase")]
866pub struct TradeParam {
867 #[serde(
869 rename = "contractId",
870 default,
871 deserialize_with = "deserialize_nullable_string"
872 )]
873 pub contract_id: String,
874 #[serde(rename = "specBuyRate", default)]
876 pub spec_buy_rate: f64,
877 #[serde(rename = "specBuy", default)]
879 pub spec_buy: f64,
880 #[serde(rename = "hedgeBuyRate", default)]
882 pub hedge_buy_rate: f64,
883 #[serde(rename = "hedgeBuy", default)]
885 pub hedge_buy: f64,
886 #[serde(rename = "riseLimitRate", default)]
888 pub rise_limit_rate: f64,
889 #[serde(rename = "riseLimit", default)]
891 pub rise_limit: f64,
892 #[serde(rename = "fallLimit", default)]
894 pub fall_limit: f64,
895 #[serde(default, deserialize_with = "deserialize_nullable_string")]
897 pub style: String,
898 #[serde(rename = "selfTotBuyPosiQuota", default)]
900 pub self_tot_buy_posi_quota: Option<f64>,
901 #[serde(rename = "selfTotBuyPosiQuotaSerLimit", default)]
903 pub self_tot_buy_posi_quota_ser_limit: Option<f64>,
904 #[serde(rename = "clientBuyPosiQuota", default)]
906 pub client_buy_posi_quota: Option<f64>,
907 #[serde(rename = "clientBuyPosiQuotaSerLimit", default)]
909 pub client_buy_posi_quota_ser_limit: Option<f64>,
910 #[serde(
912 rename = "contractLimit",
913 default,
914 deserialize_with = "deserialize_nullable_string"
915 )]
916 pub contract_limit: String,
917 #[serde(
919 rename = "varietyLimit",
920 default,
921 deserialize_with = "deserialize_nullable_string"
922 )]
923 pub variety_limit: String,
924 #[serde(
926 rename = "tradeDate",
927 default,
928 deserialize_with = "deserialize_nullable_string"
929 )]
930 pub trade_date: String,
931}
932
933#[derive(Debug, Clone, Serialize)]
935#[serde(rename_all = "camelCase")]
936pub struct DayTradeParamRequest {
937 pub variety_id: String,
939 pub trade_type: String,
941 pub lang: String,
943}
944
945#[derive(Debug, Clone, Deserialize)]
947#[serde(rename_all = "camelCase")]
948pub struct ContractInfo {
949 #[serde(
951 rename = "contractId",
952 default,
953 deserialize_with = "deserialize_nullable_string"
954 )]
955 pub contract_id: String,
956 #[serde(default, deserialize_with = "deserialize_nullable_string")]
958 pub variety: String,
959 #[serde(
961 rename = "varietyOrder",
962 default,
963 deserialize_with = "deserialize_nullable_string"
964 )]
965 pub variety_order: String,
966 #[serde(default)]
968 pub unit: i32,
969 #[serde(default, deserialize_with = "deserialize_nullable_string")]
971 pub tick: String,
972 #[serde(
974 rename = "startTradeDate",
975 default,
976 deserialize_with = "deserialize_nullable_string"
977 )]
978 pub start_trade_date: String,
979 #[serde(
981 rename = "endTradeDate",
982 default,
983 deserialize_with = "deserialize_nullable_string"
984 )]
985 pub end_trade_date: String,
986 #[serde(
988 rename = "endDeliveryDate",
989 default,
990 deserialize_with = "deserialize_nullable_string"
991 )]
992 pub end_delivery_date: String,
993 #[serde(
995 rename = "tradeType",
996 default,
997 deserialize_with = "deserialize_nullable_string"
998 )]
999 pub trade_type: String,
1000}
1001
1002#[derive(Debug, Clone, Serialize)]
1004#[serde(rename_all = "camelCase")]
1005pub struct ContractInfoRequest {
1006 pub variety_id: String,
1008 pub trade_type: String,
1010 pub lang: String,
1012}
1013
1014#[derive(Debug, Clone, Deserialize)]
1016#[serde(rename_all = "camelCase")]
1017pub struct ArbitrageContract {
1018 #[serde(
1020 rename = "arbiName",
1021 default,
1022 deserialize_with = "deserialize_nullable_string"
1023 )]
1024 pub arbi_name: String,
1025 #[serde(
1027 rename = "varietyName",
1028 default,
1029 deserialize_with = "deserialize_nullable_string"
1030 )]
1031 pub variety_name: String,
1032 #[serde(
1034 rename = "arbiContractId",
1035 default,
1036 deserialize_with = "deserialize_nullable_string"
1037 )]
1038 pub arbi_contract_id: String,
1039 #[serde(rename = "maxHand", default)]
1041 pub max_hand: i32,
1042 #[serde(default)]
1044 pub tick: f64,
1045}
1046
1047#[derive(Debug, Clone, Serialize)]
1049#[serde(rename_all = "camelCase")]
1050pub struct ArbitrageContractRequest {
1051 pub lang: String,
1053}
1054
1055#[derive(Debug, Clone, Deserialize)]
1061#[serde(rename_all = "camelCase")]
1062pub struct SettleParam {
1063 #[serde(default, deserialize_with = "deserialize_nullable_string")]
1065 pub variety: String,
1066 #[serde(
1068 rename = "varietyOrder",
1069 default,
1070 deserialize_with = "deserialize_nullable_string"
1071 )]
1072 pub variety_order: String,
1073 #[serde(
1075 rename = "contractId",
1076 default,
1077 deserialize_with = "deserialize_nullable_string"
1078 )]
1079 pub contract_id: String,
1080 #[serde(
1082 rename = "clearPrice",
1083 default,
1084 deserialize_with = "deserialize_nullable_string"
1085 )]
1086 pub clear_price: String,
1087 #[serde(
1089 rename = "openFee",
1090 default,
1091 deserialize_with = "deserialize_nullable_string"
1092 )]
1093 pub open_fee: String,
1094 #[serde(
1096 rename = "offsetFee",
1097 default,
1098 deserialize_with = "deserialize_nullable_string"
1099 )]
1100 pub offset_fee: String,
1101 #[serde(
1103 rename = "shortOpenFee",
1104 default,
1105 deserialize_with = "deserialize_nullable_string"
1106 )]
1107 pub short_open_fee: String,
1108 #[serde(
1110 rename = "shortOffsetFee",
1111 default,
1112 deserialize_with = "deserialize_nullable_string"
1113 )]
1114 pub short_offset_fee: String,
1115 #[serde(default, deserialize_with = "deserialize_nullable_string")]
1117 pub style: String,
1118 #[serde(
1120 rename = "specBuyRate",
1121 default,
1122 deserialize_with = "deserialize_nullable_string"
1123 )]
1124 pub spec_buy_rate: String,
1125 #[serde(
1127 rename = "specSellRate",
1128 default,
1129 deserialize_with = "deserialize_nullable_string"
1130 )]
1131 pub spec_sell_rate: String,
1132 #[serde(
1134 rename = "hedgeBuyRate",
1135 default,
1136 deserialize_with = "deserialize_nullable_string"
1137 )]
1138 pub hedge_buy_rate: String,
1139 #[serde(
1141 rename = "hedgeSellRate",
1142 default,
1143 deserialize_with = "deserialize_nullable_string"
1144 )]
1145 pub hedge_sell_rate: String,
1146}
1147
1148#[derive(Debug, Clone, Serialize)]
1150#[serde(rename_all = "camelCase")]
1151pub struct SettleParamRequest {
1152 pub variety_id: String,
1154 pub trade_date: String,
1156 pub trade_type: String,
1158 pub lang: String,
1160}
1161
1162#[derive(Debug, Clone, Serialize)]
1168#[serde(rename_all = "camelCase")]
1169pub struct VarietyMonthYearStatRequest {
1170 pub trade_month: String,
1172 pub trade_type: String,
1174 pub lang: String,
1176}
1177
1178#[derive(Debug, Clone, Deserialize)]
1180#[serde(rename_all = "camelCase")]
1181pub struct VarietyMonthYearStat {
1182 #[serde(default, deserialize_with = "deserialize_nullable_string")]
1184 pub variety: String,
1185 #[serde(rename = "thisMonthVolumn", default)]
1187 pub this_month_volumn: i64,
1188 #[serde(
1190 rename = "volumnBalance",
1191 default,
1192 deserialize_with = "deserialize_nullable_string"
1193 )]
1194 pub volumn_balance: String,
1195 #[serde(
1197 rename = "volumnChain",
1198 default,
1199 deserialize_with = "deserialize_nullable_string"
1200 )]
1201 pub volumn_chain: String,
1202 #[serde(rename = "thisYearVolumn", default)]
1204 pub this_year_volumn: i64,
1205 #[serde(
1207 rename = "yearVolumnChain",
1208 default,
1209 deserialize_with = "deserialize_nullable_string"
1210 )]
1211 pub year_volumn_chain: String,
1212 #[serde(
1214 rename = "thisMonthTurnover",
1215 default,
1216 deserialize_with = "deserialize_nullable_string"
1217 )]
1218 pub this_month_turnover: String,
1219 #[serde(
1221 rename = "turnoverBalance",
1222 default,
1223 deserialize_with = "deserialize_nullable_string"
1224 )]
1225 pub turnover_balance: String,
1226 #[serde(
1228 rename = "turnoverChain",
1229 default,
1230 deserialize_with = "deserialize_nullable_string"
1231 )]
1232 pub turnover_chain: String,
1233 #[serde(
1235 rename = "thisYearTurnover",
1236 default,
1237 deserialize_with = "deserialize_nullable_string"
1238 )]
1239 pub this_year_turnover: String,
1240 #[serde(
1242 rename = "yearTurnoverChain",
1243 default,
1244 deserialize_with = "deserialize_nullable_string"
1245 )]
1246 pub year_turnover_chain: String,
1247 #[serde(rename = "thisMonthOpeni", default)]
1249 pub this_month_openi: i64,
1250 #[serde(
1252 rename = "openiBalance",
1253 default,
1254 deserialize_with = "deserialize_nullable_string"
1255 )]
1256 pub openi_balance: String,
1257 #[serde(
1259 rename = "openiChain",
1260 default,
1261 deserialize_with = "deserialize_nullable_string"
1262 )]
1263 pub openi_chain: String,
1264}
1265
1266#[derive(Debug, Clone, Serialize)]
1268#[serde(rename_all = "camelCase")]
1269pub struct ContractMonthMaxRequest {
1270 pub start_month: String,
1272 pub end_month: String,
1274 pub stat_content: String,
1276 pub trade_type: String,
1278 pub lang: String,
1280}
1281
1282#[derive(Debug, Clone, Deserialize)]
1284#[serde(rename_all = "camelCase")]
1285pub struct ContractMonthMaxVolume {
1286 #[serde(
1288 rename = "contractId",
1289 default,
1290 deserialize_with = "deserialize_nullable_string"
1291 )]
1292 pub contract_id: String,
1293 #[serde(rename = "sumAmount", default)]
1295 pub sum_amount: i64,
1296 #[serde(rename = "maxAmount", default)]
1298 pub max_amount: i64,
1299 #[serde(
1301 rename = "maxAmountDate",
1302 default,
1303 deserialize_with = "deserialize_nullable_string"
1304 )]
1305 pub max_amount_date: String,
1306 #[serde(rename = "minAmount", default)]
1308 pub min_amount: i64,
1309 #[serde(
1311 rename = "minAmountDate",
1312 default,
1313 deserialize_with = "deserialize_nullable_string"
1314 )]
1315 pub min_amount_date: String,
1316 #[serde(rename = "avgAmount", default)]
1318 pub avg_amount: i64,
1319}
1320
1321#[derive(Debug, Clone, Deserialize)]
1323#[serde(rename_all = "camelCase")]
1324pub struct ContractMonthMaxTurnover {
1325 #[serde(
1327 rename = "contractId",
1328 default,
1329 deserialize_with = "deserialize_nullable_string"
1330 )]
1331 pub contract_id: String,
1332 #[serde(
1334 rename = "sumTurnover",
1335 default,
1336 deserialize_with = "deserialize_nullable_string"
1337 )]
1338 pub sum_turnover: String,
1339 #[serde(
1341 rename = "maxTurnover",
1342 default,
1343 deserialize_with = "deserialize_nullable_string"
1344 )]
1345 pub max_turnover: String,
1346 #[serde(
1348 rename = "maxTurnoverDate",
1349 default,
1350 deserialize_with = "deserialize_nullable_string"
1351 )]
1352 pub max_turnover_date: String,
1353 #[serde(
1355 rename = "minTurnover",
1356 default,
1357 deserialize_with = "deserialize_nullable_string"
1358 )]
1359 pub min_turnover: String,
1360 #[serde(
1362 rename = "minTurnoverDate",
1363 default,
1364 deserialize_with = "deserialize_nullable_string"
1365 )]
1366 pub min_turnover_date: String,
1367 #[serde(
1369 rename = "avgTurnover",
1370 default,
1371 deserialize_with = "deserialize_nullable_string"
1372 )]
1373 pub avg_turnover: String,
1374}
1375
1376#[derive(Debug, Clone, Deserialize)]
1378#[serde(rename_all = "camelCase")]
1379pub struct ContractMonthMaxOpeni {
1380 #[serde(
1382 rename = "contractId",
1383 default,
1384 deserialize_with = "deserialize_nullable_string"
1385 )]
1386 pub contract_id: String,
1387 #[serde(rename = "sumOpeni", default)]
1389 pub sum_openi: i64,
1390 #[serde(rename = "maxOpeni", default)]
1392 pub max_openi: i64,
1393 #[serde(
1395 rename = "maxOpeniDate",
1396 default,
1397 deserialize_with = "deserialize_nullable_string"
1398 )]
1399 pub max_openi_date: String,
1400 #[serde(rename = "minOpeni", default)]
1402 pub min_openi: i64,
1403 #[serde(
1405 rename = "minOpeniDate",
1406 default,
1407 deserialize_with = "deserialize_nullable_string"
1408 )]
1409 pub min_openi_date: String,
1410 #[serde(rename = "avgOpeni", default)]
1412 pub avg_openi: i64,
1413}
1414
1415#[derive(Debug, Clone, Deserialize)]
1417#[serde(rename_all = "camelCase")]
1418pub struct ContractMonthMaxPrice {
1419 #[serde(
1421 rename = "contractId",
1422 default,
1423 deserialize_with = "deserialize_nullable_string"
1424 )]
1425 pub contract_id: String,
1426 #[serde(default, deserialize_with = "deserialize_nullable_string")]
1428 pub open: String,
1429 #[serde(default, deserialize_with = "deserialize_nullable_string")]
1431 pub close: String,
1432 #[serde(default, deserialize_with = "deserialize_nullable_string")]
1434 pub high: String,
1435 #[serde(
1437 rename = "highDate",
1438 default,
1439 deserialize_with = "deserialize_nullable_string"
1440 )]
1441 pub high_date: String,
1442 #[serde(default, deserialize_with = "deserialize_nullable_string")]
1444 pub low: String,
1445 #[serde(
1447 rename = "lowDate",
1448 default,
1449 deserialize_with = "deserialize_nullable_string"
1450 )]
1451 pub low_date: String,
1452 #[serde(
1454 rename = "clearPrice",
1455 default,
1456 deserialize_with = "deserialize_nullable_string"
1457 )]
1458 pub clear_price: String,
1459}
1460
1461#[derive(Debug, Clone, Serialize)]
1463#[serde(rename_all = "camelCase")]
1464pub struct RiseFallEventRequest {
1465 pub start_date: String,
1467 pub end_date: String,
1469 pub variety_id: String,
1471 pub lang: String,
1473}
1474
1475#[derive(Debug, Clone, Deserialize)]
1477#[serde(rename_all = "camelCase")]
1478pub struct RiseFallEvent {
1479 #[serde(
1481 rename = "tradeDate",
1482 default,
1483 deserialize_with = "deserialize_nullable_string"
1484 )]
1485 pub trade_date: String,
1486 #[serde(
1488 rename = "contractId",
1489 default,
1490 deserialize_with = "deserialize_nullable_string"
1491 )]
1492 pub contract_id: String,
1493 #[serde(default, deserialize_with = "deserialize_nullable_string")]
1495 pub direction: String,
1496 #[serde(default)]
1498 pub times: i32,
1499}
1500
1501#[derive(Debug, Clone, Serialize)]
1503#[serde(rename_all = "camelCase")]
1504pub struct DivisionPriceInfoRequest {
1505 pub variety_id: String,
1507 pub trade_date: String,
1509 pub trade_type: String,
1511}
1512
1513#[derive(Debug, Clone, Deserialize)]
1515#[serde(rename_all = "camelCase")]
1516pub struct DivisionPriceInfo {
1517 #[serde(
1519 rename = "calculateDate",
1520 default,
1521 deserialize_with = "deserialize_nullable_string"
1522 )]
1523 pub calculate_date: String,
1524 #[serde(
1526 rename = "calculateTime",
1527 default,
1528 deserialize_with = "deserialize_nullable_string"
1529 )]
1530 pub calculate_time: String,
1531 #[serde(
1533 rename = "varietyName",
1534 default,
1535 deserialize_with = "deserialize_nullable_string"
1536 )]
1537 pub variety_name: String,
1538 #[serde(
1540 rename = "varietyEnName",
1541 default,
1542 deserialize_with = "deserialize_nullable_string"
1543 )]
1544 pub variety_en_name: String,
1545 #[serde(
1547 rename = "contractId",
1548 default,
1549 deserialize_with = "deserialize_nullable_string"
1550 )]
1551 pub contract_id: String,
1552 #[serde(rename = "clearPrice", default)]
1554 pub clear_price: f64,
1555 #[serde(
1557 rename = "seriesId",
1558 default,
1559 deserialize_with = "deserialize_nullable_string"
1560 )]
1561 pub series_id: String,
1562 #[serde(default)]
1564 pub volatility: f64,
1565}
1566
1567#[derive(Debug, Clone, Serialize)]
1573#[serde(rename_all = "camelCase")]
1574pub struct TradingParamRequest {
1575 pub lang: String,
1577}
1578
1579#[derive(Debug, Clone, Deserialize)]
1581#[serde(rename_all = "camelCase")]
1582pub struct TradingParam {
1583 #[serde(
1585 rename = "varietyId",
1586 default,
1587 deserialize_with = "deserialize_nullable_string"
1588 )]
1589 pub variety_id: String,
1590 #[serde(
1592 rename = "varietyName",
1593 default,
1594 deserialize_with = "deserialize_nullable_string"
1595 )]
1596 pub variety_name: String,
1597 #[serde(
1599 rename = "tradingMarginRateSpeculation",
1600 default,
1601 deserialize_with = "deserialize_nullable_string"
1602 )]
1603 pub trading_margin_rate_speculation: String,
1604 #[serde(
1606 rename = "tradingMarginRateHedging",
1607 default,
1608 deserialize_with = "deserialize_nullable_string"
1609 )]
1610 pub trading_margin_rate_hedging: String,
1611 #[serde(
1613 rename = "priceLimitExistingContract",
1614 default,
1615 deserialize_with = "deserialize_nullable_string"
1616 )]
1617 pub price_limit_existing_contract: String,
1618 #[serde(
1620 rename = "priceLimitNewContract",
1621 default,
1622 deserialize_with = "deserialize_nullable_string"
1623 )]
1624 pub price_limit_new_contract: String,
1625 #[serde(
1627 rename = "priceLimitDeliveryMonth",
1628 default,
1629 deserialize_with = "deserialize_nullable_string"
1630 )]
1631 pub price_limit_delivery_month: String,
1632 #[serde(
1634 rename = "tradingMarginRateSpeculationN",
1635 default,
1636 deserialize_with = "deserialize_nullable_string"
1637 )]
1638 pub trading_margin_rate_speculation_n: String,
1639 #[serde(
1641 rename = "tradingMarginRateHedgingN",
1642 default,
1643 deserialize_with = "deserialize_nullable_string"
1644 )]
1645 pub trading_margin_rate_hedging_n: String,
1646 #[serde(
1648 rename = "settlementMarginRateHedgingN",
1649 default,
1650 deserialize_with = "deserialize_nullable_string"
1651 )]
1652 pub settlement_margin_rate_hedging_n: String,
1653 #[serde(
1655 rename = "priceLimitN",
1656 default,
1657 deserialize_with = "deserialize_nullable_string"
1658 )]
1659 pub price_limit_n: String,
1660 #[serde(
1662 rename = "tradingMarginRateN1",
1663 default,
1664 deserialize_with = "deserialize_nullable_string"
1665 )]
1666 pub trading_margin_rate_n1: String,
1667 #[serde(
1669 rename = "settlementMarginRateHedgingN1",
1670 default,
1671 deserialize_with = "deserialize_nullable_string"
1672 )]
1673 pub settlement_margin_rate_hedging_n1: String,
1674 #[serde(
1676 rename = "priceLimitN1",
1677 default,
1678 deserialize_with = "deserialize_nullable_string"
1679 )]
1680 pub price_limit_n1: String,
1681 #[serde(
1683 rename = "tradingMarginRateN2",
1684 default,
1685 deserialize_with = "deserialize_nullable_string"
1686 )]
1687 pub trading_margin_rate_n2: String,
1688 #[serde(
1690 rename = "priceLimitN2",
1691 default,
1692 deserialize_with = "deserialize_nullable_string"
1693 )]
1694 pub price_limit_n2: String,
1695 #[serde(
1697 rename = "tradingLimit",
1698 default,
1699 deserialize_with = "deserialize_nullable_string"
1700 )]
1701 pub trading_limit: String,
1702 #[serde(
1704 rename = "specOpenFee",
1705 default,
1706 deserialize_with = "deserialize_nullable_string"
1707 )]
1708 pub spec_open_fee: String,
1709 #[serde(
1711 rename = "specOffsetFee",
1712 default,
1713 deserialize_with = "deserialize_nullable_string"
1714 )]
1715 pub spec_offset_fee: String,
1716 #[serde(
1718 rename = "specShortOpenFee",
1719 default,
1720 deserialize_with = "deserialize_nullable_string"
1721 )]
1722 pub spec_short_open_fee: String,
1723 #[serde(
1725 rename = "specShortOffsetFee",
1726 default,
1727 deserialize_with = "deserialize_nullable_string"
1728 )]
1729 pub spec_short_offset_fee: String,
1730 #[serde(
1732 rename = "hedgeOpenFee",
1733 default,
1734 deserialize_with = "deserialize_nullable_string"
1735 )]
1736 pub hedge_open_fee: String,
1737 #[serde(
1739 rename = "hedgeOffsetFee",
1740 default,
1741 deserialize_with = "deserialize_nullable_string"
1742 )]
1743 pub hedge_offset_fee: String,
1744 #[serde(
1746 rename = "hedgeShortOpenFee",
1747 default,
1748 deserialize_with = "deserialize_nullable_string"
1749 )]
1750 pub hedge_short_open_fee: String,
1751 #[serde(
1753 rename = "hedgeShortOffsetFee",
1754 default,
1755 deserialize_with = "deserialize_nullable_string"
1756 )]
1757 pub hedge_short_offset_fee: String,
1758 #[serde(
1760 rename = "feeStyle",
1761 default,
1762 deserialize_with = "deserialize_nullable_string"
1763 )]
1764 pub fee_style: String,
1765 #[serde(
1767 rename = "feeStyleEn",
1768 default,
1769 deserialize_with = "deserialize_nullable_string"
1770 )]
1771 pub fee_style_en: String,
1772 #[serde(
1774 rename = "deliveryFee",
1775 default,
1776 deserialize_with = "deserialize_nullable_string"
1777 )]
1778 pub delivery_fee: String,
1779 #[serde(
1781 rename = "maxHand",
1782 default,
1783 deserialize_with = "deserialize_nullable_string"
1784 )]
1785 pub max_hand: String,
1786}
1787
1788#[derive(Debug, Clone, Serialize)]
1790#[serde(rename_all = "camelCase")]
1791pub struct MarginArbiPerfParaRequest {
1792 pub variety_id: String,
1794}
1795
1796#[derive(Debug, Clone, Deserialize)]
1798#[serde(rename_all = "camelCase")]
1799pub struct MarginArbiPerfPara {
1800 #[serde(default, deserialize_with = "deserialize_nullable_string")]
1802 pub variety: String,
1803 #[serde(
1805 rename = "strategyName",
1806 default,
1807 deserialize_with = "deserialize_nullable_string"
1808 )]
1809 pub strategy_name: String,
1810 #[serde(
1812 rename = "tradingMarginRateSpeculation",
1813 default,
1814 deserialize_with = "deserialize_nullable_string"
1815 )]
1816 pub trading_margin_rate_speculation: String,
1817 #[serde(
1819 rename = "tradingMarginRateHedging",
1820 default,
1821 deserialize_with = "deserialize_nullable_string"
1822 )]
1823 pub trading_margin_rate_hedging: String,
1824 #[serde(
1826 rename = "openFee",
1827 default,
1828 deserialize_with = "deserialize_nullable_string"
1829 )]
1830 pub open_fee: String,
1831 #[serde(
1833 rename = "offsetFee",
1834 default,
1835 deserialize_with = "deserialize_nullable_string"
1836 )]
1837 pub offset_fee: String,
1838 #[serde(
1840 rename = "shortOpenFee",
1841 default,
1842 deserialize_with = "deserialize_nullable_string"
1843 )]
1844 pub short_open_fee: String,
1845 #[serde(
1847 rename = "shortOffsetFee",
1848 default,
1849 deserialize_with = "deserialize_nullable_string"
1850 )]
1851 pub short_offset_fee: String,
1852}
1853
1854#[derive(Debug, Clone, Serialize)]
1856#[serde(rename_all = "camelCase")]
1857pub struct NewContractInfoRequest {
1858 pub trade_date: String,
1860 pub trade_type: String,
1862 #[serde(skip_serializing_if = "Option::is_none")]
1864 pub lang: Option<String>,
1865}
1866
1867#[derive(Debug, Clone, Deserialize)]
1869#[serde(rename_all = "camelCase")]
1870pub struct NewContractInfo {
1871 #[serde(
1873 rename = "tradeType",
1874 default,
1875 deserialize_with = "deserialize_nullable_string"
1876 )]
1877 pub trade_type: String,
1878 #[serde(default, deserialize_with = "deserialize_nullable_string")]
1880 pub variety: String,
1881 #[serde(
1883 rename = "varietyOrder",
1884 default,
1885 deserialize_with = "deserialize_nullable_string"
1886 )]
1887 pub variety_order: String,
1888 #[serde(
1890 rename = "contractId",
1891 default,
1892 deserialize_with = "deserialize_nullable_string"
1893 )]
1894 pub contract_id: String,
1895 #[serde(
1897 rename = "startTradeDate",
1898 default,
1899 deserialize_with = "deserialize_nullable_string"
1900 )]
1901 pub start_trade_date: String,
1902 #[serde(
1904 rename = "refPriceUnit",
1905 default,
1906 deserialize_with = "deserialize_nullable_string"
1907 )]
1908 pub ref_price_unit: String,
1909 #[serde(
1911 rename = "noRiseLimit",
1912 default,
1913 deserialize_with = "deserialize_nullable_string"
1914 )]
1915 pub no_rise_limit: String,
1916 #[serde(
1918 rename = "noFallLimit",
1919 default,
1920 deserialize_with = "deserialize_nullable_string"
1921 )]
1922 pub no_fall_limit: String,
1923}
1924
1925#[derive(Debug, Clone, Serialize)]
1927#[serde(rename_all = "camelCase")]
1928pub struct MainSeriesInfoRequest {
1929 pub variety_id: String,
1931 pub trade_date: String,
1933}
1934
1935#[derive(Debug, Clone, Deserialize)]
1937#[serde(rename_all = "camelCase")]
1938pub struct MainSeriesInfo {
1939 #[serde(
1941 rename = "tradeDate",
1942 default,
1943 deserialize_with = "deserialize_nullable_string"
1944 )]
1945 pub trade_date: String,
1946 #[serde(
1948 rename = "varietyId",
1949 default,
1950 deserialize_with = "deserialize_nullable_string"
1951 )]
1952 pub variety_id: String,
1953 #[serde(
1955 rename = "seriesId",
1956 default,
1957 deserialize_with = "deserialize_nullable_string"
1958 )]
1959 pub series_id: String,
1960 #[serde(
1962 rename = "contractId",
1963 default,
1964 deserialize_with = "deserialize_nullable_string"
1965 )]
1966 pub contract_id: String,
1967}
1968
1969#[derive(Debug, Clone, Serialize)]
1975#[serde(rename_all = "camelCase")]
1976pub struct TcCongregateDeliveryRequest {
1977 pub variety: String,
1979 pub contract_month: String,
1981}
1982
1983#[derive(Debug, Clone, Deserialize)]
1985#[serde(rename_all = "camelCase")]
1986pub struct TcCongregateDelivery {
1987 #[serde(
1989 rename = "varietyId",
1990 default,
1991 deserialize_with = "deserialize_nullable_string"
1992 )]
1993 pub variety_id: String,
1994 #[serde(
1996 rename = "varietyName",
1997 default,
1998 deserialize_with = "deserialize_nullable_string"
1999 )]
2000 pub variety_name: String,
2001 #[serde(default, deserialize_with = "deserialize_nullable_string")]
2003 pub contract: String,
2004 #[serde(
2006 rename = "warehouseName",
2007 default,
2008 deserialize_with = "deserialize_nullable_string"
2009 )]
2010 pub warehouse_name: String,
2011 #[serde(
2013 rename = "wbillQuantity",
2014 default,
2015 deserialize_with = "deserialize_nullable_string"
2016 )]
2017 pub wbill_quantity: String,
2018 #[serde(
2020 rename = "agreeablePlace",
2021 default,
2022 deserialize_with = "deserialize_nullable_string"
2023 )]
2024 pub agreeable_place: String,
2025 #[serde(
2027 rename = "agreeableBrand",
2028 default,
2029 deserialize_with = "deserialize_nullable_string"
2030 )]
2031 pub agreeable_brand: String,
2032 #[serde(
2034 rename = "agreeableQuality",
2035 default,
2036 deserialize_with = "deserialize_nullable_string"
2037 )]
2038 pub agreeable_quality: String,
2039 #[serde(
2041 rename = "agreeableQuantity",
2042 default,
2043 deserialize_with = "deserialize_nullable_string"
2044 )]
2045 pub agreeable_quantity: String,
2046 #[serde(
2048 rename = "agreeableSpread",
2049 default,
2050 deserialize_with = "deserialize_nullable_string"
2051 )]
2052 pub agreeable_spread: String,
2053 #[serde(default, deserialize_with = "deserialize_nullable_string")]
2055 pub contracts: String,
2056 #[serde(
2058 rename = "contractWay",
2059 default,
2060 deserialize_with = "deserialize_nullable_string"
2061 )]
2062 pub contract_way: String,
2063 #[serde(
2065 rename = "whGroupName",
2066 default,
2067 deserialize_with = "deserialize_nullable_string"
2068 )]
2069 pub wh_group_name: String,
2070}
2071
2072#[derive(Debug, Clone, Serialize)]
2074#[serde(rename_all = "camelCase")]
2075pub struct RollDeliverySellerIntentionRequest {
2076 pub variety: String,
2078 pub date: String,
2080}
2081
2082#[derive(Debug, Clone, Deserialize)]
2084#[serde(rename_all = "camelCase")]
2085pub struct RollDeliverySellerIntention {
2086 #[serde(
2088 rename = "varietyId",
2089 default,
2090 deserialize_with = "deserialize_nullable_string"
2091 )]
2092 pub variety_id: String,
2093 #[serde(
2095 rename = "varietyName",
2096 default,
2097 deserialize_with = "deserialize_nullable_string"
2098 )]
2099 pub variety_name: String,
2100 #[serde(default, deserialize_with = "deserialize_nullable_string")]
2102 pub contract: String,
2103 #[serde(
2105 rename = "type",
2106 default,
2107 deserialize_with = "deserialize_nullable_string"
2108 )]
2109 pub type_: String,
2110 #[serde(
2112 rename = "warehouseCode",
2113 default,
2114 deserialize_with = "deserialize_nullable_string"
2115 )]
2116 pub warehouse_code: String,
2117 #[serde(
2119 rename = "warehouseName",
2120 default,
2121 deserialize_with = "deserialize_nullable_string"
2122 )]
2123 pub warehouse_name: String,
2124 #[serde(default, deserialize_with = "deserialize_nullable_string")]
2126 pub quantity: String,
2127 #[serde(
2129 rename = "agreeablePlace",
2130 default,
2131 deserialize_with = "deserialize_nullable_string"
2132 )]
2133 pub agreeable_place: String,
2134 #[serde(
2136 rename = "agreeableBrand",
2137 default,
2138 deserialize_with = "deserialize_nullable_string"
2139 )]
2140 pub agreeable_brand: String,
2141 #[serde(
2143 rename = "agreeableQuality",
2144 default,
2145 deserialize_with = "deserialize_nullable_string"
2146 )]
2147 pub agreeable_quality: String,
2148 #[serde(
2150 rename = "agreeableQuantity",
2151 default,
2152 deserialize_with = "deserialize_nullable_string"
2153 )]
2154 pub agreeable_quantity: String,
2155 #[serde(
2157 rename = "agreeableSpread",
2158 default,
2159 deserialize_with = "deserialize_nullable_string"
2160 )]
2161 pub agreeable_spread: String,
2162 #[serde(default, deserialize_with = "deserialize_nullable_string")]
2164 pub contracts: String,
2165 #[serde(
2167 rename = "contractWay",
2168 default,
2169 deserialize_with = "deserialize_nullable_string"
2170 )]
2171 pub contract_way: String,
2172 #[serde(
2174 rename = "tradeDate",
2175 default,
2176 deserialize_with = "deserialize_nullable_string"
2177 )]
2178 pub trade_date: String,
2179 #[serde(
2181 rename = "whGroupName",
2182 default,
2183 deserialize_with = "deserialize_nullable_string"
2184 )]
2185 pub wh_group_name: String,
2186 #[serde(
2188 rename = "deliveryWay",
2189 default,
2190 deserialize_with = "deserialize_nullable_string"
2191 )]
2192 pub delivery_way: String,
2193}
2194
2195#[derive(Debug, Clone, Serialize)]
2197#[serde(rename_all = "camelCase")]
2198pub struct BondedDeliveryRequest {
2199 pub start_date: String,
2201 pub end_date: String,
2203}
2204
2205#[derive(Debug, Clone, Deserialize)]
2207#[serde(rename_all = "camelCase")]
2208pub struct BondedDelivery {
2209 #[serde(
2211 rename = "deliveryDate",
2212 default,
2213 deserialize_with = "deserialize_nullable_string"
2214 )]
2215 pub delivery_date: String,
2216 #[serde(
2218 rename = "deliveryWay",
2219 default,
2220 deserialize_with = "deserialize_nullable_string"
2221 )]
2222 pub delivery_way: String,
2223 #[serde(
2225 rename = "varietyId",
2226 default,
2227 deserialize_with = "deserialize_nullable_string"
2228 )]
2229 pub variety_id: String,
2230 #[serde(
2232 rename = "contractId",
2233 default,
2234 deserialize_with = "deserialize_nullable_string"
2235 )]
2236 pub contract_id: String,
2237 #[serde(
2239 rename = "whAbbr",
2240 default,
2241 deserialize_with = "deserialize_nullable_string"
2242 )]
2243 pub wh_abbr: String,
2244 #[serde(
2246 rename = "bondedDeliveryPrice",
2247 default,
2248 deserialize_with = "deserialize_nullable_string"
2249 )]
2250 pub bonded_delivery_price: String,
2251 #[serde(
2253 rename = "deliveryPrice",
2254 default,
2255 deserialize_with = "deserialize_nullable_string"
2256 )]
2257 pub delivery_price: String,
2258}
2259
2260#[derive(Debug, Clone, Serialize)]
2262#[serde(rename_all = "camelCase")]
2263pub struct TdBondedDeliveryRequest {
2264 pub start_date: String,
2266 pub end_date: String,
2268}
2269
2270pub type TdBondedDelivery = BondedDelivery;
2272
2273#[derive(Debug, Clone, Serialize)]
2275#[serde(rename_all = "camelCase")]
2276pub struct FactorySpotAgioRequest {
2277 pub variety_id: String,
2279 pub trade_date: String,
2281}
2282
2283#[derive(Debug, Clone, Deserialize)]
2285#[serde(rename_all = "camelCase")]
2286pub struct FactorySpotAgio {
2287 #[serde(default, deserialize_with = "deserialize_nullable_string")]
2289 pub seq_no: String,
2290 #[serde(
2292 rename = "whAbbr",
2293 default,
2294 deserialize_with = "deserialize_nullable_string"
2295 )]
2296 pub wh_abbr: String,
2297 #[serde(default, deserialize_with = "deserialize_nullable_string")]
2299 pub variety_id: String,
2300 #[serde(default, deserialize_with = "deserialize_nullable_string")]
2302 pub variety_name: String,
2303 #[serde(
2305 rename = "whCode",
2306 default,
2307 deserialize_with = "deserialize_nullable_string"
2308 )]
2309 pub wh_code: String,
2310 #[serde(default, deserialize_with = "deserialize_nullable_string")]
2312 pub bh: String,
2313 #[serde(default, deserialize_with = "deserialize_nullable_string")]
2315 pub mdmin: String,
2316 #[serde(default, deserialize_with = "deserialize_nullable_string")]
2318 pub mdmax: String,
2319 #[serde(default, deserialize_with = "deserialize_nullable_string")]
2321 pub jq: String,
2322 #[serde(default, deserialize_with = "deserialize_nullable_string")]
2324 pub agio: String,
2325 #[serde(
2327 rename = "minExchangeAmount",
2328 default,
2329 deserialize_with = "deserialize_nullable_string"
2330 )]
2331 pub min_exchange_amount: String,
2332 #[serde(
2334 rename = "whAddr",
2335 default,
2336 deserialize_with = "deserialize_nullable_string"
2337 )]
2338 pub wh_addr: String,
2339 #[serde(
2341 rename = "connectPerson",
2342 default,
2343 deserialize_with = "deserialize_nullable_string"
2344 )]
2345 pub connect_person: String,
2346 #[serde(default, deserialize_with = "deserialize_nullable_string")]
2348 pub tel: String,
2349}
2350
2351#[derive(Debug, Clone, Serialize)]
2353#[serde(rename_all = "camelCase")]
2354pub struct PlywoodDeliveryCommodityRequest {
2355 pub variety_id: String,
2357}
2358
2359#[derive(Debug, Clone, Deserialize)]
2361#[serde(rename_all = "camelCase")]
2362pub struct PlywoodDeliveryCommodity {
2363 #[serde(default, deserialize_with = "deserialize_nullable_string")]
2365 pub apply_id: String,
2366 #[serde(
2368 rename = "whName",
2369 default,
2370 deserialize_with = "deserialize_nullable_string"
2371 )]
2372 pub wh_name: String,
2373 #[serde(
2375 rename = "whAbbr",
2376 default,
2377 deserialize_with = "deserialize_nullable_string"
2378 )]
2379 pub wh_abbr: String,
2380 #[serde(
2382 rename = "uploadFileId",
2383 default,
2384 deserialize_with = "deserialize_nullable_string"
2385 )]
2386 pub upload_file_id: String,
2387 #[serde(default)]
2389 pub file_size: i64,
2390 #[serde(
2392 rename = "uploadFileName",
2393 default,
2394 deserialize_with = "deserialize_nullable_string"
2395 )]
2396 pub upload_file_name: String,
2397}