redispatch_xml/documents/
activation.rs1use serde::{Deserialize, Serialize};
3
4use crate::types::{
5 AttrV, AttrVWithScheme, ControlZone, Direction, DocumentId, DocumentVersion,
6 MarketParticipantId, MarketRoleType, MeasureUnit, Period, TimeInterval, UtcDateTime,
7};
8
9pub const NAMESPACE: &str = "urn:entsoe.eu:wgedi:errp:activationdocument:5:0";
13
14#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash, Serialize, Deserialize)]
18pub enum ActivationDocType {
19 #[serde(rename = "A41")]
21 ActivationResponse,
22 #[serde(rename = "A42")]
24 TenderReduction,
25 #[serde(rename = "A96")]
27 RedispatchActivation,
28}
29
30#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash, Serialize, Deserialize)]
32pub enum ActivationProcessType {
33 #[serde(rename = "A41")]
35 Redispatch,
36 #[serde(rename = "Z01")]
38 Other,
39}
40
41#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash, Serialize, Deserialize)]
43pub enum TimeSeriesStatus {
44 #[serde(rename = "A06")]
46 Available,
47 #[serde(rename = "A07")]
49 Activated,
50 #[serde(rename = "A10")]
52 Ordered,
53}
54
55#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash, Serialize, Deserialize)]
57pub enum TimeSeriesBusinessType {
58 #[serde(rename = "A46")]
60 SystemOperatorRedispatching,
61 #[serde(rename = "A85")]
63 InternalRedispatch,
64}
65
66#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash, Serialize, Deserialize)]
71pub enum DocumentReasonCode {
72 #[serde(rename = "A57")]
74 DeadlineExceeded,
75 #[serde(rename = "A95")]
77 ComplementaryInfo,
78 #[serde(rename = "A96")]
80 TechnicalConstraint,
81}
82
83#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
85pub struct DocumentReason {
86 #[serde(rename = "ReasonCode")]
88 pub code: AttrV<DocumentReasonCode>,
89 #[serde(
91 rename = "ReasonText",
92 default,
93 skip_serializing_if = "Option::is_none"
94 )]
95 pub text: Option<String>,
96}
97
98pub type ResourceObjectRef = AttrVWithScheme<String, ResourceObjectCodingScheme>;
102
103#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash, Serialize, Deserialize)]
105pub enum ResourceObjectCodingScheme {
106 #[serde(rename = "NDE")]
108 Nde,
109}
110
111pub type ControlZoneRef = AttrVWithScheme<ControlZone, EicCodingScheme>;
113
114#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash, Serialize, Deserialize)]
116pub enum EicCodingScheme {
117 #[serde(rename = "A01")]
119 Eic,
120}
121
122#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
128pub struct ActivationTimeSeries {
129 #[serde(rename = "AllocationIdentification")]
131 pub allocation_identification: AttrV<DocumentId>,
132 #[serde(
134 rename = "ResourceProvider",
135 default,
136 skip_serializing_if = "Option::is_none"
137 )]
138 pub resource_provider: Option<AttrVWithScheme<MarketParticipantId>>,
139 #[serde(rename = "BusinessType")]
141 pub business_type: AttrV<TimeSeriesBusinessType>,
142 #[serde(rename = "AcquiringArea")]
144 pub acquiring_area: AttrVWithScheme<String, EicCodingScheme>,
145 #[serde(rename = "ConnectingArea")]
147 pub connecting_area: ControlZoneRef,
148 #[serde(rename = "MeasureUnit")]
150 pub measure_unit: AttrV<MeasureUnit>,
151 #[serde(rename = "Direction")]
153 pub direction: AttrV<Direction>,
154 #[serde(rename = "Status")]
156 pub status: AttrV<TimeSeriesStatus>,
157 #[serde(rename = "ResourceObject")]
159 pub resource_object: ResourceObjectRef,
160 #[serde(
162 rename = "SendersDocumentIdentification",
163 default,
164 skip_serializing_if = "Option::is_none"
165 )]
166 pub senders_document_identification: Option<AttrV<DocumentId>>,
167 #[serde(
169 rename = "SendersDocumentVersion",
170 default,
171 skip_serializing_if = "Option::is_none"
172 )]
173 pub senders_document_version: Option<AttrV<DocumentVersion>>,
174 #[serde(
176 rename = "SendersDocumentDateTime",
177 default,
178 skip_serializing_if = "Option::is_none"
179 )]
180 pub senders_document_date_time: Option<AttrV<UtcDateTime>>,
181 #[serde(
183 rename = "SendersTimeSeriesIdentification",
184 default,
185 skip_serializing_if = "Option::is_none"
186 )]
187 pub senders_time_series_identification: Option<AttrV<DocumentId>>,
188 #[serde(
190 rename = "OriginalSenderIdentification",
191 default,
192 skip_serializing_if = "Option::is_none"
193 )]
194 pub original_sender_identification: Option<AttrVWithScheme<MarketParticipantId>>,
195 #[serde(
197 rename = "OriginalDocumentIdentification",
198 default,
199 skip_serializing_if = "Option::is_none"
200 )]
201 pub original_document_identification: Option<AttrV<DocumentId>>,
202 #[serde(
204 rename = "OriginalDocumentVersion",
205 default,
206 skip_serializing_if = "Option::is_none"
207 )]
208 pub original_document_version: Option<AttrV<DocumentVersion>>,
209 #[serde(
211 rename = "OriginalDocumentDateTime",
212 default,
213 skip_serializing_if = "Option::is_none"
214 )]
215 pub original_document_date_time: Option<AttrV<UtcDateTime>>,
216 #[serde(
218 rename = "OriginalAllocationIdentification",
219 default,
220 skip_serializing_if = "Option::is_none"
221 )]
222 pub original_allocation_identification: Option<AttrV<DocumentId>>,
223 #[serde(rename = "Period")]
225 pub period: Period,
226}
227
228#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
243#[serde(rename = "ActivationDocument")]
244pub struct ActivationDocument {
245 #[serde(rename = "DocumentIdentification")]
247 pub document_identification: AttrV<DocumentId>,
248 #[serde(rename = "DocumentVersion")]
250 pub document_version: AttrV<DocumentVersion>,
251 #[serde(rename = "DocumentType")]
253 pub document_type: AttrV<ActivationDocType>,
254 #[serde(rename = "ProcessType")]
256 pub process_type: AttrV<ActivationProcessType>,
257 #[serde(rename = "SenderIdentification")]
259 pub sender_identification: AttrVWithScheme<MarketParticipantId>,
260 #[serde(rename = "SenderRole")]
262 pub sender_role: AttrV<MarketRoleType>,
263 #[serde(rename = "ReceiverIdentification")]
265 pub receiver_identification: AttrVWithScheme<MarketParticipantId>,
266 #[serde(rename = "ReceiverRole")]
268 pub receiver_role: AttrV<MarketRoleType>,
269 #[serde(rename = "CreationDateTime")]
271 pub creation_date_time: AttrV<UtcDateTime>,
272 #[serde(rename = "ActivationTimeInterval")]
274 pub activation_time_interval: AttrV<TimeInterval>,
275 #[serde(
277 rename = "OrderIdentification",
278 default,
279 skip_serializing_if = "Option::is_none"
280 )]
281 pub order_identification: Option<AttrV<DocumentId>>,
282 #[serde(
284 rename = "OrderIdentificationVersion",
285 default,
286 skip_serializing_if = "Option::is_none"
287 )]
288 pub order_identification_version: Option<AttrV<DocumentVersion>>,
289 #[serde(rename = "ActivationTimeSeries", default)]
291 pub time_series: Vec<ActivationTimeSeries>,
292 #[serde(rename = "Reason", default, skip_serializing_if = "Option::is_none")]
294 pub reason: Option<DocumentReason>,
295}