megacommerce_proto/
common.v1.rs

1// This file is @generated by prost-build.
2#[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    /// Basic
428    #[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    /// Filtering
447    #[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    /// Group Mapping
456    #[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    /// User Mapping
463    #[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    /// Synchronization
482    #[prost(int32, optional, tag = "25")]
483    pub sync_interval_minutes: ::core::option::Option<i32>,
484    /// Advanced
485    #[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    /// Customization
490    #[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    /// Basic
505    #[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    /// User Mapping
548    #[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    /// Meilisearch-specific authentication
607    #[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    /// concurrency limiter
616    #[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    /// Meilisearch-specific options
621    #[prost(string, optional, tag = "8")]
622    pub index_prefix: ::core::option::Option<::prost::alloc::string::String>,
623    /// performance tuning
624    #[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    /// how long to wait for Meili task to finish (ms)
637    #[prost(int32, optional, tag = "15")]
638    pub task_max_wait_ms: ::core::option::Option<i32>,
639    /// per-endpoint retry attempts
640    #[prost(int32, optional, tag = "16")]
641    pub task_max_retries: ::core::option::Option<i32>,
642    /// initial backoff (ms)
643    #[prost(int32, optional, tag = "17")]
644    pub task_backoff_base_ms: ::core::option::Option<i32>,
645    /// how long to wait for in-flight tasks on shutdown
646    #[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}
786/// Nested message and enum types in `ConfigGetResponse`.
787pub 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}
809/// Nested message and enum types in `ConfigUpdateResponse`.
810pub 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}
826/// Nested message and enum types in `ConfigListenerResponse`.
827pub 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}
869/// Nested message and enum types in `TranslationsForLangGetResponse`.
870pub 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}
894/// Generated client implementations.
895pub 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        /// Attempt to create a new client by connecting to a given endpoint.
911        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        /// Compress requests with the given encoding.
955        ///
956        /// This requires the server to support it otherwise it might respond with an
957        /// error.
958        #[must_use]
959        pub fn send_compressed(mut self, encoding: CompressionEncoding) -> Self {
960            self.inner = self.inner.send_compressed(encoding);
961            self
962        }
963        /// Enable decompressing responses.
964        #[must_use]
965        pub fn accept_compressed(mut self, encoding: CompressionEncoding) -> Self {
966            self.inner = self.inner.accept_compressed(encoding);
967            self
968        }
969        /// Limits the maximum size of a decoded message.
970        ///
971        /// Default: `4MB`
972        #[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        /// Limits the maximum size of an encoded message.
978        ///
979        /// Default: `usize::MAX`
980        #[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}
1135/// Generated server implementations.
1136pub 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    /// Generated trait containing gRPC methods that should be implemented for use with CommonServiceServer.
1146    #[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        /// Server streaming response type for the ConfigListener method.
1170        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        /// Enable decompressing requests with the given encoding.
1228        #[must_use]
1229        pub fn accept_compressed(mut self, encoding: CompressionEncoding) -> Self {
1230            self.accept_compression_encodings.enable(encoding);
1231            self
1232        }
1233        /// Compress responses with the given encoding, if the client supports it.
1234        #[must_use]
1235        pub fn send_compressed(mut self, encoding: CompressionEncoding) -> Self {
1236            self.send_compression_encodings.enable(encoding);
1237            self
1238        }
1239        /// Limits the maximum size of a decoded message.
1240        ///
1241        /// Default: `4MB`
1242        #[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        /// Limits the maximum size of an encoded message.
1248        ///
1249        /// Default: `usize::MAX`
1250        #[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    /// Generated gRPC service name
1587    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}