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)]
77pub struct AttributeInstanceComponent {
78 #[serde(rename = "attribute")]
80 pub attribute: String,
81 #[serde(
83 rename = "attributeValue",
84 default,
85 skip_serializing_if = "Option::is_none"
86 )]
87 pub attribute_value: Option<String>,
88}
89
90#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
94pub struct MktActivityRecord {
95 #[serde(rename = "MarketParticipant.mRID")]
97 pub market_participant_m_rid: SimpleContent<String>,
98 pub status: ParticipantStatus,
100}
101
102#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
110#[serde(rename = "StatusRequest_MarketDocument")]
111pub struct StatusRequestMarketDocument {
112 #[serde(rename = "mRID")]
114 pub m_rid: Mrid,
115 #[serde(rename = "type")]
117 pub doc_type: StatusRequestDocType,
118 #[serde(rename = "sender_MarketParticipant.mRID")]
120 pub sender_m_rid: ParticipantMrid,
121 #[serde(rename = "sender_MarketParticipant.marketRole.type")]
123 pub sender_market_role: StatusRequestSenderRole,
124 #[serde(rename = "receiver_MarketParticipant.mRID")]
126 pub receiver_m_rid: ParticipantMrid,
127 #[serde(rename = "receiver_MarketParticipant.marketRole.type")]
129 pub receiver_market_role: StatusRequestReceiverRole,
130 #[serde(rename = "createdDateTime")]
132 pub created_date_time: UtcDateTime,
133 #[serde(
135 rename = "AttributeInstanceComponent",
136 default,
137 skip_serializing_if = "Vec::is_empty"
138 )]
139 pub attributes: Vec<AttributeInstanceComponent>,
140 #[serde(
142 rename = "MktActivityRecord",
143 default,
144 skip_serializing_if = "Vec::is_empty"
145 )]
146 pub mkt_activity_records: Vec<MktActivityRecord>,
147}