redispatch_xml/documents/
activation.rs1use serde::{Deserialize, Serialize};
2
3use crate::types::{
4 AttrV, AttrVWithScheme, ControlZone, Direction, DocumentId, DocumentVersion,
5 MarketParticipantId, MarketRoleType, MeasureUnit, Period, TimeInterval, UtcDateTime,
6};
7
8pub const NAMESPACE: &str = "urn:entsoe.eu:wgedi:errp:activationdocument:5:0";
12
13#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash, Serialize, Deserialize)]
17pub enum ActivationDocType {
18 #[serde(rename = "A41")]
20 ActivationResponse,
21 #[serde(rename = "A42")]
23 TenderReduction,
24 #[serde(rename = "A96")]
26 RedispatchActivation,
27}
28
29#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash, Serialize, Deserialize)]
31pub enum ActivationProcessType {
32 #[serde(rename = "A41")]
34 Redispatch,
35 #[serde(rename = "Z01")]
37 Other,
38}
39
40#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash, Serialize, Deserialize)]
42pub enum TimeSeriesStatus {
43 #[serde(rename = "A06")]
45 Available,
46 #[serde(rename = "A07")]
48 Activated,
49 #[serde(rename = "A10")]
51 Ordered,
52}
53
54#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash, Serialize, Deserialize)]
56pub enum TimeSeriesBusinessType {
57 #[serde(rename = "A46")]
59 SystemOperatorRedispatching,
60 #[serde(rename = "A85")]
62 InternalRedispatch,
63}
64
65#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash, Serialize, Deserialize)]
70pub enum DocumentReasonCode {
71 #[serde(rename = "A57")]
73 DeadlineExceeded,
74 #[serde(rename = "A95")]
76 ComplementaryInfo,
77 #[serde(rename = "A96")]
79 TechnicalConstraint,
80}
81
82#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
84pub struct DocumentReason {
85 #[serde(rename = "ReasonCode")]
87 pub code: AttrV<DocumentReasonCode>,
88 #[serde(
90 rename = "ReasonText",
91 default,
92 skip_serializing_if = "Option::is_none"
93 )]
94 pub text: Option<String>,
95}
96
97pub type ResourceObjectRef = AttrVWithScheme<String, ResourceObjectCodingScheme>;
101
102#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash, Serialize, Deserialize)]
104pub enum ResourceObjectCodingScheme {
105 #[serde(rename = "NDE")]
107 Nde,
108}
109
110pub type ControlZoneRef = AttrVWithScheme<ControlZone, EicCodingScheme>;
112
113#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash, Serialize, Deserialize)]
115pub enum EicCodingScheme {
116 #[serde(rename = "A01")]
118 Eic,
119}
120
121#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
127pub struct ActivationTimeSeries {
128 #[serde(rename = "AllocationIdentification")]
130 pub allocation_identification: AttrV<DocumentId>,
131 #[serde(
133 rename = "ResourceProvider",
134 default,
135 skip_serializing_if = "Option::is_none"
136 )]
137 pub resource_provider: Option<AttrVWithScheme<MarketParticipantId>>,
138 #[serde(rename = "BusinessType")]
140 pub business_type: AttrV<TimeSeriesBusinessType>,
141 #[serde(rename = "AcquiringArea")]
143 pub acquiring_area: AttrVWithScheme<String, EicCodingScheme>,
144 #[serde(rename = "ConnectingArea")]
146 pub connecting_area: ControlZoneRef,
147 #[serde(rename = "MeasureUnit")]
149 pub measure_unit: AttrV<MeasureUnit>,
150 #[serde(rename = "Direction")]
152 pub direction: AttrV<Direction>,
153 #[serde(rename = "Status")]
155 pub status: AttrV<TimeSeriesStatus>,
156 #[serde(rename = "ResourceObject")]
158 pub resource_object: ResourceObjectRef,
159 #[serde(
161 rename = "SendersDocumentIdentification",
162 default,
163 skip_serializing_if = "Option::is_none"
164 )]
165 pub senders_document_identification: Option<AttrV<DocumentId>>,
166 #[serde(
168 rename = "SendersDocumentVersion",
169 default,
170 skip_serializing_if = "Option::is_none"
171 )]
172 pub senders_document_version: Option<AttrV<DocumentVersion>>,
173 #[serde(
175 rename = "SendersDocumentDateTime",
176 default,
177 skip_serializing_if = "Option::is_none"
178 )]
179 pub senders_document_date_time: Option<AttrV<UtcDateTime>>,
180 #[serde(
182 rename = "SendersTimeSeriesIdentification",
183 default,
184 skip_serializing_if = "Option::is_none"
185 )]
186 pub senders_time_series_identification: Option<AttrV<DocumentId>>,
187 #[serde(
189 rename = "OriginalSenderIdentification",
190 default,
191 skip_serializing_if = "Option::is_none"
192 )]
193 pub original_sender_identification: Option<AttrVWithScheme<MarketParticipantId>>,
194 #[serde(
196 rename = "OriginalDocumentIdentification",
197 default,
198 skip_serializing_if = "Option::is_none"
199 )]
200 pub original_document_identification: Option<AttrV<DocumentId>>,
201 #[serde(
203 rename = "OriginalDocumentVersion",
204 default,
205 skip_serializing_if = "Option::is_none"
206 )]
207 pub original_document_version: Option<AttrV<DocumentVersion>>,
208 #[serde(
210 rename = "OriginalDocumentDateTime",
211 default,
212 skip_serializing_if = "Option::is_none"
213 )]
214 pub original_document_date_time: Option<AttrV<UtcDateTime>>,
215 #[serde(
217 rename = "OriginalAllocationIdentification",
218 default,
219 skip_serializing_if = "Option::is_none"
220 )]
221 pub original_allocation_identification: Option<AttrV<DocumentId>>,
222 #[serde(rename = "Period")]
224 pub period: Period,
225}
226
227#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
242#[serde(rename = "ActivationDocument")]
243pub struct ActivationDocument {
244 #[serde(rename = "DocumentIdentification")]
246 pub document_identification: AttrV<DocumentId>,
247 #[serde(rename = "DocumentVersion")]
249 pub document_version: AttrV<DocumentVersion>,
250 #[serde(rename = "DocumentType")]
252 pub document_type: AttrV<ActivationDocType>,
253 #[serde(rename = "ProcessType")]
255 pub process_type: AttrV<ActivationProcessType>,
256 #[serde(rename = "SenderIdentification")]
258 pub sender_identification: AttrVWithScheme<MarketParticipantId>,
259 #[serde(rename = "SenderRole")]
261 pub sender_role: AttrV<MarketRoleType>,
262 #[serde(rename = "ReceiverIdentification")]
264 pub receiver_identification: AttrVWithScheme<MarketParticipantId>,
265 #[serde(rename = "ReceiverRole")]
267 pub receiver_role: AttrV<MarketRoleType>,
268 #[serde(rename = "CreationDateTime")]
270 pub creation_date_time: AttrV<UtcDateTime>,
271 #[serde(rename = "ActivationTimeInterval")]
273 pub activation_time_interval: AttrV<TimeInterval>,
274 #[serde(
276 rename = "OrderIdentification",
277 default,
278 skip_serializing_if = "Option::is_none"
279 )]
280 pub order_identification: Option<AttrV<DocumentId>>,
281 #[serde(
283 rename = "OrderIdentificationVersion",
284 default,
285 skip_serializing_if = "Option::is_none"
286 )]
287 pub order_identification_version: Option<AttrV<DocumentVersion>>,
288 #[serde(rename = "ActivationTimeSeries", default)]
290 pub time_series: Vec<ActivationTimeSeries>,
291 #[serde(rename = "Reason", default, skip_serializing_if = "Option::is_none")]
293 pub reason: Option<DocumentReason>,
294}