1use std::collections::HashMap;
2use serde::{Serialize, Deserialize};
3
4
5#[derive(Clone, Debug, Serialize, Deserialize)]
6pub struct ECBResponse {
7 pub header: Header,
8 #[serde(rename = "dataSets")]
9 pub datasets: Vec<DataSet>,
10 pub structure: Structure,
11}
12
13
14#[derive(Clone, Debug, Serialize, Deserialize)]
18pub struct Header {
19 pub id: String,
20 pub test: bool,
21 pub prepared: String,
22 pub sender: Sender,
23}
24
25
26#[derive(Clone, Debug, Serialize, Deserialize)]
27pub struct Sender {
28 pub id: String,
29}
30
31
32#[derive(Clone, Debug, Serialize, Deserialize)]
36pub struct DataSet {
37 pub action: String,
38 #[serde(rename = "validFrom")]
39 pub valid_from: String,
40 pub series: HashMap<String, Series>,
41}
42
43
44#[derive(Clone, Debug, Serialize, Deserialize)]
45pub struct Series {
46 pub observations: Option<HashMap<String, Vec<Option<f64>>>>,
47}
48
49
50#[derive(Clone, Debug, Serialize, Deserialize)]
54pub struct Structure {
55 pub links: Vec<Link>,
56 pub name: String,
57 pub dimensions: Dimension,
58}
59
60
61#[derive(Clone, Debug, Serialize, Deserialize)]
62pub struct Link {
63 pub title: String,
64 pub rel: String,
65 pub href: String,
66}
67
68
69#[derive(Clone, Debug, Serialize, Deserialize)]
70pub struct Dimension {
71 pub series: Vec<SeriesDimension>,
72 pub observation: Option<Vec<SeriesDimensionObservation>>,
73}
74
75
76#[derive(Clone, Debug, Serialize, Deserialize)]
77pub struct SeriesDimension {
78 pub id: String,
79 pub name: String,
80 pub values: Vec<SeriesDimensionValue>
81}
82
83
84#[derive(Clone, Debug, Serialize, Deserialize)]
85pub struct SeriesDimensionValue {
86 pub id: String,
87 pub name: String,
88}
89
90
91#[derive(Clone, Debug, Serialize, Deserialize)]
92pub struct SeriesDimensionObservation {
93 pub id: String,
94 pub name: String,
95 pub role: String,
96 pub values: Vec<SeriesDimensionObservationValue>,
97}
98
99
100#[derive(Clone, Debug, Serialize, Deserialize)]
101pub struct SeriesDimensionObservationValue {
102 pub id: String,
103 pub name: String,
104 pub start: String,
105 pub end: String,
106}