Skip to main content

messaging_api/
control.rs

1use serde::{Deserialize, Serialize};
2use serde_json::Value;
3
4#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash, Serialize, Deserialize)]
5#[serde(rename_all = "lowercase")]
6pub enum Placement {
7    Local,
8    Cloud,
9}
10
11#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
12#[serde(rename_all = "camelCase", deny_unknown_fields)]
13pub struct FrontendProvider {
14    pub provider: String,
15    pub deprecated: bool,
16    pub supported_placements: Vec<Placement>,
17}
18
19#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
20#[serde(rename_all = "camelCase", deny_unknown_fields)]
21pub struct ProviderListRequest {
22    pub placement: Placement,
23    pub frontend_providers: Vec<FrontendProvider>,
24}
25
26#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
27#[serde(rename_all = "camelCase", deny_unknown_fields)]
28pub struct ProviderMetadata {
29    pub provider: String,
30    pub display_name: String,
31    pub placement: Placement,
32    pub deprecated: bool,
33    pub available: bool,
34    #[serde(default, skip_serializing_if = "Option::is_none")]
35    pub disabled_reason: Option<String>,
36    pub setup_flow: String,
37    pub capabilities: Vec<String>,
38}
39
40#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
41#[serde(rename_all = "camelCase", deny_unknown_fields)]
42pub struct ProviderListResponse {
43    pub providers: Vec<ProviderMetadata>,
44}
45
46#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
47#[serde(rename_all = "camelCase", deny_unknown_fields)]
48pub struct ProviderPlacementRequest {
49    pub provider: String,
50    pub placement: Placement,
51}
52
53#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
54#[serde(rename_all = "camelCase", deny_unknown_fields)]
55pub struct ConnectionUpdateRequest {
56    pub provider: String,
57    pub placement: Placement,
58    #[serde(default, skip_serializing_if = "Option::is_none")]
59    pub connection_id: Option<String>,
60    pub data: Value,
61}
62
63#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
64#[serde(rename_all = "camelCase", deny_unknown_fields)]
65pub struct ConnectionRequest {
66    pub provider: String,
67    pub placement: Placement,
68    pub connection_id: String,
69}
70
71#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
72#[serde(rename_all = "camelCase", deny_unknown_fields)]
73pub struct ConnectionTestRequest {
74    pub provider: String,
75    pub placement: Placement,
76    pub data: Value,
77}
78
79#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
80#[serde(rename_all = "camelCase", deny_unknown_fields)]
81pub struct MessagingConnection {
82    pub provider: String,
83    pub placement: Placement,
84    pub connection_id: String,
85    pub account_id: String,
86    #[serde(default, skip_serializing_if = "Option::is_none")]
87    pub display_name: Option<String>,
88    pub enabled: bool,
89    pub status: String,
90    #[serde(default, skip_serializing_if = "Option::is_none")]
91    pub status_message: Option<String>,
92    pub bound_to_current_scope: bool,
93    pub provider_data: Value,
94}
95
96#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
97#[serde(rename_all = "camelCase", deny_unknown_fields)]
98pub struct ConnectionListResponse {
99    pub connections: Vec<MessagingConnection>,
100}
101
102#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
103#[serde(rename_all = "camelCase", deny_unknown_fields)]
104pub struct ConnectionUpdateResponse {
105    pub connection: MessagingConnection,
106}
107
108#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
109#[serde(rename_all = "camelCase", deny_unknown_fields)]
110pub struct ConnectionTestResponse {
111    pub result: Value,
112}
113
114#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
115#[serde(rename_all = "camelCase", deny_unknown_fields)]
116pub struct ProviderStatus {
117    pub provider: String,
118    pub placement: Placement,
119    pub enabled: bool,
120    pub provider_data: Value,
121}
122
123#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
124#[serde(rename_all = "camelCase", deny_unknown_fields)]
125pub struct ConnectionStatusResponse {
126    pub status: ProviderStatus,
127}
128
129#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
130#[serde(rename_all = "camelCase", deny_unknown_fields)]
131pub struct MutationResponse {
132    pub success: bool,
133}
134
135#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
136#[serde(rename_all = "camelCase", deny_unknown_fields)]
137pub struct AccountBindingRequest {
138    pub provider: String,
139    pub placement: Placement,
140    pub account_id: String,
141}
142
143#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
144#[serde(rename_all = "camelCase", deny_unknown_fields)]
145pub struct AccountBinding {
146    pub tenant_id: String,
147    pub scope_id: String,
148    pub user_id: String,
149    pub default: bool,
150}
151
152#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
153#[serde(rename_all = "camelCase", deny_unknown_fields)]
154pub struct AccountBindingListResponse {
155    pub bindings: Vec<AccountBinding>,
156}
157
158#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
159#[serde(rename_all = "camelCase", deny_unknown_fields)]
160pub struct SetupStartRequest {
161    pub provider: String,
162    pub placement: Placement,
163    pub data: Value,
164}
165
166#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
167#[serde(rename_all = "camelCase", deny_unknown_fields)]
168pub struct SetupOptionsResponse {
169    pub options: Value,
170}
171
172#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
173#[serde(rename_all = "camelCase", deny_unknown_fields)]
174pub struct SetupStatusRequest {
175    pub provider: String,
176    pub placement: Placement,
177    pub setup_id: String,
178}
179
180#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
181#[serde(rename_all = "camelCase", deny_unknown_fields)]
182pub struct SetupAction {
183    #[serde(rename = "type")]
184    pub kind: String,
185    #[serde(default, skip_serializing_if = "Option::is_none")]
186    pub url: Option<String>,
187}
188
189#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
190#[serde(rename_all = "camelCase", deny_unknown_fields)]
191pub struct SetupState {
192    #[serde(default, skip_serializing_if = "Option::is_none")]
193    pub setup_id: Option<String>,
194    pub status: String,
195    #[serde(default, skip_serializing_if = "Option::is_none")]
196    pub expires_at_ms: Option<i64>,
197    #[serde(default, skip_serializing_if = "Option::is_none")]
198    pub action: Option<SetupAction>,
199    pub provider_data: Value,
200    #[serde(default, skip_serializing_if = "Option::is_none")]
201    pub connection_id: Option<String>,
202    #[serde(default, skip_serializing_if = "Option::is_none")]
203    pub message: Option<String>,
204}
205
206#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
207#[serde(rename_all = "camelCase", deny_unknown_fields)]
208pub struct SetupResponse {
209    pub setup: SetupState,
210}