Skip to main content

ecbdp_api/
schemas.rs

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// Header
15
16
17#[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// Data sets
33
34
35#[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// Structure
51
52
53#[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}