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}