Skip to main content

rings_rpc/protos/
rings_node.rs

1//! Request/response message types for the rings node RPC API.
2//!
3//! These were previously generated from `rings_node.proto` via prost, but the
4//! wire format has always been JSON-RPC (never protobuf binary), so they are
5//! now plain serde structs. Field names and types are kept identical to the
6//! previous prost-generated output to preserve the on-the-wire JSON shape.
7
8use serde::Deserialize;
9use serde::Serialize;
10
11#[derive(Clone, PartialEq, Debug, Default, Serialize, Deserialize)]
12pub struct PeerInfo {
13    pub did: String,
14    pub state: String,
15}
16
17#[derive(Clone, PartialEq, Debug, Default, Serialize, Deserialize)]
18pub struct ConnectPeerViaHttpRequest {
19    pub url: String,
20}
21
22#[derive(Clone, PartialEq, Debug, Default, Serialize, Deserialize)]
23pub struct ConnectPeerViaHttpResponse {
24    pub did: String,
25}
26
27#[derive(Clone, PartialEq, Debug, Default, Serialize, Deserialize)]
28pub struct ConnectWithDidRequest {
29    pub did: String,
30}
31
32#[derive(Clone, PartialEq, Debug, Default, Serialize, Deserialize)]
33pub struct ConnectWithDidResponse {}
34
35#[derive(Clone, PartialEq, Debug, Default, Serialize, Deserialize)]
36pub struct SeedPeer {
37    pub did: String,
38    pub url: String,
39}
40
41#[derive(Clone, PartialEq, Debug, Default, Serialize, Deserialize)]
42pub struct ConnectWithSeedRequest {
43    pub peers: Vec<SeedPeer>,
44}
45
46#[derive(Clone, PartialEq, Debug, Default, Serialize, Deserialize)]
47pub struct ConnectWithSeedResponse {}
48
49#[derive(Clone, PartialEq, Debug, Default, Serialize, Deserialize)]
50pub struct ListPeersRequest {}
51
52#[derive(Clone, PartialEq, Debug, Default, Serialize, Deserialize)]
53pub struct ListPeersResponse {
54    pub peers: Vec<PeerInfo>,
55}
56
57#[derive(Clone, PartialEq, Debug, Default, Serialize, Deserialize)]
58pub struct CreateOfferRequest {
59    pub did: String,
60}
61
62#[derive(Clone, PartialEq, Debug, Default, Serialize, Deserialize)]
63pub struct CreateOfferResponse {
64    pub offer: String,
65}
66
67#[derive(Clone, PartialEq, Debug, Default, Serialize, Deserialize)]
68pub struct AnswerOfferRequest {
69    pub offer: String,
70}
71
72#[derive(Clone, PartialEq, Debug, Default, Serialize, Deserialize)]
73pub struct AnswerOfferResponse {
74    pub answer: String,
75}
76
77#[derive(Clone, PartialEq, Debug, Default, Serialize, Deserialize)]
78pub struct AcceptAnswerRequest {
79    pub answer: String,
80}
81
82#[derive(Clone, PartialEq, Debug, Default, Serialize, Deserialize)]
83pub struct AcceptAnswerResponse {}
84
85#[derive(Clone, PartialEq, Debug, Default, Serialize, Deserialize)]
86pub struct DisconnectRequest {
87    pub did: String,
88}
89
90#[derive(Clone, PartialEq, Debug, Default, Serialize, Deserialize)]
91pub struct DisconnectResponse {}
92
93#[derive(Clone, PartialEq, Debug, Default, Serialize, Deserialize)]
94pub struct SendBackendMessageRequest {
95    pub destination_did: String,
96    /// Protocol namespace the payload is routed to (the extension `Envelope` namespace).
97    pub namespace: String,
98    /// Payload bytes, **base64-encoded** (standard alphabet). The `Envelope` payload is
99    /// binary (`Bytes`), so the RPC boundary base64-encodes it to stay binary-safe over the
100    /// JSON wire — do not pass raw UTF-8 here.
101    pub data: String,
102}
103
104#[derive(Clone, PartialEq, Debug, Default, Serialize, Deserialize)]
105pub struct SendBackendMessageResponse {}
106
107#[derive(Clone, PartialEq, Debug, Default, Serialize, Deserialize)]
108pub struct PublishMessageToTopicRequest {
109    pub topic: String,
110    pub data: String,
111}
112
113#[derive(Clone, PartialEq, Debug, Default, Serialize, Deserialize)]
114pub struct PublishMessageToTopicResponse {}
115
116#[derive(Clone, PartialEq, Debug, Default, Serialize, Deserialize)]
117pub struct FetchTopicMessagesRequest {
118    pub topic: String,
119    pub skip: i64,
120}
121
122#[derive(Clone, PartialEq, Debug, Default, Serialize, Deserialize)]
123pub struct FetchTopicMessagesResponse {
124    pub data: Vec<String>,
125}
126
127#[derive(Clone, PartialEq, Debug, Default, Serialize, Deserialize)]
128pub struct RegisterServiceRequest {
129    pub name: String,
130}
131
132#[derive(Clone, PartialEq, Debug, Default, Serialize, Deserialize)]
133pub struct RegisterServiceResponse {}
134
135#[derive(Clone, PartialEq, Debug, Default, Serialize, Deserialize)]
136pub struct LookupServiceRequest {
137    pub name: String,
138}
139
140#[derive(Clone, PartialEq, Debug, Default, Serialize, Deserialize)]
141pub struct LookupServiceResponse {
142    pub dids: Vec<String>,
143}
144
145#[derive(Clone, PartialEq, Debug, Default, Serialize, Deserialize)]
146pub struct NodeInfoRequest {}
147
148#[derive(Clone, PartialEq, Debug, Default, Serialize, Deserialize)]
149pub struct FingerTableRange {
150    pub did: Option<String>,
151    pub start: u64,
152    pub end: u64,
153}
154
155#[derive(Clone, PartialEq, Debug, Default, Serialize, Deserialize)]
156pub struct DhtInfo {
157    pub did: String,
158    pub successors: Vec<String>,
159    pub predecessor: Option<String>,
160    pub finger_table_ranges: Vec<FingerTableRange>,
161}
162
163#[derive(Clone, PartialEq, Debug, Default, Serialize, Deserialize)]
164pub struct StorageValue {
165    pub did: String,
166    pub kind: String,
167    pub data: Vec<String>,
168}
169
170#[derive(Clone, PartialEq, Debug, Default, Serialize, Deserialize)]
171pub struct StorageItem {
172    pub key: String,
173    pub value: Option<StorageValue>,
174}
175
176#[derive(Clone, PartialEq, Debug, Default, Serialize, Deserialize)]
177pub struct StorageInfo {
178    pub items: Vec<StorageItem>,
179}
180
181#[derive(Clone, PartialEq, Debug, Default, Serialize, Deserialize)]
182pub struct SwarmInfo {
183    pub peers: Vec<PeerInfo>,
184    pub dht: Option<DhtInfo>,
185    pub persistence_storage: Option<StorageInfo>,
186    pub cache_storage: Option<StorageInfo>,
187}
188
189#[derive(Clone, PartialEq, Debug, Default, Serialize, Deserialize)]
190pub struct NodeInfoResponse {
191    pub version: String,
192    pub swarm: Option<SwarmInfo>,
193}
194
195#[derive(Clone, PartialEq, Debug, Default, Serialize, Deserialize)]
196pub struct NodeDidRequest {}
197
198#[derive(Clone, PartialEq, Debug, Default, Serialize, Deserialize)]
199pub struct NodeDidResponse {
200    pub did: String,
201}