1#[derive(serde::Serialize, serde::Deserialize)]
3#[derive(Clone, PartialEq, ::prost::Message)]
4pub struct ConfigMain {
5 #[prost(string, optional, tag = "1")]
6 pub env: ::core::option::Option<::prost::alloc::string::String>,
7 #[prost(string, optional, tag = "2")]
8 pub site_name: ::core::option::Option<::prost::alloc::string::String>,
9 #[prost(string, optional, tag = "3")]
10 pub site_url: ::core::option::Option<::prost::alloc::string::String>,
11 #[prost(bool, optional, tag = "5")]
12 pub enable_link_previews: ::core::option::Option<bool>,
13 #[prost(string, optional, tag = "6")]
14 pub restrict_link_previews: ::core::option::Option<::prost::alloc::string::String>,
15 #[prost(bool, optional, tag = "7")]
16 pub enable_client_performance_debugging: ::core::option::Option<bool>,
17 #[prost(bool, optional, tag = "8")]
18 pub enable_gif_picker: ::core::option::Option<bool>,
19 #[prost(bool, optional, tag = "9")]
20 pub enable_custom_emoji: ::core::option::Option<bool>,
21 #[prost(bool, optional, tag = "10")]
22 pub enable_emoji_picker: ::core::option::Option<bool>,
23 #[prost(int64, optional, tag = "11")]
24 pub time_between_user_typing_updates_milliseconds: ::core::option::Option<i64>,
25 #[prost(bool, optional, tag = "12")]
26 pub enable_file_search: ::core::option::Option<bool>,
27 #[prost(bool, optional, tag = "13")]
28 pub enable_user_typing_messages: ::core::option::Option<bool>,
29 #[prost(bool, optional, tag = "14")]
30 pub enable_user_statuses: ::core::option::Option<bool>,
31 #[prost(bool, optional, tag = "15")]
32 pub enable_email_invitations: ::core::option::Option<bool>,
33 #[prost(bool, optional, tag = "16")]
34 pub enable_svgs: ::core::option::Option<bool>,
35 #[prost(bool, optional, tag = "17")]
36 pub allow_persistent_notifications: ::core::option::Option<bool>,
37 #[prost(int32, optional, tag = "18")]
38 pub persistent_notification_interval_minutes: ::core::option::Option<i32>,
39 #[prost(int32, optional, tag = "19")]
40 pub persistent_notification_max_count: ::core::option::Option<i32>,
41 #[prost(int32, optional, tag = "20")]
42 pub persistent_notification_max_recipients: ::core::option::Option<i32>,
43 #[prost(int32, optional, tag = "21")]
44 pub feature_flag_sync_interval_seconds: ::core::option::Option<i32>,
45 #[prost(bool, optional, tag = "22")]
46 pub allow_synced_drafts: ::core::option::Option<bool>,
47}
48#[derive(serde::Serialize, serde::Deserialize)]
49#[derive(Clone, PartialEq, ::prost::Message)]
50pub struct ConfigServices {
51 #[prost(string, optional, tag = "1")]
52 pub common_service_grpc_url: ::core::option::Option<::prost::alloc::string::String>,
53 #[prost(string, optional, tag = "2")]
54 pub user_service_grpc_url: ::core::option::Option<::prost::alloc::string::String>,
55 #[prost(string, optional, tag = "3")]
56 pub products_service_grpc_url: ::core::option::Option<
57 ::prost::alloc::string::String,
58 >,
59 #[prost(string, optional, tag = "4")]
60 pub jaeger_collector_url: ::core::option::Option<::prost::alloc::string::String>,
61 #[prost(string, optional, tag = "5")]
62 pub common_service_prometheus_url: ::core::option::Option<
63 ::prost::alloc::string::String,
64 >,
65 #[prost(string, optional, tag = "6")]
66 pub user_service_prometheus_url: ::core::option::Option<
67 ::prost::alloc::string::String,
68 >,
69 #[prost(string, optional, tag = "7")]
70 pub products_service_prometheus_url: ::core::option::Option<
71 ::prost::alloc::string::String,
72 >,
73 #[prost(int64, optional, tag = "8")]
74 pub users_service_max_receive_message_size_bytes: ::core::option::Option<i64>,
75 #[prost(string, optional, tag = "9")]
76 pub auth_service_grpc_url: ::core::option::Option<::prost::alloc::string::String>,
77 #[prost(string, optional, tag = "10")]
78 pub auth_service_prometheus_url: ::core::option::Option<
79 ::prost::alloc::string::String,
80 >,
81 #[prost(string, tag = "11")]
82 pub search_service_grpc_url: ::prost::alloc::string::String,
83 #[prost(string, tag = "12")]
84 pub search_service_prometheus_url: ::prost::alloc::string::String,
85}
86#[derive(serde::Serialize, serde::Deserialize)]
87#[derive(Clone, PartialEq, ::prost::Message)]
88pub struct ConfigOAuth {
89 #[prost(string, optional, tag = "1")]
90 pub oauth_provider_url: ::core::option::Option<::prost::alloc::string::String>,
91 #[prost(string, optional, tag = "2")]
92 pub oauth_client_id: ::core::option::Option<::prost::alloc::string::String>,
93 #[prost(string, optional, tag = "3")]
94 pub oauth_client_secret: ::core::option::Option<::prost::alloc::string::String>,
95 #[prost(string, optional, tag = "4")]
96 pub oauth_db_dsn: ::core::option::Option<::prost::alloc::string::String>,
97 #[prost(string, optional, tag = "5")]
98 pub oauth_redirect_url: ::core::option::Option<::prost::alloc::string::String>,
99 #[prost(string, optional, tag = "6")]
100 pub oauth_login_url: ::core::option::Option<::prost::alloc::string::String>,
101 #[prost(string, optional, tag = "7")]
102 pub oauth_consent_url: ::core::option::Option<::prost::alloc::string::String>,
103 #[prost(string, optional, tag = "8")]
104 pub oauth_response_type: ::core::option::Option<::prost::alloc::string::String>,
105 #[prost(string, repeated, tag = "9")]
106 pub oauth_scope: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
107 #[prost(string, optional, tag = "10")]
108 pub oauth_admin_url: ::core::option::Option<::prost::alloc::string::String>,
109 #[prost(string, optional, tag = "11")]
110 pub oauth_backend_url: ::core::option::Option<::prost::alloc::string::String>,
111 #[prost(string, optional, tag = "12")]
112 pub frontend_login_url: ::core::option::Option<::prost::alloc::string::String>,
113 #[prost(string, optional, tag = "13")]
114 pub frontend_login_error_url: ::core::option::Option<::prost::alloc::string::String>,
115 #[prost(string, repeated, tag = "14")]
116 pub oauth_grant_access_token_audience: ::prost::alloc::vec::Vec<
117 ::prost::alloc::string::String,
118 >,
119}
120#[derive(serde::Serialize, serde::Deserialize)]
121#[derive(Clone, PartialEq, ::prost::Message)]
122pub struct ConfigSecurity {
123 #[prost(int32, optional, tag = "1")]
124 pub access_token_expiry_web_in_hours: ::core::option::Option<i32>,
125 #[prost(int32, optional, tag = "2")]
126 pub access_token_expiry_mobile_in_hours: ::core::option::Option<i32>,
127 #[prost(int32, optional, tag = "3")]
128 pub access_token_expiry_sso_in_hours: ::core::option::Option<i32>,
129 #[prost(int32, optional, tag = "4")]
130 pub access_token_cache_in_minutes: ::core::option::Option<i32>,
131 #[prost(int32, optional, tag = "5")]
132 pub refresh_token_expiry_in_hours: ::core::option::Option<i32>,
133 #[prost(int32, optional, tag = "6")]
134 pub maximum_login_attempts: ::core::option::Option<i32>,
135 #[prost(bool, optional, tag = "7")]
136 pub terminate_sessions_on_password_change: ::core::option::Option<bool>,
137 #[prost(string, optional, tag = "8")]
138 pub email_confirmation_url: ::core::option::Option<::prost::alloc::string::String>,
139 #[prost(string, optional, tag = "9")]
140 pub password_reset_url: ::core::option::Option<::prost::alloc::string::String>,
141 #[prost(uint32, optional, tag = "10")]
142 pub token_confirmation_expiry_in_hours: ::core::option::Option<u32>,
143 #[prost(uint32, optional, tag = "11")]
144 pub token_password_reset_expiry_in_hours: ::core::option::Option<u32>,
145 #[prost(bool, optional, tag = "12")]
146 pub enable_insecure_outgoing_connections: ::core::option::Option<bool>,
147 #[prost(bool, optional, tag = "13")]
148 pub enable_multifactor_authentication: ::core::option::Option<bool>,
149 #[prost(bool, optional, tag = "14")]
150 pub enforce_multifactor_authentication: ::core::option::Option<bool>,
151 #[prost(bool, optional, tag = "15")]
152 pub enable_oauth_service_provider: ::core::option::Option<bool>,
153 #[prost(bool, optional, tag = "16")]
154 pub enable_outgoing_oauth_connections: ::core::option::Option<bool>,
155 #[prost(string, optional, tag = "17")]
156 pub allow_cors_from: ::core::option::Option<::prost::alloc::string::String>,
157 #[prost(string, optional, tag = "18")]
158 pub cors_exposed_headers: ::core::option::Option<::prost::alloc::string::String>,
159 #[prost(bool, optional, tag = "19")]
160 pub cors_allow_credentials: ::core::option::Option<bool>,
161 #[prost(bool, optional, tag = "20")]
162 pub cors_debug: ::core::option::Option<bool>,
163 #[prost(bool, optional, tag = "21")]
164 pub allow_cookies_for_subdomains: ::core::option::Option<bool>,
165}
166#[derive(serde::Serialize, serde::Deserialize)]
167#[derive(Clone, PartialEq, ::prost::Message)]
168pub struct CacheConfig {
169 #[prost(string, optional, tag = "1")]
170 pub cache_type: ::core::option::Option<::prost::alloc::string::String>,
171 #[prost(string, optional, tag = "2")]
172 pub redis_address: ::core::option::Option<::prost::alloc::string::String>,
173 #[prost(string, optional, tag = "3")]
174 pub redis_password: ::core::option::Option<::prost::alloc::string::String>,
175 #[prost(int32, optional, tag = "4")]
176 pub redis_db: ::core::option::Option<i32>,
177 #[prost(string, optional, tag = "5")]
178 pub redis_cache_prefix: ::core::option::Option<::prost::alloc::string::String>,
179 #[prost(bool, optional, tag = "6")]
180 pub disable_client_cache: ::core::option::Option<bool>,
181}
182#[derive(serde::Serialize, serde::Deserialize)]
183#[derive(Clone, PartialEq, ::prost::Message)]
184pub struct ConfigMetrics {
185 #[prost(bool, optional, tag = "1")]
186 pub enable: ::core::option::Option<bool>,
187 #[prost(int32, optional, tag = "2")]
188 pub block_profile_rate: ::core::option::Option<i32>,
189 #[prost(string, optional, tag = "3")]
190 pub listen_address: ::core::option::Option<::prost::alloc::string::String>,
191 #[prost(bool, optional, tag = "4")]
192 pub enable_client_metrics: ::core::option::Option<bool>,
193 #[prost(bool, optional, tag = "5")]
194 pub enable_notification_metrics: ::core::option::Option<bool>,
195 #[prost(string, repeated, tag = "6")]
196 pub client_side_user_ids: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
197}
198#[derive(serde::Serialize, serde::Deserialize)]
199#[derive(Clone, PartialEq, ::prost::Message)]
200pub struct ConfigSso {
201 #[prost(bool, optional, tag = "1")]
202 pub enable: ::core::option::Option<bool>,
203 #[prost(string, optional, tag = "2")]
204 pub secret: ::core::option::Option<::prost::alloc::string::String>,
205 #[prost(string, optional, tag = "3")]
206 pub id: ::core::option::Option<::prost::alloc::string::String>,
207 #[prost(string, optional, tag = "4")]
208 pub scope: ::core::option::Option<::prost::alloc::string::String>,
209 #[prost(string, optional, tag = "5")]
210 pub auth_endpoint: ::core::option::Option<::prost::alloc::string::String>,
211 #[prost(string, optional, tag = "6")]
212 pub token_endpoint: ::core::option::Option<::prost::alloc::string::String>,
213 #[prost(string, optional, tag = "7")]
214 pub user_api_endpoint: ::core::option::Option<::prost::alloc::string::String>,
215 #[prost(string, optional, tag = "8")]
216 pub discovery_endpoint: ::core::option::Option<::prost::alloc::string::String>,
217 #[prost(string, optional, tag = "9")]
218 pub button_text: ::core::option::Option<::prost::alloc::string::String>,
219 #[prost(string, optional, tag = "10")]
220 pub button_color: ::core::option::Option<::prost::alloc::string::String>,
221}
222#[derive(serde::Serialize, serde::Deserialize)]
223#[derive(Clone, PartialEq, ::prost::Message)]
224pub struct ConfigSql {
225 #[prost(string, optional, tag = "1")]
226 pub driver_name: ::core::option::Option<::prost::alloc::string::String>,
227 #[prost(string, optional, tag = "2")]
228 pub data_source: ::core::option::Option<::prost::alloc::string::String>,
229 #[prost(int32, optional, tag = "3")]
230 pub max_idle_conns: ::core::option::Option<i32>,
231 #[prost(int32, optional, tag = "4")]
232 pub conn_max_lifetime_milliseconds: ::core::option::Option<i32>,
233 #[prost(int32, optional, tag = "5")]
234 pub conn_max_idle_time_milliseconds: ::core::option::Option<i32>,
235 #[prost(int32, optional, tag = "6")]
236 pub max_open_conns: ::core::option::Option<i32>,
237 #[prost(bool, optional, tag = "7")]
238 pub trace: ::core::option::Option<bool>,
239 #[prost(string, optional, tag = "8")]
240 pub at_rest_encrypt_key: ::core::option::Option<::prost::alloc::string::String>,
241 #[prost(int32, optional, tag = "9")]
242 pub query_timeout: ::core::option::Option<i32>,
243 #[prost(bool, optional, tag = "10")]
244 pub disable_database_search: ::core::option::Option<bool>,
245}
246#[derive(serde::Serialize, serde::Deserialize)]
247#[derive(Clone, Copy, PartialEq, ::prost::Message)]
248pub struct ConfigPassword {
249 #[prost(int32, optional, tag = "1")]
250 pub minimum_length: ::core::option::Option<i32>,
251 #[prost(int32, optional, tag = "2")]
252 pub maximum_length: ::core::option::Option<i32>,
253 #[prost(bool, optional, tag = "3")]
254 pub lowercase: ::core::option::Option<bool>,
255 #[prost(bool, optional, tag = "4")]
256 pub number: ::core::option::Option<bool>,
257 #[prost(bool, optional, tag = "5")]
258 pub uppercase: ::core::option::Option<bool>,
259 #[prost(bool, optional, tag = "6")]
260 pub symbol: ::core::option::Option<bool>,
261 #[prost(bool, optional, tag = "7")]
262 pub enable_forgot_link: ::core::option::Option<bool>,
263}
264#[derive(serde::Serialize, serde::Deserialize)]
265#[derive(Clone, PartialEq, ::prost::Message)]
266pub struct ConfigFile {
267 #[prost(bool, optional, tag = "1")]
268 pub enable_file_attachments: ::core::option::Option<bool>,
269 #[prost(bool, optional, tag = "2")]
270 pub enable_mobile_upload: ::core::option::Option<bool>,
271 #[prost(bool, optional, tag = "3")]
272 pub enable_mobile_download: ::core::option::Option<bool>,
273 #[prost(int64, optional, tag = "4")]
274 pub max_image_resolution: ::core::option::Option<i64>,
275 #[prost(int64, optional, tag = "5")]
276 pub max_image_decoder_concurrency: ::core::option::Option<i64>,
277 #[prost(string, optional, tag = "6")]
278 pub driver_name: ::core::option::Option<::prost::alloc::string::String>,
279 #[prost(string, optional, tag = "7")]
280 pub amazon_s3_access_key_id: ::core::option::Option<::prost::alloc::string::String>,
281 #[prost(string, optional, tag = "8")]
282 pub amazon_s3_secret_access_key: ::core::option::Option<
283 ::prost::alloc::string::String,
284 >,
285 #[prost(string, optional, tag = "9")]
286 pub amazon_s3_bucket: ::core::option::Option<::prost::alloc::string::String>,
287 #[prost(string, optional, tag = "10")]
288 pub amazon_s3_path_prefix: ::core::option::Option<::prost::alloc::string::String>,
289 #[prost(string, optional, tag = "11")]
290 pub amazon_s3_region: ::core::option::Option<::prost::alloc::string::String>,
291 #[prost(string, optional, tag = "12")]
292 pub amazon_s3_endpoint: ::core::option::Option<::prost::alloc::string::String>,
293 #[prost(bool, optional, tag = "13")]
294 pub amazon_s3_ssl: ::core::option::Option<bool>,
295 #[prost(bool, optional, tag = "14")]
296 pub amazon_s3_sign_v2: ::core::option::Option<bool>,
297 #[prost(bool, optional, tag = "15")]
298 pub amazon_s3_sse: ::core::option::Option<bool>,
299 #[prost(bool, optional, tag = "16")]
300 pub amazon_s3_trace: ::core::option::Option<bool>,
301 #[prost(int64, optional, tag = "17")]
302 pub amazon_s3_request_timeout_milliseconds: ::core::option::Option<i64>,
303 #[prost(int64, optional, tag = "18")]
304 pub amazon_s3_upload_part_size_bytes: ::core::option::Option<i64>,
305 #[prost(string, optional, tag = "19")]
306 pub amazon_s3_storage_class: ::core::option::Option<::prost::alloc::string::String>,
307}
308#[derive(serde::Serialize, serde::Deserialize)]
309#[derive(Clone, PartialEq, ::prost::Message)]
310pub struct ConfigEmail {
311 #[prost(bool, optional, tag = "1")]
312 pub send_email_notifications: ::core::option::Option<bool>,
313 #[prost(bool, optional, tag = "2")]
314 pub require_email_verification: ::core::option::Option<bool>,
315 #[prost(string, optional, tag = "3")]
316 pub feedback_email: ::core::option::Option<::prost::alloc::string::String>,
317 #[prost(string, optional, tag = "4")]
318 pub reply_to_address: ::core::option::Option<::prost::alloc::string::String>,
319 #[prost(bool, optional, tag = "5")]
320 pub enable_smtp_auth: ::core::option::Option<bool>,
321 #[prost(string, optional, tag = "6")]
322 pub smtp_username: ::core::option::Option<::prost::alloc::string::String>,
323 #[prost(string, optional, tag = "7")]
324 pub smtp_password: ::core::option::Option<::prost::alloc::string::String>,
325 #[prost(string, optional, tag = "8")]
326 pub smtp_server: ::core::option::Option<::prost::alloc::string::String>,
327 #[prost(string, optional, tag = "9")]
328 pub smtp_port: ::core::option::Option<::prost::alloc::string::String>,
329 #[prost(int32, optional, tag = "10")]
330 pub smtp_server_timeout: ::core::option::Option<i32>,
331 #[prost(string, optional, tag = "11")]
332 pub connection_security: ::core::option::Option<::prost::alloc::string::String>,
333 #[prost(bool, optional, tag = "12")]
334 pub send_push_notifications: ::core::option::Option<bool>,
335 #[prost(string, optional, tag = "13")]
336 pub push_notification_server: ::core::option::Option<::prost::alloc::string::String>,
337 #[prost(string, optional, tag = "14")]
338 pub push_notification_contents: ::core::option::Option<
339 ::prost::alloc::string::String,
340 >,
341 #[prost(int32, optional, tag = "15")]
342 pub push_notification_buffer: ::core::option::Option<i32>,
343 #[prost(bool, optional, tag = "16")]
344 pub enable_email_batching: ::core::option::Option<bool>,
345 #[prost(int32, optional, tag = "17")]
346 pub email_batching_buffer_size: ::core::option::Option<i32>,
347 #[prost(int32, optional, tag = "18")]
348 pub email_batching_interval: ::core::option::Option<i32>,
349 #[prost(bool, optional, tag = "19")]
350 pub skip_server_certificate_verification: ::core::option::Option<bool>,
351 #[prost(string, optional, tag = "20")]
352 pub email_notification_contents_type: ::core::option::Option<
353 ::prost::alloc::string::String,
354 >,
355 #[prost(string, optional, tag = "21")]
356 pub login_button_color: ::core::option::Option<::prost::alloc::string::String>,
357 #[prost(string, optional, tag = "22")]
358 pub login_button_border_color: ::core::option::Option<
359 ::prost::alloc::string::String,
360 >,
361 #[prost(string, optional, tag = "23")]
362 pub login_button_text_color: ::core::option::Option<::prost::alloc::string::String>,
363 #[prost(int32, optional, tag = "24")]
364 pub rate_limiting_memory_size: ::core::option::Option<i32>,
365 #[prost(int32, optional, tag = "25")]
366 pub rate_limiting_per_hour: ::core::option::Option<i32>,
367 #[prost(int32, optional, tag = "26")]
368 pub rate_limiting_max_burst: ::core::option::Option<i32>,
369}
370#[derive(serde::Serialize, serde::Deserialize)]
371#[derive(Clone, PartialEq, ::prost::Message)]
372pub struct ConfigRateLimit {
373 #[prost(bool, optional, tag = "1")]
374 pub enable: ::core::option::Option<bool>,
375 #[prost(int32, optional, tag = "2")]
376 pub per_sec: ::core::option::Option<i32>,
377 #[prost(int32, optional, tag = "3")]
378 pub max_burst: ::core::option::Option<i32>,
379 #[prost(int32, optional, tag = "4")]
380 pub memory_store_size: ::core::option::Option<i32>,
381 #[prost(bool, optional, tag = "5")]
382 pub vary_by_remote_addr: ::core::option::Option<bool>,
383 #[prost(bool, optional, tag = "6")]
384 pub vary_by_user: ::core::option::Option<bool>,
385 #[prost(string, tag = "7")]
386 pub vary_by_header: ::prost::alloc::string::String,
387}
388#[derive(serde::Serialize, serde::Deserialize)]
389#[derive(Clone, Copy, PartialEq, ::prost::Message)]
390pub struct ConfigPrivacy {
391 #[prost(bool, optional, tag = "1")]
392 pub show_email_address: ::core::option::Option<bool>,
393 #[prost(bool, optional, tag = "2")]
394 pub show_full_name: ::core::option::Option<bool>,
395}
396#[derive(serde::Serialize, serde::Deserialize)]
397#[derive(Clone, PartialEq, ::prost::Message)]
398pub struct ConfigSupport {
399 #[prost(string, optional, tag = "1")]
400 pub terms_of_service_link: ::core::option::Option<::prost::alloc::string::String>,
401 #[prost(string, optional, tag = "2")]
402 pub privacy_policy_link: ::core::option::Option<::prost::alloc::string::String>,
403 #[prost(string, optional, tag = "3")]
404 pub about_link: ::core::option::Option<::prost::alloc::string::String>,
405 #[prost(string, optional, tag = "4")]
406 pub help_link: ::core::option::Option<::prost::alloc::string::String>,
407 #[prost(string, optional, tag = "5")]
408 pub report_a_problem_link: ::core::option::Option<::prost::alloc::string::String>,
409 #[prost(string, optional, tag = "6")]
410 pub forgot_password_link: ::core::option::Option<::prost::alloc::string::String>,
411 #[prost(string, optional, tag = "7")]
412 pub support_email: ::core::option::Option<::prost::alloc::string::String>,
413}
414#[derive(serde::Serialize, serde::Deserialize)]
415#[derive(Clone, PartialEq, ::prost::Message)]
416pub struct ConfigLocalization {
417 #[prost(string, optional, tag = "1")]
418 pub default_server_locale: ::core::option::Option<::prost::alloc::string::String>,
419 #[prost(string, optional, tag = "2")]
420 pub default_client_locale: ::core::option::Option<::prost::alloc::string::String>,
421 #[prost(string, repeated, tag = "3")]
422 pub available_locales: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
423}
424#[derive(serde::Serialize, serde::Deserialize)]
425#[derive(Clone, PartialEq, ::prost::Message)]
426pub struct ConfigLdap {
427 #[prost(bool, optional, tag = "1")]
429 pub enable: ::core::option::Option<bool>,
430 #[prost(bool, optional, tag = "2")]
431 pub enable_sync: ::core::option::Option<bool>,
432 #[prost(string, optional, tag = "3")]
433 pub ldap_server: ::core::option::Option<::prost::alloc::string::String>,
434 #[prost(int32, optional, tag = "4")]
435 pub ldap_port: ::core::option::Option<i32>,
436 #[prost(string, optional, tag = "5")]
437 pub connection_security: ::core::option::Option<::prost::alloc::string::String>,
438 #[prost(string, optional, tag = "6")]
439 pub base_dn: ::core::option::Option<::prost::alloc::string::String>,
440 #[prost(string, optional, tag = "7")]
441 pub bind_username: ::core::option::Option<::prost::alloc::string::String>,
442 #[prost(string, optional, tag = "8")]
443 pub bind_password: ::core::option::Option<::prost::alloc::string::String>,
444 #[prost(int32, optional, tag = "9")]
445 pub maximum_login_attempts: ::core::option::Option<i32>,
446 #[prost(string, optional, tag = "10")]
448 pub user_filter: ::core::option::Option<::prost::alloc::string::String>,
449 #[prost(string, optional, tag = "11")]
450 pub group_filter: ::core::option::Option<::prost::alloc::string::String>,
451 #[prost(bool, optional, tag = "12")]
452 pub enable_admin_filter: ::core::option::Option<bool>,
453 #[prost(string, optional, tag = "13")]
454 pub admin_filter: ::core::option::Option<::prost::alloc::string::String>,
455 #[prost(string, optional, tag = "14")]
457 pub group_display_name_attribute: ::core::option::Option<
458 ::prost::alloc::string::String,
459 >,
460 #[prost(string, optional, tag = "15")]
461 pub group_id_attribute: ::core::option::Option<::prost::alloc::string::String>,
462 #[prost(string, optional, tag = "16")]
464 pub first_name_attribute: ::core::option::Option<::prost::alloc::string::String>,
465 #[prost(string, optional, tag = "17")]
466 pub last_name_attribute: ::core::option::Option<::prost::alloc::string::String>,
467 #[prost(string, optional, tag = "18")]
468 pub email_attribute: ::core::option::Option<::prost::alloc::string::String>,
469 #[prost(string, optional, tag = "19")]
470 pub username_attribute: ::core::option::Option<::prost::alloc::string::String>,
471 #[prost(string, optional, tag = "20")]
472 pub nickname_attribute: ::core::option::Option<::prost::alloc::string::String>,
473 #[prost(string, optional, tag = "21")]
474 pub id_attribute: ::core::option::Option<::prost::alloc::string::String>,
475 #[prost(string, optional, tag = "22")]
476 pub position_attribute: ::core::option::Option<::prost::alloc::string::String>,
477 #[prost(string, optional, tag = "23")]
478 pub login_id_attribute: ::core::option::Option<::prost::alloc::string::String>,
479 #[prost(string, optional, tag = "24")]
480 pub picture_attribute: ::core::option::Option<::prost::alloc::string::String>,
481 #[prost(int32, optional, tag = "25")]
483 pub sync_interval_minutes: ::core::option::Option<i32>,
484 #[prost(int32, optional, tag = "26")]
486 pub query_timeout: ::core::option::Option<i32>,
487 #[prost(int32, optional, tag = "27")]
488 pub max_page_size: ::core::option::Option<i32>,
489 #[prost(string, optional, tag = "28")]
491 pub login_field_name: ::core::option::Option<::prost::alloc::string::String>,
492 #[prost(string, optional, tag = "29")]
493 pub login_button_color: ::core::option::Option<::prost::alloc::string::String>,
494 #[prost(string, optional, tag = "30")]
495 pub login_button_border_color: ::core::option::Option<
496 ::prost::alloc::string::String,
497 >,
498 #[prost(string, optional, tag = "31")]
499 pub login_button_text_color: ::core::option::Option<::prost::alloc::string::String>,
500}
501#[derive(serde::Serialize, serde::Deserialize)]
502#[derive(Clone, PartialEq, ::prost::Message)]
503pub struct ConfigSaml {
504 #[prost(bool, optional, tag = "1")]
506 pub enable: ::core::option::Option<bool>,
507 #[prost(bool, optional, tag = "2")]
508 pub enable_sync_with_ldap: ::core::option::Option<bool>,
509 #[prost(bool, optional, tag = "3")]
510 pub enable_sync_with_ldap_include_auth: ::core::option::Option<bool>,
511 #[prost(bool, optional, tag = "4")]
512 pub ignore_guests_ldap_sync: ::core::option::Option<bool>,
513 #[prost(bool, optional, tag = "5")]
514 pub verify: ::core::option::Option<bool>,
515 #[prost(bool, optional, tag = "6")]
516 pub encrypt: ::core::option::Option<bool>,
517 #[prost(bool, optional, tag = "7")]
518 pub sign_request: ::core::option::Option<bool>,
519 #[prost(string, optional, tag = "8")]
520 pub idp_url: ::core::option::Option<::prost::alloc::string::String>,
521 #[prost(string, optional, tag = "9")]
522 pub idp_descriptor_url: ::core::option::Option<::prost::alloc::string::String>,
523 #[prost(string, optional, tag = "10")]
524 pub idp_metadata_url: ::core::option::Option<::prost::alloc::string::String>,
525 #[prost(string, optional, tag = "11")]
526 pub service_provider_identifier: ::core::option::Option<
527 ::prost::alloc::string::String,
528 >,
529 #[prost(string, optional, tag = "12")]
530 pub assertion_consumer_service_url: ::core::option::Option<
531 ::prost::alloc::string::String,
532 >,
533 #[prost(string, optional, tag = "13")]
534 pub signature_algorithm: ::core::option::Option<::prost::alloc::string::String>,
535 #[prost(string, optional, tag = "14")]
536 pub canonical_algorithm: ::core::option::Option<::prost::alloc::string::String>,
537 #[prost(string, optional, tag = "15")]
538 pub scoping_idp_provider_id: ::core::option::Option<::prost::alloc::string::String>,
539 #[prost(string, optional, tag = "16")]
540 pub scoping_idp_name: ::core::option::Option<::prost::alloc::string::String>,
541 #[prost(string, optional, tag = "17")]
542 pub idp_certificate_file: ::core::option::Option<::prost::alloc::string::String>,
543 #[prost(string, optional, tag = "18")]
544 pub public_certificate_file: ::core::option::Option<::prost::alloc::string::String>,
545 #[prost(string, optional, tag = "19")]
546 pub private_key_file: ::core::option::Option<::prost::alloc::string::String>,
547 #[prost(string, optional, tag = "20")]
549 pub id_attribute: ::core::option::Option<::prost::alloc::string::String>,
550 #[prost(bool, optional, tag = "21")]
551 pub enable_admin_attribute: ::core::option::Option<bool>,
552 #[prost(string, optional, tag = "22")]
553 pub admin_attribute: ::core::option::Option<::prost::alloc::string::String>,
554 #[prost(string, optional, tag = "23")]
555 pub first_name_attribute: ::core::option::Option<::prost::alloc::string::String>,
556 #[prost(string, optional, tag = "24")]
557 pub last_name_attribute: ::core::option::Option<::prost::alloc::string::String>,
558 #[prost(string, optional, tag = "25")]
559 pub email_attribute: ::core::option::Option<::prost::alloc::string::String>,
560 #[prost(string, optional, tag = "26")]
561 pub username_attribute: ::core::option::Option<::prost::alloc::string::String>,
562 #[prost(string, optional, tag = "27")]
563 pub nickname_attribute: ::core::option::Option<::prost::alloc::string::String>,
564 #[prost(string, optional, tag = "28")]
565 pub locale_attribute: ::core::option::Option<::prost::alloc::string::String>,
566 #[prost(string, optional, tag = "29")]
567 pub position_attribute: ::core::option::Option<::prost::alloc::string::String>,
568 #[prost(string, optional, tag = "30")]
569 pub login_button_text: ::core::option::Option<::prost::alloc::string::String>,
570 #[prost(string, optional, tag = "31")]
571 pub login_button_color: ::core::option::Option<::prost::alloc::string::String>,
572 #[prost(string, optional, tag = "32")]
573 pub login_button_border_color: ::core::option::Option<
574 ::prost::alloc::string::String,
575 >,
576 #[prost(string, optional, tag = "33")]
577 pub login_button_text_color: ::core::option::Option<::prost::alloc::string::String>,
578}
579#[derive(serde::Serialize, serde::Deserialize)]
580#[derive(Clone, PartialEq, ::prost::Message)]
581pub struct ConfigNativeApp {
582 #[prost(string, repeated, tag = "1")]
583 pub app_custom_url_schemes: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
584 #[prost(string, optional, tag = "2")]
585 pub app_download_link: ::core::option::Option<::prost::alloc::string::String>,
586 #[prost(string, optional, tag = "3")]
587 pub android_app_download_link: ::core::option::Option<
588 ::prost::alloc::string::String,
589 >,
590 #[prost(string, optional, tag = "4")]
591 pub ios_app_download_link: ::core::option::Option<::prost::alloc::string::String>,
592 #[prost(bool, optional, tag = "5")]
593 pub mobile_external_browser: ::core::option::Option<bool>,
594 #[prost(bool, optional, tag = "6")]
595 pub mobile_enable_biometrics: ::core::option::Option<bool>,
596 #[prost(bool, optional, tag = "7")]
597 pub mobile_prevent_screen_capture: ::core::option::Option<bool>,
598 #[prost(bool, optional, tag = "8")]
599 pub mobile_jailbreak_protection: ::core::option::Option<bool>,
600}
601#[derive(serde::Serialize, serde::Deserialize)]
602#[derive(Clone, PartialEq, ::prost::Message)]
603pub struct ConfigMeilisearch {
604 #[prost(string, repeated, tag = "1")]
605 pub server_urls: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
606 #[prost(string, optional, tag = "2")]
608 pub master_key: ::core::option::Option<::prost::alloc::string::String>,
609 #[prost(bool, optional, tag = "3")]
610 pub enable_indexing: ::core::option::Option<bool>,
611 #[prost(bool, optional, tag = "4")]
612 pub enable_searching: ::core::option::Option<bool>,
613 #[prost(bool, optional, tag = "5")]
614 pub enable_autocomplete: ::core::option::Option<bool>,
615 #[prost(int32, optional, tag = "6")]
617 pub max_concurrency: ::core::option::Option<i32>,
618 #[prost(int32, optional, tag = "7")]
619 pub request_timeout_seconds: ::core::option::Option<i32>,
620 #[prost(string, optional, tag = "8")]
622 pub index_prefix: ::core::option::Option<::prost::alloc::string::String>,
623 #[prost(int32, optional, tag = "9")]
625 pub search_cutoff_ms: ::core::option::Option<i32>,
626 #[prost(bool, optional, tag = "10")]
627 pub enable_typo_tolerance: ::core::option::Option<bool>,
628 #[prost(string, tag = "11")]
629 pub kafka_broker: ::prost::alloc::string::String,
630 #[prost(string, tag = "12")]
631 pub kafka_group_id: ::prost::alloc::string::String,
632 #[prost(string, tag = "13")]
633 pub kafak_topic: ::prost::alloc::string::String,
634 #[prost(string, tag = "14")]
635 pub kafak_topic_dlq: ::prost::alloc::string::String,
636 #[prost(int32, optional, tag = "15")]
638 pub task_max_wait_ms: ::core::option::Option<i32>,
639 #[prost(int32, optional, tag = "16")]
641 pub task_max_retries: ::core::option::Option<i32>,
642 #[prost(int32, optional, tag = "17")]
644 pub task_backoff_base_ms: ::core::option::Option<i32>,
645 #[prost(int32, optional, tag = "18")]
647 pub shutdown_wait_secs: ::core::option::Option<i32>,
648}
649#[derive(serde::Serialize, serde::Deserialize)]
650#[derive(Clone, PartialEq, ::prost::Message)]
651pub struct ConfigBleve {
652 #[prost(string, optional, tag = "1")]
653 pub index_dir: ::core::option::Option<::prost::alloc::string::String>,
654 #[prost(bool, optional, tag = "2")]
655 pub enable_indexing: ::core::option::Option<bool>,
656 #[prost(bool, optional, tag = "3")]
657 pub enable_searching: ::core::option::Option<bool>,
658 #[prost(bool, optional, tag = "4")]
659 pub enable_autocomplete: ::core::option::Option<bool>,
660 #[prost(int32, optional, tag = "5")]
661 pub bulk_indexing_time_window_seconds: ::core::option::Option<i32>,
662 #[prost(int32, optional, tag = "6")]
663 pub batch_size: ::core::option::Option<i32>,
664}
665#[derive(serde::Serialize, serde::Deserialize)]
666#[derive(Clone, PartialEq, ::prost::Message)]
667pub struct ConfigDataRetention {
668 #[prost(bool, optional, tag = "1")]
669 pub enable_message_deletion: ::core::option::Option<bool>,
670 #[prost(bool, optional, tag = "2")]
671 pub enable_file_deletion: ::core::option::Option<bool>,
672 #[prost(bool, optional, tag = "3")]
673 pub enable_boards_deletion: ::core::option::Option<bool>,
674 #[prost(int32, optional, tag = "4")]
675 pub message_retention_hours: ::core::option::Option<i32>,
676 #[prost(int32, optional, tag = "5")]
677 pub file_retention_hours: ::core::option::Option<i32>,
678 #[prost(int32, optional, tag = "6")]
679 pub boards_retention_days: ::core::option::Option<i32>,
680 #[prost(string, optional, tag = "7")]
681 pub deletion_job_start_time: ::core::option::Option<::prost::alloc::string::String>,
682 #[prost(int32, optional, tag = "8")]
683 pub batch_size: ::core::option::Option<i32>,
684 #[prost(int32, optional, tag = "9")]
685 pub time_between_batches_milliseconds: ::core::option::Option<i32>,
686 #[prost(int32, optional, tag = "10")]
687 pub retention_ids_batch_size: ::core::option::Option<i32>,
688}
689#[derive(serde::Serialize, serde::Deserialize)]
690#[derive(Clone, PartialEq, ::prost::Message)]
691pub struct ConfigImageProxy {
692 #[prost(bool, optional, tag = "1")]
693 pub enable: ::core::option::Option<bool>,
694 #[prost(string, optional, tag = "2")]
695 pub image_proxy_type: ::core::option::Option<::prost::alloc::string::String>,
696 #[prost(string, optional, tag = "3")]
697 pub remote_image_proxy_url: ::core::option::Option<::prost::alloc::string::String>,
698 #[prost(string, optional, tag = "4")]
699 pub remote_image_proxy_options: ::core::option::Option<
700 ::prost::alloc::string::String,
701 >,
702}
703#[derive(serde::Serialize, serde::Deserialize)]
704#[derive(Clone, PartialEq, ::prost::Message)]
705pub struct ConfigProducts {
706 #[prost(uint64, tag = "1")]
707 pub product_image_max_size_mb: u64,
708 #[prost(string, repeated, tag = "2")]
709 pub product_image_accepted_formats: ::prost::alloc::vec::Vec<
710 ::prost::alloc::string::String,
711 >,
712 #[prost(uint64, tag = "3")]
713 pub product_image_max_width: u64,
714 #[prost(uint64, tag = "4")]
715 pub product_image_max_height: u64,
716 #[prost(uint64, tag = "5")]
717 pub product_image_min_width: u64,
718 #[prost(uint64, tag = "6")]
719 pub product_image_min_height: u64,
720 #[prost(uint64, tag = "7")]
721 pub product_images_min_count_per_variant: u64,
722 #[prost(uint64, tag = "8")]
723 pub product_images_max_count_per_variant: u64,
724 #[prost(uint64, tag = "9")]
725 pub product_media_max_direct_uploading_size_mb: u64,
726}
727#[derive(serde::Serialize, serde::Deserialize)]
728#[derive(Clone, PartialEq, ::prost::Message)]
729pub struct Config {
730 #[prost(message, optional, tag = "1")]
731 pub main: ::core::option::Option<ConfigMain>,
732 #[prost(message, optional, tag = "2")]
733 pub services: ::core::option::Option<ConfigServices>,
734 #[prost(message, optional, tag = "3")]
735 pub security: ::core::option::Option<ConfigSecurity>,
736 #[prost(message, optional, tag = "4")]
737 pub cache: ::core::option::Option<CacheConfig>,
738 #[prost(message, optional, tag = "5")]
739 pub metrics: ::core::option::Option<ConfigMetrics>,
740 #[prost(message, optional, tag = "6")]
741 pub sso: ::core::option::Option<ConfigSso>,
742 #[prost(message, optional, tag = "7")]
743 pub sql: ::core::option::Option<ConfigSql>,
744 #[prost(message, optional, tag = "8")]
745 pub password: ::core::option::Option<ConfigPassword>,
746 #[prost(message, optional, tag = "9")]
747 pub file: ::core::option::Option<ConfigFile>,
748 #[prost(message, optional, tag = "10")]
749 pub email: ::core::option::Option<ConfigEmail>,
750 #[prost(message, optional, tag = "11")]
751 pub rate_limit: ::core::option::Option<ConfigRateLimit>,
752 #[prost(message, optional, tag = "12")]
753 pub privacy: ::core::option::Option<ConfigPrivacy>,
754 #[prost(message, optional, tag = "13")]
755 pub support: ::core::option::Option<ConfigSupport>,
756 #[prost(message, optional, tag = "14")]
757 pub localization: ::core::option::Option<ConfigLocalization>,
758 #[prost(message, optional, tag = "15")]
759 pub ldap: ::core::option::Option<ConfigLdap>,
760 #[prost(message, optional, tag = "16")]
761 pub saml: ::core::option::Option<ConfigSaml>,
762 #[prost(message, optional, tag = "17")]
763 pub native_app: ::core::option::Option<ConfigNativeApp>,
764 #[prost(message, optional, tag = "18")]
765 pub meilisearch: ::core::option::Option<ConfigMeilisearch>,
766 #[prost(message, optional, tag = "19")]
767 pub bleve: ::core::option::Option<ConfigBleve>,
768 #[prost(message, optional, tag = "20")]
769 pub data_retention: ::core::option::Option<ConfigDataRetention>,
770 #[prost(message, optional, tag = "21")]
771 pub image_proxy: ::core::option::Option<ConfigImageProxy>,
772 #[prost(message, optional, tag = "22")]
773 pub oauth: ::core::option::Option<ConfigOAuth>,
774 #[prost(message, optional, tag = "23")]
775 pub products: ::core::option::Option<ConfigProducts>,
776}
777#[derive(serde::Serialize, serde::Deserialize)]
778#[derive(Clone, Copy, PartialEq, ::prost::Message)]
779pub struct ConfigGetRequest {}
780#[derive(serde::Serialize, serde::Deserialize)]
781#[derive(Clone, PartialEq, ::prost::Message)]
782pub struct ConfigGetResponse {
783 #[prost(oneof = "config_get_response::Response", tags = "1, 2")]
784 pub response: ::core::option::Option<config_get_response::Response>,
785}
786pub mod config_get_response {
788 #[derive(serde::Serialize, serde::Deserialize)]
789 #[derive(Clone, PartialEq, ::prost::Oneof)]
790 pub enum Response {
791 #[prost(message, tag = "1")]
792 Data(super::Config),
793 #[prost(message, tag = "2")]
794 Error(super::super::super::shared::v1::AppError),
795 }
796}
797#[derive(serde::Serialize, serde::Deserialize)]
798#[derive(Clone, PartialEq, ::prost::Message)]
799pub struct ConfigUpdateRequest {
800 #[prost(message, optional, tag = "1")]
801 pub config: ::core::option::Option<Config>,
802}
803#[derive(serde::Serialize, serde::Deserialize)]
804#[derive(Clone, PartialEq, ::prost::Message)]
805pub struct ConfigUpdateResponse {
806 #[prost(oneof = "config_update_response::Response", tags = "1, 2")]
807 pub response: ::core::option::Option<config_update_response::Response>,
808}
809pub mod config_update_response {
811 #[derive(serde::Serialize, serde::Deserialize)]
812 #[derive(Clone, PartialEq, ::prost::Oneof)]
813 pub enum Response {
814 #[prost(message, tag = "1")]
815 Data(super::Config),
816 #[prost(message, tag = "2")]
817 Error(super::super::super::shared::v1::AppError),
818 }
819}
820#[derive(serde::Serialize, serde::Deserialize)]
821#[derive(Clone, PartialEq, ::prost::Message)]
822pub struct ConfigListenerResponse {
823 #[prost(oneof = "config_listener_response::Response", tags = "1, 2")]
824 pub response: ::core::option::Option<config_listener_response::Response>,
825}
826pub mod config_listener_response {
828 #[derive(serde::Serialize, serde::Deserialize)]
829 #[derive(Clone, PartialEq, ::prost::Oneof)]
830 pub enum Response {
831 #[prost(message, tag = "1")]
832 Data(super::Config),
833 #[prost(message, tag = "2")]
834 Error(super::super::super::shared::v1::AppError),
835 }
836}
837#[derive(serde::Serialize, serde::Deserialize)]
838#[derive(Clone, PartialEq, ::prost::Message)]
839pub struct ConfigListenerRequest {
840 #[prost(string, tag = "1")]
841 pub client_id: ::prost::alloc::string::String,
842}
843#[derive(serde::Serialize, serde::Deserialize)]
844#[derive(Clone, Copy, PartialEq, ::prost::Message)]
845pub struct TranslationsGetRequest {}
846#[derive(serde::Serialize, serde::Deserialize)]
847#[derive(Clone, PartialEq, ::prost::Message)]
848pub struct TranslationsGetResponse {
849 #[prost(map = "string, message", tag = "1")]
850 pub data: ::std::collections::HashMap<
851 ::prost::alloc::string::String,
852 TranslationElements,
853 >,
854 #[prost(message, optional, tag = "2")]
855 pub error: ::core::option::Option<super::super::shared::v1::AppError>,
856}
857#[derive(serde::Serialize, serde::Deserialize)]
858#[derive(Clone, PartialEq, ::prost::Message)]
859pub struct TranslationsForLangGetRequest {
860 #[prost(string, tag = "1")]
861 pub lang: ::prost::alloc::string::String,
862}
863#[derive(serde::Serialize, serde::Deserialize)]
864#[derive(Clone, PartialEq, ::prost::Message)]
865pub struct TranslationsForLangGetResponse {
866 #[prost(oneof = "translations_for_lang_get_response::Response", tags = "1, 2")]
867 pub response: ::core::option::Option<translations_for_lang_get_response::Response>,
868}
869pub mod translations_for_lang_get_response {
871 #[derive(serde::Serialize, serde::Deserialize)]
872 #[derive(Clone, PartialEq, ::prost::Oneof)]
873 pub enum Response {
874 #[prost(message, tag = "1")]
875 Data(super::TranslationElements),
876 #[prost(message, tag = "2")]
877 Error(super::super::super::shared::v1::AppError),
878 }
879}
880#[derive(serde::Serialize, serde::Deserialize)]
881#[derive(Clone, PartialEq, ::prost::Message)]
882pub struct TranslationElement {
883 #[prost(string, tag = "1")]
884 pub id: ::prost::alloc::string::String,
885 #[prost(string, tag = "2")]
886 pub tr: ::prost::alloc::string::String,
887}
888#[derive(serde::Serialize, serde::Deserialize)]
889#[derive(Clone, PartialEq, ::prost::Message)]
890pub struct TranslationElements {
891 #[prost(message, repeated, tag = "1")]
892 pub trans: ::prost::alloc::vec::Vec<TranslationElement>,
893}
894pub mod common_service_client {
896 #![allow(
897 unused_variables,
898 dead_code,
899 missing_docs,
900 clippy::wildcard_imports,
901 clippy::let_unit_value,
902 )]
903 use tonic::codegen::*;
904 use tonic::codegen::http::Uri;
905 #[derive(Debug, Clone)]
906 pub struct CommonServiceClient<T> {
907 inner: tonic::client::Grpc<T>,
908 }
909 impl CommonServiceClient<tonic::transport::Channel> {
910 pub async fn connect<D>(dst: D) -> Result<Self, tonic::transport::Error>
912 where
913 D: TryInto<tonic::transport::Endpoint>,
914 D::Error: Into<StdError>,
915 {
916 let conn = tonic::transport::Endpoint::new(dst)?.connect().await?;
917 Ok(Self::new(conn))
918 }
919 }
920 impl<T> CommonServiceClient<T>
921 where
922 T: tonic::client::GrpcService<tonic::body::Body>,
923 T::Error: Into<StdError>,
924 T::ResponseBody: Body<Data = Bytes> + std::marker::Send + 'static,
925 <T::ResponseBody as Body>::Error: Into<StdError> + std::marker::Send,
926 {
927 pub fn new(inner: T) -> Self {
928 let inner = tonic::client::Grpc::new(inner);
929 Self { inner }
930 }
931 pub fn with_origin(inner: T, origin: Uri) -> Self {
932 let inner = tonic::client::Grpc::with_origin(inner, origin);
933 Self { inner }
934 }
935 pub fn with_interceptor<F>(
936 inner: T,
937 interceptor: F,
938 ) -> CommonServiceClient<InterceptedService<T, F>>
939 where
940 F: tonic::service::Interceptor,
941 T::ResponseBody: Default,
942 T: tonic::codegen::Service<
943 http::Request<tonic::body::Body>,
944 Response = http::Response<
945 <T as tonic::client::GrpcService<tonic::body::Body>>::ResponseBody,
946 >,
947 >,
948 <T as tonic::codegen::Service<
949 http::Request<tonic::body::Body>,
950 >>::Error: Into<StdError> + std::marker::Send + std::marker::Sync,
951 {
952 CommonServiceClient::new(InterceptedService::new(inner, interceptor))
953 }
954 #[must_use]
959 pub fn send_compressed(mut self, encoding: CompressionEncoding) -> Self {
960 self.inner = self.inner.send_compressed(encoding);
961 self
962 }
963 #[must_use]
965 pub fn accept_compressed(mut self, encoding: CompressionEncoding) -> Self {
966 self.inner = self.inner.accept_compressed(encoding);
967 self
968 }
969 #[must_use]
973 pub fn max_decoding_message_size(mut self, limit: usize) -> Self {
974 self.inner = self.inner.max_decoding_message_size(limit);
975 self
976 }
977 #[must_use]
981 pub fn max_encoding_message_size(mut self, limit: usize) -> Self {
982 self.inner = self.inner.max_encoding_message_size(limit);
983 self
984 }
985 pub async fn ping(
986 &mut self,
987 request: impl tonic::IntoRequest<
988 super::super::super::shared::v1::PingRequest,
989 >,
990 ) -> std::result::Result<
991 tonic::Response<super::super::super::shared::v1::PingResponse>,
992 tonic::Status,
993 > {
994 self.inner
995 .ready()
996 .await
997 .map_err(|e| {
998 tonic::Status::unknown(
999 format!("Service was not ready: {}", e.into()),
1000 )
1001 })?;
1002 let codec = tonic::codec::ProstCodec::default();
1003 let path = http::uri::PathAndQuery::from_static(
1004 "/common.v1.CommonService/Ping",
1005 );
1006 let mut req = request.into_request();
1007 req.extensions_mut()
1008 .insert(GrpcMethod::new("common.v1.CommonService", "Ping"));
1009 self.inner.unary(req, path, codec).await
1010 }
1011 pub async fn config_get(
1012 &mut self,
1013 request: impl tonic::IntoRequest<super::ConfigGetRequest>,
1014 ) -> std::result::Result<
1015 tonic::Response<super::ConfigGetResponse>,
1016 tonic::Status,
1017 > {
1018 self.inner
1019 .ready()
1020 .await
1021 .map_err(|e| {
1022 tonic::Status::unknown(
1023 format!("Service was not ready: {}", e.into()),
1024 )
1025 })?;
1026 let codec = tonic::codec::ProstCodec::default();
1027 let path = http::uri::PathAndQuery::from_static(
1028 "/common.v1.CommonService/ConfigGet",
1029 );
1030 let mut req = request.into_request();
1031 req.extensions_mut()
1032 .insert(GrpcMethod::new("common.v1.CommonService", "ConfigGet"));
1033 self.inner.unary(req, path, codec).await
1034 }
1035 pub async fn config_update(
1036 &mut self,
1037 request: impl tonic::IntoRequest<super::ConfigUpdateRequest>,
1038 ) -> std::result::Result<
1039 tonic::Response<super::ConfigUpdateResponse>,
1040 tonic::Status,
1041 > {
1042 self.inner
1043 .ready()
1044 .await
1045 .map_err(|e| {
1046 tonic::Status::unknown(
1047 format!("Service was not ready: {}", e.into()),
1048 )
1049 })?;
1050 let codec = tonic::codec::ProstCodec::default();
1051 let path = http::uri::PathAndQuery::from_static(
1052 "/common.v1.CommonService/ConfigUpdate",
1053 );
1054 let mut req = request.into_request();
1055 req.extensions_mut()
1056 .insert(GrpcMethod::new("common.v1.CommonService", "ConfigUpdate"));
1057 self.inner.unary(req, path, codec).await
1058 }
1059 pub async fn config_listener(
1060 &mut self,
1061 request: impl tonic::IntoRequest<super::ConfigListenerRequest>,
1062 ) -> std::result::Result<
1063 tonic::Response<tonic::codec::Streaming<super::ConfigListenerResponse>>,
1064 tonic::Status,
1065 > {
1066 self.inner
1067 .ready()
1068 .await
1069 .map_err(|e| {
1070 tonic::Status::unknown(
1071 format!("Service was not ready: {}", e.into()),
1072 )
1073 })?;
1074 let codec = tonic::codec::ProstCodec::default();
1075 let path = http::uri::PathAndQuery::from_static(
1076 "/common.v1.CommonService/ConfigListener",
1077 );
1078 let mut req = request.into_request();
1079 req.extensions_mut()
1080 .insert(GrpcMethod::new("common.v1.CommonService", "ConfigListener"));
1081 self.inner.server_streaming(req, path, codec).await
1082 }
1083 pub async fn translations_get(
1084 &mut self,
1085 request: impl tonic::IntoRequest<super::TranslationsGetRequest>,
1086 ) -> std::result::Result<
1087 tonic::Response<super::TranslationsGetResponse>,
1088 tonic::Status,
1089 > {
1090 self.inner
1091 .ready()
1092 .await
1093 .map_err(|e| {
1094 tonic::Status::unknown(
1095 format!("Service was not ready: {}", e.into()),
1096 )
1097 })?;
1098 let codec = tonic::codec::ProstCodec::default();
1099 let path = http::uri::PathAndQuery::from_static(
1100 "/common.v1.CommonService/TranslationsGet",
1101 );
1102 let mut req = request.into_request();
1103 req.extensions_mut()
1104 .insert(GrpcMethod::new("common.v1.CommonService", "TranslationsGet"));
1105 self.inner.unary(req, path, codec).await
1106 }
1107 pub async fn translations_for_lang_get(
1108 &mut self,
1109 request: impl tonic::IntoRequest<super::TranslationsForLangGetRequest>,
1110 ) -> std::result::Result<
1111 tonic::Response<super::TranslationsForLangGetResponse>,
1112 tonic::Status,
1113 > {
1114 self.inner
1115 .ready()
1116 .await
1117 .map_err(|e| {
1118 tonic::Status::unknown(
1119 format!("Service was not ready: {}", e.into()),
1120 )
1121 })?;
1122 let codec = tonic::codec::ProstCodec::default();
1123 let path = http::uri::PathAndQuery::from_static(
1124 "/common.v1.CommonService/TranslationsForLangGet",
1125 );
1126 let mut req = request.into_request();
1127 req.extensions_mut()
1128 .insert(
1129 GrpcMethod::new("common.v1.CommonService", "TranslationsForLangGet"),
1130 );
1131 self.inner.unary(req, path, codec).await
1132 }
1133 }
1134}
1135pub mod common_service_server {
1137 #![allow(
1138 unused_variables,
1139 dead_code,
1140 missing_docs,
1141 clippy::wildcard_imports,
1142 clippy::let_unit_value,
1143 )]
1144 use tonic::codegen::*;
1145 #[async_trait]
1147 pub trait CommonService: std::marker::Send + std::marker::Sync + 'static {
1148 async fn ping(
1149 &self,
1150 request: tonic::Request<super::super::super::shared::v1::PingRequest>,
1151 ) -> std::result::Result<
1152 tonic::Response<super::super::super::shared::v1::PingResponse>,
1153 tonic::Status,
1154 >;
1155 async fn config_get(
1156 &self,
1157 request: tonic::Request<super::ConfigGetRequest>,
1158 ) -> std::result::Result<
1159 tonic::Response<super::ConfigGetResponse>,
1160 tonic::Status,
1161 >;
1162 async fn config_update(
1163 &self,
1164 request: tonic::Request<super::ConfigUpdateRequest>,
1165 ) -> std::result::Result<
1166 tonic::Response<super::ConfigUpdateResponse>,
1167 tonic::Status,
1168 >;
1169 type ConfigListenerStream: tonic::codegen::tokio_stream::Stream<
1171 Item = std::result::Result<super::ConfigListenerResponse, tonic::Status>,
1172 >
1173 + std::marker::Send
1174 + 'static;
1175 async fn config_listener(
1176 &self,
1177 request: tonic::Request<super::ConfigListenerRequest>,
1178 ) -> std::result::Result<
1179 tonic::Response<Self::ConfigListenerStream>,
1180 tonic::Status,
1181 >;
1182 async fn translations_get(
1183 &self,
1184 request: tonic::Request<super::TranslationsGetRequest>,
1185 ) -> std::result::Result<
1186 tonic::Response<super::TranslationsGetResponse>,
1187 tonic::Status,
1188 >;
1189 async fn translations_for_lang_get(
1190 &self,
1191 request: tonic::Request<super::TranslationsForLangGetRequest>,
1192 ) -> std::result::Result<
1193 tonic::Response<super::TranslationsForLangGetResponse>,
1194 tonic::Status,
1195 >;
1196 }
1197 #[derive(Debug)]
1198 pub struct CommonServiceServer<T> {
1199 inner: Arc<T>,
1200 accept_compression_encodings: EnabledCompressionEncodings,
1201 send_compression_encodings: EnabledCompressionEncodings,
1202 max_decoding_message_size: Option<usize>,
1203 max_encoding_message_size: Option<usize>,
1204 }
1205 impl<T> CommonServiceServer<T> {
1206 pub fn new(inner: T) -> Self {
1207 Self::from_arc(Arc::new(inner))
1208 }
1209 pub fn from_arc(inner: Arc<T>) -> Self {
1210 Self {
1211 inner,
1212 accept_compression_encodings: Default::default(),
1213 send_compression_encodings: Default::default(),
1214 max_decoding_message_size: None,
1215 max_encoding_message_size: None,
1216 }
1217 }
1218 pub fn with_interceptor<F>(
1219 inner: T,
1220 interceptor: F,
1221 ) -> InterceptedService<Self, F>
1222 where
1223 F: tonic::service::Interceptor,
1224 {
1225 InterceptedService::new(Self::new(inner), interceptor)
1226 }
1227 #[must_use]
1229 pub fn accept_compressed(mut self, encoding: CompressionEncoding) -> Self {
1230 self.accept_compression_encodings.enable(encoding);
1231 self
1232 }
1233 #[must_use]
1235 pub fn send_compressed(mut self, encoding: CompressionEncoding) -> Self {
1236 self.send_compression_encodings.enable(encoding);
1237 self
1238 }
1239 #[must_use]
1243 pub fn max_decoding_message_size(mut self, limit: usize) -> Self {
1244 self.max_decoding_message_size = Some(limit);
1245 self
1246 }
1247 #[must_use]
1251 pub fn max_encoding_message_size(mut self, limit: usize) -> Self {
1252 self.max_encoding_message_size = Some(limit);
1253 self
1254 }
1255 }
1256 impl<T, B> tonic::codegen::Service<http::Request<B>> for CommonServiceServer<T>
1257 where
1258 T: CommonService,
1259 B: Body + std::marker::Send + 'static,
1260 B::Error: Into<StdError> + std::marker::Send + 'static,
1261 {
1262 type Response = http::Response<tonic::body::Body>;
1263 type Error = std::convert::Infallible;
1264 type Future = BoxFuture<Self::Response, Self::Error>;
1265 fn poll_ready(
1266 &mut self,
1267 _cx: &mut Context<'_>,
1268 ) -> Poll<std::result::Result<(), Self::Error>> {
1269 Poll::Ready(Ok(()))
1270 }
1271 fn call(&mut self, req: http::Request<B>) -> Self::Future {
1272 match req.uri().path() {
1273 "/common.v1.CommonService/Ping" => {
1274 #[allow(non_camel_case_types)]
1275 struct PingSvc<T: CommonService>(pub Arc<T>);
1276 impl<
1277 T: CommonService,
1278 > tonic::server::UnaryService<
1279 super::super::super::shared::v1::PingRequest,
1280 > for PingSvc<T> {
1281 type Response = super::super::super::shared::v1::PingResponse;
1282 type Future = BoxFuture<
1283 tonic::Response<Self::Response>,
1284 tonic::Status,
1285 >;
1286 fn call(
1287 &mut self,
1288 request: tonic::Request<
1289 super::super::super::shared::v1::PingRequest,
1290 >,
1291 ) -> Self::Future {
1292 let inner = Arc::clone(&self.0);
1293 let fut = async move {
1294 <T as CommonService>::ping(&inner, request).await
1295 };
1296 Box::pin(fut)
1297 }
1298 }
1299 let accept_compression_encodings = self.accept_compression_encodings;
1300 let send_compression_encodings = self.send_compression_encodings;
1301 let max_decoding_message_size = self.max_decoding_message_size;
1302 let max_encoding_message_size = self.max_encoding_message_size;
1303 let inner = self.inner.clone();
1304 let fut = async move {
1305 let method = PingSvc(inner);
1306 let codec = tonic::codec::ProstCodec::default();
1307 let mut grpc = tonic::server::Grpc::new(codec)
1308 .apply_compression_config(
1309 accept_compression_encodings,
1310 send_compression_encodings,
1311 )
1312 .apply_max_message_size_config(
1313 max_decoding_message_size,
1314 max_encoding_message_size,
1315 );
1316 let res = grpc.unary(method, req).await;
1317 Ok(res)
1318 };
1319 Box::pin(fut)
1320 }
1321 "/common.v1.CommonService/ConfigGet" => {
1322 #[allow(non_camel_case_types)]
1323 struct ConfigGetSvc<T: CommonService>(pub Arc<T>);
1324 impl<
1325 T: CommonService,
1326 > tonic::server::UnaryService<super::ConfigGetRequest>
1327 for ConfigGetSvc<T> {
1328 type Response = super::ConfigGetResponse;
1329 type Future = BoxFuture<
1330 tonic::Response<Self::Response>,
1331 tonic::Status,
1332 >;
1333 fn call(
1334 &mut self,
1335 request: tonic::Request<super::ConfigGetRequest>,
1336 ) -> Self::Future {
1337 let inner = Arc::clone(&self.0);
1338 let fut = async move {
1339 <T as CommonService>::config_get(&inner, request).await
1340 };
1341 Box::pin(fut)
1342 }
1343 }
1344 let accept_compression_encodings = self.accept_compression_encodings;
1345 let send_compression_encodings = self.send_compression_encodings;
1346 let max_decoding_message_size = self.max_decoding_message_size;
1347 let max_encoding_message_size = self.max_encoding_message_size;
1348 let inner = self.inner.clone();
1349 let fut = async move {
1350 let method = ConfigGetSvc(inner);
1351 let codec = tonic::codec::ProstCodec::default();
1352 let mut grpc = tonic::server::Grpc::new(codec)
1353 .apply_compression_config(
1354 accept_compression_encodings,
1355 send_compression_encodings,
1356 )
1357 .apply_max_message_size_config(
1358 max_decoding_message_size,
1359 max_encoding_message_size,
1360 );
1361 let res = grpc.unary(method, req).await;
1362 Ok(res)
1363 };
1364 Box::pin(fut)
1365 }
1366 "/common.v1.CommonService/ConfigUpdate" => {
1367 #[allow(non_camel_case_types)]
1368 struct ConfigUpdateSvc<T: CommonService>(pub Arc<T>);
1369 impl<
1370 T: CommonService,
1371 > tonic::server::UnaryService<super::ConfigUpdateRequest>
1372 for ConfigUpdateSvc<T> {
1373 type Response = super::ConfigUpdateResponse;
1374 type Future = BoxFuture<
1375 tonic::Response<Self::Response>,
1376 tonic::Status,
1377 >;
1378 fn call(
1379 &mut self,
1380 request: tonic::Request<super::ConfigUpdateRequest>,
1381 ) -> Self::Future {
1382 let inner = Arc::clone(&self.0);
1383 let fut = async move {
1384 <T as CommonService>::config_update(&inner, request).await
1385 };
1386 Box::pin(fut)
1387 }
1388 }
1389 let accept_compression_encodings = self.accept_compression_encodings;
1390 let send_compression_encodings = self.send_compression_encodings;
1391 let max_decoding_message_size = self.max_decoding_message_size;
1392 let max_encoding_message_size = self.max_encoding_message_size;
1393 let inner = self.inner.clone();
1394 let fut = async move {
1395 let method = ConfigUpdateSvc(inner);
1396 let codec = tonic::codec::ProstCodec::default();
1397 let mut grpc = tonic::server::Grpc::new(codec)
1398 .apply_compression_config(
1399 accept_compression_encodings,
1400 send_compression_encodings,
1401 )
1402 .apply_max_message_size_config(
1403 max_decoding_message_size,
1404 max_encoding_message_size,
1405 );
1406 let res = grpc.unary(method, req).await;
1407 Ok(res)
1408 };
1409 Box::pin(fut)
1410 }
1411 "/common.v1.CommonService/ConfigListener" => {
1412 #[allow(non_camel_case_types)]
1413 struct ConfigListenerSvc<T: CommonService>(pub Arc<T>);
1414 impl<
1415 T: CommonService,
1416 > tonic::server::ServerStreamingService<super::ConfigListenerRequest>
1417 for ConfigListenerSvc<T> {
1418 type Response = super::ConfigListenerResponse;
1419 type ResponseStream = T::ConfigListenerStream;
1420 type Future = BoxFuture<
1421 tonic::Response<Self::ResponseStream>,
1422 tonic::Status,
1423 >;
1424 fn call(
1425 &mut self,
1426 request: tonic::Request<super::ConfigListenerRequest>,
1427 ) -> Self::Future {
1428 let inner = Arc::clone(&self.0);
1429 let fut = async move {
1430 <T as CommonService>::config_listener(&inner, request).await
1431 };
1432 Box::pin(fut)
1433 }
1434 }
1435 let accept_compression_encodings = self.accept_compression_encodings;
1436 let send_compression_encodings = self.send_compression_encodings;
1437 let max_decoding_message_size = self.max_decoding_message_size;
1438 let max_encoding_message_size = self.max_encoding_message_size;
1439 let inner = self.inner.clone();
1440 let fut = async move {
1441 let method = ConfigListenerSvc(inner);
1442 let codec = tonic::codec::ProstCodec::default();
1443 let mut grpc = tonic::server::Grpc::new(codec)
1444 .apply_compression_config(
1445 accept_compression_encodings,
1446 send_compression_encodings,
1447 )
1448 .apply_max_message_size_config(
1449 max_decoding_message_size,
1450 max_encoding_message_size,
1451 );
1452 let res = grpc.server_streaming(method, req).await;
1453 Ok(res)
1454 };
1455 Box::pin(fut)
1456 }
1457 "/common.v1.CommonService/TranslationsGet" => {
1458 #[allow(non_camel_case_types)]
1459 struct TranslationsGetSvc<T: CommonService>(pub Arc<T>);
1460 impl<
1461 T: CommonService,
1462 > tonic::server::UnaryService<super::TranslationsGetRequest>
1463 for TranslationsGetSvc<T> {
1464 type Response = super::TranslationsGetResponse;
1465 type Future = BoxFuture<
1466 tonic::Response<Self::Response>,
1467 tonic::Status,
1468 >;
1469 fn call(
1470 &mut self,
1471 request: tonic::Request<super::TranslationsGetRequest>,
1472 ) -> Self::Future {
1473 let inner = Arc::clone(&self.0);
1474 let fut = async move {
1475 <T as CommonService>::translations_get(&inner, request)
1476 .await
1477 };
1478 Box::pin(fut)
1479 }
1480 }
1481 let accept_compression_encodings = self.accept_compression_encodings;
1482 let send_compression_encodings = self.send_compression_encodings;
1483 let max_decoding_message_size = self.max_decoding_message_size;
1484 let max_encoding_message_size = self.max_encoding_message_size;
1485 let inner = self.inner.clone();
1486 let fut = async move {
1487 let method = TranslationsGetSvc(inner);
1488 let codec = tonic::codec::ProstCodec::default();
1489 let mut grpc = tonic::server::Grpc::new(codec)
1490 .apply_compression_config(
1491 accept_compression_encodings,
1492 send_compression_encodings,
1493 )
1494 .apply_max_message_size_config(
1495 max_decoding_message_size,
1496 max_encoding_message_size,
1497 );
1498 let res = grpc.unary(method, req).await;
1499 Ok(res)
1500 };
1501 Box::pin(fut)
1502 }
1503 "/common.v1.CommonService/TranslationsForLangGet" => {
1504 #[allow(non_camel_case_types)]
1505 struct TranslationsForLangGetSvc<T: CommonService>(pub Arc<T>);
1506 impl<
1507 T: CommonService,
1508 > tonic::server::UnaryService<super::TranslationsForLangGetRequest>
1509 for TranslationsForLangGetSvc<T> {
1510 type Response = super::TranslationsForLangGetResponse;
1511 type Future = BoxFuture<
1512 tonic::Response<Self::Response>,
1513 tonic::Status,
1514 >;
1515 fn call(
1516 &mut self,
1517 request: tonic::Request<super::TranslationsForLangGetRequest>,
1518 ) -> Self::Future {
1519 let inner = Arc::clone(&self.0);
1520 let fut = async move {
1521 <T as CommonService>::translations_for_lang_get(
1522 &inner,
1523 request,
1524 )
1525 .await
1526 };
1527 Box::pin(fut)
1528 }
1529 }
1530 let accept_compression_encodings = self.accept_compression_encodings;
1531 let send_compression_encodings = self.send_compression_encodings;
1532 let max_decoding_message_size = self.max_decoding_message_size;
1533 let max_encoding_message_size = self.max_encoding_message_size;
1534 let inner = self.inner.clone();
1535 let fut = async move {
1536 let method = TranslationsForLangGetSvc(inner);
1537 let codec = tonic::codec::ProstCodec::default();
1538 let mut grpc = tonic::server::Grpc::new(codec)
1539 .apply_compression_config(
1540 accept_compression_encodings,
1541 send_compression_encodings,
1542 )
1543 .apply_max_message_size_config(
1544 max_decoding_message_size,
1545 max_encoding_message_size,
1546 );
1547 let res = grpc.unary(method, req).await;
1548 Ok(res)
1549 };
1550 Box::pin(fut)
1551 }
1552 _ => {
1553 Box::pin(async move {
1554 let mut response = http::Response::new(
1555 tonic::body::Body::default(),
1556 );
1557 let headers = response.headers_mut();
1558 headers
1559 .insert(
1560 tonic::Status::GRPC_STATUS,
1561 (tonic::Code::Unimplemented as i32).into(),
1562 );
1563 headers
1564 .insert(
1565 http::header::CONTENT_TYPE,
1566 tonic::metadata::GRPC_CONTENT_TYPE,
1567 );
1568 Ok(response)
1569 })
1570 }
1571 }
1572 }
1573 }
1574 impl<T> Clone for CommonServiceServer<T> {
1575 fn clone(&self) -> Self {
1576 let inner = self.inner.clone();
1577 Self {
1578 inner,
1579 accept_compression_encodings: self.accept_compression_encodings,
1580 send_compression_encodings: self.send_compression_encodings,
1581 max_decoding_message_size: self.max_decoding_message_size,
1582 max_encoding_message_size: self.max_encoding_message_size,
1583 }
1584 }
1585 }
1586 pub const SERVICE_NAME: &str = "common.v1.CommonService";
1588 impl<T> tonic::server::NamedService for CommonServiceServer<T> {
1589 const NAME: &'static str = SERVICE_NAME;
1590 }
1591}