relay_knowledge/api/operations/
proposal.rs1use serde::{Deserialize, Serialize};
2
3use crate::{
4 api::ApiMetadata,
5 domain::{CommitReceipt, ProposalConflictRecord, ProposalRecord, ProposalState},
6};
7
8#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
10pub struct ProposalListApiRequest {
11 #[serde(skip_serializing_if = "Option::is_none")]
12 pub state: Option<ProposalState>,
13 pub limit: usize,
14}
15
16#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
18pub struct ProposalListResponse {
19 pub metadata: ApiMetadata,
20 pub proposals: Vec<ProposalRecord>,
21}
22
23#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
25pub struct ProposalShowResponse {
26 pub metadata: ApiMetadata,
27 pub proposal: ProposalRecord,
28 pub conflicts: Vec<ProposalConflictRecord>,
29 pub payload: serde_json::Value,
30}
31
32#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
34pub struct ProposalDecisionApiRequest {
35 pub actor: String,
36 #[serde(skip_serializing_if = "Option::is_none")]
37 pub reason: Option<String>,
38}
39
40#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
42pub struct ProposalDecisionResponse {
43 pub metadata: ApiMetadata,
44 pub proposal: ProposalRecord,
45 #[serde(skip_serializing_if = "Option::is_none")]
46 pub receipt: Option<CommitReceipt>,
47 #[serde(skip_serializing_if = "Option::is_none")]
48 pub index_refresh_error: Option<String>,
49}