1use serde::{Deserialize, Deserializer, Serialize};
4
5use super::{DateTime, Duration, NullableDateTime, StringList};
6
7fn trim_string<'de, D>(deserializer: D) -> Result<String, D::Error>
8where
9 D: Deserializer<'de>,
10{
11 let s = String::deserialize(deserializer)?;
12 Ok(s.trim_ascii_start().trim_end().to_string())
13}
14
15fn trim_opt_string<'de, D>(deserializer: D) -> Result<Option<String>, D::Error>
16where
17 D: Deserializer<'de>,
18{
19 let s = Option::<String>::deserialize(deserializer)?;
20 match s {
21 Some(s) => Ok(Some(s.trim_ascii_start().trim_end().to_string())),
22 None => Ok(None),
23 }
24}
25
26fn float_or_null<'de, D>(deserializer: D) -> Result<f64, D::Error>
27where
28 D: Deserializer<'de>,
29{
30 let v = Option::<f64>::deserialize(deserializer)?;
31 Ok(v.unwrap_or(f64::NAN))
32}
33
34#[derive(Debug, Clone, Serialize, Deserialize)]
35pub struct Control {
36 #[serde(alias = "Title", rename = "title", deserialize_with = "trim_string")]
40 pub title: String,
41 #[serde(alias = "DateTime", rename = "dateTime")]
45 pub date_time: DateTime,
46 #[serde(alias = "Status", rename = "status")]
50 pub status: String,
51 #[serde(
55 alias = "EditorialOffice",
56 rename = "editorialOffice",
57 deserialize_with = "trim_string"
58 )]
59 pub editorial_office: String,
60 #[serde(alias = "PublishingOffice", rename = "publishingOffices")]
64 pub publishing_offices: StringList,
65}
66
67#[derive(Debug, Clone, Serialize, Deserialize)]
68pub struct EbAreaClass {
69 #[serde(
70 alias = "$text",
71 rename = "value",
72 default,
73 deserialize_with = "trim_string"
74 )]
75 pub value: String,
76 #[serde(alias = "@type", rename = "type")]
78 pub ty: String,
79}
80
81#[derive(Debug, Clone, Serialize, Deserialize)]
82pub struct EbAxes {
83 #[serde(
85 alias = "Axis",
86 rename = "axes",
87 skip_serializing_if = "Vec::is_empty",
88 default
89 )]
90 pub axes: Vec<EbAxis>,
91 #[serde(
93 alias = "LongAxis",
94 rename = "longAxes",
95 skip_serializing_if = "Vec::is_empty",
96 default
97 )]
98 pub long_axes: Vec<EbAxis>,
99 #[serde(
101 alias = "ShortAxis",
102 rename = "shortAxes",
103 skip_serializing_if = "Vec::is_empty",
104 default
105 )]
106 pub short_axes: Vec<EbAxis>,
107}
108
109#[derive(Debug, Clone, Serialize, Deserialize)]
110pub struct EbAxis {
111 #[serde(
115 alias = "Direction",
116 rename = "directions",
117 skip_serializing_if = "Vec::is_empty",
118 default
119 )]
120 pub directions: Vec<EbDirection>,
121 #[serde(
125 alias = "Bearings",
126 rename = "bearings",
127 skip_serializing_if = "Vec::is_empty",
128 default
129 )]
130 pub bearings: Vec<EbBearings>,
131 #[serde(alias = "Radius", rename = "radiuses")]
135 pub radiuses: Vec<EbRadius>,
136}
137
138#[derive(Debug, Clone, Serialize, Deserialize)]
139pub struct EbBearings {
140 #[serde(
141 alias = "$text",
142 rename = "value",
143 skip_serializing_if = "Option::is_none"
144 )]
145 pub value: Option<i64>,
146 #[serde(alias = "@type", rename = "type")]
148 pub ty: String,
149 #[serde(
151 alias = "@unit",
152 rename = "unit",
153 skip_serializing_if = "Option::is_none"
154 )]
155 pub unit: Option<String>,
156 #[serde(
160 alias = "@condition",
161 rename = "condition",
162 skip_serializing_if = "Option::is_none"
163 )]
164 pub condition: Option<String>,
165 #[serde(
169 alias = "@description",
170 rename = "description",
171 skip_serializing_if = "Option::is_none"
172 )]
173 pub description: Option<String>,
174}
175
176#[derive(Debug, Clone, Serialize, Deserialize)]
177pub struct EbCircle {
178 #[serde(
180 alias = "@type",
181 rename = "type",
182 skip_serializing_if = "Option::is_none"
183 )]
184 pub ty: Option<String>,
185 #[serde(
189 alias = "BasePoint",
190 rename = "basePoints",
191 skip_serializing_if = "Vec::is_empty",
192 default
193 )]
194 pub base_points: Vec<EbCoordinate>,
195 #[serde(
199 alias = "Axes",
200 rename = "axes",
201 skip_serializing_if = "Option::is_none"
202 )]
203 pub axes: Option<EbAxes>,
204}
205
206#[derive(Debug, Clone, Serialize, Deserialize)]
207pub struct EbClassThresholdOfAverage {
208 #[serde(
210 alias = "ThresholdOfMinimum",
211 rename = "thresholdOfMinimum",
212 skip_serializing_if = "Option::is_none"
213 )]
214 pub threshold_of_minimum: Option<EbThreshold>,
215 #[serde(
217 alias = "ThresholdOfSignificantlyBelowNormal",
218 rename = "thresholdOfSignificantlyBelowNormal",
219 skip_serializing_if = "Option::is_none"
220 )]
221 pub threshold_of_significantly_below_normal: Option<EbThreshold>,
222 #[serde(
224 alias = "ThresholdOfBelowNormal",
225 rename = "thresholdOfBelowNormal",
226 skip_serializing_if = "Option::is_none"
227 )]
228 pub threshold_of_below_normal: Option<EbThreshold>,
229 #[serde(
231 alias = "ThresholdOfAboveNormal",
232 rename = "thresholdOfAboveNormal",
233 skip_serializing_if = "Option::is_none"
234 )]
235 pub threshold_of_above_normal: Option<EbThreshold>,
236 #[serde(
238 alias = "ThresholdOfSignificantlyAboveNormal",
239 rename = "thresholdOfSignificantlyAboveNormal",
240 skip_serializing_if = "Option::is_none"
241 )]
242 pub threshold_of_significantly_above_normal: Option<EbThreshold>,
243 #[serde(
245 alias = "ThresholdOfMaximum",
246 rename = "thresholdOfMaximum",
247 skip_serializing_if = "Option::is_none"
248 )]
249 pub threshold_of_maximum: Option<EbThreshold>,
250}
251
252#[derive(Debug, Clone, Serialize, Deserialize)]
253pub struct EbClimateFeature {
254 #[serde(
258 alias = "GeneralSituationText",
259 rename = "generalSituationTexts",
260 skip_serializing_if = "Vec::is_empty",
261 default
262 )]
263 pub general_situation_texts: Vec<EbReferableString>,
264 #[serde(
266 alias = "SignificantClimateElement",
267 rename = "significantClimateElements",
268 skip_serializing_if = "Vec::is_empty",
269 default
270 )]
271 pub significant_climate_elements: Vec<EbSignificantClimateElement>,
272}
273
274#[derive(Debug, Clone, Serialize, Deserialize)]
275pub struct EbClimateProbabilityValues {
276 #[serde(alias = "@kind", rename = "kind")]
278 pub kind: String,
279 #[serde(
283 alias = "@refID",
284 rename = "refID",
285 skip_serializing_if = "Option::is_none"
286 )]
287 pub ref_id: Option<u8>,
288 #[serde(
290 alias = "ProbabilityOfBelowNormal",
291 rename = "probabilityOfBelowNormal"
292 )]
293 pub probability_of_below_normal: EbProbability,
294 #[serde(alias = "ProbabilityOfNormal", rename = "probabilityOfNormal")]
296 pub probability_of_normal: EbProbability,
297 #[serde(
299 alias = "ProbabilityOfAboveNormal",
300 rename = "probabilityOfAboveNormal"
301 )]
302 pub probability_of_above_normal: EbProbability,
303}
304
305#[derive(Debug, Clone, Serialize, Deserialize)]
306pub struct EbComparison {
307 #[serde(
308 alias = "$text",
309 rename = "value",
310 skip_serializing_if = "Option::is_none"
311 )]
312 pub value: Option<f64>,
313 #[serde(alias = "@type", rename = "type")]
315 pub ty: String,
316 #[serde(
318 alias = "@unit",
319 rename = "unit",
320 skip_serializing_if = "Option::is_none"
321 )]
322 pub unit: Option<String>,
323 #[serde(
327 alias = "@refID",
328 rename = "refID",
329 skip_serializing_if = "Option::is_none"
330 )]
331 pub ref_id: Option<u8>,
332 #[serde(
336 alias = "@condition",
337 rename = "condition",
338 skip_serializing_if = "Option::is_none"
339 )]
340 pub condition: Option<String>,
341 #[serde(
345 alias = "@description",
346 rename = "description",
347 skip_serializing_if = "Option::is_none"
348 )]
349 pub description: Option<String>,
350}
351
352#[derive(Debug, Clone, Serialize, Deserialize)]
353pub struct EbCoordinate {
354 #[serde(
355 alias = "$text",
356 rename = "value",
357 default,
358 deserialize_with = "trim_string"
359 )]
360 pub value: String,
361 #[serde(
365 alias = "@type",
366 rename = "type",
367 skip_serializing_if = "Option::is_none"
368 )]
369 pub ty: Option<String>,
370 #[serde(
374 alias = "@datum",
375 rename = "datum",
376 skip_serializing_if = "Option::is_none"
377 )]
378 pub datum: Option<String>,
379 #[serde(
383 alias = "@condition",
384 rename = "condition",
385 skip_serializing_if = "Option::is_none"
386 )]
387 pub condition: Option<String>,
388 #[serde(
392 alias = "@description",
393 rename = "description",
394 skip_serializing_if = "Option::is_none"
395 )]
396 pub description: Option<String>,
397}
398
399#[derive(Debug, Clone, Serialize, Deserialize)]
400pub struct EbDateTime {
401 #[serde(alias = "$text", rename = "value")]
402 pub value: DateTime,
403 #[serde(
407 alias = "@type",
408 rename = "type",
409 skip_serializing_if = "Option::is_none"
410 )]
411 pub ty: Option<String>,
412 #[serde(
416 alias = "@significant",
417 rename = "significant",
418 skip_serializing_if = "Option::is_none"
419 )]
420 pub significant: Option<String>,
421 #[serde(
425 alias = "@precision",
426 rename = "precision",
427 skip_serializing_if = "Option::is_none"
428 )]
429 pub precision: Option<String>,
430 #[serde(
434 alias = "@dubious",
435 rename = "dubious",
436 skip_serializing_if = "Option::is_none"
437 )]
438 pub dubious: Option<String>,
439 #[serde(
443 alias = "@description",
444 rename = "description",
445 skip_serializing_if = "Option::is_none"
446 )]
447 pub description: Option<String>,
448}
449
450#[derive(Debug, Clone, Serialize, Deserialize)]
451pub struct EbDirection {
452 #[serde(
453 alias = "$text",
454 rename = "value",
455 default,
456 deserialize_with = "trim_string"
457 )]
458 pub value: String,
459 #[serde(alias = "@type", rename = "type")]
461 pub ty: String,
462 #[serde(
464 alias = "@unit",
465 rename = "unit",
466 skip_serializing_if = "Option::is_none"
467 )]
468 pub unit: Option<String>,
469 #[serde(
473 alias = "@condition",
474 rename = "condition",
475 skip_serializing_if = "Option::is_none"
476 )]
477 pub condition: Option<String>,
478 #[serde(
482 alias = "@description",
483 rename = "description",
484 skip_serializing_if = "Option::is_none"
485 )]
486 pub description: Option<String>,
487}
488
489#[derive(Debug, Clone, Serialize, Deserialize)]
490pub struct EbDischarge {
491 #[serde(
492 alias = "$text",
493 rename = "value",
494 skip_serializing_if = "Option::is_none"
495 )]
496 pub value: Option<f64>,
497 #[serde(alias = "@type", rename = "type")]
499 pub ty: String,
500 #[serde(
502 alias = "@unit",
503 rename = "unit",
504 skip_serializing_if = "Option::is_none"
505 )]
506 pub unit: Option<String>,
507 #[serde(
511 alias = "@refID",
512 rename = "refID",
513 skip_serializing_if = "Option::is_none"
514 )]
515 pub ref_id: Option<u8>,
516 #[serde(
520 alias = "@condition",
521 rename = "condition",
522 skip_serializing_if = "Option::is_none"
523 )]
524 pub condition: Option<String>,
525 #[serde(
529 alias = "@description",
530 rename = "description",
531 skip_serializing_if = "Option::is_none"
532 )]
533 pub description: Option<String>,
534}
535
536#[derive(Debug, Clone, Serialize, Deserialize)]
537pub struct EbFloodDepth {
538 #[serde(
539 alias = "$text",
540 rename = "value",
541 skip_serializing_if = "Option::is_none"
542 )]
543 pub value: Option<f64>,
544 #[serde(alias = "@type", rename = "type")]
546 pub ty: String,
547 #[serde(
549 alias = "@unit",
550 rename = "unit",
551 skip_serializing_if = "Option::is_none"
552 )]
553 pub unit: Option<String>,
554 #[serde(
558 alias = "@bound",
559 rename = "bound",
560 skip_serializing_if = "Option::is_none"
561 )]
562 pub bound: Option<String>,
563 #[serde(
567 alias = "@refID",
568 rename = "refID",
569 skip_serializing_if = "Option::is_none"
570 )]
571 pub ref_id: Option<u8>,
572 #[serde(
576 alias = "@condition",
577 rename = "condition",
578 skip_serializing_if = "Option::is_none"
579 )]
580 pub condition: Option<String>,
581 #[serde(
585 alias = "@description",
586 rename = "description",
587 skip_serializing_if = "Option::is_none"
588 )]
589 pub description: Option<String>,
590}
591
592#[derive(Debug, Clone, Serialize, Deserialize)]
593pub struct EbHumidity {
594 #[serde(
595 alias = "$text",
596 rename = "value",
597 skip_serializing_if = "Option::is_none"
598 )]
599 pub value: Option<f64>,
600 #[serde(alias = "@type", rename = "type")]
602 pub ty: String,
603 #[serde(
605 alias = "@unit",
606 rename = "unit",
607 skip_serializing_if = "Option::is_none"
608 )]
609 pub unit: Option<String>,
610 #[serde(
614 alias = "@refID",
615 rename = "refID",
616 skip_serializing_if = "Option::is_none"
617 )]
618 pub ref_id: Option<u8>,
619 #[serde(
623 alias = "@condition",
624 rename = "condition",
625 skip_serializing_if = "Option::is_none"
626 )]
627 pub condition: Option<String>,
628 #[serde(
632 alias = "@description",
633 rename = "description",
634 skip_serializing_if = "Option::is_none"
635 )]
636 pub description: Option<String>,
637}
638
639#[derive(Debug, Clone, Serialize, Deserialize)]
640pub struct EbIcing {
641 #[serde(
642 alias = "$text",
643 rename = "value",
644 default,
645 deserialize_with = "trim_string"
646 )]
647 pub value: String,
648 #[serde(alias = "@type", rename = "type")]
650 pub ty: String,
651 #[serde(
653 alias = "@unit",
654 rename = "unit",
655 skip_serializing_if = "Option::is_none"
656 )]
657 pub unit: Option<String>,
658 #[serde(
662 alias = "@refID",
663 rename = "refID",
664 skip_serializing_if = "Option::is_none"
665 )]
666 pub ref_id: Option<u8>,
667 #[serde(
671 alias = "@condition",
672 rename = "condition",
673 skip_serializing_if = "Option::is_none"
674 )]
675 pub condition: Option<String>,
676 #[serde(
680 alias = "@description",
681 rename = "description",
682 skip_serializing_if = "Option::is_none"
683 )]
684 pub description: Option<String>,
685}
686
687#[derive(Debug, Clone, Serialize, Deserialize)]
688pub struct EbIntensityClass {
689 #[serde(
690 alias = "$text",
691 rename = "value",
692 default,
693 deserialize_with = "trim_string"
694 )]
695 pub value: String,
696 #[serde(alias = "@type", rename = "type")]
698 pub ty: String,
699}
700
701#[derive(Debug, Clone, Serialize, Deserialize)]
702pub struct EbMagnitude {
703 #[serde(alias = "$text", rename = "value", deserialize_with = "float_or_null")]
704 pub value: f64,
705 #[serde(alias = "@type", rename = "type")]
709 pub ty: String,
710 #[serde(
714 alias = "@condition",
715 rename = "condition",
716 skip_serializing_if = "Option::is_none"
717 )]
718 pub condition: Option<String>,
719 #[serde(
723 alias = "@description",
724 rename = "description",
725 skip_serializing_if = "Option::is_none"
726 )]
727 pub description: Option<String>,
728}
729
730#[derive(Debug, Clone, Serialize, Deserialize)]
731pub struct EbPlumeDirection {
732 #[serde(
733 alias = "$text",
734 rename = "value",
735 default,
736 deserialize_with = "trim_string"
737 )]
738 pub value: String,
739 #[serde(
741 alias = "@type",
742 rename = "type",
743 skip_serializing_if = "Option::is_none"
744 )]
745 pub ty: Option<String>,
746 #[serde(
748 alias = "@unit",
749 rename = "unit",
750 skip_serializing_if = "Option::is_none"
751 )]
752 pub unit: Option<String>,
753 #[serde(
757 alias = "@condition",
758 rename = "condition",
759 skip_serializing_if = "Option::is_none"
760 )]
761 pub condition: Option<String>,
762 #[serde(
766 alias = "@description",
767 rename = "description",
768 skip_serializing_if = "Option::is_none"
769 )]
770 pub description: Option<String>,
771}
772
773#[derive(Debug, Clone, Serialize, Deserialize)]
774pub struct EbPlumeHeight {
775 #[serde(
776 alias = "$text",
777 rename = "value",
778 skip_serializing_if = "Option::is_none"
779 )]
780 pub value: Option<i64>,
781 #[serde(
783 alias = "@type",
784 rename = "type",
785 skip_serializing_if = "Option::is_none"
786 )]
787 pub ty: Option<String>,
788 #[serde(
790 alias = "@unit",
791 rename = "unit",
792 skip_serializing_if = "Option::is_none"
793 )]
794 pub unit: Option<String>,
795 #[serde(
799 alias = "@condition",
800 rename = "condition",
801 skip_serializing_if = "Option::is_none"
802 )]
803 pub condition: Option<String>,
804 #[serde(
808 alias = "@description",
809 rename = "description",
810 skip_serializing_if = "Option::is_none"
811 )]
812 pub description: Option<String>,
813}
814
815#[derive(Debug, Clone, Serialize, Deserialize)]
816pub struct EbPossibilityRankOfWarning {
817 #[serde(
818 alias = "$text",
819 rename = "value",
820 default,
821 deserialize_with = "trim_string"
822 )]
823 pub value: String,
824 #[serde(alias = "@type", rename = "type")]
826 pub ty: String,
827 #[serde(
831 alias = "@refID",
832 rename = "refID",
833 skip_serializing_if = "Option::is_none"
834 )]
835 pub ref_id: Option<u8>,
836 #[serde(
840 alias = "@condition",
841 rename = "condition",
842 skip_serializing_if = "Option::is_none"
843 )]
844 pub condition: Option<String>,
845 #[serde(
849 alias = "@description",
850 rename = "description",
851 skip_serializing_if = "Option::is_none"
852 )]
853 pub description: Option<String>,
854}
855
856#[derive(Debug, Clone, Serialize, Deserialize)]
857pub struct EbPrecipitation {
858 #[serde(
859 alias = "$text",
860 rename = "value",
861 skip_serializing_if = "Option::is_none"
862 )]
863 pub value: Option<f64>,
864 #[serde(alias = "@type", rename = "type")]
866 pub ty: String,
867 #[serde(
869 alias = "@unit",
870 rename = "unit",
871 skip_serializing_if = "Option::is_none"
872 )]
873 pub unit: Option<String>,
874 #[serde(
878 alias = "@refID",
879 rename = "refID",
880 skip_serializing_if = "Option::is_none"
881 )]
882 pub ref_id: Option<u8>,
883 #[serde(
887 alias = "@condition",
888 rename = "condition",
889 skip_serializing_if = "Option::is_none"
890 )]
891 pub condition: Option<String>,
892 #[serde(
896 alias = "@description",
897 rename = "description",
898 skip_serializing_if = "Option::is_none"
899 )]
900 pub description: Option<String>,
901}
902
903#[derive(Debug, Clone, Serialize, Deserialize)]
904pub struct EbPrecipitationBasedIndex {
905 #[serde(
906 alias = "$text",
907 rename = "value",
908 skip_serializing_if = "Option::is_none"
909 )]
910 pub value: Option<f64>,
911 #[serde(alias = "@type", rename = "type")]
913 pub ty: String,
914 #[serde(
916 alias = "@unit",
917 rename = "unit",
918 skip_serializing_if = "Option::is_none"
919 )]
920 pub unit: Option<String>,
921 #[serde(
925 alias = "@refID",
926 rename = "refID",
927 skip_serializing_if = "Option::is_none"
928 )]
929 pub ref_id: Option<u8>,
930 #[serde(
934 alias = "@condition",
935 rename = "condition",
936 skip_serializing_if = "Option::is_none"
937 )]
938 pub condition: Option<String>,
939 #[serde(
943 alias = "@description",
944 rename = "description",
945 skip_serializing_if = "Option::is_none"
946 )]
947 pub description: Option<String>,
948}
949
950#[derive(Debug, Clone, Serialize, Deserialize)]
951pub struct EbPressure {
952 #[serde(
953 alias = "$text",
954 rename = "value",
955 skip_serializing_if = "Option::is_none"
956 )]
957 pub value: Option<f64>,
958 #[serde(alias = "@type", rename = "type")]
960 pub ty: String,
961 #[serde(
963 alias = "@unit",
964 rename = "unit",
965 skip_serializing_if = "Option::is_none"
966 )]
967 pub unit: Option<String>,
968 #[serde(
972 alias = "@refID",
973 rename = "refID",
974 skip_serializing_if = "Option::is_none"
975 )]
976 pub ref_id: Option<u8>,
977 #[serde(
981 alias = "@condition",
982 rename = "condition",
983 skip_serializing_if = "Option::is_none"
984 )]
985 pub condition: Option<String>,
986 #[serde(
990 alias = "@description",
991 rename = "description",
992 skip_serializing_if = "Option::is_none"
993 )]
994 pub description: Option<String>,
995}
996
997#[derive(Debug, Clone, Serialize, Deserialize)]
998pub struct EbProbability {
999 #[serde(alias = "$text", rename = "value", deserialize_with = "float_or_null")]
1000 pub value: f64,
1001 #[serde(
1003 alias = "@unit",
1004 rename = "unit",
1005 skip_serializing_if = "Option::is_none"
1006 )]
1007 pub unit: Option<String>,
1008 #[serde(
1012 alias = "@bound",
1013 rename = "bound",
1014 skip_serializing_if = "Option::is_none"
1015 )]
1016 pub bound: Option<String>,
1017 #[serde(
1021 alias = "@significant",
1022 rename = "significant",
1023 skip_serializing_if = "Option::is_none"
1024 )]
1025 pub significant: Option<bool>,
1026}
1027
1028#[derive(Debug, Clone, Serialize, Deserialize)]
1029pub struct EbProbabilityOfAftershock {
1030 #[serde(alias = "$text", rename = "value", deserialize_with = "float_or_null")]
1031 pub value: f64,
1032 #[serde(alias = "@type", rename = "type")]
1034 pub ty: String,
1035 #[serde(alias = "@unit", rename = "unit")]
1039 pub unit: String,
1040}
1041
1042#[derive(Debug, Clone, Serialize, Deserialize)]
1043pub struct EbProbabilityOfPrecipitation {
1044 #[serde(
1045 alias = "$text",
1046 rename = "value",
1047 skip_serializing_if = "Option::is_none"
1048 )]
1049 pub value: Option<i64>,
1050 #[serde(alias = "@type", rename = "type")]
1052 pub ty: String,
1053 #[serde(
1055 alias = "@unit",
1056 rename = "unit",
1057 skip_serializing_if = "Option::is_none"
1058 )]
1059 pub unit: Option<String>,
1060 #[serde(
1064 alias = "@refID",
1065 rename = "refID",
1066 skip_serializing_if = "Option::is_none"
1067 )]
1068 pub ref_id: Option<u8>,
1069 #[serde(
1073 alias = "@condition",
1074 rename = "condition",
1075 skip_serializing_if = "Option::is_none"
1076 )]
1077 pub condition: Option<String>,
1078 #[serde(
1082 alias = "@description",
1083 rename = "description",
1084 skip_serializing_if = "Option::is_none"
1085 )]
1086 pub description: Option<String>,
1087}
1088
1089#[derive(Debug, Clone, Serialize, Deserialize)]
1090pub struct EbRadius {
1091 #[serde(
1092 alias = "$text",
1093 rename = "value",
1094 skip_serializing_if = "Option::is_none"
1095 )]
1096 pub value: Option<f64>,
1097 #[serde(alias = "@type", rename = "type")]
1099 pub ty: String,
1100 #[serde(
1102 alias = "@unit",
1103 rename = "unit",
1104 skip_serializing_if = "Option::is_none"
1105 )]
1106 pub unit: Option<String>,
1107 #[serde(
1111 alias = "@condition",
1112 rename = "condition",
1113 skip_serializing_if = "Option::is_none"
1114 )]
1115 pub condition: Option<String>,
1116 #[serde(
1120 alias = "@description",
1121 rename = "description",
1122 skip_serializing_if = "Option::is_none"
1123 )]
1124 pub description: Option<String>,
1125}
1126
1127#[derive(Debug, Clone, Serialize, Deserialize)]
1128pub struct EbReferableString {
1129 #[serde(
1130 alias = "$text",
1131 rename = "value",
1132 default,
1133 deserialize_with = "trim_string"
1134 )]
1135 pub value: String,
1136 #[serde(
1138 alias = "@type",
1139 rename = "type",
1140 skip_serializing_if = "Option::is_none"
1141 )]
1142 pub ty: Option<String>,
1143 #[serde(
1147 alias = "@refID",
1148 rename = "refID",
1149 skip_serializing_if = "Option::is_none"
1150 )]
1151 pub ref_id: Option<u8>,
1152}
1153
1154#[derive(Debug, Clone, Serialize, Deserialize)]
1155pub struct EbReliabilityClass {
1156 #[serde(
1157 alias = "$text",
1158 rename = "value",
1159 default,
1160 deserialize_with = "trim_string"
1161 )]
1162 pub value: String,
1163 #[serde(alias = "@type", rename = "type")]
1165 pub ty: String,
1166 #[serde(
1170 alias = "@refID",
1171 rename = "refID",
1172 skip_serializing_if = "Option::is_none"
1173 )]
1174 pub ref_id: Option<u8>,
1175 #[serde(
1179 alias = "@condition",
1180 rename = "condition",
1181 skip_serializing_if = "Option::is_none"
1182 )]
1183 pub condition: Option<String>,
1184}
1185
1186#[derive(Debug, Clone, Serialize, Deserialize)]
1187pub struct EbReliabilityValue {
1188 #[serde(
1189 alias = "$text",
1190 rename = "value",
1191 default,
1192 deserialize_with = "trim_string"
1193 )]
1194 pub value: String,
1195 #[serde(alias = "@type", rename = "type")]
1197 pub ty: String,
1198 #[serde(
1202 alias = "@refID",
1203 rename = "refID",
1204 skip_serializing_if = "Option::is_none"
1205 )]
1206 pub ref_id: Option<u8>,
1207 #[serde(
1211 alias = "@condition",
1212 rename = "condition",
1213 skip_serializing_if = "Option::is_none"
1214 )]
1215 pub condition: Option<String>,
1216}
1217
1218#[derive(Debug, Clone, Serialize, Deserialize)]
1219pub struct EbSeaIce {
1220 #[serde(
1221 alias = "$text",
1222 rename = "value",
1223 default,
1224 deserialize_with = "trim_string"
1225 )]
1226 pub value: String,
1227 #[serde(alias = "@type", rename = "type")]
1229 pub ty: String,
1230 #[serde(
1232 alias = "@unit",
1233 rename = "unit",
1234 skip_serializing_if = "Option::is_none"
1235 )]
1236 pub unit: Option<String>,
1237 #[serde(
1241 alias = "@refID",
1242 rename = "refID",
1243 skip_serializing_if = "Option::is_none"
1244 )]
1245 pub ref_id: Option<u8>,
1246 #[serde(
1250 alias = "@condition",
1251 rename = "condition",
1252 skip_serializing_if = "Option::is_none"
1253 )]
1254 pub condition: Option<String>,
1255 #[serde(
1259 alias = "@description",
1260 rename = "description",
1261 skip_serializing_if = "Option::is_none"
1262 )]
1263 pub description: Option<String>,
1264}
1265
1266#[derive(Debug, Clone, Serialize, Deserialize)]
1267pub struct EbSignificantClimateElement {
1268 #[serde(alias = "@kind", rename = "kind")]
1272 pub kind: String,
1273 #[serde(alias = "Text", rename = "texts")]
1277 pub texts: Vec<EbReferableString>,
1278 #[serde(
1282 alias = "ProbabilityOfBelowNormal",
1283 rename = "probabilityOfBelowNormal",
1284 skip_serializing_if = "Option::is_none"
1285 )]
1286 pub probability_of_below_normal: Option<EbProbability>,
1287 #[serde(
1291 alias = "ProbabilityOfNormal",
1292 rename = "probabilityOfNormal",
1293 skip_serializing_if = "Option::is_none"
1294 )]
1295 pub probability_of_normal: Option<EbProbability>,
1296 #[serde(
1300 alias = "ProbabilityOfAboveNormal",
1301 rename = "probabilityOfAboveNormal",
1302 skip_serializing_if = "Option::is_none"
1303 )]
1304 pub probability_of_above_normal: Option<EbProbability>,
1305 #[serde(
1309 alias = "ProbabilityOfSignificantlyBelowNormal",
1310 rename = "probabilityOfSignificantlyBelowNormal",
1311 skip_serializing_if = "Option::is_none"
1312 )]
1313 pub probability_of_significantly_below_normal: Option<EbProbability>,
1314 #[serde(
1318 alias = "ProbabilityOfSignificantlyAboveNormal",
1319 rename = "probabilityOfSignificantlyAboveNormal",
1320 skip_serializing_if = "Option::is_none"
1321 )]
1322 pub probability_of_significantly_above_normal: Option<EbProbability>,
1323 #[serde(
1325 alias = "ThresholdOfBelowNormal",
1326 rename = "thresholdOfBelowNormal",
1327 skip_serializing_if = "Option::is_none"
1328 )]
1329 pub threshold_of_below_normal: Option<EbThreshold>,
1330 #[serde(
1332 alias = "ThresholdOfAboveNormal",
1333 rename = "thresholdOfAboveNormal",
1334 skip_serializing_if = "Option::is_none"
1335 )]
1336 pub threshold_of_above_normal: Option<EbThreshold>,
1337 #[serde(
1339 alias = "ThresholdOfSignificantlyBelowNormal",
1340 rename = "thresholdOfSignificantlyBelowNormal",
1341 skip_serializing_if = "Option::is_none"
1342 )]
1343 pub threshold_of_significantly_below_normal: Option<EbThreshold>,
1344 #[serde(
1346 alias = "ThresholdOfSignificantlyAboveNormal",
1347 rename = "thresholdOfSignificantlyAboveNormal",
1348 skip_serializing_if = "Option::is_none"
1349 )]
1350 pub threshold_of_significantly_above_normal: Option<EbThreshold>,
1351}
1352
1353#[derive(Debug, Clone, Serialize, Deserialize)]
1354pub struct EbSnowDepth {
1355 #[serde(
1356 alias = "$text",
1357 rename = "value",
1358 skip_serializing_if = "Option::is_none"
1359 )]
1360 pub value: Option<f64>,
1361 #[serde(alias = "@type", rename = "type")]
1363 pub ty: String,
1364 #[serde(
1366 alias = "@unit",
1367 rename = "unit",
1368 skip_serializing_if = "Option::is_none"
1369 )]
1370 pub unit: Option<String>,
1371 #[serde(
1375 alias = "@refID",
1376 rename = "refID",
1377 skip_serializing_if = "Option::is_none"
1378 )]
1379 pub ref_id: Option<u8>,
1380 #[serde(
1384 alias = "@condition",
1385 rename = "condition",
1386 skip_serializing_if = "Option::is_none"
1387 )]
1388 pub condition: Option<String>,
1389 #[serde(
1393 alias = "@description",
1394 rename = "description",
1395 skip_serializing_if = "Option::is_none"
1396 )]
1397 pub description: Option<String>,
1398}
1399
1400#[derive(Debug, Clone, Serialize, Deserialize)]
1401pub struct EbSnowfallDepth {
1402 #[serde(
1403 alias = "$text",
1404 rename = "value",
1405 skip_serializing_if = "Option::is_none"
1406 )]
1407 pub value: Option<f64>,
1408 #[serde(alias = "@type", rename = "type")]
1410 pub ty: String,
1411 #[serde(
1413 alias = "@unit",
1414 rename = "unit",
1415 skip_serializing_if = "Option::is_none"
1416 )]
1417 pub unit: Option<String>,
1418 #[serde(
1422 alias = "@refID",
1423 rename = "refID",
1424 skip_serializing_if = "Option::is_none"
1425 )]
1426 pub ref_id: Option<u8>,
1427 #[serde(
1431 alias = "@condition",
1432 rename = "condition",
1433 skip_serializing_if = "Option::is_none"
1434 )]
1435 pub condition: Option<String>,
1436 #[serde(
1440 alias = "@description",
1441 rename = "description",
1442 skip_serializing_if = "Option::is_none"
1443 )]
1444 pub description: Option<String>,
1445}
1446
1447#[derive(Debug, Clone, Serialize, Deserialize)]
1448pub struct EbSolarZenithAngle {
1449 #[serde(alias = "$text", rename = "value", deserialize_with = "float_or_null")]
1450 pub value: f64,
1451 #[serde(
1453 alias = "@unit",
1454 rename = "unit",
1455 skip_serializing_if = "Option::is_none"
1456 )]
1457 pub unit: Option<String>,
1458 #[serde(
1462 alias = "@refID",
1463 rename = "refID",
1464 skip_serializing_if = "Option::is_none"
1465 )]
1466 pub ref_id: Option<u8>,
1467 #[serde(
1471 alias = "@condition",
1472 rename = "condition",
1473 skip_serializing_if = "Option::is_none"
1474 )]
1475 pub condition: Option<String>,
1476}
1477
1478#[derive(Debug, Clone, Serialize, Deserialize)]
1479pub struct EbSpeed {
1480 #[serde(
1481 alias = "$text",
1482 rename = "value",
1483 skip_serializing_if = "Option::is_none"
1484 )]
1485 pub value: Option<f64>,
1486 #[serde(alias = "@type", rename = "type")]
1488 pub ty: String,
1489 #[serde(
1491 alias = "@unit",
1492 rename = "unit",
1493 skip_serializing_if = "Option::is_none"
1494 )]
1495 pub unit: Option<String>,
1496 #[serde(
1500 alias = "@condition",
1501 rename = "condition",
1502 skip_serializing_if = "Option::is_none"
1503 )]
1504 pub condition: Option<String>,
1505 #[serde(
1509 alias = "@description",
1510 rename = "description",
1511 skip_serializing_if = "Option::is_none"
1512 )]
1513 pub description: Option<String>,
1514}
1515
1516#[derive(Debug, Clone, Serialize, Deserialize)]
1517pub struct EbSunshine {
1518 #[serde(
1519 alias = "$text",
1520 rename = "value",
1521 skip_serializing_if = "Option::is_none"
1522 )]
1523 pub value: Option<f64>,
1524 #[serde(alias = "@type", rename = "type")]
1526 pub ty: String,
1527 #[serde(
1529 alias = "@unit",
1530 rename = "unit",
1531 skip_serializing_if = "Option::is_none"
1532 )]
1533 pub unit: Option<String>,
1534 #[serde(
1538 alias = "@refID",
1539 rename = "refID",
1540 skip_serializing_if = "Option::is_none"
1541 )]
1542 pub ref_id: Option<u8>,
1543 #[serde(
1547 alias = "@condition",
1548 rename = "condition",
1549 skip_serializing_if = "Option::is_none"
1550 )]
1551 pub condition: Option<String>,
1552 #[serde(
1556 alias = "@description",
1557 rename = "description",
1558 skip_serializing_if = "Option::is_none"
1559 )]
1560 pub description: Option<String>,
1561}
1562
1563#[derive(Debug, Clone, Serialize, Deserialize)]
1564pub struct EbSynopsis {
1565 #[serde(
1566 alias = "$text",
1567 rename = "value",
1568 default,
1569 deserialize_with = "trim_string"
1570 )]
1571 pub value: String,
1572 #[serde(alias = "@type", rename = "type")]
1574 pub ty: String,
1575}
1576
1577#[derive(Debug, Clone, Serialize, Deserialize)]
1578pub struct EbTemperature {
1579 #[serde(
1580 alias = "$text",
1581 rename = "value",
1582 skip_serializing_if = "Option::is_none"
1583 )]
1584 pub value: Option<f64>,
1585 #[serde(alias = "@type", rename = "type")]
1587 pub ty: String,
1588 #[serde(
1590 alias = "@unit",
1591 rename = "unit",
1592 skip_serializing_if = "Option::is_none"
1593 )]
1594 pub unit: Option<String>,
1595 #[serde(
1599 alias = "@refID",
1600 rename = "refID",
1601 skip_serializing_if = "Option::is_none"
1602 )]
1603 pub ref_id: Option<u8>,
1604 #[serde(
1608 alias = "@condition",
1609 rename = "condition",
1610 skip_serializing_if = "Option::is_none"
1611 )]
1612 pub condition: Option<String>,
1613 #[serde(
1617 alias = "@description",
1618 rename = "description",
1619 skip_serializing_if = "Option::is_none"
1620 )]
1621 pub description: Option<String>,
1622}
1623
1624#[derive(Debug, Clone, Serialize, Deserialize)]
1625pub struct EbThreshold {
1626 #[serde(alias = "$text", rename = "value", deserialize_with = "float_or_null")]
1627 pub value: f64,
1628 #[serde(
1630 alias = "@type",
1631 rename = "type",
1632 skip_serializing_if = "Option::is_none"
1633 )]
1634 pub ty: Option<String>,
1635 #[serde(
1637 alias = "@unit",
1638 rename = "unit",
1639 skip_serializing_if = "Option::is_none"
1640 )]
1641 pub unit: Option<String>,
1642 #[serde(
1646 alias = "@description",
1647 rename = "description",
1648 skip_serializing_if = "Option::is_none"
1649 )]
1650 pub description: Option<String>,
1651 #[serde(
1655 alias = "@bound",
1656 rename = "bound",
1657 skip_serializing_if = "Option::is_none"
1658 )]
1659 pub bound: Option<String>,
1660}
1661
1662#[derive(Debug, Clone, Serialize, Deserialize)]
1663pub struct EbTidalLevel {
1664 #[serde(
1665 alias = "$text",
1666 rename = "value",
1667 skip_serializing_if = "Option::is_none"
1668 )]
1669 pub value: Option<f64>,
1670 #[serde(alias = "@type", rename = "type")]
1672 pub ty: String,
1673 #[serde(
1675 alias = "@unit",
1676 rename = "unit",
1677 skip_serializing_if = "Option::is_none"
1678 )]
1679 pub unit: Option<String>,
1680 #[serde(
1684 alias = "@refID",
1685 rename = "refID",
1686 skip_serializing_if = "Option::is_none"
1687 )]
1688 pub ref_id: Option<u8>,
1689 #[serde(
1693 alias = "@condition",
1694 rename = "condition",
1695 skip_serializing_if = "Option::is_none"
1696 )]
1697 pub condition: Option<String>,
1698 #[serde(
1702 alias = "@description",
1703 rename = "description",
1704 skip_serializing_if = "Option::is_none"
1705 )]
1706 pub description: Option<String>,
1707}
1708
1709#[derive(Debug, Clone, Serialize, Deserialize)]
1710pub struct EbTidalPeriod {
1711 #[serde(
1712 alias = "$text",
1713 rename = "value",
1714 skip_serializing_if = "Option::is_none"
1715 )]
1716 pub value: Option<f64>,
1717 #[serde(alias = "@type", rename = "type")]
1719 pub ty: String,
1720 #[serde(
1722 alias = "@unit",
1723 rename = "unit",
1724 skip_serializing_if = "Option::is_none"
1725 )]
1726 pub unit: Option<String>,
1727 #[serde(
1731 alias = "@refID",
1732 rename = "refID",
1733 skip_serializing_if = "Option::is_none"
1734 )]
1735 pub ref_id: Option<u8>,
1736 #[serde(
1740 alias = "@condition",
1741 rename = "condition",
1742 skip_serializing_if = "Option::is_none"
1743 )]
1744 pub condition: Option<String>,
1745 #[serde(
1749 alias = "@description",
1750 rename = "description",
1751 skip_serializing_if = "Option::is_none"
1752 )]
1753 pub description: Option<String>,
1754}
1755
1756#[derive(Debug, Clone, Serialize, Deserialize)]
1757pub struct EbTsunamiHeight {
1758 #[serde(alias = "$text", rename = "value", deserialize_with = "float_or_null")]
1759 pub value: f64,
1760 #[serde(alias = "@type", rename = "type")]
1762 pub ty: String,
1763 #[serde(alias = "@unit", rename = "unit")]
1765 pub unit: String,
1766 #[serde(
1770 alias = "@condition",
1771 rename = "condition",
1772 skip_serializing_if = "Option::is_none"
1773 )]
1774 pub condition: Option<String>,
1775 #[serde(
1779 alias = "@description",
1780 rename = "description",
1781 skip_serializing_if = "Option::is_none"
1782 )]
1783 pub description: Option<String>,
1784}
1785
1786#[derive(Debug, Clone, Serialize, Deserialize)]
1787pub struct EbTyphoonClass {
1788 #[serde(
1789 alias = "$text",
1790 rename = "value",
1791 default,
1792 deserialize_with = "trim_string"
1793 )]
1794 pub value: String,
1795 #[serde(alias = "@type", rename = "type")]
1797 pub ty: String,
1798}
1799
1800#[derive(Debug, Clone, Serialize, Deserialize)]
1801pub struct EbUvIndex {
1802 #[serde(
1803 alias = "$text",
1804 rename = "value",
1805 skip_serializing_if = "Option::is_none"
1806 )]
1807 pub value: Option<f64>,
1808 #[serde(
1810 alias = "@type",
1811 rename = "type",
1812 skip_serializing_if = "Option::is_none"
1813 )]
1814 pub ty: Option<String>,
1815 #[serde(
1819 alias = "@refID",
1820 rename = "refID",
1821 skip_serializing_if = "Option::is_none"
1822 )]
1823 pub ref_id: Option<u8>,
1824 #[serde(
1828 alias = "@condition",
1829 rename = "condition",
1830 skip_serializing_if = "Option::is_none"
1831 )]
1832 pub condition: Option<String>,
1833 #[serde(
1837 alias = "@description",
1838 rename = "description",
1839 skip_serializing_if = "Option::is_none"
1840 )]
1841 pub description: Option<String>,
1842}
1843
1844#[derive(Debug, Clone, Serialize, Deserialize)]
1845pub struct EbVisibility {
1846 #[serde(
1847 alias = "$text",
1848 rename = "value",
1849 skip_serializing_if = "Option::is_none"
1850 )]
1851 pub value: Option<f64>,
1852 #[serde(alias = "@type", rename = "type")]
1854 pub ty: String,
1855 #[serde(
1857 alias = "@unit",
1858 rename = "unit",
1859 skip_serializing_if = "Option::is_none"
1860 )]
1861 pub unit: Option<String>,
1862 #[serde(
1866 alias = "@refID",
1867 rename = "refID",
1868 skip_serializing_if = "Option::is_none"
1869 )]
1870 pub ref_id: Option<u8>,
1871 #[serde(
1875 alias = "@condition",
1876 rename = "condition",
1877 skip_serializing_if = "Option::is_none"
1878 )]
1879 pub condition: Option<String>,
1880 #[serde(
1884 alias = "@description",
1885 rename = "description",
1886 skip_serializing_if = "Option::is_none"
1887 )]
1888 pub description: Option<String>,
1889}
1890
1891#[derive(Debug, Clone, Serialize, Deserialize)]
1892pub struct EbWaterLevel {
1893 #[serde(
1894 alias = "$text",
1895 rename = "value",
1896 skip_serializing_if = "Option::is_none"
1897 )]
1898 pub value: Option<f64>,
1899 #[serde(alias = "@type", rename = "type")]
1901 pub ty: String,
1902 #[serde(
1904 alias = "@unit",
1905 rename = "unit",
1906 skip_serializing_if = "Option::is_none"
1907 )]
1908 pub unit: Option<String>,
1909 #[serde(
1913 alias = "@refID",
1914 rename = "refID",
1915 skip_serializing_if = "Option::is_none"
1916 )]
1917 pub ref_id: Option<u8>,
1918 #[serde(
1922 alias = "@condition",
1923 rename = "condition",
1924 skip_serializing_if = "Option::is_none"
1925 )]
1926 pub condition: Option<String>,
1927 #[serde(
1931 alias = "@description",
1932 rename = "description",
1933 skip_serializing_if = "Option::is_none"
1934 )]
1935 pub description: Option<String>,
1936}
1937
1938#[derive(Debug, Clone, Serialize, Deserialize)]
1939pub struct EbWaveHeight {
1940 #[serde(
1941 alias = "$text",
1942 rename = "value",
1943 skip_serializing_if = "Option::is_none"
1944 )]
1945 pub value: Option<f64>,
1946 #[serde(alias = "@type", rename = "type")]
1948 pub ty: String,
1949 #[serde(
1951 alias = "@unit",
1952 rename = "unit",
1953 skip_serializing_if = "Option::is_none"
1954 )]
1955 pub unit: Option<String>,
1956 #[serde(
1960 alias = "@refID",
1961 rename = "refID",
1962 skip_serializing_if = "Option::is_none"
1963 )]
1964 pub ref_id: Option<u8>,
1965 #[serde(
1969 alias = "@condition",
1970 rename = "condition",
1971 skip_serializing_if = "Option::is_none"
1972 )]
1973 pub condition: Option<String>,
1974 #[serde(
1978 alias = "@description",
1979 rename = "description",
1980 skip_serializing_if = "Option::is_none"
1981 )]
1982 pub description: Option<String>,
1983}
1984
1985#[derive(Debug, Clone, Serialize, Deserialize)]
1986pub struct EbWeather {
1987 #[serde(
1988 alias = "$text",
1989 rename = "value",
1990 default,
1991 deserialize_with = "trim_string"
1992 )]
1993 pub value: String,
1994 #[serde(alias = "@type", rename = "type")]
1996 pub ty: String,
1997 #[serde(
2001 alias = "@refID",
2002 rename = "refID",
2003 skip_serializing_if = "Option::is_none"
2004 )]
2005 pub ref_id: Option<u8>,
2006 #[serde(
2010 alias = "@condition",
2011 rename = "condition",
2012 skip_serializing_if = "Option::is_none"
2013 )]
2014 pub condition: Option<String>,
2015 #[serde(
2019 alias = "@description",
2020 rename = "description",
2021 skip_serializing_if = "Option::is_none"
2022 )]
2023 pub description: Option<String>,
2024}
2025
2026#[derive(Debug, Clone, Serialize, Deserialize)]
2027pub struct EbWeatherCode {
2028 #[serde(
2029 alias = "$text",
2030 rename = "value",
2031 skip_serializing_if = "Option::is_none"
2032 )]
2033 pub value: Option<i64>,
2034 #[serde(alias = "@type", rename = "type")]
2036 pub ty: String,
2037 #[serde(
2041 alias = "@refID",
2042 rename = "refID",
2043 skip_serializing_if = "Option::is_none"
2044 )]
2045 pub ref_id: Option<u8>,
2046 #[serde(
2050 alias = "@condition",
2051 rename = "condition",
2052 skip_serializing_if = "Option::is_none"
2053 )]
2054 pub condition: Option<String>,
2055 #[serde(
2059 alias = "@description",
2060 rename = "description",
2061 skip_serializing_if = "Option::is_none"
2062 )]
2063 pub description: Option<String>,
2064}
2065
2066#[derive(Debug, Clone, Serialize, Deserialize)]
2067pub struct EbWeatherForecastProbability {
2068 #[serde(alias = "$text", rename = "value", deserialize_with = "float_or_null")]
2069 pub value: f64,
2070 #[serde(
2074 alias = "@refID",
2075 rename = "refID",
2076 skip_serializing_if = "Option::is_none"
2077 )]
2078 pub ref_id: Option<u8>,
2079 #[serde(
2081 alias = "@unit",
2082 rename = "unit",
2083 skip_serializing_if = "Option::is_none"
2084 )]
2085 pub unit: Option<String>,
2086}
2087
2088#[derive(Debug, Clone, Serialize, Deserialize)]
2089pub struct EbWindDegree {
2090 #[serde(
2091 alias = "$text",
2092 rename = "value",
2093 skip_serializing_if = "Option::is_none"
2094 )]
2095 pub value: Option<f64>,
2096 #[serde(alias = "@type", rename = "type")]
2098 pub ty: String,
2099 #[serde(
2101 alias = "@unit",
2102 rename = "unit",
2103 skip_serializing_if = "Option::is_none"
2104 )]
2105 pub unit: Option<String>,
2106 #[serde(
2110 alias = "@refID",
2111 rename = "refID",
2112 skip_serializing_if = "Option::is_none"
2113 )]
2114 pub ref_id: Option<u8>,
2115 #[serde(
2119 alias = "@condition",
2120 rename = "condition",
2121 skip_serializing_if = "Option::is_none"
2122 )]
2123 pub condition: Option<String>,
2124 #[serde(
2128 alias = "@description",
2129 rename = "description",
2130 skip_serializing_if = "Option::is_none"
2131 )]
2132 pub description: Option<String>,
2133}
2134
2135#[derive(Debug, Clone, Serialize, Deserialize)]
2136pub struct EbWindDirection {
2137 #[serde(
2138 alias = "$text",
2139 rename = "value",
2140 default,
2141 deserialize_with = "trim_string"
2142 )]
2143 pub value: String,
2144 #[serde(alias = "@type", rename = "type")]
2146 pub ty: String,
2147 #[serde(
2149 alias = "@unit",
2150 rename = "unit",
2151 skip_serializing_if = "Option::is_none"
2152 )]
2153 pub unit: Option<String>,
2154 #[serde(
2158 alias = "@refID",
2159 rename = "refID",
2160 skip_serializing_if = "Option::is_none"
2161 )]
2162 pub ref_id: Option<u8>,
2163 #[serde(
2167 alias = "@condition",
2168 rename = "condition",
2169 skip_serializing_if = "Option::is_none"
2170 )]
2171 pub condition: Option<String>,
2172 #[serde(
2176 alias = "@description",
2177 rename = "description",
2178 skip_serializing_if = "Option::is_none"
2179 )]
2180 pub description: Option<String>,
2181}
2182
2183#[derive(Debug, Clone, Serialize, Deserialize)]
2184pub struct EbWindScale {
2185 #[serde(
2186 alias = "$text",
2187 rename = "value",
2188 skip_serializing_if = "Option::is_none"
2189 )]
2190 pub value: Option<i64>,
2191 #[serde(alias = "@type", rename = "type")]
2193 pub ty: String,
2194 #[serde(
2196 alias = "@unit",
2197 rename = "unit",
2198 skip_serializing_if = "Option::is_none"
2199 )]
2200 pub unit: Option<String>,
2201 #[serde(
2205 alias = "@refID",
2206 rename = "refID",
2207 skip_serializing_if = "Option::is_none"
2208 )]
2209 pub ref_id: Option<u8>,
2210 #[serde(
2214 alias = "@condition",
2215 rename = "condition",
2216 skip_serializing_if = "Option::is_none"
2217 )]
2218 pub condition: Option<String>,
2219 #[serde(
2223 alias = "@description",
2224 rename = "description",
2225 skip_serializing_if = "Option::is_none"
2226 )]
2227 pub description: Option<String>,
2228}
2229
2230#[derive(Debug, Clone, Serialize, Deserialize)]
2231pub struct EbWindSpeed {
2232 #[serde(
2233 alias = "$text",
2234 rename = "value",
2235 skip_serializing_if = "Option::is_none"
2236 )]
2237 pub value: Option<f64>,
2238 #[serde(alias = "@type", rename = "type")]
2240 pub ty: String,
2241 #[serde(
2243 alias = "@unit",
2244 rename = "unit",
2245 skip_serializing_if = "Option::is_none"
2246 )]
2247 pub unit: Option<String>,
2248 #[serde(
2252 alias = "@refID",
2253 rename = "refID",
2254 skip_serializing_if = "Option::is_none"
2255 )]
2256 pub ref_id: Option<u8>,
2257 #[serde(
2261 alias = "@condition",
2262 rename = "condition",
2263 skip_serializing_if = "Option::is_none"
2264 )]
2265 pub condition: Option<String>,
2266 #[serde(
2270 alias = "@description",
2271 rename = "description",
2272 skip_serializing_if = "Option::is_none"
2273 )]
2274 pub description: Option<String>,
2275}
2276
2277#[derive(Debug, Clone, Serialize, Deserialize)]
2278pub struct IbInformation {
2279 #[serde(alias = "@type", rename = "type")]
2283 pub ty: String,
2284 #[serde(alias = "Item", rename = "items")]
2288 pub items: Vec<IbItem>,
2289}
2290
2291#[derive(Debug, Clone, Serialize, Deserialize)]
2292pub struct IbArea {
2293 #[serde(alias = "Name", rename = "name", deserialize_with = "trim_string")]
2297 pub name: String,
2298 #[serde(
2302 alias = "Code",
2303 rename = "code",
2304 skip_serializing_if = "Option::is_none",
2305 deserialize_with = "trim_opt_string",
2306 default
2307 )]
2308 pub code: Option<String>,
2309 #[serde(
2313 alias = "Circle",
2314 rename = "circles",
2315 skip_serializing_if = "Vec::is_empty",
2316 default
2317 )]
2318 pub circles: Vec<EbCircle>,
2319 #[serde(
2321 alias = "Coordinate",
2322 rename = "coordinates",
2323 skip_serializing_if = "Vec::is_empty",
2324 default
2325 )]
2326 pub coordinates: Vec<EbCoordinate>,
2327 #[serde(
2331 alias = "Line",
2332 rename = "lines",
2333 skip_serializing_if = "Vec::is_empty",
2334 default
2335 )]
2336 pub lines: Vec<EbCoordinate>,
2337 #[serde(
2339 alias = "Polygon",
2340 rename = "polygons",
2341 skip_serializing_if = "Vec::is_empty",
2342 default
2343 )]
2344 pub polygons: Vec<EbCoordinate>,
2345}
2346
2347#[derive(Debug, Clone, Serialize, Deserialize)]
2348pub struct IbAreas {
2349 #[serde(alias = "@codeType", rename = "codeType")]
2353 pub code_type: String,
2354 #[serde(alias = "Area", rename = "areas")]
2358 pub areas: Vec<IbArea>,
2359}
2360
2361#[derive(Debug, Clone, Serialize, Deserialize)]
2362pub struct IbHead {
2363 #[serde(alias = "Title", rename = "title", deserialize_with = "trim_string")]
2367 pub title: String,
2368 #[serde(alias = "ReportDateTime", rename = "reportDateTime")]
2372 pub report_date_time: DateTime,
2373 #[serde(alias = "TargetDateTime", rename = "targetDateTime")]
2377 pub target_date_time: NullableDateTime,
2378 #[serde(
2380 alias = "TargetDTDubious",
2381 rename = "targetDTDubious",
2382 skip_serializing_if = "Option::is_none",
2383 deserialize_with = "trim_opt_string",
2384 default
2385 )]
2386 pub target_dt_dubious: Option<String>,
2387 #[serde(
2391 alias = "TargetDuration",
2392 rename = "targetDuration",
2393 skip_serializing_if = "Option::is_none"
2394 )]
2395 pub target_duration: Option<Duration>,
2396 #[serde(
2400 alias = "ValidDateTime",
2401 rename = "validDateTime",
2402 skip_serializing_if = "Option::is_none"
2403 )]
2404 pub valid_date_time: Option<DateTime>,
2405 #[serde(
2409 alias = "EventID",
2410 rename = "eventID",
2411 deserialize_with = "trim_string"
2412 )]
2413 pub event_id: String,
2414 #[serde(
2418 alias = "InfoType",
2419 rename = "infoType",
2420 deserialize_with = "trim_string"
2421 )]
2422 pub info_type: String,
2423 #[serde(alias = "Serial", rename = "serial", deserialize_with = "trim_string")]
2427 pub serial: String,
2428 #[serde(
2432 alias = "InfoKind",
2433 rename = "infoKind",
2434 deserialize_with = "trim_string"
2435 )]
2436 pub info_kind: String,
2437 #[serde(
2441 alias = "InfoKindVersion",
2442 rename = "infoKindVersion",
2443 deserialize_with = "trim_string"
2444 )]
2445 pub info_kind_version: String,
2446 #[serde(alias = "Headline", rename = "headline")]
2450 pub headline: IbHeadline,
2451}
2452
2453#[derive(Debug, Clone, Serialize, Deserialize)]
2454pub struct IbHeadline {
2455 #[serde(alias = "Text", rename = "text", deserialize_with = "trim_string")]
2459 pub text: String,
2460 #[serde(
2464 alias = "Information",
2465 rename = "informations",
2466 skip_serializing_if = "Vec::is_empty",
2467 default
2468 )]
2469 pub informations: Vec<IbInformation>,
2470}
2471
2472#[derive(Debug, Clone, Serialize, Deserialize)]
2473pub struct IbItem {
2474 #[serde(alias = "Kind", rename = "kinds")]
2476 pub kinds: Vec<IbKind>,
2477 #[serde(
2481 alias = "LastKind",
2482 rename = "lastKinds",
2483 skip_serializing_if = "Vec::is_empty",
2484 default
2485 )]
2486 pub last_kinds: Vec<IbKind>,
2487 #[serde(alias = "Areas", rename = "areas")]
2491 pub areas: IbAreas,
2492}
2493
2494#[derive(Debug, Clone, Serialize, Deserialize)]
2495pub struct IbKind {
2496 #[serde(alias = "Name", rename = "name", deserialize_with = "trim_string")]
2498 pub name: String,
2499 #[serde(
2501 alias = "Code",
2502 rename = "code",
2503 skip_serializing_if = "Option::is_none",
2504 deserialize_with = "trim_opt_string",
2505 default
2506 )]
2507 pub code: Option<String>,
2508 #[serde(
2512 alias = "Condition",
2513 rename = "condition",
2514 skip_serializing_if = "Option::is_none",
2515 deserialize_with = "trim_opt_string",
2516 default
2517 )]
2518 pub condition: Option<String>,
2519}
2520
2521#[derive(Debug, Clone, Serialize, Deserialize)]
2522pub struct MeteAddition {
2523 #[serde(alias = "Note", rename = "notes")]
2527 pub notes: Vec<String>,
2528}
2529
2530#[derive(Debug, Clone, Serialize, Deserialize)]
2531pub struct MeteAdditionalInfo {
2532 #[serde(
2536 alias = "ObservationAddition",
2537 rename = "observationAddition",
2538 skip_serializing_if = "Option::is_none"
2539 )]
2540 pub observation_addition: Option<MeteObservationAddition>,
2541 #[serde(
2545 alias = "ClimateForecastAddition",
2546 rename = "climateForecastAddition",
2547 skip_serializing_if = "Option::is_none"
2548 )]
2549 pub climate_forecast_addition: Option<MeteClimateForecastAddition>,
2550 #[serde(
2554 alias = "FloodForecastAddition",
2555 rename = "floodForecastAddition",
2556 skip_serializing_if = "Option::is_none"
2557 )]
2558 pub flood_forecast_addition: Option<MeteFloodForecastAddition>,
2559 #[serde(
2563 alias = "TidalWarningAddition",
2564 rename = "tidalWarningAdditions",
2565 skip_serializing_if = "Vec::is_empty",
2566 default
2567 )]
2568 pub tidal_warning_additions: Vec<MeteTidalWarningAddition>,
2569}
2570
2571#[derive(Debug, Clone, Serialize, Deserialize)]
2572pub struct MeteArea {
2573 #[serde(
2577 alias = "@codeType",
2578 rename = "codeType",
2579 skip_serializing_if = "Option::is_none"
2580 )]
2581 pub code_type: Option<String>,
2582 #[serde(alias = "Name", rename = "name", deserialize_with = "trim_string")]
2586 pub name: String,
2587 #[serde(
2591 alias = "Code",
2592 rename = "code",
2593 skip_serializing_if = "Option::is_none",
2594 deserialize_with = "trim_opt_string",
2595 default
2596 )]
2597 pub code: Option<String>,
2598 #[serde(
2600 alias = "Prefecture",
2601 rename = "prefecture",
2602 skip_serializing_if = "Option::is_none"
2603 )]
2604 pub prefecture: Option<MetePrefectureCity>,
2605 #[serde(
2609 alias = "PrefectureCode",
2610 rename = "prefectureCode",
2611 skip_serializing_if = "Option::is_none",
2612 deserialize_with = "trim_opt_string",
2613 default
2614 )]
2615 pub prefecture_code: Option<String>,
2616 #[serde(
2620 alias = "PrefectureList",
2621 rename = "prefectureList",
2622 skip_serializing_if = "Option::is_none"
2623 )]
2624 pub prefecture_list: Option<StringList>,
2625 #[serde(
2629 alias = "PrefectureCodeList",
2630 rename = "prefectureCodeList",
2631 skip_serializing_if = "Option::is_none"
2632 )]
2633 pub prefecture_code_list: Option<StringList>,
2634 #[serde(
2636 alias = "SubPrefecture",
2637 rename = "subPrefecture",
2638 skip_serializing_if = "Option::is_none",
2639 deserialize_with = "trim_opt_string",
2640 default
2641 )]
2642 pub sub_prefecture: Option<String>,
2643 #[serde(
2647 alias = "SubPrefectureCode",
2648 rename = "subPrefectureCode",
2649 skip_serializing_if = "Option::is_none",
2650 deserialize_with = "trim_opt_string",
2651 default
2652 )]
2653 pub sub_prefecture_code: Option<String>,
2654 #[serde(
2658 alias = "SubPrefectureList",
2659 rename = "subPrefectureList",
2660 skip_serializing_if = "Option::is_none"
2661 )]
2662 pub sub_prefecture_list: Option<StringList>,
2663 #[serde(
2667 alias = "SubPrefectureCodeList",
2668 rename = "subPrefectureCodeList",
2669 skip_serializing_if = "Option::is_none"
2670 )]
2671 pub sub_prefecture_code_list: Option<StringList>,
2672 #[serde(
2674 alias = "City",
2675 rename = "city",
2676 skip_serializing_if = "Option::is_none"
2677 )]
2678 pub city: Option<MetePrefectureCity>,
2679 #[serde(
2683 alias = "CityCode",
2684 rename = "cityCode",
2685 skip_serializing_if = "Option::is_none",
2686 deserialize_with = "trim_opt_string",
2687 default
2688 )]
2689 pub city_code: Option<String>,
2690 #[serde(
2694 alias = "CityList",
2695 rename = "cityList",
2696 skip_serializing_if = "Option::is_none"
2697 )]
2698 pub city_list: Option<StringList>,
2699 #[serde(
2703 alias = "CityCodeList",
2704 rename = "cityCodeList",
2705 skip_serializing_if = "Option::is_none"
2706 )]
2707 pub city_code_list: Option<StringList>,
2708 #[serde(
2710 alias = "SubCity",
2711 rename = "subCity",
2712 skip_serializing_if = "Option::is_none",
2713 deserialize_with = "trim_opt_string",
2714 default
2715 )]
2716 pub sub_city: Option<String>,
2717 #[serde(
2721 alias = "SubCityCode",
2722 rename = "subCityCode",
2723 skip_serializing_if = "Option::is_none",
2724 deserialize_with = "trim_opt_string",
2725 default
2726 )]
2727 pub sub_city_code: Option<String>,
2728 #[serde(
2732 alias = "SubCityList",
2733 rename = "subCityList",
2734 skip_serializing_if = "Option::is_none"
2735 )]
2736 pub sub_city_list: Option<StringList>,
2737 #[serde(
2741 alias = "SubCityCodeList",
2742 rename = "subCityCodeList",
2743 skip_serializing_if = "Option::is_none"
2744 )]
2745 pub sub_city_code_list: Option<StringList>,
2746 #[serde(
2750 alias = "CodeList",
2751 rename = "codeList",
2752 skip_serializing_if = "Option::is_none"
2753 )]
2754 pub code_list: Option<StringList>,
2755 #[serde(
2759 alias = "Circle",
2760 rename = "circles",
2761 skip_serializing_if = "Vec::is_empty",
2762 default
2763 )]
2764 pub circles: Vec<EbCircle>,
2765 #[serde(
2767 alias = "Coordinate",
2768 rename = "coordinates",
2769 skip_serializing_if = "Vec::is_empty",
2770 default
2771 )]
2772 pub coordinates: Vec<EbCoordinate>,
2773 #[serde(
2777 alias = "Line",
2778 rename = "lines",
2779 skip_serializing_if = "Vec::is_empty",
2780 default
2781 )]
2782 pub lines: Vec<EbCoordinate>,
2783 #[serde(
2785 alias = "Polygon",
2786 rename = "polygons",
2787 skip_serializing_if = "Vec::is_empty",
2788 default
2789 )]
2790 pub polygons: Vec<EbCoordinate>,
2791 #[serde(
2793 alias = "Location",
2794 rename = "location",
2795 skip_serializing_if = "Option::is_none",
2796 deserialize_with = "trim_opt_string",
2797 default
2798 )]
2799 pub location: Option<String>,
2800 #[serde(
2804 alias = "Status",
2805 rename = "status",
2806 skip_serializing_if = "Option::is_none"
2807 )]
2808 pub status: Option<String>,
2809}
2810
2811#[derive(Debug, Clone, Serialize, Deserialize)]
2812pub struct MeteAreas {
2813 #[serde(
2817 alias = "@codeType",
2818 rename = "codeType",
2819 skip_serializing_if = "Option::is_none"
2820 )]
2821 pub code_type: Option<String>,
2822 #[serde(alias = "Area", rename = "areas")]
2826 pub areas: Vec<MeteArea>,
2827}
2828
2829#[derive(Debug, Clone, Serialize, Deserialize)]
2830pub struct MeteAttention {
2831 #[serde(alias = "Note", rename = "notes")]
2835 pub notes: Vec<String>,
2836}
2837
2838#[derive(Debug, Clone, Serialize, Deserialize)]
2839pub struct MeteBaseCriteria {
2840 #[serde(
2844 alias = "Sentence",
2845 rename = "sentence",
2846 skip_serializing_if = "Option::is_none"
2847 )]
2848 pub sentence: Option<MeteSentence>,
2849 #[serde(
2853 alias = "CriteriaClass",
2854 rename = "criteriaClass",
2855 skip_serializing_if = "Option::is_none"
2856 )]
2857 pub criteria_class: Option<MeteCriteriaClass>,
2858 #[serde(
2862 alias = "Local",
2863 rename = "locals",
2864 skip_serializing_if = "Vec::is_empty",
2865 default
2866 )]
2867 pub locals: Vec<MeteLocalCriteria>,
2868 #[serde(
2872 alias = "Time",
2873 rename = "time",
2874 skip_serializing_if = "Option::is_none"
2875 )]
2876 pub time: Option<DateTime>,
2877 #[serde(
2879 alias = "Duration",
2880 rename = "duration",
2881 skip_serializing_if = "Option::is_none"
2882 )]
2883 pub duration: Option<Duration>,
2884 #[serde(
2888 alias = "Remark",
2889 rename = "remark",
2890 skip_serializing_if = "Option::is_none",
2891 deserialize_with = "trim_opt_string",
2892 default
2893 )]
2894 pub remark: Option<String>,
2895}
2896
2897#[derive(Debug, Clone, Serialize, Deserialize)]
2898pub struct MeteBaseEvent {
2899 #[serde(
2903 alias = "TimeModifier",
2904 rename = "timeModifier",
2905 skip_serializing_if = "Option::is_none",
2906 deserialize_with = "trim_opt_string",
2907 default
2908 )]
2909 pub time_modifier: Option<String>,
2910 #[serde(
2914 alias = "Sentence",
2915 rename = "sentence",
2916 skip_serializing_if = "Option::is_none"
2917 )]
2918 pub sentence: Option<MeteSentence>,
2919 #[serde(
2923 alias = "Local",
2924 rename = "locals",
2925 skip_serializing_if = "Vec::is_empty",
2926 default
2927 )]
2928 pub locals: Vec<MeteLocalEvent>,
2929 #[serde(
2931 alias = "Coordinate",
2932 rename = "coordinate",
2933 skip_serializing_if = "Option::is_none"
2934 )]
2935 pub coordinate: Option<MeteCoordinatePart>,
2936 #[serde(
2938 alias = "Location",
2939 rename = "location",
2940 skip_serializing_if = "Option::is_none",
2941 deserialize_with = "trim_opt_string",
2942 default
2943 )]
2944 pub location: Option<String>,
2945 #[serde(
2949 alias = "Event",
2950 rename = "events",
2951 skip_serializing_if = "Vec::is_empty",
2952 default
2953 )]
2954 pub events: Vec<MeteEvent>,
2955 #[serde(
2957 alias = "Remark",
2958 rename = "remark",
2959 skip_serializing_if = "Option::is_none",
2960 deserialize_with = "trim_opt_string",
2961 default
2962 )]
2963 pub remark: Option<String>,
2964}
2965
2966#[derive(Debug, Clone, Serialize, Deserialize)]
2967pub struct MeteBaseHumidity {
2968 #[serde(
2972 alias = "TimeModifier",
2973 rename = "timeModifier",
2974 skip_serializing_if = "Option::is_none",
2975 deserialize_with = "trim_opt_string",
2976 default
2977 )]
2978 pub time_modifier: Option<String>,
2979 #[serde(
2981 alias = "Humidity",
2982 rename = "humidities",
2983 skip_serializing_if = "Vec::is_empty",
2984 default
2985 )]
2986 pub humidities: Vec<EbHumidity>,
2987 #[serde(
2991 alias = "Local",
2992 rename = "locals",
2993 skip_serializing_if = "Vec::is_empty",
2994 default
2995 )]
2996 pub locals: Vec<MeteLocalHumidity>,
2997 #[serde(
3001 alias = "Time",
3002 rename = "time",
3003 skip_serializing_if = "Option::is_none"
3004 )]
3005 pub time: Option<DateTime>,
3006 #[serde(
3008 alias = "Remark",
3009 rename = "remark",
3010 skip_serializing_if = "Option::is_none",
3011 deserialize_with = "trim_opt_string",
3012 default
3013 )]
3014 pub remark: Option<String>,
3015}
3016
3017#[derive(Debug, Clone, Serialize, Deserialize)]
3018pub struct MeteBaseIcing {
3019 #[serde(
3023 alias = "TimeModifier",
3024 rename = "timeModifier",
3025 skip_serializing_if = "Option::is_none",
3026 deserialize_with = "trim_opt_string",
3027 default
3028 )]
3029 pub time_modifier: Option<String>,
3030 #[serde(
3032 alias = "Icing",
3033 rename = "icings",
3034 skip_serializing_if = "Vec::is_empty",
3035 default
3036 )]
3037 pub icings: Vec<EbIcing>,
3038 #[serde(
3042 alias = "Local",
3043 rename = "locals",
3044 skip_serializing_if = "Vec::is_empty",
3045 default
3046 )]
3047 pub locals: Vec<MeteLocalIcing>,
3048 #[serde(
3052 alias = "Time",
3053 rename = "time",
3054 skip_serializing_if = "Option::is_none"
3055 )]
3056 pub time: Option<DateTime>,
3057 #[serde(
3059 alias = "Remark",
3060 rename = "remark",
3061 skip_serializing_if = "Option::is_none",
3062 deserialize_with = "trim_opt_string",
3063 default
3064 )]
3065 pub remark: Option<String>,
3066}
3067
3068#[derive(Debug, Clone, Serialize, Deserialize)]
3069pub struct MeteBasePrecipitation {
3070 #[serde(
3074 alias = "TimeModifier",
3075 rename = "timeModifier",
3076 skip_serializing_if = "Option::is_none",
3077 deserialize_with = "trim_opt_string",
3078 default
3079 )]
3080 pub time_modifier: Option<String>,
3081 #[serde(
3083 alias = "Precipitation",
3084 rename = "precipitations",
3085 skip_serializing_if = "Vec::is_empty",
3086 default
3087 )]
3088 pub precipitations: Vec<EbPrecipitation>,
3089 #[serde(
3093 alias = "Local",
3094 rename = "locals",
3095 skip_serializing_if = "Vec::is_empty",
3096 default
3097 )]
3098 pub locals: Vec<MeteLocalPrecipitation>,
3099 #[serde(
3103 alias = "Time",
3104 rename = "time",
3105 skip_serializing_if = "Option::is_none"
3106 )]
3107 pub time: Option<DateTime>,
3108 #[serde(
3110 alias = "Remark",
3111 rename = "remark",
3112 skip_serializing_if = "Option::is_none",
3113 deserialize_with = "trim_opt_string",
3114 default
3115 )]
3116 pub remark: Option<String>,
3117}
3118
3119#[derive(Debug, Clone, Serialize, Deserialize)]
3120pub struct MeteBasePrecipitationBasedIndex {
3121 #[serde(
3125 alias = "TimeModifier",
3126 rename = "timeModifier",
3127 skip_serializing_if = "Option::is_none",
3128 deserialize_with = "trim_opt_string",
3129 default
3130 )]
3131 pub time_modifier: Option<String>,
3132 #[serde(
3134 alias = "PrecipitationBasedIndex",
3135 rename = "precipitationBasedIndexes",
3136 skip_serializing_if = "Vec::is_empty",
3137 default
3138 )]
3139 pub precipitation_based_indexes: Vec<EbPrecipitationBasedIndex>,
3140 #[serde(
3144 alias = "Local",
3145 rename = "locals",
3146 skip_serializing_if = "Vec::is_empty",
3147 default
3148 )]
3149 pub locals: Vec<MeteLocalPrecipitationBasedIndex>,
3150 #[serde(
3154 alias = "Time",
3155 rename = "time",
3156 skip_serializing_if = "Option::is_none"
3157 )]
3158 pub time: Option<DateTime>,
3159 #[serde(
3161 alias = "Remark",
3162 rename = "remark",
3163 skip_serializing_if = "Option::is_none",
3164 deserialize_with = "trim_opt_string",
3165 default
3166 )]
3167 pub remark: Option<String>,
3168}
3169
3170#[derive(Debug, Clone, Serialize, Deserialize)]
3171pub struct MeteBasePressure {
3172 #[serde(
3176 alias = "TimeModifier",
3177 rename = "timeModifier",
3178 skip_serializing_if = "Option::is_none",
3179 deserialize_with = "trim_opt_string",
3180 default
3181 )]
3182 pub time_modifier: Option<String>,
3183 #[serde(
3185 alias = "Pressure",
3186 rename = "pressures",
3187 skip_serializing_if = "Vec::is_empty",
3188 default
3189 )]
3190 pub pressures: Vec<EbPressure>,
3191 #[serde(
3195 alias = "Local",
3196 rename = "locals",
3197 skip_serializing_if = "Vec::is_empty",
3198 default
3199 )]
3200 pub locals: Vec<MeteLocalPressure>,
3201 #[serde(
3205 alias = "Time",
3206 rename = "time",
3207 skip_serializing_if = "Option::is_none"
3208 )]
3209 pub time: Option<DateTime>,
3210 #[serde(
3212 alias = "Remark",
3213 rename = "remark",
3214 skip_serializing_if = "Option::is_none",
3215 deserialize_with = "trim_opt_string",
3216 default
3217 )]
3218 pub remark: Option<String>,
3219}
3220
3221#[derive(Debug, Clone, Serialize, Deserialize)]
3222pub struct MeteBaseSeaIce {
3223 #[serde(
3227 alias = "TimeModifier",
3228 rename = "timeModifier",
3229 skip_serializing_if = "Option::is_none",
3230 deserialize_with = "trim_opt_string",
3231 default
3232 )]
3233 pub time_modifier: Option<String>,
3234 #[serde(
3236 alias = "SeaIce",
3237 rename = "seaIces",
3238 skip_serializing_if = "Vec::is_empty",
3239 default
3240 )]
3241 pub sea_ices: Vec<EbSeaIce>,
3242 #[serde(
3246 alias = "Local",
3247 rename = "locals",
3248 skip_serializing_if = "Vec::is_empty",
3249 default
3250 )]
3251 pub locals: Vec<MeteLocalSeaIce>,
3252 #[serde(
3256 alias = "Time",
3257 rename = "time",
3258 skip_serializing_if = "Option::is_none"
3259 )]
3260 pub time: Option<DateTime>,
3261 #[serde(
3263 alias = "Remark",
3264 rename = "remark",
3265 skip_serializing_if = "Option::is_none",
3266 deserialize_with = "trim_opt_string",
3267 default
3268 )]
3269 pub remark: Option<String>,
3270}
3271
3272#[derive(Debug, Clone, Serialize, Deserialize)]
3273pub struct MeteBaseSignificancy {
3274 #[serde(
3278 alias = "Significancy",
3279 rename = "significancies",
3280 skip_serializing_if = "Vec::is_empty",
3281 default
3282 )]
3283 pub significancies: Vec<MeteSignificancy>,
3284 #[serde(
3288 alias = "Sentence",
3289 rename = "sentence",
3290 skip_serializing_if = "Option::is_none"
3291 )]
3292 pub sentence: Option<MeteSentence>,
3293 #[serde(
3297 alias = "PeakTime",
3298 rename = "peakTime",
3299 skip_serializing_if = "Option::is_none"
3300 )]
3301 pub peak_time: Option<MeteForecastTerm>,
3302 #[serde(
3304 alias = "Attention",
3305 rename = "attention",
3306 skip_serializing_if = "Option::is_none"
3307 )]
3308 pub attention: Option<MeteAttention>,
3309 #[serde(
3311 alias = "Addition",
3312 rename = "addition",
3313 skip_serializing_if = "Option::is_none"
3314 )]
3315 pub addition: Option<MeteAddition>,
3316 #[serde(
3320 alias = "Local",
3321 rename = "locals",
3322 skip_serializing_if = "Vec::is_empty",
3323 default
3324 )]
3325 pub locals: Vec<MeteLocalSignificancy>,
3326}
3327
3328#[derive(Debug, Clone, Serialize, Deserialize)]
3329pub struct MeteBaseSnowDepth {
3330 #[serde(
3332 alias = "SnowDepth",
3333 rename = "snowDepths",
3334 skip_serializing_if = "Vec::is_empty",
3335 default
3336 )]
3337 pub snow_depths: Vec<EbSnowDepth>,
3338 #[serde(
3342 alias = "Local",
3343 rename = "locals",
3344 skip_serializing_if = "Vec::is_empty",
3345 default
3346 )]
3347 pub locals: Vec<MeteLocalSnowDepth>,
3348 #[serde(
3352 alias = "Time",
3353 rename = "time",
3354 skip_serializing_if = "Option::is_none"
3355 )]
3356 pub time: Option<DateTime>,
3357 #[serde(
3359 alias = "Remark",
3360 rename = "remark",
3361 skip_serializing_if = "Option::is_none",
3362 deserialize_with = "trim_opt_string",
3363 default
3364 )]
3365 pub remark: Option<String>,
3366}
3367
3368#[derive(Debug, Clone, Serialize, Deserialize)]
3369pub struct MeteBaseSnowfallDepth {
3370 #[serde(
3374 alias = "TimeModifier",
3375 rename = "timeModifier",
3376 skip_serializing_if = "Option::is_none",
3377 deserialize_with = "trim_opt_string",
3378 default
3379 )]
3380 pub time_modifier: Option<String>,
3381 #[serde(
3383 alias = "SnowfallDepth",
3384 rename = "snowfallDepths",
3385 skip_serializing_if = "Vec::is_empty",
3386 default
3387 )]
3388 pub snowfall_depths: Vec<EbSnowfallDepth>,
3389 #[serde(
3393 alias = "Local",
3394 rename = "locals",
3395 skip_serializing_if = "Vec::is_empty",
3396 default
3397 )]
3398 pub locals: Vec<MeteLocalSnowfallDepth>,
3399 #[serde(
3403 alias = "Time",
3404 rename = "time",
3405 skip_serializing_if = "Option::is_none"
3406 )]
3407 pub time: Option<DateTime>,
3408 #[serde(
3410 alias = "Remark",
3411 rename = "remark",
3412 skip_serializing_if = "Option::is_none",
3413 deserialize_with = "trim_opt_string",
3414 default
3415 )]
3416 pub remark: Option<String>,
3417}
3418
3419#[derive(Debug, Clone, Serialize, Deserialize)]
3420pub struct MeteBaseSunshine {
3421 #[serde(
3423 alias = "Sunshine",
3424 rename = "sunshines",
3425 skip_serializing_if = "Vec::is_empty",
3426 default
3427 )]
3428 pub sunshines: Vec<EbSunshine>,
3429 #[serde(
3433 alias = "Time",
3434 rename = "time",
3435 skip_serializing_if = "Option::is_none"
3436 )]
3437 pub time: Option<DateTime>,
3438 #[serde(
3440 alias = "Remark",
3441 rename = "remark",
3442 skip_serializing_if = "Option::is_none",
3443 deserialize_with = "trim_opt_string",
3444 default
3445 )]
3446 pub remark: Option<String>,
3447}
3448
3449#[derive(Debug, Clone, Serialize, Deserialize)]
3450pub struct MeteBaseTemperature {
3451 #[serde(
3455 alias = "TimeModifier",
3456 rename = "timeModifier",
3457 skip_serializing_if = "Option::is_none",
3458 deserialize_with = "trim_opt_string",
3459 default
3460 )]
3461 pub time_modifier: Option<String>,
3462 #[serde(
3464 alias = "Temperature",
3465 rename = "temperatures",
3466 skip_serializing_if = "Vec::is_empty",
3467 default
3468 )]
3469 pub temperatures: Vec<EbTemperature>,
3470 #[serde(
3474 alias = "Local",
3475 rename = "locals",
3476 skip_serializing_if = "Vec::is_empty",
3477 default
3478 )]
3479 pub locals: Vec<MeteLocalTemperature>,
3480 #[serde(
3484 alias = "Time",
3485 rename = "time",
3486 skip_serializing_if = "Option::is_none"
3487 )]
3488 pub time: Option<DateTime>,
3489 #[serde(
3491 alias = "Remark",
3492 rename = "remark",
3493 skip_serializing_if = "Option::is_none",
3494 deserialize_with = "trim_opt_string",
3495 default
3496 )]
3497 pub remark: Option<String>,
3498}
3499
3500#[derive(Debug, Clone, Serialize, Deserialize)]
3501pub struct MeteBaseTidalLevel {
3502 #[serde(
3506 alias = "TimeModifier",
3507 rename = "timeModifier",
3508 skip_serializing_if = "Option::is_none",
3509 deserialize_with = "trim_opt_string",
3510 default
3511 )]
3512 pub time_modifier: Option<String>,
3513 #[serde(
3515 alias = "TidalLevel",
3516 rename = "tidalLevels",
3517 skip_serializing_if = "Vec::is_empty",
3518 default
3519 )]
3520 pub tidal_levels: Vec<EbTidalLevel>,
3521 #[serde(
3525 alias = "TidalPeriod",
3526 rename = "tidalPeriods",
3527 skip_serializing_if = "Vec::is_empty",
3528 default
3529 )]
3530 pub tidal_periods: Vec<EbTidalPeriod>,
3531 #[serde(
3535 alias = "Local",
3536 rename = "locals",
3537 skip_serializing_if = "Vec::is_empty",
3538 default
3539 )]
3540 pub locals: Vec<MeteLocalTidalLevel>,
3541 #[serde(
3545 alias = "Time",
3546 rename = "time",
3547 skip_serializing_if = "Option::is_none"
3548 )]
3549 pub time: Option<DateTime>,
3550 #[serde(
3554 alias = "Sequence",
3555 rename = "sequences",
3556 skip_serializing_if = "Vec::is_empty",
3557 default
3558 )]
3559 pub sequences: Vec<MeteSequenceTidalLevel>,
3560 #[serde(
3562 alias = "Remark",
3563 rename = "remark",
3564 skip_serializing_if = "Option::is_none",
3565 deserialize_with = "trim_opt_string",
3566 default
3567 )]
3568 pub remark: Option<String>,
3569}
3570
3571#[derive(Debug, Clone, Serialize, Deserialize)]
3572pub struct MeteBaseVisibility {
3573 #[serde(
3577 alias = "TimeModifier",
3578 rename = "timeModifier",
3579 skip_serializing_if = "Option::is_none",
3580 deserialize_with = "trim_opt_string",
3581 default
3582 )]
3583 pub time_modifier: Option<String>,
3584 #[serde(
3586 alias = "Visibility",
3587 rename = "visibilities",
3588 skip_serializing_if = "Vec::is_empty",
3589 default
3590 )]
3591 pub visibilities: Vec<EbVisibility>,
3592 #[serde(
3596 alias = "Local",
3597 rename = "locals",
3598 skip_serializing_if = "Vec::is_empty",
3599 default
3600 )]
3601 pub locals: Vec<MeteLocalVisibility>,
3602 #[serde(
3606 alias = "Time",
3607 rename = "time",
3608 skip_serializing_if = "Option::is_none"
3609 )]
3610 pub time: Option<DateTime>,
3611 #[serde(
3613 alias = "Remark",
3614 rename = "remark",
3615 skip_serializing_if = "Option::is_none",
3616 deserialize_with = "trim_opt_string",
3617 default
3618 )]
3619 pub remark: Option<String>,
3620}
3621
3622#[derive(Debug, Clone, Serialize, Deserialize)]
3623pub struct MeteBaseWaveHeight {
3624 #[serde(
3628 alias = "TimeModifier",
3629 rename = "timeModifier",
3630 skip_serializing_if = "Option::is_none",
3631 deserialize_with = "trim_opt_string",
3632 default
3633 )]
3634 pub time_modifier: Option<String>,
3635 #[serde(
3637 alias = "WaveHeight",
3638 rename = "waveHeights",
3639 skip_serializing_if = "Vec::is_empty",
3640 default
3641 )]
3642 pub wave_heights: Vec<EbWaveHeight>,
3643 #[serde(
3647 alias = "Local",
3648 rename = "locals",
3649 skip_serializing_if = "Vec::is_empty",
3650 default
3651 )]
3652 pub locals: Vec<MeteLocalWaveHeight>,
3653 #[serde(
3657 alias = "Time",
3658 rename = "time",
3659 skip_serializing_if = "Option::is_none"
3660 )]
3661 pub time: Option<DateTime>,
3662 #[serde(
3664 alias = "Remark",
3665 rename = "remark",
3666 skip_serializing_if = "Option::is_none",
3667 deserialize_with = "trim_opt_string",
3668 default
3669 )]
3670 pub remark: Option<String>,
3671}
3672
3673#[derive(Debug, Clone, Serialize, Deserialize)]
3674pub struct MeteBaseWeather {
3675 #[serde(
3679 alias = "TimeModifier",
3680 rename = "timeModifier",
3681 skip_serializing_if = "Option::is_none",
3682 deserialize_with = "trim_opt_string",
3683 default
3684 )]
3685 pub time_modifier: Option<String>,
3686 #[serde(
3688 alias = "Weather",
3689 rename = "weathers",
3690 skip_serializing_if = "Vec::is_empty",
3691 default
3692 )]
3693 pub weathers: Vec<EbWeather>,
3694 #[serde(
3698 alias = "Local",
3699 rename = "locals",
3700 skip_serializing_if = "Vec::is_empty",
3701 default
3702 )]
3703 pub locals: Vec<MeteLocalWeather>,
3704 #[serde(
3708 alias = "Time",
3709 rename = "time",
3710 skip_serializing_if = "Option::is_none"
3711 )]
3712 pub time: Option<DateTime>,
3713 #[serde(
3715 alias = "Remark",
3716 rename = "remark",
3717 skip_serializing_if = "Option::is_none",
3718 deserialize_with = "trim_opt_string",
3719 default
3720 )]
3721 pub remark: Option<String>,
3722}
3723
3724#[derive(Debug, Clone, Serialize, Deserialize)]
3725pub struct MeteBaseWind {
3726 #[serde(
3730 alias = "TimeModifier",
3731 rename = "timeModifier",
3732 skip_serializing_if = "Option::is_none",
3733 deserialize_with = "trim_opt_string",
3734 default
3735 )]
3736 pub time_modifier: Option<String>,
3737 #[serde(
3739 alias = "WindDirection",
3740 rename = "windDirections",
3741 skip_serializing_if = "Vec::is_empty",
3742 default
3743 )]
3744 pub wind_directions: Vec<EbWindDirection>,
3745 #[serde(
3749 alias = "WindDegree",
3750 rename = "windDegrees",
3751 skip_serializing_if = "Vec::is_empty",
3752 default
3753 )]
3754 pub wind_degrees: Vec<EbWindDegree>,
3755 #[serde(
3757 alias = "WindSpeed",
3758 rename = "windSpeeds",
3759 skip_serializing_if = "Vec::is_empty",
3760 default
3761 )]
3762 pub wind_speeds: Vec<EbWindSpeed>,
3763 #[serde(
3765 alias = "WindScale",
3766 rename = "windScales",
3767 skip_serializing_if = "Vec::is_empty",
3768 default
3769 )]
3770 pub wind_scales: Vec<EbWindScale>,
3771 #[serde(
3775 alias = "Local",
3776 rename = "locals",
3777 skip_serializing_if = "Vec::is_empty",
3778 default
3779 )]
3780 pub locals: Vec<MeteLocalWind>,
3781 #[serde(
3785 alias = "Time",
3786 rename = "time",
3787 skip_serializing_if = "Option::is_none"
3788 )]
3789 pub time: Option<DateTime>,
3790 #[serde(
3792 alias = "Remark",
3793 rename = "remark",
3794 skip_serializing_if = "Option::is_none",
3795 deserialize_with = "trim_opt_string",
3796 default
3797 )]
3798 pub remark: Option<String>,
3799}
3800
3801#[derive(Debug, Clone, Serialize, Deserialize)]
3802pub struct MeteBaseWindDirection {
3803 #[serde(
3807 alias = "TimeModifier",
3808 rename = "timeModifier",
3809 skip_serializing_if = "Option::is_none",
3810 deserialize_with = "trim_opt_string",
3811 default
3812 )]
3813 pub time_modifier: Option<String>,
3814 #[serde(
3816 alias = "WindDirection",
3817 rename = "windDirections",
3818 skip_serializing_if = "Vec::is_empty",
3819 default
3820 )]
3821 pub wind_directions: Vec<EbWindDirection>,
3822 #[serde(
3826 alias = "Local",
3827 rename = "locals",
3828 skip_serializing_if = "Vec::is_empty",
3829 default
3830 )]
3831 pub locals: Vec<MeteLocalWindDirection>,
3832 #[serde(
3836 alias = "Time",
3837 rename = "time",
3838 skip_serializing_if = "Option::is_none"
3839 )]
3840 pub time: Option<DateTime>,
3841 #[serde(
3843 alias = "Remark",
3844 rename = "remark",
3845 skip_serializing_if = "Option::is_none",
3846 deserialize_with = "trim_opt_string",
3847 default
3848 )]
3849 pub remark: Option<String>,
3850}
3851
3852#[derive(Debug, Clone, Serialize, Deserialize)]
3853pub struct MeteBaseWindSpeed {
3854 #[serde(
3858 alias = "TimeModifier",
3859 rename = "timeModifier",
3860 skip_serializing_if = "Option::is_none",
3861 deserialize_with = "trim_opt_string",
3862 default
3863 )]
3864 pub time_modifier: Option<String>,
3865 #[serde(
3867 alias = "WindSpeed",
3868 rename = "windSpeeds",
3869 skip_serializing_if = "Vec::is_empty",
3870 default
3871 )]
3872 pub wind_speeds: Vec<EbWindSpeed>,
3873 #[serde(
3877 alias = "Local",
3878 rename = "locals",
3879 skip_serializing_if = "Vec::is_empty",
3880 default
3881 )]
3882 pub locals: Vec<MeteLocalWindSpeed>,
3883 #[serde(
3887 alias = "Time",
3888 rename = "time",
3889 skip_serializing_if = "Option::is_none"
3890 )]
3891 pub time: Option<DateTime>,
3892 #[serde(
3894 alias = "Remark",
3895 rename = "remark",
3896 skip_serializing_if = "Option::is_none",
3897 deserialize_with = "trim_opt_string",
3898 default
3899 )]
3900 pub remark: Option<String>,
3901}
3902
3903#[derive(Debug, Clone, Serialize, Deserialize)]
3904pub struct MeteBody {
3905 #[serde(
3907 alias = "TargetArea",
3908 rename = "targetArea",
3909 skip_serializing_if = "Option::is_none"
3910 )]
3911 pub target_area: Option<MeteArea>,
3912 #[serde(
3916 alias = "Notice",
3917 rename = "notices",
3918 skip_serializing_if = "Vec::is_empty",
3919 default
3920 )]
3921 pub notices: Vec<String>,
3922 #[serde(
3926 alias = "Warning",
3927 rename = "warnings",
3928 skip_serializing_if = "Vec::is_empty",
3929 default
3930 )]
3931 pub warnings: Vec<MeteWarning>,
3932 #[serde(
3936 alias = "MeteorologicalInfos",
3937 rename = "meteorologicalInfos",
3938 skip_serializing_if = "Vec::is_empty",
3939 default
3940 )]
3941 pub meteorological_infos: Vec<MeteMeteorologicalInfos>,
3942 #[serde(
3944 alias = "Comment",
3945 rename = "comment",
3946 skip_serializing_if = "Option::is_none"
3947 )]
3948 pub comment: Option<MeteComment>,
3949 #[serde(
3953 alias = "OfficeInfo",
3954 rename = "officeInfo",
3955 skip_serializing_if = "Option::is_none"
3956 )]
3957 pub office_info: Option<MeteOfficeInfo>,
3958 #[serde(
3962 alias = "AdditionalInfo",
3963 rename = "additionalInfo",
3964 skip_serializing_if = "Option::is_none"
3965 )]
3966 pub additional_info: Option<MeteAdditionalInfo>,
3967}
3968
3969#[derive(Debug, Clone, Serialize, Deserialize)]
3970pub struct MeteCenterPart {
3971 #[serde(
3975 alias = "Coordinate",
3976 rename = "coordinates",
3977 skip_serializing_if = "Vec::is_empty",
3978 default
3979 )]
3980 pub coordinates: Vec<EbCoordinate>,
3981 #[serde(
3985 alias = "ProbabilityCircle",
3986 rename = "probabilityCircles",
3987 skip_serializing_if = "Vec::is_empty",
3988 default
3989 )]
3990 pub probability_circles: Vec<EbCircle>,
3991 #[serde(
3995 alias = "Location",
3996 rename = "location",
3997 skip_serializing_if = "Option::is_none",
3998 deserialize_with = "trim_opt_string",
3999 default
4000 )]
4001 pub location: Option<String>,
4002 #[serde(
4006 alias = "Direction",
4007 rename = "directions",
4008 skip_serializing_if = "Vec::is_empty",
4009 default
4010 )]
4011 pub directions: Vec<EbDirection>,
4012 #[serde(
4016 alias = "Speed",
4017 rename = "speeds",
4018 skip_serializing_if = "Vec::is_empty",
4019 default
4020 )]
4021 pub speeds: Vec<EbSpeed>,
4022 #[serde(
4026 alias = "Pressure",
4027 rename = "pressure",
4028 skip_serializing_if = "Option::is_none"
4029 )]
4030 pub pressure: Option<EbPressure>,
4031 #[serde(
4035 alias = "Radius",
4036 rename = "radiuses",
4037 skip_serializing_if = "Vec::is_empty",
4038 default
4039 )]
4040 pub radiuses: Vec<EbRadius>,
4041 #[serde(
4045 alias = "Time",
4046 rename = "time",
4047 skip_serializing_if = "Option::is_none"
4048 )]
4049 pub time: Option<DateTime>,
4050 #[serde(
4052 alias = "Remark",
4053 rename = "remark",
4054 skip_serializing_if = "Option::is_none",
4055 deserialize_with = "trim_opt_string",
4056 default
4057 )]
4058 pub remark: Option<String>,
4059}
4060
4061#[derive(Debug, Clone, Serialize, Deserialize)]
4062pub struct MeteClassPart {
4063 #[serde(
4067 alias = "TyphoonClass",
4068 rename = "typhoonClass",
4069 skip_serializing_if = "Option::is_none"
4070 )]
4071 pub typhoon_class: Option<EbTyphoonClass>,
4072 #[serde(
4076 alias = "AreaClass",
4077 rename = "areaClass",
4078 skip_serializing_if = "Option::is_none"
4079 )]
4080 pub area_class: Option<EbAreaClass>,
4081 #[serde(
4085 alias = "IntensityClass",
4086 rename = "intensityClass",
4087 skip_serializing_if = "Option::is_none"
4088 )]
4089 pub intensity_class: Option<EbIntensityClass>,
4090 #[serde(
4094 alias = "Time",
4095 rename = "time",
4096 skip_serializing_if = "Option::is_none"
4097 )]
4098 pub time: Option<DateTime>,
4099 #[serde(
4101 alias = "Remark",
4102 rename = "remark",
4103 skip_serializing_if = "Option::is_none",
4104 deserialize_with = "trim_opt_string",
4105 default
4106 )]
4107 pub remark: Option<String>,
4108}
4109
4110#[derive(Debug, Clone, Serialize, Deserialize)]
4111pub struct MeteClimateForecastAddition {
4112 #[serde(
4114 alias = "TargetDateTimeNotice",
4115 rename = "targetDateTimeNotice",
4116 skip_serializing_if = "Option::is_none",
4117 deserialize_with = "trim_opt_string",
4118 default
4119 )]
4120 pub target_date_time_notice: Option<String>,
4121 #[serde(
4125 alias = "NextForecastSchedule",
4126 rename = "nextForecastSchedules",
4127 skip_serializing_if = "Vec::is_empty",
4128 default
4129 )]
4130 pub next_forecast_schedules: Vec<MeteForecastSchedule>,
4131 #[serde(
4133 alias = "NoticeOfSchedule",
4134 rename = "noticeOfSchedule",
4135 skip_serializing_if = "Option::is_none",
4136 deserialize_with = "trim_opt_string",
4137 default
4138 )]
4139 pub notice_of_schedule: Option<String>,
4140 #[serde(
4144 alias = "AdditionalNotice",
4145 rename = "additionalNotice",
4146 skip_serializing_if = "Option::is_none",
4147 deserialize_with = "trim_opt_string",
4148 default
4149 )]
4150 pub additional_notice: Option<String>,
4151}
4152
4153#[derive(Debug, Clone, Serialize, Deserialize)]
4154pub struct MeteClimateProbabilityValuesPart {
4155 #[serde(
4157 alias = "ClimateProbabilityValues",
4158 rename = "climateProbabilityValues"
4159 )]
4160 pub climate_probability_values: Vec<EbClimateProbabilityValues>,
4161}
4162
4163#[derive(Debug, Clone, Serialize, Deserialize)]
4164pub struct MeteClimateValuesPart {
4165 #[serde(alias = "@type", rename = "type")]
4167 pub ty: String,
4168 #[serde(
4172 alias = "Temperature",
4173 rename = "temperatures",
4174 skip_serializing_if = "Vec::is_empty",
4175 default
4176 )]
4177 pub temperatures: Vec<EbTemperature>,
4178 #[serde(
4180 alias = "Precipitation",
4181 rename = "precipitations",
4182 skip_serializing_if = "Vec::is_empty",
4183 default
4184 )]
4185 pub precipitations: Vec<EbPrecipitation>,
4186 #[serde(
4188 alias = "Sunshine",
4189 rename = "sunshines",
4190 skip_serializing_if = "Vec::is_empty",
4191 default
4192 )]
4193 pub sunshines: Vec<EbSunshine>,
4194 #[serde(
4196 alias = "SnowfallDepth",
4197 rename = "snowfallDepths",
4198 skip_serializing_if = "Vec::is_empty",
4199 default
4200 )]
4201 pub snowfall_depths: Vec<EbSnowfallDepth>,
4202 #[serde(
4204 alias = "SnowDepth",
4205 rename = "snowDepths",
4206 skip_serializing_if = "Vec::is_empty",
4207 default
4208 )]
4209 pub snow_depths: Vec<EbSnowDepth>,
4210 #[serde(
4212 alias = "Comparison",
4213 rename = "comparisons",
4214 skip_serializing_if = "Vec::is_empty",
4215 default
4216 )]
4217 pub comparisons: Vec<EbComparison>,
4218 #[serde(
4220 alias = "Remark",
4221 rename = "remark",
4222 skip_serializing_if = "Option::is_none",
4223 deserialize_with = "trim_opt_string",
4224 default
4225 )]
4226 pub remark: Option<String>,
4227}
4228
4229#[derive(Debug, Clone, Serialize, Deserialize)]
4230pub struct MeteComment {
4231 #[serde(alias = "Text", rename = "texts")]
4233 pub texts: Vec<MeteText>,
4234 #[serde(
4238 alias = "Code",
4239 rename = "codes",
4240 skip_serializing_if = "Option::is_none"
4241 )]
4242 pub codes: Option<StringList>,
4243}
4244
4245#[derive(Debug, Clone, Serialize, Deserialize)]
4246pub struct MeteCoordinatePart {
4247 #[serde(
4249 alias = "Coordinate",
4250 rename = "coordinates",
4251 skip_serializing_if = "Vec::is_empty",
4252 default
4253 )]
4254 pub coordinates: Vec<EbCoordinate>,
4255 #[serde(
4257 alias = "Line",
4258 rename = "lines",
4259 skip_serializing_if = "Vec::is_empty",
4260 default
4261 )]
4262 pub lines: Vec<EbCoordinate>,
4263 #[serde(
4265 alias = "Polygon",
4266 rename = "polygons",
4267 skip_serializing_if = "Vec::is_empty",
4268 default
4269 )]
4270 pub polygons: Vec<EbCoordinate>,
4271 #[serde(
4275 alias = "Time",
4276 rename = "time",
4277 skip_serializing_if = "Option::is_none"
4278 )]
4279 pub time: Option<DateTime>,
4280 #[serde(
4282 alias = "Remark",
4283 rename = "remark",
4284 skip_serializing_if = "Option::is_none",
4285 deserialize_with = "trim_opt_string",
4286 default
4287 )]
4288 pub remark: Option<String>,
4289}
4290
4291#[derive(Debug, Clone, Serialize, Deserialize)]
4292pub struct MeteCriteriaClass {
4293 #[serde(
4297 alias = "@type",
4298 rename = "type",
4299 skip_serializing_if = "Option::is_none"
4300 )]
4301 pub ty: Option<String>,
4302 #[serde(
4306 alias = "@refID",
4307 rename = "refID",
4308 skip_serializing_if = "Option::is_none"
4309 )]
4310 pub ref_id: Option<u8>,
4311 #[serde(alias = "Name", rename = "name", deserialize_with = "trim_string")]
4313 pub name: String,
4314 #[serde(alias = "Code", rename = "code", deserialize_with = "trim_string")]
4316 pub code: String,
4317 #[serde(
4321 alias = "Condition",
4322 rename = "condition",
4323 skip_serializing_if = "Option::is_none",
4324 deserialize_with = "trim_opt_string",
4325 default
4326 )]
4327 pub condition: Option<String>,
4328 #[serde(
4332 alias = "Remark",
4333 rename = "remark",
4334 skip_serializing_if = "Option::is_none",
4335 deserialize_with = "trim_opt_string",
4336 default
4337 )]
4338 pub remark: Option<String>,
4339}
4340
4341#[derive(Debug, Clone, Serialize, Deserialize)]
4342pub struct MeteCriteriaPeriod {
4343 #[serde(
4347 alias = "Sentence",
4348 rename = "sentence",
4349 skip_serializing_if = "Option::is_none"
4350 )]
4351 pub sentence: Option<MeteSentence>,
4352 #[serde(
4356 alias = "Base",
4357 rename = "base",
4358 skip_serializing_if = "Option::is_none"
4359 )]
4360 pub base: Option<MeteBaseCriteria>,
4361 #[serde(
4365 alias = "Temporary",
4366 rename = "temporaries",
4367 skip_serializing_if = "Vec::is_empty",
4368 default
4369 )]
4370 pub temporaries: Vec<MeteBaseCriteria>,
4371 #[serde(
4375 alias = "Becoming",
4376 rename = "becomings",
4377 skip_serializing_if = "Vec::is_empty",
4378 default
4379 )]
4380 pub becomings: Vec<MeteBaseCriteria>,
4381 #[serde(
4385 alias = "Local",
4386 rename = "locals",
4387 skip_serializing_if = "Vec::is_empty",
4388 default
4389 )]
4390 pub locals: Vec<MeteLocalCriteria>,
4391 #[serde(
4395 alias = "CriteriaClass",
4396 rename = "criteriaClass",
4397 skip_serializing_if = "Option::is_none"
4398 )]
4399 pub criteria_class: Option<MeteCriteriaClass>,
4400 #[serde(
4404 alias = "Time",
4405 rename = "time",
4406 skip_serializing_if = "Option::is_none"
4407 )]
4408 pub time: Option<DateTime>,
4409 #[serde(
4411 alias = "Duration",
4412 rename = "duration",
4413 skip_serializing_if = "Option::is_none"
4414 )]
4415 pub duration: Option<Duration>,
4416 #[serde(
4420 alias = "Remark",
4421 rename = "remark",
4422 skip_serializing_if = "Option::is_none",
4423 deserialize_with = "trim_opt_string",
4424 default
4425 )]
4426 pub remark: Option<String>,
4427}
4428
4429#[derive(Debug, Clone, Serialize, Deserialize)]
4430pub struct MeteDetailForecast {
4431 #[serde(
4435 alias = "WeatherForecastPart",
4436 rename = "weatherForecastParts",
4437 skip_serializing_if = "Vec::is_empty",
4438 default
4439 )]
4440 pub weather_forecast_parts: Vec<MeteWeatherForecastPart>,
4441 #[serde(
4445 alias = "PrecipitationForecastPart",
4446 rename = "precipitationForecastParts",
4447 skip_serializing_if = "Vec::is_empty",
4448 default
4449 )]
4450 pub precipitation_forecast_parts: Vec<MetePrecipitationPart>,
4451 #[serde(
4455 alias = "SnowfallDepthForecastPart",
4456 rename = "snowfallDepthForecastParts",
4457 skip_serializing_if = "Vec::is_empty",
4458 default
4459 )]
4460 pub snowfall_depth_forecast_parts: Vec<MeteSnowfallDepthPart>,
4461 #[serde(
4465 alias = "WindForecastPart",
4466 rename = "windForecastParts",
4467 skip_serializing_if = "Vec::is_empty",
4468 default
4469 )]
4470 pub wind_forecast_parts: Vec<MeteWindForecastPart>,
4471 #[serde(
4475 alias = "WaveHeightForecastPart",
4476 rename = "waveHeightForecastParts",
4477 skip_serializing_if = "Vec::is_empty",
4478 default
4479 )]
4480 pub wave_height_forecast_parts: Vec<MeteWaveHeightForecastPart>,
4481}
4482
4483#[derive(Debug, Clone, Serialize, Deserialize)]
4484pub struct MeteDischargePart {
4485 #[serde(
4487 alias = "Discharge",
4488 rename = "discharges",
4489 skip_serializing_if = "Vec::is_empty",
4490 default
4491 )]
4492 pub discharges: Vec<EbDischarge>,
4493}
4494
4495#[derive(Debug, Clone, Serialize, Deserialize)]
4496pub struct MeteEvent {
4497 #[serde(
4501 alias = "@type",
4502 rename = "type",
4503 skip_serializing_if = "Option::is_none"
4504 )]
4505 pub ty: Option<String>,
4506 #[serde(
4510 alias = "@refID",
4511 rename = "refID",
4512 skip_serializing_if = "Option::is_none"
4513 )]
4514 pub ref_id: Option<u8>,
4515 #[serde(
4519 alias = "Sentence",
4520 rename = "sentence",
4521 skip_serializing_if = "Option::is_none"
4522 )]
4523 pub sentence: Option<MeteSentence>,
4524 #[serde(
4528 alias = "EventName",
4529 rename = "eventNames",
4530 skip_serializing_if = "Vec::is_empty",
4531 default
4532 )]
4533 pub event_names: Vec<String>,
4534 #[serde(
4538 alias = "EventClass",
4539 rename = "eventClasses",
4540 skip_serializing_if = "Vec::is_empty",
4541 default
4542 )]
4543 pub event_classes: Vec<String>,
4544 #[serde(
4548 alias = "Time",
4549 rename = "times",
4550 skip_serializing_if = "Vec::is_empty",
4551 default
4552 )]
4553 pub times: Vec<MeteEventTime>,
4554 #[serde(
4558 alias = "Duration",
4559 rename = "durations",
4560 skip_serializing_if = "Vec::is_empty",
4561 default
4562 )]
4563 pub durations: Vec<MeteEventDuration>,
4564 #[serde(
4566 alias = "Remark",
4567 rename = "remark",
4568 skip_serializing_if = "Option::is_none",
4569 deserialize_with = "trim_opt_string",
4570 default
4571 )]
4572 pub remark: Option<String>,
4573}
4574
4575#[derive(Debug, Clone, Serialize, Deserialize)]
4576pub struct MeteEventDate {
4577 #[serde(alias = "$text", rename = "value")]
4578 pub value: String,
4579 #[serde(
4580 alias = "@description",
4581 rename = "description",
4582 skip_serializing_if = "Option::is_none"
4583 )]
4584 pub description: Option<String>,
4585 #[serde(
4586 alias = "@dubious",
4587 rename = "dubious",
4588 skip_serializing_if = "Option::is_none"
4589 )]
4590 pub dubious: Option<String>,
4591}
4592
4593#[derive(Debug, Clone, Serialize, Deserialize)]
4594pub struct MeteEventDatePart {
4595 #[serde(
4597 alias = "Date",
4598 rename = "dates",
4599 skip_serializing_if = "Vec::is_empty",
4600 default
4601 )]
4602 pub dates: Vec<MeteEventDate>,
4603 #[serde(
4607 alias = "Normal",
4608 rename = "normals",
4609 skip_serializing_if = "Vec::is_empty",
4610 default
4611 )]
4612 pub normals: Vec<MeteEventDate>,
4613 #[serde(
4617 alias = "LastYear",
4618 rename = "lastYears",
4619 skip_serializing_if = "Vec::is_empty",
4620 default
4621 )]
4622 pub last_years: Vec<MeteEventDate>,
4623 #[serde(
4625 alias = "Remark",
4626 rename = "remark",
4627 skip_serializing_if = "Option::is_none",
4628 deserialize_with = "trim_opt_string",
4629 default
4630 )]
4631 pub remark: Option<String>,
4632}
4633
4634#[derive(Debug, Clone, Serialize, Deserialize)]
4635pub struct MeteEventDuration {
4636 #[serde(alias = "$text", rename = "value")]
4637 pub value: Duration,
4638 #[serde(
4642 alias = "@type",
4643 rename = "type",
4644 skip_serializing_if = "Option::is_none"
4645 )]
4646 pub ty: Option<String>,
4647}
4648
4649#[derive(Debug, Clone, Serialize, Deserialize)]
4650pub struct MeteEventPart {
4651 #[serde(
4655 alias = "Sentence",
4656 rename = "sentence",
4657 skip_serializing_if = "Option::is_none"
4658 )]
4659 pub sentence: Option<MeteSentence>,
4660 #[serde(
4664 alias = "Base",
4665 rename = "base",
4666 skip_serializing_if = "Option::is_none"
4667 )]
4668 pub base: Option<MeteBaseEvent>,
4669 #[serde(
4673 alias = "Temporary",
4674 rename = "temporaries",
4675 skip_serializing_if = "Vec::is_empty",
4676 default
4677 )]
4678 pub temporaries: Vec<MeteBaseEvent>,
4679 #[serde(
4683 alias = "Becoming",
4684 rename = "becomings",
4685 skip_serializing_if = "Vec::is_empty",
4686 default
4687 )]
4688 pub becomings: Vec<MeteBaseEvent>,
4689 #[serde(
4693 alias = "Local",
4694 rename = "locals",
4695 skip_serializing_if = "Vec::is_empty",
4696 default
4697 )]
4698 pub locals: Vec<MeteLocalEvent>,
4699 #[serde(
4701 alias = "Coordinate",
4702 rename = "coordinate",
4703 skip_serializing_if = "Option::is_none"
4704 )]
4705 pub coordinate: Option<MeteCoordinatePart>,
4706 #[serde(
4710 alias = "Location",
4711 rename = "location",
4712 skip_serializing_if = "Option::is_none",
4713 deserialize_with = "trim_opt_string",
4714 default
4715 )]
4716 pub location: Option<String>,
4717 #[serde(
4721 alias = "Event",
4722 rename = "events",
4723 skip_serializing_if = "Vec::is_empty",
4724 default
4725 )]
4726 pub events: Vec<MeteEvent>,
4727 #[serde(
4729 alias = "Remark",
4730 rename = "remark",
4731 skip_serializing_if = "Option::is_none",
4732 deserialize_with = "trim_opt_string",
4733 default
4734 )]
4735 pub remark: Option<String>,
4736}
4737
4738#[derive(Debug, Clone, Serialize, Deserialize)]
4739pub struct MeteEventTime {
4740 #[serde(alias = "$text", rename = "value")]
4741 pub value: DateTime,
4742 #[serde(
4746 alias = "@type",
4747 rename = "type",
4748 skip_serializing_if = "Option::is_none"
4749 )]
4750 pub ty: Option<String>,
4751}
4752
4753#[derive(Debug, Clone, Serialize, Deserialize)]
4754pub struct MeteFiftyKtWindProbabilityPart {
4755 #[serde(alias = "FiftyKtWindProbability", rename = "fiftyKtWindProbabilities")]
4757 pub fifty_kt_wind_probabilities: Vec<EbWeatherForecastProbability>,
4758}
4759
4760#[derive(Debug, Clone, Serialize, Deserialize)]
4761pub struct MeteFloodAssumptionPart {
4762 #[serde(
4764 alias = "FloodAssumptionArea",
4765 rename = "floodAssumptionArea",
4766 skip_serializing_if = "Option::is_none",
4767 deserialize_with = "trim_opt_string",
4768 default
4769 )]
4770 pub flood_assumption_area: Option<String>,
4771 #[serde(
4773 alias = "AttainmentTime",
4774 rename = "attainmentTime",
4775 skip_serializing_if = "Option::is_none"
4776 )]
4777 pub attainment_time: Option<EbDateTime>,
4778 #[serde(
4780 alias = "FloodDepth",
4781 rename = "floodDepths",
4782 skip_serializing_if = "Vec::is_empty",
4783 default
4784 )]
4785 pub flood_depths: Vec<EbFloodDepth>,
4786 #[serde(
4788 alias = "AttainmentDeepestTime",
4789 rename = "attainmentDeepestTime",
4790 skip_serializing_if = "Option::is_none"
4791 )]
4792 pub attainment_deepest_time: Option<EbDateTime>,
4793}
4794
4795#[derive(Debug, Clone, Serialize, Deserialize)]
4796pub struct MeteFloodAssumptionTable {
4797 #[serde(alias = "Area", rename = "area")]
4801 pub area: MeteArea,
4802 #[serde(
4806 alias = "FloodAssumptionPart",
4807 rename = "floodAssumptionParts",
4808 skip_serializing_if = "Vec::is_empty",
4809 default
4810 )]
4811 pub flood_assumption_parts: Vec<MeteFloodAssumptionPart>,
4812 #[serde(
4814 alias = "Remark",
4815 rename = "remark",
4816 skip_serializing_if = "Option::is_none",
4817 deserialize_with = "trim_opt_string",
4818 default
4819 )]
4820 pub remark: Option<String>,
4821}
4822
4823#[derive(Debug, Clone, Serialize, Deserialize)]
4824pub struct MeteFloodForecastAddition {
4825 #[serde(alias = "HydrometricStationPart", rename = "hydrometricStationParts")]
4829 pub hydrometric_station_parts: Vec<MeteHydrometricStationPart>,
4830}
4831
4832#[derive(Debug, Clone, Serialize, Deserialize)]
4833pub struct MeteForecastSchedule {
4834 #[serde(alias = "@target", rename = "target")]
4835 pub target: String,
4836 #[serde(
4840 alias = "Text",
4841 rename = "text",
4842 skip_serializing_if = "Option::is_none",
4843 deserialize_with = "trim_opt_string",
4844 default
4845 )]
4846 pub text: Option<String>,
4847 #[serde(
4849 alias = "DateTime",
4850 rename = "dateTime",
4851 skip_serializing_if = "Option::is_none"
4852 )]
4853 pub date_time: Option<DateTime>,
4854}
4855
4856#[derive(Debug, Clone, Serialize, Deserialize)]
4857pub struct MeteForecastTerm {
4858 #[serde(
4862 alias = "Date",
4863 rename = "date",
4864 skip_serializing_if = "Option::is_none",
4865 deserialize_with = "trim_opt_string",
4866 default
4867 )]
4868 pub date: Option<String>,
4869 #[serde(
4873 alias = "Term",
4874 rename = "term",
4875 skip_serializing_if = "Option::is_none",
4876 deserialize_with = "trim_opt_string",
4877 default
4878 )]
4879 pub term: Option<String>,
4880}
4881
4882#[derive(Debug, Clone, Serialize, Deserialize)]
4883pub struct MeteHumidityPart {
4884 #[serde(
4888 alias = "Sentence",
4889 rename = "sentence",
4890 skip_serializing_if = "Option::is_none"
4891 )]
4892 pub sentence: Option<MeteSentence>,
4893 #[serde(
4897 alias = "Base",
4898 rename = "base",
4899 skip_serializing_if = "Option::is_none"
4900 )]
4901 pub base: Option<MeteBaseHumidity>,
4902 #[serde(
4906 alias = "Temporary",
4907 rename = "temporaries",
4908 skip_serializing_if = "Vec::is_empty",
4909 default
4910 )]
4911 pub temporaries: Vec<MeteBaseHumidity>,
4912 #[serde(
4916 alias = "Becoming",
4917 rename = "becomings",
4918 skip_serializing_if = "Vec::is_empty",
4919 default
4920 )]
4921 pub becomings: Vec<MeteBaseHumidity>,
4922 #[serde(
4926 alias = "SubArea",
4927 rename = "subAreas",
4928 skip_serializing_if = "Vec::is_empty",
4929 default
4930 )]
4931 pub sub_areas: Vec<MeteSubAreaHumidity>,
4932 #[serde(
4934 alias = "Humidity",
4935 rename = "humidities",
4936 skip_serializing_if = "Vec::is_empty",
4937 default
4938 )]
4939 pub humidities: Vec<EbHumidity>,
4940 #[serde(
4944 alias = "Time",
4945 rename = "time",
4946 skip_serializing_if = "Option::is_none"
4947 )]
4948 pub time: Option<DateTime>,
4949 #[serde(
4951 alias = "Remark",
4952 rename = "remark",
4953 skip_serializing_if = "Option::is_none",
4954 deserialize_with = "trim_opt_string",
4955 default
4956 )]
4957 pub remark: Option<String>,
4958}
4959
4960#[derive(Debug, Clone, Serialize, Deserialize)]
4961pub struct MeteHydrometricStationCriteria {
4962 #[serde(
4964 alias = "WaterLevel",
4965 rename = "waterLevels",
4966 skip_serializing_if = "Vec::is_empty",
4967 default
4968 )]
4969 pub water_levels: Vec<EbWaterLevel>,
4970 #[serde(
4972 alias = "Discharge",
4973 rename = "discharges",
4974 skip_serializing_if = "Vec::is_empty",
4975 default
4976 )]
4977 pub discharges: Vec<EbDischarge>,
4978}
4979
4980#[derive(Debug, Clone, Serialize, Deserialize)]
4981pub struct MeteHydrometricStationPart {
4982 #[serde(alias = "Area", rename = "area")]
4984 pub area: MeteArea,
4985 #[serde(
4989 alias = "ChargeSection",
4990 rename = "chargeSections",
4991 skip_serializing_if = "Vec::is_empty",
4992 default
4993 )]
4994 pub charge_sections: Vec<String>,
4995 #[serde(
4999 alias = "Criteria",
5000 rename = "criterias",
5001 skip_serializing_if = "Vec::is_empty",
5002 default
5003 )]
5004 pub criterias: Vec<MeteHydrometricStationCriteria>,
5005 #[serde(
5007 alias = "Remark",
5008 rename = "remark",
5009 skip_serializing_if = "Option::is_none",
5010 deserialize_with = "trim_opt_string",
5011 default
5012 )]
5013 pub remark: Option<String>,
5014}
5015
5016#[derive(Debug, Clone, Serialize, Deserialize)]
5017pub struct MeteIcingPart {
5018 #[serde(
5022 alias = "Sentence",
5023 rename = "sentence",
5024 skip_serializing_if = "Option::is_none"
5025 )]
5026 pub sentence: Option<MeteSentence>,
5027 #[serde(
5031 alias = "Base",
5032 rename = "base",
5033 skip_serializing_if = "Option::is_none"
5034 )]
5035 pub base: Option<MeteBaseIcing>,
5036 #[serde(
5040 alias = "Temporary",
5041 rename = "temporaries",
5042 skip_serializing_if = "Vec::is_empty",
5043 default
5044 )]
5045 pub temporaries: Vec<MeteBaseIcing>,
5046 #[serde(
5050 alias = "Becoming",
5051 rename = "becomings",
5052 skip_serializing_if = "Vec::is_empty",
5053 default
5054 )]
5055 pub becomings: Vec<MeteBaseIcing>,
5056 #[serde(
5060 alias = "SubArea",
5061 rename = "subAreas",
5062 skip_serializing_if = "Vec::is_empty",
5063 default
5064 )]
5065 pub sub_areas: Vec<MeteSubAreaIcing>,
5066 #[serde(
5068 alias = "Icing",
5069 rename = "icings",
5070 skip_serializing_if = "Vec::is_empty",
5071 default
5072 )]
5073 pub icings: Vec<EbIcing>,
5074 #[serde(
5078 alias = "Time",
5079 rename = "time",
5080 skip_serializing_if = "Option::is_none"
5081 )]
5082 pub time: Option<DateTime>,
5083 #[serde(
5085 alias = "Remark",
5086 rename = "remark",
5087 skip_serializing_if = "Option::is_none",
5088 deserialize_with = "trim_opt_string",
5089 default
5090 )]
5091 pub remark: Option<String>,
5092}
5093
5094#[derive(Debug, Clone, Serialize, Deserialize)]
5095pub struct MeteIsobarPart {
5096 #[serde(alias = "Pressure", rename = "pressure")]
5100 pub pressure: EbPressure,
5101 #[serde(
5105 alias = "Line",
5106 rename = "line",
5107 skip_serializing_if = "Option::is_none"
5108 )]
5109 pub line: Option<EbCoordinate>,
5110 #[serde(
5114 alias = "Polygon",
5115 rename = "polygon",
5116 skip_serializing_if = "Option::is_none"
5117 )]
5118 pub polygon: Option<EbCoordinate>,
5119}
5120
5121#[derive(Debug, Clone, Serialize, Deserialize)]
5122pub struct MeteItem {
5123 #[serde(alias = "Kind", rename = "kinds")]
5127 pub kinds: Vec<MeteKind>,
5128 #[serde(
5132 alias = "Areas",
5133 rename = "areas",
5134 skip_serializing_if = "Option::is_none"
5135 )]
5136 pub areas: Option<MeteAreas>,
5137 #[serde(
5141 alias = "Stations",
5142 rename = "stations",
5143 skip_serializing_if = "Option::is_none"
5144 )]
5145 pub stations: Option<MeteStations>,
5146 #[serde(
5150 alias = "Area",
5151 rename = "area",
5152 skip_serializing_if = "Option::is_none"
5153 )]
5154 pub area: Option<MeteArea>,
5155 #[serde(
5159 alias = "Station",
5160 rename = "station",
5161 skip_serializing_if = "Option::is_none"
5162 )]
5163 pub station: Option<MeteStation>,
5164 #[serde(
5168 alias = "ChangeStatus",
5169 rename = "changeStatus",
5170 skip_serializing_if = "Option::is_none"
5171 )]
5172 pub change_status: Option<String>,
5173 #[serde(
5177 alias = "FullStatus",
5178 rename = "fullStatus",
5179 skip_serializing_if = "Option::is_none"
5180 )]
5181 pub full_status: Option<String>,
5182 #[serde(
5186 alias = "EditingMark",
5187 rename = "editingMark",
5188 skip_serializing_if = "Option::is_none"
5189 )]
5190 pub editing_mark: Option<String>,
5191 #[serde(
5195 alias = "OtherReport",
5196 rename = "otherReports",
5197 skip_serializing_if = "Vec::is_empty",
5198 default
5199 )]
5200 pub other_reports: Vec<String>,
5201}
5202
5203#[derive(Debug, Clone, Serialize, Deserialize)]
5204pub struct MeteKind {
5205 #[serde(
5209 alias = "Name",
5210 rename = "name",
5211 skip_serializing_if = "Option::is_none",
5212 deserialize_with = "trim_opt_string",
5213 default
5214 )]
5215 pub name: Option<String>,
5216 #[serde(
5220 alias = "Code",
5221 rename = "code",
5222 skip_serializing_if = "Option::is_none",
5223 deserialize_with = "trim_opt_string",
5224 default
5225 )]
5226 pub code: Option<String>,
5227 #[serde(
5231 alias = "Status",
5232 rename = "status",
5233 skip_serializing_if = "Option::is_none",
5234 deserialize_with = "trim_opt_string",
5235 default
5236 )]
5237 pub status: Option<String>,
5238 #[serde(
5240 alias = "ClassName",
5241 rename = "className",
5242 skip_serializing_if = "Option::is_none",
5243 deserialize_with = "trim_opt_string",
5244 default
5245 )]
5246 pub class_name: Option<String>,
5247 #[serde(
5251 alias = "Condition",
5252 rename = "condition",
5253 skip_serializing_if = "Option::is_none",
5254 deserialize_with = "trim_opt_string",
5255 default
5256 )]
5257 pub condition: Option<String>,
5258 #[serde(
5262 alias = "LastKind",
5263 rename = "lastKind",
5264 skip_serializing_if = "Option::is_none"
5265 )]
5266 pub last_kind: Option<MeteNextKind>,
5267 #[serde(
5269 alias = "NextKinds",
5270 rename = "nextKinds",
5271 skip_serializing_if = "Option::is_none"
5272 )]
5273 pub next_kinds: Option<MeteNextKinds>,
5274 #[serde(
5276 alias = "Attention",
5277 rename = "attention",
5278 skip_serializing_if = "Option::is_none"
5279 )]
5280 pub attention: Option<MeteAttention>,
5281 #[serde(
5285 alias = "WarningNotice",
5286 rename = "warningNotice",
5287 skip_serializing_if = "Option::is_none"
5288 )]
5289 pub warning_notice: Option<MeteWarningNotice>,
5290 #[serde(
5292 alias = "Addition",
5293 rename = "addition",
5294 skip_serializing_if = "Option::is_none"
5295 )]
5296 pub addition: Option<MeteAddition>,
5297 #[serde(
5301 alias = "DateTime",
5302 rename = "dateTime",
5303 skip_serializing_if = "Option::is_none"
5304 )]
5305 pub date_time: Option<EbDateTime>,
5306 #[serde(
5310 alias = "Property",
5311 rename = "properties",
5312 skip_serializing_if = "Vec::is_empty",
5313 default
5314 )]
5315 pub properties: Vec<MeteProperty>,
5316}
5317
5318#[derive(Debug, Clone, Serialize, Deserialize)]
5319pub struct MeteLocalCriteria {
5320 #[serde(
5324 alias = "AreaName",
5325 rename = "areaName",
5326 deserialize_with = "trim_string"
5327 )]
5328 pub area_name: String,
5329 #[serde(
5333 alias = "Sentence",
5334 rename = "sentence",
5335 skip_serializing_if = "Option::is_none"
5336 )]
5337 pub sentence: Option<MeteSentence>,
5338 #[serde(alias = "CriteriaClass", rename = "criteriaClass")]
5342 pub criteria_class: MeteCriteriaClass,
5343 #[serde(alias = "Time", rename = "time")]
5347 pub time: DateTime,
5348 #[serde(
5350 alias = "Duration",
5351 rename = "duration",
5352 skip_serializing_if = "Option::is_none"
5353 )]
5354 pub duration: Option<Duration>,
5355 #[serde(
5359 alias = "Remark",
5360 rename = "remark",
5361 skip_serializing_if = "Option::is_none",
5362 deserialize_with = "trim_opt_string",
5363 default
5364 )]
5365 pub remark: Option<String>,
5366}
5367
5368#[derive(Debug, Clone, Serialize, Deserialize)]
5369pub struct MeteLocalEvent {
5370 #[serde(
5374 alias = "AreaName",
5375 rename = "areaName",
5376 deserialize_with = "trim_string"
5377 )]
5378 pub area_name: String,
5379 #[serde(
5383 alias = "Sentence",
5384 rename = "sentence",
5385 skip_serializing_if = "Option::is_none"
5386 )]
5387 pub sentence: Option<MeteSentence>,
5388 #[serde(
5390 alias = "Coordinate",
5391 rename = "coordinate",
5392 skip_serializing_if = "Option::is_none"
5393 )]
5394 pub coordinate: Option<MeteCoordinatePart>,
5395 #[serde(
5397 alias = "Location",
5398 rename = "location",
5399 skip_serializing_if = "Option::is_none",
5400 deserialize_with = "trim_opt_string",
5401 default
5402 )]
5403 pub location: Option<String>,
5404 #[serde(
5408 alias = "Event",
5409 rename = "events",
5410 skip_serializing_if = "Vec::is_empty",
5411 default
5412 )]
5413 pub events: Vec<MeteEvent>,
5414 #[serde(
5416 alias = "Remark",
5417 rename = "remark",
5418 skip_serializing_if = "Option::is_none",
5419 deserialize_with = "trim_opt_string",
5420 default
5421 )]
5422 pub remark: Option<String>,
5423}
5424
5425#[derive(Debug, Clone, Serialize, Deserialize)]
5426pub struct MeteLocalHumidity {
5427 #[serde(
5431 alias = "AreaName",
5432 rename = "areaName",
5433 skip_serializing_if = "Option::is_none",
5434 deserialize_with = "trim_opt_string",
5435 default
5436 )]
5437 pub area_name: Option<String>,
5438 #[serde(
5442 alias = "Sentence",
5443 rename = "sentence",
5444 skip_serializing_if = "Option::is_none"
5445 )]
5446 pub sentence: Option<MeteSentence>,
5447 #[serde(
5449 alias = "Humidity",
5450 rename = "humidities",
5451 skip_serializing_if = "Vec::is_empty",
5452 default
5453 )]
5454 pub humidities: Vec<EbHumidity>,
5455 #[serde(
5459 alias = "Time",
5460 rename = "time",
5461 skip_serializing_if = "Option::is_none"
5462 )]
5463 pub time: Option<DateTime>,
5464 #[serde(
5466 alias = "Remark",
5467 rename = "remark",
5468 skip_serializing_if = "Option::is_none",
5469 deserialize_with = "trim_opt_string",
5470 default
5471 )]
5472 pub remark: Option<String>,
5473}
5474
5475#[derive(Debug, Clone, Serialize, Deserialize)]
5476pub struct MeteLocalIcing {
5477 #[serde(
5481 alias = "AreaName",
5482 rename = "areaName",
5483 skip_serializing_if = "Option::is_none",
5484 deserialize_with = "trim_opt_string",
5485 default
5486 )]
5487 pub area_name: Option<String>,
5488 #[serde(
5492 alias = "Sentence",
5493 rename = "sentence",
5494 skip_serializing_if = "Option::is_none"
5495 )]
5496 pub sentence: Option<MeteSentence>,
5497 #[serde(
5499 alias = "Icing",
5500 rename = "icings",
5501 skip_serializing_if = "Vec::is_empty",
5502 default
5503 )]
5504 pub icings: Vec<EbIcing>,
5505 #[serde(
5509 alias = "Time",
5510 rename = "time",
5511 skip_serializing_if = "Option::is_none"
5512 )]
5513 pub time: Option<DateTime>,
5514 #[serde(
5516 alias = "Remark",
5517 rename = "remark",
5518 skip_serializing_if = "Option::is_none",
5519 deserialize_with = "trim_opt_string",
5520 default
5521 )]
5522 pub remark: Option<String>,
5523}
5524
5525#[derive(Debug, Clone, Serialize, Deserialize)]
5526pub struct MeteLocalPrecipitation {
5527 #[serde(
5531 alias = "AreaName",
5532 rename = "areaName",
5533 skip_serializing_if = "Option::is_none",
5534 deserialize_with = "trim_opt_string",
5535 default
5536 )]
5537 pub area_name: Option<String>,
5538 #[serde(
5542 alias = "Sentence",
5543 rename = "sentence",
5544 skip_serializing_if = "Option::is_none"
5545 )]
5546 pub sentence: Option<MeteSentence>,
5547 #[serde(
5549 alias = "Precipitation",
5550 rename = "precipitations",
5551 skip_serializing_if = "Vec::is_empty",
5552 default
5553 )]
5554 pub precipitations: Vec<EbPrecipitation>,
5555 #[serde(
5559 alias = "Time",
5560 rename = "time",
5561 skip_serializing_if = "Option::is_none"
5562 )]
5563 pub time: Option<DateTime>,
5564 #[serde(
5566 alias = "Remark",
5567 rename = "remark",
5568 skip_serializing_if = "Option::is_none",
5569 deserialize_with = "trim_opt_string",
5570 default
5571 )]
5572 pub remark: Option<String>,
5573}
5574
5575#[derive(Debug, Clone, Serialize, Deserialize)]
5576pub struct MeteLocalPrecipitationBasedIndex {
5577 #[serde(
5581 alias = "AreaName",
5582 rename = "areaName",
5583 skip_serializing_if = "Option::is_none",
5584 deserialize_with = "trim_opt_string",
5585 default
5586 )]
5587 pub area_name: Option<String>,
5588 #[serde(
5592 alias = "Sentence",
5593 rename = "sentence",
5594 skip_serializing_if = "Option::is_none"
5595 )]
5596 pub sentence: Option<MeteSentence>,
5597 #[serde(
5599 alias = "PrecipitationBasedIndex",
5600 rename = "precipitationBasedIndexes",
5601 skip_serializing_if = "Vec::is_empty",
5602 default
5603 )]
5604 pub precipitation_based_indexes: Vec<EbPrecipitationBasedIndex>,
5605 #[serde(
5609 alias = "Time",
5610 rename = "time",
5611 skip_serializing_if = "Option::is_none"
5612 )]
5613 pub time: Option<DateTime>,
5614 #[serde(
5616 alias = "Remark",
5617 rename = "remark",
5618 skip_serializing_if = "Option::is_none",
5619 deserialize_with = "trim_opt_string",
5620 default
5621 )]
5622 pub remark: Option<String>,
5623}
5624
5625#[derive(Debug, Clone, Serialize, Deserialize)]
5626pub struct MeteLocalPressure {
5627 #[serde(
5631 alias = "AreaName",
5632 rename = "areaName",
5633 skip_serializing_if = "Option::is_none",
5634 deserialize_with = "trim_opt_string",
5635 default
5636 )]
5637 pub area_name: Option<String>,
5638 #[serde(
5642 alias = "Sentence",
5643 rename = "sentence",
5644 skip_serializing_if = "Option::is_none"
5645 )]
5646 pub sentence: Option<MeteSentence>,
5647 #[serde(
5649 alias = "Pressure",
5650 rename = "pressures",
5651 skip_serializing_if = "Vec::is_empty",
5652 default
5653 )]
5654 pub pressures: Vec<EbPressure>,
5655 #[serde(
5659 alias = "Time",
5660 rename = "time",
5661 skip_serializing_if = "Option::is_none"
5662 )]
5663 pub time: Option<DateTime>,
5664 #[serde(
5666 alias = "Remark",
5667 rename = "remark",
5668 skip_serializing_if = "Option::is_none",
5669 deserialize_with = "trim_opt_string",
5670 default
5671 )]
5672 pub remark: Option<String>,
5673}
5674
5675#[derive(Debug, Clone, Serialize, Deserialize)]
5676pub struct MeteLocalSeaIce {
5677 #[serde(
5681 alias = "AreaName",
5682 rename = "areaName",
5683 skip_serializing_if = "Option::is_none",
5684 deserialize_with = "trim_opt_string",
5685 default
5686 )]
5687 pub area_name: Option<String>,
5688 #[serde(
5692 alias = "Sentence",
5693 rename = "sentence",
5694 skip_serializing_if = "Option::is_none"
5695 )]
5696 pub sentence: Option<MeteSentence>,
5697 #[serde(
5699 alias = "SeaIce",
5700 rename = "seaIces",
5701 skip_serializing_if = "Vec::is_empty",
5702 default
5703 )]
5704 pub sea_ices: Vec<EbSeaIce>,
5705 #[serde(
5709 alias = "Time",
5710 rename = "time",
5711 skip_serializing_if = "Option::is_none"
5712 )]
5713 pub time: Option<DateTime>,
5714 #[serde(
5716 alias = "Remark",
5717 rename = "remark",
5718 skip_serializing_if = "Option::is_none",
5719 deserialize_with = "trim_opt_string",
5720 default
5721 )]
5722 pub remark: Option<String>,
5723}
5724
5725#[derive(Debug, Clone, Serialize, Deserialize)]
5726pub struct MeteLocalSignificancy {
5727 #[serde(
5731 alias = "AreaName",
5732 rename = "areaName",
5733 deserialize_with = "trim_string"
5734 )]
5735 pub area_name: String,
5736 #[serde(
5740 alias = "Significancy",
5741 rename = "significancies",
5742 skip_serializing_if = "Vec::is_empty",
5743 default
5744 )]
5745 pub significancies: Vec<MeteSignificancy>,
5746 #[serde(
5750 alias = "Sentence",
5751 rename = "sentence",
5752 skip_serializing_if = "Option::is_none"
5753 )]
5754 pub sentence: Option<MeteSentence>,
5755 #[serde(
5759 alias = "PeakTime",
5760 rename = "peakTime",
5761 skip_serializing_if = "Option::is_none"
5762 )]
5763 pub peak_time: Option<MeteForecastTerm>,
5764 #[serde(
5766 alias = "Attention",
5767 rename = "attention",
5768 skip_serializing_if = "Option::is_none"
5769 )]
5770 pub attention: Option<MeteAttention>,
5771 #[serde(
5773 alias = "Addition",
5774 rename = "addition",
5775 skip_serializing_if = "Option::is_none"
5776 )]
5777 pub addition: Option<MeteAddition>,
5778}
5779
5780#[derive(Debug, Clone, Serialize, Deserialize)]
5781pub struct MeteLocalSnowDepth {
5782 #[serde(
5786 alias = "AreaName",
5787 rename = "areaName",
5788 skip_serializing_if = "Option::is_none",
5789 deserialize_with = "trim_opt_string",
5790 default
5791 )]
5792 pub area_name: Option<String>,
5793 #[serde(
5797 alias = "Sentence",
5798 rename = "sentence",
5799 skip_serializing_if = "Option::is_none"
5800 )]
5801 pub sentence: Option<MeteSentence>,
5802 #[serde(
5804 alias = "SnowDepth",
5805 rename = "snowDepths",
5806 skip_serializing_if = "Vec::is_empty",
5807 default
5808 )]
5809 pub snow_depths: Vec<EbSnowDepth>,
5810 #[serde(
5814 alias = "Time",
5815 rename = "time",
5816 skip_serializing_if = "Option::is_none"
5817 )]
5818 pub time: Option<DateTime>,
5819 #[serde(
5821 alias = "Remark",
5822 rename = "remark",
5823 skip_serializing_if = "Option::is_none",
5824 deserialize_with = "trim_opt_string",
5825 default
5826 )]
5827 pub remark: Option<String>,
5828}
5829
5830#[derive(Debug, Clone, Serialize, Deserialize)]
5831pub struct MeteLocalSnowfallDepth {
5832 #[serde(
5836 alias = "AreaName",
5837 rename = "areaName",
5838 skip_serializing_if = "Option::is_none",
5839 deserialize_with = "trim_opt_string",
5840 default
5841 )]
5842 pub area_name: Option<String>,
5843 #[serde(
5847 alias = "Sentence",
5848 rename = "sentence",
5849 skip_serializing_if = "Option::is_none"
5850 )]
5851 pub sentence: Option<MeteSentence>,
5852 #[serde(
5854 alias = "SnowfallDepth",
5855 rename = "snowfallDepths",
5856 skip_serializing_if = "Vec::is_empty",
5857 default
5858 )]
5859 pub snowfall_depths: Vec<EbSnowfallDepth>,
5860 #[serde(
5864 alias = "Time",
5865 rename = "time",
5866 skip_serializing_if = "Option::is_none"
5867 )]
5868 pub time: Option<DateTime>,
5869 #[serde(
5871 alias = "Remark",
5872 rename = "remark",
5873 skip_serializing_if = "Option::is_none",
5874 deserialize_with = "trim_opt_string",
5875 default
5876 )]
5877 pub remark: Option<String>,
5878}
5879
5880#[derive(Debug, Clone, Serialize, Deserialize)]
5881pub struct MeteLocalTemperature {
5882 #[serde(
5886 alias = "AreaName",
5887 rename = "areaName",
5888 skip_serializing_if = "Option::is_none",
5889 deserialize_with = "trim_opt_string",
5890 default
5891 )]
5892 pub area_name: Option<String>,
5893 #[serde(
5897 alias = "Sentence",
5898 rename = "sentence",
5899 skip_serializing_if = "Option::is_none"
5900 )]
5901 pub sentence: Option<MeteSentence>,
5902 #[serde(
5904 alias = "Temperature",
5905 rename = "temperatures",
5906 skip_serializing_if = "Vec::is_empty",
5907 default
5908 )]
5909 pub temperatures: Vec<EbTemperature>,
5910 #[serde(
5914 alias = "Time",
5915 rename = "time",
5916 skip_serializing_if = "Option::is_none"
5917 )]
5918 pub time: Option<DateTime>,
5919 #[serde(
5921 alias = "Remark",
5922 rename = "remark",
5923 skip_serializing_if = "Option::is_none",
5924 deserialize_with = "trim_opt_string",
5925 default
5926 )]
5927 pub remark: Option<String>,
5928}
5929
5930#[derive(Debug, Clone, Serialize, Deserialize)]
5931pub struct MeteLocalTidalLevel {
5932 #[serde(
5936 alias = "AreaName",
5937 rename = "areaName",
5938 skip_serializing_if = "Option::is_none",
5939 deserialize_with = "trim_opt_string",
5940 default
5941 )]
5942 pub area_name: Option<String>,
5943 #[serde(
5947 alias = "Sentence",
5948 rename = "sentence",
5949 skip_serializing_if = "Option::is_none"
5950 )]
5951 pub sentence: Option<MeteSentence>,
5952 #[serde(
5954 alias = "TidalLevel",
5955 rename = "tidalLevels",
5956 skip_serializing_if = "Vec::is_empty",
5957 default
5958 )]
5959 pub tidal_levels: Vec<EbTidalLevel>,
5960 #[serde(
5964 alias = "TidalPeriod",
5965 rename = "tidalPeriods",
5966 skip_serializing_if = "Vec::is_empty",
5967 default
5968 )]
5969 pub tidal_periods: Vec<EbTidalPeriod>,
5970 #[serde(
5974 alias = "Time",
5975 rename = "time",
5976 skip_serializing_if = "Option::is_none"
5977 )]
5978 pub time: Option<DateTime>,
5979 #[serde(
5983 alias = "Sequence",
5984 rename = "sequences",
5985 skip_serializing_if = "Vec::is_empty",
5986 default
5987 )]
5988 pub sequences: Vec<MeteSequenceTidalLevel>,
5989 #[serde(
5991 alias = "Remark",
5992 rename = "remark",
5993 skip_serializing_if = "Option::is_none",
5994 deserialize_with = "trim_opt_string",
5995 default
5996 )]
5997 pub remark: Option<String>,
5998}
5999
6000#[derive(Debug, Clone, Serialize, Deserialize)]
6001pub struct MeteLocalVisibility {
6002 #[serde(
6006 alias = "AreaName",
6007 rename = "areaName",
6008 skip_serializing_if = "Option::is_none",
6009 deserialize_with = "trim_opt_string",
6010 default
6011 )]
6012 pub area_name: Option<String>,
6013 #[serde(
6017 alias = "Sentence",
6018 rename = "sentence",
6019 skip_serializing_if = "Option::is_none"
6020 )]
6021 pub sentence: Option<MeteSentence>,
6022 #[serde(
6024 alias = "Visibility",
6025 rename = "visibilities",
6026 skip_serializing_if = "Vec::is_empty",
6027 default
6028 )]
6029 pub visibilities: Vec<EbVisibility>,
6030 #[serde(
6034 alias = "Time",
6035 rename = "time",
6036 skip_serializing_if = "Option::is_none"
6037 )]
6038 pub time: Option<DateTime>,
6039 #[serde(
6041 alias = "Remark",
6042 rename = "remark",
6043 skip_serializing_if = "Option::is_none",
6044 deserialize_with = "trim_opt_string",
6045 default
6046 )]
6047 pub remark: Option<String>,
6048}
6049
6050#[derive(Debug, Clone, Serialize, Deserialize)]
6051pub struct MeteLocalWaveHeight {
6052 #[serde(
6056 alias = "AreaName",
6057 rename = "areaName",
6058 skip_serializing_if = "Option::is_none",
6059 deserialize_with = "trim_opt_string",
6060 default
6061 )]
6062 pub area_name: Option<String>,
6063 #[serde(
6067 alias = "Sentence",
6068 rename = "sentence",
6069 skip_serializing_if = "Option::is_none"
6070 )]
6071 pub sentence: Option<MeteSentence>,
6072 #[serde(
6074 alias = "WaveHeight",
6075 rename = "waveHeights",
6076 skip_serializing_if = "Vec::is_empty",
6077 default
6078 )]
6079 pub wave_heights: Vec<EbWaveHeight>,
6080 #[serde(
6084 alias = "Time",
6085 rename = "time",
6086 skip_serializing_if = "Option::is_none"
6087 )]
6088 pub time: Option<DateTime>,
6089 #[serde(
6091 alias = "Remark",
6092 rename = "remark",
6093 skip_serializing_if = "Option::is_none",
6094 deserialize_with = "trim_opt_string",
6095 default
6096 )]
6097 pub remark: Option<String>,
6098}
6099
6100#[derive(Debug, Clone, Serialize, Deserialize)]
6101pub struct MeteLocalWeather {
6102 #[serde(
6106 alias = "AreaName",
6107 rename = "areaName",
6108 skip_serializing_if = "Option::is_none",
6109 deserialize_with = "trim_opt_string",
6110 default
6111 )]
6112 pub area_name: Option<String>,
6113 #[serde(
6117 alias = "Sentence",
6118 rename = "sentence",
6119 skip_serializing_if = "Option::is_none"
6120 )]
6121 pub sentence: Option<MeteSentence>,
6122 #[serde(
6124 alias = "Weather",
6125 rename = "weathers",
6126 skip_serializing_if = "Vec::is_empty",
6127 default
6128 )]
6129 pub weathers: Vec<EbWeather>,
6130 #[serde(
6134 alias = "Time",
6135 rename = "time",
6136 skip_serializing_if = "Option::is_none"
6137 )]
6138 pub time: Option<DateTime>,
6139 #[serde(
6141 alias = "Remark",
6142 rename = "remark",
6143 skip_serializing_if = "Option::is_none",
6144 deserialize_with = "trim_opt_string",
6145 default
6146 )]
6147 pub remark: Option<String>,
6148}
6149
6150#[derive(Debug, Clone, Serialize, Deserialize)]
6151pub struct MeteLocalWind {
6152 #[serde(
6156 alias = "AreaName",
6157 rename = "areaName",
6158 skip_serializing_if = "Option::is_none",
6159 deserialize_with = "trim_opt_string",
6160 default
6161 )]
6162 pub area_name: Option<String>,
6163 #[serde(
6167 alias = "Sentence",
6168 rename = "sentence",
6169 skip_serializing_if = "Option::is_none"
6170 )]
6171 pub sentence: Option<MeteSentence>,
6172 #[serde(
6174 alias = "WindDirection",
6175 rename = "windDirections",
6176 skip_serializing_if = "Vec::is_empty",
6177 default
6178 )]
6179 pub wind_directions: Vec<EbWindDirection>,
6180 #[serde(
6184 alias = "WindDegree",
6185 rename = "windDegrees",
6186 skip_serializing_if = "Vec::is_empty",
6187 default
6188 )]
6189 pub wind_degrees: Vec<EbWindDegree>,
6190 #[serde(
6192 alias = "WindSpeed",
6193 rename = "windSpeeds",
6194 skip_serializing_if = "Vec::is_empty",
6195 default
6196 )]
6197 pub wind_speeds: Vec<EbWindSpeed>,
6198 #[serde(
6200 alias = "WindScale",
6201 rename = "windScales",
6202 skip_serializing_if = "Vec::is_empty",
6203 default
6204 )]
6205 pub wind_scales: Vec<EbWindScale>,
6206 #[serde(
6210 alias = "Time",
6211 rename = "time",
6212 skip_serializing_if = "Option::is_none"
6213 )]
6214 pub time: Option<DateTime>,
6215 #[serde(
6217 alias = "Remark",
6218 rename = "remark",
6219 skip_serializing_if = "Option::is_none",
6220 deserialize_with = "trim_opt_string",
6221 default
6222 )]
6223 pub remark: Option<String>,
6224}
6225
6226#[derive(Debug, Clone, Serialize, Deserialize)]
6227pub struct MeteLocalWindDirection {
6228 #[serde(
6232 alias = "AreaName",
6233 rename = "areaName",
6234 skip_serializing_if = "Option::is_none",
6235 deserialize_with = "trim_opt_string",
6236 default
6237 )]
6238 pub area_name: Option<String>,
6239 #[serde(
6243 alias = "Sentence",
6244 rename = "sentence",
6245 skip_serializing_if = "Option::is_none"
6246 )]
6247 pub sentence: Option<MeteSentence>,
6248 #[serde(
6250 alias = "WindDirection",
6251 rename = "windDirections",
6252 skip_serializing_if = "Vec::is_empty",
6253 default
6254 )]
6255 pub wind_directions: Vec<EbWindDirection>,
6256 #[serde(
6260 alias = "Time",
6261 rename = "time",
6262 skip_serializing_if = "Option::is_none"
6263 )]
6264 pub time: Option<DateTime>,
6265 #[serde(
6267 alias = "Remark",
6268 rename = "remark",
6269 skip_serializing_if = "Option::is_none",
6270 deserialize_with = "trim_opt_string",
6271 default
6272 )]
6273 pub remark: Option<String>,
6274}
6275
6276#[derive(Debug, Clone, Serialize, Deserialize)]
6277pub struct MeteLocalWindSpeed {
6278 #[serde(
6282 alias = "AreaName",
6283 rename = "areaName",
6284 skip_serializing_if = "Option::is_none",
6285 deserialize_with = "trim_opt_string",
6286 default
6287 )]
6288 pub area_name: Option<String>,
6289 #[serde(
6293 alias = "Sentence",
6294 rename = "sentence",
6295 skip_serializing_if = "Option::is_none"
6296 )]
6297 pub sentence: Option<MeteSentence>,
6298 #[serde(
6300 alias = "WindSpeed",
6301 rename = "windSpeeds",
6302 skip_serializing_if = "Vec::is_empty",
6303 default
6304 )]
6305 pub wind_speeds: Vec<EbWindSpeed>,
6306 #[serde(
6310 alias = "Time",
6311 rename = "time",
6312 skip_serializing_if = "Option::is_none"
6313 )]
6314 pub time: Option<DateTime>,
6315 #[serde(
6317 alias = "Remark",
6318 rename = "remark",
6319 skip_serializing_if = "Option::is_none",
6320 deserialize_with = "trim_opt_string",
6321 default
6322 )]
6323 pub remark: Option<String>,
6324}
6325
6326#[derive(Debug, Clone, Serialize, Deserialize)]
6327pub struct MeteMeteorologicalInfo {
6328 #[serde(
6330 alias = "@type",
6331 rename = "type",
6332 skip_serializing_if = "Option::is_none"
6333 )]
6334 pub ty: Option<String>,
6335 #[serde(alias = "DateTime", rename = "dateTime")]
6339 pub date_time: EbDateTime,
6340 #[serde(
6344 alias = "Duration",
6345 rename = "duration",
6346 skip_serializing_if = "Option::is_none"
6347 )]
6348 pub duration: Option<Duration>,
6349 #[serde(
6353 alias = "Name",
6354 rename = "name",
6355 skip_serializing_if = "Option::is_none",
6356 deserialize_with = "trim_opt_string",
6357 default
6358 )]
6359 pub name: Option<String>,
6360 #[serde(alias = "Item", rename = "items")]
6362 pub items: Vec<MeteItem>,
6363}
6364
6365#[derive(Debug, Clone, Serialize, Deserialize)]
6366pub struct MeteMeteorologicalInfos {
6367 #[serde(alias = "@type", rename = "type")]
6371 pub ty: String,
6372 #[serde(
6376 alias = "MeteorologicalInfo",
6377 rename = "meteorologicalInfos",
6378 skip_serializing_if = "Vec::is_empty",
6379 default
6380 )]
6381 pub meteorological_infos: Vec<MeteMeteorologicalInfo>,
6382 #[serde(
6386 alias = "TimeSeriesInfo",
6387 rename = "timeSeriesInfos",
6388 skip_serializing_if = "Vec::is_empty",
6389 default
6390 )]
6391 pub time_series_infos: Vec<MeteTimeSeriesInfo>,
6392}
6393
6394#[derive(Debug, Clone, Serialize, Deserialize)]
6395pub struct MeteNextKind {
6396 #[serde(alias = "Name", rename = "name", deserialize_with = "trim_string")]
6400 pub name: String,
6401 #[serde(alias = "Code", rename = "code", deserialize_with = "trim_string")]
6405 pub code: String,
6406 #[serde(
6410 alias = "Condition",
6411 rename = "condition",
6412 skip_serializing_if = "Option::is_none",
6413 deserialize_with = "trim_opt_string",
6414 default
6415 )]
6416 pub condition: Option<String>,
6417 #[serde(
6421 alias = "DateTime",
6422 rename = "dateTime",
6423 skip_serializing_if = "Option::is_none"
6424 )]
6425 pub date_time: Option<EbDateTime>,
6426 #[serde(
6430 alias = "Sentence",
6431 rename = "sentence",
6432 skip_serializing_if = "Option::is_none",
6433 deserialize_with = "trim_opt_string",
6434 default
6435 )]
6436 pub sentence: Option<String>,
6437}
6438
6439#[derive(Debug, Clone, Serialize, Deserialize)]
6440pub struct MeteNextKinds {
6441 #[serde(alias = "NextKind", rename = "nextKinds")]
6443 pub next_kinds: Vec<MeteNextKind>,
6444}
6445
6446#[derive(Debug, Clone, Serialize, Deserialize)]
6447pub struct MeteObservationAddition {
6448 #[serde(
6452 alias = "DeviationFromNormal",
6453 rename = "deviationFromNormal",
6454 skip_serializing_if = "Option::is_none",
6455 deserialize_with = "trim_opt_string",
6456 default
6457 )]
6458 pub deviation_from_normal: Option<String>,
6459 #[serde(
6463 alias = "DeviationFromLastYear",
6464 rename = "deviationFromLastYear",
6465 skip_serializing_if = "Option::is_none",
6466 deserialize_with = "trim_opt_string",
6467 default
6468 )]
6469 pub deviation_from_last_year: Option<String>,
6470 #[serde(
6474 alias = "Text",
6475 rename = "text",
6476 skip_serializing_if = "Option::is_none",
6477 deserialize_with = "trim_opt_string",
6478 default
6479 )]
6480 pub text: Option<String>,
6481}
6482
6483#[derive(Debug, Clone, Serialize, Deserialize)]
6484pub struct MeteOffice {
6485 #[serde(alias = "@type", rename = "type")]
6487 pub ty: String,
6488 #[serde(alias = "Name", rename = "name", deserialize_with = "trim_string")]
6492 pub name: String,
6493 #[serde(
6497 alias = "Code",
6498 rename = "code",
6499 skip_serializing_if = "Option::is_none",
6500 deserialize_with = "trim_opt_string",
6501 default
6502 )]
6503 pub code: Option<String>,
6504 #[serde(
6508 alias = "ContactInfo",
6509 rename = "contactInfo",
6510 skip_serializing_if = "Option::is_none",
6511 deserialize_with = "trim_opt_string",
6512 default
6513 )]
6514 pub contact_info: Option<String>,
6515 #[serde(alias = "URI", rename = "uRI", skip_serializing_if = "Option::is_none")]
6519 pub uri: Option<String>,
6520}
6521
6522#[derive(Debug, Clone, Serialize, Deserialize)]
6523pub struct MeteOfficeInfo {
6524 #[serde(alias = "Office", rename = "offices")]
6528 pub offices: Vec<MeteOffice>,
6529}
6530
6531#[derive(Debug, Clone, Serialize, Deserialize)]
6532pub struct MetePeriod {
6533 #[serde(
6537 alias = "StartTime",
6538 rename = "startTime",
6539 skip_serializing_if = "Option::is_none"
6540 )]
6541 pub start_time: Option<MeteForecastTerm>,
6542 #[serde(
6546 alias = "EndTime",
6547 rename = "endTime",
6548 skip_serializing_if = "Option::is_none"
6549 )]
6550 pub end_time: Option<MeteForecastTerm>,
6551 #[serde(
6555 alias = "OverTime",
6556 rename = "overTime",
6557 skip_serializing_if = "Option::is_none",
6558 deserialize_with = "trim_opt_string",
6559 default
6560 )]
6561 pub over_time: Option<String>,
6562 #[serde(
6566 alias = "ZoneTime",
6567 rename = "zoneTime",
6568 skip_serializing_if = "Option::is_none"
6569 )]
6570 pub zone_time: Option<MeteForecastTerm>,
6571}
6572
6573#[derive(Debug, Clone, Serialize, Deserialize)]
6574pub struct MetePossibilityRankOfWarningPart {
6575 #[serde(
6577 alias = "PossibilityRankOfWarning",
6578 rename = "possibilityRankOfWarnings"
6579 )]
6580 pub possibility_rank_of_warnings: Vec<EbPossibilityRankOfWarning>,
6581}
6582
6583#[derive(Debug, Clone, Serialize, Deserialize)]
6584pub struct MetePrecipitationBasedIndexPart {
6585 #[serde(
6589 alias = "@refID",
6590 rename = "refID",
6591 skip_serializing_if = "Option::is_none"
6592 )]
6593 pub ref_id: Option<u8>,
6594 #[serde(
6598 alias = "Sentence",
6599 rename = "sentence",
6600 skip_serializing_if = "Option::is_none"
6601 )]
6602 pub sentence: Option<MeteSentence>,
6603 #[serde(
6607 alias = "Base",
6608 rename = "base",
6609 skip_serializing_if = "Option::is_none"
6610 )]
6611 pub base: Option<MeteBasePrecipitationBasedIndex>,
6612 #[serde(
6614 alias = "PrecipitationBasedIndex",
6615 rename = "precipitationBasedIndexes",
6616 skip_serializing_if = "Vec::is_empty",
6617 default
6618 )]
6619 pub precipitation_based_indexes: Vec<EbPrecipitationBasedIndex>,
6620 #[serde(
6624 alias = "Time",
6625 rename = "time",
6626 skip_serializing_if = "Option::is_none"
6627 )]
6628 pub time: Option<DateTime>,
6629 #[serde(
6631 alias = "Remark",
6632 rename = "remark",
6633 skip_serializing_if = "Option::is_none",
6634 deserialize_with = "trim_opt_string",
6635 default
6636 )]
6637 pub remark: Option<String>,
6638}
6639
6640#[derive(Debug, Clone, Serialize, Deserialize)]
6641pub struct MetePrecipitationPart {
6642 #[serde(
6646 alias = "@refID",
6647 rename = "refID",
6648 skip_serializing_if = "Option::is_none"
6649 )]
6650 pub ref_id: Option<u8>,
6651 #[serde(
6655 alias = "Sentence",
6656 rename = "sentence",
6657 skip_serializing_if = "Option::is_none"
6658 )]
6659 pub sentence: Option<MeteSentence>,
6660 #[serde(
6664 alias = "Base",
6665 rename = "base",
6666 skip_serializing_if = "Option::is_none"
6667 )]
6668 pub base: Option<MeteBasePrecipitation>,
6669 #[serde(
6673 alias = "Temporary",
6674 rename = "temporaries",
6675 skip_serializing_if = "Vec::is_empty",
6676 default
6677 )]
6678 pub temporaries: Vec<MeteBasePrecipitation>,
6679 #[serde(
6683 alias = "Becoming",
6684 rename = "becomings",
6685 skip_serializing_if = "Vec::is_empty",
6686 default
6687 )]
6688 pub becomings: Vec<MeteBasePrecipitation>,
6689 #[serde(
6693 alias = "SubArea",
6694 rename = "subAreas",
6695 skip_serializing_if = "Vec::is_empty",
6696 default
6697 )]
6698 pub sub_areas: Vec<MeteSubAreaPrecipitation>,
6699 #[serde(
6701 alias = "Precipitation",
6702 rename = "precipitations",
6703 skip_serializing_if = "Vec::is_empty",
6704 default
6705 )]
6706 pub precipitations: Vec<EbPrecipitation>,
6707 #[serde(
6711 alias = "Time",
6712 rename = "time",
6713 skip_serializing_if = "Option::is_none"
6714 )]
6715 pub time: Option<DateTime>,
6716 #[serde(
6718 alias = "Remark",
6719 rename = "remark",
6720 skip_serializing_if = "Option::is_none",
6721 deserialize_with = "trim_opt_string",
6722 default
6723 )]
6724 pub remark: Option<String>,
6725}
6726
6727#[derive(Debug, Clone, Serialize, Deserialize)]
6728pub struct MetePrefectureCity {
6729 #[serde(
6730 alias = "$text",
6731 rename = "value",
6732 default,
6733 deserialize_with = "trim_string"
6734 )]
6735 pub value: String,
6736 #[serde(
6740 alias = "@partType",
6741 rename = "partType",
6742 skip_serializing_if = "Option::is_none"
6743 )]
6744 pub part_type: Option<String>,
6745}
6746
6747#[derive(Debug, Clone, Serialize, Deserialize)]
6748pub struct MetePressurePart {
6749 #[serde(
6753 alias = "Sentence",
6754 rename = "sentence",
6755 skip_serializing_if = "Option::is_none"
6756 )]
6757 pub sentence: Option<MeteSentence>,
6758 #[serde(
6762 alias = "Base",
6763 rename = "base",
6764 skip_serializing_if = "Option::is_none"
6765 )]
6766 pub base: Option<MeteBasePressure>,
6767 #[serde(
6771 alias = "Temporary",
6772 rename = "temporaries",
6773 skip_serializing_if = "Vec::is_empty",
6774 default
6775 )]
6776 pub temporaries: Vec<MeteBasePressure>,
6777 #[serde(
6781 alias = "Becoming",
6782 rename = "becomings",
6783 skip_serializing_if = "Vec::is_empty",
6784 default
6785 )]
6786 pub becomings: Vec<MeteBasePressure>,
6787 #[serde(
6791 alias = "SubArea",
6792 rename = "subAreas",
6793 skip_serializing_if = "Vec::is_empty",
6794 default
6795 )]
6796 pub sub_areas: Vec<MeteSubAreaPressure>,
6797 #[serde(
6799 alias = "Pressure",
6800 rename = "pressures",
6801 skip_serializing_if = "Vec::is_empty",
6802 default
6803 )]
6804 pub pressures: Vec<EbPressure>,
6805 #[serde(
6809 alias = "Time",
6810 rename = "time",
6811 skip_serializing_if = "Option::is_none"
6812 )]
6813 pub time: Option<DateTime>,
6814 #[serde(
6816 alias = "Remark",
6817 rename = "remark",
6818 skip_serializing_if = "Option::is_none",
6819 deserialize_with = "trim_opt_string",
6820 default
6821 )]
6822 pub remark: Option<String>,
6823}
6824
6825#[derive(Debug, Clone, Serialize, Deserialize)]
6826pub struct MeteProbabilityOfPrecipitationPart {
6827 #[serde(
6829 alias = "ProbabilityOfPrecipitation",
6830 rename = "probabilityOfPrecipitations"
6831 )]
6832 pub probability_of_precipitations: Vec<EbProbabilityOfPrecipitation>,
6833}
6834
6835#[derive(Debug, Clone, Serialize, Deserialize)]
6836pub struct MeteProperty {
6837 #[serde(alias = "Type", rename = "type", deserialize_with = "trim_string")]
6841 pub ty: String,
6842 #[serde(
6846 alias = "SignificancyPart",
6847 rename = "significancyParts",
6848 skip_serializing_if = "Vec::is_empty",
6849 default
6850 )]
6851 pub significancy_parts: Vec<MeteSignificancyPart>,
6852 #[serde(
6856 alias = "SubsequentSignificancyPart",
6857 rename = "subsequentSignificancyParts",
6858 skip_serializing_if = "Vec::is_empty",
6859 default
6860 )]
6861 pub subsequent_significancy_parts: Vec<MeteSignificancyPart>,
6862 #[serde(
6866 alias = "WarningPeriod",
6867 rename = "warningPeriod",
6868 skip_serializing_if = "Option::is_none"
6869 )]
6870 pub warning_period: Option<MetePeriod>,
6871 #[serde(
6875 alias = "AdvisoryPeriod",
6876 rename = "advisoryPeriod",
6877 skip_serializing_if = "Option::is_none"
6878 )]
6879 pub advisory_period: Option<MetePeriod>,
6880 #[serde(
6884 alias = "CriteriaPeriod",
6885 rename = "criteriaPeriod",
6886 skip_serializing_if = "Option::is_none"
6887 )]
6888 pub criteria_period: Option<MeteCriteriaPeriod>,
6889 #[serde(
6893 alias = "PeakTime",
6894 rename = "peakTime",
6895 skip_serializing_if = "Option::is_none"
6896 )]
6897 pub peak_time: Option<MeteForecastTerm>,
6898 #[serde(
6902 alias = "DetailForecast",
6903 rename = "detailForecast",
6904 skip_serializing_if = "Option::is_none"
6905 )]
6906 pub detail_forecast: Option<MeteDetailForecast>,
6907 #[serde(
6911 alias = "WindPart",
6912 rename = "windPart",
6913 skip_serializing_if = "Option::is_none"
6914 )]
6915 pub wind_part: Option<MeteWindPart>,
6916 #[serde(
6920 alias = "WindDirectionPart",
6921 rename = "windDirectionPart",
6922 skip_serializing_if = "Option::is_none"
6923 )]
6924 pub wind_direction_part: Option<MeteWindDirectionPart>,
6925 #[serde(
6929 alias = "WindSpeedPart",
6930 rename = "windSpeedPart",
6931 skip_serializing_if = "Option::is_none"
6932 )]
6933 pub wind_speed_part: Option<MeteWindSpeedPart>,
6934 #[serde(
6938 alias = "WarningAreaPart",
6939 rename = "warningAreaParts",
6940 skip_serializing_if = "Vec::is_empty",
6941 default
6942 )]
6943 pub warning_area_parts: Vec<MeteWarningAreaPart>,
6944 #[serde(
6948 alias = "WeatherPart",
6949 rename = "weatherPart",
6950 skip_serializing_if = "Option::is_none"
6951 )]
6952 pub weather_part: Option<MeteWeatherPart>,
6953 #[serde(
6957 alias = "PressurePart",
6958 rename = "pressurePart",
6959 skip_serializing_if = "Option::is_none"
6960 )]
6961 pub pressure_part: Option<MetePressurePart>,
6962 #[serde(
6966 alias = "TemperaturePart",
6967 rename = "temperaturePart",
6968 skip_serializing_if = "Option::is_none"
6969 )]
6970 pub temperature_part: Option<MeteTemperaturePart>,
6971 #[serde(
6975 alias = "VisibilityPart",
6976 rename = "visibilityPart",
6977 skip_serializing_if = "Option::is_none"
6978 )]
6979 pub visibility_part: Option<MeteVisibilityPart>,
6980 #[serde(
6984 alias = "SynopsisPart",
6985 rename = "synopsisPart",
6986 skip_serializing_if = "Option::is_none"
6987 )]
6988 pub synopsis_part: Option<MeteSynopsisPart>,
6989 #[serde(
6993 alias = "WaveHeightPart",
6994 rename = "waveHeightPart",
6995 skip_serializing_if = "Option::is_none"
6996 )]
6997 pub wave_height_part: Option<MeteWaveHeightPart>,
6998 #[serde(
7002 alias = "PrecipitationPart",
7003 rename = "precipitationParts",
7004 skip_serializing_if = "Vec::is_empty",
7005 default
7006 )]
7007 pub precipitation_parts: Vec<MetePrecipitationPart>,
7008 #[serde(
7012 alias = "PrecipitationBasedIndexPart",
7013 rename = "precipitationBasedIndexParts",
7014 skip_serializing_if = "Vec::is_empty",
7015 default
7016 )]
7017 pub precipitation_based_index_parts: Vec<MetePrecipitationBasedIndexPart>,
7018 #[serde(
7022 alias = "SnowfallDepthPart",
7023 rename = "snowfallDepthPart",
7024 skip_serializing_if = "Option::is_none"
7025 )]
7026 pub snowfall_depth_part: Option<MeteSnowfallDepthPart>,
7027 #[serde(
7031 alias = "SnowDepthPart",
7032 rename = "snowDepthPart",
7033 skip_serializing_if = "Option::is_none"
7034 )]
7035 pub snow_depth_part: Option<MeteSnowDepthPart>,
7036 #[serde(
7040 alias = "HumidityPart",
7041 rename = "humidityParts",
7042 skip_serializing_if = "Vec::is_empty",
7043 default
7044 )]
7045 pub humidity_parts: Vec<MeteHumidityPart>,
7046 #[serde(
7050 alias = "TidalLevelPart",
7051 rename = "tidalLevelPart",
7052 skip_serializing_if = "Option::is_none"
7053 )]
7054 pub tidal_level_part: Option<MeteTidalLevelPart>,
7055 #[serde(
7059 alias = "SunshinePart",
7060 rename = "sunshinePart",
7061 skip_serializing_if = "Option::is_none"
7062 )]
7063 pub sunshine_part: Option<MeteSunshinePart>,
7064 #[serde(
7068 alias = "WeatherCodePart",
7069 rename = "weatherCodePart",
7070 skip_serializing_if = "Option::is_none"
7071 )]
7072 pub weather_code_part: Option<MeteWeatherCodePart>,
7073 #[serde(
7077 alias = "ProbabilityOfPrecipitationPart",
7078 rename = "probabilityOfPrecipitationPart",
7079 skip_serializing_if = "Option::is_none"
7080 )]
7081 pub probability_of_precipitation_part: Option<MeteProbabilityOfPrecipitationPart>,
7082 #[serde(
7086 alias = "SeaIcePart",
7087 rename = "seaIcePart",
7088 skip_serializing_if = "Option::is_none"
7089 )]
7090 pub sea_ice_part: Option<MeteSeaIcePart>,
7091 #[serde(
7095 alias = "IcingPart",
7096 rename = "icingPart",
7097 skip_serializing_if = "Option::is_none"
7098 )]
7099 pub icing_part: Option<MeteIcingPart>,
7100 #[serde(
7104 alias = "ReliabilityClassPart",
7105 rename = "reliabilityClassPart",
7106 skip_serializing_if = "Option::is_none"
7107 )]
7108 pub reliability_class_part: Option<MeteReliabilityClassPart>,
7109 #[serde(
7113 alias = "ReliabilityValuePart",
7114 rename = "reliabilityValuePart",
7115 skip_serializing_if = "Option::is_none"
7116 )]
7117 pub reliability_value_part: Option<MeteReliabilityValuePart>,
7118 #[serde(
7122 alias = "ClassPart",
7123 rename = "classPart",
7124 skip_serializing_if = "Option::is_none"
7125 )]
7126 pub class_part: Option<MeteClassPart>,
7127 #[serde(
7131 alias = "PossibilityRankOfWarningPart",
7132 rename = "possibilityRankOfWarningPart",
7133 skip_serializing_if = "Option::is_none"
7134 )]
7135 pub possibility_rank_of_warning_part: Option<MetePossibilityRankOfWarningPart>,
7136 #[serde(
7140 alias = "TyphoonNamePart",
7141 rename = "typhoonNamePart",
7142 skip_serializing_if = "Option::is_none"
7143 )]
7144 pub typhoon_name_part: Option<MeteTyphoonNamePart>,
7145 #[serde(
7149 alias = "CenterPart",
7150 rename = "centerPart",
7151 skip_serializing_if = "Option::is_none"
7152 )]
7153 pub center_part: Option<MeteCenterPart>,
7154 #[serde(
7158 alias = "CoordinatePart",
7159 rename = "coordinatePart",
7160 skip_serializing_if = "Option::is_none"
7161 )]
7162 pub coordinate_part: Option<MeteCoordinatePart>,
7163 #[serde(
7167 alias = "IsobarPart",
7168 rename = "isobarPart",
7169 skip_serializing_if = "Option::is_none"
7170 )]
7171 pub isobar_part: Option<MeteIsobarPart>,
7172 #[serde(
7176 alias = "WaterLevelPart",
7177 rename = "waterLevelPart",
7178 skip_serializing_if = "Option::is_none"
7179 )]
7180 pub water_level_part: Option<MeteWaterLevelPart>,
7181 #[serde(
7185 alias = "FloodAssumptionTable",
7186 rename = "floodAssumptionTable",
7187 skip_serializing_if = "Option::is_none"
7188 )]
7189 pub flood_assumption_table: Option<MeteFloodAssumptionTable>,
7190 #[serde(
7194 alias = "DischargePart",
7195 rename = "dischargePart",
7196 skip_serializing_if = "Option::is_none"
7197 )]
7198 pub discharge_part: Option<MeteDischargePart>,
7199 #[serde(
7203 alias = "ClimateFeaturePart",
7204 rename = "climateFeatureParts",
7205 skip_serializing_if = "Vec::is_empty",
7206 default
7207 )]
7208 pub climate_feature_parts: Vec<EbClimateFeature>,
7209 #[serde(
7213 alias = "ClimateValuesPart",
7214 rename = "climateValuesParts",
7215 skip_serializing_if = "Vec::is_empty",
7216 default
7217 )]
7218 pub climate_values_parts: Vec<MeteClimateValuesPart>,
7219 #[serde(
7221 alias = "ClimateProbabilityValuesPart",
7222 rename = "climateProbabilityValuesPart",
7223 skip_serializing_if = "Option::is_none"
7224 )]
7225 pub climate_probability_values_part: Option<MeteClimateProbabilityValuesPart>,
7226 #[serde(
7230 alias = "EventDatePart",
7231 rename = "eventDatePart",
7232 skip_serializing_if = "Option::is_none"
7233 )]
7234 pub event_date_part: Option<MeteEventDatePart>,
7235 #[serde(
7239 alias = "PrecipitationClassPart",
7240 rename = "precipitationClassPart",
7241 skip_serializing_if = "Option::is_none"
7242 )]
7243 pub precipitation_class_part: Option<EbClassThresholdOfAverage>,
7244 #[serde(
7248 alias = "SolarZenithAnglePart",
7249 rename = "solarZenithAnglePart",
7250 skip_serializing_if = "Option::is_none"
7251 )]
7252 pub solar_zenith_angle_part: Option<MeteSolarZenithAnglePart>,
7253 #[serde(
7257 alias = "UvIndexPart",
7258 rename = "uvIndexPart",
7259 skip_serializing_if = "Option::is_none"
7260 )]
7261 pub uv_index_part: Option<MeteUvIndexPart>,
7262 #[serde(
7266 alias = "FiftyKtWindProbabilityPart",
7267 rename = "fiftyKtWindProbabilityParts",
7268 skip_serializing_if = "Vec::is_empty",
7269 default
7270 )]
7271 pub fifty_kt_wind_probability_parts: Vec<MeteFiftyKtWindProbabilityPart>,
7272 #[serde(
7276 alias = "EventPart",
7277 rename = "eventParts",
7278 skip_serializing_if = "Vec::is_empty",
7279 default
7280 )]
7281 pub event_parts: Vec<MeteEventPart>,
7282 #[serde(
7286 alias = "Text",
7287 rename = "texts",
7288 skip_serializing_if = "Vec::is_empty",
7289 default
7290 )]
7291 pub texts: Vec<EbReferableString>,
7292}
7293
7294#[derive(Debug, Clone, Serialize, Deserialize)]
7295pub struct MeteReliabilityClassPart {
7296 #[serde(alias = "ReliabilityClass", rename = "reliabilityClasses")]
7300 pub reliability_classes: Vec<EbReliabilityClass>,
7301}
7302
7303#[derive(Debug, Clone, Serialize, Deserialize)]
7304pub struct MeteReliabilityValuePart {
7305 #[serde(alias = "ReliabilityValue", rename = "reliabilityValues")]
7309 pub reliability_values: Vec<EbReliabilityValue>,
7310}
7311
7312#[derive(Debug, Clone, Serialize, Deserialize)]
7313pub struct MeteSeaIcePart {
7314 #[serde(
7318 alias = "Sentence",
7319 rename = "sentence",
7320 skip_serializing_if = "Option::is_none"
7321 )]
7322 pub sentence: Option<MeteSentence>,
7323 #[serde(
7327 alias = "Base",
7328 rename = "base",
7329 skip_serializing_if = "Option::is_none"
7330 )]
7331 pub base: Option<MeteBaseSeaIce>,
7332 #[serde(
7336 alias = "Temporary",
7337 rename = "temporaries",
7338 skip_serializing_if = "Vec::is_empty",
7339 default
7340 )]
7341 pub temporaries: Vec<MeteBaseSeaIce>,
7342 #[serde(
7346 alias = "Becoming",
7347 rename = "becomings",
7348 skip_serializing_if = "Vec::is_empty",
7349 default
7350 )]
7351 pub becomings: Vec<MeteBaseSeaIce>,
7352 #[serde(
7356 alias = "SubArea",
7357 rename = "subAreas",
7358 skip_serializing_if = "Vec::is_empty",
7359 default
7360 )]
7361 pub sub_areas: Vec<MeteSubAreaSeaIce>,
7362 #[serde(
7364 alias = "SeaIce",
7365 rename = "seaIces",
7366 skip_serializing_if = "Vec::is_empty",
7367 default
7368 )]
7369 pub sea_ices: Vec<EbSeaIce>,
7370 #[serde(
7374 alias = "Time",
7375 rename = "time",
7376 skip_serializing_if = "Option::is_none"
7377 )]
7378 pub time: Option<DateTime>,
7379 #[serde(
7381 alias = "Remark",
7382 rename = "remark",
7383 skip_serializing_if = "Option::is_none",
7384 deserialize_with = "trim_opt_string",
7385 default
7386 )]
7387 pub remark: Option<String>,
7388}
7389
7390#[derive(Debug, Clone, Serialize, Deserialize)]
7391pub struct MeteSentence {
7392 #[serde(
7393 alias = "$text",
7394 rename = "value",
7395 default,
7396 deserialize_with = "trim_string"
7397 )]
7398 pub value: String,
7399 #[serde(
7403 alias = "@type",
7404 rename = "type",
7405 skip_serializing_if = "Option::is_none"
7406 )]
7407 pub ty: Option<String>,
7408}
7409
7410#[derive(Debug, Clone, Serialize, Deserialize)]
7411pub struct MeteSequenceTidalLevel {
7412 #[serde(
7416 alias = "@refID",
7417 rename = "refID",
7418 skip_serializing_if = "Option::is_none"
7419 )]
7420 pub ref_id: Option<u8>,
7421 #[serde(
7425 alias = "Sentence",
7426 rename = "sentence",
7427 skip_serializing_if = "Option::is_none"
7428 )]
7429 pub sentence: Option<MeteSentence>,
7430 #[serde(
7434 alias = "TimeModifier",
7435 rename = "timeModifier",
7436 skip_serializing_if = "Option::is_none",
7437 deserialize_with = "trim_opt_string",
7438 default
7439 )]
7440 pub time_modifier: Option<String>,
7441 #[serde(
7443 alias = "TidalLevel",
7444 rename = "tidalLevels",
7445 skip_serializing_if = "Vec::is_empty",
7446 default
7447 )]
7448 pub tidal_levels: Vec<EbTidalLevel>,
7449 #[serde(
7453 alias = "TidalPeriod",
7454 rename = "tidalPeriods",
7455 skip_serializing_if = "Vec::is_empty",
7456 default
7457 )]
7458 pub tidal_periods: Vec<EbTidalPeriod>,
7459 #[serde(
7463 alias = "Time",
7464 rename = "time",
7465 skip_serializing_if = "Option::is_none"
7466 )]
7467 pub time: Option<DateTime>,
7468 #[serde(
7470 alias = "Remark",
7471 rename = "remark",
7472 skip_serializing_if = "Option::is_none",
7473 deserialize_with = "trim_opt_string",
7474 default
7475 )]
7476 pub remark: Option<String>,
7477}
7478
7479#[derive(Debug, Clone, Serialize, Deserialize)]
7480pub struct MeteSignificancy {
7481 #[serde(alias = "@type", rename = "type")]
7485 pub ty: String,
7486 #[serde(
7490 alias = "@refID",
7491 rename = "refID",
7492 skip_serializing_if = "Option::is_none"
7493 )]
7494 pub ref_id: Option<u8>,
7495 #[serde(
7499 alias = "Sentence",
7500 rename = "sentence",
7501 skip_serializing_if = "Option::is_none"
7502 )]
7503 pub sentence: Option<MeteSentence>,
7504 #[serde(alias = "Name", rename = "name", deserialize_with = "trim_string")]
7508 pub name: String,
7509 #[serde(alias = "Code", rename = "code", deserialize_with = "trim_string")]
7513 pub code: String,
7514 #[serde(
7518 alias = "Condition",
7519 rename = "condition",
7520 skip_serializing_if = "Option::is_none",
7521 deserialize_with = "trim_opt_string",
7522 default
7523 )]
7524 pub condition: Option<String>,
7525 #[serde(
7529 alias = "Remark",
7530 rename = "remark",
7531 skip_serializing_if = "Option::is_none",
7532 deserialize_with = "trim_opt_string",
7533 default
7534 )]
7535 pub remark: Option<String>,
7536}
7537
7538#[derive(Debug, Clone, Serialize, Deserialize)]
7539pub struct MeteSignificancyPart {
7540 #[serde(alias = "Base", rename = "base")]
7544 pub base: MeteBaseSignificancy,
7545}
7546
7547#[derive(Debug, Clone, Serialize, Deserialize)]
7548pub struct MeteSnowDepthPart {
7549 #[serde(
7553 alias = "Sentence",
7554 rename = "sentence",
7555 skip_serializing_if = "Option::is_none"
7556 )]
7557 pub sentence: Option<MeteSentence>,
7558 #[serde(
7562 alias = "Base",
7563 rename = "base",
7564 skip_serializing_if = "Option::is_none"
7565 )]
7566 pub base: Option<MeteBaseSnowDepth>,
7567 #[serde(
7569 alias = "SnowDepth",
7570 rename = "snowDepths",
7571 skip_serializing_if = "Vec::is_empty",
7572 default
7573 )]
7574 pub snow_depths: Vec<EbSnowDepth>,
7575 #[serde(
7579 alias = "Time",
7580 rename = "time",
7581 skip_serializing_if = "Option::is_none"
7582 )]
7583 pub time: Option<DateTime>,
7584 #[serde(
7586 alias = "Remark",
7587 rename = "remark",
7588 skip_serializing_if = "Option::is_none",
7589 deserialize_with = "trim_opt_string",
7590 default
7591 )]
7592 pub remark: Option<String>,
7593}
7594
7595#[derive(Debug, Clone, Serialize, Deserialize)]
7596pub struct MeteSnowfallDepthPart {
7597 #[serde(
7601 alias = "@refID",
7602 rename = "refID",
7603 skip_serializing_if = "Option::is_none"
7604 )]
7605 pub ref_id: Option<u8>,
7606 #[serde(
7610 alias = "Sentence",
7611 rename = "sentence",
7612 skip_serializing_if = "Option::is_none"
7613 )]
7614 pub sentence: Option<MeteSentence>,
7615 #[serde(
7619 alias = "Base",
7620 rename = "base",
7621 skip_serializing_if = "Option::is_none"
7622 )]
7623 pub base: Option<MeteBaseSnowfallDepth>,
7624 #[serde(
7628 alias = "Temporary",
7629 rename = "temporaries",
7630 skip_serializing_if = "Vec::is_empty",
7631 default
7632 )]
7633 pub temporaries: Vec<MeteBaseSnowfallDepth>,
7634 #[serde(
7638 alias = "Becoming",
7639 rename = "becomings",
7640 skip_serializing_if = "Vec::is_empty",
7641 default
7642 )]
7643 pub becomings: Vec<MeteBaseSnowfallDepth>,
7644 #[serde(
7648 alias = "SubArea",
7649 rename = "subAreas",
7650 skip_serializing_if = "Vec::is_empty",
7651 default
7652 )]
7653 pub sub_areas: Vec<MeteSubAreaSnowfallDepth>,
7654 #[serde(
7656 alias = "SnowfallDepth",
7657 rename = "snowfallDepths",
7658 skip_serializing_if = "Vec::is_empty",
7659 default
7660 )]
7661 pub snowfall_depths: Vec<EbSnowfallDepth>,
7662 #[serde(
7666 alias = "Time",
7667 rename = "time",
7668 skip_serializing_if = "Option::is_none"
7669 )]
7670 pub time: Option<DateTime>,
7671 #[serde(
7673 alias = "Remark",
7674 rename = "remark",
7675 skip_serializing_if = "Option::is_none",
7676 deserialize_with = "trim_opt_string",
7677 default
7678 )]
7679 pub remark: Option<String>,
7680}
7681
7682#[derive(Debug, Clone, Serialize, Deserialize)]
7683pub struct MeteSolarZenithAnglePart {
7684 #[serde(alias = "SolarZenithAngle", rename = "solarZenithAngles")]
7686 pub solar_zenith_angles: Vec<EbSolarZenithAngle>,
7687}
7688
7689#[derive(Debug, Clone, Serialize, Deserialize)]
7690pub struct MeteStation {
7691 #[serde(alias = "Name", rename = "name", deserialize_with = "trim_string")]
7695 pub name: String,
7696 #[serde(alias = "Code", rename = "codes")]
7698 pub codes: Vec<MeteStationCode>,
7699 #[serde(
7701 alias = "Location",
7702 rename = "location",
7703 skip_serializing_if = "Option::is_none",
7704 deserialize_with = "trim_opt_string",
7705 default
7706 )]
7707 pub location: Option<String>,
7708 #[serde(
7712 alias = "Status",
7713 rename = "status",
7714 skip_serializing_if = "Option::is_none"
7715 )]
7716 pub status: Option<String>,
7717 #[serde(
7719 alias = "Coordinate",
7720 rename = "coordinates",
7721 skip_serializing_if = "Vec::is_empty",
7722 default
7723 )]
7724 pub coordinates: Vec<EbCoordinate>,
7725}
7726
7727#[derive(Debug, Clone, Serialize, Deserialize)]
7728pub struct MeteStationCode {
7729 #[serde(
7730 alias = "$text",
7731 rename = "value",
7732 default,
7733 deserialize_with = "trim_string"
7734 )]
7735 pub value: String,
7736 #[serde(
7740 alias = "@type",
7741 rename = "type",
7742 skip_serializing_if = "Option::is_none"
7743 )]
7744 pub ty: Option<String>,
7745}
7746
7747#[derive(Debug, Clone, Serialize, Deserialize)]
7748pub struct MeteStations {
7749 #[serde(
7753 alias = "@codeType",
7754 rename = "codeType",
7755 skip_serializing_if = "Option::is_none"
7756 )]
7757 pub code_type: Option<String>,
7758 #[serde(alias = "Station", rename = "stations")]
7762 pub stations: Vec<MeteStation>,
7763}
7764
7765#[derive(Debug, Clone, Serialize, Deserialize)]
7766pub struct MeteSubAreaHumidity {
7767 #[serde(
7771 alias = "AreaName",
7772 rename = "areaName",
7773 skip_serializing_if = "Option::is_none",
7774 deserialize_with = "trim_opt_string",
7775 default
7776 )]
7777 pub area_name: Option<String>,
7778 #[serde(
7782 alias = "Sentence",
7783 rename = "sentence",
7784 skip_serializing_if = "Option::is_none"
7785 )]
7786 pub sentence: Option<MeteSentence>,
7787 #[serde(
7791 alias = "Base",
7792 rename = "base",
7793 skip_serializing_if = "Option::is_none"
7794 )]
7795 pub base: Option<MeteBaseHumidity>,
7796 #[serde(
7800 alias = "Temporary",
7801 rename = "temporaries",
7802 skip_serializing_if = "Vec::is_empty",
7803 default
7804 )]
7805 pub temporaries: Vec<MeteBaseHumidity>,
7806 #[serde(
7810 alias = "Becoming",
7811 rename = "becomings",
7812 skip_serializing_if = "Vec::is_empty",
7813 default
7814 )]
7815 pub becomings: Vec<MeteBaseHumidity>,
7816 #[serde(
7820 alias = "Local",
7821 rename = "locals",
7822 skip_serializing_if = "Vec::is_empty",
7823 default
7824 )]
7825 pub locals: Vec<MeteLocalHumidity>,
7826 #[serde(
7828 alias = "Humidity",
7829 rename = "humidities",
7830 skip_serializing_if = "Vec::is_empty",
7831 default
7832 )]
7833 pub humidities: Vec<EbHumidity>,
7834 #[serde(
7838 alias = "Time",
7839 rename = "time",
7840 skip_serializing_if = "Option::is_none"
7841 )]
7842 pub time: Option<DateTime>,
7843 #[serde(
7845 alias = "Remark",
7846 rename = "remark",
7847 skip_serializing_if = "Option::is_none",
7848 deserialize_with = "trim_opt_string",
7849 default
7850 )]
7851 pub remark: Option<String>,
7852}
7853
7854#[derive(Debug, Clone, Serialize, Deserialize)]
7855pub struct MeteSubAreaIcing {
7856 #[serde(
7860 alias = "AreaName",
7861 rename = "areaName",
7862 skip_serializing_if = "Option::is_none",
7863 deserialize_with = "trim_opt_string",
7864 default
7865 )]
7866 pub area_name: Option<String>,
7867 #[serde(
7871 alias = "Sentence",
7872 rename = "sentence",
7873 skip_serializing_if = "Option::is_none"
7874 )]
7875 pub sentence: Option<MeteSentence>,
7876 #[serde(
7880 alias = "Base",
7881 rename = "base",
7882 skip_serializing_if = "Option::is_none"
7883 )]
7884 pub base: Option<MeteBaseIcing>,
7885 #[serde(
7889 alias = "Temporary",
7890 rename = "temporaries",
7891 skip_serializing_if = "Vec::is_empty",
7892 default
7893 )]
7894 pub temporaries: Vec<MeteBaseIcing>,
7895 #[serde(
7899 alias = "Becoming",
7900 rename = "becomings",
7901 skip_serializing_if = "Vec::is_empty",
7902 default
7903 )]
7904 pub becomings: Vec<MeteBaseIcing>,
7905 #[serde(
7909 alias = "Local",
7910 rename = "locals",
7911 skip_serializing_if = "Vec::is_empty",
7912 default
7913 )]
7914 pub locals: Vec<MeteLocalIcing>,
7915 #[serde(
7917 alias = "Icing",
7918 rename = "icings",
7919 skip_serializing_if = "Vec::is_empty",
7920 default
7921 )]
7922 pub icings: Vec<EbIcing>,
7923 #[serde(
7927 alias = "Time",
7928 rename = "time",
7929 skip_serializing_if = "Option::is_none"
7930 )]
7931 pub time: Option<DateTime>,
7932 #[serde(
7934 alias = "Remark",
7935 rename = "remark",
7936 skip_serializing_if = "Option::is_none",
7937 deserialize_with = "trim_opt_string",
7938 default
7939 )]
7940 pub remark: Option<String>,
7941}
7942
7943#[derive(Debug, Clone, Serialize, Deserialize)]
7944pub struct MeteSubAreaPrecipitation {
7945 #[serde(
7949 alias = "AreaName",
7950 rename = "areaName",
7951 skip_serializing_if = "Option::is_none",
7952 deserialize_with = "trim_opt_string",
7953 default
7954 )]
7955 pub area_name: Option<String>,
7956 #[serde(
7960 alias = "Sentence",
7961 rename = "sentence",
7962 skip_serializing_if = "Option::is_none"
7963 )]
7964 pub sentence: Option<MeteSentence>,
7965 #[serde(
7969 alias = "Base",
7970 rename = "base",
7971 skip_serializing_if = "Option::is_none"
7972 )]
7973 pub base: Option<MeteBasePrecipitation>,
7974 #[serde(
7978 alias = "Temporary",
7979 rename = "temporaries",
7980 skip_serializing_if = "Vec::is_empty",
7981 default
7982 )]
7983 pub temporaries: Vec<MeteBasePrecipitation>,
7984 #[serde(
7988 alias = "Becoming",
7989 rename = "becomings",
7990 skip_serializing_if = "Vec::is_empty",
7991 default
7992 )]
7993 pub becomings: Vec<MeteBasePrecipitation>,
7994 #[serde(
7998 alias = "Local",
7999 rename = "locals",
8000 skip_serializing_if = "Vec::is_empty",
8001 default
8002 )]
8003 pub locals: Vec<MeteLocalPrecipitation>,
8004 #[serde(
8006 alias = "Precipitation",
8007 rename = "precipitations",
8008 skip_serializing_if = "Vec::is_empty",
8009 default
8010 )]
8011 pub precipitations: Vec<EbPrecipitation>,
8012 #[serde(
8016 alias = "Time",
8017 rename = "time",
8018 skip_serializing_if = "Option::is_none"
8019 )]
8020 pub time: Option<DateTime>,
8021 #[serde(
8023 alias = "Remark",
8024 rename = "remark",
8025 skip_serializing_if = "Option::is_none",
8026 deserialize_with = "trim_opt_string",
8027 default
8028 )]
8029 pub remark: Option<String>,
8030}
8031
8032#[derive(Debug, Clone, Serialize, Deserialize)]
8033pub struct MeteSubAreaPressure {
8034 #[serde(
8038 alias = "AreaName",
8039 rename = "areaName",
8040 skip_serializing_if = "Option::is_none",
8041 deserialize_with = "trim_opt_string",
8042 default
8043 )]
8044 pub area_name: Option<String>,
8045 #[serde(
8049 alias = "Sentence",
8050 rename = "sentence",
8051 skip_serializing_if = "Option::is_none"
8052 )]
8053 pub sentence: Option<MeteSentence>,
8054 #[serde(
8058 alias = "Base",
8059 rename = "base",
8060 skip_serializing_if = "Option::is_none"
8061 )]
8062 pub base: Option<MeteBasePressure>,
8063 #[serde(
8067 alias = "Temporary",
8068 rename = "temporaries",
8069 skip_serializing_if = "Vec::is_empty",
8070 default
8071 )]
8072 pub temporaries: Vec<MeteBasePressure>,
8073 #[serde(
8077 alias = "Becoming",
8078 rename = "becomings",
8079 skip_serializing_if = "Vec::is_empty",
8080 default
8081 )]
8082 pub becomings: Vec<MeteBasePressure>,
8083 #[serde(
8087 alias = "Local",
8088 rename = "locals",
8089 skip_serializing_if = "Vec::is_empty",
8090 default
8091 )]
8092 pub locals: Vec<MeteLocalPressure>,
8093 #[serde(
8095 alias = "Pressure",
8096 rename = "pressures",
8097 skip_serializing_if = "Vec::is_empty",
8098 default
8099 )]
8100 pub pressures: Vec<EbPressure>,
8101 #[serde(
8105 alias = "Time",
8106 rename = "time",
8107 skip_serializing_if = "Option::is_none"
8108 )]
8109 pub time: Option<DateTime>,
8110 #[serde(
8112 alias = "Remark",
8113 rename = "remark",
8114 skip_serializing_if = "Option::is_none",
8115 deserialize_with = "trim_opt_string",
8116 default
8117 )]
8118 pub remark: Option<String>,
8119}
8120
8121#[derive(Debug, Clone, Serialize, Deserialize)]
8122pub struct MeteSubAreaSeaIce {
8123 #[serde(
8127 alias = "AreaName",
8128 rename = "areaName",
8129 skip_serializing_if = "Option::is_none",
8130 deserialize_with = "trim_opt_string",
8131 default
8132 )]
8133 pub area_name: Option<String>,
8134 #[serde(
8138 alias = "Sentence",
8139 rename = "sentence",
8140 skip_serializing_if = "Option::is_none"
8141 )]
8142 pub sentence: Option<MeteSentence>,
8143 #[serde(
8147 alias = "Base",
8148 rename = "base",
8149 skip_serializing_if = "Option::is_none"
8150 )]
8151 pub base: Option<MeteBaseSeaIce>,
8152 #[serde(
8156 alias = "Temporary",
8157 rename = "temporaries",
8158 skip_serializing_if = "Vec::is_empty",
8159 default
8160 )]
8161 pub temporaries: Vec<MeteBaseSeaIce>,
8162 #[serde(
8166 alias = "Becoming",
8167 rename = "becomings",
8168 skip_serializing_if = "Vec::is_empty",
8169 default
8170 )]
8171 pub becomings: Vec<MeteBaseSeaIce>,
8172 #[serde(
8176 alias = "Local",
8177 rename = "locals",
8178 skip_serializing_if = "Vec::is_empty",
8179 default
8180 )]
8181 pub locals: Vec<MeteLocalSeaIce>,
8182 #[serde(
8184 alias = "SeaIce",
8185 rename = "seaIces",
8186 skip_serializing_if = "Vec::is_empty",
8187 default
8188 )]
8189 pub sea_ices: Vec<EbSeaIce>,
8190 #[serde(
8194 alias = "Time",
8195 rename = "time",
8196 skip_serializing_if = "Option::is_none"
8197 )]
8198 pub time: Option<DateTime>,
8199 #[serde(
8201 alias = "Remark",
8202 rename = "remark",
8203 skip_serializing_if = "Option::is_none",
8204 deserialize_with = "trim_opt_string",
8205 default
8206 )]
8207 pub remark: Option<String>,
8208}
8209
8210#[derive(Debug, Clone, Serialize, Deserialize)]
8211pub struct MeteSubAreaSnowfallDepth {
8212 #[serde(
8216 alias = "AreaName",
8217 rename = "areaName",
8218 skip_serializing_if = "Option::is_none",
8219 deserialize_with = "trim_opt_string",
8220 default
8221 )]
8222 pub area_name: Option<String>,
8223 #[serde(
8227 alias = "Sentence",
8228 rename = "sentence",
8229 skip_serializing_if = "Option::is_none"
8230 )]
8231 pub sentence: Option<MeteSentence>,
8232 #[serde(
8236 alias = "Base",
8237 rename = "base",
8238 skip_serializing_if = "Option::is_none"
8239 )]
8240 pub base: Option<MeteBaseSnowfallDepth>,
8241 #[serde(
8245 alias = "Temporary",
8246 rename = "temporaries",
8247 skip_serializing_if = "Vec::is_empty",
8248 default
8249 )]
8250 pub temporaries: Vec<MeteBaseSnowfallDepth>,
8251 #[serde(
8255 alias = "Becoming",
8256 rename = "becomings",
8257 skip_serializing_if = "Vec::is_empty",
8258 default
8259 )]
8260 pub becomings: Vec<MeteBaseSnowfallDepth>,
8261 #[serde(
8265 alias = "Local",
8266 rename = "locals",
8267 skip_serializing_if = "Vec::is_empty",
8268 default
8269 )]
8270 pub locals: Vec<MeteLocalSnowfallDepth>,
8271 #[serde(
8273 alias = "SnowfallDepth",
8274 rename = "snowfallDepths",
8275 skip_serializing_if = "Vec::is_empty",
8276 default
8277 )]
8278 pub snowfall_depths: Vec<EbSnowfallDepth>,
8279 #[serde(
8283 alias = "Time",
8284 rename = "time",
8285 skip_serializing_if = "Option::is_none"
8286 )]
8287 pub time: Option<DateTime>,
8288 #[serde(
8290 alias = "Remark",
8291 rename = "remark",
8292 skip_serializing_if = "Option::is_none",
8293 deserialize_with = "trim_opt_string",
8294 default
8295 )]
8296 pub remark: Option<String>,
8297}
8298
8299#[derive(Debug, Clone, Serialize, Deserialize)]
8300pub struct MeteSubAreaTemperature {
8301 #[serde(
8305 alias = "AreaName",
8306 rename = "areaName",
8307 skip_serializing_if = "Option::is_none",
8308 deserialize_with = "trim_opt_string",
8309 default
8310 )]
8311 pub area_name: Option<String>,
8312 #[serde(
8316 alias = "Sentence",
8317 rename = "sentence",
8318 skip_serializing_if = "Option::is_none"
8319 )]
8320 pub sentence: Option<MeteSentence>,
8321 #[serde(
8325 alias = "Base",
8326 rename = "base",
8327 skip_serializing_if = "Option::is_none"
8328 )]
8329 pub base: Option<MeteBaseTemperature>,
8330 #[serde(
8334 alias = "Temporary",
8335 rename = "temporaries",
8336 skip_serializing_if = "Vec::is_empty",
8337 default
8338 )]
8339 pub temporaries: Vec<MeteBaseTemperature>,
8340 #[serde(
8344 alias = "Becoming",
8345 rename = "becomings",
8346 skip_serializing_if = "Vec::is_empty",
8347 default
8348 )]
8349 pub becomings: Vec<MeteBaseTemperature>,
8350 #[serde(
8354 alias = "Local",
8355 rename = "locals",
8356 skip_serializing_if = "Vec::is_empty",
8357 default
8358 )]
8359 pub locals: Vec<MeteLocalTemperature>,
8360 #[serde(
8362 alias = "Temperature",
8363 rename = "temperatures",
8364 skip_serializing_if = "Vec::is_empty",
8365 default
8366 )]
8367 pub temperatures: Vec<EbTemperature>,
8368 #[serde(
8372 alias = "Time",
8373 rename = "time",
8374 skip_serializing_if = "Option::is_none"
8375 )]
8376 pub time: Option<DateTime>,
8377 #[serde(
8379 alias = "Remark",
8380 rename = "remark",
8381 skip_serializing_if = "Option::is_none",
8382 deserialize_with = "trim_opt_string",
8383 default
8384 )]
8385 pub remark: Option<String>,
8386}
8387
8388#[derive(Debug, Clone, Serialize, Deserialize)]
8389pub struct MeteSubAreaTidalLevel {
8390 #[serde(
8394 alias = "AreaName",
8395 rename = "areaName",
8396 skip_serializing_if = "Option::is_none",
8397 deserialize_with = "trim_opt_string",
8398 default
8399 )]
8400 pub area_name: Option<String>,
8401 #[serde(
8405 alias = "Sentence",
8406 rename = "sentence",
8407 skip_serializing_if = "Option::is_none"
8408 )]
8409 pub sentence: Option<MeteSentence>,
8410 #[serde(
8414 alias = "Base",
8415 rename = "base",
8416 skip_serializing_if = "Option::is_none"
8417 )]
8418 pub base: Option<MeteBaseTidalLevel>,
8419 #[serde(
8423 alias = "Temporary",
8424 rename = "temporaries",
8425 skip_serializing_if = "Vec::is_empty",
8426 default
8427 )]
8428 pub temporaries: Vec<MeteBaseTidalLevel>,
8429 #[serde(
8433 alias = "Becoming",
8434 rename = "becomings",
8435 skip_serializing_if = "Vec::is_empty",
8436 default
8437 )]
8438 pub becomings: Vec<MeteBaseTidalLevel>,
8439 #[serde(
8443 alias = "Local",
8444 rename = "locals",
8445 skip_serializing_if = "Vec::is_empty",
8446 default
8447 )]
8448 pub locals: Vec<MeteLocalTidalLevel>,
8449 #[serde(
8451 alias = "TidalLevel",
8452 rename = "tidalLevels",
8453 skip_serializing_if = "Vec::is_empty",
8454 default
8455 )]
8456 pub tidal_levels: Vec<EbTidalLevel>,
8457 #[serde(
8461 alias = "TidalPeriod",
8462 rename = "tidalPeriods",
8463 skip_serializing_if = "Vec::is_empty",
8464 default
8465 )]
8466 pub tidal_periods: Vec<EbTidalPeriod>,
8467 #[serde(
8471 alias = "Time",
8472 rename = "time",
8473 skip_serializing_if = "Option::is_none"
8474 )]
8475 pub time: Option<DateTime>,
8476 #[serde(
8480 alias = "Sequence",
8481 rename = "sequences",
8482 skip_serializing_if = "Vec::is_empty",
8483 default
8484 )]
8485 pub sequences: Vec<MeteSequenceTidalLevel>,
8486 #[serde(
8488 alias = "Remark",
8489 rename = "remark",
8490 skip_serializing_if = "Option::is_none",
8491 deserialize_with = "trim_opt_string",
8492 default
8493 )]
8494 pub remark: Option<String>,
8495}
8496
8497#[derive(Debug, Clone, Serialize, Deserialize)]
8498pub struct MeteSubAreaVisibility {
8499 #[serde(
8503 alias = "AreaName",
8504 rename = "areaName",
8505 skip_serializing_if = "Option::is_none",
8506 deserialize_with = "trim_opt_string",
8507 default
8508 )]
8509 pub area_name: Option<String>,
8510 #[serde(
8514 alias = "Sentence",
8515 rename = "sentence",
8516 skip_serializing_if = "Option::is_none"
8517 )]
8518 pub sentence: Option<MeteSentence>,
8519 #[serde(
8523 alias = "Base",
8524 rename = "base",
8525 skip_serializing_if = "Option::is_none"
8526 )]
8527 pub base: Option<MeteBaseVisibility>,
8528 #[serde(
8532 alias = "Temporary",
8533 rename = "temporaries",
8534 skip_serializing_if = "Vec::is_empty",
8535 default
8536 )]
8537 pub temporaries: Vec<MeteBaseVisibility>,
8538 #[serde(
8542 alias = "Becoming",
8543 rename = "becomings",
8544 skip_serializing_if = "Vec::is_empty",
8545 default
8546 )]
8547 pub becomings: Vec<MeteBaseVisibility>,
8548 #[serde(
8552 alias = "Local",
8553 rename = "locals",
8554 skip_serializing_if = "Vec::is_empty",
8555 default
8556 )]
8557 pub locals: Vec<MeteLocalVisibility>,
8558 #[serde(
8560 alias = "Visibility",
8561 rename = "visibilities",
8562 skip_serializing_if = "Vec::is_empty",
8563 default
8564 )]
8565 pub visibilities: Vec<EbVisibility>,
8566 #[serde(
8570 alias = "Time",
8571 rename = "time",
8572 skip_serializing_if = "Option::is_none"
8573 )]
8574 pub time: Option<DateTime>,
8575 #[serde(
8577 alias = "Remark",
8578 rename = "remark",
8579 skip_serializing_if = "Option::is_none",
8580 deserialize_with = "trim_opt_string",
8581 default
8582 )]
8583 pub remark: Option<String>,
8584}
8585
8586#[derive(Debug, Clone, Serialize, Deserialize)]
8587pub struct MeteSubAreaWaveHeight {
8588 #[serde(
8592 alias = "AreaName",
8593 rename = "areaName",
8594 skip_serializing_if = "Option::is_none",
8595 deserialize_with = "trim_opt_string",
8596 default
8597 )]
8598 pub area_name: Option<String>,
8599 #[serde(
8603 alias = "Sentence",
8604 rename = "sentence",
8605 skip_serializing_if = "Option::is_none"
8606 )]
8607 pub sentence: Option<MeteSentence>,
8608 #[serde(
8612 alias = "Base",
8613 rename = "base",
8614 skip_serializing_if = "Option::is_none"
8615 )]
8616 pub base: Option<MeteBaseWaveHeight>,
8617 #[serde(
8621 alias = "Temporary",
8622 rename = "temporaries",
8623 skip_serializing_if = "Vec::is_empty",
8624 default
8625 )]
8626 pub temporaries: Vec<MeteBaseWaveHeight>,
8627 #[serde(
8631 alias = "Becoming",
8632 rename = "becomings",
8633 skip_serializing_if = "Vec::is_empty",
8634 default
8635 )]
8636 pub becomings: Vec<MeteBaseWaveHeight>,
8637 #[serde(
8641 alias = "Local",
8642 rename = "locals",
8643 skip_serializing_if = "Vec::is_empty",
8644 default
8645 )]
8646 pub locals: Vec<MeteLocalWaveHeight>,
8647 #[serde(
8649 alias = "WaveHeight",
8650 rename = "waveHeights",
8651 skip_serializing_if = "Vec::is_empty",
8652 default
8653 )]
8654 pub wave_heights: Vec<EbWaveHeight>,
8655 #[serde(
8659 alias = "Time",
8660 rename = "time",
8661 skip_serializing_if = "Option::is_none"
8662 )]
8663 pub time: Option<DateTime>,
8664 #[serde(
8666 alias = "Remark",
8667 rename = "remark",
8668 skip_serializing_if = "Option::is_none",
8669 deserialize_with = "trim_opt_string",
8670 default
8671 )]
8672 pub remark: Option<String>,
8673}
8674
8675#[derive(Debug, Clone, Serialize, Deserialize)]
8676pub struct MeteSubAreaWeather {
8677 #[serde(
8681 alias = "AreaName",
8682 rename = "areaName",
8683 skip_serializing_if = "Option::is_none",
8684 deserialize_with = "trim_opt_string",
8685 default
8686 )]
8687 pub area_name: Option<String>,
8688 #[serde(
8692 alias = "Sentence",
8693 rename = "sentence",
8694 skip_serializing_if = "Option::is_none"
8695 )]
8696 pub sentence: Option<MeteSentence>,
8697 #[serde(
8701 alias = "Base",
8702 rename = "base",
8703 skip_serializing_if = "Option::is_none"
8704 )]
8705 pub base: Option<MeteBaseWeather>,
8706 #[serde(
8710 alias = "Temporary",
8711 rename = "temporaries",
8712 skip_serializing_if = "Vec::is_empty",
8713 default
8714 )]
8715 pub temporaries: Vec<MeteBaseWeather>,
8716 #[serde(
8720 alias = "Becoming",
8721 rename = "becomings",
8722 skip_serializing_if = "Vec::is_empty",
8723 default
8724 )]
8725 pub becomings: Vec<MeteBaseWeather>,
8726 #[serde(
8730 alias = "Local",
8731 rename = "locals",
8732 skip_serializing_if = "Vec::is_empty",
8733 default
8734 )]
8735 pub locals: Vec<MeteLocalWeather>,
8736 #[serde(
8738 alias = "Weather",
8739 rename = "weathers",
8740 skip_serializing_if = "Vec::is_empty",
8741 default
8742 )]
8743 pub weathers: Vec<EbWeather>,
8744 #[serde(
8748 alias = "Time",
8749 rename = "time",
8750 skip_serializing_if = "Option::is_none"
8751 )]
8752 pub time: Option<DateTime>,
8753 #[serde(
8755 alias = "Remark",
8756 rename = "remark",
8757 skip_serializing_if = "Option::is_none",
8758 deserialize_with = "trim_opt_string",
8759 default
8760 )]
8761 pub remark: Option<String>,
8762}
8763
8764#[derive(Debug, Clone, Serialize, Deserialize)]
8765pub struct MeteSubAreaWind {
8766 #[serde(
8770 alias = "AreaName",
8771 rename = "areaName",
8772 skip_serializing_if = "Option::is_none",
8773 deserialize_with = "trim_opt_string",
8774 default
8775 )]
8776 pub area_name: Option<String>,
8777 #[serde(
8781 alias = "Sentence",
8782 rename = "sentence",
8783 skip_serializing_if = "Option::is_none"
8784 )]
8785 pub sentence: Option<MeteSentence>,
8786 #[serde(
8790 alias = "Base",
8791 rename = "base",
8792 skip_serializing_if = "Option::is_none"
8793 )]
8794 pub base: Option<MeteBaseWind>,
8795 #[serde(
8799 alias = "Temporary",
8800 rename = "temporaries",
8801 skip_serializing_if = "Vec::is_empty",
8802 default
8803 )]
8804 pub temporaries: Vec<MeteBaseWind>,
8805 #[serde(
8809 alias = "Becoming",
8810 rename = "becomings",
8811 skip_serializing_if = "Vec::is_empty",
8812 default
8813 )]
8814 pub becomings: Vec<MeteBaseWind>,
8815 #[serde(
8819 alias = "Local",
8820 rename = "locals",
8821 skip_serializing_if = "Vec::is_empty",
8822 default
8823 )]
8824 pub locals: Vec<MeteLocalWind>,
8825 #[serde(
8827 alias = "WindDirection",
8828 rename = "windDirections",
8829 skip_serializing_if = "Vec::is_empty",
8830 default
8831 )]
8832 pub wind_directions: Vec<EbWindDirection>,
8833 #[serde(
8837 alias = "WindDegree",
8838 rename = "windDegrees",
8839 skip_serializing_if = "Vec::is_empty",
8840 default
8841 )]
8842 pub wind_degrees: Vec<EbWindDegree>,
8843 #[serde(
8845 alias = "WindSpeed",
8846 rename = "windSpeeds",
8847 skip_serializing_if = "Vec::is_empty",
8848 default
8849 )]
8850 pub wind_speeds: Vec<EbWindSpeed>,
8851 #[serde(
8853 alias = "WindScale",
8854 rename = "windScales",
8855 skip_serializing_if = "Vec::is_empty",
8856 default
8857 )]
8858 pub wind_scales: Vec<EbWindScale>,
8859 #[serde(
8863 alias = "Time",
8864 rename = "time",
8865 skip_serializing_if = "Option::is_none"
8866 )]
8867 pub time: Option<DateTime>,
8868 #[serde(
8870 alias = "Remark",
8871 rename = "remark",
8872 skip_serializing_if = "Option::is_none",
8873 deserialize_with = "trim_opt_string",
8874 default
8875 )]
8876 pub remark: Option<String>,
8877}
8878
8879#[derive(Debug, Clone, Serialize, Deserialize)]
8880pub struct MeteSubAreaWindDirection {
8881 #[serde(
8885 alias = "AreaName",
8886 rename = "areaName",
8887 skip_serializing_if = "Option::is_none",
8888 deserialize_with = "trim_opt_string",
8889 default
8890 )]
8891 pub area_name: Option<String>,
8892 #[serde(
8896 alias = "Sentence",
8897 rename = "sentence",
8898 skip_serializing_if = "Option::is_none"
8899 )]
8900 pub sentence: Option<MeteSentence>,
8901 #[serde(
8905 alias = "Base",
8906 rename = "base",
8907 skip_serializing_if = "Option::is_none"
8908 )]
8909 pub base: Option<MeteBaseWindDirection>,
8910 #[serde(
8914 alias = "Temporary",
8915 rename = "temporaries",
8916 skip_serializing_if = "Vec::is_empty",
8917 default
8918 )]
8919 pub temporaries: Vec<MeteBaseWindDirection>,
8920 #[serde(
8924 alias = "Becoming",
8925 rename = "becomings",
8926 skip_serializing_if = "Vec::is_empty",
8927 default
8928 )]
8929 pub becomings: Vec<MeteBaseWindDirection>,
8930 #[serde(
8934 alias = "Local",
8935 rename = "locals",
8936 skip_serializing_if = "Vec::is_empty",
8937 default
8938 )]
8939 pub locals: Vec<MeteLocalWindDirection>,
8940 #[serde(
8942 alias = "WindDirection",
8943 rename = "windDirections",
8944 skip_serializing_if = "Vec::is_empty",
8945 default
8946 )]
8947 pub wind_directions: Vec<EbWindDirection>,
8948 #[serde(
8952 alias = "Time",
8953 rename = "time",
8954 skip_serializing_if = "Option::is_none"
8955 )]
8956 pub time: Option<DateTime>,
8957 #[serde(
8959 alias = "Remark",
8960 rename = "remark",
8961 skip_serializing_if = "Option::is_none",
8962 deserialize_with = "trim_opt_string",
8963 default
8964 )]
8965 pub remark: Option<String>,
8966}
8967
8968#[derive(Debug, Clone, Serialize, Deserialize)]
8969pub struct MeteSubAreaWindSpeed {
8970 #[serde(
8974 alias = "AreaName",
8975 rename = "areaName",
8976 skip_serializing_if = "Option::is_none",
8977 deserialize_with = "trim_opt_string",
8978 default
8979 )]
8980 pub area_name: Option<String>,
8981 #[serde(
8985 alias = "Sentence",
8986 rename = "sentence",
8987 skip_serializing_if = "Option::is_none"
8988 )]
8989 pub sentence: Option<MeteSentence>,
8990 #[serde(
8994 alias = "Base",
8995 rename = "base",
8996 skip_serializing_if = "Option::is_none"
8997 )]
8998 pub base: Option<MeteBaseWindSpeed>,
8999 #[serde(
9003 alias = "Temporary",
9004 rename = "temporaries",
9005 skip_serializing_if = "Vec::is_empty",
9006 default
9007 )]
9008 pub temporaries: Vec<MeteBaseWindSpeed>,
9009 #[serde(
9013 alias = "Becoming",
9014 rename = "becomings",
9015 skip_serializing_if = "Vec::is_empty",
9016 default
9017 )]
9018 pub becomings: Vec<MeteBaseWindSpeed>,
9019 #[serde(
9023 alias = "Local",
9024 rename = "locals",
9025 skip_serializing_if = "Vec::is_empty",
9026 default
9027 )]
9028 pub locals: Vec<MeteLocalWindSpeed>,
9029 #[serde(
9031 alias = "WindSpeed",
9032 rename = "windSpeeds",
9033 skip_serializing_if = "Vec::is_empty",
9034 default
9035 )]
9036 pub wind_speeds: Vec<EbWindSpeed>,
9037 #[serde(
9041 alias = "Time",
9042 rename = "time",
9043 skip_serializing_if = "Option::is_none"
9044 )]
9045 pub time: Option<DateTime>,
9046 #[serde(
9048 alias = "Remark",
9049 rename = "remark",
9050 skip_serializing_if = "Option::is_none",
9051 deserialize_with = "trim_opt_string",
9052 default
9053 )]
9054 pub remark: Option<String>,
9055}
9056
9057#[derive(Debug, Clone, Serialize, Deserialize)]
9058pub struct MeteSunshinePart {
9059 #[serde(
9063 alias = "Base",
9064 rename = "base",
9065 skip_serializing_if = "Option::is_none"
9066 )]
9067 pub base: Option<MeteBaseSunshine>,
9068 #[serde(
9070 alias = "Sunshine",
9071 rename = "sunshines",
9072 skip_serializing_if = "Vec::is_empty",
9073 default
9074 )]
9075 pub sunshines: Vec<EbSunshine>,
9076 #[serde(
9080 alias = "Time",
9081 rename = "time",
9082 skip_serializing_if = "Option::is_none"
9083 )]
9084 pub time: Option<DateTime>,
9085 #[serde(
9087 alias = "Remark",
9088 rename = "remark",
9089 skip_serializing_if = "Option::is_none",
9090 deserialize_with = "trim_opt_string",
9091 default
9092 )]
9093 pub remark: Option<String>,
9094}
9095
9096#[derive(Debug, Clone, Serialize, Deserialize)]
9097pub struct MeteSynopsisPart {
9098 #[serde(alias = "Synopsis", rename = "synopses")]
9100 pub synopses: Vec<EbSynopsis>,
9101 #[serde(
9105 alias = "Time",
9106 rename = "time",
9107 skip_serializing_if = "Option::is_none"
9108 )]
9109 pub time: Option<DateTime>,
9110 #[serde(
9112 alias = "Remark",
9113 rename = "remark",
9114 skip_serializing_if = "Option::is_none",
9115 deserialize_with = "trim_opt_string",
9116 default
9117 )]
9118 pub remark: Option<String>,
9119}
9120
9121#[derive(Debug, Clone, Serialize, Deserialize)]
9122pub struct MeteTemperaturePart {
9123 #[serde(
9127 alias = "Sentence",
9128 rename = "sentence",
9129 skip_serializing_if = "Option::is_none"
9130 )]
9131 pub sentence: Option<MeteSentence>,
9132 #[serde(
9136 alias = "Base",
9137 rename = "base",
9138 skip_serializing_if = "Option::is_none"
9139 )]
9140 pub base: Option<MeteBaseTemperature>,
9141 #[serde(
9145 alias = "Temporary",
9146 rename = "temporaries",
9147 skip_serializing_if = "Vec::is_empty",
9148 default
9149 )]
9150 pub temporaries: Vec<MeteBaseTemperature>,
9151 #[serde(
9155 alias = "Becoming",
9156 rename = "becomings",
9157 skip_serializing_if = "Vec::is_empty",
9158 default
9159 )]
9160 pub becomings: Vec<MeteBaseTemperature>,
9161 #[serde(
9165 alias = "SubArea",
9166 rename = "subAreas",
9167 skip_serializing_if = "Vec::is_empty",
9168 default
9169 )]
9170 pub sub_areas: Vec<MeteSubAreaTemperature>,
9171 #[serde(
9173 alias = "Temperature",
9174 rename = "temperatures",
9175 skip_serializing_if = "Vec::is_empty",
9176 default
9177 )]
9178 pub temperatures: Vec<EbTemperature>,
9179 #[serde(
9183 alias = "Time",
9184 rename = "time",
9185 skip_serializing_if = "Option::is_none"
9186 )]
9187 pub time: Option<DateTime>,
9188 #[serde(
9190 alias = "Remark",
9191 rename = "remark",
9192 skip_serializing_if = "Option::is_none",
9193 deserialize_with = "trim_opt_string",
9194 default
9195 )]
9196 pub remark: Option<String>,
9197}
9198
9199#[derive(Debug, Clone, Serialize, Deserialize)]
9200pub struct MeteText {
9201 #[serde(
9202 alias = "$text",
9203 rename = "value",
9204 default,
9205 deserialize_with = "trim_string"
9206 )]
9207 pub value: String,
9208 #[serde(alias = "@type", rename = "type")]
9210 pub ty: String,
9211}
9212
9213#[derive(Debug, Clone, Serialize, Deserialize)]
9214pub struct MeteTidalAreaPart {
9215 #[serde(alias = "Area", rename = "area")]
9217 pub area: MeteArea,
9218 #[serde(
9222 alias = "ChargeSection",
9223 rename = "chargeSections",
9224 skip_serializing_if = "Vec::is_empty",
9225 default
9226 )]
9227 pub charge_sections: Vec<String>,
9228}
9229
9230#[derive(Debug, Clone, Serialize, Deserialize)]
9231pub struct MeteTidalLevelPart {
9232 #[serde(
9236 alias = "Sentence",
9237 rename = "sentence",
9238 skip_serializing_if = "Option::is_none"
9239 )]
9240 pub sentence: Option<MeteSentence>,
9241 #[serde(
9245 alias = "Base",
9246 rename = "base",
9247 skip_serializing_if = "Option::is_none"
9248 )]
9249 pub base: Option<MeteBaseTidalLevel>,
9250 #[serde(
9254 alias = "Temporary",
9255 rename = "temporaries",
9256 skip_serializing_if = "Vec::is_empty",
9257 default
9258 )]
9259 pub temporaries: Vec<MeteBaseTidalLevel>,
9260 #[serde(
9264 alias = "Becoming",
9265 rename = "becomings",
9266 skip_serializing_if = "Vec::is_empty",
9267 default
9268 )]
9269 pub becomings: Vec<MeteBaseTidalLevel>,
9270 #[serde(
9274 alias = "SubArea",
9275 rename = "subAreas",
9276 skip_serializing_if = "Vec::is_empty",
9277 default
9278 )]
9279 pub sub_areas: Vec<MeteSubAreaTidalLevel>,
9280 #[serde(
9282 alias = "TidalLevel",
9283 rename = "tidalLevels",
9284 skip_serializing_if = "Vec::is_empty",
9285 default
9286 )]
9287 pub tidal_levels: Vec<EbTidalLevel>,
9288 #[serde(
9292 alias = "TidalPeriod",
9293 rename = "tidalPeriods",
9294 skip_serializing_if = "Vec::is_empty",
9295 default
9296 )]
9297 pub tidal_periods: Vec<EbTidalPeriod>,
9298 #[serde(
9302 alias = "Time",
9303 rename = "time",
9304 skip_serializing_if = "Option::is_none"
9305 )]
9306 pub time: Option<DateTime>,
9307 #[serde(
9309 alias = "Remark",
9310 rename = "remark",
9311 skip_serializing_if = "Option::is_none",
9312 deserialize_with = "trim_opt_string",
9313 default
9314 )]
9315 pub remark: Option<String>,
9316}
9317
9318#[derive(Debug, Clone, Serialize, Deserialize)]
9319pub struct MeteTidalWarningAddition {
9320 #[serde(alias = "TidalAreaPart", rename = "tidalAreaPart")]
9324 pub tidal_area_part: MeteTidalAreaPart,
9325 #[serde(alias = "HydrometricStationPart", rename = "hydrometricStationParts")]
9329 pub hydrometric_station_parts: Vec<MeteHydrometricStationPart>,
9330}
9331
9332#[derive(Debug, Clone, Serialize, Deserialize)]
9333pub struct MeteTimeDefine {
9334 #[serde(alias = "@timeId", rename = "timeId")]
9336 pub time_id: u8,
9337 #[serde(alias = "DateTime", rename = "dateTime")]
9341 pub date_time: EbDateTime,
9342 #[serde(
9346 alias = "Duration",
9347 rename = "duration",
9348 skip_serializing_if = "Option::is_none"
9349 )]
9350 pub duration: Option<Duration>,
9351 #[serde(
9355 alias = "Name",
9356 rename = "name",
9357 skip_serializing_if = "Option::is_none",
9358 deserialize_with = "trim_opt_string",
9359 default
9360 )]
9361 pub name: Option<String>,
9362}
9363
9364#[derive(Debug, Clone, Serialize, Deserialize)]
9365pub struct MeteTimeDefines {
9366 #[serde(alias = "TimeDefine", rename = "timeDefines")]
9370 pub time_defines: Vec<MeteTimeDefine>,
9371}
9372
9373#[derive(Debug, Clone, Serialize, Deserialize)]
9374pub struct MeteTimeSeriesInfo {
9375 #[serde(alias = "TimeDefines", rename = "timeDefines")]
9379 pub time_defines: MeteTimeDefines,
9380 #[serde(alias = "Item", rename = "items")]
9384 pub items: Vec<MeteItem>,
9385}
9386
9387#[derive(Debug, Clone, Serialize, Deserialize)]
9388pub struct MeteTyphoonNamePart {
9389 #[serde(
9393 alias = "Name",
9394 rename = "name",
9395 skip_serializing_if = "Option::is_none",
9396 deserialize_with = "trim_opt_string",
9397 default
9398 )]
9399 pub name: Option<String>,
9400 #[serde(
9404 alias = "NameKana",
9405 rename = "nameKana",
9406 skip_serializing_if = "Option::is_none",
9407 deserialize_with = "trim_opt_string",
9408 default
9409 )]
9410 pub name_kana: Option<String>,
9411 #[serde(
9413 alias = "Number",
9414 rename = "number",
9415 skip_serializing_if = "Option::is_none",
9416 deserialize_with = "trim_opt_string",
9417 default
9418 )]
9419 pub number: Option<String>,
9420 #[serde(
9424 alias = "Time",
9425 rename = "time",
9426 skip_serializing_if = "Option::is_none"
9427 )]
9428 pub time: Option<DateTime>,
9429 #[serde(
9431 alias = "Remark",
9432 rename = "remark",
9433 skip_serializing_if = "Option::is_none",
9434 deserialize_with = "trim_opt_string",
9435 default
9436 )]
9437 pub remark: Option<String>,
9438}
9439
9440#[derive(Debug, Clone, Serialize, Deserialize)]
9441pub struct MeteUvIndexPart {
9442 #[serde(alias = "UvIndex", rename = "uvIndexes")]
9446 pub uv_indexes: Vec<EbUvIndex>,
9447 #[serde(
9451 alias = "Text",
9452 rename = "text",
9453 skip_serializing_if = "Option::is_none",
9454 deserialize_with = "trim_opt_string",
9455 default
9456 )]
9457 pub text: Option<String>,
9458}
9459
9460#[derive(Debug, Clone, Serialize, Deserialize)]
9461pub struct MeteVisibilityPart {
9462 #[serde(
9466 alias = "Sentence",
9467 rename = "sentence",
9468 skip_serializing_if = "Option::is_none"
9469 )]
9470 pub sentence: Option<MeteSentence>,
9471 #[serde(
9475 alias = "Base",
9476 rename = "base",
9477 skip_serializing_if = "Option::is_none"
9478 )]
9479 pub base: Option<MeteBaseVisibility>,
9480 #[serde(
9484 alias = "Temporary",
9485 rename = "temporaries",
9486 skip_serializing_if = "Vec::is_empty",
9487 default
9488 )]
9489 pub temporaries: Vec<MeteBaseVisibility>,
9490 #[serde(
9494 alias = "Becoming",
9495 rename = "becomings",
9496 skip_serializing_if = "Vec::is_empty",
9497 default
9498 )]
9499 pub becomings: Vec<MeteBaseVisibility>,
9500 #[serde(
9504 alias = "SubArea",
9505 rename = "subAreas",
9506 skip_serializing_if = "Vec::is_empty",
9507 default
9508 )]
9509 pub sub_areas: Vec<MeteSubAreaVisibility>,
9510 #[serde(
9512 alias = "Visibility",
9513 rename = "visibilities",
9514 skip_serializing_if = "Vec::is_empty",
9515 default
9516 )]
9517 pub visibilities: Vec<EbVisibility>,
9518 #[serde(
9522 alias = "Time",
9523 rename = "time",
9524 skip_serializing_if = "Option::is_none"
9525 )]
9526 pub time: Option<DateTime>,
9527 #[serde(
9529 alias = "Remark",
9530 rename = "remark",
9531 skip_serializing_if = "Option::is_none",
9532 deserialize_with = "trim_opt_string",
9533 default
9534 )]
9535 pub remark: Option<String>,
9536}
9537
9538#[derive(Debug, Clone, Serialize, Deserialize)]
9539pub struct MeteWarning {
9540 #[serde(alias = "@type", rename = "type")]
9544 pub ty: String,
9545 #[serde(alias = "Item", rename = "items")]
9549 pub items: Vec<MeteItem>,
9550}
9551
9552#[derive(Debug, Clone, Serialize, Deserialize)]
9553pub struct MeteWarningAreaPart {
9554 #[serde(alias = "@type", rename = "type")]
9558 pub ty: String,
9559 #[serde(alias = "WindSpeed", rename = "windSpeeds")]
9563 pub wind_speeds: Vec<EbWindSpeed>,
9564 #[serde(alias = "Circle", rename = "circle")]
9568 pub circle: EbCircle,
9569}
9570
9571#[derive(Debug, Clone, Serialize, Deserialize)]
9572pub struct MeteWarningNotice {
9573 #[serde(alias = "StartTime", rename = "startTime")]
9577 pub start_time: MeteForecastTerm,
9578 #[serde(alias = "Note", rename = "note", deserialize_with = "trim_string")]
9582 pub note: String,
9583}
9584
9585#[derive(Debug, Clone, Serialize, Deserialize)]
9586pub struct MeteWaterLevelPart {
9587 #[serde(
9589 alias = "WaterLevel",
9590 rename = "waterLevels",
9591 skip_serializing_if = "Vec::is_empty",
9592 default
9593 )]
9594 pub water_levels: Vec<EbWaterLevel>,
9595}
9596
9597#[derive(Debug, Clone, Serialize, Deserialize)]
9598pub struct MeteWaveHeightForecastPart {
9599 #[serde(alias = "@refID", rename = "refID")]
9603 pub ref_id: u8,
9604 #[serde(
9608 alias = "Sentence",
9609 rename = "sentence",
9610 skip_serializing_if = "Option::is_none"
9611 )]
9612 pub sentence: Option<MeteSentence>,
9613 #[serde(
9617 alias = "Base",
9618 rename = "base",
9619 skip_serializing_if = "Option::is_none"
9620 )]
9621 pub base: Option<MeteBaseWaveHeight>,
9622 #[serde(
9626 alias = "Temporary",
9627 rename = "temporaries",
9628 skip_serializing_if = "Vec::is_empty",
9629 default
9630 )]
9631 pub temporaries: Vec<MeteBaseWaveHeight>,
9632 #[serde(
9636 alias = "Becoming",
9637 rename = "becomings",
9638 skip_serializing_if = "Vec::is_empty",
9639 default
9640 )]
9641 pub becomings: Vec<MeteBaseWaveHeight>,
9642 #[serde(
9646 alias = "SubArea",
9647 rename = "subAreas",
9648 skip_serializing_if = "Vec::is_empty",
9649 default
9650 )]
9651 pub sub_areas: Vec<MeteSubAreaWaveHeight>,
9652 #[serde(
9654 alias = "WaveHeight",
9655 rename = "waveHeights",
9656 skip_serializing_if = "Vec::is_empty",
9657 default
9658 )]
9659 pub wave_heights: Vec<EbWaveHeight>,
9660 #[serde(
9664 alias = "Time",
9665 rename = "time",
9666 skip_serializing_if = "Option::is_none"
9667 )]
9668 pub time: Option<DateTime>,
9669 #[serde(
9671 alias = "Remark",
9672 rename = "remark",
9673 skip_serializing_if = "Option::is_none",
9674 deserialize_with = "trim_opt_string",
9675 default
9676 )]
9677 pub remark: Option<String>,
9678}
9679
9680#[derive(Debug, Clone, Serialize, Deserialize)]
9681pub struct MeteWaveHeightPart {
9682 #[serde(
9686 alias = "Sentence",
9687 rename = "sentence",
9688 skip_serializing_if = "Option::is_none"
9689 )]
9690 pub sentence: Option<MeteSentence>,
9691 #[serde(
9695 alias = "Base",
9696 rename = "base",
9697 skip_serializing_if = "Option::is_none"
9698 )]
9699 pub base: Option<MeteBaseWaveHeight>,
9700 #[serde(
9704 alias = "Temporary",
9705 rename = "temporaries",
9706 skip_serializing_if = "Vec::is_empty",
9707 default
9708 )]
9709 pub temporaries: Vec<MeteBaseWaveHeight>,
9710 #[serde(
9714 alias = "Becoming",
9715 rename = "becomings",
9716 skip_serializing_if = "Vec::is_empty",
9717 default
9718 )]
9719 pub becomings: Vec<MeteBaseWaveHeight>,
9720 #[serde(
9724 alias = "SubArea",
9725 rename = "subAreas",
9726 skip_serializing_if = "Vec::is_empty",
9727 default
9728 )]
9729 pub sub_areas: Vec<MeteSubAreaWaveHeight>,
9730 #[serde(
9732 alias = "WaveHeight",
9733 rename = "waveHeights",
9734 skip_serializing_if = "Vec::is_empty",
9735 default
9736 )]
9737 pub wave_heights: Vec<EbWaveHeight>,
9738 #[serde(
9742 alias = "Time",
9743 rename = "time",
9744 skip_serializing_if = "Option::is_none"
9745 )]
9746 pub time: Option<DateTime>,
9747 #[serde(
9749 alias = "Remark",
9750 rename = "remark",
9751 skip_serializing_if = "Option::is_none",
9752 deserialize_with = "trim_opt_string",
9753 default
9754 )]
9755 pub remark: Option<String>,
9756}
9757
9758#[derive(Debug, Clone, Serialize, Deserialize)]
9759pub struct MeteWeatherCodePart {
9760 #[serde(alias = "WeatherCode", rename = "weatherCodes")]
9762 pub weather_codes: Vec<EbWeatherCode>,
9763}
9764
9765#[derive(Debug, Clone, Serialize, Deserialize)]
9766pub struct MeteWeatherForecastPart {
9767 #[serde(alias = "@refID", rename = "refID")]
9771 pub ref_id: u8,
9772 #[serde(
9776 alias = "Sentence",
9777 rename = "sentence",
9778 skip_serializing_if = "Option::is_none"
9779 )]
9780 pub sentence: Option<MeteSentence>,
9781 #[serde(
9785 alias = "Base",
9786 rename = "base",
9787 skip_serializing_if = "Option::is_none"
9788 )]
9789 pub base: Option<MeteBaseWeather>,
9790 #[serde(
9794 alias = "Temporary",
9795 rename = "temporaries",
9796 skip_serializing_if = "Vec::is_empty",
9797 default
9798 )]
9799 pub temporaries: Vec<MeteBaseWeather>,
9800 #[serde(
9804 alias = "Becoming",
9805 rename = "becomings",
9806 skip_serializing_if = "Vec::is_empty",
9807 default
9808 )]
9809 pub becomings: Vec<MeteBaseWeather>,
9810 #[serde(
9814 alias = "SubArea",
9815 rename = "subAreas",
9816 skip_serializing_if = "Vec::is_empty",
9817 default
9818 )]
9819 pub sub_areas: Vec<MeteSubAreaWeather>,
9820 #[serde(
9822 alias = "Weather",
9823 rename = "weathers",
9824 skip_serializing_if = "Vec::is_empty",
9825 default
9826 )]
9827 pub weathers: Vec<EbWeather>,
9828 #[serde(
9832 alias = "Time",
9833 rename = "time",
9834 skip_serializing_if = "Option::is_none"
9835 )]
9836 pub time: Option<DateTime>,
9837 #[serde(
9839 alias = "Remark",
9840 rename = "remark",
9841 skip_serializing_if = "Option::is_none",
9842 deserialize_with = "trim_opt_string",
9843 default
9844 )]
9845 pub remark: Option<String>,
9846}
9847
9848#[derive(Debug, Clone, Serialize, Deserialize)]
9849pub struct MeteWeatherPart {
9850 #[serde(
9854 alias = "Sentence",
9855 rename = "sentence",
9856 skip_serializing_if = "Option::is_none"
9857 )]
9858 pub sentence: Option<MeteSentence>,
9859 #[serde(
9863 alias = "Base",
9864 rename = "base",
9865 skip_serializing_if = "Option::is_none"
9866 )]
9867 pub base: Option<MeteBaseWeather>,
9868 #[serde(
9872 alias = "Temporary",
9873 rename = "temporaries",
9874 skip_serializing_if = "Vec::is_empty",
9875 default
9876 )]
9877 pub temporaries: Vec<MeteBaseWeather>,
9878 #[serde(
9882 alias = "Becoming",
9883 rename = "becomings",
9884 skip_serializing_if = "Vec::is_empty",
9885 default
9886 )]
9887 pub becomings: Vec<MeteBaseWeather>,
9888 #[serde(
9892 alias = "SubArea",
9893 rename = "subAreas",
9894 skip_serializing_if = "Vec::is_empty",
9895 default
9896 )]
9897 pub sub_areas: Vec<MeteSubAreaWeather>,
9898 #[serde(
9900 alias = "Weather",
9901 rename = "weathers",
9902 skip_serializing_if = "Vec::is_empty",
9903 default
9904 )]
9905 pub weathers: Vec<EbWeather>,
9906 #[serde(
9910 alias = "Time",
9911 rename = "time",
9912 skip_serializing_if = "Option::is_none"
9913 )]
9914 pub time: Option<DateTime>,
9915 #[serde(
9917 alias = "Remark",
9918 rename = "remark",
9919 skip_serializing_if = "Option::is_none",
9920 deserialize_with = "trim_opt_string",
9921 default
9922 )]
9923 pub remark: Option<String>,
9924}
9925
9926#[derive(Debug, Clone, Serialize, Deserialize)]
9927pub struct MeteWindDirectionPart {
9928 #[serde(
9932 alias = "Sentence",
9933 rename = "sentence",
9934 skip_serializing_if = "Option::is_none"
9935 )]
9936 pub sentence: Option<MeteSentence>,
9937 #[serde(
9941 alias = "Base",
9942 rename = "base",
9943 skip_serializing_if = "Option::is_none"
9944 )]
9945 pub base: Option<MeteBaseWindDirection>,
9946 #[serde(
9950 alias = "Temporary",
9951 rename = "temporaries",
9952 skip_serializing_if = "Vec::is_empty",
9953 default
9954 )]
9955 pub temporaries: Vec<MeteBaseWindDirection>,
9956 #[serde(
9960 alias = "Becoming",
9961 rename = "becomings",
9962 skip_serializing_if = "Vec::is_empty",
9963 default
9964 )]
9965 pub becomings: Vec<MeteBaseWindDirection>,
9966 #[serde(
9970 alias = "SubArea",
9971 rename = "subAreas",
9972 skip_serializing_if = "Vec::is_empty",
9973 default
9974 )]
9975 pub sub_areas: Vec<MeteSubAreaWindDirection>,
9976 #[serde(
9978 alias = "WindDirection",
9979 rename = "windDirections",
9980 skip_serializing_if = "Vec::is_empty",
9981 default
9982 )]
9983 pub wind_directions: Vec<EbWindDirection>,
9984 #[serde(
9988 alias = "Time",
9989 rename = "time",
9990 skip_serializing_if = "Option::is_none"
9991 )]
9992 pub time: Option<DateTime>,
9993 #[serde(
9995 alias = "Remark",
9996 rename = "remark",
9997 skip_serializing_if = "Option::is_none",
9998 deserialize_with = "trim_opt_string",
9999 default
10000 )]
10001 pub remark: Option<String>,
10002}
10003
10004#[derive(Debug, Clone, Serialize, Deserialize)]
10005pub struct MeteWindForecastPart {
10006 #[serde(alias = "@refID", rename = "refID")]
10010 pub ref_id: u8,
10011 #[serde(
10015 alias = "Sentence",
10016 rename = "sentence",
10017 skip_serializing_if = "Option::is_none"
10018 )]
10019 pub sentence: Option<MeteSentence>,
10020 #[serde(
10024 alias = "Base",
10025 rename = "base",
10026 skip_serializing_if = "Option::is_none"
10027 )]
10028 pub base: Option<MeteBaseWind>,
10029 #[serde(
10033 alias = "Temporary",
10034 rename = "temporaries",
10035 skip_serializing_if = "Vec::is_empty",
10036 default
10037 )]
10038 pub temporaries: Vec<MeteBaseWind>,
10039 #[serde(
10043 alias = "Becoming",
10044 rename = "becomings",
10045 skip_serializing_if = "Vec::is_empty",
10046 default
10047 )]
10048 pub becomings: Vec<MeteBaseWind>,
10049 #[serde(
10053 alias = "SubArea",
10054 rename = "subAreas",
10055 skip_serializing_if = "Vec::is_empty",
10056 default
10057 )]
10058 pub sub_areas: Vec<MeteSubAreaWind>,
10059 #[serde(
10061 alias = "WindDirection",
10062 rename = "windDirections",
10063 skip_serializing_if = "Vec::is_empty",
10064 default
10065 )]
10066 pub wind_directions: Vec<EbWindDirection>,
10067 #[serde(
10069 alias = "WindSpeed",
10070 rename = "windSpeeds",
10071 skip_serializing_if = "Vec::is_empty",
10072 default
10073 )]
10074 pub wind_speeds: Vec<EbWindSpeed>,
10075 #[serde(
10079 alias = "Time",
10080 rename = "time",
10081 skip_serializing_if = "Option::is_none"
10082 )]
10083 pub time: Option<DateTime>,
10084 #[serde(
10086 alias = "Remark",
10087 rename = "remark",
10088 skip_serializing_if = "Option::is_none",
10089 deserialize_with = "trim_opt_string",
10090 default
10091 )]
10092 pub remark: Option<String>,
10093}
10094
10095#[derive(Debug, Clone, Serialize, Deserialize)]
10096pub struct MeteWindPart {
10097 #[serde(
10101 alias = "Sentence",
10102 rename = "sentence",
10103 skip_serializing_if = "Option::is_none"
10104 )]
10105 pub sentence: Option<MeteSentence>,
10106 #[serde(
10110 alias = "Base",
10111 rename = "base",
10112 skip_serializing_if = "Option::is_none"
10113 )]
10114 pub base: Option<MeteBaseWind>,
10115 #[serde(
10119 alias = "Temporary",
10120 rename = "temporaries",
10121 skip_serializing_if = "Vec::is_empty",
10122 default
10123 )]
10124 pub temporaries: Vec<MeteBaseWind>,
10125 #[serde(
10129 alias = "Becoming",
10130 rename = "becomings",
10131 skip_serializing_if = "Vec::is_empty",
10132 default
10133 )]
10134 pub becomings: Vec<MeteBaseWind>,
10135 #[serde(
10139 alias = "SubArea",
10140 rename = "subAreas",
10141 skip_serializing_if = "Vec::is_empty",
10142 default
10143 )]
10144 pub sub_areas: Vec<MeteSubAreaWind>,
10145 #[serde(
10147 alias = "WindDirection",
10148 rename = "windDirections",
10149 skip_serializing_if = "Vec::is_empty",
10150 default
10151 )]
10152 pub wind_directions: Vec<EbWindDirection>,
10153 #[serde(
10157 alias = "WindDegree",
10158 rename = "windDegrees",
10159 skip_serializing_if = "Vec::is_empty",
10160 default
10161 )]
10162 pub wind_degrees: Vec<EbWindDegree>,
10163 #[serde(
10165 alias = "WindSpeed",
10166 rename = "windSpeeds",
10167 skip_serializing_if = "Vec::is_empty",
10168 default
10169 )]
10170 pub wind_speeds: Vec<EbWindSpeed>,
10171 #[serde(
10173 alias = "WindScale",
10174 rename = "windScales",
10175 skip_serializing_if = "Vec::is_empty",
10176 default
10177 )]
10178 pub wind_scales: Vec<EbWindScale>,
10179 #[serde(
10183 alias = "Time",
10184 rename = "time",
10185 skip_serializing_if = "Option::is_none"
10186 )]
10187 pub time: Option<DateTime>,
10188 #[serde(
10190 alias = "Remark",
10191 rename = "remark",
10192 skip_serializing_if = "Option::is_none",
10193 deserialize_with = "trim_opt_string",
10194 default
10195 )]
10196 pub remark: Option<String>,
10197}
10198
10199#[derive(Debug, Clone, Serialize, Deserialize)]
10200pub struct MeteWindSpeedLevel {
10201 #[serde(
10202 alias = "$text",
10203 rename = "value",
10204 skip_serializing_if = "Option::is_none"
10205 )]
10206 pub value: Option<f64>,
10207 #[serde(alias = "@type", rename = "type")]
10209 pub ty: String,
10210 #[serde(alias = "@refID", rename = "refID")]
10214 pub ref_id: u8,
10215 #[serde(
10219 alias = "@description",
10220 rename = "description",
10221 skip_serializing_if = "Option::is_none"
10222 )]
10223 pub description: Option<String>,
10224 #[serde(alias = "@range", rename = "ranges")]
10228 pub ranges: Vec<String>,
10229}
10230
10231#[derive(Debug, Clone, Serialize, Deserialize)]
10232pub struct MeteWindSpeedPart {
10233 #[serde(
10237 alias = "Sentence",
10238 rename = "sentence",
10239 skip_serializing_if = "Option::is_none"
10240 )]
10241 pub sentence: Option<MeteSentence>,
10242 #[serde(
10246 alias = "Base",
10247 rename = "base",
10248 skip_serializing_if = "Option::is_none"
10249 )]
10250 pub base: Option<MeteBaseWindSpeed>,
10251 #[serde(
10255 alias = "Temporary",
10256 rename = "temporaries",
10257 skip_serializing_if = "Vec::is_empty",
10258 default
10259 )]
10260 pub temporaries: Vec<MeteBaseWindSpeed>,
10261 #[serde(
10265 alias = "Becoming",
10266 rename = "becomings",
10267 skip_serializing_if = "Vec::is_empty",
10268 default
10269 )]
10270 pub becomings: Vec<MeteBaseWindSpeed>,
10271 #[serde(
10275 alias = "SubArea",
10276 rename = "subAreas",
10277 skip_serializing_if = "Vec::is_empty",
10278 default
10279 )]
10280 pub sub_areas: Vec<MeteSubAreaWindSpeed>,
10281 #[serde(
10283 alias = "WindSpeed",
10284 rename = "windSpeeds",
10285 skip_serializing_if = "Vec::is_empty",
10286 default
10287 )]
10288 pub wind_speeds: Vec<EbWindSpeed>,
10289 #[serde(
10293 alias = "WindSpeedLevel",
10294 rename = "windSpeedLevels",
10295 skip_serializing_if = "Vec::is_empty",
10296 default
10297 )]
10298 pub wind_speed_levels: Vec<MeteWindSpeedLevel>,
10299 #[serde(
10303 alias = "Time",
10304 rename = "time",
10305 skip_serializing_if = "Option::is_none"
10306 )]
10307 pub time: Option<DateTime>,
10308 #[serde(
10310 alias = "Remark",
10311 rename = "remark",
10312 skip_serializing_if = "Option::is_none",
10313 deserialize_with = "trim_opt_string",
10314 default
10315 )]
10316 pub remark: Option<String>,
10317}
10318
10319#[derive(Debug, Clone, Serialize, Deserialize)]
10320pub struct SeisAccuracy {
10321 #[serde(alias = "Epicenter", rename = "epicenter")]
10323 pub epicenter: SeisAccuracyEpicenter,
10324 #[serde(alias = "Depth", rename = "depth")]
10326 pub depth: SeisAccuracyDepth,
10327 #[serde(alias = "MagnitudeCalculation", rename = "magnitudeCalculation")]
10329 pub magnitude_calculation: SeisAccuracyMagnitude,
10330 #[serde(
10332 alias = "NumberOfMagnitudeCalculation",
10333 rename = "numberOfMagnitudeCalculation"
10334 )]
10335 pub number_of_magnitude_calculation: i64,
10336}
10337
10338#[derive(Debug, Clone, Serialize, Deserialize)]
10339pub struct SeisAccuracyDepth {
10340 #[serde(alias = "$text", rename = "value", deserialize_with = "float_or_null")]
10341 pub value: f64,
10342 #[serde(alias = "@rank", rename = "rank")]
10344 pub rank: i64,
10345}
10346
10347#[derive(Debug, Clone, Serialize, Deserialize)]
10348pub struct SeisAccuracyEpicenter {
10349 #[serde(alias = "$text", rename = "value", deserialize_with = "float_or_null")]
10350 pub value: f64,
10351 #[serde(alias = "@rank", rename = "rank")]
10353 pub rank: i64,
10354 #[serde(alias = "@rank2", rename = "rank2")]
10356 pub rank2: i64,
10357}
10358
10359#[derive(Debug, Clone, Serialize, Deserialize)]
10360pub struct SeisAccuracyMagnitude {
10361 #[serde(alias = "$text", rename = "value", deserialize_with = "float_or_null")]
10362 pub value: f64,
10363 #[serde(alias = "@rank", rename = "rank")]
10365 pub rank: i64,
10366}
10367
10368#[derive(Debug, Clone, Serialize, Deserialize)]
10369pub struct SeisAftershockItem {
10370 #[serde(alias = "StartTime", rename = "startTime")]
10374 pub start_time: DateTime,
10375 #[serde(alias = "EndTime", rename = "endTime")]
10379 pub end_time: DateTime,
10380 #[serde(alias = "ProbabilityOfAftershock", rename = "probabilityOfAftershock")]
10382 pub probability_of_aftershock: EbProbabilityOfAftershock,
10383 #[serde(alias = "TargetMagnitude", rename = "targetMagnitude")]
10387 pub target_magnitude: EbMagnitude,
10388 #[serde(
10392 alias = "Text",
10393 rename = "text",
10394 skip_serializing_if = "Option::is_none",
10395 deserialize_with = "trim_opt_string",
10396 default
10397 )]
10398 pub text: Option<String>,
10399}
10400
10401#[derive(Debug, Clone, Serialize, Deserialize)]
10402pub struct SeisAftershocks {
10403 #[serde(alias = "Item", rename = "items")]
10405 pub items: Vec<SeisAftershockItem>,
10406 #[serde(
10410 alias = "Text",
10411 rename = "text",
10412 skip_serializing_if = "Option::is_none",
10413 deserialize_with = "trim_opt_string",
10414 default
10415 )]
10416 pub text: Option<String>,
10417}
10418
10419#[derive(Debug, Clone, Serialize, Deserialize)]
10420pub struct SeisBody {
10421 #[serde(
10425 alias = "Naming",
10426 rename = "naming",
10427 skip_serializing_if = "Option::is_none"
10428 )]
10429 pub naming: Option<SeisNaming>,
10430 #[serde(
10434 alias = "Tsunami",
10435 rename = "tsunami",
10436 skip_serializing_if = "Option::is_none"
10437 )]
10438 pub tsunami: Option<SeisTsunami>,
10439 #[serde(
10443 alias = "Earthquake",
10444 rename = "earthquakes",
10445 skip_serializing_if = "Vec::is_empty",
10446 default
10447 )]
10448 pub earthquakes: Vec<SeisEarthquake>,
10449 #[serde(
10453 alias = "Intensity",
10454 rename = "intensity",
10455 skip_serializing_if = "Option::is_none"
10456 )]
10457 pub intensity: Option<SeisIntensity>,
10458 #[serde(
10462 alias = "Tokai",
10463 rename = "tokai",
10464 skip_serializing_if = "Option::is_none"
10465 )]
10466 pub tokai: Option<SeisTokai>,
10467 #[serde(
10471 alias = "EarthquakeInfo",
10472 rename = "earthquakeInfo",
10473 skip_serializing_if = "Option::is_none"
10474 )]
10475 pub earthquake_info: Option<SeisEarthquakeInfo>,
10476 #[serde(
10480 alias = "EarthquakeCount",
10481 rename = "earthquakeCount",
10482 skip_serializing_if = "Option::is_none"
10483 )]
10484 pub earthquake_count: Option<SeisEarthquakeCount>,
10485 #[serde(
10489 alias = "Aftershock",
10490 rename = "aftershock",
10491 skip_serializing_if = "Option::is_none"
10492 )]
10493 pub aftershock: Option<SeisAftershocks>,
10494 #[serde(
10498 alias = "Text",
10499 rename = "text",
10500 skip_serializing_if = "Option::is_none",
10501 deserialize_with = "trim_opt_string",
10502 default
10503 )]
10504 pub text: Option<String>,
10505 #[serde(
10509 alias = "NextAdvisory",
10510 rename = "nextAdvisory",
10511 skip_serializing_if = "Option::is_none",
10512 deserialize_with = "trim_opt_string",
10513 default
10514 )]
10515 pub next_advisory: Option<String>,
10516 #[serde(
10520 alias = "Comments",
10521 rename = "comments",
10522 skip_serializing_if = "Option::is_none"
10523 )]
10524 pub comments: Option<SeisComment>,
10525}
10526
10527#[derive(Debug, Clone, Serialize, Deserialize)]
10528pub struct SeisCategory {
10529 #[serde(alias = "Kind", rename = "kind")]
10533 pub kind: SeisKind,
10534 #[serde(
10538 alias = "LastKind",
10539 rename = "lastKind",
10540 skip_serializing_if = "Option::is_none"
10541 )]
10542 pub last_kind: Option<SeisKind>,
10543}
10544
10545#[derive(Debug, Clone, Serialize, Deserialize)]
10546pub struct SeisCodeDefine {
10547 #[serde(alias = "Type", rename = "types")]
10549 pub types: Vec<SeisCodeDefineType>,
10550}
10551
10552#[derive(Debug, Clone, Serialize, Deserialize)]
10553pub struct SeisCodeDefineType {
10554 #[serde(
10555 alias = "$text",
10556 rename = "value",
10557 default,
10558 deserialize_with = "trim_string"
10559 )]
10560 pub value: String,
10561 #[serde(alias = "@xpath", rename = "xpath")]
10565 pub xpath: String,
10566}
10567
10568#[derive(Debug, Clone, Serialize, Deserialize)]
10569pub struct SeisComment {
10570 #[serde(
10574 alias = "WarningComment",
10575 rename = "warningComment",
10576 skip_serializing_if = "Option::is_none"
10577 )]
10578 pub warning_comment: Option<SeisCommentForm>,
10579 #[serde(
10583 alias = "ForecastComment",
10584 rename = "forecastComment",
10585 skip_serializing_if = "Option::is_none"
10586 )]
10587 pub forecast_comment: Option<SeisCommentForm>,
10588 #[serde(
10592 alias = "ObservationComment",
10593 rename = "observationComment",
10594 skip_serializing_if = "Option::is_none"
10595 )]
10596 pub observation_comment: Option<SeisCommentForm>,
10597 #[serde(
10601 alias = "VarComment",
10602 rename = "varComment",
10603 skip_serializing_if = "Option::is_none"
10604 )]
10605 pub var_comment: Option<SeisCommentForm>,
10606 #[serde(
10608 alias = "FreeFormComment",
10609 rename = "freeFormComment",
10610 skip_serializing_if = "Option::is_none",
10611 deserialize_with = "trim_opt_string",
10612 default
10613 )]
10614 pub free_form_comment: Option<String>,
10615 #[serde(alias = "URI", rename = "uRI", skip_serializing_if = "Option::is_none")]
10619 pub uri: Option<String>,
10620}
10621
10622#[derive(Debug, Clone, Serialize, Deserialize)]
10623pub struct SeisCommentForm {
10624 #[serde(alias = "@codeType", rename = "codeType")]
10626 pub code_type: String,
10627 #[serde(alias = "Text", rename = "text", deserialize_with = "trim_string")]
10631 pub text: String,
10632 #[serde(alias = "Code", rename = "codes")]
10636 pub codes: StringList,
10637}
10638
10639#[derive(Debug, Clone, Serialize, Deserialize)]
10640pub struct SeisCountData {
10641 #[serde(alias = "@type", rename = "type")]
10645 pub ty: String,
10646 #[serde(alias = "StartTime", rename = "startTime")]
10648 pub start_time: DateTime,
10649 #[serde(alias = "EndTime", rename = "endTime")]
10651 pub end_time: DateTime,
10652 #[serde(alias = "Number", rename = "number")]
10654 pub number: i64,
10655 #[serde(alias = "FeltNumber", rename = "feltNumber")]
10657 pub felt_number: i64,
10658 #[serde(
10660 alias = "Condition",
10661 rename = "condition",
10662 skip_serializing_if = "Option::is_none",
10663 deserialize_with = "trim_opt_string",
10664 default
10665 )]
10666 pub condition: Option<String>,
10667}
10668
10669#[derive(Debug, Clone, Serialize, Deserialize)]
10670pub struct SeisCurrentHeight {
10671 #[serde(
10675 alias = "StartTime",
10676 rename = "startTime",
10677 skip_serializing_if = "Option::is_none"
10678 )]
10679 pub start_time: Option<DateTime>,
10680 #[serde(
10684 alias = "EndTime",
10685 rename = "endTime",
10686 skip_serializing_if = "Option::is_none"
10687 )]
10688 pub end_time: Option<DateTime>,
10689 #[serde(
10693 alias = "Condition",
10694 rename = "condition",
10695 skip_serializing_if = "Option::is_none",
10696 deserialize_with = "trim_opt_string",
10697 default
10698 )]
10699 pub condition: Option<String>,
10700 #[serde(
10704 alias = "TsunamiHeight",
10705 rename = "tsunamiHeight",
10706 skip_serializing_if = "Option::is_none"
10707 )]
10708 pub tsunami_height: Option<EbTsunamiHeight>,
10709}
10710
10711#[derive(Debug, Clone, Serialize, Deserialize)]
10712pub struct SeisEarthquake {
10713 #[serde(
10715 alias = "OriginTime",
10716 rename = "originTime",
10717 skip_serializing_if = "Option::is_none"
10718 )]
10719 pub origin_time: Option<DateTime>,
10720 #[serde(alias = "ArrivalTime", rename = "arrivalTime")]
10724 pub arrival_time: DateTime,
10725 #[serde(
10727 alias = "Condition",
10728 rename = "condition",
10729 skip_serializing_if = "Option::is_none",
10730 deserialize_with = "trim_opt_string",
10731 default
10732 )]
10733 pub condition: Option<String>,
10734 #[serde(
10736 alias = "Hypocenter",
10737 rename = "hypocenter",
10738 skip_serializing_if = "Option::is_none"
10739 )]
10740 pub hypocenter: Option<SeisHypocenter>,
10741 #[serde(alias = "Magnitude", rename = "magnitudes")]
10745 pub magnitudes: Vec<EbMagnitude>,
10746}
10747
10748#[derive(Debug, Clone, Serialize, Deserialize)]
10749pub struct SeisEarthquakeCount {
10750 #[serde(alias = "Item", rename = "items")]
10752 pub items: Vec<SeisCountData>,
10753}
10754
10755#[derive(Debug, Clone, Serialize, Deserialize)]
10756pub struct SeisEarthquakeInfo {
10757 #[serde(alias = "@type", rename = "type")]
10759 pub ty: String,
10760 #[serde(
10762 alias = "InfoKind",
10763 rename = "infoKind",
10764 deserialize_with = "trim_string"
10765 )]
10766 pub info_kind: String,
10767 #[serde(
10769 alias = "InfoSerial",
10770 rename = "infoSerial",
10771 skip_serializing_if = "Option::is_none"
10772 )]
10773 pub info_serial: Option<SeisInfoSerial>,
10774 #[serde(alias = "Text", rename = "text", deserialize_with = "trim_string")]
10778 pub text: String,
10779 #[serde(
10781 alias = "Appendix",
10782 rename = "appendix",
10783 skip_serializing_if = "Option::is_none",
10784 deserialize_with = "trim_opt_string",
10785 default
10786 )]
10787 pub appendix: Option<String>,
10788}
10789
10790#[derive(Debug, Clone, Serialize, Deserialize)]
10791pub struct SeisFirstHeight {
10792 #[serde(
10796 alias = "ArrivalTimeFrom",
10797 rename = "arrivalTimeFrom",
10798 skip_serializing_if = "Option::is_none"
10799 )]
10800 pub arrival_time_from: Option<DateTime>,
10801 #[serde(
10805 alias = "ArrivalTimeTo",
10806 rename = "arrivalTimeTo",
10807 skip_serializing_if = "Option::is_none"
10808 )]
10809 pub arrival_time_to: Option<DateTime>,
10810 #[serde(
10812 alias = "ArrivalTime",
10813 rename = "arrivalTime",
10814 skip_serializing_if = "Option::is_none"
10815 )]
10816 pub arrival_time: Option<DateTime>,
10817 #[serde(
10821 alias = "Condition",
10822 rename = "condition",
10823 skip_serializing_if = "Option::is_none",
10824 deserialize_with = "trim_opt_string",
10825 default
10826 )]
10827 pub condition: Option<String>,
10828 #[serde(
10832 alias = "Initial",
10833 rename = "initial",
10834 skip_serializing_if = "Option::is_none",
10835 deserialize_with = "trim_opt_string",
10836 default
10837 )]
10838 pub initial: Option<String>,
10839 #[serde(
10843 alias = "TsunamiHeight",
10844 rename = "tsunamiHeight",
10845 skip_serializing_if = "Option::is_none"
10846 )]
10847 pub tsunami_height: Option<EbTsunamiHeight>,
10848 #[serde(
10852 alias = "Revise",
10853 rename = "revise",
10854 skip_serializing_if = "Option::is_none",
10855 deserialize_with = "trim_opt_string",
10856 default
10857 )]
10858 pub revise: Option<String>,
10859 #[serde(
10863 alias = "Period",
10864 rename = "period",
10865 skip_serializing_if = "Option::is_none"
10866 )]
10867 pub period: Option<f64>,
10868}
10869
10870#[derive(Debug, Clone, Serialize, Deserialize)]
10871pub struct SeisForecastArea {
10872 #[serde(alias = "Name", rename = "name", deserialize_with = "trim_string")]
10876 pub name: String,
10877 #[serde(alias = "Code", rename = "code", deserialize_with = "trim_string")]
10881 pub code: String,
10882 #[serde(
10886 alias = "City",
10887 rename = "cities",
10888 skip_serializing_if = "Vec::is_empty",
10889 default
10890 )]
10891 pub cities: Vec<SeisForecastCity>,
10892}
10893
10894#[derive(Debug, Clone, Serialize, Deserialize)]
10895pub struct SeisForecastCity {
10896 #[serde(alias = "Name", rename = "name", deserialize_with = "trim_string")]
10900 pub name: String,
10901 #[serde(alias = "Code", rename = "code", deserialize_with = "trim_string")]
10905 pub code: String,
10906}
10907
10908#[derive(Debug, Clone, Serialize, Deserialize)]
10909pub struct SeisForecastInt {
10910 #[serde(
10912 alias = "@bound",
10913 rename = "bound",
10914 skip_serializing_if = "Option::is_none"
10915 )]
10916 pub bound: Option<String>,
10917 #[serde(
10921 alias = "From",
10922 rename = "from",
10923 skip_serializing_if = "Option::is_none",
10924 deserialize_with = "trim_opt_string",
10925 default
10926 )]
10927 pub from: Option<String>,
10928 #[serde(
10932 alias = "To",
10933 rename = "to",
10934 skip_serializing_if = "Option::is_none",
10935 deserialize_with = "trim_opt_string",
10936 default
10937 )]
10938 pub to: Option<String>,
10939}
10940
10941#[derive(Debug, Clone, Serialize, Deserialize)]
10942pub struct SeisForecastLgInt {
10943 #[serde(
10945 alias = "@bound",
10946 rename = "bound",
10947 skip_serializing_if = "Option::is_none"
10948 )]
10949 pub bound: Option<String>,
10950 #[serde(
10954 alias = "From",
10955 rename = "from",
10956 skip_serializing_if = "Option::is_none",
10957 deserialize_with = "trim_opt_string",
10958 default
10959 )]
10960 pub from: Option<String>,
10961 #[serde(
10965 alias = "To",
10966 rename = "to",
10967 skip_serializing_if = "Option::is_none",
10968 deserialize_with = "trim_opt_string",
10969 default
10970 )]
10971 pub to: Option<String>,
10972}
10973
10974#[derive(Debug, Clone, Serialize, Deserialize)]
10975pub struct SeisHypoArea {
10976 #[serde(alias = "Name", rename = "name", deserialize_with = "trim_string")]
10980 pub name: String,
10981 #[serde(alias = "Code", rename = "code")]
10985 pub code: SeisHypoAreaCode,
10986 #[serde(alias = "Coordinate", rename = "coordinates")]
10990 pub coordinates: Vec<EbCoordinate>,
10991 #[serde(
10995 alias = "ReduceName",
10996 rename = "reduceName",
10997 skip_serializing_if = "Option::is_none",
10998 deserialize_with = "trim_opt_string",
10999 default
11000 )]
11001 pub reduce_name: Option<String>,
11002 #[serde(
11006 alias = "ReduceCode",
11007 rename = "reduceCode",
11008 skip_serializing_if = "Option::is_none"
11009 )]
11010 pub reduce_code: Option<SeisHypoAreaReduceCode>,
11011 #[serde(
11015 alias = "DetailedName",
11016 rename = "detailedName",
11017 skip_serializing_if = "Option::is_none",
11018 deserialize_with = "trim_opt_string",
11019 default
11020 )]
11021 pub detailed_name: Option<String>,
11022 #[serde(
11026 alias = "DetailedCode",
11027 rename = "detailedCode",
11028 skip_serializing_if = "Option::is_none"
11029 )]
11030 pub detailed_code: Option<SeisHypoAreaDetailedCode>,
11031 #[serde(
11033 alias = "NameFromMark",
11034 rename = "nameFromMark",
11035 skip_serializing_if = "Option::is_none",
11036 deserialize_with = "trim_opt_string",
11037 default
11038 )]
11039 pub name_from_mark: Option<String>,
11040 #[serde(
11044 alias = "MarkCode",
11045 rename = "markCode",
11046 skip_serializing_if = "Option::is_none"
11047 )]
11048 pub mark_code: Option<SeisHypoAreaMarkCode>,
11049 #[serde(
11053 alias = "Direction",
11054 rename = "direction",
11055 skip_serializing_if = "Option::is_none",
11056 deserialize_with = "trim_opt_string",
11057 default
11058 )]
11059 pub direction: Option<String>,
11060 #[serde(
11064 alias = "Distance",
11065 rename = "distance",
11066 skip_serializing_if = "Option::is_none"
11067 )]
11068 pub distance: Option<SeisHypoAreaDistance>,
11069 #[serde(
11073 alias = "LandOrSea",
11074 rename = "landOrSea",
11075 skip_serializing_if = "Option::is_none"
11076 )]
11077 pub land_or_sea: Option<String>,
11078}
11079
11080#[derive(Debug, Clone, Serialize, Deserialize)]
11081pub struct SeisHypoAreaCode {
11082 #[serde(
11083 alias = "$text",
11084 rename = "value",
11085 default,
11086 deserialize_with = "trim_string"
11087 )]
11088 pub value: String,
11089 #[serde(alias = "@type", rename = "type")]
11091 pub ty: String,
11092}
11093
11094#[derive(Debug, Clone, Serialize, Deserialize)]
11095pub struct SeisHypoAreaDetailedCode {
11096 #[serde(
11097 alias = "$text",
11098 rename = "value",
11099 default,
11100 deserialize_with = "trim_string"
11101 )]
11102 pub value: String,
11103 #[serde(alias = "@type", rename = "type")]
11105 pub ty: String,
11106}
11107
11108#[derive(Debug, Clone, Serialize, Deserialize)]
11109pub struct SeisHypoAreaDistance {
11110 #[serde(alias = "$text", rename = "value")]
11111 pub value: i64,
11112 #[serde(alias = "@unit", rename = "unit")]
11114 pub unit: String,
11115}
11116
11117#[derive(Debug, Clone, Serialize, Deserialize)]
11118pub struct SeisHypoAreaMarkCode {
11119 #[serde(
11120 alias = "$text",
11121 rename = "value",
11122 default,
11123 deserialize_with = "trim_string"
11124 )]
11125 pub value: String,
11126 #[serde(alias = "@type", rename = "type")]
11128 pub ty: String,
11129}
11130
11131#[derive(Debug, Clone, Serialize, Deserialize)]
11132pub struct SeisHypoAreaReduceCode {
11133 #[serde(
11134 alias = "$text",
11135 rename = "value",
11136 default,
11137 deserialize_with = "trim_string"
11138 )]
11139 pub value: String,
11140 #[serde(alias = "@type", rename = "type")]
11142 pub ty: String,
11143}
11144
11145#[derive(Debug, Clone, Serialize, Deserialize)]
11146pub struct SeisHypocenter {
11147 #[serde(alias = "Area", rename = "area")]
11151 pub area: SeisHypoArea,
11152 #[serde(
11156 alias = "Source",
11157 rename = "source",
11158 skip_serializing_if = "Option::is_none",
11159 deserialize_with = "trim_opt_string",
11160 default
11161 )]
11162 pub source: Option<String>,
11163 #[serde(
11167 alias = "Accuracy",
11168 rename = "accuracy",
11169 skip_serializing_if = "Option::is_none"
11170 )]
11171 pub accuracy: Option<SeisAccuracy>,
11172}
11173
11174#[derive(Debug, Clone, Serialize, Deserialize)]
11175pub struct SeisInfoSerial {
11176 #[serde(alias = "@codeType", rename = "codeType")]
11178 pub code_type: String,
11179 #[serde(alias = "Name", rename = "name", deserialize_with = "trim_string")]
11181 pub name: String,
11182 #[serde(alias = "Code", rename = "code", deserialize_with = "trim_string")]
11184 pub code: String,
11185}
11186
11187#[derive(Debug, Clone, Serialize, Deserialize)]
11188pub struct SeisIntensity {
11189 #[serde(
11193 alias = "Forecast",
11194 rename = "forecast",
11195 skip_serializing_if = "Option::is_none"
11196 )]
11197 pub forecast: Option<SeisIntensityDetail>,
11198 #[serde(
11202 alias = "Observation",
11203 rename = "observation",
11204 skip_serializing_if = "Option::is_none"
11205 )]
11206 pub observation: Option<SeisIntensityDetail>,
11207}
11208
11209#[derive(Debug, Clone, Serialize, Deserialize)]
11210pub struct SeisIntensityAppendix {
11211 #[serde(alias = "MaxIntChange", rename = "maxIntChange")]
11213 pub max_int_change: i64,
11214 #[serde(
11216 alias = "MaxLgIntChange",
11217 rename = "maxLgIntChange",
11218 skip_serializing_if = "Option::is_none"
11219 )]
11220 pub max_lg_int_change: Option<i64>,
11221 #[serde(alias = "MaxIntChangeReason", rename = "maxIntChangeReason")]
11223 pub max_int_change_reason: i64,
11224 #[serde(
11228 alias = "MaxLgIntChangeReason",
11229 rename = "maxLgIntChangeReason",
11230 skip_serializing_if = "Option::is_none"
11231 )]
11232 pub max_lg_int_change_reason: Option<i64>,
11233}
11234
11235#[derive(Debug, Clone, Serialize, Deserialize)]
11236pub struct SeisIntensityArea {
11237 #[serde(alias = "Name", rename = "name", deserialize_with = "trim_string")]
11239 pub name: String,
11240 #[serde(alias = "Code", rename = "code", deserialize_with = "trim_string")]
11242 pub code: String,
11243 #[serde(
11247 alias = "Category",
11248 rename = "category",
11249 skip_serializing_if = "Option::is_none"
11250 )]
11251 pub category: Option<SeisCategory>,
11252 #[serde(
11256 alias = "MaxInt",
11257 rename = "maxInt",
11258 skip_serializing_if = "Option::is_none",
11259 deserialize_with = "trim_opt_string",
11260 default
11261 )]
11262 pub max_int: Option<String>,
11263 #[serde(
11265 alias = "MaxLgInt",
11266 rename = "maxLgInt",
11267 skip_serializing_if = "Option::is_none",
11268 deserialize_with = "trim_opt_string",
11269 default
11270 )]
11271 pub max_lg_int: Option<String>,
11272 #[serde(
11274 alias = "ForecastInt",
11275 rename = "forecastInt",
11276 skip_serializing_if = "Option::is_none"
11277 )]
11278 pub forecast_int: Option<SeisForecastInt>,
11279 #[serde(
11281 alias = "ForecastLgInt",
11282 rename = "forecastLgInt",
11283 skip_serializing_if = "Option::is_none"
11284 )]
11285 pub forecast_lg_int: Option<SeisForecastLgInt>,
11286 #[serde(
11288 alias = "ArrivalTime",
11289 rename = "arrivalTime",
11290 skip_serializing_if = "Option::is_none"
11291 )]
11292 pub arrival_time: Option<DateTime>,
11293 #[serde(
11297 alias = "Condition",
11298 rename = "condition",
11299 skip_serializing_if = "Option::is_none",
11300 deserialize_with = "trim_opt_string",
11301 default
11302 )]
11303 pub condition: Option<String>,
11304 #[serde(
11308 alias = "Revise",
11309 rename = "revise",
11310 skip_serializing_if = "Option::is_none",
11311 deserialize_with = "trim_opt_string",
11312 default
11313 )]
11314 pub revise: Option<String>,
11315 #[serde(
11319 alias = "City",
11320 rename = "cities",
11321 skip_serializing_if = "Vec::is_empty",
11322 default
11323 )]
11324 pub cities: Vec<SeisIntensityCity>,
11325 #[serde(
11329 alias = "IntensityStation",
11330 rename = "intensityStations",
11331 skip_serializing_if = "Vec::is_empty",
11332 default
11333 )]
11334 pub intensity_stations: Vec<SeisIntensityStation>,
11335}
11336
11337#[derive(Debug, Clone, Serialize, Deserialize)]
11338pub struct SeisIntensityCity {
11339 #[serde(alias = "Name", rename = "name", deserialize_with = "trim_string")]
11341 pub name: String,
11342 #[serde(alias = "Code", rename = "code", deserialize_with = "trim_string")]
11344 pub code: String,
11345 #[serde(
11349 alias = "Category",
11350 rename = "category",
11351 skip_serializing_if = "Option::is_none"
11352 )]
11353 pub category: Option<SeisCategory>,
11354 #[serde(
11358 alias = "MaxInt",
11359 rename = "maxInt",
11360 skip_serializing_if = "Option::is_none",
11361 deserialize_with = "trim_opt_string",
11362 default
11363 )]
11364 pub max_int: Option<String>,
11365 #[serde(
11367 alias = "MaxLgInt",
11368 rename = "maxLgInt",
11369 skip_serializing_if = "Option::is_none",
11370 deserialize_with = "trim_opt_string",
11371 default
11372 )]
11373 pub max_lg_int: Option<String>,
11374 #[serde(
11376 alias = "ForecastInt",
11377 rename = "forecastInt",
11378 skip_serializing_if = "Option::is_none"
11379 )]
11380 pub forecast_int: Option<SeisForecastInt>,
11381 #[serde(
11383 alias = "ForecastLgInt",
11384 rename = "forecastLgInt",
11385 skip_serializing_if = "Option::is_none"
11386 )]
11387 pub forecast_lg_int: Option<SeisForecastLgInt>,
11388 #[serde(
11392 alias = "ArrivalTime",
11393 rename = "arrivalTime",
11394 skip_serializing_if = "Option::is_none"
11395 )]
11396 pub arrival_time: Option<DateTime>,
11397 #[serde(
11401 alias = "Condition",
11402 rename = "condition",
11403 skip_serializing_if = "Option::is_none",
11404 deserialize_with = "trim_opt_string",
11405 default
11406 )]
11407 pub condition: Option<String>,
11408 #[serde(
11412 alias = "Revise",
11413 rename = "revise",
11414 skip_serializing_if = "Option::is_none",
11415 deserialize_with = "trim_opt_string",
11416 default
11417 )]
11418 pub revise: Option<String>,
11419 #[serde(
11423 alias = "IntensityStation",
11424 rename = "intensityStations",
11425 skip_serializing_if = "Vec::is_empty",
11426 default
11427 )]
11428 pub intensity_stations: Vec<SeisIntensityStation>,
11429}
11430
11431#[derive(Debug, Clone, Serialize, Deserialize)]
11432pub struct SeisIntensityDetail {
11433 #[serde(
11437 alias = "CodeDefine",
11438 rename = "codeDefine",
11439 skip_serializing_if = "Option::is_none"
11440 )]
11441 pub code_define: Option<SeisCodeDefine>,
11442 #[serde(
11444 alias = "MaxInt",
11445 rename = "maxInt",
11446 skip_serializing_if = "Option::is_none",
11447 deserialize_with = "trim_opt_string",
11448 default
11449 )]
11450 pub max_int: Option<String>,
11451 #[serde(
11453 alias = "MaxLgInt",
11454 rename = "maxLgInt",
11455 skip_serializing_if = "Option::is_none",
11456 deserialize_with = "trim_opt_string",
11457 default
11458 )]
11459 pub max_lg_int: Option<String>,
11460 #[serde(
11464 alias = "LgCategory",
11465 rename = "lgCategory",
11466 skip_serializing_if = "Option::is_none",
11467 deserialize_with = "trim_opt_string",
11468 default
11469 )]
11470 pub lg_category: Option<String>,
11471 #[serde(
11473 alias = "ForecastInt",
11474 rename = "forecastInt",
11475 skip_serializing_if = "Option::is_none"
11476 )]
11477 pub forecast_int: Option<SeisForecastInt>,
11478 #[serde(
11480 alias = "ForecastLgInt",
11481 rename = "forecastLgInt",
11482 skip_serializing_if = "Option::is_none"
11483 )]
11484 pub forecast_lg_int: Option<SeisForecastLgInt>,
11485 #[serde(
11489 alias = "Appendix",
11490 rename = "appendix",
11491 skip_serializing_if = "Option::is_none"
11492 )]
11493 pub appendix: Option<SeisIntensityAppendix>,
11494 #[serde(
11498 alias = "Pref",
11499 rename = "prefs",
11500 skip_serializing_if = "Vec::is_empty",
11501 default
11502 )]
11503 pub prefs: Vec<SeisIntensityPref>,
11504}
11505
11506#[derive(Debug, Clone, Serialize, Deserialize)]
11507pub struct SeisIntensityPref {
11508 #[serde(alias = "Name", rename = "name", deserialize_with = "trim_string")]
11510 pub name: String,
11511 #[serde(alias = "Code", rename = "code", deserialize_with = "trim_string")]
11513 pub code: String,
11514 #[serde(
11518 alias = "Category",
11519 rename = "category",
11520 skip_serializing_if = "Option::is_none"
11521 )]
11522 pub category: Option<SeisCategory>,
11523 #[serde(
11525 alias = "MaxInt",
11526 rename = "maxInt",
11527 skip_serializing_if = "Option::is_none",
11528 deserialize_with = "trim_opt_string",
11529 default
11530 )]
11531 pub max_int: Option<String>,
11532 #[serde(
11534 alias = "MaxLgInt",
11535 rename = "maxLgInt",
11536 skip_serializing_if = "Option::is_none",
11537 deserialize_with = "trim_opt_string",
11538 default
11539 )]
11540 pub max_lg_int: Option<String>,
11541 #[serde(
11543 alias = "ForecastInt",
11544 rename = "forecastInt",
11545 skip_serializing_if = "Option::is_none"
11546 )]
11547 pub forecast_int: Option<SeisForecastInt>,
11548 #[serde(
11550 alias = "ForecastLgInt",
11551 rename = "forecastLgInt",
11552 skip_serializing_if = "Option::is_none"
11553 )]
11554 pub forecast_lg_int: Option<SeisForecastLgInt>,
11555 #[serde(
11559 alias = "ArrivalTime",
11560 rename = "arrivalTime",
11561 skip_serializing_if = "Option::is_none"
11562 )]
11563 pub arrival_time: Option<DateTime>,
11564 #[serde(
11568 alias = "Condition",
11569 rename = "condition",
11570 skip_serializing_if = "Option::is_none",
11571 deserialize_with = "trim_opt_string",
11572 default
11573 )]
11574 pub condition: Option<String>,
11575 #[serde(
11579 alias = "Revise",
11580 rename = "revise",
11581 skip_serializing_if = "Option::is_none",
11582 deserialize_with = "trim_opt_string",
11583 default
11584 )]
11585 pub revise: Option<String>,
11586 #[serde(
11590 alias = "Area",
11591 rename = "areas",
11592 skip_serializing_if = "Vec::is_empty",
11593 default
11594 )]
11595 pub areas: Vec<SeisIntensityArea>,
11596}
11597
11598#[derive(Debug, Clone, Serialize, Deserialize)]
11599pub struct SeisIntensityStation {
11600 #[serde(alias = "Name", rename = "name", deserialize_with = "trim_string")]
11602 pub name: String,
11603 #[serde(alias = "Code", rename = "code", deserialize_with = "trim_string")]
11605 pub code: String,
11606 #[serde(
11610 alias = "Int",
11611 rename = "int",
11612 skip_serializing_if = "Option::is_none",
11613 deserialize_with = "trim_opt_string",
11614 default
11615 )]
11616 pub int: Option<String>,
11617 #[serde(alias = "K", rename = "k", skip_serializing_if = "Option::is_none")]
11619 pub k: Option<f64>,
11620 #[serde(
11624 alias = "LgInt",
11625 rename = "lgInt",
11626 skip_serializing_if = "Option::is_none",
11627 deserialize_with = "trim_opt_string",
11628 default
11629 )]
11630 pub lg_int: Option<String>,
11631 #[serde(
11633 alias = "LgIntPerPeriod",
11634 rename = "lgIntPerPeriods",
11635 skip_serializing_if = "Vec::is_empty",
11636 default
11637 )]
11638 pub lg_int_per_periods: Vec<SeisLgIntPerPeriod>,
11639 #[serde(alias = "Sva", rename = "sva", skip_serializing_if = "Option::is_none")]
11643 pub sva: Option<SeisSva>,
11644 #[serde(
11646 alias = "SvaPerPeriod",
11647 rename = "svaPerPeriods",
11648 skip_serializing_if = "Vec::is_empty",
11649 default
11650 )]
11651 pub sva_per_periods: Vec<SeisSvaPerPeriod>,
11652 #[serde(
11656 alias = "Revise",
11657 rename = "revise",
11658 skip_serializing_if = "Option::is_none",
11659 deserialize_with = "trim_opt_string",
11660 default
11661 )]
11662 pub revise: Option<String>,
11663}
11664
11665#[derive(Debug, Clone, Serialize, Deserialize)]
11666pub struct SeisKind {
11667 #[serde(alias = "Name", rename = "name", deserialize_with = "trim_string")]
11671 pub name: String,
11672 #[serde(alias = "Code", rename = "code", deserialize_with = "trim_string")]
11676 pub code: String,
11677}
11678
11679#[derive(Debug, Clone, Serialize, Deserialize)]
11680pub struct SeisLgIntPerPeriod {
11681 #[serde(
11682 alias = "$text",
11683 rename = "value",
11684 default,
11685 deserialize_with = "trim_string"
11686 )]
11687 pub value: String,
11688 #[serde(
11690 alias = "@PeriodicBand",
11691 rename = "periodicBand",
11692 skip_serializing_if = "Option::is_none"
11693 )]
11694 pub periodic_band: Option<i64>,
11695 #[serde(
11699 alias = "@Period",
11700 rename = "period",
11701 skip_serializing_if = "Option::is_none"
11702 )]
11703 pub period: Option<f64>,
11704 #[serde(
11706 alias = "@PeriodUnit",
11707 rename = "periodUnit",
11708 skip_serializing_if = "Option::is_none"
11709 )]
11710 pub period_unit: Option<String>,
11711}
11712
11713#[derive(Debug, Clone, Serialize, Deserialize)]
11714pub struct SeisMaxHeight {
11715 #[serde(
11717 alias = "DateTime",
11718 rename = "dateTime",
11719 skip_serializing_if = "Option::is_none"
11720 )]
11721 pub date_time: Option<DateTime>,
11722 #[serde(
11724 alias = "Condition",
11725 rename = "condition",
11726 skip_serializing_if = "Option::is_none",
11727 deserialize_with = "trim_opt_string",
11728 default
11729 )]
11730 pub condition: Option<String>,
11731 #[serde(
11735 alias = "TsunamiHeightFrom",
11736 rename = "tsunamiHeightFrom",
11737 skip_serializing_if = "Option::is_none"
11738 )]
11739 pub tsunami_height_from: Option<EbTsunamiHeight>,
11740 #[serde(
11744 alias = "TsunamiHeightTo",
11745 rename = "tsunamiHeightTo",
11746 skip_serializing_if = "Option::is_none"
11747 )]
11748 pub tsunami_height_to: Option<EbTsunamiHeight>,
11749 #[serde(
11753 alias = "TsunamiHeight",
11754 rename = "tsunamiHeight",
11755 skip_serializing_if = "Option::is_none"
11756 )]
11757 pub tsunami_height: Option<EbTsunamiHeight>,
11758 #[serde(
11762 alias = "Revise",
11763 rename = "revise",
11764 skip_serializing_if = "Option::is_none",
11765 deserialize_with = "trim_opt_string",
11766 default
11767 )]
11768 pub revise: Option<String>,
11769 #[serde(
11773 alias = "Period",
11774 rename = "period",
11775 skip_serializing_if = "Option::is_none"
11776 )]
11777 pub period: Option<f64>,
11778}
11779
11780#[derive(Debug, Clone, Serialize, Deserialize)]
11781pub struct SeisNaming {
11782 #[serde(
11783 alias = "$text",
11784 rename = "value",
11785 default,
11786 deserialize_with = "trim_string"
11787 )]
11788 pub value: String,
11789 #[serde(
11793 alias = "@english",
11794 rename = "english",
11795 skip_serializing_if = "Option::is_none"
11796 )]
11797 pub english: Option<String>,
11798}
11799
11800#[derive(Debug, Clone, Serialize, Deserialize)]
11801pub struct SeisSva {
11802 #[serde(alias = "$text", rename = "value", deserialize_with = "float_or_null")]
11803 pub value: f64,
11804 #[serde(alias = "@unit", rename = "unit")]
11806 pub unit: String,
11807}
11808
11809#[derive(Debug, Clone, Serialize, Deserialize)]
11810pub struct SeisSvaPerPeriod {
11811 #[serde(alias = "$text", rename = "value", deserialize_with = "float_or_null")]
11812 pub value: f64,
11813 #[serde(alias = "@unit", rename = "unit")]
11815 pub unit: String,
11816 #[serde(
11818 alias = "@PeriodicBand",
11819 rename = "periodicBand",
11820 skip_serializing_if = "Option::is_none"
11821 )]
11822 pub periodic_band: Option<i64>,
11823 #[serde(
11827 alias = "@Period",
11828 rename = "period",
11829 skip_serializing_if = "Option::is_none"
11830 )]
11831 pub period: Option<f64>,
11832 #[serde(
11834 alias = "@PeriodUnit",
11835 rename = "periodUnit",
11836 skip_serializing_if = "Option::is_none"
11837 )]
11838 pub period_unit: Option<String>,
11839}
11840
11841#[derive(Debug, Clone, Serialize, Deserialize)]
11842pub struct SeisTokai {
11843 #[serde(
11847 alias = "InfoKind",
11848 rename = "infoKind",
11849 deserialize_with = "trim_string"
11850 )]
11851 pub info_kind: String,
11852 #[serde(
11854 alias = "InfoSerial",
11855 rename = "infoSerial",
11856 skip_serializing_if = "Option::is_none"
11857 )]
11858 pub info_serial: Option<SeisInfoSerial>,
11859 #[serde(alias = "Text", rename = "text", deserialize_with = "trim_string")]
11863 pub text: String,
11864}
11865
11866#[derive(Debug, Clone, Serialize, Deserialize)]
11867pub struct SeisTsunami {
11868 #[serde(
11872 alias = "Release",
11873 rename = "release",
11874 skip_serializing_if = "Option::is_none",
11875 deserialize_with = "trim_opt_string",
11876 default
11877 )]
11878 pub release: Option<String>,
11879 #[serde(
11883 alias = "Observation",
11884 rename = "observation",
11885 skip_serializing_if = "Option::is_none"
11886 )]
11887 pub observation: Option<SeisTsunamiDetail>,
11888 #[serde(
11892 alias = "Estimation",
11893 rename = "estimation",
11894 skip_serializing_if = "Option::is_none"
11895 )]
11896 pub estimation: Option<SeisTsunamiDetail>,
11897 #[serde(
11901 alias = "Forecast",
11902 rename = "forecast",
11903 skip_serializing_if = "Option::is_none"
11904 )]
11905 pub forecast: Option<SeisTsunamiDetail>,
11906}
11907
11908#[derive(Debug, Clone, Serialize, Deserialize)]
11909pub struct SeisTsunamiDetail {
11910 #[serde(
11914 alias = "CodeDefine",
11915 rename = "codeDefine",
11916 skip_serializing_if = "Option::is_none"
11917 )]
11918 pub code_define: Option<SeisCodeDefine>,
11919 #[serde(alias = "Item", rename = "items")]
11923 pub items: Vec<SeisTsunamiItem>,
11924}
11925
11926#[derive(Debug, Clone, Serialize, Deserialize)]
11927pub struct SeisTsunamiItem {
11928 #[serde(alias = "Area", rename = "area")]
11932 pub area: SeisForecastArea,
11933 #[serde(
11937 alias = "Category",
11938 rename = "category",
11939 skip_serializing_if = "Option::is_none"
11940 )]
11941 pub category: Option<SeisCategory>,
11942 #[serde(
11946 alias = "FirstHeight",
11947 rename = "firstHeight",
11948 skip_serializing_if = "Option::is_none"
11949 )]
11950 pub first_height: Option<SeisFirstHeight>,
11951 #[serde(
11955 alias = "MaxHeight",
11956 rename = "maxHeight",
11957 skip_serializing_if = "Option::is_none"
11958 )]
11959 pub max_height: Option<SeisMaxHeight>,
11960 #[serde(
11964 alias = "Duration",
11965 rename = "duration",
11966 skip_serializing_if = "Option::is_none"
11967 )]
11968 pub duration: Option<Duration>,
11969 #[serde(
11973 alias = "Station",
11974 rename = "stations",
11975 skip_serializing_if = "Vec::is_empty",
11976 default
11977 )]
11978 pub stations: Vec<SeisTsunamiStation>,
11979}
11980
11981#[derive(Debug, Clone, Serialize, Deserialize)]
11982pub struct SeisTsunamiStation {
11983 #[serde(alias = "Name", rename = "name", deserialize_with = "trim_string")]
11987 pub name: String,
11988 #[serde(alias = "Code", rename = "code", deserialize_with = "trim_string")]
11992 pub code: String,
11993 #[serde(
11997 alias = "Sensor",
11998 rename = "sensor",
11999 skip_serializing_if = "Option::is_none",
12000 deserialize_with = "trim_opt_string",
12001 default
12002 )]
12003 pub sensor: Option<String>,
12004 #[serde(
12006 alias = "HighTideDateTime",
12007 rename = "highTideDateTime",
12008 skip_serializing_if = "Option::is_none"
12009 )]
12010 pub high_tide_date_time: Option<DateTime>,
12011 #[serde(alias = "FirstHeight", rename = "firstHeight")]
12015 pub first_height: SeisFirstHeight,
12016 #[serde(
12020 alias = "MaxHeight",
12021 rename = "maxHeight",
12022 skip_serializing_if = "Option::is_none"
12023 )]
12024 pub max_height: Option<SeisMaxHeight>,
12025 #[serde(
12029 alias = "CurrentHeight",
12030 rename = "currentHeight",
12031 skip_serializing_if = "Option::is_none"
12032 )]
12033 pub current_height: Option<SeisCurrentHeight>,
12034}
12035
12036#[derive(Debug, Clone, Serialize, Deserialize)]
12037pub struct VolcBody {
12038 #[serde(
12042 alias = "Notice",
12043 rename = "notice",
12044 skip_serializing_if = "Option::is_none",
12045 deserialize_with = "trim_opt_string",
12046 default
12047 )]
12048 pub notice: Option<String>,
12049 #[serde(
12051 alias = "VolcanoInfo",
12052 rename = "volcanoInfos",
12053 skip_serializing_if = "Vec::is_empty",
12054 default
12055 )]
12056 pub volcano_infos: Vec<VolcVolcanoInfo>,
12057 #[serde(
12061 alias = "AshInfos",
12062 rename = "ashInfos",
12063 skip_serializing_if = "Option::is_none"
12064 )]
12065 pub ash_infos: Option<VolcAshInfos>,
12066 #[serde(
12070 alias = "VolcanoInfoContent",
12071 rename = "volcanoInfoContent",
12072 skip_serializing_if = "Option::is_none"
12073 )]
12074 pub volcano_info_content: Option<VolcVolcanoInfoContent>,
12075 #[serde(
12079 alias = "VolcanoObservation",
12080 rename = "volcanoObservation",
12081 skip_serializing_if = "Option::is_none"
12082 )]
12083 pub volcano_observation: Option<VolcVolcanoObservation>,
12084 #[serde(
12088 alias = "Text",
12089 rename = "text",
12090 skip_serializing_if = "Option::is_none",
12091 deserialize_with = "trim_opt_string",
12092 default
12093 )]
12094 pub text: Option<String>,
12095}
12096
12097#[derive(Debug, Clone, Serialize, Deserialize)]
12098pub struct VolcArea {
12099 #[serde(alias = "Name", rename = "name", deserialize_with = "trim_string")]
12103 pub name: String,
12104 #[serde(alias = "Code", rename = "code", deserialize_with = "trim_string")]
12108 pub code: String,
12109 #[serde(
12113 alias = "Coordinate",
12114 rename = "coordinate",
12115 skip_serializing_if = "Option::is_none"
12116 )]
12117 pub coordinate: Option<EbCoordinate>,
12118 #[serde(
12122 alias = "AreaFromMark",
12123 rename = "areaFromMark",
12124 skip_serializing_if = "Option::is_none",
12125 deserialize_with = "trim_opt_string",
12126 default
12127 )]
12128 pub area_from_mark: Option<String>,
12129 #[serde(
12133 alias = "CraterName",
12134 rename = "craterName",
12135 skip_serializing_if = "Option::is_none",
12136 deserialize_with = "trim_opt_string",
12137 default
12138 )]
12139 pub crater_name: Option<String>,
12140 #[serde(
12142 alias = "CraterCoordinate",
12143 rename = "craterCoordinate",
12144 skip_serializing_if = "Option::is_none"
12145 )]
12146 pub crater_coordinate: Option<EbCoordinate>,
12147}
12148
12149#[derive(Debug, Clone, Serialize, Deserialize)]
12150pub struct VolcAreas {
12151 #[serde(alias = "@codeType", rename = "codeType")]
12155 pub code_type: String,
12156 #[serde(alias = "Area", rename = "areas")]
12160 pub areas: Vec<VolcArea>,
12161}
12162
12163#[derive(Debug, Clone, Serialize, Deserialize)]
12164pub struct VolcAshInfo {
12165 #[serde(alias = "@type", rename = "type")]
12167 pub ty: String,
12168 #[serde(alias = "StartTime", rename = "startTime")]
12170 pub start_time: DateTime,
12171 #[serde(alias = "EndTime", rename = "endTime")]
12173 pub end_time: DateTime,
12174 #[serde(alias = "Item", rename = "items")]
12178 pub items: Vec<VolcItem>,
12179}
12180
12181#[derive(Debug, Clone, Serialize, Deserialize)]
12182pub struct VolcAshInfos {
12183 #[serde(alias = "@type", rename = "type")]
12187 pub ty: String,
12188 #[serde(alias = "AshInfo", rename = "ashInfos")]
12192 pub ash_infos: Vec<VolcAshInfo>,
12193}
12194
12195#[derive(Debug, Clone, Serialize, Deserialize)]
12196pub struct VolcDistance {
12197 #[serde(
12198 alias = "$text",
12199 rename = "value",
12200 default,
12201 deserialize_with = "trim_string"
12202 )]
12203 pub value: String,
12204 #[serde(
12206 alias = "@type",
12207 rename = "type",
12208 skip_serializing_if = "Option::is_none"
12209 )]
12210 pub ty: Option<String>,
12211 #[serde(
12213 alias = "@unit",
12214 rename = "unit",
12215 skip_serializing_if = "Option::is_none"
12216 )]
12217 pub unit: Option<String>,
12218 #[serde(
12222 alias = "@description",
12223 rename = "description",
12224 skip_serializing_if = "Option::is_none"
12225 )]
12226 pub description: Option<String>,
12227}
12228
12229#[derive(Debug, Clone, Serialize, Deserialize)]
12230pub struct VolcEventTime {
12231 #[serde(
12233 alias = "EventDateTime",
12234 rename = "eventDateTime",
12235 skip_serializing_if = "Option::is_none"
12236 )]
12237 pub event_date_time: Option<EbDateTime>,
12238 #[serde(
12240 alias = "EventDateTimeUTC",
12241 rename = "eventDateTimeUTC",
12242 skip_serializing_if = "Option::is_none"
12243 )]
12244 pub event_date_time_utc: Option<EbDateTime>,
12245 #[serde(
12247 alias = "EventDateTimeComment",
12248 rename = "eventDateTimeComment",
12249 skip_serializing_if = "Option::is_none",
12250 deserialize_with = "trim_opt_string",
12251 default
12252 )]
12253 pub event_date_time_comment: Option<String>,
12254}
12255
12256#[derive(Debug, Clone, Serialize, Deserialize)]
12257pub struct VolcItem {
12258 #[serde(
12260 alias = "EventTime",
12261 rename = "eventTime",
12262 skip_serializing_if = "Option::is_none"
12263 )]
12264 pub event_time: Option<VolcEventTime>,
12265 #[serde(alias = "Kind", rename = "kind")]
12267 pub kind: VolcKind,
12268 #[serde(
12272 alias = "LastKind",
12273 rename = "lastKind",
12274 skip_serializing_if = "Option::is_none"
12275 )]
12276 pub last_kind: Option<VolcKind>,
12277 #[serde(alias = "Areas", rename = "areas")]
12281 pub areas: VolcAreas,
12282}
12283
12284#[derive(Debug, Clone, Serialize, Deserialize)]
12285pub struct VolcKind {
12286 #[serde(alias = "Name", rename = "name", deserialize_with = "trim_string")]
12288 pub name: String,
12289 #[serde(
12293 alias = "FormalName",
12294 rename = "formalName",
12295 skip_serializing_if = "Option::is_none",
12296 deserialize_with = "trim_opt_string",
12297 default
12298 )]
12299 pub formal_name: Option<String>,
12300 #[serde(
12304 alias = "Code",
12305 rename = "code",
12306 skip_serializing_if = "Option::is_none",
12307 deserialize_with = "trim_opt_string",
12308 default
12309 )]
12310 pub code: Option<String>,
12311 #[serde(
12315 alias = "Condition",
12316 rename = "condition",
12317 skip_serializing_if = "Option::is_none",
12318 deserialize_with = "trim_opt_string",
12319 default
12320 )]
12321 pub condition: Option<String>,
12322 #[serde(
12326 alias = "Property",
12327 rename = "property",
12328 skip_serializing_if = "Option::is_none"
12329 )]
12330 pub property: Option<VolcProperty>,
12331}
12332
12333#[derive(Debug, Clone, Serialize, Deserialize)]
12334pub struct VolcPlume {
12335 #[serde(alias = "PlumeHeightAboveCrater", rename = "plumeHeightAboveCrater")]
12337 pub plume_height_above_crater: EbPlumeHeight,
12338 #[serde(
12340 alias = "PlumeHeightAboveSeaLevel",
12341 rename = "plumeHeightAboveSeaLevel",
12342 skip_serializing_if = "Option::is_none"
12343 )]
12344 pub plume_height_above_sea_level: Option<EbPlumeHeight>,
12345 #[serde(alias = "PlumeDirection", rename = "plumeDirection")]
12347 pub plume_direction: EbPlumeDirection,
12348 #[serde(
12350 alias = "PlumeComment",
12351 rename = "plumeComment",
12352 skip_serializing_if = "Option::is_none",
12353 deserialize_with = "trim_opt_string",
12354 default
12355 )]
12356 pub plume_comment: Option<String>,
12357}
12358
12359#[derive(Debug, Clone, Serialize, Deserialize)]
12360pub struct VolcProperty {
12361 #[serde(
12365 alias = "Size",
12366 rename = "size",
12367 skip_serializing_if = "Option::is_none"
12368 )]
12369 pub size: Option<VolcSize>,
12370 #[serde(alias = "Polygon", rename = "polygons")]
12374 pub polygons: Vec<EbCoordinate>,
12375 #[serde(alias = "PlumeDirection", rename = "plumeDirection")]
12377 pub plume_direction: EbPlumeDirection,
12378 #[serde(alias = "Distance", rename = "distance")]
12382 pub distance: VolcDistance,
12383 #[serde(
12385 alias = "Remark",
12386 rename = "remark",
12387 skip_serializing_if = "Option::is_none",
12388 deserialize_with = "trim_opt_string",
12389 default
12390 )]
12391 pub remark: Option<String>,
12392}
12393
12394#[derive(Debug, Clone, Serialize, Deserialize)]
12395pub struct VolcSize {
12396 #[serde(
12397 alias = "$text",
12398 rename = "value",
12399 skip_serializing_if = "Option::is_none"
12400 )]
12401 pub value: Option<f64>,
12402 #[serde(
12404 alias = "@type",
12405 rename = "type",
12406 skip_serializing_if = "Option::is_none"
12407 )]
12408 pub ty: Option<String>,
12409 #[serde(
12411 alias = "@unit",
12412 rename = "unit",
12413 skip_serializing_if = "Option::is_none"
12414 )]
12415 pub unit: Option<String>,
12416}
12417
12418#[derive(Debug, Clone, Serialize, Deserialize)]
12419pub struct VolcVolcanoInfo {
12420 #[serde(alias = "@type", rename = "type")]
12424 pub ty: String,
12425 #[serde(alias = "Item", rename = "items")]
12429 pub items: Vec<VolcItem>,
12430}
12431
12432#[derive(Debug, Clone, Serialize, Deserialize)]
12433pub struct VolcVolcanoInfoContent {
12434 #[serde(
12438 alias = "VolcanoHeadline",
12439 rename = "volcanoHeadline",
12440 skip_serializing_if = "Option::is_none",
12441 deserialize_with = "trim_opt_string",
12442 default
12443 )]
12444 pub volcano_headline: Option<String>,
12445 #[serde(
12449 alias = "VolcanoActivity",
12450 rename = "volcanoActivity",
12451 skip_serializing_if = "Option::is_none",
12452 deserialize_with = "trim_opt_string",
12453 default
12454 )]
12455 pub volcano_activity: Option<String>,
12456 #[serde(
12460 alias = "VolcanoPrevention",
12461 rename = "volcanoPrevention",
12462 skip_serializing_if = "Option::is_none",
12463 deserialize_with = "trim_opt_string",
12464 default
12465 )]
12466 pub volcano_prevention: Option<String>,
12467 #[serde(
12471 alias = "NextAdvisory",
12472 rename = "nextAdvisory",
12473 skip_serializing_if = "Option::is_none",
12474 deserialize_with = "trim_opt_string",
12475 default
12476 )]
12477 pub next_advisory: Option<String>,
12478 #[serde(
12482 alias = "OtherInfo",
12483 rename = "otherInfo",
12484 skip_serializing_if = "Option::is_none",
12485 deserialize_with = "trim_opt_string",
12486 default
12487 )]
12488 pub other_info: Option<String>,
12489 #[serde(
12493 alias = "Appendix",
12494 rename = "appendix",
12495 skip_serializing_if = "Option::is_none",
12496 deserialize_with = "trim_opt_string",
12497 default
12498 )]
12499 pub appendix: Option<String>,
12500 #[serde(
12504 alias = "Text",
12505 rename = "text",
12506 skip_serializing_if = "Option::is_none",
12507 deserialize_with = "trim_opt_string",
12508 default
12509 )]
12510 pub text: Option<String>,
12511}
12512
12513#[derive(Debug, Clone, Serialize, Deserialize)]
12514pub struct VolcVolcanoObservation {
12515 #[serde(
12517 alias = "EventTime",
12518 rename = "eventTime",
12519 skip_serializing_if = "Option::is_none"
12520 )]
12521 pub event_time: Option<VolcEventTime>,
12522 #[serde(
12524 alias = "ColorPlume",
12525 rename = "colorPlume",
12526 skip_serializing_if = "Option::is_none"
12527 )]
12528 pub color_plume: Option<VolcPlume>,
12529 #[serde(
12531 alias = "WhitePlume",
12532 rename = "whitePlume",
12533 skip_serializing_if = "Option::is_none"
12534 )]
12535 pub white_plume: Option<VolcPlume>,
12536 #[serde(
12538 alias = "WindAboveCrater",
12539 rename = "windAboveCrater",
12540 skip_serializing_if = "Option::is_none"
12541 )]
12542 pub wind_above_crater: Option<VolcWindAboveCrater>,
12543 #[serde(
12545 alias = "OtherObservation",
12546 rename = "otherObservation",
12547 skip_serializing_if = "Option::is_none",
12548 deserialize_with = "trim_opt_string",
12549 default
12550 )]
12551 pub other_observation: Option<String>,
12552 #[serde(
12556 alias = "Appendix",
12557 rename = "appendix",
12558 skip_serializing_if = "Option::is_none",
12559 deserialize_with = "trim_opt_string",
12560 default
12561 )]
12562 pub appendix: Option<String>,
12563}
12564
12565#[derive(Debug, Clone, Serialize, Deserialize)]
12566pub struct VolcWindAboveCrater {
12567 #[serde(alias = "DateTime", rename = "dateTime")]
12569 pub date_time: EbDateTime,
12570 #[serde(
12572 alias = "WindAboveCraterElements",
12573 rename = "windAboveCraterElementses",
12574 skip_serializing_if = "Vec::is_empty",
12575 default
12576 )]
12577 pub wind_above_crater_elementses: Vec<VolcWindAboveCraterElements>,
12578}
12579
12580#[derive(Debug, Clone, Serialize, Deserialize)]
12581pub struct VolcWindAboveCraterElements {
12582 #[serde(
12584 alias = "@heightProperty",
12585 rename = "heightProperty",
12586 skip_serializing_if = "Option::is_none"
12587 )]
12588 pub height_property: Option<String>,
12589 #[serde(
12593 alias = "@description",
12594 rename = "description",
12595 skip_serializing_if = "Option::is_none"
12596 )]
12597 pub description: Option<String>,
12598 #[serde(alias = "WindHeightAboveSeaLevel", rename = "windHeightAboveSeaLevel")]
12600 pub wind_height_above_sea_level: EbPlumeHeight,
12601 #[serde(alias = "WindDegree", rename = "windDegree")]
12603 pub wind_degree: EbWindDegree,
12604 #[serde(alias = "WindSpeed", rename = "windSpeed")]
12606 pub wind_speed: EbWindSpeed,
12607}