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 SendE2eHandshakeRequest {
109    pub destination_did: String,
110}
111
112#[derive(Clone, PartialEq, Debug, Default, Serialize, Deserialize)]
113pub struct SendE2eHandshakeResponse {
114    pub tx_id: String,
115}
116
117#[derive(Clone, PartialEq, Debug, Default, Serialize, Deserialize)]
118pub struct SendE2eMessageRequest {
119    pub destination_did: String,
120    /// Recipient public key as a base58-check string. Hex is accepted by node implementations
121    /// for development ergonomics.
122    pub recipient_public_key: String,
123    /// Plaintext bytes, base64-encoded for the JSON RPC boundary.
124    pub data: String,
125    /// Optional plaintext frame length. `0` means the core default.
126    #[serde(default)]
127    pub max_plaintext_frame_len: u32,
128}
129
130#[derive(Clone, PartialEq, Debug, Default, Serialize, Deserialize)]
131pub struct SendE2eMessageResponse {
132    pub stream_id: String,
133}
134
135#[derive(Clone, PartialEq, Debug, Default, Serialize, Deserialize)]
136pub struct PublishMessageToTopicRequest {
137    pub topic: String,
138    pub data: String,
139}
140
141#[derive(Clone, PartialEq, Debug, Default, Serialize, Deserialize)]
142pub struct PublishMessageToTopicResponse {}
143
144#[derive(Clone, PartialEq, Debug, Default, Serialize, Deserialize)]
145pub struct FetchTopicMessagesRequest {
146    pub topic: String,
147    pub skip: i64,
148}
149
150#[derive(Clone, PartialEq, Debug, Default, Serialize, Deserialize)]
151pub struct FetchTopicMessagesResponse {
152    pub data: Vec<String>,
153}
154
155#[derive(Clone, PartialEq, Debug, Default, Serialize, Deserialize)]
156pub struct RegisterServiceRequest {
157    pub name: String,
158}
159
160#[derive(Clone, PartialEq, Debug, Default, Serialize, Deserialize)]
161pub struct RegisterServiceResponse {}
162
163#[derive(Clone, PartialEq, Debug, Default, Serialize, Deserialize)]
164pub struct LookupServiceRequest {
165    pub name: String,
166}
167
168#[derive(Clone, PartialEq, Debug, Default, Serialize, Deserialize)]
169pub struct LookupServiceResponse {
170    pub dids: Vec<String>,
171}
172
173#[derive(Clone, PartialEq, Debug, Default, Serialize, Deserialize)]
174pub struct NodeInfoRequest {}
175
176#[derive(Clone, PartialEq, Debug, Default, Serialize, Deserialize)]
177pub struct FingerTableRange {
178    pub did: Option<String>,
179    pub start: u64,
180    pub end: u64,
181}
182
183#[derive(Clone, PartialEq, Debug, Default, Serialize, Deserialize)]
184pub struct DhtInfo {
185    pub did: String,
186    pub successors: Vec<String>,
187    pub predecessor: Option<String>,
188    pub finger_table_ranges: Vec<FingerTableRange>,
189}
190
191#[derive(Clone, PartialEq, Debug, Default, Serialize, Deserialize)]
192pub struct StorageValue {
193    pub did: String,
194    pub kind: String,
195    pub data: Vec<String>,
196}
197
198#[derive(Clone, PartialEq, Debug, Default, Serialize, Deserialize)]
199pub struct StorageItem {
200    pub key: String,
201    pub value: Option<StorageValue>,
202}
203
204#[derive(Clone, PartialEq, Debug, Default, Serialize, Deserialize)]
205pub struct StorageInfo {
206    pub items: Vec<StorageItem>,
207}
208
209#[derive(Clone, PartialEq, Debug, Default, Serialize, Deserialize)]
210pub struct SwarmInfo {
211    pub peers: Vec<PeerInfo>,
212    pub dht: Option<DhtInfo>,
213    pub persistence_storage: Option<StorageInfo>,
214    pub cache_storage: Option<StorageInfo>,
215}
216
217#[derive(Clone, PartialEq, Debug, Default, Serialize, Deserialize)]
218pub struct NodeInfoResponse {
219    pub version: String,
220    pub swarm: Option<SwarmInfo>,
221}
222
223#[derive(Clone, PartialEq, Debug, Default, Serialize, Deserialize)]
224pub struct NodeDidRequest {}
225
226#[derive(Clone, PartialEq, Debug, Default, Serialize, Deserialize)]
227pub struct NodeDidResponse {
228    pub did: String,
229}