redispatch_xml/documents/
status_request.rs1use serde::{Deserialize, Serialize};
3
4use crate::documents::kaskade::ParticipantMrid;
5use crate::types::{Mrid, SimpleContent, UtcDateTime};
6
7pub const NAMESPACE: &str = "urn:iec62325.351:tc57wg16:451-5:statusrequestdocument:4:1";
11
12#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash, Serialize, Deserialize)]
16pub enum StatusRequestDocType {
17 #[serde(rename = "A60")]
19 StatusRequest,
20 #[serde(rename = "Z15")]
22 CatalogueRequest,
23}
24
25#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash, Serialize, Deserialize)]
27pub enum StatusRequestSenderRole {
28 #[serde(rename = "A18")]
30 GridOperator,
31 #[serde(rename = "A39")]
33 DataProvider,
34}
35
36#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash, Serialize, Deserialize)]
38pub enum StatusRequestReceiverRole {
39 #[serde(rename = "A18")]
41 GridOperator,
42 #[serde(rename = "A27")]
44 ResourceProvider,
45 #[serde(rename = "Z01")]
47 Other,
48}
49
50#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash, Serialize, Deserialize)]
52pub enum ParticipantStatus {
53 #[serde(rename = "A03")]
55 Deactivated,
56 #[serde(rename = "A04")]
58 Reactivated,
59 #[serde(rename = "A13")]
61 Withdrawn,
62}
63
64#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
68pub struct StatusRequestSenderMarketRole {
69 #[serde(rename = "type")]
71 pub role_type: StatusRequestSenderRole,
72}
73
74#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
76pub struct StatusRequestReceiverMarketRole {
77 #[serde(rename = "type")]
79 pub role_type: StatusRequestReceiverRole,
80}
81
82#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
86pub struct StatusRequestSender {
87 #[serde(rename = "mRID")]
89 pub m_rid: ParticipantMrid,
90 #[serde(rename = "marketRole")]
92 pub market_role: StatusRequestSenderMarketRole,
93}
94
95#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
97pub struct StatusRequestReceiver {
98 #[serde(rename = "mRID")]
100 pub m_rid: ParticipantMrid,
101 #[serde(rename = "marketRole")]
103 pub market_role: StatusRequestReceiverMarketRole,
104}
105
106#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
110pub struct AttributeInstanceComponent {
111 #[serde(rename = "attribute")]
113 pub attribute: String,
114 #[serde(
116 rename = "attributeValue",
117 default,
118 skip_serializing_if = "Option::is_none"
119 )]
120 pub attribute_value: Option<String>,
121}
122
123#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
127pub struct MktActivityRecord {
128 #[serde(rename = "MarketParticipant.mRID")]
130 pub market_participant_m_rid: SimpleContent<String>,
131 pub status: ParticipantStatus,
133}
134
135#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
143#[serde(rename = "StatusRequest_MarketDocument")]
144pub struct StatusRequestMarketDocument {
145 #[serde(rename = "mRID")]
147 pub m_rid: Mrid,
148 #[serde(rename = "type")]
150 pub doc_type: StatusRequestDocType,
151 #[serde(rename = "sender_MarketParticipant")]
153 pub sender_market_participant: StatusRequestSender,
154 #[serde(rename = "receiver_MarketParticipant")]
156 pub receiver_market_participant: StatusRequestReceiver,
157 #[serde(rename = "createdDateTime")]
159 pub created_date_time: UtcDateTime,
160 #[serde(
162 rename = "AttributeInstanceComponent",
163 default,
164 skip_serializing_if = "Vec::is_empty"
165 )]
166 pub attributes: Vec<AttributeInstanceComponent>,
167 #[serde(
169 rename = "MktActivityRecord",
170 default,
171 skip_serializing_if = "Vec::is_empty"
172 )]
173 pub mkt_activity_records: Vec<MktActivityRecord>,
174}